保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

嵌入式系统中的线性Flash文件系统设计


};

碎片整个记录区包含两种数据类型:碎片整理文件头信息表defraghdr和文件区扇区整理前后的CRC值备份表sectorcre。具体的地址分配从空闲扇区的起始地址减1开始,往前分配文件系统扇区数乘以4字节作为sectorcrc的空间;从sectorcrc起始地址减1开始,往前分配活动文件个数乘以64字节作为碎片整理文件头信息表。这两个结构定义如下:

struct defraghdr{

struct hdr *ohdr; /*文件头的原始位置指针*/

struct hdr *nextfile; /*指向下一个文件的指针*/

long filsize; /*文件大小*/

unsigned long crc; /*这个头的CRC32值*/

unsigned long ohdrcrc; /*原始文件头CRC32值的拷贝*/

long idx; /*碎片整理表头的索引*/

long nesn; /*新的文件尾的扇区号*/

long neso; /*新的文件尾的扇区偏移量*/

char *nda; /*新的文件起始地址*/

char fname[NAMESIZE]; /*文件名*/

};

struct sectorcrc{

unsigned long precrc; /*碎片整理前扇区数据CRC32的值*/

unsigned long postcrc; /*碎片整理后扇区数据CRC32的值*/

};

从上面介绍可知,除了文件数据之外,文件系统还需要如下4种额外的开销。

①文件头:这是每个文件必须的开销,如果文件名和信息域各24字节,那么整个文件头共76字节。

②碎片整理文件头信息表:每个活动(非删除)的文件在进行碎片整理时在这个表里创建一个表项,每个表项64字节。

③碎片整理前后的扇区CRC32值表:保存文件整理前后的CRC32值,总的字节数约为文件所占扇区数的4倍。

④空闲块:用来在碎片整理过程中备份当前整理扇区数据。它必须不小于文件系统其它所有扇区。

可以用下面方程计算系统开销的总和:

overhead=(FTOT*(HDRSIZE+64))+SPARESIZE+(SECTORCOUNT*8)

其中:

FTOT是总的文件数;

HDRSIZE是文件头字节数(目前为76字节);

SPARESIZE是空闲块的大小;

SECTORCOUNT是分配给文件系统的Flash扇区数,不包括空闲块。

图2 文件碎片整理

2 碎片整理

创建新文件需要占用文件系统空间;但是,由于Flash的底层技术不允许Flash中的任意地址空间被删除,而是按照扇区为单位删除,为此在删除一个文件的时候,暂时没有把整个文件所占的空间删除,仅仅是在文件头的标识里作一个删除标识,并保留在Flash中。这样,被删除文件积累到一定的数量时,就会占用相当大的空间。因此,需要整理文件系统Flash空间,

《嵌入式系统中的线性Flash文件系统设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/148393.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。