实时操作系统期末总结 下载本文

《实时操作系统》期末报告

计科101班: 学号:201010803116

实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。我们通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。

实时操作系统是保证在一定时间限制内完成特定功能的操作系统。例如,可以为确保生产线上的机器人能获取某个物体而设计一个操作系统。在“硬”实时操作系统中,如果不能在允许时间内完成使物体可达的计算,操作系统将因错误结束。在“软”实时操作系统中,生产线仍然能继续工作,但产品的输出会因产品不能在允许时间内到达而减慢,这使机器人有短暂的不生产现象。一些实时操作系统是为特定的应用设计的,另一些是通用的。一些通用目的的操作系统称自己为实时操作系统。但某种程度上,大部分通用目的的操作系统,如微软的Windows NT或IBM的OS/390有实时系统的特征。这就是说,即使一个操作系统不是严格的实时系统,它们也能解决一部分实时应用问题。

实时操作系统分为强实时系统和软实时系统两类:

强实时系统(Hard Real-Time):在航空航天、军事、核工业等一些关键领域中,应用时间需求应能够得到完全满足,否则就造成如飞机失事等重大地安全事故,造成重大地生命财产损失和生态破坏。因此,在这类系统的设计和实现过程中,应采用各种分析、模拟及形式化验证方法对系统进行严格的检验,以保证在各种情况下应用的时间需求和功能需求都能够得到满足。

弱实时系统(Soft Real-Time):某些应用虽然提出了时间需求,但实时任务偶尔违反这种需求对系统的运行以及环境不会造成严重影响,如视频点播

(Video-On-Demand,VOD)系统、信息采集与检索系统就是典型的弱实时系统。在VOD系统中,系统只需保证绝大多数情况下视频数据能够及时传输给用户即可,偶尔的数据传输延迟对用户不会造成很大影响,也不会造成像飞机失事一样严重的后果。

实时计算中面对的主要问题是处理机调度问题,实时系统主要涉及的问题有结构问题,操作系统问题和其他问题等。 实时系统具有以下特征:

1)高精度计时系统

计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。

2)多级中断机制

一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。

3)实时调度机制

实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是,处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。

多任务RTOS的基本结构包括一个程序接口、内核程序、器件驱动程序以及可供选择的服务模块。其中,内核程序是每个RTOS的根本,其基本特征为:

(1)任务 任务(Task)是RTOS中最重要的操作对象,每个任务在RTOS的控制下由CPU分时执行。任务的调度目前主要有时间分片式(TimeSlic2ing)、轮流查询式(Round2Robin)和优先抢占式(Pre2emptive)三种,不同的RTOS可能支持其

中的一种或几种,其中优先抢占式对实时性的支持最好,也是目前流行RTOS采用的调度方式。

(2)任务切换 任务的切换有两种原因。当一个任务正常地结束操作时,它就把CPU控制权交给RTOS,RTOS则判断下面哪个任务的优先级最高,需要先执行。另一种情况是在一个任务执行时,一个优先级更高的任务发生了中断,这时RTOS就将当前任务的上下文保存起来,切换到中断任务。

(3)消息和邮箱 消息(Message)和邮箱(Mail2box)是RTOS中任务之间数据传递的载体和渠道,一个任务可以有多个邮箱。通过邮箱,各个任务之间可以异步地传递信息。

(4)信号灯 信号灯(Semaphore)相当于一种标志(Flag),通过预置,一个事件的发生可以改变信号灯。一个任务可以通过监测信号灯的变化来决定其行动,信号灯对任务的触发是由RTOS来完成的。

(5)存储区分配 RTOS对系统存储区进行统

一分配,分配的方式可以是动态的或静态的,每个任务在需要存储区时都要向RTOS内核申请,RTOS在动态分配时能够防止存储区的零碎化。

(6)中断和资源管理 RTOS提供一种通用的设计用于中断管理,效率高并且灵活,这样可以实现最小的中断延迟。RTOS内核中的资源管理实现了对系统资源的独占式访问,设计完善的RTOS具有检查可能导致系统死锁的资源调用设计。

实时系统的主要特点是必须保证出力结果的时间确定性。在实时系统(含嵌入式系统)中得到广泛的性能指标评估方法是基准程序法。通过对实时系统的性能评估,确认系统的时间确定性,可靠性性,稳定性等指标。性能度量指标的特性还包括可运行性,可运行性视图(视图0,视图1,视图2,视图3)。

代价函数就是最后要达到目的的那个函数,实时系统具有实时性,能支持实时控制系统工作的操作系统。实时系统的首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高计算机系统的使用率,起重要特点是通过任务调度来满足对于重要事件在规定的时间内作出正确的响应。对于实时系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件必须在时间随机发生时,在严格的时限内做出响应(系统的响应时间)。急事是

系统处在尖峰负荷下也如此,系统时间响应的超时就意味着致命的失败。另外,实时系统的重要特点是具有系统的可确定性,即系统能对运行的最好和最坏情况做出精确的估计。

