I / O 控制方式

         设备管理的主要任务之一是控制设备和内存或处理机之间的数据传送。外围设备和内存之间的输入 / 输出控制方式有四种,下面分别介绍:

         1.程序直接控制方式

             计算机从外部设备读取数据到存储器,每次读到一个字的数据。对读入的每个字,CPU 需要对外设状态进行循环检查,直到确定该字已经在 I / O 控制器的

          数据寄存器中。在程序直接控制方式中,由于 CPU 的高速性和 I / O 设备的低速性,致使CPU 的绝大部分时间都处于等待 I / O 设备完成数据 I / O 的循环测试

          中,造成了CPU 资源的极大浪费。在该方式中,CPU 之所以要不断地测试 I / O 设备的状态,就是因为在 CPU 中没有采用中断机构,使 I / O 设备无法向 

          CPU 报告它已完成了一个字符的输入操作。

             程序直接控制方式虽然简单易于实现,但是缺点也是显而易见的,由于 CPU 和 I / O 设备只能串行工作,导致 CPU 的利用率相当低。

         2.中断驱动方式

              中断驱动方式的思想是,允许 I / O 设备主动打断 CPU 的运行并请求服务,从而“解放”CPU ,使得其向 I / O 控制器发送读命令后可以继续做其他有用的工作。

           我们从 I / O 控制器和 CPU 两个角度分别来看中断驱动方式的工作过程:

              从 I / O 控制器的角度来看,I / O 控制器从 CPU 接收一个读命令,然后从外围设备读数据。一旦数据读入到 I / O 控制器的数据寄存器,便通过控制线给CPU 

           发出一个中断信号,表示数据已准备好,然后等待 CPU 请求该数据。I / O 控制器收到 CPU 发出的取数据请求后,将数据放到数据总线上,传到 CPU 的寄存器

          中。至此,本次 I / O 操作完成, I / O 控制器又可开始下一次 I / O 操作。

              从CPU 的角度来看,CPU 发出读命令,然后保存当前运行程序的上下文(现场,包括程序计数器及处理机寄存器),转去执行其他程序。在每个指令周期的

          末尾,CPU 检查中断。当有来 I / O 控制器的中断时,CPU 保存当前运行程序的上下文,转去执行中断处理程序处理该中断。这时,CPU 从 I / O 控制器读写一个

          字的数据传送到寄存器,并存入主存。接着,CPU 恢复发出 I / O 命令的程序(或其他程序)的上下文,然后继续执行。

               中断驱动方式比程序直接控制方式有效,但由于数据中的每个字在存储器和 I / O 控制器之间的传输都必须经过 CPU ,这就导致了中断驱动方式仍然会消耗较多

          的CPU 时间。

         3.DMA方式

           在中断驱动方式中, I / O设备与内存之间的数据交换必须要经过  CPU  中的寄存器,所以速度还是受限,而DMA (直接存储器存取)方式的基本思想是在 I / O 设备

          和内存之间开辟直接的数据交换通路,彻底“解放”CPU 。DMA 方式的特点是:

           (1)基本单位是数据块

           (2)所传送的数据,是从设备直接送入内存的,或者相反

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

            下图列出了 DMA 控制器的组成:

              

                     为了实现在主机和控制器之间成块数据的直接交换,必须在 DMA 控制器中设置如下四类寄存器:

                    (1)、命令/状态寄存器(CR) :用于接收从 CPU 发来的 I / O 命令或有关控制信息,或设备的状态。

                    (2)、内存地址寄存器(MAR) : 在输入时,它存放把数据从设备传送到内存的起始目标地址;在输出时,它存放由内存到设备的内存源地址。

                    (3)、数据寄存器(DR):用于暂存设备到内存,或从内存到设备的数据。

                    (4)、数据计数器(DC):存放本次要传送的字(节)数。

                     DMA方式的工作过程是:CPU 接收到 I / O 设备的DMA 请求时,它给 I  / O 控制器发出一条命令,启动DMA控制器,然后继续其他工作。之后CPU

                 就把控制操作委托给 DMA 控制器,由该控制器负责处理。DMA 控制器直接与存储器交互,传送整个数据块,每次传送一个字,这个过程不需要CPU

                参与。当传送完成后,DMA 控制器发送一个中断信号给处理器。因此只有传动开始和传送结束时才需要 CPU 的参与

                       DMA 控制方式与中断驱动方式的主要区别是:中断驱动方式在每个数据需要传输时中断CPU ,而 DMA 控制方式则是在所要求传送的一批数据全部

                传送结束后才中断 CPU ;此外,中断驱动方式数据传送是在中断处理时由 CPU 控制完成的,而 DMA 控制方式则是在 DMA 控制器的控制下完成的。 

                4.通道控制方式

                    I / O 通道是指专门负责输入 / 输出的处理机。I  / O 通道方式是 DMA 方式的发展,它可以进一步减少 CPU 的干预,即把对一个数据块的读 (或写)为

                 单位的干预,减少对一组数据块的读(或写)及有关的控制和管理为单位的干预。同时,又可以实现CPU 、 通道和 I / O 设备三者的并行操作,从而有

                 效地提高整个系统的资源利用率。

                     例如,当CPU 要完成一组相关的读(或写)操作及有关控制时,只需向 I / O 通道发送一条 I / O 指令,以给出其所要执行的通道程序的首地址和要访问

                 的 I / O 设备,通道接到该指令后,通过执行通道程序便可完成 CPU 指定的 I / O 任务,数据传送结束时向 CPU 发中断请求。 

                      I ./ O 通道与一般处理机的区别是:通道指令类型单一,没有自己的内存,通道所执行的通道程序是放在主机的内存中的,也就是说通道与CPU 共享

                 内存。

                      I / O 通道与 DMA 方式的区别是:DMA 方式需要 CPU 来控制传输的数据块大小、传输的内存位置,而通道方式中这些信息是由通道控制的。另外,

                 每个DMA 控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。

                      ---------------------------------------------------------------------------------------------------------------------------

                     用一个例子来对以上 4 种I / O 控制方式做一次总结。想象这样的一个情形,一位客户要去裁缝店做一批衣服:

                                程序直接控制也就是,裁缝没有客户的,联系方式,客户必须每隔一段时间去裁缝店看看裁缝把衣服做好了没有,这就浪费了客户的不少时间。

                               中断驱动方式就是裁缝有客户的联系方式,每当他完成一件衣服以后,给客户打一次电话,让客户去拿,这对比程序直接控制能省去客户不少

                      麻烦,但每完成一件衣服就让客户去拿一次,仍然是比较浪费客户时间的。

                                 DMA 方式就是指,客户花钱雇了一个单线秘书,并向秘书交代好把衣服放在哪里(存放仓库),裁缝要联系就直接联系秘书,秘书负责把衣服

                      取回并放在合适的位置,当每处理  100 件衣服,秘书要给客户报告一次(大大节省了客户的时间)。

                                 通道方式就是,秘书拥有更高的自主权,对比 DMA 方式,他可以决定把衣服存放在哪里,而不需要客户操心。而且,何时向客户报告,是处理

                      完100 件衣服就报告,还是处理完 10000 件衣服后才报告,也是秘书可以决定的。客户有可能在多个裁缝那里订了货,一个 DMA 类的秘书只能负责

                      与一个裁缝沟通,但通道类秘书却可以与多个裁缝进行沟通。

 

                

      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小达人Fighting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值