嵌入式系统设计师学习笔记十九:文件管理

基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。
数据项:数据项是最低级的数据组织形式,分为基本数据项和组合数据项。

记录:记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。

文件:文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。

文件组织结构:

逻辑结构
流式文件(无结构文件):文件的长度是以字节为单位的,对流式文件的访问,则是利用读、写指针来指出下一个要访问的字符。

可以把流式文件看做是记录式文件的一个特例:一个记录仅有一个字节。

记录式文件(有结构文件):在记录式文件中,每个记录都用于描述实体集体中的一个实体,各记录有着相同或不同数目的数据项。(记录的长度可分为定长和不定长两类)

物理结构
顺序结构:在顺序文件中,可以按照不同的顺序进行排序。

链接结构:若已知当前文件的地址,通过文件指针的方式寻址到下一个文件的首地址,将不同文件通过文件指针链接起来。

索引结构:通过建立不同级别的索引结构,能够扩大文件索引的索引范围。

文件控制块(FCB):

为了能对系统中的大量文件施以有效的管理,在文件控制块中,通常应含有三类信息,基本信息、存取控制信息及使用信息。

①基本信息类:文件名、文件物理位置、文件逻辑结构、文件物理结构等。
②存取控制信息类:文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。
③使用信息类:文件的建立日期和时间、文件上一次修改的日期和时间,以及当前使用信息。

树形目录结构:

绝对路径:从根目录到当前目录的路径。
相对路径:从当前目录的前一级目录到当前目录的路径。

在下图中,对于文件F2来说,
其绝对路径为:/D1/W2/F2
其相对路径为:W2/F2
(第一层的‘/’表示根目录)

空闲存储空间的管理:

位示图法


在上图中很好理解,当我们订机票的时候,黄***域表示已出售的座位(不可占用),绿***域表示未出售的座位(空闲)。通过这种方法,哪里的座位空闲,哪里的座位已售一目了然。

在磁盘管理中也可利用此法,每个盘块若为0则空闲能够进行存储操作,若为1则已被占用不可存储。

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应盘块空闲;当为“1”时,表示已分配。

盘块的分配
根据位示图进行盘块的分配时,可分为三步进行:

1、顺序扫描位示图,从中找出一个或一组其值为0的二进制位(“0”表示空闲时)。
2、将所找到的一个或一组二进制位转换成与之相应的盘块号。
假定找到的值为“0”的二进制位位于位示图的第i行,第j列,n表示每行的位数,
则与其对应的盘块号为:b = n*(i-1) + j   
3、修改位示图,令map[i,j] = 1 表示该盘块已分配

盘块的回收
盘块的回收分为两步:

1、将回收盘块的盘块号转换成位示图中的行号和列号。
转换公式为: i = (b-1) DIV n + 1    (DIV为整除的意思)
	        j = (b-1) MOD n + 1 	(MOD为取余的意思)
2、修改位示图。令map[i,j] = 0