《最新实时操作系统原理介绍pptPPT课件.ppt》由会员分享,可在线阅读,更多相关《最新实时操作系统原理介绍pptPPT课件.ppt(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起进入夏天,少不了一个热字当头,电扇空调陆续登场,每逢此时,总会想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的故乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不论男女老少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着一把,忽闪忽闪个不停,嘴里叨叨着“怎么这么热怎么这么热”,于是三五成群,聚在大树,于是三五成群,聚在大树下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩
2、子们却在周下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩子们却在周围跑跑跳跳,热得满头大汗,不时听到围跑跑跳跳,热得满头大汗,不时听到“强子,别跑了,快来我给你扇扇强子,别跑了,快来我给你扇扇”。孩。孩子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时母亲总是,好似生气的样子,边扇边训,母亲总是,好似生气的样子,边扇边训,“你看热的,跑什么?你看热的,跑什么?”此时这把蒲扇,此时这把蒲扇,是那么凉快,那么的温馨幸福,有母亲的味道!蒲扇是中国传统工艺品,在是那么凉快,那么的温馨幸福,有母亲的味
3、道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表我国已有三千年多年的历史。取材于棕榈树,制作简单,方便携带,且蒲扇的表面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即面光滑,因而,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非今日的蒲扇,江浙称之为芭蕉扇。六七十年代,人们最常用的就是这种,似圆非圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,圆,轻巧又便宜的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的半个人
4、生的轨迹,携带着特有的念想,一年年,一天天,流向长也走过了我们的半个人生的轨迹,携带着特有的念想,一年年,一天天,流向长长的时间隧道,袅长的时间隧道,袅实时操作系统原理介绍ppt 目錄目錄一、實時操作系統簡介一、實時操作系統簡介二、嵌入式實時操作系統二、嵌入式實時操作系統三、實時操作系統的調度策略三、實時操作系統的調度策略四、實時操作系統的工作原理四、實時操作系統的工作原理1.7 1.7 实时操作系统的评价指标实时操作系统的评价指标 评价一个实时操作系统一般可以从任务调度、内存管理、任务通讯、内存开销、任务切换时间、最大中断禁止时间等几个方面来衡量。1.任务调度机制任务调度机制:RTOS的实时
5、性和多任务能力在很大程度上取决于它的任务调度机制。从调度策略上来讲从调度策略上来讲,分优先级调度策略和时间片轮转调度策略;从调度方式上来讲从调度方式上来讲,分可抢占、不可抢占、选择可抢占调度方式;从时间片来看从时间片来看,分固定与可变时间片轮转。2.内存管理内存管理:分实模式与保护模式。3.最小内存开销最小内存开销:RTOS的设计过程中,最小内存开销是一个较重要的指标,这是因为在工业控制领域中的某些工控机工控机 的供应商(如上下位机控制系统中的下位机),由于基于降低成本的考虑,其内存的配置一般都不大基于降低成本的考虑,其内存的配置一般都不大,例如康拓5000系列5185板,其基本内存配置仅为2
6、56K SRAM128K EPROM,而在这有限的空间内不仅要装载实时操作系统,还要装载用户程序。因此,在RTOS的设计中,其占用内存大小是一个很重要的指标,这是RTOS设计与其它操作系统设计的明显区别之一。4.4.最大中断禁止时间:最大中断禁止时间:当RTOS运行在核态或执行某些系统调用的时候,是不会因为外部中断的到来而中断执行的。只有当RTOS重新回到用户态时才响应外部中断请求,这一过程所需的最大时间就是最大中断禁止时间。5.5.任务切换时间:任务切换时间:当由于某种原因使一个任务退出运行时,RTOS保存它的运行现场信息、插入相应队列、并依据一定的调度算法重新选择一个任务使之投入运行,这一
7、过程所需时间称为任务切换时间。上述几项中,最大中断禁止时间最大中断禁止时间和任务切换时间任务切换时间是评价一个RTOS实时性最重要的两个技术指标。1.8 1.8 实时操作系统的相关概念实时操作系统的相关概念 (1)基本概念代码临界段代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;资源资源:任何为任务所占用的实体;共享资源共享资源:可以被一个以上任务使用的资源;任务任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态
8、,被中断态;任务切换任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;内核:内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核和可剥夺型内核;调度:调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;(2)关于优先级的问题任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;优先级反转:优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任
9、务后运行。解决的办法有优先级封顶协议和优先级继承协议。(3 3)互斥)互斥 虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间。中断延迟时间=MAX(关中断的最长时间,最长指令时间)+开始执行ISR的第一条指令的时间。二、嵌入式实时操作系统简介二、嵌入式实时操作系统简介2.1 2.1 嵌入式实时操作系统简介嵌入式实时操作系统简介 嵌入式实时操作系统,即Embeded Real-t
10、ime Operation System。IEEE定义嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”。一般定义为:以应用为中心,以计算机技术为基础,软件硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。我们常常说的嵌入式操作系统都是嵌入式实时操作系统。比如C/OS-II、eCOS和Linux。特点:特点:与通用操作系统相比,嵌入式实时操作系统具有可移植、实时性能、内核精简、抢占式内核、使用可重入函数、可配置、可裁剪、高可靠性的基本特征。此外,还有并开发性、操作方便、简单、提供友好的图形界面。能提供强大的网络功能,支持TCP/IP协议及其它协议,为各种移动计算设备预
11、留接口等特点。2.2 2.2 嵌入式实时操作系统的分类嵌入式实时操作系统的分类从应用领域来分从应用领域来分,可以分为:面向信息家电的嵌入式操作系统;面向智能手机的嵌入式操作系统,如SymbianOS、MS Mobile OS、PalmOS、Embedded Linux等;面向汽车电子的嵌入式操作系统;面向工业控制的嵌入式操作系统等。按源代码分类按源代码分类,大体上可分为两种,商用型和开源型。按实时性能分可分为,按实时性能分可分为,强实时型和普通实时型。强实时型和普通实时型。按内核结构分可分为,按内核结构分可分为,单内核型和微内核型。单内核型和微内核型。单内核设计思想:内核尽量全,功能强大。模块
12、间通信通过直接函数调用实现。内部模块作为一个很大的进程运行,提供完整的操作系统服务。优点是系统在内核功能切换上开销小,对外来时间反应速度快;缺点是占用内存空间大,缺乏可扩展,维护困难,排除故障和增加新功能需要重新编译。微内核设计思想:内核尽量小,只执行基本的核心操作系统功能。特点是:移植方便;能有效利用内存;内核不提供操作系统相关服务,而提供实现这些服务的机制,包括:进程管理、存储管理、进程间通信、中断响应框架。一般的嵌入式操作系统都是微内核。2.3 2.3 嵌入式实时操作系统的体系结构嵌入式实时操作系统的体系结构 体系结构式操作系统的基础,它定义了硬件与软件的界限、内核与操作系统其它组件(文
13、件、网络、GUI等)的组织关系、系统与应用的接口。目前嵌入式操作系统主要采用分层分层和模块化相结合模块化相结合的结构或微内核或微内核结构结构。分层和模块化结合的结构分层和模块化结合的结构将操作系统分为硬件无关层、硬件抽象层和硬件相关层,每层再划分功能模块。这样移植工作便集中在硬件相关层,与其余两层无关,功能的伸缩则集中在模块上,从而确保其具有良好的可移植性和可伸缩性。微内核结构微内核结构,则可利用其可伸缩的特点适应硬件的发展,便于扩展。层次模块结构:微内核结构:三、实时操作系统的调度策略三、实时操作系统的调度策略3.1 3.1 任务调度任务调度 任务调度就是从就绪状态的任务中,挑选一个任务到处
14、理器上运行。负责任务调度功能的内核程序成为任务调度程序或任务调度器。任务操作系统的核心和灵魂就是它调度程序(Scheduler或Dispatcher)。在设计任务调度器时,首先要决定选择何种调度算法,然后根据此算法来编制相应的调度程序。而调度算法实际上就是系统所采取的调度策略,选择时所要考虑的因素很多。如系统各类资源的均衡使用;对用户公平并使用户满意等。3.2 3.2 实时调度算法分类实时调度算法分类 周期性实时任务调度的基本结构:3.2.1 3.2.1 基于优先级的调度基于优先级的调度 给每个任务分配一个优先级,在每次任务调度时,调度器总是让CPU执行具有最高优先级的任务。优先级驱动算法是时
15、间驱动算法,即当任务所需要的资源就绪后,会立即执行而无需等待。此算法又称为贪心调度算法,保持工作调度算法或者列表调度算法。优先级调度优先级调度,分为静态实时调度静态实时调度和动态实时调度动态实时调度。静态实时调度静态实时调度即系统在编译时就决定从就绪任务队列选择哪个任务来执行,即系统中实时任务特性是事先知道的。分为速率单调调度RMS和截止时间单调调度DMS。动态实时调度动态实时调度指调度器在运行期间才决定选择哪个就绪任务来运行。分为最早截止时间有限EDF和最小空闲时间有限LSF。静态调度静态调度 静态调度是在系统开始运行前进行调度的,严格的静态调度在系统运行时无法对任务进行重新调度。静态调度的
16、目标是把任务分配到各个处理机,并对每一处理机给出所要运行任务的静态运行顺序。静态调度算法实现简单,调度的额外开销小,在系统超载时预测性好。但也具有很大的局限性,例如资源利用率低、受系统支持的优先级个数限制以及灵活性和自适应性差等。下面介绍两种常见的静态调度算法。速率单调调度(速率单调调度(Rate Monotonic Scheduling)Rate Monotonic Scheduling)RMS算法将最高优先级赋予最高执行频率的任务,以单调的顺序对剩余的任务分配优先级。由于采用抢占式的调度方式,高优先级的任务就绪后立即抢占正在运行的任务。对于RMS调度算法,基于嵌入式系统作了如下假设:所有任
17、务请求必须是周期性的,必须在限定时间内完成;所有任务请求必须是周期性的,必须在限定时间内完成;任务之间相互独立;任务之间相互独立;任务的运行时间不变即不考虑中断情况;任务的运行时间不变即不考虑中断情况;所有非周期性任务都在特殊情况下运行;所有非周期性任务都在特殊情况下运行;采用单处理器,任务切换时间忽略不计。采用单处理器,任务切换时间忽略不计。并且,速率越高,周期越短,任务的优先级越高。截止时间单调调度(截止时间单调调度(Deadline Monotonic SchedulingDeadline Monotonic Scheduling)DMS在RMS的基础上发展起来的。不同的是任务的优先级按
18、截止时间来分配。截止时间短的任务优先级高,截止时间长的任务优先级低。DMS具有与RMS相同的点。但DMS算法放松了对任务的周期必须等于其截至时间的限制。在任务的截止时间小于或等于其周期的情况下,DMS已被证明是静态最优的调度算法。如果每个任务的相对时限与它的周期成正比,则RMS算法与DMS算法一致。当相对时限是任意的时候,DMS算法表现要好些,此时DMS算法有时有可能产生可行的调度表,RMS算法却不可以;如果DMS算法不能产生可行的调度表,RMS算法肯定也不能。动态调度动态调度 在嵌入式实时系统中动态调度依赖于任务的优先级。优先级可以静态分配或者依据不同的特征参数,如截止时间、空闲时间或关键性
19、(即任务的重要程度或者价值)等进行动态分配。动态调度可以是抢占式的或非抢占式的。前者用优化的标准动态调动任务,从而减少因超过截止时间而失败的任务数,后者检查系统中每一个任务,看是否有新任务可以加入调度列表,从而满足其截至时间的要求。非抢占式内核的优点非抢占式内核的优点是易于分析、实现,利于保持额外的上下文切换,节省抢占式内核中由于采用互斥机制带来的开销,其缺点是可能使某些任务不能满足其截至时间的要求。几个比较著名的商用嵌入式实时操作系统,如QNX、VxWorks提供的都是“抢占式任务调度”。以下介绍的是两个著名的动态调度算法EDF和LSF。最早截止时间优先算法(最早截止时间优先算法(Earli
20、est Deadline FirstEarliest Deadline First)抢占式EDF调度算法是一个动态优先级驱动的调度算法,其中分配给每个任务的优先级根据它们当前对最终期限的要求而定。当前请求的最终期限最近的任务具有最高的优先级,而请求最终期限最远的任务被分配最低优先级。这个算法能够保证在出现某个任务的最终期限不能满足之前,不存在处理器的空闲时间。最早截止时间优先算法(最早截止时间优先算法(Earliest Deadline FirstEarliest Deadline First)该算法基于以下假设:所有实时任务启动时间为零;所有实时任务启动时间为零;任何任务不存在不可抢占的部分
21、,且抢占的代价可以忽略;任何任务不存在不可抢占的部分,且抢占的代价可以忽略;只有处理器请求是有意义的,内存、只有处理器请求是有意义的,内存、I/OI/O和其它资源请求可以忽略;和其它资源请求可以忽略;所有的任务都是无关的,不存在先后次序的约束;所有的任务都是无关的,不存在先后次序的约束;任务的相对最终期限与它的周期相等。任务的相对最终期限与它的周期相等。EDF算法例子 EDF算法是一个优化的单处理器调度算法,如果有一个动态调度算法能完成实时调度,则EDF算法必然可以。如果EDF算法不能完成一个任务集合的实时调度,则不存在其它的动态调度算法来完成实时调度。在周期性实时系统中,如果每个任务的截止时
22、限都等于其周期,则只要总的处理器利用率小于1,EDF算法都可以调度。EDF算法在负载相对较低时很有效,但在系统负载较重时,系统性能急剧下降,会导致大量任务超过运行时限,甚至可能大量CPU时间花费在调度上。这样可能使一些进程因为来不及处理而夭折,为了避免这个缺陷提出了LSF算法。最小松弛时间算法(最小松弛时间算法(Least Slack Time FirstLeast Slack Time First)LSF算法计算任务的松弛时间,其中松弛时间为任务截止时间与剩余执行时间之差。该算法在任意时刻把最高优先级分配给具有最小松弛时间的任务,以此来保证紧急任务的优先执行。然而,由于等待任务的松弛时间是严
23、格递减的,其等待执行的还击程度也随时间越来越紧迫,因此在系统执行过程中,等待任务随时可能会抢占当前执行的任务。LSF算法造成任务之间的频繁切换或称为颠簸(thrashing)现象较为严重。颠簸现象增大了系统开销,并限制了LSF算法的应用。静态和动态调度算法的选择静态和动态调度算法的选择 嵌入式实时系统中资源是非常有限的,所以开销要尽可能小。开销主要包括运行开销和调度开销。运行开销与队列分析和从调度队列中增加、删除任务有关。每个任务在一个调度周期内至少被阻塞和唤醒一次,所以任务调度器在一个周期内不得不对一个任务进行两次选择。静态调度对时间触发系统的设计很合适,但它必须事先进行设计,综合考虑选择众
24、多参数,通常需要过大范围地设计以能够处理最不可能的事件。动态调度适合设计事件触发的系统,在执行期间能够动态做出决定,并且它在资源利用方面比静态调度有更大的潜力。静态和动态调度算法的特点如下表所示:3.2.2 3.2.2 非优先级调度非优先级调度 3.2.3 3.2.3 非周期调度非周期调度调度程序对非周期性任务的调度通常采用以下三种方法:后台执行:后台执行:在处理器空闲时以先来先服务的次序来执行这些任务。中断驱动执行:中断驱动执行:指在非周期性任务到来时,对处理器产生中断服务请求,由ISR完成任务执行。周期查询执行:周期查询执行:是利用一个查询服务器来模拟一个周期任务,每帧都会检 查相关的非周
25、期任务是否已经释放,如果释放,它与周期 性任务一起按系统调度算法由处理器调度执行。四、实时操作系统原理介绍四、实时操作系统原理介绍以以LinuxLinux系统为例对实时操作系统的原理进行简要介绍。系统为例对实时操作系统的原理进行简要介绍。嵌入式 Linux 是以Linux 为基础的嵌入式作业系统,它被广泛应用在移动电话、个人数字助理(PDA)、媒体播放器、消费性电子产品以及航空航天等领域中。Linux 具有Unix 的所有基本特征,它完全支持POSIx1003.1 标准,Unix 上的应用程序可以很容易的移植到Linux 上来。它支持多用户访问和多任务编程;采用段页式存储管理机制;支持动态链接
26、,节省了内存空间并提高了效率;支持EXT2、MSDOS 等16 种文件系统;支持TCP/IP 和PPP 协议。LinuxLinux的内核结构的内核结构 Linux 内核主要由5个模块构成,它们分别是:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。a.进程调度模块进程调度模块用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU,同时保证内核能及时地执行硬件操作。b.内存管理模块内存管理模块用于确保所有进程能够安全地共享机器主内存区,同时,内存管理模块还支持虚拟内存管理方式,使得Linux 支持进程使用比实际内存空间更多的内存容量。并可以
27、利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要时再交换回来。c.文件系统模块文件系统模块用于支持对外部设备的驱动和存储。虚拟文件系统模块通过向所有的外部存储设备提供一个通用的文件接口,隐藏了各种硬件设备的不同细节。从而提供并支持与其他操作系统兼容的多种文件系统格式。d.进程间通信模块进程间通信模块子系统用于支持多种进程间的信息交换方式。e.网络接口模块网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。(1 1)进程调度机制)进程调度机制 Linux 的调度器使用基于优先级的调度算法基于优先级的调度算法来进行调度。Linux 把进程分为实时进程和非实时进程。所有实时进
28、程的优先级都比非实时进程高。(2 2)中断处理机制)中断处理机制 当中断来时,处理器必须停止当前进程的运行而来处理中断。这样处理可以分为低级处理和高级处理。中断请求信号完全是硬件行为,用电平或脉冲来表示,低级处理就是响应这种信号,保证信号来临时得到及时响应,不至于丢失。低级处理也要做一些读取、传送数据等工作。而高级处理就是具体的处理与设备相关的各种数据结构。与高级处理相比,低级处理只占中断处理程序的很小一部分。在Linux 中把中断处理程序分为两部分:低级处理部分(top half)和高级处理部分(bottom half)。当中断来了,处理器只执行top half 部分的中断处理程序,而把bo
29、ttom half 部分的中断处理程序放在一个特殊的任务队列中,以后再执行。这里top half 的执行时不允许中断的,而bottom half 的执行允许中断,这样就可减少对外界请求的反应时间。(3 3)时钟管理)时钟管理 计算机是以严格精确的时间进行数值运算和数据处理的,基本的时间单元是时钟周期时钟周期。操作系统时钟以“ticktick”为单位,时钟中断的频率决定一个tick 的长短。DOS 的tick为1/18.2s,MINIX 的tick 为1/60s,Linux 的tick 为1/100s。时钟频率的选择对实时操作系统来讲十分重要。频率低了,对请求的反应就慢;频率高了,调度就频繁,上
30、下文切换也频繁,系统开销就大。一般操作系统的时钟频率,对于实时进程来讲是不够的。(4 4)进程通信)进程通信 Linux 提供的进程通信的机制有4 4 种种:信号、管道、消息队列、信号量和共享内存。这些机制都是提高Linux 实时性能的基础。Linux 进程状态转换关系:(5)进程调度)进程调度 Linux进程是抢占式的,被抢占的进程任然处于TASK_RUNNING状态,只是暂时不被CPU执行。进程的抢占发生在进程处于用户态执行阶段,在内核态执行时是不能被抢占的。调度程序:调度程序:Schedule()函数首先扫描任务数组,通过比较每个就绪态任务(TASK_RUNNING)的运行时间来确定当前
31、哪个进程运行的时间最少。哪个值最大就表示那个进程运行时间不长,于是就选中该进程,并使用任务切换函数切换至该进程。每个任务的需要运行的时间片值Counter=counter/2+priority。如果没有任何进程可运行,系统就会选择进程0运行,进程0调度pause()把自己置为可中断睡眠状态并再次调用schedule(),其实schedule()并不在意进程0当前的状态,只要系统空闲就调度进程0.任务切换:任务切换:任务的切换主要就是通过宏定义的汇编程序switch_to实现,主要就是对当前任务的任务状态段TSS和新任务的任务状态段进行保存和恢复。原理如下图:进程停止:进程停止:当一个进程结束了
32、运行或在半途中终止了运行,那么内核就需要释放该进程所占有的系统资源。当一个用户程序调用exit()系统调用后,就会执行内核函数do_exit(),并做一系列的资源释放工作,再最后并调用schedule函数去执行其他进程。在进程终止时,它的任务数据结构任然保留着,因为其父进程还需要使用其中的信息。在子进程执行期间,父进程会使用wait()或waitpid()函数等待子进程的结束。当等待的子进程被终止并处于僵死状态时,父进程就会把子进程运行所使用的时间累加到自己的进程中,最终释放已经终止的子进程任务数据结构所占用的内存页面,并置空子进程在任务数组中占用的指针项。结束 结束语结束语谢谢大家聆听!谢谢大家聆听!51