1.88k likes | 2.04k Views
嵌入式系统软件. 1. 嵌入式操作系统. 嵌入式操作系统是个集合 , 而且是个无限集合 监控程序 常规操作系统 ( 红外线 紫外线 ) 一维和多维. 嵌入式操作系统常常有实时要求 早期 : 嵌入式操作系统 = 实时操作系统 近期 : 1) 手持计算机和掌上计算机的出现 ; 2)CPU 速度的提高 ; 3) 常规操作系统增加实时进程调度的支持 , 如 POSIX.4 嵌入式操作系统 <> 实时操作系统. 许多嵌入式操作系统的内核是微内核结构 许多嵌入式操作系统都不带磁盘 根本不支持文件系统
E N D
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一般使用抢占式任务调度
时间限定的任务调度算法 • 速度单调算法 • 工作由定期任务组织 • 任务时间定长度 • 使用频率高的优先级高 • 时限驱动算法 • 工作定期与不定期 • 执行时长随着时间变化 • 下一个要安排执行的任务是时限最早的任务
Mem管理 • MMU • 实模式 • 保护模式
最小mem开销 • Price • 256K 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不能执行