基于Xscale架构实训的嵌入式操作系统研究 |
|
|
配资源,挂起态处于该状态的任务不能被执行,等待调度,阻塞态是因为申请的资源不能满足,被暂时阻塞,等待其他任务释放资源之后,满足资源要求才能被调度为就绪态,排队等待CPU资源处于就绪态的任务,优先级最高的被先执行。5)资源列表:任务占用的资源列表。资源列表是给资源管理模块查询使用的。当系统出现资源争用时,系统查看处于阻塞态的任务,可以将申请到而未使用的资源释放,以便某些任务先完成,之后释放所占资源,解除阻塞态任务。6)其他字段:每个任务还有其他的一些附加字段,存储一些信息。 (2)资源管理算法。嵌入式系统的资源是有限的,在多个任务间有效地管理资源,实现资源的合理分配回收,最大限度降低任务由于资源不足而被迫阻塞的情况,提高系统运行效率。 每个资源分配如下信息字段:资源名称(任务按照这个名称来申请资源);资源类别;资源状态(空闲,已被申请);资源拥有者(当前谁申请到);资源使用状态(使用中,未使用);其他字段。系统中的内存、IO、中断资源等等都可以规划为资源,供任务申请使用。 2.编码实现 (1)任务调度。 数据结构 struct TaskNode{ UINT uTaskID; // 任务编号 char szTaskName[MAXTASKNAMELEN+1]; //任务名称 UINT uPrior; // 任务优先级 UNIT uStatus; // 任务状态 FUNCPTR entryPt; // 任务函数入口 struct ResourceNode *lpResource; // 资源列表 … } 调度算法: 1)在不同优先级的任务中采用抢先式多任务调度,优先级别高的任务被优先分配CPU资源(见图1)。 2)同一级别的任务之间采用时间片轮转机制,确保每个任务都会有取得CPU资源的机会,都会被公平地调度和执行。如果不采用轮转机制,当系统中存在多个相同优先级的任务共享CPU时,第一个获得CPU的任务可以不被阻塞地独占CPU。如果没有阻塞或其他情况出现,他从不会给其他相同优先级的任务运行的机会。轮转机制是使用时间片来实现这上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 |
|
|
|
上一个论文: 基于Linux操作系统的网络编程方法研究 下一个论文: 2011年计算机实习报告范例 |
|