引自免费微信小程序:皆我百晓生
在解决这个问题时,我们首先需要理解文件系统的结构和工作原理,特别是如何在单级目录结构中查找文件。这里的关键在于计算平均磁盘访问次数。
步骤 1: 计算目录占用空间
- 单个FCB(File Control Block)大小:64B
- 目录项总数:3200个
目录总大小 = FCB大小 * 目录项数 = 64B * 3200 = 204800B = 200KB
步骤 2: 计算目录占用盘块数
- 盘块大小:1KB = 1024B
目录占用盘块数 = 目录总大小 / 盘块大小 = 200KB / 1KB = 200
这意味着目录信息将被存储在200个连续或非连续的盘块上。
步骤 3: 计算平均磁盘访问次数
假设目录项均匀分布在这200个盘块中,那么平均每个盘块包含的目录项数量为:
平均目录项/盘块 = 总目录项数 / 盘块数 = 3200 / 200 = 16
这意味着每个盘块平均存储了16个目录项。为了找到一个特定的文件,平均而言,我们需要访问的盘块数为:
平均磁盘访问次数 = 盘块数 / 平均目录项/盘块 = 200 / 16 ≈ 12.5
但是,实际操作中,我们通常向上取整,因为即使盘块中还有未访问的目录项,一旦找到了目标文件,就不会再继续读取该盘块的剩余部分。因此,平均磁盘访问次数大约为13次。
模拟图示
为了帮助理解,下面是一个简单的目录结构图示,展示了目录项如何分布在多个盘块上:
+------------+------------+------------+------------+ ... +------------+
| 盘块1 | 盘块2 | 盘块3 | 盘块4 | ... | 盘块200 |
|------------|------------|------------|------------| |------------|
| FCB1 | FCB17 | FCB33 | FCB49 | | FCB3193 |
| FCB2 | FCB18 | FCB34 | FCB50 | | FCB3194 |
| ... | ... | ... | ... | | ... |
| FCB16 | FCB32 | FCB48 | FCB64 | | FCB3200 |
+------------+------------+------------+------------+ ... +------------+
结论
在单级文件目录结构下,查找一个文件平均需要访问磁盘大约13次。这个数字是基于目录项均匀分布于200个盘块上的假设。如果目录项分布不均,实际的平均磁盘访问次数可能会有所不同。
