致力于自动化测试技术,性能测试技术的研究,测试技术培训以及项目实施,做一个技术与实施的主导者。
操作系统CPU上下文切换
上一篇 /
下一篇 2012-06-08 11:43:43
/ 个人分类:Linux
进程切换51Testing软件测试网-qTRcGN/uK5G
进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。 这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器 的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。那么被中止运行进程的中间数据存在何处好呢?当然这个地方应该是进程的 私有堆栈。 51Testing软件测试网kXu@ L*E
让进程来占用处理器,实质上是把某个进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。 51Testing软件测试网P:[+k1s I2Tr p
这就像多个同学要分时使用同一张课桌一样,说是要收回正在使用课桌同学的课桌使用权,实质上就是让他把属于他的东西拿走;而赋予某个同学课桌使用权,只不过就是让他把他的东西放到课桌上罢了。 51Testing软件测试网Lk/D:`F.t9Z-a(A
在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的 切换实质上就是被中止运行进程与待运行进程上下文的切换。在进程未占用处理器时,进程 的上下文是存储在进程的私有堆栈中的。
r+I/j'_}*qhh7KS:n
\0从上面的叙述可知,调度器进程切换的代码应有如下功能:
P ZS[y"^B%e0●保存处理器PC寄存器的值到被中止进程的私有堆栈; 51Testing软件测试网 an*U'W?PK
●保存处理器PSW寄存器的值到被中止进程的私有堆栈;
B2Ci Wg0●保存处理器SP寄存器的值到被中止进程的进程控制块;
xQ5o ^
P0●保存处理器其他寄存器的值到被中止进程的私有堆栈;
&Ju1?7SI6M(Az}
n0●自待运行进程的进程控制块取SP值并存入处理器的寄存器SP;
9e:C6uz[W.Sm0●自待运行进程的私有堆栈恢复处理器各寄存器的值;
F?MQW_`r.a0●自待运行进程的私有堆栈中弹出PSW值并送入处理器的PSW;
TG8]
f&G6Z