几种内核对象的受信与非受信状态

本文详细介绍了操作系统中几种内核对象的状态变化,包括进程、线程、事件、等待定时器、信号量、互斥器等对象的受信与非受信状态,并解释了这些对象在不同状态下的行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

几种内核对象的受信与非受信状态

 

已通知状态(受信状态) 未通知状态(非受信状态)

进程内核对象

      当进程正在运行时,进程内核对象处于未通知状态。当进程停止运行时,就处于已通知状态。可以通过等待进程来检查进程是否仍然运行。

      无成功等待的副作用。

线程内核对象

      当线程正在运行时,线程内核对象处于未通知状态。当线程停止运行时,就处于已通知状态。可以通过等待线程来检查线程是否仍然运行。

      无成功等待的副作用。

事件内核对象

      包括人工重置的事件和自动重置的事件。

当人工重置事件得到通知时,等待该事件的所有线程成为可调度线程;它没有成功等待副作用。

当自动重置的事件得到通知时,等待该事件的线程中只有一个线程变为可调度线程。其成功等待的副作用是该对象自动重置为未通知状态。

      事件内核对象通过CreateEvent创建,初始可以是通知或未通知状态。SetEvent将事件改为已通知状态,ResetEvent将事件设为未通知状态。

      当一个线程执行初始化操作,然后通知另一个线程执行剩余的操作时,经常使用人工事件对象。另外如果一个写线程,多个读线程,可以让写线程完成写操作时通过人工事件通知读线程读取数据。

而自动事件对象则可以用于保护资源在同一时间只有一个线程可以访问,因为它保证只有一个线程被激活。

等待定时器内核对象

      等待定时器是在某个时间或按规定的时间间隔发出自己的信号通知的内核对象。包括人工重置的定时器和自动重置的定时器。初始必须是未通知状态。

      当发出人工重置的定时器信号时,等待该定时器的所有线程变为可调度;无成功等待副作用。

      当发出自动重置的定时器信号时,只有一个等待线程变为可调度线程。成功等待副作用是重置对象。

      通过CreatWaitableTimer创建,CancelWaitableTimer撤销一个定时器,SetWaitableTimer告诉定时器何时让其变为已通知状态。

信号量内核对象

      信号量用来对资源进行计数。它包含两个32位值,一个表示能够使用的最大资源数量,一个表示当前可用的资源数量。

      信号量的使用规则如下:

1.       如果当前资源数量大于0,发出信号量信号

2.       如果当前资源数量是0,不发出信号量信号

3.       不允许当前资源数量为负值

4.       当前资源数量不能大于最大信号数量

通过CreateSemaphore创建。ReleaseSemaphore来释放资源,从而使当前资源数量增加。

当调用等待函数时,它会检查信号量的当前资源数量。如果它的值大于0,那么计数器减1,调用线程处于可调度状态。如果当前资源是0,则调用函数的线程进入等待状态。当另一个线程对信号量的当前资源通过ReleaseSemaphore进行递增时,系统会记住该等待线程,并将其变为可调度状态。

当有多个资源共访问时,经常使用信号量内核对象。

其成功等待副作用是当前资源数量减1。

互斥器内核对象

      互斥器保证线程拥有对单个资源的互斥访问权。互斥对象类似于关键代码区,但它是一个内核对象。

      互斥器不同于其他内核对象,它有一个“线程所有权”的概念。它如果被某个线程等待成功,就属于该线程。

      互斥器的使用规则如下:

1.       如果线程ID是0(无效ID),互斥对象不被任何线程拥有,并且发出该互斥对象的通知信号。

2.       如果ID是非0数字,那么一个线程可以拥有互斥对象,并且不发出该互斥对象的通知信号。

3.       互斥器有一个递归计数器。如果线程已经拥有了互斥器,而它再次等待该互斥器,则马上成功返回;而且递归计数器加1。

通过CreateMutex创建。ReleaseMutex用来释放互斥器。如果线程拥有互斥器,则首先把递归计数器减1,如果减到0,则线程释放互斥器,或者说互斥器的所属线程为空。此后其他线程就可以等待得到该互斥器了。但是如果一个线程ReleaseMutex了一个本来不归他所有的互斥器,则不会有任何效果。

      互斥器常用于保护由多个线程访问的内核块。互斥器保证了访问内存块的任何线程拥有对该内存块的独占访问。

      其成功等待副作用是将所有权赋予线程,并将递归计数器加1。

      互斥器和关键代码区的功能是非常相似的,只是一个是用户对象,一个是内核对象。

电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值