7-2输入/输出系统-I/O方式

news2024/11/16 12:30:15

文章目录

  • 一.程序查询方式
  • 二.程序中断方式
  • 三.DMA方式
    • 1.传送过程
    • 2.DMA控制器(DMAC)的内部结构
    • 3.DMA传送方式
      • (1)停止CPU访问主存
      • (2)DMA与CPU交替访存
      • (3)周期挪用/周期窃取
    • 4.DMA方式的特点
    • 5.DMA与中断对比

一.程序查询方式

打印操作:
①启动打印的命令字放入Rn+1端口,CPU通过地址线指明此次要访问的地址是Rn+1,通过控制线指明此次要进行写操作
②I/O控制逻辑根据打印的命令信号通过控制线给打印机发出命令
③设备启动完成后通过状态线给I/O接口反馈,I/O控制逻辑将“已就绪”信号存入状态寄存器
④CPU不断循环检查控制器的状态,直到设备准备好
⑤CPU读取到已就绪信号后,通过地址线指明此次要操作的是Rn端口,通过控制线指明要往Rn端口中写入数据。通过数据线,把寄存器中的数据读入数据寄存器
⑥I/O控制逻辑传送数据至外设界面控制逻辑,再通过数据线传递给打印机,通过控制线发出相应控制信号

在这里插入图片描述

优点:接口设计简单、设备量少
缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低

二.程序中断方式

程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。

在这里插入图片描述

详见操作系统-1-计算机系统概述(OS)-三.操作系统的运行环境-2.中断

CPU在执行指令时会检查是否有异常(内中断)发生,CPU在每个指令结束的时候都会检查是否有外中断信号。

在这里插入图片描述
1.名词解释
(1)中断请求与中断源
中断源是请求CPU中断的设备或事件,一台计算机可以有个中断源。每个中断源向CPU发出中断请求的时间是随机的。
(2)中断判优
中断系统每次只能响应一个中断,根据中断优先级选择需要优先处理的中断

优先级高低:
硬件故障中断>软件中断
非屏蔽中断>可屏蔽中断
DMA请求>l/O设备传送的中断请求
高速设备>低速设备
输入设备>输出设备
实时设备>普通设备

硬件判优:INTR1给1,第一个中断源对应的输出信号INTP1即为1,响应该中断请求。其他INTP均为0,暂不响应。可以看出,优先级从左到右递减,优先级固定不变
在这里插入图片描述
软件判优:逐位找1(见后文"中断请求标记")
在这里插入图片描述

(3)中断响应
CPU响应中断后,经过某些操作,转去执行中断服务程序
(4)关中断
CPU不再例行检查中断信号,即不再响应中断请求,直到开中断
(5)保存断点
为保证在中断服务程序执行完成后能够正确地返回到原来的程序,需要提前将原来程序的断点保存起来
(6)引出中断服务程序
取出中断服务程序的入口地址并传送给程序计数器PC
(7)中断向量(表)
每个中断都有一个唯一的类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址,CPU必须找到入口地址,即中断向量。把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表

如何确定中断服务程序的入口地址(起始地址)
①软件方法
②硬件方法。根据输入的比特哪个为1,判断是哪个中断源的中断请求,根据向量地址(也叫中断类型号)找到中断处理程序

在这里插入图片描述
(8)中断隐指令
保存原程序的PC值,并让PC指向中断服务程序的第一条指令
(9)(中断)屏蔽字
中断屏蔽字是描述“中断屏蔽”状态的一组“二进制信息”。每一个中断源对应一个屏蔽字。在处理该中断源的中断服务程序时,屏蔽寄存器中的内容就是该中断源对应的屏蔽字。一般用1表示屏蔽,用0表示正常申请,屏蔽字中1越多,表明屏蔽性越强,越不会被中断,优先级越高,因此通过屏蔽字可以调整设备的优先级。每个屏蔽字中至少有一个1,这个1是屏蔽自身的中断(不能自己中断自己)。

屏蔽字为1(MASK为1)即可屏蔽与这个比特位相对应的中断源发来的中断请求信号(INTR为1)

图中优先级从左到右递减,屏蔽字MASK若为1110,则最右侧优先级最高;若为全1,则当前中断源的中断处理不会再被中断
MASK1屏蔽字为1,取反为0,相与取反为1(INTR1为1),再取反INTP1为0,无效。以此类推

