快捷搜索:

印刷出版

当前位置:www.pj911.com-wwwpj911com新萄京娱乐网址 > 印刷出版 > www.pj911.com:道具号由主设备号和次设备号组合,

www.pj911.com:道具号由主设备号和次设备号组合,

来源:http://www.008sky.com 作者:www.pj911.com-wwwpj911com新萄京娱乐网址 时间:2019-10-03 01:02

新加坡世纪联华印刷公司鉴于设备更新,现予竞价转让。

Linux设备分类
Linux下的装置平常分为三类,字符设备,块设备和网络设施。

海德堡CD102-4 一台、设备为主配备:CPC2计算机调控台、火酒润版。出厂日期一九九二年。状态突出,通常使用中。

字符设备

www.pj911.com 1

五个字符设备是一种字节流设备,对设施的存取只好按顺序按字节的存取而不可能随意拜谒,字符设备尚未央浼缓冲区,全部的走访央求都是按顺序试行的。Linux下的大约配备都是字符设备。应用程序是经过字符设备节点来拜会字符设备的。设备节点日常都由mknod命令都创设在/dev目录下,下边的例证展现了串口设备的器材节点。字符设备文件的率先个标记是前边的“c”标识。

root#ls -l /dev/ttyS[0-3]
crw-rw----  1 root  root 4, 64 Feb 18 23:34 /dev/ttyS0
crw-r-----  1 root  root 4, 65 Nov 17 10:26 /dev/ttyS1
crw-rw----  1 root  root 4, 66 Jul  5  2000 /dev/ttyS2
crw-rw----  1 root  root 4, 67 Jul  5  2000 /dev/ttyS3

字符设备是指那三个只可以按梯次二个字节三个字节读取的配备,但骨子里现在有些高档字符设备也足以从钦命地点贰遍读取一块数据。字符设备是面向数据流的道具,每种字符设备都有二个装置号,设备号由主设备号和次设备号组合。同临时间Linux使用管理文件一样的艺术来保管字符设备,所以各样字符设备在/dev/目录下都有二个心心相印的设施文件,即设备节点,它们包涵了配备的品类、主/次设备号以及设备的走访权限决定等,系统通过设备文件来对字符设备开展操作,每一个字符设备文件皆有自个儿的与常见文书一律的文本操作函数组结构(struct file_operations)。字符设备驱动平日起码须要贯彻公文操作函数组中的open、release、read和write三种操作方法。常见的字符设备有鼠标、键盘、串口、调控台等。

块设备

存款和储蓄设备日常属于块设备,块设备有要求缓冲区,况兼帮忙随机访谈而不必遵照顺序去存取数据,比方您可以先存取前面包车型客车数额,然后在存取后边的数据,那对字符设备来讲是不容许的。Linux下的磁盘设备都是块设备,纵然在Linux下有块设备节点,但应用程序日常是透过文件系统及其高速缓存来访谈块设备的,并不是间接通过配备节点来读写块设备上的数量。块设备文件的第一个标识是前方的“b”标识。

root# ls -l /dev/hda[1-3]
brw-rw----  1 root  root  3, 1 Jul  5  2000 /dev/hda1
brw-rw----  1 root  root  3, 2 Jul  5  2000 /dev/hda2
brw-rw----  1 root  root  3, 3 Jul  5  2000 /dev/hda3

块设备是指那个能够从设备的人身自由地方读取放肆长度数据的设施。各个块设备同样有二个配备号,设备号由主设备号和次设备号组合。同期Linux也选拔管理文件同样的方法来治本块设备,每种块设备在/dev/目录下都有多少个一见钟情的配备文件,即设备节点,它们富含了设备的品种、主/次设备号以及设备的访谈权限决定等,系统经过配备文件来对块设备开展操作,各个块设备文件皆有投机的与常见文书一律的公文操作函数组结构(struct file_operations)。但块设备亟需完结的操作方法远比字符设备的操作方法多得多,也难得多。块设备既可以够作为常常的裸设备用来存放在放肆数据,也足以将块设备按某种文件系统类型的格式举办格式化,然后遵照该文件系统类型的格式来读取块设备上的数码,但随意哪一种艺术,最终访问设备上的数量都必需经过调用设备自己的操作方法完结,不一致在于后面一个直接调用块设备的操作方法,而后人则直接调用块设备的操作方法。常见的块设备有种种硬盘、flash磁盘、RAM磁盘等。

互联网设施

网络设施分裂于字符设备和块设备,它是面向报文的实际不是面向流的,它不接济随机寻访,也远非央浼缓冲区。在Linux里叁个网络设施也可以叫做三个网络接口,如eth0,应用程序是经过Socket并非装备节点来走访网络设施,在系统里根本就一纸空文互联网设施节点。

互联网接口用来与任何设备交流数据,它能够是硬件设施,也能够是纯软件设施,如loopback接口正是一个纯软件设施。网络接口由基本中的互联网子系统驱动,负担发送和收受数据包,但它无需驾驭每项业务怎么着映射到骨子里传送的数据包,多数网络连接(尤其是接纳TCP合同的连接)是面向流的,但互联网设施围绕数据包的传输和收取设计。网络驱动程序无需掌握种种连接的连带音讯,它只需处理数据包。互联网接口未有像字符设备和块设备同样的设施号,唯有八个独一的名字,如eth0、eth1等,而这一个名字也无需与道具文件节点对应。内核使用一套与数量包传输相关的函数来与网络设施驱动程序通讯,它们分裂于字符设备和块设备的read()和write()方法。

