设备驱动程序

news/2024/11/29 21:41:42/

----- 设备驱动程序通常又称为设备处理程序,它是I/O进程设备控制器之间的通信程序,又由于它常以进程的形式存在,可简称之为

设备驱动进程。其主要任务是接收上层软件发来的抽象I/O要求,如read或write命令,在把它转换为具体要求后,发送给设备控制器,启动

设备去执行;此外,它也将从设备控制器发来的信号传送给上层软件。

----- 由于驱动程序与硬件密切相关,故应为每一类设备配置一种驱动程序,有时也可为非常类似的两类设备配置一个驱动程序。例如,打印机

和显示器需要不同的驱动程序,但SCSI磁盘驱动程序通常可以处理不同大小和不同速度的多个SCSI磁盘,甚至还可以处理SCSI CD-ROM。

1、设备驱动程序的功能

为了实现I/O进程与设备控制器之间的通信,设备驱动程序应具有以下功能

-- 1)接收由设备独立性软件发来的命令和参数,并将命令中的抽象要求转换为具体要求。

例如,将磁盘块号转换为磁盘的盘面、磁道号及扇区号。

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

-- 3)发出I/O命令

如果设备空闲,便立即启动I/O设备去完成指定的I/O操作;如果设备处于忙碌状态,则将请求者的请求块挂在设备队列上等待。

-- 4)及时响应由控制器通道发来的中断请求,并根据其中断类型调用相应的中断处理程序进行处理。

-- 5)对于设置有通道的计算机系统,驱动程序还应能够根据用户的I/O请求,自动地构成通道程序

2、设备处理方式

在不同的操作系统中所采用的设备处理方式并不完全相同。

根据在设备处理时是否设置进程,以及设置什么样的进程而把设备处理方式分成以下三类

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

比如,为所有的交互式终端设置一个交互式终端进程;为同一类型的打印机设置一个打印进程。

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

也可以设置一个输入进程和一个输出进程,分别处理系统中所有各类设备的输入和输出操作。

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

3、设备驱动程序的特点

设备驱动程序属于低级的系统例程,它与一般的应用程序及系统程序之间有下述明显差异:

--- 1)驱动程序主要是指在请求I/O的进程设备控制器之间的一个通信和转换程序。

它将进程的I/O请求经过转换后,传送给控制器;又把控制器中所记录的设备状态I/O操作完成情况及时的反应给请求I/O的进程。

--- 2)驱动程序与设备控制器和I/O设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序

例如,可以为相同的多个终端设置一个终端驱动程序,但有时即使是同一类型的设备,由于其生产厂家不同,他们也可能并不完全兼容,

此时也需为它们配置不同的驱动程序。

--- 3)驱动程序与I/O设备所采用的I/O控制方式紧密相关。

常用的I/O控制方式是中断驱动和DMA方式,这两种方式的驱动程序明显不同,后者是按数组方式启动设备及进行中断处理。

--- 4)由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言编写。目前有很多驱动程序的基本部分,已经固化在ROM中。

--- 5)驱动程序应允许可重入。一个正在运行的驱动程序常会在一次调用完成前被再次调用。

例如,网络驱动程序正在处理一个到来的数据包时,另一个数据包可能已经到达。

--- 6)驱动程序不允许系统调用

但是为了满足其与内核其它部分的交互,可以允许对某些内核过程的调用。如通过调用内核过程来分配和释放内存页面作为缓冲区。

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

不同类型的设备应有不同的设备驱动程序,但大体上它们都可以分成两部分:

--------- 能够驱动I/O设备工作的驱动程序

--------- 设备中断处理程序(处理I/O完成后的工作)

设备驱动程序的主要任务启动指定设备。但在启动之前,还必须完成必要的准备工作,如检测设备状态是否为“忙”等。在完成所有的准备

工作后,才向设备控制器发送一条启动命令。以下是设备驱动程序的处理过程

-- 1)将抽象要求转换为具体要求

由于用户及上层软件对设备控制器的具体情况毫无了解,因而只能向它发出抽象的要求(命令),但这些命令无法传送给设备控制器。因此

就需要将这些抽象要求转换为具体要求。这一转换工作只能由驱动程序来完成,因为在OS中只有驱动程序才同时了解抽象要求和设备控制器

中的寄存器情况;也只有它才知道命令、参数和数据应分别送往哪个寄存器。

-- 2)检查I/O请求的合法性

-- 3)读出和检查设备的状态

-- 4)传送必要的参数

对于许多设备,特别是块设备,除必须向其控制器发送启动命令外,还需传送必要的参数。例如在启动磁盘进行读/写之前,应先将本次要传送

字节数数据应到达的主存始址,送入控制器的相应寄存器中。

-- 5)工作方式的设置

-- 6)启动I/O设备

驱动程序发出I/O命令后,基本的I/O操作是在设备控制器的控制下进行的。通常,I/O操作所要完成的工作较多,需要一定的时间,如读/写一个

盘块中的数据,此时驱动(程序)进程把自己阻塞起来,直到中断到来时才将它唤醒。

 


http://www.ppmy.cn/news/135427.html

相关文章

selenium 浏览器驱动下载安装

selenium 下载地址 https://pypi.org/project/selenium/4.0.0/#files FireFox 驱动 下载地址 https://github.com/mozilla/geckodriver/releases chromeDriver 下载地址 https://registry.npmmirror.com/binary.html?pathchromedriver/ https://npm.taobao.org/mirrors/chr…

驱动下载

华硕(ASUS)驱动官网下载: http://support.asus.com.cn/download...SLanguagezh-cn 精英(ECS)驱动官网下载: http://www.ecs.com.cn/ECSWeb/Dow ... nuID35&LanID2 磐正(EPOX)驱动官网下载: http://www.epox.cn/product/line-pro...p?product_type磐正主板 微星(MSI)驱动…

驱动(一)

一、驱动具体是做什么? 我不知道。 二、驱动步骤。 1)在内核源码的目录下,编写驱动代码,生成.ko文件,并装载或卸载我们写的模块。 三、具体实现 1)驱动代码 驱动代码和我们平常写的代码不一样&#xff0…

如何下载安装驱动

1 打开浏览器 这里以Edge浏览器举例 第一步打开桌面上的Edge浏览器 如果您的桌面上没有 那么找到搜索栏 搜索Edge 然后打开 打开之后一般是这样 然后把我发送您的地址 驱动下载地址 https://tools.lenovo.com.cn/searchTools/drive/downloadList/id/3141662 (这个…

Zookeeper + Kafka 群集

Zookeeper集群 Fafka集群 ---------------- Zookeeper ---------------- Zookeeper 概述 //Zookeeper 定义 Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。 //Zookeeper 工作机制 Zookeeper从设计模式角度来理解:是一个基于…

如何制作一个连杆组简易四足机器人

1. 运动功能说明 本文示例将实现R296样机连杆组简易四足机器人前进的功能。 2. 电子硬件 在这个示例中,我们采用了以下硬件,请大家参考: 主控板 Basra主控板(兼容Arduino Uno)‍ 扩展板 Bigfish2.1扩展板‍ 电池7.4V锂…

渠道投放数据建设

广告投放渠道识别方式 1、渠道包:每个渠道分配不同的渠道包,用户下载APP之后根据他下载的是哪个渠道包来识别渠道来源,比较常见于应用商店的投放。但是需要注意渠道包可能会导致作弊情况,例如用虚拟机下载渠道包来模拟下载数据等…

Redmi显示器调节亮度 27英寸/2k/ IPS技术/低蓝光

按键详细方法如下:电源按钮可以上下左右按,右按出来菜单栏。