实时操作系统任务管理与调度.ppt
任务切换任务切换具有如下基本步骤:保存任务上下文环境;更新当前处于运行状态的任务的任务控制块的内容,如把任务的状态由运行状态改变为就绪或是等待状态;把任务的任务控制块移到相应的队列(就绪队列或是等待队列);选择另一个任务进行执行:调度;改变需要投入运行的任务的任务控制块的内容,把任务的状态变为运行状态;根据任务控制块,恢复需要投入运行的任务的上下文环境。任务的管理-任务上下文切换时间恢复保存当前运行任务上下文的时间选择下一个任务的调度时间0102保存调度取决于任务上下文的定义和处理器的速度。不同种类的处理器,任务上下文的定义不同,其内容有多有少。将要运行任务的上下文的恢复时间高优先级任务处于就绪时任务切换时机中断、自陷时间片轮转调度时运行任务因缺乏资源而被阻塞任务的管理-任务切换任务的管理-任务队列任务队列通过任务控制块实现对系统中所有任务的管理新任务CPU就绪队列等待队列超时调度等待资源获得资源释放CPU单就绪队列和单等待队列任务的管理-任务队列队列由任务控制块构成tasknametaskIDtaskstatustaskprioritytaskcontext…tasknametaskIDtaskstatustaskprioritytaskcontext…tasknametaskIDtaskstatustaskprioritytaskcontext…Head队列TCB1TCB2TCBnNULL任务队列任务的管理-任务队列新任务CPU就绪队列资源1等待队列超时调度等待资源1获得资源1释放CPU资源2等待队列等待资源2获得资源2资源n等待队列等待资源n获得资源n……单就绪队列和多等待队列任务的管理-优先级位图就绪任务处理算法为了能够使系统清楚地知道,系统中哪些任务已经就绪,哪些还没有就绪,OS在RAM中设立了一个记录表,系统中的每个任务都在这个表中占据一个位置,并用这个位置的状态(1或者0)来表示任务是否处于就绪状态,这个表就叫做任务就绪状态表,简称叫任务就绪表任务就绪表就是一个二维数组OSRdyTbl[]为加快访问任务就绪表的速度,系统定义了一个变量OSRdyGrp来表明就绪表每行中是否存在就绪任务。任务的管理-优先级位图就绪任务处理算法下标二进制值01234567优先级映射表priorityMapTablecharpriorityMapTable[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};priorityMapTable的数组元素的下标与任务优先级的高三位或低三位相对应。priorityMapTable的数组元素对应的二进制值中,位为1的位表示priorityReadyGroup或是priorityReadyTable[]的对应位也为1。35:CharpriorityDecisionTable[]={0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4