assembly - CPU 如何在上下文切换中保存其寄存器状态?

标签 assembly operating-system context-switch

我一直在上一门操作系统类(class),在一个关于上下文切换的讲座中,提到当上下文切换发生时,操作系统将所有寄存器的状态保存到一个 PCB block 中,以便当操作系统选择重新访问它时,可以恢复此过程的确切状态。

在汇编中,如何编写代码来保存所有这些信息?据我了解,如果您想将任何信息写入内存,则需要将内存位置存储在您的一个寄存器中。因此,在将寄存器写入内存的过程中,至少有一个寄存器必须覆盖到 PCB block 中的某个位置,并且存储在该寄存器中的信息将丢失。

是否有使这项任务成为可能的硬件支持?

最佳答案

这是一个如何完成的例子:
1. 将一个寄存器存入堆栈。
2. 将 PCB 地址加载到该寄存器。
3. 保存PCB中的所有状态,包括取回栈中保存的寄存器值。

关于assembly - CPU 如何在上下文切换中保存其寄存器状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49581088/

相关文章:

asp-classic - 经典 asp -- 最好做大量的 response.write 或使用 <%

c# - 最坏情况操作系统时钟精度?

c - 需要使用 C 中的自定义 Linux/UNIX 命令行实用程序 "cal"进行提示

linux - 尝试在笔记本电脑上安装 Fedora 时如何解决 System.OutOfMemoryException 问题?

assembly - 一条 x86 指令从 L1 缓存读取或写入的最大数据量是多少?

java - 可以等待再次唤醒上下文切换的线程

linux - linux 调度程序中上下文切换的基准

c - 将 C 翻译成 MIPS 汇编

assembly - 减去两个字符

assembly - x86 汇编操作系统 hello world 未按预期工作