ChinaUnix.net
相关文章推荐:

linux 进程切换

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/109913/showart_2152053.html

by doujiao - Linux文档专区 - 2010-01-18 14:26:11 阅读(879) 回复(0)

相关讨论

linux中的任务切换 参考资料: 1.Understanding linux Kernel 3nd 2.linux Kernel sourcecode. version:2.6.11.10 一.任务切换的相关知识 一个进程中的硬件上下文(hardware context)信息被保存在进程描述符(process descriptor)和内核栈(Kernel Mode Stack)当中. 进程切换只会发生在内核态。 Task State Segment: x86下面用来存储进程中硬件信息的。但linux通过的是软切换,所以用不到X86里面提供的硬件切换。但是TSS在linux中...

by flyinox - Linux文档专区 - 2009-06-03 22:22:25 阅读(753) 回复(0)

为了能保证不同的进程在CPU上运行,内核必须做到挂起正在CPU上运行的进程,唤醒其他进程,并且使其在CPU上正常运行。这个过程叫进程却换,或者上下文切换,任务切换。 1:硬件上下文 尽管每个进程都有自己的地址空间,但是所有的进程都共享CPU寄存器。所以当唤醒进程执行时,必须加载唤醒进程寄存器值到相应的寄存器。 硬件上下文是进程执行上下文的一个子集,linux中一部分硬件上下文保存在进程描述符,一部分保存在内核栈。 进程...

by ChinaE_OS - Linux文档专区 - 2006-03-06 15:09:23 阅读(1007) 回复(0)

linux内核进程切换 (转载)linux内核进程切换 本文主要参考了 Understanding The linux Kernel 和水木精华区的 分析进程切换宏 switch_to 。感谢相关的作者!本文中有部分内容直接从上面提到的文章中重复,仅仅是为了方便大家阅读。本文中提到的所有内核代码可以到 linux Cross Reference 上查阅。欢迎转载本文,转载请保留这份声明。 本文仅讨论内核进程切换,而不涉及进程的调度算法。详细讲了switch_to这个宏。 ...

by boliu0186 - Linux文档专区 - 2010-01-21 13:24:33 阅读(1211) 回复(0)

[code]#define switch_to(prev,next,last) do{ asm volatile {"pushl %%esi\n\t" "pushl %%edi\n\t" "movl %%esp,%0\n\t" "movl %3,%%esp\n\t" "movl $1f,%1\n\t" "pushl %4\n\t" "1\t" "popl %%ebp\n\t" ...

by ywf851207 - 内核源码 - 2011-01-05 13:42:18 阅读(3281) 回复(3)

今天仍在进程的总体概念上学习,又学到了一些关于任务切换的东西,下面作一下总结: 一、tast_struct结构 它是一个数据结构,可以说,它代表了一个进程。它有很多字段,大体有一下几种: 标识号:进程标识、用户标识、组标识。 状态: linux进程的四种基本状态 调度信息:优先级、时间片等 进程链信息:父进程、子进程的指针 文件信息:打开文件、虚拟文件系统 上下文信息:进程的运行环境 二、I386体系的任...

by bjgs2004 - Linux文档专区 - 2008-04-07 18:58:47 阅读(517) 回复(0)

linux切换并没有使用X86CPU的切换方法,linux切换的实质就是cr3切换(内存空间切换,在switch_mm函数中)+ 寄存器切换(包括EIP,ESP等,均在switch_to函数中)。这里我们讲述下switch_to主流程: 在switch_mm函数中将new_task->pgd设置到cr3寄存器中,实现页表切换,由于每个进程 3-4G的页表映射机制完全一样(从内核页表中直接复制过来的),故这里虽然切换了pgd,但是并无影响,只是在任务回到用户空间中时,才会发生变化,因为...

by dreamice - 驱动开发 - 2008-12-16 22:28:32 阅读(1695) 回复(0)

linux切换并没有使用X86CPU的切换方法,linux切换的实质就是cr3切换(内存空间切换,在switch_mm函数中)+ 寄存器切换(包括EIP,ESP等,均在switch_to函数中)。这里我们讲述下switch_to主流程: 在switch_mm函数中将new_task->pgd设置到cr3寄存器中,实现页表切换,由于每个进程3-4G的页表映射机制完全一样(从内核页表中直接复制过来的),故这里虽然切换了pgd,但是并无影响,只是在任务回到用户空 间中时,才会发生变化,因为...

by frank_seng - 内核源码 - 2010-10-22 15:02:49 阅读(4603) 回复(5)

linux切换并没有使用X86CPU的切换方法,linux切换的实质就是cr3切换(内存空间切换,在switch_mm函数中)+ 寄存器切换(包括EIP,ESP等,均在switch_to函数中)。这里我们讲述下switch_to主流程: 在switch_mm函数中将new_task->pgd设置到cr3寄存器中,实现页表切换,由于每个进程 3-4G的页表映射机制完全一样(从内核页表中直接复制过来的),故这里虽然切换了pgd,但是并无影响,只是在任务回到用户空 间中时,才会发生变化,因为...

by liuake - Linux文档专区 - 2008-11-20 17:44:11 阅读(567) 回复(0)

linux切换并没有使用X86CPU的切换方法,linux切换的实质就是cr3切换(内存空间切换,在switch_mm函数中)+ 寄存器切换(包括EIP,ESP等,均在switch_to函数中)。这里我们讲述下switch_to主流程: 在switch_mm函数中将new_task->pgd设置到cr3寄存器中,实现页表切换,由于每个进程3- 4G的页表映射机制完全一样(从内核页表中直接复制过来的),故这里虽然切换了pgd,但是并无影响,只是在任务回到用户空 间中时,才会发生变化,因为...

by wuqixuan - Linux文档专区 - 2008-08-06 23:07:04 阅读(568) 回复(0)

进程的调度与切换直接影响着进程子系统的执行效率.linux摒弃了i386 硬件提供的进程切换方法.手动保存进程上下文.在调度策略上,近几个版本对其都有很大的改动.特别是在2.6.23版本与以前发布的2.6.0更是相差甚远.在调度方面.我们以2.6.9在代码作为基准作为分析. 一:进程切换 进程切换过程是在context_switch()中实现的.从它的代码说起: static inline void context_switch(struct rq *rq, struct task_struct *prev, s...

by danforn - Linux文档专区 - 2008-11-11 16:58:02 阅读(676) 回复(0)