设备驱动程序

什么是设备驱动程序?

设备驱动程序,顾名思义,就是直接驱动I/O设备进行输入或输出操作的软件。它属于与设备控制器直接联系的I/O软件部分。它与具体的I/O设备直接相关,并针对每个特定的I/O设备进行优化。设备控制程序通常由设备制造商提供,但归属于操作系统内核。正因为这一属性,设备驱动程序是操作系统安全的一个巨大隐患。

由于需要直接驱动设备的运行,设备驱动程序必须清楚设备的所有细节。例如,磁盘驱动程序必须清楚什么是扇面、磁道、磁柱、磁头、磁臂、电机和电机驱动等信息;鼠标驱动程序需要具备辨认按下哪个键的能力。

设备驱动程序的任务?

设备驱动程序需要完成的任务包括:

从上层接收抽象的读写请求。
确保读写操作完成。
初始化设备,开关设备。
对设备的功能进行管理。

UNIX和windows设备驱动程序有何不同?

在UNIX系统下,设备驱动程序与整个操作系统编在一个二进制文件里。如果要增加新的设备驱动程序或者修改现有的设备驱动程序,则需要重新编译操作系统。UNIX的这种做法主要是考虑了安全的因素。由于用户或其他人无法动态地加载设备驱动程序,因此操作系统安全性较高。不过,这种不能动态加载的限制让人感觉十分不便,因此在最新的UNIX版本如Solaris 10里,设备驱动程序可以动态加载。

而Windows操作系统从一开始(NT开始)就在运行设备驱动程序时进行动态加载。而这也是Windows不如UNIX安全的一个原因。

设备驱动程序如何检查设备?

在收到一个I/O请求后,设备驱动程序做的第一件事情是检查输入参数是否合法。如果不合法,则返回错误。如果参数正常,则将I/O请求的抽象表示转换为设备能够认识的具体表示,如将线性数据块号转换为磁头、磁道、扇面等。

然后,设备驱动程序需要检查设备状态以确认其处于闲置状态。如果设备繁忙,则将I/O请求送入该设备的等待队列里面以待处理。如果设备没有开机,则驱动设备进行并启动电机。

在做完上述各项工作后,剩下的就是真正的I/O操作了。设备驱动程序通过发出一系列的I/O命令到设备控制寄存器里面来进行真正的数据传输工作。如果需要,设备驱动程序需要阻塞并等待中断。而每次从中断醒过来,则需要检查I/O是否正确完成,再将数据传输到上面调用设备驱动程序的应用。

在所有数据传输完毕后,设备驱动程序将返回到调用者那里。

总结

  • 设备驱动程序由厂商开发
  • 设备驱动程序对设备的功能进行管理
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值