设备类型分类
来源:互联网 发布:sql的使用 编辑:程序博客网 时间:2024/05/16 11:18
《深入浅出XScale嵌入式系统》读书笔记
1、字符设备是Linux最简单的设备,可以像文件一样访问。初始化字符设备时,它的设备驱动程序向Linux登记,并在字符设备向量表中增加一个device_struct数据结构条目,这个设备的主设备号用来做这个向量表的索引。向量表中的每一个条目,一个device_struct数据结构包括两个元素:登记设备驱动程序名称的指针和指向一组文件的操作的指针。
设备注册机构,内核提供一个字符设备注册表,用于登记字符设备的相关信息。该数据结构在文件fs/device.C中定义,定义形式如下:
struct decice_struct{
const char *name 设备名称
struct file_operation * fops 设备相关文件操作
}
字符设备登记表,负责登记各种字符设备的名字和对应的操作
static struct device_struct chrdevs[MAX_CHRDEV]={{NULL,NULL},}
2、快设备
块设备是文件系统的基础,它也可以像文件一样被访问。Linux用blkdevs向量表维护已经登记的块设备文件。它像chrdevs向量表一样,使用设备的主设备号作为索引。它的条目也是数据结构。与字符设备不同的是,块设备分为SCSI和IDE类;向Linux内核登记并向核心提供文件操作。
3、块设备与字符设备的主要区别:
对字符设备发出读、写请求时,实际的硬件I/O一般紧接着就发生了。块设备则不然,它利用一块系统内存作为缓冲区,当用户进程对设备的请求能满足用户的要求时,就返回请求的数据,如果不能,就调用请求函数来进行实际的I/O操作。
4、Linux将设备看成文件,系统支持的所有设备都必须以特殊文件的形式出现在文件系统中。说是“特殊文件”,是因为这些文件只有文件名而没有正文。这是因为,这种“文件”所要运载和提供的信息只有三项,即目标设备所属的类(块设备和字符设备)及其主设备号和次设备号,而这些信息完全可以放在文件的“目录项”中。
打开文件的过程就可以大致描述如下:
1、根据约定的设备文件名,在文件系统中找到目录文件的目录项,从中取得目标设备的主/次设备号。
2、在本进程的file结构数组中分配一个空闲的file结构数组,其下标即为“打开文件号”。如前所述,打开文件号只对本进程有意义。
3、根据目标设备的类别和主设备号找到相应的file_operations结构,并将其地址记录在file结构中。同时,把与目录项有关的数据结构的地址也记录在file结构中,以便获得其次设备号。
- 设备类型分类
- 设备类型分类(转)
- 设备分类
- 类型分类
- USB设备分类
- WinCE设备驱动程序分类
- USB设备分类
- linux设备分类
- USB设备分类
- linux设备分类
- 设备驱动程序的分类
- Linux 设备文件分类
- Linux设备分类
- IO设备的分类
- Linux设备分类
- USB设备分类
- 按类型分类
- css 选择器类型分类
- MyEclipse与Eclipse有什么关系?
- 黑马程序员—转载一篇关于ADO.NET的知识的博客
- 美国人挂在嘴边的句子
- Bitmap index AND bitmap join index
- 解决Office 2010出现the setup controller has encountered a problem...
- 设备类型分类
- 图像处理OpenCV库移植
- to look at things
- in 和 exists区别
- How to setup and configure Sonar for Groovy projects
- 目录列表的显示
- 如何调试守护进程
- 2012年4月23日
- 在C++中使用cpuid指令获得CPU信息