In [1]:
from mosaic import *
OS2023(12)

12. 真实世界的并发 Bug¶

Changelog & 反馈

  • QEMU 的 monitor 哪去了?
  • Mandelbrot set or Julia set? (我找助教检查了,但助教竟然还没有回我)
  • 修复了同学提出的 typo (欢迎大家提出任何问题,包括意见和建议)

背景回顾:当我们在写程序的时候,我们其实是在写 bug。时至今日,我们还没有有效、方便的技术能帮助我们快速构建可靠的软件系统。然而并发 bugs “若隐若现” 的特性又导致它们经常逃脱开发人员的掌控。

本讲内容:常见的并发 bugs

  • 死锁
  • 数据竞争
  • 原子性和顺序违反
In [2]:
slideshow('12.1')

这个事故告诉我们:在安全攸关的系统中,独立的防护模块是必不可少的。依据调试理论,即便不是安全攸关的系统,独立于程序实现的逻辑检查 (assertions) 可以在软件造成问题之前 fail fast。

In [3]:
slideshow('12.2')
In [4]:
model('m/deadlock-aa.py', check=True)