跳转至

Relax1000 操作系统 · 第4章 文件管理 · 解析

第4章 文件管理

本章 81 题;解析册印刷页 224–239。

速对答案(原书): DBBDC BBCAB CBDAB BAABB DCCDB BBCBD BDBAB BCCBB DCADA DCCAC DCACB DACBD BBADB CCDCC DBDCD ABDCB B

Q1

速对表原值: D

详细解析标注: D

A正确。文件的逻辑结构是用户可见的文件组织方式,例如文本文件被视为字符流(流式文件),而数据库文件可能由多条记录组成(记录式文件)。 这种逻辑组织与文件数据块在磁盘上如何具体存放(物理结构,如连续、链接或索引存放)是分离的。

B 正确,文件名是用户用来识别和访问文件的符号名称。 文件扩展名是附加在文件名后的部分,用于帮助用户和操作系统判断文件的类型和可能的用途。

C 正确,文件的“只读”属性确实限制了对文件内容的修改。但是,通常情况下,文件所有者或具有足够权限的系统管理员(超级用户) 仍然有权修改文件的属性,包括取消“只读”属性,或者直接对文件进行写操作(尽管可能需要先更改权限)。

D错误,索引节点(inode)不包含文件名,文件名存储在目录文件的目录项中,每个目录项将文件名与 inode 号关联。

返回题目

Q2

速对表原值: B

详细解析标注: B

Ⅰ正确,FCB 中必然包含文件的基本信息,例如文件名(用于用户识别)、文件在外部存储设备上的物理位置(如起始盘块号、占用的盘块数或索引块指针)、文件的逻辑结构(如流式或记录式)、文件的物理结构(如连续、链接、索引)以及文件长度等。II 正确,为了实现文件保护,FCB 中会记录文件的存取控制信息,例如文件所有者是谁,以及不同类别的用户(如文件所有者、同组用户、其他用户)对该文件具有的访问权限(如读、写、执行等)。III 正确,FCB 中通常还会包含文件的使用历史和状态信息,例如文件的创建日期和时间、最后一次被修改的日期和时间、最后一次被访问的日期和时间,以及当前文件是否被打开、被哪些进程打开、是否有进程锁定了该文件等。IV 错误,FCB 中存放的是文件的描述信息(元数据),例如文件数据存储在磁盘上的哪个位置(通过物理地址或索引块指针指示),但不包含文件内容本身的数据块。文件内容的数据是存储在磁盘的数据区中的,FCB 的作用是指向这些数据。如果 FCB 包含文件内容本身,那么对于大文件,FCB 将会变得异常庞大,不便于管理和快速检索。

返回题目

Q3

速对表原值: B

详细解析标注: B

B 正确,把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个文件目录项。

A 错误,创建文件时建立对应的文件控制块,而不是打开文件时创建的。

C 错误,文件控制块与文件一一对应。

D 错误,文件打开表指针在进程控制块内,和文件控制块没有关系。FCB 有三类信息:基本信息、存取控制信息及使用信息。

返回题目

Q4

速对表原值: D

详细解析标注: D

A 错误,文件目录是由一系列目录项组成的,是文件控制块 FCB 的有序集合。在引入索引节点的文件系统中,每个目录项通常包含文件名和指向该文件对应索引节点的指针或编号,而不是索引节点本身。索引节点通常集中存放在磁盘的特定区域(索引节点区)。

B 错误,文件目录和索引节点之间有非常紧密的联系。目录项通过索引节点号(或指针)与索引节点关联起来,实现了文件名到文件具体属性和数据位置的映射。

C 错误,文件目录(或更准确地说是目录文件中的目录项)通常包含文件名和指向索引节点的指针或索引节点号,而不是索引节点本身。索引节点包含了文件的详细元数据。

D正确,索引节点(inode)是文件系统中用于存储文件元数据的核心数据结构。它包含了关于文件的各种控制信息。

返回题目

审计旁注(非原文):改排版

重复的第二个 B 应改为 C。

Q5

速对表原值: C

详细解析标注: C

A正确,索引节点是文件的元数据集合,它详细描述了文件的各种属性,包括文件类型、所有者 ID、用户组 ID、文件的访问权限(读、写、执行)、各种时间戳(如创建时间、最后修改时间、最后访问时间)、文件大小以及指向存储文件内容的数据块的指针(直接指针、间接指针等)。每个文件在文件系统中都有一个唯一的索引节点。

B 正确,这种设计将文件名与文件的其他描述信息分离。目录项的主要作用是建立文件名到索引节点的映射。通过这种方式,可以减少目录项的大小,提高目录检索效率。

C 错误,硬链接是指多个不同的文件名指向同一个索引节点。这意味着这些文件名共享同一个文件元数据(包括指向数据块的指针)。因此,它们实际上是同一个文件的不同入口。索引节点中通常会有一个链接计数器,记录有多少个目录项指向该索引节点。并不会为每个硬链接创建独立的索引节点。

D 正确,索引节点作为文件系统持久化的一部分,存储在磁盘上。当文件被打开或访问时,操作系统会将该文件的索引节点从磁盘读入内存,以便快速获取文件的元数据和定位数据块,减少后续操作的磁盘 I/O 次数。

返回题目

Q6

速对表原值: B

详细解析标注: B

inode 的数量是在文件系统创建或格式化时确定的,并非动态调整的,说法Ⅰ错误。每个文件系统都有自己的 inode 表,不同文件系统的 inode 表是独立的,说法Ⅲ错误。因此答案为选项B。

返回题目

Q7

速对表原值: B

详细解析标注: C

磁盘索引节点:是指存放在磁盘上的索引节点。每个文件有一个唯一的磁盘索引节点,包含内容如下图所示。文件的磁盘索引节点中存放文件的固有信息,包括 A 链接计数,B 物理位置和 D 访问权限,而文件的读写指针是单个进程对文件的访问相关的,位于用户级打开文件表中。

原页版面片段(用于核对图表、矩阵或代码)

第4章 Q7 原页片段 第4章 Q7 原页片段

返回题目

审计旁注(非原文):新增校验

速对答案写 B,详细解析写 C;按题意读写指针不在磁盘索引节点中,应为 C。

Q8

速对表原值: C

详细解析标注: C

文件第 518KB 位于第 518 个磁盘块中,直接索引负责第 0-7 块磁盘块管理,2 个 1级索引负责第 8-519 块磁盘块的管理,所以第 518 块磁盘属于 1 级间接索引管理,因此需要先将一级索引块放入内存,再把数据块放入内存,需要两次磁盘 I/O,在内存中修改后再通过一次 I/O 放回磁盘,共 3 次磁盘 I/O。

返回题目

Q9

速对表原值: A

详细解析标注: A

索引节点号编号占 8B,可表示 2^64 个文件。由于树形目录结构中不同目录下文件的文件名可相同,因此在计算文件系统创建文件的上限时只需考虑索引节点个数,其它条件都是对考生的干扰,A 选项正确。

返回题目

Q10

速对表原值: B

详细解析标注: B

