操作系统之——磁盘存储器管理

    xiaoxiao2021-12-14  18

    外存的组织方式

    文件的物理结构直接与外存的组织方式有关。对于不同的外存组织方式,将形成不同的文件物理结构。

    (1) 连续组织方式。

    又称连续分配方式,要求为每一个文件分配一组相邻接的盘块。 把逻辑文件中的记录顺序地存储到邻接的各物理盘块中。

    优点:

    (1) 顺序访问容易。 (2) 顺序访问速度快。 

    缺点:

    (1) 要求为一个文件分配连续的存储空间。 (2) 必须事先知道文件的长度。 (3) 不能灵活地删除和插入记录。 (4) 无法实现动态增长文件。

    (2) 链接组织方式。

    可为文件分配多个不连续的盘块,再通过每个盘块上的链接指针,将同属于一个文件的多个离散的盘块链接成一个链表

    隐式链接

    在文件目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块的指针。 

    显式链接

    把用于链接文件各物理块的指针显式地存放在内存的一张链接表中。

    FAT技术

    在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中 每一个磁盘被分成固定大小的簇。簇最少为512个字节,其大小可以成倍增长,最大为32K。 每个簇都是由唯一的索引号——一个16位二进制数来标识。因为16位二进制数最大为65536,所以FAT分区所拥有的簇的数量不可能超过65536个。簇的数量和大小的限制,就是FAT分区为什么不能超过2GB的原因。   

    NTFS的文件组织方式

    NTFS是一个相当高级的文件系统。它的主文件表(MFT)是一个非常完整的数据库,它负责对磁盘上的每个文件进行索引。 从逻辑上讲,卷中的每个文件作为一条记录,在MFT表中占有一行,其中还包括MFT自己的这一行。每行大小固定为1 KB,每行称为该行所对应文件的元数据(metadata),也称为文件控制字。

    NTFS可以在文件的MFT入口中存储非常小的文件的全部内容;对于大一些的文件,这些入口会标识出包含文件数据的簇

    优点:

    (1) 消除了磁盘的外部碎片,提高了外存的利用率。 (2) 对插入、删除和修改记录都非常容易。 (3) 能适应文件的动态增长,无需事先知道文件的大小。

    缺点:

    ① 不能支持高效的直接存取,要对一个较大的文件进行存取,须在FAT中顺序地查找许多盘块号; ② FAT需占用较大的内存空间,由于一个文件所占用盘块的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的所有盘块号。 

    (3) 索引组织方式。 

    增量式索引组织方式

    为了能提高对数量众多的小型作业的访问速度,将它们的每一个盘块地址都直接放入文件控制块FCB(或索引结点)中,这样就可以直接从FCB中获得该文件的盘块地址。 

    UNIX System V的组织方式

    索引结点中设有13个地址项 分为:(1) 直接地址。(2) 一次间接地址。(3) 多次间接地址。 

    文件存储空间的管理

    空闲表法

    属于连续分配方式,空闲盘区的分配与内存的分区(动态)分配类似,同样是采用首次适应算法和最佳适应算法等,它们对存储空间的利用率大体相当,都优于最坏适应算法。

    空闲链表法

    1) 空闲盘块链

    将磁盘上的所有空闲空间以盘块为单位拉成一条链,其中的每一个盘块都有指向后继盘块的指针。

    2) 空闲盘区链

    将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应有能指明本盘区大小(盘块数)的信息。 

    位示图法

    利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。 所有盘块所对应的位构成一个集合,称为位示图。 

    盘块的分配

    (1) 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。 (2) 将所找到的一个或一组二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二进制位位于位示图的第i行、第j列,则其相应的盘块号应按下式计算b = n(i - 1) + j 式中,n代表每行的位数。 (3) 修改位示图,令map[i, j] = 1

    盘块的回收

    (1) 将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为: i = (b - 1)DIV  n + 1 j = (b - 1)MOD  n + 1 (2) 修改位示图。令map[i, j] = 0。

    成组链接法

    分配过程是从前往后分配,先分配第一组,然后分配第二组…… 回收过程是正好相反,从后往前分配,先将释放的空闲块放入第一组,第一组满了,再开辟一组,之前的第一组变为第二组
    转载请注明原文地址: https://ju.6miu.com/read-969733.html

    最新回复(0)