当前位置:首页 > 工业控制 > 电子设计自动化

摘 要: 介绍操作系统内核对实时性能的影响,结合NT技术,分析信号量机制下线程等待队列的排队策略,提出一种新排队策略,并在NT内核中实现该策略,最后对比几种策略的实验数据。
关键词: 实时操作系统;信号量;FIFO;LIFO;Priority;NT内核

1 操作系统对实时性能的影响
操作系统从诞生发展到现代经历了批处理系统、分时系统和实时系统等演进过程,具有多样化特征,派生出不同分支。其中,实时性是操作系统的重要特性,它要求在规定的时间窗口内逻辑正确地完成规定的任务,具有及时性、交互性、多路性、独立性等特点[1]。操作系统的实时性主要取决于I/O管理中的异步方式、内存管理中的页中断机制、线程管理中的内核代码是否可抢占、资源管理中的信号量策略以及中断延迟和时钟精度等硬件支撑结构[2]。由于多线程系统中线程对公共资源的争夺,资源的有效管理成为提升系统实时性能的重要因素,而信号量是管理公共资源的经典方式,所以,信号量设计是影响系统实时性的基础设计。本文重点论述信号量策略对实时性能的影响,并以NT内核为研究对象和实现平台,分析现有几种信号量策略的优、缺点,提出了一种新策略,在保证系统通用性前提下提升了系统实时性。
2 信号量策略对实时性能的影响
荷兰科学家设计的信号量算法为线程使用共享资源提供了有效的同步和互斥机制,NT内核中,信号量(KSEMAPHORE)通过封装DISPATCHER_HEADER结构实现计数器和等待队列,其数据结构struct _KSEMA-PHORE{DISPATCHER_HEADER Header LONG Limit}在参考文献[3]中有详细描述,上述结构可简略为:
struct _KSEMAPHORE{LONG SignalState //信号量
计数器变量
LIST_ENTRY WaitList} //线程等待队列链表
它的操作有创建(CreateSemaphore)、删除(CloseHandle)、请求(WaitForSingleObject)和释放(ReleaseSemaphore)信号量等。
线程使用资源前需要请求保护该资源的信号量,若信号量计数器减1后小于0,内核阻塞线程并将其排在信号量的线程等待队列中,同时启动线程调度程序将计算资源交给等待运行的线程,执行请求操作的线程没有陷入“忙等”,而是“让权等待”。若拥有信号量的线程释放资源使得计数器加1后还小于等于0,则唤醒线程等待队列中的等待线程并送线程调度队列。因此,在资源紧张情况下,请求和释放信号量会涉及资源等待队列和线程调度队列两个队列。本文讨论资源等待队列,对于资源请求,采用什么策略将线程放入队列;对于资源释放,采用什么策略把线程从队列中取出并放入调度队列。考虑放入与取出线程时同时采用策略的复杂性,固定取出策略从队列头部取出线程,请求时采取策略将线程放入队列,目前有以下三种策略[1]:
(1)后进先出LIFO(Last In First Out),线程请求资源后,若信号量计数器小于0,将线程排在线程等待队列的队头。该策略易于实现,线程等待队列只需一个单链表即可,这种“后来先服务”的方式还可以利用CPU缓存TLB(Tanslation Lookaside Buffer)中存在的刚被挂起线程的页表数据,不必更新缓存,提高了运行速度。但是,后进先出方式让最先被挂起的线程鲜有被服务,若获得资源的线程高频率请求资源,会导致最先请求资源的线程由于长时间处在队尾得不到服务导致“饿死”(Starva-
tion),使得一些线程频繁调度,而一些线程很少被调度。
(2)先进先出FIFO(First In First Out),线程请求资源后,若信号量计数器小于0,将线程排在线程等待队列的队尾。该策略克服了线程的“饿死”现象,对资源有请求的线程都能公平地占有资源,请求队列调度均衡化,从策略角度来看,所有线程都整齐划一无差别。这种先来先服务的方式没有考虑线程的其他因素,例如,对时间紧要程度的要求不同,有实时线程和一般线程之分,如果对实时线程和一般线程都采用先进先出方式,那么实时线程的实时性将大幅降低,特别在等待队列中已有很多线程的情况下,实时线程只有等待前面所有线程释放信号量后才能得到调度,造成不必要的延时。信号量的数据结构和操作也要复杂一些,需要一个队尾指针。
(3)基于优先级队列Priority,线程请求资源后,若信号量计数器小于0,则将线程根据其优先级排在线程等待队列的相应位置。该策略克服了先进先出的均衡化调度缺点,使优先级高的线程始终处在队列的队首,抢占优先级低的线程;线程可根据时间特性来确定它的优先级并排队,提高了线程的实时性。然而这种方式也有其不足,优先级低的线程始终得不到调度,同样会导致“饿死”。如果系统中有大量线程争抢稀有资源,排队过程还会引入队列的搜索时间。
这就需要一种策略,对于具有很强时效性的实时线程使用优先级排队,对于一般线程按照先进先出排队。由于实时线程很少,配合哈希(Hash)表分类实时线程(如图1虚直线上部分所示)基本不会引入搜索时间。
3 基于Priority和FIFO结合的信号量策略
针对优先级队列过分强调高优先级线程的缺点和先进先出队列过分强调平均的缺点,本文提出基于优先级和先进先出队列结合的排队策略,同时兼顾实时线程的强实时要求和一般线程的公平要求。
NT内核将用户线程以一对一方式映射到内核中,并基于优先级调度内核线程,内核将优先级从低到高分为32级,0~15级为一般线程,16~31级为实时线程。本文将这种线程调度队列的分级方式见之于信号量的等待队列,如图1虚直线上部分所示,把线程等待队列构造成一个长度为17、类型为LIST_ENTRY的哈希(Hash)指针数组,数组1~16根据优先级排列同一级别的实时线程,数组0根据先进先出排列一般线程。线程请求资源后,若信号量计数器小于0,且线程优先级小于16,则将该线程按照先进先出策略排在线程等待队列的队尾;若线程优先级大于等于16,则按照优先级排列该线程。当线程释放资源时,若信号量计数器小于0,内核应先从优先级队列中搜索挂起线程,再从先进先出队列中搜索挂起线程。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

