一
. Linux device driver
的概?/p>
系统调用是操作系统内核和应用程序之间的接?/p>
,
设备驱动程序是操作系?/p>
内核和机器硬件之间的接口
.
设备驱动程序为应用程序屏蔽了硬件的细?/p>
,
这样
在应用程序看?/p>
,
硬件设备只是一个设备文?/p>
,
应用程序可以象操作普通文?/p>
一样对硬件设备进行操作
.
设备驱动程序是内核的一部分
,
它完成以下的功能
:
1.
对设备初始化和释?/p>
.
2.
把数据从内核传送到硬件和从硬件读取数据
.
3.
读取应用程序传送给设备文件的数据和回送应用程序请求的数据
.
4.
检测和处理设备出现的错?/p>
.
?/p>
Linux
操作系统下有两类主要的设备文件类?/p>
,
一种是字符设备
,
另一种是
块设?/p>
.
字符设备和块设备的主要区别是
:
在对字符设备发出?/p>
/
写请求时
,
实际
的硬?/p>
I/O
一般就紧接着发生?/p>
,
块设备则不然
,
它利用一块系统内存作缓冲?/p>
,
当用户进程对设备请求能满足用户的要求
,
就返回请求的数据
,
如果不能
,
就调用请求函数来
进行实际
?/p>
I/O
操作
.
块设备是主要针对磁盘等慢速设备设计的
,
以免耗费过多?/p>
CPU
时间
来等?/p>
.
已经提到
,
用户进程是通过设备文件来与实际的硬件打交道
.
每个设备文件?/p>
都有其文件属?/p>
(c/b),
表示是字符设备还蔤强樯璞
?
另外每个文件都有两个?/p>
备号
,
第一个是主设备号
,
标识驱动程序
,
第二个是从设备号
,
标识使用同一?/p>
设备驱动程序的不同的硬件设备
,
比如有两个软?/p>
,
就可以用从设备号来区?/p>