配备节点、设备驱动及设施的关联
     当大家拜谒多个设备节点是,系统是假使理解使用哪个设备驱动及拜会哪个设备的吧?这一个是由此配备号来兑现的。当大家创造多少个设备节点时索要钦赐主设备号和次设备号。对于设备节点的话,名字不是至关重大的,设备号才是最要害的,它事实上钦命了相应的驱动程序和呼应的设施。

Linux的装置处理是和文件系统紧凑结合的,种种道具都以文件的情势寄存在/dev目录下,称为设备文件。应用程序能够张开、关闭和读写这么些设备文件,实现对设施的操作,就好像操作普通的数据文件一样。为了管住这么些设备,系统为器材编了号,各类设备号又分为主设备号和次设备号。主设备号用来差异不相同类别的器具,而次设备号用来分别同一品种的几个设备。对于常用器械,Linux有约定俗成的号码,如硬盘的主设备号是3。

 

      Linux为持有的配备文件都提供了统一的操作函数接口,方法是应用数据结构struct file_operations。那些数据结构中总结广大操作函数的指针,如open()、close()、read()和write()等,但由于外设的类型相当多,操作办法各不相同样。Struct file_operations结构体中的成员为一名目大多的接口函数,如用于读/写的read/write函数和用来调控的ioctl等。展开贰个文书正是调用这几个文件file_operations中的open操作。区别系列的文本有不相同的file_operations成员函数,如一般的磁盘数据文件,接口函数达成磁盘数据块读写操作;而对于各个设施文件,则最后调用各自驱动程序中的I/O函数实行具体设备的操作。这样,应用程序根本没有供给思量操作的是道具或许日常文书,可一律充任文件管理,具有特别显然统一的I/O接口。所以file_operations是文件档次的I/O接口。

 

主设备号

驱动程序在开首化时,会登记它的驱动及对应主设备号到系统中,那样当应用程序访问设备节点时,系统就明白它所拜候的驱动程序了。你能够通过/proc/devices文件来驱动系统道具的主设备号。

次设备号

驱动程序遍历设备时,每发现一个它能使得的设施,就创办贰个配备对象,并为其分配贰个次设备号以界别区别的设施。那样当应用程序访谈设备节点时驱动程序就足以遵照次设备号知道它说访谈的装置了。

系统中的每一个字符设备和块设备(网络接口未有器械号)都有五个设施号,古板的UNIX以及开始时期版本Linux中的设备号是拾几人的,主次设备号都以8位的,低8位为次设备号,高8位为主设备号,由此系统最多分别援助655四二十一个字符设备和65539个块设备,这些范围已经不能够满足当下见惯不惊的种种新设施的须求,所以Linux2.6中对器材号已经进行了扩展,三个装置号为叁十个人,主设备号为十一个人,次设备号为十八个人,可是那三十人设备号的编码方式有新旧二种,旧的装置编号格式为:最高11个人为主设备号,最低十肆个人为次设备号;新的配备编号格式为:bit[19:8]是主设备号,bit[31:20]是次设备号的高十一位,bit[7:0]是次设备号的低8位。借使明白了八个配备的主设备号major和次设备号minor,那么用MKDEV(major,minor)生成是该设施的旧格式的设施号,用new_encode_dev(MKDEV(major,minor))生成的则是新格式的设备号。Linux帮助的各样器具的主设备号定义在include/linux/major.h文件中,而现已在法定注册的主设备号和次设备号在Documentation/devices.txt文件中得以找到。

老式拾二位设备号、三十四人旧格式设备号以及叁拾四位新格式设备号的改动操作函数如下:

new_encode_dev(dev_t dev)函数

将33位旧格式设备号dev转换到三拾个人新格式设备号。

new_decode_dev(u32 dev)函数

将叁十一人新格式设备号转变来三十三人旧格式设备号。

old_encode_dev(dev_t dev)函数

将三贰十位旧格式设备号转变到老式拾陆个人设备号。

dev_t old_decode_dev(u16 val)函数

将老式十四人设备号转变到叁13人旧格式设备号。

Linux中装置节点是通过“mknod”命令来创制的。三个配备节点其实正是四个文本,Linux中称之为设备文件。有少数必须表达的是,在Linux中,全体的配备访谈都以经过文件的诀要,寻常的数据文件程序普通文书,设备节点称为设备文件。在Linux内核中网络设施也是经过文件操作的,称为网络设施文件,在客户空间是因而socket接口来拜候的。socket号正是互联网设施文件陈述符。

如:mknod /dev/mydevice c 254 0

(c代表子都器具,254为主设备号,0为次设备号)

Open,close等操作/dev/下器械文件,内核依据文件的主设备号找到呼应的设备驱动

主设备号可以分为动态和静态申请。

配备文件

Linux使用对文件一律管理方式来治本设施,所以对于系统中的每种字符设备或然块设备都不可能不为其创设五个器具文件,这几个装置文件就是身处/dev/目录下的设备节点,它含有了该设施的配备项目(块设备或字符设备)、设备号(主设备号和次设备号)以及配备访问控制属性等。设备文件能够通过手工业用mknod命令生成也得以由udev顾客工具软件在系统运转后基于/sys目录下各种设备的其实音信创造,使用后一种艺术可以为各种设备动态分配设备号,而没有需求分配一定的设备号,假使系统中的设备非常的少,何况道具项目又是布满的,可以选取手工业格局变通设备文件,为常用设施创造八个一度分配号的配备号对应的器械文件,那样相比便于。假诺系统一点都不小,系统中的设备太多,那么最佳动态分配设备号,由udev在系统运营之后听新闻说设备实际音信自动创造设备文件。

本文由www.pj911.com-wwwpj911com新萄京娱乐网址发布于印刷出版,转载请注明出处:www.pj911.com:道具号由主设备号和次设备号组合,

关键词: