设备驱动程序
设备处理程序通常又称为设备驱动程序,它是I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。
设备驱动程序概述 1. 设备驱动程序的功能 (1) 接收由与设备无关的软件发来的命令和参数,并将命令中的抽象要求转换为与设备相关的低层操作序列。 (2) 检查用户I/O请求的合法性,了解I/O设备的工作状态,传递与I/O设备操作有关的参数,设置设备的工作方式。 (3) 发出I/O命令,如果设备空闲,便立即启动I/O设备,完成指定的I/O操作;如果设备忙碌,则将请求者的请求块挂在设备队列上等待。 (4) 及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。
设备驱动程序的特点 设备驱动程序属于低级的系统例程,它与一般的应用程序及系统程序之间有下述明显差异: (1) 驱动程序是实现在与设备无关的软件和设备控制器之间通信和转换的程序,具体说,它将抽象的I/O请求转换成具体的I/O操作后传送给控制器。又把控制器中所记录的设备状态和I/O操作完成情况,及时地反映给请求I/O的进程。 (2) 驱动程序与设备控制器以及I/O设备的硬件特性紧密相关,对于不同类型的设备,应配置不同的驱动程序。但可以为相同的多个终端设置一个终端驱动程序。(3) 驱动程序与I/O设备所采用的I/O控制方式紧密相关,常用的I/O控制方式是中断驱动和DMA方式。 (4) 由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言书写。目前有很多驱动程序的基本部分已经固化在ROM中。 (5) 驱动程序应允许可重入。一个正在运行的驱动程序常会在一次调用完成前被再次调用。
3. 设备处理方式 在不同的操作系统中,所采用的设备处理方式并不完全相同。 主要分成以下三类: 1) 为每一类设备设置一个进程,专门用于执行这类设备的I/O操作;2) 在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作; 3) 不设置专门的设备处理进程,而只为设备设置相应的设备驱动程序,供用户或系统进程调用。这种方式目前用得最多。
设备驱动程序的处理过程 设备驱动程序的主要任务是启动指定设备,完成上层指定的I/O工作。但在启动之前,应先完成必要的准备工作,如检测设备状态是否为“忙”等。在完成所有的准备工作后,才向设备控制器发送一条启动命令。 处理过程有五步: (1) 将抽象要求转换为具体要求; (2) 对服务请求进行校验;(3) 检查设备的状态; (4) 传递必要的参数; (5) 启动I/O设备。
对I/O设备的控制方式 对设备的控制,早期是使用轮询的可编程I/O方式,后来发展为使用中断的可编程I/O方式。