1.3.3 嵌入式实时操作系统的功能
嵌入式实时操作系统满足了实时控制和实时信息处理领域的需要,在嵌入式领域的应用十分广泛,可用于实时内核、内存管理、文件系统、图形接口和网络组件等。在不同的应用中,可对嵌入式实时操作系统进行剪裁和重新配置。一般来讲,嵌入式实时操作系统需要完成以下管理功能。
1.任务管理
任务管理是嵌入式实时操作系统的核心和灵魂,它决定了操作系统的实时性能。任务管理通常包含优先级设置、多任务调度机制和时间确定性等部分。
嵌入式实时操作系统支持多个任务,每个任务都具有优先级,任务越重要,被赋予的优先级越高。优先级的设置分为静态优先级和动态优先级两种。静态优先级指的是每个任务在运行前都被赋予一个优先级,而且这个优先级在系统运行期间是不能改变的;动态优先级则是指每个任务的优先级(特别是应用程序的优先级)在系统运行时可以动态地改变。任务调度主要是协调任务对计算机系统资源的争夺使用,任务调度直接影响到系统的实时性能,一般采用基于优先级抢占式调度。系统中每个任务都有一个优先级,内核总是将CPU分配给就绪态队列中优先级最高的任务运行。如果系统发现就绪队列中有比当前运行任务更高的优先级任务,就会把当前运行任务置于就绪队列,调入高优先级任务运行。系统采用优先级抢占方式进行调度,可以保证重要的突发事件得到及时处理。嵌入式实时操作系统调用的任务与服务的执行时间应具有可确定性,系统服务的执行时间不依赖于应用程序任务的多少,因此,系统完成某个确定任务的时间是可预测的。
2.任务同步与通信机制
实时操作系统的功能一般要通过若干任务和中断服务程序共同完成。任务与任务之间、任务与中断之间、任务与中断服务程序之间必须协调动作、互相配合,这就涉及任务间的同步与通信问题。嵌入式实时操作系统通常是通过信号量、互斥信号量、事件标志和异步信号来实现任务同步的,是通过消息邮箱、消息队列、管道和共享内存来提供通信服务的。
3.内存管理
通常在操作系统的内存中既有系统程序也有用户程序,为了使两者都能正常运行,避免程序间相互干扰,需要对内存中的程序和数据进行保护。存储保护通常需要硬件支持,很多系统采用内存管理单元(Memory Management Unit, MMU)并结合软件实现这一功能。但由于嵌入式系统的成本限制,内核和用户程序通常都在相同的内存空间中。内存分配方式可分为静态分配和动态分配。静态分配是在程序运行前一次性分配给相应内存,并且在程序运行期间不允许再申请或在内存中移动;动态分配则允许在程序运行的整个过程中进行内存分配。静态分配使系统失去了灵活性,但对实时性要求比较高的系统是必需的;而动态分配赋予了系统设计者更多自主性,系统设计者可以灵活地调整系统的功能。
4.中断管理
中断管理是实时系统中一个很重要的部分,系统经常通过中断与外部事件交互。评估系统的中断管理性能主要考虑的是是否支持中断嵌套、中断处理、中断延时等。中断管理在整个运行系统中优先级最高,它可以抢占任何任务级代码运行,是多任务环境运行的基础,是系统实时性的保证。