操作系统内核概念图
Computer Science · An Overview · Chapter 3

操作系统OPERATING SYSTEMS

第 2 章的 CPU 会执行程序了——那么,谁来管理这台会执行程序的机器?

批处理与分时内核五组件引导 booting进程与中断信号量与死锁安全性

《计算机科学概论》(第 13 版) J. Glenn Brookshear | 大学一年级 · 教学配套网页

MAP

本章学习地图Learning Map

核心问题对应小节你将得到的关键结论
为什么需要操作系统?3.1批处理 → 交互式 → 实时 → 分时/多道程序设计,一路为“效率与共享”而生
操作系统由什么组成?3.2 ★用户界面管交互,内核五组件(文件/驱动/内存/调度/分派)管资源
多个程序如何“同时”运行?3.3 ★进程 + 时间片 + 中断 + 上下文切换,快速切换制造“同时”的错觉
进程抢资源怎么办?*3.4 ★信号量实现互斥;死锁三条件缺一不可,破坏任意一条即可破解
系统如何抵御攻击?3.5对外靠帐户/登录/审计,对内靠特权指令/特权级别,身份验证上多因素
学完本章你将能够 ① 说出批处理、分时、多道程序设计的区别;② 画出软件分层并指出内核五组件;③ 描述 booting 的全过程;④ 解释进程与时间片、中断、上下文切换的关系;⑤ 用信号量说明互斥,列举死锁三条件及破解思路;⑥ 区分审计软件与嗅探软件,说出多因素认证的三类因素。
3.1

操作系统的历史The History of Operating Systems

作业 job:交给计算机执行的一件独立工作(a unit of work submitted to the computer)。早期计算机一次只能处理一个作业,昂贵的机器大量时间在“等人”。操作系统正是为了让机器不停转、让更多人共享它而一步步演化出来的。

批处理:让作业排成队Batch Processing & Job Queue

Batch Processing
批处理

把若干作业收集成批,交由计算机自动地一个接一个执行,中间无需人工干预。作业队列 job queue 是存放等待作业的队列。

例子:食堂取餐窗口——大家排成一队(FIFO 先进先出),窗口按顺序服务,无需收银员记住谁先谁后。
Queue · FIFO
队列 · 先进先出

队列 queue 是新成员排在队尾、队首成员先被服务的数据结构,规则称为先进先出 FIFO(first-in, first-out)

对应第 1 章:队列可用主存中的一段连续单元实现,辅以头指针与尾指针。

动画演示:作业队列 FIFO 排队执行

作业队列 job queue(队首 →) CPU 批处理执行 空闲,等待作业
点击“自动演示”,观看作业按 FIFO 顺序出队执行。
图 3-1 作业队列:新作业排在队尾,CPU 总是从队首取作业执行(FIFO)

交互式与实时:机器开始“伺候人”Interactive & Real-time Processing

Interactive Processing
交互式处理

程序执行过程中需要与用户来回交互(word processing、游戏、查询系统)。批处理做不到——它要求机器随叫随应。

例子:你在编辑器里每敲一个字,屏幕立刻更新——这就是交互。
Real-time Processing
实时处理

必须在严格的时限内完成响应的处理。错过期限 = 出错,而不仅仅是“慢一点”。

例子:汽车防抱死制动系统 ABS——刹车指令必须在毫秒级内生效;工业流水线控制、航班订票系统同理。

分时与多道程序设计:把 CPU 切成“共享蛋糕”Time-sharing & Multiprogramming

Time-sharing
分时

多个用户通过终端同时连一台机器,CPU 把时间切成小片轮流服务,每人感觉“独占整机”。

例子:机房 40 名同学共用一台服务器写程序,谁也不觉得卡。
Multiprogramming
多道程序设计

主存中同时存放多个作业,一个等待 I/O 时立刻切换到另一个执行——核心手法就是 时间片轮换

关键点:“同时运行多个程序”是快速切换制造的错觉,微观上 CPU 任一时刻只做一件事。
Multitasking
多任务处理

把分时思想用到单用户机器上:一个用户同时开浏览器、音乐、文档——单用户版的多道程序设计。

