裝置檔案系統
裝置檔案佇類 Unix 系統內底是一个裝置驅動程式的介面,並且如常規檔案仝款出現佇檔案系統中。
佇咧微軟仔 MS-DOS、OS 鋪二和 Windows 等作業系統內底嘛有專門的裝置檔案。𪜶允准應用程式使用裝置驅動程式,通過標準輸入輸出系統呼叫佮趕動程式互動,對而且簡省足濟工的,嘛有紮來佮裝置特性、功能無關係的使用者級 I / O。
裝置檔案通常替周邊裝置提供簡單的介面,如印表機。伊嘛是會當存取遮的裝置的特定資源,如硬碟分割區。伊閣會當存取無連接著任何真實裝置的系統資源,如資料接受器佮亂數生成器。
佇類 Unix 作業系統中包含兩類裝置節點,分別為字元檔案佮塊檔案。𪜶的區別是作業系統佮硬體如欲共𪜶讀寫資料。𪜶就叫𪜶就叫裝置特定的檔案,佮之對應的是號名的管道,伊也無連接著任何的裝置,嘛毋是一个檔案。
MS-DOS 的裝置檔案借鑑矣 Unix 的特殊檔案的概念。MS-DOS 的早期版本並無支援檔案 kha-tá-lok-guh 層次,裝置檔案的檔名被設定做保留字以區分普通檔案,新檔案抑是新檔案 kha-tá-lok-guh 袂當使用遮的裝置檔案的檔名。
咧支援 chroot 行程獨立的 Unix 系統(比如講 Solaris Containers)中,彼每一个 chroot 環境常在規个狀況下攏需要一个獨立的 / dev , 𪜶的掛載點佇主機的檔案系統中各種所在顯示。通過限制裝置節點干焦會當囥入 / dev 內的 chroot 實例中,chroot環境會當強制實行硬體隔離(比 Unix 的檔案系統權限愛閣嚴格的一種存取控制,會使禁止特定應用程式存號抑是號名硬體)。
MS-DOS 通過開放裝置檔案的形式保證了裝置包含性,應用程式試驗存取當咧被使用的裝置時會無法度存取裝置節點。Unix 佮 Linux 佇閣控制頂懸採取真濟種裝置驅動程式的原理。
實現
本質上講,裝置節點對應該作業系統分配的資源。Unix 通過幾若節點結構當中的 _ 主裝置號 _ 和 _ 對裝置號 _ 來辨識遮的資源。佇各種作業系統佮系統平台頂,遮的數攏是予人唯一分配的。通常,主數用佇指定驅動程式,幾若擺數用佇指定驅動程式控制的某一特定裝置(趕動程式可能控制較濟裝置), 佇這个情形下,系統可能共次數做參數傳予振動的程式。
電腦就像對待普通檔案彼款,用標準系統呼叫存取裝置節點。根據硬體的介面類型佮作業系統處理輸入輸出的方式,裝置檔案會當分做兩類。
裝置
字元裝置
_ 字元裝置 _ 是講逐改佮系統傳輸一字元的裝置。遮的裝置節點通常替傳真、虛擬終端和序列埠頭數據機之類裝置提供流通信的服務,伊通常毋支援隨機存取資料。
字元裝置佇咧實現時,濟濟無用緊取記持的。系統直接對裝置讀冊/寫入去每一字元。
塊裝置
_ 塊裝置 _ 是講佮系統間用塊的方式行動資料的裝置。遮的裝置節點通常代表會當裝置,如硬碟、CD-ROM 佮記持體區域。
塊裝置通常支援隨機存號和彼个定址,而且使用緊取記憶體。作業系統為輸入輸出分配了緊取以儲存一塊資料。當程式向裝置傳送矣讀取抑是寫入資料的請求的時陣,系統共資料中的每一字元儲存佇適當的快取中。緊號添予滇起來,會採取適當的操作(共資料傳走), 若系統清空緊取。
偽裝置
佇類 Unix 作業系統當中,裝置節點並無一定愛對應物理裝置。無這種對應關係的裝置是 _ 偽裝置 _。作業系統運用𪜶提供的足濟種功能。部份定定咧使用的偽裝置包括:
` / dev / null `
- 接受並擲捒所有輸入;即不產生任何輸出。
` / dev / full `
- 永遠咧予人填滿狀態的裝置。
` / dev / loop `: Loop 裝置
` / dev / zero `
- 產生連紲的 NUL 字元的串流 ( 數值為零 )。
` / dev / random `
- 產生一个虛假隨機的任意長度字元串流。( Blocking )
` / dev / urandom `
- 產生一个虛假隨機的任意長度字元串流。( Non-Blocking )
建立節點
節點是由 _ mknod _ 系統呼叫建立的。佇咧命令列中,有仝名的程式來建立節點。rename 和 unlink 系統呼叫會當用佇咧徙動佮刪除節點,相應的命令是講 mv 和 rm。咧使用 cp 命令的時加上 `-R ` 抑是 `-a ` 參數,會當建立一个佮原裝置節點具有仝款屬性的節點。
號名約定
佇基於 Linux 的系統內底,裝置節點一般咧 ` / dev ` 落,通常使用如下的字條:
- fb:frame 勻勻仔衝
- fd:軟碟
- hd:IDE 硬碟仔抑是光碟機
- lp:印表機
- par:並列埠頭
- pt:偽終端
- s:SCSI 裝置
- scd:SCSI 音訊光碟機
- sd:SCSI 硬碟
- sg:SCSI 通用裝置
- sr:SCSI 資料光碟機
- st:SCSI 磁帶
- tty:終其尾
- ttyS:序列埠頭大部份裝置的字首名後壁佮隨一个數字,伊唯一指定某一裝置。硬碟機的字條名後壁跟綴一字母佮一个數字,字母用佇指明裝置,數字用佇指明分割區。所以,` / dev / sda 三 ` 指定矣硬碟上的一个分割區,` / dev / pts / 十四 ` 指定一个網路終對談。
一寡仔 Linux 發行版用 SCSI 層來定義非 IDE 硬碟的硬碟裝置,比如講 SATA 硬碟、USB 磁碟等,因此雖然一塊硬碟可能並毋是 SCSI 硬碟,但是猶會當通過 ` sd ` 裝置共存取。