嵌入式Linux操作系统实时性研究

更新时间:2023-07-17 20:26:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类号:TP39

强爹太净

硕士学位论文

嵌入式Linux操作系统实时性研究

董悦

导师姓名职称

申请学位级别硕士孙大跃学科专业名称教授计算机应用技术

L口。1年l'ofl猾日论文提交日期2.07qi9月J日硷文咎辩l一|捌

学位授予单位

答辩委员会主席长安大学巨盘丝壅g±盘.学位硷卫评阅八叠l!盛墼摇施煎五磊绻

摘要

随着计算机技术的发展和普及,Linux作为一种具有开放源代码、高稳定性、免费等优点的操作系统,不仅在服务器和桌面系统中占据一席之地,同时在嵌入式领域也发展迅速。Linux自身的特点非常适合作为嵌入式操作系统,但是由于其兼顾大型服务器领域,放弃了系统的实时性能。而在工业应用中,迫切需要可靠的具有实时性能的操作系统平台,因此利用Linux操作系统的特性进行实时性改造成为业界的热点。

本文通过分析嵌入式系统和实时系统的相关知识和概念,对Linux进行深入研究,分析造成Linux系统实时性差的原因,通过研究几种国内外对Linux实时改造的方案和算法,提出了增强Linux实时性的新方法,通过对最早截止期优先调度算法(EDF)和速率单调调度算法(RM)的可调度性分析以及虚拟内存的改进等方法将2.6.12内核进行了实时性改造。在此基础上通过对嵌入式工业平台了解分析构建基于x86平台的嵌入式实时操作系统——SER.Linux。并针对应用需求做进一步优化,使其得以在实际工程中应用。

