【操作系统】进程句柄

句柄是什么

先给结论,句柄(handle)实际上是一个指向指针的指针

它指向进程所要访问的进程对象的地址,是用来找到目标进程的索引,当我们想要访问对象进程时,就要利用存储在本进程中的句柄来找到对象进程。


为什么需要句柄

在这里插入图片描述
在这里插入图片描述
图片来源,感谢@whitelc的分享

图1是程序运行到某时刻的内存快照。
图2是该程序运行一段时间后的内存快照。

由上图可知,想要访问的进程对象的地址是会变化的。这是由于操作系统为了实现虚拟内存需要不断地将内存中的数据与外存进行调度,而每次调入内存的数据是不会存放到相同位置的(为了提高效率)。这就需要每个进程在自己的进程空间内开辟一块区域专门存储目标进程的地址,并且这块区域要维护目标进程地址的变化以应对下一次访问的需求,而这块区域内的每一个32位无符号整型数(32位系统中)就对应一个句柄,而这块区域就是句柄表


作用

以windows系统为例,句柄就是用来标识进程对象的一个序号,用来找到目标进程。同时,它并不唯一标识一个目标进程。

例如,进程A和进程B都需要访问进程C,那么,进程A和进程B的句柄表中都会保存指向进程C的句柄,而这两个句柄以及它们指向的地址是不同的,但是他们指向的地址中存放的目标进程地址是相同的,这句话有点绕,因为句柄表中的句柄并不是直接指向目标进程的PCB的,它指向的是目标进程PCB的地址

套用之前看过的博客当中的原话(具体哪一篇记不清了😥,没有引用,请原作者见谅):
句柄地址(稳定)->记载着对象在内存中的地址(不稳定)->实际对象。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

事多做话少说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值