统核间任务同步与通信的设计与实现_第1页
统核间任务同步与通信的设计与实现_第2页
统核间任务同步与通信的设计与实现_第3页
统核间任务同步与通信的设计与实现_第4页
统核间任务同步与通信的设计与实现_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、代 分类U D 题(中、英文) 作者姓名提交论文工程领域西安电子科技大学学位论文创新性声明秉承学校严谨的学分和优良的科学道德,本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中做了明确的说明并表示了谢意。申请学位论文与资料若有不实之处,本人承担一切的法律责任。本人签名: 日期西安电子科技大学关于论文使用授权的说明本人完全了解西安电子科技大学有关保留和

2、使用学位论文的规定,即:研究生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。同时本人保证,毕业后结合学位论文研究课题再攥写的文章一律署名单位为西安电子科技大学。(保密的论文在解密后遵守此规定)本学位论文属于保密,在 年解密后适用本授权书。本人签名: 日期导师签名: 日期摘 要为了降低处理器的体积与功耗,多核技术得到了广泛的应用尤其是在航天、通信、医疗、机械、等领域。随着航天技术的发展,嵌入式硬件技术的提高给嵌入式软件提出了新的要求。多核技术改变了传统处理

3、器架构,若在多核系统仍采用面向单核处理器的嵌入式操作系统就不能充分发挥多核优势,顺应当前多核硬件技术迅猛发展的趋势,研究与设计面向多核应用的嵌入式时操作系统是与时代潮流相符的,加之航天应用的特殊性,航天技术的自主创新对于国防事业具有深远意义,同时国产芯片技术的发展为航天应用软件的国产化研究提供了很好的平台,所以基于国产系列芯片的多核嵌入式系统的研究具有重要意义。本文在某航天嵌入式实时操作系统内核的基础上,针对某航天专用多核嵌入式芯片设计并研发面向异构多核平台的嵌入式多核实时操作系统。依据内核中已有的任务调度机制、中断管理机制等,结合异构多核平台的硬件特性,设计并研发用于异构多核间任务同步与通信

4、的核间共享信号量、核间共享消息队列,以及相应的核间共享对象管理工具,使芯片内不同架构的处理器实现任务间交互协作,合理高效使用系统资源,以达到提高芯片整体性能的目的。该方案已成功应用于航天某嵌入式芯片,并经过完整的测试与验证,实现了多核间任务同步与通信的功能。关键字:多核 核间共享信号量 核间共享消息队列AbstractThe development of aerospace technology requires the advanced embedded hardware. In order to reduce the processing volume and power consumpt

5、ion, the multi-core technology has been widely used, especially in aerospace, communication, medical, machinery and so on. Multi-core technology has changed the traditional processor architectures. If the multi-core systems still use the single-core-processor embedded operating system, multi-core pr

6、ocessor can not perform fully well. It is following the trend to design an embedded operating system of multi-core. Independent innovation of aerospace technology is meaningful for national defense industry because of the particularity of the aerospace application. Domestic chip technology provides

7、a good platform for aerospace application. So it is very important to research a multi-core embedded operating system based on domestic chip technology.This article introduces develop of a multi-core embedded real-time operating system based on the existed real-time operating system. Based on the ex

8、isted kernel task management, interrupt management combined with multi-core platform hardware characteristics, we use SM-Semaphore and SM-Message-queue to achieve multi-core task synchronization and communication. We provide a multi-core embedded real-time operating system for aerospace application

9、based on multi-core hardware characters.The multi-core task synchronization and communication scheme designed by this article has successfully applied for some aerospace embedded real-time operating system. The scheme has got through testing and satisfied the function requirement.Keyword: Multi-core

10、 SM-Semaphore SM-Message-queue目 录第一章 绪论···········································

11、83;·················································

12、83;····················11.1课题研究的背景及意义···························&

13、#183;·················································&

14、#183;··11.2 国内外研究现状·············································&

15、#183;·············································21.3 论文概要··

16、3;·················································

17、3;·················································

18、3;31.4 论文大纲················································&

19、#183;·················································&

20、#183;····3第二章 嵌入式系统微内核分析··········································

21、3;········································52.1 嵌入式系统内核结构·······&#

22、183;·················································&#

23、183;·························52.2 系统任务的管理······················&#

24、183;·················································&#

25、183;··················62.3 系统任务的调度·····························&#

26、183;·················································&#

27、183;···········82.4 任务同步与通信方式····································