例子:你的笔记本电脑此刻正在做的事。
概念English一句话释义
负载均衡load balancing多台机器之间动态转移任务,让各机负载大致相当(集群/云平台的日常)
均分 / 缩放scaling按需求增减机器数量:购物节临时加服务器,节后撤掉
嵌入式系统embedded system藏在手机、家电、汽车里的专用计算机系统,专用 OS 常驻其中
本节小结 · 3.1
  • 操作系统为解决“机器等人”而生:批处理 + 作业队列(FIFO)让作业自动连续执行。
  • 应用推动演化:交互式处理要求随叫随应,实时处理要求限时完成(如 ABS)。
  • 分时 / 多道程序设计 / 多任务的共同内核:时间片快速切换,制造“同时执行”的错觉;负载均衡、均分与嵌入式系统是它的现代延伸。
3.1 课堂练习单选题 · 四个选项只有一项正确
Q1多道程序设计(multiprogramming)制造“多个程序同时执行”效果的核心做法是?
A为每个程序配备一颗独立的 CPU
B把 CPU 时间切成时间片,在程序间快速切换
C让每个程序轮流独占整机一整天
D将所有作业收集成批,一次性顺序执行
多道程序设计 = 时间片 + 快速切换,制造“同时执行”的错觉;D 说的是批处理。
Q2作业队列(job queue)决定作业执行顺序的规则是?
A先进先出(FIFO),先到队首的作业先执行
B后进先出(LIFO),最后入队的先执行
C按作业长度从短到长执行
D随机抽取一个作业执行
队列 queue 的定义就是先进先出 FIFO。
3.2

操作系统的体系结构Operating System Architecture

要理解操作系统,先看它在整个软件世界的位置。软件分为应用软件 application software系统软件 system software两大类;系统软件又分为实用软件 utility software(扩充 OS 的常用工具,如备份、压缩、杀毒)与操作系统 operating system 本身。

软件 software 机器上全部程序的集合 应用软件 application 浏览器 · 游戏 · 财务系统 · 课件 系统软件 system 支撑应用运行的软件 操作系统 operating system 控制机器的整体活动(本章主角) 实用软件 utility 备份 · 压缩 · 杀毒
图 3-2 软件分类:操作系统是系统软件的核心,实用软件依附并扩充它
操作系统分层结构示意图
图 3-3 分层视角:用户 → 用户界面 → 内核 → 硬件(AI 绘制示意图)

用户界面:人与内核之间的接口User Interface: Shell & GUI

Shell
外壳(文本界面)

通过键盘命令与 OS 通信的用户界面。敲一行命令,外壳解释并转交内核执行。

例子:Linux 的 bash、Windows 的 PowerShell。ls 一回车,文件列表立刻出现。
GUI · Window Manager
图形用户界面 · 窗口管理程序

GUI(graphical user interface)用图标与窗口交互;其中负责在屏幕上分配、管理窗口块的程序称为窗口管理程序 window manager

例子:拖动窗口、最小化、切换虚拟桌面——都是窗口管理程序在工作。

内核:操作系统的“内脏”The Kernel: Five Components

OS 中执行最基本功能的内部部分称为内核 kernel。它由五大组件构成:

内核组件English职责与例子
文件管理程序file manager维护海量存储器上的文件与目录记录;例子:你建文件夹、删文件,都是它在记账
设备驱动程序device driver与打印机、磁盘等外设通信的软件;例子:换台新打印机就要装对应驱动
内存管理程序memory manager统筹主存空间的分配与回收;例子:多开几个 App 也不互相踩内存
调度程序scheduler决定哪些进程就绪、谁优先(3.3 节细讲)
分派程序dispatcher控制时间片的分配,响应中断、切换进程(3.3 节细讲)
类比记忆 餐厅:服务员 = 用户界面(接收你的点单);后厨 = 内核(采购=设备驱动,库存=文件管理,灶台分配=内存管理,上菜顺序=调度,出菜=分派)。顾客永远不需要进后厨。
扩展 · 网络资源 今天最流行的开源内核 Linux 由 Linus Torvalds 于 1991 年发布;它驱动着全球绝大多数服务器、全部 Android 手机与绝大多数超级计算机。你手机里的软件分层(App → Android 框架 → Linux 内核 → 硬件)与本图完全同构。

