计算机中的文件管理介绍

文章目录

  • [操作系统 · 文件管理系统性总结](#操作系统 · 文件管理系统性总结)
    • 1、文件管理
      • [1.1 逻辑结构:流式文件与记录式文件](#1.1 逻辑结构:流式文件与记录式文件)
      • [1.2 物理结构:顺序结构、链式结构、索引结构](#1.2 物理结构:顺序结构、链式结构、索引结构)
        • [① 顺序结构(连续分配)](#① 顺序结构(连续分配))
        • [② 链式结构(链接分配)](#② 链式结构(链接分配))
        • [③ 索引结构(索引分配)](#③ 索引结构(索引分配))
        • [1.2.1 索引结构分类:直接索引与间接索引](#1.2.1 索引结构分类:直接索引与间接索引)
      • [1.3 树形目录结构](#1.3 树形目录结构)
    • 2、文件管理空闲存储空间的管理
      • [2.1 位图示法(Bitmap)](#2.1 位图示法(Bitmap))
      • [2.2 链表法(空闲块链)](#2.2 链表法(空闲块链))
      • [2.3 索引法(空闲表法)](#2.3 索引法(空闲表法))
    • 总结对比表

我来为你系统性地整理文件管理的相关知识,并搜索一些示意图来辅助说明。
以下是操作系统中 文件管理 的系统性图文总结:


操作系统 · 文件管理系统性总结


1、文件管理

1.1 逻辑结构:流式文件与记录式文件

文件的逻辑结构是从用户视角看到的文件组织形式,分为两大类:

类型 别名 特点 适用场景
流式文件 无结构文件 由一系列二进制或字符流组成,无记录划分,以字节为单位 文本文件、图片、可执行程序
记录式文件 有结构文件 由若干条逻辑记录组成,每条记录有固定或可变长度 数据库表、日志文件

记录式文件可进一步细分:

  • 定长记录文件:每条记录长度固定,可通过记录号直接计算偏移量。
  • 变长记录文件:每条记录长度可变,需通过指针或长度字段定。

1.2 物理结构:顺序结构、链式结构、索引结构

文件的物理结构是指文件数据在磁盘等存储设备上的实际存放方式。

① 顺序结构(连续分配)
项目 说明
原理 为文件分配一组连续的物理盘块
优点 存取速度快,支持顺序和随机存取
缺点 易产生外部碎片,文件长度不易动态增长
适用 长度固定的系统文件
复制代码
磁盘块: [文件A][文件A][文件A][空闲][文件B][文件B][空闲][空闲]
          ↑起始块号                        ↑起始块号
          长度=3                           长度=2
② 链式结构(链接分配)
项目 说明
原理 文件分散存放在不连续的盘块中,各块通过指针链接
优点 无外部碎片,文件可动态增长
缺点 只能顺序存取,指针占用额外空间,可靠性差(一个块损坏则后续全丢)
变体 隐式链接(块内藏指针)→ 显式链接(FAT表集中管理指针)
复制代码
磁盘块: [文件A:数据+指向下一块] → [文件A:数据+指向下一块] → [文件A:数据+结束标记]
         块号5                    块号12                    块号8
③ 索引结构(索引分配)
项目 说明
原理 为每个文件建立一张索引表,记录该文件所有数据块的盘块号
优点 支持直接存取,无外部碎片,文件可动态增长
缺点 索引表本身需占用存储空间,存取需两次磁盘I/O(先读索引表)
复制代码
文件控制块(FCB)
┌─────────┐
│ 文件名   │
│ ...     │
│ 索引块号 │──→ [索引表: 0→块5, 1→块12, 2→块8, 3→块20]
└─────────┘                          ↓
                              [数据块0] [数据块1] [数据块2] [数据块3]
                               块5      块12      块8      块20

1.2.1 索引结构分类:直接索引与间接索引

为了支持不同大小的文件,索引结构通常采用混合索引方式,在文件控制块(如UNIX的inode)中设置多个地址项:

索引类型 说明 特点
直接索引 地址项直接指向数据盘块 访问快,适合小文件
一级间接索引 地址项指向一个索引块,该索引块中存放数据盘块号 可指向更多盘块,适合中等文件
二级间接索引 地址项指向一级索引块,一级索引块再指向二级索引块,二级索引块才指向数据盘块 可指向海量盘块,适合大文件
三级间接索引 再增加一层索引 支持超大文件

每多一级间接索引,查询开销变大,可以存储的空间指数增长。

典型混合索引示例(如UNIX inode)

复制代码
┌─────────────────────────────────────┐
│  直接索引项 [0] → 数据块              │
│  直接索引项 [1] → 数据块              │
│      ...                            │
│  直接索引项 [9] → 数据块              │  ← 10个直接索引(小文件)
│  一级间接索引 [10] → 索引块 → 数据块  │  ← 1个一级间接(中等文件)
│  二级间接索引 [11] → 索引块 → 索引块 → 数据块 │  ← 1个二级间接(大文件)
│  三级间接索引 [12] → 索引块 → 索引块 → 索引块 → 数据块 │  ← 1个三级间接(超大文件)
└─────────────────────────────────────┘

1.3 树形目录结构

现代操作系统普遍采用树形目录结构(多级目录结构)来组织文件:

复制代码
                    ┌─────────┐
                    │   /     │  ← 根目录
                    └────┬────┘
         ┌──────┬───────┼───────┬──────┐
         ▼      ▼       ▼       ▼      ▼
      ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐
      │bin │ │etc │ │home│ │usr │ │var │
      └────┘ └────┘ └──┬─┘ └────┘ └────┘
                         │
                    ┌────┼────┐
                    ▼    ▼    ▼
                 ┌────┐┌────┐┌────┐
                 │user││user││user│
                 │ A  ││ B  ││ C  │
                 └────┘└────┘└────┘

树形目录结构的特点

特性 说明
层次清晰 从根目录出发,形成一棵倒立的树,每个目录可包含子目录和文件
路径唯一 每个文件都有唯一的绝对路径(如 /home/user/file.txt
便于管理 不同用户、不同用途的文件可分类存放
支持共享 可通过链接(硬链接/软链接)实现文件共享
检索高效 从根或当前目录出发逐级查找

2、文件管理空闲存储空间的管理

为了记录磁盘上哪些盘块是空闲的、哪些已被占用,操作系统需要维护空闲空间管理表。常用方法有三种:

2.1 位图示法(Bitmap)

项目 说明
原理 用一串二进制位表示磁盘块的使用状态:1表示已分配,0表示空闲(或相反)
优点 占用空间小,易于找到连续的空闲块,可常驻内存
缺点 磁盘容量大时,位图本身也较大

示例:假设磁盘有16个块,位图如下:

复制代码
磁盘块号:  0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
位图:      1  1  0  0  1  0  0  0  1  1  0  0  0  1  0  0
           ↑已分配      ↑空闲            ↑已分配   ↑空闲
  • 块0、1、4、8、9、13 已分配
  • 块2、3、5、6、7、10、11、12、14、15 空闲

2.2 链表法(空闲块链)

项目 说明
原理 将所有空闲盘块用指针链接成一条链,系统保存链头指针
优点 实现简单,空闲块分配和回收只需修改指针
缺点 分配和回收需多次I/O操作,效率较低;大量离散小块时链很长
改进 成组链接法(UNIX采用):将空闲块分组,每组用一块记录下一组的块号

空闲块链表示意

复制代码
系统保存链头指针 ──→ [空闲块5] → [空闲块2] → [空闲块9] → [空闲块7] → NULL
                        ↓           ↓           ↓           ↓
                      数据区      数据区      数据区      数据区

成组链接法(链表法的优化):

复制代码
┌─────────────────┐
│  超级块中的空闲栈  │
│  [100, 99, 98...] │  ← 记录一组空闲块号
└────────┬────────┘
         │
         ▼
┌─────────────────┐     ┌─────────────────┐
│  空闲块100       │────→│  下一组空闲块号   │
│  [数据区...]     │     │  [50, 49, 48...] │
└─────────────────┘     └────────┬────────┘
                                 │
                                 ▼
                          ┌─────────────────┐
                          │  空闲块50        │────→ ...
                          │  [数据区...]     │
                          └─────────────────┘

2.3 索引法(空闲表法)

项目 说明
原理 建立一张空闲表,每个表项记录一组连续空闲块的起始块号和块数
优点 适合连续分配,可快速找到足够大的连续空间
缺点 表的大小难以确定,可能产生表溢出或空间浪费
适用 与顺序结构(连续分配)配合使用

空闲表示例

序号 第一个空闲块号 空闲块个数
1 2 3
2 8 3
3 13 2
4 ... ...
复制代码
磁盘块: [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15]
           └─空闲─┘        └─空闲──┘           └─空闲─┘
        已分配              已分配  已分配        已分配

总结对比表

维度 分类/方法 核心思想 主要优缺点
逻辑结构 流式文件 无记录划分的字节流 简单通用,但不利于结构化查询
记录式文件 由定长/变长记录组成 结构化强,变长记录存取复杂
物理结构 顺序结构 连续盘块存放 快但有碎片
链式结构 指针链接离散盘块 灵活但只能顺序存取
索引结构 索引表映射逻辑块→物理块 支持随机存取,需额外索引空间
索引分类 直接索引 直接指向数据块 快,适合小文件
间接索引 通过多级索引块指向数据 容量大,适合大文件
目录结构 树形目录 根→子目录→文件的层次树 层次清晰、路径唯一、便于管理
空闲管理 位图示法 二进制位标记块状态 省空间、易找连续块
链表法 空闲块链式链接 简单但I/O多
索引法 空闲表记录连续空闲区 适合连续分配,表大小难定
相关推荐
科技每日热闻2 天前
飞利浦5K双模商用显示器34B2U5900C——全能宽屏双模,多场景适配!
科技·计算机外设·显示器
羽翼安全2 天前
如何防止电脑显示器被手机拍照泄密?6款防拍屏软件测评
智能手机·计算机外设·电脑
单片机杂货铺3 天前
基于单片机的智能粮仓控制系统设计与实现
stm32·单片机·嵌入式硬件·物联网·计算机外设·51单片机·课程设计
上海广测检测科技有限公司5 天前
蓝牙鼠标键盘台湾NCC认证详解:射频器材型式核准制度与技术标准解读
计算机外设
Fozei5 天前
录屏原理与鼠标可视化
计算机外设·策略模式
驱动小百科6 天前
笔记本电脑键盘按键失灵怎么修复 教你快速恢复键盘正常输入
计算机外设·电脑·笔记本电脑键盘失灵·笔记本键盘按键没反应·笔记本键盘部分按键失灵
蓝斯4977 天前
从.到实现一个Windows上的虚拟hid键盘设备
windows·单片机·计算机外设
带娃的IT创业者10 天前
LG 显示器通过 Windows Update “静默”安装软件:一场关于数字主权的无声博弈
windows·计算机外设·隐私安全·驱动程序·windows update·数字主权·lg显示器
集芯微电科技有限公司10 天前
16V/5A高效率COT模式同步降压转换器集成高低功率MOSFET
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设