为什么unix进程的内核堆栈放在上下文

时间:2017-10-05 14:38:31

标签: unix process stack kernel

我正在阅读this本书,在“过程结构”一章中,在讨论过程的上下文时,它将上下文分为两部分。静态和动态部分。它说每个进程都有一个用户堆栈和一个内核堆栈,内核堆栈放在上下文的动态部分。

  

流程的系统级上下文的动态部分由一组图层组成,可视化为后进先出的堆栈。

在定义数字时,

  

图的右侧显示了上下文的动态部分。它由几个堆栈帧组成,其中每个帧包含前一层的已保存寄存器上下文,以及内核在该层中执行的内核堆栈。

因此,虽然用户空间堆栈位于上下文的静态部分,但是内核堆栈是否有任何特殊原因要放在动态部分中?

1 个答案:

答案 0 :(得分:1)

对我来说,每个进程都有静态和动态上下文。对于内核上下文,对最后一个动态部分的引用必须存储在它的静态上下文中。这样系统就可以访问动态部分。 Please look here

因为内核和用户域是分开的,所以需要动态上下文。可以要求调用内核域,并来回返回用户域。跟踪该系统使用流程上下文的动态部分。