美文网首页
IO工作模式

IO工作模式

作者: SnailFast | 来源:发表于2019-05-07 11:19 被阅读0次

 ①查询方式:

           传统查询(串行),CPU踏步等待。

            轮询方式(局部并行),CPU以一定的周期按照次序去查询每一个外设,看它是否有数据输入或输出。

            就好像我们在网上买了东西,传统查询方式工作机制是:从付款开始后,我们就站在小区门口等待,一直到快递公司把货物送到手上,这个期间什么事情都不做。

           显然,传统查询太蠢,于是改进为轮询方式,工作机制是:从付款开始后,我们每隔一段时间(比如4小时),去小区门口查看一下,如果货物到了就拿取,没到的话继续回来做其他事情。

           比起传统查询,轮询方式的效率提高多了,但数据处理会有一定的延时。而且,程序轮询毕竟占据了CPU相当一部分处理时间,因此程序轮询是一种效率较低的方式。

  ②中断方式: 局部并行

           中断方式比起轮询来说,又改进了一步,工作机制是:从付款开始后,我们正常做其他事情,快递公司会主动给我们打电话(中断信号),报告货物已到,接到电话后我们暂停当前的工作,去小区门口领取货物,然后回来接着做剩余的工作。

           显然,日常生活中,大部分人使用的就是中断方式。

           在I/O设备中断方式下,中央处理器与I/O设备之间数据的传输步骤如下:

           ⑴在某个进程需要数据时,发出指令启动输入输出设备准备数据。

      ⑵在进程发出指令启动设备之后,该进程放弃处理器,等待相关I/O操作完成。此时,进程调度程序会调度其他就绪进程使用处理器。

      ⑶当I/O操作完成时,输入输出设备控制器通过中断请求线向处理器发出中断信号,处理器收到中断信号之后,转向预先设计好的中断处理程序,对数据传送工作进行相应的处理。

      ⑷得到了数据的进程,转入就绪状态。在随后的某个时刻,进程调度程序会选中该进程继续工作。

③ DMA方式:完全并行

          DMA是中断方式的更好改进,工作机制是:我们命令秘书去网上购买商品,同时让秘书负责商品的收取,整个过程基本上不需要自己参与,可以完全专注于当前工作。

           DMA工作过程:

     ⑴当进程要求设备输入数据时,CPU把准备存放输入数据的内存起始地址以及要传送的字节数分别送入DMA控制器中的内存地址寄存器和传送字节计数器。

     ⑵发出数据传输要求的进行进入等待状态。此时正在执行的CPU指令被暂时挂起。进程调度程序调度其他进程占据CPU。

     ⑶输入设备不断地窃取CPU工作周期,将数据缓冲寄存器中的数据源源不断地写入内存,直到所要求的字节全部传送完毕。

     ⑷DMA控制器在传送完所有字节时,通过中断请求线发出中断信号。CPU在接收到中断信号后,转入中断处理程序进行后续处理。

     ⑸中断处理结束后,CPU返回到被中断的进程中,或切换到新的进程上下文环境中,继续执行。

           DMA与中断的区别

      ⑴中断方式是在数据缓冲寄存器满之后发出中断,要求CPU进行中断处理,而DMA方式则是在所要求传送的数据块全部传送结束时要求CPU 进行中断处理。这就大大减少了CPU进行中断处理的次数。

      ⑵中断方式的数据传送是在中断处理时由CPU控制完成的,而DMA方式则是在DMA控制器的控制下,不经过CPU控制完成的。这就排除了CPU因并行设备过多而来不及处理以及因速度不匹配而造成数据丢失等现象。

            DMA方式的优缺点: 

           无论是传统查询,轮询,以及中断,都需要CPU自己完成额外工作。而DMA彻底解放了CPU与I/O通信的额外负担。DMA方式下CPU让出了总线(地址总线,数据总线,控制总线),暂时由DMA控制器来接管总线,控制器就能直接完成I/O设备与主存的数据交换。如果恰好CPU此时需要访问主存,那它不得不暂停一个存储周期(不是指令周期),导致CPU处理效率降低。如果只需要访问寄存器或者Cache,那CPU就不会有任何停顿。

