【操作系统】I/O管理概述

文章目录

  • 1.什么是输入输出设备?
    • 1.1 I/O设备分类
    • 1.2 I/O设备的构成
  • 2. I/O控制器
    • 2.1 I/O控制器主要作用
    • 2.2 I/O控制器的组成
    • 2.3 I/O控制方式
      • 2.3.1 程序直接控制方式
      • 2.3.2 中断驱动方式
      • 2.3.3 DMA方式
      • 2.3.4 通道控制方式

1.什么是输入输出设备?

I/O就是“输入/输出”,将数据输入到计算机,或者接收计算机的数据输出到外部设备。

1.1 I/O设备分类

  • 按使用特性:
    • 人机交互类外部设备;
    • 存储设备;
    • 网络通信设备;
  • 按传输速率:
    • 低速设备;
    • 中速设备;
    • 高速设备;
  • 按信息交换单位:
    • 块设备;
    • 字符设备(底层都是字节);

1.2 I/O设备的构成

  • 机械部件:比如键盘、鼠标的按键和按钮,用来执行具体的I/O操作;
  • 电子部件:即I/O控制器、设备控制器,是CPU与硬件设备之间的桥梁;

2. I/O控制器

2.1 I/O控制器主要作用

  • 接收并识别CPU命令;
  • 向CPU报告设备状态;
  • 数据交换;
  • 地址识别;

2.2 I/O控制器的组成

I/O控制器有三部分构成:

  • CPU与控制器间的接口;
  • I/O逻辑;
  • 控制器与设备间的接口;

整个I/O控制器的工作图如下:

【操作系统】I/O管理概述_第1张图片

I/O控制器中有多种寄存器(相当于缓存)分别保存不同类型数据。上图中实线框部分就是I/O控制器的组成,左边是CPU,右边是IO设备。要注意的是:每个设备都会对应一组各自的寄存器

2.3 I/O控制方式

2.3.1 程序直接控制方式

【操作系统】I/O管理概述_第2张图片
过程:

  1. 首先CPU通过控制线发送IO命令;
  2. 控制器修改状态寄存器相应设备的状态(是否输入/输出完成);
  3. IO设备进行数据读写;
  4. 将数据保存在数据寄存器;
  5. 数据通过数据总线传输至CPU;
  6. 如果输入输出完成,还要修改状态寄存器状态;

这种方式需要CPU不断轮询状态寄存器(CPU速度太快,等待输入输出的完成,再继续运算),因此导致CPU频繁干预,降低了CPU的利用率;每次只能读/写一个字(如32位系统一个字为:32bit/8bit=4B);

注意:该方式读操作的顺序为 设备–>CPU–>CPU寄存器(高速缓存)–>内存。

2.3.2 中断驱动方式

中断驱动的方式将依赖中断程序,CPU不再不断轮询状态寄存器,从而克服了“忙等”的问题。

【操作系统】I/O管理概述_第3张图片
过程:

  1. CPU执行读/写指令,通过控制下传输指令,通过地址线传输地址信息;
  2. 执行中断程序,CPU将此IO进程阻塞,同时将状态寄存器的状态改为忙碌;
  3. 进行外部设备数据的读/写;
  4. 将数据存放至数据寄存器中;
  5. 如果已经写完(大小为一个字)数据到寄存器,修改状态寄存器状态为空闲;同时向CPU发送新的中断指令,告诉CPU已经输入完成;
  6. CPU检查状态寄存器状态是否已经是空闲;通过数据总线将数据传输至CPU;

虽然解决了CPU“忙等”问题,但是每次依旧只能读/写一个字,这样没读/写一个字就进行中断操作,将会导致中断程序过于频繁的执行,从而影响了计算机的整体效率。

2.3.3 DMA方式

DMA,即“直接内存访问”方式,不同于上面两种方式,它的数据寄存器直接与内存交换数据,明显提高了效率。而且在进行IO操作时,不再每次仅仅读写一个字,传输单位变成了“块”(磁盘的盘块,概念可以参考磁盘文件管理方式)。

【操作系统】I/O管理概述_第4张图片
上图是DMA方式的一个流程图,其中的DR是数据寄存器,DC是数据计数器,MAR是内存地址寄存器,CR是状态寄存器。

过程:

  1. CPU发起读/写指令;调用中断程序,将当前进程阻塞;
  2. 修改状态寄存器状态,设备开始进行读/写;
  3. 输入数据存放于DR数据寄存器中,同时通过数据计数器统计当前读取的数据量;这里的读操作会读取连续盘块的数据,当寄存器满或者一个块读取完成且下一盘块不相邻,调用中断程序,根据内存寄存器中的地址信息,将数据寄存器中数据刷入内存中;
  4. 读/写完成,修改状态寄存器的状态;

可以看到,DMA方式已经大大提升了IO效率(以块为传输单位CPU和IO可以并行),但是假如文件存放的离散盘块很多,也会频繁触发中断程度,导致效率的下降。

2.3.4 通道控制方式

通道控制方式,增加了专门用于处理IO的硬件,将之前CPU所负责的工作和相关寄存器的功能都进行了集成。而且每次都读写一组数据块,最大化的减少了因IO而导致的中断程序调用。

【操作系统】I/O管理概述_第5张图片
过程:

  1. CPU发送IO指令到IO通道硬件;
  2. 读取内存中的通道程序;
  3. IO设备进行数据读/写;
  4. 数据读/写完成,调用中断程序,并告知CPU可以继续执行;

你可能感兴趣的:(操作系统,linux,服务器,操作系统,java)