操作系统概述
考点定位
- 大纲章节:操作系统(OS)的基本概念、特征和功能;操作系统的发展与分类;运行环境(内核态/用户态、中断/异常、系统调用);操作系统体系结构
- 常见题型:选择题为主(每年 1-3 题),中断/异常分类、系统调用过程、特权指令判定是命题三巨头
- 考查频率:高(几乎每年至少 1 题,且概念辨析类选项极细,工程直觉反而容易踩坑)
- 工程师读者注意:你天天用系统调用、写过信号处理,但 408 考的是教材口径的分类体系与精确边界(如"缺页是不是异常""时钟中断算不算外中断"),必须按考试口径重新校准
- 前置知识:计算机系统概述(层次结构、ISA、中断在计组侧的硬件视角)
一、操作系统的概念、功能与特征
1.1 概念与功能
定义(考点口径):操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(程序集合),是用户与计算机硬件之间的接口(接口视角、资源管理视角、扩充机器视角三合一)。
三大功能(资源管理者视角,选择题按此口径):
另有"用户接口"功能:命令接口(联机命令/脱机命令)、程序接口(系统调用)、GUI。选择题常问"操作系统提供给应用程序的接口是什么"——答案是系统调用(程序接口),不是 GUI、不是命令接口。
1.2 四大特征(高频考点,严格定义 + 相互关系)
相互关系(简答/选择高频):
- 并发与共享互为存在条件:没有并发(单道程序)就无所谓资源共享;若资源不能共享(独占),并发也无法实现。二者是操作系统两个最基本的特征。
- 并发与共享带来异步性:进程推进速度不可预知。
- 虚拟以并发与共享为前提:分时技术(并发)使一个 CPU 虚拟为多个虚拟处理机。
最大陷阱:并发 ≠ 并行。选项中出现"单核 CPU 上多个程序并行执行"即为错误表述——单核上只能并发(交替),除非题目明确单周期内多核。反之"多道程序设计环境下程序并行执行"在 408 口径下也常按"并发"理解,注意题干措辞。
1.3 发展历程(按 408 考纲简要但完整)
选择题高频对比:
- 分时系统的"及时性"vs 实时系统的"实时性":前者是人可接受的响应(秒级),后者是控制对象可接受的截止时间(毫秒级甚至更高,且错过截止时间可能造成严重后果)。
- 批处理追求吞吐量与资源利用率;分时追求响应时间与交互性;实时追求截止时间与可靠性。"设计目标"类选择题按此对号。
- 实时系统分类:硬实时(错过截止时间造成灾难性后果,如导弹控制)与软实时(偶尔错过可容忍,如视频点播)。
- 推动多道批处理出现的关键技术是通道技术与中断技术(使 CPU 与 I/O 并行成为可能)——经典选择题。
二、运行环境:内核态、用户态、中断、异常、系统调用(本章重心)
2.1 内核态与用户态
CPU 执行状态分为两类:
特权指令范围(必背清单):涉及资源配置与机器状态改变的指令,典型有:
- I/O 指令(启动/停止 I/O 设备、访问 I/O 端口)
- 置时钟、置中断屏蔽字、开/关中断
- 存取用于内存保护的寄存器(如页表基址寄存器、界限寄存器、修改页表)
- 停机指令(halt)
- 加载/修改程序状态字 PSW(模式切换本身)
典型非特权指令:算术逻辑运算、访存取数、跳转、系统调用陷入指令(trap)。最大陷阱:陷入指令(trap/int 0x80/syscall)本身不是特权指令——它必须在用户态可执行,否则用户程序永远无法请求内核服务。但系统调用的处理过程运行在内核态。
状态切换方向辨析(高频):
2.2 中断与异常(本章最高频考点,完整展开)
总定义:中断(广义,interruption)是指 CPU 对系统发生的某个事件的这样一种反应——CPU 暂停正在执行的程序,保留现场后自动转去执行该事件的处理程序,处理完毕后返回断点继续执行。中断是 CPU 由用户态进入内核态的唯一入口(无论系统调用还是异常,硬件层面都是中断/异常机制实现的)。
分类(408 教材口径,两级分类):
高频判定清单(选择题逐年轮换考):
- 缺页 → 内中断(异常),且属"故障",不是外中断。这是最高频陷阱之一:有人凭"缺页要启动磁盘 I/O"误判为外中断。
- 时钟中断 → 外中断。时钟中断是分时系统时间片轮转的基石(时间片到 → 时钟中断 → OS 接管 → 调度)。
- 除 0 → 异常(故障类,通常不可修复转终止处理);浮点溢出/下溢 → 异常;地址越界 → 异常。
- 判定口诀:看来源——来自 CPU 外部设备/时钟 = 外中断;由当前执行指令引起或主动执行陷入指令 = 内中断(异常)。
- 内中断不来自外部设备,故又称"软中断"的说法不准确(软中断是另一概念,考试按"内中断=异常"口径作答即可)。
中断处理过程(分步,可考简答与选择题排序题):
- 中断请求:中断源发出请求,置中断请求触发器。
- 中断判优:多个请求同时出现时按优先级排队(硬件排队器或软件查询)。典型优先级:硬件故障 > 时钟 > I/O;快速设备 > 慢速设备;输入 > 输出(计组口径,与 计算机系统概述 中断判优一致)。
- 中断响应(硬件完成,关键四步): a. 在一条指令执行完毕后(中断响应发生在指令周期末尾,不能打断一条指令的执行)检测中断信号; b. 关中断(保护现场期间不被新中断打扰); c. 保存断点(PC 及程序状态等压栈或存入特殊寄存器,由硬件隐指令完成); d. 由中断隐指令自动完成"程序状态字切换":取出对应中断向量(入口地址 + 新 PSW),装入 PC 与 PSW,同时 CPU 从用户态切换到内核态——这一步是"中断是进入内核态唯一入口"的机制载体。
- 中断服务(软件完成):保护通用寄存器现场 → 执行设备服务/事件处理 → 恢复现场。
- 中断返回:执行中断返回指令(iret,特权指令),恢复断点与原 PSW,回到用户态继续执行。
关键机制点(选择题逐条对号):
- 关中断、保存断点、引出中断服务程序入口(向量地址装入)由中断隐指令(硬件)完成;保存通用寄存器由中断服务程序(软件)完成。两者分工是排序题最爱。
- 中断隐指令不是指令系统中的真实指令,是 CPU 中断周期内自动完成的一串硬件操作。
- 中断处理程序运行在内核态。
- 中断嵌套:更高优先级中断可以打断当前中断服务程序(开中断后)。单重中断在服务全程关中断。
- 中断向量表/中断向量:中断服务程序入口地址与程序状态字的合称;中断向量表本身存放在内核空间中。
2.3 系统调用(程序接口)
定义:系统调用是操作系统提供给应用程序(编程人员)使用的唯一程序级接口——用户程序通过陷入指令(trap)请求内核提供服务的过程。C 库的 read/write/fork 封装最终都落到陷入指令。
可考"是否系统调用"的功能清单:凡是需要访问系统资源或改变机器状态的操作必须经系统调用:文件读写、进程创建/撤销、内存申请(brk/mmap)、设备 I/O、时钟获取。纯计算(加减乘除、本地变量访问)不需要。经典选择题:printf 需要系统调用(底层 write);普通函数调用(如 strlen)不需要。
系统调用的执行过程(必背六步,排序题高频):
- 用户程序执行陷入指令(用户态执行,如 x86 的
int 0x80/syscall),传入系统调用号与参数; - CPU 检测到陷入,经中断/异常机制:保存断点 → 通过中断向量找到系统调用总入口 → 切换到内核态;
- 内核按系统调用号查系统调用入口表,转入对应服务例程;
- 服务例程执行(内核态,可使用特权指令访问资源);
- 执行完毕将返回值放入寄存器/用户栈;
- 执行中断返回指令,返回用户态,从陷入指令的下一条指令继续执行。
三大机制对比(选择题一网打尽):
常见陷阱:系统调用的参数传递方式有三种——由陷入指令自带、寄存器传递、堆栈(内存)传递;用户程序不能直接调用内核函数(那只是普通函数调用,无法进入内核态)。
2.4 操作系统体系结构
高频判定:"微内核的可靠性/可扩展性优于大内核,但性能(通信开销)更差"是标准结论;"微内核下设备驱动运行在用户态"正确;"大内核性能好是因为功能都在内核态直接调用"正确。
例题
例题 1(模拟题) 下列事件中,属于外中断的是( )。 A. 缺页中断 B. 时钟中断 C. 除零错 D. 用户程序执行陷入指令
解:B。判定看来源:A、C 由当前指令引发(内中断/异常),D 是自愿内中断(陷入),B 来自 CPU 外部且与当前指令无关。错因提醒:缺页虽会触发磁盘 I/O,但触发原因是当前访存指令,属内中断故障类。
例题 2(模拟题) 用户程序发出磁盘读请求到磁盘就绪后 CPU 继续处理,此过程中 CPU 从用户态进入内核态的次数至少为( )。 A. 1 B. 2 C. 3 D. 0
解:B。第一次:系统调用(read)经陷入进入内核态,启动 I/O 后返回用户态;第二次:磁盘就绪发出 I/O 完成中断,CPU 由用户态进入内核态执行中断服务。两次入口机制分别是异常(陷入)与外中断。
例题 3(模拟题) 下列指令中,属于特权指令的是( )。 A. 算术加法指令 B. 访问自身数据段的取数指令 C. 启动 I/O 设备指令 D. 陷入指令(trap)
解:C。A、B 为普通非特权指令;D 陷入指令必须在用户态可执行,故不是特权指令(高频陷阱);C 涉及设备控制,必须内核态。
例题 4(模拟题) 关于中断处理,下列说法正确的是( )。 A. 保存断点由中断服务程序完成 B. 关中断、保存断点、引出服务程序入口由硬件(中断隐指令)完成 C. 中断响应可以在一条指令执行中间进行 D. 中断服务程序运行在用户态
解:B。A 错——断点由硬件保存,服务程序保存的是通用寄存器现场;C 错——中断响应在指令周期末尾;D 错——运行在内核态。
例题 5(模拟题) 操作系统提供给应用程序的唯一程序接口是( ),其执行过程中( )。 A. 命令接口 / 不涉及状态切换 B. 系统调用 / CPU 由用户态进入内核态 C. GUI / 由编译器完成 D. 库函数 / 始终在用户态
解:B。程序接口即系统调用;库函数(如 C 库)只是封装,最终仍靠陷入指令进入内核;GUI 与命令接口面向人,不面向程序。
例题 6(模拟题) 单处理器系统中,下列关于并发与并行的说法正确的是( )。 A. 多道程序设计可实现程序间的并行执行 B. 单处理器上多个程序宏观上同时运行、微观上分时交替,称为并发 C. 并发与并行含义相同 D. 单处理器系统中多道程序并行执行
解:B。单处理器上微观任意时刻只能执行一个程序,故只能并发不能并行;"并行"需要多处理机/多核。A、D 中"并行"应为"并发"。
常见坑
- 并发 ≠ 并行:单核只有并发;408 题干若说"单处理机系统上多程序并行运行",即为错误选项。
- 缺页是内中断(异常-故障),不是外中断——凭"I/O"直觉误判是最常见的丢分点。
- 陷入指令不是特权指令:它必须在用户态能执行;特权指令是"只能在内核态执行的指令"。
- "用户态→内核态"只有一条路:中断/异常机制(含系统调用陷入)。而"内核态→用户态"由内核主动(修改 PSW)完成。
- 保存断点是硬件的事、保存寄存器现场是软件的事,排序题/分工题别颠倒。
- 故障类异常若可修复,返回后重新执行"当前那条故障指令"(缺页的经典处理),不是下一条;系统调用返回的是陷入指令的下一条。
- 分时追求及时响应,实时追求截止时间;"实时系统资源利用率最高"是错误选项。
- 微内核胜在可靠性与可扩展性,败在性能(IPC 开销);"微内核性能高于大内核"必错。
- 操作系统本身不属于 App 也不能归为"硬件",它是系统软件;"操作系统是计算机系统中最基本的系统软件"是标准表述。
- 中断响应只发生在指令执行结束后,"指令执行一半被中断打断"是错误说法(指令本身不可分割)。
自测
- 操作系统的四大特征是什么?其中哪两个互为存在条件?
- 特权指令有哪几类?为什么陷入指令不属于特权指令?
- 缺页、时钟中断、除零、系统调用分别属于中断/异常分类体系中的哪一类?
- 简述系统调用从发出到返回的完整过程,并指出哪一步发生了状态切换。
- 大内核与微内核各有什么优缺点?为什么微内核性能较差?
自测答案与简析
- 并发、共享、虚拟、异步;并发与共享互为存在条件,是最基本的两个特征。
- I/O 指令、置时钟、开关/屏蔽中断、置页表基址/界限寄存器、停机等改变机器状态与资源配置的指令。陷入指令需在用户态执行以请求内核服务,若为特权指令则用户程序永远无法进入内核。
- 缺页 = 内中断-故障;时钟中断 = 外中断;除零 = 内中断(异常);系统调用 = 内中断-自愿(陷入)。
- 执行陷入指令(用户态)→ 硬件保存断点、装中断向量 → CPU 切换为内核态(状态切换点)→ 按调用号查表执行服务例程 → 写返回值 → 中断返回,恢复用户态,从陷入指令下一条继续。
- 大内核:性能高(模块间直接调用),但庞大、可靠性差;微内核:可靠、可扩展、易移植,但服务进程间通信须经内核 IPC,频繁用户态/内核态切换导致性能低。