文件是以计算机硬盘为载体的存储在计算机上的信息集合。计算机以进程为基本单位进行资源的调度和分配,而在用户进行的输入、输出中,以文件为基本单位。引入文件系统的目的是实现对文件的按名存取。
文件的结构与属性
- 数据项:文件系统中最低级的数据组织形式(基本数据项、组合数据项)
- 记录 → 文件
- 文件属性:名称、标识符、类型、位置、大小、保护、时间/日期/用户标识
文件的基本操作
创建、写、读、文件重定位(文件寻址)、删除、截断。
文件的打开与关闭
- 打开文件信息表(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) | 单向扫描,到端点后直接返回起点 |
磁盘管理:磁盘初始化、引导块、坏块管理。