每个进程是否都有自己的内核栈?

9

每个用户空间进程都有内核栈和用户空间栈吗?如果两个栈都存在,每个用户空间进程应该有2个栈指针对吗?

2个回答

16
在Linux中,每个任务(用户空间或内核线程)都有一个内核堆栈,其大小为8kb或4kb,具体取决于内核配置。确实存在不同的堆栈指针,但在任何给定时间,CPU中只有一个指针;如果用户空间代码正在运行,则由任务状态段指定要在异常或中断时使用的内核堆栈指针,如果内核代码正在运行,则用户堆栈指针保存在位于内核堆栈上的上下文结构中。

0
每个用户空间线程(不仅是进程)都有其用户空间堆栈和内核空间堆栈。 内核空间每个 CPU 都有一个堆栈,而 ISR 也有其单独的堆栈。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接