本章学习地图Learning Map
| 核心问题 | 对应小节 | 你将得到的关键结论 |
|---|---|---|
| 为什么需要操作系统? | 3.1 | 批处理 → 交互式 → 实时 → 分时/多道程序设计,一路为“效率与共享”而生 |
| 操作系统由什么组成? | 3.2 ★ | 用户界面管交互,内核五组件(文件/驱动/内存/调度/分派)管资源 |
| 多个程序如何“同时”运行? | 3.3 ★ | 进程 + 时间片 + 中断 + 上下文切换,快速切换制造“同时”的错觉 |
| 进程抢资源怎么办? | *3.4 ★ | 信号量实现互斥;死锁三条件缺一不可,破坏任意一条即可破解 |
| 系统如何抵御攻击? | 3.5 | 对外靠帐户/登录/审计,对内靠特权指令/特权级别,身份验证上多因素 |
操作系统的历史The History of Operating Systems
作业 job:交给计算机执行的一件独立工作(a unit of work submitted to the computer)。早期计算机一次只能处理一个作业,昂贵的机器大量时间在“等人”。操作系统正是为了让机器不停转、让更多人共享它而一步步演化出来的。
批处理:让作业排成队Batch Processing & Job Queue
把若干作业收集成批,交由计算机自动地一个接一个执行,中间无需人工干预。作业队列 job queue 是存放等待作业的队列。
队列 queue 是新成员排在队尾、队首成员先被服务的数据结构,规则称为先进先出 FIFO(first-in, first-out)。
动画演示:作业队列 FIFO 排队执行
交互式与实时:机器开始“伺候人”Interactive & Real-time Processing
程序执行过程中需要与用户来回交互(word processing、游戏、查询系统)。批处理做不到——它要求机器随叫随应。
必须在严格的时限内完成响应的处理。错过期限 = 出错,而不仅仅是“慢一点”。
分时与多道程序设计:把 CPU 切成“共享蛋糕”Time-sharing & Multiprogramming
多个用户通过终端同时连一台机器,CPU 把时间切成小片轮流服务,每人感觉“独占整机”。
主存中同时存放多个作业,一个等待 I/O 时立刻切换到另一个执行——核心手法就是 时间片轮换。
把分时思想用到单用户机器上:一个用户同时开浏览器、音乐、文档——单用户版的多道程序设计。
| 概念 | English | 一句话释义 |
|---|---|---|
| 负载均衡 | load balancing | 多台机器之间动态转移任务,让各机负载大致相当(集群/云平台的日常) |
| 均分 / 缩放 | scaling | 按需求增减机器数量:购物节临时加服务器,节后撤掉 |
| 嵌入式系统 | embedded system | 藏在手机、家电、汽车里的专用计算机系统,专用 OS 常驻其中 |
- 操作系统为解决“机器等人”而生:批处理 + 作业队列(FIFO)让作业自动连续执行。
- 应用推动演化:交互式处理要求随叫随应,实时处理要求限时完成(如 ABS)。
- 分时 / 多道程序设计 / 多任务的共同内核:时间片快速切换,制造“同时执行”的错觉;负载均衡、均分与嵌入式系统是它的现代延伸。
操作系统的体系结构Operating System Architecture
要理解操作系统,先看它在整个软件世界的位置。软件分为应用软件 application software与系统软件 system software两大类;系统软件又分为实用软件 utility software(扩充 OS 的常用工具,如备份、压缩、杀毒)与操作系统 operating system 本身。
用户界面:人与内核之间的接口User Interface: Shell & GUI
通过键盘命令与 OS 通信的用户界面。敲一行命令,外壳解释并转交内核执行。
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 节细讲) |
引导:机器如何“自己站起来”Booting: Starting the Machine
开机时主存几乎是空的——操作系统是怎么“自己站起来”的?答案是 booting(引导):
| 步骤 | 动作 | 关键点 |
|---|---|---|
| ① | 开机,CPU 执行 ROM 中的引导装入程序 boot loader | boot loader 永久存于 ROM |
| ② | 把操作系统从海量存储器(磁盘)的预定位置调入主存 | 复制到主存 |
| ③ | 引导 CPU 跳转(JUMP)到主存中的 OS 区域 | 控制权移交 |
| ④ | 操作系统接管,开始控制机器活动 | OS 正式“上岗” |
| ⑤ | 用户请求 → 执行实用/应用程序 → 回到 OS | 日常循环 |
内容可读不可改、断电不丢失,因此适合永久存放引导装入程序。
固化在 ROM/EPROM/闪存中、直接控制硬件的小型软件;更新它称为 firmware update。
- 软件分应用软件与系统软件;系统软件中,实用软件扩充 OS,操作系统是核心。
- OS = 用户界面(shell/GUI/窗口管理程序)+ 内核五组件(文件/驱动/内存/调度/分派)。
- booting:ROM 中的引导装入程序 → 把 OS 从磁盘调入主存 → 跳转移交控制权;ROM 与固件是启动的根基。
协调机器的活动Coordinating the Machine's Activities
3.1 留下一个悬念:时间片切换如何制造“同时”的错觉?本节揭晓。先分清一对最容易混淆的概念:
| 概念 | English | 区别 |
|---|---|---|
| 程序 | program | 静态的指令集合,躺在磁盘上的文件 |
| 进程 | process | 执行程序的动态活动——正在进行的“那一次执行” |
| 进程状态 | process state | 该活动的快照:程序计数器 PC + 各寄存器的当前值 + 相关存储单元 |
进程表与时间片Process Table & Time Slice
主存中的信息块,每个进程一项,记录:分配的存储区域、优先级、就绪/等待状态。就绪 ready:可以立即继续执行;等待 waiting:因等外部事件(如磁盘读完)而暂停。
把时间切成小片段(通常毫秒/微秒级),每个进程一次只执行一个时间片。从一个进程换到另一个进程 = 进程切换 process switch / 上下文切换 context switch。
动画演示:时间片轮转与上下文切换
中断:时间片的“闹铃”Interrupt: The Alarm Clock
| 步骤 | 动作 |
|---|---|
| ① | 分派程序给进程分配时间片,同时启动计时器电路 |
| ② | 计时器到点,产生中断信号 interrupt;CPU 完成当前机器周期,保存当前进程位置 |
| ③ | CPU 转去执行主存中预定位置的中断处理程序 interrupt handler(分派程序的一部分) |
| ④ | 分派程序从进程表的就绪进程中选优先级最高者,重启计时器,开启下一个时间片 |
- 进程 = 执行程序的动态活动;进程状态(PC+寄存器值)使“暂停并稍后重启”成为可能。
- 调度程序管进程表(就绪/等待、优先级);分派程序发时间片、响应中断、做上下文切换。
- 中断 = 时间片结束的闹铃:保存现场 → 中断处理程序 → 选最高优先级就绪进程继续。
处理进程间的竞争Handle Competition Among Processes
进程不止要“轮流转”,还会抢资源(打印机、文件、存储区域)。抢得不好,轻则数据错乱,重则全体卡死。本节三个关键概念:
一次只允许一个进程执行的代码段(通常涉及对共享资源的访问)。
保证“临界区一次只允许一个进程进入”的办法/性质。
实现互斥的经典机制:一个标志 + 置位 set / 清零 clear 两条原子操作。源自铁路臂板信号机:旗子放下=可以通行,升起=禁止。
动画演示:信号量守住临界区(互斥)
死锁:进程间的“僵持”Deadlock
死锁 deadlock:每个进程都在等待已分配给对方的资源,全部被阻塞。
死锁出现的三个必要条件(缺一不可):
如打印机一次只能服务一个进程。
已拿到一部分,稍后还要再要。
只能等持有者自愿释放。
| 破解方案 | 做法 | 针对条件 |
|---|---|---|
| 死锁检测与改正 | 检测死锁发生后,强制收回已分配的资源;进程表满时杀死(kill)一些进程释放表项 | 条件 3 |
| 死锁避免 | ① 用假脱机 SPOOLing 把不可共享资源变为“可共享”(打印任务先排队存盘);② 要求进程一次性请求全部所需资源 | 条件 1、2 |
- 临界区需互斥,互斥靠信号量(置位/清零);SPOOLing 把独占设备变成“假共享”。
- 死锁三条件:不可共享 + 不完整请求 + 不可强收;破坏任意一条即可消除死锁。
- 两条路线:事后“检测与改正”(kill 进程、强制回收),事前“避免”(SPOOLing、一次申请全部资源)。
安全性Security
操作系统把守两道防线:对外防未授权访问,对内防已登录程序越权。
对外:帐户、登录与审计Attacks from Outside
OS 为每个用户建立帐户 account,记录访问权限;拥有最高权限的超级用户 super user / 管理员 administrator 可创建、删除帐户。登录 login 时核对身份。
审计软件 auditing software:记录并分析系统活动,帮管理员发现异常(友军)。嗅探软件 sniffing software:在计算机上偷偷记录活动、并把记录报告给潜在入侵者(敌人)。
弱口令是最大短板:可被猜到、被钓鱼、被撞库——单靠口令最不安全。
对内:特权指令与特权级别Attacks from Within
| 机制 | English | 作用 |
|---|---|---|
| 特权指令 | privileged instruction | 只有 OS(高特权级)能执行的危险指令,如直接操作磁盘、修改内存管理表 |
| 特权级别 | privilege level | CPU 的运行级别:普通程序在低级别执行,碰到特权指令会被拦下并通知 OS |
| 威胁 | — | 已登录用户的恶意程序企图绕过权限、偷数据或破坏系统 |
多因素认证:一道口令不够,就上三道Multi-factor Authentication
多因素认证 multi-factor authentication:需要一种以上的证据才授予访问权限。三类因素:
口令、PIN 码、密保问题答案。
ATM 卡、专用安全令牌、特定手机号码的智能手机(接收验证码)。
指纹、人脸、语音、视网膜图案等生物特征。
| 防线 | 措施 |
|---|---|
| 对外(3.5.1) | 帐户 + 口令 + 登录控制 + 审计软件(检测嗅探);用户提高口令强度 |
| 对内(3.5.2) | 特权指令 + 特权级别管住程序行为;多因素认证管住“人”的身份 |
- 外部防线:帐户/管理员/登录 + 审计软件盯活动、查嗅探;弱口令是最大短板。
- 内部防线:特权指令与特权级别,让普通程序碰不到危险操作。
- 多因素认证 = 知道的 + 拥有的 + 自身的,两类以上证据组合才放行。
课堂练习参考答案Answer Key
参考答案(共 10 题)
| 小节 | 题号 | 答案 | 一句话解析 |
|---|---|---|---|
| 3.1 历史 | Q1 | B | 多道程序设计 = 时间片 + 快速切换,制造“同时执行”的错觉;D 说的是批处理 |
| Q2 | A | 队列 queue 的定义就是先进先出 FIFO | |
| 3.2 体系结构 | Q3 | C | GUI 属于用户界面;内核 = 文件/驱动/内存/调度/分派 |
| Q4 | B | boot loader 永久存放在 ROM 中,开机最先执行 | |
| 3.3 协调活动 | Q5 | B | 进程是“执行程序的动态活动”;静态指令是程序 |
| Q6 | C | 计时器到点产生中断,控制权传回分派程序,开始下一次调度 | |
| *3.4 竞争 | Q7 | B | 临界区一次只允许一个进程执行 = 互斥 |
| Q8 | D | 三条件缺一不可,破坏任意一条即可(SPOOLing / 一次申请全部资源 / 强制回收) | |
| 3.5 安全性 | Q9 | A | 嗅探软件是“窃听器”;B 描述的是审计软件,二者正相反 |
| Q10 | C | know / have / are 三类因素;D 三样其实都属于“你知道的” |
本章重点名词中英对照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 | 超级用户 / 一防一贼 / 三类证据组合 |
第 3 章 · 操作系统 —— 完