发明名称 媒体播放装置上实现多任务的方法
摘要 本发明提出一种利用时间片轮转实现多种任务于媒体播放装置上应用的方法。该方法主要包括所述控制器单元的任务分解过程、定义优先级任务过程、创建任务描述符过程、初始化过程、时钟调度过程、执行任务过程、空闲任务过程、挂起任务调度过程、时钟中断任务过程。其中,多个任务按照设置于控制器单元中特定的算法在一定时间内运行,各个任务轮流占有CPU及其它系统资源并相互交替运行。由于在短时间内各个任务均被执行,故从使用者的角度看,则是各个任务在同一时间内运行,从而实现多种任务于媒体播放装置上的应用。
申请公布号 CN1940858B 申请公布日期 2011.06.15
申请号 CN200510100041.9 申请日期 2005.09.26
申请人 深圳市朗科科技股份有限公司 发明人 刘一宁
分类号 G06F9/00(2006.01)I 主分类号 G06F9/00(2006.01)I
代理机构 北京英赛嘉华知识产权代理有限责任公司 11204 代理人 余朦;王艳春
主权项 一种在媒体播放装置上实现多任务的方法,其包括以下步骤:控制器单元的任务分解过程、创建任务描述符过程、创建任务描述符数组过程、初始化过程、时钟调度过程、执行任务过程、空闲任务过程、挂起任务调度过程、时钟中断任务过程;其中,在所述任务分解过程,将所述媒体播放装置的各种功能分解为多个任务;在所述创建任务描述符过程,创建已分解任务的描述符,所述描述符包括为了描述每一任务的特征所必须的数据,包括:任务ID号、任务优先级、任务运行状态、任务的时钟节拍数、任务执行代码的首地址、任务栈首地址、任务栈大小;在所述创建任务描述符数组过程,创建任务描述符数组,将所有任务的任务描述符地址存放在所述数组中;在所述初始化过程,配置每一个任务所须的堆栈大小,分配任务堆栈空间,分配系统唯一的任务ID号,设置任务优先级,设置任务运行状态为就绪状态,将任务的时钟数清零,记录任务执行代码的首地址,记录任务任务栈的首地址及大小;在初始化完毕之后,跳转至所述时钟调度过程,判断是否有正处于运行状态的当前任务,若有,则将所述当前任务的任务状态由运行状态修改为就绪状态,然后查找处于就绪状态的任务中优先级最高的任务;若没有,则直接查找处于就绪状态的任务中优先级最高的任务;如果未查找到处于就绪状态的任务,则执行所述空闲任务过程;如果查找到处于就绪状态且优先级最高的任务为所述当前任务,则将所述当前任务的状态修改为运行状态,并跳转至所述当前任务的当前代码地址运行,以执行所述执行任务过程;如果查找到处于就绪状态且优先级最高的任务不是所述当前任务,则当前的系统现场数据保存到当前任务的任务栈中,复制优先级最高的就绪任务的任务栈到当前现场,将处于就绪状态且优先级最高的任务修改为处于运行状态,并跳转至该任务的当前代码地址运行,以执行所述执行任务过程;在所述空闲任务过程,跳转至挂起任务调度程序代码地址处执行所述挂起任务调度过程;在所述挂起任务调度过程,将当前任务的状态由运行状态修改为挂起状态,将当前的系统现场数据保持到当前任务的任务栈中,并查找优先级最高、任务状态为就绪状态的任务;若存在符合条件的任务,则复制优先级最高的就绪任务的任务栈到当前现场,将处于就绪状态且优先级最高的任务修改为处于运行状态,并跳转至该任务的当前代码地址运行,以执行所述执行任务过程;若没有找到符合条件的任务,则跳转至空闲任务的当前代码地址处执行所述空闲任务过程;当接收到时钟中断请求时,执行所述时钟中断过程,即,跳转至所述时钟任务调度程序代码地址处执行所述时钟调度过程,其中,所述查找是通过扫描所述任务描述符数组而实现。
地址 518057 广东省深圳市南山区高新南一道中国科技开发院孵化大楼六楼深圳市朗科科技有限公司