6.1文件和文件系统
6.1.1文件
研究文件系统有两种不同的观点:一种是用户,另一种是系统观点
1.文件的概念
文件是具有符号名的、在逻辑上有完整意义的的一组相关信息的有序集合。通常放在外存上面。
2.文件的类型
- 按用途分:系统文件、库文件、用户文件。库文件是由系统提供给用户调用的各种标准过程、函数和应用程序等,用户对于库文件只能读取,不能进行修改。
- 按文件的保护级别:只读文件、读写文件、只执行文件、不保护文件。
- 按存取方法:顺序存取文件、随机存取文件
- 等等
6.1.2文件系统
所谓文件系统,是指被管理文件,对文件进行管理的一组软件集合以及实现管理功能所需要的数据结构的总体。
文件系统应具备以下几种功能:
- 文件存储空间的管理
- 文件目录管理:文件系统的最基本功能就是实现文件的“按名存取”
- 文件地址映射
- 文件的读写管理
- 文件共享与保护
6.1.3文件操作
包括文件的创建、删除、打开、关闭、读文件、写文件、设置文件的读写指针、获取文件的属性、重命名文件、锁定文件。
6.2文件的结构和存取
- 用户看到的文件称为逻辑文件,它是由一系列的逻辑记录组成的。
- 文件的逻辑结构,是用户直接处理的数据及其结构,又称为文件组织。用户角度
- 文件的物理结果,又称为存储结构(与存储介质和外存的分配方式有关)系统角度
6.2.1文件的逻辑结构
在进行文件的逻辑结构时,通常考虑一下几个方面:
- 提供的操作手段简单易用
- 能够提高文件信息的检索速度
- 方便文件内容易于修改
- 是数据空间紧凑,降低文件的存储费用
- 系统的灵活性好
1.有结构的文件
- 有结构文件是指整个文件由若干条记录构成,因此也称为记录式文件
- 对于有结构文件,记录是用户程序和文件系统进行信息交换的基本单位;
- 数据组织形式分为三级:数据项、记录、文件;
- 同时记录式文件分为:定长记录文件和变长记录文件
- 顺序文件:可分为串结构:按照时间顺序,先后排序,与关键字无关和顺序结构:按照关键字排序。顺序文件的优点是顺序存取的效率高但是缺点是不利于文件的查找、动态增加、删除
- 索引文件:
为主文件中的每个记录在索引表中分别设置一个表项,记录指向记录的指针以及记录的长度,索引表按照关键字排序,因此本身也是一个定长记录的顺序文件。优点是可以随机访问,利于文件的增加和删除,主要是解决了对于不定长记录文件不能随机访问的问题但是会增加存储空间的开销。 - 索引顺序文件:是顺序文件和索引文件的结合,它将顺序文件中的所有记录分成若干组,建立一张索引表,其中记录每一组第一条记录的关键字和指向该记录的指针。索引顺序文件的逻辑文件依然是一个顺序文件,当进行检索时,利用用户提供的关键字以及某种查找算法,找到该记录所在记录组的第一个记录表项,然后再利用顺序查找法去查找主文件。
- 如果在顺序文件中的记录数为N,对于顺序查找平均查找N/2,对于索引顺序文件只要查找N^(1/2)个记录。
- 克服了变长记录顺序文件的缺点。但还是要配置一张索引表,增加内存开销。
- 直接文件和散列(hash)文件:直接文件是建立关键字和相应记录物理地址之间的对应关系,即通过关键字直接找到物理地址。通常hash函数转换结果是指向记录相应表目的指针,而不是物理地址,表目内容就是物理地址。
2.无结构文件
内部不在划分记录,而是由一组相关信息组成的有序字符流,又称为流式文件,其基本单位为字节。大量的源程序、可执行程序、库函数都是流式文件形式。Unix、Linux、Windows系统中都被看走流式文件。
6.2.2文件的物理结构
- 物理块(又称为磁盘块或者簇)是磁盘上面的一组连续扇区,它是文件分配和传输信息的基本单位。簇的大小一般是2^n个扇区,如512B、1KB、2KB.....
- 物理块的大小与逻辑记录的大小无关。
- 给文件分配磁盘空间的时候,可以采用静态分配和动态分配。
1.连续文件
- 连续文件又称为顺序文件,个人觉得跟逻辑结构中的顺序文件是相对应的。
- 首先就要分配好空间,分配前就要说明创建文件所需的磁盘空间大小。
- 优点是顺序存取速度快,通常存放系统文件。
- 也可以方便的实现文件的随机存取????在逻辑结构中不是说不能够实现随机存取吗?
- 缺点存储文件要求有连续的存储空间,容易产生磁盘碎片,降低了磁盘的利用率。不方便动态增长。
2.链接文件
根据链接指针处理方式的不同,可以分为隐式链接和显示链接。
- 隐式链接:
- 文件所占据的磁盘块中最后一个单元中设置一个链接指针,用于指向下一个磁盘块的盘块号。
- 缺点是只可以对文件进行顺序存取,效率低,可靠性也比较低。
- 显示链接:
- 为了实现文件的随机存取,把链接文件的各磁盘块的连接指针,显示的存放在外存的一张链接表中。
- 文件分配表(FAT)根据表项的长度分为FAT12(12表示12位)、FAT16....MS-DOS、Windows都采用FAT。
- 由于FAT是以磁盘上的物理盘块为序,故FAT的表项数是由磁盘块的数量决定的。
- 这里有一个知识点,就是计算FAT的大小,给出磁盘分区的大小和单个磁盘块大小后,然后计算一共有多少个盘块,可以用几位二进制位表示,确定好磁盘块号的大小(每个磁盘块号的大小取半个字节的大小一个字节B有八位二进制),最后直接用盘块的数量乘以盘块号的大小。
3.索引文件
- 单级索引文件
- 系统为每个文件建立一张索引表,每个逻辑块占一个表项,以逻辑块号为序,表项内容为该逻辑块对应的物理块号。
- 优点是支持高效的随机访问。
- 不会产生外部碎片,也支持文件的动态增长。
- 多级索引文件
- 就是在一级索引的基础上再增加一个二级索引。
- 优点是提供对大文件的支持。
- 缺点是访问一个磁盘块需要启动磁盘的次数随着索引的增加而增加。
- 混合多级索引文件
1.将多种索引分配方式相组合形成一种文件。
6.2.3文件存取
- 文件系统把用户组织的逻辑文件按一定的方式转化成物理文件存放到存储介质上。存储结构不仅和存储介质的物理特性有关,还和文件的存取方式有关。
- 根据文件的存取顺序,存取方法可分为顺序存取和随机存取。文件逻辑结构不管是有结构的记录文件还是流式文件,都可以使用顺序存取或是随机存取的方式。
- 顺序存取基本上所有的物理结构的存储方式都可以。
- 随机存取是系统把它组织成索引文件,定长记录的连续文件和显示的链接文件。不过显示的链接文件需要顺序的检索FAT表,因此随机存取的效率比较低。