文件管理
第四章_文件管理
4.1 文件系统基础
4.1.1 初始文件系统
文件系统基础涉及到的内容如下:
- 文件的定义:一组有意义的信息的集合。
- 文件的属性:文件名、标识符、类型、位置、大小、保护信息…
- 文件内部应该如何被组织起来(文件的逻辑结构)。
- 文件之间应该如何被组织起来(目录结构)。
- 操作系统应向上提供哪些功能(create、delete、open、close、read、write 系统调用)。
- 文件应如何存放在外存中(文件的物理结构)。
- 操作系统如何管理外存中的空闲块(存储空间的管理)。
- 操作系统需要提供的其他文件管理功能:文件共享,文件保护。
4.1.2 文件的逻辑结构
本小节思维导图如图所示:

4.1.2.1 有结构文件 - 顺序文件
拓展:采用这种文件管理方式,操作系统通常会利用日志功能,将多次修改先记录下来并延迟写盘,以提高效率和保证可靠性。对于按关键字有序组织的顺序文件,若经过多次插入和删除操作后需要重新整理文件,则可能利用数据结构中的外部归并(外部排序技术)来恢复或维护文件的有序性。
4.1.2.2 有结构文件 - 索引文件
这种方式的缺点在下面。
4.1.2.3 有结构文件 - 索引顺序文件
但是这种结构舍弃了索引文件中索引表的地址字段,所以索引顺序文件默认更适合定长记录。
为了进一步提高检索效率,还能够进一步优化为多级索引文件:

4.1.3 文件目录
本小节思维导图如图所示:

4.1.3.1 文件控制块和索引节点
文件控制块(FCB) 是用于存取控制文件所需的各种信息的数据结构,以实现按名存取。每个文件对应一个 FCB。 主要包括以下几类信息:
- 基本信息:文件名、物理位置、逻辑结构、物理结构等。
- 存取控制信息:包括文件主、核准用户和一般用户的访问权限。
- 使用信息:如文件的创建时间、最后修改时间等。

索引节点 是对文件控制块的一个优化:

4.1.3.2 目录结构
单级目录结构和两级目录结构 已成为过去式,了解就好:
多级目录结构(树形目录结构) 才是现在操作系统常使用的结构:
由于 树形目录结构不利于实现文件的共享(这里主要是说用户间文件的共享),因此出现了 无环图目录结构(了解即可):

4.1.4 文件的物理结构(文件分配方式)
本小节总结如下图所示:

4.1.4.1 连续分配

4.1.4.2 链式分配
链式分配(隐式链接):
如果没指明显示还是隐式链接,默认是隐式链接。
链接分配(显式链接):

4.1.4.3 索引分配
一个文件一张(或一套)索引表,索引分配有三种方案:
索引分配(单级索引分配):
索引分配(多级索引分配):
若一个文件很小,本来只占一个磁盘块,但是也需要 K + 1 次磁盘 I / O(顶级索引表未调入内存的情况)
索引分配(混合索引分配):
为了兼顾小、中、大乃至特大文件的访问效率,需要 根据文件大小动态的分配选用最合适的分配策略,通常采用混合索引分配方式:
本小节总结如下:

ChatGpt: 磁盘I/O次数主要由文件的物理结构和访问模式(逻辑结构的)决定,而不是由文件的逻辑结构本身决定。逻辑结构更多影响的是查找和处理方式,物理结构直接影响外存访问效率。
4.1.5 文件存储空间的管理
本小节思维导图如下图所示:
存储空间的划分与初始化 如图所示:

4.1.5.1 空闲表法

4.1.5.2 空闲链表法

4.1.5.3 位示图法

4.1.5.4 成组链接法
空闲表法和空闲链表法均不适用于大型文件系统,为此,Unix 融合了以上两种方法的思想,采用了成组链接法。
成组链接法的基本概念 示意如图所示:
用每组的第一个盘块做索引块:
如何进行分配 如图所示:
分配一个磁盘块:
分配一百个磁盘块:
如何进行回收:

4.1.6 文件的几种基本操作
本小节思维导图如图所示:

4.1.6.1 创建文件

4.1.6.2 删除文件

4.1.6.3 打开文件
从目录表中复制到内存的 FCB 应该只是复制的关键信息,不是整个复制。

4.1.6.4 关闭文件

4.1.6.5 读文件

4.1.6.6 写文件

4.1.7 文件共享
本小节思维导图如图所示:

4.1.7.1 硬链接

4.1.7.2 软连接

4.1.8 文件保护
口令保护:
加密保护:
访问控制:

4.2 文件系统
4.2.1 文件系统结构
文件系统结构构如下图所示:
用一个例子来辅助记忆:

4.2.2 文件系统布局
新磁盘首先要进行 格式化,如图所示:
而前面提过的打开文件表在整个文件布局中的这个位置:

4.2.3 虚拟文件系统
虚拟文件系统概念如下图所示:
关于一个新文件系统,如要进行要 挂载 ,具体要先做下面这些事:
