【第七章:输入输出系统】

news2025/1/21 22:10:57

目录

  • 知识框架
  • No.0 引言
  • No.1 输入输出系统
    • 一、基本概念
    • 二、I/O控制方式
      • 1、主机如何与I/O设备进行交互?
      • 2、CPU是如何通过I/O接口与外设交互的
      • 3、如何判断读入的数据有没有被输入完成呢?
      • 4、对于快速I/o设备,如“磁盘”,每准备好一个字就给CPu发送一次中断请求,会导致什么问题?
      • 5、对于大型商用的DMA方式还是比较累对于CPU;
    • 三、外部设备
      • 1、输入设备
      • 2、输出设备
      • 3、外存设备
    • 四、IO接口
      • 1、IO接口的作用
      • 2、IO接口的结构和工作原理
      • 3、IO端口
      • 4、IO接口的分类
    • 五、IO控制方式DMA方式

知识框架

No.0 引言

这一章节和 操作系统 的最后一章节 是有很强的联系的;

操作系统:更多的讨论的是输入输出系统的软件部分,如何管理这些输入输出设备。

计算机组成:更多的讨论的是硬件的实现。

在这里插入图片描述

No.1 输入输出系统

一、基本概念

“I/O”就是“输入/输出”( Input/Output)

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

  1. 鼠标和键盘:为输入设备,
  2. 显示屏和打印机:为输出设备。
  3. 而对于光盘,硬盘这些既可以输入又可以输出的的设备;也可称呼为外存设备。反正都可以。
  4. 也就是说自己安装的那个固态硬盘也是外部设备,然后还有那个接口也就是I/O控制器

IO系统:一般来说,I/o系统由I/o软件和I/o硬件两部分构成。

1:I/О硬件包括外部设备、I/O接口、IO总线等。

2:I/O软件包括驱动程序、用户程序、管理程序、升级补丁等。

通常采用IO指令和通道指令实现主机和IO设备的信息交换。

(IO指令):IO指令是CPU指令中的一部分

​ 操作码+命令码+设备码

​ 操作码:识别是不是IO指令,与加减乘除进行区分

​ 命令码:指明了 IO设备对其的具体操作

​ 设备码:指明了对某个设备进行操作。

注:I/o指令与普通指令格式略有不同,操作码指明了CPU要对IO接口做什么,命令码指明了Io接口要对设备做什么

(通道指令):通道能够识别的指令:

通道程序提前编制好放在主存中

​ 在含有通道的计算机中,CPU执行I/o指令对通道发出命令,由通道执行一系列通道指令,代替cPU对I/o设备进行管理

二、I/O控制方式

1、主机如何与I/O设备进行交互?

也就是说计算机的主机如何与外部设备进行交互呢?

其实也就是前面说的那些 总线结构:

当然下面所说的“主机”也差不多就是 CPU+主存。

如下图的单总线结构:通过I/O接口进行 与设备n 进行交互,

  1. I/O接口:又称I/O控制器(I/O Controller)、设备控制器,负责协调主机外部设备之间的数据传输
  2. 例子就是:买了键盘之后,通过USB连接线查到USB接口处。
  3. ​ 其实USB插口的背后就是有一个小芯片,用来控制主机与外部设备键盘的数据交互。
  4. 那么电脑可以连接的外部设备多种多样,对应不同的接口所用到的芯片即I/O控制器是不同的。
  5. I/O控制器多种多样,也会制定相应的标准,如:用于控制usB设备的IO接口)用于控制SATA3.0确盘的IO接口等
  6. 而通常来说呢,那个芯片会被集成在 你的 主板上, 与你的CPU、主存等进行连接。

在这里插入图片描述

2、CPU是如何通过I/O接口与外设交互的

接下来的解释 是以:键盘 为举例子;

char i;

scanf(“%c”,&i);

printf(“i=%c/n”,i);

也就是说 执行到scanf(“%c”,&i);这条语句的时候,CPU会等待输入设备的输入。

通过键盘 输入的时候:scanf(“%c”,&i);从键盘上敲击一个字符,然哈把这个键盘敲击的值传递、

下面是CPU具体做了什么:

​ 1:首先CPU通对控制总线向这个io接口发出读入的命令’

