940 likes | 1.16k Views
巨龙信息科学技术研究院 讲义. RTOS 及相关技术 岳俭 一九九九年八月. RTOS 及相关知识. 一、嵌入式实时系统基础 二、实时多任务软件开发方法 三、 RTOS 特点 四、 RTOS 举例 五、高速路由器开发工具选择. 1.1 实时系统. 实时系统:对外来事件在限定时间内能做出反应的系统。 分类:实时控制系统、实时信息处理系统。. 1.1 实时系统. 衡量系统的实时性三个指标 响应时间 (Response Time): 是计算机识别一个外部事件到作出响应的时间 ,
E N D
巨龙信息科学技术研究院讲义 RTOS及相关技术 岳俭 一九九九年八月
RTOS及相关知识 一、嵌入式实时系统基础 二、实时多任务软件开发方法 三、 RTOS特点 四、 RTOS举例 五、高速路由器开发工具选择
1.1实时系统 • 实时系统:对外来事件在限定时间内能做出反应的系统。 • 分类:实时控制系统、实时信息处理系统。
1.1实时系统 衡量系统的实时性三个指标 • 响应时间(Response Time): 是计算机识别一个外部事件到作出响应的时间, • 生存时间(Survival Time): 是数据有效等待时间, 在这段时间里数据是有效的。 • 吞吐量(Throughput): 是在一给定时间内, 系统可以处理的事件总数。
1.1实时系统 实现实时的应用系统的途径 • 使用硬件的功能 • 微处理器的中断机制 • 简单的单线程循环程序 • 基于实时操作系统的复杂多线程程序。
1.2嵌入式应用 • 嵌入式应用:是一种计算机部件内装于专用设备/系统的应用。 典型应用 • 过程控制(process control) • 通讯设备(Telecommunication) • 智能仪器(Intelligent Instrument) • 消费产品(Consumer Products) • 机器人(Robots) • 计算机外设设备(Computer Peripherals) • 军事电子设备和现代武器
1.2嵌入式应用 嵌入式实时系统软件的基本特征 • 具有高速处理、配置专一、结构紧凑和坚固可靠等特点的实时系统,相应的软件系统应是一种别有特色、要求更高的实时软件。
1.3嵌入式实时系统特殊性 • 实时软件的主要要求 1、实时性 2、有处理异步并发事件的能力 3、快速启动、出错处理和自动复位功能 4、嵌入式实时软件是应用程序和操作系统两种软件的一体化程序。 5、嵌入式实时软件的开发需要独立的开发平台
1.4嵌入式实时系统分类 • 按确定性来分嵌入式实时系统 硬实时 系统对系统响应时间有严格的要求,如果系统响应时间不能满足,就要引起系统崩溃或致命的错误。 软实时 系统对系统响应时间有要求,但是如果系统响应时间不能满足,不会导致系统出现致命的错误或崩溃。
1.4嵌入式实时系统分类 • 按软件结构来分嵌入式实时系统 单线程程序(Single-threaded program) (1)循环轮询系统(Polling Loop) (2)有限状态机(Finit State Machine) 事件驱动系统:(Event-Driven system) (1)前后台系统(Foreground/Background)又叫中断驱动系统 (2)实时多任务系统(Multitasking或Multi-thread Program Model) (3)多处理机系统
1.4嵌入式实时系统分类 循环轮询系统(Polling Loop) • 优点: • 对于简单的系统而言,便于编程和理解 • 没有中断的机制,程序运行良好,不会出现随机的问题 • 缺点: • 有限的应用领域(由于不可确定性) • 对于大量的I/O服务的应用,不容易实现 • 大的程序不便于调试
1.4嵌入式实时系统分类 有限状态机(Finit State Machine) • 优点: • 对于小的系统而言,便于编程和理解 • 可以快速的执行 • 只是通过改变输出功能来改变机器的响应 • 缺点: • 有限的应用领域 • 不能保证确定性 • 对于大的应用系统,难于调试
1.4嵌入式实时系统分类 前后台系统(Foreground/Background) 系统的性能: • 中断延迟时间(Interrupt latency time) • 响应时间(response time) • 恢复时间(recovery time)
1.4嵌入式实时系统分类 实时多任务系统(Multitasking Model) • 优点: • 将复杂的系统分解为相对独立的多个线程, 达到“分而制之”的目的,从而降低系统的复杂性。 • 保证系统的实时性 • 系统的模块化好,提高系统的可维护性。 • 缺点: • 需要采用一些新的软件软件设计方法 • 需要增加功能:线程间的协调,同步和通信功能 • 需要对每一个共享资源互斥 • 导致线程间的竞争 • 需要使用RTOS,RTOS要增加系统的开销
1.4嵌入式实时系统分类 多处理机系统 分类: • 紧耦合系统(tightly-coupled system) 多个处理器通过共享内存空间来交换信息(如:SMP), • 松耦合系统(loosely-coupled system) 多个处理器通过通讯线路来连接和交换信息。
1.5嵌入式RTOS及其发展 • 监控程序(Monitor) • 操作系统(Operating System)。 1、多道批处理操作系统 2、分时操作系统 3、实时操作系统。
1.5嵌入式RTOS及其发展 • 多道批量处理系统一般用于计算中心较大的计算机系统中。由于它的硬件设备比较全,价格较高,所以此类系统十分注意CPU及其它设备的充分利用,追求高的吞吐量,不具备实时性。 • 分时系统的主要目的是让多个计算机用户能共享系统的资源,能及时地响应和服务于联机用户,只具有很弱的实时功能,但与真正的实时操作系统仍然有明显的区别。
1.5嵌入式RTOS及其发展 • 实时操作系统IEEE实时UNIX分委会要求 1.异步的事件响应 2.切换时间和中断延迟时间确定 3.优先级中断和调度 4.抢占式调度 5.内存锁定 6.连续文件 7.同步
1.5嵌入式RTOS及其发展 • 嵌入式实时操作系统得到飞速的发展,从支持8位微处理器到16位、32位甚至64位,从支持单一品种的微处理器芯片到支持多品种微处理器芯片, 从只有实时内核到除了内核外还提供其他功能模块如:高速文件系统,TCP/IP网络系统,GUI系统等。
1.5嵌入式RTOS及其发展 • 世界各国有四十多家公司,已成功的推出了200余种可供嵌入式应用的实时操作系统。 国内常用的操作系统 • Microtec Research公司(MRI)的VRTX • Integrated System公司(ISI)的pSOS • Wind River 公司的VxWorks。
RTOS及相关知识 一、嵌入式实时系统基础 二、实时多任务软件开发方法 三、 RTOS特点 四、 RTOS举例 五、高速路由器开发工具选择
2.1开发步骤 1.需求分析(Requirement specification) 2.数据流分析(Data flow analysis) 3.分解任务(Decompostion into tasks) 4. 定义任务间接口(Definiton of task interfaces) 5.任务级的设计 6.模块构筑 7.任务与系统集成 8.系统测试
2.2分解任务原则 • I/O 依赖性 (Dependency on Input/Output Device) • 时间关键性的功能 (Time-critical functions-Hard Deadline) • 计算量大的功能(Heavy Computation function) • 功能内聚(Functional relations) • 时间内聚(Temporal relations) • 周期执行的功能(Cyclic executing function)
2.3分解任务评估 (1). 错误的任务划分 • 任务使用中挂起/恢复太频繁 是由于任务划分过细,任务的当成功能使用。应该将任务变成子程序使用。 • 当事件发生时调用子程序 任务划分得太粗,应该将子程序划分为任务 • 得到消息后,又立即检查另外的信息 不要使用轮循的方式,应该直接使用事件驱动方式
2.3分解任务评估 (2)优先级倒置之一 当高优先级的任务向低优先级的任务发送消息时,如果使用信箱机制,就可能出现高优先级的任务要等待低优先级的任务接收消息以后,才能发送消息。应该使用队列机制就避免这个问题。
2.3分解任务评估 高优先 级任务 低优先 级任务 高优先 级任务 低优先 级任务
2.3分解任务评估 (3)优先级倒置之二 当低优先级的任务向高优先级的任务发送消息时,高优先级的任务不能运行,直到低优先级的任务发送消息后才能运行。 没有必要分为两个任务,应该使高优先级的任务直接调用子程序即可。
2.3分解任务评估 高优先 级任务 低优先 级任务 高优先 级任务 调用 子程序 函数
2.3分解任务评估 死锁和锁住 死锁:两个任务同时相互等待对方的信号,导致 它们永远不能运行。 为了避免死锁,将共享资源统一排序,所 有的任务按序来访问多个资源。 锁住:任务没有机会运行,可能是因为: 它等待的事件没有发生过 它具有太低的优先级
RTOS及相关知识 一、嵌入式实时系统基础 二、实时多任务软件开发方法 三、 RTOS特点 四、 RTOS举例 五、高速路由器开发工具选择
3.1概述 • 60年代以来,对于UNIX操作系统的研究和发展达到了几乎完美的程度。而商业RTOS正是基于UNIX思想的实时多任务操作系统,只是为了满足嵌入系统的特殊需要,系统对于外部事件的响应速度保证不大于某个特定的时间间隔。
3.1概述 • 商业RTOS利用了计算机科学数十年发展的精美成果,包含了软件理论最精华的部分。这一点从内核技术上看得最为清楚,各个厂商的内核大同小异,通过考察各厂商普遍采用的微内核技术可以很好地看出这一点。
3.2操作系统发展 • 50年代中期到后期开发的操作系统几乎毫无结构可言,在这些整体操作系统(monolithic operation system)中,任何过程可以调用其它任何过程,由于低估了过程相互之间的依赖性和互操作性,产生了一系列问题。
3.2操作系统发展 • 为了解决这些问题,引入了模块化程序设计技术,特别是开发了分层操作系统(layered operation system)(如图5.2.1),这里功能按照层次组织,相互之间作用只能通过邻接层。使用分层方法,大多数层或者全部层在内核模式下执行。
3.2操作系统发展 • 八十年代后期,国外提出了微内核(microkernel)(如图5.2.2)的思想, 即将传统操作系统中的许多共性的东西抽象出来,构成操作系统的公共基础,即微内核,真正具体的操作系统功能则由构造在微内核之外的服务器实现。这是一种机制与策略分离的开放式设计思路。在理论上,这种方法提供了高度的灵活性、模块性和可移植性。
3.3微内核特点 • 微内核(microkernel)的思想是仅仅抽象必须在内核模式中执行的基本的核心操作系统功能,非基本的服务和应用构筑在微内核之上,并且在用户模式中执行。尽管微内核里面和外面的分界随着设计不同而不同,但是共同的特征是,许多传统上是操作系统一部分的服务现在出现在内核模式外部,这些包括设备驱动程序、文件系统、虚拟内存管理程序、窗口系统和安全系统。
3.3微内核特点 • 微内核结构用水平结构代替了传统的垂直的分层结构,操作系统组件放在微内核外部,实现成服务器进程,它们的相互作用变成了对等的,典型地通过微内核传递消息,微内核功能成了消息交换:它验证消息,在组件之间传递它们,并且允许访问硬件。
3.3微内核特点 微内核组织的优点: • 接口一致(Uniform interface): 所有进程请求使用统一的接口,进程不需要区分内核模式和用户模式服务,由于这些服务全部通过消息传递提供。
3.3微内核特点 • 扩展性(Extensibility): 由于新型硬件设备和新型软件技术不断发展,任何操作系统不可避免地需要修改,微内核结构允许加入新的服务,支持在同一功能区内提供多重服务。使用微内核结构,加入一个新特点仅仅需要修改或者加入被选择的服务,新的或者修改的服务影响限制在系统的一个子集,进一步地,修改不需要建立一个新的内核。
3.3微内核特点 • 移植性(Portability): 在微内核结构中,所有与特定处理机的代码仅仅存在微内核中,因此,需要将这个系统移植到新的处理机需要作的变化可以尽可能地少。
3.3微内核特点 • 可靠性(Reliability): 软件规模越大,确保可靠性越难。尽管模块化设计帮助我们增强了可靠性,但是微内核结构带来了更多的收益。一个小型微内核可以严格地进行测试,它使用少量的应用程序接口有助于内核模式之外的操作系统服务代码提高质量。系统只需要掌握一个有限数量的(API),程序员之间的相互交互也有限,因而对于系统其它组件的影响最小。
3.3微内核特点 • 分布系统支持(Distributed system support): 微内核适合于由分布操作系统控制的群集系统。当一个消息从客户发到服务器进程,该消息必须包含请求服务的标识符。当一个分布系统(如群集系统)被配置为所有的进程和服务有唯一的标识符,那么似乎在内核模式下存在单一的系统映象,一个进程能够在不知道目标服务驻留在哪台机器情况下发送消息。
3.3微内核特点 • 面向对象操作系统(Object-oriented operating system): 微内核结构非常适合面向对象操作系统的要求,一个面向对象的方法有助于一个微内核的设计和操作系统的模块化扩充。将微内核结构和面向对象操作系统原理结合起来的例子是组件的使用,组件是清楚定义了接口的对象,它们能够互连起来以预制建筑块的方式形成软件,使用组件之间的接口实现组件之间的全部相互作用。
3.4 RTOS特点 • 确定性(Determinism): 实时软件对于外部事件的响应时间必须是实时的、确定的和可以重复实现的,不管当时系统内部状态如何,都是可预测的。一个测量操作系统确定性能力的指标是从一个高优先级设备中断到达到开始服务的最大延迟。在非实时操作系统中,这个延迟可能是几十到数百毫秒;而在RTOS中有一个明确的上界,从几个微秒到一毫秒不等。
3.4 RTOS特点 • 响应性(Responsiveness): 这是与确定性相关但是不同的特征。确定性考虑在应答一个中断前,操作系统延迟时间;而响应性是在应答中断后,操作系统服务中断时间。响应性包含以下几个方面: 1、初始化中断处理和开始执行中断服务程序(ISR)需要的时间。如果是要求一个进程切换的ISR执行,那么比在当前进程上下文中的ISR执行延迟更长时间。 2、执行ISR需要的时间。这通常依赖于硬件平台。 3、中断嵌套的作用。如果一个ISR可能被另一个中断的到达而中断,那么它的服务将被延迟。
3.4 RTOS特点 确定性和响应性共同构成了对于外部事件的响应时间。响应时间对于RTOS是至关重要的,由于系统必须满足系统外部个人、设备或者数据流的定时要求。
3.4 RTOS特点 • 用户控制(User control): 这一点在RTOS中比在一般操作系统中更加宽广。在一个典型的非实时操作系统中,用户或者不能控制操作系统的调度功能,或者只能提供粗略的指导,如将用户编组进入多于一个优先级的类别。但是,在RTOS中,允许用户精细控制任务优先级是基本功能。用户应该能够区分硬实时任务和软实时任务,并在每个类别中指定相对的优先级。一个RTOS也能够指定这类特征,如分页或者进程切换,哪些进程必须总是驻留在主存中,使用哪个磁盘传输算法,在各种优先级类别中的进程有哪些权利,等等。
3.4 RTOS特点 • 可靠性(Reliability): 通常它在实时系统中比在非实时系统中更重要。在非实时系统中一个瞬时错误可以简单地通过重新引导系统来解决,在多处理机非实时系统中一个处理机的失败可能在修复或代替该处理机之前造成服务级别的降低。但是,实时系统需要实时响应和控制事件,性能的丧失或降低可能造成灾难性的后果。
3.4 RTOS特点 • 软失败操作(Fail-soft operation): 与实时系统和非实时系统其它方面的差别一样,这里存在一个程度上的差别。软失败操作是指这样一个特征,系统能够以这样一种方式失败,它能够尽可能地保留能力和数据。例如,一个典型的传统UNIX系统,当它检测到内核数据的误用,在系统控制台上发出失败消息,将内存内容倒到磁盘用于以后的失败分析,同时终止系统的执行。与此相反,RTOS将试图或者纠正这个问题或者最小化它的影响,同时继续运行。典型情况下,系统通告用户或者用户进程,它将试图进行纠正动作,然后继续操作,或许此时降低了服务级别。