嵌入式系统软件杨剑锋1. 嵌入式操作系统嵌入式操作系统是个集合,而且是个无限集合–监控程序Æ常规操作系统(红外线Æ紫外线)–一维和多维嵌入式操作系统常常有实时要求–早期:嵌入式操作系统= 实时操作系统–近期:»1)手持计算机和掌上计算机的出现;»2)CPU速度的提高;»3)常规操作系统增加实时进程调度的支持,如POSIX.4Æ嵌入式操作系统<>实时操作系统 许多嵌入式操作系统的内核是微内核结构 许多嵌入式操作系统都不带磁盘–根本不支持文件系统–结构上为了设备驱动而支持文件系统,但不支持文件系统的文件存储功能许多嵌入式操作系统不采用存储管理技术,即不支持虚拟存储技术许多嵌入式操作系统不划分“系统空间”和“用户空间”–操作系统的“内核”与外围应用程序之间不再有物理的边界;–系统中所谓“进程”实际上全都是内核线程»静态连接、系统调用、进程调度/切换–对任何一个应用程序做细微的修改,都得重新生成整个系统,并且“下载”之;–系统调用的界面太庞大;–共享变量的访问,需要谨慎对待;–把通用操作系统上的应用移植过来需考虑“可重入”的问题;不分系统空间和用户空间<>必须静态连接–如DOS、CP/M的INT21不分系统空间和用户空间<>不能用页面映射技术–但只用于不同进程之间,而非不同空间之间 即使采用了存储管理,基本上都不采用页面交换技术重启动技术(watch dog )2. RTOS是否实时–一方面是多大程度上充分发挥硬件潜力,即综合速度快慢的问题;–另一方面同时也是反映的速度在多大的程度上得到保证的问题中断延迟(Interrupt Latency)–中断不可嵌套–LINUX的Bottom Half–中断可嵌套:优先级中断»大多微处理器不支持;»LINUX不支持;»UNIX支持–与指令集有关–DMA操作有关–保证系统调用的原子性有关 调度延迟(Scheduling Latency)–中断处理程序进程处理–一般调度算法(Round Robin)不能及时选中–基于优先级调度算法,一般能及时选中»如果目标进程优先级低呢?–可剥夺调度和不可剥夺调度»LINUX是属于什么调度?⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯→事件或软中断Linux 既不是完全的可剥夺,也不是完全的不可剥夺上下文切换延迟(Context Switch Latency)–大小取决于CPU和操作系统–采用MMU > 不采用MMU 只要发生调度,就能选中目标进程吗?–根据时间片的耗用调整优先级–拉开距离,分等级对实时进程而言,“应该没有问题”不够。
是否可以不用中断、也不用调度,回到最简单的“监控程序”?实时性简介对于什么是实时系统,POSIX 1003.b作了这样的定义:指系统能够在限定的响应时间内提供所需水平的服务实时系统根据其对于实时性要求的不同,可以分为软实时和硬实时两种类型一个计算机系统为了提供对于实时性的支持,它的操作系统必须对于CPU和其他资源进行有效的调度和管理,即实时调度实时调度分类各种实时操作系统的实时调度算法从调度策略上可以分为如下三种类别:基于优先级的调度算法(Priority-driven scheduling-PD)、基于CPU使用比例的共享式的调度算法(Share-driven scheduling-SD)、以及基于时间的进程调度算法(Time-driven scheduling-TD)从调度方式上来讲可以分为:可抢占、不可抢占;从时间片来分:固定时间片、可变时间片实时性改造对操作系统实时性的扩展可以从两方面进行:向外扩展和向上扩展向外扩展是从范围上扩展,让实时系统支持的范围更广,支持的设备更多向上扩展是扩充操作系统内核,从功能上扩充系统的实时处理实时多任务OS-RTOS 单片机–无os–主程序RTOS–资源包装–API–可移植(只要1-4%)实时系统在实时计算中,系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间响应时间限定可预知实时操作系统与I/O实时操作系统还需要有效的中断处理能力来处理异步事件和高效的I/O能力来处理有严格时间限制的数据收发应用。
就是:●系统应该有在事先定义的时间范围内识别和处理离散的事件的能力。
●系统能够处理和存储控制系统所需要的大量的数据。
周期性的系统 非周期性系统 硬实时系统–灾难后果软实时系统–性能下降RTOS与分时系统事件响应时间限定事件随机到达系统可确定性Rtos的历史 1)早早期的监控系统–系统init–时钟–简单的任务调度2)专用实时OS–依赖于特定硬件–移植性不好3)通用RTOS嵌入式软件开发平台RTOS标准化可移植设备独立RTOS基本struct实时多任务core–任务管理:多任务和基于优先级的任务调度–定时器:系统的实时时钟服务,以及各个定时任务的调入等–Mem:管理系统的内存资源,如DRAM,ROM,FLASHRAM等–资源管理:管理系统的各种资源如系统的各种设备,端口,中断等;–事件和消息管理:管理各种系统级的事件,如实时中断响应,各种异常等;任务间同步和通信(信号量和邮箱等)以及各种系统消息和应用程序之间的通讯 RTOS的系统调用90%以上的设备独立RTOS的任务---分时系统Process实时带来的问题1-时间在实时系统中最基本的是系统应该能够提供对时间正确性进行指定的方法系统提供一种指定时间尺度的方法通用系统的延时不能满足问题2-实时系统的结构 实时系统的体系结构必须满足:●高运算速度●高速的中断处理●高的I/O吞吐率●合理的处理器和I/O设备的拓扑连接●高速可靠的和有时间约束的通信●体系结构支持的出错处理,●体系结构支持的调度●体系结构支持的操作系统,●体系结构支持的实时语言特性。
问题3-容错与分布 稳定性容错分布式应用问题4-实时通讯●逻辑正确●要有确定的延迟时间问题5-其他问题●时间特性的指定和确正,这点与实际系统设计相同。
●实时的调度理论。
由于实时系统应用的特殊性以往通用系统中以大吞吐量为目标的调度算法必须改进以适应实时应用的需要。
主要要求是满足时间的正确性,然后提供高度动态的,满足在线需求的,适应性的实时调度。
●实时操作系统的设计和实现。
在设计上首要目标是提供保证实时性的方法,包括一系列的经典问题的针对实时系统的解决方案。
实现上要求操作系统的低开销,而且必须保证内核以及其他关键的可重入性。
●实时的编程语言和设计方法。
在编程语言级完成或提供实时应用所需要的方法。
比如象Ada语言,FORTH语言。
●分布式的实时数据库。
●系统的容错。
●实时时钟的同步。
●实时系统中的人工智能与通用计算机区别 通用:–方便用户管理计算机资源–追求系统资源最大利用率RTOS–调度的实时性–响应时间可确定性–高可靠性性能衡量标准对传统的通用系统:–大的系统吞吐量–合理的响应速度–对每个系统用户相对公平的进行计算资源的分配 实时系统–实时的数据吞吐取代了以吞吐量为目标的标准。
–对硬实时应用的优先响应取代了对每个用户的恰当的反应速度。
–系统的计算资源和其他外设资源必须优先满足实时应用的要求RTOS的衡量指标●系统响应时间(System response time ):系统发出处理要求到系统给出应答信号的时间;●任务切换时间(Context-switching time):任务之间切换而使用的时间;●中断延迟(Interrupt latency time ) :是计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间;RTOS的任务调度机制决定了多任务能力与实时性通用模式:–调度策略:优先级调度、时间片轮转调度–调度方式:抢占式、不可抢占式、选择可抢占式–时间片:定长时间片与变长时间片RTOS 一般使用抢占式任务调度时间限定的任务调度算法速度单调算法–工作由定期任务组织–任务时间定长度–使用频率高的优先级高时限驱动算法–工作定期与不定期–执行时长随着时间变化–下一个要安排执行的任务是时限最早的任务 MMU实模式保护模式Mem管理最小mem开销Price256K RAM…4M…32M RAM中断禁止时间 用户态->中断态中断延时时间确认中断-----Æ中断服务第一语句执行 三部分Microprocessor 的硬件延时RTOS由中断将权利交给相关代码的时间 中断禁止时间可中断式内核中断发生时;即使运行核心服务也保证一定时间内响应缩短中断延时时间任务切换时间控制权取回交给另外一任务两个主要评价实时性的指标:最大中断禁止时间任务切换时间任务分时系统以进程(线程)为基本单位 RTOS以任务为基本单位组成:–任务控制块–程序区–数据区–堆栈区»系统堆栈»用户堆栈任务的状态运行就绪挂起休眠任务的同步与通讯消息事件信号量信箱共享内存消息 系统公用数据交换区–私有消息缓冲区–公用消息缓冲池消息机制–创建–删除–接受消息–发送消息–广播消息–紧急消息消息可以是定长与不定长事件应用于同步,通讯数据量不大 接受事件发送事件RTOS一般有15-32个事件信号量创建删除P操作V操作RTOS需要解决优先级倒置问题优先级倒置问题条件–高优先级任务H–低优先级任务L–中优先级任务M–共享内存Y,写操作–信号量S,互斥步骤1)L取得S(P操作),但是未做V操作 2)H中断,H运行态3)H写Y,但是Y的S 被占用 4)L重新取得控制权5)M出现,取得控制权结果:M比H优先如果不断的M出现,H 不能执行解决方法1、采用非抢占式任务管理2、优先级继承–L抢回控制权后,暂时继承H的优先级(priority inheritance)–设S为正占用着某项共享资源的进程P以及所有正在等待占用这个资源的进程的集合;–找出这个集合中的优先级最高者,其优先级为P’–把进程P的优先级设置成P ’ 优先级封顶(priority ceiling)–设S为所有可能竞争使用某项共享资源的进程的集合。
事先为这个集合规定一个优先级上限p’,使得这个集合中所有进程的优先级都小于p’。
注意p’并不一定是整个系统中的最好优先级。
–在创建保护该项资源的信号量或互斥量时,将p’作为一个参数。
–每当有进程通过这个信号量或互斥量取得共享资源时,就将此进程的优先级暂时提高到p’,一直到释放该项资源的时候才恢复其原有的优先级。
可以看出,操作系统的“实时”与否,并不仅仅取决于速度问题,甚至更多的是反应速度和处理时间的可预测性问题。
实时操作系统和通用操作系统区别对于通用操作系统,总体的效率是更高的目标,必要时宁可牺牲个别进程的反应速度来达到总体效率的提高;而实时操作系统却反过来,必要时宁可牺牲总体效率也要保证个别进程的反应速度。