欢迎来到天天文库
浏览记录
ID:41148800
大小:421.00 KB
页数:78页
时间:2019-08-17
《2010第9章Linux设备管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章设备管理与模块机制Linux设备分类与识别设备转换表设备驱动程序设备注册与注销块设备的请求队列模块机制Linux的设备管理在Linux系统中,用户通过文件系统与设备接口。利用标准的系统调用可在设备上进行打开、关闭、读取或写入操作。当用户进程发出I/O请求时,系统将请求处理的权限放在文件系统,文件系统通过驱动程序提供的接口将任务下放到驱动程序。驱动程序根据需要,对设备控制器进行操作,设备控制器再去控制设备本身进行I/O操作。驱动程序向文件系统提供的接口屏蔽了设备的物理特性。用户进程硬件设备本身设备控制器设备驱动程序文件系统中的设备文件进程请求设备服务的流程在内核中设备
2、文件和普通文件的索引节点有区别,可以确认出是硬件设备还是普通文件,确定要访问相应的设备驱动程序还是文件。Linux系统的设备管理每个设备都对应文件系统中的一个VFSinode,都有一个设备文件名。在设备文件对应的VFSinode中,i_mode域的值标明了它的类型:S_IFBLK:表示它是一个块设备;S_IFCHR:表示它是一个字符设备;同时,设备文件对应的VFSinode中没有块列表,但却有一个名为i_rdev的域,其中存储着它所标识设备的主、次设备号。内核可以根据该域将设备文件名转化为设备的主、次设备号。Linux系统的设备管理每个设备都对应文件系统中的一个索引节点,
3、都有一个设备文件名。应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。对设备的使用类似于对文件的存取。设备驱动程序都是系统内核的一部分,它们必须为系统内核或者它们的子系统提供一个标准的接口。设备驱动程序也使用一些标准的内核服务,如内存分配等设备的分类字符设备(c)所有能够象字节流一样访问的设备都通过字符设备来实现,通常在/dev/目录下面无需缓冲直接读写设备,通常只允许按顺序访问。如打印机、键盘,终端等。一般要包含open,read,write,close等系统调用的实现块设备(b)通常是指诸如磁盘、内存、Flash等可以容纳文件系统的存储设备
4、。将数据按可寻址的块为单位进行处理,可以随机访问,利用缓冲技术块设备也是通过文件系统来访问网络接口设备通常它指的是硬件设备,但有时也可能是一个软件设备(如回环接口loopback),它们由内核中网络子系统驱动,负责发送和接收数据包。它们的数据传送往往不是面向流的,因此很难将它们映射到一个文件系统的节点上。查看系统中的设备:/proc/devices。查看设备及其类型“ls-l/dev”主设备号和次设备号主设备号和次设备号主设备号和次设备号能够唯一地标识一个设备128(V2.0以前),256(V2.0以后)主设备号相同的设备使用相同的驱动程序,次设备号用于区分具体设备的实例
5、动态获取主设备号设备文件Linux使用设备文件来统一对设备的访问接口,将设备文件放在/dev/目录下设备的命名一般为设备文件名+数字或者字母表示的子类,例如/dev/hda1,/dev/hda2等,/dev/hda代表系统中的第一个IDE硬盘,/dev/hdb代表系统中的第二个IDE硬盘;hda1代表第1个分区,hda2代表第2个分区注意:字符设备与块设备具有独立的编号,例如,块设备(3,0)不同于字符设备(3,0)设备文件通常可以表示一个硬件设备,例如磁盘/dev/hda或硬件设备的某一物理或逻辑分区,例如磁盘分区/dev/hda2或一个虚拟的逻辑设备(不会与任何硬件设
6、备相关联),例如/dev/null代表一个“黑洞”对内核而言,一个设备文件的名字是无关紧要的,关键在于设备文件的类型及其主次设备号如果一个系统含有两个具有相同主设备号和次设备号的设备文件,而且都是字符设备。当有两个进程想要同时打开这个字符设备时,会发生什么情况?关闭这个设备时又会发生什么情况?当有两个进程想要同时打开这个字符设备时,它将在各自的文件表中增加一次引用计数值。关闭这个设备时可能会发生导致对这个设备是一个无法辨认的状态。从而使这个设备变成一个无用的设备。设备文件通常包含在/dev目录中一些设备文件的例子Devfs设备文件使用主、次设备号标识设备存在局限性在/de
7、v中的大多数设备是不存在的8位长的主次设备号不够用不容易记忆上述原因以及其他的一些因素综合起来,促使了devfs设备文件的产生Linux2.4以后引入了设备文件系统(devfs)的概念,所有的设备文件作为一个可以挂装的文件系统,这样就可以被文件系统统一管理,从而设备文件就可以挂装到任何需要的地方。一般将主设备建立一个目录,再将具体的子设备文件建立在此目录下。例如,/dev/mtdblock0Devfs设备文件有了Devfs设备文件之后,文件系统允许设备驱动程序通过名字而不是主次设备号注册设备,例如所有的磁盘可以放在/dev/d
此文档下载收益归作者所有