1、程序I/O方式
程序I/O方式,称为忙-等待方式,即在处理机向控制器发出一条I/O指令启动输入设备输入数据时,要同时把状态寄存器中的忙/闲标志busy置为1,然后不断的循环测试busy。
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设备并行操作。
中断驱动I/O是以字节为单位进行I/O的,每完成一字节的I/O时,控制器便要向CPU请求一次中断。
3、直接存储器访问(DMA) I/O控制方式
3.1、DMA控制方式引入
中断驱动I/O方式时的CPU是以字(节)为单位进行干预的,为减少CPU对I/O的干预,引入直接存储器访问方式:
数据传输的基本单位是数据块
传送的数据是从设备直接送入内存
仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。
DMA方式,进一步较少了CPU对I/O的干预,提高了CPU与I/O设备的并行操作程度。
3.2、DMA控制器的组成
DMA控制器由三部分组成:主机与DMA控制器的接口;DMA控制器与块设备的接口;I/O控制逻辑。
为实现主机与寄存器之间成块数据的直接交换,在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控制器发出中断请求。
4、I/O通道控制方式
I/O通道方式是DMA方式的发展,把对一个数据块的读(或写)为单位的干预减少为对一组数据块的读(或写)及有关的控制和管理为单位的干预。
通道是通过执行通道程序,并与设备控制器共同实现对I/O设备的控制。
通道程序是由一系列通道指令所构成的,通道指令包含如下信息:
操作码 | 指令所执行的操作 |
内存地址 | 字符送入内存和从内存取出时的内存首址 |
通道程序结束位P | 表示通道程序是否结束 |
计数 | 本条指令要读(写)数据的字节数 |
记录结束标志R | R=0表示本通道指令与下一指令所处理的数据是同属于一个记录;R=1表示处理某记录的最后一条指令 |
标签:DMA,控制器,数据,十八,内存,OS,CPU,设备 From: https://www.cnblogs.com/RunningSnails/p/17652287.html