首页 > 其他分享 >什么是实时操作系统(RTOS)

什么是实时操作系统(RTOS)

时间:2023-10-16 21:33:18浏览次数:51  
标签:实时性 优先级 中断 什么 RTOS 实时 实时操作系统 API

实时操作系统是保证在一定时间限制内完成特定功能的操作系统(执行时间的确定性是实时操作系统最根本的,其代价往往就是吞吐量低)。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。

应用场景:汽车安全气囊的弹出

 

 

实时任务调度器是实时操作系统的一个必选项,但不代表只要设计出来一个实时调度器就足够了。事实上设计一个实时调度内核并不是一个多么复杂的任务,实时操作系统的特性是在整个操作系统的设计思路上都要时刻关注实时性

1. 实时的消息、事件处理机制。

常规的操作系统中,消息队列都是按照FIFO(先进先出)的方式进行调度,如果有多个接受者,那么接受者也是按照FIFO的原则接受消息(数据),但实时操作系统会提供基于优先级的处理方式:两个任务优先级是分别是10和20,同时等待一个信号量,如果按照优先级方式处理,则优先级为10的任务会优先收到信号量。

2. 提供内核级的优先级翻转处理方式

实时操作系统调度器最经常遇到的问题就是优先级翻转,因此对于类似信号量一类的API,都能提供抑止优先级翻转的机制,防止操作系统死锁。

3. 减少粗粒度的锁和长期关中断的使用

这里的锁主要是指自旋锁(spinlock)一类会影响中断的锁,也包括任何关中断的操作。在Windows和Linux的驱动中,为了同步的需要,可能会长期关闭中断,这里的长期可能是毫秒到百微秒级。但实时操作系统通常不允许长期关中断。

对于非实时操作系统来说,如果收到一个外部中断,那么操作系统在处理中断的整个过程中可能会一直关中断。但实时操作系统的通常做法是把中断作为一个事件通告给另外一个任务,interrupt handler在处理完关键数据以后,立即打开中断,驱动的中断处理程序以一个高优先级任务的方式继续执行。

4. 系统级的服务也要保证实时性

对于一些系统级的服务,比如文件系统操作,非实时系统会缓存用户请求,并不直接把数据写入设备,或者建立一系列的线程池,分发文件系统请求。但实时系统中允许高优先级的任务优先写入数据,在文件系统提供服务的整个过程中,高优先级的请求被优先处理,这种高优先级策略直到操作完成。

这种设计实际上会牺牲性能,但实时系统强调的是整个系统层面的实时性,而不是某一个点(比如内核)的实时性,所以系统服务也要实时。

由于应用场景的差异,会出现有些用户需要实时性的驱动,有些用户需要高性能的驱动,因此实时操作系统实际上要提供多种形式的配置以满足不同实时性需求的用户。

5. 避免提供执行时间不确定的API

多数实时操作系统都不支持虚拟内存(page file/swap area),主要原因是缺页中断(page fault)会导致任务调度的不确定性增加。实时操作系统很多都支持分页,但很少会使用虚拟内存,因为一次缺页中断的开销十分巨大(通常都是毫秒级),波及的代码很多,导致用户程序执行的不确定性增加。

实时操作系统的确定性是一个很重要的指标,在某些极端场景下,甚至会禁用动态内存分配(malloc/free),来保证系统不受到动态的任务变化的干扰。

6. 提供针对实时系统调度的专用API

比如ARINC 653标准中就针对任务调度等作出了一系列的规定,同时定义了特定的API接口和API行为,这些API不同于POSIX API,如果实时系统要在航空设备上使用,就可能需要满足ARINC 653的规范。

7. 降低系统抖动

由于关中断等原因,通常情况下,操作系统的调度器不会太精确的产生周期性的调度,比如x86早期的默认60的时钟周期(clock rate),抖动范围可能在15-17ms之间。但一个设计优秀的实时操作系统能把调度器的抖动降低到微秒甚至百纳秒一级,在像x86这种天生抖动就很大的架构上,降低系统抖动尤其重要。

8. 针对实时性设计的SMP和虚拟化技术

SMP(多核)场景的实时调度是很困难的,这里还涉及到任务核间迁移的开销。针对SMP场景,多数实时操作系统的设计都不算十分优秀,但比起普通操作系统来说,其实时性已经好很多了。

同时实时操作系统的虚拟化能从hypervisor层面上提供虚拟机级别的实时调度,虚拟机上可以是另外一个实时系统,也可以是一个非实时系统。

 

