操作系统文件管理
文件管理是操作系统中负责管理计算机文件系统的部分,主要涉及文件的逻辑结构、物理结构、目录管理、存储空间管理以及文件的共享与保护。
一、文件系统基础
1. 文件的概念
- 定义:是以计算机硬盘为载体的存储在计算机上的信息集合。
- 属性:文件名、标识符、类型、位置、大小、保护信息、时间日期等。
- 基本操作:创建、删除、读、写、截断、打开、关闭。
2. 文件的逻辑结构
指在用户看来,文件内部的数据是如何组织的。
- 无结构文件(流式文件):文件内部的数据就是一系列二进制流或字符流。如
.txt,.exe。 - 有结构文件(记录式文件):由一组相似的记录组成。
- 顺序文件:记录按顺序排列。
- 索引文件:为变长记录建立索引表。
- 索引顺序文件:分组索引,结合了前两者优点。
3. 目录结构
- FCB (文件控制块):包含文件基本信息(文件名、物理地址、保护信息等),是文件存在的标志。
- 目录结构形式:
- 单级目录:所有文件在一个表中,不允许重名。
- 两级目录:主文件目录 (MFD) + 用户文件目录 (UFD)。
- 树形目录:现代 OS 通用,支持多级目录,绝对路径/相对路径。
- 无环图目录:在树形基础上允许共享(通过链接)。
二、文件系统实现(物理结构)
指文件数据在物理存储设备上是如何存放的。
1. 文件分配方式
- 连续分配:
- 每个文件在磁盘上占有一组连续的块。
- 优点:支持随机访问,顺序读写速度最快。
- 缺点:产生外部碎片,文件扩展困难。
- 链接分配:
- 隐式链接:目录项指向第一块,块内指向下一块。无碎片,扩展容易;但只支持顺序访问。
- 显式链接 (FAT):指针存放在内存的一张文件分配表 (FAT) 中。支持随机访问。
- 索引分配:
- 每个文件有一张索引表(索引块),记录逻辑块到物理块的映射。
- 优点:支持随机访问,无外部碎片。
- 缺点:索引表占用额外空间。
- 混合索引 (Unix/Linux):直接地址 + 一级间接 + 二级间接...(解决大文件问题)。
2. 空闲空间管理
- 空闲表法:记录所有空闲区(起始块号,长度)。
- 空闲链表法:将空闲块链在一起。
- 位示图法 (Bit Map):用二进制位 0/1 表示块空闲/占用。易于在内存中操作。
- 成组链接法 (Unix):适合大型文件系统,结合了链表和索引的特点。
三、磁盘组织与管理
1. 磁盘结构
- 物理地址:(柱面号, 盘面号, 扇区号)。
- 读写时间 = 寻道时间 (最慢) + 旋转延迟 + 传输时间。
2. 磁盘调度算法
目标是减少寻道时间。
| 算法 | 名称 | 描述 | 特点 |
|---|---|---|---|
| FCFS | 先来先服务 | 按请求顺序 | 公平,但性能差。 |
| SSTF | 最短寻找时间优先 | 找离当前磁头最近的 | 性能好,但可能导致远端请求“饥饿”。 |
| SCAN | 扫描算法 (电梯) | 磁头单向移动到头,再反向 | 解决饥饿,但在两端请求密度不均。 |
| C-SCAN | 循环扫描 | 单向移动,到头直接回起点 | 响应时间更均匀。 |
| LOOK / C-LOOK | SCAN/C-SCAN 的优化 | 不走到端点,只走到最远的请求处。 |
四、文件共享与保护
1. 文件共享
- 硬链接 (Hard Link):
- 基于索引节点 (Inode)。
- 多个文件名指向同一个 Inode。
- 只有引用计数为 0 时才真正删除文件。
- 软链接 (Symbolic Link):
- 特殊类型的文件,内容是另一个文件的路径。
- 原文件删除,软链接失效(悬空)。
2. 文件保护
- 口令保护:文件关联口令。
- 加密保护:对文件内容加密。
- 访问控制:
- 访问控制表 (ACL)。
- 用户/组/其他 (User/Group/Other) 权限位 (rwx) —— Linux 常用。
总结
- 逻辑结构:流式 vs 记录式。
- 物理分配:连续 vs 链接 (FAT) vs 索引 (Inode)。
- 磁盘调度:SCAN / C-SCAN 是主流。
- 核心概念:FCB, Inode, FAT, 目录树。