编程和中断启动 I O 的区别

编程和中断启动 I O 的区别

先决条件 – I/O 接口(中断和 DMA 模式)

CPU 和 I/O 设备之间的数据传输可以通过多种模式进行。这是三种可能的模式:

  • 程控 I/O
  • 中断启动的 I/O
  • 直接内存访问 (DMA)

在本文中,我们将仅讨论前两种模式。

1. 程序输入/输出:

在这种模式下,数据传输由写在计算机程序中的指令启动。需要输入指令将数据从设备存储到 CPU,并且需要存储指令将数据从 CPU 传输到设备。通过这种模式进行数据传输需要 CPU 持续监控外围设备,并在传输启动后监控新传输的可能性。因此,CPU 一直处于循环状态,直到 I/O 设备指示它已准备好进行数据传输。因此,编程的 I/O 是一个耗时的过程,它使处理器不必要地忙碌并导致 CPU 周期的浪费。

这可以通过使用中断工具来克服。这构成了中断启动 I/O 的基础。

2. 中断启动 I/O :

此模式使用中断工具和特殊命令来通知接口在数据可用且接口准备好进行数据传输时发出中断命令。同时 CPU 继续执行其他任务,不需要检查标志。设置标志时,通知接口并启动中断。此中断导致 CPU 偏离它正在执行的操作以响应 I/O 传输。CPU 通过将来自程序计数器 (PC) 的返回地址存储到内存堆栈中来响应信号,然后分支到处理 I/O 请求的服务。传输完成后,CPU 会返回上一个正在执行的任务。可以通过向量中断和非向量中断两种方式选择服务的分支地址。在向量中断中,中断源将分支信息提供给 CPU,而在非向量中断的情况下,分支地址被分配到内存中的固定位置。

编程和中断启动 I/O 之间的区别:

程序I/O 中断启动I/O
数据传输是通过存储在计算机程序中的指令启动的。每当有 I/O 传输请求时,就会从程序中执行指令。 I/O 传输由发给 CPU 的中断命令启动。
CPU 停留在循环中以了解设备是否准备好传输,并且必须持续监视外围设备。 CPU 无需停留在循环中,因为当设备准备好进行数据传输时,中断命令会中断 CPU。
这导致 CPU 周期的浪费,因为 CPU 保持不必要的忙碌,从而降低了系统的效率。 CPU 周期不会浪费,因为 CPU 在此期间继续进行其他工作,因此这种方法更有效。
CPU 在传输完成之前不能做任何工作,因为它必须保持循环以持续监视外围设备。 CPU 可以做任何其他工作,直到它被指示设备准备好进行数据传输的命令中断
程序I/O的模块被视为慢速模块。 它的模块比编程的 I/O 模块更快。
程序I/O很容易编程和理解。 如果一个人使用低级语言,理解起来可能会很棘手和复杂。
系统性能严重下降。 一定程度上提高了系统的性能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程