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

标签 multithreading stack kernel windows-nt

Microsoft Press 的

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

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

最佳答案

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

关于multithreading - 为什么 Windows NT 线程具有独立的用户模式/内核模式堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177591/

相关文章:

java - Java 缓存整个对象还是仅缓存对象的一部分? (可见性问题)

java - 为什么我不能用我的类的实例创建新线程?

python - 了解栈帧在递归函数中的工作原理

c - Linux 内核中的 major() 和 minor() 函数

kernel - 高半内核初始化

linux-kernel - 将 mmap 内核引导参数保留的内存映射到用户空间

java - 为什么等待/通知没有发生在这里?

java - 一个不停运行的线程

java - 引用数组列表中的元素,同时删除一些元素

c# - stack.ToList() – 元素顺序?