版权归原作者所有,如有侵权,请联系我们

[科普中国]-文件控制块位分配

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏
文件控制块

为了能对一个文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称之为“文件控制块(FCB)” 。文件管理程序可借助于文件控制块中的信息,对文件施以各种操作。文件与文件控制块一一对应,而人们把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个文件目录项。

为了能对系统中的大量文件施以有效的管理,在文件控制块中,通常应含有三类信息,即基本信息、存取控制信息及使用信息。

基本信息类

基本信息类包括: ① 文件名,指用于标识一个文件的符号名。在每个系统中,每一个文件都必须有惟一的名字,用户利用该名字进行存取。② 文件物理位置,指文件在外存上的存储位置,它包括存放文件的设备名、文件在外存上的起始盘块号、指示文件所占用的盘块数或字节数的文件长度。③ 文件逻辑结构,指示文件是流式文件还是记录式文件、记录数;文件是定长记录还是变长记录等。④ 文件的物理结构,指示文件是顺序文件,还是链接式文件或索引文件。

存取控制信息类

存取控制信息类包括:文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。

使用信息类

使用信息类包括: 文件的建立日期和时间、 文件上一次修改的日期和时间及当前使用信息(这项信息包括当前已打开该文件的进程数、是否被其它进程锁住、文件在内存中是否已被修改但尚未拷贝到盘上)。应该说明,对于不同 OS 的文件系统,由于功能不同,可能只含有上述信息中的某些部分。1

位示图法

位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。有的系统把“0”作为盘块已分配的标志,把“1”作为空闲标志。(它们在本质上是相同的,都是用一位的两种状态来标志空闲和已分配两种情况。)磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。通常可用 m × n 个位数来构成位示图,并使 m × n 等于磁盘的总块数,如图 所示。

位示图也可描述为一个二维数组 map:

Var map: array of bit;

盘块的分配

根据位示图进行盘块分配时,可分三步进行:

(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。

这种方法的主要优点是,从位示图中很容易找到一个或一组相邻接的空闲盘块。例如,我们需要找到 6 个相邻接的空闲盘块,这只需在位示图中找出 6 个其值连续为“0”的位即可。此外,由于位示图很小,占用空间少,因而可将它保存在内存中,进而使在每次进行盘区分配时,无需首先把盘区分配表读入内存,从而节省了许多磁盘的启动操作。因此,位示图常用于微型机和小型机中,如 CP/M、Apple-DOS 等 OS 中。