5-1输入/输出管理-I/O管理概述

news2024/11/17 18:25:07

文章目录

  • 一.I/O设备
  • 二.I/O控制器/设备控制器
  • 三.I/O控制方式
    • 1.程序直接控制方式
    • 2.中断驱动方式
    • 3.DMA方式(直接存储器存取)
    • 4.通道控制方式
  • 四.I/O子系统的层次结构
  • 五.输入/输出应用程序接口&设备驱动程序接口
    • (一)输入/输出应用程序接口
    • (二)设备驱动程序接口

一.I/O设备

在这里插入图片描述
1.按使用特性分类
(1)人机交互类外部设备(速度慢):用于计算机与用户之间交互的设备。如:鼠标、键盘、打印机
(2)存储设备(速度快):用于存储程序和数据的设备。如:磁盘、光盘、磁带
(3)网络通信设备(速度中等):用于与远程设备通信的设备。如:网络接口、调制解调器、路由器

2.按传输速度分类
(1)低速设备:传输速率每秒几字节到几百字节。如:键盘、鼠标
(2)中速设备:传输速率每秒几千字节到几万字节。如:行式打印机、激光打印机
(3)高速设备:传输速率在数百千字节至千兆字节。如:磁带机、磁盘机、光盘机

3.按信息交换的单位分类
(1)块设备。信息的存取以数据块为基本单位,所以存储信息的设备成为块设备,属于有结构设备。如:磁盘。特点:传输速率高、可寻址,即对它可以随机地读/写任一块
(2)字符设备:用于数据输入/输出的设备为字符设备,因为其传输的基本单位是字符,属于无结构类型。如:打印机、交互式终端机。特点:传输速率低、不可寻址,在输入/输出时常采用中断驱动方式

二.I/O控制器/设备控制器

l/O设备的机械部件主要用来执行具体I/O操作。如:鼠标/键盘的按钮、显示器的LED屏、移动硬盘的磁臂、磁盘盘面。

I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。

CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。

  • 设备控制器

1.I/O控制器的功能
在这里插入图片描述

2.I/O控制器的组成
设备控制器必须包括:设备控制器与CPU的接口、设备控制器与设备的接口、I/O控制逻辑

在这里插入图片描述

一个I/O控制器可能对应对个设备,因此数据寄存器、控制寄存器、状态寄存器可能有多个,且这些寄存器都要有相应的地址,才能方便CPU操作

(1)内存映像I/O
寄存器占用内存地址的一部分,称为内存映像I/O
优点:简化了指令。可以采用对内存进行操作的指令来对控制器进行操作

在这里插入图片描述
(2)寄存器独立编址
采用I/O专用地址,控制器中的寄存器使用单独的地址
缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明控制器的编号

在这里插入图片描述

三.I/O控制方式

1.程序直接控制方式

