您的位置:首页 > 其它

进程切换

2015-07-01 17:08 274 查看
进程切换

我们通常所说的从某个进程收回处理器,实质上是吧进程存放在处理器的寄存器中的数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。一般被中止运行的进程的中间数据存放在进程的私有堆栈和PCB中。

同理,让进程占用处理器,实质上是把某个进程放在私有堆栈中的寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC。于是待运行进程就开始被处理器运行了,也就是这个进程已经占用处理器的使用权了。

切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程上下文。所以进程的切换实际上是被中止运行的进程与待运行的进程上下文的切换。

其过程的基本思想是:

当进程A要切换出去时,先把EIP和其他寄存器的内容保存到自己的堆栈中,而这个被保存的EIP实际指向了用来恢复其他寄存器的指令的起始地址。接着将ESP的内容保存到对应的thread_struct结构体中(Linux中用于实现PCB的结构是task_struct,thread_struct是task_struct的一个成员)以备切换回来时使用。在ESP中装入进程B的ESP内容,其他需要切换回来的状态分量都可以通过ESP切换回来,注意按照保存的顺序切换回来。

进程切换和线程切换

联系:它们的本质都是程序上下文的切换

区别:进程的切换还伴随着进程空间的切换
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: