回 Jason 主站

教程笔记 · Part 3

死锁 · 网络 / 分布式 / 云。

本文覆盖:第六章末尾(死锁)+ 第七章(网络环境下的操作系统)+ 附录《操作系统教程》导学 + 课后阅读材料 + 封底。

Part 1(前 1/3)+ Part 2(中 1/3)已覆盖第 1-5 章 + 第六章前半(并发概念、PV、管程、经典问题、进程通信),本文从 6.6 死锁开始。


第 6 章 6.6 节 死锁(书 p230-p239 / img-241~250)

知识点插图:第 6 章 6.6 节 死锁(书 p230-p239 / img-241~250)
插图:第 6 章 6.6 节 死锁(书 p230-p239 / img-241~250)

6.6.1 死锁的产生

知识点插图:6.6.1 死锁的产生
插图:6.6.1 死锁的产生

死锁定义:一组进程处于死锁状态——若进程集合中每个进程都在等待”只能由该集合中的另一个进程才能引发的事件”,则称这组进程或系统发生了死锁。形式上:n 个进程 P1,…,Pn,每个 Pi 因申请不到资源 Rj 而处于等待状态,而 Rj 又被 Pi+1 占有,Pn 申请的资源被 P1 占有——形成永无解的循环等待。

死锁举例(教材 p231-233 给出 6 个例子,按死锁起因分类):

  • 例 3 — 竞争资源:进程 P 持有读卡机申请打印机、Q 持有打印机申请读卡机 → 互相等。
  • 例 4 — PV 操作使用不当:Q1 = P(s1); P(s2); …,Q2 = P(s2); P(s1); …,s1=s2=1 初值。Q1 拿到 s1 后切到 Q2,Q2 拿到 s2,再各自申请对方信号量 → 死锁。这种死锁不涉资源,是 P 操作排序不当造成。
  • 例 5 — 同类资源分配不当:m 个资源被 n 个进程共享,每个进程要求 K 个,且 m<n·K。轮流分配第一轮后资源耗尽,第二轮全部阻塞。
  • 例 6 — 临时性资源使用不加限制:P1 等 P3 信件 S3 才发 S1;P2 等 P1 信件 S1 才发 S2;P3 等 P2 信件 S2 才发 S3 → 循环等待。

6.6.2 死锁的防止

知识点插图:6.6.2 死锁的防止
插图:6.6.2 死锁的防止

Coffman(1971)总结的 4 个必要条件(前三个为必要不充分;第四个是前三个同时存在的结果):

# 条件 含义
1 互斥(mutual exclusion) 资源任一时刻仅一个进程独占
2 占有和等待(hold and wait) 进程因申请资源得不到满足而等待时不释放已占资源
3 不剥夺(no preemption) 资源只能由占用进程主动释放
4 循环等待(circular wait) 存在一个循环等待链

只要破坏 4 个条件之一即可防止死锁

破坏方法:

  1. 破坏互斥——资源可同时访问而非互斥。简单但很多资源天然互斥(例如打印机),故并不普适。可考虑 SPOOLing 技术用共享磁盘模拟独占设备。
  2. 剥夺式调度——破坏不剥夺条件。仅适合主存资源和处理器资源(其他资源剥夺代价高)。一种做法:申请未获时主动释放已占资源,重新一起申请。
  3. 静态分配策略:进程执行前一次申请它需要的全部资源,全部满足才开始。破坏”占有和等待”条件。优点:实现简单;缺点:资源利用率低(早期占有但晚期才使用的资源浪费)。
  4. 层次分配策略:资源分多个层次,进程只能按层次顺序申请;要释放某层资源必须先释放更高层资源。破坏”循环等待”。比静态分配资源利用率高,但若进程使用资源的次序与系统层次次序不一致,仍有空闲浪费(例如规定磁带机层次低于绘图仪,进程使用绘图仪前必须先申请磁带机,导致磁带机长时间空闲)。

6.6.3 死锁的避免 — 银行家算法(Dijkstra 1965)

知识点插图:6.6.3 死锁的避免 — 银行家算法(Dijkstra 1965)
插图:6.6.3 死锁的避免 — 银行家算法(Dijkstra 1965)

思想:在为申请者分配资源前先测试系统状态,若分配会产生死锁则拒绝;否则分配。仅当申请者可能无条件归还它所申请的全部资源时,才分配资源。

经典例题(教材 p236):

设系统有 3 个进程 P、Q、R,共 10 个同类资源。当前分配状态:

进程 已占 还需
P 4 4
Q 2 2
R 2 7

剩余资源 = 10 - 4 - 2 - 2 = 2。

  • 若给 P 或 R:P 还需 4(4+2=6 仍不足 8 即 4+4),R 还需 7(2+2=4 仍不足 7+2=9);之后任何进程申请资源都得不到满足 → 可能死锁。
  • 若给 Q:Q 最多再需 2,2 个剩余可以满足 → Q 可执行结束并归还其全部 4 个资源。系统得到 4 个资源后情况为:P(4,4), R(2,7)。此时可满足 P 的 4 个申请,但 R 仍无法满足(4-4=0 < 7)→ R 申请会被拒绝。

正确性证明思想:按银行家算法分配后,系统中至少存在一个进程,单独让它执行下去能获其全部所需资源 → 它可结束并归还资源;归还后又可让下一个进程满足……所以不会有进程永远等待。

缺点:保守、资源利用率低;且每次分配前都要检查每个进程对各类资源的最大需求,时间开销大

6.6.4 死锁的检测

知识点插图:6.6.4 死锁的检测
插图:6.6.4 死锁的检测

思路:不限制资源分配,但定时跑一个死锁检测程序,发现死锁则解除。

两张表格法

  • 占用资源表:记录每个进程占用了哪些资源
  • 等待资源表:记录每个被阻塞进程在等什么资源

