文章目录
1、文件管理概述
- 文件的定义:一组有意义的信息的集合
- 文件的属性:文件名、标识符、类型、位置、大小、保护信息…
- 文件内部的组织形式:文件的逻辑结构
- 文件之间的组织形式:目录结构
- 操作系统应向.上提供哪些功能:create、 delete、 open、close、 read、 write 系统调用
- 文件存放在外存的方式:文件的物理结构
- 操作系统管理外存中的空闲块:存储空间的管理
- 操作系统需要提供的其他文件管理功能:文件共享、文件保护
2、文件的逻辑结构
- 无结构文件(一系列的二进制流或字符流,“流式文件”)
- 有结构文件(一条条记录组成,“记录式文件”)
- 顺序文件
- 索引文件
- 索引顺序文件
(1)顺序文件
- 分类:串结构(记录之间顺序与关键字无关)、顺序结构
- 顺序文件默认是物理上顺序结构的
- 顺序存储的分类:可变长记录(无法实现随机存储)、定长记录(可实现随机存储)
- 顺序结构、定长记录的顺序文件可以快速检索
- 缺点:不方便增加、删除记录
(2)索引文件
- 建立一张索引表,每个记录对应一个表项。各记录不用保持顺序,方便增加删除记录
- 索引表本身就是定长记录的顺序文件,一个索引表项就是一 条定长记录,因此索引文件可支持随机存取
- 若索引表按关键字顺序排列,则可支持快速检索
(3)索引顺序文件
- 将记录分组,每组对应一个索引表项
- 检索记录时先顺序查索引表,找到分组,再顺序查找分组
- 当记录过多时,可建立多级索引表
3、文件目录
(1)实现:一个文件对应一个FCB(文件控制块),一个FCB就是一个目录项,多个FCB组成文件目录
(2)操作:搜索、创建文件、删除文件、显示文件、修改文件
(3)目录结构
- 单级目录结构
- 两级目录结构
- 多级(树形)目录结构
- 无环图目录结构
(4)索引结点:存放除了文件名之外的所有信息,每个文件对应一个索引结点
4、文件的分配方式
分配方式 | 如何分配 | 目录项内容 | 优点 | 缺点 |
---|---|---|---|---|
顺序分配 | 为文件分配的必须是连续的磁盘块 | 起始块号、文件长度 | 顺序存取速度快,支持随机访问 | 会产生碎片,不利于文件拓展 |
隐式链接分配 | 除文件的最后一个盘块之外,每个盘块中都存有指向下一盘块的指针 | 起始块号、结束块号 | 解决了碎片问题,外存利用率高,文件拓展实现方便 | 只能顺序访问,不能随机访问 |
显式链接分配 | 建立一张文件分配表(FAT),显式记录盘块的先后关系(开机后FAT常驻内存) | 起始块号 | 除了隐式的优点外,还可以通过查询FTA实现随机访问 | FAT需要占用一定存储空间 |
索引分配 | 为文件数据库建立索引表 | 第一个索引块的块号(多级索引:顶级索引块块号) | 支持随机访问,易于实现文件的拓展 | 索引表需占用一定的存储空间。访问数据块之前需要先读入索引块 |
5、文件存储空间管理
存储空间的划分
管理方法
·(1)空闲表法
记录、组织方式:空闲表中记录每个连续空闲区的起始盘块号、盘块数
分配:分配时可采用首次适应、最佳适应等策略;回收时注意表项的合并问题
(2)空闲链表法
记录、组织方式:空闲盘块链/盘区链
分配:(盘块链)分配时从链头依次取出空闲块,回收时将空闲块查到链尾/(盘区链)分配时可采用首次适应、最佳适应等策略;回收时注意相邻空闲盘区合并的问题
(3)位示图法
记录、组织方式:一个二进制位对应一个盘块。(字号, 位号)或(行号,列号)与盘块号一一对应
分配:若文件需要K个块,顺序扫描位示图,找到K个相邻或不相邻的“0”;根据(字号,位号)算出对应盘块号,将相应盘块分配给文件;将相应位设置位“1”
6、向上提供的几个最基本的功能
- 创建文件(create)
- 删除文件(delete)
- 读文件(read)
- 写文件(write)
- 打开文件(open)
- 关闭文件(close)
7、文件共享
- 硬链接(文件共享):各用户的目录指向同一个索引结点,设置count链接计数
- 软连接(快捷方式):在一个Link型的文件中记录共享文件的存放路径
8、文件保护
(1)口令保护
实现:为文件设置一个"口令",用户想要访问文件时需要提供口令,由系统验证口令是否正确
特点:实现开销小,但"口令"一般存放在FCB或索引结点中(也就是存放在系统中)因此不太安全
(2)加密保护
实现:用一个"密码"对文件加密,用户想要访问文件时,需要提供相同的“密码"才能正确的解密
特点:安全性高,但加密/解密需要耗费一定的时间
(3)访问控制
实现:用一个访问控制表(ACL) 记录各个用户(或各组用户)对文件的访问权限
特点:实现灵活,可以实现复杂的文件保护功能
9、文件系统的层次结构
10、磁盘(外存)
10.1 磁盘的结构
- 磁盘:由表面涂有磁性物质的原型盘片组成
- 磁道:磁盘的盘面被划分成一个个磁道,就是一个“圈”
- 扇区:监视一个磁盘块
- 盘片:磁盘有多个盘片组成
- 柱面:所有盘面中相对位置相同的磁道组成柱面
- 如何读/写数据:磁头移动到目标位置,盘片旋转,对应扇区划过磁道完成读/写
- 磁盘的物理地址=(柱面号,盘面号,扇区号)
磁盘分类
根据磁头是否可移动:固定头磁盘、移动头磁盘
根据盘片是否可更换:固定盘磁盘、可换盘磁盘
10.2 磁盘调度算法
一次磁盘读/写操作需要的时间与寻找时间、延迟时间、传输时间有关。延迟与传输时间与硬件有关无法优化,操作系统的调度算法影响的是寻找时间
- 寻找时间:启动磁臂。移动磁头所花的时间
- 延迟时间:将目标扇区转到磁头下面所花的时间
- 传输时间:读/写数据花费的时间
算法
- 先来先服务(FCFS):按访问请求到达的先后顺序进行处理
- 最短寻找时间优先(SSTF):每次都优先响应距离磁头最近的磁道访问请求(贪心)
- 扫描算法(SCAN):只有磁头移动到最边缘的磁道时才可以改变磁头移动方向
- 循环扫描算法(C-SCAN):只有磁头朝某个方向移动时才会响应请求,移动到边缘后立即让磁头返回起点,返回途中不响应任何请求
- LOOK算法:SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即改变磁头方向
- C-LOOK算法:C- SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即让磁头返回
10.3 减少延迟时间的方法
(1)交替编号
原理:读取完一个扇区后需要一段时间处理才可以继续读入下一个扇区
具体做法:让编号相邻的扇区在物理,上不相邻
(2)错位命名
原理:与"交替编号"的原理相同。“错位命名法"可降低延迟时间
具体做法:让相邻盘面的扇区编号"错位”
注:使用(柱面号,盘面号,扇区号)的结构,在读取地址连续的磁盘块时,不需要移动磁头
10.4 磁盘的管理
(1)磁盘初始化步骤
- 低级格式化/物理格式化:划分扇区
- 磁盘分区(C盘、D盘、E盘)
- 逻辑格式化:建立文件系统(建立根目录文件、建立用于存储空间管理的数据结构)
(2)引导块
计算机启动时需要运行初始化程序(自举程序)来完成初始化。
ROM中存放很小的自举装入程序。完整的自举程序存放在初始块(引导块)中
(3)坏块管理
简单的磁盘:逻辑格式化时将坏块标记出来
复杂的磁盘:磁盘控制器维护一个坏块链,并管理备用扇区