首页 » 技术文章 » 基于μC/OS任务调度算法的嵌入式数据管理

基于μC/OS任务调度算法的嵌入式数据管理

作者:  时间:2011-07-12 19:25  来源:EDN

  利用μC/OS任务调度算法实现嵌入式

  数据管理在低端的嵌入式应用中,数据管理的主要功能就是数据存储与数据删除。传统的做法是对数据存储空间按地址顺序编号,数据存储与删除均根据编号操作,每个编号的存储空间还提供了标志位,用于判断该空间是否已被占用。这种方法有一个很大的弊端:多次删除后会出现存储空间碎片,这造成后续操作中查找空闲空间耗时较长,且存储量越大,这个现象越严重,大大降低了数据管理操作的效率。有些程序员为了解决这个弊端对删除操作只提供删除所有记录的功能,不提供单独删除某个记录的功能,但这显然牺牲了产品的易用性。本文利用μC/OS任务调度算法实现嵌入式数据管理,可有效解决以上问题。

  2.1  基本思想

  利用μC/OS任务调度算法实现嵌入式数据管理的基本思想是:将μC/OS中的任务优先级与数据管理的记录号对应,将任务就绪态存储空间空状态(注意,不是存储空间满状态)对应,将任务空闲态存储空间满状态对应,将使任务进入就绪态数据删除对应,将使任务进入空闲态数据存储对应,将查找当前处于就绪态的最高优先级任务查找当前空闲存储空间对应。即在实际应用中,数据存储前先根据μC/OS中的查找当前处于就绪态的最高优先级任务的方法查找目前优先级最高的空闲存储空间,获得相应记录号,然后在数据存储后根据μC/OS中的使任务进入空闲态的方法使相应记录的存储空间置为状态;数据删除后根据μC/OS中的使任务进入就绪态的方法使相应记录的存储空间置为状态。显然,该方法较传统方法有两大优点:查找空闲存储空间的速度远高于传统方法,且查找时间为常数,即查找时间与记录数无关(传统方法的查找时间随记录数递增);不会出现存储空间碎片,因为本方法按优先级存储数据,删除的存储空间的优先级肯定高于未使用的存储空间,则在后续存储操作中会将其优先用于存储,从而也就避免了存储空间碎片的出现。

  2.2  算法的改进

  μC/OS的最大任务数为64,这意味着直接采用μC/OS任务调度算法实现的数据管理的最大记录数也仅为64个,这显然不适用于多数应用场合,因此需对算法进行改进。本方法引入的概念,即每64个记录为1页,数据存储前先查找包含空记录的页号,然后在该页中查找空记录。查找包含空记录的页号的方法与查找空记录的方法相同(即都根据μC/OS中的查找当前处于就绪态的最高优先级任务的方法查找),因此最大记录数为64记录/×64=4096个记录。依此类推,可继续扩大存储记录数。为了理解方便,下文代表记录空闲状态和页内记录号的全局变量定义为OSRdyTbl[64][8]OSRdyGrp[64]prio,代表页空闲状态和页号的全局变量定义为OSRdyPageOSRdyPageTbl[8]PrioPage,代表记录在整个存储空间的序号定义为RecordNo(则RecordNo = PrioPage×64+prio)。

  2.3  嵌入式数据管理主要步骤的实现

  2.3.1  数据初始化

  在嵌入式系统刚运行时,所有记录应为空状态,因此需将代表记录空闲状态和页空闲状态的全局变量OSRdyTbl[]OSRdyGrpOSRdyPageTbl[]OSRdyPage的所有字节均初始化为0xff(因为“1”代表空闲)。

  2.3.2  数据存储

  数据存储前先要找到优先级最高的空记录,其流程为先找到含空记录的页号,然后在该页中查找空记录号,最后根据页号和空记录号计算出当前可用于存储且优先级最高的存储空间的序号。详细程序如下:

  根据以上程序得到序号后,就可以将数据存储到相应存储空间了,存储完成后需将该序号的存储空间设置为状态,具体流程为:先将该页中的记录号置为状态(即清零相应位),然后判断本页中是否所有记录均为,若是则置该页的状态为。详细程序如下:

  2.3.3  数据删除

  数据删除即将存储序号RecordNo对应的页号和记录号的存储状态设置为(则该记录可用于后续的存储),具体流程为:先设置页号为(因为只要该页中任意一个记录为,则页的状态即为),然后设置记录号的状态为,详细程序如下:

  按以上方法将相应序号的存储空间设置为空状态,则在后续操作中该存储空间可用于存储。

  3 结语

  本文利用μC/OS嵌入式操作系统的任务调度 算法并加以改进,巧妙地实现了简易的嵌入式数据管理,与传统方法比较,该方法具备不出现存储空间碎片、数据管理操作效率高等优点,可广泛应用于低端嵌入式应用中的数据管理。该方法已在笔者所开发的SF6电气设备分解产物检测仪及智能抄表终端中应用,运行稳定可靠。

相关推荐

AMD与英特尔“芯”仇旧恨:没完没了

AMD  CPU  2014-01-17

晶心科技日本初试金石 成功获得上市公司大厂青睐

晶心  CPU  2013-11-08

解读:为什么中国IC业市场由国外企业主导?

CPU  桥接芯片  2013-09-05

全球最大IC市场徒有其表?国产难以替代进口

CPU  桥接芯片  2013-08-28

龙芯中科胡伟武:寻找突破CPU瓶颈的举国体制

龙芯  CPU  2013-08-23

中国IC业“芯”结求解:进口替代难见起色?

IC  CPU  2013-08-23
在线研讨会
焦点