(计算机软件与理论专业论文)两种嵌入式实时linux实现技术研究及实时多核应用.pdf_第1页
(计算机软件与理论专业论文)两种嵌入式实时linux实现技术研究及实时多核应用.pdf_第2页
(计算机软件与理论专业论文)两种嵌入式实时linux实现技术研究及实时多核应用.pdf_第3页
(计算机软件与理论专业论文)两种嵌入式实时linux实现技术研究及实时多核应用.pdf_第4页
(计算机软件与理论专业论文)两种嵌入式实时linux实现技术研究及实时多核应用.pdf_第5页
已阅读5页,还剩77页未读 继续免费阅读

(计算机软件与理论专业论文)两种嵌入式实时linux实现技术研究及实时多核应用.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 随着嵌入式应用的复杂性的提高和对实时性要求越来越苛刻,作为其核心 的嵌入式实时操作系统就显得尤为重要。现有的大部分嵌入式r t o s 一开 始的设计就着眼于系统的实时性,其应用功能也相对比较单一,因此它们天生 就缺乏支持丰富的复杂应用的功能,同时系统本身的可扩展和可移植性也相对 较差。而且,不少商业化r t o s 既不开放源代码,也价格过于昂贵,缺少一个 开放的、统一的、有广泛支持且高效的嵌入式i 汀o s 。为此,不少研究机构和 开源社区开始研究将功能丰富的通用操作系统改造成实时操作系统。l i n u x 以 其开放性、低成本性和对多种体系架构的支持使得它在嵌入式系统中得到了广 泛的应用,因此自然地成为了实时化的首选。 对l i n u x 进行实时性改造,通常可以从两个大的方向来着手。 - 二个方向是从l i n u x 内核内部开始,直接修改其内核源代码,其典型代表 是p r e e m p t r t 实时补丁;另一个方向则是从l i n u x 内核的外围开始,实现一个 与l i n u x 内核共存的实时内核,即采用双内核方法,其典型实现有r t a i l i n u x 。 然而,由于嵌入式实时l i n u x 的技术复杂性和相关资源的匮乏,要想很好 地利用它们进行实时多核应用开发必须对其实现改进技术进行深入的理解和剖 析,并对其应用编程方法进行总结归纳。 基于上述认识,本文首先在剖析标准l i n u x2 6 内核的实时特性和缺陷的基 础上,深入研究了p r e e m p t r t 实时补丁的实现,如何进行实时性改进。然后, 详细地剖析了基于l i n u x 实现的a d e o s i p i p e 超微内核的工作原理和具体实 现。最终对最新基于a d e o s i p i p e 方式的r t a i 实时内核的设计和实现也进行 了详细的讲解。 在此过程中,我们从不同的方面对标准l i n u x2 6 与p r e e m p t r t 实时补丁 进行了对比测试,同时对r t a i l i n u x 也进行了相关的测试分析,以验证其实时 性能。最后,本文针对具有双核的“嵌入之星嵌入式平台和标准p c 机上构 建了上述两种开源实时l i n u x ,分别实现了相应的实时应用实例并进行对比研 究,为后续实时应用开发提供指导和借鉴。 关键词:r t o s ;l i n u x ;a d e o s i p i p e ;r t a i ;s m p 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t w i t ht h e i n c r e a s i n gd e m a n d f o rc o m p l e x i t ya n dr e a l t i m ei ne m b e d d e d a p p l i c a t i o n s ,t h ee m b e d d e dr e a l t i m eo p e r a t i n gs y t s t e m ( r t o s ) p l a y sam o r e i m p o r t a n tr o l ea si t sc o r e m o s to ft h ee x i s t i n ge m b e d d e dr t o sa r eo n l yd e s i g n e d f o rr e a l t i m ef r o mt h es t a r t ,s ot h e ya r el a c ko fs u p p o r tf o rc o m p l e xa p p l i c a t i o n sa n d a r eh a r dt op o r t m e a n w h i l e t h es o u r c ec o d eo fm a n yc o m m e r c i a lr t o s e sa r en o t a c c e s s i b l e ,a n dt h e ya r ea l s oe x p e n s i v e t h e r ei sal a c ko fo p e n ,l o wc o s t ,g e n e r a l s u p p o r ta n de f f i c i e n tr t o s s o ,m a n yr e a s e a r c hi n s t i t u t i o n sa n do p e ns o u r c e c o m m u n i t i e ss t a r tt ot u r ng e n e r a lp u r p o s eo p e r a t i n gs y s t e m ( g p o s ) t or t o s u n d e rt h i sc i r c u m s t a n c e ,l i n u xb e c o m e st h ef r i s tc h o i c eb e c a u s eo fi t sl o wc o s t , s 仃o n gf u n c t i o n sa n de a s ep o r t i n g ,e s p e c i a l l yo p e ns o u r c e t h e r ea r et w ow a y st oe n h a n c el i n u xt os u p p o r tr e a l t i m er e q u i r e m e n t s o n ei s t h ef u l l yp r e e m p t i b l ek e r n e la p p r o a c h ,t h eo t h e ri st h ec o k e r n e la p p r o a c h t h ef o r m e ri st of r a n k l yc h a n g et h el i n u xk e r n e ls o u r c ec o d e s u c ha st h ef u l l y p r e e m p t i b l e k e r n e l p r e e m p t i 盯a n d t h el a t t e rf o u n df o ra d d i n gr e a l t i m e c a p a b i l i t i e st ol i n u xw a st op l a c eas m a l lr e a l - t i m ek e r n e lr t m n i n gs i d eb ys i d ew i t h l i n u xo nt h es a m eh a r d w a r e ,s u c ha sr t a i h o w e v e li no r d e rt om a k eu s eo ft h e mt ob u i l dr e a l t i m em u l t i c o r ea p p l i c a t i o n d e v e l o p m e n t ,w em u s tf i r s th a v eag o o du n d e r s t a n d i n go ft h e i ri m p l e m e n t a t i o na n d s u mu pt h ea p p l i c a t i o nm e t h o d sb e c a u s eo ft h ec o m p l e x i t yo fe m b e d d e dr e a l t i m e l i n u xa n dt h el a c ko fr e s o u r c e s , s ob a s e do nt h ea n a l y s i so fr e a l t i m ec h a r a c t e r i s t i c sa n dd i s a d v a n t a g e so f s t a n d a r dl i n u x 2 6 ,t h ei m p l e m e n t a t i o na n d m o d i f i c a t i o n t e c h n o l o g i e s o f p r e e m p t r ta r ed e e p l ys t u d i e d t h e nw ea n a l y z et h ep r i n c i p l ea n di m p l e m e n t a t i o n o fa d e o s i p i p en a n o - k e n e lb a s e do nl i n u x f i n a l l y , t h ed e s i g n a n d i m p l e m e n t a t i o no f r t a ik e r n e lb a s e do nl i n u xi si l l u s t r a t e dc l e a r l y d i f f e r e n tr e a l t i m et e s t sa r em a d eb e t w e e ns t a n d a n dl i n u x2 6a n dp r e e m p t - i 盯 l i n u x a n dw eh a v ea l s ot e s t e ds o m er e a l t i m ec h a r a c t e r i s t i c so fr t a it ov e r i f yt h e i r r e a l t i m e a tl a s t t h et w oo p e ns o u r c er e a l t i m el i n u x sa r eb u i l to nt h e “s t a ro f e m b e d d e d ”d u a lc o r ex 8 6p l a t f o r ma n ds t a n d a r dp c a n dt h ec o r r e s p o n d i n g r e a l t i m ea p p l i c a t i o n sa r ea l s oi m p l e m e n t e da n da n a l y z e d k e yw o r d s :r t o s :l i n u x ;a d e o s i p i p e ;r t a i ;s m p 西南交通大学四南父遗大罕 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密画,使用本授权书。 ( 请在以上方框内打“4 ”) 黟写繁j 产畹誓翥霉锈c 7 斌 西南交通大学学位论文创新性声明 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所 得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体 己经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均己在 文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 何7f 园 r眺“ 刊呵 西南交通大学硕士研究生学位论文第1 页 第1 章绪论 1 1 引言 随着嵌入式系统在当今人们的生产和生活中的日益普及,各种嵌入式设备 不仅要求支持丰富的网络、多媒体和游戏等功能应用,而且也要求具有更高的 实时性。通常,实时系统包括有硬实时和软实时系统两类。其中硬实时系统指 超过截止期限后将造成灾难性后果( 例如展开气囊过晚或制动压力产生的滑行 距离过长) 的系统。软实时系统超过截止期限后并不会造成系统整体失败( 如 丢失视频中的一帧) 【l j 。 常用的嵌入式实时操作系统包括有硬实时的v x w o r k s 、q n x 和u c o s i i , 软实时则包括有w i n c e 等。 最著名的是w i n d r i v e r 公司的v x w o r k s ,它是目前嵌入式系统领域中使用 最广泛同时也是市场占用率最高的r t o s ,它能够支持多种处理器平台,如x 8 6 、 i 9 6 0 、s u ns p a r e 、m o t o r o l am c 6 8 x x x 、m i p sr x 0 0 0 、p o w e rp c 等等。v x w o r k s 实时操作系统由4 0 0 多个相对独立、短小精悍的目标模块组成,用户可根据需 要选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同 步与通信、中断处理、定时器和内存管理等功能,内建符合p o s i x ( 可移植操作 系统接口) 规范的内存管理,以及多处理器控制程序;并且具有简明易懂的用户 接口,在核心方面甚至可以微缩到8k b 。美国国家航天局的“勇气号 火星探 测仪正是使用它来控制1 2 】。 q n x 是业界公认的x 8 6 平台上最好的嵌入式实时操作系统之一。它具有独 一无二的微内核实时平台,建立在微内核和完全地址空间保护基础之上,实时、 稳定、可靠,已经完成到p o w e r p c 、m i p s 、a r m 等内核的移植,成为在国内 广泛应用的嵌入式实时操作系统【3 j 。 g c o s i i 是用c 语言编写的一个结构小巧、抢占式的多任务实时内核。 g c o s i i 能管理6 4 个任务,并提供任务调度与管理、内存管理、任务间同步与 通信、时间管理和中断服务等功能,具有执行效率高、占用空间小和实时性能 优良等特点【4 1 。 w i n d o w sc e 专门为嵌入式市场设计,为快速建立下一代智能移动和小内存 西南交通大学硕士研究生学位论文第2 页 占用的设备提供了一个健壮的实时操作系统。它具备完整的操作系统特性集包 和端对端开发环境,它包括了创建一个基于w i n d o w sc e 的定制设备所需的一 切,例如:强大的联网能力、强劲的实时性和小内存体积占用以及丰富的多媒 体和w e b 浏览功甜5 1 。它支持的处理器有a r m 、m i p s 、s h x 和x 8 6 四种。 1 2 本文研究的背景和意义 以上等嵌入式实时操作系统一开始的设计就着眼于系统的实时性,其应用 功能也相对比较单一,因此它们天生就缺乏支持丰富的复杂应用的功能,同时 系统本身的可扩展和可移植性也相对较差;另外,像v x w o r k s 、q n x 和w i n c e 这些嵌入式实时操作系统又都是商业化产品,其价格相当昂贵,同时源代码不 公开也极大地限制了开发者们的积极性。所以,人们也一直试图在探索另外一 种嵌入式实时操作系统可以解决以上问题。 l i n u x t 6 】是类u n i x 系统,以其核心为基础的完全内存保护、多任务多进程的 操作系统。l i n u x 的开放性、低成本性、对多种体系架构的支持、特别是它提 供了强大的网络功能和开发工具链使得它在嵌入式系统中得到了广泛的应用, 如移动设备、工业控制、医疗设备和航空航天等领域【7 】。 而且,当前随着多核处理器在服务器和桌面领域的大量应用,多核处 理器也随时准备着进入嵌入式系统领域,l i n u x 提供对s m p 多核的支持。 但其实时性要求在一定程度上也阻碍了l i n u x 在嵌入式领域的应用发展。 目前,越来越多的研究机构和商业团体开展了实时l i n u x 的研究与开发, 其中最著名的商业版有f s m l a b 的r t l i n u x ( 现已经被w i n d r i v e r 收购) 和 t i m e s y sl i n u x 。另外,两种流行的开源实时l i n u x 实现则有i n g o sp r e e m p t r t 实时补丁和硬实时r t a i l i n u x 。 因此,嵌入式l i n u x 的实时性改造将会是目前实时操作系统r t o s 研究的 热点。然而,由于嵌入式实时l i n u x 技术的复杂性和相关资源的匮乏,要充分 利用它进行多核实时应用必须深入理解和掌握其实现和改进技术。故对两种流 行的开源的嵌入式实时l i n u x 进行技术研究改进和多核应用将具有十分重要的 意义,同时也可以作为后续应用开发的基础和借鉴。 西南交通大学硕士研究生学位论文第3 页 1 3 课题主要内容和论文结构 1 3 1 主要内容 本文对两种嵌入式实时l i n u x 的实时化技术和应用编程进行了深入的研究, 论文的主要内容包括有: ( 1 ) 基本概念的学习掌握:通过大量地阅读相关文献,对实时系统的影响 因素、性能指标等基本概述进行了阐述,同时也介绍了目前存在的l i n u x 实时 性改造方法和实时架构。 ( 2 ) 在认真分析了标准l i n u x2 6 内核的实时技术及缺陷的基础上,深入 研究了直接修改l i n u x 内核方法的p r e e m p tr t 实时补丁的实时化机制和改进技 术。 ( 3 ) 深入剖析了基于l i n u x 实现的a d e o s i p i p e 工作原理及实现机制, 并且对最新的基于a d e o s 实现的r t a i 实时l i n u x 进行了详细的实现技术剖 析。 ( 4 ) 对于研究的标准l i n u x2 6 内核、p r e e m p tr t 实时补丁和r t a i l i n u x 进行了实时性能测试,并进行结果分析。 ( 5 ) 针对p r e e m p t r t 实时补丁和r t a i l i n u x 分别实现了相应的多核实时 应用实例并进行以比研究,总结归纳应用编程模式,为后续在两种开源实现下 的多核实时应用开发提供指导和借鉴。 1 3 2 论文结构 本论文共分为七章来阐述: 第一章介绍了实时等基本概念,并对现存的嵌入式实时操作系统做了简要 比较,最后分析了课题的背景和研究意义。 第二章分析了影响l i n u x 实时性的实时要素,并讨论了现存的两种实时 l i n u x 架构,直接修改标准l i n u x 内核方法和双内核方法,并对它们都做了简 要的概括。 第三章在详细分析了标准l i n u x2 6 内核的实时特性和缺陷的基础之上,深 入剖析了直接修改标准l i n u x 内核的p r e e m p t - r t 实时补丁的实现机制与改进技 西南交通大学硕士研究生学位论文第4 页 术。 第四章重点分析了a d e o s i p i p e 超微内核基于l i n u x 的实现,然后对基于 a d e o s 口i p e 超微内核的r 1 a i 硬实时l i n u x 的主要功能模块进行了深入的剖 析。 第五章是多核系统软硬件平台构建,并对标准l i n u x2 6 和p r e e m p t r t 实 时l i n u x 从不同方面进行了系统对比测试;同时也对r t a i 硬实时l i n u x 做了相 关系统实时性能测试。 第六章详细研究和分析了p r e e m p t r t 实时补丁和r t a i 两种实时l i n u x 下 的应用编程; 第七章利用本文中研究分析的两种实时l i n u x 分别实现了多核平台下的实 时应用实例,并对其进行对比分析。 最后总结了论文的工作,并且讨论了本课题的下一步研究方向和内容。 西南交通大学硕士研究生学位论文第5 页 第2 章实时l i n u x 操作系统架构 2 1 实时性能指标 影响一个系统实时性的因素包括有硬件和软件两个方面。 硬件方面主要包括有c a c h e 技术和虚拟内存管理m m u ,它们严重地影响着 实时任务执行的确定性和可预测性。因此一些实时系统,为满足实时需求, 都失效c a c h e 或使用没有c a c h e 的c p u ,同时也不使用虚拟内存技术j 。 软件方面,影响因素包括有内核抢占性、中断和调度算法等方面。本文对 于硬件方面影响困索不做过多讨论,主要以软件操作系统层面来加以分析。 如何来衡量一个操作系统是否是实时的,我们从下面具体的一个情境来分 析:进程正在等待设各i 0 ( 由中断触发) 的完成,才可继续运行。 t a s k m 。i k sm e l n l a t t e e r n n “j p t i h m ,m ( e r r i b u p r l s c h e d u l e r r u n n i n g t a s k “”r n l p ,一”+ 一一+ 一一+ 硅韵 。b a n d e r “。 h e d u l e s 。c h e 。d u 。l e 。r 图2 - 1 内核延迟组成 可知,从中断发生到进程继续运行,内核延迟由如f4 部分组成: ( 1 ) 中断延迟:是指从一个外部事件( 如硬件中断) 发生到相应的中断处 理程序的第一条指令开始执行的时阃。 ( 2 ) 中断处理i s r 执行时间:是指中断处理程序i s r 从开始运行到结束的 时间; ( 3 ) 调度延迟:是指从任务就绪到调度器开始执行的时间: ( 4 ) 调度器执行时间:是指调度器开始运行到选择就绪任务开始运行的时 间: 如果以上4 个部分都是确定的,可预测的,则说明该系统是实时的。 西南交通大学硕士研究生学位论文第6 页 标准l i n u x 内核已经在实时性方面做了不少改进以减少内核延迟时间,但 仍旧不能满足r t o s 的要求。因此越来越多的研究机构和商业团体开展了实时 l i n u x 的研究与开发,下面我们将介绍目前几种流行的实时l i n u x 改造方案和 实时架构。 2 2 实时l in u x 改造方案 对l i n u x 进行实时性改造,通常可以从两个大的方向来着手。 一个方向是从l i n u x 内核内部开始,直接修改其内核源代码,通过这种方 式它已经完全能够满足软实时的要求,在一定程度上也达到了硬实时的要求; 另一个方向,则是从l i n u x 内核的外围开始,实现一个与l i n u x 内核共存 的实时内核,这样对l i n u x 内核源代码并不需要做过多的修改。这种方式下, 它可以确保硬实时级别的响应时间,能够支持较为广泛的实时系统应用。 2 3 直接修改l in u x 内核方案 p r e e m p t r t 实时补丁,正是通过直接修改l i n u x 内核来满足实时要求,而 且其中不少实时技术已经并入官方内核,同时以i n g om o l a r 带领的内核开发团 队在不断地进行维护与更新,开发相当活跃。美国国防部就已经在利用i b m 、 r e d h a t 和r a y t h e o n 合力开发定制的r t - p r e e m p t 实时补丁。 这种方式的好处在于,其上的应用程序开发与标准l i n u x 的应用开发毫无 区别,可以完全利用l i n u x 提供的丰富的系统调用。 图2 - 2p r e e m p t r t 实时l i n u x 内核结构 西南交通大学硕士研究生学位论文第7 页 如图2 2 所示,我们可以在用户空间和内核空间来创建实时进程或任务。 用户空间实时进程的好处在于它受操作系统的保护,不会引起整个系统的崩溃, 同时也便于调试:内核空间实时任务由于减少了用户态到内核态切换的开销, 效率相对要高,但编程错误易引起系统的崩溃,同时也难于调试。 2 4 双内核方法 2 4 1 瘦内核方法r t lin l j x 瘦内核方法采用另外一个实时内核作为实时硬件抽象层( r t h a l ) 。非实时 l i n u x 内核则作为实时内核的一项优先级最低的任务来托管所有的非实时任务 【1 】。所有的实时任务则都直接在实时瘦内核上运行。 其典型的代表有r t l i n u x 和早期的基于r t h a l 实现的r t a i 。r t l i n u x 瘦 实时内核结构如图2 3 所示。 图2 - 3r t l i n u x 瘦实时内核结构 r t l i n u x 瘦实时内核主要功能包括实时任务管理和中断管理,由于l i n u x 内核是最低优先级任务无法抢占,因此实时任务总是能够得到及时的调度运行。 这也使得瘦内核方法能够完全满足硬实时的要求。 西南交通大学硕士研究生学位论文第8 页 2 4 2a d e o s 超微内核方法r t a i 前面提到的瘦内核方法依赖于包含任务管理和中断管理的最小内核,而超 微内核法对内核进行更进一步的缩减。通过这种方式,它不像是一个内核而更 像是一个硬件抽象层( h a l ) 【l 】。超微内核为运行于更高级别的多个操作系统 提供了硬件资源共享,其实现包括a d e o s i p i p e 。它可以为其上运行的操作系 统域提供优先权,从而达到完全满足硬实时的要求。 典型的代表有最新的基于a d e o s i p i p e 实现的r t a i l i n u x ,其实时架构如 图2 4 所示。 图2 _ 4 基于a d e o s 口i p e 的r t a u l i n u x 内核结构 西南交通大学硕士研究生学位论文第9 页 第3 章p r e e m p t r t 实时l i n u x 实现技术及改进 3 1 标准l if l u x26 内核实时特性及缺陷 31 1 0 ( 1 ) 调度和实时调度策略 1 、o f l l 调度算法 与l i n u x2 4 内核的o ( n 1 调度算法及时间片的统一计算方法相比,l i n u x2 6 内核进行了大幅的改进,实现了o ( 1 ) 调度算法。其基本思想是:不管系统中有 多少可运行的进程,调度器总是能够在一个恒定的时间内选择一个优先级最高 的进程投入运行。 每个c p u 都有一个运行队列r u n q u e u e ,每个运行队列又包括a c t i v e 活动 和e x p i r e d 过期两个优先级队列数组,它们均包含了1 4 0 个优先级列表,它们 都是按照先进先出f i f o 的顺序进行服务的。被调度执行的任务都会被添加到 各自运行队列优先级列表的末尾。 其中优先级0 9 9 是保留给实时进程使用,而优先级1 0 0 - - 1 3 9 则是保留给普 通l i n u x 进程使用的,数值越小优先级越高,如图3 - i 所示。 1 a c t i v e q u e u e卧n m g b 女 q e x p i r e d q u e u e r q - a c t i v e b t t m a p 圜璃圈衄 睁县字目 圈3 - 12 6 内核调度器运行队列结构 西南交通大学硕士研究生学位论文第1 0 页 2 6 内核调度器工作十分简单:它从a c t i v e 活动优先级队列数组中找出优先 级最高的队列,并从中选择一个进程来调度运行。为了提高效率,内核使用位 图来定义给定优先级列表上是否存在进程。针对x 8 6 体系结构,调度器使用 s c h e df i n df i r s tb i t 函数通过一条b s f l 汇编指令从5 个3 2 位字( 共1 4 0 位分别 对应优先级0 1 3 9 ) 中查找第一个置1 的位,它即是优先级最高的列表。之后, 调度器直接从查找到的最高优先级列表头取出第一个就绪进程调度运行,程序 如下: i d x = s c h e a _ f m n d _ f n s t _ _ b i t ( a r r a y - b i t m a p ) ; q u e u e = a r r a y - q u e u e + i d x ; 找到最高优先级队列 从最高优先级队列头获取最高优先级进程 n e x t2 l i s t _ _ e n t r y ( q u e u e 一 n e x t ,s t m c tt a s k _ s t r u c t ,r u n _ l i s t ) ; 在重新计算时间片方式上,与l i n u x2 4 内核循环遍历所有使用完时间片进 程并为其重新计算优先级和分配时间片,时间复杂度为o ( n ) ;l i n u x2 6 内核调 度器设计时减少了对循环的依赖,当一个进程时间片用完时,在它从a c t i v e 活 动优先级队列上迁移至e x p i r e d 过期优先级队列之前,就重新计算好了时间片。 因此,只要在活动数组和过期数组之间来回切换交换指针,所有就绪进程时间 片就已经重新计算好了,其程序实现如下: a r r a y = r q - a c t i v e ; i f ( u n l i k e l y ( ! a r r a y - n r _ a c t i v e ) ) | s w i t c ht h ea c t i v ea n de x p i r e da r r a y s 枣, r q - a c t i v e = r q - e x p i r e d ; r q - e x p i r e d 2 a r r a y ; a r r a y = r q - a c t i v e ; ) 因此,结合位图方式、优先级列表f i f o 方式和新的计算时间片方式来选择 最高优先级就绪进程,使得2 6 内核的调度算法的时间复杂度为o ( 1 ) 。 2 、实时调度策略 l i n u x 中将优先级范围在o 9 9 之间的进程定义为实时进程,并且针对它们 西南交通大学硕士研究生学位论文第1 1 页 是采用s c h e df i f o 和s c h e dr r 调度策略。 s c h e df i f o :是先进先出的调度策略,调度程序总是选择系统中优先级 最高的进程调度运行,该进程将继续使用c p u 直到系统中有更高优先级的实时 进程就绪或者该进程主动放弃c p u ,即使还有其它具有相同优先级的就绪实时 进程也不能抢占它。 s c h e dr r :时间片轮转的实时进程调度策略,它正好作为s c h e df i f o 的补充,保证所有具有相同优先级的就绪实时进程可以公平地分配c p u 时间。 针对l i n u x 下的普通进程,系统采用的是s c h e dn o r m a l 分时策略。 3 、实时进程调度相关系统调用a p i l i n u x2 6 内核为用户提供了实时进程调度相关的系统调用,灵活地运行它 们能为用户开发实时应用程序提供极大的便利,其系统调用a p i 包括有【9 】: s c h e dg e t s c h e d u l e r ( ) :获得进程的调度策略 s c h e ds e t s c h e d u l e r ( ) :设置进程的调度策略和实时优先级 s c h e d 皇e t p a r a m ( ) :获取进程的实时优先级 s c h e ds e t p a r a m ( ) :设置进程的实时优先级 s c h e df i e l d ( ) : 主动放弃c p u ,以便调度其它进程运行 s c h e d _ g e t _ p r i o r i t y _ m i n ( ) :获取一种策略的最小实时优先级 s c h e d _ g e t _ p r i o r i t y _ m a x ( ) :获取一种策略的最大实时优先级 s c h e dr rg e t ):获取时间片轮转策略的时间片值interval( 3 1 2s m p 支持和o p u 亲和性 l 、s m p s m p 是指对称多处理器,2 6 内核通过配置c o n f i gs m p ,内核将支持多 处理器s m p 调度和多核调度支持,每个处理器均有一个运行队列,不会与其它 的c p u 产生竞争,这样多个c p u 就可以同时执行多个任务,做到真正意义上 的并行。s m p 一方面可以在不同c p u 之间进行负载平衡,另一方面也可维持 亲和性以提高缓存效率。 通过读取p r o c c p u i n f o 可以得知系统中c p u 核的类型、数目及相关的其它 信息,下面是本设计平台的c p u i n f o 内容: 拌c a t p r o c c p u i n f o 西南交通大学硕士研究生学位论文第1 2 页 p r o c e s s o r :0 v e n d o r i d :g e n u i n e i n t e l c p u f a m i l y :6 m o d e l:1 4 m o d e ln a n l e:g e n u i n ei n t e l ( r ) c p u t 2 3 0 0 1 6 6 g h z s t e p p i n g :8 c p um 咀【z :9 9 6 0 0 0 c a c h es i z e:2 0 4 8k b p h y s i c a li d :0 s i b l i n g s :2 c o r ei d:0 c p uc o r e s :2 b o g o m i p s :3 3 3 4 8 5 c l f l u s hs i z e:6 4 p r o c e s s o r :1 v e n d o r i d :g e n u i n e i n t e l e p u f a m i l y :6 m o d e l:1 4 m o d e ln a m e:g e n u i n ei n t e l ( r ) c p u t 2 3 0 0 1 6 6 g h z s t e p p i n g :8 c p um h z :9 9 6 0 0 0 c a c h es i z e:2 0 4 8k b p h y s i c a li d :0 s i b l i n g s :2 c o r ei d:l c p u c o r e s :2 b o g o m i p s :3 3 3 3 1 3 c l f l u s hs i z e:6 4 2 c p u 亲和性 c p u 亲和性( a f f i n i t y ) 【1 0 1 就是进程要在某个给定的c p u 上尽量长时间地 西南交通大学硕士研究生学位论文第1 3 页 运行而不被迁移到其他处理器的倾向性。l i n u x 内核进程调度器天生就具有被 称为软c p u 亲和性的特性,这意味着进程通常不会在处理器之间频繁迁移。这 也正是我们希望的,因为进程迁移的频率小就意味着产生的负载小,这样就避 免了进程在不同处理器间迁移时c a c h e 失效。 2 6 版本的l i n u x 内核还包含了一种机制,它让开发人员可以编程实现硬 c p u 亲和性。这意味着应用程序可以显式地指定进程在哪个( 或哪些) 处理器 上运行。 利用l i n u x 的硬亲和性,内核可以指定相应的任务如计算密集型或时间敏 感的进程运行在相应的c p u 核上,从而达到最终性能优化的效果。如在实时数 据采集系统中,直接指定一个c p u 核来运行实时任务,其余的c p u 核则运行 普通的l i n u x 进程。这种做法确保长时间运行、对时间敏感的应用程序可以得 到运行,同时可以允许其他应用程序独占其余的资源。 3 1 3 锁分解和显式增加抢占点 2 6 标准内核已经包含了以前的v p ( v o l u n t a r yp r e e m p t i o n ) 补丁,它通过 如下两种方式来实现低延迟【1 l 】。 1 、锁分解 它将大循环的获取和释放锁分解到每一次小循环中都获取和释放锁,这样 便减少了锁保持的时间,其典型的代码结构如下: 锁分解前: s p i n _ l o c k ( & l o o p _ l o c k ) f o r ( ) d o l o o p 0 ; s p i n _ u n l o c k ( & l o o p _ l o c k ) ; 锁分解后: f o r ( ) s p i nl o c k ( & l o o p _ l o c k ) ; d o _ l o o p ( ) ; 西南交通大学硕士研究生学位论文第1 4 页 s p i n _ u n l o c k ( & l o o p _ l o c k ) ; 2 、增加抢占点 显示增加抢占点可以有效的缩短调度延迟,通常,在执行时间比较长的内 核代码中增加抢占点。其典型的代码结构如下所示: f o r ( ;) c o n d _ r e s c h e d 0 ; 卜r e a d i n d a t a | i f ( e x i t _ c o n d i t i o n ) c o n t i n u e ; ) 语句c o n d _ r e s c h e d 0 将判断是否有进程需要抢占当前进程,如果是将立即发 生调度,这就是增加的强占点。 c o n d _ r e s c h e d 0 重新调度函数是在k e m e l s c h e d c 中实现的,定义如下: i n t s c h e dc o n d _ r e s c h e d ( v o i d ) i f ( n e e d r e s c h e d 0 & & l ( p r e e m p t _ c o u n t o & p r e e m p t _ a c t i v e ) ) c o n d _ r e s c h e d 0 ; r e t u r nl ; r e t u m o : 3 1 4 内核可抢占 标准l i n u x2 4 内核是不可抢占的,只有在返回用户空间时才可以抢占,但 标准l i n u x2 6 内核支持如下几种抢占模型【1 1 】,其中自愿抢占模式即上面我们所 提及的通过增加抢占点方式。 ( 1 ) n of o r c e dp r e e m p t i o n ( s e r v e r ) ,这种模式等同于没有使能抢占选项的 标准内核,主要适用于科学计算等服务器环境。 ( 2 ) v o l u n t a r yk e r n e lp r e e m p t i o n ( d e s k t o p ) ,这种模式使能了自愿抢占,但 西南交通大学硕士研究生学位论文第1 5 页 仍然失效抢占内核选项,它通过增加抢占点缩减了抢占延迟,因此适用于一些 需要较好的响应性的环境,如桌面环境,当然这种好的响应性是以牺牲一些吞 吐率为代价的。 ( 3 ) p r e e m p t i b l ek e r n e l ( l o w - l a t e n c yd e s k t o p ) ,这种模式既包含了自愿抢 占,又使能了可抢占内核选项,因此有很好的响应延迟,实际上在一定程度上 已经达到了软实时性。它主要适用于桌面和一些嵌入式系统,但是吞吐率比模 式2 更低。 2 6 内核配置为c o n f i gp r e e m p t 可抢占,只要重新调度是安全的,那么 内核就可以在任何时候抢占当前正在运行的进程。换言之,只要当前进程没有 持有锁并且需要重新调度,内核就可以进行抢占。因此,内核引入了 n e e dr e s c h e d 标志和p r e e m p tc o u n t 计数来支持内核抢占,两者均由进程的 t h r e a di n f o 结构体中定义包含: s t r u c tt h r e a d i n f o s t r u c tt a s k s t r u c t 謇t a s k ; m a i nt a s ks t r u c t u r e 形 u n s i g n e dl o n gf l a g s ; l o wl e v e lf l a g s 牛 一s 3 2 p r e e m p t c o u n t ;幸0 = p r e e m p t a b l e , b u g 吖 ) # d e f i n et i f n e e d r e s c h e d3 r e s c h e d u l i n gn e c e s s a r y 其中f l a g s 变量的第3 位是n e e d r e s c h e d 标志位,当一个进程耗尽了其时间 片时,s c h e d u l e rt i c k 将会设置该标志位;同样当一个高优先级进程就绪时, t r yt o _ w a k e _ u p 也会设置这个标志。t h r e a d i n f o 结构中的p r e e m p t _ c o u n t 变量 初值为0 ,每当使用锁时其值加1 ,释放锁时值减1 。 因此,当n e e d r e s c h e d 被置位并且p r e e m p t _ c o u n t 的计数值为0 时,则说明 内核可以安全地被抢占。 下面总结内核可抢占发生的时机包括有【1 2 1 : ( 1 ) 从中断返回内核空间之前 ( 2 ) 当内核代码再一次具有可抢占性时 ( 3 ) 内核中的显式地调用s c h e d u l e 函数 西南交通大学硕士研究生学位论文第1 6 页 ( 4 ) 内核中的进程阻塞,这也将导致调用s c h e d u l e 函数 3 1 5 标准ljn u x2 6 内核实时缺陷 尽管标准l i n x2 6 内核较之前内核版本在实时性方面做了不少改进,但

温馨提示

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

评论

0/150

提交评论