溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

linux字符設(shè)備是什么

發(fā)布時(shí)間:2022-05-13 10:06:33 來(lái)源:億速云 閱讀:433 作者:zzz 欄目:建站服務(wù)器

今天小編給大家分享一下linux字符設(shè)備是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

linux字符設(shè)備有:1、鼠標(biāo),是計(jì)算機(jī)的一種外接輸入設(shè)備,也是計(jì)算機(jī)顯示系統(tǒng)縱橫坐標(biāo)定位的指示器;2、鍵盤,是用于操作計(jì)算機(jī)設(shè)備運(yùn)行的一種指令和數(shù)據(jù)輸入裝置;3、串行端口終端,使用計(jì)算機(jī)串行端口連接的終端設(shè)備;4、控制終端;5、控制臺(tái)等。

本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。

Linux系統(tǒng)為了管理方便,將設(shè)備分成三種基本類型:

  • 字符設(shè)備

  • 塊設(shè)備

  • 網(wǎng)絡(luò)設(shè)備

它們均以一個(gè)文件節(jié)點(diǎn)形式顯示在文件系統(tǒng)的/dev目錄下(crw--w---- 1 root tty 4, 0 7月 11 09:11 tty0 其中c代表字符設(shè)備類型)。

linux字符設(shè)備

字符設(shè)備是指設(shè)備無(wú)需緩沖即可直接進(jìn)行讀寫的設(shè)備, 如鼠標(biāo),鍵盤,串口設(shè)備、調(diào)制解調(diào)器等, 它與塊設(shè)備的區(qū)別在于是字符操作的基本單位是字節(jié)。

字符設(shè)備的分類

字符設(shè)備主要包括控制終端設(shè)備和串行終端設(shè)備, 例如控制臺(tái)和鍵盤。依據(jù)功能和硬件上的差別, 字符終端設(shè)備有如下分類:

  • 串行端口終端(/dev/ttSn):使用計(jì)算機(jī)串行端口連接的終端設(shè)備, 串行設(shè)備數(shù)據(jù)傳輸方式為同一字符8個(gè)bit單線傳輸, 在命令行輸入 echo 'hello world' > /dev/ttyS0可將輸入寫入到對(duì)應(yīng)設(shè)備。

  • 偽終端(/dev/ttyp,/dev/ptyp): 對(duì)應(yīng)底層不存在真實(shí)的硬件設(shè)備, 用于為其他程序提供終端式樣的接口,如網(wǎng)絡(luò)登陸主機(jī)時(shí)網(wǎng)絡(luò)服務(wù)器和shell程序之間的終端接口。

  • 控制終端(/dev/tty):主設(shè)備號(hào)為5, 進(jìn)程控制終端,與進(jìn)程相關(guān)聯(lián),如登陸shell進(jìn)程使用的就是終端/dev/tty。

  • 控制臺(tái)(/dev/ttyn,/dev/consol): 計(jì)算機(jī)輸入輸出的顯示器,當(dāng)控制臺(tái)登陸時(shí), 使用的就是tty1, 而ubuntu 圖形界面使用的tty7。

  • 其他類型:現(xiàn)行的linux針對(duì)許多不同的設(shè)備建有許多其他種類的設(shè)備特殊文件,如ISIDIN設(shè)備的/dev/ttyIn設(shè)備。

下面為字符設(shè)備結(jié)構(gòu)示意圖

linux字符設(shè)備是什么

字符設(shè)備的性質(zhì)及特點(diǎn)

  • 字符設(shè)備屬于設(shè)備文件系統(tǒng)的一種, 相當(dāng)于底層硬件向上層提供的邏輯設(shè)備文件, 宛如將一個(gè)數(shù)據(jù)端口(數(shù)據(jù)寄存器)與一個(gè)文件對(duì)接起來(lái),設(shè)備驅(qū)動(dòng)程序直接對(duì)文件操作, 于是便直接對(duì)端口進(jìn)行了讀寫操作。 同樣作為文件, 字符設(shè)備驅(qū)動(dòng)也必須實(shí)現(xiàn)文件的基本的操作open(),close(),write(),read()等,當(dāng)然終端重定向操作也是支持的。

  • 字符設(shè)備文件文件的讀寫是以單個(gè)字節(jié)為單位的, 不需要設(shè)立硬件緩沖區(qū)。 設(shè)備像訪問(wèn)字節(jié)流一樣被操作系統(tǒng)訪問(wèn)。 字節(jié)流就像在硬件端口和文件系統(tǒng)搭建起了一個(gè)傳送管道, 字節(jié)逐個(gè)通過(guò)管道傳輸并呈現(xiàn)給讀寫雙方。 這個(gè)流特性在驅(qū)動(dòng)程序中是以緩沖隊(duì)列來(lái)實(shí)現(xiàn)的。例如: 控制臺(tái)的結(jié)構(gòu)體中的讀寫緩沖隊(duì)列

struct tty_struct {
struct termios termios;
int pgrp;
int stopped;
void (*write)(struct tty_struct * tty);
struct tty_queue read_q;               //讀隊(duì)列
struct tty_queue write_q;              //寫隊(duì)列
struct tty_queue secondary;            //tty輔助隊(duì)列(存放規(guī)格化后的字符)
};
  • 字符設(shè)備由字符設(shè)備號(hào)標(biāo)識(shí)。字符設(shè)備號(hào)由主設(shè)備號(hào)和次設(shè)備號(hào)構(gòu)成, 例如/dev/ttyS0的設(shè)備號(hào)為(4,64); 主設(shè)備號(hào)標(biāo)識(shí)設(shè)備對(duì)應(yīng)驅(qū)動(dòng)程序, 內(nèi)核通過(guò)主設(shè)備號(hào)將設(shè)備和驅(qū)動(dòng)程序一一對(duì)應(yīng)起來(lái), 次設(shè)備號(hào)由驅(qū)動(dòng)程序使用, 用于驅(qū)動(dòng)程序內(nèi)部區(qū)分設(shè)備細(xì)節(jié)差別使用的代碼,內(nèi)核其他部分不使用它。

以上就是“l(fā)inux字符設(shè)備是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI