操作系统 · 2027 考研计算机 408

第 1 章 操作系统概述

目标院校:四川大学 / 电子科技大学 | 建议用时:概念 3 小时 + 例题练习 3 小时

本章地位:概述章是操作系统的「世界观」——直接考分不多(选择题 1~2 道,约 2~4 分),但用户态 / 核心态、中断 / 异常、系统调用这三大概念是全科目暗线:第 2 章进程切换、第 3 章缺页处理、第 5 章 I/O 控制全部建立在本章机制之上。真题最爱考三类:① 特权指令与 CPU 状态转换时机(判断题化的选择题);② 事件归类——缺页、时钟中断、trap 各属于中断 / 异常的哪一类;③ 系统调用执行流程排序。本章把这三件事一次讲透,并给出 5 幅图把机制「可视化」。

1.1 考情与分值:操作系统在 408 中的位置

分值地图408 统考满分 150 分,四科分配:数据结构 45 分、计算机组成原理 45 分、操作系统 35 分、计算机网络 25 分。操作系统部分通常为 10 道左右单选(20 分)+ 1~2 道大题(约 15 分):一道几乎必考的 PV 操作 / 进程同步大题,另一道常与组成原理结合考虚拟存储或磁盘 / I/O 计算。本章(概述)每年直接考 0~2 道选择题,但概念是后面所有章节的门票。
章主题分值权重大题考点
第 1 章(本章)概述:概念、特征、发展、运行环境、中断异常、系统调用★(2~4 分)—
第 2 章进程与线程:调度、同步互斥(PV)、死锁★★★★★(最重)PV 操作大题(几乎每年)
第 3 章内存管理:连续 / 分页 / 分段、虚拟内存、页面置换★★★★与组员结合的地址转换 / 置换计算
第 4 章文件管理:文件系统布局、目录、磁盘组织★★★文件系统 / 磁盘计算(常混合)
第 5 章输入 / 输出管理:I/O 接口、缓冲、磁盘调度★★★磁盘调度 / 缓冲区计算
本章考点速览
考点题型热度
四大特征辨析(并发 / 共享互为存在条件)选择★★★★
发展阶段对比(多道批处理 vs 分时 vs 实时)选择★★★
特权指令判断、用户态 / 核心态转换时机选择★★★★★ 每年必考
中断 / 异常分类(缺页、时钟中断归哪类)选择★★★★★ 真题反复考
系统调用流程排序、与库函数区别选择★★★★
大内核 / 微内核、启动过程选择★★

1.2 操作系统的概念、功能与特征 高频考点

1.2.1 三种视角看操作系统

定义操作系统(OS)是控制和管理整个计算机系统的硬件与软件资源、合理地组织调度计算机的工作与资源分配、以便方便用户使用的程序集合。考试按三种视角出题:
  1. 资源管理者:管理处理机、存储器、文件(信息)、设备四大类资源——对应四大管理功能;
  2. 用户与硬件之间的接口:提供命令接口、程序接口(系统调用)和 GUI;
  3. 扩充机器 / 虚拟机:在裸机之上覆盖一层 OS,把复杂硬件细节抽象成简洁的服务(如「文件」抽象了磁盘块),是对计算机资源的抽象。

1.2.2 四大功能与三类接口

四大管理功能
  1. 处理机管理:进程 / 线程的创建、撤销、调度、同步、通信(第 2 章);
  2. 存储器管理:内存分配、保护、扩充(虚拟存储,第 3 章);
  3. 文件管理:目录组织、文件存储空间管理、共享与保护(第 4 章);
  4. 设备管理:I/O 设备分配、缓冲、驱动调度(第 5 章)。
三类接口① 命令接口(用户直接使用):又分联机命令接口——用户输入一条命令、命令解释程序立即解释执行一条,适合分时 / 交互系统;脱机命令接口——用户用作业控制语言(JCL)一次写好一批作业的说明,由 OS 成批处理,适合批处理系统;
② 程序接口(只能在程序中调用):由一组系统调用组成,是用户程序取得 OS 服务的唯一途径;
③ GUI 图形界面:窗口、图标、菜单,本质仍是命令接口的图形化封装。
易错① 「联机 / 脱机」指是否需要人机交互,与「在线 / 离线」的日常含义不同:联机 = 一问一答(交互),脱机 = 作业成批一次处理;
② 程序接口 = 系统调用的集合,命令接口不是系统调用;
③ 用户不能直接使用特权指令访问硬件,必须经系统调用「请 OS 代办」——这正是 1.6 节的伏笔。

1.2.3 四大特征:并发 · 共享 · 虚拟 · 异步

