在一个操作系统中, inode结点中分别含有10个直接地址的索引和一、二、三级间接索引。若设每个盘块有512B大小,每个盘块中可存放128个盘块地址,则一个1MB的文件占用多少间接盘块?一个25MB的文件占用多少间接盘块?
时间: 2024-04-01 15:37:55 浏览: 32
一个1MB的文件共需占用的盘块数为:
1MB = 1024KB = 1024 * 1024B = 1024 * 1024 / 512个盘块 = 2048个盘块
其中,前10个直接地址索引可以直接映射到2048个盘块中的10个,剩下的需要通过一级间接索引来映射。由于一个盘块中可存放128个盘块地址,因此一级间接索引可以映射128个盘块,所以还需要:
(2048 - 10) / 128 = 15.625个盘块
即需要16个盘块来存放一级间接索引,这样就可以映射剩余的2048 - 10 - 128 * 15 = 6个盘块了。由于二级间接索引可以映射128个一级间接索引,因此还需要:
6 / 128 = 0.046875个盘块
即需要1个盘块来存放二级间接索引,这样就可以映射剩余的6个盘块了。最后,三级间接索引可以映射128个二级间接索引,因此还需要:
6 / 128 / 128 = 0.0004577637个盘块
即需要1个盘块来存放三级间接索引,这样就可以映射剩余的6个盘块了。因此,一个1MB的文件占用的间接盘块数为10 + 16 + 1 + 1 = 28个盘块。
一个25MB的文件共需占用的盘块数为:
25MB = 25600KB = 25600 * 1024B = 25600 * 1024 / 512个盘块 = 51200个盘块
其中,前10个直接地址索引可以直接映射到10个盘块中,剩下的需要通过一级间接索引来映射。需要的一级间接索引数为:
(51200 - 10) / 128 = 399.21875个盘块
即需要400个盘块来存放一级间接索引,这样就可以映射剩余的51200 - 10 - 128 * 400 = 2560个盘块了。由于二级间接索引可以映射128个一级间接索引,因此还需要:
2560 / 128 = 20个盘块
即需要20个盘块来存放二级间接索引,这样就可以映射剩余的2560个盘块了。最后,三级间接索引可以映射128个二级间接索引,因此还需要:
2560 / 128 / 128 = 0.01953125个盘块
即需要1个盘块来存放三级间接索引,这样就可以映射剩余的2560个盘块了。因此,一个25MB的文件占用的间接盘块数为10 + 400 + 20 + 1 = 431个盘块。