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

linux字符設備是什么

150次閱讀
沒有評論

共計 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 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計1670字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 桐乡市| 全南县| 泰安市| 白河县| 三都| 宣化县| 宜昌市| 正定县| 泗阳县| 鹰潭市| 马鞍山市| 彰化市| 洪江市| 临汾市| 盘山县| 胶南市| 平南县| 泉州市| 安西县| 平阳县| 林芝县| 积石山| 七台河市| 曲麻莱县| 上犹县| 淮阳县| 苏尼特右旗| 峨眉山市| 大姚县| 贵州省| 修水县| 虎林市| 肥东县| 阿拉善盟| 北票市| 略阳县| 文昌市| 安西县| 溧阳市| 康定县| 江安县|