引入索引节点后,每个目录项只需要存放文件名和索引节点编号即可。1 个盘块可以存放 1KB/(4B+4B)=128 个目录项,640 个目录项共需占用 640/128=5 个盘块,因此找到对应的目录项平均需要启动(1+2+3+4+5)/5=3 次磁盘;得到目录项后,还需要再启动一次磁盘将对应的索引节点读入内存,故平均需要启动 4 次磁盘。

返回题目

Q11

速对表原值: C

详细解析标注: C

第一版中,目录大小为 256x64B/512B=32 个磁盘块,故检索一个文件平均需要访问(32+1)/2=16.5 次。第二版中,目录大小为 256x(12B+4B)/512B=8 个磁盘块,故检索一个文件的索引节点编号平均需要访间(8+1)/2=4.5 次;读出索引节点编号后,还需访问一次磁盘读出索引节点的内容,因此检索一个文件平均需要访问 5.5 次。因此选 C。

返回题目

Q12

速对表原值: B

详细解析标注: B

A 错误,虽然内存中确实只有一份该文件的内存 inode(被多个进程共享),但文件读写指针不保存在 inode 中,如果保存在 inode 中,多个独立进程对同一个文件的读写就会互相干扰。读写指针保存在系统打开文件表的表项中。

C 错误:内存 inode 比磁盘 inode 包含更多的动态信息,例如:引用计数(记录当前有多少个进程打开了该文件)等。

D 错误:为了提高磁盘 I/O 效率,内存 inode 中的文件大小等属性修改后,通常会先缓存在内存中(变为“脏”inode),由操作系统周期性地写回磁盘,或者在关闭文件时写回,而不是“立即同步更新”。

返回题目

审计旁注(非原文):口径冲突

真实 Unix 与王道两级打开文件表模型不同,备考默认按王道。

Q13

速对表原值: D

详细解析标注: D

D 选项,标准的文件删除操作通常只是将文件占用的磁盘块标记为可用,并移除目录项和回收 FCB/inode。操作系统一般不会立即去物理地擦除或格式化这些磁盘扇区中的数据内容。这样做开销很大,会显著降低删除操作的效率。数据的物理清除通常需要专门的安全删除工具或在后续磁盘块被重新分配给新文件并写入新数据时才会被覆盖。

返回题目

Q14

速对表原值: A

详细解析标注: A

系统调用的标准流程:陷入内核(

⑤) → 检查参数合法性(

②) → 发现缺块,发起I/O 并阻塞进程(

①) → 硬件中断唤醒进程(

③) → 内核将数据从内核缓冲区拷贝到用户空间并返回(

④)。

返回题目

Q15

速对表原值: B

详细解析标注: B

应该是链接计数;

返回题目

Q16

速对表原值: B

详细解析标注: B

Ⅰ 正确:read 系统调用的参数传入的是 fd,内核必须校验它是否打开以及权限。Ⅱ 错误:按名搜索目录是在 open 系统调用时完成的,read 不涉及目录搜索。 Ⅲ 正确:现代操作系统读取磁盘文件时,通常都会先读入内核的页缓存,然后再通过 CPU 拷贝到用户进程的 buffer 中。

返回题目

Q17

速对表原值: A

详细解析标注: A

如果该文件不是首次被打开的话,则不需要从外存载入inode;其次,即使是第一次打开该文件,也是要将该 inode 所在的磁盘块一起读入内存,因为磁盘读取操作以“块(block)”为单位,而不是以“inode”为单位。即使你只需要一个 inode,系统也必须读取整个块,因为磁盘硬件无法直接读取块内的某一部分。磁盘 I/O 无法按字节粒度读取:磁盘硬件只能以块为单位读取或写入数据,无法直接读取块内的某个字节范围。虽然读取整个块会多读一些数据,但现代文件系统通过 缓存机制(如 inode 缓存)避免重复读取。例如:如果后续访问同一磁盘块中的其他 inode,可以直接从内存缓存中获取,无需再次读取磁盘。

返回题目

Q18

速对表原值: A

详细解析标注: A

Ⅰ错误;read 系统调用需要的参数是 read(int fd, void *buf, size_t count),必须打开文件获得 fd 后才能对文件执行读写和关闭操作,因此不需要文件名,需要的是文件描述符;读写指针位于进程打开文件表中,除了文件描述符 fd 和期待读取的字节数以外,还需要指定读入用户空间缓冲区的指针;II 正确;假设进程 P1 执行 read()系统调用,由于该文件的数据不在内存,因此需要通过磁盘 I/O,在对 DMA 控制器设置完传送参数后,便会主动阻塞自己,随后调度程序根据调度策略选择进程 P2 上处理机,进程 P2 执行的过程中,DMA 正在将指定读写区域数据所在磁盘块依次读入内核缓冲区,I/O完成后,DMA控制器便会发出中断请求,进程P2响应该中断请求之后,在该中断服务程序中唤醒进程P1,如果进程 P1 优先级比当前进程优先级高且为抢占式调度,那么在中断返回过程中,便会触发调度让进程 P1 上处理机执行;III 中“直接”有误,需要先将指定读写区域所在磁盘块读入内核空间,然后再根据读写指针和读写字节数将所需数据从内核缓冲区复制到用户空间的缓冲区 buf 中;IV 错误,看 III 的解释;V 错误,读取成功,返回实际读取的字节数因为磁盘、硬盘、U 盘等存储设备基本都是 Flash 块设备,块设备硬件本身有读写限制等特征,块设备是以一块一块为单位进行读写的(一个块包含多个扇区,而一个扇区包含多个字节),一个字节的改动也需要将该字节所在的 block 全部读取出来进行修改,修改完成之后再写入块设备中,所以导致对块设备的读写操作非常不灵活 ;而内存可以按字节为单位来操作,而且可以随机操作任意地址数据,非常地很灵活,所以对于操作系统来说,会先将磁盘中的静态文件读取到内存中进行缓存,读写操作都是针对这份动态文件,而不是直接去操作磁盘中的静态文件,不但操作不灵活,效率也会下降很多,因为内存的读写速率远比磁盘读写快得多。

返回题目

审计旁注(非原文):改解析

HDD 是磁介质,不是 Flash;U 盘/SSD 通常才基于闪存。

Q19

速对表原值: B

详细解析标注: B

A 错误:用户级打开文件表(进程打开文件表)仅保存 fd 到系统级表项的映射指针,不包含读写指针和打开模式。

B 正确:系统级打开文件表(打开文件描述表)为每次 open() 调用创建一个表项,记录该次打开的状态,包括打开模式(访问权限)、读写偏移量、状态标志以及指向内存 inode 的指针。

C 错误:内存索引节点不包含文件名。文件名仅存在于目录项中,一个 inode 可以有多个文件名(硬链接)。

D 错误:目录项只包含文件名和磁盘 inode 编号,不包含文件的访问权限(权限在 inode 中),也不包含指向系统级表的指针。

返回题目

审计旁注(非原文):按王道改答案

王道口径应选 A;原 B 使用 Unix 打开文件描述模型。

Q20

速对表原值: B

详细解析标注: B

