^-^
Why so serious?
lec11 Scheduling
  1. Scheduling
    1. 课前准备
      1. Multiplexing 多路复用
        1. 什么时候切换进程?
        2. 面对的一些问题
      2. Code: Context switching
        1. scheduler 线程
        2. 切换上下文
        3. swtch:切换上下文
        4. context
        5. yield、sched 与调度器
      3. Code: Scheduling
        1. 调度器
        2. 调度中的不变量
        3. yield
        4. sched
        5. 不同的线程中释放锁
        6. 协程:sched 和 scheduler
        7. swtch 不返回到 sched:首次调度
        8. p->lock 保护的其他内容
      4. Code: mycpu and myproc
        1. struct cpu
        2. cpuid 与 mycpu
        3. 如何确保 tp 是当前CPU id?
        4. 中断与tp
        5. myproc
    2. 线程概述
      1. 为什么需要多线程?
      2. 线程的状态
      3. 并发策略
      4. 线程系统与共享地址空间
        1. 共享内存
        2. 内核线程
        3. 用户线程
      5. 并发,但是不使用线程
    3. XV6线程调度
      1. 面临的问题
      2. 定时器中断与 pre-emptive scheduling
      3. 线程分类
        1. pre-emptive scheduling:running->runable
        2. CPU状态
    4. XV6线程切换
      1. 用户线程切换概述
        1. 内核线程切换
      2. 更完整的故事
      3. swtch 概述
        1. 调度器线程
        2. swtch 的工作
        3. 恢复栈
      4. schedulder 概述
      5. demo 示例
      6. yield
      7. sched
      8. swtch 与 context
        1. context
        2. swtch
      9. schedulder
      10. p->lock 的作用
    5. 进程第一次被调度:forkret
      1. 进程与线程
      2. 进程第一次被调度
      3. forkret
      4. 第一个进程