# 文件管理

> CIE A-Level 计算机科学 · 9618
> 来源: https://www.owlsprep.com/zh/study/cie-9618-u5-file-management/

本子主题涵盖操作系统核心的文件管理功能，包括文件组织、分配方式、碎片处理、访问权限和目录结构。你将学习文件系统如何组织存储以实现高效访问和安全性。

**先修:** [辅助存储组织](https://www.owlsprep.com/zh/study/cie-9618-u4-secondary-storage/); [操作系统核心作用](https://www.owlsprep.com/zh/study/cie-9618-u5-os-introduction/)

## 学习目标

- 解释操作系统中文件管理的作用
- 比较和对比常用的文件分配方式
- 区分内部碎片和外部碎片
- 描述目录和文件访问权限的作用

## 文件管理的核心作用

**文件管理** — 操作系统中，负责管理文件和数据如何在辅助存储设备上存储、组织、访问和保护的组件。

*例:* 处理硬盘驱动器或SSD上文件的创建、删除、修改和读取操作。

文件管理向用户和应用程序抽象了物理存储的细节，提供数据的逻辑视图，无需程序直接与硬件扇区交互。它还通过访问控制提供安全性，并确保可用存储空间的高效利用。

**例题:** 列出文件管理系统为最终用户提供的三项核心服务。

1. 1. 组织和命名：允许用户为文件自定义名称，并将相关文件分组到文件夹/目录中。
2. 2. 访问安全：提供权限系统，限制哪些用户可以读取、修改或执行特定文件。
3. 3. 硬件抽象：对用户隐藏文件数据的物理位置，无需用户直接管理磁盘扇区。

> **考试提示:** 回答4分及以上的题目时，务必将文件管理服务同时关联到用户需求和操作系统效率。

## 文件分配方式

**文件分配** — 为逻辑文件分配磁盘上物理存储簇的过程。

- **连续分配**：所有文件块都存储在磁盘簇的单个连续区域中
- **链接分配**：每个文件块都包含一个指向下一个块的指针，下一个块可以存储在磁盘的任意位置
- **索引分配**：一个特殊的专用索引块存储所有指向文件各个数据块的指针

**例题:** 一个大小为5242900字节的文件存储在簇大小为1KB（1024字节）的磁盘上，计算该文件需要的簇数量和内部碎片的大小。

1. 步骤1：用文件大小除以簇大小，向上取整得到所需簇数量：
2. $$\text{Number of clusters} = \text{ceil}\frac{5242900}{1024} = 5121$$
3. 步骤2：计算总分配空间：
4. $$5121 \times 1024 = 5243904 \text{ bytes}$$
5. 步骤3：用分配空间减去实际文件大小得到内部碎片大小：
6. $$5243904 - 5242900 = 1004 \text{ bytes}$$

*计算器:* allowed

## 碎片与碎片整理

当存储空间利用效率低下时就会产生碎片，导致访问速度变慢或可用容量降低。碎片主要有两种类型：

- **内部碎片**：已分配簇内的未使用空间（当文件小于簇大小时产生）
- **外部碎片**：空闲空间被分割为许多不连续的小块，即使总空闲空间足够，也没有单个块足够大来容纳新文件

**碎片整理** — 将文件块和空闲空间重新排列为连续块，以减少访问时间并消除外部碎片的维护过程。

**例题:** 解释为什么碎片对SSD的影响远小于对HDD的影响。

1. 1. HDD有移动的读写磁头，访问非连续块需要额外的寻道时间，因此碎片会显著降低访问速度。
2. 2. SSD没有移动部件，访问任意内存地址的时间大致相同，因此非连续块不会增加寻道时间。
3. 3. 碎片整理还会产生额外的写入周期，缩短SSD的使用寿命，因此不建议对固态存储进行碎片整理。

## 目录与访问权限

现代文件系统使用分层树形结构的目录来组织文件，允许用户将相关文件分组，轻松导航存储。访问权限控制不同用户组可以对文件或目录执行的操作，是核心的安全功能。

- **读（r）**：允许打开和读取文件内容，或列出目录中的文件
- **写（w）**：允许修改、重命名或删除文件，或向目录添加文件
- **执行（x）**：允许将文件作为可执行程序或脚本运行

**例题:** 大学文件服务器在阅卷前存储学生的作业。学生（所有者）、其他学生（用户组）和普通公众应该获得学生作业文件的什么权限？

1. 1. 所有者（学生）：提交前需要编辑文件，因此分配读+写权限（文档文件不需要执行权限）。
2. 2. 其他学生：为防止抄袭，其他学生不应能访问该文件，因此不分配任何权限。
3. 3. 普通公众：和其他学生一样，不授予任何权限，防止阅卷前被未授权访问。

## 常见错误

- **错误做法:** 混淆内部碎片和外部碎片
  - 原因: 许多学生混淆两种碎片，搞错未使用空间所在的位置
  - 正确做法: 记住：内部碎片是已分配簇*内部*的未使用空间，外部碎片是已分配文件*之间*被分割为小块的未使用空闲空间
- **错误做法:** 认为碎片整理可以修复内部碎片
  - 原因: 碎片整理仅重新排列已分配块的存储位置，无法改变每个簇分配的空间大小
  - 正确做法: 只有使用更小的簇大小才能减少内部碎片，碎片整理无法做到。碎片整理仅能修复外部碎片
- **错误做法:** 认为连续分配总是优于其他分配方式
  - 原因: 连续分配读取速度快，但存在回答中经常被遗漏的重大缺点
  - 正确做法: 要承认权衡：连续分配访问速度更快，但会产生外部碎片，且难以扩展现有文件
- **错误做法:** 认为读取文件需要执行权限
  - 原因: 学生通常认为所有文件都需要执行权限才能被访问
  - 正确做法: 每个权限对应不同操作：读权限控制对文件内容的访问，执行权限仅控制运行程序文件

## 速查表

| 分配方式 | 核心优点 | 核心缺点 | 产生的碎片类型 |
| --- | --- | --- | --- |
| 连续分配 | 随机访问速度快，实现简单 | 产生外部碎片，难以扩展文件 | 外部+内部 |
| 链接分配 | 无外部碎片，易于扩展文件 | 不支持直接随机访问，需要额外空间存储指针 | 仅内部 |
| 索引分配 | 支持直接随机访问，无外部碎片 | 索引块存在额外开销，小文件会浪费空间 | 仅内部 |

## 下一步

文件管理是系统软件的核心组件，连接底层存储硬件和高层用户应用程序。理解文件分配和碎片的工作原理，有助于你回答试卷2中的概念题和计算题，也为理解虚拟内存、磁盘调度等更高级的操作系统概念打下基础。你在这里学到的概念也适用于现实世界的系统维护，例如格式化驱动器时选择簇大小，以及为了安全性设置正确的文件权限。探索下面的相关主题，拓展你对系统软件的知识。

- [安全性、隐私与数据完整性](https://www.owlsprep.com/zh/study/cie-9618-u6-overview/)
- [安全威胁](https://www.owlsprep.com/zh/study/cie-9618-u6-threats-to-security/)
- [加密](https://www.owlsprep.com/zh/study/cie-9618-u6-encryption/)

---

来自 [OwlsPrep](https://www.owlsprep.com) —— A-Level / IB / AP / IGCSE 免费学习指南，依据官方考纲编写。原页面：https://www.owlsprep.com/zh/study/cie-9618-u5-file-management/
