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