首页 文章

上下文切换开启时间中断

提问于
浏览
2

从操作系统引用以下段落:三个简单的部分,

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

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

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

2 回答

  • 1

    作者强调了它的一部分,因为它基本上是 context saving ,有时是 hardware ,有时是 software .

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

    如果 context switch 来自进程 A 来处理 B ,那么 AB 中的两个进程的 kernel stacks 将在 kernel 内切换,这间接意味着保存和恢复 kernel registers . 使用术语 Software 是因为在选择下一个运行的进程后 scheduler 进程调用 function(thats why software) ,这会切换 kernel stacks . context switch 代码无需担心 user register 值 - 那些已经安全地保存在 kernel stack 中 .

  • 2

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

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

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

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

    还要感谢这个参考 . 我刚刚开始经历它 . 它比大多数只会令人困惑的操作系统书籍更好 .

相关问题