​ 2:同时通过地址总线指明它要读的是哪一个设备。同时地址总线也可以指明此次读入的数据应该放在 哪个寄存器里

​ 3:CPU判断IO操作是否完成:三个查询方式;查询对应的状态寄存器来判断。

​ 4:然哈通过数据寄存器通过数据总线取走数值。

5:完成了:数据流:键盘→IO接口的数据寄存器->数据总线→CPU某寄存器–>主存(变量i的对应位置)

相当于CPU当了中转站,作为 输入设备和主存的中转站了。

  1. IO控制器部件里面的三大寄存器;
  2. 控制寄存器:反映了某个外设它具体需要做什么动作,需要让它做什么。
  3. 数据寄存器:暂存来往的数据,入和出。
  4. 状态寄存器:反映了当前外设的状态,是否在忙碌,是否完成了工作(比如打印机)、是否就绪等等状态。

在这里插入图片描述

3、如何判断读入的数据有没有被输入完成呢?

那么你就要判断 该IO设备的 操作是否已经完成? 通过 IO控制器里面的 状态寄存器

不同的IO控制方式导致不同的方法。

下面的几种方式:各有节奏。

大致流程如下:

​ 1、当需要IO操作的时候,会通过IO指令来启动一次数据的读或者写。

​ 2、在IO设备准备数据的这一段时间:不同IO控制方式,不同反应,

  1. 程序查询方式:CPU不断轮询检查I/O控制器中的“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据。
    1. 对于这一种的查询方式,因为CPU一直问询,那么你不输入,它CPU就一直在这耗着,CPU不能去做其他的事情。其它那些后台程序的运行就一直被暂停着;很明显这种查询方式不好。所以我们采取另外一种I/O设备的控制方式如第二条。
    2. 即执行到了到scanf(“%c”,&i);这条语句的时候,CPU会等待输入设备的输入,如果你不输入的话那么CPU就卡在这里了。
  2. 程序中断方式:等待键盘l/O时CPU可以先去执行其他程序,键盘I/o完成后,I/o控制器向CPU发出中断请求,CPU响应中断请求,并取走输入数据。
    1. 对于这一种的查询方式,CPU并没有被这一个简单的输入给困在这,即你什么时候输入好了,让IO控制器通知一下(发终端请求)就可以了,然哈CPU再停下手中的工作来处理这边 已经完成的IO操作将数据寄存器的数据取走。
    2. 即执行到了到scanf(“%c”,&i);这条语句的时候,CPU就转而执行其他程序去了。这样CPU不用陷入盲等
    3. 其实当IO接口发生中断请求;CPU在每一个指令执行周期的末尾都会检查一下 此时有没有中断请求的到来,

4、对于快速I/o设备,如“磁盘”,每准备好一个字就给CPu发送一次中断请求,会导致什么问题?

因为在3中所提到的是键盘 输入 慢速设备,因为最快人 也就是 需要秒来计数的,比较慢;对于CPU来说,中断的频率并不高,属于可接受的。那么如果是快速设备,我们还能用程序中断方式吗?

每一次的中断请求,都需要我们的CPU调用一次中断处理服务程序;CPU需要花大量的时间来处理中断服务程序,CPU利用率严重下降。相当于一直被打断了好像。

那么如何解决这种的快速IO设备呢?因为主要是一直频繁的打断CPU,即我们直接绕过CPU与主存联系。

我们为了解决这种快速的,我们可以采用DMA控制方式,也就是第三种IO控制方式。

  1. DMA接口DMA接口,即DMA控制器,也是一种特殊的I/o控制器,不过控制的外部设备比较特殊。

  2. DMA接口是用来管理这些高速的外部设备的,如果:磁盘、

  3. 那么DMA控制方式的原理是什么样的??

  4. 是这样的:DMA控制方式:主存与高速I/o设备之间有一条直接数据通路(DMA总线)。CPU向DMA接口发出“读/写”命令,并指明主存地址、磁盘地址、读写数据量等参数。(差不多就是CPU给直接各种设置参数都说明好,然哈剩下的不管了。)