引导:机器如何“自己站起来”Booting: Starting the Machine

开机时主存几乎是空的——操作系统是怎么“自己站起来”的?答案是 booting(引导)

步骤动作关键点
开机,CPU 执行 ROM 中的引导装入程序 boot loaderboot loader 永久存于 ROM
把操作系统从海量存储器(磁盘)的预定位置调入主存复制到主存
引导 CPU 跳转(JUMP)到主存中的 OS 区域控制权移交
操作系统接管,开始控制机器活动OS 正式“上岗”
用户请求 → 执行实用/应用程序 → 回到 OS日常循环
Read-Only Memory
只读存储器 ROM

内容可读不可改、断电不丢失,因此适合永久存放引导装入程序。

例子:电脑按下电源键那一刻,最先醒来的不是 Windows,而是 ROM 里那段小小的引导程序。
Firmware
固件

固化在 ROM/EPROM/闪存中、直接控制硬件的小型软件;更新它称为 firmware update

例子:路由器、鼠标、耳机的“固件升级”推送。
变体 嵌入式设备(如手机)从闪速存储器(非易失)复制 OS;机房工作站可通过网络从远程机器复制 OS(网络启动 PXE)。英文 booting 源自 bootstrapping——“提着自己的靴带把自己拉起来”。
本节小结 · 3.2
  • 软件分应用软件与系统软件;系统软件中,实用软件扩充 OS,操作系统是核心
  • OS = 用户界面(shell/GUI/窗口管理程序)+ 内核五组件(文件/驱动/内存/调度/分派)。
  • booting:ROM 中的引导装入程序 → 把 OS 从磁盘调入主存 → 跳转移交控制权;ROM 与固件是启动的根基。
3.2 课堂练习单选题 · 四个选项只有一项正确
Q3下列哪一项不属于操作系统内核的组件?
A文件管理程序(file manager)
B设备驱动程序(device driver)
C图形用户界面(GUI)
D内存管理程序(memory manager)
GUI 属于用户界面;内核 = 文件/驱动/内存/调度/分派五组件。
Q4booting 过程中,引导装入程序(boot loader)永久存放在哪里?
A主存(RAM)的固定地址
B只读存储器(ROM)
C磁盘的操作系统文件里
DCPU 的通用寄存器中
boot loader 永久存放在 ROM 中,开机最先执行。
3.3

协调机器的活动Coordinating the Machine's Activities

3.1 留下一个悬念:时间片切换如何制造“同时”的错觉?本节揭晓。先分清一对最容易混淆的概念:

概念English区别
程序program静态的指令集合,躺在磁盘上的文件
进程process执行程序的动态活动——正在进行的“那一次执行”
进程状态process state该活动的快照:程序计数器 PC + 各寄存器的当前值 + 相关存储单元
例子 同一个微信程序(program)登录两个账号,就是两个进程(process);乐谱是程序,正在演奏的那一场是进程。只有完整保存进程状态,才能“暂停并稍后重启”一个活动。

进程表与时间片Process Table & Time Slice

Process Table(调度程序维护)
进程表

主存中的信息块,每个进程一项,记录:分配的存储区域、优先级、就绪/等待状态。就绪 ready:可以立即继续执行;等待 waiting:因等外部事件(如磁盘读完)而暂停。

类比:医院叫号系统——就绪=坐在候诊区,等待=去做检查了,叫到号就进诊室。
Time Slice(分派程序发放)
时间片

把时间切成小片段(通常毫秒/微秒级),每个进程一次只执行一个时间片。从一个进程换到另一个进程 = 进程切换 process switch / 上下文切换 context switch

关键点:切换时必须先把当前进程状态完整存入进程表,下次才能原样恢复。

动画演示:时间片轮转与上下文切换

时间 → CPU 正在执行:—
红线是“现在”。观察 A/B/C 三个进程如何轮流获得时间片。
图 3-4 分派程序轮流发放时间片;每次切换都要先保存进程状态(上下文切换)