④通道方式:加强版的DMA

           输入/输出通道是一个独立于CPU的,专门管理I/O的处理机。输入/输出通道控制是一种以内存为中心,实现设备和内存直接交换数据的控制方式。在通道方式中,数据的传送方向、存放数据的内存起始地址以及传送的数据块长度等都由通道来进行控制。另外,通道控制方式可以做到一个通道控制多台设备与内存进行数据交换。因而,通道方式进一步减轻了CPU的工作负担,增加了计算机系统的并行工作程度。

           输入/输出通道分类:

      ⑴字节多路通道,适用于连接打印机、终端等低速或中速的I/O设备。这种通道以字节为单位交叉工作:当为一台设备传送一个字节后,立即转去为另一它设备传送一个字节。

            ⑵选择通道,适用于连接磁盘、磁带等高速设备。这种通道以“组方式”工作,每次传送一批数据,传送速率很高,但在一段时间只能为一台设备服务。每当一个I/O请求处理完之后,就选择另一台设备并为其服务。

           ⑶成组多路通道,综合了字节多路通道分时工作和选择通道传输速率高的特点,其实质是:对通道程序采用多道程序设计技术,使得与通道连接的设备可以并行工作。

           通道的运算控制部件包括:

           ⑴通道地址字(CAW):记录下一条通道指令存放的地址,其功能类似于中央处理机的指令寄存器。

           ⑵通道命令字(CCW):记录正在执行的通道指令,其作用相当于中央处理机的指令寄存器。

           ⑶通道状态字(CSW):记录通道、控制器、设备的状态,包括I/O传输完成信息、出错信息、重复执行次数等。

           采用通道方式后,输入/输出的执行过程如下:

           ⑴CPU在执行用户程序时遇到I/O请求,根据用户的I/O请求生成通道程序(也可以是事先编好的)。放到内存中,并把该通道程序首地址放入CAW中。

           ⑵然后,CPU执行“启动I/O”指令,启动通道工作。通道接收“启动I/O”指令信号,从CAW中取出通道程序首地址,并根据此地址取出通道程序的第一条指令,放入CCW中;同时向CU发回答信号,通知“启动I/O”指令完成完毕,CPU可继续执行。

           ⑶通道开始执行通道程序,进行物理I/O操作。当执行完一条指令后,如果还有下一条指令则继续执行;否则表示传输完成,同时自行停止,通知CPU转去处理通道结束事件,并从CCW中得到有关通道状态。

           总之,在通道中,I/O运用专用的辅助处理器处理I/O操作,从而剪径了主处理器处理I/O的负担。主处理器只要发出一个I/O操作命令,剩下的工作完全由通道负责。I/O操作结束后,I/O通道会发出一个中断请求,表示相应操作已完成

相关文章

  • IO工作模式

    ①查询方式: 传统查询(串行),CPU踏步等待。 轮询方式(局部并行),CPU以一定的周期按...

  • Netty浅析

    IO模型 IO多路复用模式:Reactor、Proactor NIO实现的是Reactor模式。通过select、...

  • Reactor模式

    讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty、Redis在使用的IO模式,为什么需要...

  • tomcat的线程配置

    首先,这和tomcat的使用的IO模式有关 关于Java IO模式、以及IO处理的线程模型等基础的通信框架的知识,...

  • Stm32之GPIO工作模式

    GPIO的8种工作模式 GPIO初始化结构体的时候,必须要配置合适的工作模式,这样才能使得IO口发挥应有的作用。工...

  • GPIO

    基础知识 STM32F103RCT6有(16*3+3)个IO口,每个IO口有以下工作模式:(1) GPIO_Mod...

  • kube-proxy的3种模式

    userspace代理模式 iptables代理模式 IPVS代理模式 https://kubernetes.io...

  • Java NIO总结

    NIO是Java 1.4开始引入的,目的是替代标准IO,它采用了与标准IO完全不同的设计模式和工作方式,这里就来总...

  • java IO 的知识总结

    装饰者模式 因为java的IO是基于装饰者模式设计的,所以要了解掌握IO 必须要先清楚什么事装饰者模式(装饰者模式...

  • libevent是怎么选择底层实现的

    1. libevent到底使用哪种io模式来作为底层实现 libevent实际封装了很多IO复用模式,比如evpo...

网友评论

      本文标题:IO工作模式

      本文链接:https://www.haomeiwen.com/subject/kkqeoqtx.html