一、文件系统基础
1. 文件控制块和索引结点
(1)文件控制块
- FCB是用来存放控制文件需要的各种信息的数据结构(2009)
- FCB的有序集合称为文件目录,一个FCB就是一个文件目录项
(2)索引结点
- 目录项结构:文件名+索引结点号(2020)
- 磁盘索引结点
- 内存索引结点
- 文件被打开时要将磁盘索引结点复制到内存索引结点便于以后使用
(3)图示

2. 文件的操作
(1)文件的基本操作
操作 | 描述 |
---|
创建文件 create | 分配一定的外存空间并创建一个目录项(参数:所需外存大小、文件存放路径、文件名) |
读文件 read | 参数:文件描述符fd、buf缓冲区首址、传送的字节数n(2012) |
写文件 write | 提供文件描述符、写回多少数据、写回外存的数据在内存什么位置 |
文件定位 | 搜索目录以找到适当的条目, 并将当前文件位置指针重新定位到给定值 |
删除文件 delete | 释放外存空间并删除目录项(参数:文件存放路径、文件名)(2013)删除文件不必完成的操作是删除文件的快捷方式(2021) |
截断文件 | 删除文件内容但文件所有属性不变 |
(2)文件的打开与关闭
- 打开open:将文件属性从外存复制到内存打开文件表的一个表目中并将文件描述符fd返回给用户(2014)
- 此后对文件的读写操作不使用文件名而使用文件描述符,只有在操作文件时才把文件调入内存
- 关闭close:把进程打开文件表的相应表项删除,把系统打开文件表的打开计数器-1
两级表:

关于进程的打开文件表和系统的打开文件的辨析十分重要,此处经常出题:①不同的进程中会出现相同的文件描述符,它们可能指向同一个文件,也可能指向不同的文件②各进程的用户打开文件表中关于同一个文件F的读写指针位置一般不同(2017)③各进程的用户打开文件表中关于同一个文件F的表项内容一般不同(2020)④所有进程都关闭文件F时,系统打开文件表才会删除文件F对应的表项(2020)
3. 文件保护
(1)口令保护
- 访问文件首先要输入口令,口令存在于FCB或索引结点中,不安全
(2)加密保护
(3)访问控制
- 特点
- 对于一个文件的访问,常由用户访问权限和文件属性共同限制
- 访问控制列表(ACL)有三种用户类型:拥有者、组、其它
- 若用户和拥有者在同一组,则按照同组权限访问,否则只能按其它用户权限访问
- 图示 (2017)

4. 文件的逻辑结构
无结构文件(流式文件):以字节为单位,如源程序文件、目标代码文件
无结构文件考查较少,此处重点介绍有结构文件(记录式文件):
(1)顺序文件
记录类型 | 结构 | 特点 |
---|
变长记录 | | 无法随机存取 |
定长记录 | 串结构 | 记录之间的顺序与关键字无关,无法快速存取 |
定长记录 | 顺序结构 | 记录顺序与关键字有关,可以快速存取 |
- 特点
- 优点:进行批量存取效率最高;缺点:修改、增加、删除记录比较困难
(2)索引文件
- 组成
- 索引表
- 索引号+长度+指针(指向逻辑文件)
- 索引表是定长记录的顺序文件
- 特点
- 优点:增删方便,不定长记录也能随机存取;缺点:花费空间
(3)顺序索引文件
- 流程
- 利用索引表找到记录所在的记录组的第一个记录
- 利用顺序查找法找到所需要的记录
- 特点
(4)直接文件或散列文件
- 给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址,可能会产生地址冲突
5. 文件的物理结构
(1)连续分配
- 每个文件占用一组连续的块,文件的目录条目包含(开始块、块数)(访磁盘1次)
- 优点:可以随机访问、访问很快(磁盘寻道时间短)(2013)
- 缺点:不利于文件扩展和删除,会产生磁盘碎片
(2)链接分配
①隐式链接
- 文件目录包括文件的首块指针和尾块指针,中间盘块之间相互链接对用户透明(访磁盘n次)
- 优点:不需要连续存放,不存在外部碎片
- 缺点:只能顺序访问,不能随机访问
②显式链接
- 把各指针显式存放在文件分配表(FAT)
- FAT表项:盘块号+下一块地址
- FAT系统只有一张,开机后常驻内存
(3)索引分配
- 为每个文件创建一个索引表(块):逻辑块号+物理块号(访磁盘m+1次)
- 优点:可以随机访问,文件长度可变(2009、2020)
- 缺点:需要索引快,增加了系统存储空间的开销
(4)支持大文件机制
- 链接方案
- 多层索引
- 混合索引