中断:时间片的“闹铃”Interrupt: The Alarm Clock

步骤动作
分派程序给进程分配时间片,同时启动计时器电路
计时器到点,产生中断信号 interrupt;CPU 完成当前机器周期,保存当前进程位置
CPU 转去执行主存中预定位置的中断处理程序 interrupt handler(分派程序的一部分)
分派程序从进程表的就绪进程中选优先级最高者,重启计时器,开启下一个时间片
中断的优先级 中断用途很广:不同中断信号有不同优先级,最高级通常留给电源故障——相关例程抢在电压消失前几毫秒完成“内务”处理(保存关键数据)。中断的本质:抢占当前进程,把控制权传回分派程序
本节小结 · 3.3
  • 进程 = 执行程序的动态活动;进程状态(PC+寄存器值)使“暂停并稍后重启”成为可能。
  • 调度程序管进程表(就绪/等待、优先级);分派程序发时间片、响应中断、做上下文切换。
  • 中断 = 时间片结束的闹铃:保存现场 → 中断处理程序 → 选最高优先级就绪进程继续。
3.3 课堂练习单选题 · 四个选项只有一项正确
Q5“进程(process)”最准确的定义是?
A存储在磁盘上的静态指令集合
B执行程序的动态活动
C程序计数器中的一个地址
D主存中一段连续的存储区域
进程是“执行程序的动态活动”;静态指令集合是程序。
Q6中断(interrupt)在多任务调度中的作用是?
A让当前进程永久终止,释放内存
B通知打印机任务已完成
C时间片到点时把控制权传回分派程序,开始下一次调度
D把新程序从磁盘复制到主存
计时器到点产生中断,控制权传回分派程序,开始下一次调度。
*3.4

处理进程间的竞争Handle Competition Among Processes

进程不止要“轮流转”,还会抢资源(打印机、文件、存储区域)。抢得不好,轻则数据错乱,重则全体卡死。本节三个关键概念:

Critical Region
临界区

一次只允许一个进程执行的代码段(通常涉及对共享资源的访问)。

例子:单人洗手间——里面有人时,别人必须等。
Mutual Exclusion
互斥

保证“临界区一次只允许一个进程进入”的办法/性质。

例子:洗手间门锁——进去锁门,出来开锁。
Semaphore
信号量

实现互斥的经典机制:一个标志 + 置位 set / 清零 clear 两条原子操作。源自铁路臂板信号机:旗子放下=可以通行,升起=禁止。

难点:“检查并设置”必须是原子操作(test-and-set),否则两个进程可能同时以为“门没锁”。

动画演示:信号量守住临界区(互斥)

临界区 critical region (共享资源:一次只服务一个进程) — 空闲 — 信号量 semaphore
绿灯=空闲可进入;红灯=已被占用,其余进程排队等待。
图 3-5 进程 P1 持锁期间,P2/P3 只能等待;P1 退出清零信号量后,P2 才能进入

死锁:进程间的“僵持”Deadlock

死锁 deadlock:每个进程都在等待已分配给对方的资源,全部被阻塞。

例子 进程 A 占用打印机、申请扫描仪;进程 B 占用扫描仪、申请打印机——谁也不肯先放手,两个进程永远等下去。进程表被这类阻塞进程填满时,新进程连“出生”都做不到。

死锁出现的三个必要条件(缺一不可):

条件 1
存在对不可共享资源的竞争

如打印机一次只能服务一个进程。

条件 2
资源在不完整的基础上被请求

已拿到一部分,稍后还要再要。

条件 3
资源一旦分配出去,不能强行收回

只能等持有者自愿释放。

破解方案做法针对条件
死锁检测与改正检测死锁发生后,强制收回已分配的资源;进程表满时杀死(kill)一些进程释放表项条件 3
死锁避免① 用假脱机 SPOOLing 把不可共享资源变为“可共享”(打印任务先排队存盘);② 要求进程一次性请求全部所需资源条件 1、2
补充 Python 与 OS——执行 .py 脚本时操作系统会新建进程运行它;模块 os 提供系统无关的 OS 功能接口。多核 OS——调度/分派程序还要决定“哪个进程上哪个核”;多核 CPU 是真正同时运行多个进程,而分时只是快过人类感知的切换。
本节小结 · *3.4
  • 临界区需互斥,互斥靠信号量(置位/清零);SPOOLing 把独占设备变成“假共享”。
  • 死锁三条件:不可共享 + 不完整请求 + 不可强收;破坏任意一条即可消除死锁。
  • 两条路线:事后“检测与改正”(kill 进程、强制回收),事前“避免”(SPOOLing、一次申请全部资源)。
*3.4 课堂练习单选题 · 四个选项只有一项正确
Q7“互斥(mutual exclusion)”要解决的问题是?
A让多个进程同时访问同一台打印机
B保证临界区一次只允许一个进程执行
C把所有进程按优先级排队执行
D防止用户输入错误口令
互斥 = 临界区一次只允许一个进程执行。
Q8关于死锁(deadlock),下列说法正确的是?
A只要进程竞争资源就必然发生死锁
B死锁三条件满足任意一条即发生死锁
C死锁发生后只能靠重启整个系统解决
D破坏三条件中的任意一条(如 SPOOLing / 一次申请全部资源 / 强制回收)即可消除死锁
三条件缺一不可,破坏任意一条即可(SPOOLing / 一次申请全部资源 / 强制回收)。
3.5

安全性Security

操作系统把守两道防线:对外防未授权访问,对内防已登录程序越权。

对外:帐户、登录与审计Attacks from Outside

Account · Super User · Login
帐户 · 超级用户 · 登录

OS 为每个用户建立帐户 account,记录访问权限;拥有最高权限的超级用户 super user / 管理员 administrator 可创建、删除帐户。登录 login 时核对身份。

例子:学校机房里,老师能装软件,学生不能——权限差别写在帐户记录里。
Auditing vs Sniffing
审计软件 vs 嗅探软件

审计软件 auditing software:记录并分析系统活动,帮管理员发现异常(友军)。嗅探软件 sniffing software:在计算机上偷偷记录活动、并把记录报告给潜在入侵者(敌人)。

记忆:同样记录活动——审计是保安查监控,嗅探是小偷装针孔。
Password Security
口令安全

弱口令是最大短板:可被猜到、被钓鱼、被撞库——单靠口令最不安全。

建议:长口令、不重复、定期更换;更要上多因素认证(见下)。

对内:特权指令与特权级别Attacks from Within

机制English作用
特权指令privileged instruction只有 OS(高特权级)能执行的危险指令,如直接操作磁盘、修改内存管理表
特权级别privilege levelCPU 的运行级别:普通程序在低级别执行,碰到特权指令会被拦下并通知 OS
威胁已登录用户的恶意程序企图绕过权限、偷数据或破坏系统

多因素认证:一道口令不够,就上三道Multi-factor Authentication

多因素认证 multi-factor authentication:需要一种以上的证据才授予访问权限。三类因素:

Factor 1 · Knowledge
你知道的东西

口令、PIN 码、密保问题答案。

弱点:可能被猜到、被钓鱼、被撞库。
Factor 2 · Possession
你拥有的东西

ATM 卡、专用安全令牌、特定手机号码的智能手机(接收验证码)。

例子:网银转账 = 银行卡 + 短信验证码。
Factor 3 · Inherence
你自身的特征

指纹、人脸、语音、视网膜图案等生物特征。

例子:手机指纹解锁、人脸支付。
安全逻辑 · 网络资源 单一因素被攻破(口令泄露、手机丢失、指纹被复制)的概率都不为零,但两个以上因素同时被攻破的概率骤降——这就是“多因素”的数学本质。网络上常概括为:something you know / have / are
防线措施
对外(3.5.1)帐户 + 口令 + 登录控制 + 审计软件(检测嗅探);用户提高口令强度
对内(3.5.2)特权指令 + 特权级别管住程序行为;多因素认证管住“人”的身份
本节小结 · 3.5
  • 外部防线:帐户/管理员/登录 + 审计软件盯活动、查嗅探;弱口令是最大短板。
  • 内部防线:特权指令与特权级别,让普通程序碰不到危险操作。
  • 多因素认证 = 知道的 + 拥有的 + 自身的,两类以上证据组合才放行。
