操作系统 文件系统

前言

本笔记整理文件系统核心知识点,包含文件基本操作、文件共享、文件保护、文件系统层次结构、磁盘格式化与文件系统全局结构五大模块,结合系统调用、底层原理、实操案例与易混点总结,适配考试与复习使用。

一、文件的六大基本操作(系统调用+底层原理)

所有文件操作本质都是调用操作系统对应的系统调用,操作前需理解:文件数据存放在外存,文件目录项/控制信息会部分加载到内存提升访问速度。

1.创建文件(Create 系统调用)

(1)调用所需参数

  1. 文件存放路径
  2. 文件名
  3. 申请的外存空间大小(磁盘块数量)

(2)操作系统底层执行步骤

  1. 依据磁盘空闲空间管理算法(空闲表、空闲链表、位图、成组链接法),为文件分配对应磁盘块;
  2. 找到目标目录的目录表,在目录中新增该文件的目录项(FCB);

目录项核心内容:文件名、文件物理位置、文件属性等。

补充

Windows 右键新建文件,系统会自动补全参数,生成默认文件名。

2. 删除文件(Delete 系统调用)

与创建文件流程完全相反。

(1)调用所需参数

文件路径、文件名

(2)操作系统底层执行步骤

  1. 根据路径找到对应目录表,通过文件名匹配到目标文件的目录项;
  2. 从目录项中读取文件占用的磁盘块信息,回收磁盘空闲空间(沿用磁盘空闲管理算法);
  3. 从目录表中删除该文件对应的目录项。

3. 打开文件(Open 系统调用)【高频考点】

核心规则:对文件进行读写等操作前,必须先打开文件;打开文件不会加载文件数据,仅加载文件控制信息。

(1)调用所需参数

  1. 文件存放路径 + 文件名
  2. 操作权限(只读、只写、读写等)

(2)操作系统底层执行步骤

  1. 按路径查找目录表,定位文件目录项;
  2. 权限校验:检查当前用户是否拥有声明的操作权限,无权限则直接拒绝打开;
  3. 将文件目录项复制到内存的打开文件表中,后续操作无需反复查询外存目录,大幅提升访问速度。

(3)两类打开文件表(重点区分)

内存中存在系统打开文件表和进程打开文件表,二者配合工作:

1.系统打开文件表

○全局唯一,整个操作系统共用一张;

○记录所有进程正在使用的文件;

○特有字段:打开计数器(记录文件被多少个进程同时打开)。

2.进程打开文件表

○每个进程独有一张,隶属于进程PCB;

○仅记录当前进程打开的文件;

○特有字段:读写指针(记录当前进程读写位置)、进程访问权限;

○内部存储:指向系统打开文件表的索引号(文件描述符)。

(4)关键概念:文件描述符

进程打开文件后,系统返回打开文件表的索引号,该索引号即为文件描述符。

后续读写文件时,进程不再使用路径/文件名,仅通过文件描述符定位文件。

(5)经典现象

文件被进程打开占用时,无法直接删除(系统查询系统打开文件表,发现打开计数器>0,禁止删除)。

4. 关闭文件(Close 系统调用)

底层执行步骤

  1. 在当前进程的打开文件表中,删除该文件对应的表项,释放内存缓冲区资源;
  2. 找到系统打开文件表对应表项,打开计数器 -1;
  3. 若计数器结果 = 0:代表无进程使用该文件,删除系统打开文件表中的对应表项;
  4. 若计数器 > 0:仍有进程在使用,保留系统表项。

5. 读文件(Read 系统调用)

前提:文件已成功打开,持有文件描述符。

(1)调用所需参数

  1. 文件描述符(定位文件)
  2. 待读取的数据大小
  3. 内存接收数据的起始位置

(2)底层执行步骤

  1. 根据文件描述符,依次查找进程打开文件表、系统打开文件表,获取文件物理位置与读写指针;
  2. 从外存读写指针指向的位置,读取指定大小数据,存入指定内存区域;
  3. 自动向后移动读写指针。

6. 写文件(Write 系统调用)

流程与读文件高度相似,方向相反。

(1)调用所需参数

  1. 文件描述符
  2. 待写入的数据大小
  3. 内存中待写入数据的起始位置

(2)底层执行步骤

  1. 通过文件描述符定位文件,获取读写指针;
  2. 将内存中指定数据,写入外存读写指针对应的磁盘位置;
  3. 自动向后移动读写指针。

二、文件共享

1.共享 vs 文件复制(易混点)

•文件共享:系统中仅一份原始文件数据,多个用户/进程共用;任意用户修改文件,所有共享者都能看到变化。

•文件复制:系统中生成多份独立文件副本;修改其中一份,其他副本不受影响。

2. 两种主流共享方式

方式一:基于索引节点(硬链接)

1.前置知识