标签:实时性,优先级,中断,什么,RTOS,实时,实时操作系统,API
From: https://www.cnblogs.com/god-of-death/p/17768411.html

相关文章

  • 动态IP代理有什么作用?
    随着互联网的普及和发展,越来越多的人开始意识到网络安全和隐私保护的重要性。其中,动态IP代理成为了一种常见的解决方案,被广泛应用于各种场景中。本文将详细介绍动态IP代理的作用。首先,我们需要了解什么是动态IP代理。简单来说,动态IP代理是一种通过代理服务器实现的网络协议转换技术......
  • k8s是什么?
    1、k8s是什么?Kubernetes(简称k8s)是一个开源的容器编排和管理系统,由Google开发并维护。它可以自动化地部署、扩展和管理容器化的应用程序,使得这些应用程序可以更加高效、可靠、可伸缩地运行。Kubernetes的设计目标是使得应用程序的部署和管理变得更加简单、可靠和可扩展,从而帮助开......
  • 10月16日什么是元类
    目录什么是元类什么是元类就是定义类的类classPerson:pass这个代码里我定义了一个名叫Person的类,而定义这个类的类就叫元类classPerson:passp=Person()#上面我定义了一个类,然后定义这个类的类就是元类#如何找元类?#我要是找对象的类如何去找?要用到typepri......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(7)事件组
    8.事件组之前已经介绍了多任务之间的交流桥梁,包括了队列和信号量。与队列和信号量不同:事件组允许任务在“阻塞”状态下等待一个或多个事件的组合发生。事件组在事件发生时,取消等待同一事件或事件组合的所有任务的阻塞状态。事件组的这些独特属性可用于同步多个任务、向多个任务......
  • 什么才算是真正的编程能力?
    大家好,我是陶朱公Boy,一个认真生活,总想超越自己的程序员。前言知乎上有一个提问:什么才算是真正的编程能力?             ↓↓↓今天,我们就这个话题,一起来做个讨论。首先问大家一个问题:程序员的你觉得编程能力强可以有哪些指标来衡量?是能从0-1......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(6)资源管理
    7.资源管理(互斥量)在多任务系统中,如果一个任务开始访问资源,但在从运行状态转换出来之前没有完成访问,则可能会出现错误。如果任务使资源处于不一致状态,则任何其他任务或中断对同一资源的访问都可能导致数据损坏或其他类似问题。这里的资源管理,应该是指计算机的外设资源,比如LCD显示......
  • 光电液位传感器与电容液位传感器有什么不同
    光电液位传感器内置红外发射管和光敏接收器,其检测部位是棱镜结构。在无水状态下,发射管发出的光经过透镜后会折射至接收管;而在有水状态下,光则会折射到液体中,导致接收器收不到或只能接收到少量光线。通过检测光线的变化,可以判断液位的高低。而电容式液位传感器则利用算法控制和感应有......
  • PMP的合同类型有哪些?计算公式各是什么?
    (一)、合同类型:佣金(Fee)或称费用:是买方在补偿卖方的成本之后所增加的酬金,可以理解为卖方所实现的毛利润(Profit).激励(Incentives)或称奖励:是一种同步各订约方目标的积极措施,能让合同订约方从对方关心的角度思考。1、固定价合同(FP)固定总价或者总包合同(FFP):卖方承担较高的风险,注重控......
  • 《Mastering the FreeRTOS Real Time Kernel》读书笔记(5)中断管理
    6.中断管理在读这一章之前一直有一些疑惑,FreeRTOS中的中断是软中断吗,还是将外部硬中断的触发后,导入FreeRTOS的内部进行调度处理。如果是第一种,软中断和第三章讲的任务有区别吗,还是只是优先级比所有任务高。如果是第二种的话,外部中断的服务函数是不是不能写内容了,FreeRTOS的运行和......
  • 图形学、02 推导证明 | 任意一点经过透视投影后 z 坐标相对于之前有什么变化
    齐次坐标知识点:\(\begin{bmatrix}x\\y\\z\\1\\\end{bmatrix}\Rightarrow\begin{bmatrix}nx\\ny\\nz\\n\\\end{bmatrix}\)两个都表示同一个点透视投影:先将远截面按一定规则缩放到跟近截面一样大,然后再正交投影缩放规则:远截面缩放后\(z\)不变,缩放过后大小同近......