站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        什么是linux設(shè)備文件

        在linux中,設(shè)備文件是設(shè)備驅(qū)動(dòng)程序的接口,允許應(yīng)用程序通過(guò)標(biāo)準(zhǔn)輸入輸出系統(tǒng)調(diào)用使用其設(shè)備驅(qū)動(dòng)程序與設(shè)備進(jìn)行交互。linux系統(tǒng)中有兩種常用的設(shè)備文件:字符特殊文件和塊特殊文件,它們間的區(qū)別在于操作系統(tǒng)和硬件讀取和寫(xiě)入的數(shù)據(jù)量。

        什么是linux設(shè)備文件

        本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。

        Linux設(shè)備文件(Device file)

        設(shè)備文件概述

        在類(lèi)Unix操作系統(tǒng)中,設(shè)備文件或特殊文件是設(shè)備驅(qū)動(dòng)程序的接口,出現(xiàn)在文件系統(tǒng)中就好像它是普通文件一樣。在MS-DOS,OS / 2和Microsoft Windows中也有特殊文件。 這些特殊文件允許應(yīng)用程序通過(guò)標(biāo)準(zhǔn)輸入/輸出系統(tǒng)調(diào)用使用其設(shè)備驅(qū)動(dòng)程序與設(shè)備進(jìn)行交互。使用標(biāo)準(zhǔn)系統(tǒng)調(diào)用簡(jiǎn)化了許多編程任務(wù),并且無(wú)論設(shè)備的特性和功能如何,都可以實(shí)現(xiàn)一致的用戶(hù)空間I / O機(jī)制。

        設(shè)備文件通常提供與標(biāo)準(zhǔn)設(shè)備(如打印機(jī)和串行端口)的簡(jiǎn)單接口,但也可用于訪(fǎng)問(wèn)這些設(shè)備(如磁盤(pán)分區(qū))上的特定獨(dú)特資源。此外,設(shè)備文件對(duì)于訪(fǎng)問(wèn)與任何實(shí)際設(shè)備(如數(shù)據(jù)接收器和隨機(jī)數(shù)生成器)無(wú)關(guān)的系統(tǒng)資源非常有用。

        什么是linux設(shè)備文件圖1 應(yīng)用程序、塊文件、驅(qū)動(dòng)、硬件之間的關(guān)系

        類(lèi)Unix操作系統(tǒng)中有兩種常用的設(shè)備文件,稱(chēng)為字符特殊文件和塊特殊文件。它們之間的區(qū)別在于操作系統(tǒng)和硬件讀取和寫(xiě)入的數(shù)據(jù)量。 與命名管道不同,它們可以稱(chēng)為設(shè)備專(zhuān)用文件,但命名管道并不連接到設(shè)備,但也不是普通文件。

        在一些類(lèi)Unix系統(tǒng)中,大多數(shù)設(shè)備文件作為傳統(tǒng)上安裝在/ dev的虛擬文件系統(tǒng)的一部分進(jìn)行管理,可能與控制守護(hù)進(jìn)程相關(guān)聯(lián),該守護(hù)進(jìn)程在運(yùn)行時(shí)監(jiān)視硬件添加和刪除,對(duì)設(shè)備文件系統(tǒng)進(jìn)行相應(yīng)更改,如果對(duì)設(shè)備文件系統(tǒng)進(jìn)行更改的操作不是內(nèi)核自動(dòng)完成的,則控制守護(hù)進(jìn)程可能調(diào)用系統(tǒng)或用戶(hù)空間中的腳本來(lái)處理特殊設(shè)備需求。

        FreeBSD和DragonFly BSD實(shí)現(xiàn)已經(jīng)命名了虛擬設(shè)備文件系統(tǒng)devfs和關(guān)聯(lián)的守護(hù)進(jìn)程devd。 Linux主要使用稱(chēng)為udev的用戶(hù)空間實(shí)現(xiàn),但有許多變體。 Darwin以及基于它的macOS等操作系統(tǒng)都有純粹的基于內(nèi)核的設(shè)備文件系統(tǒng)。

        在支持chroot進(jìn)程隔離的Unix系統(tǒng)中,比如Solaris Containers,通常每個(gè)chroot環(huán)境都需要它自己的/ dev; 這些安裝點(diǎn)將在全局文件系統(tǒng)樹(shù)中各個(gè)節(jié)點(diǎn)上的主機(jī)操作系統(tǒng)上可見(jiàn)。通過(guò)限制將設(shè)備節(jié)點(diǎn)填充到/ dev的chroot實(shí)例中,硬件隔離可以由chroot環(huán)境強(qiáng)制實(shí)施(程序不能插入硬件,它既不能看到也不能訪(fǎng)問(wèn)名稱(chēng) – 這是比Unix文件系統(tǒng)權(quán)限更強(qiáng)的訪(fǎng)問(wèn)控制形式)。

        設(shè)備節(jié)點(diǎn)對(duì)應(yīng)于操作系統(tǒng)內(nèi)核已經(jīng)分配的資源。 Unix通過(guò)一個(gè)主號(hào)碼和一個(gè)次號(hào)碼來(lái)標(biāo)識(shí)這些資源, 都作為節(jié)點(diǎn)結(jié)構(gòu)的一部分存儲(chǔ)。 這些編號(hào)的分配在不同的操作系統(tǒng)和不同的計(jì)算機(jī)平臺(tái)上獨(dú)特地發(fā)生。通常,主號(hào)碼標(biāo)識(shí)設(shè)備驅(qū)動(dòng)程序,次號(hào)碼標(biāo)識(shí)驅(qū)動(dòng)程序控制的特定設(shè)備(可能超出許多設(shè)備): 在這種情況下,系統(tǒng)可能會(huì)將次號(hào)碼傳遞給驅(qū)動(dòng)程序。 但是,在動(dòng)態(tài)分配數(shù)字的情況下,情況可能并非如此(例如,在FreeBSD 5及更高版本上)。

        與其他特殊文件類(lèi)型一樣,計(jì)算機(jī)系統(tǒng)使用標(biāo)準(zhǔn)系統(tǒng)調(diào)用訪(fǎng)問(wèn)設(shè)備節(jié)點(diǎn),并將它們視為普通計(jì)算機(jī)文件。存在兩種標(biāo)準(zhǔn)類(lèi)型的設(shè)備文件; 不幸的是,由于歷史原因,他們的名字相當(dāng)反直覺(jué),因此解釋兩者之間的差異通常是不正確的。

        塊文件分類(lèi)

        字符設(shè)備(Character devices

        字符特殊文件或字符設(shè)備提供無(wú)緩沖,直接訪(fǎng)問(wèn)硬件設(shè)備。 它們不一定允許程序一次讀取或?qū)懭雴蝹€(gè)字符; 這取決于所討論的設(shè)備。 例如,硬盤(pán)的字符設(shè)備通常會(huì)要求所有讀寫(xiě)操作都對(duì)齊到塊邊界,并且絕對(duì)不允許讀取單個(gè)字節(jié)。

        字符設(shè)備有時(shí)被稱(chēng)為原始設(shè)備,以避免圍繞一個(gè)基于塊的硬件的字符設(shè)備通常需要程序讀取和寫(xiě)入對(duì)齊的塊的事實(shí)混淆。

        塊設(shè)備(Block devices

        塊特殊文件或塊設(shè)備提供對(duì)硬件設(shè)備的緩沖存取,并提供一些抽象的細(xì)節(jié)。 與字符設(shè)備不同,塊設(shè)備將始終允許程序員讀取或?qū)懭肴魏未笮〉膲K(包括單個(gè)字符/字節(jié))和任何對(duì)齊。缺點(diǎn)是由于塊設(shè)備被緩沖,編程人員不知道在寫(xiě)入數(shù)據(jù)從內(nèi)核的緩沖區(qū)傳遞到實(shí)際設(shè)備之前需要多長(zhǎng)時(shí)間,或者實(shí)際上兩個(gè)單獨(dú)的寫(xiě)入將以什么順序到達(dá)物理設(shè)備? 此外,如果相同的硬件暴露字符和塊設(shè)備,則由于客戶(hù)端使用字符設(shè)備不知道塊設(shè)備的緩沖區(qū)中所做的更改而導(dǎo)致數(shù)據(jù)損壞的風(fēng)險(xiǎn)。

        偽設(shè)備(Pseudo-devices

        類(lèi)Unix系統(tǒng)上的設(shè)備節(jié)點(diǎn)不一定要與物理設(shè)備相對(duì)應(yīng)。缺乏這種對(duì)應(yīng)關(guān)系的節(jié)點(diǎn)形成了一組偽裝置。 它們提供操作系統(tǒng)處理的各種功能。 一些最常用的(基于字符的)偽裝置包括:

        / dev / null - 接受并放棄所有輸入; 不產(chǎn)生輸出(總是在讀取時(shí)返回文件結(jié)束指示) / dev / zero - 接受并放棄所有輸入; 產(chǎn)生連續(xù)的NUL(零值)字節(jié)流 / dev / full - 讀取時(shí)會(huì)產(chǎn)生連續(xù)的NUL(零值)字節(jié)流,并在寫(xiě)入時(shí)返回“磁盤(pán)已滿(mǎn)”消息 / dev / random和/ dev / urandom - 它們產(chǎn)生一個(gè)可變長(zhǎng)度的偽隨機(jī)數(shù)字流。

        節(jié)點(diǎn)創(chuàng)建

        節(jié)點(diǎn)由mknod系統(tǒng)調(diào)用創(chuàng)建。用于創(chuàng)建節(jié)點(diǎn)的命令行程序也稱(chēng)為mknod。 通常的文件系統(tǒng)調(diào)用(重命名,取消鏈接)和命令(mv,rm)可以移動(dòng)或刪除節(jié)點(diǎn)。 當(dāng)復(fù)制設(shè)備節(jié)點(diǎn)時(shí)傳遞選項(xiàng)-R或-a時(shí),cp -l命令會(huì)創(chuàng)建一個(gè)與原始屬性相同的新設(shè)備節(jié)點(diǎn)。

        某些Unix版本包含一個(gè)名為makedev或MAKEDEV的腳本,用于在目錄/ dev中創(chuàng)建所有必需的設(shè)備。 只有在其設(shè)備被靜態(tài)分配主要編號(hào)的系統(tǒng)上(例如,通過(guò)在其內(nèi)核模塊中對(duì)其進(jìn)行硬編碼)才有意義。

        塊文件命名規(guī)則

        以下前綴用于/ dev層次結(jié)構(gòu)中某些設(shè)備的名稱(chēng),以標(biāo)識(shí)設(shè)備的類(lèi)型:

        lp:行式打印機(jī)(比較lp) pt:偽終端(虛擬終端) tty:終端 一些額外的前綴已經(jīng)在一些操作系統(tǒng)中普遍使用:   fb:幀緩沖區(qū) fd :(平臺(tái))軟盤(pán),盡管這個(gè)縮寫(xiě)也常用來(lái)指文件描述符 高清:(“經(jīng)典”)IDE驅(qū)動(dòng)程序(以前用于ATA硬盤(pán)驅(qū)動(dòng)器,ATAPI光盤(pán)驅(qū)動(dòng)器等) hda:第一個(gè)ATA通道上的主設(shè)備(通常由主編號(hào)3和次編號(hào)0標(biāo)識(shí)) hdb:第一個(gè)ATA通道上的從屬設(shè)備 hdc:第二個(gè)ATA通道上的主設(shè)備 hdc1:此磁盤(pán)上的第一個(gè)主分區(qū)(示例) hdc5:擴(kuò)展分區(qū)中的第一個(gè)邏輯驅(qū)動(dòng)器(示例) hdd:第二個(gè)ATA通道上的從屬設(shè)備 parport,pp:并行端口 SCSI驅(qū)動(dòng)程序,也被libATA(現(xiàn)代PATA / SATA驅(qū)動(dòng)程序),USB,IEEE 1394等使用。 sd:大容量存儲(chǔ)驅(qū)動(dòng)程序 sda:首次注冊(cè)的設(shè)備 sda4:此磁盤(pán)上的最后一個(gè)分區(qū)(示例) sda6:擴(kuò)展分區(qū)中的第二個(gè)邏輯驅(qū)動(dòng)器(示例) sdb,sdc等:第二,第三等注冊(cè)設(shè)備 ses:機(jī)箱驅(qū)動(dòng)程序 sg:通用SCSI層 sr:“ROM”驅(qū)動(dòng)程序(面向數(shù)據(jù)的光盤(pán)驅(qū)動(dòng)器; scd只是一個(gè)輔助別名) st:磁帶驅(qū)動(dòng)器 tty:終端 ttyS :(平臺(tái))串口驅(qū)動(dòng)程序 ttyUSB:USB串口轉(zhuǎn)換器,調(diào)制解調(diào)器等

        在Linux中使用的前綴規(guī)范列表可以在Linux設(shè)備列表中找到,Linux設(shè)備列表是Linux操作系統(tǒng)的分配設(shè)備編號(hào)和/ dev目錄節(jié)點(diǎn)的正式注冊(cè)表。

        對(duì)于大多數(shù)設(shè)備而言,此前綴后面跟著唯一標(biāo)識(shí)特定設(shè)備的編號(hào)。 對(duì)于硬盤(pán)驅(qū)動(dòng)器,使用字母來(lái)標(biāo)識(shí)設(shè)備,然后使用數(shù)字來(lái)標(biāo)識(shí)分區(qū)。因此,文件系統(tǒng)可以通過(guò)/dev/sda3找到磁盤(pán)上的區(qū)域;把/dev/pts/14與聯(lián)網(wǎng)的終端會(huì)話(huà)聯(lián)系起來(lái)。

        操作設(shè)備文件的相關(guān)命令

        mknod

        大家如果對(duì)嵌入式感興趣,大家可以自行查看該命令的使用方法。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 91人前露出精品国产| 久久精品国产影库免费看| 狼色精品人妻在线视频| Aⅴ精品无码无卡在线观看| 精品无码AV一区二区三区不卡| 日本精品中文字幕| 2020国产精品| 久久这里只有精品18| 四虎国产精品成人| 成人国产精品秘 果冻传媒在线| 2021久久国自产拍精品| 精品人妻伦九区久久AAA片69| 视频二区国产精品职场同事| 国自产偷精品不卡在线| 在线观看亚洲精品国产| 精品国产人成亚洲区| 国产99视频精品免费视频76| 精品国产麻豆免费人成网站| 精品久久久久中文字幕日本| 亚洲乱码国产乱码精品精| 四虎影院国产精品| 午夜精品一区二区三区在线观看| 国产日韩久久久精品影院首页| 亚洲国产精品国自产拍电影| 国产精品怡红院永久免费| 国产精品成人免费福利| 99热成人精品热久久669| 99精品久久精品一区二区| 国产精品三级在线观看无码| 老司机亚洲精品影院| 亚洲Av无码精品色午夜 | 欧美日韩精品在线观看| 久久精品国产WWW456C0M| 亚洲国产精品国自产电影| 欧美精品第欧美第12页| 久久青青草原精品影院| 久久最新精品国产| 亚洲国产精品自在在线观看| 亚洲欧美日韩精品| 国产日韩久久久精品影院首页| 久久久精品国产亚洲成人满18免费网站|