VxWorks任务区别于通用系统的两个特点:1)VxWorks任务与内核具有相同的权限,能够执行处理器支持的全部指令。2)所有任务和内核共享同一实地址空间,不同任务的数据没有任何保护机制。
1、 任务控制块(WIND_TCB):系统调度器用来管理任务调度的一个数据结构,每个任务都与一个TCB相关联,主要包括任务ID,任务名称,任务优先级和任务上下文等(VxWorks系统中TCB不用包含内存地址空间)。任务的切换主要设计任务上下文的保存与恢复。
2、 任务栈:每个任务都有独立的栈空间,栈用于任务的函数调用,分配自动变量和函数返回值。栈的位置和大小在任务控制块中记录(创建任务时指点栈的大小)。VxWorks支持独立的中断栈(在处理器体系和BSP支持的条件下),即所有ISP共享一个独立于任务栈的栈空间。当硬件体系不支持时,中断栈属于被中断任务栈空间的一部分。系统提供checkStack()用以函数检测栈的使用情况。
3、 出错状态:ANSI C标准定义了一个全局整形变量errno,用以记录底层函数调用时最后一次出错的详细信息(每次调用出错就会重置errno)。在VxWorks中,每个任务和ISP都维护了一个errno的副本(任务的errno记录在TCB中,ISP的errno记录在中断栈中)。VxWorks库函数中定义errno高16bits为模块编号,低16bits为错误编号。用户程序可以使用该定义,也可以重新定义。
4、 钩子函数:VxWorks系统允许任务添加和删除钩子函数,钩