题33

题目

Q:某文件共有 8 个记录 ,采用隐式链接分配,每个记录及链接指针占一个磁盘块, 主存中的磁盘缓冲区的大小与磁盘块的大小相等。假设文件目录已读入内存。为了在 L5 和 L6 之间插入一个记录 Lx’ (已在内存中), 需要进行的磁盘操作有 ( )。
A. 4 次读盘和 2 次写盘
B. 5 次读盘和 1 次写盘
C. 5 次读盘和 2 次写盘
D. 4 次读盘和 1 次写盘

分析

A:隐式分配,也就是每个块都是链表,题目里,一个记录和一个指针也就占了一个磁盘块
主存也就是内存条的磁盘缓冲区大小和块相同
考的就是链表的插入的时间复杂度,读到L5要读盘五次,然后再写盘,写回一次
我选B
然而答案是选C,因为要拿一个空闲区域出来做中转,还要把空闲区域的读写算上

C
采用隐式链接分配, 首先需要依次读 L1 ~L5 磁盘块, 根据 L5 磁盘块, 获取 L6 磁盘块的地址; 然后将 Lx’的数据写入一个空闲磁盘块, 将该块的链接指针指向 L6 磁盘块; 最后改 L5 磁盘块, 将链接指针指向 的磁盘块的地址并写回磁盘。因此共进行了 5 次读盘和 2 次写盘。