文章目录
- [6.2.3 文件的使用(主要操作)](#6.2.3 文件的使用(主要操作))
-
-
- [1. 创建文件 (Create)](#1. 创建文件 (Create))
- [2. 打开文件 (Open)](#2. 打开文件 (Open))
- [3. 读文件 (Read)](#3. 读文件 (Read))
- [4. 写文件 (Write)](#4. 写文件 (Write))
- [5. 关闭文件 (Close)](#5. 关闭文件 (Close))
- [6. 删除文件 (Delete/Unlink)](#6. 删除文件 (Delete/Unlink))
-
- [6.4 文件系统的实现与管理](#6.4 文件系统的实现与管理)
-
- [6.4.1 文件存储空间管理](#6.4.1 文件存储空间管理)
-
- [内存 、 外存 管理对比表](#内存 、 外存 管理对比表)
- 核心任务:对空闲块的管理
- 关键概念说明
6.2.3 文件的使用(主要操作)
核心概念 :对文件的操作通过操作系统提供的系统调用实现。在编程层面,这些操作表现为一组函数。
1. 创建文件 (Create)
- 语法 :
fd = creat(pathname, modes) - 参数说明 :
pathname:文件存储的路径名。modes:文件的存取权限(如:只读、读写等)。
- 返回值 :
fd是文件代号(File Descriptor,文件描述符),后续操作都通过这个fd进行。
2. 打开文件 (Open)
- 语法 :
fd = open(pathname, flags, modes) - 参数说明 :
pathname:欲打开的文件路径。flags:打开文件后的操作模式(如:只读O_RDONLY、只写O_WRONLY、追加O_APPEND等)。modes:文件创建时指定的存取权限。
- 注意 :在读写文件之前,必须先执行 Open 操作,将文件控制块(FCB)调入内存。
3. 读文件 (Read)
- 语法 :
number = read(fd, buffer, count) - 参数说明 :
fd:文件代号(由 open 返回)。buffer:读出的信息送往用户指定的内存区域首地址(缓冲区)。count:本次请求读取的字节数。
4. 写文件 (Write)
- 语法 :
number = write(fd, buffer, count) - 参数说明 :
fd:文件代号。buffer:保存欲写出信息的缓冲区首地址。count:请求写出的字节数。
5. 关闭文件 (Close)
- 语法 :
close(fd) - 操作意义:撤销该文件在内存中的数据结构,释放系统资源。
6. 删除文件 (Delete/Unlink)
- 语法 :
unlink(pathname) - 参数说明 :
pathname为被删除文件的路径名。 - 底层逻辑:在磁盘上找到对应的目录项,释放其占用的物理块。
6.4 文件系统的实现与管理
6.4.1 文件存储空间管理
在深入具体算法之前,需要明确主存(内存)管理 与文件存储(外存)管理的区别。

内存 、 外存 管理对比表
| 特性 | 主存储器 (内存 - 第5章) | 辅助存储器 (外存 - 本章) |
|---|---|---|
| 访问速度 | 访问快 | 访问慢 |
| 容量大小 | 容量有限 | 容量大 |
| CPU访问 | 处理器可直接访问 | 处理器不可直接访问 |
| 管理名称 | 操作系统的存储管理 | 文件存储空间管理 |
| 核心任务 | 用户区、内存块的分配 | 空闲块的组织和管理 |
核心任务:对空闲块的管理
文件系统的一大职能是记录磁盘上哪些块是已经被占用的,哪些是空闲的。
常见的管理方法:
- 空闲文件表(连续分配常用)
- 空闲块链表
- 位示图法 (Bitmap)(重要,常见于计算题)
- 成组链接法(UNIX系统采用,结构较复杂)
关键概念说明
- FD (文件描述符) :文件描述符可以理解为一个"句柄"或"指针"。在 Linux 系统中,"一切皆文件",无论是硬盘上的文件、网卡,还是键盘输入,都通过
fd进行read/write操作。 - Open 与 FCB:"打开文件"的操作实质是:系统根据路径名找到目录项,将文件的描述信息(FCB)从磁盘读入内存的打开文件表,并返回一个索引(fd)给用户进程。