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之间的数据传送解放了出来

流程图如下.


相关文章
|
25天前
|
网络协议 网络性能优化
传输控制
【10月更文挑战第20天】传输控制
27 3
|
2月前
|
网络协议 网络虚拟化
接收网络包的过程——从硬件网卡解析到IP
【9月更文挑战第18天】这段内容详细描述了网络包接收过程中机制。当网络包触发中断后,内核处理完这批网络包,会进入主动轮询模式,持续处理后续到来的包,直至处理间隙返回其他任务,从而减少中断次数,提高处理效率。此机制涉及网卡驱动初始化时注册轮询函数,通过软中断触发后续处理,并逐步深入内核网络协议栈,最终到达TCP层。整个接收流程分为多个层次,包括DMA技术存入Ring Buffer、中断通知CPU、软中断处理、以及进入内核网络协议栈等多个步骤。
|
3月前
|
传感器 编解码
SFNC —— 设备控制(二)
SFNC —— 设备控制(二)
52 3
|
6月前
I/O设备与主机信息传送的方式(程序查询方式,程序中断方式,DMA方式)
I/O设备与主机信息传送的方式(程序查询方式,程序中断方式,DMA方式
331 0
|
C语言 Perl
西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么
本篇我们来学习西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么。
西门子S7-1200的MODBUS通信如何组态,通信装载指令、主站设置指令、从站设置指令各参数的含义是什么
|
Windows
USB 设备:自定义批量传输及实现
USB 设备:自定义批量传输及实现
1089 0
|
C语言 Perl
西门子S7-1200的MODBUS通信装载指令、主站设置指令、从站设置指令各参数的含义是什么?
本篇我们来介绍西门子S7-1200的MODBUS通信装载指令、主站设置指令、从站设置指令各参数的含义是什么。
西门子S7-1200的MODBUS通信装载指令、主站设置指令、从站设置指令各参数的含义是什么?
|
Ubuntu Linux C语言
用C写蓝牙通讯程序:扫描、读取、发送
在Linux下,通过bluez 蓝牙库可以用C语言轻松实现蓝牙通信。在ubuntu下可以用 apt-get install libbluetooth-dev 安装该库。下面是几个简单示例。
2146 0
|
物联网 API
设备端和服务端检测设备是否在线的方法
使用物联网时,有时设备端和服务端都需要检测设备是否在线。
1338 0
如何判断设备使用网络的状态
如何判断设备使用网络的状态
164 0