28、··············································112.5 中断管理··&#

29、183;·················································&#

30、183;················································142.6 内存

31、管理·················································

32、3;·················································

33、3;·162.7 IO 管理···············································

34、;··················································

35、;······172.8 本章小结··········································&

36、#183;·················································&

37、#183;········18第三章 异构多核体系架构·······································

38、;··················································

39、;193.1 Soc多核处理器平台···············································&

40、#183;···································193.2 ARM 处理器············

41、··················································

42、·································203.3 DSP 处理器···············

43、;··················································

44、;································203.4 核间中断················&

45、#183;·················································&

46、#183;··································223.5 核间共享内存·············&

47、#183;·················································&

48、#183;·····························233.6 本章小结··················

49、83;·················································

50、83;································23第四章 多核间任务同步与通信设计··············

51、83;·················································

52、83;········254.1 共享内存结构·······································

53、83;·················································

54、83;···254.2 共享内存管理············································

55、83;················································264.3 核间中

56、断管理·················································

57、83;···········································294.4 基于共享信号量的核间任务同步···&

58、#183;·················································&

59、#183;········294.5 基于共享消息队列核间任务通信······································

60、;························324.6 共享对象维护与管理·······················&#

61、183;·················································&#

62、183;········344.7 本章小结·······································

63、3;·················································

64、3;···········35第五章 多核间任务同步与通信功能实现···································&#

65、183;·····························375.1 核间共享内存··················&#

66、183;·················································&#

67、183;························375.2 核间共享信号量·······················&

68、#183;·················································&

69、#183;···············395.3 核间共享消息队列································

70、;··················································

71、;···435.4 核间共享对象数据库············································&#

72、183;····································485.5 本章小节···········

73、3;·················································

74、3;·······································50第六章 测试与验证·········

75、;··················································

76、;·········································516.1 测试环境介绍·······

77、;··················································

78、;····································516.2 测试方案············&

79、#183;·················································&

80、#183;······································516.3 测试结果分析·········&

81、#183;·················································&

82、#183;·································546.4 本章小结··············

83、83;·················································

84、83;····································57第七章 总结与展望···········

85、3;·················································

86、3;······································597.1 工作总结··········

87、··················································

88、·········································597.2 展望·······

89、3;·················································

90、3;·················································

91、3;59致谢·················································

92、··················································

93、···························61参考文献······················

94、··················································

95、··············································63第一章 绪论 1第一章 绪论1.1课题研究的

96、背景及意义嵌入式系统应用已经深入到我们生活的各个领域,尤其是在航空航天、高端通信,医疗卫生等高新技术行业,而随着信息技术的发展对高速通信、密集计算等技术的要求也越来越高,普通的单核芯片在性能以及功耗方面已不能很好的满足当前技术的要求,这就要求进一步提升硬件平台的性能。单纯依靠提升硬件密度提升芯片工作性能面临着巨大的挑战,而采用多核技术不仅避开了硬件高集成的难题,同时在很大程度上提升了芯片的工作效率,但是多核技术对嵌入式软件提出了更高的要求。由于不同处理器的内核体系结构、指令集等的不同,与之匹配的软件也就不同,一般的多核处理器依据结构的不同可以分为两类:同构多核和异构多核,不同的多核结构需采用与

97、之匹配的嵌入式操作系统1。多核硬件平台是将多个核集成到同一芯片上,并且在该平台上的处理器可以同时运行而互不影响。为了充分发挥多核的性能优势需设计与之相应的嵌入式多核系统,各个处理器核内任务分配,外围设备的管理,核与核之间的任务同步与通信的设计就至关重要。某航天芯片是一款异构多核的处理器芯片,包括一个微控制器处理器核ARM 与若干个信号处理器DSP ,同时集成了包括光纤总线在内的大量高速总线与外围设备。ARM 核主要用于总线与外围设备的控制,DSP 核主要用于航天控制算法的计算处理。将任务控制与计算通信分离,减轻了单核的压力,降低了系统运行时的功耗,发挥了不同架构处理器核的优势,提高了整个处理器

