设备驱动程序的分类
2014-04-18 21:34
225 查看
在Linux操作系统中,设备驱动程序对各种设备提供了一致的访问接口,用户程序可以像对普通文件一样对设备文件进行打开和读写操作。Linux包含如下3类设备驱动程序:
(1)字符设备
Linux下的字符设备是指发送和接收数据以字符的形式进行的设备。字符设备接口支持面向字符的I/O操作,不经过系统的快速缓存,所以它们负责管理自己的缓冲区结构。字符设备接口只支持顺序存取的有限长度的I/O操作,典型的字符设备包括串行接口、LED灯、键盘等设备。
(2)块设备
块设备是以块的方式进行I/O操作的设备。块设备利用一块系统内存作缓冲区,如果用户进程对设备的请求能满足用户的要求,就返回请求的数据,否则调用请求函数来进行实际的I/O操作。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待响应。块设备支持随机存取功能,几乎可以支持任意位置和任意长度的I/O请求。典型的块设备包括硬盘、CF卡、SD卡等存储设备。
(3)网络设备
Linux操作系统中的网络设备是一类特殊的设备。Linux的网络子系统主要基于BSD UNIX的socket机制,在网络子系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。Linux操作系统支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多种网络协议的支持。
Linux系统为每个设备分配了一个主设备号与次设备号,主设备号唯一地标识了设备类型,次设备号标识具体设备的实例。由同一个设备驱动程序控制的所有设备具有相同的主设备号,从设备号则被用来区分具有相同主设备号的不同设备。
每一个字符设备或块设备在文件系统中都有一个特殊设备文件与之对应,这个文件就是设备结点。网络设备接口不保存在Linux的文件系统中,应用层可以通过套接字访问网络设备。字符设备和块设备的设备结点在/dev目录下面:
其中每行第一个字母为c表示字符设备,为b表示块设备。上面第4列就是设备的主设备号,第5列为设备的次设备号,最后一列为设备结点的名称。
(1)字符设备
Linux下的字符设备是指发送和接收数据以字符的形式进行的设备。字符设备接口支持面向字符的I/O操作,不经过系统的快速缓存,所以它们负责管理自己的缓冲区结构。字符设备接口只支持顺序存取的有限长度的I/O操作,典型的字符设备包括串行接口、LED灯、键盘等设备。
(2)块设备
块设备是以块的方式进行I/O操作的设备。块设备利用一块系统内存作缓冲区,如果用户进程对设备的请求能满足用户的要求,就返回请求的数据,否则调用请求函数来进行实际的I/O操作。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待响应。块设备支持随机存取功能,几乎可以支持任意位置和任意长度的I/O请求。典型的块设备包括硬盘、CF卡、SD卡等存储设备。
(3)网络设备
Linux操作系统中的网络设备是一类特殊的设备。Linux的网络子系统主要基于BSD UNIX的socket机制,在网络子系统和驱动程序之间定义有专门的数据结构(sk_buff)进行数据的传递。Linux操作系统支持对发送数据和接收数据的缓存,提供流量控制机制,提供对多种网络协议的支持。
Linux系统为每个设备分配了一个主设备号与次设备号,主设备号唯一地标识了设备类型,次设备号标识具体设备的实例。由同一个设备驱动程序控制的所有设备具有相同的主设备号,从设备号则被用来区分具有相同主设备号的不同设备。
每一个字符设备或块设备在文件系统中都有一个特殊设备文件与之对应,这个文件就是设备结点。网络设备接口不保存在Linux的文件系统中,应用层可以通过套接字访问网络设备。字符设备和块设备的设备结点在/dev目录下面:
[root@/dev]#ls -l |more crw-rw---- 1 root root 5, 1 Dec 31 19:00 console crw-rw---- 1 root root 13, 63 Dec 31 19:00 mice crw-rw---- 1 root root 90, 0 Dec 31 19:00 mtd0 crw-rw---- 1 root root 90, 1 Dec 31 19:00 mtd0ro crw-rw---- 1 root root 90, 2 Dec 31 19:00 mtd1 crw-rw---- 1 root root 90, 3 Dec 31 19:00 mtd1ro crw-rw---- 1 root root 90, 4 Dec 31 19:00 mtd2 crw-rw---- 1 root root 90, 5 Dec 31 19:00 mtd2ro crw-rw---- 1 root root 90, 6 Dec 31 19:00 mtd3 crw-rw---- 1 root root 90, 7 Dec 31 19:00 mtd3ro brw-rw---- 1 root root 31, 0 Dec 31 19:00 mtdblock0 brw-rw---- 1 root root 31, 1 Dec 31 19:00 mtdblock1 brw-rw---- 1 root root 31, 2 Dec 31 19:00 mtdblock2 brw-rw---- 1 root root 31, 3 Dec 31 19:00 mtdblock3 brw-rw---- 1 root root 43, 0 Dec 31 19:00 nbd0 brw-rw---- 1 root root 43, 1 Dec 31 19:00 nbd1
其中每行第一个字母为c表示字符设备,为b表示块设备。上面第4列就是设备的主设备号,第5列为设备的次设备号,最后一列为设备结点的名称。
相关文章推荐
- USB设备驱动概述 分类: USB OTG驱动 windows驱动程序WDM 2015-06-10 18:15 426人阅读 评论(0) 收藏
- DriverStudio 和 WDF驱动 通过GUID获取设备句柄的差别 分类: windows驱动程序WDM 2013-10-30 08:56 812人阅读 评论(0) 收藏
- linux下自动加载设备驱动程序模块 分类: arm-linux-Ubuntu 2015-05-15 17:40 325人阅读 评论(0) 收藏
- Linux设备驱动程序分类转
- Linux设备驱动程序分类转
- 实战DeviceIoControl 之一:通过API访问设备驱动程序 分类: windows驱动程序WDM 2013-09-25 14:45 381人阅读 评论(0) 收藏
- VxWorks设备驱动程序开发指南(三)---驱动程序的分类
- 实战DeviceIoControl 之五:列举已安装的存储设备 分类: windows驱动程序WDM 2013-09-25 14:48 366人阅读 评论(0) 收藏
- P2P打洞技术之一:NAT设备实现分类
- 双系统win7+ubuntu16.04,win7崩掉,重装提示“缺少所需的CD/DVD驱动器设备驱动程序”
- OK6410之ADC驱动程序 字符设备驱动
- ioctl是设备驱动程序中对设备的I/O通道进行管理的函数
- 字符设备驱动程序 之 使用&分析
- 3.3.4 PCI设备进行DMA写时发生Cache命中 分类: 浅谈PCI 2013-07-22 16:27 309人阅读 评论(0) 收藏
- Linux设备驱动程序编写
- 块设备驱动程序1
- 用 Delphi 编写 VxD 设备驱动程序(转)
- Q: 目前我有个设备已经内附现有的驱动程序,但我又再度利用WinDriver开发此设备的驱动程序并且生成INF档案,请问我该如何移除此INF档案让此设备正常运行?
- 如何在WDM中使用xp系统的DMA用来处理数据 分类: windows驱动程序WDM 浅谈PCI 2013-07-26 14:57 497人阅读 评论(0) 收藏
- Linux设备驱动程序学习-中断处理