🏷️ 知识点:文件物理结构
为支持 CD-ROM 中视频文件的快速随机播放,播放性能最好的文件数据块组织方式是( )。
A.连续结构
B.链式结构
C.直接索引结构
D.多级索引结构
[tag_link] 正确答案:A为了实现快速随机播放,要保证最短的查询时间,即不能选取链表和索引结构,因此 连续分配方案 最优。
下列选项中,支持文件长度可变、随机访问的磁盘存储空间分配方式是( )。
A. 索引分配 B. 链接分配 C. 连续分配 D. 动态分区分配
[tag_link]
正确答案:A
索引分配 支持变长的文件,同时可以随机访问文件的指定数据块,选项 A 正确。链接分配 不支持随机访问,需要依靠指针依次访问,选项 B 错误。连续分配的文件长度固定,不支持 可变文件长度(连续分配的文件长度虽然也可变,但是需大量移动数据,代价较大,相比之 下不太合适),选项 C 错误。动态分区分配是内存管理方式,不是磁盘空间的管理方式,选 项 D 错误。
下列文件物理结构中,适合随机访问且易于文件扩展的是()。
A. 连续结构
B. 索引结构
C. 链式结构且磁盘块定长
D. 链式结构且磁盘块变长
[tag_link]
正确答案:B
文件的物理结构包括连续、链式、索引三种,其中链式结构不能 实现随机访问,连续结构的文件不易于扩展。
因此随机访问且易于扩展是索引结构的特性。
在文件的索引节点中存放直接索引指针 10 个,一级和二级索引指针各 1 个。磁盘块大小为 1KB,每个索引指针占 4 个字节。若某文件的索引节点已在内存中,则把该文件偏移量(按字节编址)为 1234 和 307400 处所在的磁盘块读入内存,需访问的磁盘块个数分别是( )。
A. 1、2 B. 1、3 C. 2、3 D. 2、4
[tag_link] 正确答案:B本题考察 混合索引:其中 10 个直接索引指针指向的数据块大小为 10×1KB = 10KB。每个索引指针占 4B,则每个磁盘块可存放 1KB/4B = 256 个索引指针,一级索引指针指向的数据块大小为 256×1KB = 256KB,二级索引指针指向的数据块大小为 256×256×1KB = 216KB = 64MB。按字节编址,偏移量为 1234 时,因 1234B < 10KB,则由直接索引指针可得到其所在的磁盘块地址。文件的索引结点已在内存中,则地址可直接得到,故仅需 1 次访盘即可。偏移量为 307400 时,因 10KB+256KB < 307400B < 64MB,可知该偏移量的内容在二级索引指针所指向的某个磁盘块中,索引结点已在内存中,故先访盘 2 次得到文件所在的磁盘块地址,再访盘 1 次即可读出内容,故共需 3 次访盘。
设文件索引结点中有7个地址项,其中4个地址项是直接地址索引,2个地址项是一级间接地址索引, 1个地址项是二级间接地址索引,每个地址项大小为4B, 若磁盘索引块和磁盘数据块大小均为256B, 则 可表示的单个文件最大长度是()。
A.33KB B.519KB C.1057KB D.1651KB
[tag_link]
正确答案:C
每个磁盘索引块和磁盘数据块大小均为 256B,每个磁盘索引块有 256/4=64 个地址项。
因 此,4 个直接地址索引指向的数据块大小为 4×256B;2 个一级间接索引包含的直接地址索引数 为 2×(256/4),即其指向的数据块大小为 2×(256/4)×256B。
1 个二级间接索引所包含的直接地址 索引数为 (256/4)×(256/4),即其所指向的数据块大小为 (256/4)×(256/4)×256B。
即 7 个地址项所 指向的数据块总大小为 4×256+2×(256/4)×256+(256/4)×(256/4)×256=1082368B=1057KB。
设文件 F1 的当前引用计数值为1,先建立 F1 的符号链接(软链接)文件 F2, 再建立 F1 的硬链 接文件 F3, 然后删除 F1。此时,F2 和 F3 的引用计数值分别是
A.0 、1
B.1 、1
C.1 、2
D.2 、1
[tag_link]
正确答案:B
符号链接 是一个单独的文件,创建时它的引用计数值为 1;建立 硬链接 时,源文件引用计数值加 1。删除文件时,删除操作 对于符号链接是不可见的,这并不影响文件系统,当以后再通过符号链接访问时,发现文件不存在,直接删除符号链接;但对于硬链接则不可以直接删除,引用计数值减 1, 若值不为 0, 则不能删除此文件,因为还有其他硬链接指向此文件。当建立 F2 时,Fl 和 F2 的引用计数值都为 1。当再建立 F3 时,Fl 和 F3 的引用计数值就都变成了 2。当后来删除 Fl 时,F3 的引用计数值为 2-1 = 1, F2 的引用计数值 一直不变。
(本题满分 8 分)文件系统的目录项包括文件名和索引节点号。磁盘包含索引节点表、位图、目录、文件数据等元数据。若盘块大小为 4 KB,盘块号占 4 B,索引节点表存放了系统的所有文件,从 0 开始编号,存放在盘块号 100 开始连续的 4096 个盘块中。索引节点占用 128 B,包含直接地址项 5 个,一级间接地址项、二级间接地址项、三级间接地址项各 1 个。磁盘位示图和索引节点位示图分别记录磁盘和索引节点的使用情况,0 表示未使用,1 表示已使用。其中目录结构图与文件的索引节点表如下所示(此处假定图中信息已给出),file 文件占 30 KB。

