Skip to content

六、文件管理(第69-78题) ​

第69题 ​

下列关于流式文件与记录式文件的叙述中,正确的是( )。

A. 流式文件是字符流序列,无内部结构,记录式文件由若干逻辑记录组成 B. 流式文件必须按记录存取,记录式文件只能按字符存取 C. 流式文件只适用于磁盘,记录式文件只适用于磁带 D. 流式文件的长度固定不变,记录式文件的长度可以任意变化

答案:A

考点定位:六、文件管理——文件的逻辑结构(流式文件与记录式文件),难度★☆☆☆☆,是文件概念部分的基础送分点,国企笔试反复考查。

【结论】 选A。流式文件是无内部结构的字符流序列;记录式文件由若干逻辑记录组成,每个记录有独立标识。

【逐项辨析】

  • A 正确——准确给出两类文件的本质特征:流式文件无内部结构,记录式文件由逻辑记录组成。
  • B 错误——恰好颠倒:流式文件不划分记录,适合按字符流存取;记录式文件按记录存取,不是按字符。
  • C 错误——逻辑结构与存储设备无关,两类文件都可存放在磁盘、磁带等任何介质上。
  • D 错误——两类文件的长度都可随内容增减而变化,长度固定不是区分标准。

【知识点】 文件的逻辑结构指用户视角下文件的组织形式,与物理存储无关:

特征流式文件(无结构文件)记录式文件(有结构文件)
内部结构无,视为连续字符流由若干逻辑记录组成
记录标识无有(记录号或关键字)
存取单位字节或字符记录
典型应用文本文件、源程序、可执行文件数据库文件、信息管理系统
灵活性高,可任意读写任意长度按记录处理,便于检索
系统支持Unix/Linux等多数通用系统早期OS/360,数据库系统

流式文件管理简单、灵活,是现代通用系统的主流形式;记录式文件便于按记录进行增删改查,常见于数据库与事务处理系统。

【推导过程】 两类文件的用户视图对比:

流式文件(如hello.c):
-----------------
#include <stdio.h>
int main() {
    printf("hello");
    return 0;
}
-----------------
用户眼中: 连续的字节流,无记录边界。

记录式文件(如学生表.stu):
-----------------
| 记录号 | 学号 | 姓名 | 成绩 |
|   1   | 001 | 张三 |  85  |
|   2   | 002 | 李四 |  90  |
|   3   | 003 | 王五 |  78  |
-----------------
用户眼中: 由3条定长记录组成,可按记录号直接定位第2条记录。

【记忆锚点】 口诀——“流式无结构像水流,记录有结构像表格”。

【易混对比】

对比维度逻辑结构物理结构
定义用户眼中的文件组织磁盘上的实际存放方式
关注点数据如何组织数据如何存储
典型类型流式、记录式连续、链接、索引
是否独立于设备是否(与磁盘块大小相关)

换个问法:“数据库文件通常采用什么逻辑结构?”——采用记录式文件结构,因为数据库天然以记录(行)为单位组织数据。与第70题(文件物理结构)连考——第69题是“用户怎么看”,第70题是“磁盘怎么存”。

【自测】 某工资管理系统中,职工工资文件每条记录包含职工号、姓名、基本工资、奖金,记录长度为128字节。该文件属于什么逻辑结构?若用文本编辑器打开看到一串连续字符,又属于什么逻辑结构?

答:工资文件在系统中是记录式文件(有结构,按记录处理);用文本编辑器打开时,编辑器将其视为流式文件(无结构字符流)。同一文件可被不同程序以不同逻辑结构看待。〈出处:大厂面试高频〉

【易错提醒】 ①不要把逻辑结构与物理结构混为一谈,逻辑结构是用户视角,物理结构是磁盘存放方式。②记录式文件的关键特征是“有逻辑记录”,不是“记录长度固定”,变长记录同样属于记录式。③源程序文件、文本文件是典型流式文件,数据库文件是典型记录式文件,记住例子即可快速判断。


【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 A,以题干选项为准)

第70题 ​

下列关于连续分配、链接分配与索引分配对随机访问支持的叙述中,正确的是( )。

A. 连续分配支持随机访问,链接分配也天然支持随机访问 B. 索引分配因为需要读索引块,所以完全不支持随机访问 C. 连续分配支持随机访问,链接分配一般只适合顺序访问,索引分配支持随机访问 D. 三种分配方式都只能顺序访问,随机访问必须依靠索引顺序文件实现

答案:C

考点定位:六、文件管理——文件的物理结构(连续分配、链接分配、索引分配),难度★★☆☆☆,是互联网笔试与国企笔试反复出现的对比型考点。

【结论】 选C。连续分配支持随机访问;链接分配必须沿指针顺序查找,一般只适合顺序访问;索引分配通过查索引表直接定位物理块,支持随机访问。

【逐项辨析】

  • A 错误——连续分配确实支持随机访问,但链接分配必须沿指针逐块遍历,不能天然支持随机访问。
  • B 错误——索引分配查一次索引表即可获得物理块号,恰恰是支持随机访问的典型方式,“完全不支持”属于全称式错误。
  • C 正确——三种分配方式在随机访问支持上的结论与实际完全一致。
  • D 错误——连续分配与索引分配都支持随机访问,并非只能顺序访问。

【知识点】 文件的物理结构指文件在外存上的实际存放方式,三种基本方式特点如下:

特性连续分配链接分配索引分配
存储方式相邻物理块连续存放离散存放,块间用指针链接离散存放,索引块记录块号映射
随机访问支持(起始块号+偏移直接计算)不支持(需顺序沿链查找)支持(查索引表得物理块号)
顺序访问支持支持支持
动态增长困难(需连续空间)容易(动态链接新块)容易(动态扩展索引表)
外部碎片有无无
空间开销低(只需起始块号和长度)低(每块留指针空间)中(需额外索引块)
可靠性高低(指针损坏则链断)中(索引块损坏则全丢)

