热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

5.1.2I/O控制方式

设备管理的主要任务之一是控制设备和内存或处理器之间的数据传送,外围设备和内存之间的输入输出控制方式有四种。1、程序直接控制方式计算机从外部设备读取数据到存储器,每

设备管理的主要任务之一是控制设备和内存或处理器之间的数据传送,外围设备和内存之间的输入输出控制方式有四种。

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控制器中设置如下四类寄存器:

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控制器对应一台设备与内存传递数据,而一个通道可以控制多台设备与内存的数据交换。


推荐阅读
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • vivo发布iQOO 11系列:搭载骁龙8 Gen2与多项创新技术
    vivo正式推出iQOO 11系列智能手机,该系列搭载最新的高通骁龙8 Gen2处理器,并引入多项创新技术,致力于为用户提供卓越的性能和游戏体验。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 电脑蓝屏故障的成因与解决方案(下)
    本文深入探讨了导致电脑蓝屏的具体原因,并提供了相应的解决方法,帮助用户更好地理解和处理这一常见问题。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 制程能力分析:Cpk及其相关指数的深入探讨
    本文详细介绍了制程能力指数(Cpk)的概念及其与Cp、Pp、Ppk之间的关系,通过具体案例和图表展示如何评估和改进生产过程的能力。文章还提供了使用Excel和Minitab进行批量计算的实际操作步骤。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 选择适合生产环境的Docker存储驱动
    本文旨在探讨如何在生产环境中选择合适的Docker存储驱动,并详细介绍不同Linux发行版下的配置方法。通过参考官方文档和兼容性矩阵,提供实用的操作指南。 ... [详细]
  • 本实验旨在通过图灵机模型的构建与计算机硬件系统的虚拟拆装,深入理解计算机的基本原理和结构。实验内容包括图灵机各组成部分的作用、冯·诺依曼体系结构的功能描述以及微型计算机的拆装顺序记录。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文详细介绍了C语言中的指针,包括其基本概念、应用场景以及使用时的优缺点。同时,通过实例解析了指针在内存管理、数组操作、函数调用等方面的具体应用,并探讨了指针的安全性问题。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
author-avatar
程序员那些事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有