【操作系统】进程句柄

news2024/11/25 18:57:31

进程句柄

  • 句柄是什么
  • 为什么需要句柄
  • 作用

句柄是什么

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

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


为什么需要句柄

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

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

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


作用

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

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

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/403321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从一道面试题看 TCP 的吞吐极限

分享一个 TCP 面试题:单条 TCP 流如何打满香港到旧金山的 320Gbps 专线?(补充,写成 400Gbps 更具迷惑性,但预测大多数人都会跑偏,320Gbps 也就白给了) 这个题目是上周帮一个朋友想的,建议他别问三次握手&a…

C#:Krypton控件使用方法详解(第十六讲) ——kryptonCheckedListBox

今天介绍的Krypton控件中的kryptonCheckedListBox。下面介绍控件的外观属性如下图所示:Cursor属性:表示鼠标移动过该控件的时候,鼠标显示的形状。属性值如下图所示:UseWaitCursor属性:表示鼠标在控件中等待时&#xff…

问ChatGPT:零基础如何学好.Net Core?

更多开源项目请查看:一个专注推荐.Net开源项目的榜单 ChatGPT横空出世,一下子让全球互联网企业都慌了,纷纷表示:马上跟进发布ChatGPT,媒体纷纷报道大有改变教培行业。 下面我们问问ChatGPT:零基础如何学好…

EasyCVR视频融合平台开放插件功能:支持EasyNTS与EasyShark抓包

EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅…

GPS/GPRS车载定位系统智能终端设计μC/OS-Ⅱ调度液晶显示汽车行驶记录仪电路

wx供重浩:创享日记 对话框发送:gps电路 免费下载完整无水印论文报告(包含主板电路图和采集板电路图) 文章目录一、绪论二、车载智能终端三、车载智能终端的硬件结构及设计四、车载智能终端的软件结构及设计五、总结和展望附录一 汽…

小i机器人登陆纳斯达克:市值4.2亿美元,与苹果打了10年专利侵权官司

‍数据智能产业创新服务媒体——聚焦数智 改变商业要问当前科技圈里最靓的仔是谁?那当然是非 ChatGPT莫属。当下谁能推出真正意义上的中国版ChatGPT,并且在这轮AI浪潮竞争白热化阶段中笑到最后,已经成为人们关注的焦点。美东时间3月9日&…

使用chatgpt写6.5分作文范文

其实使用chatgpt最大的背单词好处就是你可以看到真正的外国人的思维到底是如何的。而且,你也可以看到chatgpt这个模型,如果是编写代码的话,你如果使用中文,它编写的效果是没有英文输入的好的,为什么呢?因为…

Vector - CAPL - log回放模块函数

Replay log回放模块作为我们常见的问题分析小工具,是大部分车载圈老人的必备工具,不过自从CANoe软件11.0之后的版本变动依然无法阻挡每一个车载人使用的热情,除了我们常见的手动回放log外,我们工作中还有一部分低概率以及极低概率出现的问题,这时候我们就需要通过自动化对…

python趣味编程-2048游戏

在上一期我们用Python实现了一个盒子追逐者的游戏,这一期我们继续使用Python实现一个简单的2048游戏,让我们开始今天的旅程吧~ 在 Python 免费源代码中使用 Tkinter 的简单 2048 游戏 使用 Tkinter 的简单 2048 游戏是一个用Python编程语言编码的桌面游…

阅读笔记DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks

zi,t∈Rz_{i,t}\in \mathbb{R}zi,t​∈R表示时间序列iii在ttt时刻的值。给一个连续时间段t∈[1,T]t\in [1, T]t∈[1,T],将其划分为context window[1,t0)[1,t_0)[1,t0​)和prediction window[t0,T][t_0,T][t0​,T]。用context window的时间序列预测prediction window…

关于异常控制流和系统级 I/O:进程

💭 写在前面:本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写,该教材由Randal E. Bryant和David R. OHallaron 合著…

C 去除字符串中重复字母(LeetCode)

🌟前言摆烂太久,好久没有更文了,小九和大家一起看看题写写题找回手感吧,也希望这篇文章可以帮助正在寻找解题答案的朋友,你们的支持就是我最大的动力!求三连!求关注呀!🌟…

信息系统项目管理师第4版教材的变化:PMBOK第六版和第七版的叠加

昨天下午,软考官方网站突然发布了第4版考纲和教材,这让很多在准备今年上半年信息系统项目管理师考试的考生们有些紧张。那么这次教材改版主要的变化是什么,5月份的考试是否会按照新版的教材来考呢?让我们逐个章节进行分析。信息化…

Spark RDD编程基本操作

RDD是Spark的核心概念,它是一个只读的、可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,可在多次计算间重用。Spark用Scala语言实现了RDD的API,程序员可以通过调用API实现对RDD的各种操作,从而实现各种…

数据结构刷题(二十三):47全排列II、51N皇后、37解数独

1.全排列II题目链接思路:回溯之排列问题并且有数组排序标记数组。 回溯三部曲同46. 全排列。过程图:https://programmercarl.com/0047.%E5%85%A8%E6%8E%92%E5%88%97II.html#%E6%80%9D%E8%B7%AF注意:本题的去重操作主要在树层上。就是说同一树…

2.JVM常识之 运行时数据区

1.JVM核心组成 2.JVM 运行时数据区(jdk8) 程序计数器:线程私有,当前线程所执行字节码的行号指示器 jvm栈:线程私有,Java 虚拟机栈为 JVM 执行 Java 方法服务 本地方法栈:线程私有,本…

SpringBoot接口 - 如何统一异常处理

SpringBoot接口如何对异常进行统一封装,并统一返回呢?以上文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢?为什么要优雅的处理异常如果我们不统一的处理异常,经常会在controller层有大量的异常…

【Java】初识Java

Java和C语言有许多类似之处,这里就只挑不一样的点来说,所以会比较杂乱哈~ 目录 1.数据类型 2.输入与输出 2.1三种输出 2.2输入 2.3循环输入输出 //猜数字小游戏 //打印乘法口诀表 3.方法 //交换两个数(数组的应用) //模…

栈的应用-算数

本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示,计算器由两个堆栈组成,一个堆栈 S1​ 存放数字,另一个堆栈 S2​ 存放运算符。计算器的最下方有一个等号键,每次按下这个键,计算器就…

Form Generator扩展 文本 组件

一、form-generator是什么?✨ ⭐️ 🌟 form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 但目前它提供的组件并不能满足我们在项目中的…