第 5 章 名词库
这一页是复习主入口。 目标是把第 5 章的名词收全,并把每个词的边界和适用范围钉死。
每条最多四行:是(定义)/不是(划掉最常见的误解)/易混(成对的对手)/范围(该结论在什么条件下才成立)。
建设进度:✅ 5.1 I/O 管理概述 ✅ 5.2 设备独立性软件 ✅ 5.3 磁盘和固态硬盘 (第 5 章完整)
5.1.1 I/O 设备
块设备 / 字符设备
- 是:块设备以数据块为单位存取,有结构、可寻址,速率高,可用 DMA;字符设备以字符为单位,无结构、不可寻址,速率低,常用中断驱动。
- 不是:字符设备不可寻址——它的数据是”流过去的”,没有编号也不在设备上驻留,“读第 5 个字符”无法定义。
- 易混:判据是数据是”存放着的”还是”流过去的”。
- 范围:块设备配 DMA、字符设备配中断,因为字符设备本就一个字符一个字符地来,用 DMA 无意义。
独占设备 / 共享设备 / 虚拟设备
- 是:独占设备一段时间内只允许一个用户访问(打印机);共享设备可由多个进程访问(磁盘);虚拟设备由 SPOOLing 造出。
- 不是:共享设备不是”同一时刻多个进程同时访问”——是宏观上同时、微观上交替。
- 易混:↔ 并发与并行,判据完全相同。
- 范围:共享设备必须可寻址且可随机访问(否则各进程的读写位置会互相搅乱);只有独占设备可能引起死锁(共享设备不满足互斥条件)。
设备控制器 / I/O接口 / I/O控制器
- 是:CPU 与设备之间的中间层,由三部分组成——与 CPU 的接口(数据线/地址线/控制线)、与设备的接口、I/O 逻辑。
- 不是:两个”接口”只负责连通,真正对命令译码并实施控制的是 I/O 逻辑。
- 易混:六项功能——接收和识别命令、数据交换、标识和报告设备状态、地址识别、数据缓冲、差错控制。
I/O 逻辑
- 是:设备控制器中用于实现设备控制功能的部件,对收到的命令进行译码后控制设备。
- 范围:选择题问”控制器中实现设备控制功能的是”,答案是 I/O 逻辑,不是 CPU、不是两个接口。
I/O 端口(三类寄存器)
- 是:数据寄存器(数据缓冲)、状态寄存器(获取状态,只读)、控制寄存器(CPU 写入,设置工作方式/启停设备)。
- 范围:问”为了便于上层软件的编制,控制器需提供什么”,答案是控制寄存器、状态寄存器和控制命令。
独立编址 / 内存映射 I/O
- 是:独立编址为端口单独分配 I/O 端口空间,需专门的 I/O 指令;内存映射 I/O 把端口映射进内存地址空间,用普通访存指令即可操作。
- 易混:独立编址下 I/O 指令是特权指令,保护天然更严;内存映射编程更方便。
- 范围:内存映射 I/O 描述的是访问方式,并不否定缓冲的必要性(真题陷阱)。
I/O 通道
- 是:一种特殊的处理机,有自己的通道指令,能执行存放在主存中的通道程序,独立完成一整批 I/O 操作,全部完成后才中断 CPU 一次。
- 不是:通道是硬件——缓冲池、SPOOLing、内存覆盖技术都是软件。
- 易混:委托链 CPU →(一批)通道 →(一次)控制器 → 设备,越往上一次委托完成的工作越多。
控制线上的控制信号 / 数据线上的控制信息
- 是:控制线传的是总线动作的性质(读/写/中断请求等硬件时序信号,由硬件直接解释);数据线传的”控制信息”是给设备的命令字(如”磁头移到第 30 道”),本质是数据,写进控制寄存器后由 I/O 逻辑译码。
- 易混:一句话——控制线决定”这次总线操作是什么性质”,数据线承载”具体要做什么”。
5.1.2 I/O 控制方式
程序直接控制方式
- 是:CPU 发出命令后不断轮询状态寄存器,就绪后由 CPU 搬一个字,重复至结束。
- 不是:不会使进程进入阻塞态——进程一直占着 CPU 轮询,始终处于运行态。
- 范围:这是高频反直觉点。阻塞态的定义是”因等待某事件而暂时无法运行”,轮询进程随时都在运行。
中断驱动方式
- 是:CPU 发出命令后转去执行其他程序,设备就绪后发中断,CPU 在中断服务程序中搬数据。
- 范围:每传送一个字就中断一次——这是它与 DMA 最本质的差别。
DMA 方式
- 是:数据直接在设备与内存之间成块传送,不经过 CPU。三阶段:预处理(CPU 设寄存器)→ 传送(DMA 控制器搬)→ 后处理(中断处理程序善后)。
- 不是:“不经过 CPU”指数据不流经 CPU 寄存器,但 DMA 与 CPU 共享总线,仍会周期窃取、消耗总线带宽。
- 易混:四类寄存器——CR(命令/状态)、MAR(内存地址)、DR(数据)、DC(数据计数)。
- 范围:预处理阶段请求 I/O 的进程处于运行态(内核态执行驱动);后处理阶段仍处于阻塞态;后处理由中断处理程序完成,不一定是请求 I/O 的那个进程。
通道控制方式
- 是:CPU 发一条指令指明通道程序位置,通道自主完成一整批操作后才中断一次。
- 易混:四种方式的演进主线——中断解放”等待”,DMA 解放”搬运”,通道解放”组织”。
中断响应 vs 中断处理
- 是:保存断点、切换到内核态、跳转中断入口由硬件(中断隐指令)完成;把数据从控制器读进内存由软件(中断处理程序)完成。
- 范围:问”一定不由硬件完成的”,答案是主机获取设备输入;“判断中断类型”在向量中断中可由硬件完成,故不选。
5.1.3 I/O 软件层次结构
四层结构
- 是:自下而上为中断处理程序 → 设备驱动程序 → 设备独立性软件 → 用户层 I/O 软件。
- 不是:中断处理程序在最底层不是因为它最不重要,而是因为它由硬件反向触发,不在自上而下的调用链上。
- 易混:判据——“换一台设备这件事还成不成立”:成立归设备独立性软件,不成立归驱动程序。
设备独立性软件(六项公有操作)
- 是:传送抽象要求、设备保护(权限检查)、差错控制、缓冲管理、设备分配与回收、逻辑设备名→物理设备名映射。
- 不是:不负责向设备寄存器写命令,也不负责把二进制整数转成 ASCII(那是用户层的格式化)。
- 范围:缓冲区管理归设备独立性软件——这一条被正反两道真题反复考。
设备驱动程序
- 是:与硬件直接相关,把抽象要求翻译成具体要求(逻辑块号→盘面/磁道/扇区),检查合法性,写控制寄存器启动设备,响应本设备中断。
- 不是:通用缓冲区管理不属于驱动程序(真题 33 答案 D)。
- 易混:它面对的是”一台设备”,设备独立性软件面对的是”一类设备”。
用户层 I/O 软件
- 是:产生 I/O 请求、格式化 I/O、SPOOLing。
- 范围:“把二进制整数转换成 ASCII 码打印”属于用户层,不是设备独立性软件——格式化发生在数据进入 I/O 系统之前。
5.1.4 应用程序 I/O 接口
三类接口
- 是:字符设备接口(
get/put)、块设备接口(read/write/seek,含内存映射文件接口)、网络设备接口(套接字 socket、select)。 - 易混:划分依据是设备的根本属性——字符设备不可寻址故无位置参数;块设备可寻址故有
seek;网络需连接管理与多路复用。
I/O 保护
- 是:I/O 指令是特权指令,只能在内核态执行;用户态既不能执行 I/O 指令,也不能访问 I/O 端口所在的地址空间。
- 不是:用户程序不能直接读写设备寄存器——唯一通路是系统调用。
- 范围:完整通路是 用户程序 → 系统调用 → 内核检查权限与参数 → 设备独立性软件 → 驱动程序 → 控制器 → 设备;检查在最前,操作硬件在最后。
阻塞 I/O / 非阻塞 I/O
- 是:阻塞 I/O 使进程转为阻塞态直到完成;非阻塞 I/O 立即返回,返回值说明实际完成了多少。
- 不是:阻塞 I/O ≠ 程序直接控制方式——前者说进程挂不挂起,后者说 CPU 怎么获知就绪;且两者对进程状态的结论相反。
- 易混:↔ 同步/异步。判据:阻塞与否看进程挂不挂起;同步与否看谁完成搬运、如何通知。
5.2.1 设备独立性软件
设备独立性(设备无关性)
- 是:用户程序使用逻辑设备名,系统在执行时转换为物理设备名。
- 不是:独立的是”哪一台”,不是”哪一类”——块设备与字符设备的接口差异永远存在。
- 易混:三个好处——方便用户编程、不受具体机器环境限制、便于程序移植。
逻辑设备表(LUT)
- 是:表项含逻辑设备名、物理设备名、设备驱动程序的入口地址三项。
- 易混:第三项常被漏——一次查表同时解决”用哪台”和”怎么驱动”。
- 范围:整个系统一张 LUT 则不同进程不允许重名;每个用户一张则允许重名(与单级/两级目录同构)。
绝对号 / 相对号
- 是:绝对号是系统为每台设备统一编的号,面向物理设备,供系统使用;相对号是用户在程序中定义的逻辑号。
- 易混:记法——“绝对”对应物理、系统、全局唯一;“相对”对应逻辑、用户、程序内部。
5.2.2 高速缓存与缓冲区
磁盘高速缓存
- 是:逻辑上属于磁盘,物理上是驻留在内存中的盘块。两种实现:固定大小的独立空间;把未利用的内存作为共享缓冲池。
- 易混:↔ 缓冲区,见下条。
缓冲区 vs 高速缓存
- 是:高速缓存存的是低速设备上数据的复制品(原件仍在低速设备上);缓冲区存的是正在传输的数据(源头不一定有副本)。
- 易混:判据是”里面的数据在源头还有没有”。
- 范围:高速缓存赌的是局部性原理(下次还会访问);缓冲区赌的是双方节奏不同。
引入缓冲区的四个目的
- 是:① 缓和 CPU 与 I/O 设备速度不匹配;② 减少对 CPU 的中断频率,放宽中断响应时间限制;③ 解决基本数据单元大小不匹配;④ 提高 CPU 与 I/O 设备的并行性。
单缓冲 / 双缓冲
- 是:单缓冲
;双缓冲 。其中 = 设备→缓冲区, = 缓冲区→用户区, = CPU 处理。 - 不是:不是简单串行相加——完全串行的那个选项是标准陷阱。
- 易混:记法是看
在不在 里:单缓冲只有一个缓冲区,搬运时设备必须干等,故 在外;双缓冲下设备侧 与 CPU 侧 完全并行,故 在内。 - 范围:公式给的是”稳态周期”——第一块之前还要多等一次输入,问
块总时间时要补首尾。
缓冲池
- 是:三个队列(空缓冲队列、输入队列、输出队列)+ 四种工作缓冲区(收容输入 hin、提取输入 sin、收容输出 hout、提取输出 sout)。
- 易混:命名规律——“收容”=放进去,“提取”=取出来;输入 = 设备→内存,输出 = 内存→设备。
- 范围:缓冲池区别于多缓冲区的关键是**“公用”——可供多个进程共享,且既能用于输入也能用于输出**。
缓冲区管理的核心问题
- 是:实现进程访问缓冲区的同步。缓冲区本质是生产者—消费者共享资源。
- 不是:不是”选择大小”或”决定数量”——那些是性能调优,同步是正确性问题。
5.2.3 设备分配与回收
设备分配要考虑的三项
- 是:设备的固有属性、设备分配算法、设备分配的安全性。
- 不是:“及时性”不是设备分配考虑的问题——那是实时调度或 I/O 性能指标。
安全分配方式 / 不安全分配方式
- 是:安全分配方式下进程发出 I/O 请求后立即阻塞,一个时段只用一台设备;不安全分配方式下进程继续运行,可再提请求。
- 不是:“安全”指的是”不会死锁”,与数据安全无关。
- 范围:安全分配方式破坏了”请求和保持”条件故不会死锁,代价是 CPU 与 I/O 串行。
静态分配 / 动态分配
- 是:静态分配在进程运行前一次性分完全部设备、控制器、通道,直到进程撤销才释放;动态分配按需分配、用完即还。
- 易混:↔ 安全/不安全分配。判据:安全与否问”提出请求后还能不能跑”,静态与否问”什么时候分”。
- 范围:独占设备往往采用静态分配,共享设备往往采用动态分配(真题选项 D 的错处正在于说共享设备用静态分配)。
四张控制表(SDT / DCT / COCT / CHCT)
- 是:SDT 全系统一张(总目录,指向各 DCT);DCT 每台设备一张;COCT 每个控制器一张;CHCT 每个通道一张。
- 不是:不是四组无关的字段——它们是一条从下往上的指针链。
- 易混:DCT 只回答四个问题:我是谁(类型/标识符)、我忙不忙(状态)、谁在等我(队首指针)、我接在谁身上(→ COCT 指针)。COCT、CHCT 结构同构。
- 范围:四张表存在的唯一理由是”一次 I/O 需要设备、控制器、通道三样同时空闲”;三个等待队列的存在理由是进程可能卡在三个不同的地方。
设备分配步骤
- 是:SDT → DCT(分设备)→ COCT(分控制器)→ CHCT(分通道),三者齐备才启动 I/O;任一忙则挂到对应的等待队列。
- 范围:回收时反向进行,且必须唤醒三个队列上的等待进程——漏掉任一处,对应队列上的进程会永久睡眠。
5.2.4 SPOOLing 技术
SPOOLing(假脱机技术)
- 是:用软件模拟脱机技术——用磁盘代替磁带,用两个系统进程代替外围控制机。
- 不是:“SPOOLing 系统中不需要独占设备”是错的——物理设备依然存在,也依然一次只能服务一个任务。
- 易混:SPOOLing 是软件(对照:通道是硬件)。
- 范围:三个特点——提高 I/O 速度、把独占设备改造为共享设备、实现虚拟设备功能。
输入井 / 输出井
- 是:磁盘上开辟的两块存储空间,模拟脱机时的磁带。
- 不是:井在磁盘上,缓冲区在内存中——两者位置不同。
- 范围:用户进程实际分配到的是”外存区,即虚拟设备”,不是真设备,也不是”设备的一部分存储区”。
SPOOLing 的软件组成
- 是:预输入程序、井管理程序、缓输出程序。
- 易混:题眼是”预”与”缓”两个字——“预输入”= 运行前先读进输入井,“缓输出”= 先在输出井缓着。
提高单机资源利用率的关键技术
- 是:多道程序设计技术,不是 SPOOLing。
- 范围:SPOOLing 提高的是某一类设备的利用率(局部);题干问的”单机资源”指整机 CPU、内存、I/O 全体。且 SPOOLing、虚拟技术、交换技术全都建立在多道程序设计之上。
I/O 性能优化的四个方向
- 是:① 减少 I/O 次数(磁盘高速缓存、预读、延迟写、合并小 I/O);② 提高并行性(中断、DMA、多缓冲、异步 I/O);③ 优化访问顺序(磁盘调度、连续布局);④ 减少 CPU 参与(DMA、通道)。
- 范围:“提高整机资源利用率”不属于这四条中的任何一条——那是多道程序设计。这正是真题 18 的陷阱。
5.2.5 设备驱动程序接口
统一接口
- 是:两个方向——每个驱动程序与操作系统之间接口相同或相近;驱动程序与内核之间接口相同(内核按同一张函数表调用)。
- 易混:与 VFS “下层必须提供规定的一组函数”完全同构。
- 范围:驱动接口面向操作系统,设备独立性面向用户程序——一上一下,共同构成”设备可插拔”。
驱动程序的五点特殊性
- 是:① 是进程与设备控制器之间的通信程序;② 与硬件特性紧密相关;③ 与 I/O 控制方式紧密相关;④ 一部分必须用汇编书写;⑤ 必须可重入。
可重入
- 是:函数执行到一半被打断、又被重新进入时,两次执行互不干扰;做法是不使用全局可变状态。
- 范围:驱动程序被重入有两个来源——多个进程同时请求同一设备;执行期间来了本设备的中断。
5.3.1 磁盘
柱面
- 是:所有盘面上处于同一半径位置的磁道的集合。
- 易混:所有磁头固定在同一磁臂上一起移动,因此磁臂一动,所有磁头同时对准同一柱面。
磁盘地址结构
- 是:柱面号 | 盘面号 | 扇区号,柱面号在最高位。
- 不是:不是”盘面号在最高位”——那样读连续数据时寻道次数会暴增。
- 范围:理由是三种动作代价不同——换柱面要移动磁臂(最慢),换盘面只是电子切换(最快)。因此连续存放时扇区号进位应进到盘面号,不是柱面号。
磁盘访问时间
- 是:
。寻道 ;旋转延迟 ;传输 。 - 易混:寻道时间最大(毫秒级机械运动),这是所有磁盘调度算法的唯一优化目标。
旋转延迟
- 是:磁头定位到目标磁道后,等待目标扇区转到磁头下方的时间。
- 范围:与磁盘调度算法无关(调度优化的是寻道);与空闲空间分配程序、文件的物理结构有关(它们决定数据落在哪个扇区)。
5.3.2 磁盘的管理
三道工序
- 是:① 低级格式化(物理格式化)→ ② 分区 → ③ 逻辑格式化(高级格式化),顺序不可颠倒。
- 易混:低级格式化管”扇区”,分区管”分区表”,逻辑格式化管”文件系统”。
低级格式化
- 是:把磁盘分成扇区,每个扇区写成”头 + 数据区域(512B) + 尾”,头尾含扇区校验码 ECC。通常由厂商完成。
- 范围:“确定磁盘扇区校验码所占位数”属于低级格式化,不是逻辑格式化(2017 真题干扰项 III)。
逻辑格式化(高级格式化)
- 是:在分区上创建文件系统——建立根目录、初始化空闲磁盘块数据结构、建立引导块。
- 范围:操作系统引导扇区产生于逻辑格式化,不是分区时、不是低级格式化时、更不是出厂自带。分区发生在逻辑格式化之前,不属于它。
引导块 / 自举程序
- 是:ROM 中只存放很小的自举装入程序,完整的自举程序存放在磁盘的启动块上。拥有启动分区的磁盘称为启动磁盘 / 系统磁盘。
- 范围:这样两段式设计的理由是——更新自举程序只需改写磁盘,不必更换 ROM。
坏块管理
- 是:简单磁盘在逻辑格式化时扫描并在 FAT 中标记
BAD;复杂磁盘由控制器用扇区备用或扇区滑动顶替。 - 易混:前者对操作系统可见,后者完全透明——后者把问题解决在了更低的层次。
5.3.3 磁盘调度算法
FCFS
- 是:严格按请求到达顺序服务。
- 不是:性能最差,但不会饥饿,也不会磁臂黏着。
- 范围:它是唯一完全不参考磁头当前位置的算法,因此是唯一不会被局部密集请求绑架的算法(2018 真题答案)。
SSTF
- 是:每次选择距当前磁头最近的请求。
- 不是:不能保证平均寻道时间最短(局部最优≠全局最优)。
- 范围:可能饥饿,也会磁臂黏着——脚下的距离永远是 0。
SCAN / LOOK / C-SCAN / C-LOOK
- 是:构词法——带 C(Circular)= 单向服务,返回途中不服务;带 LOOK = 到最远请求就掉头;SCAN(不带 LOOK)= 必须走到端点。
- 易混:SCAN 与 LOOK 的服务顺序完全相同,差别只在计算移动距离时体现。
- 范围:SCAN 与 C-SCAN 同样会导致磁臂黏着——它们只规定了方向,未规定一个磁道上最多服务几个请求。
磁臂黏着
- 是:系统总是访问某个磁道而不响应其他磁道的请求。
- 范围:判断方法——问”若某磁道请求源源不断,该算法会不会一直服务它”。SSTF、SCAN、C-SCAN 都会;只有 FCFS 不会。
交替编号 / 错位命名
- 是:交替编号让逻辑相邻的扇区在物理上间隔若干扇区;错位命名让相邻盘面的扇区起始位置错开一个角度。
- 易混:交替编号解决同一磁道内的连续读,错位命名解决换盘面时的连续读。
- 范围:两者优化的是旋转延迟,而调度算法优化的是寻道——不是一回事。
5.3.4 固态硬盘
闪存翻译层(FTL)
- 是:把操作系统发来的逻辑块号翻译成实际的物理页地址,对操作系统伪装成一块普通磁盘。
- 范围:正因为有 FTL,文件系统层的一切结论在固态硬盘上完全不变;变的只是物理层。
页 / 块
- 是:读写以页为单位,擦除以块为单位,且一个页只有被擦除之后才能写入。
- 范围:“读写单位与擦除单位不一致”是固态硬盘一切复杂性的根源——写放大、磨损均衡、FTL 映射全由它引起。
动态磨损均衡 / 静态磨损均衡
- 是:动态在写入时优先选择擦除次数少的空闲块;静态在此基础上周期性地迁移长期不改写的冷数据块。
- 不是:静态磨损均衡不是”每次写入都选冷数据块”——那是选项 D 的错误说法;它是后台的周期性迁移。
- 范围:静态通常优于动态,因为它把冷数据块也纳入了均衡范围。
固态硬盘与机械硬盘的对照
- 是:固态硬盘无机械部件,寻道时间与旋转延迟不存在,因此所有磁盘调度算法失去意义,磁臂黏着也不存在。
- 不是:固态硬盘的优势主要在随机存取,不在连续存取(真题选项 B 的错处);写入虽受写放大影响,但总体性能仍强于机械硬盘。
高频”范围限定”清单
下表集中列出最容易被抽掉限定条件的结论。看到题干把限定词去掉,就是陷阱。
| 结论 | 成立的范围 |
|---|---|
| I/O 指令 | 是特权指令;用户程序访问设备的唯一通路是系统调用 |
| I/O 优化的四条线 | 不含”提高整机资源利用率”——那是多道程序设计 |
| 字符设备可寻址 | 不成立——它的数据是”流过去的”,没有位置概念 |
| 共享设备同一时刻多进程访问 | 不成立——宏观同时、微观交替 |
| 共享设备的前提 | 必须可寻址且可随机访问 |
| 分配设备可能死锁 | 仅独占设备;共享设备不满足互斥条件 |
| 控制器中实施控制的部件 | I/O 逻辑,不是 CPU、不是两个接口 |
| 通道是软件 | 不成立——通道是硬件;缓冲池/SPOOLing/覆盖是软件 |
| 程序直接控制方式会阻塞进程 | 不成立——占着 CPU 忙等,始终运行态 |
| DMA 不经过 CPU | 指不经过 CPU 寄存器;仍占总线(周期窃取) |
| DMA 后处理时进程状态 | 仍是阻塞态;且后处理不一定由请求 I/O 的进程执行 |
| 中断过程全由硬件完成 | 不成立——获取设备输入由软件 |
| 缓冲区管理归驱动程序 | 不成立——归设备独立性软件 |
| 二进制转 ASCII 归设备独立性软件 | 不成立——归用户层 |
| 内存映射 I/O 不需要缓冲 | 不成立——访问方式与是否需缓冲正交 |
| 缓冲区管理最重要的问题 | 同步,不是大小或数量 |
| 单缓冲公式 | |
| 双缓冲公式 | |
| 缓冲公式给的是什么 | 稳态周期;问 |
| 及时性是设备分配考虑因素 | 不成立 |
| 共享设备用静态分配 | 不成立——共享设备用动态分配 |
| 四张表为什么是四张 | 一次 I/O 需设备+控制器+通道三样同时空闲 |
| SPOOLing 不需要独占设备 | 不成立——物理设备依然存在 |
| 用户进程在 SPOOLing 下分到什么 | 外存区(虚拟设备),不是真设备 |
| 提高单机资源利用率的关键 | 多道程序设计,不是 SPOOLing |
| 旋转延迟与调度算法有关 | 不成立——调度优化的是寻道 |
| 磁盘地址结构 | 柱面号在最高位;连续存放时扇区号进位到盘面号 |
| 引导扇区产生时机 | 逻辑格式化(高级格式化) |
| 扇区校验码位数 | 低级格式化决定 |
| 磁臂黏着 | 只有 FCFS 不会;SCAN/C-SCAN 同样会 |
| SCAN 可以提前掉头 | 不成立——必须到端点;只有 LOOK 可提前 |
| 静态磨损均衡每次写入选冷块 | 不成立——它是周期性后台迁移 |
| 固态硬盘优势在连续存取 | 不成立——优势主要在随机存取 |
| 磁盘调度算法适用于固态硬盘 | 不成立——寻道与旋转延迟都不存在 |
链接
- 🏠 返回总览:操作系统第 5 章:输入/输出管理总览
- 📜 原始提问档案:第 5 章 原始提问档案(本地资料)
- 📖 第 4 章名词库:第 4 章名词库