Microsoft Press 的
Windows Internals,第 6 版说,在 Windows NT 中,每个线程都有 2 堆栈:一个在用户模式下运行时使用,一个在内核中使用模式。
为什么会这样?似乎用户模式堆栈也可以在系统调用中使用。这种设计有什么优势吗?
最佳答案
主要原因是内核态不能信任用户态。如果内核使用用户模式堆栈,其他一些用户模式线程可以观察该堆栈上的值并随意修改它们。恶意软件完全控制系统是微不足道的。
关于multithreading - 为什么 Windows NT 线程具有独立的用户模式/内核模式堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177591/