实时操作系统
实时操作系统(RTOS)是指具有实时性能的操作系统。不可预测的外部事件或数据产生后,能在可预测的时间内被接受,并以足够快的速度进行处理,处理结果能在规定时间内控制生产过程或快速响应处理系统,并能调度一切可用资源完成实时任务。与一般的操作系统相比,实时操作系统更加“实时”,即当一个任务需要执行时,实时操作系统会在很短的时间内执行,不会有很长的延迟,保证了每个任务都会及时执行。
实时操作系统的研究可以追溯到20世纪60年代,经历了早期实时操作系统、专用实时操作系统和通用实时操作系统三个阶段。21世纪,实时操作系统已经广泛应用于军事、冶炼、发电、化工、机械等自动控制领域。
实时操作系统模型可以分为单片模型、层次模型和微内核模型。它具有实时性、交互性、安全性、可靠性和复用性的特点,可以实现任务管理、定时器管理、内存管理、资源管理、事件管理、消息管理和队列管理等功能。
相关概念 编辑本段
任务:实时操作系统中任务的概念类似于分时操作系统中进程的概念,是指占用系统资源的可独立执行的程序。在调度时,任务可以分为各种“状态”,这些状态可以分为四种类型:
任务优先级:优先级是指操作系统分配给任务的优先级,决定了任务在使用资源时的优先级。在实时系统中,任务优先级反映了任务的重要性和紧迫性。任务的初始优先级是在创建任务时定义的,任务的优先级可以更改。
任务调度:调度是指当系统只有一个CPU时,在单个CPU的情况下,多个线程按照一定的顺序执行。在操作系统中,每个任务每时每刻都处于某种“状态”,任务调度负责管理和调度系统中运行的任务。实时调度的主要关注点是确保任务满足截止日期。此外,它还应该为周期性、非周期性和偶然性任务提供调度和管理机制。
暂停:中断由外部设备产生,为中断提供服务的例程称为中断服务例程(ISR)。在实时系统中,用硬性截止日期中断任务可能会导致任务错过截止日期。同时,在实时系统中不允许长时间中断禁用,所以ISR一般都很短很快。常见的方法是将ISR视为实时操作系统调度的另一个高优先级任务。
存储器分配:实时操作系统需要有效地管理内存。常见的内存管理方法包括堆分区、固定分区和简单分区。堆分区提供灵活的内存分配,但分配和释放时间不确定;固定分区提供了一定的分配和释放时间,但可能会浪费内存;简单分区适用于只需要一次分配,但不支持内存释放的场景。
主要分类 编辑本段
按字段
根据应用领域的不同,实时操作系统可以分为实时控制系统和实时信息系统。实时控制系统:实时控制系统的主要特点是响应速度快,可靠性高。主要应用于工业控制、军事控制等领域。例如,火箭飞行控制系统要求飞行数据的采集时间和燃油喷射时间要非常精确,通常时间精度要控制在微秒以下.实时信息系统:由于在实时信息处理系统中会有多个终端用户同时请求服务,因此实时信息系统还具有分时操作系统的复用性、交互性和排他性的特点。主要应用于银行联网存取款、民航机票预订、信息检索、网络视频服务等领域。在这类“事务处理”应用中,计算机要对用户的服务请求做出快速响应,并能及时修改和处理系统中的数据。
根据实时性能
实时操作系统通常分为软实时操作系统和硬实时操作系统。硬实时操作系统:在硬实时任务中,系统必须满足任务的截止期要求,否则可能会出现不可预知的结果,比如导弹防御系统,如果反应慢就会造成严重的损失。硬实时操作系统包括RTEMS、VxWorks、ThreadXNucleus、QNX、OSE、LynxOS、RTLinux、RTAI等。软实时操作系统:也和一个期限有关,但不严格。如果偶尔错过一个任务的截止日期,对系统的影响不会太大。比如流水线就算瘫痪了,也只会赔钱。软实时操作系统包括WinCE和Linux2.6x。
根据系统结构
集中式实时操作系统:集中式实时操作系统的基本运行环境是一台计算机的实时操作系统。它具有实时操作系统最基本的实时多任务调度功能和I/O管理功能,并提供了一个应用开发环境,因此该系统应用广泛。典型的集中式实时多任务操作系统是iRMX。
基于网络的实时操作系统:基于网络的实时操作系统在集中式系统的实时性和可靠性的基础上,增加了网络驱动和通信、负载均衡调整和容错能力,使系统不仅功能更强大,而且可靠性更高。典型的基于网络的实时多任务操作系统是Ouantum。
嵌入式实时操作系统:嵌入式实时操作系统是指将操作系统固化在内存中,将包含操作系统的芯片安装在专用设备中,支持应用程序的运行,从而形成智能设备。因为嵌入式操作系统固化后通常是只读程序,所以运行起来非常可靠。
主要特性 编辑本段
实时操作系统具有实时性、交互性、安全性、可靠性和复用性的特点。
及时:实时系统产生的结果对时间有严格的要求,只有满足时间约束的结果才是正确的。对于实时信息系统,响应时间由操作员可接受的等待时间决定,通常是秒。对于实时控制系统,其对时间的响应是由被控对象可接受的延迟决定的,延迟可能是秒量级,也可能短至毫秒和微秒。
交互性:根据应用对象和应用需求的不同,对实时操作系统交互操作的方便性和权威性有特殊的要求。实时操作系统多为专用系统,赋予用户不同的权限。例如,实时控制系统在某些情况下不允许用户干预,而实时信息系统只允许用户在其授权范围内访问相关的计算机资源。
安全性和可靠性:在实时操作系统中,一方面,可靠性是指系统的正确性,即系统产生的结果不仅在数值上是正确的,在时间上也是正确的;另一方面是指系统的健壮性,即虽然系统存在错误或外部环境不符合定义,但系统仍能处于可预测的状态,仍能运行而不出现致命错误。
多样性:实时系统的多通道性表现在采集许多不同的现场信息,控制许多对象和许多执行器。实时控制系统往往具有现场多路采集、处理和操作机构控制的功能;实时信息系统允许多个终端用户(或远程终端用户)向系统请求服务,每个用户将得到独立的服务和响应。
可预测性:实时系统的实际行为必须在一定的限度内,这可以从系统的定义中得到。这意味着系统对外部输入的响应必须是完全可预测的,即使在最坏的情况下,系统也必须严格遵守时间限制。因此,当出现过载时,系统必须能够以可预测的方式确保其实时性能。
系统结构 编辑本段
整体结构:单片结构也叫无序模块组合结构,即操作系统是一个单片结构,由一系列功能模块组成,任何功能模块都可以随意调用,不分层次,形成网络调用模式。最早开始于60年代初,比如DOS操作系统和IBM早期的操作系统,在硬件之上定义了很多硬件抽象模块。应用系统调用用于实现操作系统的功能,如进程管理、文件系统和存储管理等。这些功能由运行在核心状态的多个模块完成。这也使得整个系统紧凑且高效。
然而,具有整体结构的操作系统不封装和隐藏任何数据。功能模块之间的关系很复杂。修改任何一个功能模块都会引起其他所有功能模块的修改,从而导致操作系统的设计和开发出现困难。因为所有的模块都运行在同一个内核空间,一个小小的错误就会让整个系统崩溃。
分级结构:层次结构是将操作系统中的所有功能模块按照功能流程图的调用顺序划分为不同的层次。低级功能为下一级功能提供服务,而高级功能为上一级功能提供服务。各层之间存在单向依赖,无法形成循环。这种结构层次清晰,易于调试和修改。这种操作系统始于60年代末70年代初。第一个分层操作系统是由E.WDijkstra教授和他的学生在1968年开发的。分级操作系统通常可以分为用户程序、I/O管理、进程通信、存储管理等层。一次一层结构程序无权修改其他层的数据,这也增加了系统的可靠性。
微核结构:随着技术的发展,操作系统通常会添加一些新的功能,例如支持新的硬件设备,支持新的网络通信能力或新兴的软件技术,并将其应用于分布式处理计算环境。为了实现这一目标,保证操作系统代码的完整性,卡内基梅隆大学开发的Mach系统中采用了一种独特的方法来解决这一问题,即微内核结构。微内核操作系统一般由两部分组成:一部分是运行在内核态的内核,通常采用层次结构,构成基本操作系统;第二层是在用户模式下运行,在客户机/服务器模式下活动的流程层。即把操作系统除内核以外的其他部分分成几个相对独立的进程,每个进程完成一组服务,称为服务器进程。
微内核是操作系统的小核心,提炼出各种操作系统需要的核心功能,形成微内核的基本功能。其基本功能包括进程调度、进程间通信和中断处理,其他服务和功能放在内核之外。这种结构使操作系统具有可扩展性、可移植性和高可靠性的优点。
系统组件 编辑本段
实时操作系统可以分为三个基本组成部分。
激活组件:负责接收任务激活指令,管理处于就绪状态的任务集。任务激活可以是时间驱动的(基于实时时钟),也可以是事件驱动的(比如中断)。为了实现这个功能,这个组件需要使用所有任务的激活时间点和激活事件信息。
调度器:评估当前处于就绪状态的任务,并制定调度策略,以优先考虑每个任务的运行顺序。
调度程序:管理所有任务所需的资源。一旦所需的资源得到满足,具有最高优先级的任务将运行。
调度算法 编辑本段
最早的截止日期优先:最早截止期优先(EDF),该算法的任务优先级由任务截止期决定,并根据任务截止期动态分配。截止时间越早,优先级越高。当检测到一个事件时,相应的处理进程被添加到就绪进程表中,该表按截止时间排序,调度器总是使表中截止时间最早的进程运行。即使处理最紧急事件的进程优先于处理器。
根据抢占方式的不同,最早截断时间优先调度算法可以分为非抢占式最早截断时间优先调度算法和抢占式最早截断时间优先调度算法。前者主要用于处理非周期性的实时任务,响应时间可达数百毫秒至数秒;后者用于处理周期性的实时任务,响应时间可以达到几毫秒到100毫秒,甚至更低的调度延迟。
最小松弛优先级:最小松弛度优先(LLF)调度算法根据任务的紧急程度(或松弛度)来确定任务的优先级。任务的紧急程度越高,给予它的优先级就越高,这样它就可以先被执行。要计算每个进程的松弛时间,如果一个进程需要运行200毫秒,并且必须在250毫秒内结束,那么它的松弛时间就是50毫秒。该算法选择具有最小净空的进程来占用处理器,换句话说,该算法优先考虑处理最小延迟事件的进程。
速率单调算法:单调速率算法是一种静态优先级调度算法,它假设系统中任务序列的截止期、执行时间、执行周期等参数已知。在该算法中,任务周期决定了任务优先级。所有周期性任务按照周期的长短排序,即周期最短的任务优先级最高,周期最短的任务优先级次高,以此类推。如果把任务周期看作是任务执行率的倒数,那么优先级就是关于任务执行率的单调递增函数。例如,每20毫秒运行一次的进程的优先级为50,每100毫秒运行一次的进程的优先级为10。运行时调度程序总是以最高优先级运行就绪进程。如有必要,夺取当前运行进程的处理器。
固定优先级调度:固定优先级调度是指任务的优先级被分配后,在任务运行过程中优先级不会改变。它可以根据处于可运行状态的线程的相对优先级来实现调度。创建线程时,它会继承原始线程的优先级。必要时可以修改优先级。在任何时候,如果有多个线程等待运行,系统会选择具有最高优先级的可运行线程来运行。只有当低优先级线程停止、自动放弃或由于某种原因而变得不活动时,它才能运行。如果两个线程具有相同的优先级,它们将交替运行。
循环调度:循环调度,也称为循环调度,将处理时间平均分配给所有就绪的进程。同时在循环调度中定义了一个很小的时间单位,称为时间量或时间片,时间片通常为10-100ms。就绪队列被视为循环队列,CPU调度程序循环就绪队列,并为每个进程分配不超过一个时间片间隔的CPU。循环调度支持几乎所有的作业,被认为是最公平的算法。
先到先服务服务调度:先来先服务(FCFS)当一个进程进入就绪队列时,它的进程控制块(PCB)被链接到队列的尾部。当CPU空闲时,它被分配给队列头的进程。然后,从队列中删除正在运行的进程。FCFS策略的平均等待时间相当长,算法是非抢占式的。
多级队列调度:多级队列调度算法的基本思想是引入多个就绪队列,通过区别对待每个队列来实现综合调度目标。在多级队列调度中,根据进程的性质或类型,将就绪队列分成若干子队列,每个进程属于一个就绪队列,不同的队列可以使用不同的调度算法。
多级反馈队列调度:多级反馈队列调度是循环调度算法和优先级调度算法的结合,可以通过动态调整优先级和时间片大小来兼顾各种系统目标。其主要思想是根据不同CPU间隔的特点来区分进程。如果一个进程使用了太多的CPU时间,它可能会被转移到一个较低优先级的队列中。该方案将I/O约束和交互进程留在更高优先级的队列中。此外,在较低优先级队列中等待时间过长的进程将被转移到较高优先级队列中。
优先级反转:优先级反转是指在采用基于优先级的调度策略时,由于多个线程共享资源,低优先级的线程会先于高优先级的线程执行的情况。优先级反转可能会使实时性要求高的线程错过关键截止期,从而导致系统崩溃。为了避免优先级反转的问题,需要让低优先级线程尽快释放关键资源,可以采用两种方法:优先级继承和优先级上限。
典型应用 编辑本段
智能家居:在智能家居中,不同的设备之间可以相互通信,通过智能感应、交通控制、语音识别可以实现多个设备的联动。智能家居帮助用户以更便捷的方式管理家庭设备,提供高效舒适的生活和工作环境。
交通管理和汽车:在交通管理上,可以将物联网技术与实时操作系统相结合,实现智能交通管理,可以进行实时分析,传输高校内城市道路交通状况,合理规划路线,缓解城市交通拥堵。例如,ADAS可以通过提供实时增强的可视化和与周围环境的交互来改善驾驶员对车辆的控制。此外,实时操作系统可以实现对车辆的全面管理,特别是在电动汽车的电源管理方面,可以节省汽车的能耗,延长电池的使用寿命。
工业控制:在工业控制中,许多智能工业机器人的出现是实时操作系统相结合的结果。工业控制的要求往往很高,需要复杂的设备接口,在显示屏上实时显示这些设备和传感器的状态等信息。在一些环境恶劣、地面条件复杂的地区,可以通过内置实时操作系统的智能机器人实现无人值守监控。
军事:在高科技战争中,实时操作系统的应用越来越重要。它可以将卫星定位、无线通信、图像捕获和传输等功能集成到特定的作战环境中,如各种军用电子设备、军用雷达对抗通信设备、各种野战指挥作战专用设备等,都装有实时操作系统。
附件列表
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。