OS 中断例程

OS routine on an interrupt

我正在阅读有关如何在过程映像中执行模式切换的信息,但我对为什么过程映像具有内核堆栈而不仅仅是用户堆栈感到困惑?这是在发生中断时完成的。用户栈和内核栈不是做同样的事情吗?

为了安全起见。对于每个处理器模式,一个进程通常有一个堆栈。通常有一个系统范围或进程中断堆栈,它是一个额外的内核模式堆栈。

内核堆栈仅限于内核模式访问。这可以防止用户模式代码与内核堆栈混为一谈,以免在内核模式下发生坏事(例如,从过程中更改 return 地址)。