I/O设备详解

目录

一. 什么是IO设备

二. IO设备分类

2.1按照使用特性分类

 2.2按照传输速率分配

2.3按照信息交换的单位分类

三. IO设备的构成

 3.1 IO的机械部件

 3.2 IO的电子部件

3.2.1设备控制器(IO控制器功能简介)

 3.2.2设备控制器(IO控制器)组成

四. IO设备与计算机交互

 4.1 程序直接控制交互

 4.2加入中断(4.1的改进版)

4.3DMA方式(4.2的改进版)

4.4通道控制方式(4.3改进版)

 4.5总结对比

五. IO设备多样性的解决办法


一. 什么是IO设备

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

 

UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。

二. IO设备分类

2.1按照使用特性分类

 2.2按照传输速率分配

2.3按照信息交换的单位分类

(1)字符设备。以字符为单位向主机发送或从主机接收一个字符流的设备,无法对其进行定位和寻址。通常大部分输入设备和输出设备都可以看作是一种字符设备。如键盘、鼠标、显示器、打印机等。

(2)块设备。以一个固定大小的数据块为单位与主机交换信息,比如外部存储器,硬盘、SSD、光盘驱动器等。每个数据块有唯一的位置信息,可寻址。

 


三. IO设备的构成

I/O设备通常由机械部分和电子部分组成,机械部分是I/O设备本身,电子部分称为“设备控制器”或“I/O控制器”。I/O设备又称外围设备、外部设备,简称外设。 

 3.1 IO的机械部件

 3.2 IO的电子部件

3.2.1设备控制器(IO控制器功能简介)

I/O 设备的 电子部件 通常是一块插入主板扩充槽的印刷电路板。
CPU 无法直接控制 I/O 设备的机械部件,因此 I/O 设备还要有一个电子部件作为 CPU I/O 设备机械部件之间的“中介”,用于实现CPU 对设备的控制。
这个电子部件就是 I/O 控制器 ,又称 设备控制器 CPU 可控制 I/O 控制器,又由 I/O 控制器来控制设备
的机械部件。

主要功能:控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换

设备控制器是CPU与I/O设备之间的接口,接收从CPU发来的命令,并去控制I/O设备工作

设备控制器是一个可编址的设备:

  • 当仅控制一个设备时,它只有一个唯一的设备地址

  • 若控制器可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备

 

 3.2.2设备控制器(IO控制器)组成

设备控制器的一般结构(不同I/O模块在复杂性和控制外设的数量上相差很大):

 图中所表示含义如下:
数据:IO设备所传输的数据

状态:IO设备反馈状态

控制:控制器向IO设备发出信息

控制器与设备的接口用于实现控制器与设备之间的通信
I/O逻辑 :负责接收和识别CPU的各种命令(如地址译码),并负责对设备发出命令
CPU与控制器的接口:用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据
值得注意的小细节:
①一个 I/O 控制器可能会对应多个设备;
②数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制 / 状态寄存器对应一个具体
的设备),且这些寄存器都要有相应的地址,才能方便 CPU 操作。有的计算机会让这些寄存器占
用内存地址的一部分,称为 内存映像 I/O ;另一些计算机则采用 I/O 专用地址,即 寄存器独立编址。

 


四. IO设备与计算机交互

 4.1 程序直接控制交互

流程图: 

 

 4.2加入中断(4.1的改进版)

引入 中断机制 。由于 I/O 设备速度很慢,因此在 CPU 发出读 / 写命令后,可 将等待 I/O 的进程阻塞 ,先切换到别的进程执行。当 I/O完成后,控制器会向CPU 发出一个中断信号, CPU 检测到中断信号后 ,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU I/O 控制器读一个字的数据传送到CPU 寄存器,再写入主存。接着, CPU 恢复等待 I/O 的进
程(或其他进程)的运行环境,然后继续执行
注意:
①CPU会在每个指令周期的末尾检查中断;
②中断处理过程中需要保存、恢复进程的运行环境,这个过程是需要一定时间开销的。可见,如果中断发生的频率太高,也会降低系统性能。
流程图:

4.3DMA方式(4.2的改进版)

与“中断驱动方式”相比, DMA 方式 Direct Memory Access 直接存储器存取 。主要用于块设备的
I/O 控制)有这样几个改进:
数据的传送单位是“块” 。不再是一个字、一个字的传送;
②数据的流向是从设备直接放入内存,或者从内存直接到设备。不再需要 CPU 作为“快递小哥”。
③仅在传送一个或多个数据块的开始和结束时,才需要 CPU 干预。

 

DMA工作过程:

 流程图:

 

优点:数据传输以“块”为单位, CPU 介入频率进一步降低。数据的传输不再需要先经过 CPU 再写入内存,数据传输效率进一步增加。CPU I/O 设备的并行性得到提升。
缺点 CPU 每发出一条 I/O 指令,只能读 / 写一个或多个连续的数据块。 如果要读/ 写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时, CPU 要分别发出多条I/O指令,进行多次中断处理才能完成。

4.4通道控制方式(4.3改进版)

通道 :一种 硬件 ,可以理解为是 “ 弱鸡版的 CPU ”。通道可以识别并执行一系列 通道指令

流程图:

 

 

缺点:实现复杂,需要专门的通道硬件支持
优点: CPU 、通道、 I/O 设备可并行工作,资源利用率很高。

 4.5总结对比

五. IO设备多样性的解决办法

 

 

文件系统(当然也包括在其之上的应用程序)完全不清楚它使用的是什么类型的磁盘。它只需要简单地向通用块设备层发送读写请求即可,块设备层会将这些请求路由给对应的设备驱动,然后设备驱动来完成真正的底层操作。


 

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

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

相关文章

企业级信息系统开发讲课笔记4.9 Thymeleaf模板引擎

文章目录 零、学习目标一、Spring Boot支持的视图技术二、Thymeleaf基本语法1、Thymeleaf常用标签2、Thymeleaf主要语法3、Thymeleaf内置对象4、Thymeleaf模板基本配置 三、Spring Boot整合Thymeleaf1、创建Spring Boot项目ThymeleafDemo2、在全局配置文件里配置Thymeleaf属性3…

12. AbstractQueuedSynchronizer之AQS

12.1 前置知识 ● 公平锁和非公平锁 ○ 公平锁:锁被释放以后,先申请的线程先得到锁。性能较差一些,因为公平锁为了保证时间上的绝对顺序,上下文切换更频繁 ○ 非公平锁:锁被释放以后,后申请的线程可能会先获…

有效延缓痴呆症:延世大学发现梯度提升机模型能准确预测 BPSD 亚综合征

内容一览:随着人口老龄化程度不断加剧,痴呆症已经成为公共健康问题。目前医学界治疗该病还只能通过药物缓解,尚未发现治愈的有效方法,因此,预防痴呆症尤为紧迫。在这一背景下,延世大学的研究人员开发了多个…

复习之linux虚拟化的介绍

一、虚拟化客户端及工具的安装 1.在虚拟机westos中列出: ps:虚拟机中安装虚拟机无意义,这里指是做实验看清楚虚拟机的创建! # dnf group list --hidden irtualization Client :虚拟化客户端 Virtualization Tools &…

在CRM系统中如何获取联系人的信息?

CRM客户管理系统可以有效应对企业对联系人管理的需求,帮助销售人员随时随地查阅、记录、修改联系人,为业务开展做好铺垫。CRM中联系人是什么?如何获取联系人信息? 1.CRM中联系人是什么? CRM系统联系人指的是沟通对象…

低代码开发重要工具:jvs-form(表单引擎)2.1.7功能清单及新增功能介绍

jvs-form 2.1.7 版本功能清单 在低代码开发平台中,表单是用于收集和编辑数据的页面。它通常用于创建、更新或查看单个记录的详细信息。 jvs-form是jvs快速开发平台的8大引擎的其中之一,它的特点: 与动态模型联动,支持动态的调整…

基于深度强化学习的目标驱动型视觉导航泛化模型

深度强化学习在目标驱动型视觉导航的泛化 参考论文《Towards Generalization in Target-Driven Visual Navigation by Using Deep Reinforcement Learning》 文章目录 深度强化学习在目标驱动型视觉导航的泛化1. 目标驱动型视觉导航问题2. 创新点和解决的问题2.1 创新点2.2 解…

英语中-后置定语

一般说来,形容词放在所修饰名词的前面。单个的现在分词、过去分词以及动名词作定语,都是放在所修饰名词(或代词)的前面。这些称为前置定语。 例如: a red flower/ an interesting story,这里red, interes…

Collection接口详细介绍(上)

前言: 本篇文章主要讲解Java中的Collection接口以及相关实现类的知识。该专栏比较适合刚入坑Java的小白以及准备秋招的大佬阅读。 如果文章有什么需要改进的地方欢迎大佬提出,对大佬有帮助希望可以支持下哦~ 小威在此先感谢各位小伙伴儿了&#x1f601…

电子蜡烛灯单片机开发方案

LED蜡烛灯可以像真正的蜡烛一样发出舒适的闪烁光,具有仿真蜡烛效果,适合在一些聚会或庆祝活动中使用。宇凡微推出的低成本LED蜡烛灯IC方案,根据不同电子蜡烛灯方案,主控芯片推荐使用YF单片机。 LED蜡烛灯是有孩子的家庭很好蜡烛替…

Vue单文件组件

单文件组件 单文件组件是在开发中用的比较多的,它的后缀都是.vue结尾的 既然是.vue结尾,那么直接给浏览器是不能运行的,.vue文件是vue团队打造的特殊文件,想让.vue文件让浏览器识别并且运行,需要对它进行处理加工成纯…

07_scrapy的应用——获取电影数据(通过excel保存静态页面scrapy爬虫数据的模板/通过数据库保存)

0、前言: 一般我们自己创建的一些python项目,我们都需要创建虚拟环境,其中会下载很多包,也叫做依赖。但是我们在给他人分享我们的项目时,不能把虚拟环境打包发送给别人,因为每个人电脑系统不同,我们可以把依赖导出为依赖清单,然后别人有了我们的依赖清单,就可以用一条…

Docker consul的容器

consul服务更新和服务发现 什么是服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&…

优维低代码实践:模板

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。…