OS(十八):设备管理之I/O控制方式

发布时间 2023-08-23 17:28:30作者: 无虑的小猪

1、程序I/O方式

  程序I/O方式,称为忙-等待方式,即在处理机向控制器发出一条I/O指令启动输入设备输入数据时,要同时把状态寄存器中的忙/闲标志busy置为1,然后不断的循环测试busy。

 0

  busy为1时,表示输入机尚未输完一个字,处理机应继续对该标志进行测试,直至busy=0,表明输入机已将输入数据送入控制器的数据寄存器中。

  该种方式使得CPU的绝大部分时间都处于等待I/O设备完成数据I/O的循环测试,造成对CPU的极大浪费。

2、中断驱动I/O控制方式

  由于中断机构的引入,对IO设备的控制都采用中断驱动(Interrupt Driven)方式,当某进程要启动某个I/O设备时,由CPU向相应的设备控制器发出一条I/O命令,立即返回继续执行原来的任务,设备控制器按照该命令要求去控制指定I/O设备,CPU与I/O设备并行操作。

 0

  中断驱动I/O是以字节为单位进行I/O的,每完成一字节的I/O时,控制器便要向CPU请求一次中断。

3、直接存储器访问(DMA) I/O控制方式

3.1、DMA控制方式引入

  中断驱动I/O方式时的CPU是以字(节)为单位进行干预的,为减少CPU对I/O的干预,引入直接存储器访问方式:

 0

  数据传输的基本单位是数据块

  传送的数据是从设备直接送入内存

  仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。

  DMA方式,进一步较少了CPU对I/O的干预,提高了CPU与I/O设备的并行操作程度。

3.2、DMA控制器的组成

  DMA控制器由三部分组成:主机与DMA控制器的接口;DMA控制器与块设备的接口;I/O控制逻辑。

 0

  为实现主机与寄存器之间成块数据的直接交换,在DM控制器中设置四类寄存器:

  命令/状态寄存器(CR),接收从CPU发来的I/O命令。

  内存地址寄存器(MAR),输入时,存放数据从设备传送到内存的起始目标地址;输出时,存放由内存到设备的内存源地址。

  数据寄存器(DR),暂存从设备到内存,或从内存到设备的数据。

  数据计数器(DC),存放本次CPU要读或写的字(节)数。

3.3、DMA工作过程

  当CPU要从磁盘读入一个数据块时,便向磁盘控制器发送一条读命令。该命令被送到其中的命令寄存器(CR)中。同时,发型本次要将数据读入的内存起始目标地址,该地址被送入内存地址寄存器(MAR)中,本次要读数据的字(节)数则送入数据计数器(DC)中,还须将磁盘中的源地址直接送至DMA控制器的I/O控制逻辑上。

  启动DMA控制器进行数据传送,此后,CPU可去处理其他任务,整个数据传送过程由DMA控制器进行控制,当DMA控制器已从磁盘中读入一个字(节)的数据并送入数据寄存器DR后,再挪用一个存储器周期,将该字(节)传送到MAR所指示的内存单元中。

  对MAR内容进行加减1,若MAR内容不为0,标识传送未完,继续传送下一个字;否则,由DMA控制器发出中断请求。

 0

4、I/O通道控制方式

  I/O通道方式是DMA方式的发展,把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。

  通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制。

  通道程序是由一系列通道指令所构成的,通道指令包含如下信息:

操作码
指令所执行的操作
内存地址
字符送入内存和从内存取出时的内存首址
通道程序结束位P
表示通道程序是否结束
计数
本条指令要读(写)数据的字节数
记录结束标志R
R=0表示本通道指令与下一指令所处理的数据是同属于一个记录;R=1表示处理某记录的最后一条指令