(1)file 的索引节点所在的盘块号是多少?若 file 的索引节点已经读取到内存,要访问 file 文件中偏移地址 21460 的一个字节数据,则最多需要读多少个盘块?如果文件系统中有足够的磁盘空间,则最多可以存放多少个文件?(3 分)
(2)如果要删除目录 dir1,则需要对元数据进行哪些操作?(5 分)
[tag_link]
【答案】
(1)
文件的索引节点所在盘块号:盘块大小为 4 KB,索引节点占用 128 B,每个盘块可存放4096÷128=32个索引节点。索引节点表从盘块号 100 开始,连续占用 4096 个盘块,索引节点从 0 开始编号。对于索引节点号 1000,块内偏移为1000÷32=31(余 8),因此 盘块号为100+31=131。
访问偏移地址 21460 的一个字节最多需要读的盘块数:盘块大小为 4 KB,逻辑块号为⌊21460÷4096⌋=5,块内偏移为21460mod4096=980。索引节点有 5 个直接地址项(对应逻辑块号 0~4),逻辑块号 5 需通过一级间接地址项访问。索引节点已在内存,但一级间接块需从磁盘读取,再读取数据块,因此 最多需要读 2 个盘块(一级间接块和数据块)。
最多可存放的文件数:索引节点表占用 4096 个盘块,每个盘块含 32 个索引节点,因此索引节点总数为4096×32=131072。每个文件(含目录)占用一个索引节点,故 最多可存放 131072 个文件。
(2)删除目录 dir1(非空)需递归删除其下文件 file,再删除自身,对元数据的操作包括:
删除文件 file:- 根据 file 的索引节点(节点号 1000)释放其占用的所有数据块(包括直接块、间接块及间接块本身),在磁盘位示图中将对应位清零。
在索引节点位示图中将节点 1000 对应位清零。
修改 dir1 的目录数据块,删除 file 的目录项。
删除目录 dir1:- 释放 dir1 目录文件占用的数据块(存放目录项的数据块),在磁盘位示图中将对应位清零。
在索引节点位示图中将 dir1 的索引节点(节点号 201)对应位清零。
修改父目录 dir 的目录数据块,删除 dir1 的目录项。
某文件系统为一级目录结构,文件的数据一次性写入磁盘,已写入的文件不可修改,但可多次创建新文件。请回答如下问题∶
(1) 在连续、链式、索引二种文件的数据块组织方式中。哪种更合适?要求说明理由。为定位文件数据块,需要在 FCB 中设计哪些相关描述字段?
(2) 为快速找到文件,对于 FCB,是集中存储好,还是与对应的文件数据块连续存储好?要求说明理由。
[tag_link]
1)在磁盘中连续存放(采取连续结构),磁盘寻道时间更短,文件随机访问效率更高;在 FCB 中加入的字段为:<起始块号,块数> 或者 <起始块号,结束块号>。
2)将所有的 FCB 集中存放,文件数据集中存放。这样在随机查找文件名时,只需访问 FCB 对应的块,可减少磁头移动和磁盘 I/O 访问次数。
某文件系统空间的最大容量为 4TB(1TB=240 B),以磁盘块为基本分配单位。磁盘块大小为 1KB。文件控制块 (FCB) 包含一个 512B 的索引表区。请回答下列问题。
(1) 假设索引表区仅采用直接索引结构,索引表区存放文件占用的磁盘块号,索引表项中块号最少占多少字节?可支持的单个文件最大长度是多少字节?
(2) 假设索引表区采用如下结构:第 0~7 字节采用 <起始块号,块数> 格式表示文件创建时预分配的连续存储空间,其中起始块号占 6B,块数占 2B;剩余 504 字节采用直接索引结构,一个索引项占 6B,那么可支持的单个文件最大长度是多少字节?为了使单个文件的长度达到最大,请指出起始块号和块数分别所占字节数的合理值并说明理由。
[tag_link]
1)文件系统中所能容纳的磁盘块总数为 4TB/1KB=2³²。要完全表示所有磁盘块,索引项中的块号最少要占 32/8=4B。而索引表区仅采用直接索引结构,故 512B 的索引表区能容纳512B/4B=128 个索引项。每个索引项对应一个磁盘块,所以该系统可支持的单个文件最大长度是 128×1KB=128KB.
2)这里的考查的分配方式不同于我们所熟悉的三种经典分配方式,但是题目中给出了详细的解释,这个小问采用 混合索引的方式。所求的单个文件最大长度一共包含两部分:预分配的连续空间和直接索引区。连续区块数占 2B,共可以表示 2¹⁶ 个磁盘块,即 2²⁶B。直接索引区共 504B/6B=84 个索引项。所以该系统可支持的单个文件最大长度是 2²⁶B+84KB。为了使单个文件的长度达到最大,应使连续区的块数字段表示的空间大小尽可能接近系统最大容量 4TB。分别设起始块号和块数分别占 4B,这样起始块号可以寻址的范围是 2³² 个磁盘块,共 4TB,即整个系统空间。同样,块数字段可以表示最多 2³² 个磁盘块,共 4TB。
(8分)文件F 由200条记录组成,记录从1开始编号。用户打开文件后,欲将内存中的一条记录插 入文件F 中,作为其第30条记录。请回答下列问题,并说明理由。
(1)若文件系统采用连续分配方式,每个磁盘块存放一条记录,文件F 存储区域前后均有足够的空闲磁盘 空间,则完成上述插入操作最少需要访问多少次磁盘块? F 的文件控制块内容会发生哪些改变?
(2)若文件系统采用链接分配方式,每个磁盘块存放一条记录和一个链接指针,则完成上述插入操作需要 访问多少次磁盘块?若每个存储块大小为1KB, 其中4B存放链接指针,则该文件系统支持的文件最大长 度是多少?
[tag_link]
1)系统采用顺序分配方式时,插入记录需要移动其他的记录块,整个文件共有 200 条记录,要插入新记录作为第 30 条,而存储区前后均有足够的磁盘空间,且要求最少的访问存储块数,则要把文件前 29 条记录前移,若算访盘次数移动一条记录读出和存回磁盘各是一次访盘,29 条记录共访盘 58 次,存回第 30 条记录访盘 1 次,共访盘 59 次。(1 分)
F 的文件控制区的起始块号和文件长度的内容会因此改变。(1 分)
2)文件系统采用链接分配方式时,插入记录并不用移动其他记录,只需找到相应的记录,修改指针即可。插入的记录为其第 30 条记录,那么需要找到文件系统的第 29 块,一共需要访盘 29 次,然后把第 29 块的下块地址部分赋给新块,把新块存回内存会访盘 1 次,然后修改内存中第 29 块的下块地址字段,再存回磁盘(1 分),一共访盘 31 次。(1 分)
4 字节共 32 位,可以寻址 2^32=4G 块存储块,每块的大小为 1KB,即 1024B,其中下块地址部分占 4B,数据部分占 1020B,那么该系统的文件最大长度是 4G×1020B=4080GB。(2 分)
【评分说明】①第 1 小题的第 2 小问,若答案中不包含文件的起始地址和文件大小,则不给分。 ②若按 1024×232B=4096GB 计算最大长度,给 1 分。
某文件系统采用索引节点存放文件的属性和地址信息,簇大小为 4KB。每个文件索引节点占 64B,有 11 个地址项,其中直接地址项 8 个,一级、二级和三级间接地址项各 1 个,每个地址项长度为 4B。请回答下列问题。
(1) 该文件系统能支持的最大文件长度是多少?(给出计算表达式即可)
(2) 文件系统用 1M(1M=220)个簇存放文件索引节点,用 512M 个簇存放文件数据。若一个图像文件的大小为 5600B,则该文件系统最多能存放多少个这样的图像文件?
(3) 若文件 F1 的大小为 6KB,文件 F2 的大小为 40KB,则该文件系统获取 F1 和 F2 最后一个簇的簇号需要的时间是否相同?为什么?
[tag_link]
1)簇大小为 4KB,每个地址项长度为 4B,故每簇有 4KB/4B = 1024 个地址项。最大文件的物理块数可达8+1×1024+1×10242+1×10243,每个物理块(簇)大小为 4KB,故最大文件长度为(8+1×1024+1×10242+1×10243)×4KB=32KB+4MB+4GB+4TB。
2)文件索引节点总个数为 1M×4KB/64B=64M,5600B 的文件占 2 个簇,512M 个簇可存放的文件总个数为 512M/2=256M。可表示的文件总个数受限于文件索引节点总个数,故能存储 64M 个大小为 5600B 的图像文件。
3)文件 F1 的大小为6KB<4KB×8=32KB,故获取文件 F1 的最后一个簇的簇号只需要访问索引节点的直接地址项。文件 F2 的大小为 40KB,4KB×8<40KB<4KB×8+4KB×1024,故获取 F2 的最后一个簇的簇号还需要读一级索引表。综上,需要的时间不相同。