输入输出设备模型

IO设备(CPU视角):一个能与CPU交换数据的接口/控制器

  • 就是“几组约定好功能的线”,通过握手信号从线上读出/写入数据
  • 每一组线都有自己的地址

    CPU可以直接使用指令(in/out/MMIO)和设备交换数据
    CPU不管设备具体是如何实现的

总线、中断控制器和DMA

越来越多的IO设备,如何给未来留出一点空间?

  • CPU只直接连接一个设备,这个IO设备实际上是一块板卡,板卡上有很多个小插槽(寄存器)。这个IO设备负责管理其他IO设备,这个设备就叫做总线。
  • 甚至这个IO设备做得更彻底一点,我们的内存也连接在这个总线上,同一个地址空间,CPU只需要一个地址,就可以知道访问的是内存还是IO设备(统一编址)。

中断没能解决的

假设程序希望写入1GB的数据到磁盘

  • 即使磁盘已经准备好了,依然需要非常浪费时间的循环。

    DMA的出现:一个专门执行”memcpy”程序的CPU
    通过增加一个CPU专门负责从内存到总线的数据搬运
    memory->memory device->memory memory->device

IO设备和计算机之间的边界逐渐模糊

DMA不就是一个“只做一件特别事情的”CPU吗

  • 那么我们还可以有做各种事情的”CPU”啊, 例如显卡

输入输出设备模型
http://example.com/2023/08/02/操作系统/jyy操作系统/输入输出设备模型/
作者
LiuZhaocheng
发布于
2023年8月2日
许可协议