操作系统:选锁之前先解释交错执行
并发推理先列允许发生的事件。本路线分开操作系统抽象、内核实现与真实语言规则。一个轨迹能反驳全称保证,同步论证则须说明它排除了哪些轨迹。
学习计划与例题由 University Reading List 编辑整理。 编辑与选书方法 · 来源确认日期:
本页目录
这份指南适合谁
适合掌握C、指针、栈和计算机组成的系统学习者。下题是完整规定的顺序一致抽象机;不能把这些规则偷偷套给未同步的C数据竞争。
选择你的起点
三本书如何取舍
操作系统:三个简单部分
Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau · 版次: 1.00 · 2018
免费操作系统教材,结合概念与实验
- 什么情况下适合读
- 能追C指针,想从系统问题理解机制。
- 什么情况下选别本
- 仍需第一门编程,或期待在线正文与所选纸书逐页一致。
- 建议阅读范围
- 读OSTEP并发引言、锁和条件变量,必要时先补进程及地址空间。
- 局限与取舍
- 所选2018记录为1.00,作者在线已1.10;免费分章PDF与付费合并便利版不同。
选书前试做
把共享更新拆成读取、私有计算与写回,列允许次序。
检查标准: 先说什么原子,不能把高级语句自动当原子操作。
xv6: a simple, Unix-like teaching operating system
Russ Cox; Frans Kaashoek; Robert Morris · 版次: RISC-V revision 5 · 2025
免费教学内核配套
- 什么情况下适合读
- 想把进程、陷入、内存与锁连接到小型实现。
- 什么情况下选别本
- 尚缺C/汇编,或想让教学内核代表全部生产权衡。
- 建议阅读范围
- 2025年9月2日RISC-V修订5,先接口与组织,再按标题读锁和调度并配同版代码。
- 局限与取舍
- 小型设计便于追路径但省略生产复杂性,不能混用x86说明、新仓库和旧行号。
选书前试做
选一个锁保护的不变式,找所有能改状态的路径。
检查标准: 不只报锁名,须说明为什么所有相关路径需要同一把锁。
Operating System Concepts(操作系统概念)
Abraham Silberschatz; Peter Baer Galvin; Greg Gagne · 版次: 10 · 2018
商业综合参考
- 什么情况下适合读
- 需要课纲中的进程、同步、内存与存储术语。
- 什么情况下选别本
- 把公开课件或部分练习解答当作免费全书与全部教师答案。
- 建议阅读范围
- 2018第10版按标题选进程/线程、同步和所需内存管理。
- 局限与取舍
- ISBN 9781119320913为Wiley电子产品,其他套装及纸本配套编号不同。
选书前试做
比较互斥、顺序与进展三类要求。
检查标准: 互斥可阻止重叠,却不自动决定谁先,也不规定调度策略。
开始前需要会什么
交错是什么?
保留各线程自身先后约束的单个事件顺序,结果按该顺序实际读到的值计算。
保护多大范围?
若不变式依赖读改写组合,应保护整个组合;分别锁读取和写回不让两者成为一个更新。
模型省略什么?
本题原子读写且全局有序,计算私有;真实语言内存、编译变换、故障与公平性另需说明。
六步学习计划
已完成步骤: 0 / 6
勾选用于自我记录,不是成绩评定;标记不会发送给本站。
-
规定机器
建议阅读范围: OSTEP并发引言。
要做的练习: 写共享状态、私有寄存器、原子事件及各自顺序。
检查标准: 不偷加未说明的语言行为。
-
追一条执行
建议阅读范围: 同一阅读与原题。
要做的练习: 逐次列读取值与写回值。
检查标准: 写回用先前保存值,不必是最新共享值。
-
覆盖全部顺序
建议阅读范围: 同步阅读。
要做的练习: 列两读前写约束下的六条顺序。
检查标准: 证明枚举完整而非只举有趣例子。
-
写不变式
建议阅读范围: xv6锁及参考讨论。
要做的练习: 写整个更新须共同观察和发布的状态。
检查标准: 保护范围由不变式决定,不由代码一行长短决定。
-
改变同步
建议阅读范围: 变式。
要做的练习: 用同一互斥锁重算,再额外指定顺序。
检查标准: 互斥与结果确定是两件事。
-
接真实实现
建议阅读范围: 同版xv6路径或课程题。
要做的练习: 说明语言和内核机制怎样建立假设顺序。
检查标准: 抽象轨迹正确不认证未审查的生产程序。
原创例题与解析
原创事件机:原子读取不等于原子更新
共享x初值10。线程1读入r1再写r1+3,线程2读入r2再写2r2,事件记R1,W1,R2,W2。列R1先W1、R2先W2的所有顺序及末值。
前提假设
各次读写不可分,四事件顺序一致,读取最近已写值或初值10。私有计算无共享事件,两线程均完成,无其他访问。这不是未同步C程序。
- R1,W1,R2,W2依次读10、写13、读13、写26。R2,W2,R1,W1依次读10、写20、读20、写23。
- R1,R2,W1,W2与R2,R1,W1,W2均读两次10,最终W2写20;R1,R2,W2,W1与R2,R1,W2,W1也读两次10,最终W1写13。
- 在线程1两有序事件的四槽中选二,有choose(4,2)=6种,其余给线程2,上述已全部覆盖。
- 末值集合{13,20,23,26}。串行得26或23,其余因保存的旧读数覆盖另一次结果而丢失更新。
答案与解释
六条合法交错只产生13、20、23、26,单个事件原子不使复合更新原子。
检验结果
每条用四行状态账复算;不能推广给内存/竞争语义不同的语言执行。
改变假设,再做一题
改变同步:互斥仍留下顺序选择
仅改同步:同一互斥锁覆盖各线程整段读取与写回,且都完成。剩什么结果?再额外规定线程1整段先于线程2的交接。
- 临界区不能重叠;1先时10→13→26,2先时10→20→23。
- 排除了13与20,仍有23及26,因为加法与翻倍不交换,互斥规则未选顺序。
- 额外交接后仅10→13→26。顺序要求是新增条件,不能从同锁推得。
答案与解释
仅互斥得{23,26},加指定交接得{26};原子性与确定顺序不同。
检验结果
分别复合两更新函数;公平、死锁及真实语言正确性还需实现论证。
常见误区
假定语句原子
源码更新可能包含多个可见事件。
锁名当证明
所有相关访问须由同一合适锁保护完整转换。
互斥当顺序
不交换的串行操作仍可有不同结果。
进入下一阶段之前
- 能枚举全部顺序并复现读写值。
- 能说明同步精确排除哪些结果。
- 能分清抽象机与真实语言/内核。
参考来源与版本
来源确认日期:
- OSTEP: free conceptual chapters and current online version
三部分结构提供概念与免费分章路线。
- OSTEP: publication and revision history
1.00记录与持续修订的1.10不同。
- OSTEP: concurrency introduction
并发引言支持事件推理,数值与轨迹为原创。
- MIT: xv 6 RISC-V revision 5, September 2025
固定2025 RISC-V书配可追内核。
- Wiley: tenth-edition electronic product identity
精确第10版产品与配套资料不同于其他格式。
这些是本站建议的学习活动,并非大学官方作业,也不代表对每本书逐页通读。