在这里插入图片描述

增加中断屏蔽功能的中断优先级可调整,而普通硬件排队器的优先级不可调整
在这里插入图片描述

(10)中断驱动方式
(同操作系统)
在这里插入图片描述
在这里插入图片描述

2.说明
(1)不可屏蔽中断源一旦提出请求,CPU必须无条件响应,如强制关机。而对可屏蔽中断源的请求,CPU可以响应也可以不响应。内中断都是不可屏蔽中断,外中断也有不可屏蔽中断。不可屏蔽中断在关中断的情况下也会被响应,处理优先级最高。
(2)保护现场和屏蔽字、恢复现场都不能被中断
(3)程序中断的作用
①实现CPU与I/O设备的并行工作
②处理硬件故障和软件错误
③实现人机交互,用户干预机器需要用到中断系统
④实现多道程序、分时操作,多道程序的切换需借助于中断系统
⑤实时处理需要借助中断系统来实现快速响应
⑥实现应用程序和操作系统(管态程序)的切换,称为“软中断”
⑦多处理器系统中各处理器之间的信息交流和任务切换
(4)中断必须满足的条件
①中断源有中断请求
②CPU允许中断及开中断
③一条指令执行完毕,且没有更紧迫的任务
(5)中断响应包括/中断隐指令的主要任务
关中断、保存断点、引出中断服务程序
(6)中断服务程序的主要任务
①保护现场:现场信息指用户可见的工作寄存器的内容,它存放着程序执行到断点处的现行值。保护现场时保存通用寄存器和状态寄存器的内容(eg:保存ACC寄存器的值),防止执行中断程序时覆盖原寄存器的值,以便返回原程序后可以恢复CPU环境。现场信息可用指令直接访问,因此通常在中断服务程序中通过指令把他们保存在栈中,也可以使用特定存储单元,由软件实现。
②中断服务/设备服务:中断服务程序的主体部分
③恢复现场:通过出栈指令或取数指令把之前保存的信息送回寄存器中
④中断返回:返回到原程序断点处
(7)中断处理过程
多重中断:
关中断
②保存断点(①②可换)
③引出中断服务程序
④保护现场和屏蔽字
开中断。允许更高优先级的中断嵌套
⑥执行中断服务程序
关中断
⑧恢复现场和屏蔽字
开中断、中断返回

单重中断:执行中断服务程序时不响应新的中断请求。中断处理过程=中断响应/中断隐指令(①②③)+中断服务程序(④⑥⑧⑨)

多重中断:允许再次中断

在这里插入图片描述

在这里插入图片描述

3.中断请求标记
每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,当其状态为“1”时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。

在这里插入图片描述

三.DMA方式

CPU向DMA控制器指明要输入还是输出,要传送多少数据,数据在主存和外存的地址。
在这里插入图片描述
优点:数据传输以“块”为单位(一个或多个连续的块),CPU介入频率进一步降低,仅在传送一个或多个数据块的开始和结束时才需要CPU干预,CPU利用率进一步提高,CPU和I/O的并行性得到提升

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

1.传送过程

(1)预处理:CPU完成寄存器初值设置,确定要传多少数据,数据存在哪等准备工作(①②)
(2)数据传送:CPU继续执行主程序,DMA控制器完成数据传送(③④)
(3)后处理:CPU执行中断服务程序,做DMA结束处理(⑤)
①DMA控制器接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求
②CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期
③确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数
④规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
⑤向CPU报告DMA操作的结束

在这里插入图片描述

2.DMA控制器(DMAC)的内部结构

(1)控制状态逻辑:由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA请求信号和CPU响应信号进行协调和同步。
(2)DMA请求触发器:每当I/O设备准备好数据后给出一个控制信号,使DMA请求触发器置位。设备完成一个字的输入(输入到数据缓冲寄存器)后,将DMA请求触发器的值改为1。控制状态逻辑发现是1后将数据写入主存。
(3)主存地址计数器AR:存放要交换数据的主存地址。
(4)传送长度计数器WC:用来记录传送数据的长度,计数溢出时,数据即传送完毕,自动发出中断请求信号。控制/状态逻辑控制WC和AR变化
(5)数据缓冲寄存器:暂存每次传送的数据
(6)中断机构:当一个数据块传送完毕后,中断机构向CPU提出中断请求。WC溢出时触发中断机构

CPU向DMA控制器指明接下来要读/写的数据存放在主存中的什么位置,启动I/O设备。设备将数据写入数据缓冲寄存器,向DMA触发器发出高电平信号,控制逻辑检测到后,向CPU申请总线控制权。DMA获得总线控制权,即可通过总线给主存发出命令。对于“写”,数据缓冲寄存器和AR的值送入总线,完成后AR和WC自动加1。WC溢出后中断机构向CPU发出中断请求,CPU处理中断信号

在这里插入图片描述
DMAC和CPU不能同时使用系统总线,因此DMAC和CPU不能同时访问主存。若使用三总线结构(下图),DMAC可以通过单独的DMA总线访问主存,使得MDAC和CPU同时访问主存。

在这里插入图片描述

3.DMA传送方式

为解决同时访问主存的冲突,提出了三种方式

(1)停止CPU访问主存

DMAC优先。控制简单,CPU可能长期处于不工作状态或保持状态,未充分发挥CPU对主存的利用率
在这里插入图片描述

(2)DMA与CPU交替访存

不需要总线使用权的申请、建立和归还过程
硬件逻辑更为复杂,且CPU通常使用频繁,均分的方式不利于CPU

在这里插入图片描述

(3)周期挪用/周期窃取

时间分配灵活
①CPU已经在访存,不可中断
②CPU和DMAC同时请求访问主存,DMAC优先

在这里插入图片描述

4.DMA方式的特点

①它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问
②在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现
③主存中要开辟专用缓冲区,及时供给和接收外设的数据
④DMA传送速度快,CPU和外设并行工作,提高了系统效率
⑤DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理

5.DMA与中断对比

在这里插入图片描述
与操作系统的I/O控制方式类似(含通道),详见-5-1输入/输出管理-I/O管理概述-三.I/O控制方式

  • I/O设备与主机交换信息时,共有哪几种控制方式,简述它们的特点。
    程序查询方式、程序中断方式、DMA方式、I/O通道方式