目录项仅保存文件名 + 索引节点指针;文件大小、物理地址、权限等属性全部存放在索引节点(i节点)中。

索引节点包含关键字段:链接计数器(count),记录指向该节点的目录项数量。

2. 共享原理

多个不同用户的目录项,指向同一个文件的索引节点;不同用户可以给同一文件设置不同文件名。

•新增共享用户:新增目录项指向该索引节点,count + 1。

3. 删除文件规则(必考)

  1. 用户执行删除操作:仅删除自身的目录项,索引节点 count - 1;
  2. 若 count > 0:仍有用户共享文件,不删除文件数据和索引节点;
  3. 若 count = 0:无任何用户使用,真正回收磁盘空间、删除索引节点与文件数据。

方式二:基于符号链(软链接 / 符号链接)

1.核心原理

新建一个特殊的Link类型文件(类比 Windows 快捷方式),该文件不存储原文件数据,只记录原文件的完整路径。

用户访问软链接文件时,系统根据记录的路径逐层查找,最终定位原文件。

2. 特点

  1. 访问速度:每次都要逐层检索目录、执行磁盘IO,速度慢于硬链接;
  2. 文件删除影响:
    ○原文件被删除:索引节点count=0,数据清空;软链接文件依然存在,但路径失效,访问提示找不到目标;
    ○软链接被删除:仅删除Link文件,不影响原文件。

3. 实操类比(Windows)

桌面QQ快捷方式 = 软链接;快捷方式记录QQ程序的安装路径;删除原QQ程序,快捷方式失效;删除快捷方式,原程序不受影响。

硬链接 & 软链接 对比总结

三、文件保护(三种常用方案)

作用:防止文件被非法访问、篡改、删除,保障数据安全。

1.口令保护

原理

为文件设置访问口令,口令存储在文件的FCB/索引节点中;用户访问文件前必须输入正确口令,系统比对通过才可访问。

优缺点

•优点:空间开销、时间开销极小,实现简单;

•缺点:口令存于系统内部,一旦系统被入侵,口令泄露,文件完全失去保护。

2. 加密保护

原理

使用加密算法(示例:异或加密)对文件原始数据加密,系统仅存储加密后的密文;

用户访问时,需输入密钥解密,解密成功才能读取原始数据;密钥由用户自行保管,系统不存储。

异或加密规则(示例)

二进制位相同 → 结果为0;二进制位不同 → 结果为1;同一密钥可加密、解密。

优缺点

•优点:安全性极高;密钥由用户保管,系统无泄露风险;

•缺点:加密、解密过程需要CPU运算,存在时间开销。

口令保护 vs 加密保护(易混区分)

1.口令:系统保存验证密码,验证通过即可拥有全部操作权限;

2.加密:系统只存密文,无密钥则数据为乱码;安全性更高,有运算开销。

3. 访问控制(主流方案,Windows/Linux 通用)

原理

在文件FCB/索引节点中添加访问控制表,精细化管控:哪些用户/用户组、可以执行哪些操作。

•操作类型:读、写、执行、删除、列举目录等;

•标识规则:1=允许操作,0=禁止操作。

两种实现形式

1.基于单用户:表中逐条记录每个用户的权限;用户量大时,表格冗长、效率低。

2.基于用户组(精简版)

将用户划分为分组(文件主、伙伴、管理员、其他用户),按分组分配权限;大幅精简表格,是现代系统主流用法。

Windows 实操案例

1.新建本地用户,对文件/文件夹设置「安全权限」;

2.权限规则:拒绝项优先级 > 允许项;

3.效果:被拒绝的用户,无法访问对应文件/目录。

特点

1.支持精细化权限管控(不同用户不同权限),区别于口令/加密的"全有/全无";

2.目录权限会继承到内部所有文件;

3.目前主流操作系统默认采用该方案。

四、文件系统层次结构(自顶向下)

整体层级:用户接口 → 文件目录系统 → 存取控制模块 → 逻辑文件系统+文件信息缓冲区 → 物理文件系统 → 辅助分配模块 → 设备管理模块

分层详解(结合功能与对应知识点)

1.用户接口层

最上层,面向用户/应用程序;接收 open/read/write/close/create/delete 等系统调用,对接基础文件操作。

2.文件目录系统

管理目录、目录项(FCB)、打开文件表;根据文件路径检索目录,定位目标文件。

3.存取控制模块(权限验证)

对应文件保护知识点;校验用户操作权限,拦截非法访问。

4.逻辑文件系统 + 文件信息缓冲区

管理文件逻辑结构;将用户提供的记录号转换为逻辑地址;缓冲区用于加载索引表等数据。

5.物理文件系统

完成逻辑地址 → 物理地址的转换,对接文件物理结构。

6.辅助分配模块

负责磁盘存储空间的分配与回收;对应磁盘空闲空间管理算法(位图、空闲链表等)。