四大特征
  1. 并发:宏观上多个事件同时发生、微观上交替执行(单核即可并发);并行则是同一时刻真正同时执行,需要多核 / 多处理机支持——并行是并发的特例;
  2. 共享:系统资源可供内存中多个并发进程共同使用。两种方式:互斥共享(如打印机,一段时间内只允许一个进程访问,称「临界资源」)与同时访问(如磁盘、可重入代码,宏观上允许多个进程同时使用,微观上仍可能是分时交替);
  3. 虚拟:把一个物理实体变为若干逻辑对应物。时分复用技术→虚拟处理机;空分复用技术→虚拟存储器;
  4. 异步:进程以不可预知的速度向前推进(走走停停)。只要运行环境相同,OS 要保证进程多次运行的结果相同(结果的确定性 ≠ 速度的确定性)。
操作系统四大特征 缺一不可,并发是基础 并发 宏观同时·微观交替 共享 互斥共享 / 同时访问 互为存在条件(判断题高频) 虚拟 时分 / 空分复用 异步 走走停停·速度不可预知 以并发为前提 并发导致异步 虚拟≠增多资源 只改变「视图」
图 1-1 四大特征关系图:并发与共享互为存在条件(无并发则无共享需求,无共享则并发无法实现);虚拟与异步都建立在并发之上
易错① 并发与共享互为存在条件:没有并发(单道)就谈不上资源共享,不能共享资源多道程序也无法并发推进——两句判断题正反都常考;
② 虚拟技术不能增加资源本身:4GB 物理内存虚拟成 8GB 地址空间,能运行更大的程序,但任何时刻真正驻留内存的数据量仍受 4GB 限制;
③ 异步性 = 速度不可预知,不等于结果不可预知(结果由进程自身逻辑决定);
④ 单处理机系统:进程之间只能并发不能并行(2009 真题考过「处理机与设备、处理机与通道、设备与设备可并行」,见例 2)。
例 1 高频考点 四大特征判断

下列关于操作系统基本特征的叙述中,正确的是( )
A. 若无并发,系统资源仍可被多道程序共享
B. 虚拟存储技术增大了内存的物理容量
C. 并发与共享互为存在条件
D. 异步性是指进程运行的结果不可预知

查看解答

C。逐项分析:

A 错:共享的对象是「并发进程」,没有并发(内存中只有一道程序)就不存在「多个进程共用资源」的问题,共享失去意义;

B 错:虚拟存储增大的是逻辑地址空间(可用「视图」),物理内存容量由硬件决定,OS 无法凭空创造;

C 对:并发与共享互为存在条件,这是四大特征中最常考的一句话;

D 错:异步性指进程推进速度不可预知(走走停停);只要运行环境相同,进程每次运行的结果必须相同,否则程序就没有确定性了。

练习 1

判断下列说法的正误:(1) 联机命令接口主要用于批处理系统;(2) 程序接口由系统调用组成;(3) GUI 本质上也是一种命令接口;(4) 操作系统属于系统软件,是计算机系统中最基本的系统软件。

查看答案

(1) 错:联机命令接口 = 逐条交互执行,用于分时系统;批处理系统用脱机命令接口(作业控制语言)。

(2) 对:程序接口 = 一组系统调用。

(3) 对:图形界面最终仍要转化为命令 / 系统调用来执行。

(4) 对:OS 是紧贴裸机的第一层软件,其他所有软件都建立在它之上。

练习 2 易错

判断:(1) 共享中的「同时访问」方式要求微观上绝对同一时刻使用资源;(2) 打印机属于可同时访问的共享资源;(3) 单处理机系统中两个进程可以并行。

查看答案

(1) 错:同时访问指宏观上允许多个进程「同时」使用(如磁盘、可重入代码),微观上仍可能是分时交替进行;

(2) 错:打印机是典型互斥共享资源(临界资源),一段时间内只允许一个进程使用;

(3) 错:单 CPU 同一时刻只能执行一个进程,两进程只能并发(交替);并行需要多核 / 多处理机。

1.3 操作系统的发展历程

1.3.1 从手工操作到多道批处理

推动力发展的主线只有一条:提高资源利用率 + 方便用户。每一代新系统都是为解决上一代的主要矛盾而生:
  1. 手工操作阶段(无 OS):用户独占全机,CPU 等待人工装纸带 / 拨开关。矛盾:人机矛盾——CPU 速度远快于人工操作,资源利用率极低;
  2. 单道批处理系统:磁带上成批作业,由监督程序自动逐个处理,实现了自动性。但内存一次仅一道作业,作业运行 I/O 时 CPU 空闲(CPU 与 I/O 串行),利用率仍低;
  3. 多道批处理系统:内存同时放多道程序,一道运行 I/O 时 CPU 转去运行另一道——宏观上并行、微观上串行。优点:资源利用率高、系统吞吐量大;缺点:无交互性(用户无法干预)、作业平均周转时间长。
