^-^
Why so serious?
lec9 Interrupts and Device Drivers
  1. Interrupts and Device Drivers
    1. 课前准备
      1. Code: Console input
        1. UART:控制寄存器
        2. consoleinit
        3. shell 读取输入
        4. devintr
        5. uartintr 与 consoleintr
      2. Code: Console output
        1. 输出缓冲区与 uartputc
        2. 完成中断与输出
        3. 设备活动与进程活动的解耦
      3. Concurrency in drivers
      4. Timer interrupts
        1. Timer interrupts:机器模式
        2. main之前:start
        3. 发生时机
        4. timervec
      5. Real World
        1. 定时器带来的复杂性
        2. 驱动程序的繁重性
        3. 程序化I/O 与 DMA
        4. 批量中断
        5. UART 驱动程序的双重复制
    2. 真实操作系统内存使用情况
    3. Interrupt 硬件部分
      1. 中断的特点
      2. 中断从哪里产生?
        1. PLIC
        2. PLIC 中断处理流程
    4. 设备驱动概述
      1. 驱动组成:bottom、top 与队列
        1. Interrupt handler:限制
      2. 对设备编程:memory mapped I/O
        1. SiFive主板
        2. UART 文档
    5. 在XV6中设置中断
      1. 中断寄存器
      2. xv6:配置中断
        1. 从 start 到 uartinit
        2. uartinit:配置uart
        3. plicinit:配置PLIC
        4. plicinithart:配置CPU
        5. scheduler:运行进程
    6. UART:top
      1. 从 shell 到 uart
        1. stdin、stdout、stderr
        2. shell
        3. filewrite
        4. consolewrite
        5. uartputc
        6. uartstart
    7. UART:bottom
      1. 硬件部分
      2. devintr
      3. uartintr、uartgetc、uartstart
    8. Interrupt 与并发
      1. producer/consumser并发:以uart为例
      2. 代码被中断
      3. top 和 bottom 并行运行
    9. UART读取键盘输入
      1. 从 fileread 到 consoleintr
      2. consoleintr
      3. 解耦
    10. Interrupt的演进
      1. 设备变得越来越复杂
      2. Polling vs. Interrupt