操作系统之I/O控制方式

704 阅读4分钟

一、概述

  • 随着技术的发展,CPU对设备的IO控制方式有好几种方式,后一种方式往往是在弥补前一种方式的缺点。
  • 分别有以下几种IO控制方式
    • 程序直接控制方式
    • 中断驱动方式
    • DMA方式(Direct Memory Access)
    • 通道控制方式

二、程序直接控制方式

1. 基本流程

image.png 以读操作为例,操作流程如下:

  1. CPU向控制器发出读指令,并将状态寄存器设置为1(未就绪)
  2. 轮询检查状态寄存器。检查状态标志位是否变成0,表示已就绪。
  3. 输入设备准备好数据后将数据传给控制器,并且报告自身状态。
  4. 控制器将数据放入数据寄存器,并且将状态寄存器设置为0,表示已就绪。
  5. CPU发现设备已就绪,即可将数据寄存器中的内容读入CPU的寄存器中,再把CPU寄存器中的内容放入内存。(也就是说,这个数据辗转了几次) 程序流程图如下: image.png

2. 优缺点

2.1 优点

  1. 实现简单。在读写指令之后,加上实现循环检查的一系列指令即可。

2.2 缺点

  1. CPU干预的频率很频繁。IO操作之前、完成之后需要CPU介入。并且在等待IO完成的过程中CPU需要不断地轮询检查。
  2. 数据传送单位小。每次读写一个字。且每一个字读写都需要CPU的帮助。
  3. 数据流向比较复杂。 读操作:IO设备->cpu->内存; 写操作:内存->cpu->IO设备。 中间需要经过IO控制器的数据寄存器、CPU寄存器才能最终进入内存。

三、中断驱动方式

1. 基本流程

image.png 流程如下:

  1. CPU发出读写命令,将等待IO进程阻塞。切换其他进程执行。
  2. 当IO完成后,控制器向CPU发出一个中断信号,CPU检测到中断信号后,会切换进程,处理中断。
  3. CPU将一个字的数据传送到CPU寄存器,再写入主存。
  4. CPU恢复等待IO的进程(或其他进程)的运行环境,然后继续执行。

2. 优缺点

2.1 优点

  1. IO控制器通过中断信号主动报告IO已完成,不需要CPU不停地轮询。
  2. CPU和IO设备可并行工作,CPU利用率得到明显提高。

2.2 缺点

  1. 进程切换如果太频繁,会降低系统性能。
  2. 轮询方式的第2、3个缺点依旧没有解决。

四、DMA方式

1. 概述

  • 即Direct Memeoy Access,直接存储器存取
  • 主要用于块设备的IO控制
  • 数据的传送单位是块,不再是一个字、一个字的传送
  • 数据的流向是设备->内存,或者内存->设备,不再需要CPU作为中间媒介。
  • 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。 image.png

2. DMA控制器

image.png

3. 基本流程

  1. CPU给IO模块发送读块命令
  2. DMA处理读命令,CPU做其他事情
  3. DMA处理结束之后,通过中断通知CPU

4. 优缺点

4.1 优点

  1. 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预。
  2. 每次读写一个或多个块(注:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
  3. 数据流向不在经过CPU。读操作:IO设备->内存;写操作:内存->IO设备。
  4. 数据传输以块为单位,CPU介入频率进一步降低。
  5. CPU和IO设备的并行性得到提升。

4.2 缺点

  1. CPU每发出一条IO指令,只能读写一个或多个连续的数据块。

五、通道控制方式

1. 概述

image.png

  • 相较于DMA,通道控制方式更加灵活。通道控制方式,就是用另一个更加弱的CPU去处理CPU该处理的事情。

1. 基本流程

  1. CPU向通道发出IO指令,指明通道程序在内存中的位置,并指明要操作哪个IO设备,之后CPU就切换到其他进程执行了。
  2. 通道执行内存中的通道程序。比如指明要读入、写出多少数据,读写数据应放在内存的什么位置等信息。
  3. 通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理。

2. 优缺点

2.1 优点

  1. CPU干预频率极低。通道可以自己执行CPU的指令,只有完成一组数据块的读写后才需要发出中断信号,请求CPU干预。
  2. 一次性可以读写一组数据块。
  3. 数据流向不在经过CPU。读操作:IO设备->内存;写操作:内存->IO设备。
  4. CPU、通道、IO设备并行工作,资源利用率很高。

2.2 缺点

  1. 实现复杂,需要专门的通道硬件支持。