多道批处理的两个量化结论① 多道程序设计并不缩短每个作业的执行时间,只是让 CPU 与设备都忙起来,缩短的是一批作业的总完成时间;
② 评价批处理系统的指标常用平均周转时间:作业 \(i\) 的周转时间 \(T_i =\) 完成时间 \(-\) 提交时间,带权周转时间 \(W_i = T_i \div\) 实际运行时间(\(W_i\ge 1\),越接近 1 越好)。
例 2 真题风格 单处理机系统中的并行(2009 真题原型)

在单处理机系统中,下列可并行的是( )
Ⅰ. 进程与进程 Ⅱ. 处理机与设备 Ⅲ. 处理机与通道 Ⅳ. 设备与设备
A. Ⅰ、Ⅱ、Ⅲ  B. Ⅰ、Ⅱ、Ⅳ  C. Ⅰ、Ⅲ、Ⅳ  D. Ⅱ、Ⅲ、Ⅳ

查看解答

D。单 CPU 系统中同一时刻只能运行一个进程,故进程与进程之间只能「并发」不能「并行」,Ⅰ 错;

CPU 在执行计算的同时,设备 / 通道可以独立进行数据传输(通道本身就是小型处理机),Ⅱ、Ⅲ、Ⅳ 都可以真正同时工作——这也解释了「单道批处理中 CPU 等 I/O」浪费有多大:计算与 I/O 本可重叠。

易错:把「并发」当「并行」。并发是宏观同时微观交替,单核即可;并行要求多执行部件真正同时。

1.3.2 分时系统与实时系统

分时系统多终端共享一台主机,CPU 按时间片轮转为各终端服务。四大特征:同时性(多用户同时在线)、交互性(人机对话,核心目标)、独立性(各用户互不干扰,感觉独占机器)、及时性(响应时间在人可接受范围内)。时间片用完时,即使任务没做完,进程也会被剥夺 CPU(被动切换)。
易错时间片大小的两难:太小→进程切换过于频繁,切换开销(保存 / 恢复现场)占比过大,系统效率低;太大→每个用户等待轮转的时间变长,退化为先来先服务,交互性 / 及时性变差。时间片应当「略大于一次典型交互所需的处理时间」。
实时系统要求在截止时间(deadline)之前完成并响应,主要指标是及时性和可靠性(而非吞吐量 / 资源利用率)。分为硬实时(必须绝对严格按时完成,如导弹制导、飞行控制、化工过程控制)与软实时(偶尔超时可容忍,如订票系统、多媒体播放)。
一句话对比实时系统不一定比分时系统处理速度快,而是「保证在 deadline 内做完」;实时系统对可靠性的要求通常比分时高(常配双机 / 多机热备份)。分时系统不强求截止时间,追求的是公平响应。
系统类型内存驻留交互性追求目标关键机制 / 缺陷
手工操作单道(无 OS)人工操作—人机矛盾,CPU 大量空等
单道批处理一道作业无自动性CPU 与 I/O 串行,利用率仍低
多道批处理多道作业无利用率、吞吐量宏观并行微观串行;无交互、周转长
分时系统多道 + 终端强(人机对话)响应时间(及时性)时间片轮转 RR
实时系统多道视具体系统截止期限 + 可靠性按紧急度抢占调度;硬 / 软实时

1.3.3 其他类型操作系统

了解① 网络 OS:地理上分散的计算机经网络互连,实现资源共享与通信(集中模式、客户 / 服务器模式、对等模式);
② 分布式 OS:多台计算机统一为一个系统,任务被自动分配到多机并行处理;具有透明性(用户感觉不到多机存在)、同一 OS 管理全部资源、协作完成同一任务,任何一台机器失效可由其他机器接管(高可用);
③ 个人计算机 OS(Windows / macOS / 桌面 Linux):界面友好、生态丰富;服务器 OS、嵌入式 OS(手机、路由器)均为 OS 在不同场景的形态。
易错网络 OS 与分布式 OS 的区别:网络 OS 中每台机器仍运行自己的 OS,用户明确知道资源在哪台机器上(要指明站点);分布式 OS 全局统一管理、资源位置对用户透明,「多机」呈现为「一台虚拟单机」。
练习 3

将下列特征对应到正确的系统类型(多道批处理 / 分时 / 实时):(1) 系统可靠性要求最高,常配双机热备份;(2) 追求系统吞吐量与资源利用率,用户作业成批处理、无法干预;(3) 多终端共享主机,每个用户感觉独占机器;(4) 时间片太小会导致进程切换开销占比过大。

查看答案

(1) 实时系统(硬实时尤其如此,控制任务失败可能造成灾难);

(2) 多道批处理(无交互是它的主要缺点,换来高利用率);

(3) 分时系统(独立性:各终端互不干扰);

(4) 分时系统(时间片轮转的时间片取舍两难——太小开销大,太大及时性差)。

1.4 运行环境:用户态与核心态 高频考点

