終端,或說終端裝置,這是早期的計算機中遺留下來的概念,這些計算機大部分中國人別說用過,見都沒見過,對終端實在談不上有什麼感覺,根本形成不了這個概念,而且終端也涉及到眾多的裝置、名詞,比較容易讓人糊塗的。而這個概念是非常重要的。而要理解終端必須要了解計算機的歷史。
早期的 unix 類的系統都是大型機系統,非常昂貴,是沒有鍵盤和顯示器之類裝置的,那時所謂的計算機其實就指相當於現代電腦的主機一樣,那人們是如何使用這些機器得呢?那時的計算機是多個人共享使用的,獨佔一台計算機是一件很奢侈的事情。那時人們通過串列埠、**線、網線等方式用某個裝置和計算機腦相連,這個裝置非常簡陋,沒有計算功能,甚至可能就是一台電傳打字機,只有輸入輸出功能,沒有計算處理能力,這樣的裝置就稱為「終端」。
人們通過終端進行將資料傳給計算機,計算機處理以後將結果傳回終端,終端將結果再顯示出來,所有使用者互動,都是借助終端方式訪問系統的。後來個人計算機出現了,pc的出現使得個人獨佔計算機成為可能,這時候輸入輸出裝置,一般是顯示器和鍵盤(可能還有滑鼠)和計算機一件組合在一起了,終端已經發生了極大變化:計算機我們稱為主機,而顯示器和鍵盤我們稱為標準外設,它已經稱為計算機的一部分。對此計算機專家作出決策:繼續保留這個概念,並對這個概念進行拓展。這樣的好處就是以前的知識和經驗得到了積累。
到現在 linux 也保留著「終端」的概念,終端現在對於普通 linux 來說,一般說的就是乙個字元(或者模擬字元)的命令互動介面,實現對計算機的控制。
我們可以總結一下:終端就是實現人機互動手段的裝置。或者說終端是實現人與程序互動的裝置。
這個裝置可以是對應著真實的硬體,也可以是虛擬的。
使用者向系統登入時使用的終端被稱為該使用者的「控制終端」,控制終端中有個用於系統的引導、控制和管理的終端,我們稱之為「控制台」(console),控制台一般只有一台保留給系統管理員。早期的控制台一般採用電傳打字機(tty),後來採用crt終端,這些裝置一般是沒有智慧型的,且是面向文字的。pc機出現後,人們通過顯示器和鍵盤(通常還有滑鼠)進行人機互動,這些裝置合在一起既要做系統的控制台又是使用者的控制終端,作業系統要有一部分的終端功能。另一方面,顯示器和鍵盤所構成的終端裝置並不是唯一的終端裝置,計算機的串列埠也常常作為終端的物理介面,也就是串列埠終端。
pc機上一般以顯示器和鍵盤(可能還有滑鼠)的組合作為控制台,這二者的組合就相當於乙個終端,但是,有些情況下乙個系統的控制台不只乙個,多個控制台使得系統使用者可以啟動不同的作業,且易於管理,所以linux可以將同一套物理的顯示器和鍵盤復用於若干「虛擬控制台(虛擬終端,virtual console)」。使用者通過 「alt」鍵和功能鍵「f1」至「f12」的組合來選擇,裝置檔案 /dev/tty1 ~/dev/tty12代表12個控制台,此外/dev/tty0永遠代表系統的當前控制台,另外還有/dev/console一般是連線到/dev/tty0的,所以也代表著系統的當前控制台。需要注意linux只在前6個虛擬終端上建立login程序。控制台也不全是顯示器和滑鼠構成的「虛擬終端」,也可能是通過常規序列口連線的終端裝置,/dev/ttys0 ~ /dev/ttys191代表著192個可能的uart序列口,即一般的序列終端裝置,因為工業領域串列埠應用非常廣泛,所以嵌入式系統中通常會採用串列埠終端。
以上的終端都是物理上存在的,即使是虛擬終端,最終也要對應到乙個物理的裝置上。但是考慮一下現代的圖形化使用者介面運**況:在這樣的系統中螢幕上顯示的每個應用都涉及輸入輸出,每個程序都以為它的輸入輸出裝置都指向乙個終端裝置,但是該程序既不知道也沒有能力控制螢幕顯示屏上的視窗。怎麼辦呢?linux中採用「偽終端裝置」:視窗管理程序與常規的終端裝置進行通訊,而視窗啟動的每乙個程序通過乙個偽終端裝置再與視窗管理程序通訊,由視窗管理程序控制螢幕顯示,偽終端總是成對出現,一般主裝置名為/dev/ptyax , 從裝置為/dev/ttyax, a代表16個選定的字母,x則是16個16進製制數。
另外每乙個程序在執行時,都可能涉及到鍵盤的輸入(執行c語言中的getch等),螢幕輸出(執行c語言中的printf等),這就需要終端裝置。程序對應的輸入輸出裝置也叫控制終端,不要和系統的控制終端搞混,這個終端可以稱為程序的控制終端,其一般對應計算機的顯示器和鍵盤。更確切地說,在圖形系統中這個程序的控制終端是偽終端。
(注當程序在執行時,不需要使用者輸入輸出,我們一般讓程序在後台執行,在後台執行的程序一定是執行過程中不需要使用者輸入輸出的,我們稱這些程序為daemon程序,daemon程序的終端一定要關閉。)
乙個程序具體繫結的終端是什麼終端,可以設定。
在嵌入式系統中我們常用串列埠終端,所以有時候我們會將串列埠裝置和終端裝置搞混,實際上這兩者是不一樣的。我們常用window中的的超級終端來進行除錯,這時候windows就相當於終端,這個終端與我們的嵌入式系統目標板通過串列埠連線在一起。串列埠是乙個裝置,乙個通訊裝置,終端也是乙個裝置,實現這個完整的終端功能要借助串列埠裝置。通訊裝置不是串列埠裝置,有可能是其他裝置。
總結一下:不管是何種終端,其實際上都是涉及到物理裝置的,即使是所謂的偽終端,乙個程序首先要啟動這個裝置,由這個裝置來接收使用者的輸入,對於程序來說這是真實的物理終端,還是虛擬終端,還是偽終端,它並不關心。為遮蔽「終端裝置」的不同「終端裝置」與程序之間應該加入一層,其稱為終端驅動,同時終端的型別也是不同的(偽終端,虛擬終端等),所有又加入一層終端裝置層,遮蔽裝置與終端裝置之間的區別,而實際的、物理上的裝置要起到終端作用,在物理裝置與終端裝置驅動在新增一層,稱為鏈路層,使物理裝置起到終端作用。
什麼是LVM 什麼是LV 什麼是VG
lvm logicl volume manager 邏輯卷管理器,通過使用邏輯卷管理器對硬碟儲存裝置進行管理,可以實現硬碟空間的動態劃分和調整。一 基本概念 1 物理卷 pv physical volume 物理卷在邏輯卷管理中處於最底層,它可以是實際物理硬碟上的分割槽,也可以是整個物理硬碟。2 捲...
什麼是IaaS?什麼是PaaS?什麼是SaaS?
最近有朋友問我,什麼是iaas?什麼是paas?什麼是saas?他們又有什麼分別?其實,雲計算發展到今天,這些當年看似新穎的概念,已經快爛大街了,從業者早就對這些概念習以為常,但是圈外人卻依然是丈二和尚摸不著頭腦。今天我就來為圈外人士來解答一下,什麼是iaas,什麼是paas,什麼是saas。先來說...
什麼是Rup 什麼是xp 什麼是敏捷過程?
1 什麼是rup?rup rational unified process 是ibm rational software提出的軟體工程實施過程,在業界經歷了數千個軟體專案的實踐,是當前最為成功的軟體工程方 之一!rup是一種迭代的 以架構為中心 的 用例驅動的軟體開發方法 rup是一種具有明確定義和...