革新科技 来源:革新科技 日期:2011/5/7 9:22:20 阅读:1926 次 |
|
利用μC/OS嵌入式操作系统的任务调度算法,巧妙地实现了简易的嵌入式数据管理。首先详细描述了μC/OS任务调度算法的原理,在此基础上提出了利用该算法实现嵌入式数据管理的基本思想,最后根据实际应用需要,对该算法进行改进并给出数据管理关键流程的详细实现方法。该方法有效解决了传统方法存在的存储空间碎片问题,且实现简单,可广泛应用于低端嵌入式应用中的数据管理。
随着嵌入式系统的飞速发展,如何在嵌入式系统中实现数据管理也越来越引人关注,常用的方法是采用嵌入式数据库。但是目前常用的嵌入式数据库(如SQLite、Berkeley DB等)均需嵌入式操作系统的支持,且对嵌入式系统的内存、CPU处理速度等有较高要求,只能应用在比较高端的嵌入式系统中。在低端的嵌入式系统中,传统的数据管理方法是对数据存储空间按顺序编号,数据存储与删除均根据编号顺序操作。这种方法在多次删除后会出现很多存储空间碎片,一方面加大了程序查找空闲存储空间的难度,数据管理操作时间长(类似微机系统中硬盘长时间不做磁盘碎片整理会造成程序运行变慢的情况),另一方面可能造成存储空间利用率降低。本文提出了一种利用μC/OS任务调度算法实现的数据管理方法,该方法实现简单,无需嵌入式操作系统的支持,可应用于低端的嵌入式系统中,而且可以有效克服低端嵌入式应用中传统数据管理方法的缺陷。μC/OS任务调度算法<BR>μC/OS是一种占先式的多任务嵌入式操作系统,它可以管理多达64个任务,μC/OS中,每个任务的优先级不一样且是唯一的,优先级最高的任务一旦准备就绪,则拥有CPU所有权并开始投入运行,所以,μC/OS的任务调度算法的基本思想就是,查找当前准备就绪的最高优先级的任务,并进行任务切换。实现上述任务调度算法主要包含两个步骤:确定目前哪几个任务处于就绪态,确定目前处于就绪态的任务中哪个优先级最高。为此,μC/OS提供了两个全局变量OSRdyTbl[]和OSRdyGrp。OSRdyTbl[]数组是任务就绪表,包含 8个字节(共64位),相当于把64个任务分为8组,每组8个任务,这64位数据的0、1状态分别代表64个任务是否处于就绪态(0代表空闲,1代表就绪);OSRdyGrp为1个字节数据(8位),每一位的0、1状态分别代表OSRdyTbl[]数组的相应字节是否非零(即该组中是否有任务处于就绪态)。通过这两个全局变量的赋值就可实现任务就绪态与空闲态的切换,这是μC/OS实现任务调度的基础.
|