4 文件管理
4.1 基本概念
文件属性:
- 文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
- 标识符: 一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
- 类型:指明文件的类型
- 位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
- 大小:指明文件大小
- 创建时间、.上次修 改时间
- 文件所有者信息
- 保护信息:对文件进行保护的访问控制信息
组织方式:目录形式也是特殊的结构文件
操作系统提供的功能:创建文件(create系统调用)、删除文件(delete)、读文件(read)、写文件(write)、打开文件(open)、关闭文件(close)
文件存储方式:
其他文件功能:
- 文件共享:多个用户共享使用一个文件
- 文件保护:保证不同用户对文件有不同权限
4.2 文件的逻辑结构
无结构文件:文件内部数据是一系列的二级制或字符流,如".txt"
有结构文件:由一组相似的记录组成,每条记录由若干个数据项组成,一般每条记录由一个数据项可作为关键字 ,如数据库表文件
有结构文件按逻辑结构可分为三类
顺序文件
索引文件
索引顺序文件
顺序文件
- 分类:
- 链式存储:可以随机存取
- 顺序存储:逻辑上的相邻物理上也相邻
- 可变长记录:每次只能从第一个记录开始依次向后查找
- 定长记录:可随机存取
- 串结构:无法快速找到某关键字记录
- 顺序结构:可快速找到某关键字记录
索引文件
建立一张索引表定长记录的顺序文件加快文件检索速度,每条记录对应一个索引项
索引顺序文件
同样为文件建立索引表,但是不是为一个记录而是一组记录对应一个索引表项
可以建立多级索引顺序文件
4.3 文件目录
文件控制块
实现文件目录的关键结构
FCB的有序集合就是文件目录,包含了文件的基本信息文件名、物理地址、逻辑结构、物理结构,存取控制信息是否可读可写、禁止访问的用户名单,使用信息文件建立时间、修改时间
FCB实现了文件名和文件之间的映射
目录结构
单级目录结构
不许文件重名
两级目录结构
主文件目录和用户文件目录
允许不同用户的文件重名
访问权限限制
多级目录结构
树形目录结构
各级目录用“/”隔开
绝对路径:从根目录出发的路径,如"D:/18759/c2015/1.txt"、“/18759/c2015/1.txt”
相对路径:从当前目录出发,如"./2015/1.txt"
无环图目录结构
在树形目录结构基础上增加了指向同一节点的有向边
可以用不同文件名指向同一个文件或同一个目录
为共享节点设置共享计数器,减为0时才删除文件
FCB(文件控制块)改进
采用索引节点机制:减少目录项检索磁盘I/O次数
FCB的改进,将文件名和文件信息分开,使文件信息单独形成一个称为索引结点的数据结构,简称i结点。在文件目录中的每个目录项仅有目录名和指向该文件所对应结点的指针构成。FCB必须连续存放,大大节省了系统开销
4.4文件的物理结构
文件块;文件逻辑地址空间被划分为一个一个块,其所及地址可以标后四位 (逻辑块号,块内地址)
文件分配方式
- 文件分配方式
- 连续分配
- 链接分配
- 隐式链接
- 显式链接
- 索引分配
连续分配方式
要求文件在磁盘上占有一组连续的块
物理块号=起始块号+逻辑块号
支持顺序访问和随机访问
优点:在顺序读写时速度快
缺点: 1. 不方便拓展
2.存储空间利用率低,产生难以利用的磁盘碎片
链接分配方式
隐式链接
除了最后一个磁盘块,每个磁盘块中都会保存指向下一个磁盘块的指针
只支持顺序访问
优点:方便拓展
缺点:查找效率低,耗费空间
显式链接
用于连接文件各物流块的指针显式的存放于一张表文件分配表FAT
一个磁盘仅一张FAT
物理块号=找起始块号->找i号逻辑块对应物理块号不需要读磁盘
支持随机访问
优点:方便拓展,利用率高,读取快,访问效率高
缺点:FAT占一定的存储空间
索引分配方式
允许文件离散的分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录文件各个逻辑块对应的物理块
支持随机访问,拓展容易(给文件添加一个空闲块,并增加一个索引表项)
文件太大(超过256块)时,一个索引块放不下?
- 链接方案:索引快间顺序访问
- 多层索引:
- 混合索引:多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一-级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)
4.5 空闲磁盘管理
- 分类
- 空闲表法
- 空闲链表法
- 空闲盘快链:以盘块为单位
- 空闲盘区链:多个相邻盘块组成一个盘区
- 位示图法;用二进制位代表对应盘块是否分配 0空闲
- 成组链接法:超级块,记录下一组的盘块数量和盘块号,多级下推
4.6 文件的基本操作
- 创建文件:调用create系统(外存找到空间,创建文件目录项)
- 删除文件:调用delete系统(找到文件名对应目录项,回收文件占用磁盘块,删除文件对应目录项)
- 打开文件:调用open系统(找到文件对应目录项,复制到内存的打开文件表中,使用打开文件表编号打开文件)
- 关闭文件:调用close系统(将进程的打开文件表对应表项删除,回收内存空间,打开文件表打开计数器count-1)
- 读文件:调用read系统(指明读的文件和读入数据大小,以及数据放在什么位置*)
- 写文件:调用write系统(指明写的文件和写入数据大小,以及数据放在什么位置)
4.7 文件共享
- 基于索引节点的共享方式硬链接 索引节点
索引节点中设置链接技术变量count,辨识链接到本索引节点的用户目录项数 - 基于符号链的共享方式软链接
建立一个文件,记录源文件的路径
4.8 文件保护
- 口令保护:为文件设置口令,用户访问时提供,系统验证
开销小,但口令一般存放于FCB或者索引节点中,不大安全 - 加密保护:用密码加密,访问时用户提供正确密码
安全性高但加解密耗费时间 - 访问控制:用访问控制表ACL来记录各(组)用户对文件的访问权限
实现灵活,可实现复杂的文件保护功能
4.9 文件的层次结构
4.10文件系统的全局结构
在外存中
在内存中
open系统打开文件的过程
4.11虚拟文件系统VFS
- 向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
- 要求下层文件系统必须实现某些函数功能如read
- 虚拟文件系统打开文件后建立vnode,存储文件各种信息,包括函数功能指针
文件系统挂载:在VFS注册新挂载的文件系统(内存中的挂载表)->新挂载的文件系统向VFS提供一个函数地址列表->将新文件系统加到挂载点也就是某个父目录,Windows显示新的盘符
4.12 磁盘
机械硬盘
磁盘结构
磁盘、磁道、扇区的概念
磁盘由表面涂有磁性物质的圆形盘片组成用磁盘表面的磁性物质来记录二进制数据
每个盘片被划分为一个个磁道,每个磁道又划分为一个个扇区磁盘最内圈的磁道数据密度最大
如何在磁盘中读/写数据日
磁头移动到目标位置,盘片旋转,对应扇区划过磁道才能完成读/写
盘面、柱面的概念
磁盘有多个盘片"摞"起来,每个盘片有两个盘面
所有盘面中相对位置相同的磁道组成柱面
磁盘的物理地址:(柱面号,盘面号,扇区号)
磁盘的分类
- 根据磁头是否可移动
- 固定头磁盘(每个磁道有-一个磁头)
- 移动头磁盘(每个盘面只有一个磁头)
- 根据盘片是否可更换
- 固定盘磁盘
- 可换盘磁盘
磁盘调度
一次磁盘读/写 操作需要的时间日
寻找时间(寻道时间):启动磁臂移动磁头所花的时间
延迟时间:将目标扇区转到磁头下面所花的时间
传输时间:读/写数据花费的时间
磁盘调度算法
影响寻道时间
先来先服务(FCFS):按访问请求到达的先后顺序进行处理
缺点:性能差
最短寻找时间优先(SSTF):优先处理的磁道是与当前磁头最近的磁道
贪心算法的思想,能保证眼前最优,但无法保证总的寻道时间最短
缺点:可能导致饥饿
扫描算法(电梯算法、SCAN):只有磁头移动到最边缘的磁道时才可以改变磁头移动方向
缺点:对各个位置磁道的响应频率不平均
循环扫描算法(C-SCAN):只有磁头朝某个方向移动时才会响应请求,移动到边缘后立即让磁头返回起点,返回途中不响应任何请求
缺点:对各个磁道响应频率不均匀,平均寻道时间长
LOOK算法:SCAN算法的改进,只要在磁头移动方向上不再有请求,就立即改变磁头方向
C-L0OK算法:C-SCAN算法的改进,只在朝某个特定方向移动时处理磁道访问请求,只要在该方向上不再有请求,就立即让磁头返回起始端而不处理任何请求
减少磁盘延迟时间的方法
交替编号
具体做法:让编号相邻的扇区在物理上不相邻
原理:读取完一个扇区后需要一段时间处理才可以继续读入下一个扇区
转两圈读取一圈磁道上的所有数据
错位命名
具体做法:让相邻盘面的扇区编号"错位"
原理:与"交替编号"的原理相同。“错位命名法"可降低延迟时间
磁盘地址结构的设计
用(柱面号,盘面号,扇区号)结构而不用(盘面号,柱面号,扇区号)结构的原因%%%%
原因:在读取地址连续的磁盘块时,前者不需要移动磁头
磁盘管理
磁盘初始化
- 低级格式化/物理格式化:划分扇区
- 磁盘分区(C盘、D盘、E盘)
- 逻辑格式化:建立文件系统(建立根目录文件、建立用于存储空间管理的数据结构)
引导块
计算机启动时需要运行初始化程序(自举程序)来完成初始化
ROM中存放很小的自举装入程序
完整的自举程序存放在初始块(引导块)中
坏块的管理
简单的磁盘:逻辑格式化时将坏块标记出来、
复杂的磁盘:磁盘控制器维护一个坏块链,并管理备用扇区
固态硬盘
原理:基于闪存技术Flash Memory,属于电可擦除ROM,即EEPROM
组成:
闪存翻译层:负责翻译逻辑块号,找到对应页(Page)
存储介质:多个闪存芯片(Flash Chip)一每个芯片包含多 个块(block) 一每 个块包含多个页(page)
读写性能特性
- 以页(page) 为单位读/写一相当于磁盘的"扇区"
- 以块(block) 为单位"擦除" 只能以块为单位擦除, 擦干净的块,其中的每页都可以写一次, 读无限次
- 支持随机访问,系统给定一个逻辑地址,闪存翻译层可通过电路迅速定位到对应的物理地址
- 读快、写慢。要写的页如果有数据,则不能写入,需要将块内其他页全部复制到一个新的(擦除过的)块中,再写入新的页
与机械硬盘相比的特点:
- SSD读写速度快,随机访问性能高,用电路控制访问位置;机械硬盘通过移动磁臂旋转磁盘控制访问位置,有寻道时间和旋转延迟
- SSD安静无噪音、耐摔抗震、能耗低、造价更贵
- SSD的一个"块"被擦除次数过多(重复写同一个块)可能会坏掉,而机械硬盘的扇区不会因为写的次数太多而坏掉
磨损均衡技术:
思想:将"擦除"平均分布在各个块上,以提升使用寿命
动态磨损均衡:写入数据时, 优先选择累计擦除次数少的新闪存块
静态磨损均衡:SSD监测并自动进行数据分配、迁移,让老旧的闪存块承担以读为主的储存任务,让较新的闪存块承担更多的写任务