Operating system 上下文打开时间中断

Operating system 上下文打开时间中断,operating-system,context-switch,Operating System,Context Switch,引用操作系统中的以下段落:三个简单的部分 请注意,有两种类型的寄存器保存/恢复 在本协议期间。第一个是定时器中断发生时;在里面 在这种情况下,运行进程的用户寄存器是隐式的 由硬件保存,使用该进程的内核堆栈。这个 第二是当操作系统决定从A切换到B时;在这种情况下 内核寄存器由软件(即操作系统)显式保存, 但这次进入内存的过程是在进程结构中进行的 阅读有关上下文切换的其他文献,我了解到定时器中断将cpu置于内核模式,然后将进程上下文保存到内核堆栈中 为什么作者要谈论强调硬件/软件的多上下文保存?作者

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

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

阅读有关上下文切换的其他文献,我了解到定时器中断将cpu置于内核模式,然后将进程上下文保存到内核堆栈中

为什么作者要谈论强调硬件/软件的多上下文保存?

作者强调硬件/软件的一部分,因为基本上它的上下文保存是由硬件和软件完成的

当计时器中断发生时,用户寄存器由CPU本身保存在该进程的内核堆栈上的硬件意义保存。当中断处理程序代码完成时,将使用该进程的内核堆栈恢复用户寄存器,从而恢复用户堆栈,进程将成功地从内核模式返回到用户模式

在从进程a到进程B的上下文切换的情况下,两个进程a和B的内核堆栈在内核内部进行切换,这间接意味着保存和恢复内核寄存器。之所以使用软件这个术语,是因为调度器进程在选择下一个要运行的进程后调用了一个函数,这就是为什么使用软件来切换内核堆栈的原因。上下文切换代码不必担心用户寄存器值——到那时,这些值已经安全地保存在内核堆栈中

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

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

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

通常,这种切换是通过特殊指令在硬件中发生的。也许他们指的是开关是通过软件触发的,而不是由硬件触发的中断

也谢谢你的推荐。我刚刚开始经历它。它比大多数只会让人困惑的操作系统书籍要好得多