98、芯片的性能。所谓嵌入式系统是一种安全嵌入受控器件内部,为特定应用而设计的专用操作系统,通常执行的是带有特定需求的预先定义好的任务2。嵌入式系统一方面可以根据嵌入式硬件平台所实现的功能对内核组件进行裁剪,在满足系统的功能的基础上去除去不必要的部分,最大限度的缩减内核体积;另一方面,嵌入式系统的可靠性,实时性,安全性等有很高的要求3。为了使处理器内多个处理器内核任务协调工作,多核嵌入式操作系统需具备高效可靠的任务调度机制、外围设备管理机制、以及软件互斥机制,高效安全的处理好多核之间任务协同工作的问题,避免产生运行错误。在多核嵌入式系统中不同内核任务的同步与通信是多核处理器硬件平台实现协同工作的基础

99、,是实现异构多核嵌入式系统的关键。2 嵌入式操作系统核间任务同步与通信的设计与实现未来航天硬件平台的发展特点呈现信息化、体系化、自主化、智能化的趋势,也就使未来硬件平台支持的软件的复杂性更高、软件体系结构更多样、软件关联设备更丰富等特点。在新的技术需求上控制算法的复杂度及数据处理计算量呈指数倍增长,从而催生了硬件平台由传统的单片处理器向多核片上系统平台发展。针对新一代航天多核处理器平台研制多核嵌入式实时操作系统,充份利用和发挥多核技术带来的优势,提高处理器计算速率,合理使用有限资源,适应未来硬件平台技术的发展需求。航天应用的特殊性决定了自主研发一款适合异构多核的高效的多核操作系统对促进整个国防

100、事业的发展具有重要意义,所以多核系统的研究具有重要的意义。1.2 国内外研究现状多核硬件平台的发展给嵌入式软件系统的研究带来新的挑战,多核嵌入式系统必须提供一整套高效可靠的多核间任务交互机制才能完成多核处理器之间的协同工作、实现资源的共享访问与任务的分配。多核间任务进行同步与通信,实现多核在复杂控制与高效计算方面的优势,就需要设计与之硬件特性相匹配的多核嵌入式操作系统。目前在嵌入式操作系统领域存在多种支持多处理器的操作系统,其中比较著名的嵌入式系统有VxWorks ,Linux ,RTEMS 等。不同的嵌入式系统针对的应用需求,在任务调度与中断管理等关键技术方面存在很大的区别,所以支持多核平台

101、的方案也就不同。国内在异构多核嵌入式系统的研究方面还处于起步阶段,只有少数针对专用型号芯片的方案且存在一定的局限性。浙江大学的SMARTOS ,其采用的符号表机制提高了核间任务通信的灵活性但是不便于信号量自身的扩展,只是面向于汽车控制系统的实时系统。某航天嵌入式操作系统的多核间任务同步与通信实现了简单的双核间任务的通信与同步,只是核间通信的一个简单模型,创建时只能以索引值对创建内容进行识别,给程序员的使用带来不便。以上研究都不能满足当前航天应用的需求,在某航天嵌入式芯片内不能完成相应的工作,该课题正是基于该应用的需求在已有的内核基础上实现异构多核嵌入式实时操作系统。第一章 绪论 3VxWork

102、s 是一种商用的实时嵌入式系统,凭借其良好的持续发展能力,高性能的内核以及友好的用户开发环境,在嵌入式领域得到广泛的应用2。Vxworks 提供了多核系统的支持,在系统与硬件之间建立了一套虚拟机制TIPC ,忽略了底层通信介质的区别,但通信效率有所下降,降低嵌入式系统的实时性4。RTEMS 是基于共享内存包驱动形式在系统内部创建一个核任务用于处理相关的核间通信信息,所有多核的处理信息都由服务器的该线程来处理,实现了多核的协同工作,保证了核间任务的同步与高效可靠的通信。目前开源的Linux 操作系统支持同构多核系统,不支持异构多核硬件平台5。综上所述,自主研发一款面向航天应用的稳定高效灵活的异构

103、多核嵌入式实时操作系统是当前我国航天事业的一项重要任务。1.3 论文概要该课题以航天应用为背景,针对某航天异构多核芯片研究异构多核间任务同步与通信的解决方案,以适应未来信息化时代的需要。该论文以实际工程项目为基础,理论与实际相结合,从内核研究出发,深入分析嵌入式实时内核结构及相应处理机制,全面剖析任务、中断、内存、IO 设备的管理机制,进而结合多核架构的特点,阐述异构多核方案实施的方法及技术难点,综合嵌入式实时内核与异构多核的特点提出面向航天应用的嵌入式系统异构多核间任务同步与通信方案。结构上首先阐述方案的设计思路及方法,解决技术上的难点关键点,在细节难点上进行验证分析,确定方案的可行性,进而

