0x00 I/O设备

0x00 分类

按传输速率分类为:

  • 低速设备:键盘鼠标
  • 中速设备:打印机
  • 高速设备:磁带机,磁盘,光盘

按信息交换的单位分类:

  • 块设备:数据存储以数据块为单位,如磁盘,传输速率高可寻址,可以进行随机读写
  • 字符设备:数据存储的基本单位是字符,如打印机,传输速率低不可寻址,输入输出时采用中断驱动方式

常见的设备及介质:

  • CD-ROM为光盘存储器,强调只读,说其只能写入一次是错误的
  • Flash存储器可以实现随机存取,但其从原理上讲仍为ROM

ROM即只读存储器,只能读出不能写入,信息永久保存

0x01 控制方式

  1. 程序直接控制:每读入一个字,CPU都要对外设状态进行循环检查,造成了CPU资源的极大浪费,且CPU与I/O设备之间只能串行工作

  2. 中断驱动方式:允许I/O设备打断CPU而请求服务,数据中的每个字在存储器和I/O控制器之间的传输都必须经过CPU,仍然会消耗较多的CPU

  3. DMA方式:基本单位是数据块,所传送的数据直接送入内存,在传送一个或多个块开始和结束时才需要CPU干预,在DMA控制器下完成

    DMA往往连接高速存储器,其优先级高于中断请求,以防数据丢失。

  4. 通道控制方式:I/O通道是指专门负责输入输出的处理机,可以实现CPU,通道和I/O设备之间的并行操作,有效提高整体的利用率,I/O通道与CPU共享内存,没有自己的内存,通道程序放在内存中

    CPU启动通道,不管成功与否,通道都要回答CPU,通过执行通道程序来实现数据的传送,通道在执行通道程序时与CPU并行,当通道完成通道程序的执行时(即数据传送结束时),便产生I/O中断向CPU报告。

    CPU通过I/O指令来控制通道,而不是通过中断,中断服务程序最后一条指令是转移指令

实例比较:

一个客户(CPU)向裁缝(I/O设备)订了一批衣服(寻求了一段输入)

  1. 程序直接控制:裁缝没有客户的联系方式,客户必需每隔一段时间去看看裁缝把衣服做好了没有
  2. 中断驱动方式:裁缝有客户的联系方式,但是每做完一件,都要给客户打电话去拿,每完成一件都要让客户拿一次,比较耗费客户的时间
  3. DMA方式:客户雇了一个秘书,给秘书规定好在什么地方拿,裁缝做完了,就给秘书打电话,秘书到指定的地方拿,每拿到100件衣服就像客户汇报一次,当客户跟多个裁缝订了货,一个秘书只对一个裁缝的货负责,大大节省了客户的时间
  4. 通道方式:赋予了秘书更大的自主权,秘书可以决定把衣服放在哪,同时也可以决定每100件还是每1000件向客户报告一次,一个秘书可以对多个裁缝负责

0x02 子系统层次结构

  • 用户层IO软件:大部分运行在操作系统内部,小部分在用户层
  • 设备独立性软件:用于实现用户程序与设备驱动器的统一接口,设备命令以及设备保护、设备的分配与释放
  • 设备驱动程序:与硬件直接相关
  • 中断处理程序:保存被中断进程的CPU环境,处理完并回复被中断进程的现场
  • 硬件了呗

0x02 I/O核心子系统

主要服务有:

  • I/O调度:确定一个好的顺序来执行I/O请求,因为应用程序给出的系统调用顺序不一定是最优的
  • 缓冲与高速缓存
    • 磁盘高速缓存:逻辑上属于磁盘,物理上为驻留在内存中的磁盘块,高速缓存中有的磁盘中必然有
    • 缓冲区:缓解CPU和I/O设备之间速度不匹配的矛盾,提高CPU与I/O设备的并行性减少中断频率,高速设备与低速设备的通信都要经过缓冲区
  • 设备分配与回收:依据用户的I/O请求来分配所需设备
    • 独占式使用设备
    • 分时式使用设备
    • 使用SPOOLing方式使用的外部设备,就是假脱机技术,实质上为对I/O操作的批处理,以空间换时间
  • 假脱机
  • 设备保护和差错处理