设备类型分类

《深入浅出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结构中,以便获得其次设备号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值