104、进行方案代码实现,并且在对方案整体性能验证测试方面设计了可靠的验证方案检验方案的可靠性。1.4 论文大纲第一章绪论部分阐述了该课题的研究背景及课题意义,从实际应用角度及未来发展的方向等方面提出该课题研究的必要性,综合国内、国外同类课题研究,分析当前形势并对该课题的创新性以及课题在行业的领先技术做了恰当的研究定位。第二章嵌入式系统微内核分析是在确定了该课题的研究方向及研究内容的基础上,从内核出发,深入剖析嵌入式实时内核结构及运行机制,对任务管理与调度、内存管理、中断管理、IO 设备管理做了深度的理论阐述,为多核嵌入式系统任务同步与通信做了技术铺垫。4 嵌入式操作系统核间任务同步与通信的设计与实现

105、第三章异构多核体系架构是在了解了嵌入式微内核的基础上分析异构多核硬件平台,并对异构多核的上的ARM 和DSP 技术进行了说明,对涉及多核系统软件设计的相关技术进行了说明。第四章多核间任务同步与通信设计是基于第二章、第三章对嵌入式系统微内核的分析以及对异构多核平台的硬件设计架构的说明,提出了嵌入式异构多核多任务同步与通信的方案架构。阐述方案中应用到的相关技术,为整个方案的实现提供基本保障。第五章多核间任务同步与通信功能实现在理论以及相关技术的基础上实现整个方案,详细阐述了方案的设计思路,以流程图与描述相结合的形式阐述方案中各个功能接口的实现。第六章测试与验证在专有的测试平台下对整体方案的功能性验

106、证,通过设计面向实时应用的案例设计测试方案,验证该课题方案的正确性。第七章总结与展望对该课题的研究现状进行分析概括对不足之处提出进一步的解决方案,完善课题内容。第二章 嵌入式系统微内核分析 5第二章 嵌入式系统微内核分析2.1 嵌入式系统内核结构嵌入式实时操作系统是一种安全嵌入受控器件内部,为特定应用而设计的专用操作系统,集成了任务管理、内存管理、中断管理、IO 设备管理等模块6。系统内任务管理模块借助芯片内部时钟在固定时钟周期启动任务调度器实现内核中多个任务的切换与调度,实现多任务的并行执行,充分利用CPU 资源。该系统内核的组织结构如图2.1所示: 图2.1 内核结构 为了满足航天应用需求

107、,在系统实时性保证方面,系统采用任务与优先级一一对应机制,总共设有256个优先级除去内核任务优先级0,空闲任务优先级255,系统内其它任务都有一个固定优先级且不重复,最多可创建的任务数为254个。在系统程序员使用任务过程中可以依据任务紧急性设置优先级,使紧急任务得到及时处理,并可以使系统依据任务的紧急情况进行任务调度,实现任务管理的智能化。内存是系统运行不可或缺的资源,系统运行的可执行代码以及实时数据都需要内存的支持。一个系统重要指标之一就是系统内存读取时间,内存结构设计的优劣直接关系到内存的使用效率,所以内存管理是系统的重要组成部分。中断是指当前运行的任务或者程序被其它外部中断源或软件中断打

108、断转而去执行中断处理程序的过程。在中断未提出之前当需要与外部设备实现交互时都是通过程序循环查询外部设备的状态,这样当外部设备在处理数据时CPU 不断的查询其状态不能去执行其它任务这就使CPU 这最可贵的资源得不到合理的利用,中6 嵌入式操作系统核间任务同步与通信的设计与实现断提出之后,当外部设备完成数据处理时可以通过中断的方式告知CPU ,系统通过硬件发出的中断信号跳转到相应的中断向量表地址,找到与之匹配的中断处理程序地址并执行,在中断处理程序执行之前进行任务状态信息的保护即状态寄存器内容压栈操作12 。外部设备处理数据时CPU 同样可以执行其它任务,这样提高了CPU 的利用率,但是带来了CP

109、U 内部资源的保护与切换时使用的时间代价,所以中断的管理反映了系统与外部通信以及CPU 资源利用率情况16。随着芯片技术的发展,芯片要实现其功能必须与外部器件进行交互,单一的交互设备已不能满足当前的需要,集成多个IO 设备是当前芯片发展的趋势。外设加载的越多也就预示着系统的管理越复杂,对IO 设备的管理需要既满足通信的高速与安全要求又要保证系统资源的合理分配。2.2 系统任务的管理任务是实现系统复杂功能的主要方式,为了使系统中的应用可以控制响应多重并发的、离散的现实世界事件,在系统就需要创建多个任务,在该内核内采用多任务管理机制,以抢占式方式进行任务调度,保证系统的实时性,同时配备以时钟中断管