关键字:嵌入式操作系统、LiDill(、实时性

Abstract

Withthedevelopmentandpopularity

noofcomputertechnology,Linux,withtheaadvantageofopencode,highstabilityandcharge,notonlyhasplaceinserverand

desktopsystembutalsodevelopsfastintheareaofembedding.LinuxisappropriatetobeappliedinEmbeddedOperatingSystem(EOS)withitsself’Scharacteristics;howeverit

serverlosesitsrealtimeoperatingfunctiontopayextraattentiontolarge

industrialapplication.operationsystemsystem.Inplatformwithrealtimeoperationisneeded.

aTherefore,howtoimprovethereal-timefunctionofLinuxoperatingsystemhasbecome

hottopic.

Thisstudyatfirstdiscussedthebackgroundandknowledgeofembeddedoperatingsystemandrealtimeoperatingsystemtohelpfurtherunderstand

aLinux.ThereasoncausingLinuxoperatingsystemlackofrealtimewas

andalgorithmstoanalyzed,andfewforeignprojectsnewmethodto

initsrealenhanceLinuxrealtimefunctionwerestudied.Then,aenhanceitsrealtimewasproposed,inwhich2.6.12Die(Kernel)Wasimproved

astimefunctionthroughtheanalysisofschedulabilityofEDFandRM

towellasthemethodonimprovevirtualmemory.Finally,SER-Linux,anembeddedoperatingsystembasedX86platform,wasbuiltupviatheunderstandingofembeddedindustrialplatform.ItWasfurtherimprovedbased

engineeringontherequirementofapplicationandWasalsoappliedinrealproject.

Keyword:Embededoperatingsystem;Linux;Real-time

论文独创性声明

本人声明:本人所呈交的学位论文是在导师的指导下,独立进行研究工作所取得的成果。除论文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已经公开发表的成果。

本声明的法律责任由本人承担。

论文作者签名:孝衫移泐7年/p月知日

论文知识产权权属声明

本人在导师指导下所完成的论文及相关的职务作品,知识产权归属学校。学校享有以任何方式发表、复制、公开阅览、借阅以及申请专利等权利。本人离校后发表或使用学位论文或与该论文直接相关的学术论文或成果时,署名单位仍然为长安大学。

(保密的论文在解密后应遵守此规定)

论文作者签名:多岔牺

导师签名矽7年fvB3a日夕朋弘日

跃安人学硕上.学位论文

第一章绪论

1.1研究背景

在当前的数字信息技术和网络技术高速发展的后PC(Post.PC)时代,嵌入式系统已经广泛的渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术、娱乐业以及人们的日常生活等方方面面中。随着国内外嵌入式产品如车载电脑、机顶盒等等的进一步开发和推广,嵌入式技术越来越和人们的生活紧密结合。在PC时代,可能有人从来没有接触过计算机,但是在Post.PC时代,他就不可能会接触不到嵌入式系统,因为嵌入式系统可能存在于生活的方方面面中。

下一代互联网的自主运算趋势,企业对IT解决方案后台化、简单化的需求和消费者期待的网络功能强大、简单易用、扩展方便、稳定低耗的下一代手持计算设备这三方面的需求正在拉动一个以消费电子设备、自主计算网络部件和功能服务器等产品为代表的全新嵌入式系统及相关产品解决方案市场快速浮出水面。Linux作为一个年轻的操作系统在这一领域迅速发展,受到越来越多的关注。

1.2国内外研究概况

1.2.1国外研究进展

从上世纪80年代起,国际上就开始进行一些商业嵌入式系统和专用操作系统的开发。所以开发嵌入式操作系统已经有二十多年的历程,目前的应用范围比较广泛,目前国外主流的嵌入式操作系统如下:

1.Palm

Palm是3Com公司的产品,其操作系统为PalmOS,是一种32位的嵌入式操作系统。Palm提供了串行通信接口和红外线传输接口,利用它可以方便地与其它外部设备通信、传输数据;拥有开放的OS应用程序接口,开发商可根据需要自行开发所需的应用程序。PalmOS是一套具有较强开放性的系统,现在有大约数千种专门为PalmOS编写的应用程序,从程序内容上看,d,N个人管理、游戏,大到行业解决方案,PalmOS无所不包。在丰富的软件支持下,基于PalmOS的掌上电脑功能得以不断扩展。

PalmOS是~套专门为掌上电脑开发的OS。在编写程序时,PalmOS充分考虑了掌上电脑内存相对较小的情况,因此它只占有非常小的内存。由于基于PalmOS编写

第一章绪论

的应用程序占用的空间也非常小(通常只有几十KB),所以,基于PalmOS的掌上电脑(虽然只有几MB的RAM)可以运行众多应用程序。

PalmOS与同步软件(HotSync)结合可以使掌上电脑与PC机上的信息实现同步,把台式机的功能扩展到了掌上电脑。Palm应用范围相当广泛,如:联络及工作表管理、电子邮件及互联网通信、销售人员及组别自动化等等。Palm"I-围硬件也十分丰富,有数码相机、GPS接收器、调制解调器、GSM无线电话、数码音频播放设备、便携键盘、语音记录器、条码扫描、无线寻呼接收器、探测仪。其中Palm与GPS结合的应用,不但可以作导航定位,还可以结合GPS作气候的监测、地名调查等。

2.WindowsCE

WindowsCE是微软开发的一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作。它是精简的Windows95操作系统。WindowsCE的图形用户界面相当出色。其中CE中的C代表袖珍(Compact)、消费(Consumer)、通信能力(Connectivity)和伴侣(Companion);E代表电子产品(Electronics)。与Windows95/98、WindowsNT不同的是,WindowsCE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows95/98,但WindowsCE是基于Win32API重新开发的、新型的信息设备平台。WindowsCE具有模块化、结构化和基于Win32应用程序接口以及与处理器无关等特点。WindowsCE不仅继承了传统的Windows图形界面,并且在WindowsCE平台上可以使用Windows95/98上的编程工具(jtlVisualBasic、VisualC++等)、使用同样的函数、使用同样的界面网格,使绝大多数的应用软件只需简单的修改和移植就可以在WindowsCE平台上继续使用。

WindowsCE的设计目标是:模块化及可伸缩性、实时性能好,通信能力强大,支持多种CPU。它的设计可以满足多种设备的需要,这些设备包括了工业控制器、通信集线器以及销售终端之类的企业设备,还有像照相机、电话和家用娱乐器材之类的消费产品。一个典型的基于WindowsCE的嵌入系统通常为某个特定用途而设计,并在不联机的情况下工作。它要求所使用的操作系统体积较小,内建有对中断的响应功能。

在掌上型电脑中,WindowsCE包含如下一些重要组件:PocketOutlook及其组件、语音录音机、移动频道、远程拨号访问、世界时钟、计算器、多种输入法、GBK字符集、中文TTF字库、英汉双向词典、袖珍浏览器、电子邮件、PocketOffice、系统设2

长安人学硕Ij学位论文

置、WindowsCEServices软件。

3.Linux

Linux是一个类Unix操作系统。它起源于芬兰一个名为LinusTorvalds的业余爱好,但是现在已经是最为流行的一款开放源代码的操作系统。Linux从1991年问世到现在,短短10年的时间内已发展成为一个功能强大、设计完善的操作系统,伴随网络技术进步而发展起来的LinuxOS已成为Microsoft公司的DOS和Windows95/98的强劲对手。Linux系统不仅能够运行于PC平台,还在嵌入式系统方面大放光芒,在各种嵌入式LinuxOS迅速发展的状况下,LinuxOS逐渐形成了可与WindowsCE等EOS进行抗衡的局面。目前正在开发的嵌入式系统中,49%的项目选择Linux作为嵌入式操作系统。Linux现已成为嵌入式操作的理想选择。

4.QNX

QNX是一个可扩充的实时操作系统,它遵循POSIX.1(程序接口)和POSIX.2(Shell和工具)、部分遵循POSIX.1b(实时扩展)。它提供了一个很小的微内核以及一些可选的配合进程。其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理。其进程在独立的地址空间运行,所有其它OSN务,都实现为协作的用户进程,因此QNXI为核非常小巧(QNX4.X大约为12kB),而且运行速度很快。这个灵活的结构可以使用户根据实际的需求将系统配置成微小的嵌入式操作系统或是包括几百个处理器的超级虚拟机操作系统。

1.2.2国内研究进展

由于国外公司的专用操作系统巨大的市场前景,国内越来越多的研究机构和企业也开始关注并进军嵌入式操作系统领域。目前国内的Linux嵌入式操作系统厂商队伍正在逐渐扩大,已形成百家争鸣的局面。在市场上主要有红旗嵌入式Linux、博利思推出的POCKETIX、蓝点的嵌入式Linux系统、网虎科技推出的COVENTⅣE和共创软件联盟推出的CC.Linux。它们所具备的共同特点是:精简的内核,适用于不同的CPU,X86、StrongARM、ARM、MIPS、POWERPC等;提供完善的嵌入式GUI和嵌入式X—windows;提供嵌入式浏览器,邮件程序,mp3播放器,mpeg播放器和记事本等应用程序;提供完整的开发工具和SDK,同时提供PC上的开发版本;用户可定制,提供图形化的定制和配置工具;常用嵌入式芯片的驱动集;提供实时版本;完善的中文支持等。其中CC.Linux对通用的Linux进行了合理的裁剪,实现了3

第一章绪论

ROM依AM/FLASH的文件系统、软实时、能量低中断、电源管理、J筒舱虚拟机、多平台和多线程支持,有望成为中国嵌入式操作系统的标准。

国内目前最具代表性的嵌入式操作系统如下:

1.HOPENOS:

HOPENOS是凯思集团自主研制开发的嵌入式操作系统,由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。其内核HopenKernel一般为10KB左右大小,占用空间小,并具有实时、多任务、多线程的系统特征。使用者可以很容易地对这一操作系统进行定制或作适当开发,该系统不仅可以广泛应用于:移动计算平台(PDA)、家庭信息环境(机顶盒,数字电视)、通讯计算平台(媒体手机)、车载计算平台(导航器)、工业、商业控制(智能工控设备,POS/ATM机)、电子商务平台(智能卡应用,安全管理)等信息家电上,还可应用于与Intemet相联接的一切接入设备,是未来信息家电的核心。该系统目前已能在:X86、PA—RISC、PowerPC、ARM、StrongARM、MIPS、68XXX等多种芯片上运行。

2.EEOS:

EEOS是中科院计算所组织开发的开放源码的嵌入式操作系统。该嵌入式操作系统重点支持p-Java,要求一方面小型化,一方面能复用Linux的驱动和其他模块。研究机构准备将其建立呈扩展能力强,功能完善,且稳定、可靠的嵌入式操作系统平台。包含E2实时操作系统,E2工具链及E2仿真开发环境的完整环境。EEOS采用先进的内核仿真调技术,能够使普通C程序员能快速熟悉实时系统的结构和开发过程,大幅度降低学习,研究,开发实时系统的代价。EEOS专为嵌入式系统设计,代码尺寸小,同时EEOS结构上考虑了实时需求,很高的实时响应速度,因而能够在各种环境下工作,具有良好的可伸缩性。

3.“和欣”嵌入式操作系统

“和欣”是863计划主题资助的国家重大基础软件项目。它区别于其他传统嵌入式操作系统的特点,由于它是为网络时代的嵌入式设备,能够更有效地支持WEB服务而开发,在体系结构上完全面向构件、中间件技术的网络操作系统,其精髓是科泰世纪公司原创的ezCOM构件技术。这不仅可以为“和欣”的应用产品带来新的增值功能,还使各种软件零件可以独立生产、维护、更换、升级,提高软件的整体质量与软件复用率,缩短软件开发周期,提高嵌入式系统的开发效率。这些技术有效地解决了在下4

长安人学硕I:学位论文

一代面向网络应用的嵌入式系统中,传统操作系统所面临的问题。“和欣”是一个完全由中国人自行设计开发的、具有完整的自主知识产权的、面向网络应用的嵌入式操作系统。其体系结构和实施技术有创新性,在嵌入式操作系统达到了国内领先和国际先进水平。

1.3本文研究目的和内容

Linux升级到2.6版本内核后,性能大幅提升,这些特性旨在改进高端企业服务器的性能和支持越来越多的嵌入式设备。对于嵌入式系统领域,添加了针对大量新的体系结构和嵌入式微处理器类型的支持——包括对那些没有内存管理单元MMU系统的支持。由于其兼顾的领域太广,放弃了系统的实时性,而在工业应用中,迫切需要可靠的具有实时性能的操作系统平台,因此利用Linux操作系统的特性进行实时性改造成为业界研究的热点。2.6内核在嵌入式系统方面,由于采用了可抢占式内核、O(1)调度算法以及增强的同步机制三个方面的改进,使它在响应性方面相比以前版本的内核有了巨大的改善。

目前,新推出的Linux2.6版本内核已经成为大部分商业嵌入式操作系统的主流,而开源的实时操作系统仍然沿用2.4甚至更老的2.2版本内核。2.6内核针对嵌入式应用的新特性无法在实际应用中得到推广。本文通过对Linux2.6内核深入研究,结合已有的实时化技术方案,提出了一个针对2.6内核提升实时性的新方法。改进内核后的系统保留了Linux系统的优势以及2.6内核的新特性,并且很好的提升了系统的实时响应能力,使其更适合作为一种方便可行的实时操作系统的解决方案,在实际应用中推广。

第_章嵌入式Linux系统分析

第二章嵌入式Linux系统分析

2.1嵌入式系统及嵌入式操作系统简介

嵌入式系统被定义为:以应用为中心,以计算机技术为基础、软硬件可裁剪、适应特定应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统是将先进的计算机技术、半导体技术和电子技术以及各个行业的具体应用相结合的产物,广泛地渗透到社会经济、军事、通信等相关行业,而且深入到信息家电、娱乐、社会文化等各个领域,掀起了一场数字化的技术革命。随着多媒体技术与Intemet应用的迅速普及,消费电子(Consumptiveelectron)、计算机(Computer)、通信(Communication)等3C一体化趋势日趋明显,极大地推进了嵌入式技术的发展。

嵌入式操作系统EOS(EmbeddedOperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域【1】。EOS负责嵌入系统的全部软、硬件资源的分配、调度,控制、协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着Intemet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一功能向高专业化的方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。EOS是相对于一般操作系统而言的,它除具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理、文件处理等外,还有以下特点:

>可装卸性。开放性、可伸缩性的体系结构。

>强实时性。EOS实时性一般较强,可用于各种设备控制当中。

>统一的接口。提供各种设备驱动接口。

>提供强大的网络功能,支持TCP/IP协议及其它协议,提供TCP舢『DP/口/PPP

协议支持及统一的MAC访问层接口,为各种移动计算设备预留接口。

>强稳定性,弱交互性。嵌入式系统一旦丌始运行就不需要用户过多的干预,

这就要负责系统管理的EOS具有较强的稳定性。嵌入式操作系统的用户接

口一般不提供操作命令,它通过系统的调用命令向用户程序提供服务。

>更好的硬件适应性,也就是良好的移植性。

从某种意义上来说,通用计算机行业的技术是垄断的。占整个计算机行业90%6

长安大学硕十学位论文

的PC产业,80%采用Intel的x86体系结构,芯片基本上出自Intel,AMD,Cyrix等几家公司。在几乎每台计算机必备的操作系统和文字处理器方面,Microsoft的Windows及Word占80%.90%,凭借操作系统还可以搭配其它应用程序。因此当代的通用计算机工业的基础被认为是由Wintel(Microsoft和Intel在90年代初建立的联盟)垄断的工业。

嵌入式系统则不同,它是一个分散的工业,充满了竞争、机遇与创新,没有哪一个系列的处理器和操作系统能够垄断全部市场。即便在体系结构上存在着主流,但各不相同的应用领域决定了不可能有少数公司、少数产品垄断全部市场。因此嵌入式系统领域的产品和技术,必然是高度分散的,留给各个行业的中小规模高技术公司的创新余地很大。另外,社会上的各个应用领域是在不断向前发展的,要求其中的嵌入式处理器核心也同步发展,这也构成了推动嵌入式工业发展的强大动力。

2.2实时系统定义

根据IEEE的定义“areal.timesystem

responsetimeasisasystemwhosecorrectnessincludeitswellasitsfunctionalcorrectness.”瞳1实时系统是那些正确性不仅取决于计算的逻辑结果也取决于产生结果所花费时间的系统。实时操作系统与分时操作系统的最大区别在于时限(deadline)这个观念。即实时系统不只是要求完成一个工作,并且要求工作在一定的时限内完成,如果超时的话都算是任务失败。在实时计算中,系统的J下确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间。对于实时系统来说最重要的要求就是实时操作系统必须有满足在一个事先定义好的时间限制中对外部或内部的事件进行响应和处理的能力。实时系统可以定义为一个能够在事先指定或确定的时间内完成系统功能和对外部或内部、同步或异步时间做出响应的系统。

对操作系统的实时性能衡量标准的指标如下:

>系统响应时间(SystemResponseTime):系统在发出处理要求到系统给出应

答信号的时间;

>上下文切换时f百](Context.SwitchingTime):多任务之间进行切换而花费的时

间;

>中断延迟时faJ(InterruptLatencyTime):从接收到调度信号到操作系统做出响

应,并完成进入中断服务程序的时间。7

第_章嵌入式Linux系统分析

2.3实时系统分类

实时操作系统的实时功能又可分为硬实时和软实时两种。硬实时和软实时的区别就在于对外界的事件做出反应的时间。硬实时系统必须是对即时的事件做出反应,绝对不能错过事件处理时限(deadline)。在硬实时系统中如果出现了超过时限的情况就意味着巨大的损失和灾难。软实时系统是指,如果在系统负荷较重的时候,允许发生错过时限(deadline)的情况而且不会造成太大的危害。硬实时系统和软实时系统的实现区别主要是在选择调度算法上。选择基于优先级调度的算法足以满足软实时系统的需求,而且可以提供高速的响应和大的系统吞吐率;而对硬实时系统来说,需要使用的算法就应该是调度方式简单,反应速度快的实时调度算法了。

目前世界上比较有影响力的实时操作系统主要有Lynx实时系统公司的LynxOS、QNX软件系统有限公司的QNX以及两种具有代表性的实时Linux一新墨西哥工学院的RT--Linux和堪萨斯大学的KI瓜T一“nux。

2.4Linux在嵌入式应用的分析

Linux操作系统的优势

与常见的嵌入式操作系统如VxWorks,QNX,WindowsCE,PalmOS等相比,嵌入2.4.1式Linux操作系统以价格低廉、功能强大且易于移植而正在被广泛采用,成为新兴的力量,越来越多的企业和科研机构已经把目光转向了嵌入式Linux的开发和应用上。归纳而言,嵌入式Linux至少具有以下优势:

Linux是自由的操作系统,它的开放源码使用户获得了最大的自由度;

Linux上的软件资源十分丰富,每一种通用程序在Linux上都可以找到;

Linux的多任务内核非常稳定,它的高效和稳定性已经在各个领域,尤其在网络服务器领域,得到了事实的验证。Linux内核小巧灵活,易于裁剪,这使得它很适合嵌入式系统的应用;

Linux支持多种体系结构,如X86,ARM,MIPS,ALPHA,SPARC等,目前,Linux已经被移植到数十种硬件平台上,几乎支持所有流行的CPU;

Linux自产生之同起就与网络密不可分,具有非常高效强人的网络功能,支持各种流行的网络协议,网络是Linux的强项;

Linux支持大量的外围硬件设备,内核绝大部分代码都是关于设备驱动的,它们8

长安人学硕.1:学位论文

支持各种主流硬件设备和最新硬件技术;

Linux支持多种文件和图形系统,具有良好的兼容性及友好的用户界面:

Linux有着非常优秀的完整开发工具链,GNU开发工具系列一直为人称道,有十几种集成开发环境,其中很多是免费的,从而降低了开发费用;

Linux从1991年问世到现在的短短十几年时间内,己经发展成为功能强大、设计完善的操作系统之一,可以与各种传统的商业操作系统媲美。同时,由于Linux自身所具有的优秀特性,及越来越多的科研机构、厂商的不断推动,使得其在新兴的嵌入式系统领域内也获得了飞速发展。日前J下在开发的嵌入式系统中,49%的项目选择了Linux作为嵌入式操作系统。所以,研究和分析嵌入式Linux操作系统理论和应用,开发相关的嵌入式Linux系统和应用软件,具有重大的意义。

目前,嵌入式Linux系统开发正在蓬勃兴起,并且己经开辟了很大的市场,除了一些传统的Linux公司,像RedHat,VALinux等正在从事嵌入式Linux的研究之外,一批新公司(如Lineo,TimeSys等)和一些传统的大公司(如mM,SGI,Motorola,Intel等)以及一些开发专有嵌入式操作系统的公司(如Lynx)也J下在进行嵌入式Linux的研究和开发。但就目前的技术而言,嵌入式Linux的研究成果与市场的真正需求还有一段差距。

2.4.2Linux实时性不强的原因

高实时性是嵌入式操作系统的基本要求,由于Linux是一种通用操作系统,而不是一个真正的实时操作系统,内核不支持事件优先级和实时抢占特性。所以,在开发嵌入式Linux的过程中,首要问题是扩展Linux的实时性能【3】。

Linux在实时应用中存在局限性,普通Linux或没有在实时性方面做改进的嵌入式Linux不能直接应用于实时系统中,原因有以下几点:

1-调度算法。一般的Linux系统是按照分时系统的目标设计的,以达到系统较好的

平均性能,强调平衡进程之间的响应时间来保证公平的CPU时间占用。通常采用固定时间片的分时调度算法,而实时系统的行为更多的取决于复杂的不可预知的情况,所以不能满足实时系统短的响应时间和确定的执行行为的要求。

2.定时机制。时间系统是计算机重要的组成部分,其主要作用是提供系统时间。

Linux系统时间依赖于硬件时钟,一般可以认为Linux系统时间是硬件时钟的计数器。为了提高系统的平均的吞吐率,Linux将时钟中断的周期设置为20毫秒,9

第_章嵌入式Linux系统分析

这个时钟周期不能满足实时系统响应时间的要求。

3.中断问题。中断完成外部设备和Linux系统之间的数据通信,可以认为,中断是

实现异步数据系统之间联系的一种重要手段。Linux通过VFS方式统一管理各种设备,捕获中断,执行中断服务。Linux的内核进程经常关闭中断以尽快完成自己的任务,如果低优先级的进程关闭了中断,那么即使有高优先级进程的中断发生,系统也无法响应。有些系统调用的时间很长,增加了中断延时和调度延时,这种情况在实时系统中是不允许发生的。

4.不完全可抢占的系统调用。一般的Linux系统进程运行于内核模式,很多都不能

被抢占。也就是说一个进程一旦进入内核,并且属于不可抢占进程,那么它将运行直到系统调用结束或者进程被阻塞,这时候一个高优先级的进程只能等待。这样将严重影响对高优先级用户进程可能提供的服务,对于实时应用来说这样的等待也是致命的。

5.虚拟内存管理。Linux系统采用的虚拟内存技术,对于分时系统来讲这是一个好

的解决办法,而对于实时系统却带来不可忍受的不可预测性。

从以上可以看出,单就操作系统服务角度,影响Linux实时化的主要因素包括:调度机制的选择,Linux的时间片粒度,中断处理,内核的非抢占特性等。针对以上Linux内核实时性能不强的原因,对2.6内核的实时性进行改造主要从实时调度算法、虚拟内存、减少Linux的调度延时三个方向出发。lO

长安人学硕.仁学位论文

第三章Linux系统实时性优化

Linux应用于嵌入式系统中,实时性是一个大问题。改进Linux实时性能有多种方法,本章我们将以Linux内核源码2.6.12为基础,通过对Linux内核实时性不强的原因进行分析研究,并从实时调度算法、虚拟内存、调度延时等方面对Linux内核进行实时性能的改进,并对改进后的内核实时性能进行验证与分析。

3.1针对嵌入式应用的实时性优化

目前世界上已有几种商业RTOS,如QNX、VxWorks、pSOS和Nucleus等。它们一般价格昂贵且互不兼容.作为以出卖软件使用许可证为盈利目的商业RTOS,它们通常严守技术秘密,这同时也限制了它们的发展。与之相反,GPL协议下的Linux及其相关项目的开放源码特征为我们在前人基础上顺利进行更深入的研究提供了可行性。目前。引起广泛关注且具代表性的Linux内核实时支持研究项目有:RT-Linux,RTAI,RED—Linux,KURT。它们各有其独到之处及鲜明的技术特征。

3.2当前Linux内核实时改进优化的主流技术

1.RT-Linux和RTAI

RT-Linux将Linux内核设计为可被抢占的,实现硬实时。主要方法是实现一个实时内核负责处理硬件消息,实时任务可在该内核上直接运行,把Linux内核本身作为优先级最低的Idletask运行。该实时内核有自己的基于优先级的调度算法。Linux内核随时可以被优先级更高的实时任务抢占,如图3.1所示。实时任务与Linux进程之间通过特定的通信机制(如FIFO管道)进行通信。运行在Linux内核之上的进程则可以完成一些非实时功能。

RTAI的方法与之类似,不同之处在于它定义了一组RTHAL(real.time

abstractionhardware

咖只使用这组界面和Linux沟通。这样可以把对内核源码树的改动降低到可以控制的程度,其优点是可以避免RT-Linux对内核源码改动过大的问题,减少跟踪移植到新版Linux的工作量。layer),RTHAI将RTAI需要在Linux中修改的部分定义成一组程序界面,

第二章Linux系统实时性优化

Linux进程\魍1副伊¨。。/

Linux内核实时进程

软中断i号ttt

实时内核

ttt硬中断信

硬件层

图3.1RT-Linux的双核解决方案

以上技术开创了Linux的硬实时支持的先河,其硬件中断接管方法对我们有借鉴意义。然而,它们提供的调度机制还不能满足复杂应用场合的需要,对Linux原有资源的利用也不够方便。

2.RED—Linux

与上述的可抢占内核不同。RED—Linux通过直接修改Linux内核源码,将内核中较长的例程剖分分为较小的代码块。即在代码中增加抢占点(preemptianpoint),导致内核在抢占点可以被抢占,通过这种方式可以减小内核抢占延迟。另外,RED.Linux的调度架构使得RED.Linux可以符合多种不同复杂度系统的调度需求。基本上,它分成调度器(dispatcher)和分配器(a110cator)两部分,分配器在用户态执行,而调度器在内核态执行。分配器可以是中间件的一部分,负责将应用程序的资源请求转换成内核可以理解的形式。调度器作为一个内核模块存在,可动态加载。由它来最终决定进程的执行顺序。RED—Linux由于内核不可抢占而只能作为一种软实时方案,但它的调度架构是扩展RTOS适用范围的有益尝试。

3.KURT-Linux

Kansas大学所研制的KURT-Linux使用不同的内核态控制实时进程的调度:眨312

长安大学硕上学位论文

1)普通态。内核下提供实时支持,这时与通常的Linux没有区别:

