每个进程是否存在内核堆栈?

是否存在每个用户空间进程的内核堆栈和用户空间堆栈? 如果两个堆栈都存在,那么每个用户空间进程应该有两个堆栈指针?

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