在这里插入图片描述

  • 在什么条件和什么时间,CPU可以响应I/O的中断请求?
    ①中断源有中断请求
    ②CPU允许中断及开中断
    ③一条指令执行完毕,且没有更紧迫的任务
  • 中断的执行过程
    关中断→保存断点→引出中断服务程序→保护现场和屏蔽字→开中断→执行中断服务程序→关中断→恢复现场和屏蔽字→开中断→中断返回
  • 什么是DMA,简述DMAC的结构和DMA控制方式的具体实现过程,需要涉及到哪些寄存器,寄存器的作用是什么?
    (1)DMA(Direct Memory Access)是直接存储器存取,是一种数据传输模式。DMA方式在外设与内存之间开辟一条“直接数据通道”,信息传送不再经过CPU,也就不需要保护、恢复CPU现场等繁琐操作,降低了CPU在传送数据时的开销。
    (2)DMA控制器由寄存器、I/O控制逻辑和与块设备的接口组成
    (3)具体实现过程分为预处理、数据传送和后处理过程。在预处理阶段,CPU完成寄存器初值设置,确定要传多少数据,数据存在哪等准备工作;在数据传送阶段CPU继续执行主程序,DMA控制器完成数据传送;在后处理阶段CPU执行中断服务程序,做DMA结束处理
    (4)寄存器
    ①命令/状态寄存器CR:存放CPU发来的I/O命令,或设备的状态信息
    ②内存地址寄存器MAR:存放要交换数据的主存地址。在输入时,MAR表示数据应放到内存中的什么MAR位置;输出时MAR表示要输出的数据放在内存中的什么位置
    ③数据寄存器DR:暂存从设备到内存,或从内存到设备的数据
    ④数据计数器DC:存放本次要读/写的字(节)数
  • 解释并比较程序查询和程序中断方式
    ①程序查询方式中信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器和一个设备状态寄存器。主机进行I/O操作时,先发出询问信号,读取设备的状态并根据设备状态决定下一步操作究竟是进行数据传送还是等待。这种方式特点是CPU有踏步等待现象,CPU与I/O串行工作,信息传输效率非常低。
    ②程序中断是指计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
  • DMA和通道方式的区别是什么?
    通道控制方式与DMA方式类似,也是一种以内存为中心,实现设备和内存直接交换数据的控制方式。在DMA方式中,数据的传送方向、存放数据的内存始址以及传送的数据块长度等都由CPU控制,而在通道方式中,这些都由通道来进行控制。另外,DMA方式每台设备至少需要一个DMA控制器,一个通道控制器可以控制多台设备。
  • 中断响应优先级和中断处理优先级分别指什么?
    中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变。而中断处理优先级可以由中断屏蔽字来改变,反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为"0”,对新中断开放),若是,则中止正在处理的中断,转到新中断去处理,处理完后再回到刚才被中止的中断继续处理。
  • 向量中断、中断向量、向量地址三个概念是什么关系?
    ①中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表
    ②向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号
    ③向量中断:指一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址。
  • 程序中断和调用子程序有何区别?
    两者的根本区别主要表现在服务时间和服务对象上不一样。
    ①调用子程序过程发生的时间是已知的和固定的,即在主程序中的调用指令执行时发生主程序调用子程序过程,调用指令所在位置是已知的和固定的。而中断过程发生的时间一般是随机的,CPU在执行某个主程序时收到中断源提出的中断申请,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的。也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决的。
    ②子程序完全为主程序服务,两者属于主从关系。主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序二者一般是无关的,不存在谁为谁服务的问题,两者是平行关系。
    ③主程序调用子程序的过程完全属干软件处理过程,不需要专门的硬件电路;而中断处理系统是一个软/硬件结合的系统,需要专门的硬件电路才能完成中断处理的过程(如中断服务程序的保护现场用软件)。
    ④子程序嵌套可实现若干级,嵌套的最多级数受计算机内存开辟的堆栈大小限制;而中断嵌套级数主要由中断优先级来决定,一般优先级数不会很大。
  • 什么是中断隐指令,有哪些功能?
    中断隐指令是在机器指令系统中没有的指令,它是CPU在中断周期内由硬件自动完成的一条指令。
    功能:保护程序断点;寻找中断服务程序的入口地址;关中断

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

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

相关文章