2)实时态。内核仅仅调度实时进程,非实时进程全部被挂起;

3)混合态。实时进程和非实时进程同时被调度。

KURT可使用全部Linux原有系统调用,有利于充分利用Linux的软件资源,多态的实时进程调度方式容易产生的问题是,它的安全性过于依赖于应用程序员,若内核态之间的切换没有很好地实现,那么由此而带来的实时进程和非实时进程之间的不正确交替会导致系统崩溃,因此,寻求一种合理的实时和非实时混合调度机制是待解决的问题。

以上方案各有其可借鉴之处,但如果综合考虑任务响应时间,硬中断控制和实时调度策略等几个影响操作系统实时性能的重要方面,它们还下能很好地满足实时应用需求。因此借鉴以上方法的优点,进行新的研究。

3.3Linux2.6内核的改进

用于移植的Linux内核应该优先选用稳定版的内核,如2.4.X或2.6.X版内核。目前用于嵌入式Linux系统的内核大多数使用2.4.X版的内核,但是,随着嵌入式微处理器性能的不断增强及其应用范围的日趋扩大,Linux2.6版内核由于其自身所具有的针对嵌入式系统应用的显著特点,必将会越来越多的被应用于嵌入式Linux系统之中。

Linux2.6具有强有力的特性,这些特性旨在改进高端企业服务器的性能和支持越来越多的嵌入式设备。对于嵌入式系统领域,添加了针对大量新的体系结构和嵌入式微处理器类型的支持——包括对那些没有内存管理单元MMU系统的支持。