中国制造2025是中国政府提出的一个重要发展战略,旨在推动中国制造业向高质量发展转型。该战略计划于2015年发布,旨在促进中国制造业从数量增长到质量提升的转变,加强创新能力,培育新兴产业,提高整体竞争力。在实施过程中,中...

关键字: 策略 战略 中国制造业

3D打印技术(3D printing technology)是一种以数字模型为基础,通过逐层累加材料的方式制造物体的技术。它已经在许多领域引起了广泛的关注和应用,包括制造业、医疗领域、建筑业、艺术设计等。本文将围绕3D打...

关键字: 3D打印 数字模型 技术

3D打印技术在医疗领域的应用日益广泛,它不仅能够提供个性化的医疗解决方案,还能够快速制造医疗器械和人体组织模型,为医生和患者带来了许多益处。本文将详细介绍3D打印技术在医疗方面的应用,并探讨其所起到的作用。

关键字: 3D打印 医疗 技术

6月21日消息,最近在法国巴黎举行的联合国教科文组织首届阿勒福赞奖颁奖仪式上,中国科学院古脊椎动物与古人类研究所付巧妹获得阿勒福赞科学、技术、工程、数学领域杰出青年科学家国际奖(简称"阿勒福赞奖")。

关键字: 科学 技术 工程

DSP又称数字信号处理器,数字信号处理是将信号以数字方式表示并处理的理论和技术。数字信号处理与模拟信号处理是信号处理的子集。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号...

关键字: DSP 技术 信号处理

以5G为代表的无线技术对于创造更美好未来的关键作用,正变得越发凸显。作为全球领先的无线科技创新者,高通从2G到5G始终引领着每一代技术演进,并通过领先的技术推动着移动行业的发展。过去一年,全球通信产业遭遇重创,处在前所未...

关键字: 高通 技术 5G

目前,在智能手机的这个大家庭里面,4G已经普及到千家万户。但是,科技的发展日新月异,是不会就此在4G面前止步不前的。因此,5G就横空出世了。在5G这个目前最先进的通讯信号领域,华为,无疑站在了潮头。在5G领域,感觉华为就...

关键字: 手机 华为 技术

无人机的用途很广,但每个应用的规模又在初级阶段或者是已经到了天花板,很难有大的增长。初级规模的呢,主要还是技术不成熟以及有巨大的安全隐患。无人机是无人驾驶飞机的简称(Unmanned Aerial Vehicle),是利...

关键字: 无人机 技术 领域

自动驾驶是指在不需要测试驾驶员执行物理性驾驶操作的情况下,车辆能够对行驶任务进行指导与决策,并代替驾驶员操控使车辆完成安全行驶的功能。自动驾驶汽车应具备自动行驶功能、自动变速功能、自动刹车功能、自动监视周围环境功能、自动...

关键字: 自动驾驶 驾驶辅助 技术

摘要:分布式光伏项目因投资收益率较高,目前正处于快速发展的阶段。现首先对建设分布式光伏项目的意义及工程流程进行了说明,然后对施工中遇到的主要技术问题进行了分析,最后给出了解决方案,可供设计和工程技术人员参考。

关键字: 分布式光伏 方案 技术
关闭
关闭