devfs、sysfs、udev讓你全方位認(rèn)識(shí)
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-04 15:37:26
一、devfs
linux下有專門的文件系統(tǒng)用來對(duì)設(shè)備進(jìn)行管理,devfs和sysfs就是其中兩種。
在2.6內(nèi)核以前一直使用的是devfs,devfs掛載于/dev目錄下,提供了一種類似于文件的方法來管理位于/dev目錄下的所有設(shè)備,我們知道/dev目錄下的每一個(gè)文件都對(duì)應(yīng)的是一個(gè)設(shè)備,至于當(dāng)前該設(shè)備存在與否先且不論,而且這些特殊文件是位于根文件系統(tǒng)上的,在制作文件系統(tǒng)的時(shí)候我們就已經(jīng)建立了這些設(shè)備文件,因此通過操作這些特殊文件,可以實(shí)現(xiàn)與內(nèi)核進(jìn)行交互。但是devfs文件系統(tǒng)有一些缺點(diǎn),例如我的U盤可能對(duì)應(yīng)sda有可能對(duì)應(yīng)sdb;沒有足夠的主/輔設(shè)備號(hào),當(dāng)設(shè)備過多的時(shí)候,顯然這會(huì)成為一個(gè)問題;/dev目錄下文件太多而且不能表示當(dāng)前系統(tǒng)上的實(shí)際設(shè)備;命名不夠靈活,不能任意指定等等。
devfs是一種虛擬文件系統(tǒng)。只是在需要時(shí)才動(dòng)態(tài)地生成需要的設(shè)備文件。
內(nèi)核添加 devfs 支持后,內(nèi)核開始啟動(dòng),設(shè)備驅(qū)動(dòng)程式開始向系統(tǒng)的剩余部分注冊(cè)設(shè)備,基于內(nèi)核的設(shè)備驅(qū)動(dòng)程式通過調(diào)用 register_blkdev()或 register_chrdev() 向系統(tǒng)的其余部分注冊(cè)設(shè)備。
二、sysfs
正因?yàn)樯鲜鲞@些問題的存在,在linux2.6內(nèi)核以后,引入了一個(gè)新的文件系統(tǒng)sysfs,它掛載于/sys目錄下,跟devfs一樣它也是一個(gè)虛擬文件系統(tǒng),也是用來對(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è)備樹的一個(gè)直觀反應(yīng),它是通過kobject子系統(tǒng)來建立這個(gè)信息的,當(dāng)一個(gè)kobject被創(chuàng)建的時(shí)候,對(duì)應(yīng)的文件和目錄也就被創(chuàng)建了,位于/sys下的相關(guān)目錄下,既然每個(gè)設(shè)備在sysfs中都有對(duì)應(yīng)的目錄,那么也就可以被用戶空間讀寫了。很多用戶的空間的工具就是利用了就是利用了sysfs提供的信息來實(shí)現(xiàn)所有devfs的功能的,但是udev運(yùn)行在用戶空間中,而devfs卻運(yùn)行在內(nèi)核空間,這樣很顯然,sysfs是以后發(fā)展著重要把握的方向。
sysfs 文件系統(tǒng)有通常的樹結(jié)構(gòu), 反映它代表的 kobjects 的層次組織。 但是內(nèi)核中對(duì)象間的關(guān)系常常比那個(gè)更加復(fù)雜。 例如, 一個(gè) sysfs 子樹 (/sys/devices )代表所有的系統(tǒng)已知的設(shè)備, 而其他的子樹( 在 /sys/bus 之下 )表示設(shè)備驅(qū)動(dòng)。 這些樹, 但是, 不代表驅(qū)動(dòng)和它們所管理的設(shè)備間的關(guān)系。 展示這些附加關(guān)系需要額外的指針, 指針在 sysfs 中通過符號(hào)連接實(shí)現(xiàn)。
The top level sysfs directory looks like:
bus/
class/
devices/
firmware/
net/
fs/
devices/ contains a filesystem representation of the device tree. It maps
directly to the internal kernel device tree, which is a hierarchy of
struct device.
bus/ contains flat directory layout of the various bus types in the
kernel. Each bus's directory contains two subdirectories:
devices/
drivers/
devices/ contains symlinks for each device discovered in the system
that point to the device's directory under root/.
drivers/ contains a directory for each device driver that is loaded
for devices on that particular bus (this assumes that drivers do not
span multiple bus types)。
fs/ contains a directory for some filesystems. Currently each
filesystem wanting to export attributes must create its own hierarchy
below fs/ (see ./fuse.txt for an example)。
三、udev
udev是一種工具,它能夠根據(jù)系統(tǒng)中的硬件設(shè)備的狀況動(dòng)態(tài)更新設(shè)備文件,包括設(shè)備文件的創(chuàng)建,刪除等。設(shè)備文件通常放在/dev目錄下,使用udev后,在/dev下面只包含系統(tǒng)中真實(shí)存在的設(shè)備。它于硬件平臺(tái)無關(guān)的,位于用戶空間,需要內(nèi)核sysfs和tmpfs的支持,sysfs為udev提供設(shè)備入口和uevent通道,tmpfs為udev設(shè)備文件提供存放空間。
Linux 傳統(tǒng)上使用靜態(tài)設(shè)備創(chuàng)建方法,因此大量設(shè)備節(jié)點(diǎn)在 /dev 下創(chuàng)建(有時(shí)上千個(gè)),而不管相應(yīng)的硬件設(shè)備是否真正存在。通常這由一個(gè)MAKEDEV腳本實(shí)現(xiàn),這個(gè)腳本包含了許多通過世界上每一個(gè)可能存在的設(shè)備相關(guān)的主設(shè)備號(hào)和次設(shè)備號(hào)對(duì)mknod程序的調(diào)用。采用udev的方法,只有被內(nèi)核檢測(cè)到的設(shè)備才會(huì)獲取為它們創(chuàng)建的設(shè)備節(jié)點(diǎn)。因?yàn)檫@些設(shè)備節(jié)點(diǎn)在每次系統(tǒng)啟動(dòng)時(shí)被創(chuàng)建,他們會(huì)被貯存在ramfs。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 高速PCB阻抗控制核心實(shí)操規(guī)范
- 高速數(shù)字系統(tǒng)(如DDR、SerDes)中的信號(hào)完整性濾波
- MOSFET在UPS電源中的應(yīng)用解析
- 電源管理IC在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用
- SMT連接器焊接缺陷分析
- MOSFET在汽車電子中的應(yīng)用要求
- 通信設(shè)備電源管理IC應(yīng)用解析
- 通信設(shè)備連接器選型與設(shè)計(jì)
- PCB電磁兼容性(EMC)設(shè)計(jì)核心實(shí)操規(guī)范
- 物聯(lián)網(wǎng)節(jié)點(diǎn)低功耗設(shè)計(jì):信號(hào)鏈中的濾波與功耗管理









