8 文件系统
type
status
date
slug
summary
tags
category
icon
password
8.1 概述
文件是以硬盘为载体的、存储在计算机上的信息集合。大多数应用程序的输入输出都是通过文件实现的。通过文件可以长期保存信息,以便将来访问。需要文件管理系统,对文件进行访问、修改和保存。
文件的内涵:是存储空间上的数据(域、记录、文件、数据库),有用于分类和索引的“标签”,包含关于访问权限的信息
文件的外延:文件系统是操作系统的重要组成部分,文件系统提供了与二级存储相关的资源的抽象
文件管理系统是一组系统软件,为使用文件的应用程序和用户提供服务。
文件系统的功能:
- 实现对文件的基本操作(创建、删除、打开、关闭、读、写)
- 按名存储和查找文件,组织成合适的结构
- 具有基本的文件共享和文件保护功能
- 管理与磁盘的信息交互
- 完成文件逻辑结构和物理结构的变换
- 组织文件在磁盘上存放
- 采用好的文件排放顺序和磁盘调度方法以提升系统的性能

- 逻辑文件系统:管理和维护文件系统的所有逻辑结构信息,负责文件保护
- 文件组织模块:将逻辑块地址转化称物理块地址
- 基本文件系统:也称为物理I/O层,读取和写入磁盘的物理块。关注的是这些块在辅存中和内存缓冲区中的位置
- I/O控制:设备驱动程序和中断处理程序,在内存和磁盘之间传送信息

8.2 文件组织和访问
- 堆:按数据到达顺序收集,每条记录由一串数据组成。记录可以有不同的域,每个域应该有自我描述。
- 顺序文件:每条记录有固定的格式,相同的长度,包含相同数量和长度固定的域。关键域按顺序排列。设置一个Log File,把试图增加、删除或者修改的信息记录于其中
- 索引顺序文件:用索引提供了快速接近目标记录的查找能力。增加了溢出文件,用来记录新增、删除和修改的记录
- 索引文件:对于可变长记录文件,建立与表项大小相等的索引表,可以多索引,可以部分索引
- 文件控制块(FCB):存放控制文件需要的各种信息的数据结构。包括:
- 基本信息:文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等;
- 访问控制信息:文件的存取权限、所有者、授权用户的存取权限、一般用户的存取权限等;
- 使用信息:文件建立时间、上次修改时间等。
- 目录:FCB的有序集合,FCB就是集合中的一个文件目录项。文件目录也被视为文件——目录文件
- 每个子目录都在上级目录文件中有一个目录项(FCB)
- 每个子目录都是一个目录文件
目录的树状结构

- 当文件很多时,文件目录会占用大量的盘块
- 在检索目录的过程中,只用到了文件名,其它描述信息不会被用到,也不需要调入内存
- 有的操作系统中,将除文件名之外的其它描述信息单独形成一个数据结构,称为索引结点,简称i结点(inode),目录文件中每个目录项仅由文件名和指向i结点的指针构成,每个文件在磁盘中有唯一的索引结点,当文件被打开时,要将磁盘索引结点复制到内存的索引结点中,且有编号、状态、访问计数等信息


- 主引导区 MBR:位于磁盘的0号扇区,记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息
- 引导块:引导块中的程序负责启动该分区中的操作系统
- 超级块:包含文件系统中的所有关键信息,启动时会被读入内存,是文件系统的第一个块,存放文件系统本身的结构信息描述和文件系统整体信息的数据结构
- 空闲块信息:用位示图或指针链接的形式给出
8.3 文件共享
在多用户系统中总是允许文件在多个用户间共享
文件系统可以授予用户或用户组某些权限:知道、执行、读、追加、更新、改变保护、删除
通常所有者是创建者,所有者具有所有权限,并可以给其它用户授权
文件共享机制:
- 基于索引节点的文件共享(打开文件表)
- 利用符号链接实现的文件共享
在设计文件共享时,必须解决互斥和死锁问题
8.4 逻辑组块
在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件“块”。
三种组块方式:定长组块、变长跨越式组块、变长非跨越式组块,大多数系统采用定长组块

8.5 辅存管理
两大问题:
- 文件分配:如何为文件分配磁盘块
- 辅存空闲空间管理:空闲块的组织、分配和回收
文件分配
连续文件分配
- 要求每个文件在磁盘上占用一组连续的块
- 顺序读/写时速度快
- 可直接访问
- 文件长度不宜动态增加
- 增删记录不但需要移动其它盘块,还需改变文件长度
- 外碎片

隐式链接
- 离散分配,无外碎片
- 除最后一个盘块外,每个盘块末尾都含有指向文件下一个盘块的指针
- 只适合顺序访问
- 稳定性差

显式链接
- 指将用于链接各物理块的指针显示地存放在一张表中,即文件分配表(FAT,File Allocation Table)
- 整个磁盘仅一张FAT
- FAT还可以标注空闲的磁盘块
- 操作系统启动时会将FAT读入内存
- 从逻辑块号转换为物理块号不需要读磁盘
- FAT会占用较大的磁盘空间

