1. 文件I/O次数
当前有一个由100个块组成的文件,且文件控制块已经在主存。对于采用连续、链接(单向链)和一级索引结构(且索引块已经在主存)时,如果下面的条件成立,访问一个块,需要执行多少次磁盘I/O操作在连续分配时,假定在开头已经没有空间扩展文件,但在结尾处还有扩展的空间。并假定要扩展的信息块已经在主存:
①这个块被加到文件开头;
②这个块被加到文件中间;
③这个块被加到文件结尾;
④从文件开头删除一块;
⑤从文件中间删除一块;
⑥从文件结尾删除一块。
解析
1. 连续结构
①由于开头已经没有空间扩展文件,若要把这个块加到文件开头,必须查文件控制块,找到文件的第一个物理块,计算文件的第100块的位置,先将第100块读入主存,然后再将它写入磁盘的下一块中。这样每一块需要两次访问磁盘,之后将主存的信息写入磁盘的文件的第一物理块中。共访问201次。
②这个块被加到文件中间时,根据上面的分析可知,需要访问101次磁盘。
③这个块被加到文件结尾,直接将主存信息写入磁盘即可。只需要1次访问磁盘。
④从开头删除一块时,只需修改文件控制快中第一块位置和文件大小即可,不需要磁盘I/O。
⑤从文件中间删除一块时,由①可知,需要移动后面的49块,共需98次磁盘I/O,需要修改文件控制块中文件大小。
⑥从文件结尾删除一块时,只需要修改文件控制块中文件大小即可,不需要磁盘I/O。
2.链接结构
①由于是链接结构,要把这个块加到文件开头时,将原第一个物理块号作为指针写入信息块,只需要将该块信息写入一个磁盘块,并修改文件控制块中第一块位置和文件大小即可,访问磁盘1次。
②需要读前50块,以便找到第51块的链接指针。将第51块的链接指针写入要插入的信息块,再为该信息块分配一个盘块,将信息块写入其中。将分配的块号写入第50块中。共需要52次磁盘I/O。
③这个块被加到文件结尾,先将100块读出,以找到第100块,并修改它的链接字为插入块的块号。之后写入第100块和插入的信息块。共需要102次磁盘访问。
④从文件开头删除一块时,需要1次磁盘I/O,将第一块读出,将它的链接字内容送文件控制块中第一位置,并修改文件大小。
⑤从文件中间删除一块时,需要读前50块,以便找到第51块的链接指针。将第51块中的链接指针写入第50块中,共需要52次磁盘I/O。
⑥从文件结尾删除一块时,需要读前99个磁盘块,将第99块的指针置位空后写回去。共需要100次。
3.索引结构
①由于是索引结构,且索引块在主存,要把这个块加到文件开头,只需要将该信息块写入一个磁盘块,并修改文件控制块中第一块位置和文件大小即可。访问磁盘1次。
②只需要将该信息块写入一个磁盘块,并修改文件控制块中第一块位置和文件大写即可。访问磁盘1次。
③只需要将该信息块写入一个磁盘块,并修改文件控制块中第一块位置和文件大小即可。访问磁盘1次。
④只需要将该信息块写入一个磁盘块,并修改文件控制块中第一块位置和文件大小即可。访问磁盘1次。
⑤只需要将该信息块写入一个磁盘块,并修改文件控制块第一块位置和文件大小即可。访问磁盘1次。
⑥只需要将该信息块写入一个磁盘块,并修改文件控制块中第一块位置和文件大小即可,访问磁盘1次。