系统栈和内核栈的区别

  内核栈是操作系统当中的一块固定的区域,用于保存中断现场,操作系统子进程之间的调用的参数和返回值。

  用户栈是用户空间当中的区域,用于保存用户进程当中各个子程序之间调用的参数和返回值等信息。

  当在用户态执行的程序由于中断进入内核态之后,会将原本的用户态的栈指针保存到内核栈中,从内核态返回

后会通过内核栈中保存的信息恢复用户态执行的现场。

  为什么要使用用户栈和内核栈?

  1 出于安全性原因考虑,进程在陷入内核态之后,其相关信息是保存在栈中的,如果使用用户栈的话,栈中的信息

可能会被其他的线程更改,从而造成崩溃的情况。就是为了高特权的内存,不被低特权的程序修改。

  linux下每个线程是拥有自身独立的内核栈的。

  

posted @ 2020-08-13 15:17  一只小菜鸡a  阅读(578)  评论(0)    收藏  举报