I 正确,硬链接 f1、f2 指向同一个 inode,访问权限保存在 inode 中,因此权限相同;修改其中一个的权限,另一个也同步变化;II 正确,f2 由于是 f1 的硬链接文件,因此二者共享同一个内存索引结点;III 正确,fd1 和 fd2 的值分别为两个进程打开文件表中的索引值,因此有可能相同;硬链接计数值和访问计数值不是一回事,二者无关,因此Ⅳ错误;

返回题目

Q21

速对表原值: D

详细解析标注: D

文件系统按名查找打开文件,文件被打开后,系统会为每个打开的文件分配一个文件描述符,用来标识该文件。文件描述符是一个非负整数,可以用来对文件进行读写、定位等操作。因此,对文件的访问采用文件描述符。

返回题目

Q22

速对表原值: C

详细解析标注: C

关闭文件不是删除文件,不会清除磁盘上文件数据块的内容。

返回题目

审计旁注(非原文):有歧义

close 不等于可靠落盘;是否立即 flush 取决于策略。

Q23

速对表原值: C

详细解析标注: C

A 错误。 进程调用 open() 时,系统会查找目录并将对应的索引节点(inode)加载到内存。如果该文件的 inode 已经被其他进程打开过并存在于内存索引节点表中,系统不会新增表项,而是直接复用已有的表项,并将其引用计数加 1。因此“必然新增”是错误的。

B 错误。 不同的进程各自独立调用 open() 打开同一个文件时,内核会在系统级打开文件表中为每一次调用独立创建一个新的表项。每个表项都维护各自独立的读写偏移量和状态标志。因此它们不共享系统级表项,读写偏移量也是相互独立的。

C 正确。 进程调用 fork() 时,子进程会获得父进程用户级打开文件表的一个副本。这意味着父子进程中相同的文件描述符(fd)会指向系统级打开文件表中的同一个表项。由于读写偏移量(file offset)是维护在系统级打开文件表项中的,因此父、子进程对该文件的读写是共享同一个偏移量的,任何一方修改偏移量(如 read、write 或 lseek)都会立刻影响另一方。

D 错误。 硬链接本质上是多个不同的目录项指向磁盘上的同一个索引节点(inode)。内核在解析路径后,最终访问的是同一个磁盘 inode。如果该 inode 已在内存中,则直接复用;即使不在内存中,调入内存后也只有一个内存 inode 表项,绝不会因为硬链接路径的不同而分配多个内存 inode。

返回题目

审计旁注(非原文):口径冲突

原 C 使用 Unix 的 fork 共享打开文件描述语义,不能反推王道。

Q24

速对表原值: D

详细解析标注: D

文件控制块是操作系统为每个文件建立的唯一数据结构,用于管理、控制和按名存取文件,其中包含了文件的全部属性,Ⅰ、Ⅱ正确;文件控制块中通常包含了三类信息,即文件基本信息、存取控制信息与使用信息,Ⅲ正确;文件被首次打开时,只会将该文件对应的 FCB 读入内存,并在打开文件表上做相应记录,并不会将完整的文件内容读人内存,Ⅳ 正确。故正确答案为 D。

返回题目

Q25

速对表原值: B

详细解析标注: B

当多个进程共享同一个文件时,在系统打开文件表中只会有一个表项包含该文件的属性,每个打开该文件的进程都会在其用户打开文件表中拥有一个表项,该表项包含有该进程的文件访问信息,例如当前读写位置等。因此,各进程的用户打开文件表中关于该文件的表项内容是不同的,但系统打开文件表中的表项是相同的。在进程关闭该文件时,系统会删除相应的用户打开文件表项,若此时无其他进程打开该文件,则系统会删除该文件在系统打开文件表中的表项。

返回题目

审计旁注(非原文):内部冲突

本题采用同一文件共享系统表项的王道模型,与本章其他题前后不一。

Q26

速对表原值: B

详细解析标注: B

关闭文件的系统调用格式为 close(fd),调用成功返回 0,失败则返回-1,具体操作如下:

  • 根据文件描述符 fd 找到“进程打开文件表”中对应表项并删除;

  • 系统级打开文件表中的对应表项的访问计数(打开计数)-1  若-1 后不为 0,说明还有其他进程正在使用该文件,直接返回即可; 若-1 后为 0,则需要删除该表项,如果对应的内存索引节点没有修改,直接释放即可,若修改可以根据 OS 的策略决定是否将该 inode 写回外存;

返回题目

Q27

速对表原值: B

详细解析标注: B

进程打开文件时,需要先对比 open()系统调用申请的访问权限(参数 flag)与文件允许的权限,若前者不超过后者权限,则打开文件成功,并且在该进程打开文件表中记录进程打开文件时申请的权限;打开文件之后,用户对文件的操作不能超过自身打开文件时申请的权限,因此Ⅱ错误,如果打开文件时只申请了读权限,那么是不能对该文件进行写操作的;

返回题目

Q28

速对表原值: C

详细解析标注: C

口令指用户在建立一个文件时提供一个口令,系统为其建立 FCB 时附上相应口令,同时告诉允许共享该文件的其他用户。用户请求访问时必须提供相应的口令。这种方法时间和空间的开销不多,缺点是口令直接存在系统内部,不够安全。密码指用户对文件进行加密,文件被访问时需要使用密钥。这种方法保密性强,节省了存储空间,不过编码和译码要花费一定的时间。口令和密码都是防止用户文件被他人存取或窃取,并没有控制用户对文件的访问类型,即口令和密码无法限制用户对文件进行读取、写入、删除或执行。

返回题目

Q29

速对表原值: B

详细解析标注: B

文件的逻辑结构(file logical structure),是指从用户角度出发所观察到的文件组织形式,即文件是由一系列的逻辑记录所组成的,是用户可以直接处理的数据及其结构,它独立于文件的物理特性,又称为文件组织(file organization)。对应的文件通常称为逻辑文件。文件的物理结构,又称为文件的存储结构,是指系统将文件存储在外存上所形成的一种存储组织形式,是用户所看不见的。文件的物理结构不仅与存储介质的存储性能有关,而且与所采用的外存分配方式也有关。无论是文件的逻辑结构,还是文件的物理结构,都会影响系统对文件的检索速度。

返回题目

Q30

速对表原值: D

详细解析标注: D

直接文件,是指可根据给定的关键字直接获得指定记录的物理地址,并不是直接记录了文件的物理地址。换言之,直接文件的关键字本身决定了记录的物理地址。这种由关键字(的值)到记录的物理地址的变换,被称为键值变换(key to address transformation)。哈希(Hash)文件是目前应用最为广泛的一种直接文件。它利用 Hash 函数(或称散列函数)可将关键字变换为相应记录的地址。但为了实现文件存储空间的动态分配,利用 Hash 函数所求得的结果通常并不是相应记录的地址,而是指向某一目录表相应表目的指针,该表目的内容指向了相应记录所在的物理块。

返回题目

Q31

速对表原值: B

详细解析标注: B

文件的顺序存取是指按照逻辑顺序依次存取,B 选项正确。

C 选项错误,文件的物理块号不一定相邻。

返回题目

Q32

速对表原值: D

详细解析标注: D

