第 1 章 操作系统概述
本章地位:概述章是操作系统的「世界观」——直接考分不多(选择题 1~2 道,约 2~4 分),但用户态 / 核心态、中断 / 异常、系统调用这三大概念是全科目暗线:第 2 章进程切换、第 3 章缺页处理、第 5 章 I/O 控制全部建立在本章机制之上。真题最爱考三类:① 特权指令与 CPU 状态转换时机(判断题化的选择题);② 事件归类——缺页、时钟中断、trap 各属于中断 / 异常的哪一类;③ 系统调用执行流程排序。本章把这三件事一次讲透,并给出 5 幅图把机制「可视化」。
1.1 考情与分值:操作系统在 408 中的位置
| 章 | 主题 | 分值权重 | 大题考点 |
|---|---|---|---|
| 第 1 章(本章) | 概述:概念、特征、发展、运行环境、中断异常、系统调用 | ★(2~4 分) | — |
| 第 2 章 | 进程与线程:调度、同步互斥(PV)、死锁 | ★★★★★(最重) | PV 操作大题(几乎每年) |
| 第 3 章 | 内存管理:连续 / 分页 / 分段、虚拟内存、页面置换 | ★★★★ | 与组员结合的地址转换 / 置换计算 |
| 第 4 章 | 文件管理:文件系统布局、目录、磁盘组织 | ★★★ | 文件系统 / 磁盘计算(常混合) |
| 第 5 章 | 输入 / 输出管理:I/O 接口、缓冲、磁盘调度 | ★★★ | 磁盘调度 / 缓冲区计算 |
| 考点 | 题型 | 热度 |
|---|---|---|
| 四大特征辨析(并发 / 共享互为存在条件) | 选择 | ★★★★ |
| 发展阶段对比(多道批处理 vs 分时 vs 实时) | 选择 | ★★★ |
| 特权指令判断、用户态 / 核心态转换时机 | 选择 | ★★★★★ 每年必考 |
| 中断 / 异常分类(缺页、时钟中断归哪类) | 选择 | ★★★★★ 真题反复考 |
| 系统调用流程排序、与库函数区别 | 选择 | ★★★★ |
| 大内核 / 微内核、启动过程 | 选择 | ★★ |
1.2 操作系统的概念、功能与特征 高频考点
1.2.1 三种视角看操作系统
- 资源管理者:管理处理机、存储器、文件(信息)、设备四大类资源——对应四大管理功能;
- 用户与硬件之间的接口:提供命令接口、程序接口(系统调用)和 GUI;
- 扩充机器 / 虚拟机:在裸机之上覆盖一层 OS,把复杂硬件细节抽象成简洁的服务(如「文件」抽象了磁盘块),是对计算机资源的抽象。
1.2.2 四大功能与三类接口
- 处理机管理:进程 / 线程的创建、撤销、调度、同步、通信(第 2 章);
- 存储器管理:内存分配、保护、扩充(虚拟存储,第 3 章);
- 文件管理:目录组织、文件存储空间管理、共享与保护(第 4 章);
- 设备管理:I/O 设备分配、缓冲、驱动调度(第 5 章)。
② 程序接口(只能在程序中调用):由一组系统调用组成,是用户程序取得 OS 服务的唯一途径;
③ GUI 图形界面:窗口、图标、菜单,本质仍是命令接口的图形化封装。
② 程序接口 = 系统调用的集合,命令接口不是系统调用;
③ 用户不能直接使用特权指令访问硬件,必须经系统调用「请 OS 代办」——这正是 1.6 节的伏笔。
1.2.3 四大特征:并发 · 共享 · 虚拟 · 异步
- 并发:宏观上多个事件同时发生、微观上交替执行(单核即可并发);并行则是同一时刻真正同时执行,需要多核 / 多处理机支持——并行是并发的特例;
- 共享:系统资源可供内存中多个并发进程共同使用。两种方式:互斥共享(如打印机,一段时间内只允许一个进程访问,称「临界资源」)与同时访问(如磁盘、可重入代码,宏观上允许多个进程同时使用,微观上仍可能是分时交替);
- 虚拟:把一个物理实体变为若干逻辑对应物。时分复用技术→虚拟处理机;空分复用技术→虚拟存储器;
- 异步:进程以不可预知的速度向前推进(走走停停)。只要运行环境相同,OS 要保证进程多次运行的结果相同(结果的确定性 ≠ 速度的确定性)。
② 虚拟技术不能增加资源本身:4GB 物理内存虚拟成 8GB 地址空间,能运行更大的程序,但任何时刻真正驻留内存的数据量仍受 4GB 限制;
③ 异步性 = 速度不可预知,不等于结果不可预知(结果由进程自身逻辑决定);
④ 单处理机系统:进程之间只能并发不能并行(2009 真题考过「处理机与设备、处理机与通道、设备与设备可并行」,见例 2)。
下列关于操作系统基本特征的叙述中,正确的是( )
A. 若无并发,系统资源仍可被多道程序共享
B. 虚拟存储技术增大了内存的物理容量
C. 并发与共享互为存在条件
D. 异步性是指进程运行的结果不可预知
查看解答
C。逐项分析:
A 错:共享的对象是「并发进程」,没有并发(内存中只有一道程序)就不存在「多个进程共用资源」的问题,共享失去意义;
B 错:虚拟存储增大的是逻辑地址空间(可用「视图」),物理内存容量由硬件决定,OS 无法凭空创造;
C 对:并发与共享互为存在条件,这是四大特征中最常考的一句话;
D 错:异步性指进程推进速度不可预知(走走停停);只要运行环境相同,进程每次运行的结果必须相同,否则程序就没有确定性了。
判断下列说法的正误:(1) 联机命令接口主要用于批处理系统;(2) 程序接口由系统调用组成;(3) GUI 本质上也是一种命令接口;(4) 操作系统属于系统软件,是计算机系统中最基本的系统软件。
查看答案
(1) 错:联机命令接口 = 逐条交互执行,用于分时系统;批处理系统用脱机命令接口(作业控制语言)。
(2) 对:程序接口 = 一组系统调用。
(3) 对:图形界面最终仍要转化为命令 / 系统调用来执行。
(4) 对:OS 是紧贴裸机的第一层软件,其他所有软件都建立在它之上。
判断:(1) 共享中的「同时访问」方式要求微观上绝对同一时刻使用资源;(2) 打印机属于可同时访问的共享资源;(3) 单处理机系统中两个进程可以并行。
查看答案
(1) 错:同时访问指宏观上允许多个进程「同时」使用(如磁盘、可重入代码),微观上仍可能是分时交替进行;
(2) 错:打印机是典型互斥共享资源(临界资源),一段时间内只允许一个进程使用;
(3) 错:单 CPU 同一时刻只能执行一个进程,两进程只能并发(交替);并行需要多核 / 多处理机。
1.3 操作系统的发展历程
1.3.1 从手工操作到多道批处理
- 手工操作阶段(无 OS):用户独占全机,CPU 等待人工装纸带 / 拨开关。矛盾:人机矛盾——CPU 速度远快于人工操作,资源利用率极低;
- 单道批处理系统:磁带上成批作业,由监督程序自动逐个处理,实现了自动性。但内存一次仅一道作业,作业运行 I/O 时 CPU 空闲(CPU 与 I/O 串行),利用率仍低;
- 多道批处理系统:内存同时放多道程序,一道运行 I/O 时 CPU 转去运行另一道——宏观上并行、微观上串行。优点:资源利用率高、系统吞吐量大;缺点:无交互性(用户无法干预)、作业平均周转时间长。
② 评价批处理系统的指标常用平均周转时间:作业 \(i\) 的周转时间 \(T_i =\) 完成时间 \(-\) 提交时间,带权周转时间 \(W_i = T_i \div\) 实际运行时间(\(W_i\ge 1\),越接近 1 越好)。
在单处理机系统中,下列可并行的是( )
Ⅰ. 进程与进程 Ⅱ. 处理机与设备 Ⅲ. 处理机与通道 Ⅳ. 设备与设备
A. Ⅰ、Ⅱ、Ⅲ B. Ⅰ、Ⅱ、Ⅳ C. Ⅰ、Ⅲ、Ⅳ D. Ⅱ、Ⅲ、Ⅳ
查看解答
D。单 CPU 系统中同一时刻只能运行一个进程,故进程与进程之间只能「并发」不能「并行」,Ⅰ 错;
CPU 在执行计算的同时,设备 / 通道可以独立进行数据传输(通道本身就是小型处理机),Ⅱ、Ⅲ、Ⅳ 都可以真正同时工作——这也解释了「单道批处理中 CPU 等 I/O」浪费有多大:计算与 I/O 本可重叠。
易错:把「并发」当「并行」。并发是宏观同时微观交替,单核即可;并行要求多执行部件真正同时。
1.3.2 分时系统与实时系统
| 系统类型 | 内存驻留 | 交互性 | 追求目标 | 关键机制 / 缺陷 |
|---|---|---|---|---|
| 手工操作 | 单道(无 OS) | 人工操作 | — | 人机矛盾,CPU 大量空等 |
| 单道批处理 | 一道作业 | 无 | 自动性 | CPU 与 I/O 串行,利用率仍低 |
| 多道批处理 | 多道作业 | 无 | 利用率、吞吐量 | 宏观并行微观串行;无交互、周转长 |
| 分时系统 | 多道 + 终端 | 强(人机对话) | 响应时间(及时性) | 时间片轮转 RR |
| 实时系统 | 多道 | 视具体系统 | 截止期限 + 可靠性 | 按紧急度抢占调度;硬 / 软实时 |
1.3.3 其他类型操作系统
② 分布式 OS:多台计算机统一为一个系统,任务被自动分配到多机并行处理;具有透明性(用户感觉不到多机存在)、同一 OS 管理全部资源、协作完成同一任务,任何一台机器失效可由其他机器接管(高可用);
③ 个人计算机 OS(Windows / macOS / 桌面 Linux):界面友好、生态丰富;服务器 OS、嵌入式 OS(手机、路由器)均为 OS 在不同场景的形态。
将下列特征对应到正确的系统类型(多道批处理 / 分时 / 实时):(1) 系统可靠性要求最高,常配双机热备份;(2) 追求系统吞吐量与资源利用率,用户作业成批处理、无法干预;(3) 多终端共享主机,每个用户感觉独占机器;(4) 时间片太小会导致进程切换开销占比过大。
查看答案
(1) 实时系统(硬实时尤其如此,控制任务失败可能造成灾难);
(2) 多道批处理(无交互是它的主要缺点,换来高利用率);
(3) 分时系统(独立性:各终端互不干扰);
(4) 分时系统(时间片轮转的时间片取舍两难——太小开销大,太大及时性差)。
1.4 运行环境:用户态与核心态 高频考点
1.4.1 CPU 的两种状态与 PSW
- 核心态(管态、内核态):可以执行全部指令(含特权指令)、访问所有寄存器和存储区。OS 内核运行于此;
- 用户态(目态):只能执行非特权指令。应用程序运行于此,硬件防它直接染指关键资源。
1.4.2 特权指令与非特权指令
- I/O 指令(启动 / 访问外设端口);
- 置时钟指令(设置时钟初值);
- 开 / 关中断指令、修改 PSW 状态标志;
- 存取用于内存保护的寄存器:修改页表基址 / 段表基址寄存器、设置存储保护界限;
- 停机(halt)指令。
② 判断某指令是否特权,标准是:是否危及系统安全 / 是否直接操纵关键硬件资源(I/O、时钟、中断、地址翻译基址、停机),普通的取数、加法、跳转都不是;
③ 用户态程序执行特权指令会引发异常(非法使用特权指令),CPU 检测后转入相应处理——不是「静默忽略」。
1.4.3 状态转换的时机(高频)
- 用户态 → 核心态:唯一入口是「中断 / 异常」机制。三种触发情形:① 执行 trap 指令发起系统调用;② 外中断(如时钟中断、I/O 完成中断);③ 异常(如缺页、除零、地址越界、非法特权指令)。此「升级」过程由硬件(中断机制)自动完成;
- 核心态 → 用户态:OS 执行一条修改 PSW 状态位的特权指令主动「降级」(如系统调用返回、启动新进程时)。
② 状态转换与「进程切换」是两回事:系统调用先升入核心态,是否切换进程取决于调度(如时间片未用完则原进程返回用户态继续);
③ 原语(如阻塞、唤醒、进程创建的底层操作)运行于核心态,靠「关中断」保证原子性、不可被中断;
④ 广义指令 = 系统调用,执行时 CPU 处于核心态。
下列指令中,用户态下可以执行的是( )
A. 启动 I/O 设备的指令 B. 关中断指令 C. 修改页表基址寄存器的指令 D. 访管指令(trap)
查看解答
D。逐项分析:
A、B、C 都是典型特权指令:I/O 直控外设、关中断破坏并发环境、改页表基址可越过内存保护——任何一条落入用户程序手中都可能破坏系统;
D 对:访管(trap / 陷入)指令正是用户程序主动请求系统服务的手段,若用户态不能执行,一切系统调用都无从发起。它本身只负责「陷入」,不直接访问任何敏感资源。
套路总结:口诀「I/O、时钟、开关中断、基址、停机」为特权;trap 虽通向内核,却是非特权指令。
下列哪些事件会使 CPU 从用户态切换到核心态?( )
① 用户程序执行 read 系统调用读取文件 ② 时钟中断到来、时间片用完 ③ 用户程序执行除零运算出错 ④ OS 内核装入新的页表基址寄存器
查看解答
①②③。
① 系统调用(trap 引发内中断);② 外中断;③ 异常——三种「升级」触发器齐了,全部使 CPU 转入核心态处理;
④ 不发生状态切换:装入页表基址本身就是特权指令,只能运行在核心态——内核执行它时 CPU 已处于核心态,谈不上「切换」。
易错:凡是「本来就必须在核心态做的事」,都不可能成为「用户态→核心态」的触发事件。
判断:(1) 中断处理程序运行在核心态;(2) 用户程序可以在用户态直接执行 I/O 指令访问打印机;(3) 从用户态到核心态的转换由 OS 软件检查 PSW 完成;(4) 原语在核心态下运行且执行期间不允许被中断。
查看答案
(1) 对:中断处理属于内核工作,全程核心态;
(2) 错:I/O 指令是特权指令,用户程序必须通过系统调用请 OS 代为完成;
(3) 错:升级由硬件(中断机制)自动完成;OS 参与的是核心态→用户态的降级(特权指令);
(4) 对:原语处于最底层,靠关中断实现原子性。
1.5 中断与异常 高频考点
1.5.1 分类:外中断与内中断
- 外中断(中断):来自 CPU 执行指令之外的事件,与当前执行的进程无关(「被打断纯属无辜」)。如时钟中断(时间片到、计时时钟)、I/O 完成中断、键盘 / 外部信号中断、掉电(不可屏蔽)。又分可屏蔽中断(INTR,可通过关中断推迟响应)与不可屏蔽中断(NMI,如掉电,必须立即响应);
- 内中断(异常):来自 CPU 执行指令内部的事件,与当前指令 / 进程直接相关。按处理方式分三种:
- 故障(fault):由错误条件引起,断点保存在引发故障的指令之前——处理修复后重新执行该指令。典型:缺页(调入页面后重新访存)、地址越界、非法操作码、运算溢出 / 被零除;
- 自陷(trap,陷入):事先有意安排的事件,断点保存于 trap 指令之后——处理完执行下一条指令。典型:系统调用的访管(trap)指令、断点调试;
- 终止(abort):出现不可修复的严重错误,终止进程(甚至重启系统)。典型:存储器校验错、硬件控制器故障。
② 时钟中断属于外中断——与时钟硬件有关而与当前指令无关,是实现抢占式调度、维持系统时间的心跳;
③ 系统调用的 trap 是有意安排的自陷,断点在下一条指令;故障断点在本条指令(重执行);两者别混;
④ 外中断的「外」指 CPU 之外的事件源,不是「用户态之外」;内中断也称异常、例外(exception)。
1.5.2 中断处理过程与中断隐指令
- 关中断(防止保存现场时再被打断);
- 保存断点(PC 与 PSW,保证之后能回来);
- 引出中断服务程序(由中断向量号查中断向量表,取入口地址送 PC);
- 保存现场(通用寄存器等压栈);
- 执行中断服务程序本体(如读取设备数据、处理缺页);
- 恢复现场 → 开中断 → 中断返回(iret:弹出断点恢复 PC / PSW,回到被打断处继续)。
下列事件中,属于外中断的是( )
A. 缺页处理 B. 用户程序执行 trap 指令请求 I/O C. 时钟中断 D. 程序执行中出现被零除错误
查看解答
C。归类分析:
A 缺页:由当前访存指令引发 → 内中断(异常)·故障,且处理完要重新执行该访存指令;
B trap 指令:虽是「主动请求」,但由 CPU 正在执行的指令引发 → 内中断(异常)·自陷;
C 时钟中断:与时钟硬件有关、与当前执行指令无关 → 外中断;
D 被零除:指令执行中的错误条件 → 内中断(异常)·故障(无法修复则升级为终止进程)。
套路总结:题目给事件问归类,先问「是这条指令惹的祸吗」——是→异常(故障 / 自陷 / 终止再细分),不是→外中断。
判断:(1) 中断隐指令是指令系统中的一条特权指令;(2) 保存断点由硬件完成,保存现场由中断服务程序完成;(3) 中断处理过程中 CPU 始终处于核心态;(4) 缺页异常处理完毕后,返回到引发缺页的指令重新执行。
查看答案
(1) 错:中断隐指令不是真实指令,是中断响应周期硬件自动执行的操作序列,程序中根本「写」不出这条指令;
(2) 对:断点(PC / PSW)由硬件保存,现场(通用寄存器)由软件保存——这是高频判断句;
(3) 对:从响应中断到中断返回,全程核心态;
(4) 对:故障类异常的断点在故障指令之前,重执行正是「故障」的定义(缺页调入后原指令再次访存即命中)。
1.6 系统调用 高频考点
1.6.1 概念:进入内核的唯一合法入口
1.6.2 执行流程与传参方式
- 用户程序传递系统调用参数(放入寄存器、栈或参数区);
- 执行 trap(访管 / 陷入)指令——指令中给出系统调用功能号,产生一个内中断(自陷);
- CPU 由用户态转核心态(硬件中断机制完成),内核查系统调用入口表,转到对应的服务例程;
- 服务例程在核心态执行(真正的读文件 / 分配内存等);
- 将返回值放入约定位置,CPU 转回用户态,从 trap 的下一条指令继续执行用户程序。
// 用户态代码(x86 风格示意)
mov eax, 5 ; 功能号 5 = open(系统调用号放寄存器)
lea ebx, [filename] ; 参数 1:文件名指针
mov ecx, 0 ; 参数 2:只读标志
int 80h ; trap 指令:产生内中断,CPU 由用户态转入核心态
; —— 内核按 eax 中的功能号查入口表,执行 open 服务例程 ——
; 返回后 CPU 已降回用户态,从这里(trap 的下一条指令)继续
mov [fd], eax ; 取回返回值(文件描述符)
② 「系统调用参数只能通过寄存器传递」——错,还有 trap 指令自带与栈 / 参数区指针两种;
③ 「系统调用一定会引起进程切换」——错,只是 CPU 状态切换(先升后降),原进程通常原地继续(时间片没用完时);
④ 纯计算(如 sin、strlen、访问自己栈上的变量)不需要系统调用;一旦碰文件、设备、内存申请、进程控制就必须。
用户程序调用 read 系统调用读取文件,正确的执行顺序是( )
① 执行 trap 指令进入核心态 ② 将系统调用号与参数放入寄存器
③ 内核执行 read 服务例程完成读操作 ④ 系统调用处理程序查入口表定位服务例程
⑤ 将返回值带回用户程序并转回用户态
A. ②①④③⑤ B. ①②④③⑤ C. ②①③④⑤ D. ①④②③⑤
查看解答
A。流程:先传参(②),再执行 trap(①)触发自陷、由硬件转入核心态;内核按功能号查系统调用入口表(④)找到服务例程地址;服务例程在核心态执行真正的读操作(③);最后返回结果、CPU 降回用户态(⑤),从 trap 的下一条指令继续。
易错:B / D 把 trap 放在传参之前——参数没就位就陷入,内核拿不到调用号与参数;C 弄反「查表」与「执行」的先后。
1.6.3 系统调用与库函数的区别
- 有的库函数不涉及系统调用:纯计算类,如
strlen、abs、sin; - 有的库函数封装了系统调用:
fopen→open、printf→write、malloc→(必要时)brk/mmap; - 用户程序也可绕过库函数直接发起系统调用(汇编 trap)。
下列 C 程序操作中,哪些必须通过系统调用才能完成?(1) 求 \(10!\) 的循环计算;(2) fopen 打开磁盘上的文件;(3) 对自己定义的局部数组求最大值;(4) 向控制台 printf 输出;(5) 申请一大块动态内存。
查看答案
必须系统调用的是 (2)(4)(5):打开文件要访问文件系统与磁盘(open),printf 最终要 write 到设备,大块动态内存要向 OS 申请(堆不够时 brk / mmap 扩展);
(1)(3) 是纯计算,仅访问进程自己的栈 / 寄存器,用户态即可完成,无需进入内核。
1.7 体系结构与启动过程
1.7.1 大内核与微内核
- 大内核(宏内核,monolithic):将进程管理、存储管理、文件系统、设备管理等主要功能模块全部放入内核,都运行在核心态。优点:模块间调用就是函数调用,性能高;缺点:内核庞大、功能耦合、难以维护与移植,一处错误可能拖垮整个系统;
- 微内核(micro kernel):内核只保留最基本功能——中断与陷入处理、时钟管理、原语、进程间通信(消息传递)等;其余(进程管理、存储管理、文件系统、设备管理)作为服务进程运行在用户态,应用通过「向服务器发消息」请求服务(客户 / 服务器结构,内核负责在两者间传递消息)。优点:易于扩展、可靠性高、便于移植、适合分布式系统;缺点:频繁的消息传递与进程切换使性能低于大内核(最常考的一句)。
1.7.2 操作系统启动过程简述
② POST 加电自检:BIOS 检查内存、总线、基本设备是否正常,并识别 / 初始化硬件;
③ 加载引导程序(Bootloader):BIOS 读入启动盘第一个扇区(MBR,主引导记录,512B)到内存并转去执行,引导程序再定位并把 OS 内核映像装入内存;
④ 内核初始化:OS 内核接管 CPU,初始化内核数据结构(进程表、页表等)、安装驱动;
⑤ 启动系统服务:创建首批系统进程 / 服务,最终呈现登录界面或命令行 Shell,系统就绪。
判断:(1) 微内核结构下,文件系统服务运行在核心态;(2) 微内核的性能通常高于大内核;(3) 微内核适合分布式系统;(4) 引导程序(Bootloader)的任务之一是把操作系统内核装入内存。
查看答案
(1) 错:微内核把文件系统等服务放在用户态作为服务进程运行,内核只负责消息传递;
(2) 错:服务请求要经「客户进程 → 内核 → 服务进程」多次消息传递与状态切换,性能低于大内核——这是微内核最主要的缺点;
(3) 对:消息传递机制天然适合跨机器通信,微内核易于扩展、适合分布式;
(4) 对:BIOS 只负责自检与读入 MBR,真正「装内核」的是引导程序。
1.8 章末自测 真题风格
限时 45 分钟,先做后看答案。难度:★★ 基础 / ★★★ 强化 / ★★★★ 冲刺。自检标准:10 题对 8 题以上;「用户态 / 核心态转换、中断异常归类」两道必须全对——它们是后续章节的地基。
操作系统的下列功能中,不属于「资源管理者」职能的是( )
A. 处理机管理 B. 存储器管理 C. 高级语言程序的编译 D. 设备管理
查看答案
C。编译是编译器(语言处理程序)的工作,属于其他系统软件,不是 OS 职能;A、B、D 与文件管理并称四大管理功能。
下列关于操作系统特征的叙述中,错误的是( )
A. 并发与共享互为存在条件 B. 虚拟性以并发性为前提 C. 异步性指进程的运行速度不可预知 D. 单处理机系统中多个进程可以并行执行
查看答案
D。单 CPU 同一时刻只能执行一个进程,多进程只能「并发」(宏观同时微观交替);并行需要多核 / 多处理机硬件支持。A、B、C 均为教材原文。
分时系统的时间片取值过大,主要导致( )
A. 进程切换开销过大 B. 系统吞吐量下降为零 C. 用户交互的及时性变差 D. 内存利用率下降
查看答案
C。时间片过大→每个用户等待轮转的时间变长,响应变慢(极端时退化为先来先服务);A 是时间片过小的后果。时间片取舍与内存利用率无直接关系,B 说法夸张错误。
下列指令中,属于特权指令的是( )
A. 算术运算指令 B. 访管(trap)指令 C. 置时钟指令 D. 读取用户程序自身数据的指令
查看答案
C。置时钟影响整个系统的调度节拍,必须由内核掌控;A、D 是普通用户态指令;B 最具迷惑性——trap 是用户程序进入内核的请求入口,必须允许用户态执行,属非特权指令。
下列事件中,发生时 CPU 由用户态转换为核心态,且处理完成后需重新执行引发事件的指令的是( )
A. 时钟中断 B. 缺页异常 C. 执行 trap 指令发起系统调用 D. 打印机完成的 I/O 中断
查看答案
B。缺页 = 内中断·故障,断点保存在故障指令之前,调页完成后重新执行该访存指令;C 自陷(trap)处理完执行下一条指令;A、D 是外中断,与当前指令无关,返回断点继续即可。
下列关于系统调用的叙述中,正确的是( )
A. 系统调用的全部代码都在用户态执行 B. 库函数都必须封装系统调用
C. 系统调用通过执行 trap 指令进入核心态,trap 是非特权指令 D. 系统调用的参数只能通过寄存器传递
查看答案
C。A 错:服务例程在核心态执行;B 错:strlen、abs 等纯计算库函数不涉及系统调用;D 错:还有 trap 指令自带参数、栈 / 参数区指针两种方式。
用户程序在用户态下执行了一条特权指令,CPU 的反应是( )
A. 静默忽略该指令,继续执行下一条 B. 产生异常(内中断),转入核心态由 OS 处理
C. 直接切换到核心态执行该指令 D. 立即停机
查看答案
B。硬件检测到用户态执行特权指令,产生「非法使用特权指令」异常(内中断),CPU 转入核心态,由 OS 相应处理程序处置(通常终止该进程)。不会静默忽略,更不会「破例放行」。
下列关于中断处理的说法,错误的是( )
A. 中断隐指令完成关中断、保存断点、引出中断服务程序
B. 保存断点由硬件完成,保存现场由中断服务程序完成
C. 中断处理的全过程运行在核心态
D. 中断隐指令是指令系统中一条特殊的特权指令
查看答案
D。中断隐指令不是指令系统中的真实指令,而是中断响应周期由硬件自动完成的一串操作——程序员无法在程序中写出这条指令;A、B、C 均正确。
实时操作系统与分时操作系统相比,最本质的区别是( )
A. 实时系统的处理速度一定更快 B. 实时系统必须在规定的截止时间内完成并响应
C. 实时系统不支持多用户 D. 分时系统不使用中断机制
查看答案
B。实时系统的核心是截止时间(deadline)约束与高可靠性;A 错:实时不一定更快,而是「保证按时做完」;C 错:实时系统也可以多任务多用户;D 错:两者都依赖中断机制。
用户在分时系统的终端上运行 C 程序,执行 fopen("/tmp/a.txt","r") 直至返回。请按时间顺序列出这一过程中:(1) CPU 状态的全部转换及触发原因;(2) 至少 3 种在此期间可能发生的中断 / 异常事件并归类(外中断 / 故障 / 自陷 / 终止)。
查看解答
(1) 状态转换链:
① 用户态执行 fopen(库函数,用户态)→ 传参后执行 trap 指令(自陷)→ CPU 由用户态升核心态(硬件完成);② 内核执行 open 服务例程(可能因等待磁盘而阻塞该进程并调度另一进程——都在核心态);③ 打开完成、返回值放入约定位置,OS 执行修改 PSW 的特权指令 → CPU 降回用户态,从 trap 下一条指令继续执行 fopen 之后的代码。
(2) 期间可能的事件(任答 3 个):
时钟中断(时间片用完,外中断);磁盘 I/O 完成中断(外中断);访问 /tmp/a.txt 时若对应页不在内存→缺页(内中断·故障,处理后重执行该指令);open 参数指针非法→地址越界(故障);文件系统盘面校验错(终止级错误);其他进程的 trap 系统调用(自陷)。
套路总结:串场题先画「用户态 ↔ 核心态」上下两条泳道,把每个事件挂到泳道上,转换原因就一目了然。
1.9 本章考点总结
| 考点 | 常考题型 | 热度 | 核心方法 / 一句话结论 |
|---|---|---|---|
| 四大特征辨析 | 选择 | ★★★★ | 并发与共享互为存在条件;并行是并发特例(需多核);虚拟≠增多资源;异步 = 速度不可预知、结果确定 |
| 发展阶段对比 | 选择 | ★★★ | 多道批处理:利用率高、吞吐大、无交互;分时:时间片轮转、交互;实时:deadline + 可靠性;时间片太小→切换开销大,太大→及时性差 |
| 特权指令判断 | 选择 | ★★★★★ | 口诀「I/O、置时钟、开关中断、改基址 / 保护寄存器、停机」;trap 是非特权指令(最大陷阱) |
| 用户态 / 核心态转换 | 选择 / 判断 | ★★★★★ | 升级入口只有「中断 / 异常」(系统调用、外中断、异常三触发),由硬件完成;降级由 OS 执行修改 PSW 的特权指令完成 |
| 中断 / 异常归类 | 选择 | ★★★★★ | 缺页 = 内中断·故障(重执行);trap = 自陷(执行下一条);硬件致命错 = 终止;时钟 / I/O 完成 = 外中断;中断处理全程核心态 |
| 系统调用流程 | 选择(排序) | ★★★★ | 传参 → trap → 转核心态 → 查入口表 → 服务例程 → 返回降级;传参三式:指令自带 / 寄存器 / 栈指针;库函数 ≠ 系统调用 |
| 体系结构与启动 | 选择 | ★★ | 大内核性能高;微内核灵活可靠、性能低(消息传递频繁);启动链:BIOS → MBR 引导 → 内核 → 服务 |