区分程序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设备并指示它在操作完成后生成并发送中断信号。这是通过在状态寄存器中设置一个中断使能位来实现的。

此技术需要为写入或读取的每个字符中断一次。中断正在运行的进程是一项昂贵的操作,因为它需要保存上下文。

它需要额外的硬件,例如直接内存访问(DMA)控制器芯片。速度快且效率高。

如果程序员使用低级编程语言,则编码会变得困难。让各个部分协同工作可能会变得困难。例如,这是由操作系统开发人员(例如Microsoft)或硬件制造商完成的。

系统性能得到增强。它需要初始化堆栈。

即使连接到系统中的I/O设备数量增加,系统吞吐量也不会受到影响,因为吞吐量不依赖于数量。

**例如** - 计算机鼠标触发并向程序发送信号以处理鼠标事件。

中断驱动I/O更好,因为它速度快,效率高。系统性能得到改进和增强。

更新于: 2021年11月29日

15K+ 次查看

开启你的职业生涯

通过完成课程获得认证

开始
广告