1.4.1 CPU 的两种状态与 PSW

两种状态CPU 在程序状态字(PSW)中设置一个标志位区分状态:
  1. 核心态(管态、内核态):可以执行全部指令(含特权指令)、访问所有寄存器和存储区。OS 内核运行于此;
  2. 用户态(目态):只能执行非特权指令。应用程序运行于此,硬件防它直接染指关键资源。
与硬件密切相关的少数功能运行在核心态,统称内核(内核程序 + 内核数据结构),常包括:时钟管理、中断机制、原语(如进程控制原语,关中断保证原子性、运行于核心态)、以及进程 / 存储 / 设备管理等系统数据结构及处理。

1.4.2 特权指令与非特权指令

特权指令只能由 OS 内核使用、不允许用户态程序执行的指令,典型例子(选择题题库):
  1. I/O 指令(启动 / 访问外设端口);
  2. 置时钟指令(设置时钟初值);
  3. 开 / 关中断指令、修改 PSW 状态标志;
  4. 存取用于内存保护的寄存器:修改页表基址 / 段表基址寄存器、设置存储保护界限;
  5. 停机(halt)指令。
非特权指令:算术逻辑运算、访问自己用户空间的存取指令,以及最特殊的访管指令(trap / 陷入指令)——它恰恰是用户程序主动「请求内核服务」用的,必须在用户态能够执行。
易错① 「trap 指令是特权指令」——错!它是用户态进入内核的唯一主动入口,若用户态不能执行,程序就永远无法请求系统服务(真题反复考);
② 判断某指令是否特权,标准是:是否危及系统安全 / 是否直接操纵关键硬件资源(I/O、时钟、中断、地址翻译基址、停机),普通的取数、加法、跳转都不是;
③ 用户态程序执行特权指令会引发异常(非法使用特权指令),CPU 检测后转入相应处理——不是「静默忽略」。

1.4.3 状态转换的时机(高频)

转换规则
  1. 用户态 → 核心态:唯一入口是「中断 / 异常」机制。三种触发情形:① 执行 trap 指令发起系统调用;② 外中断(如时钟中断、I/O 完成中断);③ 异常(如缺页、除零、地址越界、非法特权指令)。此「升级」过程由硬件(中断机制)自动完成;
  2. 核心态 → 用户态:OS 执行一条修改 PSW 状态位的特权指令主动「降级」(如系统调用返回、启动新进程时)。
用户态(目态) 运行应用程序、库函数;只能执行非特权指令(含 trap 指令) 核心态(管态) 运行 OS 内核;可执行全部指令;中断处理全程在此态进行 ① 系统调用 trap 指令 ② 外中断 时钟 / I/O 完成 ③ 异常 缺页 / 除 0 / 越界 返回用户程序 特权指令降级 用户态→核心态:由中断/异常机制(硬件)完成  核心态→用户态:执行修改 PSW 的特权指令(OS 主动降级)
图 1-2 用户态 / 核心态切换时机:升级只有「中断 / 异常」一个入口(系统调用、外中断、异常三种触发),降级由 OS 用特权指令完成——判断题高频
易错① 「由用户态转核心态由操作系统软件完成」——错,由硬件中断机制完成;反过来「核心态→用户态」才由 OS 执行特权指令完成;
② 状态转换与「进程切换」是两回事:系统调用先升入核心态,是否切换进程取决于调度(如时间片未用完则原进程返回用户态继续);
③ 原语(如阻塞、唤醒、进程创建的底层操作)运行于核心态,靠「关中断」保证原子性、不可被中断;
④ 广义指令 = 系统调用,执行时 CPU 处于核心态。
例 3 高频考点 特权指令判断

下列指令中,用户态下可以执行的是( )
A. 启动 I/O 设备的指令 B. 关中断指令 C. 修改页表基址寄存器的指令 D. 访管指令(trap)

查看解答

D。逐项分析:

A、B、C 都是典型特权指令:I/O 直控外设、关中断破坏并发环境、改页表基址可越过内存保护——任何一条落入用户程序手中都可能破坏系统;

D 对:访管(trap / 陷入)指令正是用户程序主动请求系统服务的手段,若用户态不能执行,一切系统调用都无从发起。它本身只负责「陷入」,不直接访问任何敏感资源。

套路总结:口诀「I/O、时钟、开关中断、基址、停机」为特权;trap 虽通向内核,却是非特权指令。

例 4 真题风格 状态切换时机(多选)

下列哪些事件会使 CPU 从用户态切换到核心态?( )
① 用户程序执行 read 系统调用读取文件 ② 时钟中断到来、时间片用完 ③ 用户程序执行除零运算出错 ④ OS 内核装入新的页表基址寄存器

查看解答

①②③。

① 系统调用(trap 引发内中断);② 外中断;③ 异常——三种「升级」触发器齐了,全部使 CPU 转入核心态处理;