若进程 Pi 等待资源 rk,rk 被 Pj 占用,则 Pi 与 Pj 有等待占用关系,记 W(Pi, Pj)。若反复检测出 W(P1,P2), W(P2,P3),…,W(Pm,P1) 这样的循环 → 系统出现死锁。

Warshall 传递闭包算法(用矩阵 A[bij] 表示等待占用关系,bij=1 表示 Pi 等待 Pj 占用的资源):

for (int k = 1; k <= n; k++)
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            bij = bij ∨ (bik ∧ bkj);

执行后得传递闭包 A[bij]。若 A 中存在 bii = 1(i = 1,…,n),即对角线有 1,则说明存在循环等待 → 死锁**。

死锁解除方法

  1. 结束所有进程并重启 OS(代价大)
  2. 撤销所有死锁进程,重新启动它们
  3. 设置校验点(checkpoint)回退(要求系统建立并保存校验点,支持回退/重启机制)
  4. 中止一个卷入死锁的进程,再重新执行

检测死锁是否出现 + 死锁后实际恢复的代价 > 防止/避免的代价;但死锁不常出现时这种做法仍值得。检测代价依赖于频率,恢复代价是时间损失。

6.6 本章小结(书 p239)

知识点插图:6.6 本章小结(书 p239)
插图:6.6 本章小结(书 p239)

并发进程间存在两种基本关系:竞争(互斥)和协作(同步)。

  • 并发进程中与互斥共享变量有关的程序段称为临界区。实现临界区管理的硬件方式(关中断、测试并设置指令等)最大缺点是采用忙式等待测试,浪费 CPU 时间
  • 信号量与 PV 操作是一种有效的临界区管理方法。记录型信号量引入等待队列,进入临界区前 P 操作、退出后 V 操作。
  • 使用信号量与 PV 时,对共享资源的管理分散在各进程中——为统一管理,引入管程方法。管程使并发进程间相互作用更清晰,更易于编写正确的并发程序。
  • 用 PV 或管程可解决进程互斥与同步问题,相关经典问题:
  • 生产者-消费者问题
  • 苹果-橘子问题
  • 读者-写者问题
  • 哲学家就餐问题
  • 关中断、信号量与 PV 及管程属于进程的低级通信机制进程间通信机制(IPC)是高级通信方式:通过信件交换信息,包括直接通信和间接通信;高级机制有基于流的通信、基于 RPC 的高级通信规约等。
  • 死锁:一组并发进程因等待其他进程占有资源而永远不能向前推进的僵化状态。4 个必要条件:互斥、占有和等待、不剥夺、循环等待。三种解决策略:死锁防止、死锁避免、死锁检测和解除。

习题六(书 p240-246 / img-251~257)

知识点插图:习题六(书 p240-246 / img-251~257)
插图:习题六(书 p240-246 / img-251~257)

1. 思考题(部分):(5)进程互斥与进程同步的异同;(7)临界区管理的基本原则;(10)为什么 PV 操作必须是不可分割的原语操作;(11)管程与进程的不同点;(13)霍尔(Hoare)管程的实现方法;(17)产生死锁的必要条件;(18)死锁防止策略列举;(19)银行家算法基本思想;(20)如何判断系统内是否发生死锁。

2. 应用题精选(共 24 题,涵盖 PV 与管程经典综合):

  • (1) 用 Bernstein 条件证明 S2 与 S3 可并发,S3 与 S4 不可并发
  • (2) k = k*2 与 k = k+1、print k 等并发,找时间相关错误
  • (3) 验证 Dijkstra 临界区软件算法满足临界区管理原则
  • (4) c1=1-c2 / c2=1-c1 临界区算法分析
  • (5)(6) 用关中断 / 测试并设置指令实现单处理器信号量
  • (7) S1=S2=0 时 P1/P2 并发后 x、y、z 的值
  • (8) n 个进程共享互斥段,每次允许 1 个 vs 至多 m 个并发,信号量初值范围
  • (9) R 输入、M 加工、P 输出 三进程协作(一个缓冲区 K 信息块 / 两个缓冲区每个 K 信息块)
  • (10) 用记录型信号量解哲学家就餐问题
  • (11) 公共汽车上司机/售票员同步
  • (12) 快餐店 4 类员工(领班/厨师/打包/出纳)并发流程
  • (13) 一个仓库存放 X、Y 两种产品,要求 -N<X-Y<M,用 PV 实现
  • (14) 仓库 A、B 零件先入先出装配(max m,差不超 n)
  • (15) 单行小巷有 S 安全岛容 2 人,A、B 两端通过算法
  • (16) 用管程实现磁盘电梯调度算法
  • (17) 阅览室 100 座,登记表登记/注销
  • (18) 苹果-橘子问题:盒子最多 2 水果,爸爸放苹果、妈妈放橘子,儿子吃橘子、女儿吃苹果。① 信号量+PV ② 管程
  • (19) 儿童小汽车流水线,N 个槽,组 1 加车架、组 2 加车轮、组 3 取 1 车架+4 车轮组装。① PV ② 管程
  • (20) 一组生产者+一组消费者共享 9 缓冲区,生产者一次写三个、消费者一次取一个
  • (21) 吸烟者问题(Patil 1971):3 位吸烟者各持一种原料(烟草/纸/火柴),供应者随机放出 2 样不在桌上的,唤醒能用的吸烟者
  • (22) 三生产者 P1/P2/P3 共享橘子水原料(糖+水+橘子精)
  • (23) 页式存储管理 free[index] 数组用管程实现 acquire/release
  • (24) 用管程实现”睡眠的理发师”问题:1 理发师、1 理发椅、n 个候发椅