索引分配
- 系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块,索引表放在索引块中,每个文件必须有一个索引块
- 索引块太小:链接方案、多层索引、混合索引

混合索引分配
UNIX系统采用的文件分配方式
小型文件:直接寻址,把它们的每个盘块地址直接放入FCB
中型文件:单级索引分配
大型文件:两级和三级索引分配

辅存空闲空间管理
组织起来等待文件的使用
空闲位图(位向量)

空闲链表

8.6 MINIX文件系统
MINIX是一种基于微内核架构的类UNIX计算机操作系统

- 引导块:计算机加电启动时,由ROM BIOS程序自动读入MBR,MBR找到引导块并读入引导代码和数据。对于不是引导分区,该盘块空闲不用。
- 超级块:保存分区中文件系统的结构信息,表示出每部分的数量和位置

- i节点位图:标记i节点的使用情况,每bit位代表1个i节点,即1个目录文件或普通文件,可以占用多个盘块
- 系统分配 1 个新的 i节点;
- 系统分配 1 个新的数据块 用于存放目录项;
- 目录中虽然“空”,但仍包含
.与..两个目录项(.指向本目录自身的 i节点,..指向父目录的 i节点)。
在 MINIX 文件系统中,建立一个空目录时:
- 逻辑块位图:标记磁盘分区中每个数据盘块的使用情况,每bit位代表1个盘块,只标记数据区的盘块
- i节点
- 存放着文件系统中目录文件或普通文件的i节点
- 每个目录文件或普通文件都有1个i节点结构
- 每个i节点结构中存放着对应文件的相关信息
- 第1个i节点为根目录文件的i节点结构



课堂练习




期末真题
2024秋
五、关于磁盘和文件管理,回答下列问题。(8分)
1)阐述MINIX文件系统拷贝大文件的核心流程。(2分)
- 在目标文件系统上 创建目标文件的 inode(分配 inode、在目录中加入目录项但内容暂空)。
- 为目标文件 分配数据块(按需,通常一次分配一组或按写入动态分配),并在写入前在内存中准备缓冲区。
- 循环读源文件的数据块到内核缓冲区,然后将缓冲区内容写入目标文件对应的数据块(包括处理最后一个不满块的尾部)。
- 在写入过程中更新目标 inode 的元信息(已占块数、文件长度、时间戳等),并维护缓存(一致性、延迟写策略)。
- 拷贝完成后,将改动同步到磁盘(刷新 inode、写回数据块、更新目录项),释放临时缓冲区。
- 处理错误(空间不足、IO 错误)并回滚或清理未完成的分配。
2)设文件系统采用混合索引,文件的inode已经被读入内存,有7个直接块,1个一级索引块,1个二级索引块,索引块和数据块大小均为1KB,块地址占2B,问单文件长度最大是多少?现有一475K文件,要访问该文件内的一个盘块,至多需要访问几次磁盘?(3分)
(A)单文件最大长度
每个索引块能存放的块地址数 = 1KB/2B = 512 个地址。
可寻址的数据块总数 = 直接块 + 单级间接能指向的数据块 + 二级间接能指向的数据块
= 7+512+512×512 = 7+512+262144 = 262663 个块。
每块 1 KB,则最大文件长度 = 262663×1024 字节 = 268,966,912 字节,约等于 262,663 KB,也就是 ≈256.51 MB。
(B)现有 475K 文件,访问文件内某一盘块最多需几次磁盘访问?
先把 475K 转换为块数(每块 1KB):文件占用块数约 = 475 KB / 1 KB = 475 块。
块编号(从 0 开始)为 0 … 474。
inode 的布局:
- 直接块覆盖块 0–6(共 7 块);
- 单级索引覆盖接下来的最多 512 块(即块 7–518);
- 二级索引覆盖更后面的块。
因为 475 ≤ 518,因此任意要访问的某个块 必定落在单级索引指向范围内(不是直接块的话最多在单级索引中)。
inode 已在内存,最坏的磁盘访问次数分情况说明:
- 若目标块为 直接块(0–6):只需读该数据块 → 1 次磁盘访问。
- 若目标块为 单级间接指向的数据块(7–474):需先从磁盘读出该单级索引块(若该索引块尚未缓存),再读数据块 → 最多 2 次磁盘访问。
- 二级索引情形不可能(文件只有 475 KB),故无需考虑三次访问的情况。
因此对该 475K 文件,最多需要 2 次磁盘访问 来定位并读取某一盘块(在 inode 不在磁盘且索引块未缓存的最坏情况下)。
2020春
五、针对磁盘和文件系统回答下面的问题:(8分)
3)对于Minix文件系统,请阐述路径/usr/bin/vi中可执行文件vi的访问过程。(3分)
Loading...