连续分配适合长度固定、只读的文件;链接分配适合顺序处理的大文件;索引分配兼顾随机访问与动态增长,是现代文件系统(如Unix inode)的主流方案。

【推导过程】 假设文件占5个逻辑块(0~4),分别用三种方式存放,对比访问逻辑块3的过程:

连续分配:
  起始块号=10,块数=5
  逻辑块3 -> 物理块 = 10 + 3 = 13
  直接定位,1次磁盘I/O。

链接分配:
  首块=20,每块末尾存下一块指针
  20 -> 35 -> 8 -> 12 -> 47
  逻辑块3 -> 从20出发,沿链走3步到12
  需4次磁盘I/O(读20、35、8、12)。

索引分配:
  索引块=60,内容:[90, 15, 77, 22, 50]
  逻辑块3 -> 查索引块第4项(从0计) -> 物理块22
  需2次磁盘I/O(读索引块+读数据块)。

【记忆锚点】 口诀——“连续可随机,链接只能顺,索引可随机”。

【易混对比】

概念逻辑结构物理结构
视角用户视角系统视角(磁盘层面)
问题数据如何组织数据如何存放
是否可独立选择是是
组合示例流式文件 + 索引分配 = 常见文本文件记录式文件 + 连续分配 = 数据库表(早期)

换个问法:“Unix文件系统的inode属于哪种物理结构?”——属于索引分配的变体(多级索引),直接块支持小文件快速访问,间接块支持大文件。与第69题(文件逻辑结构)连考——第69题回答“用户怎么看”,第70题回答“磁盘怎么存”,两者共同决定文件的完整形态。

【自测】 某文件系统采用链接分配,每个磁盘块大小为1KB,其中4字节用于存储指针。若一个文件大小为4092字节,请问该文件需要占用多少个磁盘块?若改为索引分配(索引项4字节),又需要多少个磁盘块(含索引块)?

答:链接分配时,每块可用数据 = 1024 - 4 = 1020字节。4092 ÷ 1020 = 4.01…,并不整除:4 个满块只能存 1020 × 4 = 4080 字节 < 4092,余下 12 字节还要占 1 块,故需 5 个数据块。索引分配时,数据块数 = ceil(4092 / 1024) = 4块,再加 1 个索引块,共 5 个块。〈出处:408真题同型题〉

【易错提醒】 ①记忆口诀:连续可随机、链接只能顺、索引可随机。②链接分配的缺点是随机访问性能差且指针占空间,不是“不能存储大文件”。③索引分配多一次读索引块的开销,但这是额外时间代价,不等于不支持随机访问。


【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 C,以题干选项为准)

第71题 ​

下列关于 Unix 文件系统 inode 中索引结构的叙述中,正确的是( )。

A. Unix 的 inode 中只保存直接指针,不支持间接指针,因此单文件大小受限 B. Unix 的 inode 通常含多个直接指针和一级、二级、三级间接指针,小块文件用直接指针访问最快 C. Unix 的 inode 中的间接指针指向的是数据块,直接指针指向的是索引块 D. Unix 的 inode 必须为每个文件预留全部间接指针所覆盖的磁盘块,否则无法访问

答案:B

考点定位:六、文件管理——多级(混合)索引结构与Unix inode,难度★★☆☆☆,是互联网笔试高频的索引结构考点,国企笔试中多以概念判断形式出现。

【结论】 Unix inode 采用直接指针+多级间接指针的混合索引结构,选 B。小文件用直接指针访问无需跳转索引块,速度最快;大文件按需启用间接指针,兼顾容量与效率。

【逐项辨析】

  • A 错误——inode 并非“只保存直接指针”,恰恰相反,正是通过引入一级、二级、三级间接指针才突破单文件大小限制。
  • B 正确——12 个直接指针加一/二/三级间接指针是 Unix 经典设计,直接指针跳过索引块直接定位数据块,小文件访问最快。
  • C 错误——指向关系完全说反:直接指针指向数据块,间接指针指向索引块(索引块中再存放指针表)。
  • D 错误——间接指针采用按需分配,文件未增长到对应大小时不会预分配索引块,更不会预留全部空间。

【知识点】 inode 混合索引结构将文件控制块中的地址项分为两类:

指针类型指向对象适用场景访问开销
直接指针(如 12 个)数据块小文件的前 12 块最低,无需索引块
一级间接指针索引块(块内为数据块指针表)中等文件读 1 次索引块
二级间接指针索引块(块内为一级索引块指针表)大文件读 2 次索引块
三级间接指针索引块(块内为二级索引块指针表)超大文件读 3 次索引块

若磁盘块大小为 4 KB,每个块号占 4 B,则一个索引块可容纳 1024 个指针。直接指针可寻址 12 x 4 KB = 48 KB;一级间接可额外寻址 1024 x 4 KB = 4 MB;二级间接可额外寻址 1024² x 4 KB = 4 GB;三级间接可达 1024³ x 4 KB = 4 TB。

【推导过程】 inode 多级索引结构示意(以 12 直接 + 1 一级 + 1 二级 + 1 三级为例):

                    +------------------+
                    |     inode        |
                    |  +------------+  |
                    |  | 直接指针 0 |-----> [数据块 0]
                    |  |    ...     |  |
                    |  | 直接指针11 |-----> [数据块 11]
                    |  +------------+  |
                    |  | 一级间接   |-----> [索引块 A]
                    |  |   (指针)   |        | 0..1023 |
                    |  +------------+        +--> [数据块 12..1035]
                    |  | 二级间接   |-----> [索引块 B]
                    |  |   (指针)   |        | 0..1023 |
                    |  +------------+        +--> [索引块 B0..B1023]
                    |  | 三级间接   |              +--> [数据块 ...]
                    |  |   (指针)   |
                    +--+------------+--+

