我目前正在阅读 Remzi 和 Andrea 所著的《操作系统 - 三个简单的部分》,在有关上下文切换的部分中,它指出在中断期间,正在运行的进程的寄存器被保存到其内核堆栈中,然后将运行进程的寄存器保存到内核堆栈中。下一个进程是从 PCB 加载的,但稍后它会说它是从内核堆栈加载的
我的问题是,当您稍后从内核堆栈加载寄存器时,为什么要从 PCB 加载寄存器?当您将所有信息保存在内核堆栈上时,PCB 的意义何在?
我创建了一个图表来帮助更好地理解流程。我将其组织得与问题中的图类似。
在上下文切换期间,操作系统是否使用 PCB 或内核堆栈来恢复寄存器?
它同时使用。
当您稍后从内核堆栈加载寄存器时,为什么要从 PCB 加载寄存器
因为你只从PCB加载内核堆栈的esp,而其余寄存器则从内核堆栈加载。
当你将所有信息保存在内核堆栈上时,PCB 的意义何在?
因为您没有将所有信息保存在内核堆栈上,所以您将大部分信息保存在内核堆栈上。内核堆栈(也称为其 esp)的位置存储在 PCB 中。
注意:请注意,该图纯粹用于说明目的(即专门且仅回答OP的问题,即分别将用户空间寄存器和内核空间寄存器分别保存到内核堆栈和PCB中的意义是什么)。从某种意义上说,它并不完全准确,因为还有许多其他寄存器根据操作系统及其体系结构进行保存和恢复。尽管如此,它准确地说明了OP问题的答案。
| 归档时间: |
|
| 查看次数: |
1491 次 |
| 最近记录: |