今天小編給大家分享一下linux字符設(shè)備是什么的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
成都創(chuàng)新互聯(lián)技術(shù)團(tuán)隊十載來致力于為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站、高端網(wǎng)站設(shè)計、成都營銷網(wǎng)站建設(shè)、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過多年發(fā)展,公司擁有經(jīng)驗豐富的技術(shù)團(tuán)隊,先后服務(wù)、推廣了上千多家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機構(gòu)單位。
linux字符設(shè)備有:1、鼠標(biāo),是計算機的一種外接輸入設(shè)備,也是計算機顯示系統(tǒng)縱橫坐標(biāo)定位的指示器;2、鍵盤,是用于操作計算機設(shè)備運行的一種指令和數(shù)據(jù)輸入裝置;3、串行端口終端,使用計算機串行端口連接的終端設(shè)備;4、控制終端;5、控制臺等。
本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。
Linux系統(tǒng)為了管理方便,將設(shè)備分成三種基本類型:
字符設(shè)備
塊設(shè)備
網(wǎng)絡(luò)設(shè)備
它們均以一個文件節(jié)點形式顯示在文件系統(tǒng)的/dev目錄下(crw--w---- 1 root tty 4, 0 7月 11 09:11 tty0 其中c代表字符設(shè)備類型)。
linux字符設(shè)備
字符設(shè)備是指設(shè)備無需緩沖即可直接進(jìn)行讀寫的設(shè)備, 如鼠標(biāo),鍵盤,串口設(shè)備、調(diào)制解調(diào)器等, 它與塊設(shè)備的區(qū)別在于是字符操作的基本單位是字節(jié)。
字符設(shè)備的分類
字符設(shè)備主要包括控制終端設(shè)備和串行終端設(shè)備, 例如控制臺和鍵盤。依據(jù)功能和硬件上的差別, 字符終端設(shè)備有如下分類:
串行端口終端(/dev/ttSn):使用計算機串行端口連接的終端設(shè)備, 串行設(shè)備數(shù)據(jù)傳輸方式為同一字符8個bit單線傳輸, 在命令行輸入 echo 'hello world' > /dev/ttyS0可將輸入寫入到對應(yīng)設(shè)備。
偽終端(/dev/ttyp,/dev/ptyp): 對應(yīng)底層不存在真實的硬件設(shè)備, 用于為其他程序提供終端式樣的接口,如網(wǎng)絡(luò)登陸主機時網(wǎng)絡(luò)服務(wù)器和shell程序之間的終端接口。
控制終端(/dev/tty):主設(shè)備號為5, 進(jìn)程控制終端,與進(jìn)程相關(guān)聯(lián),如登陸shell進(jìn)程使用的就是終端/dev/tty。
控制臺(/dev/ttyn,/dev/consol): 計算機輸入輸出的顯示器,當(dāng)控制臺登陸時, 使用的就是tty1, 而ubuntu 圖形界面使用的tty7。
其他類型:現(xiàn)行的linux針對許多不同的設(shè)備建有許多其他種類的設(shè)備特殊文件,如ISIDIN設(shè)備的/dev/ttyIn設(shè)備。
下面為字符設(shè)備結(jié)構(gòu)示意圖
字符設(shè)備的性質(zhì)及特點
字符設(shè)備屬于設(shè)備文件系統(tǒng)的一種, 相當(dāng)于底層硬件向上層提供的邏輯設(shè)備文件, 宛如將一個數(shù)據(jù)端口(數(shù)據(jù)寄存器)與一個文件對接起來,設(shè)備驅(qū)動程序直接對文件操作, 于是便直接對端口進(jìn)行了讀寫操作。 同樣作為文件, 字符設(shè)備驅(qū)動也必須實現(xiàn)文件的基本的操作open(),close(),write(),read()等,當(dāng)然終端重定向操作也是支持的。
字符設(shè)備文件文件的讀寫是以單個字節(jié)為單位的, 不需要設(shè)立硬件緩沖區(qū)。 設(shè)備像訪問字節(jié)流一樣被操作系統(tǒng)訪問。 字節(jié)流就像在硬件端口和文件系統(tǒng)搭建起了一個傳送管道, 字節(jié)逐個通過管道傳輸并呈現(xiàn)給讀寫雙方。 這個流特性在驅(qū)動程序中是以緩沖隊列來實現(xiàn)的。例如: 控制臺的結(jié)構(gòu)體中的讀寫緩沖隊列
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輔助隊列(存放規(guī)格化后的字符) };
字符設(shè)備由字符設(shè)備號標(biāo)識。字符設(shè)備號由主設(shè)備號和次設(shè)備號構(gòu)成, 例如/dev/ttyS0的設(shè)備號為(4,64); 主設(shè)備號標(biāo)識設(shè)備對應(yīng)驅(qū)動程序, 內(nèi)核通過主設(shè)備號將設(shè)備和驅(qū)動程序一一對應(yīng)起來, 次設(shè)備號由驅(qū)動程序使用, 用于驅(qū)動程序內(nèi)部區(qū)分設(shè)備細(xì)節(jié)差別使用的代碼,內(nèi)核其他部分不使用它。
以上就是“l(fā)inux字符設(shè)備是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。