在嵌入式系统方面,实时可靠性是嵌入式应用较为普遍的要求,尽管Linux并非一种真正的实时操作系统,然而由于2.6版的内核在多个方面的改进,使它在响应性方面相比以前版本的内核有了巨大的改善。其中,在提高系统中断性能和调度响应时间方面,主要涉及到内核中三个方面的重大改进:采用可抢占式内核、O(1)调度算法以及增强的同步机制。

1.内核抢占

与大多数通用操作系统一样,包括Linux2.4在内的早期的内核版本,不允许抢占以核心态运行的任务,例如处于系统调用中的任务,除非它们主动释放CPU,否

第二章Linux系统实时性优化

则将一直控制CPU资源直到该系统调用返回。在此期间,调度器都将被禁止运行。这必然会会导致重要的任务因为等待系统调用结束而被延迟。

一个内核任务可以被抢占,目的是让重要的用户应用程序可以优先执行,这将显著地降低用户交互式应用程序、多媒体应用程序等类似应用程序的延迟。这一特性对实时系统和嵌入式系统来说特别有用。为此,2.6内核中引入了内核抢占点机制,在内核代码中插入了抢占点,允许调度程序中止当前进程而调用更高优先级的进程,通过对抢占点的测试避免不合理的系统调用延时。2.6内核在一定程度上是可抢占的,比2.4内核具备更好的响应性。但也不是所有的内核代码段都可以被抢占,可以通过锁定内核代码的关键部分,不允许抢占。锁定可以确保CPU的数据结构和状态始终受到保护而不被抢占。

