關於終端和控制檯,以及自己的測試

今天看到有人問終端和控制檯的區別,而且這個問題比較有普遍性,因此想抽出一點時間來解釋一下這兩個術語的區別。

  終端,英文叫做terminal ,通常簡稱爲term ,比如我們在X下的xterm.
  控制檯,英文叫做console。

  要明白這兩者的關係,還得從以前的多人使用的計算機開始。
  大家都知道,最初的計算機由於價格昂貴,因此,一臺計算機一般是由多個人同時使用的。在這種情況下一臺計算機需要連接上許多套鍵盤和顯示器來供多個人使用。在以前專門有這種可以連上一臺電腦的設備,只有顯示器和鍵盤,還有簡單的處理電路,本身不具有處理計算機信息的能力,他是負責連接到一臺正常的計算機上(通常是通過串口) ,然後登陸計算機,並對該計算機進行操作。當然,那時候的計算機操作系統都是多任務多用戶的操作系統。這樣一臺只有顯示器和鍵盤能夠通過串口連接到計算機的設備就叫做終端。

  而控制檯又是什麼回事呢? 學機電的人應該知道,一臺機牀,或者數控設備的控制箱,通常會被稱爲控制檯,顧名思義,控制檯就是一個直接控制設備的檯面(一個面板,上面有很多控制按鈕)。 在計算機裏,把那套直接連接在電腦上的鍵盤和顯示器就叫做控制檯。請注意它和終端的區別,終端是通過串口連接上的,不是計算機本身就有的設備,而控制檯是計算機本身就有的設備,一個計算機只有一個控制檯。計算機啓動的時候,所有的信息都會顯示到控制檯上,而不會顯示到終端上。也就是說,控制檯是計算機的基本設備,而終端是附加設備。 當然,由於控制檯也有終端一樣的功能,控制檯有時候也被模糊的統稱爲終端。 計算機操作系統中,與終端不相關的信息,比如內核消息,後臺服務消息,都可以顯示到控制檯上,但不會顯示到終端上。

  以上是控制檯和終端的歷史遺留區別。現在由於計算機硬件越來越便宜,通常都是一個人獨佔一臺計算機操作,不再連接以前那種真正意義上的“終端設備了”,因此,終端和控制檯的概念也慢慢演化了。終端和控制檯由硬件的概念,演化成了軟件的概念。

  現在說的終端,比如linux中的虛擬終端,都是軟件的概念,他用計算機的軟件來模擬以前硬件的方式。比如在linux中,你用alt+f1 ~ f6 可以切換六個虛擬終端,就好比是以前多人公用的計算機中的六個終端設備,這就是爲什麼這個叫“虛擬終端”的原因。當然,現在的linux也可以通過串口線,連接一個真正的終端,現在這種終端設備已經非常罕見了,但是還存在,只是一般人很難見到。也有人利用以前的老電腦(386,486)裝上一個串口通信軟件,連上一臺計算機,來模擬一個終端來用。這樣可以達到一臺電腦多人使用的目的。

  簡單的說,能直接顯示系統消息的那個終端稱爲控制檯,其他的則稱爲終端。但是在linux系統中,這個概念也已經模糊化了。

  比如下面這條命令:
  echo "hello,world" > /dev/console

  這條命令的目的是將"hello,world"顯示到控制檯上/dev/console是控制檯設備的設備名。在linux中,在字符模式下,你無論在哪個虛擬終端下執行這條命令,字符hello,world都會顯示在當前的虛擬終端下。也就是說,linux把當前的終端當作控制檯來看待。可見,linux中已經完全淡化了控制檯和終端的區別。但是在其他的UNIX類系統中,卻很明顯的有虛擬終端和控制檯的區別。比如freeBSD系統。

  在freebsd中,只有第一個“終端”纔是真正的控制檯。(就是說按alt+f1得到的那個虛擬終端) ,你無論在哪個虛擬終端上執行上面的那條命令(哪怕是通過網絡連接的僞終端上執行這條命令)。hello,world字符總會顯示到第一個“終端”也就是真正的控制檯上。另外,其他的一些系統內部信息,比如哪個用戶在哪個終端登陸,系統有何嚴重錯誤警告等信息,全都顯示在這個真正的控制檯上。在這裏,就明顯的區分了終端和控制檯的概念。其他UNIX中也是這樣的。比如Tru64 unix 在X下有一個控制檯模擬軟件,你無論在哪裏輸入echo "hello,world" > /dev/console命令,hello,world總會顯示在這個控制檯模擬器中。 我們在X界面下用的那些輸入命令的軟件,比如xterm ,rxvt, gnome-terminal等等,都應該被稱爲終端模擬軟件。請注意它和控制檯模擬軟件的區別。linux中好象沒有控制檯模擬軟件。在X中的終端模擬軟件中輸入的echo "hello,world">/dev/console 命令的輸出信息,都會輸出到啓動該X服務器的虛擬終端上。比如,你用字符方式登陸系統。進入第一個虛擬終端,然後startx啓動X服務器。再打開xterm 來輸入 echo "hello,world">/dev/console 命令,那麼字符串hello,world就顯示在第一個虛擬終端上。你按ctrl+alt+f1,回到那個啓動X服務器的終端,就可以看到hello,world字符串。

  現在該明白終端和控制檯的區別了吧。再簡單的說,控制檯是直接和計算機相連接的原生設備,終端是通過電纜、網絡等等和主機連接的設備。

  在以前的硬件終端設備中,由於生產廠家不同,所遵循的標準不同,因此有不同的型號標準。比如vt100等。這裏的vt100就是一個標準,那麼現在我們所說的終端,往往不是真正的硬件終端了,而是終端模擬軟件了,因此不同的終端模擬軟件可能符合不同的標準,還有一些終端模擬軟件符合很多種不同終端的標準。比如gnome的終端模擬軟件gnome-terminal,他提供好幾中標準可供用戶選擇。用戶只要設置一下就可以了。

  現在,由於原先的這些設備在我們的視線中漸漸淡出,控制檯和終端的概念也慢慢談化。普通用戶可以簡單的把終端和控制檯理解爲:可以輸入命令行並顯示程序運行過程中的信息以及程序運行結果的窗口。 不必要嚴格區分這兩者的差別。


//////////////////////

我通過串口連接我的開發板,

串口這個就是/dev/console.

因爲我同時用網絡SSH登錄,在網絡連接的終端上, echo "hello,world" > /dev/console

並不會在網絡連接的窗口顯示,而顯示在了串口連接的顯示窗口。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章