首页 > 试题广场 >

回答下面问题

[问答题]

文件 F 由 200 条记录组成,记录从 1 开始编号,用户打开文件后,欲将内存中的一条记录插入文件 F 中,作为其第 30 条记录,请回答下列问题,并说明理由。
(1)若文件系统为顺序分配方式,每个存储块存放一条记录,文件 F 的存储区域前后均有足够空闲的存储空间,则要完成上述操作最少要访问多少存储块? F 的文件控制区内容会有哪些改变?
(2)若文件系统为链接分配方式,每个存储块存放的一条记录和一个链接指针,则要完成上述操作最少要访问多少存储块?若每个存储块大小为 1KB,其中 4 个字节存放指针,则该系统支撑文件的最大长度是多少?

(1) 下列是连续分配的磁盘块使用情况。

1

2

···

29

30

···

199

200

现在需要将一条记录插入到文件F 中,作为其第 30 条记录,也就是插入到第 29 条记录的后面。这需要向前移动文件的前 29 条记录。移动后如下图, 其中灰底的磁盘块存储的是插入的记录。

1

2

3

···

30

31

···

200

201

向前移动文件的前29 条记录,每条记录需先读一次,然后写到其前一块磁盘块敏感词需 29×2=58 次。然后需要将新记录写到腾出的那个磁盘块中, 作为该文件的第 30 条记录。故总共需要 58+1=59 次。

由于文件的起始位置前移了一个磁盘块,同时文件也增加了一条记录,因此F 的文件控制块中的文件的起始位置和文件的大小会发生改变。

(2) 下列是链接分配的磁盘块使用情况。

现在需要将一条记录插入到文件F 中,作为其第 30 条记录,也就是插入到第 29 条记录的后面。 插入后效果如下图。

这就需要先找到第29 条文件记录的磁盘块,然后获得第 30 条文件记录的磁盘块地址 (需读磁盘 29 次)。再为该记录分配一个空闲磁盘块, 将该记录以及第 30 条文件记录的磁盘块地址写入其中,再将该块写入磁盘(需写磁盘 1 次)。 最后还需要修改第 29 块的链接指针,指向新的插入块,并将第 29 块写回磁盘(需写磁盘 1 次)。 故共需要 29+1+1=31 次。由于每个磁盘块大小为 1KB,其中 4 个字节存放链接指针, 因此用于存放文件的空间为( 1KB-4B)。 又 4 个字节的指针的地址空间为 232。 因此该文件系统支持的文件最大长度是
(1024-4) B×232=4080GB


发表于 2016-11-19 17:30:24 回复(2)

顺序需要移动,每个记录移动要两次,一次是读一次是移动。链接并不需要移动。链接方式找到第三十块时(29次)还要记得链接前面的和链接后面的2次。

发表于 2019-11-29 13:09:25 回复(0)
四个字节的指针占用的是32位的地址空间,八个字节的指针占用的是64位的地址空间
发表于 2019-05-12 15:20:25 回复(0)