110、理任务执行的周期,使较高优先级的任务得到及时响应。由于系统CPU资源的限制当系统内存在多个任务时不可能都处于执行阶段,在系统内部任务状态可分为五种状态分别为:睡眠、就绪、运行、等待、中断服务1。1. 睡眠态:在系统启动任务被创建且贮存在内存还没有交付系统进行管理也就是还没开始任务调度,所有创建的任务只是分配了一定的内存空间指定了栈的起始地址以及栈空间的大小,此时任务处于静态;2. 就绪态:任务创建时已规定任务所处的优先级,在实时操作系统中获得CPU 执行的任务永远都是就绪队列中优先级最高的任务,对于那些已具备执行条件尚未获得CPU 执行权的任务实行原地等待策略,所有低优先级任务需等待高优先级的

111、任务交付CPU 的使用权,此时任务所处的状态即为就绪态,处于就绪态的任务维护在任务就绪队列表中,一旦任务获得CPU 执行权,该任务就从该队列移除,由就绪态进入运行态;3. 运行态:系统初始化完毕之后进入多任务运行环境,当任务调度启动之后系统首先在就绪队列找到优先级最高的任务并把CPU 执行权分配给该任务,该任务进入运行态,运行态的任务获得执行所需要的所有资源包括CPU 的执行权,运行态的任务只有通过中断才可以被打断,否则该任务直到整个任务完成才会交付CPU 的使用权,处在任务就绪队列中的下一个优先级最高的任务才会得到执行;4. 等待状态:正在运行的任务可以调用系统OSTimeDly ()函数接

112、口设置任第二章 嵌入式系统微内核分析 7务等待固定的时钟周期数,处于等待态的任务由于任务某些资源的缺失或有更高优先级的任务产生,通过调用任务等待函数使任务放弃CPU 使用权等待外部信号的产生进入相应状态或者其它任务完成,当该任务等待的时间完成之后该任务进入就绪态,在时钟中断产生后执行任务调度,若该任务为就绪队列总优先级最高的任务时该任务才得以执行;5. 中断服务态:正在运行的任务可以被中断,除非该任务将中断关闭,或者系统屏蔽了中断功能。被中断的任务进入中断服务态,当中断服务结束之后被中断的任务是否进入运行态取决于系统资源的分配方式若为可剥夺型则该任务进入就绪态转而执行任务就绪队列中任务优先级最

113、高的任务,若为非可剥夺型则中断服务结束之后被中断的任务从被中断的位置继续执行。 图2.2 任务状态切换图如图2.2所示,程序创建之初处于就绪状态当有高优先级任务获得CPU 使用权或者任务所需资源被其它高优先级任务抢占之后该任务被挂起进入挂起状态,一旦该任务所需资源被释放该任务由挂起状态转换为就绪状态到下一个时钟节拍时任务调度程序查询就绪队列内等待处理的任务,执行该队列中优先级最高的任务,任务由就绪态转换为运行状态1。当有外部中断产生时系统进入中断处理程序,被打断的任务由运行态转换为中断服务态,待中断处理程序执行完毕之后被打断的任务恢复到就绪或运行态。在系统运行过程中有些任务需等待一些外部信号的

114、产生,进而进行相应的处理,此时该任务可以被系统用户调用任务等待函数接口,使当前任务转换为等待态释放CPU 使用权,等待时间结束后任务进入就绪态等待调度执行。当任务调用任务删除函数接口时任务从就绪态或者运行态进入睡眠状态。系统中任务的五种状态就是在这样的过程中完成相互转换的。对于多任务系统任务的优先级设置及任务调度是整个任务管理的核心任务管8 嵌入式操作系统核间任务同步与通信的设计与实现理的方式是以高效率、强实时性为目标。任务的调度过程中涉及到任务状态信息的保护与恢复,任务TCB 内包含了该任务所需的所有信息用以管理任务的状态切换以及任务堆栈起始地址、堆栈大小等信息18。2.3 系统任务的调度系