第 7 章 网络环境下的操作系统(书 p247-p302 / img-258~313)

知识点插图:第 7 章 网络环境下的操作系统(书 p247-p302 / img-258~313)
插图:第 7 章 网络环境下的操作系统(书 p247-p302 / img-258~313)

本章主线:网络体系结构 → 网络/分布式 OS → 云计算/虚拟化 → 移动终端 OS → 网络安全 → 区块链。

对应学校 ch6(如学校把网络与分布式合并到 ch6)或单独讲座章节。

7.1 计算机网络与网络操作系统(书 p247-p256)

知识点插图:7.1 计算机网络与网络操作系统(书 p247-p256)
插图:7.1 计算机网络与网络操作系统(书 p247-p256)

7.1.1 网络体系结构

知识点插图:7.1.1 网络体系结构
插图:7.1.1 网络体系结构

ARPANET(advanced research projects agency network)— 计算机网络发展里程碑,由通信子网和资源子网两层结构组成,含纠错、路由选择、分组交换、流量控制等。

OSI-RM(开放系统互联参考模型,ISO 1980 年代)— 7 层标准化通信体系:物理层 / 数据链路层 / 网络层 / 传输层 / 会话层 / 表示层 / 应用层。每层附加层头,最终从物理层发到目标系统再逐层剥离。

TCP/IP(实际工业标准)— 1983 年起在 UNIX BSD 上使用,并非国际标准但简洁实用:

  • 最知名的两层:传输层 TCP(transmission control protocol)+ 网络层 IP(internet protocol)
  • 主要特点:适用于多种异构网络互连,提供可靠的端到端协议,与操作系统紧密结合
  • 三层结构:① 应用层(对应 OSI 应用层 + 表示层 + 会话层),② 传输层 TCP,③ 网际层 IP

7.1.2 网络操作系统(NOS)

知识点插图:7.1.2 网络操作系统(NOS)
插图:7.1.2 网络操作系统(NOS)

典型特征:① 硬件独立性 ② 多用户支持 ③ 支持网络实用程序 ④ 多种客户端支持 ⑤ 单一逻辑目录服务 ⑥ 多种增值服务(文件/打印/通信/数据库/WWW)⑦ 可操作性。

三种模式

模式 特征 代表
集中模式 一台主机+若干终端,处理和控制集中 UNIX
C/S(客户机/服务器) 服务器集中资源管理和安全控制,客户机有独立处理能力,按需请求 NetWare、Windows NT
P2P(对等) 每台机兼客户机和服务器,无中央控制,平等可扩展 NetWare Lite、Windows for WorkGroup

C/S 优点:数据分布存储、处理分布、应用编程方便。

7.1.3 网络文件系统(NFS)

知识点插图:7.1.3 网络文件系统(NFS)
插图:7.1.3 网络文件系统(NFS)

Sun NFS — 构建于 TCP/IP,广泛用于 UNIX 及其他 POSIX 系统。

结构:每个 NFS 服务器输出一个或多个目录供远程客户机访问。客户机将远程目录”安装(mount)”到本地目录层次中——对客户机程序而言文件本地/远程访问无差别。

关键数据结构 — VFS(virtual file system)虚拟文件系统层:每个打开的文件对应一个 v 节点(v-node)。v 节点指针指向:

  • 客户机代码中的 r 节点(远程节点)→ 表示远程文件
  • 本地操作系统的 i 节点(i-node)→ 表示本地文件

关键调用

  • mount:分析远程目录、建立联系,请求得到目录的文件句柄;将句柄交给内核,构造 v 节点
  • open:打开远程文件得到远程文件描述符,对应 VFS 层中的某个 v 节点
  • read/write:通常以较大块(8 KB)传输;客户机有”提前读”机制提高性能;写采用”延迟写”——若 write 提供数据 < 8 KB,先在本地累积,整块满后才传到服务器;文件关闭时统一发送

7.2 分布式操作系统(书 p256-p266)

知识点插图:7.2 分布式操作系统(书 p256-p266)
插图:7.2 分布式操作系统(书 p256-p266)

7.2.1 概念与特点

知识点插图:7.2.1 概念与特点
插图:7.2.1 概念与特点

分布式操作系统建立在”松散耦合的多台计算机”上,但本身是紧密耦合软件——它把整个系统作为一个整体管理,进程可以在任意节点执行而对用户透明。

与网络 OS 的区别:网络 OS 强调每台机器独立操作系统,仅协议互联;分布式 OS 强调统一系统映像。

7.2.2 分布式进程通信

知识点插图:7.2.2 分布式进程通信
插图:7.2.2 分布式进程通信

需解决:① 目标进程寻址 ② 通信原语设计。

寻址法:① 机器号+进程号 ② 广播寻址 ③ 名字服务器寻址。

同步/异步通信原语:基本形式 Send(P, Message)Receive(Q, Buffer)

  • 同步通信:发送进程阻塞直到收到回答;超时则认为消息丢失,重发。缺点:并行性差,无法利用广播功能。
  • 异步通信:发送后不阻塞继续执行。缺点:发送进程不能修改/重用缓冲区。两种解法:① 由 Send 原语将消息复制到系统缓冲区;② 消息发送后向发送进程发中断通知释放缓冲区。

接收消息也分阻塞型/非阻塞型。

缓冲/非缓冲原语

  • 缓冲:内核创建信箱,所有寄至该地址的消息进信箱;接收进程从信箱读取,没消息则阻塞
  • 非缓冲:用指向特定进程的地址;执行 receive(addr, &m);消息到达时直接复制到接收区

RPC(远程过程调用)— 6.5.2 已介绍,本章不再赘述(PRC 见教材 6.5.2 / img-241 上下文)。

