为什么内核栈放置在上下文的动态部分

为什么内核栈放置在上下文的动态部分

问题描述:

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

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

和在定义的图,

该图的右侧示出的背景下的动态部分。它由多个堆栈帧组成,其中每个帧包含上一层保存的寄存器上下文,以及内核堆栈作为内核在该层中执行。

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

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

自内核以来需要动态上下文,用户地是分开的。可能需要调用核心土地,并且来回地返回用户土地。跟踪该系统使用流程上下文的动态部分。