我一直在上一门操作系统类(class),在一个关于上下文切换的讲座中,提到当上下文切换发生时,操作系统将所有寄存器的状态保存到一个 PCB block 中,以便当操作系统选择重新访问它时,可以恢复此过程的确切状态。
在汇编中,如何编写代码来保存所有这些信息?据我了解,如果您想将任何信息写入内存,则需要将内存位置存储在您的一个寄存器中。因此,在将寄存器写入内存的过程中,至少有一个寄存器必须覆盖到 PCB block 中的某个位置,并且存储在该寄存器中的信息将丢失。
是否有使这项任务成为可能的硬件支持?
最佳答案
这是一个如何完成的例子:
1. 将一个寄存器存入堆栈。
2. 将 PCB 地址加载到该寄存器。
3. 保存PCB中的所有状态,包括取回栈中保存的寄存器值。
关于assembly - CPU 如何在上下文切换中保存其寄存器状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581088/