设备驱动程序的分类
来源:互联网 发布:中国进出口最新数据 编辑:程序博客网 时间:2024/04/30 09:15
在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列为设备的次设备号,最后一列为设备结点的名称。
- [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
- 设备驱动程序的分类
- VxWorks设备驱动程序开发指南(三)---驱动程序的分类
- VxWorks设备驱动程序开发指南---驱动程序的分类
- WinCE设备驱动程序分类
- Linux设备驱动程序分类转
- Linux设备驱动程序分类转
- Windows驱动程序的分类
- Windows驱动程序的分类
- Windows驱动程序的分类
- 驱动程序的分类
- WinCE驱动程序的分类
- WINDOW驱动程序的分类
- windowsCE驱动程序的分类
- WinCE驱动程序的分类
- 驱动程序的分类
- WinCE驱动程序的分类
- WinCE驱动程序的分类
- WinCE驱动程序的分类
- dns-prefetch
- 带参数的可加载模块
- DbSet<T>成员
- 杂七杂八
- poj2234
- 设备驱动程序的分类
- 对数组的遍历及排序操作
- WIN8 的WIFI开启问题
- 中科大·龙星计划《数据挖掘》小记
- Java监听器执行定时任务
- 星光之旅
- 每天一个jvm类之String
- 色情不是我的全部——在法律边缘起舞的 FC2
- JavaFX环境的搭建和一个简单的例子