在实现文件系统时,为加快文件目录的检索速度,可利用“文件控制块分解法”。假设目录文件存放在磁盘上,每个磁盘块为512B,文件控制块占64B,其中文件名占8B。通常将文件控制块分解成两部分,第一部分占10B(包括文件名和文件内部号),第二部分占56B(包括文件内部号和文件其他描述信息)。
假设某一目录文件共有 254 个文件控制块, 试分别给出采用分解法前和分解法后, 查找该目录文件中的某一文件控制块的平均访问磁盘次数。
由于每个盘块为 512B, 某一目录文件共有 254 个文件控制块, 每个文件控制块占 64B。
采用分解法前: 一个盘块可存放 512/ 64=8 个目录项, 则 254 个文件控制块要占 254/ 8=32 个磁盘块。 平均查找一个目录项需访问磁盘块数为其块数的一半: 32/ 2=16 个。
采用分解法后, 将文件控制块分解成两部分, 第 1 部分占 10B(包括文件名和文件内部号), 第 2 部分占 56B(包括文件内部号和文件其他描述信息)。 一个盘块可存放 512/ 10≈51 个目录项。 这样 254 个目录项要占 254/51≈5 个磁盘块。 平均查找一个目录项需访问磁盘 5/2≈3 次, 由文件内部标识可知文件控制信息所在的磁盘块号,再访问一次磁盘, 得到文件控制信息。 故共需 3+1=4 次访问磁盘。
一般地, 若目录文件分解前占用 n 个盘块, 分解后改用 m 个盘块存放文件名和文件内部号部分, 请给出访问磁盘次数减少的条件。
由分解法计算可知, 若文件控制信息长度 L 占用的字节数大于文件名和文件内部号部分占用的字节数K 两倍以上, 即 L>2K 时, 采用分解法查找该目录文件中的某一文件控制块的平均访问磁盘次数将减少。 这是因为分解后虽然占用两部分空间, 但查找文件控制信息是通过计算得到的。 故条件是 n>2m。