硬实时系统和软实时系统实现的区别主要是在选择调度算法上。对于软实时系统,选择基于优先级调度算法足以满足软实时系统的需求,而且可以提高高速的响应和大的系统吞吐量;而对于硬实时系统来说,需要使用的算法应该是调度方式简单,反应速度快的实时调度算法。一个商业的实时系统具有以下两个评价指标:

(1)中断响应时间,指从中断发生到相应的ISR(中断服务程序)运行的时间间隔。中断相应时间与应用程序相匹配,而且是可以预测的。如果同一时间有多个中断发生,则中断响应时间的数量级要增加。

(2)最坏情况执行时间,表示每个系统调用的时间,它是可以预测的,而且系统的每个任务都有独立的数据。

流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。

流水线功能繁杂,种类也非常多;如果按照处理级别来分类,流水线可以有操作部件级、指令级和处理机级;如果按照流水线可以完成的动作的数量来分类,又可以分为单功能和

流水线技术 多功能流水线;如果按照流水线内部的功能部件的连接方式来分类,则有线性流水线和非线性流水线;按照可处理对象来分类,还可以有标量流水线和向量流水线。流水线的分类:

1、按处理级别分:

功能部件级:在实现较为复杂的运算时采用 指令级:将一条指令执行过程分为多个阶段 处理器间级:每个处理器完成其专门的任务。 2、按完成的功能分类:

单功能流水线:只完成一种如乘法或浮点运算等,多用于数字信号处理器(DSP),各处理器可并行完成各自的功能,加快整机处理速度。

多功能流水线:在不同情况下可完成不同功能

流水线技术 3、按连接的方式分类:

静态流水线:同一时间内,多功能结构只能按一种功能的连接方式工作。 动态流水线:同一时间内,可以有多种功能的连接方式同时工作。 4、按处理的数据类型分类: 标量流水线:一般数据

向量流水线:矢量数据。X+Y=Z每一个代表一维数据。 5、流水线结构上分类:

线性流水线:指各功能模块顺序串行连接,无反馈回路,如前面介绍的。 非线性流水线:带有反馈回路的流水线。

高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,也有快取记忆体的名称。

在计算机存储系统的层次结构中,介于中央处理器和主存储器之间的高速小

容量存储器。它和主存储器一起构成一级的存储器。高速缓冲存储器和主存储器之间信息的调度和传送是由硬件自动进行的。某些机器甚至有二级三级缓存,每级缓存比前一级缓存速度慢且容量大。而这时,一开始的高速小容量存储器就被人称为一级缓存。高速缓冲存储器最重要的技术指标是它的命中率。

高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。主要由三大部分组成:Cache存储体:存放由主存调入的指令与数据块。地址转换部件:建立目录表以实现主存地址到缓存地址的转换。替换部件:在缓存已满时按一定策略进行数据块替换,并修改地址转换部件。

在计算机技术发展过程中,主存储器存取速度一直比中央处理器操作速度慢得多,使中央处理器的高速处理能力不能充分发挥,整个计算机系统的工作效率受到影响。有很多方法可用来缓和中央处理器和主存储器之间速度不匹配的矛盾,如采用多个通用寄存器、多存储体交叉存取等,在存储层次上采用高速缓冲存储器也是常用的方法之一。很多大、中型计算机以及新近的一些小型机、微型机也都采用高速缓冲存储器。

高速缓冲存储器的容量一般只有主存储器的几百分之一,但它的存取速度能与中央处理器相匹配。根据程序局部性原理,正在使用的主存储器某一单元邻近的那些单元将被用到的可能性很大。因而,当中央处理器存取主存储器某一单元时,计算机硬件就自动地将包括该单元在内的那一组单元内容调入高速缓冲存储器,中央处理器即将存取的主存储器单元很可能就在刚刚调入到高速缓冲存储器的那一组单元内。于是,中央处理器就可以直接对高速缓冲存储器进行存取。在整个处理过程中,如果中央处理器绝大多数存取主存储器的操作能为存取高速缓冲存储器所代替,计算机系统处理速度就能显著提高。

为了精确管理“时间”资源,已达到实时性和与预测性要求,并能够满足是实时系统的新要求,需用实时调度理论对任务进行调度和可调度性分析。任务调度技术包括调度策略和可调度性分析方法,两者是紧密结合的。任务调度技术研究的范围包括任务使用系统资源(包括处理机、内存、I/O、网络等资源)的策略和机制,以及提供判断系统性能是否可预测的方法和手段。例如,什么时候调度任务运行、在哪运行(当系统为多处理机系统或分布式系统时)、运行多长时

间等等;以及判断分析用一定参数描述的实时任务能否被系统正确调度。

给定一组实时任务和系统资源,确定每个任务何时何地执行的整个过程就是调度。在非实时系统中,调度的主要目的是缩短系统平均响应时间,提高系统资源利用率,或优化某一项指标;而实时系统中调度的目的则是要尽可能地保证每个任务满足他们的时间约束,及时对外部请求做出响应。实时调度技术通常有多种划分方法,常用以下两种:

抢占式调度通常是优先级驱动的调度。每个任务都有优先级,任何时候具有最高优先级且已启动的任务先执行。一个正在执行的任务放弃处理器的条件为:自愿放弃处理器(等待资源或执行完毕);有高优先级任务启动,该高优先级任务将抢占其执行。除了共享资源的临界段之外,高优先级任务一旦准备就绪,可在任何时候抢占低优先级任务的执行。抢占式调度的优点是实时性好、反应快,调度算法相对简单,可优先保证高优先级任务的时间约束,其缺点是上下文切换多。而非抢占式调度是指不允许任务在执行期间被中断,任务一旦占用处理器就必须执行完毕或自愿放弃。其优点是上下文切换少;缺点是在一般情况下,处理器有效资源利用率低,可调度性不好。

静态表驱动策略(Static Table-Driven Scheduling)是一种离线调度策略,指在系统运行前根据各任务的时间约束及关联关系,采用某种搜索策略生成一张运行时刻表。这张运行时刻表与列车运行时刻表类似,指明了各任务的起始运行时刻及运行时间。运行时刻表一旦生成就不再发生变化了。在系统运行时,调度器只需根据这张时刻表启动相应的任务即可。由于所有调度策略在离线情况下指定,因此调度器的功能被弱化,只具有分派器(Dispatcher)的功能。

优先级驱动策略指按照任务优先级的高低确定任务的高低确定任务的执行顺序。优先级驱动策略又分为静态优先级调度策略。静态优先级调度是指任务的优先级分配好之后,在任务的运行过程中,优先级不会发生改变。静态优先级调度又称为固态优先级调度。动态优先级调度是指任务的优先级可以随着时间或系统状态的变化而发生变化。

单调速率调度算法RMS(Rate Monotonic Scheduling)为每个周期进程指定一个固定不变的优先级,周期最短的进程优先级最高。周期越短,进程的到达频率越高,优先级也越高,这正是此策略被称为速率单调算法的原因。RMS算法也

可用于多CPU环境,用于分配任务优先级。这种方法基于哪个任务执行的次数最频繁,执行最频繁的任务优先级最高。

中断装置和中断处理程序统称为中断系统。中断系统是计算机的重要组成部分。实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。中断系统的应用大大提高了计算机效率。

将中断转换成线程:当设备执行了需要CPU采取行动的异步事件并启动了中断功能,该设备发送一个用于抢占CPU的中断信号,无论CPU在做什么,它都会替发送中断信号的设备执行中断服务程序ISR,ISR执行时间的优先权高于任何用户任务,并且会在CPU上停用中断功能,或者是屏蔽当前的中断线,写的好的设备驱动程序会将尽量少的工作放到SIR,将其他工作放到一个内核线程、tasklet或者softirq中,Softirq是一个服务程序,它的执行时机为:ISR返回后以及继续执行被中断的进程之前。Softirq可以同时运行在两个不同的CPU上,因此必须使用上锁机制。Tasklet的执行时机类似于softirq,tasklet只能运行在一个CPU上,tasklet是由softirq实现的。内核线程是一种只能在内核之内运行的线程,其行为就像Linux中的其他线程。内核线层的开销比softirq和tasklet稍微稍微多一点,但它更灵活。运行在实时环境时,这种灵活性特别重要。

将硬件中断请求转换成线程:

高 优 先 级 任 务 高 优 先 级 任 务 中断 处理 程序 唤醒(线程) 高 优 先 级 任 务 高 优 先 级 任 务

CPU亲和性是为了避免高速缓存区清空的操作。多处理器系统上的操作系统调

度程序会试图在特定的CPU之上运行每个线程。一个IRQ县城的CPU亲和性由中断本身的CPU亲和性决定。

Softirq也会带来优先权逆转的问题,RT patch会分开每个softirq处理,并以独立的进程来运行它。每个CPU建立一个sodtirq线程并绑定到被指派的CPU(为了保证与主线内核的语义一致性)

Softirq-timer线程就是控制计时事件的线程,用于处理系统中的大部分超时事件,及时执行并不是最重要的。Softirq-hrtimer更重要,处理的POSIX定时器的实现品。一个预计会被POSIX定时计数器中断的高优先权线程,其优先级必须低于softirq-hrtimer。

高分辨率定时计数器的提出,在待定时间触发一个时间的能力对于实时系统至关重要。2.6版Linux之前,最小时间单位:jiffy。需要一个“定时计数器中断”来更新jiffy变量。定时计数器的设计是依据timer wheel(P404),action timer,timeout timer。

hrtimer不使用散列,使用红黑树(一种二进制树),增加,删除节点O(log n),hrtimer的时间单位是纳秒,计数器的实际分辨率取决于底层硬件,不再取决于jiffy值。使用dynamic ticks,定时计数器中断只须在有需要的时候起作用。

Linux社群对于将Linux内核转换成一个真正的实时操作系统尽了很大的努力,有人试图实现完整的实时内核,但在Linux主线以外维护一个内核,已被证明是非常困难的事。为Linux打补丁,并不试图将Linux转换到自己的环境,而是像Linux内核黑客那样,伟系统提供实现功能,以改善用户体验。