文件管理(一)—— 初识文件管理

21 阅读4分钟

前言

操作系统作为系统资源的管理者,文件也是一种系统资源。文件本质上就是一组有意义的信息/数据的集合。 我们日常接触的照片、Word 文档、PPT、PDF 等都是文件,不同类型的文件呈现出不同的特性,而这些特性都需要操作系统来关心与处理。

文件管理需要解决以下五个核心问题:

  1. 文件有哪些属性:文件本身具备哪些描述信息
  2. 文件内部如何组织:文件内部数据的组织形式(逻辑结构)
  3. 文件之间如何组织:多个文件怎么有序地存放在一起(目录)
  4. 操作系统向上层提供哪些接口:应用程序和用户如何操作文件(系统调用)
  5. 文件如何存放在外存:文件数据在磁盘上的物理存放方式(物理结构)

1. 文件的属性

每个文件都拥有若干属性:文件名是用户最直接感知的属性,同一目录下不允许重名;标识符是操作系统内部用于唯一区分文件的编号,用户不可见;文件类型(如 .txt.mp4)决定默认打开程序;文件位置包括用户可见的存放路径和操作系统内部记录的外存物理地址;此外还有文件大小、创建/修改时间、所有者,以及控制不同用户读写权限的保护信息

2. 文件内部的数据组织(逻辑结构)

文件按内部结构分为两类:无结构文件(流式文件)由二进制或字符流组成,无明显结构,如 .txt有结构文件(记录式文件)由一条条记录组成,每条记录包含若干数据项(如学号、姓名),Excel 表格和数据库表是典型代表,其记录的具体组织方式属于文件逻辑结构的范畴,后续章节详述。

3. 文件之间的组织(目录)

我们平时使用的文件系统呈现出树状结构

根目录 /
├── 文档/
   ├── 工作/
      └── report.docx
   └── 学习/
       └── notes.txt
├── 照片/
   ├── 2024/
   └── 2025/
└── 视频/
  • 用户可以自由创建多层目录(即文件夹),将文件有序组织。
  • 目录本身也是一种特殊的有结构文件,由一系列记录组成。

4. 操作系统向上层提供的文件操作接口

操作系统通过系统调用为上层应用程序和用户提供以下基本文件操作:

系统调用功能说明
create创建文件新建一个空文件
open打开文件使用文件前必须先打开
read读文件将文件数据从外存读入内存
write写文件将内存中的数据写回外存
close关闭文件文件使用结束后必须关闭
delete删除文件将文件数据从外存中抹除

注意:在读/写文件之前,必须先调用 open;使用结束后,必须调用 close

复杂操作可由基本操作组合实现,例如"复制文件":

  1. create 创建新的空文件
  2. read 将源文件内容读入内存
  3. write 将内存数据写入新文件

5. 文件在外存上的存放(物理结构)

外存的基本结构

  • 外存(磁盘)与内存类似,被划分为一个个大小相等的磁盘块(物理块)
  • 每个磁盘块通常包含 (2^n) 个地址单元,例如 (2^{10} = 1024) 字节 = 1 KB

地址转换

操作系统需要将文件的逻辑地址转换为外存的物理地址

逻辑地址  = 逻辑块号  + 块内地址
物理地址  = 物理块号  + 块内地址
  • 块内地址位数取决于磁盘块大小(1 KB 块需要 10 位表示块内地址)。

分配单位

  • 操作系统以块为单位为文件分配存储空间。
  • 即使文件只有 10 字节,也会占用整个磁盘块(1 KB)。
  • 读写文件时,也以块为单位进行数据交换。

6. 其他重要功能

除上述内容外,操作系统还需实现:

  • 文件共享:多个用户可以共享使用同一个文件。
  • 文件保护:不同用户对文件拥有不同的操作权限(读/写/无权访问)。