Skip to content

操作系统文件管理

文件管理是操作系统中负责管理计算机文件系统的部分,主要涉及文件的逻辑结构、物理结构、目录管理、存储空间管理以及文件的共享与保护。


一、文件系统基础

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-LOOKSCAN/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, 目录树。

上次更新于: