操作系统概述

考点定位

  • 大纲章节:操作系统(OS)的基本概念、特征和功能;操作系统的发展与分类;运行环境(内核态/用户态、中断/异常、系统调用);操作系统体系结构
  • 常见题型:选择题为主(每年 1-3 题),中断/异常分类、系统调用过程、特权指令判定是命题三巨头
  • 考查频率:高(几乎每年至少 1 题,且概念辨析类选项极细,工程直觉反而容易踩坑)
  • 工程师读者注意:你天天用系统调用、写过信号处理,但 408 考的是教材口径的分类体系与精确边界(如"缺页是不是异常""时钟中断算不算外中断"),必须按考试口径重新校准
  • 前置知识:计算机系统概述(层次结构、ISA、中断在计组侧的硬件视角)

一、操作系统的概念、功能与特征

1.1 概念与功能

定义(考点口径):操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(程序集合),是用户与计算机硬件之间的接口(接口视角、资源管理视角、扩充机器视角三合一)。

三大功能(资源管理者视角,选择题按此口径):

功能内容
处理机管理进程/线程的创建、撤销、调度、同步、通信、死锁处理
存储器管理内存分配/回收、地址映射、内存保护、扩充(虚拟内存)
设备管理设备分配、缓冲管理、设备驱动、I/O 控制
文件管理文件存储空间管理、目录管理、读写管理与存取控制

另有"用户接口"功能:命令接口(联机命令/脱机命令)、程序接口(系统调用)、GUI。选择题常问"操作系统提供给应用程序的接口是什么"——答案是系统调用(程序接口),不是 GUI、不是命令接口。

1.2 四大特征(高频考点,严格定义 + 相互关系)

特征严格含义
并发宏观上多个事件同时发生,微观上在一段时间内多个程序分时交替执行。并发是一段时间内多个程序运行,并行是同一时刻多个程序运行(需要多核/多处理机硬件支持)。单核系统上只能并发,不能并行
共享系统资源可供内存中多个并发执行的进程共同使用。分两种:互斥共享(一段时间内只允许一个进程访问,如打印机)与同时访问(宏观上同时、微观上交替,如磁盘文件)
虚拟通过某种技术把一个物理实体变为若干逻辑上的对应物。虚拟处理机(分时)、虚拟存储器(请求分页)、虚拟设备(SPOOLing)
异步多道程序环境下,进程以不可预知的速度向前推进("走走停停"),但只要运行环境相同,每次执行结果相同(结果可再现性)

相互关系(简答/选择高频):

  1. 并发与共享互为存在条件:没有并发(单道程序)就无所谓资源共享;若资源不能共享(独占),并发也无法实现。二者是操作系统两个最基本的特征。
  2. 并发与共享带来异步性:进程推进速度不可预知。
  3. 虚拟以并发与共享为前提:分时技术(并发)使一个 CPU 虚拟为多个虚拟处理机。

最大陷阱:并发 ≠ 并行。选项中出现"单核 CPU 上多个程序并行执行"即为错误表述——单核上只能并发(交替),除非题目明确单周期内多核。反之"多道程序设计环境下程序并行执行"在 408 口径下也常按"并发"理解,注意题干措辞。

1.3 发展历程(按 408 考纲简要但完整)

阶段关键机制特点缺陷
手工操作用户独占全机,CPU 等人工装纸带—CPU 与人机速度严重不匹配,资源浪费
单道批处理内存一次一道程序,监督程序自动成批处理作业自动性内存中仅一道作业,CPU 与 I/O 仍串行,利用率低
多道批处理内存同时放多道程序,CPU 切换执行多道、无序、宏观并行微观串行、吞吐量高无交互、平均周转时间长(用户响应差)
分时系统时间片轮转,多终端交互同时性(多用户同时使用)、交互性、独立性(互不干扰)、及时性不能保证及时响应高优先级紧急任务
实时系统专用系统,在规定时间内响应并完成处理实时性、可靠性(首要目标是及时响应而非吞吐量/资源利用率)资源利用率通常让位于实时性

选择题高频对比:

  • 分时系统的"及时性"vs 实时系统的"实时性":前者是人可接受的响应(秒级),后者是控制对象可接受的截止时间(毫秒级甚至更高,且错过截止时间可能造成严重后果)。
  • 批处理追求吞吐量与资源利用率;分时追求响应时间与交互性;实时追求截止时间与可靠性。"设计目标"类选择题按此对号。
  • 实时系统分类:硬实时(错过截止时间造成灾难性后果,如导弹控制)与软实时(偶尔错过可容忍,如视频点播)。
  • 推动多道批处理出现的关键技术是通道技术与中断技术(使 CPU 与 I/O 并行成为可能)——经典选择题。

二、运行环境:内核态、用户态、中断、异常、系统调用(本章重心)

2.1 内核态与用户态

CPU 执行状态分为两类:

状态别名能执行指令能访问资源
内核态(管态)核心态、特权态特权指令 + 非特权指令全部内存与寄存器
用户态(目态)用户程序运行态仅非特权指令只能访问自己的地址空间

特权指令范围(必背清单):涉及资源配置与机器状态改变的指令,典型有:

  1. I/O 指令(启动/停止 I/O 设备、访问 I/O 端口)
  2. 置时钟、置中断屏蔽字、开/关中断
  3. 存取用于内存保护的寄存器(如页表基址寄存器、界限寄存器、修改页表)
  4. 停机指令(halt)
  5. 加载/修改程序状态字 PSW(模式切换本身)

典型非特权指令:算术逻辑运算、访存取数、跳转、系统调用陷入指令(trap)。最大陷阱:陷入指令(trap/int 0x80/syscall)本身不是特权指令——它必须在用户态可执行,否则用户程序永远无法请求内核服务。但系统调用的处理过程运行在内核态。

状态切换方向辨析(高频):

切换途径能否由用户程序主动触发
用户态 → 内核态中断、异常、陷入(系统调用)可以(仅通过陷入指令,且入口由内核规定)
内核态 → 用户态修改 PSW/模式字(一条特权指令/硬件自动)用户程序不能主动触发

2.2 中断与异常(本章最高频考点,完整展开)

总定义:中断(广义,interruption)是指 CPU 对系统发生的某个事件的这样一种反应——CPU 暂停正在执行的程序,保留现场后自动转去执行该事件的处理程序,处理完毕后返回断点继续执行。中断是 CPU 由用户态进入内核态的唯一入口(无论系统调用还是异常,硬件层面都是中断/异常机制实现的)。

分类(408 教材口径,两级分类):

类别别名/性质举例处理后是否返回断点继续执行
外中断(狭义中断)异步,与当前指令无关时钟中断、I/O 完成中断、外部信号是(返回被打断程序)
内中断-自愿主动请求(陷入 trap)系统调用、断点调试指令是(陷入处理完返回下条指令)
内中断-故障 fault错误但可修复缺页(页不在内存)、地址越界、除零、保护错(写只读页)若能修复则返回当前故障指令重新执行(缺页调页后重执行该指令),不能修复则终止
内中断-终止 abort致命,不可修复非法指令、硬件故障(存储器校验错)否,终止进程

高频判定清单(选择题逐年轮换考):

  • 缺页 → 内中断(异常),且属"故障",不是外中断。这是最高频陷阱之一:有人凭"缺页要启动磁盘 I/O"误判为外中断。
  • 时钟中断 → 外中断。时钟中断是分时系统时间片轮转的基石(时间片到 → 时钟中断 → OS 接管 → 调度)。
  • 除 0 → 异常(故障类,通常不可修复转终止处理);浮点溢出/下溢 → 异常;地址越界 → 异常。
  • 判定口诀:看来源——来自 CPU 外部设备/时钟 = 外中断;由当前执行指令引起或主动执行陷入指令 = 内中断(异常)。
  • 内中断不来自外部设备,故又称"软中断"的说法不准确(软中断是另一概念,考试按"内中断=异常"口径作答即可)。

中断处理过程(分步,可考简答与选择题排序题):

  1. 中断请求:中断源发出请求,置中断请求触发器。
  2. 中断判优:多个请求同时出现时按优先级排队(硬件排队器或软件查询)。典型优先级:硬件故障 > 时钟 > I/O;快速设备 > 慢速设备;输入 > 输出(计组口径,与 计算机系统概述 中断判优一致)。
  3. 中断响应(硬件完成,关键四步): a. 在一条指令执行完毕后(中断响应发生在指令周期末尾,不能打断一条指令的执行)检测中断信号; b. 关中断(保护现场期间不被新中断打扰); c. 保存断点(PC 及程序状态等压栈或存入特殊寄存器,由硬件隐指令完成); d. 由中断隐指令自动完成"程序状态字切换":取出对应中断向量(入口地址 + 新 PSW),装入 PC 与 PSW,同时 CPU 从用户态切换到内核态——这一步是"中断是进入内核态唯一入口"的机制载体。
  4. 中断服务(软件完成):保护通用寄存器现场 → 执行设备服务/事件处理 → 恢复现场。
  5. 中断返回:执行中断返回指令(iret,特权指令),恢复断点与原 PSW,回到用户态继续执行。

关键机制点(选择题逐条对号):

  • 关中断、保存断点、引出中断服务程序入口(向量地址装入)由中断隐指令(硬件)完成;保存通用寄存器由中断服务程序(软件)完成。两者分工是排序题最爱。
  • 中断隐指令不是指令系统中的真实指令,是 CPU 中断周期内自动完成的一串硬件操作。
  • 中断处理程序运行在内核态。
  • 中断嵌套:更高优先级中断可以打断当前中断服务程序(开中断后)。单重中断在服务全程关中断。
  • 中断向量表/中断向量:中断服务程序入口地址与程序状态字的合称;中断向量表本身存放在内核空间中。

2.3 系统调用(程序接口)

定义:系统调用是操作系统提供给应用程序(编程人员)使用的唯一程序级接口——用户程序通过陷入指令(trap)请求内核提供服务的过程。C 库的 read/write/fork 封装最终都落到陷入指令。

可考"是否系统调用"的功能清单:凡是需要访问系统资源或改变机器状态的操作必须经系统调用:文件读写、进程创建/撤销、内存申请(brk/mmap)、设备 I/O、时钟获取。纯计算(加减乘除、本地变量访问)不需要。经典选择题:printf 需要系统调用(底层 write);普通函数调用(如 strlen)不需要。

系统调用的执行过程(必背六步,排序题高频):

  1. 用户程序执行陷入指令(用户态执行,如 x86 的 int 0x80 / syscall),传入系统调用号与参数;
  2. CPU 检测到陷入,经中断/异常机制:保存断点 → 通过中断向量找到系统调用总入口 → 切换到内核态;
  3. 内核按系统调用号查系统调用入口表,转入对应服务例程;
  4. 服务例程执行(内核态,可使用特权指令访问资源);
  5. 执行完毕将返回值放入寄存器/用户栈;
  6. 执行中断返回指令,返回用户态,从陷入指令的下一条指令继续执行。

三大机制对比(选择题一网打尽):

对比项中断(外)异常(内)系统调用
触发者外部硬件设备/时钟当前指令执行出错或陷入指令用户程序主动(陷入)
与指令的关系异步,与当前指令无关同步,由当前指令引发同步,由陷入指令引发
内核态进入是是是(借异常机制实现)
返回点断点指令故障可修复→重执行当前指令;不可修复→终止陷入指令的下一条指令
频率随机、可频繁(时钟周期级)程序相关程序相关

常见陷阱:系统调用的参数传递方式有三种——由陷入指令自带、寄存器传递、堆栈(内存)传递;用户程序不能直接调用内核函数(那只是普通函数调用,无法进入内核态)。

2.4 操作系统体系结构

