Computer Operation System
安徽师范大学——计算机与信息学院———— 作者(授课教师): 周文
如前所述,文件的物理结构直接与外存的组织方式有关。对于不同的外存组织方式,将形成不同的文件物理结构。目前常用的外存组织方式有:
(1) 连续组织方式。
(2) 链接组织方式。
(3) 索引组织方式。
通常,它们都位于一条磁道上,在进行读/写时,不必移动磁头。在采用连续组织方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中,这样所形成的文件结构称为顺序文件结构,此时的物理文件称为顺序文件。
连续组织方式的主要优点有:
(1) 顺序访问容易。
(2) 顺序访问速度快。
连续组织方式的主要缺点如下:
(1) 要求为一个文件分配连续的存储空间。
(2) 必须事先知道文件的长度。
(3) 不能灵活地删除和插入记录。
(4) 不适合那些动态增长的文件。
如果可以将文件装到多个离散的盘块中,就可消除连续组织方式的上述缺点。
链接组织方式的主要优点是:
(1) 消除了磁盘的外部碎片,提高了外存的利用率。
(2) 对插入、删除和修改记录都非常容易。
(3) 能适应文件的动态增长,无需事先知道文件的大小。
隐式链接
在采用隐式链接组织方式时,在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针。
显式链接
这是指把用于链接文件各物理块的指针显式地存放在内存的一张链接表中。该表在整个磁盘中仅设置一张,如图8-3所示。
这张表被称为FAT(File Allocation Table)
FAT12
1) 早期的FAT12文件系统
FAT12是以盘块为基本分配单位的。由于FAT是文件系统中最重要的数据结构,为了安全起见,在每个分区中都配有两张相同的文件分配表FAT1
和FAT2
。
在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中。
2) 以簇为单位的FAT12文件系统
簇(cluster)
的概念。 FAT16
FAT32
由于FAT16表
的长度只有65535
项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内碎片,也就应当增加FAT表的长度,为此需要再增加FAT表的宽度,这样也就由FAT16
演变为FAT32。
NTFS新特征
NTFS
(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP及后续的Windows OS。 磁盘组织
NTFS
是以簇作为磁盘空间分配和回收的基本单位的。一个文件占用若干个簇,一个簇只属于一个文件。 这样,在为文件分配磁盘空间时,就无须知道盘块的大小,只要根据不同的磁盘容量,选择相应大小的簇,NTFS具有了与磁盘物理块大小无关的独立性。文件的组织
某磁盘大小为120MB,每个盘块大小为512B,假设每个FAT表项占用12位,则FAT表占用多大的存储空间?
A. 360KB B. 240KB C.960MB D. 8KB
假定一个文件系统的组织方式与MS-DOS类似,在FAT中可有64K个指针,盘块大小为512B,试问该文件系统是否可以指引一个512MB的磁盘?
单级索引组织方式
链接组织方式虽然解决了连续组织方式所存在的问题(即不便于随机访问),但又出现了另外两个问题,即:
① 不支持高效的直接存取,要对一个较大的文件进行存取,须在FAT中顺序地查找许多盘块号;
② FAT需占用较大的内存空间,由于一个文件所占用盘块的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的所有盘块号。
多级索引组织方式
在为一个大文件分配磁盘空间时,如果所分配出去的盘块的盘块号已经装满一个索引块时,OS须再为该文件分配另一个索引块,用于将以后继续为之分配的盘块号记录于其中。
依此类推,再通过链指针将各索引块按序链接起来。
例题
答案
增量式索引组织方式
1) 增量式索引组织方式的基本思想
1 KB~10 KB
或4 KB~40 KB
)而言,最多只会占用10个盘块2) UNIX System V的组织方式
在UNIX System V的索引结点中设有13个地址项,即,如图8-8所示。
(1) 直接地址。
(2) 一次间接地址。
(3) 多次间接地址。
在 UNIX 中,如果一个盘块的大小为1KB ,每个盘块号占4 个字节,即每块可放256个地址。请转换下列文件的字节偏移量为物理地址。
答案
为了快速访问,又易于更新,当数据为以下形式时,应选用何种文件组织方式。
答案
空闲表法
1) 空闲表
空闲表法属于连续分配方式,它与内存的动态分配方式雷同,它为每个文件分配一块连续的存储空间。即系统也为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项。
其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等信息。再将所有空闲区按其起始盘块号递增的次序排列,形成空闲盘块表,如图8-9所示。
2) 存储空间的分配与回收
空闲链表法
1) 空闲盘块链
2) 空闲盘区链
位示图
位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。
当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。有的系统把“0”作为盘块已分配的标志,把“1”作为空闲标志。(它们在本质上是相同的,都是用一位的两种状态来标志空闲和已分配两种情况)
磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。
盘块的分配
根据位示图进行盘块分配时,可分三步进行:
(1) 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。
(2) 将所找到的一个或一组二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二进制位位于位示图的第i行、第j列,则其相应的盘块号应按下式计算:
(3) 修改位示图,令。
盘块的回收
盘块的回收分两步:
(1) 将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为:
(2) 修改位示图。令。
空闲盘块的组织
(1) 空闲盘块号栈,用来存放当前可用的一组空闲盘块的盘块号(最多含100个号),以及栈中尚有的空闲盘块(号)数N。顺便指出,N还兼作栈顶指针用。
(2) 文件区中的所有空闲盘块被分成若干个组
(3) 将每一组含有的盘块总数N和该组所有的盘块号记入其前一组的第一个盘块的S.free(0)~S.free(99)中。这样,由各组的第一个盘块可链成一条链。
(4) 将第一组的盘块总数和所有的盘块号记入空闲盘块号栈中,作为当前可供分配的空闲盘块号。
(5) 最末一组只有99个盘块,其盘块号分别记入其前一组的S.free(1)~S.free(99)中,而在S.free(0)中则存放“0”,作为空闲盘块链的结束标志。
空闲盘块的分配与回收
(1) 改进文件的目录结构以及检索目录的方法来减少对目录的查找时间;
(2) 选取好的文件存储结构,以提高对文件的访问速度;
(3) 提高磁盘的I/O速度,能将文件中的数据快速地从磁盘传送到内存中,或者相反。
在设计磁盘高速缓存时需要考虑的问题有:
(1) 如何将磁盘高速缓存中的数据传送给请求进程
(2) 采用什么样的置换策略;
(3) 已修改的盘块数据在何时被写回磁盘。
数据交付(Data Delivery)方式
如果I/O请求所需要的数据能从磁盘高速缓存中获取,此时就需要将磁盘高速缓存中的数据传送给请求进程
所谓的数据交付就是指将磁盘高速缓存中的数据传送给请求者进程。系统可以采取两种方式将数据交付给请求进程:
(1) 数据交付
(2) 指针交付
置换算法
(1) 访问频率。
(2) 可预见性。
(3) 数据的一致性。
周期性地写回磁盘
能有效地提高磁盘I/O速度的方法还有许多,如提前读、延迟写等,现介绍如下:
虚拟盘
并行交叉存取
这是把在大、中型机中,用于提高访问内存速度的并行交叉存取技术应用到磁盘存储系统中,以提高对磁盘的I/O速度。
在该系统中,有多台磁盘驱动器,系统将每一盘块中的数据分为若干个子盘块数据,再把每一个子盘块的数据分别存储到各个不同磁盘中的相同位置上。以后当要将一个盘块的数据传送到内存时,采取并行传输方式,将各个盘块中的子盘块数据同时向内存中传输,从而使传输时间大大减少。
RAID的分级
RAID在刚被推出时,是分成6级的,后来又增加了RAID 6级和RAID 7级。
(1) RAID 0级。
(2) RAID 1级。
(3) RAID 3级。
(4) RAID 5级。
(5) RAID 6级和RAID 7级。
RAID的优点
(1) 可靠性高,除了RAID 0级外,其余各级都采用了容错技术。当阵列中某一磁盘损坏时,并不会造成数据的丢失。此时可根据其它未损坏磁盘中的信息来恢复已损坏的盘中的信息。其可靠性比单台磁盘机高出一个数量级。
(2) 磁盘I/O速度高,由于采取了并行交叉存取方式,可使磁盘I/O速度提高N-1倍。
(3) 性能/价格比高,RAID的体积与具有相同容量和速度的大型磁盘系统相比,只是后者的1/3,价格也只是后者的1/3,且可靠性高。换言之,它仅以牺牲1/N的容量为代价,换取了高可靠性。
双份目录和双份文件分配表
热修复重定向和写后读校验
由于磁盘价格昂贵,在磁盘表面有少量缺陷的情况下,则可采取某种补救措施后继续使用。一般主要采取以下两个补救措施:
(1) 热修复重定向。
(2) 写后读校验方式。
磁盘镜像(Disk Mirroring)
为了避免磁盘驱动器发生故障而丢失数据,便增设了磁盘镜像功能。为实现该功能,须在同一磁盘控制器下,再增设一个完全相同的磁盘驱动器,如图8-13所示。
磁盘双工(Disk Duplexing)
如果控制这两台磁盘驱动器的磁盘控制器发生故障,或主机到磁盘控制器之间的通道发生故障,磁盘镜像功能便起不到数据保护的作用。
因此,在第二级容错技术中,又增加了磁盘双工功能,即将两台磁盘驱动器分别接到两个磁盘控制器上,同样使这两台磁盘机镜像成对,如图8-14所示。
双机热备份模式
如图8-15所示,在这种模式的系统中,备有两台服务器,两者的处理能力通常是完全相同的,一台作为主服务器,另一台作为备份服务器。
双机互为备份模式
在双机互为备份模式中,平时,两台服务器均为在线服务器,它们各自完成自己的任务,例如,一台作为数据库服务器,另一台作为电子邮件服务器。
为了实现两者互为备份的功能,在两台服务器之间,应通过某种专线将其连接起来。如果希望两台服务器之间能相距较远,最好利用FDDI单模光纤来连接两台服务器。在此情况下,最好再通过路由器将两台服务器互连起来,作为备份通信线路。图8-16示出了双机互为备份系统的情况。
公用磁盘模式
磁带机
硬盘
(1) 移动磁盘。
(2) 固定硬盘驱动器。
光盘驱动器
光盘驱动器是现在最流行的多媒体设备,可将它们分为如下两类:
(1) 只读光盘驱动器CD-ROM和DVD-ROM。
(2) 可读写光盘驱动器。
事务的定义
事务记录(Transaction Record)
恢复算法
由于一组被事务Ti修改的数据以及它们被修改前和修改后的值都能在事务记录表中找到,因此,利用事务记录表系统能处理任何故障而不致使故障造成非易失性存储器中信息的丢失。恢复算法可利用以下两个过程:
(1) undo〈Ti〉
。该过程把所有被事务Ti修改过的数据恢复为修改前的值。
(2) redo〈Ti〉
。该过程能把所有被事务Ti修改过的数据设置为新值。
检查点(Check Points)的作用
redo〈Ti〉
过程去设置新值,而哪些事务又需要利用undo〈Ti〉
过程去恢复数据的旧值。新的恢复算法
利用互斥锁实现“顺序性”
利用互斥锁和共享锁实现顺序性
重复文件的一致性
我们以UNIX类型的文件系统为例来说明如何保证重复文件的一致性问题。对于通常的UNIX文件目录,其每个目录项中含有一个ASCII码
的文件名和一个索引结点号,后者指向一个索引结点。
当有重复文件时,一个目录项可由一个文件名和若干个索引结点号组成,每个索引结点号都是指向各自的索引结点。图8-18示出了UNIX类型的目录和具有重复文件的目录。
链接数一致性检查
设磁盘盘块的大小为1KB,对于540MB的硬盘,则其文件分配表需要占用多大的存储空间?当磁盘大小为1.2GB时,FAT需要占用多大的空间?
答案
某文件系统采用索引节点存放文件的属性和地址信息,簇大小为4KB,每个文件索引节点占64B,有11个地址项,其中直接地址项8个,一级、二级和三级间接地址项各1个,每个地址项长度4B,请回答下列问题。
答案
簇大小4KB,每个地址项长度为4B,则每个簇可以存放地址项数量为4KB/4B = 1024,则最大磁盘盘块数是。即系统支持最大的文件长度为
系统存放的索引节点数,5KB占用2个簇,512M个簇可以存放文件总个数是512M/2 =256M。但是表示的文件总个数受限于文件索引节点的总个数,故只能存放64M个5600B图像数据。
文件A大小为6KB, 因为,则可通过直接访问方式得到索引节点。而文件B大小为40KB,因为,故获取B的最后一个簇的簇号需要读取一级索引表,所以两者所需时间不相同。
本节结束 2019年10月7日