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