④ 不发生状态切换:装入页表基址本身就是特权指令,只能运行在核心态——内核执行它时 CPU 已处于核心态,谈不上「切换」。

易错:凡是「本来就必须在核心态做的事」,都不可能成为「用户态→核心态」的触发事件。

练习 4

判断:(1) 中断处理程序运行在核心态;(2) 用户程序可以在用户态直接执行 I/O 指令访问打印机;(3) 从用户态到核心态的转换由 OS 软件检查 PSW 完成;(4) 原语在核心态下运行且执行期间不允许被中断。

查看答案

(1) 对:中断处理属于内核工作,全程核心态;

(2) 错:I/O 指令是特权指令,用户程序必须通过系统调用请 OS 代为完成;

(3) 错:升级由硬件(中断机制)自动完成;OS 参与的是核心态→用户态的降级(特权指令);

(4) 对:原语处于最底层,靠关中断实现原子性。

1.5 中断与异常 高频考点

1.5.1 分类:外中断与内中断

两大类中断 / 异常是 CPU 从用户态进入核心态的唯一通道,也是 OS 内核「夺回」CPU 控制权的根本手段。按事件来源分两类:
  1. 外中断(中断):来自 CPU 执行指令之外的事件,与当前执行的进程无关(「被打断纯属无辜」)。如时钟中断(时间片到、计时时钟)、I/O 完成中断、键盘 / 外部信号中断、掉电(不可屏蔽)。又分可屏蔽中断(INTR,可通过关中断推迟响应)与不可屏蔽中断(NMI,如掉电,必须立即响应);
  2. 内中断(异常):来自 CPU 执行指令内部的事件,与当前指令 / 进程直接相关。按处理方式分三种:
    • 故障(fault):由错误条件引起,断点保存在引发故障的指令之前——处理修复后重新执行该指令。典型:缺页(调入页面后重新访存)、地址越界、非法操作码、运算溢出 / 被零除;
    • 自陷(trap,陷入):事先有意安排的事件,断点保存于 trap 指令之后——处理完执行下一条指令。典型:系统调用的访管(trap)指令、断点调试;
    • 终止(abort):出现不可修复的严重错误,终止进程(甚至重启系统)。典型:存储器校验错、硬件控制器故障。
中断 / 异常事件 外中断(中断) 与当前进程无关·可屏蔽 / 不可屏蔽 内中断(异常) 由当前执行的指令引发 时钟中断(时间片到) I/O 完成中断、键盘输入 掉电(不可屏蔽 NMI) 「无辜被打断」 故障 缺页 越界·溢出 修复后重执行 自陷 trap 调试断点 执行下一条 终止 校验错 硬件故障 终止进程 判断口诀:看「谁引发的」——外部设备 / 时钟引发的进左框(外中断);CPU 正在执行的这条指令引发的进右框(异常)
图 1-3 中断 / 异常分类图:缺页 = 内中断·故障;时钟中断 = 外中断;系统调用 trap = 内中断·自陷——三者归类是真题反复考点
易错① 缺页属于内中断(异常)中的「故障」,不是外中断——它由当前访存指令引发,且修复(调页)后要重新执行该指令;
② 时钟中断属于外中断——与时钟硬件有关而与当前指令无关,是实现抢占式调度、维持系统时间的心跳;
③ 系统调用的 trap 是有意安排的自陷,断点在下一条指令;故障断点在本条指令(重执行);两者别混;
④ 外中断的「外」指 CPU 之外的事件源,不是「用户态之外」;内中断也称异常、例外(exception)。

1.5.2 中断处理过程与中断隐指令

处理流程
  1. 关中断(防止保存现场时再被打断);
  2. 保存断点(PC 与 PSW,保证之后能回来);
  3. 引出中断服务程序(由中断向量号查中断向量表,取入口地址送 PC);
  4. 保存现场(通用寄存器等压栈);
  5. 执行中断服务程序本体(如读取设备数据、处理缺页);
  6. 恢复现场 → 开中断 → 中断返回(iret:弹出断点恢复 PC / PSW,回到被打断处继续)。
其中第 1~3 步由中断隐指令完成。中断隐指令不是指令系统中的真实指令,而是 CPU 在中断响应周期由硬件自动完成的一串操作;第 4~6 步由中断服务程序(软件)完成。中断处理全程运行在核心态;高级别的中断可以嵌套打断低级别的处理(需开中断)。
记忆口诀「硬件三步:关中断、存断点、取向量;软件三步:存现场、干服务、复现场开中断再返回」。判断「保存断点由谁完成」——硬件(中断隐指令);「保存现场由谁完成」——中断服务程序(软件)。
例 5 高频考点 事件归类

下列事件中,属于外中断的是( )
A. 缺页处理 B. 用户程序执行 trap 指令请求 I/O C. 时钟中断 D. 程序执行中出现被零除错误

