我对DMA和中断I/O之间的差异有点不清楚.(目前正在阅读操作系统概念,第7版).
具体来说,我不确定在任何一种情况下中断何时发生,并且在两种情况下在哪些点上CPU都可以自由地进行其他工作.我一直在阅读的东西,但不一定和解:
中断驱动
- 控制器通过驱动程序初始化
- 控制器检查由驱动程序加载的寄存器以决定操作
- 从/向外设和控制器缓冲区的数据传输随之发生.
- 控制器发出中断时(每个字节读取?读取每个字?当缓冲区填满时?传输完成时?
- 这是我的理解,该CPU是没有做任何事情时都外围< - >控制器I/O正在发生,并且控制器< - > MM I/O都发生?
- 当传输完成或块填满时,CPU必须初始化从控制器缓冲区到MM的传输
DMA
- 与上面相同,除了控制器能够在没有CPU干预的情况下将数据从其缓冲区直接传输到MM.
- 这是否意味着CPU仅在整个传输完成时中断,或者在控制器缓冲区填满时是否仍然中断?
- 唯一的区别是CPU不再需要等待控制器< - > MM I/O,但是当控制器缓冲区填满时仍然必须中断?或者DMA是否也将其隐藏在CPU中?