linux設備文件有哪幾類

linux設備文件有兩類:1、字符設備,是能夠像字節流一樣被訪問的設備文件,當對字符設備發出讀寫請求,相應的IO操作立即發生,常見的字符設備有字符終端、串口、鍵盤、鼠標;2、塊設備,是進行TO操作時必須以塊為單位進行訪問的設備文件,塊設備能夠安裝文件系統,常見的塊設備有硬盤、軟盤驅動器、藍光閱讀器和閃存。

linux設備文件有哪幾類

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

設備文件概述

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

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

在Linux系統下,有七類文件類型:

  • 普通文件(-)

  • 目錄(d)

  • 軟鏈接(字符鏈接L)

  • 套接字文件(S)

  • 字符設備(S)

  • 塊設備(B)

  • 管道文件(命名管道P)

因此,設備文件有兩類:字符設備和塊設備。

(1)字符設備

  字符設備是能夠像字節流一樣被訪問的設備,當對字符設備發出讀寫請求,相應的IO操作立即發生。Linux系統中很多設備都是字符設備,如字符終端、串口、鍵盤、鼠標等。在嵌入式Linux 開發中,接觸最多的就是字符設備以及驅動。

(2)塊設備

  塊設備是Linux系統中進行TO操作時必須以塊為單位進行訪問的設備,塊設備能夠安裝文件系統。塊設備驅動會利用一塊系統內存作為緩沖區,因此對塊設備發出讀寫訪問,并不一定立即產生硬件I/O操作。Linux系統中常見的塊設備有如硬盤、軟驅等等。

區分塊設備和字符設備

  • 塊設備是硬件設備,通過隨機(不一定是順序)訪問固定大小的數據塊(chunk)來區分。固定大小的chunk稱為塊(block)。最常見的塊設備是硬盤,但也存在許多其他塊設備,如軟盤驅動器、藍光閱讀器和閃存。注意,這些都是掛載文件系統的設備,文件系統就像是塊設備的通用語言。

  • 字符設備通過連續的流數據訪問,一個字節接著一個字節。典型的字符設備是終端(終端分多種,由物理的也有虛擬的)和鍵盤。

區分塊設備和字符設備最簡單的方法是看數據訪問的方式。能隨機訪問獲取數據的是塊設備,必須按字節順序訪問的是字符設備。

如果可以這里讀一點數據,那里讀一點數據,最后串成一整段連續的數據,那么這個就是塊設備,就像硬盤上的數據是不連續的,有可能需要通過隨機訪問的方式獲取一段數據。比如磁盤上一個稍大一點的文件,可能前10k數據是連續的數據塊或在連續的扇區內,之后的10k數據在離它很遠甚至在不同的柱面上。

如果一段數據中的每個字節都跟訪問時的字節順序是一樣的,即字節先后順序從訪問獲取時到最后處理數據的過程中都是完全一致的,那么這個就是字符設備。換句話說,字符設備可以看作是流設備。就像鍵盤輸入數據一樣,連續敲兩個字鍵,這兩個鍵對應的字節數據在被接收的時候一定是先敲的在前面,后敲的在后面。同理終端設備也是以一樣的,程序將數據輸出到終端時,程序先輸出字母a再輸出數字3,那么顯示在終端上時一定是a在前,3在后。

相關推薦:《Linux視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享