13.5.7 内核堆栈



13.5.7  内核堆栈

进程要么运行在用户模式下,要么运行在内核模式下。当处于用户模式时,进程使用用户堆栈存储如参数、嵌套子程序的返回地址或过程这样的数据。当进程提交系统调用时,它开始在内核模式下运行。此时,内核在将执行该系统调用所需的参数传送到进程u区前,先使用自己的堆栈存储这些参数,同时也要保存该系统调用产生的结果。

内核从提交系统调用的进程的u区复制这些参数,将返回值(或是结果)和该系统调用产生的错误值传回进程的u区。因此,系统调用从u区(从用户堆栈将这些参数移动到的位置)获取参数,并将结果/错误值从系统调用再放入u区。内核借助内核堆栈执行系统调用。

因此,对每个进程而言,分别会有一个用户堆栈和内核堆栈。即使不同进程使用和共享同一个内核程序,每个进程都有自己的内核堆栈,用于存储参数值和返回地址/错误值。

内核将堆栈地址作为进程表中的指针进行维护,如图13-27所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值