gpt4 book ai didi

operating-system - 在上下文切换期间,操作系统是否使用 PCB 或内核堆栈来恢复寄存器?

转载 作者:行者123 更新时间:2023-12-05 03:40:57 24 4
gpt4 key购买 nike

我目前正在阅读 Remzi 和 Andrea 的《操作系统——三篇简单的文章》,在关于上下文切换的部分,它指出在中断期间,正在运行的进程的寄存器被保存到它的内核堆栈中,然后下一个进程的寄存器是从它的 PCB 加载的,但后来它说它是从它的内核堆栈加载的

enter image description here

我的问题是,为什么稍后从内核堆栈加载寄存器时从 PCB 加载寄存器,当您将所有信息保存在内核堆栈上时,PCB 的意义何在?

最佳答案

我创建了一个图表来帮助更好地理解流程。我组织它类似于问题中的数字。

enter image description here

During a context switch, does the OS use PCB or kernel stack to restore registers?

它同时使用了这两者。

why load the registers from the PCB when you later load them from the kernel stack

因为你只从PCB加载了Kernel Stack的esp,其余寄存器都从Kernel Stack加载。

what even is the point of a PCB when you save all the info on the kernel stack

因为您没有将所有信息保存在内核堆栈中,所以您将大部分信息保存在内核堆栈中。内核堆栈(又名其 esp)的位置存储在 PCB 中。

注意:请注意该图仅用于说明目的(即具体且仅回答 OP 关于分别保存用户空间寄存器和内核空间的意义所在的问题分别注册到内核堆栈和 PCB)。从某种意义上说,根据操作系统及其体系结构,还有许多其他寄存器可以保存和恢复,这并不完全准确。尽管如此,它还是准确地说明了 OP 问题的答案。

关于operating-system - 在上下文切换期间,操作系统是否使用 PCB 或内核堆栈来恢复寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67955845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com