结构思想优点缺点
大内核(单内核/宏内核)将 OS 主要功能模块(进程、内存、文件、设备、网络)都作为系统整体运行在内核态高性能(模块间函数调用,无切换开销)庞大复杂,一处错误可拖垮全系统;难维护。代表:Linux、传统 UNIX
微内核内核只保留最基本功能(中断处理、时钟、进程调度、进程间通信 IPC、基本内存管理),其余(文件、设备驱动、网络协议栈)作为用户态服务进程可靠、可扩展、便于移植;单个服务崩溃不至全机崩溃性能低:服务间通信靠 IPC(消息传递),频繁内核态/用户态切换。代表:Mach、QNX、Minix、Windows NT 系(混合微内核口径按教材)
分层结构自底向上逐层构建,每层仅调用更低层便于调试与正确性验证(逐层验证)效率低(层间调用开销),层次划分困难
模块化内核由可装卸模块组成,运行时动态加载灵活、支持动态扩展接口设计复杂。代表:Linux 可加载内核模块(LKMM)
外核(exokernel)内核只做资源保护/多路复用(保证各应用独占其分配到的硬件资源不冲突),资源分配策略交由用户态库操作系统(libOS)为应用定制资源管理策略提供自由度工程实现复杂,实际未主流

高频判定:"微内核的可靠性/可扩展性优于大内核,但性能(通信开销)更差"是标准结论;"微内核下设备驱动运行在用户态"正确;"大内核性能好是因为功能都在内核态直接调用"正确。

例题

例题 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 中"并行"应为"并发"。

常见坑

  1. 并发 ≠ 并行:单核只有并发;408 题干若说"单处理机系统上多程序并行运行",即为错误选项。
  2. 缺页是内中断(异常-故障),不是外中断——凭"I/O"直觉误判是最常见的丢分点。
  3. 陷入指令不是特权指令:它必须在用户态能执行;特权指令是"只能在内核态执行的指令"。
  4. "用户态→内核态"只有一条路:中断/异常机制(含系统调用陷入)。而"内核态→用户态"由内核主动(修改 PSW)完成。
  5. 保存断点是硬件的事、保存寄存器现场是软件的事,排序题/分工题别颠倒。
  6. 故障类异常若可修复,返回后重新执行"当前那条故障指令"(缺页的经典处理),不是下一条;系统调用返回的是陷入指令的下一条。
  7. 分时追求及时响应,实时追求截止时间;"实时系统资源利用率最高"是错误选项。
  8. 微内核胜在可靠性与可扩展性,败在性能(IPC 开销);"微内核性能高于大内核"必错。
  9. 操作系统本身不属于 App 也不能归为"硬件",它是系统软件;"操作系统是计算机系统中最基本的系统软件"是标准表述。
  10. 中断响应只发生在指令执行结束后,"指令执行一半被中断打断"是错误说法(指令本身不可分割)。

自测

  1. 操作系统的四大特征是什么?其中哪两个互为存在条件?
  2. 特权指令有哪几类?为什么陷入指令不属于特权指令?
  3. 缺页、时钟中断、除零、系统调用分别属于中断/异常分类体系中的哪一类?
  4. 简述系统调用从发出到返回的完整过程,并指出哪一步发生了状态切换。
  5. 大内核与微内核各有什么优缺点?为什么微内核性能较差?

自测答案与简析

  1. 并发、共享、虚拟、异步;并发与共享互为存在条件,是最基本的两个特征。
  2. I/O 指令、置时钟、开关/屏蔽中断、置页表基址/界限寄存器、停机等改变机器状态与资源配置的指令。陷入指令需在用户态执行以请求内核服务,若为特权指令则用户程序永远无法进入内核。
  3. 缺页 = 内中断-故障;时钟中断 = 外中断;除零 = 内中断(异常);系统调用 = 内中断-自愿(陷入)。
  4. 执行陷入指令(用户态)→ 硬件保存断点、装中断向量 → CPU 切换为内核态(状态切换点)→ 按调用号查表执行服务例程 → 写返回值 → 中断返回,恢复用户态,从陷入指令下一条继续。
  5. 大内核:性能高(模块间直接调用),但庞大、可靠性差;微内核:可靠、可扩展、易移植,但服务进程间通信须经内核 IPC,频繁用户态/内核态切换导致性能低。