输入输出系统和I/O控制方式

发布时间:2023年12月21日


\quad

一. I/O概念

\quad

在这里插入图片描述

“I/O”就是“输入/输出”( Input/Output)
I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备

\quad
常见的I/O设备
在这里插入图片描述

\quad

二. 主机与I/O设备如何交互?

\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响应中断请求,并取走输入数据

  • 对于快速I/O设备,如“磁盘”,每准备好一个字就给CPU发送一次中断请求,会导致什么问题?
  • 答: CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降。(接下来引入DMA)

DMA控制方式:
在这里插入图片描述
CPU向DMA接口指明参数之后就可以去干其他事情了, 接下来交给DMA接口来处理读写, 知道完成后才向CPU发中断请求

  • 有的商用中型机、大型机可能会接上超多的I/O设备,如果都让CPU来管理,那么CPU就太累了…
  • 那么如何来解决这个问题呢?(接下来引入通道概念)

\quad
通道控制方式:
在这里插入图片描述
通道: 可以理解为是“弱化版的CPU”。通道可以识别并执行系列通道指令,通道指令种类、功
能通常比较单一

在这里插入图片描述
① CPU向通道发出I/O指令。指明通道程序在内存中的位置,并指明要操作的是哪个I/O设备。CPU就可以去做其他事情

②通道执行内存中的通道程序,控制I/O设备完成一系列任务

③通道执行完规定的任务后,向CPU发出中断请求,之后CPU对中断进行处理

\quad
DMA是每完成一块数据读写就要向CPU发一次中断请求, 而通道是完成一大段通道指令后才向CPU发一次中断请求

\quad

三. I/O系统基本组成

\quad
在这里插入图片描述
注:I/O指令与普通指令格式略有不同,操作码指明了CPU要对I/O接口做什么,命令码指明了I/O接口要对设备做什么

\quad
\quad
在这里插入图片描述

文章来源:https://blog.csdn.net/qq_61866637/article/details/135122303
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。