嵌入式系统设计师学习笔记十九:文件管理
基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。
数据项:数据项是最低级的数据组织形式,分为基本数据项和组合数据项。
记录:记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。
文件:文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。
文件组织结构:
逻辑结构:
流式文件(无结构文件):文件的长度是以字节为单位的,对流式文件的访问,则是利用读、写指针来指出下一个要访问的字符。
可以把流式文件看做是记录式文件的一个特例:一个记录仅有一个字节。
记录式文件(有结构文件):在记录式文件中,每个记录都用于描述实体集体中的一个实体,各记录有着相同或不同数目的数据项。(记录的长度可分为定长和不定长两类)
物理结构:
顺序结构:在顺序文件中,可以按照不同的顺序进行排序。
链接结构:若已知当前文件的地址,通过文件指针的方式寻址到下一个文件的首地址,将不同文件通过文件指针链接起来。
索引结构:通过建立不同级别的索引结构,能够扩大文件索引的索引范围。
文件控制块(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。