文件系统的概念

Q: 操作系统中负责文件管理和存储的软件机构是什么?
A: 文件系统。
补充细节:文件系统就像一个“图书馆管理员”,负责文件的存放、查找、借阅、安全保护、整理等工作。

文件系统的功能

Q: 为什么操作系统需要文件系统?
A: 文件系统可以实现文件的按名存取、组织文件结构、进行文件共享和保护、管理磁盘信息交换、提升系统性能等功能。
补充细节:文件系统就像一个图书管理员,不仅要管理书籍(文件),还要负责借阅登记(文件共享)、安全保护(文件保护)、整理书架(组织文件结构)等工作。

文件系统的层次结构

Q: 为什么文件系统通常采用分层结构?
A: 文件系统采用分层结构可以提高系统的可扩展性和可维护性,例如,可以更容易地添加新的文件系统类型或修改现有的文件系统。
补充细节:分层结构就像图书馆的管理体系,从馆长到管理员再到图书管理员,每一层负责不同的工作,提高了管理效率。

Q: 文件系统的 I/O 控制层负责什么功能?
A: I/O 控制层负责在内存和磁盘系统之间传输信息,类似于图书馆的保安,负责进出管理。

Q: 文件系统的基本文件系统负责什么功能?
A: 基本文件系统负责读取和写入磁盘的物理块,类似于图书馆的库房管理员,负责书籍的存放和取用。

文件系统的布局

文件系统在磁盘中的结构

Q: 磁盘的 0 号扇区存放什么内容?
A: 主引导记录 (MBR)。
补充细节:MBR 就像图书馆的入口,引导计算机启动操作系统,就像指引读者进入图书馆一样。

Q: 主引导记录 (MBR) 位于磁盘的哪个扇区?
A: 0 号扇区。

补充细节:MBR 就像图书馆的入口,引导计算机启动操作系统,就像指引读者进入图书馆一样。

Q: 引导块 (boot block) 的作用是什么?
A: 引导块 (boot block) 中的程序负责启动该分区中的操作系统。
补充细节:引导块就像图书馆的自助借阅机,引导操作系统启动,就像帮助读者自助借阅书籍一样。

Q: 超级块 (super block) 的作用是什么?
A: 超级块 (super block) 包含文件系统的所有关键信息,如分区的块的数量、块的大小、空闲块的数量和指针、空闲的 FCB 数量和 FCB 指针等。
补充细节:超级块就像图书馆的管理手册,记录了文件系统的关键信息,方便操作系统进行管理。

Q: 空闲块信息可以采用哪些形式给出?
A: 空闲块信息可以采用位示图或指针链接的形式给出。
补充细节:位示图就像图书馆的座位表,用 0 和 1 表示座位是否空闲;指针链接就像图书馆的书架,每个书架指向下一个书架,形成一个链。

Q: i 节点的作用是什么?
A: 每个文件对应一个 i 节点,说明了文件的方方面面。
补充细节:i 节点就像图书馆的图书卡片,记录了文件的详细信息,如大小、类型、创建时间等。

Q: 根目录的作用是什么?
A: 根目录存放文件系统目录树的根部。
补充细节:根目录就像图书馆的总目录,是所有目录的起点。

文件系统在内存中的结构

Q: 安装表 (mount table) 的作用是什么?
A: 安装表 (mount table) 包含每个已安装文件系统分区的有关信息。
补充细节:安装表记录了已安装文件系统的信息,方便操作系统管理。

Q: 目录结构的缓存的作用是什么?
A: 目录结构的缓存包含最近访问目录的信息。
补充细节:目录结构的缓存就像图书馆的常用书籍区,存放了最近访问的目录信息,方便快速查找。

Q: 打开文件表的作用是什么?
A: 打开文件表包含每个打开文件的 FCB 副本、打开计数及其他信息。
补充细节:打开文件表就像图书馆的借阅记录,记录了当前打开的文件信息。

Q: 每个进程的打开文件表的作用是什么?
A: 每个进程的打开文件表包含进程打开文件的文件描述符 (Windows 称之为文件句柄) 和指向整个系统的打开文件表中对应表项的指针。
补充细节:每个进程的打开文件表就像读者的借阅卡,记录了读者当前借阅的书籍信息。

外存空闲空间管理

Q: 空闲表法属于哪种分配方式?
A: 空闲表法属于连续分配方式。
补充细节:连续分配就像图书馆的书架,将书籍连续摆放,方便查找,但容易造成空间浪费。

Q: 空闲表法的优点是什么?
A: 空闲表法的优点是具有较高的分配速度,可减少访问磁盘的 I/O 频率。
补充细节:就像在图书馆的书架上找书,如果书籍连续摆放,查找速度会很快。

Q: 空闲表法的缺点是什么?
A: 空闲表法的缺点是容易产生外部碎片。
补充细节:就像图书馆的书架,如果书籍摆放不连续,就会产生很多空隙,造成空间浪费。

Q: 空闲链表法有哪些类型?
A: 空闲链表法可以分为空闲盘块链和空闲盘区链。
补充细节:空闲链表法就像图书馆的书库,将书籍分散存放,通过链接的方式将它们连接起来。

Q: 空闲盘块链的优点是什么?
A: 空闲盘块链的优点是分配和回收一个盘块的过程非常简单。
补充细节:就像在图书馆的书库中找书,如果每个书架都指向下一个书架,那么找书的过程就会很简单。

Q: 空闲盘块链的缺点是什么?
A: 空闲盘块链的缺点是为一个文件分配盘块时可能要重复操作多次,效率较低;空闲盘块链会很长。
补充细节:就像在图书馆的书库中找书,如果书库很大,那么找书的过程就会很慢。