7.设备管理模块

最底层,直接对接磁盘硬件;负责磁盘调度、设备驱动、IO交互。

综合举例(串联全层级)

需求:删除Excel文件中指定记录

1.用户接口 :接收删除请求;

2.文件目录系统 :根据路径查找目录,定位文件FCB;

3.存取控制 :校验当前用户是否有删除权限;

4.逻辑文件系统 :将记录号转为逻辑地址;

5.物理文件系统 :逻辑地址转磁盘物理地址;

6.设备管理 :操作磁盘,删除对应数据;

7.辅助分配:回收释放的空闲磁盘块。

五、磁盘格式化 & 文件系统全局结构

1.磁盘两级格式化

(1)物理格式化(低级格式化)

  1. 执行时机:磁盘出厂后首次使用前;
  2. 核心工作:
    ○将磁盘划分为标准扇区;
    ○检测坏扇区,并用备用扇区替换;
  3. 特性:坏扇区对操作系统完全透明,系统无法感知。

(2)逻辑格式化(高级格式化)

  1. 执行时机:分区之后(C盘、D盘等分区);
  2. 核心工作:
    ○划分磁盘分区(卷),用分区表记录每个分区的地址范围;
    ○在分区内搭建完整文件系统。

2. 分区(卷)的外存布局(以Unix为例)

单个分区从起始到结束,依次分为5个区域:

  1. 引导块:系统启动相关数据;
  2. 超级块:记录分区空闲块整体信息,快速批量分配空闲磁盘块;
  3. 空闲空间管理区:如位示图(位图),精准标记每一个磁盘块空闲/占用状态;
  4. i节点区(索引节点区):连续存储所有文件的索引节点,通过下标可快速定位;
  5. 根目录 + 文件数据区:根目录是文件系统入口,剩余空间存放目录与文件数据。

补充:超级块(批量找空闲块)+ 位示图(单点查询块状态),功能互补。

3. 文件系统内存结构

操作系统内核区维护三大核心数据,加速文件访问:

  1. 目录缓存:缓存近期访问的目录FCB,避免重复读取外存,提升检索速度;
  2. 系统打开文件表:全局唯一,记录所有已打开文件;
  3. 进程打开文件表:每个进程独有,记录当前进程打开的文件,存放指向系统表的索引(文件描述符)。

4. 完整访问流程(Open + Read 串联)

  1. 执行Open:路径检索 → 目录缓存/目录系统定位FCB → 权限校验 → FCB复制到系统打开文件表,进程表生成条目,返回文件描述符;
  2. 执行Read:通过文件描述符查找两级打开文件表 → 获取文件物理地址与读写指针 → 设备模块读取磁盘数据到内存。

六、全书高频考点&易混点汇总

1.打开文件 :只加载目录项/FCB,不加载文件数据;读文件才会加载数据。

2.打开文件表 :系统表(全局、计数器)、进程表(独有、读写指针+权限)区分记忆。

3.硬链接删除 :仅count=0时才真正删除文件数据。

4.软链接 :原文件删除,链接失效;访问速度慢于硬链接。

5.口令 vs 加密 :口令存在系统中,加密密钥由用户保管,后者安全性更高。

6.访问控制 :支持精细化分权,拒绝权限优先级高于允许权限。

7.格式化 :低级格式化分扇区、检坏块;高级格式化建分区、建文件系统。

8.文件描述符:进程操作文件的唯一标识,替代路径和文件名。

相关推荐
无聊的菜鸟2 小时前
TMS320F2806X学习笔记(零)—— C2000、CCS、新建工程
笔记·mcu·c2000·f2806x
ljt27249606613 小时前
Compose笔记(八十三)--onVisibilityChanged
笔记
Fa_Mian_Tuan7 小时前
图论基础|邻接矩阵超详细讲解(含无向/有向/带权图+完整可运行C语言代码)
c语言·数据结构·笔记·算法·图论
mifengxing7 小时前
文件逻辑结构、物理结构与磁盘空闲存储空间管理
大数据·linux·运维·操作系统·计算机408
zhangrelay7 小时前
ROS 2 Lyrical 第9章 计算机视觉与摄像头应用
linux·笔记·学习·ubuntu·机器人·ros2
FakeOccupational8 小时前
【电路笔记 STM32】stm32f103 实现HAL_UART_Transmit_DMA + 普通模式/连续模式的 UART DMA 收发
笔记·stm32·嵌入式硬件
北京海得康9 小时前
DMD基因治疗deramiocel遭FDA质疑,Ultragenyx DTX401即将获批
笔记
zjnlswd10 小时前
C#学习笔记2 刘铁锰
笔记·学习
Mr_liu_66610 小时前
Claude非专业入门实战笔记(4):Claude运行方式简单解析——从RAG到代理循环
笔记·ai编程·claude