实时操作系统在星载计算机中的应用
(2)任务调度
为了保证系统的实时性,可以采用基于优先级的抢占式调度,也就是一旦更高优先级的任务就绪,就能获得CPU的使用权,使任务响应时间最短。SAR-RTOS中就是采和了这种调度方案,调度时间确定、速度快、实时性好。
SAR-RTOS中关于任务管理的实现方法为:考虑到星载系统的ROM和RAM资源有限,为了保证SAR-RTOS的微内核性,将其设计为最多能支持64个任务。给每个任务赋予不同的优先级,以优先级为基础建立任务就绪表。当某个任务就绪时,将就绪表中相应位置位,执行任务调度时按照优先级矢量位图算法查找任务就绪表,找出最高优先级任务,执行任务切换。
任务切换需要完成以下工作,但需要注意的是执行任务切换属于临界区代码(不可被中断),必须关中断,切抽象完成后再开中断:
*判断需要调度的任务是否是当前正在运行的任务,如果是就不切换,避免不必要的切换,缩短CPU执行时间;
*将被挂起的任务CPU寄存器压入堆栈;
*将当前堆栈指针保存在即将挂起任务的任务控制块中;
*把高优先级任务的CPU寄存器从堆栈中恢复;
*将高优先级任务的任务控制块中保存的堆栈指针恢复;
*执行中断返回指令,让高优先级任务运行。
(3)任务管理
任务在RTOS中通常同时作为系统调度和资源分配的最小单位,也是用户编写应用程序的基础,对任务的管理是RTOS最基本的功能。对任务的管理内容包括任务状态的设计以及任务状态变迁的实现。在SAR-RTOS中任务的状态总共有四种,如表1所示。
表1 SAR-RTOS中的任务状态
任务状态的变迁如图2所示。
(4)任务间通信与同步
任务间的同步与通信是多任务操作系统都需要解决的问题。实时操作系统的核心就是要支持多任务的并发执行,相应地也就引入了任务与任务之间、任务与中断服务程序之间必须协调动作、相互配合的问题。即常说的任务间的同步与通信问题。所谓任务间的同步是指多个任务中发生的事件存在某种时序关系,必须协同动作、相互配合,以共同完成一个任务。任务间通信就是任务在运行时与别的任务进行信息交换。其实,同步本质上也是一种信息交换,是为了保证在正确的时间和条件下进行信息交换,使任务间不会产生混乱。在现场操作系统中已经对任务的同步与通信有比较完备的解决办法。信号量以及事件机制等都是RTOS常用的同步机制,RTOS为任务间通信提供邮箱及消息队列等服务。
在SAR-RTOS中,提供的任务间通信的服务包括:消息邮箱(Message Mailbox)和消息队列(Message Queue);提供的任务间同步的服务包括:信号量(Semaphore)和事件标志(Event Flag)。
(5)时间管理
RTOS由于其实时性,在系统运行过程中必须提供可靠的时间保证,因此RTOS通常都在硬件定时器的基础上提供系统时钟服务。每一个时钟滴答(Tick)就是一次系统的脉动,指挥系统各部分协调工作,因此定时管理是RTOS的基础。时间管理一般提供以下
《实时操作系统在星载计算机中的应用(第3页)》