新聞中心

        devfs、sysfs、udev

        作者: 時(shí)間:2011-02-24 來源:網(wǎng)絡(luò) 收藏
        一、devfs
        linux下有專門的文件系統(tǒng)用來對設(shè)備進(jìn)行管理,devfs和sysfs就是其中兩種。
        在2.6內(nèi)核以前一直使用的是devfs,devfs掛載于/dev目錄下,提供了一種類似于文件的方法來管理位于/dev目錄下的所有設(shè)備,我們知道/dev目錄下的每一個(gè)文件都對應(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),例如:不確定的設(shè)備映射,有時(shí)一個(gè)設(shè)備映射的設(shè)備文件可能不同,例如我的U盤可能對應(yīng)sda有可能對應(yīng)sdb;沒有足夠的主/輔設(shè)備號,當(dāng)設(shè)備過多的時(shí)候,顯然這會成為一個(gè)問題;/dev目錄下文件太多而且不能表示當(dāng)前系統(tǒng)上的實(shí)際設(shè)備;命名不夠靈活,不能任意指定等等。
        二、sysfs
        正因?yàn)樯鲜鲞@些問題的存在,在linux2.6內(nèi)核以后,引入了一個(gè)新的文件系統(tǒng)sysfs,它掛載于/sys目錄下,跟devfs一樣它也是一個(gè)虛擬文件系統(tǒng),也是用來對系統(tǒng)的設(shè)備進(jìn)行管理的,它把實(shí)際連接到系統(tǒng)上的設(shè)備和總線組織成一個(gè)分級的文件,用戶空間的程序同樣可以利用這些信息以實(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í)候,對應(yīng)的文件和目錄也就被創(chuàng)建了,位于/sys下的相關(guān)目錄下,既然每個(gè)設(shè)備在sysfs中都有唯一對應(yīng)的目錄,那么也就可以被用戶空間讀寫了。用戶空間的工具udev就是利用了sysfs提供的信息來實(shí)現(xiàn)所有devfs的功能的,但不同的是udev運(yùn)行在用戶空間中,而devfs卻運(yùn)行在內(nèi)核空間,而且udev不存在devfs那些先天的缺陷。很顯然,sysfs將是未來發(fā)展的方向。
        The top level sysfs directory looks like:
        block/
        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è)備的狀況動態(tài)更新設(shè)備文件,包括設(shè)備文件的創(chuàng)建,刪除等。設(shè)備文件通常放在/dev目錄下,使用udev后,在/dev下面只包含系統(tǒng)中真實(shí)存在的設(shè)備。它于硬件平臺無關(guān)的,位于用戶空間,需要內(nèi)核sysfs和tmpfs的支持,sysfs為udev提供設(shè)備入口和uevent通道,tmpfs為udev設(shè)備文件提供存放空間。


        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 永丰县| 哈密市| 尼勒克县| 恩施市| 磐安县| 万盛区| 永春县| 东方市| 隆尧县| 巢湖市| 葵青区| 客服| 武宁县| 卢氏县| 和林格尔县| 日土县| 黑龙江省| 无锡市| 舟山市| 民和| 延长县| 聂拉木县| 株洲市| 同江市| 车险| 长寿区| 保康县| 海宁市| 平遥县| 宜宾市| 荆州市| 丰台区| 新昌县| 德昌县| 行唐县| 松滋市| 盐亭县| 富宁县| 澜沧| 汤原县| 永定县|