裝置檔案系統
裝置檔案在類 Unix 系統裡肚係一個裝置驅動程式个介面,乜像係常規檔案共樣出現在檔案系統肚。
在軟軟个 MS-DOS、OS 兩子爺 Windows 等作業系統當中也有專門个裝置檔案。佢兜做得用程式使用裝置驅動程式,通過標準輸入輸出系統呼籲摎驅動程式互動,簡單就簡化著當多工,乜帶來欸同裝置特性、功能無關係使用者級 I / O。
裝置檔案一般係周邊裝置提供簡單个介面,比方講印表機。佢也做得存在這兜裝置个特定資源,像係硬碟分割區。佢還做得存取無連接著任何真實裝置个系統資源,像資料接受器還有亂數生成器。
在類 Unix 作業系統當中包含兩類裝置較節點,分別係字元个檔案摎塊檔案。佢兜个區別係作業系統摎硬體仰仔向佢兜讀寫資料。佢兜合安到裝置特定个檔案,摎之對應个係安名管道,佢既毋連接著任何裝置,也毋係一個檔案。
MS-DOS 个裝置檔案借鑑了 Unix 个特殊檔案个概念。MS-DOS 个早期版本毋支援檔案目錄層次,裝置檔案个檔案分人設定做保留字以區分普通檔案,新檔案或者新目錄做毋得使用這兜裝置檔案个檔案名。
在該支援 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 ` 裝置存取佢。