词条 | OS21 |
释义 | 1.OS21 概述 OS21 是一个免费、轻量级的多任务实时操作系统,基于 OS20 API 设计,使用 GNU工具 进行编译,gdb 进行调试。目前 OS21主要用于 ST公司的机顶盒主芯片(ST40/ST200)中, 与应用程序一道生成单一映象文件,具有相同的地址空间与名字空间,以及相同的特权模式。 OS21 采用了多优先级、占先式的任务调度算法,任务之间使用信号量、互斥锁、事件标 签进行同步;使用消息队列进行通信。实时事件由中断处理,并使用信号量与任务通信。任 务所需的内存分配方案由用户选择,任务优先级可指定。提供的主要功能有: (1)基于 256 级的多优先级、可占先式调度; (2)信号量(semaphores); (3)互斥锁(mutexes); (4)消息队列(message queues); (5)高精度定时器; (6)存储管理; (7)中断处理; (8)节省存储空间。 从性能上讲,OS21提供的任务间切换时间小于2.6us,中断响应时间最小为1.5us,整个代码小于30KB,数据小于5KB。 2.OS21与 OS20 的异同点 OS21与OS20 提供的系统服务比较相似,调用的 API 函数名称也很相似,具体来说包含 下列 API: (1) Kernel API (2) Memory and partitions (3) Tasks and scheduler APIs (4) Semaphore API (5) Memory API (6) Time API 但OS20针对 ST20 CPU 进行开发,OS21 则针对ST40 CPU 进行开发,二者在 BSP 部分存 在较大不同。 内核启动:OS20提供了两种方式来启动内核:手动和自动方式(在编译时通过添加 -runtime os20实现),OS21通常只使用手动方式来启动内核。尽管 也可实现自动启动。 int main(void) { kernel_initialize(NULL); kernel_start(); kernel_timeslice(OS21_TRUE); ... } OS21 的时间片功能缺省为关闭,要使用时需要手动打开。 任务方面:与 OS20相比,当改变任务的优先级时,该任务在队列中的位置也发生了变 化。 OS20 使用了两个预定义的内存空间——system_partion与 internal_partion,用户也可访问,在 OS21 中则没有这两个空间,而需要自行分配。在 OS21 中的堆内存既可由 C运行库函数(malloc 和free)管理,也可由 OS21 自身管理。 通常情况下 OS20 中所有的_init()函数均被_create()所代替,尽管_init()函数的优点在于内存分配的灵活性,OS21 采取了一个不同的解决办法来增加灵活性:除了_create()函数外,还增加了_create_p()函数来定义 partition 指针。这在存储空间紧张的系统中,可由应用程序自己选择从哪块空间中分配。如图:下列_init()函数都将由_create()或_create_p()函数代替。 message_init_queue() message_init_queue_timeout() partition_init_fixed() partition_init_heap() partition_init_simple() semaphore_init_fifo() semaphore_init_fifo_timeout() semaphore_init_priority() semaphore_init_priority_timeout() task_init() 中断和缓存:OS20的中断和缓存 API 与ST20 的中断缓存体系结构紧密相关,其目的是为了完全使用上硬件的特性。在缓存的设计上,OS21 遵循了与 OS20 一样的设计思想,即根据具体芯片设计,每款芯片都有不同的 API,当然也不同于 OS20。而 OS21 提供的中断则具有通用性,可在不同芯片间移植,这一点不同于 OS20。二维块数据移动:由于二维块数据移动严格与 ST20 芯片结构相关,OS21已去掉了这方面内容。 时间管理:在 OS21中,时钟由 64 位的整型osclock_t 表示,而在 OS20 中则为32位的整型类型 clock_t。 3.OS21 操作系统——kernel 为了实现多优先级的任务调度,OS21 使用了一个很小的调度内核,确保当前运行的任 务总是处于最高调度优先级。 内核始终维护下列信息: 1) 当前正在运行的是哪一个任务; 2) 当前准备运行的一个任务队列。当需要作出调度决策时,该内核被调用,总的来说有下列四种情形: 1)低优先级的任务被高优先级的任务占先; 2)当一个任务停止调度,例如当该任务等待的消息队列为空时,此时内核会检查任务队列,选择优先级最高的任务投入运行; 3)调度器会周期性地分时检查当前执行的任务,如果有与该任务同等优先级的任务,则会选择处于前列的任务投入运行,而备份当前任务状态; 4)当一个中断结束,此时没有其他低优先级的任务运行,内核被调用。 4.OS21 操作系统-存储管理 内存管理在很多嵌入式系统里都是非常重要的,因为可用内存经常很小所以必须被充分利用。OS21提供了三种不同的内存管理方式:heap, fixed和 simple,这给用户提供了灵活的内存分配手段,并达到时空上的平衡。 |
随便看 |
|
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。