第四章 文件管理
一、文件系统基础
1.基本概念
2.文件的逻辑结构
顺序文件:
索引文件:
索引顺序文件:
效率分析:
多级索引顺序文件:
总结:
3.文件目录
文件控制块(FCB)
目录的基本操作:
目录结构:
树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了"无环图目录结构"。
索引结点:
总结:
4.文件的物理结构
(文件分配方式)
文件块、磁盘块:
连续分配:
- 优点:支持顺序访问和直接访问(即随机访问);连续分配的文件在顺序访问时速度最快
- 缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片
链接分配:
链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显式链接两种。
隐式分配:
隐式链接------除文件的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针。文件目录包括文件第一块的指针和最后一块的指针。
- 优点:很方便文件拓展,不会有碎片问题,外存利用率高。
- 缺点:只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针也需要耗费少量的存储空间
显式分配:
显式链接------把用于链接文件各物理块的指针显式地存放在一张表中,即 文件分配表(FAT,FileAllocation Table)。一个磁盘只会建立一张文件分配表。开机时文件分配表放入内存,并常驻内存。
- 优点:很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。
- 缺点:文件分配表的需要占用一定的存储空间。
逻辑结构与物理结构对比总结:
5.文件存储空间管理
存储空间的划分:
空闲表法:
空闲链表法:
分为空闲盘块链以及空闲盘区链
位示图法:
- 如何分配:若文件需要K个块,①顺序扫描位示图,找到K个相邻或不相邻的"0";②根据字号、位号算出对应的盘块号,将相应盘块分配给文件;③将相应位设置为"1"。
- 如何回收:①根据回收的盘块号计算出对应的字号、位号;②将相应二进制位设为"0"
成组链接法:
空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。UNIX系统中采用了成组链接法对磁盘空闲块进行管理。
文件卷的目录区中专门用一个磁盘块作为"超级块",当系统启动时需要将超级块读入内存。并且要保证内存与外存中的"超级块"数据一致
如何分配?
Eg :需要1个空闲块
①检查第一个分组的块数是否足够。1<100,因此是足够的。
②分配第一个分组中的1个空闲块,并修改相应数据
总结:
6.文件的基本操作
7.文件共享
注意:多个用户共享同一个文件,意味着系统中只有"一份"文件数据。并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。
如果是多个用户都"复制"了同一个文件,那么系统中会有"好几份"文件数据。其中一个用户修改了自己的那份文件数据,对其他用户的文件数据并没有影响。
硬链接:
软链接:
总结:
8.文件保护
口令保护:
加密保护:
访问控制:
总结:
二、文件系统
1.文件系统结构
2.文件系统布局
逻辑格式化
在外存中
在内存中
用open系统打开文件的过程
3.虚拟文件系统
普通的文件系统
虚拟文件系统
特点:
- ①向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
- ②VFS要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
- ③每打开一个文件,VFS就在主存中新建一个 vnode,用统一的 数据结构表示文件,无论该文件存储在哪个文件系统。
- 注意:vnode 只存在于主存中,而 inode(索引结点) 既会被调入主存,也会在外存中存储
存在的问题:
实现函数的过程:
文件系统挂载
主要参考:王道考研课程
后续会持续更新考研408部分的学习笔记,欢迎关注。
github仓库(含所有相关源码):408数据结构笔记