对于大型文件且需要高速随机访问的场景(如视频点播或大型数据库),多级索引分配通常具有更好的随机访问性能。多级索引结构设计的目标就是为了快速定位到大型文件中任意数据块的位置,通常只需要少数几次磁盘访问(读取必要的索引块)。让我们来分析其他选项:【2013-24】的真题考察了 A 连续结构,但注意真题题目中制定了 CD-ROM 设备,因为 CD-ROM是只读的,文件可以预先优化为连续存放以达到最佳随机播放性能。B 链式结构无法实现快速随机访问。直接索引能够支持极高随机访问速度与文件的修改,但是在大型文件下索引表占用的空间较大。

返回题目

Q33

速对表原值: B

详细解析标注: B

Ⅰ错误,连续分配方式不支持文件长度可变,支持随机访问II 正确,索引分配方式既支持文件长度可变,也支持随机访问III 正确,隐式链接方式中每个盘块最后的区域用于存放下一个盘块的地址,如果盘块损坏,后续的盘块都将丢失IV 错误,混合索引方式为文件分配磁盘空间,由于不同记录需要使用的索引层级不同,读取记录需要的磁盘 I/O 次数不同,例如,A 记录通过 3 级索引找到,B 记录通过 1 级索引找到,磁盘 IO 次数就相差 2 次。综上所述,答案选 B。

返回题目

Q34

速对表原值: A

详细解析标注: A

Ⅰ、Ⅳ正确。I 正确,记录是文件内独立的最小信息单位,一个文件中记录的长度也可以不等,比如变长记录。II 错误,文件的控制信息,即元数据(如文件名、大小、权限、物理位置指针等),通常存储在文件控制块(FCB)或索引节点(inode)中。FCB/inode 通常存放在文件系统的特定区域(如目录区或索引节点区),与文件内容实际存储的数据块是分开的。这样做便于管理和快速获取文件属性,而无需读取整个文件内容。III 错误,文件的物理结构确实有顺序式(连续分配)、链接式和索引式。但是,文件分配表(FAT)是显式链接分配方式中使用的一种数据结构,它记录了文件各盘块之间的链接关系以及盘块的分配状态。它本身不是一种索引结构,更不是单级索引式文件物理结构。索引式文件物理结构是指为文件建立索引块来存放数据块地址。IV 正确,对于非常大的文件,单级索引表本身可能会变得很大。而多级索引会增加访存次数,导致效率下降。

返回题目

Q35

速对表原值: B

详细解析标注: B

顺序结构的文件必须为其分配连续的存储空间,反复增删文件后会产生外部碎片,选择 B 选项。

返回题目

Q36

速对表原值: B

详细解析标注: B

索引分配机制中,当新建一个大小为 0 的空文件,操作系统只需为该文件分配一个文件控制块(FCB/inode)来记录元数据即可(索引信息通常在 inode 中)。此时,FCB/inode 中指向实际数据块或索引块的指针置为空(NULL)。操作系统绝对不会立即在磁盘数据区为其强行分配一个完整的物理索引块来存放“零个指针”,那样会造成极大的磁盘空间浪费。只有当文件真正开始写入数据时,系统才会按需分配物理索引块和数据块。选项 C:隐式链接分配随时可以在链表尾部申请空闲块并挂接上去,支持动态增长且没有外部碎片。但一旦中间某个磁盘块出现物理损坏(坏道),该块内的指针也会随之丢失,导致链条断裂,后续的所有数据块都将无法找回选项 D :在隐式链接分配中,每个物理块需要拿出几个字节(如 4B)存放指向下一块的指针。如果物理块大小是 512B,那么留给用户数据的可用空间就变成了 508B。这会导致用户的逻辑记录无法与物理块对齐,读取和计算都极其麻烦。显式链接分配(FAT)将所有的链接指针从物理块中抽离出来,集中存放在内存中的“文件分配表(FAT)”里。这样物理块的 512B 可以 100% 用来存放用户数据,完美解决了逻辑块与物理块大小不一致的问题,同时还支持了在内存中的随机查找。

返回题目

Q37

速对表原值: C

详细解析标注: C

64GB 的硬盘可划分磁盘块 64GB/4KB=16M 块=2^24 块,盘块号位数即为 24位,占 3B,FAT 的长度为 3Bx16M=48MB,选择 C。

返回题目

Q38

速对表原值: C

详细解析标注: C

连续分配只有 1 个起始地址和长度。链接分配(隐式)只有首尾指针。索引分配需要为每一个文件建立一个包含所有数据块物理地址的“索引表”。如果文件很大,索引表本身也会占用好几个磁盘块。这就是典型的“空间换时间”,增加了额外的存储空间开销。A、B、D 均是错误的描述。

返回题目

Q39

速对表原值: B

详细解析标注: B

一级索引分配方法时文件长度为 10(4KB/4B)4KB=40MB,二级索引分配方法时文件长度为 10(4KB/4B)^24KB=40GB,因此选 B。

返回题目

Q40

速对表原值: B

详细解析标注: B

12 个直接索引指针对应 12 个硬盘块,即文件的前 12x4KB=49152B,9876B<49152B 故位于直接索引指针对应的块中,只需读取磁盘 1 次即可得到文件内容;一级索引指针对应 4KB/4B 块,即 1024x4KB~4000000B,543210B<49152B+4000000B,故需读盘两次,第次得到文件地址,第二次得到文件内容。因此选 B。

返回题目

Q41

速对表原值: D

详细解析标注: D

分区最大长度等于 FAT 表项的寻址范围,FAT 表项中有 30 位用于表示块号,因此分区最大长度为 2^30x4KB=4TB。4GB 分区一共 4GB/4KB=2^20 个块,每一块对应一个 FAT 表项,故 FAT 表共 2^20x4B=4MB。因此选 D。

返回题目

Q42

速对表原值: C

详细解析标注: C

C 错误,文件分配表(FAT)是整个文件系统卷的核心数据结构,它记录了所有盘块的分配状态和文件链。为了提高文件系统的整体性能和快速响应所有文件操作,FAT 通常在文件系统挂载时就被全部或大部分读入内存,并驻留在内存中,而不是在打开单个文件时才读入。如果每次打开文件都去读 FAT,磁盘 I/O 会非常频繁,效率低下。

A 正确,在显式链接(如 FAT 文件系统)中,文件所有盘块的链接信息都集中存放在文件分配表(FAT)中。当需要访问文件的某个特定盘块时,可以通过查找 FAT 表来直接定位到该盘块,而不需要像隐式链接那样从头开始顺序读取每个盘块的指针。虽然不是像索引分配那样直接,但相比隐式链接,它确实支持了更有效的随机访问,并加快了访问速度。

B 正确,FAT 表中的每个条目对应一个磁盘块。通过在 FAT 表项中使用特殊标记(例如,-2 表示空闲,-1 或 EOF 表示文件结束,其他值为下一盘块号),不仅可以链接属于文件的盘块,还可以标识出哪些盘块是空闲未被使用的。因此,FAT 表本身就可以作为一种管理外存空闲空间的数据结构。

