实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。
特征:
1)高精度计时系统
计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
2)多级中断机制
一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
3)实时调度机制
实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行实时任务。但是, 处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。
实时操作系统与非实时操作系统区别:
一个实时操作系统面对变化的负载(从最小到最坏的情况)时必须确定性地保证满足时间要求。
请注意,必须要满足确定性,而不是要求速度足够快!例如,如果使用足够强大的CPU,Windows在CPU空闲时可以提供非常短的典型中断响应,但是,当某些后台任务正在运行时,有时候响应会变得非常漫长,以至于某一个简单的读取文件的任务会长时间无响应,甚至直接挂死。这是一个基本的问题:并不是Windows不够快或效率不够高,而是因为它不能提供确定性,所以,Windows不是一个实时操作系统。
虽然Linux进程调度也支持实时优先级,但缺乏有效的实时任务的调度机制和调度算法;
任务优先级和实时操作系统不是等同的,你有任务优先级,但你 能在极短的时间内中断其他任务完成切换 么?Windows同样也有任务优先级是不是?Linux的任务调度算法不唯一,时间复杂度也不一样,如果有实时性高的任务,Linux可以勉强实现软实时调度,硬实时做不了
如何区分嵌入式系统实时操作系统与标准操作系统: 1、预测反应时间。强实时系统可以精确地在指定时间内做出反应。这些反应时间比典型的操作系统要快很多——它们的量度是在10个微秒(百万分之一秒)的数量级上,而普通的操作系统反应时间只能在毫秒(千分之一秒)数量级上。 2、可调度性。一个强实时系统进程可以在非常精确的时间内被调度,进程切换时间非常精确。再次强调,时间精确到微秒级而不是毫秒级。 3、 强负载情况下的稳定性。在强实时系统中,处理器有可能被不同来源产生的大量信号所淹没,而超出了处理能力。然而这些信号中一些比另外一些更重要,因此需要识别处理。能够及时有效地识别信号优先级是一个好的实时系统的重要特点。
在实时操作系统中,系统必须在特定的时间内完成指定的应用,具有较强的“刚性”,而分时操作系统则注重将系统资源平均地分配给各个应用,不太在意各个应用的进度如何,什么时间能够完成。不过,就算是实时操作系统,其“刚性”和“柔性”的程度也有所不同,就好像是系统的“硬度”有所不同,因而有了所谓的“硬实时(hard realtime)”和“软实时(soft realime)”。
硬实时和软实时
硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。
软实时系统的时限是一个柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,例如在网络中仅仅是轻微地降低了系统的吞吐量。