2.O(1)调度器

2.6版本的Linux内核的调度器被完全的重写,使用了由IngoMolnar开发的新的调度器算法,称为O(1)算法,它在高负载的情况下执行得极其出色,并且当有很多处理器时也可以很好的扩展。

为了决定接下来哪个任务将会运行,早期的调度程序需要查找整个就绪队列,并且计算它们的重要性以决定下一步调用的任务,需要的时间随就绪任务的数量而改变。O(1)算法则不再每次扫描所有的任务,调度器使用了两个优先级数组,即活动数组和过期数组,可以通过指针来访问它们。活动数组中包含了所有映射到某个CPU而且时间片尚未用尽的任务。过期数组中包含了一个时间片已经用尽的所有任务的有序列表。当任务就绪时被放入一个活动队列中,调度程序每次从中调度适合的任务运行,因而每次调度都是个固定的时间。在2.4版本的调度器中,时间片重算算法要求在所有的任务都用尽它们的时间片以后,它们的新时间片才会被重新计算。新的调度器在任务运行时就计算并分配一个时间片,当时间片结束,该任务将放弃处理器并根据其优先级转到过期队列中。如果所有活动任务的时间片都已用尽,那么指向这两个数组的指针互换,过期数组(包含了准备运行的任务)成为活动数组,而空的活动数组成为包含过期任务的新数组。

