系统栈和内核栈的区别
内核栈是操作系统当中的一块固定的区域,用于保存中断现场,操作系统子进程之间的调用的参数和返回值。
用户栈是用户空间当中的区域,用于保存用户进程当中各个子程序之间调用的参数和返回值等信息。
当在用户态执行的程序由于中断进入内核态之后,会将原本的用户态的栈指针保存到内核栈中,从内核态返回
后会通过内核栈中保存的信息恢复用户态执行的现场。
为什么要使用用户栈和内核栈?
1 出于安全性原因考虑,进程在陷入内核态之后,其相关信息是保存在栈中的,如果使用用户栈的话,栈中的信息
可能会被其他的线程更改,从而造成崩溃的情况。就是为了高特权的内存,不被低特权的程序修改。
linux下每个线程是拥有自身独立的内核栈的。

浙公网安备 33010602011771号