精华内容
下载资源
问答
  • 操作系统中的几种I/O控制方式

    万次阅读 多人点赞 2018-09-28 16:53:42
    按照I/O控制器功能的强弱以及和 CPU 之间联系方式的不同,可以把 I/O 设备的控制方式和通道控制方式分为四类:直接程序控制方式、中断驱动控制方式、直接存储器访问(DMA)控制方式和通道控制方式I/O控制方式发展...

    目录

    一、导读

    二、I/O控制方式

    1、直接程序控制方式

    2、中断驱动控制方式

    3.直接存储器访问控制方式

    4、通道控制方式

    三、参考文献

    关于我


    一、导读

    为了有效地实现物理I/O操作,必须通过硬件和软件技术,对 CPU 和 I/O 设备的职能进行合理的分工,以调节系统性能和硬件成本之间的矛盾。

    随着计算机技术的发展,I/O 控制方式也在不断发展。选择和衡量 I/O 控制方式有如下三条原则:

    (1) 数据传送速度足够快,能满足用户的需求但又不丢失数据;

    (2) 系统开销小,所需的处理控制程序少

    (3) 能充分发挥硬件资源的能力,使 I/O 设备尽可能忙,而 CPU 等待时间尽可能少。

    按照I/O控制器功能的强弱以及和 CPU 之间联系方式的不同,可以把 I/O 设备的控制方式和通道控制方式分为四类:直接程序控制方式、中断驱动控制方式、直接存储器访问(DMA)控制方式和通道控制方式。I/O控制方式发展的目标是尽量减少CPU对 I/O 控制的干预,把CPU从繁杂的 I/O 控制事务中解脱出来,以便更多地进行数据处理,提高计算机效率和资源的利用率。它们之间的主要差别在于 CPU 与外围设备并行工作的方式和程度不同。

    二、I/O控制方式

    1、直接程序控制方式

    直接程序控制方式由用户进程直接控制主存或 CPU 和外围设备之间的信息传送。直接程序控制方式又称为询问方式,或忙/等待方式。通过 I/O 指令或询问指令测试 I/O 设备的忙/闲标志位,决定主存与外围设备之间是否交换一个字符或一个字。

    直接程序控制方式流程图

    流程图概述直接程序控制方式的工作流程如下:

    ① 当用户进程需要输入数据时,通过 CPU 向控制器发出一条 I/O 指令,启动设备输入数据,同时把状态寄存器中的忙/闲状态 busy 置为1

    ② 用户进程进入测试等待状态,在等待过程中,CPU 不断地用一条测试指令检查外围设备状态寄存器中的 busy 位,而外围设备只有在数据传入控制器的数据寄存器之后,才将该 busy 位置为0,。

    ③ 处理器将数据寄存器中的数据取出,送入主存指定单元,完成一个字符的I/O操作,接着进行下一个数据的 I/O 操作

    直接程序控制方式虽然简单,不需要多少硬件的支持,但由于高速的 CPU 和低速的 I/O 设备之间的速度上不匹配,因此,CPU 与外围设备只能串行工作,使 CPU 的绝大部分时间都处于等待是否完成 I/O 操作的循环测试中,造成 CPU 的极大浪费,外围设备也不能得到合理的使用,整个系统的效率很低。因此,这种I/O控制方式只适合于 CPU 执行速度较慢,且外围设备较少的系统。

    2、中断驱动控制方式

    为了减少程序直接控制方式下 CPU 的等待时间以及提高系统的并行程度,系统引入了中断机制。中断机制引入后,外围设备仅当操作正常结束或异常结束时才向 CPU 发出中断请求。在 I/O 设备输入每个数据的过程中,由于无需 CPU 的干预,一定程度上实现了 CPU 与 I/O设备的并行工作。仅当输入或输出完一个数据时,才需 CPU 花费极短的时间做中断处理。

    中断驱动方式流程图

    存在的问题:由于I/O操作直接由 CPU 控制,每传送一个字符或一个字,都要发生一次中断,仍然占用了大量的 CPU 处理时间,因此可以通过为外围设备增加缓冲寄存器存放数据来减少中断次数。

    上述两种方法的特点都是以 CPU 为中心,数据传送通过一段程序来实现,软件的传送手段限制了数据传送的速度。接下来介绍的这两种I/O 控制方式采用硬件的方法来显示 I/O 的控制

    3.直接存储器访问控制方式

    直接存储器访问控制方式又称 DMA(Direct Memory Access)方式。为了进一步减少 CPU 对 I/O 操作的干预,防止因并行操作设备过多使 CPU 来不及处理或因速度不匹配而造成的数据丢失现象,引入了 DMA 控制方式。在 DMA 控制器的控制下,采用窃取或挪用总线控制权,在设备和主存之间开辟直接数据交换通道,成批地交换数据,而不必让 CPU 干预。

    DMA方式的特点:

    ① 数据传送以数据块为基本单位

    ② 所传送的数据从设备直接送入主存,或者从主存直接输出到设备上

    ③ 仅在传送一个或多个数据块的开始和结束时才需 CPU 的干预,而整块数据的传送则是在控制器的控制下完成。

    DMA方式和中断驱动控制方式相比,减少了 CPU 对 I/O 操作的干预,进一步提高了 CPU 与 I/O 设备的并行操作程度。

    DMA方式的线路简单、价格低廉,适合高速设备与主存之间的成批数据传送,小型、微型机中的快速设备均采用这种方式,但其功能较差,不能满足复杂的 I/O 要求。

    4、通道控制方式

    通道,独立于 CPU 的专门负责输入输出控制的处理机,它控制设备与内存直接进行数据交换。有自己的通道指令,这些指令由 CPU 启动,并在操作结束时向 CPU 发出中断信号。

    直接程序控制方式和中断程序控制方式适合于低速设备的数据传送,而 DMA 方式虽然适合于高速设备的数据传送,但一个 DMA 控制器只能控制少量的同类设备,这远远不能满足大型计算机系统的需要。通常,一个大型计算机需要连接大量的高速和低速设备,通道控制方式可以满足这个要求。(DMA和通道控制方式的主要区别——能否满足大型计算机系统的既能处理高速设备又能处理低速设备的需要)

    通道控制方式,实现了CPU、通道和I/O设备三者的并行操作,从而更加有效地提高整个系统的资源利用率。例如,当 CPU 要完成一组相关的读(或写)操作时,只需要向 I/O 通道发出一条 I/O 指令,指出其所要执行的通道程序的首址和要访问的I/O设备,通道接收到该指令后,通过执行通道程序便可完成 CPU 指定的 I/O 任务。可见,通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。

    三、参考文献

    《操作系统教程》机械工业出版社 谢旭升 朱明华 张练兴 李宏伟 编著

    关于我

    微信公众号:Guevara的笔记,技术菜鸟记录技术学习过程。

    微信公众号:Guevara的笔记

     

    展开全文
  • 操作系统I/O控制方式详解

    千次阅读 2020-06-02 19:47:14
    操作系统I/O控制方式详解一、导读二、I/O控制方式1、直接程序控制方式2、中断驱动控制方式3.直接存储器访问(DMA)控制方式4、通道控制方式I/O控制方式有几种?分别适用何种场合? 一、导读 为了有效地实现物理I/O操作...

    一、导读

    为了有效地实现物理I/O操作,必须通过硬件和软件技术,对 CPU 和 I/O 设备的职能进行合理的分工,以调节系统性能和硬件成本之间的矛盾。
    随着计算机技术的发展,I/O 控制方式也在不断发展。选择和衡量 I/O 控制方式有如下三条原则:

    • 数据传送速度足够快,能满足用户的需求但又不丢失数据;
    • 系统开销小,所需的处理控制程序少
    • 能充分发挥硬件资源的能力,使 I/O 设备尽可能忙,而 CPU 等待时间尽可能少。

    按照I/O控制器功能的强弱以及和 CPU 之间联系方式的不同,可以把 I/O 设备的控制方式和通道控制方式分为四类:直接程序控制方式、中断驱动控制方式、直接存储器访问(DMA)控制方式和通道控制方式。I/O控制方式发展的目标是尽量减少CPU对 I/O 控制的干预,把CPU从繁杂的 I/O 控制事务中解脱出来,以便更多地进行数据处理,提高计算机效率和资源的利用率。 它们之间的主要差别在于 CPU 与外围设备并行工作的方式和程度不同。

    二、I/O控制方式

    1、直接程序控制方式

    直接程序控制方式由用户进程直接控制主存或 CPU 和外围设备之间的信息传送。直接程序控制方式又称为询问方式,或忙/等待方式。通过 I/O 指令或询问指令测试 I/O 设备的忙/闲标志位,决定主存与外围设备之间是否交换一个字符或一个字。
    在这里插入图片描述

    流程图概述直接程序控制方式的工作流程如下:

    ① 当用户进程需要输入数据时,通过 CPU 向控制器发出一条 I/O 指令,启动设备输入数据,同时把状态寄存器中的忙/闲状态 busy 置为1
    ② 用户进程进入测试等待状态,在等待过程中,CPU 不断地用一条测试指令检查外围设备状态寄存器中的 busy 位,而外围设备只有在数据传入控制器的数据寄存器之后,才将该 busy 位置为0,。
    ③ 处理器将数据寄存器中的数据取出,送入主存指定单元,完成一个字符的I/O操作,接着进行下一个数据的 I/O 操作

    直接程序控制方式虽然简单,不需要多少硬件的支持,但由于高速的 CPU 和低速的 I/O 设备之间的速度上不匹配,因此,CPU 与外围设备只能串行工作,使 CPU 的绝大部分时间都处于等待是否完成 I/O 操作的循环测试中,造成 CPU 的极大浪费,外围设备也不能得到合理的使用,整个系统的效率很低。因此,这种I/O控制方式只适合于 CPU 执行速度较慢,且外围设备较少的系统。

    2、中断驱动控制方式

    为了减少程序直接控制方式下 CPU 的等待时间以及提高系统的并行程度,系统引入了中断机制。中断机制引入后,外围设备仅当操作正常结束或异常结束时才向 CPU 发出中断请求。在 I/O 设备输入每个数据的过程中,由于无需 CPU 的干预,一定程度上实现了 CPU 与 I/O设备的并行工作。仅当输入或输出完一个数据时,才需 CPU 花费极短的时间做中断处理。

    在这里插入图片描述
    在这里插入图片描述
    存在的问题:由于I/O操作直接由 CPU 控制,每传送一个字符或一个字,都要发生一次中断,仍然占用了大量的 CPU 处理时间,因此可以通过为外围设备增加缓冲寄存器存放数据来减少中断次数。

    上述两种方法的特点都是以 CPU 为中心,数据传送通过一段程序来实现,软件的传送手段限制了数据传送的速度。接下来介绍的这两种I/O 控制方式采用硬件的方法来显示 I/O 的控制

    3.直接存储器访问(DMA)控制方式

    直接存储器访问控制方式又称 DMA(Direct Memory Access)方式。为了进一步减少 CPU 对 I/O 操作的干预,防止因并行操作设备过多使 CPU 来不及处理或因速度不匹配而造成的数据丢失现象,引入了 DMA 控制方式。在 DMA 控制器的控制下,采用窃取或挪用总线控制权,在设备和主存之间开辟直接数据交换通道,成批地交换数据,而不必让 CPU 干预。
    DMA控制器的组成及作用:
    在这里插入图片描述

    控制/状态寄存器(CR):主要存放一些控制信息和系统的状态信息,如启动位、中断位、busy位。
    数据缓冲寄存器(DR):存放要输入输出的数据,起中间缓存的作用。
    传送字节计数器(DC):存放本次要进行IO操作的字节个数。
    内存地址寄存器(MAR):存放内存中缓冲区的起始地址。因为在进行IO操作时,设备总是与内存中的某个缓冲区直接打交道。
    

    DMA传送过程

    (1)DMA传送前预处理: (CPU完成)

    • 测试设备状态
    • CPU初始化DMA控制器:
    主存缓冲区首址 → MAR;
    传送数据字节数 → DC;
    设置传输方式(DMA的传输有多种方式,如以字符为单位或者以数据块为单位申请总线的使用权)
    
    • 启动设备。
      (2)DMA控制器控制完成设备与主存间的数据传送

    • 磁盘控制器将整块数据从磁盘读入DMA控制器的DR中;

    • 磁盘控制器校验读入的数据;

    • 磁盘控制器向DMA控制器发DMA请求

    • DMA控制器向CPU请求总线周期,获得总线控制器权后:
      在这里插入图片描述
      在这里插入图片描述
      (3)CPU响应中断进行后处理:(CPU完成)
      在这里插入图片描述
      DMA方式的特点:

    ① 数据传送以数据块为基本单位
    ② 所传送的数据从设备直接送入主存,或者从主存直接输出到设备上
    ③ 仅在传送一个或多个数据块的开始和结束时才需 CPU 的干预,而整块数据的传送则是在控制器的控制下完成。

    DMA方式和中断驱动控制方式相比,减少了 CPU 对 I/O 操作的干预,进一步提高了 CPU 与 I/O 设备的并行操作程度。
    DMA方式的线路简单、价格低廉,适合高速设备与主存之间的成批数据传送,小型、微型机中的快速设备均采用这种方式,但其功能较差,不能满足复杂的 I/O 要求。

    4、通道控制方式

    通道,独立于 CPU 的专门负责输入输出控制的处理机,它控制设备与内存直接进行数据交换。有自己的通道指令,这些指令由 CPU 启动,并在操作结束时向 CPU 发出中断信号。

    通道控制方式是一种以内存为中心,实现设备和内存间直接交换数据的控制方式。 也是传输速率比较高的IO控制方式。

    通道的运算控制部件

    通道地址字(CAW):记录下一条通道指令的地址,其功能类似于中央处理机的指令计数器。
    通道命令字(CCW):记录正在执行的通道指令,其作用相当于中央处理机的指令寄存器。
    通道状态字(CSW):记录通道、控制器、设备的状态,包括I/O传输完成信息、出错信息、重复执行次数等。当IO操作完成后,CPU通过读取通道状态字的值来了解IO操作的执行情况。
    

    通道程序:保存在主存中

    通道通过执行一个通道程序来完成IO控制的。通道虽然是一种处理机,但是它本身没有内存,是与主机CPU共享系统的主存。所以通道程序是存放在主存中的。一个通道程序由一系列通道指令构成。 通道指令内容如下:

    操作码:规定指令所执行的操作。
    内存地址:内存缓冲区首址。
    计数:本条指令要读写的字节数。
    通道程序结束位P:P=1表示本条指令是通道程序最后一条指令。
    记录结束标志R:R=0表示本条指令与下一条指令所处理的数据属同一条记录。
    

    如下是一个简答的通道程序往磁盘上写一组数据,最后一个指令的P位为1,表示这个该通道程序的最后一条指令。
    在这里插入图片描述
    I/O控制过程
    在这里插入图片描述
    在这里插入图片描述
    通道控制方式,实现了CPU、通道和I/O设备三者的并行操作,从而更加有效地提高整个系统的资源利用率。例如,当 CPU 要完成一组相关的读(或写)操作时,只需要向 I/O 通道发出一条 I/O 指令,指出其所要执行的通道程序的首址和要访问的I/O设备,通道接收到该指令后,通过执行通道程序便可完成 CPU 指定的 I/O 任务。可见,通道只是在 I/O 操作的起始和结束时向 CPU 发出 I/O 中断申请,相对于之前的控制方式进一步减少了 CPU 的干预程度。

    在这里插入图片描述

    I/O控制方式有几种?分别适用何种场合?

    程序控制方式

    原理:程序直接控制主机和外部设备之间的io操作,程序必须不停探测io端口的状态。
    cpu与io串行工作
    

    中断控制方式

    原理:cpu处理自己的事情,收到中断请求之后,转过去处理中断,结束之后回到原来的位置继续处理自己的事情。
    cpu与io并行工作(宏观上的)
    

    DMA方式

    cpu和io之间通过DMA控制器直接进行数据交换,DMA控制器获得总线控制权,无需cpu干预。
    并行
    

    通道控制方式

    也是一个处理器,实现io与cpu的直接数据交换,与DMA不同的是一个通道可以控制多个io设备。
    并行
    

    1.直接程序控制方式:只适合于CPU执行速度较慢,且外围设备较少的系统。
    2.中断驱动控制方式:可以成倍地提高CPU的利用率,并且能支持多道程序和设备的并行操作。但是由于I/O操作直接由CPU控制,每传送一个字符或一个字,都要发生一次中断,仍然占用了大量的CPU处理时间,因此可以通过为外围设备增加缓冲器存放数据来减少中断次数。
    3.DMA直接存储器访问控制方式:线路简单,价格低廉,适合高速设备与主存之间的成批数据传送,小型,微型机中的快速设备均采用这种方式,但其功能较差,不能满足复杂的I/O要求。
    4.通道控制方式:适用于大型计算机需要连接大量的高速和低速设备。

    参考:知乎:设备管理:IO控制

    王道考研:这个就不说了,感觉单纯应对考研知识的话王道真的很不错了。

    展开全文
  • 一、I/O控制方式的分类? 1.程序I/O控制方式 2.中断驱动I/O控制方式 3.直接存储器访问DMA控制方式 4.I/O通道控制方式 二、四种I/O控制方式的优缺点及适用场景 1.程序I/O控制方式 (1)优点 控制...

    一、I/O控制方式的分类?

    1.程序I/O控制方式
    2.中断驱动I/O控制方式
    3.直接存储器访问DMA控制方式
    4.I/O通道控制方式

    二、四种I/O控制方式的优缺点及适用场景

    1.程序I/O控制方式

    (1)优点

    控制简单,不需要多硬件支持

    (2)缺点

    CPU利用率低
    不能实现设备间的并行工作
    无法发现和处理产生的错误

    (3)适用场景

    适用于结构简单,只需少量硬件的电路

    2.中断驱动I/O控制方式

    (1)优点

    可以实现CPU与设备间的并行操作
    可以实现设备与设备间的并行操作
    CPU利用率高

    (2)缺点

    中断次数多
    耗费CPU的时间
    容易造成数据丢失

    (3)适用场景

    适用于高效场合

    3.直接存储器访问DMA控制方式

    (1)优点

    减少了CPU中断的处理次数
    数据传输过程中不需要CPU干预

    (2)缺点

    有一定的局限

    (3)适用场景

    不需要CPU干预介入的控制器来控制内存与外设之间的数据交流的场合

    4.I/O通道控制方式

    (1)优点

    一个通道可以控制多台外设,且与CPU并行工作时间最长

    (2)缺点

    价格较高,不宜过多使用

    (3)适用场景

    适用于以字节为单位的干预,同时实现CPU、通道和I/O设备三者并行操作的场合

    展开全文
  • 因为高级语言对 I/O 操作的封装基于操作系统提供的系统函数,而这些系统函数的调用方式又与其硬件层的结构与工作机制息息相关,所以想要彻底搞懂 I/O 操作的那些函数,必须对其基于的底层设备的工作方式有一定的了解...

    转载自https://www.cnblogs.com/niuyourou/p/12588407.html
    作为个人学习使用,如果侵权请联系我删除

    I/O 设备是计算机的重要组成部分,介于处理器与 I/O 设备交互的复杂性,I/O 操作一直是高级语言开发者比较难掌握的一个技术点。

    因为高级语言对 I/O 操作的封装基于操作系统提供的系统函数,而这些系统函数的调用方式又与其硬件层的结构与工作机制息息相关,所以想要彻底搞懂 I/O 操作的那些函数,必须对其基于的底层设备的工作方式有一定的了解。下面我们看一下 I/O 操作演变的过程。

    1. 轮询方式的 I/O 操作

    对I/O设备的程序轮询的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。尽管轮询需要时间,但轮询不比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题,I/O操作的时效性是可以保证的。但是处理器的速度再快,能处理的输入输出设备的数量也是有一定限度的。而且,程序轮询会占据CPU相当一部分处理时间,因此程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用。

    2. 中断方式的 I/O 操作

    处理器与 I/O 设备间几个数量级的速度差异是 I/O 操作中存在的重要矛盾,是设备管理要解决的一个重要问题。为了提高整体效率,减少在程序直接控制 I/O 设备与处理器进行数据交互是很必要的。在I/O设备中断方式下,中央处理器与I/O设备之间数据的传输步骤如下:

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

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

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

    ⑷数据准备完成后,OS将阻塞的进程唤醒,将其转入就绪状态。在随后的某个时刻,进程调度程序会选中该进程继续工作。

    中断方式的优缺点

    I/O设备中断方式使处理器的利用率提高,且能支持多道程序和I/O设备的并行操作。

    不过,中断方式仍然存在一些问题。首先,现代计算机系统通常配置有各种各样的输入输出设备。如果这些I/O设备都同过中断处理方式进行并行操作,那么中断次数的急剧增加会造成CPU无法响应中断和出现数据丢失现象。

    其次,如果I/O控制器的数据缓冲区比较小,在缓冲区装满数据之后将会发生中断。那么,在数据传送过程中,发生中断的机会较多,这将耗去大量的CPU处理时间。

    这里为了与下一种 I/O 方式进行区分,我们再说一下 I/O 设备的工作方式。我们先来了解一个硬件设备,设备控制器。

    2.1 设备控制器

    设备控制器是计算机中的一个实体,其主要职责是控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。它是CPU与I/O设备之间的接口,它接收从CPU发来的命令,并去控制I/O设备工作,以使处理机从繁杂的设备控制事务中解脱出来。设备控制器是一个可编址的设备,当它仅控制一个设备时,它只有一个唯一的设备地址;若控制可连接多个设备时,则应含有多个设备地址,并使每一个设备地址对应一个设备。设备控制器有许多职责,我们只说与本次讲解相关的职责,即数据交换。

    数据交换是指CPU与控制器之间、控制器与设备之间的数据交换。对于前者,是通过数据总线,由CPU并行地把数据写入控制器,或从控制器中并行地读出数据;对于后者,是设备将数据输入到控制器,或从控制器传送给设备。为此,在控制器中须设置数据寄存器。

    我们上面所说的中断,便是设备控制器向处理器发出的中断,可以想象数据交互的过程:

    1. 处理器需要磁盘上的 100M 数据,于是向磁盘处理器发出读取指令,然后进程阻塞,等待数据准备完毕。

    2. 磁盘处理器接收到读取指令,执行寻道/寻址等磁盘操作找到目标数据,将数据读取到磁盘处理器的寄存器中。假设寄存器容量为 1M ,等待寄存器读满后向 CPU 发出中断。

    3. CPU 接收到中断信号,唤醒进程执行数据读取指令,将数据从磁盘控制器的寄存器读取到内存。等待读取完成,没有数据可读取,继续进入阻塞状态。

    4. 磁盘控制器再次将磁盘中的数据读取到寄存器,又是 1M ,再次向 CPU 发送中断。循环往复,直到将 10 M 数据读取完成。

    可以看到,总体的优化思路是通过中断机制,将设备控制器从设备中读取数据到寄存器的时间节省了出来,CPU 不会繁忙等待在这段时间上,可以去做其它有意义的事情。别说,这个思路与锁的实现很相似,是繁忙等待到非繁忙等待的优化,避免了 CPU 的无效运算。

    但是缺点刚刚也讲述的很清楚,频繁的中断会加大 CPU 的压力,尤其是一些设备控制器的寄存器比较小的情况下,一次 I/O 操作中进行中断的频率非常高。另外将数据由设备处理器读取到内核缓冲区的过程 CPU 是全程干预,一个字节一个字节进行读写的,这些操作并没有什么复杂的逻辑,由 CPU 直接处理显得有些浪费资源。

    3. DMA 方式的I/O 操作

    直接内存存取技术是指,数据在内存与I/O设备间直接进行成块传输。该技术基于 DMA 设备,将 CPU 从简单的数据传输工作中解放了出来。

    DMA有两个技术特征,首先是直接传送,其次是块传送。所谓直接传送,即在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何中间干涉,只需要CPU在过程开始时向设备发出“传送块数据”的命令,然后通过中断来得知过程是否结束和下次操作是否准备就绪,当然这里的中断是 DMA 设备向 CPU 发出的而不是设备控制器。

    DMA工作过程:

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

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

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

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

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

    DMA与中断的区别

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

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

    DMA方式的优缺点

    在DMA方式中,由于I/O设备直接同内存发生成块的数据交换,因此I/O效率比较高。由于DMA技术可以提高I/O效率,因此在现代计算机系统中,得到了广泛的应用。许多输入输出设备的控制器,特别是块设备的控制器,都支持DMA方式。

    通过上述分析可以看出,DMA控制器功能的强弱,是决定DMA效率的关键因素。DMA控制器需要为每次数据传送做大量的工作,数据传送单位的增大意味着传送次数的减少。另外,DMA方式窃取了时钟周期,因为其占据了访问内存的数据总线,CPU处理效率降低了,要想尽量少地窃取始终周期,就要设法提高DMA控制器的性能,这样可以较少地影响CPU处理效率。

    总的来说 DMA 是一种比较令人满意的处理方式,通过 DMA 设备的引入将 CPU 从繁重的 I/O 操作中解放了出来。CPU 只需要发送读取请求和获得处理结果,而不需要关注 I/O 操作的具体传输过程。

    4. 通道方式的 I/O

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

    按照信息交换方式和所连接的设备种类不同,通道可以分为以下三种类型:

    ⑴字节多路通道

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

    ⑵选择通道

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

    ⑶成组多路通道

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

    在通道控制方式中,I/O设备控制器(常简称为I/O控制器)中没有传送字节计数器和内存地址寄存器,但多了通道设备控制器和指令执行部件。CPU只需发出启动指令,指出通道相应的操作和I/O设备,该指令就可启动通道并使该通道从内存中调出相应的通道指令执行。一旦CPU发出启动通道的指令,通道就开始工作。I/O通道控制I/O控制器工作,I/O控制器又控制I/O设备。这样,一个通道可以连接多个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通道会发出一个中断请求,表示相应操作已完成。

    通道的思想是从早期的大型计算机系统中发展起来的。在早期的大型计算机系统中,一般配有大量的I/O设备。为了把对I/O设备的管理从计算机主机中分离出来,形成了I/O通道的概念,并专门设计出I/O通道处理机。I/O通道在计算机系统中是一个非常重要的部件,它对系统整体性能的提高起了相当重要的作用。不过,随着技术不断的发展,处理机和I/O设备性能的不断提高,专用的、独立I/O通道处理机已不容易见到。但是通道的思想又融入了许多新的技术,所以仍在广泛地应用着。由于光纤通道技术具有数据传

    输速率高、数据传输距离远以及可简化大型存储系统设计的优点,新的通用光纤通道技术正在快速发展。这种通用光纤通道可以在一个通道上容纳多达127个的大容量硬盘驱动器。显然,在大容量高速存储应用领域,通用光纤通道有着广泛的应用前景。

    对于前三种 I/O 交互方式来说,特点如下:

    1. 都需要 CPU 的介入:轮询方式需要 CPU 完全介入;中断方式需要 CPU 完全介入,但 CPU 在此期间进行非繁忙等待,可以做其它事情;DMA 方式需要 CPU 在传输开始和结束时介入。

    2. 需要的硬件支持:轮询方式只需要最基本的处理器即可;中断方式需要增加中断控制器;DMA 方式需要 DMA 处理器和中断控制器。

    这三种方式适合外设不太多的小型机,对于 I/O 设备多,输入输出繁杂的系统,占用 CPU 时间太多,硬件接口太复杂。通道技术使得 CPU 可以在有限的 I/O 指令下管理众多的外部设备,代替 CPU 控制和管理外设。

    CPU 和 I/O 设备之间增加了设备控制器后 已经可以大大减少CPU 对 I/O 的干涉 ,使得CPU 从繁多的io处理中解脱出来,但是当主机所配置的外设备很多时,CPU 负担还很重,为此 CPU 和设备管理器之间又加入了 I/O 通道 其主要目的是为了建立独立的io操作,不仅使得数据的传送独立于 CPU ,还希望有关 I/O 设备的组织/管理以及结束处理尽量独立,简单一点地说就是找出一种东西可以有简单的数据处理能力来分担 CPU 的任务,使得 CPU 专门来处理那些高级的数据 ,这些的简单的数据的处理就交给这个东西来处理这个东西就是 I/O 通道 ,I/O 通道属于硬件但是有执行简单指令的能力。DMA 控制器也是类似的硬件设备,但 DMA 控制器没有专门的处理器,虽然DMA 无需 CPU 进行外设与内存的数据交换工作,但是这只是减少了 CPU 的负担。因而DMA 中,输入输出的初始化仍然要由 CPU 来完成。

    DMA的好处在于将CPU中断从每个字符中断减少为每个缓冲区中断,从而如果输出字符很多时,能带来可观的性能提升。另一方面,DMA 控制器往往比CPU慢很多,如果DMA 控制器不能全速驱动输出设备或者当等待DMA时CPU经常无其他任务可做,那么Interrupt-Driven I/O或Programmed I/O可能更好。但是,大多数情况下,DMA都是更好的。通道有自己的指令系统,是一个协处理器,一般用在大型计算机系统中(不是大型机)。通道实质是一台能够执行有限的输入输出指令,并能被多台外设共享的小型 DMA 专用处理机。广义上讲,DMA也属于通道。那么 DMA 于 通道相比:

    共同点:都能实现IO设备和内存之间建立数据直传通路;

    不同点:

    1. DMA只能实现固定的数据传送控制,而通道有自己的指令和程序,具有更强的独立处理数据输入和输出的能力。

    2. DMA只能控制一台或者少数几台同类设备,而一个通道可以控制多台同类或者不同的设备。

    展开全文
  • 常见的I/O控制方式

    千次阅读 2017-04-25 17:53:12
    (1)程序直接访问方式跟循环检测IO方式,应该是一个意思吧,是最古老的方式。...(2)中断控制方式:循环检测先进些,IO设备和CPU可以并行工作,只有在开始IO和结束IO时,才需要CPU。但每次只能读
  • c++ I/O流的常用控制符 C++常用特殊字符 便于查找 很方便的小文档
  • I/O设备和CPU之间数据传送控制方式

    千次阅读 2020-03-10 11:21:01
    常用I/O设备和CPU之间数据传送控制方式有4种,分别为程序直接控制方式、中断控制方式、DMA方式和通道方式。 程序直接控制方式和中断控制方式都只适用于简单的、外设很少的计算机系统,因为程序直接控制方式耗费...
  • I/O设备与主机信息传送的控制方式

    千次阅读 2019-05-12 20:20:23
    I/O设备与主机信息传送的控制方式: 1.程序查询方式 2.程序中断方式 3.DMA方式 1.程序查询方式 2.程序中断方式 3.DMA方式 ...
  • 由CPU通过程序不断查询I/O设备是否准备就绪,从而控制I/O设备与主机交换信息。采用这种这种方式实现主机与I/O设备交换信息,要求I/O接口类设置一个能反映I/O设备是否准备就绪的状态标记,CPU通过对此标记的检测,可...
  • C++ I/O常用控制

    千次阅读 2017-01-20 19:46:51
    I/O常用控制符: dec 置基数为10 相当于”%d” hex 置基数为16 相当于”%X” oct 置基数为8 相当于”%o” setfill(c) 设填充字符为c setprecision(n) 设显示小数精度为n位 setw(n) 设域宽为n个字符 ...
  • 文件I/O和标准I/O的区别

    万次阅读 多人点赞 2016-01-01 10:12:41
    一、先来了解下什么是文件I/O和标准I/O: 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO服务...
  • 底层文件I/O和ANSI标准I/O的区别

    千次阅读 2016-11-21 20:45:08
    一、先来了解下什么是文件I/O和标准I/O: 文件I/O:文件I/O称之为不带缓存的IO(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O——操作系统提供的基本IO...
  • CPU启动I/O后,时刻查询I/O是否准备好,若设备准备就绪,CPU便转入处理I/O与主机间传送信息的程序;若设备未做好准备,则CPU反复查询,直到I/O准备就绪为止。可见这种方式CPU效率很低 (2)程序中断方式。其特点是...
  • python 协程详解及I/O多路复用,I/O异步

    万次阅读 多人点赞 2018-08-04 18:24:11
    上文介绍了python网络编程的进程线程...既然在GIL之下,同一时刻只能有一个线程在运行,那么对于CPU密集的程序来说,线程之间的切换开销就成了拖累,而以I/O为瓶颈的程序正是协程所擅长的: 多任务并发(非并行),...
  • *程序查询方式:*由CPU通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。 接口和DMA阶段 CPU和I/O并行工作,总线并行工作,总线连接 *中断方式:*只在I/O设备准备就绪并向CPU发出中断...
  • 变位机是机器人工作站中常用的外围设备,机器人变位机的控制方式有两种:一、作为机器人的外部轴,由机器人控制器进行运行控制,这种控制方式变位机可以与机器人进行联动实现直线插补或圆弧插补运行,这种作为机器人...
  • 概述Java内部将字符(字符类型)存储在16位UCS-2字符集中。 但外部数据源/接收器可以将字符存储在其他...因此,Java必须区分用于处理8位原始字节的基于字节的I / O和用于处理文本的基于字符的I / O。字符流需要在外部I
  • Pandas常用I/O(一)------read_csv(),read_table()

    万次阅读 多人点赞 2018-07-14 21:25:29
    一、Pandas的读取数据和文件...实质上是通用的,在实际使用中可以通过对sep参数的控制来对任何文本文件读取。 1、参数说明 2、实例: 文本内容为: (1)该文本中的分割符既有空格又有制表符(‘/t’),sep...
  • 【建议收藏】 计算机组成原理—DMA、中断控制I/O之间的联系与区别 本篇文章主要是记录我对于计算机组成原理中所遇到的一些...I/O设备与主机交换信息的几种控制方式 程序查询方式 DMA方式 I/O通道方式 中断查询方式
  • 与文件I/O围绕文件描述符操作不同,标准I/O的操作是围绕
  • I/O接口标准

    千次阅读 2018-08-08 11:18:25
    I/O接口标准 1.单端信号接口标准 LVTTL和LVCMOS(JESD8-5,JESD8-B) SSTL(JESD8-8,JESD8-9B,JESD8-15) HSTL(JESD8-6) LVTTL和LVCMOS结构通常是简单的push-pull。最简单的例子就是CMOS反向器,需要...
  • I/O作为应用系统常用的功能之一,对其有基本的理解是非常有必要的。尤其是在SOA盛行的今天,高效率的I/O是SOA的基础设施RPC框架的基石。本文将针对I/O领域中常见的两组分类:同步与异步,阻塞与非阻塞进行浅析。 I/...
  • 《操作系统》总结五(I/O管理)

    千次阅读 2015-10-04 23:07:36
    I/O管理概述(I/O控制方式I/O软件层次结构)和I/O核心子系统(I/O调度概念、局速缓存与缓冲区、设备分配与回收、假脱机技术(SPOOLing))。 5.1 I/O设备及其分类 I/O设备管理是操作系统设计中最凌乱也最具挑战性的...
  • 操作系统:I/O

    千次阅读 2016-06-21 09:21:46
    操作系统:I/O 参考 http://blog.csdn.net/bigpudding24/article/details/48901473 1 I/O设备及其分类​ I/O设备管理是操作系统设计中最凌乱也最具挑战性的部分。由于它包含了很多领域的不同设备以及与设备相关...
  • Java I/O体系从原理到应用,这一篇全说清楚了

    万次阅读 多人点赞 2019-11-13 19:43:53
    本文介绍操作系统I/O工作原理,Java I/O设计,基本使用,开源项目中实现高性能I/O常见方法和实现,彻底搞懂高性能I/O之道基础概念在介绍I/O原理之前,先重温几个...
  • 内存与I/O访问

    千次阅读 2012-04-06 11:20:57
    本章节带大家一起来探讨一下Linux驱动中的内存与I/O访问 CPU与内核和I/O I/O空间:在X86处理器中存在着I/O空间的概念,I/O空间是相...注意:目前大多数嵌入式微控制例如ARM、PowerPC等不提供I/O空间,而仅存在内
  • 深入理解 java I/O

    千次阅读 2012-11-29 17:35:39
    I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能瓶颈。正因如此,...
  • FPGA基础:I/O管脚

    千次阅读 2019-01-09 20:40:41
    管脚是FPGA重要的资源之一,FPGA的管脚分别包括,电源管脚,普通I/O,配置管脚,时钟专用输入管脚GCLK等。 本文引用地址:http://www.eepw.com.cn/article/266429.htm    (1)电源管脚: 通常来说: FPGA内部的电压...
  • C++文件输入输出流及标准I/O流类知识总结

    万次阅读 多人点赞 2018-10-13 23:42:06
    在学习使用C++进行STL模型文件的读写与显示时,遇到了一些文件读取的问题,在网上找了很多资料,有些写的比较模糊,自己也遇到了很多坑,在参考以前大神的资料基础上,C++文件流及I/O流相关知识进行了一些总结。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 249,508
精华内容 99,803
关键字:

常用的i/o控制方式