1
6
当内核运行时,它会在某个地方(在内核内存中)保存当前任务的寄存器内容的备份(在许多处理器上,可能有一些机器指令或硬件机制来帮助)。
当内核运行
scheduler
它选择运行一些任务,寄存器状态被恢复。注意,Linux具有
preemptive
行程安排。了解
context switching
和
interrupts
CPU modes
当该任务要求(例如通过一些系统调用)运行时,内核通过备份寄存器内容启动。 阅读 Operating Systems : Three Easy Pieces (可免费下载的书)。 每个 process user-space 代码、其寄存器内容、其文件描述符集、其 virtual address space 等(内核,包括其调度程序,正在管理所有这些)。对于多线程进程,每个 thread 有其注册内容(但他们共享 一些状态-尤其是虚拟地址空间、文件描述符等…-与同一进程中的其他线程)。 |
2
3
在同一个内核上的进程之间切换时,操作系统保存上一个进程的寄存器。这称为上下文切换(您可以搜索更多详细信息)。然后,操作系统恢复下一个进程的寄存器。 |
Ilya Loskutov · 无法将单词加载到寄存器中 2 年前 |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
Arya · 汇编语言中的“标签”——操作码 2 年前 |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 2 年前 |
R0M2 · 为什么“GCC”忽略汇编代码的-fno pic 2 年前 |
Akagi Akira · 如何在gnu汇编程序中组装MIPS cpu 2 年前 |