本文主要是介绍计算机操作系统(慕课版)第九章 磁盘存储器管理 学习笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第九章 磁盘存储器管理
9.1 外存组织方式(文件的物理结构)
外存分配方式即如何记录分配到的物理空间。
- 是从系统的角度来看文件,从文件在物理介质上的存放方式来研究文件。
外村存储单位
- 块:又称物理记录,是存储介质上连续信息所组成的一个区域
- 是辅存与主存之间进行信息交换的基本物理单位。在MS DOS 和UNIX系统中,磁盘上块长一般都定为512B。
- 簇:簇(CLUST)的本意就是“一群”、“一组”
- 即一组扇区的意思,因为块的单位太小,因此把它捆在一起,组成一个更大的单位更方便进行灵活管理。
9.1.1 连续组织方式
为每个文件分配一组相邻接(连续)的磁盘块
对应逻辑结构为:顺序文件结构
此时的物理文件是对记录式文件取连续区组织而构成的文件,称为顺序文件。
9.1.2 链接组织方式
为文件分配不连续的盘块,通过链接指针将一个文件的所有盘块链接在一起,所形成的物理文件称为链接文件。
每个文件是磁盘块的链接列表:块可以分散在磁盘各处
按所需分配磁盘块,链接在一起
在每个块中有指向下一个块的指针
只需要起始地址
链接组织方式的主要优点:
- 消除了磁盘的外部碎片,提高了外存的利用率。
- 对插入、删除和修改记录都非常容易。
- 能适应文件的动态增长,无需事先知道文件的大小。
链接方式
- 隐式链接:指针存放在每个盘块中,只适合于顺序访问
- 显式链接:指针显式地存放在内存的文件分配表FAT中
- 隐式链接
- 显式链接
FAT文件系统
FAT文件系统是微软最早在MS-DOS开始使用的文件系统,使用FAT(File Allocation Table)
- 表序号为整个磁盘的物理块号(0—(n-1))
- 表项存入链接指针,即下一个块号。
- 文件的首块号存入相应文件的FCB中。
- 查找在内存的FAT中,提高了检索速度,同时又减少磁盘的访问次数。
FAT12 以盘块为基本分配单位
为了安全起见,在每个分区中都配有两张相同的文件分配表FAT1和FAT2。
在FAT的每个表项中存放下一个盘块号,而将文件的第一个盘块号放在自己的FCB中。
例如:对于1.2M的软盘,每个盘块的大小为512B,
在FAT表中共有2.4K个表项
每个FAT表项占12位
所以FAT表占用3.6KB的存储空间。
若磁盘大小为20GB,盘块大小为4KB,每个FAT表项站32位,则计算FAT表的大小。
(20GB/4KB)*(32/8)=20MB
计算最大磁盘容量
FAT12最大的寻址范围是:
2的12次方=4096个表项
磁盘分区允许的最大容量:
512K×4096=2MB
一个磁盘4个分区,则最大容量:
2×4=8MB
如何增加磁盘最大容量呢?——簇
以簇为单位的FAT文件系统
簇是一组相邻的扇区,在FAT中被视作一个虚拟扇区
簇的大小一般是2n个盘块(n=1,2,4,8,…)
一个簇应包含扇区的数量与磁盘容量大小直接相关
FAT12中若每个簇有8个扇区,则一簇大小为4K(5128),则磁盘最大容量就提升为64MB(51282的12次方4)
FAT16支持一个簇有64个盘块,其FAT表的表项数最大为216,则最大可以管理的分区空间为2048MB(512642的16次方)
FAT32
每个簇在FAT中的表项占4B;
每个簇(物理块)固定为4KB~32KB;
FAT32最大的寻址范围是:232=4G个表项
FAT32管理的单个最大磁盘空间:512B*232=2TB。
FAT32的缺点:
无法支持大文件,最大4GB
不支持小分区,最小512MB
表项多,FAT表检索速度慢。
9.1.3 索引组织方式
链接组织方式虽然解决了连续分配方式所存在的问题, 但又出现了另外两个问题, 即:
不支持高效的直接存取。要对一个较大的文件进行直接存取,必须首先在FAT中顺序地查找许多盘块号。
FAT需占用较大的内存空间。
索引方式的引入
- 为每一个文件分配一个索引块(表),再把分配给该文件的所有块号,都记录在该索引块中。
- 故索引块就是一个含有许多块号地址的数组。
优点:
支持随机/直接存取。
动态存取没有外碎片
缺点:
需要索引表
对小文件,其索引块的利用率低
假设每个盘块大小为1KB,每个盘块号占4个字节
则在一个索引块中可放256个文件物理块的盘块号。
在两级索引时,最多可包含的存放文件的盘块的盘块号总数为256*256=64K个盘块号。
可以得出:采用两级索引时,所允许的文件最大长度为64MB。
(1) 直接地址
为了提高对文件的检索速度, 在索引结点中可设置10个直接地址项, 即用iaddr(0)~iaddr(9)来存放直接地址。 即每项中所存放的是该文件数据所在盘块的盘块号。假如每个盘块的大小为 4 KB,当文件不大于40 KB时,就可以直接从索引结点中读出该文件的全部盘块号。
(2) 一次间接地址
对于大、中型文件,只采用直接地址是不现实的。可再利用索引结点中的地址项iaddr(10)来提供一次间接地址。这种方式的实质就是一级索引分配方式。图中的一次间址块也就是索引块,系统将分配给文件的多个盘块号记入其中。在一次间址块中可存放1K个盘块号(4KB/4B), 因而允许文件长达4 MB。
(3) 多次间接地址
当文件长度大于4MB+40KB时(一次间址与10个直接地址项), 系统还须采用二次间址分配方式。这时,用地址项iaddr(11)提供二次间接地址。该方式的实质是两级索引分配方式。系统此时是在二次间址块中记入所有一次间址块的盘号。在采用二次间址方式时,文件最大长度可达4GB(4KB1K1K)。 同理,地址项iaddr(12)作为三次间接地址, 其所允许的文件最大长度可达4TB(4KB1K1K*1K)。
优点:
即能顺序存取,又能随机存取,
满足了文件动态增长、插入删除的要求,
充分利用外存空间
缺点:
较多的寻道次数和寻道时间,
索引表本身带来了系统开销,如:内外存空间,存取时间
9.2 文件存储空间的管理
1 空闲表法
系统为外存上所有空闲区建立一张空闲表,属于连续分配方式
> 仅当有少量的空白区时才有较好的效果
如果存取空间中有着大量的小的空白区,则其目录变得很大,因而效率大为降低。
分配类似于内存的分区动态分配,如首次适应算法和最佳适应算法等
回收时,也类似于内存回收方法
空闲链表法
空闲盘块链 :把所有的“空白块” 链在一起。
以盘块为单位链接起来
优点:分配和回收简单
缺点:效率较低
空闲盘区链
将所有空闲盘区(每个盘区可包含若干个盘块)链接起来
分配盘区的方法与内存分区的动态分配方法类似
优点:效率较高
缺点:分配和回收比较复杂
9.2.2 位示图法
利用二进制的一位来表示磁盘中一个盘块的使用情况。
0表示盘块空闲,1表示已分配。
磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图
通常可用mn个位数来构成位示图,并使mn等于磁盘的总块数。
盘块的分配
- 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲)。
- 将所找到的一个或一组二进制位,转换成与之相对应的盘块号。假定找到的值为“0”的二进制位,位于位示图的第i行、第j列,则其相应的盘块号(假设块号从1开始)应按下式计算:
b=n(i-1)+j(n代表每行的位数) - 修改位示图,令map[i,j]=1。
设某系统磁盘共有1600块,块号从0-1599,若用位示图管理这1600块磁盘空间,问位示图需要多少个字节?
1600/8=200B
例》:位示图有20行、32列(设行号、列号、盘块号均从0开始编号),问
在进行盘块分配时,若找到空闲块在位示图上的行号、列号均为3,则相应地盘块号为多少?
在回收盘块时,若盘块号为200,则应该对第几行、第几列的位示图进行修改。
(1)n * i + j = 32 * 3 + 3 = 99
(2)b DIV n=200 DIV 32=6
b MOD n=200 MOD 32=8
4.成组链接法
空闲块表法和空闲链法都适用小型文件系统,否则会使空闲块表和空闲块链太长。成组链接法既克服二者的不足,又可集两种方法的优点于一身,是大型文件系统经常采用的方法。
1>空闲块组链
2>存储空间的分配过程
3>存储空间的回收过程
9.3 提高磁盘I/O速度的途径
- 提高文件的访问速度
- 改进文件的目录结构以及检索目录的方法
- 选取好的文件存储结构
- 提高磁盘I/O速度
- 磁盘I/O速度远低于内存的访问速度,已成为瓶颈
- 磁盘高速缓存
- 其他方法:提前读、延迟写、优化物理块的分布、虚拟盘等
9.3.1 磁盘高速缓存(Disk Cache)
- 磁盘高速缓存:在内存中为磁盘盘块设置一个缓冲区,在该- 缓冲区中保存了某些盘块的副本。
- 它是一组在逻辑上属于磁盘,而物理上是驻留在内存中的盘块。
- 访问磁盘时,先查看内容是否已在磁盘高速缓存中,如果在,直接从缓存中获取;如果不在,需启动磁盘将需要的盘块读入内存,并送到缓存中
- 磁盘高速缓存的形式
- 内存中单独的存储空间(大小固定)
- 未利用的存储空间__缓冲池(大小不固定)
9.3.2 提高磁盘I/O速度的其它方法
1.提前读(Read_Ahead)
由于用户对文件的访问常用顺序方式,在读当前块时,可预知下一次要读的盘块,所以,可采用预先读方式,即在读当前块的同时,连同将下一块提前读入缓冲。当访问下一块数据时,其已在缓冲中,而不需去启动磁盘I/O。
2.延迟写
在缓存中的数据,本应立即写回磁盘,考虑不久之后可能会再用,故不立即写回磁盘,已被广泛采用。
3.优化物理块的分布:为文件分配盘块时,优化盘块的分布。
如将同属于一个文件的盘块安排在同一条磁道上或相邻的磁道上,减少磁头的移动距离
4.虚拟盘 :利用内存去访真磁盘,又称为RAM盘。
与磁盘高速缓存的区别:RAM盘中的内容由用户控制,而缓存中的内容则由OS控制
9.3.3 廉价磁盘冗余阵列(RAID)
- 由多个小磁盘所组成的一个容量很大的廉价磁盘冗余阵列RAID
- RAID利用一台磁盘阵列控制器来统一管理和控制一组(几台到几十台)磁盘驱动器,进而组成一个大型磁盘系统
- 大幅度增加了磁盘的容量
- 提高了磁盘的I/O速度
- 提高了磁盘系统的可靠性
并行交叉存取
系统将每一盘块的数据分成若干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上
当要将一个盘块的数据传送到内存时,采取并行传输方式,将该盘块中的各个子盘块数据同时向内存传输
传输时间大大减少
RAID的分级
RAID被分成了多个不同级别:RAID0~RAID7
- RAID 0级
- 数据分散在多个磁盘上;
- 提高读写性能
- 条状分散技术;
- RAID 1级
- 磁盘镜像;提高可靠性。
- RAID 5级
- 分散+校验;
- 校验信息分散在各个磁盘。
RAID的优点
可靠性高
是RAID 的最大优点(除RAID 0 级外)
磁盘I/O速度高
由于RAID 可采用并行交叉存取方式,故提高了磁盘I/O速度。
性能/价格比高
用RAID技术实现大容量存储器时,与大型磁盘系统相比,其体积和价格只是它的1/3,且可靠性高。
9.4 提高磁盘可靠性的技术
- 容错技术是通过在系统中设置冗余部件的办法,来提高系统可靠性的一种技术。
- 磁盘容错技术:是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。磁盘容错技术又称为系统容错技术SFT(System Fault Tolerance ),可分为三级:
- 低级磁盘容错技术
- 中级磁盘容错技术
- 基于集群系统的容错技术(系统容错技术SFT)
9.4.1 一级磁盘容错技术SFT-I
防止因磁盘表面发生缺陷所引起的数据丢失。采用措施:
双份目录和双份文件分配表
- 一份为主文件目录及主FAT
- 另一份为备份文件目录及备份FAT
热修复重定向
系统将一定的磁盘容量(如2%-3%)作为热修复重定向区。 - 例如:系统要向第3柱2头1扇区写数据,但发现该扇区是坏的时,便将数据写到热修复区(如200柱16头1扇区)。以后要读3柱2头1扇区的数据时,便从200柱16头1扇区中读。
写后读校验
- 在每次向磁盘中写入一个数据块后立即将它读出来,并送至另一缓冲区中
- 将该缓冲区的内容与内存缓冲区中写后仍保留的数据进行比较,若两者一致,则认为此次写入成功;否则重写
9.4.2 二级磁盘容错技术SFT-II
主要用于防止系统因磁盘驱动器和磁盘控制器故障而无法正常工作。
磁盘镜像
- 在同一磁盘控制器控制下,增设一个完全相同的磁盘驱动器。
- 在每次向主磁盘写入数据后,都需要将数据再写到备份磁盘上,以使两个磁盘上具有完全相同的位像图
- 磁盘利用率为50%
9.4.3 基于集群技术的容错功能
所谓集群,是指由一组互连的自主计算机组成统一的计算机系统。
是使用最广泛的具有容错功能的集群系统,主要工作模式:
- 双机热备份模式
- 双机互为备份模式
- 公用磁盘模式
9.5.1 传统存储系统
- 直连式存储DAS
通过总线适配器直接将硬盘等存储介质连接到主机上的存储方式,也称为主机连接存储
在存储设备和主机之间通常没有任何网络设备的参与 - 网络附加存储NAS
一种提供文件级别访问接口的网络存储系统架构,通常采用NFS、SMB/CIFS等网络文件共享协议进行文件存取 - 存储区域网络SAN
一种通过光纤交换机等高速网络设备在服务器和磁盘阵列等存储设备间搭设专门的存储网络
这篇关于计算机操作系统(慕课版)第九章 磁盘存储器管理 学习笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!