目录
8.OS需要提供的其他文件管理功能- 文件共享283+文件保护255
(1)屏蔽了不同FS的差异和操作细节,为上层用户提供了文件操作
(2)VFS要求下层FS实现基本的函数操作。新加入的FS必须满足该系统中VFS的要求
(3)每打开一个file,VFS会在内存中创建一个vnode,用统一的DS表示文件data。创建vnode的时候会将该文件的属性copy到vnode中,并指向对应FS的函数区
一、整体认知
chap4整体上分为文件、目录、文件系统;此blog根据王道讲课顺序编写,so包括chap5磁盘管理的部分内容
1.文件的定义 250
2.文件的属性 251
3.文件内部应该如何被组织(逻辑结构) 256
4.文件之间应该如何被组织起来(目录结构) 252
5.OS应该向上提供哪些功能 253
6.文件应该如何存放在外存中(物理结构) 258
7.OS如何管理外存中的空闲块(存储空间的管理) 258
8.OS需要提供的其他文件管理功能- 文件共享283+文件保护255
二、文件的逻辑结构 256
1.无结构文件
eg:文本文件 text.txt
2.有结构文件
根据记录长度 分成定长记录 or 变长记录
根据物理上分为顺序存储 or 链式存储 ana ->线性表
(1)顺序文件
顺序存储,根据是否跟kw有关分成串(无关) or 顺序
1)串结构
与kw无关,通常按照时间顺序排列
2)顺序结构(default)
all:是否可随机存取,是否可快速找到kw
(2)索引文件
利用索引表
disa:只能顺序查找,效率低
(3)索引顺序文件
先分组,后索引 ,1:多 -> 1:1
(4)直接文件(散列文件)(Hash File)
根据散列函数进行映射,
disa:可能会冲突
三、文件目录
1.文件目录的实现 252
由FCB、索引结点组成
2.目录结构 280
(1)单级目录结构
只能建立一张目录表
disa:不允许多用户
(2)两级目录结构
两级目录,一级为用户,二级为文件
disa:不能对文件进行分类
(3)多级目录结构(树形)
常用的,现在OS中
disa:I/O次数较多,不便于实现文件共享
可以使用相对path减少I/O读写次数
(4)无环图目录结构
使用共享计数器count表示有多少user使用该文件,当count=0,才删除该文件
3.索引结点 252
FCB优化,索引结点中存在除文件名以外的信息
四、文件的物理结构 258
表示文件在空闲磁盘块上如何分配并记录
1.连续分配
连续分配,用目录表示空闲块
2.链接分配
(1)隐式链接
从一个空闲块开始,依次链接后面的空闲块
(2)显示连接
使用FAT表示,根据文件进行分类,FAT仅记录文件块的初始地址,之后通过链接后面的空块
(3)索引分配
1)单级索引
利用一个索引块表示所有空块,目录中表示索引块是多少号,so查空闲块就找目录即可
disa:大文件索引块太多了(索引块大小有限)
1+)链接方案
将所有索引块链式存储
disa:查找后一个必须前面的全部查完,效率低
2)多级索引
一级一级的
3)混合索引
综合使用,适用小、中、大、特大型文件
五、逻辑 vs 物理
逻辑是给用户看的,物理是OS实际的
六、文件存储空间管理 294
文件存储在disk中,那磁盘中的空闲块如何知道呢?
1.空闲表法
用一个table表示空闲块
2.空闲链表法
链式存储表示
1)空闲盘块链
2)空闲盘区链
第一个表示序号,第二个表示空闲块块数
3.位示图法
用0 1 表示空闲/使用
要求会相互转换,直观上算行列即可,不记公式
4.成组链表法
将空块分成一组一组的,之后多级索引分开
每一号栈中,头部第一块表示这一块有多少空闲块,之后每一块表示空闲块号
第一号栈(空闲块号栈),之后的每一块表示整个disk中所有磁盘块组的头号
5.考点
①位示图法会算位号、行号及对应位置的相互转换计算
②分配和回收
七、文件的操作 253
1.创建
create 系统调用
2.打开
open 系统调用
3.读
read 系统调用
4.写
write 系统调用
5.关闭
close 系统调用
6.删除
delete 系统调用
7.打开 vs 读
open 系统调用仅是将文件目录读入内存,读的时候才将文件data放入内存
八、文件共享 283
1.利用索引节点实现的文件共享(硬链接)
索引结点中指向该文件,链接的是实际的file
利用count计数器表示有多少系统引用了该file
2.利用符号链实现的文件共享(软连接)
创建了一个快捷方式
九、文件保护 255
1.口令保护
用一个口令表示user正确
adv:开销小
disa:口令保存在系统中,so不安全
2.加密保护
使用正确密码解密
adv:开销小,安全
disa:费时间
3.访问控制
使用ACL对不同user or class 进行权限的分配
adv:实现灵活,可以实现负责的文件保护
十、文件系统的层次结构 293
十一、文件系统的全局结构(布局) 294
十二、虚拟文件系统 VFS297
1.background
多种FS的存在导致user使用时需要将一份file编写成对应的格式
so为了解决,引入 VFS
2.特点
(1)屏蔽了不同FS的差异和操作细节,为上层用户提供了文件操作
(2)VFS要求下层FS实现基本的函数操作。新加入的FS必须满足该系统中VFS的要求
(3)每打开一个file,VFS会在内存中创建一个vnode,用统一的DS表示文件data。创建vnode的时候会将该文件的属性copy到vnode中,并指向对应FS的函数区
十三、disk的结构 336
tip:看图
1.磁盘、磁头、磁道、扇区
2.读写disk
step:
step1:根据柱面号移动磁臂,让磁头指向指定磁面
step2:激活磁头
setp3:disk旋转,磁头划过,就完成了
3.柱面、盘面
4.disk的物理地址
采用(柱面号·盘面号·扇面号)
reason:减少磁头移动次数(物理移动开销较大) ,与(盘·柱·扇)相比
5.classification
(1)根据磁头是否可动
活动头磁盘 or 固定头磁盘
(2)根据磁盘是否可更换
可换盘磁盘 or 固定盘磁盘
十四、disk调度算法 339
1.一次disk读写花费的时间
寻道时间+旋转延迟时间+传输时间
寻道:移动磁头到对应磁道,启动磁头
旋转延迟:找到data开始扇区位置
传输:读写
so能够优化的主要是寻道时间,减少磁头移动的磁道即可减少寻道时间
2.磁盘调度算法
target:优化寻道时间
(1)先来先服务(FCFS)
公平
(2)最短寻道时间优先(SSTF)
贪心算法思想,只顾眼前优,会产生饥饿
ATTN:前一两个移动需要比较,不是一开始确定了方向就一直走
(3)扫描算法(电梯算法)(SCAN)
到磁道头才转向,中途路过请求就进行处理
存在两个问题
ques1:不用到磁道头再掉头
ques2:每个请求处理的频次不同,也就是可能频繁处理一边的请求
(4)循环扫描(C-SCAN)
开始朝向某方向时路过请求时进行处理,掉头回来之后直接到另一头,中间路过的请求不进行处理
eg:18 38 39 55 58 90 150 160 184 200 初始100,往右走
(5)LOOK
SCAN优化,不用到磁道头,读写请求头即可掉头
eg:18 38 39 55 58 90 150 160 184 200 初始100,往右走
(6)C-LOOK
LOOK优化,同C-SCAN处理方式
eg:18 38 39 55 58 90 150 160 184 200 初始100,往右走
十五、减少延迟的方法 342
在一次读写disk之后,磁头都需要准备一段时间
(1)交替编号
if连续读两块连在一起的disk块的话,还没准备好就已经到了下一块的内容了,so将逻辑上相邻的disk块在物理上间隔,就可以避免这个问题
(2)错位编号
同一柱面位置上的编号按道理来说是相同的,但是if读完上一个盘面的扇区上的data后需读下一个盘面上相邻的扇区data,就会错过
so 编号进行错位
(3)disk地址结构的设计
使用(柱面号·盘面号·扇面号)
磁头的移动次数少,与(盘面号·柱面号·扇面号)相比
十六、disk管理 337
1.disk初始化
低级(物理)初始化:分成相同大小块
高级初始化:包括具体data和功能块
2.引导快
3.坏块
十七、固态硬盘SSD 343
1.原理
闪存技术
2.组成
闪存翻译区,存储介质
3.读写性能
以页为单位读写,以块为单位擦除
4. vs 机械硬盘
(1)随机读写速度快,连续读写慢
(2)安静
(3)擦除多了坏了
5.磨损均衡技术
先用年轻的,老的歇着
(1)动态
先使用擦除次数少的
(2)静态
根据文件读写次数,不经常写的放在老的,经常写的放年轻的