上下文切换时间中断

时间:2017-01-17 12:48:05

标签: operating-system context-switch

操作系统:三个简单的部分

中引用以下段落
  

请注意,发生了两种类型的寄存器保存/恢复   在此协议期间。第一种是定时器中断发生时;在   在这种情况下,运行进程的 用户注册 是隐式的   由 硬件 保存,使用该进程的内核堆栈。该   第二种是OS决定从A切换到B;在这种情况下,    内核寄存器 软件 (即操作系统)明确保存,   但这次是在流程的过程结构中进入内存。

阅读关于上下文切换的其他文献我明白定时器中断会将cpu引入内核模式,然后将进程上下文保存到内核堆栈中。

为什么作者在谈论强调硬件/软件的多重上下文?

2 个答案:

答案 0 :(得分:2)

作者强调硬件/软件部分,因为基本上上下文保存正在完成,有时是硬件,有时候是的软件

当计时器interrupt发生时,user registershardware保存(意味着由CPU本身保存)在该进程的kernel stack上。完成interrupt handler代码后,将使用该进程的user registers恢复kernel stack,从而恢复user stack并成功处理从user mode返回{ {1}}。

如果来自流程kernel mode的{​​{1}}要处理context switch,则两个流程AB中的kernel stacks个来自切换,在A内,间接意味着保存和恢复B。使用术语软件,因为在选择下一个要运行的流程后,kernel流程会调用kernel registers来切换schedulerfunction(thats why software)代码无需担心kernel stacks值 - 这些值已经安全地保存在context switch之后。

答案 1 :(得分:1)

  

第一个是定时器中断发生时;在这种情况下,运行进程的用户寄存器由硬件隐式保存,使用该进程的内核堆栈。

通常,只保存一些寄存器,这通常是中断堆栈。

  

第二种是当OS决定从A切换到B时;在这种情况下,内核寄存器由软件(即操作系统)显式保存,但这次是在进程的进程结构中的内存中。

通常,此开关通过特殊指令出现在硬件中。也许他们指的是交换机是通过软件触发的,而不是由硬件触发的中断。

也感谢您的参考。我刚刚开始经历它。它比大多数只会令人困惑的操作系统书籍更好。