第五章 输入输出系统 5.4 设备驱动程序

发布时间 2023-05-06 17:13:07作者: 一只朋克小狗

一、设备驱动程序概述

  1.设备驱动程序功能 

    ①接收由I/O进程发来的命令和参数, 并将命令中的抽象要求(read,write命令)转换为具体要求。

    ②检查用户I/O请求的合法性,了解I/O设备的状态,传递有关参数,设置设备的工作方式。

    ③发出I/O命令并检查设备状态。

    ④及时响应由控制器或通道发来的中断请求并处理。

  2.设备驱动程序的特点 (与一般应用程序、系统程序的差异)

    ①驱动程序,是指在请求I/O的进程与设备控制器之间的一个通信和转换程序。

    ②驱动程序与设备控制器、I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序 。如打印机和显示器需要不同的驱动程序。

    ③驱动程序与I/O设备所采用的I/O控制方式紧密相关,常用中断驱动和DMA方式。

    ④由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言编写。

    ⑤驱动程序允许可重入,在一次调用完成前可以再一次被调用(可有多个进场同时使用)。

  3.设备处理方式(处理设备时是否设置进程,设置什么进程)

    ①为每一类设备设置一个进程,专门用于执行这类设备的I/O操作

    ②在整个系统中设置一个I/O进程,专门用于执行系统中所有各类设备的I/O操作

    ③不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序(模块),供用户进程或系统进程调用 

二、设备驱动程序的处理过程

  1.将抽象要求转换为具体要求。命令(抽象的要求)无法传送给设备控制器,驱动程序将其转换为具体要求。

  2.检查I/O请求的合法性。 ,

  3.读出和检查设备的状态 。启动设备前,驱动程序应先把设备控制器中的状态寄存器的内容读入到CPU,来了解设备的状态。

  4.传送必要的参数。确定设备处于就绪状态后,驱动程序向设备控制器的寄存器传送数据(以及控制本次数据传送的参数,如数据量,起始地址)

  5.启动I/O设备

驱动程序发出I/O命令,启动一个I/O操作后,便把控制返回给I/O系统,把自己阻塞,等待下一次中断到来被唤醒。

具体的I/O操作是在设备控制器的控制下进行的,当设备忙于传送数据时,处理可以处理其他任务,实现了处理机与I/O设备的并行操作

三、对I/O设备的控制方式(I/O系统发完命令后做什么)

  1.使用轮询的可编程I/O方式

    CPU需花代价不断查询I/O状态,CPU资源浪费极大 。

  2.使用中断的可编程I/O方式

    中断I/O比程序I/O方式高效,但以字/字节为传输单位。每完成一个字/字节的传输,设备均要向CPU请求一次中断。 仅当输完一个数据后,CPU才花费极短时间去做中断处理。

  3.直接存储器访问——DMA方式

    ①特点 

     数据传输的基本单位是数据块,即在CPU与I/O设备之间,每次传送至少一个数据块;

    所传送的数据是从设备直接送入内存的,或者相反;

    仅在传送一个或多个数据块的开始和结束时,才需CPU干预,整块数据的传送是在控制器的控制下完成的。 

    ②DMA控制器的组成

    主机与DMA控制器的接口(含数据寄存器,内存地址寄存器,数据计数器,命令/状态寄存器);

    DMA控制器与块设备的接口;

    I/O控制逻辑。 

    ③DMA工作过程 (以读磁盘数据为例)

  • CPU首先向磁盘控制器发送一条读命令:该命令被送到命令寄存器CR中;数据内存起始目标地址被送入MAR中;要读数据的字数送入数据计数器DC中;磁盘中的原地址送入DMA控制器的I/O控制逻辑上。
  • 启动DMA控制器进行数据传送:传送时,DMA控制器读入一个数据到数据寄存器中,然后传到内存中,接着MAR+1,DC-1,判断DC是否为0,如否,继续,反之控制器发中断请求,传送完毕。

  4.I/O通道控制方式

    ①引入

    把对一个数据块的读(写)为单位的干预,减少为对一组数据块的读(写)及有关的控制和管理为单位的干预。 (实现一次将多个数据块传送到不同地址的内存区域)

    一个通道控制多台设备。

    CPU仅在I/O操作的开始和结束时花费少量时间处理与I/O有关的工作。

    实现CPU、通道和I/O设备三者的并行操作,从而更有效地提高整个系统的资源利用率。 

    ②通道程序

    通道通过通道程序与设备控制器共同实现对I/O设备的控制。

    由一系列通道指令构成,每条通道指令都包含:

    ③工作流程