DMA控制器自动控制磁盘与主存的数据读写,每完成一整块数据读写(如1KB为一整块),才向CPU发出一次中断请求。也就是说DMA控制器是在完成一大部分数据挪到DMA控制器里面的数据寄存器之后才向CPU发中断请求表示自己将数据准备完成了;然哈CPU进行一个响应和中断程序服务处理,进而将这些数据取走,占用一个存取周期,这样就大大的较少了控制接口对于CPU的频繁打扰打断。

在这里插入图片描述

在这里插入图片描述

5、对于大型商用的DMA方式还是比较累对于CPU;

有的商用电型机、大型机可能会接上超多的I/o设备,如果都让CPU来管理,那么CPU就太累了…

如果IO设备非常多的话,就算是DMA也是非常很多的繁杂的IO中断;

为了将CPU从中解脱出来,人们专门发明了一个用于专门管理各种IO设备的硬件部件:叫做通道

其实通道也是一种特殊的处理器。功能远远没有CPU强大,相当于小CPU

  1. 通道:可以理解为是(弱鸡版的CPU”。通道可以识别并执行一系列通道指令,通道指令种类、功能通常比较单一

在这里插入图片描述

在这里插入图片描述

三、外部设备

外部设备也称外围设备,是除了主机以外的、能直接或间接与计算机交换信息的装置。

1、输入设备

用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。

2、输出设备

用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。

3、外存设备

是指除计算机内存及CPU缓存等以外的存储器。硬磁盘、光盘等是最基本的外存设备。

四、IO接口

1、IO接口的作用

2、IO接口的结构和工作原理

3、IO端口

4、IO接口的分类

五、IO控制方式DMA方式

这种控制方式存在的意义呢?

之前在前面已经说过了:对于程序中断方式来说,每一次IO设备准备好了大概一个字的信息数据之后(在数据寄存器)

CPU就需要运行一次中断服务程序(这个是比一个运行周期还要长的);把这个字的数据存储到主存当中去。而对于那些快速IO设备来说就CPU比较就会使得cpu执行中断服务程序的时间开销会特别大效率低;因此提出了DMA方式。

DMA控制方式:需要一个DMA控制器即IO接口,IO控制器。

​ 这个IO接口比普通的IO接口更厉害一点。

​ 可以控制数据传输的过程。

DMAkzz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522327.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】操作符详解(下)

操作符详解 1.条件操作符2. 逗号表达式3.下标引用,函数调用和结构体成员4.表达式求值4.1隐式类型转换4.2算术转换 5.操作符的属性 所属专栏:C语言 博主首页:初阳785 代码托管:chuyang785 感谢大家的支持,您的点赞和关注…

原生js手动实现一个多级树状菜单效果(高度可过渡变化) + 模拟el-menu组件实现(简单版)

文章目录 学习链接效果图代码要点 简单模拟el-menu实现TestTree.vueMenu.vueSubMenu.vue 学习链接 vue实现折叠展开收缩动画 - 自己的链接 elment-ui/plus不定高度容器收缩折叠动画组件 - 自己的链接 Vue transition 折叠类动画自动获取隐藏层高度以及手风琴效果实现 vue t…

Sqoop: Hadoop数据传输的利器【Sqoop实战】【上进小菜猪大数据系列】

我是上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货,欢迎关注。 Sqoop: Hadoop数据传输的利器, 在大数据领域,数据的传输和集成是至关重要的任务之一。Sqoop(SQL to Hadoop)作为Apache…

ChatGPT的前世今生,到如今AI领域的竞争格局,本文带你一路回看!

73年前,“机器思维”的概念第一次被计算机科学之父艾伦图灵(Alan Turing)提出,从此,通过图灵测试成为了人类在AI领域为之奋斗的里程碑目标。 73年后的今天,在AI历经了数十年的不断进化、迭代后&#xff0c…

【第二章:数据的表示和运算】

目录 知识框架No.0 引言No.1 数制与编码一、进位计数制及其相互转换二、BCD码三、无符号的整数在计算机内部表示和运算1、表示2、加法、减法实现 四、带符号的整数在计算机内部表示和运算1、表示1.1、原码表示1.2、原码形式实现加减法运算不行1.3 补码表示1.4 补码实现加法运算…

分享一个图片展示特效

先上效果图&#xff1a; 备注&#xff1a;这个效果图太大了&#xff0c;压缩了一下效果有点不咋好看。感兴趣同学们可以自己运行代码看一下&#xff0c;保证不会失望~ 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta cha…

mysql数据库的表操作 --3

表操作 3.1&#xff1a;创建表 语法&#xff1a; CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明&#xff1a; field 表示列名 datatype 表示列的…

Java 数组与List转换

int[] 与 List<Integer> 转换 刷题常见 int[] 转 List<Integer> // int[] 转 List<Integer> int[] arr {1, 2, 3, 4, 5}; List<Integer> list Arrays.stream(arr).boxed().collect(Collectors.toList());解释&#xff1a; Arrays.stream(arr) /…

基于Ant DesignPro Vue + SpringBoot 前后端分离 - 部署后解决跨域的问题

基于Ant DesignPro Vue SpringBoot 前后端分离 - 部署后解决跨域的问题 通过Ant DesignPro Vue SpringBoot 搭建的后台管理系统后&#xff0c;实现了前后端分离&#xff0c;并实现了登录认证&#xff0c;认证成功后返回该用户相应权限范围内可见的菜单&#xff1b;但时将服务…

剑指 Offer II 105. 岛屿的最大面积代码注释

题目&#xff1a; 给定一个由 0 和 1 组成的非空二维数组 grid &#xff0c;用来表示海洋岛屿地图。 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表…

第一章 集合框架

文章目录 什么是集合框架集合接口Set和List的区别 集合实现类&#xff08;集合类&#xff09;集合算法 什么是集合框架 官方教程 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器container&#xff0c;是定义在java.util包下的一组接口 interfaces和其实现…

【华为HCIP | 高级网络工程师】刷题日记(8)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生 &#x1f43b;‍❄️个人主页&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;落798. &#x1f54a;️系列专栏&#xff1a;零基础学java ----- 重识c语言 ---- 计算机网络 &#x1f413;每日一…

68.建立手风琴组件第一部分

本节目标 使用的文件 本次使用的文件可私信我获取&#xff0c;本次就只有两张图片 ● 我们导入两个照片至我们的项目文件夹&#xff0c;并新建一个HTML文件 ● 之后我们输入感叹号&#xff0c;让他自动为什么生成初始代码 ● 之后我们修改下title&#xff0c;导入字体、…

springboot+vue家具网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的家具网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&#…

kafka之消费者进阶

一、几个概念 1. 消费者组 消费者组&#xff1a;一个消费者组包含多个消费者。同一个消费组的消费者&#xff0c;分别消费不同的partition&#xff0c;便于加快消费。 kafka约定在一个消费者组中&#xff0c;对于同一个topic&#xff0c;每个consumer会分配不同partition&am…

Unity搭建VR全景图

VR全景图片显示和相机旋转 ** 如果需要内置面材质球文件&#xff0c;可以私信下我 ** 场景构建 创建项目后拖进所需文件 文件有内置面材质球、图片等 创建文件 拖拽内置面材质球进入场景&#xff0c;并设置相机在球内部 再创建一个材质球&#xff0c;命名和图片相同 选…

springcloud+springboot+vue学生信息管理系统(选课,成绩,奖惩,奖学金,缴费)xnt81

后端语言&#xff1a;Java 框架&#xff1a;springcloudspringboot 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 学生信息管理系统主要实现角色有管理员和学生,教师,管理员在后台管理学生模块、学籍信息模块、选择课程模块、用户表模块、收藏表模块、课程信息模块…

国产航顺HK32F030M: 448byte EEPROM

EEPROM (~Electrically Erasable Programmable read only memory~)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 HK32F030M用户手册V1.1.9.pdf bsp_eeprom.c #include "bsp_eeprom.h"/*****************************************************…

springboot+vue房产销售平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的房产销售平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

切换以太网接口MAC地址的批处理脚本

MAC&#xff08;媒体访问控制&#xff09;地址是网络设备的唯一标识符&#xff0c;用于网络通信。MAC 地址通常在设备制造时被分配并写入硬件。然而&#xff0c;在某些情况下&#xff0c;你可能需要或想要更改设备的 MAC 地址。以下是一些可能的理由&#xff1a; 1. **隐私和安…