第二十九课:文件系统基础
一、为什么需要文件系统?
先思考一个问题:
计算机里的数据:
最终:
存在哪里?
答案:
磁盘(Disk)
例如:
你保存:
照片.jpg实际上:
硬盘:
只认识:
010101010101它不知道:
什么叫:
“照片”。
所以需要:
一个管理者。
负责:
- 给数据命名 - 组织数据 - 查找数据 - 保存数据 - 删除数据这个管理者:
就是:
文件系统(File System)
二、什么是文件?
教材定义:
文件是具有符号名的、在逻辑上具有完整意义的一组相关信息的集合。
简单理解:
文件:
就是:
操作系统给数据集合:
起的名字。
例如:
硬盘:
实际:
可能:
存:
101010101 110010101 001010101操作系统:
组织:
成为:
photo.jpg music.mp3 game.exe三、文件包含什么?
一个文件:
不仅仅:
包含:
数据。
还包含:
很多属性。
例如:
一个文件:
test.txt系统还需要知道:
文件名: test.txt 大小: 10KB 创建时间: 2026-01-01 权限: 可读可写 位置: 磁盘哪里这些信息:
叫:
文件控制块 FCB(File Control Block)
四、文件控制块 FCB(★★★★★)
FCB:
是操作系统管理文件的重要数据结构。
可以理解为:
文件的身份证。
人的身份证:
包含:
姓名 年龄 身份证号文件身份证:
包含:
文件名 文件大小 权限 存储位置FCB通常包括:
1. 文件基本信息
例如:
文件名。
2. 文件存取权限
例如:
Linux:
rwx表示:
read
write
execute
3. 文件物理位置
最重要。
告诉系统:
数据:
在磁盘哪里。
4. 文件状态
例如:
是否打开。
五、文件系统层次结构
操作系统:
不会:
直接:
操作磁盘。
中间:
有很多层。
大概:
如下:
用户程序 ↓ 文件系统接口 ↓ 目录管理 ↓ 文件组织 ↓ 磁盘管理 ↓ 硬件磁盘用户:
只需要:
打开文件。
下面:
全部:
由系统完成。
六、文件的基本操作
用户:
对文件:
有哪些操作?
1. 创建文件
create。
例如:
新建:
test.txt。
2. 删除文件
delete。
释放:
空间。
3. 打开文件
open。
4. 关闭文件
close。
5. 读文件
read。
6. 写文件
write。
这些:
是操作系统:
提供的:
系统调用。
七、文件的逻辑结构
文件:
从用户角度:
怎么看?
叫:
逻辑结构。
主要:
两种。
第一种:无结构文件
也叫:
流式文件。
特点:
没有明显结构。
就是:
一串字符。
例如:
hello world abcdef 123456常见:
文本文件。
第二种:有结构文件
也叫:
记录式文件。
文件:
由:
记录组成。
例如:
学生信息:
学号 姓名 成绩 001 张三 90 002 李四 85每一行:
就是:
一个记录。
八、文件物理结构
重点来了。
逻辑:
是:
用户看到的。
物理:
是:
磁盘怎么存。
主要:
三种。
1. 连续分配
思想:
文件占用连续磁盘块。
例如:
文件:
占:
磁盘:
10~15块。
10 11 12 13 14 15优点:
速度快。
为什么?
因为:
连续。
读取:
顺序。
缺点:
产生:
外部碎片。
类似:
连续内存分配。
2. 链接分配
思想:
文件块可以分散,但是用指针连接。
例如:
块5 ↓ 块20 ↓ 块8 ↓ 块30优点:
没有外部碎片。
缺点:
随机访问慢。
为什么?
因为:
找第100块:
必须:
从头找。
3. 索引分配(★★★★★)
思想:
建立:
一个索引块。
记录:
所有数据块地址。
例如:
索引:
文件A 索引块 ↓ 5 ↓ 20 ↓ 8 ↓ 30优点:
支持随机访问。
缺点:
需要额外索引空间。
九、三种分配方式比较
| 方式 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 连续分配 | 连续存储 | 速度快 | 外部碎片 |
| 链接分配 | 指针连接 | 无外部碎片 | 随机访问慢 |
| 索引分配 | 索引表 | 随机访问快 | 需要索引块 |
口诀:
连续快,链接稳,索引灵活。
十、目录是什么?
文件很多。
怎么办?
不能:
全部堆一起。
所以:
需要:
目录。
目录:
本质:
也是:
一种特殊文件。
它保存:
文件信息。
例如:
Windows:
C盘 ├── 用户 │ └── 图片 │ └── photo.jpg └── 软件这个:
就是:
目录结构。
十一、目录管理
常见:
目录结构:
1. 单级目录
所有文件:
放一起。
例如:
文件1 文件2 文件3问题:
文件多:
容易冲突。
2. 两级目录
每个用户:
一个目录。
例如:
用户A ├ 文件1 用户B ├ 文件23. 树形目录(★★★★★)
现代系统:
采用。
例如:
Windows:
C: ├ Program Files ├ Users └ WindowsLinux:
/ ├ bin ├ home ├ etc十二、本课重点总结
今天必须掌握:
文件
一组具有逻辑意义的数据集合。
FCB
文件控制块,是文件的身份证。
文件逻辑结构
两种:
- 无结构文件
- 有结构文件
文件物理分配
三种:
连续
快,但碎片。
链接
灵活,但随机访问慢。
索引
支持随机访问。
目录
组织文件。
现代系统:
树形目录。
第三十课:文件目录与文件共享
一、为什么需要目录?
假设:
你的硬盘:
有:
100万个文件如果:
所有文件:
直接放在一起:
a.txt b.jpg game.exe music.mp3 ...会发生什么?
问题:
- 文件名字容易重复 - 查找困难 - 管理混乱所以:
操作系统:
引入:
目录(Directory)
二、目录是什么?
很多人以为:
目录就是:
文件夹。
这个理解:
没错。
但是从操作系统角度:
更准确:
目录是一种特殊的文件,它保存文件的相关信息。
也就是说:
目录里面:
保存的不是照片、视频。
而是:
例如:
目录:
我的文件夹里面:
可能保存:
| 文件名 | 位置 |
|---|---|
| a.txt | 磁盘100块 |
| b.jpg | 磁盘200块 |
所以:
目录实际上:
像一本:
文件索引表。
三、文件查找过程(★★★★★)
用户:
打开:
C:\test\a.txt操作系统:
怎么找到?
一步一步:
第一步:
找到根目录。
例如:
Windows:
C:Linux:
/第二步:
查找:
test目录。
目录中:
寻找:
test第三步:
进入test。
继续查找:
a.txt第四步:
读取FCB。
得到:
文件物理位置。
过程:
可以表示:
路径 ↓ 目录 ↓ FCB ↓ 磁盘位置 ↓ 读取文件四、目录结构
操作系统:
经历了:
几个发展阶段。
1. 单级目录
所有文件:
放一个目录。
例如:
/ ├ a.txt ├ b.txt ├ c.txt优点:
简单。
缺点:
文件名冲突。
例如:
两个用户:
都想创建:
test.txt怎么办?
2. 两级目录
为每个用户:
建立目录。
例如:
系统 ├ 用户A │ └ test.txt │ └ 用户B └ test.txt解决:
不同用户:
文件名冲突。
3. 树形目录(★★★★★)
现代操作系统:
采用。
例如:
Linux:
/ ├── home │ ├── user1 │ │ └── a.txt │ ├── etc └── binWindows:
类似:
C: ├── Windows ├── Program Files └── Users优点:
- 层次清晰
- 查找方便
- 支持大量文件
五、路径是什么?
路径:
就是:
文件在目录树中的位置。
分两种:
① 绝对路径
从根目录开始。
例如:
Linux:
/home/user/a.txtWindows:
C:\Users\a.txt② 相对路径
从当前目录开始。
例如:
当前:
/home/user访问:
a.txt六、文件共享
问题:
来了。
如果:
两个用户:
都需要:
同一个文件。
怎么办?
例如:
公司:
多个员工:
需要:
访问:
同一个报告。
方法:
不能:
复制多份。
因为:
浪费空间。
所以:
需要:
文件共享。
七、文件共享方式
主要:
两种。
方法一:硬链接(Hard Link)
思想:
多个目录项指向同一个文件。
例如:
文件:
A.txt目录:
记录:
A.txt ↓ 文件FCB现在:
创建:
B.txt。
结果:
A.txt ↓ 文件数据 ↓ B.txt两个名字:
指向:
同一个文件。
特点:
删除:
A.txt。
B.txt:
仍然存在。
为什么?
因为:
文件本身:
没有删除。
只是:
删除一个名字。
八、硬链接的核心:引用计数
系统:
会记录:
有多少个目录项:
指向文件。
例如:
开始:
引用数=1创建:
B.txt:
变成:
引用数=2删除:
A.txt:
变成:
引用数=1只有:
引用数=0。
文件数据:
才真正删除。
九、方法二:软链接(Symbolic Link)
也叫:
符号链接。
类似:
Windows:
快捷方式。
例如:
桌面:
有:
游戏快捷方式但是:
游戏:
真正位置:
D:\Game\xxx.exe快捷方式:
只是:
保存:
目标路径。
结构:
快捷方式 ↓ 目标文件特点:
如果:
目标文件删除。
软链接:
失效。
十、硬链接 vs 软链接(★★★★★)
| 硬链接 | 软链接 | |
|---|---|---|
| 本质 | 同一个文件多个名字 | 一个路径指向另一个文件 |
| 是否复制数据 | 否 | 否 |
| 目标删除 | 仍可访问 | 失效 |
| 是否跨文件系统 | 通常不能 | 可以 |
| 类似 | 别名 | 快捷方式 |
口诀:
硬链接是同一个人多个名字,软链接是地址条。
十一、inode(Linux重点)
现在:
进入Linux文件系统。
Linux:
有一个非常重要概念:
inode
Windows:
喜欢:
用FCB理解。
Linux:
用:
inode。
inode:
是什么?
简单理解:
文件的身份证。
inode保存:
例如:
文件大小 权限 时间 数据块位置 引用数量注意:
inode:
不保存:
文件名。
为什么?
因为:
文件名:
属于:
目录。
结构:
目录 文件名 ↓ inode ↓ 数据块十二、Linux为什么删除文件快?
因为:
删除文件:
实际上:
删除:
目录中的名字。
然后:
inode引用数减1。
不是:
马上:
擦除:
整个数据。
所以:
Linux删除大文件:
为什么:
很快?
因为:
不用马上清空几十GB数据。
十三、本课重点总结(★★★★★)
必须掌握:
目录
保存文件信息的特殊文件。
文件查找
流程:
路径 ↓ 目录 ↓ FCB/inode ↓ 数据块目录结构
现代:
树形目录。
硬链接
多个名字:
指向:
同一个文件。
软链接
类似:
快捷方式。
保存:
目标路径。
inode
Linux文件核心结构:
保存:
文件属性和位置。
不保存:
文件名。
十四、口诀
目录:
目录存名字,inode存信息。
链接:
硬链接同文件,软链接像快捷。