Q: 空闲盘区链的优点是什么?
A: 空闲盘区链的优点是分配与回收的效率较高,空闲盘区链较短。
补充细节:就像在图书馆的书库中找书,如果书库按照主题分类,那么找书的效率就会很高。

Q: 空闲盘区链的缺点是什么?
A: 空闲盘区链的缺点是分配与回收的过程比较复杂。
补充细节:就像在图书馆的书库中找书,如果书库的分类很复杂,那么找书的过程就会很麻烦。

Q: 位示图法的优点是什么?
A: 位示图法的优点是:很容易在位示图中找到一个或一组相邻接的空闲盘块;占用空间少,可将它保存在内存中,节省磁盘启动的开销。
补充细节:位示图就像图书馆的电子地图,可以快速找到空闲的座位或书架。

Q: 位示图法的缺点是什么?
A: 位示图法的缺点是位示图大小会随着磁盘容量的增加而增大,常用于小型计算机。
补充细节:就像图书馆的电子地图,如果图书馆很大,那么电子地图也会很大,占用很多空间。

Q: 成组链接法的思想是什么?
A: 成组链接法的思想是将空闲盘块分成若干组,每组的第一个盘块记录下一组的空闲盘块总数和空闲盘块号。
补充细节:成组链接法就像图书馆的书库索引,将书库分成若干区域,每个区域都有一个索引,方便查找书籍。

Q: 成组链接法的优点是什么?
A: 成组链接法的优点是克服了空闲表法和空闲链表法 “表太长” 的缺点。
补充细节:就像图书馆的书库索引,可以将书库分成若干区域,每个区域的索引都不会太长,方便查找。

Q: 成组链接法的缺点是什么?
A: 成组链接法的缺点是分配和回收过程较为复杂。
补充细节:就像图书馆的书库索引,如果书库的分类很复杂,那么索引也会很复杂,使用起来会比较麻烦。

虚拟文件系统

Q: 虚拟文件系统 (VFS) 的作用是什么?
A: 虚拟文件系统 (VFS) 屏蔽了不同文件系统的差异和操作细节,向上为用户提供了文件操作的统一调用接口。
补充细节:虚拟文件系统就像图书馆的统一查询系统,可以查询不同类型图书馆的书籍信息。

Q: VFS 采用了什么思想?
A: VFS 采用了面向对象的思想,抽象出一个通用的文件系统模型,定义了通用文件系统都支持的接口。
补充细节:面向对象就像图书馆的管理规范,将不同类型的图书馆都纳入统一的管理体系。

Q: VFS 抽象了哪些对象类型?
A: VFS 抽象了四种对象类型:超级块对象、索引节点对象、目录项对象、文件对象。
补充细节:这四种对象类型就像图书馆的管理人员,分别负责不同的管理工作。

文件系统挂载

Q: 文件系统在进程使用之前必须先做什么?
A: 文件系统在进程使用之前必须先安装,也称挂载 (Mounting)。
补充细节:文件系统挂载就像图书馆的开馆,只有开馆后才能借阅书籍。

Q: 将设备中的文件系统挂载到某个目录后,我们可以做什么?
A: 将设备中的文件系统挂载到某个目录后,就可以通过这个目录来访问设备上的文件。
补充细节:就像图书馆的书架,只有将书籍摆放到书架上,读者才能借阅。

Q: Windows 系统维护一个什么样的目录结构?
A: Windows 系统维护一个扩展的两级目录结构,用驱动器字母表示设备和卷。
补充细节:就像图书馆的楼层和区域划分,方便读者查找书籍。

Q: UNIX 使用什么文件系统?
A: UNIX 使用系统的根文件系统,它是在系统启动时直接安装的,也是内核映像所在的文件系统。
补充细节:根文件系统就像图书馆的总馆,是所有分馆的基础。

Q: 其他文件系统要先做什么才能访问?
A: 其他文件系统都要先挂载到根文件系统中的某个目录后才能访问。
补充细节:就像图书馆的分馆,只有将分馆的书籍纳入总馆的管理体系,读者才能借阅。

Q: 安装文件系统的这个目录称为什么?
A: 安装文件系统的这个目录称为安装点。
补充细节:安装点就像图书馆的书架,只有将书籍摆放到书架上,读者才能借阅。

文件系统相关计算

Q: 使用位示图法管理磁盘空间所需的簇数如何计算?
A: 位示图法管理磁盘空间所需的簇数 = 簇的总数 / 8。
补充细节:簇就像图书馆的书架,位示图就像图书馆的座位表,用 0 和 1 表示座位是否空闲。

Q: 位示图中要修改的位所在的盘块号如何计算?
A: 位示图中要修改的位所在的盘块号 = 起始块号 + ⌊盘块号 / (块大小 / 位示图中每个位表示的块数)⌋。
补充细节:盘块号就像图书馆的书架编号,块大小就像书架的容量,位示图中每个位表示的块数就像每个座位可以容纳的人数。

Q: 位示图中要修改的位所在的块内字节序号如何计算?
A: 位示图中要修改的位所在的块内字节序号 = ⌊(盘块号 % (块大小 / 位示图中每个位表示的块数)) / (位示图中每个位表示的字节数)⌋。
补充细节:块内字节序号就像座位号,位示图中每个位表示的字节数就像每个座位占用的空间大小。

Q: 位示图中第 i 个字的第 j 位对应的块号如何计算?
A: 位示图中第 i 个字的第 j 位对应的块号 = 32 × (i - 1) + j。
补充细节:字就像图书馆的书架,位就像座位,块号就像书架编号。