• 计算机除了CPU、内存外还有输入输出设备
    • 输入输出设备统称IO设备
    • IO设备主要分为块设备和字符设备
    • 磁盘是块设备,它的传输以一个连续的块为基本传输单位,每个块有独立的磁盘地址方便读写,互相没有任何关系,也就是从磁盘的不同位置读取,支持随机读写
    • IO设备一般由机械部件和电子部件两部分组成,电子部件称为设备控制器
    • 设备控制器内有一个缓存区域,用来临时存放从IO设别得到的数据
    • image.png
    • 设备控制器不能自己传送数据到内存,这时需要CPU的指挥
    • 设备控制器通常由一些设备寄存器,CPU通过读写这些寄存器来操控设备
    • 为了读写设备寄存器,每个寄存器都需要一个编号;
      • 一种方法是直接赋予专属的IO端口号,所有设备寄存器的端口号组成独有的IO端口空间,操作系统需要使用特殊指令来读写设备寄存器;
      • 另一种方式是把端口作为内存中的高地址部分,这样mov指令访问的地址在这段特殊的地址范围时,起始就是与设备控制器通信,除此之外就是正常的内存访问,这称为内存映射IO
      • 还可以把上面这两种方式混合,内存中高地址存储设备控制器中的缓冲区,剩下的控制寄存器拥有单独的IO地址空间
    • image.png
    • 直接存储器存取(direct memory access,DMA)
    • 在DMA中包含几个寄存器,用于存储比如:目的内存地址,字节计数,还有一些控制寄存器
    • CPU会实现设定好所有读写内容的长度,以及目的地址,然后CPU就可以干其他事而不被传输数据打断
    • DMA在传输完数据后才打断CPU,告知数据传输完成
    • DMA首先向设备控制器发出读请求,等设备控制器接收完毕后,DMA按照内存地址来负责将把数据传送到内存即可;接着把字节计数递减一个单位、内存地址递增一个单位
    • 如果字节计数大于0,那么就继续传输数据,等到字节计数到0,DMA向CPU发出信号结束读取
    • image.png