RPC/XDR 高级通信规约(书 p230-231,与本章对接):

  • 客户存根(client stub)+ 服务器存根(server stub)打包/拆包参数
  • 异构系统中需要 XDR(external data representation 外部数据表示)做格式转换
  • 客户进程通过调用服务器提供的过程/服务实现通信,过程中会话层与表示层规约屏蔽底层网络细节

套接字(socket)调用时序(书 p258-259 给出图 7-4,分两组):

无连接(UDP): - 服务器:socket() → bind() → recvfrom()/sendto() → closesocket() - 客户:socket() → bind() → recvfrom()/sendto() → closesocket()

面向连接(TCP): - 服务器:socket() → bind() → listen() → accept() → recv()/send() → closesocket() ns → closesocket() s - 客户:socket() → connect() → send()/recv() → closesocket()

服务器收到客户请求后通常创建子进程响应,自己继续 listen,形成主从服务器并发。

7.2.3 分布式共享内存(DSM)

知识点插图:7.2.3 分布式共享内存(DSM)
插图:7.2.3 分布式共享内存(DSM)

李凯(1986 年)提出 distributed shared memory 概念:在物理分散的内存上,给程序员一个逻辑统一的地址空间,任何处理器都能直接读写。优点:内存可扩充、共享内存结构通用、可移植、易编程。

一致性模型(性能从严到松):

模型 关键特征
严格一致性 任何读取都得到最近的写入值
顺序一致性(Lamport 1979) 所有进程看到的操作序列一致,但不要求实时
处理器一致性 同一处理器写入按顺序传播;不同处理器写入可被其他人以不同顺序看到
PRAM(pipelined RAM) 同一处理器写入按顺序通知其他人;不同处理器写入次序可不同
弱一致性(synchronization variable) 通过同步变量同步内存:同步操作完成时所有写入向外传播;同步操作满足顺序一致
释放一致性(acquire/release) acquire = 进入临界区,release = 离开临界区

释放一致性条件:执行共享变量读写前,进程之前的 acquire 必须成功完成;允许 release 前,之前的所有读写必须完成;acquire 和 release 满足处理器一致性(不需顺序一致)。

基于页的 DSM 设计:用主存管理单元 + OS 软件模拟多处理器缓存——为每个机器提供线性分页内存,页可在机器间移动。地址空间分为页块(chunks),分布在所有处理器上。访问非本地地址 → 陷入指令 → DSM 软件取来包含该地址的数据块 → 重启故障指令。

7.2.4 分布式事务处理

知识点插图:7.2.4 分布式事务处理
插图:7.2.4 分布式事务处理

两阶段提交(2PC)

  • 阶段 1(投票):协调者发 Vote-Request → 参与者响应 Vote-Commit / Vote-Abort
  • 阶段 2(决定):若全部 Commit,协调者发 Global-Commit;否则发 Global-Abort;参与者收到后执行并回 ACK

致命缺点:参与者在 Ready(投票后等决定)状态崩溃 → 重启后无法独立决定提交还是回滚 → 阻塞。

三阶段提交(3PC)(书 p264 状态机 7-6):

  • 阶段 1:与 2PC 相同(Vote-Request → Vote-Commit/Abort)
  • 阶段 2:协调者发 Prepare-Commit(而非直接 Global-Commit),参与者从 Wait 进 Precommit 状态
  • 阶段 3:协调者发 Global-Commit;ACK

崩溃的参与者重启后若发现自己已在 Precommit,可以独立做出 Commit 决定(与其他 Ready 状态者也能达成一致),避免阻塞。但实际中 2PC 阻塞情况很少,3PC 应用不多。

7.3 云计算与虚拟化(书 p266-p273)

知识点插图:7.3 云计算与虚拟化(书 p266-p273)
插图:7.3 云计算与虚拟化(书 p266-p273)

7.3.1 云计算

知识点插图:7.3.1 云计算
插图:7.3.1 云计算

起源:60 年代麦卡锡(McCarthy)将计算能力作为像水电一样的公用资源。云计算是分布式计算、并行计算、效用计算、网络存储、虚拟化、负载均衡等技术与计算机网络融合的产物。

服务模式

  • IaaS(基础设施即服务):虚拟机、存储、网络
  • PaaS(平台即服务):操作系统、运行时、数据库
  • SaaS(软件即服务):应用程序

部署模式:公有云 / 私有云 / 混合云 / 社区云。

7.3.2 虚拟化

知识点插图:7.3.2 虚拟化
插图:7.3.2 虚拟化

关键概念 — Hypervisor / VMM(virtual machine monitor):位于硬件与虚拟机操作系统之间,承担硬件资源的管理与分配。

全虚拟化 vs 半虚拟化

  • 全虚拟化:客户 OS 不修改,VMM 完全模拟硬件
  • 半虚拟化:客户 OS 修改部分代码以协助 VMM,性能更好

三类虚拟化

  1. CPU 虚拟化(图 7-8): - 非虚拟化:用户态 [应用程序] / 内核态 [操作系统] / [硬件] - 全虚拟化:用户态 [VM 应用] / 内核态 [VM OS, 监视器] / [服务器硬件]

  2. 内存虚拟化(图 7-9):物理机内存被打包成多个虚拟物理内存供 VM 使用。Hypervisor 维护”虚拟机内部连续内存块”与”物理机内存块”的映射。两种实现:影子页表法页表写入法。地址映射:进程逻辑内存 → 虚拟机虚拟物理内存 → 内存虚拟化管理层 → 服务器物理内存。

  3. 设备与 I/O 虚拟化:将物理设备打包成虚拟设备给虚拟机使用,模拟物理设备操作。

7.4 移动终端操作系统(书 p273-p286)

知识点插图:7.4 移动终端操作系统(书 p273-p286)
插图:7.4 移动终端操作系统(书 p273-p286)

