七、I/O 管理与 Linux(第79-90题)
第79题
下列设备中,属于字符设备的是( )。 A. 磁盘 B. 磁带 C. 键盘 D. 光盘
答案:C
考点定位:七、I/O 管理与 Linux——I/O 设备的分类(块设备与字符设备),难度★☆☆☆☆,设备分类是国企笔试与互联网笔试操作系统部分的基础送分题,常以“下列属于字符设备的是”的形式出现。
【结论】 键盘以字符为单位顺序输入、不可寻址,属于典型的字符设备,选 C。
【逐项辨析】
- A 错误——磁盘以数据块(扇区)为单位读写,支持随机寻址与 seek 定位,属于块设备。
- B 错误——磁带虽只能顺序读写,但其存取单位仍是数据块,操作系统仍将其归类为块设备。(口径提示:这是教材按「存取单位」的分类;Linux 实现上
st/nst驱动只注册字符设备、不提供块设备节点,若题干明确「按 Linux 设备类型」则磁带归字符类,本题按教材口径取 C。) - C 正确——键盘以单个字符为最小单位顺序输入,数据不可寻址、不能随机定位,是字符设备的典型代表。
- D 错误——光盘以扇区(数据块)为单位存取,支持随机读取,属于块设备。
【知识点】 I/O 设备按信息交换单位分类:
| 分类维度 | 块设备(Block Device) | 字符设备(Character Device) |
|---|---|---|
| 交换单位 | 数据块(如 512 B, 4 KB) | 字符/字节流 |
| 寻址能力 | 可寻址,支持随机访问(seek) | 不可寻址,只能顺序读写 |
| 传输速率 | 较高 | 较低 |
| 缓冲策略 | 通常采用块缓冲 | 通常采用字符缓冲或行缓冲 |
| 典型代表 | 磁盘、磁带、光盘、U 盘、SSD | 键盘、鼠标、显示器、打印机、串口 |
| 操作系统接口 | 块设备接口(block read/write) | 字符设备接口(get/put character) |
【推导过程】 设备分类判断流程:
该设备以什么单位交换数据?
|
+---------------+---------------+
| |
数据块(扇区) 字符/字节
| |
+-----v-----+ +-----v-----+
| 块设备? | | 字符设备? |
| 能否 seek | | 能否 seek |
| 定位任意 | | 定位任意 |
+-----+-----+ +-----+-----+
| |
能 seek 不能 seek
| |
块设备(磁盘) 字符设备(键盘)
|
不能 seek 但块为单位
|
仍是块设备(磁带)【记忆锚点】 口诀——“块设备能 seek 随机找,字符设备顺序跑;外存储器都是块,键鼠显示字符派”。
【易混对比】
| 对比维度 | 块设备 | 字符设备 | 网络设备 |
|---|---|---|---|
| 数据单位 | 块 | 字符/字节 | 数据包 |
| 寻址方式 | 块号寻址 | 无寻址 | 地址寻址(IP/MAC) |
| 典型接口 | read/write block | getc/putc | socket |
| Linux 表示 | /dev/sda, /dev/hda | /dev/tty, /dev/lp0 | /dev/eth0 |
换个问法:“磁带只能顺序读写,为什么不能归类为字符设备?”——答:因为磁带的存取单位仍是数据块而非单个字符,操作系统为其提供块设备接口,只是该接口的 seek 操作受限或效率极低。
【自测】 在 Linux 系统中,/dev/sda 与 /dev/tty0 分别属于哪类设备?若向 /dev/tty0 写入字符串 “Hello”,会发生什么?
答:
/dev/sda属于块设备(磁盘),/dev/tty0属于字符设备(终端)。向/dev/tty0写入 “Hello” 会将字符流直接输出到当前终端屏幕显示。〈出处:大厂面试高频〉
【易错提醒】 ①判断依据是“存取单位”而非“能否随机访问”,磁带虽是顺序存取但仍属块设备。②键盘、鼠标属字符设备;网卡属网络设备,与块设备、字符设备并列,不可混为字符设备。③块设备接口需要支持 seek 定位,字符设备接口不需要。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
- 连考提示:与第 80 题(四种 I/O 控制方式)连考 —— 块设备 vs 字符设备的划分决定该用哪种控制方式。
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 C,以题干选项为准)
第80题
在程序查询、中断驱动、DMA 和通道四种 I/O 控制方式中,CPU 参与程度最高、效率最低的是( )。 A. 程序查询方式 B. 中断驱动方式 C. DMA 方式 D. 通道方式
答案:A
考点定位:七、I/O 管理与 Linux——四种 I/O 控制方式的比较,难度★☆☆☆☆,这是 I/O 章节最核心的对比考点,国企笔试与互联网笔试都以“哪种方式 CPU 干预最少”的形式反复考查。
【结论】 程序查询方式下 CPU 需不断轮询设备状态并亲自搬运数据,与设备串行工作,CPU 参与程度最高、效率最低,选 A。
【逐项辨析】
- A 正确——程序查询方式要求 CPU 全程轮询状态寄存器,每传送一个字/字节都要执行 I/O 指令,CPU 与设备串行,利用率最低。
- B 错误——中断驱动方式已实现 CPU 与设备并行:CPU 发指令后转做其他事,设备就绪后中断 CPU,干预远少于程序查询。
- C 错误——DMA 方式由 DMA 控制器完成整个数据块的传送,CPU 仅在传送开始前设置参数、结束后响应中断,干预极少。
- D 错误——通道方式由专门的通道处理机执行通道程序,可独立控制多台设备,是四种方式中 CPU 干预最少的。
【知识点】 四种 I/O 控制方式的核心差异在于 CPU 干预粒度与数据传输单位:
| 控制方式 | 数据传送单位 | CPU 干预时机 | CPU 与设备关系 | 效率 |
|---|---|---|---|---|
| 程序查询 | 字/字节 | 全程轮询,每字都干预 | 串行 | 最低 |
| 中断驱动 | 字/字节 | 每字中断一次 CPU | 并行(指令级) | 较低 |
| DMA | 数据块 | 块首设置、块尾中断 | 并行(块级) | 较高 |
| I/O 通道 | 一组块/通道程序 | 启动通道程序、结束中断 | 并行(程序级) | 最高 |
【推导过程】 四种 I/O 控制方式的 CPU 参与程度时序对比:
程序查询方式:
CPU: [轮询][读写][轮询][读写][轮询][读写]...
DEV: [忙] [忙] [忙]
特点: CPU 与设备串行,CPU 利用率极低
中断驱动方式:
CPU: [发命令====其他工作====][中断处理][其他工作][中断处理]...
DEV: [============设备工作============]
特点: CPU 与设备并行,但每字节中断一次,切换开销大
DMA 方式:
CPU: [设置 DMA 参数][========其他工作========][中断收尾]
DEV: [================整块数据传送================]
特点: 整块数据由 DMA 控制器搬运,CPU 几乎不参与
通道方式:
CPU: [启动通道程序][==================其他工作==================][中断收尾]
CH: [执行通道程序:控制多台设备完成多组数据传送]
DEV: [设备A工作][设备B工作][设备C工作]...
特点: 通道是专用 I/O 处理机,CPU 干预最少效率排序:通道 > DMA > 中断驱动 > 程序查询。
【记忆锚点】 口诀——“查询串行最累人,中断并行字切分;DMA 整块通道批,效率逐级往上升”。另一口诀:“查中 DMA 通,CPU 越来越轻松”。
【易混对比】
| 对比维度 | 程序查询 | 中断驱动 | DMA | 通道 |
|---|---|---|---|---|
| 硬件支持 | 无需额外硬件 | 中断控制器 | DMA 控制器 | 通道处理机 |
| 适用场景 | 简单系统、调试 | 低速字符设备 | 高速块设备 | 大型主机多外设 |
| 是否并行 | 否 | 是(指令级) | 是(块级) | 是(程序级) |
换个问法:“DMA 方式为什么比中断驱动方式更适合磁盘等高速设备?”——答:磁盘以块为单位传输,若用中断驱动则每扇区(如 512 B)要中断 512 次,中断开销巨大;DMA 以整块为单位传送,中断次数从「每字节/每扇区一次」降到「每块常数次」。本库两种口径并存,答题先认口径:① 唐朔飞系教材把 DMA 传输的块前预处理与块后后处理各计一次中断 → 每块 2 次(本题【自测】按此算);② 简化口径与第 81 题结论只计块末 1 次(块首那次是 CPU 主动初始化设置,不算 DMA 发的中断)。两种都不影响「DMA 远少于中断驱动」的结论,别把另一种判成错。
【自测】 在磁盘批量读取 1 MB 数据的场景中,块大小为 4 KB,分别采用中断驱动方式(每字节中断一次)与 DMA 方式(每块中断两次)。假设忽略其他开销,两种方式各需要多少次中断?
答:总块数 = 1 MB / 4 KB = 256 块。中断驱动:1 MB = 1048576 字节,需 1048576 次中断。DMA 按本题题干给定的「每块中断两次」(块前预处理 + 块后后处理,唐朔飞口径):256 × 2 = 512 次,降低 1048576/512 = 2048 倍。〈口径提示:若按「只计块末 1 次」的简化算法(第 81 题口径),则 256 次、降低 4096 倍——两数都对,取决于题干说哪种。〉〈出处:408 真题同型题〉
【易错提醒】 ①四者效率排序为 通道 > DMA > 中断 > 程序查询。②“CPU 与设备并行”从中断方式开始成立,程序查询方式是串行的。③传送单位排序为 程序查询/中断(字节) < DMA(数据块) < 通道(一组数据块)。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
- 连考提示:与第 79 题(I/O 设备分类)连考 —— 四种控制方式的差别就在 CPU 参与度与传送单位。
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 A,以题干选项为准)
第81题
关于 DMA 方式,下列说法正确的是( )。 A. 每传送一个字节都要中断 CPU 一次 B. 以数据块为单位传送,整块数据传送结束后才向 CPU 发一次中断 C. 数据传送必须经过 CPU 的通用寄存器中转 D. 只能用于字符设备的输入输出
答案:B
考点定位:七、I/O 管理与 Linux——DMA 方式的特点,难度★☆☆☆☆,是国企笔试与互联网笔试中 I/O 控制方式的基础送分题。
【结论】 DMA 方式以数据块为单位在设备与主存之间直接传送,整块传完后才向 CPU 发一次中断,选 B。
【逐项辨析】
- A 错误——“每传送一个字节都中断 CPU”是中断驱动方式的特征,其本质是 CPU 逐字节搬运,频繁进出中断上下文。
- B 正确——DMA 控制器接管总线,在设备与主存间建立直接数据通路,整块数据传完仅中断一次。
- C 错误——DMA 的关键优势正是数据不经过 CPU 通用寄存器,避免了 CPU 介入数据搬运。
- D 错误——DMA 主要服务于磁盘、显卡等高速块设备以及网卡等网络设备,字符设备速度低,用中断驱动即可。
【知识点】 DMA(Direct Memory Access)传输的三阶段与核心寄存器:
| 阶段 | 动作 | CPU 是否介入 |
|---|---|---|
| 初始化 | CPU 向 DMA 控制器写入内存首地址、传送字节数、方向(读/写) | 是 |
| 数据传送 | DMA 控制器控制总线,直接在设备与主存间成块搬运 | 否 |
| 结束处理 | 整块传完,DMA 发中断,CPU 做善后校验 | 是 |
DMA 控制器内含内存地址寄存器、字计数器、数据缓冲寄存器、控制/状态寄存器。传送期间 DMA 与 CPU 竞争主存总线,采用周期窃取(Cycle Stealing)或突发模式(Burst Mode)。
【推导过程】 DMA 传输完整流程图:
CPU 执行程序
|
v
+-------------------+
| 设置 DMA 参数 |
| (内存地址/字数/ |
| 方向) |
+-------------------+
|
v
+-------------------+
| 启动 DMA,CPU |<--------+
| 继续执行其他任务 | |
+-------------------+ |
| |
| 周期窃取/突发模式 |
v |
+-------------------+ |
| DMA 控制器控制 | |
| 总线,设备<->主存 | |
| 直接成块传送 | |
+-------------------+ |
| |
v |
+-------------------+ |
| 整块传完? |---否---->+
+-------------------+
| 是
v
+-------------------+
| DMA 向 CPU 发 |
| 中断请求 |
+-------------------+
|
v
+-------------------+
| CPU 响应中断, |
| 做结束处理 |
+-------------------+【记忆锚点】 口诀——“DMA 成块直传不经过 CPU,初始化一次中断一次”;对比记忆:“中断驱动字节忙,DMA 成块才一趟”。
【易混对比】
| 特性 | 程序查询 | 中断驱动 | DMA |
|---|---|---|---|
| 数据传送单位 | 字/字节 | 字/字节 | 数据块 |
| CPU 干预频率 | 持续轮询 | 每字节中断一次 | 仅初始化和结束 |
| 数据是否过 CPU | 是 | 是 | 否(直连主存) |
| 适用设备 | 简单慢速 | 中低速字符设备 | 高速块设备 |
换个问法:“DMA 控制器与 CPU 如何协调对主存的访问?”——答案是通过总线仲裁与周期窃取。与第 82 题(通道)连考。
【自测】 某系统采用 DMA 方式从磁盘读取 8 KB 数据块,磁盘数据传输率为 4 MB/s,DMA 初始化需 200 个时钟周期,中断处理需 500 个时钟周期,CPU 主频 1 GHz。若忽略总线竞争,计算本次 DMA 传输占用 CPU 的时间比例。
答:约 0.035%。传输时间 = 8 KB / 4 MB/s = 2 ms,CPU 介入时间 = (200+500)/1 GHz = 0.7 μs,占用比 = 0.7 μs / 2000 μs = 0.035%。〈出处:408 真题同型题〉
【易错提醒】 ①DMA “脱离 CPU”仅指数据搬运阶段,CPU 仍需初始化和中断处理;②DMA 与 CPU 会竞争总线,不是完全并行;③周期窃取模式下,DMA 每偷一个主存周期,CPU 停顿一个周期。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 B,以题干选项为准)
第82题
通道实质上是一种( )。 A. 主存与设备之间的数据传送总线 B. 设备与主存之间的数据缓冲区 C. 专门负责管理 I/O 的处理器 D. 用户程序调用 I/O 的系统调用接口
答案:C
考点定位:七、I/O 管理与 Linux——通道的概念,难度★☆☆☆☆,是 I/O 子系统层次结构中高频名词解释型考点。
【结论】 通道是专门负责 I/O 控制的处理器,能独立执行通道程序、管理多台设备与主存的数据交换,选 C。
【逐项辨析】
- A 错误——总线是物理连接部件,通道是具有指令执行能力的处理机,二者层次不同。
- B 错误——缓冲区只是缓解速度差异的存储区域,不能执行指令,不具备处理器特征。
- C 正确——通道又称 I/O 处理机,有独立的通道指令系统,可执行通道程序,独立完成数据传送。
- D 错误——系统调用接口是软件层的编程入口,通道是硬件部件,功能完全不同。
【知识点】 通道的分类与信息交换方式:
| 通道类型 | 数据宽度 | 连接设备数 | 适用场景 |
|---|---|---|---|
| 字节多路通道 | 字节 | 多台(分时切换) | 低速字符设备(打印机、终端) |
| 数组选择通道 | 数据块 | 一台(独占) | 高速块设备(磁盘) |
| 数组多路通道 | 数据块 | 多台(分时) | 中高速块设备(磁盘阵列) |
通道程序由通道指令(CCW)组成,存放在主存中,包含操作码、内存地址、传送字节数、通道程序链指针等字段。CPU 通过执行“启动 I/O”指令(SIO)让通道开始工作,之后通道独立执行,完成后再以中断方式通知 CPU。
【推导过程】 通道方式下 CPU、通道、设备三者并行工作流程:
CPU 通道 设备
| | |
| 执行 SIO 指令 | |
|---------------->| |
| (启动通道) | |
| | 取通道程序 |
| | (来自主存) |
| |--------->+-------+
| | | |
| 继续执行 | | 控制 |
| 其他程序 | | 设备 |
| |<---------+ |
| | 数据直传主存 |
| | |
| | 完成,发中断 |
|<----------------| |
| 中断处理 | |【记忆锚点】 口诀——“通道就是小 CPU,专管 I/O 不运算”;升级路径记忆:“查询->中断->DMA->通道,CPU 越来越闲”。
【易混对比】
| 维度 | DMA | 通道 |
|---|---|---|
| 本质 | 专用控制器 | 专用 I/O 处理器 |
| 指令能力 | 无,纯硬件逻辑 | 有,执行通道程序 |
| 管理设备数 | 通常一台 | 可管理多台 |
| CPU 介入 | 初始化+中断 | 启动+中断 |
| 复杂度 | 低 | 高 |
换个问法:“字节多路通道与数组多路通道的根本区别是什么?”——前者以字节为单位分时切换设备,后者以数据块为单位分时切换。与第 81 题(DMA)连考。
【自测】 某计算机系统配置了数组多路通道,连接 4 台磁盘,每台磁盘数据传输率为 2 MB/s。若通道选择一次设备并传送一个 4 KB 数据块所需的开销为 10 us,则该通道的理论最大流量约为多少?
答:约 8 MB/s(4 台磁盘的总需求就是通道上限)。关键在于分清两侧时间:2 ms = 4 KB ÷ 2 MB/s 是磁盘自己产出一个块的时间(设备侧),10 μs 是通道选择设备并搬运一个块的开销(通道侧),两者不在同一条流水线上,不能相加当作"通道占用时长"。通道每服务一块只占 10 μs,一秒可服务 10 万块,折合 4 KB × 10 万 = 400 MB/s,远高于 4 台磁盘合计的 4 × 2 MB/s = 8 MB/s,所以瓶颈在磁盘而非通道,切换开销吃掉的比例仅 10μs ÷ 2ms = 0.5%,工程上按"略低于 8 MB/s、约 8 MB/s"回答即可。易错点:若把 2.01 ms 当成通道对一块的占用,再用 4 块的数据量去除以这一个块的时间,会算出 7.96 MB/s;这个式子量纲不自洽(同口径按"每块 2.01 ms 串行服务"算,通道聚合只有 4 KB ÷ 2.01 ms ≈ 2 MB/s,反而自相矛盾)。〈出处:同型题〉
【易错提醒】 ①通道是硬件,不是软件模块或数据通路;②通道执行的是通道指令,与 CPU 的机器指令不同;③数组选择通道一次只能服务一台设备,否则字节会错乱。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 C,以题干选项为准)
第83题
在设备管理中引入缓冲区,其主要作用是( )。 A. 提高 CPU 的主频 B. 扩大主存的存储容量 C. 缓和 CPU 与 I/O 设备速度不匹配的矛盾,并减少对 CPU 的中断次数 D. 把独占型设备改造成可共享的虚拟设备
答案:C
考点定位:七、I/O 管理与 Linux——缓冲区的作用与单缓冲、双缓冲,难度★☆☆☆☆,是 I/O 管理中常考的基础概念题。
【结论】 引入缓冲区的核心作用是缓和 CPU 与 I/O 设备速度不匹配的矛盾,并减少对 CPU 的中断次数,选 C。
【逐项辨析】
- A 错误——CPU 主频由硬件晶振与倍频决定,设置缓冲区不能改变主频。
- B 错误——缓冲区是主存中的临时暂存区,不扩大主存的物理存储容量。
- C 正确——设备成批送数据到缓冲区,CPU 成批取走,既缓和速度差又减少中断频率。
- D 错误——把独占设备改造为共享虚拟设备是 SPOOLing 技术的功能,不是缓冲区的作用。
【知识点】 四类缓冲机制对比:
| 类型 | 结构 | 并行性 | 适用场景 |
|---|---|---|---|
| 单缓冲 | 主存中一个缓冲区 | 设备与 CPU 串行使用 | 简单系统 |
| 双缓冲 | 两个缓冲区交替 | 设备与 CPU 可并行 | 常见生产环境 |
| 循环缓冲 | 多个缓冲区成环 | 生产-消费速率不匹配时缓解 | 音视频流 |
| 缓冲池 | 多个缓冲区统一管理 | 多进程共享,动态分配 | 复杂操作系统 |
单缓冲下,设备填缓冲区与 CPU 取缓冲区不能同时进行;双缓冲下,设备向 Buf1 写入时 CPU 可从 Buf2 读取,二者真正并行,吞吐率显著提高。
【推导过程】 单缓冲与双缓冲处理时间对比(假设:设备输入耗时 T,CPU 处理耗时 C,设备输出耗时 M):
单缓冲时序(以输入为例):
| 阶段 | 时间 | 谁在忙 |
|---|---|---|
| 设备输入到缓冲区 | T | 设备忙,CPU 闲 |
| CPU 从缓冲区取数并处理 | C | CPU 忙,设备闲 |
| (若为输出)缓冲区送设备 | M | 设备忙,CPU 闲 |
单缓冲处理每块数据耗时:T + C(纯输入,串行)或 T + C + M(输入—处理—输出全串行)。设备与 CPU 无法同时操作同一缓冲区,故不能重叠为 max。(max(T,C) 是双缓冲流水线的结果。)
双缓冲时序:
| 阶段 | Buf1 | Buf2 | 时间 |
|---|---|---|---|
| 第 1 块 | 设备写入 | 空闲 | T |
| 第 1 块处理+第 2 块输入 | CPU 读取并处理 | 设备写入 | max(C, T) |
| 第 2 块处理+第 3 块输入 | 设备写入 | CPU 读取并处理 | max(C, T) |
双缓冲稳态下,处理每块数据耗时约为 max(C, T),设备与 CPU 真正并行。
单缓冲: [输入 T]----[CPU 处理 C]----[输出 M]----
串行执行,无重叠
双缓冲: [输入到 Buf1 T]----[CPU 处理 Buf1 + 输入到 Buf2 T]----...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
重叠执行,节省时间【记忆锚点】 口诀——“单缓冲串行,双缓冲并行,循环缓冲解抖动,缓冲池大家用”;速记:“一个碗轮流吃,两个碗同时干”。
【易混对比】
| 概念 | 缓冲区 | Cache |
|---|---|---|
| 目的 | 缓和 CPU 与 I/O 设备速度差 | 缓和 CPU 与主存速度差 |
| 位置 | 主存 | 介于 CPU 与主存之间 |
| 管理 | 操作系统 | 硬件(MMU/缓存控制器) |
| 对程序透明 | 否(需系统管理) | 是(硬件自动) |
换个问法:“双缓冲相比单缓冲,处理 n 块数据能省多少时间?”——当 T 与 C 接近时,双缓冲几乎省掉一半时间。与第 84 题(SPOOLing)连考。
【自测】 某字符设备输入一个数据块需 8 ms,CPU 处理该数据块需 4 ms,输出到另一设备需 6 ms。若采用双缓冲策略,处理 100 个连续数据块的总时间约为多少?(忽略切换开销)
答:约 810 ms。双缓冲稳态吞吐由最慢阶段决定,本题输入 8 ms 为瓶颈。第 1 块:输入 8 + 处理 4 + 输出 6 = 18 ms;第 2–100 块流水:每块约 8 ms,共 99×8 = 792 ms;总时间 ≈ 18 + 792 = 810 ms。(若只考虑输入+处理两阶段,公式为 T+(n-1)·max(T,C)+C = 8+99×8+4 = 804 ms;本题含输出 6 ms,再加尾部输出约得 810 ms。)〈出处:同型题〉
【易错提醒】 ①缓冲区的目的是“缓和速度差异”,不是“提高设备本身速度”;②单缓冲时设备与 CPU不能并行处理同一数据,双缓冲才能并行;③循环缓冲用指针追尾判断是否满/空。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 C,以题干选项为准)
第84题
SPOOLing 技术(假脱机技术)的主要作用是( )。 A. 把独占设备改造成可共享的虚拟设备,提高设备利用率 B. 直接提高磁盘等外存的物理读写速度 C. 在设备与 CPU 之间建立一条直连的硬件数据通路 D. 用硬件电路取代软件来完成中断处理
答案:A
考点定位:七、I/O 管理与 Linux——SPOOLing(假脱机)技术,难度★☆☆☆☆,是“独占设备改共享设备”结论的经典考法。
【结论】 SPOOLing 技术的主要作用是把独占设备改造成可共享的虚拟设备,提高设备利用率,选 A。
【逐项辨析】
- A 正确——SPOOLing 在磁盘上开辟输入/输出井,用进程模拟脱机 I/O,使多个进程“同时”使用打印机类的独占设备。
- B 错误——SPOOLing 是逻辑层的虚拟化技术,不改变磁盘物理读写速度。
- C 错误——建立硬件直连数据通路是 DMA 的机制,SPOOLing 完全靠软件(磁盘井+进程)实现。
- D 错误——用硬件电路取代软件中断处理与 SPOOLing 无关,且现代操作系统中断处理仍需软硬件协同。
【知识点】 SPOOLing 系统的四大组成:
| 组成部分 | 位置 | 作用 |
|---|---|---|
| 输入井 | 磁盘 | 暂存从输入设备读入的数据,模拟脱机输入 |
| 输出井 | 磁盘 | 暂存进程要输出的数据,模拟脱机输出 |
| 输入缓冲区 | 内存 | 输入设备->输入井 的中转 |
| 输出缓冲区 | 内存 | 输出井->输出设备 的中转 |
| 输入进程 | 内存进程 | 负责将输入设备数据送入输入井 |
| 输出进程 | 内存进程 | 负责将输出井数据送往输出设备 |
SPOOLing 的核心思想是用磁盘空间换设备共享能力。用户进程请求打印时,系统把数据快速写入磁盘输出井即宣告 I/O “完成”,进程可继续执行;实际打印由输出进程排队调度,从而将低速、独占的物理打印机改造为高速、共享的虚拟打印机。
【推导过程】 SPOOLing 工作流程图:
用户进程 A 用户进程 B
| |
| write(打印机) | write(打印机)
v v
+---------+ +---------+
| 系统调用 | | 系统调用 |
+---------+ +---------+
| |
v v
+-------------------------------+
| 写入磁盘输出井 |
| (数据暂存,进程立即返回) |
+-------------------------------+
|
v
+-------------------------------+
| 输出进程(守护进程) |
| 按 FIFO 或优先级从输出井取数据 |
| 送往实际物理打印机 |
+-------------------------------+
|
v
物理打印机【记忆锚点】 口诀——“磁盘当井来缓冲,独占设备变共享”;英文记忆:SPOOL 原意是 Simultaneous Peripheral Operations On-Line(联机同时外围操作)。
【易混对比】
| 维度 | SPOOLing | 双缓冲 |
|---|---|---|
| 目的 | 设备虚拟化(独占改共享) | 缓和速度差异 |
| 核心部件 | 磁盘井 + 守护进程 | 两个内存缓冲区 |
| 对设备数量影响 | 1 台物理设备对应多台虚拟设备 | 不涉及 |
| 需要磁盘 | 是 | 否 |
换个问法:“SPOOLing 技术为什么能提高独占设备的利用率?”——因为进程不必等待物理设备忙完,写入磁盘井即可返回,物理设备由守护进程持续调度使用。与第 83 题(缓冲区)连考。
【自测】 某系统采用 SPOOLing 技术管理打印机,输出井容量为 100 MB,平均每个打印任务 2 MB,输出进程将任务送往打印机的速率为 5 MB/min。若当前输出井已有 30 个任务排队,新来一个 4 MB 的紧急任务,问该任务从提交到打印完成的最短时间约为多少?(假设系统立即将紧急任务插队到队首)
答:0.8 min。题干已假设系统立即将紧急任务插队到队首,故从提交到打印完成只需打印自身 4 MB:4 ÷ 5 = 0.8 min。(若不插队、排在 60 MB 之后,则为 (60+4)/5 = 12.8 min。)〈出处:同型题〉
【易错提醒】 ①SPOOLing 在磁盘上开辟井,不是在主存中;②SPOOLing 把独占设备变成共享设备,但没有提高该设备本身的物理速度;③SPOOLing 需要多道程序设计支持,单道批处理无法实现。
【知识关联】 本题考点:I/O 软件层次。与第 83–85 题;面试:零拷贝、SPOOLing 实例(打印队列)。
【拓展延伸】 变式:双缓冲如何计算吞吐。Linux sendfile/mmap 是工程对照。(本题答案 A,以题干选项为准)
第85题
设备独立性(设备无关性)的含义是( )。 A. 每台设备都只有一个物理设备名,用户必须按物理名访问设备 B. 用户程序使用逻辑设备名,由操作系统完成逻辑设备名到物理设备名的映射 C. 所有类型的设备都必须安装同一个设备驱动程序 D. 一台设备在任意时刻都只能被一个进程独占使用
答案:B
考点定位:七、I/O 管理与 Linux——设备独立性,难度★☆☆☆☆,是 I/O 软件层次设计中的高频概念题。
【结论】 设备独立性指用户程序使用逻辑设备名,由操作系统完成逻辑设备名到物理设备名的映射,选 B。
【逐项辨析】
- A 错误——要求用户使用物理设备名访问恰恰是没有设备独立性的表现,程序与硬件紧耦合。
- B 正确——用户程序使用逻辑设备名(如 /dev/printer),操作系统通过 LUT 映射到实际物理设备。
- C 错误——不同类型设备硬件差异大,必须配备各自驱动程序,“统一驱动”既不可行也非设备独立性含义。
- D 错误——描述的是设备的独占分配特性,与设备独立性是完全不同的概念。
【知识点】 设备独立性的实现机制:
| 层次 | 命名方式 | 负责转换 |
|---|---|---|
| 用户层 | 逻辑设备名 | 用户程序使用 |
| 系统层 | 逻辑设备表 LUT | 操作系统维护映射 |
| 驱动层 | 物理设备名 | 设备驱动程序操作硬件 |
逻辑设备表(LUT) 记录逻辑设备名、物理设备名、设备驱动程序入口指针。当用户程序 open(“/dev/printer”) 时,系统查 LUT 找到对应物理设备和驱动,之后对该文件描述符的 read/write 均由该驱动处理。这种设计使程序与硬件解耦,便于移植和故障替换。
【推导过程】 设备名映射过程:
用户程序: open("/dev/printer")
|
v
+------------------+
| 系统调用处理 |
+------------------+
|
v
+------------------+
| 查 LUT |
| 逻辑设备名 -> |
| 物理设备名 + |
| 驱动程序指针 |
+------------------+
|
v
+------------------+
| 调用设备驱动 |
| 操作物理硬件 |
+------------------+【记忆锚点】 口诀——“用户用假名,系统找真人,换设备不用改程序”;类比:“寄快递写收件人姓名(逻辑名),邮局根据姓名查地址(物理名)派送”。
【易混对比】
| 概念 | 设备独立性 | 设备分配 |
|---|---|---|
| 关注点 | 命名与映射机制 | 如何把设备分给进程 |
| 核心结构 | LUT | 系统设备表 SDT、设备控制表 DCT |
| 对用户透明 | 是 | 部分透明 |
| 目的 | 程序可移植、易维护 | 提高设备利用率 |
换个问法:“设备独立性是否意味着用户完全不用关心设备类型?”——不是,用户仍需知道设备的功能类别(如打印机、磁盘),只是不用关心具体是哪一台物理设备。与第 86 题(磁盘访问时间)连考。
【自测】 某操作系统为实现设备独立性,在系统中设置了逻辑设备表 LUT。若进程 P 使用逻辑设备名 “LPT1” 请求打印,系统查 LUT 得知其映射到物理设备 “Printer-03”,但 “Printer-03” 当前故障。系统随后将映射动态修改为 “Printer-07” 并继续服务。上述行为体现了设备独立性的哪一优点?
答:故障设备的动态替换与透明切换。设备独立性使程序无需修改即可使用替代设备,提高了系统可靠性与可维护性。〈出处:大厂面试高频〉
【易错提醒】 ①设备独立性强调“程序用逻辑名、系统做映射”,与设备共享/独占无关;②实现映射的关键数据结构是LUT,不是 DCT 或 COCT;③设备独立性提高的是可移植性,不是设备速度。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 B,以题干选项为准)
第86题
某磁盘转速为 6000 r/min,平均寻道时间为 6 ms,每磁道容量为 60 KB。若读取一个连续存放的 4 KB 数据块(不计控制器等额外开销),则平均访问时间约为( )。 A. 11.0 ms B. 5.0 ms C. 11.7 ms D. 16.7 ms
答案:C
考点定位:七、I/O 管理与 Linux——磁盘访问时间的组成与简单计算,难度★★☆☆☆,是磁盘 I/O 计算的必考小题。
【结论】 磁盘平均访问时间 = 平均寻道时间 + 平均旋转延迟 + 传输时间,本题约为 11.7 ms,选 C。
【逐项辨析】
- A 错误——11.0 ms 只计入寻道时间 6 ms 与旋转延迟 5 ms,漏掉了传输时间 0.67 ms。
- B 错误——5.0 ms 仅仅是平均旋转延迟,不是完整访问时间。
- C 正确——6 ms + 5 ms + 0.67 ms = 11.7 ms,三段全计入。
- D 错误——16.7 ms 误把旋转延迟按一整圈 10 ms 计算,多算了 5 ms。
【知识点】 磁盘访问时间三要素:
| 组成部分 | 符号 | 计算方法 | 本题数值 |
|---|---|---|---|
| 寻道时间 | Ts | 磁头移动到目标磁道(题给平均值) | 6 ms |
| 旋转延迟 | Tr | 等待目标扇区到达磁头下,平均半圈 | 5 ms |
| 传输时间 | Tt | 读取数据块所需时间 | 0.67 ms |
【推导过程】 时间拆解计算表:
| 步骤 | 计算式 | 结果 |
|---|---|---|
| 1. 计算每转时间 | 60 s / 6000 r/min = 0.01 s = 10 ms | 10 ms |
| 2. 平均旋转延迟 | 10 ms / 2 = 5 ms | 5 ms |
| 3. 每磁道传输时间 | 10 ms (一转即读完一磁道) | 10 ms |
| 4. 4 KB 传输时间 | (4 KB / 60 KB) x 10 ms = 0.0667 x 10 ms | 0.67 ms |
| 5. 总平均访问时间 | Ts + Tr + Tt = 6 + 5 + 0.67 | 11.7 ms |
时间轴示意:
|<--- Ts=6ms --->|<--- Tr=5ms --->|<- Tt=0.67ms ->|
| 寻道移动 | 等待半圈 | 读取 4KB |
|<-------------------- 总计 11.7 ms ----------------->|【记忆锚点】 口诀——“寻道找磁道,旋转等扇区,传输读数据”;速记公式:“Ta = Ts + Tr + Tt,旋转取半圈,传输按比例”
【易混对比】
| 时间类型 | 定义 | 能否优化 |
|---|---|---|
| 寻道时间 | 磁头径向移动 | 是,用磁盘调度算法 |
| 旋转延迟 | 盘片旋转等待 | 部分(只能减少,无法消除) |
| 传输时间 | 实际读写数据 | 否,由转速和密度决定 |
换个问法:“若把磁盘转速提高到 15000 r/min,其他条件不变,平均访问时间变为多少?”——每转 4 ms,半圈 2 ms,传输 0.27 ms,总计约 8.27 ms。转速提升主要降低旋转延迟和传输时间,对寻道时间无影响。与第 87 题(磁盘调度)连考。
【自测】 某磁盘转速为 7200 r/min,平均寻道时间为 8 ms,每磁道容量为 80 KB。若读取一个连续存放的 8 KB 数据块,则平均访问时间约为多少?
答:约 13.0 ms。每转时间 = 60/7200 = 8.33 ms,半圈 = 4.17 ms,传输时间 = (8/80) × 8.33 = 0.833 ms,总计 = 8 + 4.17 + 0.833 = 13.0 ms。〈出处:国网真题库同型题〉
【易错提醒】 ①旋转延迟必须取平均半圈,不能取整圈;②转速单位是 r/min,先换算成每转毫秒数再除以 2;③传输时间与数据块大小成正比,块越大该项越不能忽略。
【知识关联】 本题考点:磁盘平均访问时间 = 寻道 + 旋转延迟 + 传输时间。同库题群:第79–85题(I/O 控制方式与缓冲)、第87–88题(磁盘调度与 I/O 模型)。面试:如何用调度算法降低平均寻道时间?
【拓展延伸】 变式:改转速/磁道容量后重算;漏传输时间或把延迟算成一圈是最常见错。Linux:iostat -x、blktrace/biolatency 看真实 await;SSD 旋转延迟为 0,模型要换。(本题答案 C,以题干选项为准)
第87题
某磁盘磁头当前位于 100 号磁道,并正向磁道号增大的方向移动。现有请求序列:55,58,39,18,90,160,150,38,184。采用 SCAN(电梯)调度算法时,磁头下一个访问的磁道号是( )。 A. 150 B. 160 C. 90 D. 184
答案:A
考点定位:七、I/O 管理与 Linux——磁盘调度算法(SSTF/SCAN/C-SCAN),难度★★☆☆☆,是磁盘调度服务顺序判断的高频考点。
【结论】 SCAN(电梯)算法沿当前移动方向依次服务经过的请求,磁头在 100 号道向增大方向移动时,下一个访问的是150,选 A。
【逐项辨析】
- A 正确——150 是当前方向(磁道号增大)上大于 100 的最小请求,SCAN 沿向增大方向走,先经过 150。
- B 错误——160 虽在向增大方向上,但位于 150 之后,不是“下一个”。
- C 错误——90 位于磁头运动的反方向,SCAN 必须走到最远端 184 并反向折回后才能服务 90(本题按 LOOK 口径,折返点取最大请求号 184;严格意义上的 SCAN 要走到磁盘最大磁道,而题干未给柱面总数)。
- D 错误——184 是增大方向上的最远请求,要到最后才被访问,不是下一个。
【知识点】 四种经典磁盘调度算法:
| 算法 | 策略 | 优点 | 缺点 |
|---|---|---|---|
| FCFS | 按请求到达顺序 | 公平、简单 | 寻道距离大 |
| SSTF | 每次选距离最近的 | 平均寻道短 | 远端请求可能饥饿 |
| SCAN | 电梯式,到端点折返 | 无饥饿、较均衡 | 两端请求等待稍长 |
| C-SCAN | 单向服务,到头快速回 | 等待时间更均匀 | 返回途中不服务 |
【推导过程】 请求序列:55, 58, 39, 18, 90, 160, 150, 38, 184;起始 100,向增大方向。
磁头移动表(各算法服务顺序与移动总量):
| 算法 | 服务顺序 | 移动距离计算 | 总移动道数 |
|---|---|---|---|
| FCFS | 55->58->39->18->90->160->150->38->184 | |100-55|+|55-58|+... | 498 |
| SSTF | 90->58->55->39->38->18->150->160->184 | |100-90|+32+3+16+1+20+132+10+24 | 248 |
| SCAN(本题按 LOOK 口径:折返点取最大请求号 184) | 150->160->184->90->58->55->39->38->18 | 50+10+24+94+32+3+16+1+20 | 250 |
| C-SCAN | 150->160->184->18->38->39->55->58->90 | 到 184 后快速返回 18 | 322 |
SCAN 详细移动:
增大方向: 100 -> 150 -> 160 -> 184 (最远端)
+50 +10 +24
折返后: 184 -> 90 -> 58 -> 55 -> 39 -> 38 -> 18
-94 -32 -3 -16 -1 -20
总移动: 50+10+24+94+32+3+16+1+20 = **250**【记忆锚点】 口诀——“FCFS 按先来,SSTF 看距离,SCAN 电梯来回走,C-SCAN 单行道”;SCAN 与 C-SCAN 区别:“SCAN 来回都载客,C-SCAN 回头空车跑”。
【易混对比】
| 算法 | 到达端点后行为 | 是否饥饿 |
|---|---|---|
| SCAN | 反向继续服务 | 否 |
| C-SCAN | 快速返回起点,同向再扫 | 否 |
| SSTF | 无端点概念,只选最近 | 可能饥饿 |
换个问法:“若磁头当前向磁道号减小方向移动,SCAN 的下一个请求是?”——应为 90(小于 100 的最大请求)。与第 86 题(磁盘访问时间)连考。
【自测】 某磁盘磁头当前位于 50 号磁道,并向磁道号减小方向移动。请求序列为:82, 170, 43, 140, 24, 16, 190。分别计算 SCAN 与 C-SCAN 的总移动道数。
答:SCAN 总移动 208 道(本题按 LOOK 口径:折返点取最大请求号 190;严格 SCAN 应走到磁盘末磁道,题干未给柱面总数):50->43->24->16->82->140->170->190,移动 = 7+19+8+66+58+30+20 = 208。C-SCAN 总移动 348 道(按严格 C-SCAN:先下到 0 磁道、再跳到 190 单向服务;上面 SCAN 的 208 走 LOOK 口径,两者折返点取法不同,别按同一套去核):到 16 后快速返回 0 再到 190:50->43->24->16->0->190->170->140->82 = 7+19+8+16+190+20+30+58 = 348。〈出处:408 真题同型题〉
【易错提醒】 ①SCAN 服务顺序必须严格遵循“当前移动方向”,反向请求要等折返;②SSTF 可能导致饥饿,SCAN 与 C-SCAN 不会;③C-SCAN 在返回途中不服务任何请求,这是它与 SCAN 的关键区别。
【知识关联】 本题考点:磁盘调度算法——SCAN(电梯)服务顺序判断。同库题群:第86题(磁盘平均访问时间)、第88题(Linux 五种 I/O 模型)、第76题(磁盘空闲空间管理)。面试:SCAN 与 LOOK、C-SCAN 与 C-LOOK 的差别在哪?
【拓展延伸】 变式:给同一序列分别算 FCFS/SSTF/SCAN/C-SCAN 的磁头总移动道数与服务顺序;LOOK 与 SCAN 的差别只在折返点取「最大请求号」还是「磁盘末磁道」。(本题答案 A,以题干选项为准)
第88题
在 Linux 的五种 I/O 模型中,进程发起 I/O 调用后立即返回、由内核在数据准备好并复制到用户空间后通知进程的是( )。 A. 阻塞 I/O B. I/O 多路复用 C. 异步 I/O D. 信号驱动 I/O
答案:C
考点定位:七、I/O 管理与 Linux——五种 I/O 模型,难度★★☆☆☆,是互联网后端与 Linux 运维岗反复出现的考点。
【结论】 异步 I/O 进程发起调用后立即返回,由内核在数据准备好并复制到用户空间后才通知进程,两个阶段都不阻塞,选 C。
【逐项辨析】
- A 错误——阻塞 I/O 在“等待数据”与“数据复制”两个阶段均阻塞进程,进程挂起直到 I/O 完成。
- B 错误——I/O 多路复用(select/poll/epoll)虽可同时监视多个 fd,但就绪后仍需同步执行 recvfrom,复制阶段阻塞。
- C 正确——异步 I/O 发起后立即返回,内核完成“等数据+复制数据”全部工作后才发通知,两阶段均不阻塞。
- D 错误——信号驱动 I/O 收到 SIGIO 信号时数据仅“准备好”,进程仍需自己执行读取,复制阶段阻塞。
【知识点】 五种 I/O 模型的核心差异在于“等待数据就绪”与“数据从内核复制到用户空间”两个阶段是否阻塞进程:
【推导过程】 两阶段阻塞对比表:
| I/O 模型 | 等待数据阶段 | 复制数据阶段 | 同步/异步 |
|---|---|---|---|
| 阻塞 I/O | 阻塞 | 阻塞 | 同步 |
| 非阻塞 I/O | 轮询,立即返回 | 阻塞 | 同步 |
| I/O 多路复用 | 阻塞在 select 上 | 阻塞在 recvfrom 上 | 同步 |
| 信号驱动 I/O | 不阻塞,信号通知 | 阻塞 | 同步 |
| 异步 I/O | 不阻塞 | 不阻塞 | 异步 |
阶段划分:
进程调用 I/O
|
v
+------------------+
| 阶段 1:等待数据 | <-- 数据从设备到内核缓冲区
| (数据就绪?) |
+------------------+
|
v
+------------------+
| 阶段 2:复制数据 | <-- 数据从内核缓冲区到用户空间
| (内核->用户) |
+------------------+
|
v
I/O 完成【记忆锚点】 口诀——“阻塞两阶段都等,非阻塞只等复制,多路复用一起等,信号驱动复制等,异步什么都不等”;判断异步的唯一标准:复制阶段是否也由内核完成并通知。
【易混对比】
| 概念 | 信号驱动 I/O | 异步 I/O |
|---|---|---|
| 通知时机 | 数据准备好(阶段 1 完) | 数据已复制到用户空间(阶段 2 完) |
| 复制阶段 | 进程自己读,阻塞 | 内核完成,不阻塞 |
| 系统调用 | sigaction + SIGIO | aio_read / io_uring |
| POSIX 归类 | 同步 I/O | 异步 I/O |
换个问法:“epoll 是异步 I/O 吗?”——不是。epoll 属于 I/O 多路复用,就绪后仍需进程执行 read,复制阶段阻塞,属于同步 I/O。与第 89 题(Linux 命令)连考。
【自测】 某高并发服务器需要同时处理 10000 个网络连接,每个连接数据到达时间不确定。若要求进程在数据未到达时绝不阻塞、且数据到达后进程也需立即做其他计算而不能阻塞在复制上,应选用哪种 I/O 模型?
答:异步 I/O(AIO)。只有异步 I/O 在“等待数据”和“复制数据”两个阶段都不阻塞进程,最符合该场景。〈出处:大厂面试高频〉
【易错提醒】 ①只有异步 I/O 两个阶段都不阻塞,其余四种在数据复制阶段都会阻塞;②信号驱动与异步 I/O 都“立即返回”,区别在于通知时机是“数据就绪”还是“数据已复制完成”;③Linux 中 epoll 是同步 I/O 多路复用,不是异步 I/O。
【知识关联】 本题考点:I/O 与中断。与第 79–88 题及组成原理 DMA 题;面试:为何 DMA 更高效?
【拓展延伸】 变式:从查询到 DMA 的演进逻辑。Linux 中断下半部/tasklet 是延伸。(本题答案 C,以题干选项为准)
第89题
在 Linux 中,要把文件 file1 改名为 file2(或移动并改名),应使用的命令是( )。 A. cp B. rm C. mkdir D. mv
答案:D
考点定位:七、I/O 管理与 Linux——Linux 常用文件与目录操作命令,难度★☆☆☆☆,是国企科技岗与互联网笔试的必考送分题。
【结论】 Linux 中使用 mv 命令实现文件改名或移动,同一目录下执行 mv file1 file2 即完成改名,选 D。
【逐项辨析】
- A 错误——cp 只进行复制,原文件仍然保留,不能实现改名,且会多占磁盘空间。
- B 错误——rm 用于删除文件或目录,与改名功能完全无关。
- C 错误——mkdir 用于创建新目录,不涉及已有文件的名字变更。
- D 正确——mv(move)兼具移动与改名功能,同一目录内执行相当于改名,跨目录执行相当于移动。
【知识点】 Linux 文件操作核心命令速查:
| 命令 | 功能 | 常用选项 | 示例 |
|---|---|---|---|
| ls | 列出目录内容 | -l 长格式,-a 显示隐藏文件 | ls -la |
| cp | 复制文件/目录 | -r 递归复制目录,-p 保留属性 | cp -r dir1 dir2 |
| mv | 移动/改名 | -i 覆盖前提示,-f 强制 | mv old new |
| rm | 删除文件/目录 | -r 递归删除,-f 强制 | rm -rf dir |
| mkdir | 创建目录 | -p 递归创建多级 | mkdir -p a/b/c |
| touch | 创建空文件/更新时间戳 | touch file |
mv 命令的底层实现:若源与目标在同一文件系统内,只需修改目录项中的文件名指针(即 i-node 编号不变),速度极快;若跨文件系统,则需复制数据再删除源文件。
【推导过程】 mv 改名与移动的原理对比:
同一文件系统内改名:
目录 A
|-- file1 (i-node 12345)
mv file1 file2 后:
目录 A
|-- file2 (i-node 12345) <-- 同一 i-node,仅目录项改名
(file1 的目录项被删除)
跨文件系统移动:
目录 A 目录 B
|-- file1 |
(fs1) (fs2)
mv A/file1 B/file2:
1. 在 fs2 创建新文件,复制数据
2. 复制完成后删除 fs1 的 file1
<-- 实际发生数据拷贝【记忆锚点】 口诀——“cp 复制留原件,mv 搬家兼改名,rm 删除要慎重”;危险命令记忆:“rm -rf / 是核弹,执行之前三确认”。
【易混对比】
| 操作 | cp | mv |
|---|---|---|
| 原文件 | 保留 | 不保留(被移动/改名) |
| 跨文件系统 | 总是复制 | 若同 fs 则改指针,跨 fs 则复制 |
| 速度 | 与文件大小成正比 | 同 fs 下极快(仅改目录项) |
| 目的 | 备份/多副本 | 整理位置/改名 |
换个问法:“mv 命令在同一文件系统内改名的速度为什么几乎与文件大小无关?”——因为只修改父目录中的目录项,不触碰文件数据块。与第 90 题(top 命令)连考。
【自测】 在 Linux 中,需要把目录 /home/user/data 及其下所有内容复制到 /backup 下,并确保保留原文件的修改时间、权限等属性,应使用什么命令?
答:cp -rp /home/user/data /backup。
-r递归复制目录,-p保留原文件的修改时间、访问时间、权限、属主等属性。〈出处:国网真题库同型题〉
【易错提醒】 ①mv 在同一目录内是改名,跨目录则是移动,本质都是调整目录项;②cp 复制目录必须加 -r,否则报错;③rm -rf 会无提示强制删除,属于危险命令,使用前务必确认路径。
【知识关联】 本题考点:Linux 常用命令——文件改名/移动(mv)与 cp、rm、mkdir 的功能边界。同库题群:第90题(top/ps/kill 进程查看与信号命令)、第98题(chmod 权限命令)。面试:同一文件系统内 mv 只改目录项(rename 系统调用),跨文件系统才退化为复制+删除。
【拓展延伸】 变式:mv 在同一文件系统内只改目录项(inode 不变),跨文件系统则退化为复制+删除(inode 会变)。(本题答案 D,以题干选项为准)
第90题
在 Linux 中,能够以交互方式动态刷新显示当前系统中各进程的 CPU、内存占用情况的命令是( )。 A. top B. ls C. chmod D. kill
答案:A
考点定位:七、I/O 管理与 Linux——Linux 进程查看与终止命令(ps/top/kill)及权限命令(chmod),难度★☆☆☆☆,是 Linux 部分的固定考点。
【结论】 top 命令以交互方式动态刷新显示当前系统中各进程的 CPU、内存占用情况,选 A。
【逐项辨析】
- A 正确——top 实时动态刷新,默认每 3 秒更新一次,支持按 P(按 CPU 排序)、M(按内存排序)、k(终止进程)等交互操作。
- B 错误——ls 只用于列出目录内容,与进程和资源监控完全无关。
- C 错误——chmod 用于修改文件权限,不显示任何进程信息。
- D 错误——kill 用于向进程发送信号(如终止),不做资源展示。
【知识点】 Linux 进程与权限核心命令:
| 命令 | 功能 | 特点 | 常用场景 |
|---|---|---|---|
| ps | 查看进程快照 | 静态,一次性输出 | ps aux, ps -ef |
| top | 实时进程监控 | 动态刷新,交互式 | 按 CPU/内存排序,杀进程 |
| kill | 向进程发信号 | 需指定 PID | kill -9 PID(强制终止) |
| nice/renice | 调整优先级 | 值越小优先级越高 | renice -5 -p PID |
| chmod | 改文件权限 | 符号法或数字法 | chmod 755 file |
| chown | 改文件属主 | 需 root | chown user:group file |
top 输出中各列含义:PID 进程号,USER 属主,PR/NI 优先级,VIRT/RES/SHR 虚拟/物理/共享内存,S 状态,%CPU/%MEM 占用率,TIME+ 累计 CPU 时间,COMMAND 命令名。
【推导过程】 ps 与 top 的工作机制对比:
ps 命令:
用户执行 ps aux
|
v
+------------------+
| 读取 /proc 目录 |
| 下各 PID 子目录 |
| 的 stat 文件 |
+------------------+
|
v
+------------------+
| 一次性格式化输出 |
| (静态快照) |
+------------------+
top 命令:
用户执行 top
|
v
+------------------+
| 循环读取 /proc |
| 计算差值(CPU%) |
+------------------+
|
v
+------------------+
| 清屏刷新显示 |
| (默认 3s 周期) |
+------------------+
|
v
+------------------+
| 等待用户按键 |
| (q 退出,k 杀进程) |
+------------------+【记忆锚点】 口诀——“ps 是快照,top 是直播,kill 是发令枪,chmod 是守门员”;top 交互键:“P 看 CPU,M 看内存,k 杀进程,q 退出”。
【易混对比】
| 维度 | ps | top |
|---|---|---|
| 输出方式 | 静态快照 | 动态刷新 |
| 资源消耗 | 低(执行即退出) | 持续占用终端 |
| 交互能力 | 无 | 有(排序、杀进程等) |
| 适用场景 | 脚本中捕获进程信息 | 实时排查性能问题 |
换个问法:“top 命令中 %CPU 列的总和为什么可能超过 100%?”——因为多核 CPU 下,每个进程的 %CPU 是相对单核计算,所有进程总和可超过 100%(最高可达 100% x 核心数)。与第 89 题(mv 命令)连考。
【自测】 某 Linux 服务器运行缓慢,管理员想找出当前占用 CPU 最高的前 5 个进程并获取它们的 PID、CPU 占用率和命令名。请写出一条命令(非交互式)。
答:ps aux --sort=-%cpu | head -n 6。
--sort=-%cpu按 CPU 降序排列,head -n 6取标题行加前 5 个进程。也可用ps -eo pid,pcpu,comm --sort=-pcpu | head -n 6精简输出。〈出处:大厂面试高频〉
【易错提醒】 ①ps 是静态快照,top 是动态刷新,这是两者最本质的区别;②kill 后接的是进程号 PID,不是命令名,kill -9 为强制终止;③chmod 755 表示属主读写执行(7)、同组与其他用户读和执行(5),不要与 chown(改属主)混淆。
【知识关联】 本题考点:Linux 进程查看与信号命令(top/ps/kill)及权限命令对照。同库题群:第79–88题(I/O 与系统行为背景)、第91–100题(安全与权限,chmod/chown);补题相关:补-01(主库点名第90题:ps/kill 查看与终止、僵尸 STAT=Z)、补-05(上下文切换与进程状态观察)。Linux命令:top/htop 交互式动态刷新;ps aux、ps -eo pid,pcpu,pmem,stat,cmd --sort=-pcpu 静态快照;kill -TERM/-9 PID 发信号;nice/renice 调优先级;chmod/chown 管文件权限而非进程。面试追问:①ps 与 top 的本质区别(静态一次输出 vs 动态刷新交互)?②kill 杀不掉僵尸进程的原因(进程已终止,信号无接收主体,须父进程 wait)?
【拓展延伸】 变式:要「非交互找出 CPU 前 5 进程」→ ps aux --sort=-%cpu | head -n 6;要「内存占用」→ 同理按 %mem 排序或 top 按 M。工程:生产上常用 pidstat、atop、/proc 采集,容器内再叠加 cgroup 限额(cpu.max);强制终止优先 kill -15 让进程清理资源,kill -9 作最后手段。与补-01 连考:先 ps -ef --forest 判父子关系,再决定杀父还是等回收。(本题答案 A,以题干选项为准)