【发布时间】:2018-03-30 20:34:41
【问题描述】:
我一直在学习操作系统课程,在关于上下文切换的讲座中,提到当发生上下文切换时,操作系统会将所有寄存器的状态保存到一个 PCB 块中,以便当操作系统选择重新访问它时,可以恢复此过程的确切状态。
在汇编中,有人会如何编写代码来保存所有这些信息?据我了解,如果您想将任何信息写入内存,则需要将内存位置存储在您的一个寄存器中。因此,在将寄存器写入内存的过程中,至少有一个寄存器必须被覆盖到 PCB 块中的某个位置,并且存储在该寄存器中的信息将会丢失。
是否有硬件支持使这项任务成为可能?
【问题讨论】:
-
这个问题的答案很大程度上取决于您正在编程的架构。一些架构(如 x86)具有硬件支持,而其他架构(如 SPARC)则没有。此外,操作系统之间的实现方式不同,因此请至少将问题缩小到单个 CPU。
-
好的,谢谢。在我完成课程的过程中,我真的只是对这个问题感到好奇,我想知道这样的事情怎么可能发生。我目前没有开发任何需要能够做到这一点的东西,我唯一熟悉的架构是 MIPS,但我还没有深入研究过它
标签: assembly operating-system context-switch