linux下有專門(mén)的文件系統(tǒng)用來(lái)對(duì)設(shè)備進(jìn)行管理,devfs和sysfs就是其中2種。
在2.6
內(nèi)核以前一直使用的是devfs,devfs掛載于/dev目錄下,提供了一種類似于文件的方法來(lái)管理位于/dev目錄下的所有設(shè)備,我們知道/dev目
錄下的每一個(gè)文件都對(duì)應(yīng)的是一個(gè)設(shè)備,至于當(dāng)前該設(shè)備存在與否先且不論,而且這些特殊文件是位于根文件系統(tǒng)上的,在制作文件系統(tǒng)的時(shí)候我們就已經(jīng)建立了這
些設(shè)備文件,因此通過(guò)操作這些特殊文件,可以實(shí)現(xiàn)與內(nèi)核進(jìn)行交互。但是devfs文件系統(tǒng)有一些缺點(diǎn),例如:不確定的設(shè)備映射,有時(shí)一個(gè)設(shè)備映射的設(shè)備文
件可能不同,例如我的U盤(pán)可能對(duì)應(yīng)sda有可能對(duì)應(yīng)sdb;沒(méi)有足夠的主/輔設(shè)備號(hào),當(dāng)設(shè)備過(guò)多的時(shí)候,顯然這會(huì)成為一個(gè)問(wèn)題;/dev目錄下文件太多而
且不能表示當(dāng)前系統(tǒng)上的實(shí)際設(shè)備;命名不夠靈活,不能任意指定等等。
正因?yàn)樯鲜鲞@些問(wèn)題的存在,在linux2.6內(nèi)核以后,引入了一
個(gè)新
的文件系統(tǒng)sysfs,它掛載于/sys目錄下,跟devfs一樣它也是一個(gè)虛擬文件系統(tǒng),也是用來(lái)對(duì)系統(tǒng)的設(shè)備進(jìn)行管理的,它把實(shí)際連接到系統(tǒng)上的設(shè)備
和總線組織成一個(gè)分級(jí)的文件,用戶空間的程序同樣可以利用這些信息以實(shí)現(xiàn)和內(nèi)核的交互,該文件系統(tǒng)是當(dāng)前系統(tǒng)上實(shí)際設(shè)備樹(shù)的一個(gè)直觀反應(yīng),它是通過(guò)
kobject子系統(tǒng)來(lái)建立這個(gè)信息的,當(dāng)一個(gè)kobject被創(chuàng)建的時(shí)候,對(duì)應(yīng)的文件和目錄也就被創(chuàng)建了,位于/sys下的相關(guān)目錄下,既然每個(gè)設(shè)備在
sysfs中都有唯一對(duì)應(yīng)的目錄,那么也就可以被用戶空間讀寫(xiě)了。用戶空間的工具udev就是利用了sysfs提供的信息來(lái)實(shí)現(xiàn)所有devfs的功能的,
但不同的是udev運(yùn)行在用戶空間中,而devfs卻運(yùn)行在內(nèi)核空間,而且udev不存在devfs那些先天的缺陷。很顯然,sysfs將是未來(lái)發(fā)展的方
向。