答: (1)在文件开头删除一个物理块: ① 连续分配:将FCB读入内存需要一次磁盘I/O操作;修改FCB中起始块的位置和文件信息,再将其写回磁盘需要一次磁盘I/O操作。一共需要2次磁盘I/O操作。 ② 链接分配:将FCB读入内存需要一次磁盘I/O操作;找到起始块的位置,读取0号块指向1号块的指针需要一次磁盘I/O操作;将FCB中起始块修改为1号块并写回磁盘需要一次磁盘I/O操作。一共需要3次磁盘I/O操作。 ③ 索引分配:将FCB读入内存需要一次磁盘I/O操作;从FCB中获取索引块的位置,再将索引表读入内存需要一次磁盘I/O操作;在索引表中删除第一个表项,再将其写回磁盘需要一次磁盘I/O操作。一共需要3次磁盘I/O操作。
(2)在文件中间增加一个物理块并进行写入操作,假设新增盘块将会成为盘块50: ① 连续分配:将FCB读入内存需要一次磁盘I/O操作;将盘块99、98、……、50依次往后移动一个盘块(后移一个盘块需要进行一次读和一次写操作,共需100次I/O操作);在空出来的盘块中写入内容需要一次I/O操作;修改FCB中的文件大小并将其写回磁盘需要一次I/O操作。一共需要104次磁盘I/O操作。 ② 链接分配:将FCB读入内存需要一次磁盘I/O操作;读取0号块找到指向1号块的指针,读取1号块找到指向2号块的指针,……,读取49号块找到指向50号块的指针(共需50次I/O操作);向空闲块中写入新内容并将其指针指向原“50号块”需要一次磁盘I/O操作;再修改49号块的指针使其指向新盘块需要一次磁盘I/O操作。一共需要54次磁盘I/O操作。 ③ 索引分配:将FCB读入内存需要一次磁盘I/O操作;从FCB中获取索引块的位置,读入索引表需要一次磁盘I/O操作;向空闲块中写入新内容需要一次磁盘I/O操作;将新盘块的块号添加到索引表中并将索引表写回磁盘需要一次磁盘I/O操作。一共需要4次磁盘I/O操作。
(3)在文件末尾删除一个物理块: ① 连续分配:将FCB读入内存需要一次磁盘I/O操作;修改FCB中文件大小,将FCB写回磁盘需要一次磁盘I/O操作。一共需要2次一次磁盘I/O操作。 ② 链接分配:将FCB读入内存需要一次磁盘I/O操作;找到起始块的位置,读取0号块找到指向1号块的指针,读取1号块找到指向2号块的指针,……,读取98号块,发现盘块98指向的是末尾99号块(共需99次I/O操作);将98号块的指针修改为空需要一次磁盘I/O操作;修改FCB中的末尾块为98号块并将其写回磁盘需要一次磁盘I/O操作。一共需要102次磁盘I/O操作。 ③ 索引分配:将FCB读入内存需要一次磁盘I/O操作;从FCB中获取索引块的位置,读入索引表需要一次磁盘I/O操作;删除索引表中最后一条表项后将其写回磁盘需要一次磁盘I/O操作。一共需要3次磁盘I/O操作。