内核堆栈与用户模式应用程序堆栈

Ton*_*ion 3 language-agnostic stack kernel

内核堆栈是否与我们(程序员)编写的应用程序使用的用户模式堆栈不同?

你能解释一下这些差异吗?

Mei*_*bur 6

从概念上讲,两者都是相同的数据结构:堆栈.

每个线程有两个不同堆栈的原因是因为在用户模式下,不得允许代码搞乱内核内存.当切换到内核模式时,只能在内核模式下访问的内存中的不同堆栈用于返回地址,依此类推.

如果用户模式可以访问内核堆栈,它可以修改跳转地址(例如),然后进行系统调用; 当内核跳转到先前修改的地址时,您的代码将在内核模式下执行!

此外,有关其他进程(用于同步)的安全相关信息/信息可能位于内核堆栈上,因此用户模式也不应具有对它的读访问权限.