【记忆锚点】 口诀——“直接最快不跳转,一级二级按需上,三级兜底容量大,小文件快大文件扛”。

【易混对比】

对比维度inode 多级索引多级目录结构
作用对象单个文件的数据块寻址多个文件的命名组织
树形含义索引块指向数据块或下一级索引块目录项指向子目录或文件
是否解决重名否是,不同目录下可同名

换个问法:“若某系统 inode 含 10 个直接指针、1 个一级间接、1 个二级间接,块大小 1 KB,块号 2 B,求最大文件长度?”——答:直接 10 KB + 一级 512 KB + 二级 256 MB。

【自测】 某文件系统 inode 设 10 个直接指针、1 个一级间接、1 个二级间接,块大小 4 KB,每个指针 4 B。文件大小为 40 KB 时需要几次磁盘 I/O 才能读完全部数据(假设 inode 已在内存)?

答:10 次。40 KB 恰好占 10 个数据块,全部落在直接指针范围内,无需读取索引块,每块 1 次 I/O 共 10 次。〈出处:408 真题同型题〉

【易错提醒】 ①直接指针指向数据块,间接指针指向索引块,这是最容易搞反的一点。②多级索引的意义在于用少量指针项支撑很大的文件,不要与“多级目录”混淆。③本考点只需记住结构与“直接指针最快”的结论,不要求计算最大文件长度。


【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

  • 连考提示:与第 72 题(树形目录结构)连考 —— inode 管数据块寻址、目录树管命名组织,两者最容易被混着考。

【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 B,以题干选项为准)

第72题 ​

下列关于文件控制块(FCB)与树形目录结构的叙述中,正确的是( )。

A. 一个 FCB 中只存放文件名,文件的属性与物理位置由目录项另外保存 B. 树形目录结构中,一个文件可以同时属于多个父目录,且不需要额外机制 C. FCB 用于描述和控制文件,树形目录结构便于分类管理与解决重名问题 D. 树形目录结构不允许用户建立子目录,因此只适用于单用户系统

答案:C

考点定位:六、文件管理——文件目录与 FCB、树形目录结构,难度★☆☆☆☆,是国企笔试与互联网笔试中文件目录部分的必考基础点。

【结论】 FCB 是描述和控制文件的完整数据结构,树形目录结构便于分类管理并解决重名问题,选 C。

【逐项辨析】

  • A 错误——FCB 不是“只存放文件名”,而是包含文件名、物理位置、逻辑结构、物理结构、存取权限、建立时间、文件长度等完整属性的“档案袋”。
  • B 错误——树形目录中一个文件通常只有一个父目录;若要同时属于多个父目录,需要硬链接等特殊机制且必须维护链接计数,并非“不需要额外机制”。
  • C 正确——FCB 的功能定义与树形目录的两大核心优点(分类管理、解决重名)表述准确。
  • D 错误——树形目录恰恰支持任意层级子目录,且广泛用于多用户分时系统,与“单用户”无关。

【知识点】 文件控制块(FCB)是操作系统为每个文件建立的数据结构,用于描述和控制文件。若干 FCB 的集合构成文件目录,目录本身也是一种特殊文件。树形目录结构将目录组织成层次树:

目录结构类型特点重名支持适用场景
单级目录所有文件放在同一目录不支持早期单用户系统
两级目录主文件目录 + 用户文件目录用户间可重名多用户分时系统
树形目录根目录下可建多级子目录不同路径下可重名现代通用操作系统
无环图目录树形基础上增加共享边(硬链接)支持需文件共享的系统

【推导过程】 树形目录结构示意:

                  / (根目录)
                  |
    +-------------+-------------+
    |             |             |
  bin/          home/         etc/
    |             |
    |       +-----+-----+
    |       |           |
   ls     userA/      userB/
           |             |
       +---+---+         +---+
       |       |             |
    doc/    src/         data/
       |       |             |
    a.txt  main.c        log.txt

上图中的 a.txt 与 log.txt 可以同名,因为路径分别为 /home/userA/doc/a.txt 与 /home/userB/data/log.txt,树形结构通过路径隔离消除了命名冲突。

【记忆锚点】 FCB 是“档案袋”——“名位权时长,逻辑物理两结构”(文件名、物理位置、权限、建立时间、文件长度、逻辑结构、物理结构)。树形目录记“层次清、重名行、权限分级管得明”。

【易混对比】

对比维度FCB目录项索引节点(inode)
本质文件的控制结构目录文件中的一条记录文件属性与地址的集中存放区
内容文件名+属性+物理地址文件名+指向 FCB/inode 的指针除文件名外的全部属性+块指针
存在位置早期 FAT 直接存于目录项目录文件中磁盘 inode 区

换个问法:“树形目录中如何解决不同用户对同一文件的命名冲突?”——答:将文件放在不同用户的子目录下,利用路径唯一性区分。

【自测】 在树形目录结构中,文件 /home/Alice/report.txt 与 /home/Bob/report.txt 能否同时存在?为什么?

答:能。二者的绝对路径不同,树形目录允许不同目录下的文件重名,路径是文件的唯一标识。〈出处:国网真题库同型题〉

【易错提醒】 ①FCB 是“文件的档案袋”,记住它至少含文件名、物理位置、属性三类信息。②树形目录的最大优点一是层次清晰便于分类,二是允许不同目录下文件重名。③目录项与 FCB 是同一层次的概念,目录文件中每一项就是一个 FCB。


【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

  • 连考提示:与第 73 题(绝对/相对路径)连考 —— 路径解析的前提正是目录项指向 FCB/inode。

