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