3.增强的同步机制

多进程应用程序需要共享内存和外设资源,为避免竞争采用了互斥的方法保证资源在同一时刻只被一个任务访问。早期的Linux内核用一个系统调用来决定一个线14

长安人学硕.1:学位论文

程是否应该阻塞或是继续执行来实现互斥,如果是线程继续执行这种情况,这个费时的系统调用就没有必要了。Linux2.6内核所支持的“futexes”(FastUser-SpaceMutexes)同步机制可以从用户空间检测是不是需要阻塞线程,只有在需要时才执行系统调用终止线程。与传统的线程库所支持的mutex操作不同,这是部分基于内核的(partiallykemelbased),同时也支持设置优先级使得高优先级的应用或线程优先获得竞争的资源。

此外,Linux2.6内核中与嵌入式系统相关的还包括以下一些重要改进:

1)Linux的I/O子系统经过很大的修改,使得它在各种工作负荷下都更具响应

性。这个变化包括I/O调度子系统,决定何时、哪一进程去读一个设备的内

核代码的完全重写。重写的I/O层现在可以更好地保证没有进程过长时间地

停留在I/O等待上,同时并不排斥以前的优化工作。

2.)Linux的线程框架被重写,以使NPTL(NativePOSIXThreadLibrary)可以运

9.0行其上(实际上,RedHat已经将它向后移植到了Linux2.4,从RedHat

中开始包含)。新的线程模型基于一个内核线程对应一个用户线程的1:l的线

