免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 973 | 回复: 0
打印 上一主题 下一主题

设备驱动简介及特点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-23 16:02 |只看该作者 |倒序浏览

一.设备驱动简介
系统调用是操作系统内核和应用程序之间的接口,设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件只是个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作。
设备驱动程序是内核的一部分,它完成以下的功能
第一.   对设备初始化和释放
第二.   把数据从内核传送到硬件,从硬件读取数据。
第三.   读取应用程序传送给设备文件的数据和回送应用程序请求的数据
第四.   检测和处理设备出现的错误

在Linux操作系统下有两类主要的设备文件:一种是字符设备,另一种是块设备。
字符设备和块设备的主要区别在于:在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了;而块设备就不同,它利用一块系统内存作缓冲区,如果用户进程对设备请求能满足用户的要求,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作。块设备是主要针对磁盘等慢速设备设计的,以免耗费过多的cpu时间来等待。

用户进程是通过设备文件来与实际的硬件打交道。每个设备文件都有其文件属性(c/b),如表示是字符设备还是块设备。另外每个文件都有两个设备号,第一个是主设备号,用于标识驱动程序;第二个是从设备号,用于标识使用同一个设备驱动程序的不同的硬件设备。设备文件的主设备号必须与设备驱动程序在登记时申请的主设备号一致,否则用户进程将无法访问到驱动程序

最后,在用户进程调用驱动程序时系统进入核心态,这时不再是抢先式调度,也就是说,系统必须在完成当前驱动程序的子函数返回后才能进行其他工作。设备驱动程序是内核的一部分,硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中占有60%以上,因此,熟悉驱动的编写是很重要的。

二.设备驱动程序的特点
Linux中的设备驱动程序有如下的特点:
1.  内核代码
设备驱动程序是内核的一部分,如果驱动程序出错,则可能导致系统崩溃
2.  内核接口
设备驱动程序必须为内核或者其子系统提供的一个标准接口。比如,一个终端驱动程序必须为内核提供一个文件I/O接口;一个SCSI设备驱动程序应该为SCSI子系统提供一个SCSI设备接口,同时SCSI子系统也必须为内核提供文件的I/O接口及缓冲区。
3.  内核机制和服务
设备驱动程序使用一些标准的内核服务,如内存分配等等
4.  可装载
大多数的Linux 操作系统设备驱动程序都可以在需要时装载进内核,在不需要时从内核中卸载。
5.  可设置
Linux 操作系统设备驱动程序可以集成为内核的一部分,并可以根据需要把其中的某一部分集成到内核中,这只需要在系统编译时进行相应的设置即可
6.  动态性
在系统启动且各个设备驱动初始化后,驱动程序将维护其控制的设备。如果该设备驱动程序控制的设备不存在也不影响系统的运行,那么此时的设备驱动程序只是多占了一点系统内存



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/86532/showart_1736793.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP