主观题:h679.设某个文件由100个物理盘块存储,对于连续文件、链接文件和索引文件,分别计算执行下列操作时的启动磁盘I/O次数(假如头
设某个文件由100个物理盘块存储,对于连续文件、链接文件和索引文件,分别计算执行下列操作时的启动磁盘I/O次数(假如头指针和索引表均在内存中):
(1)把一块加在文件的末尾;
(2)从文件的末尾删去一块。
答案:解:
(1) 把一块加在文件的末尾:
① 对于连续文件:
最好的情况是文件末尾盘块的下一盘块是空闲的,将新增内容写入该空闲盘块中(启动1次磁盘);将修改后的PCB存盘,需启动1次磁盘I/O。故最好情况下总共需要启动2次磁盘I/O。一般情况下,文件需要搬家,这时总共需要启动202次磁盘I/O。(2分)
② 对于链接文件:
对隐式链接,为读出第100块以便修改其链接指针,需启动100次磁盘;将新增内容及链表尾指针写入一空闲盘块中(启动1次磁盘);将读出的第100块的链接指针改为新增盘块号后写入原第100块中(启动1次磁盘)。总共需要启动102次磁盘。
对显式链接,将新增内容写入一空闲盘块中(启动1次磁盘);将修改后的FAT表写入磁盘(最多启动2次磁盘);总共最多需要启动3次磁盘I/O。 (3分)
③ 对于索引文件:
将新增内容写入一空闲盘块中;将修改后的内存索引表(只涉及该文件的最后一个索引盘块)写入索引盘块中(启动1次磁盘I/O).。故对于索引文件,总共需要启动2次磁盘I/O。(2分)
(2) 从文件的末尾删去一块:
① 对于连续文件:
读出该文件的PCB(启动1次磁盘I/O),文件长度(盘块数)减1,将修改后的PCB存盘(启动1次磁盘)。因此,在不考虑回收盘块的磁盘操作的情况下,总共需要启动2次磁盘I/O。(2分)
② 对于链接文件:
对隐式链接,为读出第100块的块号,需依次读出前99个盘块(启动99次磁盘I/O);将读出的第99块的指针改为尾指针后仍存入原第99块中(启动1次磁盘I/O)。因此,在不考虑回收盘块的磁盘操作的情况下,总共需要启动100次磁盘I/O。
对显式链接,将修改后的内存FAT表写入磁盘(最多涉及2个盘块中的FAT,故最多启动2次磁盘)。总共最多需要启动2次至少启动1次磁盘I/O。 (3分)
③ 对于索引文件:
将修改后的内存索引表存盘(只涉及最后一个索引盘块,故只需启动1次磁盘I/O)。因此,在不考虑回收盘块的磁盘操作的情况下,总共需要启动1次磁盘I/O。(3分)
(1)把一块加在文件的末尾;
(2)从文件的末尾删去一块。
答案:解:
(1) 把一块加在文件的末尾:
① 对于连续文件:
最好的情况是文件末尾盘块的下一盘块是空闲的,将新增内容写入该空闲盘块中(启动1次磁盘);将修改后的PCB存盘,需启动1次磁盘I/O。故最好情况下总共需要启动2次磁盘I/O。一般情况下,文件需要搬家,这时总共需要启动202次磁盘I/O。(2分)
② 对于链接文件:
对隐式链接,为读出第100块以便修改其链接指针,需启动100次磁盘;将新增内容及链表尾指针写入一空闲盘块中(启动1次磁盘);将读出的第100块的链接指针改为新增盘块号后写入原第100块中(启动1次磁盘)。总共需要启动102次磁盘。
对显式链接,将新增内容写入一空闲盘块中(启动1次磁盘);将修改后的FAT表写入磁盘(最多启动2次磁盘);总共最多需要启动3次磁盘I/O。 (3分)
③ 对于索引文件:
将新增内容写入一空闲盘块中;将修改后的内存索引表(只涉及该文件的最后一个索引盘块)写入索引盘块中(启动1次磁盘I/O).。故对于索引文件,总共需要启动2次磁盘I/O。(2分)
(2) 从文件的末尾删去一块:
① 对于连续文件:
读出该文件的PCB(启动1次磁盘I/O),文件长度(盘块数)减1,将修改后的PCB存盘(启动1次磁盘)。因此,在不考虑回收盘块的磁盘操作的情况下,总共需要启动2次磁盘I/O。(2分)
② 对于链接文件:
对隐式链接,为读出第100块的块号,需依次读出前99个盘块(启动99次磁盘I/O);将读出的第99块的指针改为尾指针后仍存入原第99块中(启动1次磁盘I/O)。因此,在不考虑回收盘块的磁盘操作的情况下,总共需要启动100次磁盘I/O。
对显式链接,将修改后的内存FAT表写入磁盘(最多涉及2个盘块中的FAT,故最多启动2次磁盘)。总共最多需要启动2次至少启动1次磁盘I/O。 (3分)
③ 对于索引文件:
将修改后的内存索引表存盘(只涉及最后一个索引盘块,故只需启动1次磁盘I/O)。因此,在不考虑回收盘块的磁盘操作的情况下,总共需要启动1次磁盘I/O。(3分)