D 正确,FAT 的逻辑结构就是一个线性表,其表项序号对应磁盘的物理盘块号。在内存中,这种结构非常适合用一个数组来实现,数组的下标可以直接或通过简单计算对应到盘块号,数组元素的值则表示该盘块的下一个链接盘块号或其状态。

返回题目

Q43

速对表原值: A

详细解析标注: A

420000/1024=410 余 160,因此逻辑块号为 10+256<410,通过二次间接索引,在第 11 个地址中可得到一次间址,由此得到二次间址,再找到物理块号,其块内偏移地址为 160。

返回题目

Q44

速对表原值: D

详细解析标注: D

第 22 个逻辑记录对应第 5(22x100/512=4 余 152)个物理块,即读入第 5 个物理块的数据,由于文件采用的物理结构是链接文件,因此需要从目录项所指的第一个物理块开始读取,依次读到第 4 块才得到第 5 块的物理地址,然后将第 5 块的内容读入内存(启动了 5 次),修改完后,写回磁盘(启动了 6 次)。

返回题目

Q45

速对表原值: A

详细解析标注: A

原 FCB:128B/项,1KB(1024B)/块 → 每块存 8 项。10000 个文件需10000/8=1250 块。最坏情况读 1250 次。新目录项:16B/项,1KB/块 → 每块存 1024/16=64 项。10000 个文件需 ⌈ 10000/64⌉ =157 块(注意向上取整)。最坏情况读 157 次。减少次数 = 1250−157=1093 次。

返回题目

Q46

速对表原值: D

详细解析标注: D

文件的索引节点中共有 16 个块地址项。为了使单个文件的长度达到最大,在理想状态下,这 16 个块地址项应该全部作为一级间接地址使用。计算最大块数:1 个一级间接地址指向一个索引块,该索引块可容纳 512 个磁盘块地址(即对应 512 个数据块)。16 个块地址项全部作为一级间接地址时,总共可以指向的数据块数量为:16 * 512 = 8192 个数据块。计算最大文件大小:每个磁盘块大小为 1024B(1KB),因此文件的最大长度为:16 × 512 × 1024B = 24 × 29 × 210 B =223B = 8MB

返回题目

Q47

速对表原值: C

详细解析标注: C

设置当前工作目录的主要作用是为用户提供一个相对的参照点。当用户需要访问当前目录或其子目录下的文件时,可以使用相对路径名,这比每次都输入从根目录开始的完整绝对路径名要简洁得多,从而方便了用户操作。由于路径名变短,系统在解析路径和查找文件时,搜索范围也可能相应缩小(从当前目录开始查找),从而间接提高了文件定位(检索)的速度。

返回题目

Q48

速对表原值: C

详细解析标注: C

A 正确,目录是操作系统中用于组织和管理文件的一种特殊文件类型,它可以包含文件和其他目录,是文件系统中的一个重要组成部分。

B 正确,在目录中可以创建子目录,并在其中存储其他文件或目录,这样可以使文件系统中的文件组织更加清晰和有序。

C错误,在引入索引节点(inode)的文件系统中,目录项通常包含文件名和与该文件名对应的索引节点号。目录本身是一个包含这些目录项的文件。索引节点是存储文件元数据(如文件大小、权限、物理位置等)的数据结构,它们通常集中存放在磁盘的特定区域(索引节点区)。因此,目录是文件名到索引节点号的映射集合,而不是索引节点本身的有序集合。D 选项,目录中的文件可以通过文件名或路径名来唯一标识,文件名是文件在目录中的名称,而路径名是文件在文件系统中的完整路径。

返回题目

Q49

速对表原值: A

详细解析标注: A

绝对路径(/dirA/dirB/dirC/file.txt): 根目录 / 在内存。查内存中根目录,得到dirA 的磁盘块号,发出 I/O 读入 dirA 数据块(第 1 次)。查 dirA,得到 dirB 的磁盘块号,发出I/O 读入 dirB 数据块(第 2 次)。查 dirB,得到 dirC 的磁盘块号,发出 I/O 读入 dirC 数据块(第 3 次)。查 dirC,找到 file.txt 的 FCB,解析完成。总共 3 次。相对路径(dirC/file.txt): 当前工作目录 /dirA/dirB/ 所在的块已在内存。直接查内存中的当前目录块,得到 dirC 的磁盘块号,发出 I/O 读入 dirC 数据块(第 1 次);查 dirC,找到 file.txt 的FCB,解析完成。总共 1 次。 因此答案选 A。这也完美解释了为什么设置“当前工作目录”能加快检索速度(减少了从头遍历的 I/O 次数)。

返回题目

Q50

速对表原值: C

详细解析标注: C

A 正确,这是树形结构的基本定义。每个节点(目录或文件)有且仅有一个直接前驱(父目录),根节点除外。这种结构保证了系统中每个文件或目录都具有唯一的从根目录开始的路径。

B 正确,为了方便用户操作,文件系统通常支持两种路径名:绝对路径名(从根目录开始的完整路径)和相对路径名(从当前工作目录开始的路径)。

C 错误,树形目录结构的主要优点之一就是允许在不同的目录下存在同名文件。文件名的唯一性仅需在同一父目录内得到保证。例如,用户 A 的目录下可以有一个名为 "report.txt" 的文件,用户 B 的目录下也可以有一个同名的 "report.txt" 文件,它们通过不同的路径名(如 /user/A/report.txt 和/user/B/report.txt)来区分。

D 正确,虽然严格的树形结构要求每个节点只有一个父目录,但为了实现文件共享,操作系统通常会引入链接机制。硬链接使得多个目录项可以指向同一个文件的索引节点(inode),而符号链接(软链接)则创建一个特殊的文件,其内容是指向另一个文件或目录的路径。这些机制使得一个文件在逻辑上可以出现在文件系统的多个位置。

返回题目

Q51

速对表原值: D

详细解析标注: D

A 正确,创建一个新目录时,系统会在其父目录中创建一个指向新目录的条目(目录项),并且会为这个新目录本身分配存储空间,用于存放它将来包含的文件和子目录的信息。

B 正确,对于空目录,删除操作通常比较直接:从其父目录中移除对应的目录项,并回收该目录文件自身所占用的存储空间。

C 正确,“更改当前目录”(如 cd 命令)是一个针对特定进程的概念,它改变了该进程在解释相对路径名时的起点。这个操作不涉及文件系统中文件或目录的实际物理位置或它们之间的链接关系的改变。

D 错误,列出目录内容(即读取目录文件中的文件名和可能的属性列表)通常只需要用户对该目录文件具有读权限(Read permission)。写权限(Write permission)通常是用于在该目录中创建、删除或重命名文件和子目录的。执行权限(Execute permission)对于目录来说,通常意味着允许用户进入(cd到)该目录。因此,仅列出目录内容一般不需要写权限。

返回题目

Q52

速对表原值: C

详细解析标注: C

A 错误,打开文件是将文件的控制管理信息从辅存读到内存;

B 错误,对文件访问由用户访问权限和文件属性共同限制;

D 错误,为了防止系统故障对文件的破坏,可以采用建立副本和定时转储的方法来保护文件,而存取控制矩阵是防止由人为因素对文件造成的破坏。

原页版面片段(用于核对图表、矩阵或代码)