‘程模型,包括内核对新的NPTL的支持,这是对以前内核线程方法的明显改

进。Linux2.6内核同时还提供了POSIX信号和POSⅨ高精度定时器。POSIX

信号不会丢失,并且可以携带线程间或处理器间的通信信息。嵌入式系统要

求系统按时间表执行任务,POSIX定时器可以提供1000Hz的触发器使这一

切变得简单,从而可以用更高的精度控制任务调度。

3)内核中加入了多种微控制器的支持。Linux2.6内核中加入了许多流行的SOC

的支持,如XScale.¥3C24X0等。无MMU的处理器以前只能利用一些改进

的分支版本,如uClinux,而Linux2.6内核已经将其整合进了新的内核中,

开始支持多种流行的无MMU微控制器,如Dragonball,ColdFire,Hitachi

H8/300。Linux在无MMU控制器上仍旧支持多任务处理,但没有内存保护

功能。

嵌入式应用有用户定制的特点,硬件设计都针对特定应用开发,这给系统带来对非标准化设计支持的问题。为了更好地实现,可以采用部件化的操作系统。Linux2.6采用系统架构将功能模块化,可以定制而对其他部分影响最小。同时Linux2.6提供了多种新技术的支持以实现各种应用开发,如ALSA

15(AdvancedLinuxSound

第■章Linux系统实时性优化

Architecture)和Vide04Linux等,对多媒体信息处理更加方便;对USB2.0的支持,提供更高速的传输,增加蓝牙无线接口、音频数据链接和面向链接的数据传输协议L2CAP(LogicalLinkControlandAdaptationProtocal,逻辑连接控制和适配协议),满足短距离的无线连接的需要:而且在Linux2.6内核还可以配置成无输入和显示的纯粹无用户接口系统。