7.4.1 移动终端处理器结构

知识点插图:7.4.1 移动终端处理器结构
插图:7.4.1 移动终端处理器结构

GPU vs CPU:CPU 擅长逻辑控制和串行计算,GPU 擅长大规模并行浮点运算。

混合架构:移动 SoC 同时集成 CPU 核心 + GPU 核心 + 专用加速器(NPU、ISP 等)。

GPU 编程库:OpenGL ES(移动端)、Metal(iOS)、Vulkan、CUDA(NVIDIA)等。

7.4.2 触摸屏与人机交互

知识点插图:7.4.2 触摸屏与人机交互
插图:7.4.2 触摸屏与人机交互

7.4.3 移动终端的无线通信

知识点插图:7.4.3 移动终端的无线通信
插图:7.4.3 移动终端的无线通信

7.4.4 移动终端的操作系统实例

知识点插图:7.4.4 移动终端的操作系统实例
插图:7.4.4 移动终端的操作系统实例

1. Android(Google 2007 年发布 SDK,2008 年 9 月 1.0)

分层结构(图 7-16,自顶向下):

内容
应用层 电话、短信、联系人、浏览器…
框架层 活动管理器、窗口管理器、内容提供者、包管理器、资源管理器、视图系统、通知管理器
系统运行库层 表面管理、媒体框架、OpenGL ES、Libc、SQLite、WebKit、安卓运行库(核心库 + Dalvik 虚拟机)
Linux 内核层 显示屏驱动、键盘驱动、闪存驱动、相机驱动、声卡驱动、蓝牙驱动、Wi-Fi 驱动、Binder IPC 驱动、电源管理驱动、USB 驱动

触摸事件传递机制(图 7-12 Activity 组件结构):

  • Activity 包含 Window;Window 由 PhoneWindow 实现;PhoneWindow 把 DecorView 作为根视图
  • DecorView 分两区:TitleBar(标题栏)+ ContentView(程序员编写的代码)
  • 事件类型:MotionEvent → ACTION_DOWN / ACTION_MOVE / ACTION_UP

事件传递三阶段方法:

  1. dispatchTouchEvent — 分发:返回 true 表示已处理;false 调 super 继续分发
  2. onInterceptTouchEvent — 拦截:返回 true 拦截并交本身 onTouchEvent;false 继续传给子视图
  3. onTouchEvent — 处理:返回 true 表示当前视图能处理;false 传回父视图的 onTouchEvent

Binder IPC — Android 独有的进程间通信机制;驱动位于 Linux 内核,提供单独设备节点。

Wi-Fi 通信架构(图 7-14,自顶向下):

  • 应用框架(application framework):Apps、android.net.wifi
  • 系统服务的 Wi-Fi 服务(com.android.server.wifi):WifiService、WifiP2pService、WifiAwareService、WifiRttService
  • 硬件接口设计语言(HIDL,hardware/interfaces/wifi):Vendor HAL、Supplicant HAL、Hostapd HAL
  • 厂商实现驱动 + wificond 进程(system/connectivity/wificond,通过 nl80211 命令与 Wi-Fi 驱动通信)

HIDL 三类接口:① Vendor HAL(供应商硬件抽象,对 Wi-Fi 感知 / Rtt 服务必需)② Supplicant HAL(用 wpa_supplicant 守护进程做连接配置)③ Hostapd HAL(用于建立无线接入点 WAP 和认证服务器)

2. iOS(图 7-17 分层结构,自顶向下):

内容
可触摸层(cocoa touch layer) UIKit.Framework(界面)、EventKit、Notification Center、MapKit、Address Book、iAd、Message UI、PushKit
媒体层(media layer) 图像(Core Graphics、Core Image、Core Animation、OpenGL ES、Quartz2D)、音频(Core Audio、AV Foundation、OpenAL)、视频(AV Foundation、Core Media)
核心服务层(core service layer) CFNetwork、Core Data、Core Location、Core Motion、Foundation、Webkit、JavaScript
核心操作系统层(core OS layer) 基于 FreeBSD + Mach 改写的 Darwin,符合 POSIX 标准的 UNIX 内核;包含硬件驱动、内存管理、进程/线程管理(POSIX)、文件系统、网络等

底层结构提供文件系统、内存管理、I/O 等基础服务;高层结构建立在低层之上,提供 UI 控件、文件访问等具体服务。可触摸层主要核心是 UIKit.Framework——应用界面所有组件都由它呈现。核心服务层在核心 OS 层基础上提供更丰富的功能。

7.5 网络环境下的操作系统安全(书 p284-p294)

知识点插图:7.5 网络环境下的操作系统安全(书 p284-p294)
插图:7.5 网络环境下的操作系统安全(书 p284-p294)

7.5.1 安全概述

知识点插图:7.5.1 安全概述
插图:7.5.1 安全概述

计算机安全广义上包括物理方面(环境/设施/设备/载体/人员)和逻辑方面(软件保护、信息防窃取/破坏)。

影响计算机安全的主要因素:① 操作系统资源共享 ② 计算机网络数据传送 ③ 数据库 ④ 计算机病毒。

可靠性(reliability)= 硬件系统正常持续运行能力;安全性(security)= 防止信息被窃取/破坏。两者是不同概念。

7.5.2 计算机病毒

知识点插图:7.5.2 计算机病毒
插图:7.5.2 计算机病毒

病毒分类

类型 特征
寄生病毒 最普通;附加到可执行文件,执行时复制到其他可执行文件
常驻内存病毒 寄居在内存,作为常驻系统程序的一部分;感染所有执行的程序
引导扇区病毒 感染软盘/硬盘的引导扇区或主引导记录;磁盘引导时传播
秘密病毒 隐蔽自己以避反病毒软件检测
多形病毒 每次感染时变异,特征检测困难
宏病毒 利用办公应用的宏特性;嵌在文档/可执行文件中,自动执行

