考虑一个文件存放在100个数据块中。文件控制块 索引块或索引信息都驻留内存。那么如果() 不
问题详情
考虑一个文件存放在100个数据块中。文件控制块、索引块或索引信息都驻留内存。那么如果(),不需要做任何磁盘I/O操作。
A.采用contiguous allocation策略,将最后一个数据块搬到文件头部
B.采用single levelindexed anocation策略,将最后一个数据块插入文件头部
C.采用linked anocation策略,将最后一个数据块插入文件头部
D.采用linked allocation策略,将第一个数据块插入文件尾部
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:B
本题考查的是连续分配、链接分配和索引分配分别的特点,考查它们各自插入数据块或移动数据块所需要的操作。对于选项A,采用连续分配策略,连续分配策略下是没有指针的,对每个数据块的访问都可以直接用块号寻址到,不过要把最后一个数据块搬到文件头部,首先要把最后一块读入内存,然后倒数第二块放入到最后一块,倒数第三块放入倒数第二块……第一块放入到原本第二块的位置,最后才能把内存中的原本的最后一块放入到第一块的位置,也就是文件的头部,读取和写入数据块都需要I/O操作,所以需要很多次磁盘I/O操作,具体次数和文件的长度有关。对于C选项,采用链接分配,链接分配的指针都存放在数据块的末尾,也就是外存中,所以先要在内存中读出第一块的地址,然后在最后一块数据块的数据块指针中写入原来的第一块的地址,这儿需要写外存,所以需要一次磁盘I/O操作,最后在内存中改变文件首地址为原本的最后一块的地址,所以一共需要1次磁盘I/O操作(这儿还把新的最后一块的指针置为NULL的操作算进)。对于D选项,要寻址到最后一块就需要很多磁盘I/O操作了,然后还需要修改原本的最后一块的指针指向原本的第一块(1次磁盘I/O),还要改变内存中文件首地址为原本的第二块,最后再把新的最后一块的指针置为NULL(1次磁盘I/O),所以需要多次磁盘I/O操作。对于选项B,由于本题中单级索引的索引块驻留在内存,所以所有数据块的指针都在内存中,只需要在内存中重新排列下这些指针相互间的位置,将最后一块的指针移动到最前面即可,不需要任何磁盘I/O操作,所以答案选B。