为什么 Windows NT 线程有单独的用户模式/内核模式堆栈?

Ale*_*x D 3 stack multithreading kernel windows-nt

Microsoft Press 的《Windows Internals》第 6 版指出,在 Windows NT 中,每个线程都有2 个堆栈:一个在用户模式下运行时使用,一个在内核模式下使用。

为什么会这样呢?看来用户模式堆栈也可以在系统调用中使用。这种设计有什么优点吗?

100*_*tes 5

主要原因是内核态不能信任用户态。如果内核使用用户模式堆栈,则其他一些用户模式线程可以观察该堆栈上的值并随意修改它们。恶意软件想要完全控制系统是微不足道的。