基本概念
程序直接控制I/O方式下,驱动程序实际上就是一个查询程序,而不在调中断服务程序。
中断控制I/O方式下,驱动程序在启动完外设后,将调用处理器调度程序以调出其他进程执行,
而使请求I/O的当前进程P阻塞;
当外设完成任务以后,则外设的设备控制器向CPU发出中断请求,CPU调出中断服务程序执行;在中断服务程序中,进行新数据的读写或者进行I/O操作的结束处理,以解除用户进程P的阻塞状态。
DMA控制I/O方式下,驱动程序进行DMA传送初始化并发出“启动DMA传送”命令后,将调用处理器调度程序以调出其它进程执行。,而使请求I/O的当前进程P阻塞;当DMA传送完成后,则DMA控制器向CPU发出“DMA结束”中断请求,CPU调出相应中断服务程序执行;在中断服务程序中,进行DMA结束处理,包括解除用户进程P的阻塞状态。
中断控制I/O方式和DMA方式的比较:
对于像硬盘这样的高速外设的数据传送,如果还是实用中断控制I/O方式的话,则CPU用于I/O的开销是无法忽视的。高速外设速度太快,因而中断频率高,导致CPU被频繁的大打断,而且,由于需要保存断点和现场、开中断/关中断、设置中断屏蔽字等,使得中断相应和中断处理的额外开销很大,因此,在高速外设情况下,采用这种方式是不合适的;
DMA控制I/O方式下,CPU只在最初的DMA初始化和最后处理“DMA结束”中断时介入,而在整个一块数据传送过程中都不需要CPU的参与,因而CPU用于I/O的开销非常小。