二、目录
1. 目录结构
(1)单级文件目录
(2)两级目录结构
(3)树形文件目录
- 绝对路径:从根目录出发的路径
- 相对路径:从当前目录出发的路径(加快文件索引速度)(2010)
2. 文件共享
(1)有向无循环图(硬链接)
- 图示

- 特点
- 各个用户的目录项指向同一个索引结点
- 索引结点中有链接计数器count,只有count=0时才能删除
(2)符号链接(软链接)
图示

特点
- 文件主才拥有指向索引结点的指针,其他文件只有该文件的路径名
- 当文件主删除文件后其它文件通过符号链接访问会失败,此时不会产生什么影响,可以把符号链接删除
- 优点:删除文件不会留下悬空指针;缺点:需要查询多级目录,时间长
- 建立符号链接时,引用计数值count直接复制(2009)
4.3文件系统
1. 文件系统布局
(1)图示

(2)简单描述
概念 | 描述 |
---|
主引导记录 MBR | 位于磁盘的0号扇区,确定活动分区并读入其中的引导块 |
分区表 | 给出每个分区的起始和结束地址 |
引导块 | 启动该分区中的操作系统 |
超级块 | 包含文件系统的所有关键信息(每个分区块的数量和块的大小、 空闲块的数量和指针、 空闲的FCB数量和FCB指针) |
空闲空间管理 | 用位示图或指针链接的形式给出空闲块的信息 |
i结点区 | 存放i-node结点,每个文件对应一个i-node结点 |
根目录 | 存放文件系统目录树的根部 |
2. 外存空闲空间管理
(1)空闲表法

(2)空闲链表法
空闲空间管理方式 | 描述 |
---|
空闲盘块链 | 所有空闲空间以盘块为单位拉成一条链 |
空闲盘区链 | 所有空闲盘区(每个盘区可包含若干个盘块) 拉成一条链 |
(3)位视图法
- 用二进制的一位来表示磁盘中一个盘块的使用情况(0空闲1分配)(2015计算位视图具体位置)
(4)成组链接法
- UNIX系统使用,适合大文件,把空闲扇区用指针链接起来

(5)文件分配表(2019)
文件分配表(File Allocation Table,简称FAT)是计算机文件系统中的一个重要数据结构,它用于记录文件存储在存储设备(如硬盘、闪存盘等)上的位置。FAT系统最初是为MS-DOS操作系统设计的,后来被Windows操作系统所采用,尽管Windows后来推出了更先进的文件系统,如NTFS。
FAT的工作原理如下:
- 磁盘分区:磁盘被分成多个分区,每个分区可以包含一个文件分配表。
- 存储单元:磁盘被进一步划分为多个存储单元,这些单元通常称为“簇”(cluster)。每个簇可以包含一个或多个连续的扇区。
- 文件分配表:FAT本身是一个表格,其中包含了磁盘上每个簇的状态信息。每个表项对应一个簇,记录了以下信息:
- 该簇是否空闲。
- 如果簇已被文件使用,它是指向文件下一个簇的指针,或者是一些特殊值,如“结束簇”标记。
- 文件存储:当一个文件被保存时,文件系统会查找FAT中空闲的簇,并将这些簇的编号记录下来。如果文件超过一个簇,FAT会记录一个链,指示文件下一个簇的位置。
- 文件读取:当读取文件时,文件系统会根据FAT中的链来定位文件的数据簇,并按顺序读取这些簇,直到遇到结束簇标记。
FAT有几种不同的版本,如FAT12、FAT16、FAT32等,这些数字代表了FAT表项的大小,即它们可以引用的簇的数目。例如,FAT16每个表项可以引用2^16(65536)个簇,而FAT32每个表项可以引用2^32(4294967296)个簇。
随着磁盘容量的增加和文件大小的增长,FAT文件系统在处理大容量磁盘和大型文件时显得力不从心,因此出现了更先进的文件系统,如NTFS(New Technology File System),它提供了更好的性能、更大的容量支持和更强的可靠性。
3. 虚拟文件系统
(1)概念
- 概念:屏蔽了不同文件系统的差异和操作细节,向用户程序提供统一的调用函数
- 抽象了四种对象类型:超级块对象、索引结点对象、目录项对象、文件对象
- 并不是实际的文件系统且只存在于内存中,在系统启动时建立在系统关闭时消亡
(2)例子
