什么是IO设备
打印机,扫描仪,磁盘驱动器,磁带机等
IO系统
什么是IO系统:
用于管理IO设备和存储设备的系统
IO系统的作用:
管理用户提出的IO请求,提高IO速率, 方便用户使用IO设备
什么是设备控制器
每个IO设备一般都配备有相应的设备控制器 这是一种硬件设备 包含有若干个用于存放控制命令的寄存器和存放参数的寄存器 用户通过这些命令和参数可以控制外部设备 但是每一个控制器都有它自己的命令 程序员没办法直接面向这些设备编程 所以IO系统隐藏了物理设备的实现细节 只提供少量的读写命令
什么是IO系统接口
IO系统与上层系统之间的接口 向上层提供对设备进行操作的抽象IO命令 方便高层对设备的使用
IO操作的三种方式
程序控制IO
CPU发一个IO命令给IO控制器 IO控制器来控制IO
不支持中断
IO设备在可用状态之前会一直被程序检测是否可用 如果不可用就一直检测 浪费处理器的时间
中断驱动IO
相对于程序控制 程序在检测IO是否可用时 如果发现不可用 就去做另一件事情 而不是一直循环检测 如果发现可用就直接交给IO模块完成IO
缺点:可能会中断频率很高 导致系统开销大 因为你传输每一个数据都需要CPU介入 每传一个数据CPU就中断一下
DMA(dirext memory access)控制IO
一次传输一块数据再发生中断 相较于中断驱动IO DMA控制减少了中断次数
CPU向DMA发出要读一块数据的命令 然后就去执行其他进程了 当整块数据通过IO设备传入进程的时候 DMA再传输给CPU读入内存中
为什么DMA可用减少中断次数:
DMA是通过CPU与CPU共享系统总线的方式传输数据 所以DMA与CPU都要使用系统总线 如果CPU在使用系统总线时DMA要用了 那就CPU暂时停用系统总线 给DMA使用 等DMA使用完了CPU再执行下一个指令周期 注意并不是挂起 与挂起的区别是CPU并不需要存储上下文不需要恢复中断 这样就减少了中断开销
CPU用系统总线主要是 取指令 解析指令 取操作数 存结果