查看解答

C。归类分析:

A 缺页:由当前访存指令引发 → 内中断(异常)·故障,且处理完要重新执行该访存指令;

B trap 指令:虽是「主动请求」,但由 CPU 正在执行的指令引发 → 内中断(异常)·自陷;

C 时钟中断:与时钟硬件有关、与当前执行指令无关 → 外中断;

D 被零除:指令执行中的错误条件 → 内中断(异常)·故障(无法修复则升级为终止进程)。

套路总结:题目给事件问归类,先问「是这条指令惹的祸吗」——是→异常(故障 / 自陷 / 终止再细分),不是→外中断。

练习 5 易错

判断:(1) 中断隐指令是指令系统中的一条特权指令;(2) 保存断点由硬件完成,保存现场由中断服务程序完成;(3) 中断处理过程中 CPU 始终处于核心态;(4) 缺页异常处理完毕后,返回到引发缺页的指令重新执行。

查看答案

(1) 错:中断隐指令不是真实指令,是中断响应周期硬件自动执行的操作序列,程序中根本「写」不出这条指令;

(2) 对:断点(PC / PSW)由硬件保存,现场(通用寄存器)由软件保存——这是高频判断句;

(3) 对:从响应中断到中断返回,全程核心态;

(4) 对:故障类异常的断点在故障指令之前,重执行正是「故障」的定义(缺页调入后原指令再次访存即命中)。

1.6 系统调用 高频考点

1.6.1 概念:进入内核的唯一合法入口

定义系统调用是 OS 内核向应用程序提供的、请求内核服务的一组子程序接口(即「程序接口」),又称广义指令。凡是要动用系统共享资源的操作——进程控制(创建 / 撤销 / 阻塞)、文件操作(打开 / 读 / 写 / 关闭)、进程通信、内存管理(申请 / 释放)、设备管理(I/O)——都必须经系统调用由 OS 代为完成;用户程序不允许直接执行特权指令。系统调用的处理过程运行在核心态,其「请求」动作(trap)发生在用户态。

1.6.2 执行流程与传参方式

五步流程(排序题模板)
  1. 用户程序传递系统调用参数(放入寄存器、栈或参数区);
  2. 执行 trap(访管 / 陷入)指令——指令中给出系统调用功能号,产生一个内中断(自陷);
  3. CPU 由用户态转核心态(硬件中断机制完成),内核查系统调用入口表,转到对应的服务例程;
  4. 服务例程在核心态执行(真正的读文件 / 分配内存等);
  5. 将返回值放入约定位置,CPU 转回用户态,从 trap 的下一条指令继续执行用户程序。
参数传递的三种方式:① 由 trap 指令本身携带(陷入指令自带参数);② 寄存器传递(数量有限);③ 参数放在内存 / 栈中,由寄存器传递指向参数区的指针(可传大量参数)。
用户态 核心态(OS 内核) 用户程序 库函数 fopen封装 open 调用 ① 传参:寄存器 / 栈 / 参数区指针(功能号 + 参数) ② 执行 trap 指令(非特权)产生内中断·自陷 ⑤ 从 trap 下一条指令继续执行 ③ 转核心态 查系统调用入口表(按功能号)转向对应服务例程 ④ 服务例程执行(核心态)文件系统→磁盘驱动→I/O 返回值 + 降级
图 1-4 系统调用执行路径:fopen(库函数)封装 open 系统调用——传参 → trap(自陷)→ 硬件转核心态 → 查入口表执行服务例程 → 返回结果并降级回用户态
系统调用的两步动作(示意):传参 + 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 指令是特权指令」——错(见 1.4.2);
② 「系统调用参数只能通过寄存器传递」——错,还有 trap 指令自带与栈 / 参数区指针两种;
③ 「系统调用一定会引起进程切换」——错,只是 CPU 状态切换(先升后降),原进程通常原地继续(时间片没用完时);
④ 纯计算(如 sin、strlen、访问自己栈上的变量)不需要系统调用;一旦碰文件、设备、内存申请、进程控制就必须。
例 6 真题风格 系统调用流程排序

用户程序调用 read 系统调用读取文件,正确的执行顺序是( )
① 执行 trap 指令进入核心态 ② 将系统调用号与参数放入寄存器
③ 内核执行 read 服务例程完成读操作 ④ 系统调用处理程序查入口表定位服务例程
⑤ 将返回值带回用户程序并转回用户态
A. ②①④③⑤ B. ①②④③⑤ C. ②①③④⑤ D. ①④②③⑤

查看解答

A。流程:先传参(②),再执行 trap(①)触发自陷、由硬件转入核心态;内核按功能号查系统调用入口表(④)找到服务例程地址;服务例程在核心态执行真正的读操作(③);最后返回结果、CPU 降回用户态(⑤),从 trap 的下一条指令继续。

