^-^
Why so serious?
lec12 Coordination
  1. Coordination
    1. 课前准备
      1. 进程交互:条件同步
        1. 引入:信号量
        2. 优化轮询:sleep & wakeup
      2. Code: Sleep and wakeup
        1. sleep
        2. wakeup
        3. 为什么双锁可以确保不丢失唤醒?
        4. 唤醒多个线程与伪唤醒
      3. Code: Pipes
        1. struct pipe
        2. pipewrite
        3. piperead
        4. 双通道与多进程唤醒
      4. Code: Wait, exit, and kill
        1. wait 概述
        2. wait:代码
        3. 先父后子:避免死锁
        4. parent:死锁 or not
        5. exit
        6. kill
      5. Real World
        1. xv6 调度策略:round robin
        2. 其他同步方法
        3. channel 查找
        4. wakeup
        5. semaphore
        6. 终止进程
        7. 信号
        8. 空闲进程搜索
    2. 线程切换中的锁
      1. 休眠前先获取锁
      2. swtch 不允许持有除进程锁外的锁
        1. why ?
    3. Sleep & Wakeup:Coordination
      1. 引入:busy-wait
      2. uart:sleep & wakeup & channel
      3. Lost wakeup
        1. 遗漏唤醒
        2. 调用 sleep 时持有条件锁
        3. 先获取进程锁后释放条件锁
        4. wakeup:持两个锁时查看进程状态
        5. sleep 包装在 while 中
      4. 灵活的 sleep&wakeup
      5. semaphore:Coordination
    4. pipe:双channel
      1. piperead
    5. 终止程序
      1. 概述
      2. exit
      3. wait
        1. freeproc
      4. kill
        1. 真实的kill
      5. init 是否会退出?