久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux設備文件指的是什么

187次閱讀
沒有評論

共計 3214 個字符,預計需要花費 9 分鐘才能閱讀完成。

本篇內容介紹了“linux 設備文件指的是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在 linux 中,設備文件是設備驅動程序的接口,允許應用程序通過標準輸入輸出系統調用使用其設備驅動程序與設備進行交互。linux 系統中有兩種常用的設備文件:字符特殊文件和塊特殊文件,它們間的區別在于操作系統和硬件讀取和寫入的數據量。

本教程操作環境:linux5.9.8 系統、Dell G3 電腦。

Linux 設備文件(Device file)

設備文件概述

在類 Unix 操作系統中,設備文件或特殊文件是設備驅動程序的接口,出現在文件系統中就好像它是普通文件一樣。在 MS-DOS,OS / 2 和 Microsoft Windows 中也有特殊文件。這些特殊文件允許應用程序通過標準輸入 / 輸出系統調用使用其設備驅動程序與設備進行交互。使用標準系統調用簡化了許多編程任務,并且無論設備的特性和功能如何,都可以實現一致的用戶空間 I / O 機制。

設備文件通常提供與標準設備(如打印機和串行端口)的簡單接口,但也可用于訪問這些設備(如磁盤分區)上的特定獨特資源。此外,設備文件對于訪問與任何實際設備(如數據接收器和隨機數生成器)無關的系統資源非常有用。

圖 1 應用程序、塊文件、驅動、硬件之間的關系

類 Unix 操作系統中有兩種常用的設備文件,稱為字符特殊文件和塊特殊文件。它們之間的區別在于操作系統和硬件讀取和寫入的數據量。與命名管道不同,它們可以稱為設備專用文件,但命名管道并不連接到設備,但也不是普通文件。

在一些類 Unix 系統中,大多數設備文件作為傳統上安裝在 / dev 的虛擬文件系統的一部分進行管理,可能與控制守護進程相關聯,該守護進程在運行時監視硬件添加和刪除,對設備文件系統進行相應更改,如果對設備文件系統進行更改的操作不是內核自動完成的,則控制守護進程可能調用系統或用戶空間中的腳本來處理特殊設備需求。

FreeBSD 和 DragonFly BSD 實現已經命名了虛擬設備文件系統 devfs 和關聯的守護進程 devd。Linux 主要使用稱為 udev 的用戶空間實現,但有許多變體。Darwin 以及基于它的 macOS 等操作系統都有純粹的基于內核的設備文件系統。

在支持 chroot 進程隔離的 Unix 系統中,比如 Solaris Containers,通常每個 chroot 環境都需要它自己的 / dev; 這些安裝點將在全局文件系統樹中各個節點上的主機操作系統上可見。通過限制將設備節點填充到 / dev 的 chroot 實例中,硬件隔離可以由 chroot 環境強制實施(程序不能插入硬件,它既不能看到也不能訪問名稱 – 這是比 Unix 文件系統權限更強的訪問控制形式)。

設備節點對應于操作系統內核已經分配的資源。Unix 通過一個主號碼和一個次號碼來標識這些資源,都作為節點結構的一部分存儲。這些編號的分配在不同的操作系統和不同的計算機平臺上獨特地發生。通常,主號碼標識設備驅動程序,次號碼標識驅動程序控制的特定設備(可能超出許多設備):在這種情況下,系統可能會將次號碼傳遞給驅動程序。但是,在動態分配數字的情況下,情況可能并非如此(例如,在 FreeBSD 5 及更高版本上)。

與其他特殊文件類型一樣,計算機系統使用標準系統調用訪問設備節點,并將它們視為普通計算機文件。存在兩種標準類型的設備文件; 不幸的是,由于歷史原因,他們的名字相當反直覺,因此解釋兩者之間的差異通常是不正確的。

塊文件分類

字符設備(Character devices)

字符特殊文件或字符設備提供無緩沖,直接訪問硬件設備。它們不一定允許程序一次讀取或寫入單個字符; 這取決于所討論的設備。例如,硬盤的字符設備通常會要求所有讀寫操作都對齊到塊邊界,并且絕對不允許讀取單個字節。

字符設備有時被稱為原始設備,以避免圍繞一個基于塊的硬件的字符設備通常需要程序讀取和寫入對齊的塊的事實混淆。

塊設備(Block devices)

塊特殊文件或塊設備提供對硬件設備的緩沖存取,并提供一些抽象的細節。與字符設備不同,塊設備將始終允許程序員讀取或寫入任何大小的塊(包括單個字符 / 字節)和任何對齊。缺點是由于塊設備被緩沖,編程人員不知道在寫入數據從內核的緩沖區傳遞到實際設備之前需要多長時間,或者實際上兩個單獨的寫入將以什么順序到達物理設備?此外,如果相同的硬件暴露字符和塊設備,則由于客戶端使用字符設備不知道塊設備的緩沖區中所做的更改而導致數據損壞的風險。

偽設備(Pseudo-devices)

類 Unix 系統上的設備節點不一定要與物理設備相對應。缺乏這種對應關系的節點形成了一組偽裝置。它們提供操作系統處理的各種功能。一些最常用的(基于字符的)偽裝置包括:

/ dev / null -  接受并放棄所有輸入;  不產生輸出(總是在讀取時返回文件結束指示)/ dev / zero -  接受并放棄所有輸入;  產生連續的 NUL(零值)字節流
/ dev / full -  讀取時會產生連續的 NUL(零值)字節流,并在寫入時返回“磁盤已滿”消息
/ dev / random 和 / dev / urandom -  它們產生一個可變長度的偽隨機數字流。

節點創建

節點由 mknod 系統調用創建。用于創建節點的命令行程序也稱為 mknod。通常的文件系統調用(重命名,取消鏈接)和命令(mv,rm)可以移動或刪除節點。當復制設備節點時傳遞選項 - R 或 - a 時,cp - l 命令會創建一個與原始屬性相同的新設備節點。

某些 Unix 版本包含一個名為 makedev 或 MAKEDEV 的腳本,用于在目錄 / dev 中創建所有必需的設備。只有在其設備被靜態分配主要編號的系統上(例如,通過在其內核模塊中對其進行硬編碼)才有意義。

塊文件命名規則

以下前綴用于 / dev 層次結構中某些設備的名稱,以標識設備的類型:

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

在 Linux 中使用的前綴規范列表可以在 Linux 設備列表中找到,Linux 設備列表是 Linux 操作系統的分配設備編號和 / dev 目錄節點的正式注冊表。

對于大多數設備而言,此前綴后面跟著唯一標識特定設備的編號。對于硬盤驅動器,使用字母來標識設備,然后使用數字來標識分區。因此,文件系統可以通過 /dev/sda3 找到磁盤上的區域;把 /dev/pts/14 與聯網的終端會話聯系起來。

操作設備文件的相關命令

mknod

“linux 設備文件指的是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計3214字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 大新县| 务川| 乌拉特前旗| 万盛区| 沙雅县| 新营市| 新昌县| 忻州市| 子洲县| 武胜县| 长兴县| 读书| 云林县| 马鞍山市| 南和县| 喜德县| 朝阳市| 广州市| 河津市| 鹤庆县| 汽车| 漳平市| 会同县| 元朗区| 武乡县| 临邑县| 溆浦县| 旬阳县| 白银市| 平定县| 水富县| 南川市| 兴业县| 辰溪县| 白城市| 泰来县| 孟连| 冷水江市| 西乌珠穆沁旗| 明星| 永春县|