04.文件管理
概述
文件的定义
-
一组有意义的信息的集合
文件的属性
-
文件名
-
标识符: 一个系统的各文件标识符唯一
-
类型: 指明文件的类型
-
位置: 文件存放的路径(让用户使用), 在外存的地址(让操作系统使用)
-
大小
-
创建时间, 上次修改时间, 文件所有者信息
-
保护信息: 对文件进行保护的访问控制信息
文件的逻辑结构
文件目录结构
文件的基本操作
-
操作系统向上层提供的基础功能
-
创建文件 – create系统调用
-
读文件 – read系统调用
-
写文件 – write系统调用
-
删除文件 – delete系统调用
-
打开文件 – open系统调用
-
关闭文件 – close系统调用
-
文件的物理结构
文件存储空间管理
文件的其他操作
-
操作系统需要提供的其他文件管理功能
-
文件共享
-
文件保护
-
文件的逻辑结构
用户视角
无结构文件
-
文件内部的数据就是一系列二进制流或字符流组成
-
又称"流式文件"
-
如 .txt 文件
有结构文件
-
由一组相似的记录组成
-
又称"记录式文件"
-
每条记录由若干个数据项组成
-
定长记录
- 每条记录占用的存储空间相等
-
可变长记录
- 每条记录占用的存储空间不相等
顺序文件
-
文件中的记录一个接一个地顺序排列(逻辑上), 可定长可变长, 在物理上可以顺序存储或链式存储
-
串结构
- 记录之间的顺序与关键字无关
- 通常按照记录存入的时间决定记录的顺序
-
顺序结构
- 记录之间的顺序按关键字顺序排列
索引文件
索引顺序文件
多级索引顺序文件
文件目录
目录本身就是一种有结构文件, 由一条条记录组成. 每条记录对应一个在目录下的文件
-
文件控制块(FCB)的有序集合称为"文件目录", 一个FCB就是一个文件目录项
文件控制块
-
目录文件中的一条记录就是一个文件控制块(FCB)
-
FCB中包含了文件的
- 基本信息(文件名, 物理地址, 逻辑结构, 物理结构等)
- 存取控制信息(是否可读/可写, 禁止访问的用户名单等)
- 使用信息(如文件的建立时间, 修改时间等)
目录结构
单级目录结构
-
实现"按名存取", 但不允许文件重名
-
不适用于多用户操作系统
两级目录结构
-
主文件目录(MFD)
-
用户文件目录(UFD)
多级目录结构
-
树型目录结构
无环图目录结构
索引结点
-
FCB的改进
-
存放在外存中的索引结点称为"磁盘索引结点", 当索引结点放入内存后称为"内存索引结点"
-
内存索引结点中需要增加一些信息, 比如: 文件是否被修改, 此时有几个进程正在访问该文件等
文件的物理结构
文件分配方式
操作系统视角
连续分配
-
优点
- 支持顺序访问和直接访问
- 读取某个磁盘块时, 需要移动磁头. 访问的两个磁盘块相隔越远, 移动磁头所需时间就越长
- 连续分配的文件在顺序读/写时速度最快
-
缺点
- 不利于文件拓展
- 存储空间利用率低, 会产生磁盘碎片
链接分配
离散分配
隐式链接
-
优点
- 方便文件拓展, 不会有碎片问题, 外存利用率高
-
缺点
- 只支持顺序访问, 不支持随机访问, 查找效率低
- 指向下一个盘块的指针也需要耗费少量的存储空间
显式链接
-
文件分配表 (FAT)
- 开机时放入内存, 并常驻内存
-
优点
- 支持随机访问
- 地址转换时不需要访问磁盘, 因此文件的访问效率更高
-
缺点
- 文件分配表需要占用一定的存储空间
索引分配
-
优点
- 支持随机访问
- 文件拓展容易实现
-
缺点
- 索引表占用一定的存储空间
链接方案
多层索引
混合索引
文件存储空间管理
存储空间的划分与初始化
存储空间管理
空闲表法
-
适用于连续分配
空闲链表法
-
空闲盘块链
-
空闲盘区链
位视图法
成组链接法
文件的基本操作
创建文件
-
调用create系统调用
删除文件
-
调用delete系统调用
打开文件
-
调用open系统调用
关闭文件
-
调用close系统调用
读文件
-
调用read系统调用
写文件
-
调用write系统调用