160.磁盘存储器的管理

 磁盘存储器的管理

 

8.1  外存的组织方式

  如前所述,文件的物理结构直接与外存的组织方式有关。对于不同的外存组织方式,将形成不同的文件物理结构。目前常用的外存组织方式有:

  (1) 连续组织方式。

  (2) 链接组织方式。

  (3) 索引组织方式。

8.1.1  连续组织方式

  连续组织方式又称连续分配方式,要求为每一个文件分配一组相邻接的盘块。例如,第一个盘块的地址为b,则第二个盘块的地址为b+1,第三个盘块的地址为b+2,…。通常,它们都位于一条磁道上,在进行读/写时,不必移动磁头。在采用连续组织方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中,这样所形成的文件结构称为顺序文件结构,此时的物理文件称为顺序文件。

图8-1  磁盘空间的连续组织方式

  连续组织方式的主要优点有:

  (1) 顺序访问容易。

  (2) 顺序访问速度快。

  连续组织方式的主要缺点如下:

  (1) 要求为一个文件分配连续的存储空间。

  (2) 必须事先知道文件的长度。

  (3) 不能灵活地删除和插入记录。

  (4) 对于那些动态增长的文件。

8.1.2  链接组织方式

  如果可以将文件装到多个离散的盘块中,就可消除连续组织方式的上述缺点。在采用链接组织方式时,可为文件分配多个不连续的盘块,再通过每个盘块上的链接指针,将同属于一个文件的多个离散的盘块链接成一个链表,由此所形成的物理文件称为链接文件。链接组织方式的主要优点是:

  (1) 消除了磁盘的外部碎片,提高了外存的利用率。

  (2) 对插入、删除和修改记录都非常容易。

  (3) 能适应文件的动态增长,无需事先知道文件的大小。

 

  1. 隐式链接

  在采用隐式链接组织方式时,在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针。

 

图8-2  磁盘空间的链接式分配

 

  2. 显式链接

  这是指把用于链接文件各物理块的指针显式地存放在内存的一张链接表中。该表在整个磁盘中仅设置一张,如图8-3所示。

 

图8-3  显式链接结构

 

8.1.3  FAT技术

  1.  FAT12

  1) 早期的FAT12文件系统

  FAT12是以盘块为基本分配单位的。由于FAT是文件系统中最重要的数据结构,为了安全起见,在每个分区中都配有两张相同的文件分配表FAT1和FAT2。在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中。

 

图8-4  MS-DOS的文件物理结构

 

  2) 以簇为单位的FAT12文件系统

  稍加分析便可看出,如果把每个盘块(扇区)的容量增大n倍,则磁盘的最大容量便可增加n倍。但要增加盘块的容量是不方便和不灵活的。为此,引入了簇(cluster)的概念。

 

  2.  FAT16  

  FAT12对磁盘容量限制的原因在于, FAT12表中的表项有限制,亦即最多只允许4096个。这样,随着磁盘容量的增加,必定会引起簇的大小和簇内碎片也随之增加。

 

  3.  FAT32

  由于FAT16表的长度只有65 35项,随着磁盘容量的增加,簇的大小也必然会随之增加,为了减少簇内零,也就应当增加FAT表的长度,为此需要再增加FAT表的宽度,这样也就由FAT16演变为FAT32。

 

图8-5  FAT中簇的大小与最大分区的对应关系

 

8.1.4  NTFS的文件组织方式

  1. NTFS新特征

  NTFS(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP及后续的Windows OS。

  2. 磁盘组织

  NTFS是以簇作为磁盘空间分配和回收的基本单位的。一个文件占用若干个簇,一个簇只属于一个文件。这样,在为文件分配磁盘空间时,就无须知道盘块的大小,只要根据不同的磁盘容量,选择相应大小的簇,即使NTFS具有了与磁盘物理块大小无关的独立性。

  3. 文件的组织

  在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中,该表是NTFS卷结构的中心,从逻辑上讲,卷中的每个文件作为一条记录,在MFT表中占有一行,其中还包括MFT自己的这一行。每行大小固定为1 B,每行称为该行所对应文件的元数据(metadata),也称为文件控制字。

 

8.1.5  索引组织方式

  1. 单级索引组织方式

  链接组织方式虽然解决了连续组织方式所存在的问题(即不便于随机访问),但又出现了另外两个问题,即:① 不能支持高效的直接存取,要对一个较大的文件进行存取,须在FAT中顺序地查找许多盘块号;② FAT需占用较大的内存空间,由于一个文件所占用盘块的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的所有盘块号。

 

图8-6  索引分配方式

 

  2. 多级索引组织方式

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

 

图8-7  两级索引分配

 

  3. 增量式索引组织方式

  1) 增量式索引组织方式的基本思想

  为了能较全面地照顾到小、中、大及特大型作业,可以采取多种组织方式来构成文件的物理结构。如果盘块的大小为1 B或4 B,对于小文件(如1 B~10 B或4 B~40 B)而言,最多只会占用10个盘块,为了能提高对数量众多的小型作业的访问速度,最好能将它们的每一个盘块地址都直接放入文件控制块FCB(或索引结点)中,这样就可以直接从FCB中获得该文件的盘块地址。

  2)  NIX System V的组织方式

  在UNIX System V的索引结点中设有13个地址项,即i.addr(0)~i.addr(12),如图8-8所示。

  (1) 直接地址。

  (2) 一次间接地址。

  (3) 多次间接地址。

 

图8-8  混合索引方式

      

8.2  文件存储空间的管理

 

8.2.1  空闲表法和空闲链表法

  1. 空闲表法

  1) 空闲表

  空闲表法属于连续分配方式,它与内存的动态分配方式雷同,它为每个文件分配一块连续的存储空间。即系统也为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等信息。再将所有空闲区按其起始盘块号递增的次序排列,形成空闲盘块表,如图8-9所示。

 

图8-9  空闲盘块表

 

  2) 存储空间的