I/O设备与主机信息传送的控制方式以及什么是中断

简介: I/O设备与主机信息传送的控制方式以及什么是中断

中断是什么

中断是指CPU在执行程序的过程当中,如果发生意外时间或者特殊事件(如异常),CPU要中断当前的程序的处理或者当前程序的执行,转而去处理这个特殊事件,或者是异常事件,通过执行中断服务程序的方式来进行处理,处理结束之后,要返回到被中断的程序的程序断电继续去执行原来的程序,这个过程就叫中断.

程序查询方式

程序查询方式是CPU和I/O设备串行工作的一种方式.

程序查询方式的基本思路为,当CPU在执行某个程序时,若遇到程序中要求使用I/O设备的指令,那么CPU便开始向I/O设备发送读/写指令,指令发出后CPU读取I/O状态,若I/O设备准备就绪,那么CPU从I/O设备中读取一个字节或字到CPU中,之后CPU再写入到主存中(因为程序运行时的数据存放在主存),这时CPU检查对I/O设备的访问是否完成,如若是,CPU继续执行原有程序,若不是,CPU继续重复发出读写指令.若I/O设备未准备就绪,那么CPU将已知进行读取I/O设备状态的指令,而不执行其他指令,这将导致CPU处于踏步等待的状态,即CPU在这段时间无法进行任何其他工作,对于这种方式,CPU大部分时间在查询等待I/O设备.

优点:电路设计简单

缺点:CPU效率低

其流程图如下:

程序中断方式

程序中断方式是一种CPU和I/O设备并行工作的方式.

其思路为,当CPU执行的程序需要访问I/O设备时,CPU发出启动I/O指令之后,CPU与外部I/O设备并行工作,CPU继续执行原有程序,外部设备开始准备数据,一段时间后,I/O设备准备好了数据,此时将通过I/O接口向CPU发送一个中断请求,CPU收到这个中断请求后,如果CPU当前可以相应这个中断,在某一条指令的执行周期结束之前,CPU可以相应这个中断,打断CPU当前执行的程序,去执行一个中断服务程序,这个中断服务函数将会完成数据的输入和输出操作,中断程序执行完后CPU会继续执行被中断的程序.

这种方式把CPU逐渐的从数据传输工作当中独立出来,使得I/O设备的自治能力越来越强.

优点:没有踏步等待现象,CPU被解放
缺点:需要中断现行程序,CPU需要保存现场,这是额外的开销,且之后还要恢复现场,CPU额外开销较大

流程图如下:

DMA方式

DMA方式是CPU和I/O设备并行工作的一种方式.

这种方式在主存与I/O设备之间直接建立一条数据通道,因此主存与I/O设备通过DMA控制器可以直接进行数据的交换.

其流程为,CPU执行当前程序时,若遇到需要访问I/O设备,那么CPU启动I/O设备,I/O进行数据的准备,CPU继续执行当前程序,外部设备数据准备结束之后,会窃取一个或几个的存储周期,在这些存储周期当中,外部设备和内存在DMA控制器的控制之下,完成一个或几个字的数据交换,交换结束之后CPU继续执行程序.

特别注意:虽然CPU将总线控制权转交给了DMA,但是CPU依旧可以继续执行主程序,只是在这种情况之下,CPU不能使用系统总线,不能访问内存.

优点:与程序中断方式相比,在数据传送过程当中,不需要保存现场,不需要恢复现场.不需要去执行中断服务程序,不需要用软件完成数据输入输出的控制,进一步把CPU与I/O之间的数据传送解放了出来

流程图如下.


相关文章
|
9月前
|
机器学习/深度学习 人工智能 算法
HuatuoGPT-o1:开源的医学推理大模型,通过复杂推理和强化学习提升医学问题解决能力
HuatuoGPT-o1 是香港中文大学与深圳大数据研究院联合推出的医学高级推理大模型,通过复杂推理和强化学习提升医学问题解决能力。
522 8
HuatuoGPT-o1:开源的医学推理大模型,通过复杂推理和强化学习提升医学问题解决能力
|
11月前
|
测试技术 持续交付 API
探索软件测试中的自动化:从新手到专家
在软件开发的世界中,测试是确保产品质量的关键步骤。本文将通过一个初学者的视角,介绍如何从零开始构建自动化测试框架,并逐步深入到更复杂的测试场景。我们将探讨自动化测试的优势、工具选择、以及如何有效地实施和扩展自动化测试策略。无论你是刚入门的软件测试新手,还是希望提升自动化测试技能的开发人员,这篇文章都将为你提供实用的指导和启示。
|
C++
基于C++的简易文件管理系统设计与实现
基于C++的简易文件管理系统设计与实现
505 6
|
SQL 关系型数据库 Go
Golang ORM框架介绍及比较
Golang ORM框架介绍及比较
|
SQL 分布式计算 运维
MaxCompute操作报错合集之遇到字段超长的报错,该如何处理
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
252 6
|
Dubbo Java Serverless
Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
520 0
Serverless 应用引擎操作报错合集之Nacos中nacos启动正常,访问白页,启动日志显示正常如何解决
|
存储 算法 安全
DSP加密方式研究
DSP加密方式研究
268 0
|
缓存 人工智能 API
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
【Python+微信】【企业微信开发入坑指北】2. 如何利用企业微信API主动给用户发应用消息
836 0
|
Shell 程序员
Mac终端工具Terminal (1):打开和关闭终端
Mac终端工具Terminal (1):打开和关闭终端
4819 0
|
消息中间件 存储 缓存
【多线程系列-01】深入理解进程、线程和CPU之间的关系
【多线程系列-01】深入理解进程、线程和CPU之间的关系
34181 14