大容量内存文件系统设计及μC/OS下的实现
数据块链表中申请一定数量的数据块;当删除文件时,系统将数据块插入到此链表中。
2EMFS在μC/OS系统下的实现和性能分析
2.1EMFS是μC/OS下的实现流程
μC/OS是一个多任务的实时性嵌入式操作系统,得到了广泛的使用。μC/OS公开了它的实时性内核源码,同时提供了内存管理的接口和函数。通过在其实时内核的基础上进行少量的修改,便可将EMFS移植到μC/OS系统中。图4是EMFS在μC/OS下的初始化流程。
初始化完毕后,在μC/OS系统中建立EMFS的三主要数据结构,随后就可以向EMFS中读写文件并进行测试。图5和图6分别是读写文件的流程。
2.2EMFS的性能测试与分析
通过将EMFS移植到μC/OS系统,便可以对EMFS的性能进行分析。前面提到,EMFS的主要特点是有效高的查找速度和内存利用率。现在,从这两方面分别对EMFS进行性能测试和分析比较。
(1)平均查找次数
通过加入8000个平均长度为20KB的文件到EMFS中,这可以在对全局Hash表的基本表设定不同大小的情况下,随机地读出一定数量的文件来统计EMFS的平均查找次数。这里设定基本表的大小分别为1024和2048,读出文件数量分别为500、1000、2000、4000和8000个,平均查找次数的统计结果具体如表1所列。
读出文件数
查找次数
基本表项数500100020004000800010241.2041.4891.9422.9744.90420481.0981.2311.4651.9662.95
从表1可以分析出以下几点:
①8000个文件全部读出所需的平均查找次数最多不到5次;而当Hash表采用顺序表时,使用拆半查找法得到的平均查找次数为└log28000┘+1=13次,可见EMFS的查找效率非常高,而且它不增加时间和空间的复杂度。
②读出的文件数量越少,平均查找次数越少。因为文件是随机选择的,故读出的文件越少,它们对应的Hash值在基本表中越分散,因而比较次数相应较少。
③基本表包含的Hash项越多,EMFS的平均查找次数越少。这是因为基本表越大,Hash值取模后落在基本表的概率就越大,因此比较的次数就越少。但要注意一点,在实际应用中基本表并不是设置得越大越好,基本表设置得越大,相应地溢出表就越小。当把溢出表项用完之后,基本表可以还没有用完,但这时已经不能够再添加文件了,这样系统效率反而会降低。
(2)内存利用率
EMFS的内存利用率可以从两个方面来表现:一对文件进行选择性压缩的机制;二是内存数据块大小的选择。
对文件进行压缩存储可以提高内存利用率,然而文件的压缩和解压需要耗费一定系统时间和资源,这在一定程序上会降低系统的性能,因此需对文件进行选择性压缩。具体方法是对文本等压缩比例高的文件进行压缩存储,对数据等压缩比例低的文件,则选择直接存储。
另外,对文件数据块大小的选择也会影响内存利用率。在EMFS中,文件数据存储的基本单位是一个内存数据真。这样,每个文件的最后一个数据块很可能会用不完,平均来看,每个文件会浪费1/2个数据块。在文件数据块为1KB和2KB的情况下 《大容量内存文件系统设计及μC/OS下的实现(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/143071.html
2EMFS在μC/OS系统下的实现和性能分析
2.1EMFS是μC/OS下的实现流程
μC/OS是一个多任务的实时性嵌入式操作系统,得到了广泛的使用。μC/OS公开了它的实时性内核源码,同时提供了内存管理的接口和函数。通过在其实时内核的基础上进行少量的修改,便可将EMFS移植到μC/OS系统中。图4是EMFS在μC/OS下的初始化流程。
初始化完毕后,在μC/OS系统中建立EMFS的三主要数据结构,随后就可以向EMFS中读写文件并进行测试。图5和图6分别是读写文件的流程。
2.2EMFS的性能测试与分析
通过将EMFS移植到μC/OS系统,便可以对EMFS的性能进行分析。前面提到,EMFS的主要特点是有效高的查找速度和内存利用率。现在,从这两方面分别对EMFS进行性能测试和分析比较。
(1)平均查找次数
通过加入8000个平均长度为20KB的文件到EMFS中,这可以在对全局Hash表的基本表设定不同大小的情况下,随机地读出一定数量的文件来统计EMFS的平均查找次数。这里设定基本表的大小分别为1024和2048,读出文件数量分别为500、1000、2000、4000和8000个,平均查找次数的统计结果具体如表1所列。
读出文件数
查找次数
基本表项数500100020004000800010241.2041.4891.9422.9744.90420481.0981.2311.4651.9662.95
从表1可以分析出以下几点:
①8000个文件全部读出所需的平均查找次数最多不到5次;而当Hash表采用顺序表时,使用拆半查找法得到的平均查找次数为└log28000┘+1=13次,可见EMFS的查找效率非常高,而且它不增加时间和空间的复杂度。
②读出的文件数量越少,平均查找次数越少。因为文件是随机选择的,故读出的文件越少,它们对应的Hash值在基本表中越分散,因而比较次数相应较少。
③基本表包含的Hash项越多,EMFS的平均查找次数越少。这是因为基本表越大,Hash值取模后落在基本表的概率就越大,因此比较的次数就越少。但要注意一点,在实际应用中基本表并不是设置得越大越好,基本表设置得越大,相应地溢出表就越小。当把溢出表项用完之后,基本表可以还没有用完,但这时已经不能够再添加文件了,这样系统效率反而会降低。
(2)内存利用率
EMFS的内存利用率可以从两个方面来表现:一对文件进行选择性压缩的机制;二是内存数据块大小的选择。
对文件进行压缩存储可以提高内存利用率,然而文件的压缩和解压需要耗费一定系统时间和资源,这在一定程序上会降低系统的性能,因此需对文件进行选择性压缩。具体方法是对文本等压缩比例高的文件进行压缩存储,对数据等压缩比例低的文件,则选择直接存储。
另外,对文件数据块大小的选择也会影响内存利用率。在EMFS中,文件数据存储的基本单位是一个内存数据真。这样,每个文件的最后一个数据块很可能会用不完,平均来看,每个文件会浪费1/2个数据块。在文件数据块为1KB和2KB的情况下 《大容量内存文件系统设计及μC/OS下的实现(第3页)》