【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 C,以题干选项为准)

第73题 ​

下列关于绝对路径与相对路径的叙述中,正确的是( )。

A. 绝对路径一定比相对路径短,因此访问速度更快 B. 相对路径必须从根目录开始书写,否则系统无法解析 C. 绝对路径与相对路径都可以包含通配符,且通配符只能出现在路径末尾 D. 绝对路径从根目录出发,相对路径从当前目录出发,相对路径依赖当前工作目录

答案:D

考点定位:六、文件管理——绝对路径与相对路径,难度★☆☆☆☆,是国企笔试中考查目录操作与命令使用的高频基础点。

【结论】 绝对路径从根目录出发,相对路径从当前目录出发,相对路径的解析结果随当前工作目录变化,选 D。

【逐项辨析】

  • A 错误——路径长短取决于目录层次深浅,与“绝对/相对”无必然关系;且路径长短主要影响书写,并非决定磁盘访问速度的关键因素。
  • B 错误——“从根目录开始书写”恰恰是绝对路径的定义,相对路径不以根目录开头,而是基于当前目录推导。
  • C 错误——通配符是否可用取决于具体命令(shell)与系统实现,且通配符位置不限于末尾,如 /usr/*/bin 中星号出现在中间目录名处。
  • D 正确——准确界定了两类路径的起点差异,并指出相对路径对当前工作目录的依赖性。

【知识点】 文件路径是操作系统定位文件的字符串描述:

路径类型起点格式示例是否依赖当前目录适用场景
绝对路径根目录 //usr/lib/test.c否,位置唯一确定脚本、系统配置
相对路径当前工作目录./lib/test.c是,切换目录后可能失效项目内部引用、移植
相对路径(上级)当前目录的父目录../bin/ls是跨目录引用

【推导过程】 假设当前工作目录为 /home/Alice,分析同一相对路径在不同当前目录下的解析结果:

当前目录: /home/Alice
相对路径: ../Bob/data.txt
解析结果: /home/Bob/data.txt

当前目录切换为: /home/Alice/doc
同一相对路径: ../Bob/data.txt
解析结果变为: /home/Alice/Bob/data.txt  (若存在)
              或解析失败(若目录不存在)

由此可见,相对路径的语义与当前工作目录强绑定,程序中若发生 chdir() 操作,相对路径可能瞬间失效。

【记忆锚点】 口诀——“绝对根出发,不变最可靠;相对看当前,灵活怕跳槽”(“跳槽”指切换工作目录)。. 是当前,.. 是上级,/ 开头是绝对。

【易混对比】

对比维度绝对路径相对路径
书写长度通常较长通常较短
可移植性目录整体迁移后可能失效项目内部相对位置不变则仍有效
安全性定位明确,不受环境影响依赖当前目录,易被劫持

换个问法:“shell 脚本中先执行 cd /tmp,再执行 cat ./config,会打开哪个文件?”——答:/tmp/config,因为 ./ 始终解析为当前工作目录下的文件,当前目录已变为 /tmp。

【自测】 某进程当前工作目录为 /home/user/project,执行 open(“../config.ini”, O_RDONLY) 时,系统实际打开的文件绝对路径是什么?

答:/home/user/config.ini。.. 表示上一级目录,即从 /home/user/project 回退到 /home/user,再拼接 config.ini。〈出处:大厂面试高频〉

【易错提醒】 ①判断相对路径的关键是“当前工作目录是什么”,换目录后同一相对路径可能失效。②“.”表示当前目录,“..”表示上一级目录,这是相对路径书写的常用记号。③脚本中若可能切换目录,用绝对路径更稳妥。


【知识关联】 本题考点:绝对路径(从根出发)与相对路径(从当前工作目录出发)。同库题群:第69–78题(文件与目录)、第89题(Linux 目录/文件命令);补题相关:补-10(硬/软链接与路径解析)、补-03(FIFO 路径 open)。面试:cd 之后相对路径如何解析?软链接相对谁?

  • 连考提示:与第 72 题(树形目录结构)连考 —— 相对路径随当前工作目录变化,树形目录是它成立的基础。

【拓展延伸】 变式:给 cwd 与相对路径写出绝对路径;路径中 .. 与 . 的语义。Linux:pwd、realpath、readlink -f 解析路径;脚本中慎用未定义 cwd 的相对路径。(本题答案 D,以题干选项为准)

第74题 ​

下列关于硬链接与软链接(符号链接)的叙述中,正确的是( )。

A. 硬链接指向的是路径名,软链接指向的是索引节点,所以删除原文件后硬链接失效 B. 硬链接与原文件共享同一索引节点,删除原文件后硬链接仍可访问,软链接保存的是路径名 C. 硬链接可以跨文件系统建立,而软链接不能跨文件系统建立 D. 删除原文件后,硬链接与软链接都会立即失效,二者的区别仅在于占用空间不同

答案:B

考点定位:六、文件管理——硬链接与软链接(符号链接)的区别,难度★★☆☆☆,是互联网笔试与国企笔试中文件系统部分反复出现的对比考点。

【结论】 硬链接与原文件共享同一 inode,删除原文件后硬链接仍可正常访问;软链接是独立文件,其内容为目标文件路径名,选 B。

【逐项辨析】

  • A 错误——关系完全颠倒:硬链接共享的是索引节点(inode),软链接保存的才是路径名;删除原文件后硬链接不会失效。
  • B 正确——准确概括了硬链接共享 inode(链接计数机制)与软链接保存路径名这两个本质差异。
  • C 错误——跨文件系统恰恰是硬链接的限制(inode 号只在同一文件系统内唯一),软链接因保存路径字符串反而可以跨文件系统。
  • D 错误——删除原文件后硬链接通常仍有效(链接计数 > 0 时),只有软链接会因目标消失而成为悬空链接,二者区别绝非“仅占用空间不同”。

【知识点】 硬链接与软链接的实现机制:

特性硬链接(Hard Link)软链接/符号链接(Symbolic Link)
本质同一 inode 的额外目录项独立文件,内容为目标路径字符串
inode 关系与原文件共享 inode拥有独立 inode
链接计数inode 中 link_count 加 1无链接计数概念
跨文件系统不可(inode 号局内唯一)可以(保存路径字符串)
能否链接目录通常禁止(防止环)可以
删除原文件后只要计数 > 0 仍可访问变为悬空链接,访问报错
占用空间仅多一个目录项需额外 inode 与数据块存路径

【推导过程】 inode 指向关系与删除后的表现对比:

创建硬链接前:
  目录A        inode#100        数据块
  [foo] -----> (link_count=1) --> [Hello]

执行 ln foo bar 后(硬链接):
  目录A        inode#100        数据块
  [foo] -----> (link_count=2) --> [Hello]
  [bar] ------^

删除 foo 后:
  目录A        inode#100        数据块
  [bar] -----> (link_count=1) --> [Hello]  (仍可读!)

-----------------------------------------------

创建软链接:
  目录A        inode#100        数据块
  [foo] -----> (link_count=1) --> [Hello]

  目录A        inode#101        数据块
  [baz] -----> (独立文件)    --> "/path/to/foo"

删除 foo 后:
  目录A        inode#100        数据块
  (已释放,数据可能仍在)

  目录A        inode#101        数据块
  [baz] -----> (悬空)        --> "/path/to/foo"  (路径已失效!)

删除后表现对比表:

操作硬链接表现软链接表现
删除原文件仍能访问,链接计数减 1路径指向消失,访问报错(“No such file or directory”)
删除链接本身链接计数减 1,数据不受影响仅删除软链接文件,原文件不受影响
移动原文件无影响( inode 不变)可能失效(若使用相对路径且目录改变)

【记忆锚点】 口诀——“硬链同 inode 不同名,删原不影响计数撑;软链存路径各独立,原删悬空报不行”。

【易混对比】

对比维度硬链接 vs 软链接inode 多级索引
核心作用文件共享与多命名文件数据块寻址
是否产生新 inode硬链接不产生,软链接产生不涉及

换个问法:“执行 ln a b 与 ln -s a b 后,ls -li 显示的 inode 号有何不同?”——答:ln a b 后 a 与 b inode 号相同;ln -s a b 后 b 拥有新的独立 inode 号。

【自测】 某文件 file.txt 的 inode 链接计数为 3,分别对应原文件名和两个硬链接。若先删除原文件名,再删除其中一个硬链接,此时还能否通过剩余的硬链接访问文件内容?

答:能。删除原文件名后链接计数由 3 减为 2;再删除一个硬链接后计数由 2 减为 1。只要链接计数不为 0,inode 与数据块就不会被释放,仍可通过最后一个硬链接访问。〈出处:408 真题同型题〉

【易错提醒】 ①一句话区分:硬链接是同一个 inode 的多个名字,软链接是一个保存路径名的独立文件。②硬链接计数减到 0 才真正删除数据块。③软链接可以是相对路径,也可以跨文件系统,但目标被删即失效。


【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

  • 连考提示:与第 71 题(inode 多级索引)连考 —— 硬/软链接都建立在 inode 与目录项这套结构上;硬链接共用 inode、软链接另建 inode。

【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 B,以题干选项为准)

第75题 ​

操作系统执行“打开文件”操作时,主要完成的工作是( )。

A. 打开文件的主要工作是把整个文件内容从磁盘读入内存缓冲区 B. 打开文件的主要工作是按路径找到并检查 FCB,再将其读入内存建立打开文件表项 C. 打开文件的主要工作是为文件分配新的磁盘块并写入目录项 D. 打开文件的主要工作是对文件内容进行加锁,防止其他进程读取

答案:B

考点定位:六、文件管理——打开文件(open)操作的主要工作,难度★☆☆☆☆,是国企笔试与互联网笔试中系统调用部分的高频送分点。

【结论】 open 的主要工作是按路径检索目录找到 FCB、做权限检查、将 FCB 复制到内存建立打开文件表项并返回文件描述符,选 B。

【逐项辨析】

  • A 错误——“把整个文件内容从磁盘读入内存缓冲区”是 read 或预读机制的工作,open 不读取文件数据。
  • B 正确——完整概括了路径检索、FCB 查找、权限检查、建立打开文件表项、返回文件描述符这一标准流程。
  • C 错误——分配新磁盘块属于create/write 时的工作,打开已有文件不涉及空间分配。
  • D 错误——加锁是文件共享控制中的可选机制(如 flock),不是 open 的固有职责。

【知识点】 open 系统调用的完整流程:

步骤工作内容涉及的数据结构
1. 路径解析按路径名逐级检索目录目录文件、目录项
2. 权限检查核对用户身份与文件访问权限FCB 中的权限字段
3. 加载 FCB将磁盘 FCB 复制到内存内存 inode/FCB 缓冲区
4. 建立表项在系统打开文件表中登记系统级打开文件表
5. 返回描述符向进程返回文件描述符 fd进程级打开文件表(文件描述符表)

打开文件表分为系统级(整个系统一张,记录文件被打开次数、当前读写指针等)与进程级(每个进程一张,记录 fd 到系统表项的映射)。close 时撤销进程级表项,系统级引用计数减为 0 时才将修改后的属性写回磁盘。

【推导过程】 open 操作流程图:

用户进程            操作系统内核
    |                     |
    |-- open("/a/b.txt") -->|
    |                     | ① 路径解析: / -> a -> b.txt
    |                     | ② 权限检查: UID/GID vs rwx
    |                     | ③ 加载 FCB 到内存
    |                     | ④ 系统打开文件表 +1
    |                     | ⑤ 进程 fd 表分配最小空闲 fd
    |<-- fd = 3 ----------|
    |                     |
    |-- read(fd, buf, n) ->|  ⑥ 按需读数据块
    |                     |
    |-- close(fd) -------->|  ⑦ 撤销表项,刷回属性

【记忆锚点】 口诀——“open 建表不读数,read 才来搬数据;close 撤销写回盘,描述符是通行证”。

【易混对比】

对比维度opencreateread
主要工作检索 FCB,建表,返 fd分配 inode/FCB,分配磁盘块按地址读数据块入内存
是否读数据否否是
是否分配空间否是否

换个问法:“同一个文件被两个进程同时 open,会共享打开文件表中的读写指针吗?”——答:不共享。两次 open 各自在系统打开文件表中新建一个表项,读写偏移记在各自表项里,两个进程各读各的、互不影响;只有经 fork 继承或由 dup/dup2 复制得到的描述符才指向同一表项、共享同一偏移。O_APPEND 与是否共享无关,它只决定每次 write 前是否先把偏移移到文件末尾。

【自测】 进程执行 fd = open(“data.txt”, O_RDONLY) 后,操作系统是否已将 data.txt 的全部内容加载到内存?

答:没有。open 仅完成目录检索、权限检查、建立打开文件表项并返回文件描述符,文件内容仍在磁盘上,只有在后续执行 read 时才会按需将对应数据块读入内存缓冲区。〈出处:大厂面试高频〉

【易错提醒】 ①open 建表、read 读数据,二者不要混淆。②打开文件表有系统级与进程级之分,系统级表被多个进程共享。③close 的作用是撤销打开文件表项,把修改过的属性写回磁盘。


【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

  • 连考提示:与第 76 题(磁盘空闲空间管理)连考 —— open 做的是目录检索与建表,分配空闲块属下一层的事。

【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 B,以题干选项为准)

第76题 ​

下列关于磁盘空闲空间管理方法的叙述中,正确的是( )。

A. 位示图用一串二进制位表示磁盘块的使用情况,0 或 1 分别表示空闲或占用,便于查找连续空闲块 B. 空闲链把空闲块串成链表,因此查找连续空闲块的速度最快 C. 成组链接法把空闲块全部登记在内存中,因此不占用磁盘空间 D. 空闲表法必须与位示图配合使用,否则无法回收磁盘块

答案:A

考点定位:六、文件管理——磁盘空闲空间的管理方法(位示图、空闲链、成组链接、空闲表),难度★★☆☆☆,是国企笔试中存储管理部分较常考的概念题。

【结论】 位示图用二进制位映射磁盘块状态,便于快速查找连续空闲块,选 A。

【逐项辨析】

  • A 正确——位示图的定义(一位对应一块,0/1 表示空闲/占用)与“便于查找连续空闲块”的优点均准确。
  • B 错误——空闲链把空闲块用指针串成链表,需要沿链逐块遍历,查找连续空闲块的效率最低而非最快。
  • C 错误——成组链接法仅在内存中保存当前一组空闲块的信息,其余分组信息存放在磁盘空闲块中,既占磁盘空间也占内存,并非“全部登记在内存”。
  • D 错误——空闲表法可以独立使用,它为外存建立一张空闲表,每个表目记录起始块号与空闲块数,无需与位示图配合。

【知识点】 四种磁盘空闲空间管理方法对比:

方法数据结构分配方式查找连续块适用场景
空闲表法空闲表(起始块号,块数)连续分配较快小容量、连续分配为主
空闲链表法链表(块内指针指向下一空闲块)隐式链接很慢简单系统、教学演示
位示图法位图(1 bit/块)离散或连续快(可顺序扫描位)大容量、需快速分配
成组链接法分组栈(内存存一组,块尾链下一组)离散较快Unix 大型文件系统

位示图的核心优势在于位运算高效:将位号换算为盘块号的公式为 盘块号 = 字号 x 字长 + 位号;回收时只需将对应位清零。现代 CPU 支持字级位扫描指令(如 x86 的 BSF),可一次检测 32/64 个块的状态,查找连续空闲位的速度极快。

【推导过程】 位示图结构示意(假设字长 16 位,共 8 个字覆盖 128 个盘块):

字序号:    0                1                2        ...
          MSB          LSB MSB          LSB
位示图: [1 0 1 1 0 0 1 1 ... 0 1] [0 0 1 0 1 1 0 0 ... 1 0] [...]
          |   | |   |   |     |     |   | |   |   |     |
块号:     0   2 3   5   6    15    16 18 19  21  22   31

状态: 1=已占用, 0=空闲
第 0 字中从 MSB 起:块 0 占用,块 1 空闲,块 2 占用,块 3 占用...
查找连续空闲块时,只需顺序扫描找到连续若干个 0 即可。

成组链接法补充示意(Unix 风格):

内存中的空闲块栈(超级块):
  +------------------+
  |  count = 100     |  <- 本组空闲块数量
  |  free[0] = 305   |  <- 可直接分配
  |  free[1] = 306   |
  |  ...             |
  |  free[99] = 404  |  <- 指向下一组索引块
  +------------------+

块 404 的内容(下一组):
  +------------------+
  |  count = 100     |
  |  free[0] = 405   |
  |  ...             |
  |  free[99] = 504  |  <- 再下一组
  +------------------+

【记忆锚点】 口诀——“空闲表记起始长,链表逐块慢断肠;位示图一扫光,成组链接 Unix 强”。

【易混对比】

对比维度位示图成组链接法空闲链表法
空间开销1 bit/块,极小每组首块存链接,有额外开销每块存指针,有额外开销
分配效率O(n/字长),很快O(1),栈弹出O(1),取链表头
找连续块容易(位扫描)较难(栈内未必连续)很难

换个问法:“位示图中第 i 字第 j 位(从 0 起)对应的盘块号如何计算?”——答:盘块号 = i x 字长 + j。

【自测】 某磁盘共有 1024 个盘块,采用位示图管理,字长为 32 位。若第 5 字第 10 位(均从 0 开始)为 0,则该位对应的盘块号是多少?若将其分配给某文件,需要将其置为多少?

答:盘块号 = 5 x 32 + 10 = 170。分配后应将该位置为 1(表示占用)。〈出处:国网真题库同型题〉

【易错提醒】 ①四种方法的适用场合:空闲表适合连续分配,位示图适合查找连续块,成组链接适合大型文件系统。②位示图中 0/1 的含义要按题设确定,不要想当然。③成组链接法的一个磁盘块兼作栈顶,保存下一组的信息。


【知识关联】 本题考点:磁盘空闲空间管理——位示图、空闲链、成组链接法、空闲表。同库题群:第69–75题(文件结构与目录)、第77–78题(存取与文件物理结构)。面试:Unix 成组链接为何兼顾内存开销与连续分配效率?

  • 连考提示:与第 75 题(open 操作)连考 —— 位示图/链接/索引三种分配方式,决定文件能否随机存取。

【拓展延伸】 变式:给位示图某行列值判断磁盘块占用;空闲链为何难找连续块。Linux:ext 系列块位图+组描述符;df/dumpe2fs/debugfs 可辅助观察。(本题答案 A,以题干选项为准)

第77题 ​

下列关于顺序存取与随机存取的叙述中,正确的是( )。

A. 顺序存取只能用于顺序存储设备,随机存取只能用于随机存储设备 B. 顺序存取必须先算出记录地址再直接定位,因此比随机存取更快 C. 随机存取要求文件物理结构必须是链接分配,否则无法实现 D. 顺序存取按记录先后次序依次读写,随机存取可按任意次序直接读写,磁盘适合随机存取

答案:D

考点定位:六、文件管理——文件的存取方式(顺序存取与随机存取)与适用设备,难度★☆☆☆☆,是国企笔试中文件管理部分的常见概念题。

【结论】 顺序存取按先后次序依次读写,随机存取可按任意次序直接定位读写,磁盘适合随机存取,选 D。

【逐项辨析】

  • A 错误——顺序存取是一种访问方式,并非只能用于磁带等顺序设备;磁盘上的文件同样可以采用顺序方式读写(如从头到尾读日志)。说“只能”过于绝对。
  • B 错误——“先算地址再直接定位”是随机存取的特征,顺序存取不做地址计算,而是按记录顺序依次推进。
  • C 错误——随机存取要求文件物理结构支持直接定位,连续分配和索引分配均可实现随机存取;恰恰是链接分配因需沿指针遍历而不适合随机存取。
  • D 正确——准确描述了两类存取方式的本质差异,并给出磁盘适合随机存取的正确结论。

【知识点】 存取方式与设备、物理结构的对应关系:

存取方式定义地址计算典型设备适配的物理结构
顺序存取按记录先后次序依次读写无需,顺序推进磁带顺序文件、链接文件
随机存取按任意次序直接读写指定记录需计算块地址磁盘连续文件、索引文件

磁盘的随机存取能力源于其可直接寻址的硬件特性:磁头可通过寻道定位到任意磁道,再通过扇区选择直接读取目标数据块,无需经过前置记录。磁带则必须从头卷动到目标位置,只能顺序存取。

【推导过程】 同一文件在不同物理结构下的随机存取能力对比:

文件逻辑结构: 记录 R0, R1, R2, R3, R4...

连续分配:
  [R0][R1][R2][R3][R4]...
    起始块号已知,第 i 块地址 = 起始块 + i
    -> 支持随机存取,可直接计算物理地址

链接分配:
  [R0|next]-->[R1|next]-->[R2|next]-->[R3|next]...
    要访问 R3,必须从 R0 沿指针依次遍历到 R3
    -> 不支持随机存取

索引分配:
  [索引块]: [0]->[R0块], [1]->[R1块], [2]->[R2块]...
    先读索引块,通过下标直接查到第 i 块的物理位置
    -> 支持随机存取(需一次索引块 I/O)

【记忆锚点】 口诀——“顺序一根筋,从头走到尾;随机直达门,算好地址奔。磁盘两手抓,磁带只能顺”。

【易混对比】

对比维度顺序存取随机存取随机访问存储器(RAM)
所属范畴文件 I/O 方式文件 I/O 方式存储器分类
核心含义按逻辑次序依次读可按任意记录号直接定位可按地址直接读写内存单元
速度比较慢(需遍历)快(直接定位)无关

换个问法:“链接分配的文件能否支持随机存取?为什么?”——答:不能。链接分配的每个数据块只保存下一块指针,要访问第 n 块必须从首块开始沿链遍历 n 次,无法直接定位。

【自测】 某磁盘文件采用连续分配,起始块号为 100,块大小 1 KB。若要随机读取文件中偏移量为 5120 B 处的记录,系统应直接访问哪个物理块?

答:块号 = 起始块号 + 偏移量 / 块大小 = 100 + 5120 / 1024 = 100 + 5 = 105。〈出处:408 真题同型题〉

【易错提醒】 ①存取方式讲的是“怎么读”,设备特性讲的是“能怎么读”,两者相关但不等同。②磁带只能顺序存取,磁盘既可顺序也可随机。③随机存取又称直接存取,与存储管理中的“随机访问存储器”含义不同,不要混淆。


【知识关联】 本题考点:顺序存取 vs 随机存取,磁盘适合随机、链接分配难随机。同库题群:第73–76题(路径/空闲空间)、第78题(物理结构)、第79–88题(磁盘与 I/O)。面试:为何数据库/日志系统对存取方式敏感?

  • 连考提示:与第 76 题(磁盘空闲空间管理)连考 —— 顺序存取 vs 随机存取取决于物理分配方式。

【拓展延伸】 变式:磁带偏顺序、磁盘支持随机;连续/索引分配可随机,链接分配须遍历。Linux:read 顺序推进,lseek/pread 随机定位;O_DIRECT/页缓存影响实际路径。(本题答案 D,以题干选项为准)

第78题 ​

下列关于文件系统功能与层次结构的叙述中,正确的是( )。

A. 文件系统的主要功能是管理内存中的程序和数据,与磁盘上的文件无关 B. 文件系统向上提供按名存取等接口,并负责文件的组织、存储、检索与保护,通常分为文件系统接口、文件组织、物理存取等层次 C. 文件系统的层次结构中,逻辑文件系统直接与磁盘驱动程序交互完成物理块读写 D. 文件系统只负责文件的读写,目录管理、存储空间管理由设备驱动程序完成

答案:B

考点定位:六、文件管理——文件系统的主要功能与层次结构,难度★☆☆☆☆,是国企笔试中操作系统概述与文件管理衔接处的常考点。

【结论】 文件系统向上提供按名存取接口,负责文件的组织、存储、检索与保护,通常分为接口层、逻辑文件系统层、物理存取层、设备管理层等层次,选 B。

【逐项辨析】

  • A 错误——文件系统管理的是外存(磁盘)上的文件,内存中的程序与数据由存储管理(虚拟内存)负责,二者职责分明。
  • B 正确——功能(按名存取、组织、存储、检索、保护)与层次划分(接口、文件组织、物理存取等)均符合教材标准定义。
  • C 错误——直接与磁盘驱动程序交互完成物理块读写的是设备管理层,逻辑文件系统只处理目录、FCB 与逻辑块号,不触碰硬件。
  • D 错误——目录管理与存储空间分配/回收都是文件系统的核心职责,绝非设备驱动程序的工作。

【知识点】 文件系统的功能可概括为“存组管护”四字:

功能含义具体工作
存(按名存取)用户只需提供文件名路径解析、FCB 查找、权限检查
组(组织)逻辑结构与物理结构流式/记录式文件、连续/链接/索引分配
管(管理)目录管理与空间管理树形目录、空闲表/位示图/成组链接
护(保护)共享、保密、完整性访问控制、备份、日志

【推导过程】 文件系统层次结构图:

        +-----------------------------+
        |     用户/应用程序层          |
        +-------------+---------------+
                      | 系统调用
        +-------------v---------------+
        |   文件系统接口层             |  <- open/read/write/close
        |   (提供系统调用接口)          |
        +-------------+---------------+
                      | 逻辑块号
        +-------------v---------------+
        |   逻辑文件系统层             |  <- 目录管理、FCB、文件逻辑结构
        |   (文件组织与目录服务)        |
        +-------------+---------------+
                      | 物理块号
        +-------------v---------------+
        |   文件物理存取层             |  <- 逻辑块->物理块映射、分配策略
        |   (缓冲管理、磁盘调度)        |
        +-------------+---------------+
                      | I/O 请求
        +-------------v---------------+
        |   设备管理层                 |  <- 设备驱动、中断处理、DMA
        |   (与磁盘硬件交互)            |
        +-------------+---------------+
                      | 硬件信号
        +-------------v---------------+
        |      I/O 控制系统           |  <- 磁盘控制器、DMA 控制器
        +-----------------------------+

【记忆锚点】 口诀——“接口对外供调用,逻辑管名和目录;物理做块映射跑,设备最终碰硬件”。文件系统核心目标四个字:按名存取。

【易混对比】

对比维度逻辑文件系统文件物理存取层设备管理层
处理对象文件名、目录、逻辑块号逻辑块到物理块的映射物理块读写命令
是否接触硬件否否是(通过驱动)
典型功能路径解析、权限检查分配算法、缓冲管理磁头驱动、中断处理

换个问法:“文件系统中,哪一层负责把用户提供的逻辑块号翻译成磁盘上的柱面号、磁头号、扇区号?”——答:文件物理存取层(或设备管理层,具体划分视教材而定,通常物理存取层负责映射到物理块号,设备管理层负责块号到 CHS 的转换)。

【自测】 在文件系统层次结构中,当用户调用 read(fd, buf, count) 时,负责将字节偏移量转换为逻辑块号的是哪一层?

答:逻辑文件系统层(或文件物理存取层)。逻辑文件系统负责维护文件逻辑结构并处理 FCB,将文件内的字节偏移转换为逻辑块号属于其职责范围;随后物理存取层将逻辑块号映射为物理磁盘块号。〈出处:大厂面试高频〉

【易错提醒】 ①文件系统的核心目标是“按名存取”,记住这一句就能判断多数功能类选项。②层次自上而下为:接口、逻辑文件系统与文件组织、物理存取、设备管理,越往下越贴近硬件。③文件共享与保护属于文件系统功能,不要与进程同步机制混为一谈。

【知识关联】 本题考点:文件系统。与第 69–78 题;面试:硬链接 vs 软链接(见补题)。

  • 连考提示:与第 79 题(I/O 设备分类)连考 —— 文件系统三层与设备层分工,别把块号→CHS 的换算算到目录层。 【拓展延伸】 变式:unlink 后文件还能读吗?(fd 仍打开则可以)。(本题答案 B,以题干选项为准)

持续学习,持续积累。