当前位置: 首页 > news >正文

1.3数据传输控制方式:IO数据传输控制方式、程序控制(查询)方式、程序中断方式、DMA方式、通道方式、I/O处理机

1.3数据传输控制方式:IO数据传输控制方式、程序控制(查询)方式、程序中断方式、DMA方式、通道方式、I/O处理机

  • 程序控制(查询)方式
  • 程序中断方式
  • DMA方式
  • 通道方式、I/O处理机

I/O数据传输方式,由软件到硬件发展,效率越来越高。
效率由低到高:
程序控制(查询)方式 < 程序中断方式 < DMA方式 < 通道方式 < I/O处理机

程序控制(查询)方式

程序控制(查询)方式,分为无条件传送和程序查询方式两种(一般考的较多的是程序查询方式)。该方法优点是简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。

将CPU和I/O的效率分开来看,I/O的效率要比CPU的速度低,这个过程当中无条件查询就是CPU默认I/O一直是准备好的,要用的时候CPU直接调用I/O进行传输,显然这种情况太理想化了,所以这里会用到程序查询的方式,CPU不断的查询,I/O到底有没有准备好,准备好了再进行调用,没有准备好的话,CPU会持续等待I/O准备,这个过程会严重影响CPU的利用率。

举个例子:直播课程中,老师会先检查相应的设备,问大家是否能够正常接收,这个过程当中,如果大家没有回复,老师会再次进行询问,期间老师是无法正常上课的,必须等大家响应正常的情况下才能继续上课。因此在这样的场景下,CPU的利用率是非常低的。

程序中断方式

常见的设备:鼠标、键盘。
程序中断方式,与程序控制方式相比,中断方式因为CPU无需等待I/O的状态,CPU会在断点的情况下才去响应,从而提高了传输请求的响应速度。

I/O开始和结束的时候会提交中断请求,然后CPU会开始处理,这个过程中,I/O的具体传输过程和CPU的事务是可以并行的,所以CPU的效率有了大大的提升。

举个例子:老师该上课上课,学员该听课听课,学员发现自己卡顿了,在公屏上发个状态,这种情况下,就会打断老师上课的进程,这个打断的过程就叫做中断,中断的方式一般是适用于某些急需要处理的异常或者紧急情况。在一个程序的执行过程,它会接收到中断请求,那么程序的执行会出现端点,断点这里所涉及到的程序的一些状态都会记录下来,放在一个栈中,这个记录的过程叫做保存现场,或者叫保护现场。出现断点后,会有一定的软硬件去负责处理中断的优先级的判断,去响应中断,如何来响应?它会查看中断向量表,通过响应的入口,找到对应的中断服务程序,中断服务程序响应完了,即卡顿解决了,会回到课程进度上,返回终端,这个过程,返回会返回到断点将保存的现场依次进行恢复。

接收中断请求——中断判优——中断响应——中断处理——中断返回,的过程。

DMA方式

常见的设备:U盘、硬盘。
DMA方式,是为了在主存与外设之间实现高速、批量数据交换而设置的。DMA方式比程序控制方式与中断方式都高效。

DMA方式的具体控制方式是由DMA控制器,即DMAC来进行处理,CPU不需要参与,所以CPU的效率会更高。

在DMA方式中,DMAC会获取总线控制权,然后往下去执行。DMA方式,在传输之前是需要CPU进行预处理,传输之后,会用中断方式进行后面的处理,而具体的传输同样是不需要CPU参与的。

(DMAC向总线裁决逻辑提出总线请求;CPU执行当前总线周期即可释放总线控制权。此时DMA响应,通过DMAC通知I/O接口开始DMA传输。)

通道方式、I/O处理机

通道方式、I/O处理机,这两种方式,可以理解为纯硬件的方式。从硬件上看,I/O处理机会比通道方式的专用性会更强一点。

http://www.lryc.cn/news/15037.html

相关文章:

  • Linux 设置语言
  • Python基础-数据类型之集合
  • [Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)
  • 100种思维模型之启发式偏差思维模型-017
  • 微服务 feign远程调用时 显示服务不可用 timed-out and no fallback
  • 第一个Java程序(初识Java)
  • vulnhub LordOfTheRoot_1.0.1
  • MutationObserver与IntersectionObserver
  • 【ESP 保姆级教程】玩转巴法云篇② ——MQTT设备云,MQTT协议下的数据通信
  • 植物大战 仿函数——C++
  • 【C语言】浮点型数据在内存中的存储
  • impala中的刷新元数据和刷新表
  • Vscode创建vue项目的详细步骤
  • 如何在面试中介绍自己的项目,才能让软件测试面试官无可挑剔,
  • 虹科方案|从 uCPE 到成熟的边缘计算平台
  • 计算机是怎么读懂C语言的?
  • hadoop入门介绍及各组件功能运行关系
  • (HP)新手引导使用react-shepherd
  • 数据结构:栈和队列(Leetcode20. 有效的括号+225. 用队列实现栈+232. 用栈实现队列)
  • 22.2.19周赛双周赛(贪心、记忆化搜索...)
  • 2023最新软件测试面试题(带答案)
  • 【C++】类型转换方法
  • 100亿级订单怎么调度,来一个大厂的极品方案
  • C++性能白皮书
  • 华为OD机试 - 黑板上色 | 机试题算法思路 【2023】
  • 如何在六秒内吸引观众的注意力
  • FreeRTOS与UCOSIII任务状态对比
  • 小程序 npm sill idealTree buildDeps 安装一直没反应
  • GPT系列详解:初代GPT
  • 为什么要使用数据库