|
引用:
多任务 你实现过没有 ,难道就是用 很多中断 轮流查询执行一些 程序模块
可是多任务的时候,有时那个任务很长的时候,要求分步处理
你怎么确定上次的 执行后状态
而且怎么在任务执行一部分的时候,退出执行其他任务,然后 一段时间后,回来执行上次哪个没有处理完毕的任务呢???
|
|
多任务操作系统的基本功能至少有三个:“任务调度”、“现场保护及恢复”、“灾难处置”,前两个功能既相互支持,又相互依赖。
所谓“任务调度”,在430中就是利用定时中断,实现“时间片”功能。综合各个单独任务对时间片的占用度要求及使用顺序,进行及时、合理的切换,就是多任务操作系统的“任务调度”能力。可见,“任务调度”的实质就是实现时间资源的分配。
所谓“现场保护及恢复”,是实现“任务调度”的必要条件。“现场保护”的实质就是在操作系统的统一调配下,实现各个单独任务对CPU和RAM共享部分的占用。具体来讲,“现场保护及恢复”有两个功能:
1、在进行“任务调度”前,保护当前任务的运行状态和中间结果并中断当前任务的执行;
2、在使能后继任务前,恢复(或初始化)其状态和资源占用。
可见,“现场保护及恢复”的实质就是实现计算资源(CPU及共享RAM)的分配。
“灾难处置”,是指操作系统对任务栈实现维护,传递任务指针。必要时,重新初始化系统并运行。
具体代码,请搜索uCOS_II。 |
|