\quad
“I/O”就是“输入/输出”( Input/Output)
I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备
\quad
常见的I/O设备
\quad
\quad
(I/O控制器就是一块芯片,常被集成在主板上)
\quad
\quad
I/O控制方式简介
数据寄存器就是用来存放主机输出到外设的数据, 或者外设输入数据到主机的寄存器
控制寄存器就是直接反应外设具体要做什么动作
状态寄存器就是反应这个设备当前的状态, 是否在忙碌, 是否有损坏, 或者是否完成了工作
CPU通过控制总线向I/O接口发出读的命令, CPU可以通过地址总线指明它要读的是哪个设备(比如键盘还是鼠标), CPU也可以通过地址总线指明此次读入的数据是放在哪个寄存器
\quad
那么怎么判断scanf输入完成?
程序查询方式: CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据 (显然这种方法是很低效的, 如果我们一直不输入, 那CPU就会一直轮询检查状态控制器)
程序中断方式: 等待键盘I/O时CPU可以先去执行其他程序,键盘I/O完成后I/O控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据
DMA控制方式:
CPU向DMA接口指明参数之后就可以去干其他事情了, 接下来交给DMA接口来处理读写, 知道完成后才向CPU发中断请求
\quad
通道控制方式:
通道: 可以理解为是“弱化版的CPU”。通道可以识别并执行系列通道指令,通道指令种类、功
能通常比较单一
① CPU向通道发出I/O指令。指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备。CPU就可以去做其他事情
②通道执行内存中的通道程序,控制I/O设备完成一系列任务
③通道执行完规定的任务后,向CPU发出中断请求,之后CPU对中断进行处理
\quad
DMA是每完成一块数据读写就要向CPU发一次中断请求, 而通道是完成一大段通道指令后才向CPU发一次中断请求
\quad
\quad
注:I/O指令与普通指令格式略有不同,操作码指明了CPU要对I/O接口做什么,命令码指明了I/O接口要对设备做什么
\quad
\quad