区分程序控制 I/O 和中断驱动 I/O。
程序控制(输入/输出)I/O 和中断驱动 I/O 之间的区别如下 −
程序控制 I/O
这种 I/O 技术是外部设备和处理器之间交换数据最简单的方法。在这种技术中,处理器或中央处理器 (CPU) 运行或执行一个程序,直接控制 I/O 操作。
处理器向 I/O 模块发出命令并等待操作完成。此外,处理器会持续检查 I/O 模块的状态,直到操作完成。
如果处理器比 I/O 模块快,则处理器的时间就会被浪费。处理器的模块被认为是慢速模块。
它应用于某些低端微型计算机。它具有单输出和单输入指令。
每条指令仅按编号选择一个 I/O 设备,并且仅按字节传输一个字符。此技术涉及四个寄存器,分别是输出状态和字符寄存器以及输入状态和字符寄存器。
它的缺点是忙等待,这意味着处理器大部分时间都花在等待 I/O 设备准备就绪的紧凑循环中。程序检查或轮询 I/O 硬件组件、设备或项目。
例如 − 处于循环中的计算机鼠标。
它很容易理解。它易于编程。但它速度慢且效率低下。
系统性能严重下降。它不需要初始化堆栈。
由于系统中连接的 I/O 设备数量的增加,系统的吞吐量降低。最好的例子是使用程控 I/O 的 PC 设备高级技术附件 (ATA) 接口。
中断驱动 I/O
它类似于程控驱动 I/O 技术。处理器不会等待 I/O 操作完成。在执行 I/O 操作时,处理器会执行其他任务。
当 I/O 操作完成后,I/O 模块会中断处理器,让处理器知道操作已完成。中断驱动 I/O 模块比程控 I/O 模块更快。
实际上,处理器启动 I/O 设备,并指示它在操作完成时生成并发送中断信号。这是通过在状态寄存器中设置中断启用位来实现的。
此技术要求对写入或读取的每个字符都进行中断。中断正在运行的进程是一项昂贵的操作,因为它需要保存上下文。
它需要额外的硬件,例如直接内存访问 (DMA) 控制器芯片。它快速高效。
如果程序员使用低级编程语言,编码会变得困难。让各个部分协同工作会很困难。这项工作由操作系统开发者(例如微软或硬件制造商)完成。
系统性能得到提升。它需要初始化堆栈。
即使系统中连接的 I/O 设备数量增加,系统的吞吐量也不会受到影响,因为吞吐量与设备数量无关。
例如 − 计算机鼠标触发并向程序发送信号以处理鼠标事件。
中断驱动的 I/O 更好,因为它快速高效。系统性能得到改进和增强。