115、统总是将就绪队列中优先级最高的任务调度执行,在任务就绪队列中哪个任务的优先级最高优先获得CPU 的使用权并执行,这些工作是通过任务调度器完成的1。任务调度实现系统内多任务执行顺序的管理,总是把就绪队列中优先级最高的任务调度执行。任务的调度是通过时钟控制的,在系统初始化时指定时钟周期值,一个时钟周期结束产生一个时钟中断进行任务调度。任务调度最基本的工作就是将就绪队列中等待执行的任务切换到运行态,将任务需要的寄存器信息加载到CPU 中对应的寄存器,以及与任务相关的上下文信息,整个信息的交换过程包括两个部分:保存当前任务的CPU 信息、载入执行任务信息。 存储器高地址OS_TCB 高优先级任务堆栈方

116、向图2.3 保存当前CPU 寄存器的值第二章 嵌入式系统微内核分析 9任务上下文的切换实际上是在时钟中断的发生时,对CPU 内寄存器信息进行管理的过程。当任务执行一个时钟周期后,系统在时钟中断中查看当前就绪队列中是否存在与任务优先级更高的任务,若存在则将CPU 内R1、R2、R3、R4等相关寄存器内的信息保存在由在任务创建时指定的任务堆栈中,该堆栈地址在创建时储存在任务TCB 中。整个过程如图2.3所示。当低优先级任务的信息保存完毕后,依据就绪队列中高优先级任务TCB 中记录的信息,找到任务堆栈起始地址,将堆栈中的信息复制到相应的寄存器中,恢复各寄存器值以及PC 、PSW 值。整个过程如图2.

117、4所示。当任务信息恢复完毕后,任务跳转到PC指向的地址开始执行完成整个任务的调度。 存储器高地址OS_TCB低优先级任务堆栈方向 图2.4 重新装入要运行的任务由于在系统运行过程中,任务调度被频繁的调用,为了提高系统的执行效率,任务上下文的切换必须设计的高效可靠,一般采用汇编语言编写。在该内核中优先级与任务是一一对应的关系,系统内不同的任务被赋予不同的优先级,在每一个时钟周期结束之后执行一次任务调度,每次调度器的执行都是先查找就绪队列中优先级最高的任务并分配给其CPU 使用权,该任务获得一个时钟周期的任务资源。但是在系统内创建的任务基于高耦合的设计,不同的任务就会用到相同的资源,在系统内运行的

118、任务被其它任务打断后如何对共享资源进10 嵌入式操作系统核间任务同步与通信的设计与实现行处理可将任务调度的方式分为抢占式调度和非抢占式调度。非抢占式调度即任务运行过程中占有的资源不能被其它任务剥夺,在任务被中断打断执行完中断处理程序后仍恢复到被打断的任务不管是否有更高优先级的任务在就绪队列等待。非抢占式不能保证紧急的任务得到及时的响应,为了避免该问题的产生,在该内核中采用的是抢占式任务调度即当高优先级任务需要执行时抢占低优先级任务的所有资源,当中断处理程序处理完毕之后任务恢复时在任务就绪队列中查找优先级最高的任务,将CPU 使用权赋予该任务,恢复该任务的信息并执行。 时间图2.5 可剥夺型内核

119、可剥夺型内核总是让高优先级的任务执行,中断服务可以抢占任务资源,中断服务程序完成后任务跳转到就绪队列中优先级最高的任务执行(不一定是被中断了的任务),而不是返回被打断的任务。对于嵌入式实时操作系统内核优先级反转问题经常遇到的,多任务需要访问同一互斥资源时由于不同任务的优先级不同且任务申请互斥资源的时间存在不确定性,当优先级低的任务先获得互斥资源使用权更高优先级的任务被建立并获得CPU 使用权之后,此时低优先级的任务占有互斥资源,高优先级的任务占用着CPU资源若处理不当会产生很大的资源浪费甚至导致系统崩溃问题6。在任务调度过程为了解决低优先级对互斥资源的优先使用提出了优先级反转的概念,即在系统内部预先分配一特定优先级用于对低优先级任务优先级权限的提升,提升的优先级应高于所有申请该互斥资源所有任务的优先级保证首先获得第二章 嵌入式系统微内核分析 11 互斥资源的任务执行完毕再释放互斥资源与CPU 使用权。这样既保证了互斥资源的安全访问同时也避免了各任务造成死锁的现象。 图2.6 内核支持优先级继承2.4 任务同步与通信方式系统在多任务环境下,经常会出现多个任务同时需要无冲突地访问同一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论