易错:B / D 把 trap 放在传参之前——参数没就位就陷入,内核拿不到调用号与参数;C 弄反「查表」与「执行」的先后。

1.6.3 系统调用与库函数的区别

对比库函数运行在用户态,是语言 / 运行库提供的普通函数;系统调用的核心部分运行在核心态。三者关系:
  1. 有的库函数不涉及系统调用:纯计算类,如 strlen、abs、sin;
  2. 有的库函数封装了系统调用:fopen→open、printf→write、malloc→(必要时)brk/mmap;
  3. 用户程序也可绕过库函数直接发起系统调用(汇编 trap)。
判别法问「某操作是否必须系统调用」,看它是否触碰 OS 管理的共享资源:读写文件、屏幕输出、键盘输入、申请内存、创建进程→是;算术运算、访问进程自己的局部变量、调用纯计算库函数→否。
练习 6

下列 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 大内核与微内核

两种体系结构
  1. 大内核(宏内核,monolithic):将进程管理、存储管理、文件系统、设备管理等主要功能模块全部放入内核,都运行在核心态。优点:模块间调用就是函数调用,性能高;缺点:内核庞大、功能耦合、难以维护与移植,一处错误可能拖垮整个系统;
  2. 微内核(micro kernel):内核只保留最基本功能——中断与陷入处理、时钟管理、原语、进程间通信(消息传递)等;其余(进程管理、存储管理、文件系统、设备管理)作为服务进程运行在用户态,应用通过「向服务器发消息」请求服务(客户 / 服务器结构,内核负责在两者间传递消息)。优点:易于扩展、可靠性高、便于移植、适合分布式系统;缺点:频繁的消息传递与进程切换使性能低于大内核(最常考的一句)。
大内核(宏内核) 核心态内核(全部模块) 进程管理 存储管理 文件系统 设备管理 中断处理·时钟·原语(最底层) 模块间调用 = 函数调用 → 性能高 应用程序(用户态) 微内核 微内核(核心态) 中断陷入·时钟·原语 进程间通信(消息传递) 文件服务 进程服务 存储服务 服务进程(用户态) 应用程序(用户态) 请求须经内核「转发消息」→ 切换频繁,性能低
图 1-5 大内核 vs 微内核:大内核把所有管理模块塞进核心态(函数调用、性能高);微内核只留最基本功能,服务放用户态靠消息传递(灵活可靠但性能低)

1.7.2 操作系统启动过程简述

五个阶段① CPU 加电:硬件把 PC 置为 ROM BIOS 固件的入口地址(x86 约定为 \(0\mathrm{xFFFF}0\)),此时 CPU 处于核心态 / 特权状态,从固化程序开始执行;
② POST 加电自检:BIOS 检查内存、总线、基本设备是否正常,并识别 / 初始化硬件;
③ 加载引导程序(Bootloader):BIOS 读入启动盘第一个扇区(MBR,主引导记录,512B)到内存并转去执行,引导程序再定位并把 OS 内核映像装入内存;
④ 内核初始化:OS 内核接管 CPU,初始化内核数据结构(进程表、页表等)、安装驱动;
⑤ 启动系统服务:创建首批系统进程 / 服务,最终呈现登录界面或命令行 Shell,系统就绪。
考点提示启动链上「谁先谁后」常出排序选择题:固件(BIOS)→ 引导程序(MBR)→ OS 内核 → 系统服务 / 登录界面;ROM / BIOS 与引导程序阶段的代码运行于核心态特权级。另外记住:中断和异常是 OS 内核获得 CPU 控制权的根本途径——没有中断机制,用户程序可以永久霸占 CPU,多道与并发都无从谈起。
练习 7

判断:(1) 微内核结构下,文件系统服务运行在核心态;(2) 微内核的性能通常高于大内核;(3) 微内核适合分布式系统;(4) 引导程序(Bootloader)的任务之一是把操作系统内核装入内存。

查看答案

(1) 错:微内核把文件系统等服务放在用户态作为服务进程运行,内核只负责消息传递;

(2) 错:服务请求要经「客户进程 → 内核 → 服务进程」多次消息传递与状态切换,性能低于大内核——这是微内核最主要的缺点;

(3) 对:消息传递机制天然适合跨机器通信,微内核易于扩展、适合分布式;

(4) 对:BIOS 只负责自检与读入 MBR,真正「装内核」的是引导程序。

1.8 章末自测 真题风格

限时 45 分钟,先做后看答案。难度:★★ 基础 / ★★★ 强化 / ★★★★ 冲刺。自检标准:10 题对 8 题以上;「用户态 / 核心态转换、中断异常归类」两道必须全对——它们是后续章节的地基。

自测 1(选择 · ★★)