第4章 Q52 原页片段

返回题目

Q53

速对表原值: A

详细解析标注: A

硬链接允许一个文件在文件系统中有多个有效路径名,因为硬链接和原始文件共享同个 inode 号,本质上是同一个文件,但它们在不同的位置(即有效路径名)。软链接相当于文件的快捷方式,并非原文件。而动态链接和静态链接是程序编译相关的术语,与文件路径名无关。

返回题目

Q54

速对表原值: C

详细解析标注: C

硬链接(H)和原文件(F)是平等的,它们在底层的目录项里指向了同一个inode。因此对 H 追加数据,实际上就是对那个共享的 inode 及物理块追加,F 也能立刻看到变成了6KB。软链接(S)相当于 快捷方式,它有自己独立的 inode 和数据块,它的数据块里存的是 F 的路径字符串(选项 D 错误)。因为 F 和 H 共享 inode,删除 F 只是删除了 F 的目录项,硬链接计数减 1(变成 1),物理数据不被释放,读取 H 仍然是 6KB(选项 B 错误)。但是,软链接 S 里面存的是 F 的名字,F 被删后,S 变成了无效链接,再去读取 S 就会报找不到文件的错误(选项 C 正确,A 错误)。

返回题目

Q55

速对表原值: B

详细解析标注: B

Ⅰ错误,软链接(f2)是一个特殊的文件,它有自己独立的索引节点和数据块。其数据块中存储的是它所指向的目标文件(f1)的路径名。它与目标文件 f1 是两个不同的文件,因此不共享索引节点和数据块。硬链接才会共享同一个索引节点。II 正确,当进程通过软链接 f2 打开文件时,操作系统会解析软链接,找到它指向的原始文件 f1,并实际打开 f1。因此:

  • 进程打开 f1 获得 fd1,会在系统打开文件表中创建一个表项,指向 f1 的内存文件对象(如内存 inode)。

  • 进程打开 f2 获得 fd2,操作系统解析 f2 找到 f1 后,实际上也是打开了 f1。因此,fd2 对应的系统打开文件表表项也会指向与 fd1 相同的那个 f1 的内存文件对象。

  • 每个 open 操作都会在进程的用户打开文件表中创建一个新的条目,并可能在系统打开文件表中创建一个新的条目(如果该文件首次被系统打开)或增加现有条目的引用计数。这里由于是两个独立的打开操作(即使最终指向同一个文件),它们在系统打开文件表中会有各自的表项(或者共享一个表项但引用计数增加,关键是它们最终都指向同一个文件在内存中的表示)。更重要的是,这两个文件描述符最终都指向了同一个被打开的文件实例。

Ⅲ正确,每个文件描述符(fd1 和 fd2)在进程的用户打开文件表(或文件描述符表)中都有自己的条目,这些条目中包含了各自独立的文件读写指针(也称文件位移量)。因此,即使 fd1 和 fd2 最终指向的是同一个磁盘文件(通过软链接解析),两个进程通过各自的文件描述符对文件进行读写时,它们的文件读写位置是独立维护的,互不影响。

Ⅳ错误,软链接 f2 存储的是 f1 的路径名。如果原始文件 f1 被删除,那么 f2 所指向的路径就失效了(成为一个悬空的或坏的链接)。此时,尝试通过 f2 访问文件将会失败,无法访问到原文件的内容。综上所述,选 B。

返回题目

审计旁注(非原文):按王道改答案

按王道 II 错、III 对,应选 C;原答案 B 使用 Unix 模型。

Q56

速对表原值: D

详细解析标注: D

硬链接和原文件共享一个 inode,而软链接是一个新的 link 文件,有自己 inode。因此,本题中一共有三个 inode:文件 F1 的 inode1、文件 F1 的软链接 F3 的 inode2,软链接 F3 的软链接 F5 的 inode3。inode1 由 F1,F2 共享,原计数值为 2,现删除 F1,计数值-1,变成 1,故Ⅰ正确。F4 是 F3 的硬链接,故 F3 和 F4 共用 inode2,所以 F3、F4 的计数值都是 2,Ⅱ正确、Ⅲ错误。最后 F5 的 inode3 没有其他硬链接,所以计数值为 1,故Ⅳ正确。文件的所有者 owner 即使在创建者删除该文件后,只要该 inode 的计数值不为 0,owner 都是创建者,因此用户 A 删除后,inode1 的现在所有者还是用户 A,故Ⅴ错误。F3 是 F1 的软链接,保存的是 F1 的地址,当 F1 删除后,在用户 A 的对应目录下的目录项被删除,F3 自然找不到对应文件,故不能正常打开文件,Ⅵ错误。最后,有的文件系统不支持inode,如FAT系统,并且就算是两个支持inode结构的文件系统之间,硬链接也不能跨文件系统使用,因为每个文件系统各自维护自己 inode 数据结构和列表,故 F2 不能跨文件系统使用,软链接 F3 存的是文件路径,是可以跨文件使用的,Ⅶ正确。

返回题目

Q57

速对表原值: A

详细解析标注: A

f2 是 f1 的硬链接,指向同一个磁盘文件索引节点,因此两个文件的打开操作共享同一个内存索引节点和系统级打开文件表的表项,A 正确。P1 和 P2 打开同一个文件的文件访问权限可能有所不同,B 错误。f3 是 f1 的软链接,并不指向 f1 对应的文件索引节点,因此不参与该节点的链接计数,删除 f3 不影响 f1 的链接计数,C 错误。读取 f1 只需要传入 f1 在 P1 中的文件描述符 fd1,并不需要其文件名,因此 D 错误。

返回题目

审计旁注(非原文):内部冲突

解析又称同一文件共享系统表项,与本章若干题采用的模型冲突。

Q58

速对表原值: C

详细解析标注: C

这是硬链接的逻辑。软链接文件的 inode 指向的是它自己的数据块,而该数据块里存放的只是一个路径字符串。它对目标文件的引用是通过“路径解析”间接完成的,绝非指针直连。B. 正确 ,如果软链接的 inode 和数据块(路径信息)都已经在内存缓存中,那么通过软链接访问目标文件时,额外的磁盘 I/O 开销可能为 0,此时总的磁盘 I/O 次数与通过硬链接访问可能相同。题目说的是"可能相同",并非"一定相同",因此该说法成立。

返回题目

Q59

速对表原值: B

详细解析标注: B

A 正确,引导块是文件系统分区的第一个块(或若干块),其中存放了引导加载程序(bootloader)的代码。当计算机启动时,会执行引导块中的代码,进而加载操作系统内核。

B 错误,超级块确实包含了文件系统的关键元数据,如文件系统类型、块(簇)大小、inode 总数、数据块总数、空闲块和空闲 inode 的数量等信息。然而,为了文件系统的可靠性和容错性,超级块通常会在磁盘上有多个副本(备份)。主超级块通常位于文件系统的固定位置,而备份超级块则分布在文件系统的其他位置。如果主超级块损坏,系统可以尝试从备份中恢复。因此,“每个文件系统只有一个超级块”的说法是不正确的。