应对:① 预防(最理想)② 检测(确定感染并定位)③ 识别(病毒类型)④ 清除(根除并恢复程序原状;不能清除则删除并重装无毒版本)。

7.5.3 安全审计(auditing)

知识点插图:7.5.3 安全审计(auditing)
插图:7.5.3 安全审计(auditing)

安全审计 = 对系统中与安全相关的活动进行完整记录、检查、审核——事后追踪保证安全性。

4. 审计缓冲区设计(图 7-18 审计缓冲机制):

  • 用户态:审计点 → 通过审计系统调用进入内核态
  • 内核态:多个审计点 → 循环缓冲 → 内核审计进程 → 写入审计日志文件

由于 I/O 耗时,引入缓冲区。可用多个相同大小的缓冲区构成缓冲池提高并发。审计员可调节缓冲区大小和数量。缓冲区控制结构包括:基址、大小、个数、读/写指针、临界界线等。

7.5.4 安全模型

知识点插图:7.5.4 安全模型
插图:7.5.4 安全模型

OS 安全性内容:

  • 安全策略:授权使用计算机和信息资源的规则
  • 安全模型:精确、无歧义的抽象描述,关联策略与机制
  • 安全机制:解决安全策略所描述的安全问题、保证系统安全的方式方法

安全模型分两种:形式化(数学模型,精确)+ 非形式化(自然语言描述)。常见模型:BLP(Bell-LaPadula 多级安全模型)、Biba 完整性模型、Clark-Wilson、RBAC(基于角色的访问控制)。

7.5.5 安全加密算法

知识点插图:7.5.5 安全加密算法
插图:7.5.5 安全加密算法

对称加密(如 DES、AES):发收方共享密钥,加密解密同一把密钥。

公开密钥加密 — RSA(Rivest, Shamir, Adleman)— 事实国际标准,可加密 + 数字签名:

  1. 网络中每个节点产生一对密钥
  2. 加密密钥放公共文件(公钥),另一为私钥
  3. A 向 B 发送消息,用 B 的公开密钥加密
  4. B 用 B 自己的私钥解密——只有 B 知私钥,故消息保密

数字签名

  • A 用私钥加密签名明文 → 签名密文,发给 B
  • B 用 A 的公钥解密 → 得签名明文,验证发送者身份且不可抵赖
  • 数字签名 = 加密;数字签名验证 = 解密

双重保护(既签名又保密):A 先用自己的私钥加密签名得密文 1 → 再用 B 的公钥加密密文 1 得密文 2 → 发给 B;B 收到密文 2 后先用自己的私钥解出密文 1 → 再用 A 的公钥解出签名明文。

网络加密两种:链加密(相邻节点间链路加密)和端加密(端到端加密)。

7.6 区块链(书 p293-p302 / img-304~313)

知识点插图:7.6 区块链(书 p293-p302 / img-304~313)
插图:7.6 区块链(书 p293-p302 / img-304~313)

7.6.1 区块链概述

知识点插图:7.6.1 区块链概述
插图:7.6.1 区块链概述

起源:2008 年中本聪发布《Bitcoin: a Peer-to-Peer Electronic Cash System》。

  • 狭义:按时间顺序将数据区块以链条方式组合的特定数据结构,由密码学保证不可篡改、不可伪造,去中心化共享总账(decentralized shared ledger)
  • 广义:用加密链式区块结构验证存储数据 + 用分布式节点共识算法生成更新数据 + 用智能合约(自动化脚本代码)编程操作数据 — 全新的去中心化基础架构与分布式计算范式

三个发展阶段

阶段 主要特征 代表
1.0 可编程货币 比特币
2.0 可编程金融(智能合约) 以太坊
3.0 可编程社会 各类应用扩展

特点

  1. 去中心化:用纯数学方法建立信任,非中心机构验证
  2. 时序数据:带时间戳的链式区块结构存储,可验证、可追溯
  3. 集体维护:经济激励机制保证所有节点参与验证
  4. 可编程:脚本代码系统支持智能合约
  5. 安全可信:非对称加密 + 共识算法 → 强大算力抵御外部攻击

7.6.2 区块链的架构(5-6 层模型)

知识点插图:7.6.2 区块链的架构(5-6 层模型)
插图:7.6.2 区块链的架构(5-6 层模型)

数据层 → 网络层 → 共识层 → 激励层 → 智能合约层 → 应用层。

智能合约(smart contract):用算法和程序编制合同条款,部署在区块链上、按规则自动执行的数字化协议。

  • 涉及修改操作 → 全网共识、记录到链上
  • 仅查询操作 → 不需共识、不需上链
  • 支持合约内部事件的注册与通知机制
  • 智能合约目前只能访问链内数据,无法主动监听响应链外事件
  • 类比:智能合约 ↔ 存储过程;区块链 ↔ 数据库

7.6.3 区块链的应用

知识点插图:7.6.3 区块链的应用
插图:7.6.3 区块链的应用

三类区块链系统对比(表 7-1):

特征 公有链 联盟链 私有链
网络结构 完全去中心化 部分去中心化 (多)可信中心
节点规模 无控制 可控 有限
加入机制 随时可参与 特定群体或有限第三方 机构内部节点
记账方 任意参与节点 预选节点 机构内部节点
  • 公有链:完全去中心化,节点无准入,记账方任意参与节点;典型 PoW/PoS 共识
  • 联盟链:部分去中心化,由特定群体或有限第三方加入,预选节点记账;常用 PBFT/SBFT
  • 私有链:(多)可信中心化,机构内部节点;可省激励层,效率最高,常用 Paxos/RAFT

三种典型区块链体系架构对比(图 7-20):

