第八章 磁盘存储器管理
主要任务:
有效利用存储空间,提高磁盘的I/O速度,提高磁盘系统的可靠性
8.1 外存的组织方式
如何为一个文件分配磁盘空间,磁盘最小空间是盘块(扇区),即文件的盘块是如何组织的
- 连续组织方式
- 链接组织方式
- 索引组织方式
8.1.1 连续组织方式
为每个文件分配一组相邻的连续盘块
目录上:存放每个文件名,开始盘块号,长度
优点:顺序访问容易,访问速度快;
缺点:
- 要求连续的分配空间
- 事先必须知道文件长度
- 不适合动态增长
- 不能灵活增加和删除
8.1.2 链接组织方式
每个文件分配的盘块是可以离散的
-
链接方式
扫描二维码关注公众号,回复: 15131206 查看本文章①隐式链接
目录上:存放每个文件名,开始盘块号,截至盘块号
隐式:盘块上有指向下一盘块的指针
②显式链接
目录上:存放每个文件名,开始盘块号
显式:用一个FAT文件分配表记录记录所有的物理块号,以及每一个物理盘块链接的下一个盘块
8.1.3 FAT技术
利用显式链接的组织方式组织文件系统
-
FAT代数
以簇为单位分配和回收的基本单位,一簇是一组邻接的盘块
所支持的文件系统容量大小=一簇的大小 * 2的FAT位数的次方 * 分区数
以簇为单位的好处
能适应磁盘容量不断增大的情况,还可以减少FAT表中的项数,使FAT表占用更少的存储空间,并减少访问FAT表的存取开销
从FAT12->FAT16->FAT32
FAT表项有限制,最多允许4096个,随着磁盘容量的增加,必然会引起簇内碎片和簇的大小增加
FAT16表的长度只有65356项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内碎片,也就应当增加FAT表的长度,为此需要再增加FAT表的宽度,这样也就由FAT16演变为FAT32。
FAT32 是FAT系列文件系统最后产物,FAT32每个簇固定4KB,每簇8个盘块,FAT32可以管理最大磁盘空间大到2TB。
FAT32不向下兼容,运行速度比FAT16慢,有最小管理空间限制,FAT32卷至少有65537个簇
8.1.4 NTFS的文件组织方式
NTFS(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP及后续的Windows OS。
-
磁盘组织
NTFS是以簇作为磁盘空间分配和回收的基本单位的。
一个文件占用若干个簇,一个簇只属于一个文件
这样,在为文件分配磁盘空间时,就无须知道盘块的大小,只要根据不同的磁盘容量,选择相应大小的簇,即使NTFS具有了与磁盘物理块大小无关的独立性。
-
文件组织
在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中。
该表是NTFS卷结构的中心,从逻辑上讲,卷中的每个文件作为一条记录,在MFT表中占有一行,其中还包括MFT自己的这一行。每行大小固定为1 B,每行称为该行所对应文件的元数据(metadata),也称为文件控制字。
特征:64位磁盘地址,具有数据一致性检查等功能
8.1.5 索引组织方式
链接组织方式解决了连续组织的问题(不便于随机访问),出现新问题:
- 不支持高效直接存取
- FAT需占用较大的内存空间,盘块号随机分布在FAT中,查找一个文件所有盘块号,需将整个FAT放入内存空间
-
所以我们只需将打开文件的盘块号调入内存,没必要将整个FAT调入内存
为每个文件分配一个索引表
索引表都分配在一个盘块中,称为索引盘块
目录上:保存每个文件的文件名和索引盘块号
优点:大大加快了大型文件的查找速度
缺点:小型文件多,那个索引盘块就多,且索引盘块利用率不高
单级索引组织方式
多级索引组织方式
在为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS须再为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。依此类推,再通过链指针将各索引块按序链接起来。
增量式索引方式
混合式的,大,中,小文件都能照顾到
8.2 文件存储空间的管理
对文件存储空间的管理:主要是哪些盘块已被使用,哪些未被使用,其次还要提供分配和回收操作
8.2.1 空闲表法和空闲链表法
空闲表法(连续)
记录连续的空闲盘块的第一盘块号与空闲盘块数
- 分配与回收:每次分配都可以采用FCFS等分配一个连续的空闲盘块
优点:较高分配速度,减少磁盘I/O频率
缺点:分配空间必须是连续的
空闲链表法(离散)
空闲盘块拉成一个空闲盘块链
- 分配与回收:离散分配盘块
优点:分配和回收过程非常简单
缺点:分配盘块,可能要重复操作多次,分配和回收效率低
8.2.2 位示图法
利用二进制1或0表示是否使用,所有盘块对应的位构成一个集合
- 分配与回收:查找状态位空闲的未分配盘块,转换出对应盘块的物理地址,修改位示图
8.2.3 成组链接法
UNIX采用将空闲表和空闲链表法结合起来的方式
8.3 提高I/O速度的途径
高速缓存,提前读,延迟写,优化物理块分布,虚拟盘,廉价磁盘冗余阵列
8.3.1 磁盘高速缓存
在内存中为磁盘盘块,指定一个缓冲区,缓冲区里保存的是某些盘块副本
-
如何将磁盘高速缓存的数据传输给请求进程?
① 数据交付:把数据交付给该请求进程的内存工作区中
②指针交付:将指向该缓冲数据的指针交付给请求进程
-
采取什么置换策略?
使用置换算法考虑因素:访问频率,可预见性,数据的一致性
-
已修改的数据如何从缓冲重新写入磁盘?
周期性写回磁盘
8.3.2 提高磁盘I/O速度的其他方法
- 提前读 适合顺序文件,提前将下一个盘块的数据存到内存中
- 延迟写 数据并不立即写入磁盘,而是挂在缓冲区,减少磁头的移动
- 优化物理块的分布 盘块分配尽量在一起,减少磁头移动
- 虚拟盘 利用内存区仿真磁盘
8.3.3 廉价磁盘冗余阵列(RAID)
-
RAID0 (并行交叉存取)
每个盘块数据分为若干子盘块,把每个子盘块数据存储到不同磁盘的相同位置,将整个盘块数据传送到内存时,采用并行传输方式,将各个子盘块数据同时向内存传输
RAID1(磁盘镜像功能)
RAID2(并行传输功能)
RAID5(具有独立传送功能)
-
优点: 并行传输提高I/O速度,(除RAID0)有备份可靠性高,利用小磁盘组成价格优惠
8.4 提高磁盘速度的可靠性技术
8.4.1 第一级容错技术 STF-I
低级磁盘
作用:
防止磁盘因表面缺陷而造成数据丢失
措施:
双份目录和双份文件分配表(备份)
热修复重定向和写后读校验
8.4.2 第二级容错技术 STF-II
中级磁盘
作用
防止磁盘驱动器和磁盘控制器故障所导致系统不能正常工作
措施:
磁盘镜像:在同一个磁盘控制器下再建立一个完全相同的磁盘驱动器(备份)
磁盘双工:在主机下再增设一个相同磁盘控制器(备份)
8.4.3 基于集群技术的容错功能
集群:多主机组成的一个统一的计算机系统
措施
双机热设备模式:一台主机工作,一台主机备份
双机互为备份模式:双机同时工作,各自工作各自任务,每个服务器都配有两个磁盘,一个用于使用,一个用于接受对方备份数据
公用磁盘:双机模式共有一个磁盘,一个磁盘分为两个卷来使用
8.4.4 后备系统
防止自然因素破坏
- 磁盘带
- 硬盘
- 光盘驱动器
- 只读光盘驱动器:CD-ROM和DVD-ROM
- 可读可写光盘驱动器(刻录机):CD-RW,COMBO刻录机,DVD刻录机
8.5 数据一致性控制
数据一致性:数据在不同文件下,在任何时候都是相同的
8.5.1 事务
事务是用于访问和修改各种数据项的一个程序单位。 可被看作一系列读和写的操作
- 操作
托付操作:指事务对所有文件的读,写操作全部完成
关系操作:指事务对多个文件的任何一个操作失败都会导致夭折
- 属性
对一批数据进行修改,要么全部完成,要么一个也不修改
- 借助:事务记录
事务记录是一种数据结构,能够记录事务运行时的数据项修改的全部信息
- 事务的恢复算法
①undo:事务记录只有开始操作,没有托付操作,就将所有数据还原
②redo:事务有开始和托付操作:就将所有数据更新
8.5.2 检查点
记录事务随着时间的增加,记录的数据会越来越多
完成事务表的清理工作
- 在发生故障后,并不需要对所有事务表中的索引记录事务进行处理,只需要对最后一个检查点之后的记录事务进行处理
8.5.3 并发控制
各个事务执行是顺序的,只有一个事务执行后,才允许另外一个事务开始执行,如何保证顺序性
并发控制:
- 利用互斥锁:只有获得对象的互斥锁才能对对象进行操作(效率不高)
- 共享文件只允许一个事务去写,却允许多个文件去读;引入共享锁
- 区别:互斥锁一个只允许一个事务读写,共享锁允许多个事务读,但不可写
信号量机制
8.5.4 重复数据的数据一致性问题
-
重复文件一致性
对于UNIX文件目录,其每个目录项中含有一个ASCII码的文件名和一个索引结点号,后者指向一个索引结点。
当有重复文件,一个目录项由一个文件名和若干索引结点号组成,索引结点号对应各自索引结点 -
链接数一致性
在UNIX的文件目录中,其每个目录项内都含有一个索引结点号,用于指向该文件的索引结点。
- 参考:计算机操作系统(第四版)(汤小丹)