输入输出设备模型
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操作系统/输入输出设备模型/