比特币 以太坊 Hyperledger Fabric
应用层 比特币交易 DApp / 以太币交易 企业级区块链应用
智能合约层(编程语言) Script Solidity / Serpent Go / Java
智能合约层(沙盒) EVM Docker
数据层(数据结构) 二叉 Merkle 树 / 区块链表 Merkle Patricia 树 / 区块链表 Merkle Bucket 树 / 区块链表
数据层(数据模型) 基于交易的模型 基于账户的模型 基于账户的模型
数据层(数据存储) 文件存储 LevelDB 文件存储 LevelDB 文件存储 LevelDB
共识层 PoW PoW PBFT / SBFT
网络层 TCP-based P2P TCP-based P2P HTTP/2-based P2P

7 章本章小结(书 p301)

知识点插图:7 章本章小结(书 p301)
插图:7 章本章小结(书 p301)
  • 网络操作系统 = 松散耦合多机上的松散耦合软件。OSI-RM 7 层;TCP/IP 实际标准;Sun NFS 是网络文件系统典型例子。
  • 分布式操作系统 = 松散耦合多机上的紧密耦合软件。分布式进程通信分三类:消息传递机制、远程过程调用(RPC)、套接字。分布式共享内存给程序员逻辑统一地址空间;分布式事务处理用 2PC / 3PC 协议保数据一致性。
  • 云计算与虚拟化:CPU/内存/I/O 虚拟化;IaaS/PaaS/SaaS。
  • 移动终端操作系统:处理器结构、人机交互、无线通信、Android、iOS 实例。
  • OS 安全:安全概述、病毒、安全审计、安全模型、加密算法。
  • 区块链:概述、架构、应用。

对应学校 ch6(分布式/网络专题)+ ch7(OS 安全/前沿)。


附录 《操作系统教程》导学(书 p303-p346 / img-314~357)

知识点插图:附录 《操作系统教程》导学(书 p303-p346 / img-314~357)
插图:附录 《操作系统教程》导学(书 p303-p346 / img-314~357)

设计思想

知识点插图:设计思想
插图:设计思想
  • 依据建构主义教学理论支持自建构主义学习
  • 配合大规模在线开放课程(MOOC)和翻转课堂
  • 采用 Bloom 教学目标分类法:① 记忆 → ② 理解 → ③ 应用 → ④ 分析 → ⑤ 综合 → ⑥ 评价

学习者分类

类别 适用对象
A 计算机/软件专业,意从事 OS/DBMS 开发,必修,Bloom 等级要求最高
B1 计算机/软件专业,从事上层软件,必修+全面认知
B2 电子/控制/通信专业,软硬件协同开发,必修
C1 计算机/软件/电子/控制/通信,从事高层应用开发,选修
C2 与计算密切相关的理工医专业,从事应用开发,选修
D 其他所有专业,按需选修部分内容

全书 Bloom 等级表(按章节)每节给出知识单元-知识点-A/B/C 类要求-学习说明四列表,并配学习视频时长。

例:6.6.1 死锁的产生(知识点要求示例):

知识单元 知识点 A 类 B 类 C 类
死锁的概念 死锁的定义 理解 理解 理解
死锁的概念 死锁的例子 理解 理解 理解
解决死锁三个方法 死锁的防止 分析 应用 记忆
解决死锁三个方法 死锁的避免 分析 应用 记忆
解决死锁三个方法 死锁的检测和解除 分析 应用 记忆

例:6.3.3 生产者-消费者问题探究(知识点):

知识单元 知识点 A B C 说明
PV 解生产者-消费者 生产者-消费者问题分类 理解 理解 记忆
PV 解生产者-消费者 单生产者-消费者共享多个缓冲区 分析 应用 记忆 算法题
PV 解生产者-消费者 多生产者-消费者共享多个缓冲区 分析 应用 记忆 算法题
PV 解苹果-橘子 苹果-橘子问题描述与实质 理解 理解 记忆
PV 解苹果-橘子 PV 操作解苹果-橘子问题 应用 分析 记忆 算法题

附录还包含:

  • 课堂讨论建议(每章结束时两课时:学生陈述 + 学生讨论 + 教师评析;如”第六章 PV 操作”、”第六章管程与高级通信”专题)
  • 课后阅读(如 UNIX/Linux/Java 通信机制 = 自选材料 6-1 / 6-2 / 6-3)

附录章节范围

知识点插图:附录章节范围
插图:附录章节范围
主题
1 第一章导学 — 操作系统概述
1.3.x 多道程序设计概念、操作控制角度、人机交互角度
2 第二章导学 — 处理器与进程
3 第三章导学 — 存储管理(逻辑/物理地址、单连续/段式/页式/段页式)
3.x 地址转换、主存分配/去配、覆盖、交换、虚存
4 第四章导学 — 设备管理(设备独立性、独占型外设、磁盘物理结构、寻道时间/旋转时间/数据传送时间)
5 第五章导学 — 文件系统
6 第六章导学 — 并发程序设计(含 PV、管程、死锁、RPC)
7 第七章导学 — 网络环境下的操作系统(含 7.3 云计算/虚拟化、7.4 移动终端、7.5 安全、7.6 区块链)

对应学校 ch1-ch9 全覆盖,是复习应试时检索”考点要求等级”的工具表。


课后阅读材料(书 p347-p350 / img-358~361)

知识点插图:课后阅读材料(书 p347-p350 / img-358~361)
插图:课后阅读材料(书 p347-p350 / img-358~361)