基于改进粒子群算法的混合储能系统容量优化(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

css特性(继承、层叠、优先级)

1、继承性 特性: 子元素有默认继承父元素样式的特点(子承父业) 可以继承的常见属性(文字控制属性都可以继承) colorfont-style、 font-weight、 font-size、 font-familytext-indent、text-align、line-height … 注意点: 控制字的都能继承 可以通过调试工具判断样式是否可以…

应用系统基于CAS实现单点登录的解决方案

单点登录 (SingleSign-On,SSO) ,是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时,用户只需要登录一次…

JAVA的PDF Viewer:Big Faceless PDF Viewer Crack

PDF Viewer是一个可以显示PDF文档的Swing组件。针对不需要完整 API 的客户,Viewer 可以作为 Applet、应用程序或通过 Java Web Start 安装,或嵌入到 Swing 应用程序中。 产品概览 打印、保存、文本搜索、表单、数字签名和注释是众多可用功能中的一部分 -…

IB 课程的挑战(二)

以下我想换个角度用自身的经历以及多年来教学的经验去分享修读 IB课程的挑战。 (一)必修文学科2022尽管我于会考中文获得「A」级成绩,但面对IB课程的中国文学 (IB Chinese A Literature)时,却仍感到十分吃力。我之前从未接触过中国…

网络IO模型

1 介绍一提到网络IO,甚至一些网络框架,就无法避免遇到阻塞、非阻塞、同步、异步的概念,要理解这些概念,先要清楚网络IO是什么,以及网络IO如何工作。网络IO本质上也是IO的一种,就是数据的输入输出&#xff0…

护网行动(防守方)linux服务器通用安全加固指南(1)

实验所属系列:Linux服务器搭建/Linux服务安全 Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 Linux 系统,或者盗…

CnOpenData中国观鸟记录数据

一、数据简介 观鸟,是指在自然环境中利用望远镜等观测记录设备在不影响野生鸟类正常生活的前提下观察鸟类的一种科学性质的户外活动。 鸟类,是生物多样性中最具指示性的类群。由全国各地观鸟爱好者们共同记录的观鸟信息,能够展示中国各地区的…

cesium +vue3 +vite 实现点线面功能

第一步:搭建vue3项目 1、npm在相应文件夹下创建 npm create vitelatest2、选择项目名称 3、选择vue 4、选择是否使用typescript 或者JavaScript 5、记得在终端npm install一下就可以启动项目了 第二步:引入cesiumJS 1、npm引入 npm i cesium vite…

海康Visionmaster-VM2D,VM3D,VM深度学习对电脑配置要求

为确保VM算法平台能正常安装及运行,对PC配置有所要求。 第一:推荐配置: 操作系统:Windows7/10(64位中文操作系统) CPU:Intel Core i7-6700 3.4GHz 或以上(如需使用CPU相关深度学习…

32岁面试字节软件测试岗,想不到居然这么简单......

前段时间有个在小公司干了七八年的朋友离职了,想要拼一拼大厂,于是他选择了字节跳动。面试总共花费了 20 天左右,包含了 4 轮电话面试、1 轮笔试、1 轮主管视频面试、1 轮hr视频面试。 据他了解到的信息,其实去字节面试的人很多&…

爬虫(一)爬虫基本概念

爬虫概念网络爬虫 (网页蜘蛛, 网络机器人)爬虫就是模拟客户端发送网络请求, 接受请求对应的响应, 一种按照一定的规则,自动地抓取互联网信息的程序。理论上来说, 只要是用户通过客户端(浏览器)能够做到事情, 爬虫都能够去做。爬虫: 模拟客户端访问, 抓取数据。反爬: 保护重要数…

3、边界值分析

如何选定边界值 很难提供一份如何进行边界值分析的“详细说明”,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法。 但是可以提供一些通用指南: 如果输入条件规定了一个输入值范围,那么应针对范围的边…

WY49 数对

【答案解析】: 暴力破解:将 x 和 y 分别遍历 [1, n] ,进行判断当 x % y > k 时统计计数 count 即可,但是这样的话当 n 的值非常大 的时候循环次数将非常恐怖,需要循环 n^2 次。 更优解法: 假设输入 n10 , k3 &#…

QT/C++——对话框

一、标准对话框 #include "widget.h" #include <QVBoxLayout> #include <QHBoxLayout>Widget::Widget(QWidget *parent): QWidget(parent) {btcolor new QPushButton("setcolor");bterrm new QPushButton("errmsg");btfile new …

检索业务:构建结果数据与分析

明确返回的结果对象数据 结果对象 Data public class SearchResult {/*** 查到的所商品信息*/private List<SkuEsModel> products;private Integer pageNum;//当前页面private Long total;//总记录数private Integer totalPages;//总页码private List<CatalogVo&g…

linux安装python3.10.9

Linux系统安装python3.10.9Linux系统安装python3.10.9查看系统自带python信息python官网下载安装包解压安装包上传安装包到服务器解压安装包进入解压后的目录安装python使用的依赖安装python使用的依赖完成编译安装python设置软连接设置python软连接设置pip软连接配置环境变量使…

【Linux】线程概念 | 同步

除了线程互斥&#xff0c;我们还有线程同步&#xff0c;来康康吧 文章目录1.为什么需要同步2.生产消费模型2.1 生产者和消费者的关系2.2 以简单代码为例2.3 并发3.条件变量接口3.1 init/destroy3.2 pthread_cond_wait3.3 pthrea_cond_signal/broadcast3.4 代码示例3.4.1 小bug3…

Python数据可视化(三)绘制统计图形大全

3.1 柱状图以 Python 代码的形式讲解柱状图的绘制原理&#xff0c;这里重点讲解 bar()函数的使用方法。代码&#xff1a;import matplotlib as mpl import matplotlib.pyplot as plt mpl.rcParams["font.sans-serif"]["SimHei"] mpl.rcParams["axes.u…

JavaScript Hashmap散列算法

文章目录前言一、什么是散列表二、为何使用散列算法三、实现散列算法1.字典结构2.散列函数3.put 设置/更新4. 获取值四、使用HashMap处理冲突1.分离链接2.线性探查总结前言 一、什么是散列表 散列表是字典(Dictionary)的一种实现. 集合以[值, 值]形式存储, 字典则以[键, 值]对…