共計 1670 個字符,預計需要花費 5 分鐘才能閱讀完成。
今天丸趣 TV 小編給大家分享一下 linux 字符設備是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
linux 字符設備有:1、鼠標,是計算機的一種外接輸入設備,也是計算機顯示系統縱橫坐標定位的指示器;2、鍵盤,是用于操作計算機設備運行的一種指令和數據輸入裝置;3、串行端口終端,使用計算機串行端口連接的終端設備;4、控制終端;5、控制臺等。
本教程操作環境:linux5.9.8 系統、Dell G3 電腦。
Linux 系統為了管理方便,將設備分成三種基本類型:
字符設備
塊設備
網絡設備
它們均以一個文件節點形式顯示在文件系統的 /dev 目錄下(crw–w—- 1 root tty 4,0 7 月 11 09:11 tty0 其中 c 代表字符設備類型)。
linux 字符設備
字符設備是指設備無需緩沖即可直接進行讀寫的設備,如鼠標,鍵盤,串口設備、調制解調器等,它與塊設備的區別在于是字符操作的基本單位是字節。
字符設備的分類
字符設備主要包括控制終端設備和串行終端設備,例如控制臺和鍵盤。依據功能和硬件上的差別,字符終端設備有如下分類:
串行端口終端(/dev/ttSn):使用計算機串行端口連接的終端設備,串行設備數據傳輸方式為同一字符 8 個 bit 單線傳輸,在命令行輸入 echo hello world /dev/ttyS0 可將輸入寫入到對應設備。
偽終端(/dev/ttyp,/dev/ptyp): 對應底層不存在真實的硬件設備,用于為其他程序提供終端式樣的接口,如網絡登陸主機時網絡服務器和 shell 程序之間的終端接口。
控制終端(/dev/tty):主設備號為 5,進程控制終端,與進程相關聯,如登陸 shell 進程使用的就是終端 /dev/tty。
控制臺(/dev/ttyn,/dev/consol): 計算機輸入輸出的顯示器,當控制臺登陸時,使用的就是 tty1,而 ubuntu 圖形界面使用的 tty7。
其他類型:現行的 linux 針對許多不同的設備建有許多其他種類的設備特殊文件,如 ISIDIN 設備的 /dev/ttyIn 設備。
下面為字符設備結構示意圖
字符設備的性質及特點
字符設備屬于設備文件系統的一種,相當于底層硬件向上層提供的邏輯設備文件,宛如將一個數據端口 (數據寄存器) 與一個文件對接起來,設備驅動程序直接對文件操作,于是便直接對端口進行了讀寫操作。同樣作為文件,字符設備驅動也必須實現文件的基本的操作 open(),close(),write(),read()等,當然終端重定向操作也是支持的。
字符設備文件文件的讀寫是以單個字節為單位的,不需要設立硬件緩沖區。設備像訪問字節流一樣被操作系統訪問。字節流就像在硬件端口和文件系統搭建起了一個傳送管道,字節逐個通過管道傳輸并呈現給讀寫雙方。這個流特性在驅動程序中是以緩沖隊列來實現的。例如: 控制臺的結構體中的讀寫緩沖隊列
struct tty_struct {
struct termios termios;
int pgrp;
int stopped;
void (*write)(struct tty_struct * tty);
struct tty_queue read_q; // 讀隊列
struct tty_queue write_q; // 寫隊列
struct tty_queue secondary; //tty 輔助隊列(存放規格化后的字符)
};
字符設備由字符設備號標識。字符設備號由主設備號和次設備號構成,例如 /dev/ttyS0 的設備號為(4,64); 主設備號標識設備對應驅動程序,內核通過主設備號將設備和驅動程序一一對應起來,次設備號由驅動程序使用,用于驅動程序內部區分設備細節差別使用的代碼,內核其他部分不使用它。
以上就是“linux 字符設備是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。