當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 一文讓你詳細(xì)了解虛擬終端和控制臺(tái)的區(qū)別
本篇主要介紹終端和控制臺(tái)的區(qū)別,其次列出幾種不同的終端類(lèi)型(ttyXXX)
要明白這兩者關(guān)系,還得從很久很久以前的計(jì)算機(jī)使用開(kāi)始說(shuō)起。
歷史:
首先說(shuō)一下終端(terminal):
最早的計(jì)算機(jī)價(jià)格很高,因此為了充分利用計(jì)算機(jī)資源,一般都是支持多用戶同時(shí)登陸使用的。這樣的話,一臺(tái)電腦就需要連接很多鍵盤(pán)和顯示器來(lái)提供給每個(gè)人使用。在以前專(zhuān)門(mén)有這種能直接連接到計(jì)算機(jī)上的設(shè)備(鍵盤(pán)和顯示器),使用簡(jiǎn)單的通信電路進(jìn)行連接(通常是串口),這個(gè)電路只是用來(lái)提供數(shù)據(jù)的傳輸和顯示,沒(méi)有處理數(shù)據(jù)的能力,只負(fù)責(zé)連接到計(jì)算機(jī)上登錄。既然可以允許多個(gè)鍵盤(pán)和顯示器同時(shí)連接到計(jì)算機(jī)上,所以當(dāng)時(shí)的操作系統(tǒng)就已經(jīng)是多用戶多任務(wù)的了(為了充分利用價(jià)格昂貴的計(jì)算機(jī)資源)。這樣的每一套連接的鍵盤(pán)和顯示器能夠通過(guò)串口連接到計(jì)算機(jī)的設(shè)備就叫做終端。
終端設(shè)備兩個(gè)(右),計(jì)算機(jī)和控制臺(tái)(左)
控制臺(tái)(console)又是什么呢?
在各個(gè)領(lǐng)域都有控制臺(tái)的存在比如:
調(diào)音臺(tái) 飛機(jī)控制臺(tái)
控制臺(tái)從字面意思來(lái)看,就是一個(gè)直接用于控制設(shè)備的臺(tái)面,臺(tái)面上有很多按鈕顯示屏等。
在計(jì)算機(jī)領(lǐng)域也同樣存在,把那套直接與計(jì)算機(jī)組裝在一起的鍵盤(pán)和顯示器就稱(chēng)作控制臺(tái)。
請(qǐng)注意:它和終端的區(qū)別,終端是通過(guò)串口線(額外的物理連線)連接到計(jì)算機(jī)上的,而
控制臺(tái)是計(jì)算機(jī)本身就有的設(shè)備,一個(gè)計(jì)算機(jī)只有一個(gè)控制臺(tái)。在計(jì)算機(jī)啟動(dòng)的時(shí)候,所有的啟動(dòng)信息都會(huì)打印到控制臺(tái)上,而不會(huì)顯示到終端上。也就是說(shuō),控制臺(tái)是計(jì)算機(jī)的基本組成設(shè)備。而終端是為了充分利用計(jì)算機(jī)多出來(lái)的附加設(shè)備。
在計(jì)算機(jī)操作系統(tǒng)中什么信息會(huì)打印到控制臺(tái)而不在終端上呢?比如內(nèi)核啟動(dòng)信息和運(yùn)行日志,都是顯示到控制臺(tái)上,但不會(huì)顯示到終端上。這是區(qū)分控制臺(tái)和終端的重要依據(jù)。
現(xiàn)在:
隨著計(jì)算機(jī)越來(lái)越便宜,目前都是個(gè)人筆記本(單獨(dú)用戶的),不再鏈接上真正意義上的硬件終端設(shè)備了。終端和控制臺(tái)由很久以前的硬件概念,演化成了軟件概念。
現(xiàn)在說(shuō)的linux終端都是使用軟件虛擬出來(lái)的終端(虛擬終端)。他用軟件的方式模擬出硬件通信方式。比如Ubuntu的 ctrl + alt + f2 ~ f6. 是6個(gè)虛擬終端,就好比以前6個(gè)人共用一臺(tái)計(jì)算機(jī)所使用的套鍵盤(pán)和顯示屏一樣。只不過(guò)這里是用軟件模擬出來(lái)的。這也是為什么叫做虛擬終端(VT, Virtual Terminal的縮寫(xiě))的原因。
終端(terminal): 在Ubuntu中按下 ctrl + alt + f2 ~ f6.
控制臺(tái)(console): 在 Ubuntu中按下 ctrl + alt + f1 .
(ctrl + alt + f1): tty1 console (ctrl + alt + f2): tty2 terminal
做實(shí)驗(yàn)說(shuō)明:
1、ctrl + alt + f1 ~ f6.
可以發(fā)現(xiàn)只有 f1 顯示有系統(tǒng)啟動(dòng)時(shí)的打印信息,也就表明tty1 是控制臺(tái)。
2、echo "hello world" > /dev/console
在linux中一切設(shè)備皆文件,包括控制臺(tái)設(shè)備,它對(duì)應(yīng)得文件是 /dev/console , 如上命令就是往控制臺(tái)上打印 hello world。但是在Ubuntu中無(wú)論在tty1~6 中的那個(gè)終端執(zhí)行都會(huì)顯示到當(dāng)前虛擬終端上。也就是說(shuō),此時(shí)linux把當(dāng)前的終端當(dāng)做控制臺(tái)來(lái)看待了。這樣看來(lái),linux已經(jīng)淡化了控制臺(tái)和終端的區(qū)別。但是在其他類(lèi)UNIX系統(tǒng)上,控制臺(tái)和終端就會(huì)有很明顯的區(qū)別,比如freeBSD系統(tǒng)。
(ctrl + alt + f1): tty0 console (ctrl + alt + f1): tty2 terminal
如下圖:
還有另外一些信息也會(huì)在控制臺(tái)上顯示,比如那個(gè)終端登錄,系統(tǒng)啟動(dòng)日志等,全都顯示
在這個(gè)真正的控制臺(tái)上。在這里就明顯的區(qū)分出了控制臺(tái)和終端了,只不過(guò)他們都是現(xiàn)在用
軟件模擬出來(lái)的,跟以前的硬件實(shí)現(xiàn)是一個(gè)意思。
好了明白了終端和控制臺(tái)區(qū)別之后。
最后總結(jié)一下:很久以前需要共享計(jì)算機(jī)時(shí),控制臺(tái)和終端都是物理硬件加上他們的驅(qū)動(dòng)和軟件,F(xiàn)在不需要多人共享,但是仍然保留著用用軟件模擬的控制臺(tái)和終端設(shè)備文件現(xiàn)在的linux也在把控制臺(tái)和終端的概念慢慢的淡化。對(duì)于普通用戶,可以理解控制臺(tái)和終端就是:可以用于輸入命令并顯示程序運(yùn)行結(jié)果的窗口。不用嚴(yán)格區(qū)分。
終端設(shè)備類(lèi)型(tty):Teletypes的縮寫(xiě)
tty也是一個(gè)UNIX命令,用來(lái)指出當(dāng)前終端設(shè)備的名稱(chēng)。
終端是一種字符型設(shè)備,它有多種類(lèi)型,通常用tty來(lái)簡(jiǎn)稱(chēng)各種類(lèi)型的終端設(shè)備
1、串行端口終端(Serial Port Terminal) : /dev/ttySn
2、偽終端(Pseudo Terminal):/dev/pty/
3、控制終端: /dev/tty
4、控制臺(tái): /dev/ttyn, /dev/console
終端相關(guān)的一些Linux命令:
who/w :顯示有哪些終端登錄
who am i : 顯示當(dāng)前終端是哪一個(gè)
tty : 顯示當(dāng)前終端的設(shè)備文件
chvt : 切換虛擬終端 chvt 2 等同于快捷鍵 (ctrl + alt + f2) ,注意:在圖形界面不行
last : 顯示每個(gè)終端的登錄時(shí)間和持續(xù)時(shí)間等信息