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

标签 language-agnostic stack kernel

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

你能解释一下区别吗?

最佳答案

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

之所以每个线程有两个不同的堆栈是因为在用户模式下,不允许代码弄乱内核内存。当切换到内核模式时,内存中的另一个堆栈只能在内核模式下访问,用于返回地址等。

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

此外,与安全相关的信息/关于其他进程的信息(用于同步)可能在内核堆栈上,因此用户模式也不应该对其进行读取访问。

关于language-agnostic - 内核堆栈与用户模式应用程序堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974612/

相关文章:

language-agnostic - 数据存储组织

带无效数据成员问题的 C 链表/堆栈

c - 寻找组织单向火车站交通的算法中的错误

c++ - 堆栈运行时错误

linux - 如何在 Linux 内核模块中读/写字符设备

linux - 什么linux内核代码创建了/sys/devices/system/cpu/cpuX?

algorithm - 使用 Box-Muller 变换生成具有任意 sigma 和均值的伪随机数

testing - TDD 单元测试子方法

regex - 哪些编程语言是常规的?

c - 为什么进程不能抢占中断?