提供 26 项扩展阅读,分章对应:

  • 自选 1(第一章自学手册收集)
  • 自选 2-1(流水线)
  • 自选 6-1/6-2/6-3(UNIX/Linux/Java 通信机制)
  • 推荐 2-1:《操作系统教程(第 3 版)》”2.7.3 实时调度”
  • 推荐 2-2:《操作系统教程(第 3 版)》”2.7.4 多处理器调度”(负载共享、群调度、专派、动态调度)
  • 推荐 3-1:《操作系统教程(第 3 版)》”4.6 实例研究:Intel X86/Pentium 存储管理硬件设施”
  • 推荐 3-2:《操作系统教程(第 5 版)》”4.7 Linux 虚拟存储管理”(页表机制、缺页处理)
  • 推荐 3-3:《操作系统教程(第 4 版)》”4.8 Windows 2003 虚拟存储管理”
  • 推荐 4-1:Stallings OS Internals 8e “11.6 RAID”
  • 推荐 4-2:《Windows 内核原理与实现》”第六章 Windows I/O 系统”
  • 推荐 4-3:Mauerer Professional Linux Kernel Architecture “Device Drivers”
  • 推荐 2-3:《Windows 内核原理与实现》”5.2 Windows 中断与异常”(含 IRQL、DPC、APC)
  • 推荐 2-4:Mauerer 第二章 “Process Manage and Scheduling”(SCHED_OTHER 分时、SCHED_FIFO/SCHED_RR 实时)
  • 推荐 2-5:《Windows 内核原理与实现》”第三章 Windows 进程和线程”
  • 推荐 2-6:Think in Java 4e 第 14 章 “Multi-Thread”
  • 推荐 3-1:Stallings 8e “8.1 Hardware and Control Structures - Inverted Page Table”

封底元数据(img-362)

知识点插图:封底元数据(img-362)
插图:封底元数据(img-362)
  • 标题:操作系统教程(第 6 版)
  • 系列:普通高等教育精品教材;国家精品在线开放课程主讲教材
  • ISBN:978-7-04-055304-8
  • 定价:¥46.00
  • 特色:① 继承前 5 版优点,充实内容、缩减篇幅、突出重点 ② 补充大量硬件概念图,体现软硬件协同设计 ③ 与精品在线开放课程结合(MOOC + PPT + 课外阅读 + 习题,依托 MOOC 指导授课者建设 SPOC + 翻转课堂)

Part 3 整理疑点

知识点插图:Part 3 整理疑点
插图:Part 3 整理疑点
  1. 页 p230 之前已有 RPC 介绍(6.5.2,本批次起始页正在收尾 RPC + XDR 内容);6.6 死锁是 ch6 终结小节。Part 2 / Part 3 边界落在 6.5.2 RPC,Part 3 里把它作为 7.2 的预备背景重述,避免读者跳跃。
  2. 本书没有独立的 ch8/ch9——网络/分布式/云/移动/安全/区块链全归 ch7,”OS 接口”散在 ch1(操作控制角度,对应 1.3.3 命令解释程序、1.3.4 人机交互)。任务期望的 ch7-ch9 实为本书 ch7 一章 + 附录。
  3. 第六章并发的 PV 解经典问题代码(生产者消费者、读者写者、哲学家、苹果橘子)完整代码在 Part 2(书 p195-p225);本 Part 3 仅有死锁示例代码 + 习题题面陈列。如果学校重点考 PV 经典代码,须查 Part 2。
  4. 银行家算法书中只给单类资源例题(教材 p236);多类资源/Need-Allocation-Available 矩阵版本未在本书呈现,备考时需自行补充。
  5. 死锁检测的 Warshall 传递闭包算法在书中是矩阵版本而非常见的”资源分配图化简法”;考试如出资源分配图法须额外资料。

图片清理报告(241-362 段)

知识点插图:图片清理报告(241-362 段)
插图:图片清理报告(241-362 段)

执行:2026-05-15 子代理批量清理。删 70 张 / 保留 51 张 / 体积 68MB → 44MB(-35%)。

保留集(51 张,按图索引 second_num): - 6.6 死锁段(241-249):章首 + 银行家算法例题(p236)+ 死锁检测两表法(p237)+ Warshall 矩阵 - 习题六(250-256):含多类资源银行家矩阵例题(p245 Need/Allocation/Available 矩阵) - 第七章封面(257-258):网络体系结构 + OSI-RM 引言 - 7.2 分布式(260-275):套接字时序图(p258-259)+ 2PC/3PC 状态机(p264) - 7.3 云计算(277-285):CPU/内存虚拟化框图(图 7-8、7-9) - 7.4 移动 OS(285-298):Android 分层、触摸事件、Wi-Fi 架构、iOS 分层 - 7.5 安全(295-303):审计缓冲机制(图 7-18)+ RSA 数字签名 - 7.6 区块链(304-312):5-6 层架构 + 三类系统对比表 + 三大体系架构对比 - 附录(314-355 抽样):每章 Bloom 等级表样张 - 阅读材料 + 封底(358, 360-362):26 项扩展材料 + ISBN

抽样验证(5 张未读): - p245(img-246-245)→ 6.6.3 死锁避免 + 银行家算法引言 → 已 KEEP - p246(img-247-246)→ 习题 30 + 大量空白 → DELETE - p275(img-275-274)→ 已是 30 内 → KEEP - p325(img-326-325)→ 附录 Bloom 等级表(重复模式)→ DELETE - p345(img-346-345)→ 附录 5.5 文件存取方法表 → DELETE

决策矩阵(与 ch1/ch4 一致): - 章首 / 节首 / 例题 / 状态机 / 架构图 → 保留 - 纯文字段落 / 习题陈列 / Bloom 等级表(重复模式)/ 微视频 QR 页 / 课后阅读纯文字 → 批删 - ch5-7 段保留率(51/121=42%)高于 ch1/ch4(~20%)的原因:本段集中了银行家算法、死锁检测矩阵、状态机、架构对比表等结构化图表,删减空间小于扫描密集的硬件章节。