C 正确,在类 UNIX 文件系统中,索引节点区是一块专门用于存储所有文件和目录的索引节点(inode)的区域。每个 inode 包含了文件的属性(如权限、所有者、大小、时间戳)和指向存储文件内容的数据块的指针(直接指针、间接指针等)。

D 正确,数据区是文件系统中用于存储文件实际数据内容的部分。操作系统需要管理数据区中的空闲磁盘块,以便在创建或扩展文件时进行分配。常用的空闲空间管理方法包括位示图(bitmap)、空闲链表或成组链接法等。

返回题目

Q60

速对表原值: D

详细解析标注: D

A 错误。文件系统除了数据存储区外,还有引导块、超级块、索引结点区等结构,而且磁盘本身还有一定的冗余空间。文件系统的容量指文件系统可以管理的空间大小,一般小于其所在的磁盘容量。

B 错误,文件系统中单个文件的大小还受限于系统文件大小限制、文件物理结构的限制(如采用混合索引其可用地址数)等。

C 错误,一个文件系统可以管理多个磁盘自然也可将数据放在多个磁盘上。

返回题目

Q61

速对表原值: B

详细解析标注: B

类比行优先矩阵存储,行号=4567/32=142,列号=(4567%32)=23,故选 B。

返回题目

Q62

速对表原值: B

详细解析标注: B

为了适应磁盘容量不断增大的需要,当进行盘块分配时,不再以盘块而以簇为基本单位,簇应包含的扇区数量与磁盘容量的大小直接相关。以簇为基本分配单位的优点如下:能适应磁盘容量不断增大的情况,减少 FAT 表的表项数(在相同的磁盘容量下,FAT 表的表项数与簇的大小成反比),使 FAT 表占用更少的存储空间,减少访问 FAT 表的存取开销。

返回题目

Q63

速对表原值: A

详细解析标注: A

位示图是利用二进制的一位来表示磁盘中的一个盘块的使用情况。一共需要40GB/4KB=10M 个磁盘块 表示这些磁盘块需要 10Mb/8b=1280KB。

返回题目

Q64

速对表原值: D

详细解析标注: D

在成组链接法中,将空闲块分成若干组,每 100 个空闲块为一组,每组的第一空闲块登记了下一组空闲盘块号和空闲块总数。第一组称为空闲盘块号栈。

返回题目

Q65

速对表原值: B

详细解析标注: B

位示图中,0 ~ 31 在 0 号字,32 ~ 63 在 1 号字,64 ~ 95 在 2 号字,96~127 在 3 号字,所以块号 100 在 3 号字中,3 号字的 0 号位是 96,1 号位是 97,依此类推,块号 100 在 4 号位中。另解,块号为 100 的内存块对应的位示图字号为 100DIV32 = 3,位号为 100 MOD 32 = 4,即字号为 3,位号为 4。选择 B 选项。

返回题目

Q66

速对表原值: C

详细解析标注: C

A描述的是空闲链表法,B描述的是位示图法,D选项表示的是空闲表法。只有C选项描述的是成组链表法,每个空闲块记录一组空闲块编号,并指向下一组,块中第一个数表示这个块记录的空闲块数量,随即用一个栈S.free来记录空闲块号,第一个数其实就是栈的指针。如下图所示:

原页版面片段(用于核对图表、矩阵或代码)

第4章 Q66 原页片段

返回题目

Q67

速对表原值: C

详细解析标注: C

C 错误,空闲链表法分为空闲盘块链和空闲盘区链,后者可以把连续的空闲盘块合并成一个区,支持合并,同时也减短了链表长度,通常采用首次适应算法,加快对连续盘块的分配,缺点是分配和回收略复杂。

返回题目

Q68

速对表原值: D

详细解析标注: D

回收两个磁盘块,原本超级块记录了 3 个空闲盘块号,但是现在还需要回收 2个,超出了上限 4,所以应该将 985 入栈后,当前超级块的 3 改成 4,然后还需要回收 211,此时超级块满了,那么把超级块的内容复制到盘块 211,然后超级块改为[1,211]。接着分配 3 个空闲磁盘块给进程,当前超级块只有一个 211,所以把原来满了的块的内容重新复制到超级块,然后把 211 分配给进程,然后当前超级块里面是[4, 11, 408, 666, 985],依次把 985, 666 分配给进程,至此已经分配了 3 个空闲磁盘块,超级块的内容为[2, 11, 408]。此处推荐观看成组链接法视频,分配和回收都讲得很清晰:https://www.bilibili.com/video/BV1HE41167kj?vd_source= 130baaebbac315d959b263869c0a7b39

返回题目

Q69

速对表原值: C

详细解析标注: C

虚拟文件系统(VFS)为应用程序提供了一个统一的接口来访问不同的底层文件系统,使得应用程序不需要关心底层文件系统的具体类型。故案为选项 C。

返回题目

Q70

速对表原值: C

详细解析标注: C

虽然许多操作系统都实现了虚拟文件系统(VFS)这一概念,但它们的实现是不同的。VFS 的具体实现会因操作系统而异。故答案为选项 C。

返回题目

Q71

速对表原值: D

详细解析标注: D

A 正确:超级块对象代表一个特定的已挂载的文件系统。VFS 超级块是各种具体文件系统在安装(挂载)时在内存中建立的,只存放在内存中;而具体文件系统的超级块(如 Ext4超级块)则存放在磁盘上。

B 正确:索引节点对象代表一个特定的文件。其中,VFS 的索引节点(vnode,又称动态节点)只存在于主存(内存)中;而具体文件系统的原始索引节点(inode)是一种静态结构,既存放在磁盘上,也会在需要时调入主存。

C 正确:目录项对象代表一个路径的组成部分(目录名或文件名)。在硬链接的场景下,由于多个不同的文件名(即不同的路径或目录项)可以指向同一个物理文件,因此同一个唯一的索引节点(inode)对象可以对应多个不同的目录项(dentry)对象。

D 错误:文件(file)对象代表一个与进程相关的打开的文件。由于多个进程可以同时打开和操作同一个文件,因此在内存中会存在多个对应的文件(file)对象(每个进程各有一个),但它们所对应的索引节点(inode)和目录项是唯一的(即多对一)。选项中的表述恰好颠倒了这一关系。

返回题目

Q72

速对表原值: B

详细解析标注: B

选项 B 描述了文件挂载的正确概念,即将一个目录连接到另一个目录,使其成为目录树的一部分,并与外部文件系统关联,以便访问和操作其中的文件和目录。通过挂载,外部文件系统中的文件和目录可以在目录树中访问和操作。

返回题目

Q73

速对表原值: D

详细解析标注: D

Unix 中,每个存储设备都有自己的文件系统,但访问设备中文件时需要先将设备文件系统以目录形式挂载在操作系统的主目录树下;访问时也要在文件路径名中加上挂载点因此选 D。

返回题目

Q74

速对表原值: C

详细解析标注: C

A 错误,在采用 inode 机制的文件系统中,目录项只包含“文件名”和“inode号”。文件的实际元数据(如文件大小、读写权限、物理块指针等)全部存放在 inode 中。因此,文件大小的改变根本不需要、也不会去更新目录项。