3.5 课堂练习单选题 · 四个选项只有一项正确
Q9嗅探软件(sniffing software)是指?
A在计算机上偷偷记录活动、并把记录报告给潜在入侵者的软件
B记录并分析系统活动、帮助管理员发现异常的实用软件
C为不同授权用户建立帐户的系统工具
D把口令加密后存入 ROM 的固件
嗅探软件是“窃听器”;B 描述的是审计软件,二者正相反。
Q10下列哪组全部属于多因素认证的三个因素类别?
A口令、口令强度、登录时间
B指纹、视网膜图案、语音——都属于同一类别即可
C你知道的(口令)、你拥有的(手机/令牌)、你自身的(指纹)
D用户名、密码、验证码
know / have / are 三类因素;D 三样其实都属于“你知道的”。
KEY

课堂练习参考答案Answer Key

参考答案(共 10 题)

Answer Key with One-line Explanations
小节题号答案一句话解析
3.1 历史Q1B多道程序设计 = 时间片 + 快速切换,制造“同时执行”的错觉;D 说的是批处理
Q2A队列 queue 的定义就是先进先出 FIFO
3.2 体系结构Q3CGUI 属于用户界面;内核 = 文件/驱动/内存/调度/分派
Q4Bboot loader 永久存放在 ROM 中,开机最先执行
3.3 协调活动Q5B进程是“执行程序的动态活动”;静态指令是程序
Q6C计时器到点产生中断,控制权传回分派程序,开始下一次调度
*3.4 竞争Q7B临界区一次只允许一个进程执行 = 互斥
Q8D三条件缺一不可,破坏任意一条即可(SPOOLing / 一次申请全部资源 / 强制回收)
3.5 安全性Q9A嗅探软件是“窃听器”;B 描述的是审计软件,二者正相反
Q10Cknow / have / are 三类因素;D 三样其实都属于“你知道的”
速记:3.1 → B A | 3.2 → C B | 3.3 → B C | *3.4 → B D | 3.5 → A C
易错点提醒 ① 进程 ≠ 程序(Q5);② 嗅探 vs 审计,一敌一友(Q9);③ 死锁是“三条件缺一不可”而不是“竞争就死锁”(Q8)。
ABC

本章重点名词中英对照Glossary

★ 为考试高频词

中文English一句话释义
操作系统 ★operating system (OS)协调内部活动、管理与外部通信的软件包
批处理 / 作业队列batch processing / job queue作业成批自动执行 / FIFO 排队等待
分时 / 多道程序设计 ★time-sharing / multiprogramming多用户共享 / 时间片轮换造成同时错觉
多任务处理multitasking单用户版的多道程序设计
嵌入式系统embedded system手机、家电、车载设备中的计算机系统
用户界面 / 外壳 / 图形界面user interface / shell / GUI用户与内核之间的接口
内核 ★kernel文件+驱动+内存+调度+分派五组件
引导 / 引导装入程序 ★booting / boot loader把 OS 从磁盘调入主存的过程 / ROM 中的启动程序
只读存储器 / 固件ROM / firmware可读不可改的存储 / 固化其中的软件
进程 / 进程状态 ★process / process state执行程序的活动 / PC+寄存器快照
进程表 / 就绪 / 等待process table / ready / waiting调度程序维护的进程档案
时间片 / 上下文切换 ★time slice / context switch分派的最小时间单位 / 切换进程
中断 / 中断处理程序interrupt / interrupt handler时间片结束信号 / 响应它的例程
临界区 / 互斥 / 信号量 ★critical region / mutual exclusion / semaphore独占执行的代码段及其实现机制
死锁 / 假脱机 ★deadlock / SPOOLing互相等待的僵局 / 打印类任务的排队共享术
管理员 / 审计与嗅探 / 多因素认证administrator / auditing & sniffing / multi-factor authentication超级用户 / 一防一贼 / 三类证据组合
下一章预告 第 4 章 组网及因特网 Networking and the Internet——一台机器已不够,让我们把它们连起来。

第 3 章 · 操作系统 —— 完