目录
前言
一、实时操作系统的概念
二、实时操作系统的特征
高精度计时系统
多级中断机制
实时调度机制
三.实时操作系统的相关概念
基本概念
优先级的问题
互斥
前面几篇文章我们分别介绍了裸机系统和操作系统的相关概念,这里开始的几篇文章我们着重介绍下嵌入式的实时操作系统,嵌入式实时操作系统有很多种比如:ucos,rt-thread,Vxworks等
实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的操作系统。因而,提供及时响应和高可靠性是其主要特点。实时操作系统有硬实时和软实时之分,硬实时要求在规定的时间内必须完成操作,这是在操作系统设计时保证的;软实时则只要按照任务的优先级,尽可能快地完成操作即可。通常使用的操作系统在经过一定改变之后就可以变成实时操作系统。
计时精度是影响实时性的一个重要因素。在实时应用系统中,经常需要精确确定实时地操作某个设备或执行某个任务,或精确的计算一个时间函数。这些不仅依赖于一些硬件提供的时钟精度,也依赖于实时操作系统实现的高精度计时功能。
一个实时应用系统通常需要处理多种外部信息或事件,但处理的紧迫程度有轻重缓急之分。有的必须立即作出反应,有的则可以延后处理。因此,需要建立多级中断嵌套处理机制,以确保对紧迫程度较高的实时事件进行及时响应和处理。
实时操作系统不仅要及时响应实时事件中断,同时也要及时调度运行任务。但是处理机调度并不能随心所欲的进行,因为涉及到两个进程之间的切换,只能在确保“安全切换”的时间点上进行,实时调度机制包括两个方面,一是在调度策略和算法上保证优先调度实时任务;二是建立更多“安全切换”时间点,保证及时调度实时任务。
想要满处上述特征,那么实时操作系统就必须具备以下几种条件才行
●实时操作系统必须是多任务系统。 ●任务的切换时间应与系统中的任务数无关。 ●中断延迟的时间可预知并尽可能短。
代码临界段:也称之为代码临界区,指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入,为了保证临界段的顺利执行,在进入临界段之前我们要关中断,在临界段代码执行完毕后我们在将中断打开
资源:资源可以是输入输出设备,例如打印机、键盘、 显示器,资源也可以是一个变量,一个结构或一个数组等
共享资源:可以被一个以上任务使用的资源,每个任务操作共享资源的时候一定要保证其独占性,我们可以通过原子操作和互斥锁来实现该特性
任务:也称作一个线程,是一个简单的程序。每个任务有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务被赋予一定的优先级,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态。下图是不同状态之间切换的表述。
任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;
内核:多任务系统中,内核负责管理各个任务,或者说为每个任务分配 CPU 时间,并且负责任 务之间的通讯。内核提供的基本服务是任务切换。之所以使用实时内核可以大大简化应用系 统的设计,是因为实时内核允许将应用分成若干个任务,由实时内核来管理它们分为不可剥夺型内核和可剥夺型内核,关于这两种内核的区别我们后面再做详细介绍,这里就不在赘述了。
调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法,每个 任务根据其重要程度的不同被赋予一定的优先级。基于优先级的调度法指,CPU 总是让处在 就绪态的优先级最高的任务先运行。然而,究竟何时让高优先级任务掌握 CPU 的使用权,有 两种不同的情况,这要看用的是什么类型的内核,是不可剥夺型的还是可剥夺型内核。
任务优先级:每个任务都有其优先级。任务越重要,赋予的优先级应越高,分为优先级不可改变的静态优先级和优先级可改变的动态优先级;
优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。
实现任务间通讯最简便到办法是使用共享数据结构。特别是当所有到任务都在一个单一地址空间下,能使用全程变量、指针、缓冲区、链表、循环缓冲区等,使用共享数据结构通 讯就更为容易。虽然共享数据区法简化了任务间的信息交换,但是必须保证每个任务在处理 共享数据时的排它性,以避免竞争和数据的破坏。与共享资源打交道时,使之满足互斥条件 最一般的方法有:
关中断 使用测试并置位指令 禁止做任务切换 利用信号量