gpt4 book ai didi

linux - Linux 是如何记住它的内核堆栈指针的?

转载 作者:IT王子 更新时间:2023-10-29 00:34:55 30 4
gpt4 key购买 nike

我知道 Linux 中有两种类型的堆栈:每个用户线程的用户堆栈和内核线程的内核堆栈(但 1 个进程)。中断,更准确地说,中断程序,是这两种模式(内核(0)和用户(3))之间的桥梁。中断向量表让处理器在PC寄存器中加载正确的指令地址,但是当它切换到内核模式时堆栈指针寄存器是如何改变的呢?子程序是否在其第一条指令之前指示内核堆栈在哪里?或者处理器是否使用了两个堆栈指针寄存器(我真的很怀疑)?

“从中断返回”如何知道返回哪里? PCB 是保存在内核堆栈中还是其他地方?

如果我说的是真的,请不要犹豫,纠正它。

非常感谢您的帮助。

最佳答案

Linux 内核中的内核模式堆栈存储在task_struct->stack 中。它来自何处以及如何产生完全取决于平台。某些平台可能不会像上面那样保存它。但随后您可以使用 task_stack_page() 查找堆栈。

进入中断处理程序时,PC 存储在内核堆栈中。从中断返回时,此 PC 从内核堆栈加载回来。

关于linux - Linux 是如何记住它的内核堆栈指针的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28734448/

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