Linux2.6内核由于其自身所具有的针对嵌入式系统应用的显著特点,在稳定性、响应性、对设备支持的广泛性等方面相比以前版本的内核都有较大的提高,必将会越来越多的应用于嵌入式系统之中。因此,本文将讨论并实现Linux2.6内核的实时性优化。选用的是较新且较稳定的Linux.2.6.12内核。

3.4Linux调度算法实时性的改进

Linux内核的调度算法采用FIFO,RR等调度算法,这些调度算法主要是针对PC机的,它们主要兼顾系统的吞吐率及系统的利用率,不能满足嵌入式系统的实时性要求,所以需要对调度算法进行改进,本节采用两个实时调度算法——最早截止期优先调度算法(EDF)和速率单调调度算法(RM)对Linux内核的实时调度算法进行改进。3.4.1最早截止期优先调度算法(EDF)性能分析

EDF算法是一种可抢占的动态优先级调度算法,其按照任务的最终响应时限来调度,哪个任务的时限最早,就是最紧急的任务,就被赋予高优先级,得到优先调度。EDF算法中任务优先级在其初始时并不固定,而根据其绝对最后期限改变,所以遵照EDF算法调度的处理器总是执行所有任务中最早达到绝对最后期限的任务。【14】【15】

EDF算法是一种最优的单处理器动态调度算法,也就是说,假如EDF算法在单处理器上对一个任务集合不能合理调度,那么其它算法也不能够对该任务集合理调度。

EDF调度算法的实现步骤如下:

1.检查任务队列中所有就绪任务;

2.比较所有任务的最后时间期限;

3.将具有最先时间期限的任务给予最高优先级,即最先执行该任务。

EDF算法的吸引力在于效率高、容易计算和推断,这是动态优先级调度研究的一个主要组成部分。EDF的缺点在于,理论表明这种算法能对可调度负载进行优化,16

长安大学硕}:学位论文

但是它不能解决过载问题。发生过载时,导致CPU时间大量花费在调度上,性能退化很快。

实时系统若有m个周期性事件,事件i的周期为只,其中每个事件需要G秒的CPU时间来处理,则只有满足以下条件:

f<穗

f-l(ef/Pf)≤1(3.1)

才可能处理所有负载,满足该条件的系统任务集称为可调度的(Schedulable),在所有的单处理器调度算法中,EDF调度算法对于处理单处理器是最优的。

3.4.2实时调度算法(EDF)的实现

EDF调度算法对处理单处理器的实时调度是最优的,为了实现EDF调度算法,对内核的数据结构、算法相关的源代码做了相应的修改,主要修改的内容如下:

1.主要数据结构的修改:

1)调度策略

与其它三种已有的调度策略类似,首先在原来头文件:sched.h中增加宏定义SCHEDEDF:

#defineSCHEDNORMAI,

#defineSCHEDFIFO

#defineSCHEDRR

#defineSCHEDEDF231O//新增加的调度

这样只是在内核调度策略中增加了EDF调度算法,要实现EDF调度算法还需要对内核的其它部分进行修改。

2)调度任务结构

在进程控制块taskstruct中增加采用EDF调度策略任务的属性:

structEDF_struct;

unsignedlongdeadline;

’unsignedlongperiod;

unsignedlongready_time;17

本文来源:https://www.bwwdw.com/article/j181.html

Top