Review & Comments

Review & Comments

2025 南京大学《操作系统原理》
Review & Comments

Labs

L4 - crepl

  • 框架代码已就绪 (有一些 unit testcases)
  • Online Judge 预计今晚上线

L5 - mymalloc

  • 框架代码预计今晚上线
2025 南京大学《操作系统原理》
Review & Comments

同步:实现 Happens-before

“条件达成前” \to “条件达成后”

  • 23:59:59 大活门口不见不散
    • 存在状态,两人同时到达大活门口且未进行下一步动作
  • 生产 (对象创建) \to 消费 (对象释放)
    • 存在状态,对象已经创建,但还未被释放
  • 线程结束 \to join 返回
    • 存在状态,线程全部结束且后续代码还未开始

于是有了 “条件变量”

  • 等待条件满足:while (!cond) wait(cv, lk);
  • 条件可能满足:broadcast(cv);
2025 南京大学《操作系统原理》
Review & Comments

互斥:也实现了 Happens-before

Release \to Acquire

void lock() {
    std::unique_lock<std::mutex> lk(mtx);
    cv.wait(lk, []{ return !lock_held; });
    lock_held = true;
}
 
void unlock() {
    std::lock_guard<std::mutex> lk(mtx);
    lock_held = false;
    cv.notify_one();  // 或 cv.notify_all()
}
  • 只需要互斥的场景 (例如 mymalloc),mutex lock 效率更高
2025 南京大学《操作系统原理》