VxWorks操作系统指南(1.3) 任务管理

本文详细介绍了VxWorks操作系统中的任务管理,包括任务结构、任务状态和状态迁移、任务调度策略、抢占禁止、异常处理以及任务管理的系统调用。任务是系统资源竞争的最小运行单元,VxWorks采用基于优先级的抢占式调度法,允许动态调整优先级。此外,还讨论了如何通过taskSpawn、taskSuspend等系统调用来创建、控制和管理任务。
摘要由CSDN通过智能技术生成

1.1.任务管理

  任务是代码运行的一个映象,从系统的角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPUI/O设备及内存空间等系统资源,并独立于其它任务,与它们一起并发运行(宏观上如此)。VxWorks内核使任务能快速共享系统的绝大部分资源,同时有独立的上下文来控制个别线程的执行。

1.1.1.任务结构

  多任务设计能随时打断正在执行着的任务,对内部和外部发生的事件在确定的时间里作出响应。VxWorks实时内核Wind提供了基本的多任务环境。从表面上来看,多个任务正在同时执行,实际上,系统内核根据某一调度策略让它们交替运行。系统调度器使用任务控制块的数据结构(简记为TCB)来管理任务调度功能。任务控制块用来描述一个任务,每一任务都与一个TCB关联。TCB包括了任务的当前状态、优先级、要等待的事件或资源、任务程序码的起始地址、初始堆栈指针等信息。调度器在任务最初被激活时以及从休眠态重新被激活时,要用到这些信息。

  此外,TCB还被用来存放任务的"上下文"context)。任务的上下文就是当一个执行中的任务被停止时,所要保存的所有信息。在任务被重新执行时,必须要恢复上下文。通常,上下文就是计算机当前的状态,也即各个寄存器的内容。如同在发生中断所要保存的内容一样。当发生任务切换时,当前运行的任务的上下文被存入TCB,将要被执行的任务的上下文从它的TCB中取出,放入各个寄存器中。于是转而执行这个任务,执行的起点是前次它在运行时被中止的位置。

  VxWorks中,内存地址空间不是任务上下文的一部分。所有的代码运行在同一地址空间。如每一任务需各自的内存空间,需可选产品VxVMI的支持。

1.1.2.任务状态和状态迁移

实时系统的一个任务可有多种状态,其中最基本的状态有四种:

就绪态:任务只等待系统分配CPU资源;

悬置态:任务需等待某些不可利用的资源而被阻塞;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值