u 事件和异步信号服务;
u 信号量服务;
u 消息队列服务;
u 内存管理;
u 中断服务程序;
u 时钟管理和定时器服务;
u 出错处理。
在以下各节中将对VxWorks内核的各类功能分别进行描述。
1.1. 任务管理
任务是代码运行的一个映象,从系统的角度看,任务是竞争系统资源的最小运行单
元。任务可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其它任务,与
它们一起并发运行(宏观上如此)。VxWorks内核使任务能快速共享系统的绝大部分资
源,同时有独立的上下文来控制个别线程的执行。
1.1.1. 任务结构
多任务设计能随时打断正在执行着的任务,对内部和外部发生的事件在确定的时间里
作出响应。VxWorks实时内核Wind提供了基本的多任务环境。从表面上来看,多个任务
正在同时执行,实际上,系统内核根据某一调度策略让它们交替运行。系统调度器使用任
务控制块的数据结构(简记为TCB)来管理任务调度功能。任务控制块用来描述一个任
务,每一任务都与一个TCB关联。TCB包括了任务的当前状态、优先级、要等待的事件或
资源、任务程序码的起始地址、初始堆栈指针等信息。调度器在任务最初被激活时以及从
休眠态重新被激活时,要用到这些信息。
此外,TCB还被用来存放任务的"上下文"(context)。任务的上下文就是当一个执
行中的任务被停止时,所要保存的所有信息。在任务被重新执行时,必须要恢复上下文。
通常,上下文就是计算机当前的状态,也即各个寄存器的内容。如同在发生中断所要保存
的内容一样。当发生任务切换时,当前运行的任务的上下文被存入TCB,将要被执行的任
务的上下文从它的TCB中取出,放入各个寄存器中。于是转而执行这个任务,执行的起点
是前次它在运行时被中止的位置。
VxWorks中,内存地址空间不是任务上下文的一部分。所有的代码运行在同一地址空
间。如每一任务需各自的内存空间,需可选产品VxVMI的支持。
1.1.2. 任务状态和状态迁移
实时系统的一个任务可有多种状态,其中最基本的状态有四种:
5
评论0
最新资源