第八章 磁盘存储器管理(汤小丹版操作系统笔记) 超全超详细!!!

第八章 磁盘存储器管理

主要任务:

有效利用存储空间,提高磁盘的I/O速度,提高磁盘系统的可靠性

8.1 外存的组织方式

如何为一个文件分配磁盘空间,磁盘最小空间是盘块(扇区),即文件的盘块是如何组织的

  • 连续组织方式
  • 链接组织方式
  • 索引组织方式

8.1.1 连续组织方式

为每个文件分配一组相邻的连续盘块

目录上:存放每个文件名,开始盘块号,长度

优点:顺序访问容易,访问速度快;

缺点:

  • 要求连续的分配空间
  • 事先必须知道文件长度
  • 不适合动态增长
  • 不能灵活增加和删除

8.1.2 链接组织方式

每个文件分配的盘块是可以离散的

  • 链接方式

    ①隐式链接

    目录上:存放每个文件名,开始盘块号,截至盘块号

    隐式:盘块上有指向下一盘块的指针

    ②显式链接

    目录上:存放每个文件名,开始盘块号

    显式:用一个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调入内存

    为每个文件分配一个索引表

    索引表都分配在一个盘块中,称为索引盘块

    目录上:保存每个文件的文件名和索引盘块号

优点:大大加快了大型文件的查找速度

缺点:小型文件多,那个索引盘块就多,且索引盘块利用率不高

单级索引组织方式

在这里插入图片描述

图1 单级索引组织方式

多级索引组织方式

在为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS须再为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。依此类推,再通过链指针将各索引块按序链接起来。

在这里插入图片描述

图2 二级索引分配

增量式索引方式

混合式的,大,中,小文件都能照顾到

8.2 文件存储空间的管理

对文件存储空间的管理:主要是哪些盘块已被使用,哪些未被使用,其次还要提供分配和回收操作

8.2.1 空闲表法和空闲链表法

空闲表法(连续)

记录连续的空闲盘块的第一盘块号与空闲盘块数

  • 分配与回收:每次分配都可以采用FCFS等分配一个连续的空闲盘块

优点:较高分配速度,减少磁盘I/O频率

缺点:分配空间必须是连续的

空闲链表法(离散)

空闲盘块拉成一个空闲盘块链

  • 分配与回收:离散分配盘块

优点:分配和回收过程非常简单

缺点:分配盘块,可能要重复操作多次,分配和回收效率低

8.2.2 位示图法

利用二进制1或0表示是否使用,所有盘块对应的位构成一个集合

  • 分配与回收:查找状态位空闲的未分配盘块,转换出对应盘块的物理地址,修改位示图

8.2.3 成组链接法

UNIX采用将空闲表和空闲链表法结合起来的方式

8.3 提高I/O速度的途径

高速缓存,提前读,延迟写,优化物理块分布,虚拟盘,廉价磁盘冗余阵列

8.3.1 磁盘高速缓存

在内存中为磁盘盘块,指定一个缓冲区,缓冲区里保存的是某些盘块副本

  1. 如何将磁盘高速缓存的数据传输给请求进程?

    ① 数据交付:把数据交付给该请求进程的内存工作区中

    ②指针交付:将指向该缓冲数据的指针交付给请求进程

  2. 采取什么置换策略?

    使用置换算法考虑因素:访问频率,可预见性,数据的一致性

  3. 已修改的数据如何从缓冲重新写入磁盘?

    周期性写回磁盘

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 重复数据的数据一致性问题

  1. 重复文件一致性

    对于UNIX文件目录,其每个目录项中含有一个ASCII码的文件名和一个索引结点号,后者指向一个索引结点。
    当有重复文件,一个目录项由一个文件名和若干索引结点号组成,索引结点号对应各自索引结点

  2. 链接数一致性

    在UNIX的文件目录中,其每个目录项内都含有一个索引结点号,用于指向该文件的索引结点。


  • 参考:计算机操作系统(第四版)(汤小丹)

猜你喜欢

转载自blog.csdn.net/woschengxuyuan/article/details/128133558