区分编程 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 更好,因为它快速、高效。系统的性能得到改进和增强。
以上是 区分编程 I/O 和中断驱动 I/O。 的全部内容, 来源链接: utcz.com/z/335458.html