B 错误,硬链接的本质是多个目录项指向内存/磁盘中的同一个 inode。F1 和 F2 根本没有“各自独立”的 inode,它们在底层完全是同一个文件,共享唯一的 inode。

C 正确,文件从 4KB 增长到 8KB,刚好跨越了一个新的盘块(4KB),因此系统会分配一个新的物理数据块。系统会将新块的物理地址记录在这个共享的 inode 中,并把 inode 里的文件大小更新为 8KB。因为 F1 和 F2 指向的是同一个 inode,所以通过 F1 写入的数据和修改的属性,对 F2 是立刻、完全可见的。

D 错误,删除 F1 本质上只是在目录中删除了 F1 的目录项,并将该共享 inode 中的“硬链接计数”减 1(从 2 变成 1)。由于 F2 的目录项依然存在(硬链接计数不为 0),操作系统绝对不会释放该 inode 和物理数据块。因此,F2 依然可以正常读取到 8KB 的数据。

返回题目

Q75

速对表原值: D

详细解析标注: D

注意打开文件需要把文件对应的 inode 读入内存,文件本体内容在 read 等操作才会读入内存。在最坏情况下,目录项线性检索且目标在最后。各目录默认只占 1 个磁盘块。根据缓存情况:

①绝对路径:根目录块在内存,需读取 dirA 的 inode、dirA 目录块、dirC 的 inode、dirC 目录块及file.txt 的 inode,共 5 次磁盘访问。

② 相对路径:当前目录 dirB 的 inode 和内容已缓存,直接从 dirB 找 dirC,需读取 dirC 的 inode、dirC 目录块及 file.txt 的 inode,共 3 次磁盘访问。

返回题目

审计旁注(非原文):作废

未给目录项数量或目录占块数,无法唯一计算。

Q76

速对表原值: A

详细解析标注: A

在 VFS 及常规文件系统设计中,数据结构分为持久化存储(磁盘)和内存缓存两类。

  • 仅存在于内存的:VFS 超级块对象、VFS 索引节点(vnode)、目录项(dentry)、进程打开文件表、系统打开文件表等,都是纯内存结构,磁盘上没有直接对应的独立数据结构(磁盘上有数据内容,但格式不同)。

  • 存在于磁盘或与磁盘同步的:磁盘超级块、磁盘索引节点(Disk inode)、磁盘位示图等是持久化存储的数据结构。

返回题目

Q77

速对表原值: B

详细解析标注: B

B 正确:在该文件系统中,一个文件必须对应一个唯一的 inode(索引节点)。因此,inode 区域的总块数乘以每个磁盘块能容纳的 inode 数量,就直接决定了该文件系统中最多可以创建的文件总数 。

A 错误:位图(bitmap)是用来管理和记录数据区磁盘块的使用情况的。位图的总块数(即总 bit数)决定的是该文件系统所能支持的数据区磁盘块数量上限 ,而不是最多能创建的文件数。

C 错误:超级块通常在文件系统挂载时就被完整读取并缓存到内存中。后续的文件读写等常规操作会直接使用内存缓存中的超级块信息,无需每次都重复读取磁盘。只有在涉及元数据修改(如分配/回收空间)时才在适当时机写回磁盘以保持一致性。

D 错误:低级格式化(物理格式化)是在磁盘物理表面划分扇区、建立磁道等硬件层面的操作。而建立文件系统结构、写入超级块(superblock)元数据信息、初始化空闲空间管理表格等操作 ,均是在逻辑格式化(高级格式化/新建文件系统)阶段完成的。

返回题目

Q78

速对表原值: D

详细解析标注: D

A、B、C 正确:空闲表法通过连续区间记录空闲块,回收时要合并相邻接的空闲块,仅当有少量空闲区时效果较好,不适合碎片过多的场景 。

D 错误:如果回收区前后都有相邻空闲区,系统会将前、后、回收区三者合并为一个更大的连续空闲区,空闲表项的总数不增反减(减少1 个表项)。

返回题目

Q79

速对表原值: C

详细解析标注: C

A 错误:空闲盘块链法回收每个盘块时,都需要先读入内存修改其指针再写回磁盘,磁盘 I/O 开销很大 。

B 错误:位示图法非常节省空间,在分配回收时,内核通常只需根据需要读入指定位所在的单个磁盘块即可,不需读入整个位图,I/O 次数很少。

C 正确:成组链接法将当前 0 号分组常驻内存超级块,只有当分组分配光或回收满溢时才进行一次磁盘 I/O 读写索引块,效率极高。

D 错误:空闲表法在大型文件系统中表项极大,无法全部常驻内存,且不适合大型文件系统。

返回题目

Q80

速对表原值: B

详细解析标注: B

成组链接法中,超级块中常驻有一组空闲盘块号(通常称为分组 0)。当分组 0中仅剩唯一一个盘块号时(即 N = 1),说明这是当前分组内最后一个可分配的盘块 。这个盘块在物理上具有双重身份:它既是一个普通的空闲块,同时又是存放了下一组空闲盘块号信息的索引块。 为了维持空闲盘块链不发生断裂,系统不能直接将其抹除或直接分配出去。具体的处理顺序如下:

①读取并复制信息(磁盘 I/O):由于该索引块中存放着下一组可用的盘块号信息,系统必须先通过磁盘 I/O 将该磁盘块的内容读入内存中。

②更新超级块:将该块中记录的下一组盘块号和块数依次读入(复制)到超级块的空闲盘块栈中,使其成为新的分组 0 。

③分配盘块:在确保下一组盘块信息已经安全“接班”进入超级块后,系统才会将原超级块栈底对应的这 1 个索引块正式分配给申请的进程去使用。因此,系统的操作顺序必须是先读入、再分配,以确保元数据链条的连续性,选项 B 完全正确。

返回题目

Q81

速对表原值: B

详细解析标注: B

在成组链接法中,内存中的超级块(超级块中的空闲盘块号栈)始终管理着当前最先用于分配或最后被回收的“分组 0” 。当该分组的盘块数量已经达到上限(如本题中的 100 个)时 ,说明超级块的内部栈已经装满了,无法直接在超级块中追加新的盘块号。此时系统回收 1 个新的空闲盘块(假设块号为 X),其具体操作流程如下:

①建立新索引块:由于超级块满了,系统必须开启一个新的分组。新回收的盘块 X 将在物理上作为这个新分组的索引块。

②复制旧分组信息(写磁盘 I/O):为了不让原有的空闲盘块链断裂,系统会启动一次磁盘写操作,将当前超级块中“分组 0”里的所有内容(即这 100 个空闲盘块号以及相关的元数据)完整复制到新回收的盘块 X 中 。

③更新超级块:信息复制完毕后,内核会清空超级块中的旧栈,并将盘块 X 的块号放入超级块中,作为新的“分组 0”的唯一一个盘块号 ()(此时超级块中空闲块计数 N = 1,对应的盘块号就是X)。通过这个过程,原先超级块里的 100 个盘块在物理上被“推”到了外存中,并由新盘块 X 串联管理;而超级块则腾出了空间,可以继续接收后续新回收的空闲盘块。

返回题目