第四章文件管理¶
答案速对¶
| 题号 | 年份-题号 | 正确答案 | 题号 | 年份-题号 | 正确答案 | 题号 | 年份-题号 | 正确答案 |
|---|---|---|---|---|---|---|---|---|
| 1 | 2009-30 | A | 10 | 2023-31 | B | 19 | 2021-30 | A (同9) |
| 2 | 2010-30 | C | 11 | 2024-29 | A | 20 | 2009-31 | B |
| 3 | 2013-26 | A | 12 | 2017-30 | D | 21 | 2017-31 | B |
| 4 | 2015-29 | B | 13 | 2009-28 | B | 22 | 2014-27 | A |
| 5 | 2012-28 | A | 14 | 2013-24 | A | 23 | 2015-31 | C |
| 6 | 2013-23 | A | 15 | 2020-24 | A | 24 | 2019-26 | B |
| 7 | 2014-29 | B | 16 | 2020-32 | B | 25 | 2023-25 | C |
| 8 | 2020-23 | B | 17 | 2018-31 | D | 26 | 2024-26 | A |
| 9 | 2021-30 | A | 18 | 2010-31 | C |
(一)文件¶
文件的基本概念¶
- 【2009-30】文件系统中,文件访问控制信息存储的合理位置是( )。
A. 文件控制块
B. 文件分配表
C. 用户口令表
D. 系统注册表
解析
答案:A。文件控制块。
文件控制块 FCB 或 inode 保存文件的元数据,例如文件主、访问权限、文件大小、时间信息和数据块地址等。访问控制信息属于某个文件自身的属性,因此应保存在该文件对应的 FCB 中。
- 文件分配表主要记录磁盘块的分配和链接关系;
- 用户口令表用于身份认证;
- 系统注册表不是文件系统中描述单个文件的结构。
文件元数据和索引节点(inode)¶
- 【2010-30】设文件索引节点中有7个地址项,其中4个地址项是直接地址索引,2个地址项是一级间接地址索引,1个地址项是二级间接地址索引,每个地址项大小为4B,若磁盘索引块和磁盘数据块大小均为256B,则可表示的单个文件最大长度是( )。
A. 33KB
B. 519KB
C. 1057KB
D. 16516KB
解析
答案:C。1057KB。
每个地址项为 4B,索引块大小为 256B,所以一个索引块可存放:
256B / 4B = 64 个地址项。
数据块大小也是 256B,各类地址项可寻址的数据量为:

总长度为:1KB + 32KB + 1024KB = 1057KB。
注意:二级间接索引中的两个索引层本身占用的是索引块,不属于文件数据长度;题目要求的是文件可表示的最大数据长度。
- 【2013-26】若某文件系统索引结点 (inode) 中有直接地址项和间接地址项,则下列选项中,与单个文件长度无关的因素是( )。
A. 索引结点的总数
B. 间接地址索引的级数
C. 地址项的个数
D. 文件块大小
解析
答案:A。索引结点的总数。
单个文件的最大长度取决于该文件 inode 能提供多少数据块地址,受以下因素影响:
- 直接和间接地址项的个数;
- 间接索引的级数;
- 每个文件块的大小;
- 地址项大小。
inode 总数决定文件系统最多能容纳多少个文件,而不影响某一个文件可拥有的最大长度。
- 【2015-29】在文件的索引节点中存放直接索引指针10个,一级和二级索引指针各1个。磁盘块大小为1KB,每个索引指针占4个字节。若某文件的索引节点已在内存中,则把该文件偏移量(按字节编址)为1234和307400处所在的磁盘块读入内存,需访问的磁盘块个数分别是( )。
A. 1、2
B. 1、3
C. 2、3
D. 2、4
解析
答案:B。1、3。
inode 已在内存,因此不需要为读取 inode 再访问磁盘。
每个磁盘块为 1KB,前 10 个直接指针可覆盖前 10KB 的文件内容。
- 偏移量
1234:
1234 / 1024 = 1余210,位于文件的第 1 个逻辑块(从 0 开始计数);- 该块由直接索引指针定位;
- 只需读取目标数据块,访问 1 个磁盘块。
- 偏移量
307400:
- 所在逻辑块号为
floor(307400 / 1024) = 300; - 直接索引覆盖逻辑块 0 至 9;一级间接索引覆盖接下来的 256 个块,即逻辑块 10 至 265;
- 第 300 块落在二级间接索引区域;
- 需要依次读取二级索引块、一级索引块和目标数据块,共 3 个磁盘块。
因此为 1、3,选 B。
文件的操作(建立,删除,打开,关闭,读,写)¶
- 【2012-28】若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是( )。
Ⅰ. 若该文件的数据不在内存中,则该进程进入睡眠等待状态
Ⅱ. 请求read系统调用会导致CPU从用户态切换到核心态
Ⅲ. read系统调用的参数应包含文件的名称
A. 仅Ⅰ、Ⅱ
B. 仅Ⅰ、Ⅲ
C. 仅Ⅱ、Ⅲ
D. Ⅰ、Ⅱ和Ⅲ
解析
答案:A。仅 I、II。
Ⅰ 正确。若数据不在内存缓存中,系统需要发起磁盘 I/O;发出 I/O 请求后,当前进程通常阻塞并进入睡眠等待状态,待 I/O 完成后再被唤醒。
Ⅱ 正确。read 是系统调用,执行时 CPU 从用户态切换到核心态,由内核检查参数、查找打开文件表、进行缓存和 I/O 操作。
Ⅲ 错误。read 的典型参数是文件描述符、用户缓冲区地址和读取字节数,例如 read(fd, buf, count)。文件名在 open 阶段完成路径解析后已转换为文件描述符,不必再传给 read。
- 【2013-23】用户在删除某文件的过程中,操作系统不可能执行的操作是( )。
A. 删除此文件所在的目录
B. 删除与此文件关联的目录项
C. 删除与此文件对应的文件控制块
D. 释放与此文件关联的内存缓冲区
解析
答案:A。删除此文件所在的目录。
删除文件只应删除该文件本身的目录项,并在链接计数归零且不再被打开时回收其 FCB/inode 与数据块。它不能因为删除一个文件而删除包含该文件的整个目录,否则目录下的其他文件也会丢失。
其余操作都有可能发生:删除目录项、回收文件控制块、释放相关缓存或缓冲区。
- 【2014-29】在一个文件被用户进程首次打开的过程中,操作系统需要做的是( )。
A. 将文件内容读到内存中
B. 将文件控制块读到内存中
C. 修改文件控制块中的读写权限
D. 将文件的数据缓冲区首指针返回给用户进程
解析
首次 open 时,系统按路径查找目录项,获得 inode 号或 FCB 地址,并将相应文件控制块读入内存,建立或更新系统打开文件表和进程打开文件表。
打开文件不等于把整个文件内容装入内存,文件数据通常在后续 read 时按需读入;读写权限由权限检查决定,不是在打开时随意修改;返回给用户的是文件描述符,而不是数据缓冲区首指针。
- 【2020-23】若多个进程共享同一个文件F,则下列叙述中,正确的是( )。
A. 各进程只能用“读”方式打开文件F
B. 在系统打开文件表中仅有一个表项包含F的属性
C. 各进程的用户打开文件表中关于F的表项内容相同
D. 进程关闭F时,系统删除F在系统打开文件表中的表项
解析
答案:B。在系统打开文件表中仅有一个表项包含 F 的属性。
在本题采用的两级打开文件表模型中,文件 F 的公共属性由系统打开文件表中的共享表项保存;各进程的用户打开文件表分别保存指向该系统表项的文件描述符等信息。
- A 错误:进程可以按照权限以读、写或读写方式打开文件;
- B 正确:文件 F 的公共属性不需要在系统打开文件表中重复保存;
- C 错误:不同进程的用户打开文件表项可因打开方式、文件位置等状态而不同;
- D 错误:一个进程关闭文件时通常只是减少打开计数,只有最后一个引用关闭后才回收相应系统打开文件表项。
- 【2021-30】若目录dir下有文件file1,则为删除该文件内核不必完成的工作是( )。
A. 删除file1的快捷方式
B. 释放file1的文件控制块
C. 释放file1占用的磁盘空间
D. 删除目录dir中与file1对应的目录项
解析
答案:A。删除 file1 的快捷方式。
删除目录 dir 中的文件 file1,内核需要删除该目录项;若该文件没有其他硬链接且没有进程打开它,还需回收其磁盘空间和文件控制块。快捷方式或符号链接是独立目录项或独立文件对象,系统并不需要也无法假定存在,因此删除快捷方式不是删除该文件的必经工作。
- 【2023-31】若文件F仅被进程P打开并访问,则当进程P关闭F时,下列操作中,文件系统需要完成的是( )。
A. 删除目录中文件F的目录项
B. 释放F的索引节点所占的内存空间
C. 释放F的索引节点所占的外存空间
D. 将文件磁盘索引节点中的链接计数减1
解析
答案:B。释放 F 的索引节点所占的内存空间。
文件 F 只有进程 P 打开。当 P 关闭 F 后,内存中的打开引用归零,文件系统可以释放 F 的内存 inode 缓存或内存索引节点。
关闭文件并不等于删除文件,所以不会删除目录项、释放外存中的 inode,也不会把磁盘 inode 的链接计数减 1。链接计数记录的是硬链接数量,应在删除目录项时修改。
- 【2024-29】以下系统调用的实现中,包含文件按名查找功能的是
A. open()
B. read()
C. write()
D. close()
解析
答案:A。open()。
open(pathname, ...) 接收路径名,内核必须逐级查找目录并定位目标文件,因此包含按名查找功能。
read()、write() 和 close() 都接收文件描述符。文件描述符已经在 open() 时完成了从文件名到打开文件表项的转换,后续操作不再进行按名查找。
文件的保护¶
- 【2017-30】某文件系统中,针对每个文件,用户类别分为4类:安全管理员、文件主、文件主的伙伴、其他用户;访问权限分为5种:完全控制、执行、修改、读取、写入。若文件控制块中用二进制位串表示文件权限,为表示不同类别用户对一个文件的访问权限,则描述文件权限的位数至少应为( )。
A. 5
B. 9
C. 12
D. 20
解析
答案:D。20 位。
每一类用户都需要独立表示 5 种权限,每种权限用 1 个二进制位表示。共有 4 类用户,因此最少需要:4 × 5 = 20 位。
不要把“完全控制”理解为可以不占位。题目已经将其列为一种独立的权限类型,按位串表示时需要为每种权限预留一个位。
文件的逻辑结构¶
文件的物理结构¶
- 【2009-28】下列文件物理结构中,适合随机访问且易于文件扩展的是( )。
A. 连续结构
B. 索引结构
C. 链式结构且磁盘块定长
D. 链式结构且磁盘块变长
解析
答案:B。索引结构。
索引结构通过索引块保存逻辑块到物理块的映射,可以直接定位任意逻辑块,适合随机访问;文件增长时只需分配新的数据块并更新索引项,不要求新块与已有块物理连续。
连续结构也支持随机访问,但文件扩展可能因后续空间不足而需要搬迁;链式结构易扩展,但必须沿链逐块查找,随机访问性能差。
- 【2013-24】为支持 CD-ROM 中视频文件的快速随机播放,播放性能最好的文件数据块组织方式是( )。
A. 连续结构
B. 链式结构
C. 直接索引结构
D. 多级索引结构
解析
答案:A。连续结构。
视频快速随机播放既要求较高的读取吞吐量,也希望跳转时减少寻道和索引访问。CD-ROM 内容通常是只读、预先制作且不需要动态扩展,适合将同一视频的块连续存放。
连续结构磁头移动少、顺序读效率高,并可通过起始块号加偏移快速定位目标位置。索引结构虽支持随机访问,但还需要额外读取索引块;链式结构不利于随机播放。
- 【2020-24】下列选项中,支持文件长度可变、随机访问的磁盘存储空间分配方式是( )。
A. 索引分配
B. 链接分配
C. 连续分配
D. 动态分区分配
解析
答案:A。索引分配。
索引分配允许文件数据块离散存放,并通过索引直接找到任意逻辑块,因此同时支持:
- 文件长度可变:增加块时更新索引;
- 随机访问:按逻辑块号查索引即可定位。
链接分配支持扩展但随机访问慢;连续分配随机访问快,但扩展困难;动态分区分配不是文件磁盘空间的典型分配方式。
- 【2020-32】某文件系统的目录项由文件名和索引结点号构成。若每个目录项长度为64字节,其中4字节存放索引结点号,60字节存放文件名。文件名由小写英文字母构成,则该文件系统能创建的文件数量的上限为( )。
A. \(2^{26}\)
B. \(2^{32}\)
C. \(2^{60}\)
D. \(2^{64}\)
解析
答案:B。2^32。
目录项中的 inode 号占 4B,即 32 位,因此最多可表示:2^(4 × 8) = 2^32个不同 inode。一个文件要占用一个 inode,所以系统能创建的文件数量上限受 inode 编号范围限制,为 2^32。
文件名由 60 个小写英文字母构成,理论上名称组合数为 26^60,远大于 2^32;实际瓶颈是 inode 编号数量,而不是文件名组合数。
- 【2018-31】下列优化方法中,可以提高文件访问速度的是( )。
Ⅰ. 提前读
Ⅱ. 为文件分配连续的簇
Ⅲ. 延迟写
Ⅳ. 采用磁盘高速缓存
A. 仅Ⅰ、Ⅱ
B. 仅Ⅱ、Ⅲ
C. 仅Ⅰ、Ⅲ、Ⅳ
D. Ⅰ、Ⅱ、Ⅲ、Ⅳ
解析
答案:D。I、II、III、IV。
- 提前读:根据顺序访问的局部性,预先把后续数据读入缓存;
- 分配连续簇:减少寻道和旋转等待,提高顺序访问速度;
- 延迟写:把多次小写操作合并,并可调整写回时机和顺序,减少 I/O 次数;
- 磁盘高速缓存:使热点数据能够直接从内存获取。
四种措施都可以减少磁盘访问次数或降低单次 I/O 的成本,因此选 D。
(二)目录¶
目录的基本概念¶
- 【2010-31】设置当前工作目录的的主要用是( )。
A. 节省外存空间
B. 节省内存空间
C. 加快文件的检索速度
D. 加快文件的读/写速度
解析
答案:C。加快文件的检索速度。
当前工作目录为相对路径提供起点。例如当前目录为 /home/user 时,访问 doc/a.txt 不需要从根目录开始给出完整路径。这样可减少路径解析中的目录查找过程,主要作用是提高文件检索效率。
它不会减少外存或内存占用,也不直接提高已定位文件的读写传输速度。
- 【2021-30】若目录dir下有文件file1,则为删除该文件内核不必完成的工作是( )。
A. 删除file1的快捷方式
B. 释放file1的文件控制块
C. 释放file1占用的磁盘空间
D. 删除目录dir中与file1对应的目录项
解析
答案:A。删除 file1 的快捷方式。
本题与第 9 题相同。删除文件的核心操作是删除目录项,并在没有剩余硬链接、没有打开引用时回收文件控制块和磁盘数据块。快捷方式或符号链接不是该文件删除流程必须处理的对象,故选 A。
树形目录¶
目录的操作¶
硬链接和软链接¶
- 【2009-31】设文件F1的当前引用计数值为1,先建立F1的符号链接(软链接)文件F2,再建立F1的硬链接文件F3,然后删除F1。此时,F2和F3的引用计数值分别是( )。
A. 0、1
B. 1、1
C. 1、2
D. 2、1
解析
答案:B。1、1。
初始时 F1 的引用计数为 1。
- 创建符号链接 F2:F2 是一个独立文件,内容为 F1 的路径;它不增加 F1 的硬链接计数。此时 F2 的引用计数为 1,F1 仍为 1;
- 创建硬链接 F3:F3 与 F1 指向同一个 inode,F1 的引用计数变为 2;
- 删除目录项 F1:共享 inode 的引用计数减 1,F3 仍指向该 inode,因此其引用计数为 1。
最终 F2 的引用计数为 1,F3 所共享文件的引用计数也为 1,选 B。
- 【2017-31】若文件f1的硬链接为f2,两个进程分别打开f1和f2,获得对应的文件描述符为fd1和fd2,则下列叙述中,正确的是( )。
Ⅰ. f1和f2的读写指针位置保持相同
Ⅱ. f1和f2共享同一个内存索引结点
Ⅲ. fd1和fd2分别指向各自的用户打开文件表中的一项
A. 仅Ⅲ
B. 仅Ⅱ、Ⅲ
C. 仅Ⅰ、Ⅱ
D. Ⅰ、Ⅱ和Ⅲ
解析
答案:B。仅 II、III。
硬链接 f1 和 f2 指向同一个磁盘 inode,因此:
- Ⅱ 正确:内存中会共享同一个内存 inode;
- Ⅲ 正确:两个进程各自得到文件描述符,分别指向各自用户打开文件表中的表项;
- Ⅰ 错误:两个独立的
open操作会建立各自的打开文件状态,读写位置指针可以不同。只有通过fork继承或dup复制而共享同一打开文件表项时,文件位置才会保持联动。
(三)文件系统¶
文件系统的全局结构(layout)¶
外存空闲空间管理办法¶
- 【2014-27】现有一个容量为10GB的磁盘分区,磁盘空间以簇 (Cluster) 为单位进行分配,簇的大小为4KB,若采用位图法管理该分区的空闲空间,即用一位 (bit) 标识一个簇是否被分配,则存放该位图所需簇的个数为( )。
A. 80
B. 320
C. 80K
D. 320K
解析
答案:A。80。
分区容量为 10GB,簇大小为 4KB。簇数为:
10 × 2^30 / (4 × 2^10) = 10 × 2^18 = 2.5 × 2^20 个簇。
位图每个簇对应 1 bit,所以位图大小为:
(2.5 × 2^20) bit / 8 = 320KB。
位图本身也按 4KB 的簇存放,因此所需簇数为:
320KB / 4KB = 80。
- 【2015-31】文件系统用位图法表示磁盘空间的分配情况,位图存于磁盘的32~127号块中,每个盘块占1024个字节,盘块和块内字节均从0开始编号。假设要释放的盘块号为409612,则位图中要修改的位所在的盘块号和块内字节序号分别是( )。
A. 81、1
B. 81、2
C. 82、1
D. 82、2
解析
答案:C。82、1。
一个盘块为 1024B,包含:
1024 × 8 = 8192 个 bit。
要释放的盘块号为 409612,对应位图中的位号也是 409612。计算其在位图中的位置:
409612 / 8192 = 50 余 12说明该 bit 位于位图的第 50 个位图块(从 0 开始)。位图存于磁盘 32 至 127 号块,因此实际盘块号为:
32 + 50 = 82。
余数 12 表示在该位图块中的第 12 位,块内字节号为:
floor(12 / 8) = 1。
故应修改 82 号盘块的第 1 个字节,选 C。
- 【2019-26】下列选项中,可用于文件系统管理空闲磁盘块的数据结构是( )。
Ⅰ. 位图
Ⅱ. 索引结点
Ⅲ. 空闲磁盘块链
Ⅳ. 文件分配表 (FAT)
A. 仅Ⅰ、Ⅱ
B. 仅Ⅰ、Ⅲ、Ⅳ
C. 仅Ⅰ、Ⅲ
D. 仅Ⅱ、Ⅲ、Ⅳ
解析
答案:B。仅 I、III、IV。
- 位图可以用每一位表示对应磁盘块是否空闲;
- 空闲磁盘块链直接把空闲块链接起来;
- FAT 记录簇的后继关系,空闲簇用特定标记表示,也可用于识别和管理空闲簇;
- inode 描述的是已存在文件的元数据与数据块地址,不是空闲空间管理结构。
因此为 I、III、IV,选 B。
- 【2023-25】某系统采用页式存储管理,用位图管理空闲页框。若页大小为4 KB,物理内存大小为16 GB,则位图所占空间的大小是( )。
A. 128 B
B. 128 KB
C. 512 KB
D. 4 MB
解析
答案:C。512KB。
页大小为 4KB,即 2^12 B;物理内存为 16GB,即 2^34 B。页框总数为:
2^34 / 2^12 = 2^22 个页框。
每个页框用 1 bit 表示,位图大小为:
2^22 bit / 8 = 2^19 B = 512KB。
- 【2024-26】文件系统需占用部分外存空间记录空闲块的位置,占用外存空间大小与当前空闲块数量无关的是
A. 位图法
B. 空闲表法
C. 成组链接法
D. 空闲链表法
解析
答案:A。位图法。
位图为磁盘上的每一个块预留 1 bit。只要磁盘容量和块大小固定,位图长度就固定,无论当前实际空闲块有多少,位图所占空间都不变。
空闲表法、空闲链表法和成组链接法都需要记录空闲块或空闲块组的信息,其记录规模会随当前空闲块数量变化。因此选 A。