文件是以计算机硬盘为载体的存储在计算机上的信息集合。计算机以进程为基本单位进行资源的调度和分配,而在用户进行的输入、输出中,以文件为基本单位。引入文件系统的目的是实现对文件的按名存取。

文件的结构与属性

  • 数据项:文件系统中最低级的数据组织形式(基本数据项、组合数据项)
  • 记录 → 文件
  • 文件属性:名称、标识符、类型、位置、大小、保护、时间/日期/用户标识

文件的基本操作

创建、写、读、文件重定位(文件寻址)、删除、截断。

文件的打开与关闭

  • 打开文件信息表(open-file table)、文件打开计数器(Open Count)
  • 文件控制块(FCB):首次打开文件时,操作系统将 FCB 读到内存
  • 每个打开文件的关联信息:文件指针、文件打开计数、文件磁盘位置、访问权限

文件的逻辑结构

  • 无结构文件(流式文件):以字节为单位
  • 有结构文件(记录式文件):顺序文件、索引文件、索引顺序文件、直接文件或散列文件(Hash File)

目录结构

  • 文件控制块(FCB):基本信息、存取控制信息、使用信息,必须连续存放
  • 索引结点(inode):磁盘索引结点(文件主标识、文件类型、存储权限、物理地址、长度、链接计数、存取时间等)
  • 目录结构:单级目录 → 两级目录(主文件目录 MFD + 用户文件目录 UFD)→ 多级(树型)目录 → 无环图形目录
  • 树型目录中可用相对路径标识文件,减少检索开销

文件共享

  • 基于索引结点的共享方式(硬链接):引用计数值加 1,共享同一 内存 inode
  • 利用符号链实现文件共享(软链接):建立符号链接时引用计数值直接复制;删除原文件时符号链接仍存在但访问失效

文件保护

  • 访问类型:读、写、执行、添加、删除、列表清单
  • 访问控制:访问控制列表(ACL),用户类型分为拥有者、组、其他;口令和密码是另外两种方法

文件系统实现

文件系统层次结构

用户调用接口 → 文件目录系统 → 存取控制验证模块 → 逻辑文件系统与文件信息缓冲区 → 物理文件系统 → 辅助分配模块、设备管理程序模块。常见文件系统类型:FAT32、NTFS、ext2、ext3、ext4。

目录实现

线性列表、哈希表

文件分配方式

  • 连续分配:适合长度固定的文件
  • 链接分配:隐式链接、显式链接(文件分配表 FAT)
  • 索引分配:链接方案、多层索引、混合索引(如 UNIX 直接地址索引 + 一级/二级间接索引)

文件存储空间管理

  • 空闲表法
  • 空闲链表法
  • 位示图法
  • 成组链接法

磁盘组织和管理

磁盘结构:磁盘、磁头、磁道、扇区(通常为 512B)。

磁盘访问时间:

  • 寻道时间:(m 为磁臂移动一道的时间,n 为移动道数,s 为启动时间约 2ms)
  • 旋转延迟:(r 为转速)
  • 传输时间:(b 为字节数,N 为每磁道字节数)
  • 总平均存取时间:

磁盘调度算法:

算法特点
先来先服务(FCFS)按请求顺序,公平但寻道距离长
最短寻找时间优先(SSTF)每次选最近磁道;会产生饥饿现象
扫描(SCAN / 电梯调度)沿一个方向扫描,到端点后折返
循环扫描(C-SCAN / C-LOOK)单向扫描,到端点后直接返回起点

磁盘管理:磁盘初始化、引导块、坏块管理。