操作系统的下列功能中,不属于「资源管理者」职能的是( )
A. 处理机管理 B. 存储器管理 C. 高级语言程序的编译 D. 设备管理

查看答案

C。编译是编译器(语言处理程序)的工作,属于其他系统软件,不是 OS 职能;A、B、D 与文件管理并称四大管理功能。

自测 2(选择 · ★★★ 高频考点)

下列关于操作系统特征的叙述中,错误的是( )
A. 并发与共享互为存在条件 B. 虚拟性以并发性为前提 C. 异步性指进程的运行速度不可预知 D. 单处理机系统中多个进程可以并行执行

查看答案

D。单 CPU 同一时刻只能执行一个进程,多进程只能「并发」(宏观同时微观交替);并行需要多核 / 多处理机硬件支持。A、B、C 均为教材原文。

自测 3(选择 · ★★★)

分时系统的时间片取值过大,主要导致( )
A. 进程切换开销过大 B. 系统吞吐量下降为零 C. 用户交互的及时性变差 D. 内存利用率下降

查看答案

C。时间片过大→每个用户等待轮转的时间变长,响应变慢(极端时退化为先来先服务);A 是时间片过小的后果。时间片取舍与内存利用率无直接关系,B 说法夸张错误。

自测 4(选择 · ★★★ 高频考点)

下列指令中,属于特权指令的是( )
A. 算术运算指令 B. 访管(trap)指令 C. 置时钟指令 D. 读取用户程序自身数据的指令

查看答案

C。置时钟影响整个系统的调度节拍,必须由内核掌控;A、D 是普通用户态指令;B 最具迷惑性——trap 是用户程序进入内核的请求入口,必须允许用户态执行,属非特权指令。

自测 5(选择 · ★★★★ 高频考点)

下列事件中,发生时 CPU 由用户态转换为核心态,且处理完成后需重新执行引发事件的指令的是( )
A. 时钟中断 B. 缺页异常 C. 执行 trap 指令发起系统调用 D. 打印机完成的 I/O 中断

查看答案

B。缺页 = 内中断·故障,断点保存在故障指令之前,调页完成后重新执行该访存指令;C 自陷(trap)处理完执行下一条指令;A、D 是外中断,与当前指令无关,返回断点继续即可。

自测 6(选择 · ★★★)

下列关于系统调用的叙述中,正确的是( )
A. 系统调用的全部代码都在用户态执行 B. 库函数都必须封装系统调用
C. 系统调用通过执行 trap 指令进入核心态,trap 是非特权指令 D. 系统调用的参数只能通过寄存器传递

查看答案

C。A 错:服务例程在核心态执行;B 错:strlen、abs 等纯计算库函数不涉及系统调用;D 错:还有 trap 指令自带参数、栈 / 参数区指针两种方式。

自测 7(选择 · ★★★)

用户程序在用户态下执行了一条特权指令,CPU 的反应是( )
A. 静默忽略该指令,继续执行下一条 B. 产生异常(内中断),转入核心态由 OS 处理
C. 直接切换到核心态执行该指令 D. 立即停机

查看答案

B。硬件检测到用户态执行特权指令,产生「非法使用特权指令」异常(内中断),CPU 转入核心态,由 OS 相应处理程序处置(通常终止该进程)。不会静默忽略,更不会「破例放行」。

自测 8(选择 · ★★)

下列关于中断处理的说法,错误的是( )
A. 中断隐指令完成关中断、保存断点、引出中断服务程序
B. 保存断点由硬件完成,保存现场由中断服务程序完成
C. 中断处理的全过程运行在核心态
D. 中断隐指令是指令系统中一条特殊的特权指令

查看答案

D。中断隐指令不是指令系统中的真实指令,而是中断响应周期由硬件自动完成的一串操作——程序员无法在程序中写出这条指令;A、B、C 均正确。

自测 9(选择 · ★★★)

实时操作系统与分时操作系统相比,最本质的区别是( )
A. 实时系统的处理速度一定更快 B. 实时系统必须在规定的截止时间内完成并响应
C. 实时系统不支持多用户 D. 分时系统不使用中断机制

查看答案

B。实时系统的核心是截止时间(deadline)约束与高可靠性;A 错:实时不一定更快,而是「保证按时做完」;C 错:实时系统也可以多任务多用户;D 错:两者都依赖中断机制。

自测 10(解答 · ★★★★ 冲刺)

用户在分时系统的终端上运行 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 引导 → 内核 → 服务
下一步本章过关标准:例题 6 道独立重做;自测 10 题对 8 题以上;能不假思索地回答三件事——「缺页属于什么?时钟中断属于什么?trap 是特权指令吗?」(内中断·故障 / 外中断 / 不是)。随后进入 第 2 章 进程与线程——操作系统中分值最重、PV 操作大题的驻扎地,本章的「核心态、中断、切换」概念将在那里全面投入使用。