读操作:
①CPU向控制器发出读指令(CUP向I/O发出,即CPU→I/O)。设备启动,并且状态寄存器设为1(未就绪/忙碌)
②不断循环检查控制器的状态。若状态位一直是1(在CPU读I/O模块状态时,从I/O控制器的状态寄存器读出数据放入CPU寄存器中分析,即I/O→CPU),说明设备还没准备好要输入的数据,于是CPU会不断地轮询。
③输入设备准备好数据后将数据传给控制器,并报告自身状态
④控制器将输入的数据放到数据寄存器中,并将状态改为0(已就绪)
⑤CPU发现设备已就绪,将数据寄存器中的内容读入CPU寄存器中(从I/O模块读取字,即I/O→CPU),再把CPU寄存器中的内容放入内存(往存储器中写入字,即CPU→存储器

优点:实现简单
缺点:CPU和I/O只能串行工作,导致CPU利用率低

2.中断驱动方式

每次I/O操作开始之前、完成之后需要CPU介入。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待I/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/O控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待l/O的进程(或其他进程)的运行环境,然后继续执行。

特点:
①CPU会在每个指令周期的末尾检查中断
②中断处理过程中需要保存、恢复进程的运行环境,需要一定时间开销。如果中断发生的频率太高,也会降低系统性能。

优点:本次I/O完成后设备控制器发出中断信号,CPU利用率提高,CPU和I/O设备可并行工作
缺点:数据中每个字在存储器与I/O控制器之间的传输都必须经过CPU,导致消耗较多的CPU时间

3.DMA方式(直接存储器存取)

CPU接收到I/O设备的DMA请求时,给I/O控制器发出一条命令,启动DMA控制器。CPU把控制操作委托给DMA控制器,然后继续其他工作。DMA控制器直接与存储器交互,传送整个数据块,每次传送一个字,此过程不需要CPU干预。传送完成后,DMA控制器给处理器发送中断信号,CPU再参与处理。因此,在开始和结束时才需要CPU的参与。

DMA控制器的组成
(1)命令/状态寄存器CR:存放CPU发来的I/O命令,或设备的状态信息
(2)内存地址寄存器MAR:在输入时,MAR表示数据应放到内存中的什么MAR位置;输出时MAR表示要输出的数据放在内存中的什么位置。
(3)数据寄存器DR:暂存从设备到内存,或从内存到设备的数据
(4)数据计数器DC:存放本次要读/写的字(节)数

在这里插入图片描述

优点:数据传输以“块”为单位(一个或多个连续的块),CPU介入频率进一步降低,仅在传送一个或多个数据块的开始和结束时才需要CPU干预,CPU利用率进一步提高,CPU和I/O的并行性得到提升

缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块(每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)。如果要读/写多个离散的快,需要多条指令。

4.通道控制方式

通道:独立于CPU的,控制输入/输出的设备

①CPU向通道发出I/O指令。为通道指明通道程序(即任务清单。指明了要读入/写出多少数据,读/写的数据应放在内存的什么位置等信息)在内存中的位置,并指明要操作的是哪个I/O设备,之后CPU就切换到其他进程执行了
②通道执行内存中的通道程序
③通道执行完规定的任务后,向CPU发出中断信号,之后CPU对中断进行处理

通道指令单一,没有自己的内存,通道所执行的通道程序是放在主机内存中的,即通道与CPU共享内存。

一个通道可以控制多个I/O控制器,一个I/O控制器可以控制多个I/O设备

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

  • 为什么说直到出现中断和通道技术后,多道程序概念才变得有用?
    多道程序并发执行是指有的程序在CPU上执行,而另一些程序正在I/O设备上进行传输,即通过CPU操作与外设传输在时间上的重叠必须有中断和通道技术的支持。原因如下:
    (1)通道是一种控制一台或多台外部设备的硬件机构,它一旦被启动就独立于CPU运行,因而做到了输入/输出操作与CPU并行工作。但早期的CPU与通道的联络方法是由CPU向通道发出询问指令来了解通道工作是否完成的。若未完成,则主机就循环询问直到通道工作结束为止。因此,这种询问方式是无法真正做到CPU与I/O设备并行工作的。
    (2)在硬件上引入了中断技术。所谓中断,就是在输入/输出结束时,或硬件发生某种故障时,由相应的硬件(即中断机构)向CPU发出信号,这时CPU立即停下工作而转向处理中断请求,待处理完中断后再继续原来的工作。
    因此,通道技术和中断技术结合起来就可以实现CPU和I/O设备并行工作,即CPU启动通道传输数据便去执行其他程序的计算工作,而通道则进行输入/输出操作;当通道工作结束时,再通过中断机构向CPU发出中断请求,CPU则暂停正在执行的操作,对出现的中断进行处理,处理完后再继续原来的工作。这样,就真正做到了CPU与I/O设备并行工作。此时,多道程序的概念才变为现实。

总结

在这里插入图片描述

下面用一个例子来总结以上4种I/O控制方式。想象一位客户要去裁缝店做一批衣服的情形。

采用程序直接控制时,裁缝没有客户的联系方式,客户必须每隔一段时间去裁缝店看看裁缝把衣服做好了没有,这就浪费了客户不少的时间。

采用中断驱动方式时,裁缝有客户的联系方式,每当他完成一件衣服后,给客户打一个电话,让客户去拿,与程序直接控制能省去客户不少麻烦,但每完成一件衣服就让客户去拿一次,仍然比较浪费客户的时间。

采用DMA方式时,客户花钱雇一位单线秘书,并向秘书交代好把衣服放在哪里(存放仓库),裁缝要联系就直接联系秘书,秘书负责把衣服取回来并放在合适的位置,每处理完100件衣服,秘书就要给客户报告一次(大大节省了客户的时间)。

采用通道方式时,秘书拥有更高的自主权,与DMA方式相比,他可以决定把衣服存放在哪里,而不需要客户操心。而且,何时向客户报告,是处理完100件衣服就报告,还是处理完10000件衣服才报告,秘书是可以决定的。客户有可能在多个裁缝那里订了货,一位DMA类的秘书只能负责与一位裁缝沟通,但通道类秘书却可以与多名裁缝进行沟通。

  • DMA方式与中断控制方式的主要区别是什么?
    (1)中断控制方式每个数据传送完成后中断CPU,而DMA控制方式则在所要求的传送的一批数据全部传送结束时中断CPU
    (2)中断控制方式的数据传送在中断处理时由CPU控制完成,而DMA控制方式则在DMA控制器的控制下完成。不过,在DMA控制方式中,数据传送的方向、存放数据的内存始址及传送数据的长度等仍然由CPU控制
    (3)DMA方式以存储器为核心,中断控制方式以CPU为核心。因此DMA方式能与CPU并行工作
    (4)DMA方式传输批量的数据,中断控制方式的传输则以字节为单位

  • DMA方式与通道方式的主要区别是什么?
    在DMA控制方式中,在DMA控制器的控制下设备和主存之间可以成批地进行数据交换而不用CPU干预,这样既减轻了CPU的负担,又大大提高了I/O数据传送的速度。通道控制方式与DMA控制方式类似,也是一种以内存为中心实现设备与内存直接交换数据的控制方式。不过在通道控制方式中,CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可以启动通道并使通道从内存中调出相应的通道程序执行。与DMA控制方式相比,通道控制方式所需的CPU干预更少,并且一个通道可以控制多台设备,进一步减轻了CPU的负担。另外,对通道来说,可以使用一些指令灵活改变通道程序,这一点DMA控制方式无法做到。

四.I/O子系统的层次结构

在这里插入图片描述

1.用户层软件
在这里插入图片描述

2.设备独立性软件/设备无关性软件
与设备的硬件特性无关的功能几乎都在这一层实现。
功能:
①向上层提供统一的调用接口(如read/write系统调用)
②设备的保护:原理类似与文件保护。设备被看做是一种特殊的文件,不同用户对各个文件的访问权限是不一样的,同理,对设备的访问权限也不一样
③差错处理:设备独立性软件需要对一些设备的错误进行处理
④设备的分配与回收
⑤数据缓冲区管理:可以通过缓冲技术屏蔽设备之间数据交换单位大小和传输速度的差异
⑥建立逻辑设备名到物理设备名的映射关系:根据设备类型选择调用相应的驱动程序。不同设备的内部硬件特性也不同,这些特性只有厂家才知道,因此厂家须提供与设备相对应的驱动程序,CPU执行驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作。

用户或用户层软件发出I/O操作相关系统调用的系统调用时,需要指明此次要操作的I/O设备的逻辑设备名。

设备独立性软件需要通过逻辑设备表LUT来确定逻辑设备对应的物理设备,并找到该设备对应的设备驱动程序
在这里插入图片描述
操作系统系统可以采用两种方式管理逻辑设备表:
方式一:整个系统只设置一张LUT,这就意味着所有用户不能使用相同的逻辑设备名,因此这种方式只适用于单用户操作系统
方式二:为每个用户设置一张LUT,各个用户使用的逻辑设备名可以重复,适用于多用户操作系统。系统会在用户登录时为其建立一个用户管理进程,而LUT就存放在用户管理进程的PCB中

  • 为什么要引入设备独立性?如何实现设备独立性?
    设备独立性可以提高操作系统的可适应性和可扩展性。实现设备独立性需要操作系统设置一张逻辑设备表(LUT)用来将用户程序中所使用的逻辑设备名称转换成物理设备名,该表的每一个表目包含逻辑设备名,物理设备名和设备驱动程序的入口地址
  • 什么是设备独立性?引入设备独立性有什么好处?
    设备独立性是指用户在编程序时使用的设备与实际设备无关。一个程序应独立于分配给它的某类设备的具体设备,即在用户程序中只指明I/O使用的设备类型即可
    优点:①方便用户编程②使程序运行不受具体机器环境的限制③便于程序移植

3.设备驱动程序
与硬件相关 。主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等

4.中断处理程序
与硬件相关 。当I/O任务完成时,I/O控制器会发送一个中断信号,系统会根据中断信号类型找到相应的中断处理程序并执行。中断处理程序的处理流程如下:
在这里插入图片描述
5.硬件
执行I/O操作,有机械部件、电子部件组成。不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

总结
在这里插入图片描述

五.输入/输出应用程序接口&设备驱动程序接口

(一)输入/输出应用程序接口

在这里插入图片描述
1.字符设备接口
get/put系统调用:向字符设备读/写一个字符

2.块设备接口
seek系统调用:修改读写指针位置,指定读写指针放到磁盘的哪个地址
read/write系统调用:向块设备的读写指针位置读/写多个字符

3.网络设备接口/网络套接字(socket)接口
socket系统调用:创建一个网络套接字,需指明网络协议(TCP/UDP)
bind:将套接字绑定到某个本地端口
connect:将套接字连接到远程地址
read/write:从套接字读/写数据

①P3使用socket系统调用创建网络套接字,socket系统调用给用户进程返回一个描述符(指向套接字的指针),使用bind绑定到本地的6666端口。
②P1使用connect系统调用把fd连接到主机2ip地址的6666端口,使得两个套接字直接建立连接。

在这里插入图片描述

主机通信:P1给P3发送数据包
①P1在用户区准备好数据,使用write系统调用指明往fd指向的套接字(主机1)中写入数据。
设备独立性软件接收到write系统调用,把用户进程准备好的数据复制到套接字缓冲区
③设备独立性软件调用网络控制器的驱动程序处理数据,网络控制器的驱动程序负责把数据输出到网络设备上
网络控制器将数据报发送到网络上
⑤主机2的网络控制器接收到数据包后向主机发出中断信号,主机2的中断处理信号调用网络控制器驱动程序,让驱动程序将数据搬入socket缓冲区中
⑥P3使用read系统调用指明从fd指向的套接字中读出数据包。
设备独立性软件从缓冲区中将数据复制到用户空间中

在这里插入图片描述
4.阻塞I/O与非阻塞I/O
(1)阻塞I/O:应用程序发出I/O系统调用,进程需转为阻塞态等待。如字符设备接口:从键盘读一个字符get
非阻塞I/O:应用程序发出I/O系统调用,系统调用可迅速返回,进程无需阻塞等待。如块设备接口:往磁盘写数据 write

(二)设备驱动程序接口

若各公司开发的设备驱动程序接囗不统一,则操作系统很难调用设备驱动程序

在这里插入图片描述

操作系统规定好设备驱动程序的接口标准,各厂商必须按要求开发设备驱动程序

在这里插入图片描述

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

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

相关文章

【学Vue就跟玩一样】组件-单文件组件

单文件组件在实际开发中是经常使用的,那么如何创建一个单文件组件呢?那么本篇就来简单入一下单文件组件。一,创建单文件组件 1.切换到你想要创建该文件的目录下,我这里切换的是desktop这个目录,当然,也可以…

大学高校供配电系统谐波危害及治理方案

摘要:安全科学用电是保障高校教学科研及办公的基础条件,随着现代化教学、电子图书馆等先进教学手段的不断引入,智能给排水、变频空调、电梯传送系统等配套设施以及电子镇流的照明灯具设备等大量非线性电力电子设备涌现,很多高等院…

「科普」带你认识5G基站

随着5G时代的到来,为了信号的稳定传输,为了覆盖面更广,5G基站作为5G规模组网的“先行军”,其建设至关重要。 那么,5G时代的基站是如何建设的呢?下面就来给大家介绍一下。 截至2022年末,我国移…

【Lilishop商城】No4-7.业务逻辑的代码开发,涉及到:商品模块

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接口类、业务类,具体的结合源代…

当代年轻人超半数人为“单身贵族”,数据可视化教你如何应付春节相亲

春节临近,不知大家在完成“年度总结”的同时,是否完成找到对象这个任务,如果还是单身,建议大家准备好如何应对家里安排的相亲吧!现如今男女比例严重失调,也相对产生多数的“单身贵族”,当代年轻…

牛客竞赛每日俩题 - Day14

目录 错排算法 三维数组的应用 错排算法 发邮件__牛客网 错排: 假设有n封信要装入到n个信封中,每封信应该要放到对应的信封中,比如: 信: A B C D... 信封: a b c d. ... 由于疏忽将信放置出错,总共有多少种可能性每封信都放错 假设:D(n)…

自定义类型详解

这次我们来看自定义类型,我们之前接触过的自定义类型就有数组和结构体,我们来详细解析一下这些自定义类型的特点,已经一些我们没接触过的自定义类型 目录 1.结构体 1.1结构体的基础知识 1.2结构体的声明 1.3特殊声明 1.4结构的自引用 …

Mac AndroidStudio生成签名文件,显示SHA1和MD5值

一、首先,生成签名文件 1.点击菜单栏中的Build的。 2.弹出窗体,创建新的KeyStore:如下图。 3.生成jks文件 4.填写keystore和key密码。ketystore密码和key密码在后面会用到。其他信息也不是很重要,自己差不多能记住就好。 5.然后点…

设计模式学习(五):State状态模式

一、什么是State模式 在面向对象编程中,是用类表示对象的。也就是说,程序的设计者需要考虑用类来表示什么东西。类对应的东西可能存在于真实世界中,也可能不存在于真实世界中。 在State模式中,我们用类来表示状态。在现实世界中&a…

【部署】Apache DolphinScheduler 伪集群部署

【部署】Apache DolphinScheduler(海豚) 伪集群部署(Pseudo-Cluster)Standalone极速体验版DolphinScheduler 伪集群部署前置准备工作本地部署环境准备 DolphinScheduler 启动环境配置用户免密及权限配置机器SSH免密登陆启动zookee…

解决bootstrap table footerFormatter表脚和表体列错位问题

需求:需要把表格的一列的内容在表最下面一行进行汇总,显示合计 实现合计步骤: 1.在初始化表格时,开启显示表脚的属性,如图 2.在需要合计的列中添加footerFormatter函数,如图 这样就会在表格最下面显示合计…

年度征文 | 再见2022,你好2023

年度征文 | 再见2022,你好2023题记个人简介初衷写作展望题记 这两天打开CSDN,发现消息栏一直提示我写这个年度征文,本来觉得自己没有经验可以分享,毕竟自己仍处于该领域的起步阶段,无法给大家提供有用的建议或实用的总…

功率放大器模块是什么意思(功率放大模块工作原理)

在日常电子实验测试中,很多电子工程师都会经常使用到功率放大器,随着人们对于功率放大器的频繁使用,对于功放的要求也越来越多,有些工程师就想要使用尺寸较小的仪器,功率放大模块便应运而生,今天就请安泰电…

关于几个坐标系的关系NED ENU ROS

几个坐标系转来转去,时间一长又搞混了。 地球固连坐标系 WND 地球固连坐标系 NED 机体坐标系 NED 惯性系 x轴在多旋翼对称平面内指向机头(机头方向与多旋字形或X字形相关)。 z轴在飞机对称平面内,垂直轴向下。然后,按…

从GPT到chatGPT(二):GPT2

GPT2 文章目录GPT2前言正文摘要方法概述训练数据输入表示模型结构实验语言模型Children’s Book Test(CBT)LAMBADAWinograd Schema Challenge(WSC)Reading ComprehensionSummarizationTranslationQuestion AnsweringGeneralizatio…

Linux下搭建Git服务器

目录 步骤一.安装Git: 步骤二.安装Gitosis 安装Gitosis依赖的工具 进入到Gitosis目录执行: 出现下面的信息表示安装成功 步骤三.服务器端创建git用户来管理Git服务 服务器端的Git配置公钥 步骤四.服务器端创建Git仓库 步骤五.客户端clone服务器…

PPT如何转换成PDF?三种转换方法告诉你

大家在工作中会使用PPT格式的文件来汇报工作流程吗?当上级领导要求你将这些工作内容全部汇总,并用PDF文件发给他的时候,你是怎么做的呢?是重新将内容复制黏贴到PDF文件中吗?今天告诉你一个简单的方法,其实只…

【echarts】自定义legend样式 echarts图例与⽂字对齐问题

较完整的使用介绍参考:https://blog.csdn.net/changyana/article/details/126281275 起因 今天使⽤echarts时发现官⽹⽰例图例部分并没有进⾏对齐,⼀上⼀下逼死强迫。。。 解决办法 textStyle: { // 添加height: 10, // 关键在这个height设置rich: …

前端开发-异常问题记录

Q1:Chrome 中文界面下默认会将小于 12px 的文本强制按照 12px 显示; 可通过加入 CSS 属性 -webkit-text-size-adjust: none; 解决 Q2:浏览器跨域问题(通过配置浏览器解决) 将chrome浏览器复制一个进行修改&#xff…

CRM如何帮助企业提高工作效率?

企业管理者在创建团队时,除了要凝聚人心,更注重效率,企业团队的工作效率直接决定了企业的生产力,生产力决定战斗力,使用CRM系统可以帮助企业提高工作效率。 前言 企业管理者在创建企业团队时,除了要凝聚人…