本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对
操作系统
知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!!
关于对 “文件管理” 章节知识点总结的十分全面,涵括了《操作系统》课程里的全部要点(本人来来回回过了三遍视频),其中还陆陆续续补充了许多内容,所以读者可以相信本篇博客对于考研操作系统 “文件管理” 章节知识点的正确性与全面性;但如果还有自主命题的学校,还需额外读者自行再观看对应学校的自主命题材料。
食用说明书:
第一遍学习王道课程时,我的笔记只有标题和截图,后来复习发现看只看图片,并不能很快的了解截图中要重点表达的知识点。
在第二遍复习中,我给每一张截图中 标记了重点,以及 每张图片上方总结了该图片 对应的知识点 以及自己的 思考 。
最后第三遍,查漏补缺。
所以 ,我把目录放在博客的前面,就是希望读者可以结合目录结构去更好的学习知识点,之后冲刺复习阶段脑海里可以浮现出该知识结构,做到对每一个知识点熟稔于心!
请读者放心!目录展示的知识点结构是十分合理的,可以放心使用该结构去记忆学习!
注意(⊙o⊙)!,每张图片上面的文字,都是该图对应的知识点总结,方便读者更快理解图片内容。
《操作系统》第4章 文件管理
【考纲内容】
王道 P249 ~ 296
(一) 文件
- 文件的基本概念;
- 文件元数据 和 索引结点;
- 文件的操作:创建、删除、打开、关闭、读、写;
- 文件的保护;
- 文件的逻辑结构;
- 文件的物理结构;
(二) 目录
- 目录的基本概念;
- 树形目录;
- 目录的操作;
- 硬链接 和 软链接;
(一)、(二) 网课总耗时:
4 h
(三) 文件系统
网课耗时:
0.5 h
- 文件系统的全局结构:文件系统在外存中的结构、文件系统在内存中的结构;
- 外存空间空闲空间管理方法;
- 虚拟文件系统;
- 文件系统挂载;
【复习提示】
本章内容较为具体,要注意对概念的理解;
知识点 | 考纲 | 重点掌握 |
---|---|---|
文件系统的结构及其实现 | ✔ | |
文件分配 | ✔ | |
空闲空间管理 | ✔ | |
文件控制块 | ✔ | |
物理分配方法 | ✔ | |
索引结构 | ✔ | |
树形目录结构 | ✔ | |
文件共享原理 | ✔ | |
文件系统的布局 | ✔ | |
虚拟文件系统原理 | ✔ |
4.1 文件系统基础
【问题】
- 1) 什么是文件 ?
- 2) 单个文件的逻辑结构和物理结构之间是否存在某种制约关系 ?
本节内容较为抽象,要注意区分文件的 逻辑结构 和 物理结构 ;
在学习过程中,可尝试以上面的两个问题为线索,构建整个文件系统的概念;
在前面的学习中,曾经提醒过读者不要忽略对基本概念的理解。
从历年的情况来看,大部分同学对进程管理、内存管理有较好的掌握,但对于文件管理及后面的I/O管理,往往理解不太深入。
在考试中,即使面对一些基本问题也容易失分,这十分可惜。主要原因还是对概念的理解不够全面和透彻,希望读者能够关注这个问题。
4.1.1 文件的基本概念
1. 文件的属性
- ① 文件名
- ② 标识符
- ③ 类型
- ④ 创建者
- ⑤ 所有者
- ⑥ 位置
- ⑦ 大小
- ⑧ 保护
- ⑨ 创建时间、最后一次修改时间、最后一次存取时间
2. 文件内数据的组织方式
- 无结构文件,流式文件;
- 有结构文件,记录式文件;
3. 文件之间的组织方式
![]](https://img-blog.csdnimg.cn/b18bbb4030ca48f7a8cd14d85a7333c4.png)
4. 操作系统 对 文件管理 向上提供哪些服务 ?
5. 文件如何存放在外存 ?
初步认识 文件共享 和 文件保护
小结
4.1.2 文件目录
1. 文件控制块
文件控制块 (FCB) 是用来存放控制文件需要的各种信息的数据结构,以实现 按名存取;
FCB的有序集合称为 ==文件目录,==一个FCB就是一个文件目录项;
为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,称为 目录项;
2. 目录结构
① 单级目录结构
② 两级目录结构
③ 树形目录结构
树形目录结构 不便于实现文件的共享 ;
④ 无环图目录结构
在树形结构的基础上,允许 ==使用不同的文件名指向同一个文件或目录,==需要为每个共享结点设置一个 共享计数器;
3. 索引结点
文件除文件名之外的文件描述信息,由索引结点( i 结点)保存;
文件目录中的目录项由 文件名 和 指向该文件所对应的 i 结点 的指针构成;
- 磁盘索引结点
- 内存索引结点
小结
4.1.3 文件的逻辑结构
1. 无结构文件
2. 有结构文件
记录式文件,由一组相似的 记录 组成,每条记录又由若干个 数据项 组成;
记录 还可以分为 定长记录 和 可变长记录;
有结构文件在逻辑上如何被组织起来,分成三种方式:
- 顺序文件
- 索引文件
- 索引顺序文件
① 顺序文件
② 索引文件
上面提到,可变长记录文件无法实现随机存取,那又想快速查找、又想使用可变长记录,该怎么办?
③ 索引顺序文件
如果为每个记录对应一个索引表项,那就太占用空间了;
但如果先对记录分组,只给各组对应一个索引表项,那就很大程度减小索引表所要占用的空间;
对于记录数量较大的情况,可以建立 ==多级索引表,==进一步提高检索效率;
小结
4.1.4 文件的物理结构 ⭐
1. 文件块、磁盘块
文件分配,是指如何为文件分配磁盘块,常用的磁盘空间分配方法包括:
- 连续分配
- 链接分配
- 索引分配
2. 文件分配方式 - 连续分配
每个文件在磁盘上占用一组连续的块;
连续分配的文件不方便拓展,需要整体迁移到合适大小的连续空间去;
存储空间利用率低
3. 文件分配方式 - 链接分配
① 隐式链接
② 显式链接
4. 文件分配方式 - 索引分配
索引分配
- 文件 离散地 分配在各个磁盘块中;
- 每个文件对应 ==一张索引表,==记录文件的 各个逻辑块对应的物理块;
与 显式链接 不同,显式链接是整个磁盘的所有文件的索引信息都集中在一张索引表上;
索引表的 逻辑块号 可以是隐含的,进一步节约空间;
一个很大的索引表,一个磁盘块装不下,针对这个问题有以下三种解决方法:
- 链接方案
- 多层索引
- 混合索引
① 链接方案
使用多个索引块存储索引表,并采用链接的方式将它们连起来
② 多层索引
K + 1 次读磁盘操作:K次读索引表 + 1次读数据块
③ 混合索引
对于小文件,一个数据块就存储的了;若采用多级索引方式,就要访存多次,影响效率;
采用 ==混合索引,==既可以解决大文件存储问题,还可以减少对于小文件多次访存;
小结
4.1.5 逻辑结构 vs 物理结构
小结
4.1.6 文件的基本操作
1. 创建文件
2. 删除文件
3. 打开文件
有两种打开文件表
4. 关闭文件
5. 读文件
6. 写文件
小结
4.1.7 文件共享
注意 共享 与 复制 的区别;
1. 硬链接 - 基于索引结点
2. 软链接 - 基于符号链
小结
4.1.8 文件保护
为了防止 文件共享 可能会导致 文件被破坏 或 未经核准的用户修改文件,文件系统必须要控制用户对文件的存取;
所以,必须在文件系统中建立相应的 文件保护机制 ;
- 口令 和 加密 为了防止用户文件被他人存取或窃取;
- 访问控制 用于控制用户对文件的访问方式;
1. 口令保护
2. 加密保护
3. 访问控制
设置一个 访问控制表
小结
4.2 文件系统
【问题】
① 什么是 文件系统 ?
答:操作系统中 负责管理和存储文件信息的软件机构 称为文件管理系统,简称文件系统。
文件系统由三部分组成:与文件管理有关的软件、被管理文件及实施文件管理所需的数据结构;
② 文件系统要完成哪些 功能 ?
答:对于用户而言,文件系统最主要的功能是实现对文件的基本操作,让用户可以按名存储和查找文件,组织成合适的结构,并
应当具有基本的文件共享和文件保护功能。
对于操作系统本身而言,文件系统还需要管理与磁盘的信息交换,完成文件逻辑结构和物理结构上的变换,组织文件在磁盘上的
存放,采取好的文件排放顺序和磁盘调度方法以提升整个系统的性能。
【补充】
本节除了 外存空闲空间管理,其他都是2022年统考大纲的新增考点,基本都是概念知识点(多看几遍);
4.2.1 文件系统的层次结构
王道书中的图与王道视频不同,参考教材不同,不影响学习;
小结
4.2.2 文件系统的全局结构 - 布局
1. 物理格式化
==低级格式化:==划分扇区、检测坏扇区、用备用扇区替换坏扇区;
当要访问某一块坏扇区时,会使用备用扇区,默默完成替换工作;
2. 逻辑格式化
==高级格式化:==磁盘分区;
每个区的大小、地址范围等信息,会使用 分区表 来记录;
在每个区里可以建立各自独立的文件系统 ,例如在C盘里建立UNIZX文件系统;
主引导记录 MBR
位于磁盘的 0 号扇区,用来引导计算机。MDR 后面是 分区表,记录各分区的起始、结束地址;
表中的一个分区被标记为 活动分区 ,启动计算机时,BIOS 读入并执行 MBR ;
MBR 会确认活动分区,读入它的第一块 (引导块);
UNIX 文件系统
- 引导块:负责开机时初始化操作系统;
- 超级块:包含文件系统的所有关键信息,可以迅速找到磁盘分区里所有的空闲块;
- 位示图 (磁盘空间管理):可以迅速判断某一个特点的盘块是否空闲;
- i 结点:索引结点,连续存放,每个文件对应一个结点,可以把 i 结点区看成一个大数组;
- 根目录:完成逻辑格式化之后,根目录就会被建立起来;
3. 文件系统在内存中的结构
- 安装表:每个已安装文件系统分区的有关信息;
- 目录结构的缓存:最近访问的目录;
- 系统打开文件表:内存中只有一张;
- 进程打开文件表:每个进程一张,在PCB中;
4.2.3 外存空闲空间管理
1. 存储空间的划分与初始化
- 文件卷(C盘、D盘);
- 目录区(FCB、磁盘空间管理信息);
- 文件区(文件数据)
2. 几种管理方式
(1) 空闲表法
设置了一个空闲盘块表,要搞清楚三个点:
- 空闲盘块表如何记录信息 (初始块号,长度) ;
- 如何分配磁盘块 (连续分配方式) ;
- 如何回收磁盘块 (注意合并问题) ;
(2) 空闲链表法
① 空闲盘块链
- 分配从链头,回收进链尾;
- 适用于 离散分配 ;
② 空闲盘区链
- 分配从链头开始检索 (首次适应、最佳适应算法);
- 回收, 与其它空闲合并 或 挂到链尾;
- 连续、离散分配 都适应;
(3) 位式图法
连续、离散分配 都适应;
(4) 成组链接法
每个分组的盘块数量都是 有上限 的,下图举的例子中,最后一组的磁盘块 比 倒二组 的数量少1
分配一个空闲块的情况
分配100个空闲块的情况
回收未满的情况
回收已满的情况
小结
4.2.4 虚拟文件系统和文件系统挂载
1. 虚拟文件系统
下图普通的文件系统,不同的外部存储设备,它的文件系统可能是不相同的,对于同一个操作的函数方法定义也许也各不相同;
鉴于上图提到的问题,操作系统内核需要向上层的用户进程提供一个 统一标准的函数调用接口;
这就是 虚拟文件系统 VFS 的一个特点;
UFS文件系统的目录项 和 FAT文件系统的目录项 格式不同,这就造成新的问题:
虚拟文件系统打开不同的文件,得到的文件信息数据格式都不同;
对于不同文件系统的数据结构,VFS 在每打开一个文件,就在主存建立一个 ==vnode,==用 统一的 数据结构表示文件;
注意 vnode 和 inode 的区别;
==函数功能指针:==指向该文件系统的功能函数列表;
通过 函数功能指针 找到对应的函数功能,进而完成所要完成的操作;
2. 文件系统挂载
将一个系统挂载到操作系统;例如:插入一个U盘,就把 U盘的文件系统 挂载到 OS的虚拟文件系统;
4.3 常见问题和易混淆知识点
1. 文件的物理分配方式的比较
文件的三种物理分配方式的比较如下表:
访问第n条记录 | 优点 | 缺点 | |
---|---|---|---|
连续分配 | 需访问磁盘1次 | 顺序存取时速度快,文件定长时可根据文件起始地址及记录长度进行随机访问 | 文件存储要求连续的存储空间,回产生碎片,不利于文件的动态扩充 |
链接分配 | 需访问磁盘n次 | 可解决外存的碎片问题,提高外存空间的利用率,动态增长较方便 | 只能按照文件的指针链顺序访问,查找效率低,指针信息存放消耗外存空间 |
索引分配 | m级需访问磁盘m+1次 | 可以随机访问,文件易于增删 | 索引表增加存储空间的开销,索引表的查找策略对文件系统效率影响较大 |
2. 文件打开的过程描述
① 检索目录,要求打开的文件应该是已经创建的文件它应登记在文件目录中,否则会出错。
在检索到指定文件后,就将其磁盘iNode复制到活动iNode表中。
② 把参数 mode所给出的打开方式与活动inode 中在创建文件时所记录的文件访问权限相比较,如果合法,则此次打开操作成功。
③ 当打开合法时,为文件分配用户打开文件表表项和系统打开文件表表项,并未后者设置初值,通过指针建立表项与活动iNode之间的联系,再把文件描述符fd返回给调用者。