FUD*_*FUD 4 operating-system context-switch
引用操作系统中的以下段落:三个简单的部分,
请注意,在此协议期间会发生两种类型的寄存器保存/恢复。第一个是定时器中断发生时;在这种情况下,正在运行的进程的用户寄存器由硬件使用该进程的内核堆栈隐式保存。第二个是当操作系统决定从A切换到B时;在这种情况下, 内核寄存器由软件(即操作系统)显式保存,但这次保存在进程的进程结构中的内存中。
阅读有关上下文切换的其他文献,我了解到定时器中断会将 cpu 置于内核模式,然后将进程上下文保存到内核堆栈中。
为什么作者在谈论多上下文保存时强调硬件/软件?
作者强调它的硬件/软件部分,因为基本上它正在完成上下文保存,有时通过硬件,有时通过软件。
当计时器interrupt发生时,它们被该进程的user registers保存hardware(意味着由其CPU本身保存) 。kernel stack当interrupt handler代码完成时,user registers将使用kernel stack该进程的 来恢复,从而恢复user stack并进程成功返回到user modefrom kernel mode。
如果是context switch从一个进程A到另一个进程B,则kernel stacks两个进程的A和B会在 内部进行切换kernel,这间接意味着 的保存和恢复kernel registers。使用术语“软件”是因为scheduler选择下一个要运行的进程后的进程会调用 a function(thats why software),它会进行 的切换kernel stacks。代码context switch不必担心 user register值 - 这些值已经安全地保存在此时kernel stack。
| 归档时间: |
|
| 查看次数: |
2782 次 |
| 最近记录: |