Unix終端的概念

2021-07-08 11:23:58 字數 4049 閱讀 1863

**:

1。終端和控制台都不是個人電腦的概念,而是多人共用的小型中型大型計算機上的概念.

一台主機,連很多終端,終端為主機提供了人機介面,每個人都通過終端使用主機的資源. 終端有字元啞終端和圖形終端兩種.

控制台是另一種人機介面, 不通過終端與主機相連, 而是通過顯示卡-顯示器和鍵盤介面分別與主機相連, 這是人控制主機的第一人機介面.

話回到個人計算機上,個人計算機只有控制台,沒有終端. 當然願意的話, 可以在串列埠上連一兩台字元啞終端. 但是linux偏要按posix標準把個人計算機當成小型機來用,

那麼就在控制台上通過getty軟體虛擬了六個字元啞終端(或者叫控制台終端tty1-tty6)(數量可以在/etc/inittab裡自己調)和乙個圖型終端, 在虛擬圖形終端中又可以通過軟體(如rxvt)再虛擬無限多個虛擬字元啞終端(pts/0....). 記住,這全是虛擬的,用起來一樣,但實際上並不是.

所以在個人計算機上,只有乙個實際的控制台,沒有終端,所有終端都是在控制台上用軟體模擬的.

要把個人計算機當主機再通過串列埠或網絡卡外連真正的物理終端也可以,但由於真正的物理終端並不比個人計算機本身便宜,一般沒有人這麼做.

2.如同其他unix類系統,linux本身也是基於命令列的。試試「ctrl」+「alt」+「fx」。這就是控制台,算是linux的本來面目。至於使用方法,除了多出登入登出外,其它操作和我們在linux圖形介面(x—window)下的終端操作是一樣的,在x-window出問題或不執行x-window的時候,操作主要在這裡完成。

linux在控制台下提供了不止乙個(字元啞)終端,支援多使用者同時登入,包括在本機同時登入。控制台「alt」+「fx」能夠切換到第x個(字元啞)終端。如果需要從x-window裡跳到第(字元啞)終端,需要「ctrl」+「alt」+「fx」。一般情況下如果要從控制台返回xwindow可用「「alt」+7」來返回到xwind的圖形介面。(linux發行版提供7個虛擬螢幕,1~6號是控制台終端((字元啞)終端),第7個上面跑x-window。)

3.控制終端(/dev/tty) 這是個在應用程式中的乙個概念,前台程序有個控制終端,就對應這個。不過它並不指任何物理意義上的終端,其實/dev/tty會對映到當前的裝置(通過tty命令可以看到),比如你如果在控制台介面下(即字元介面下)那麼dev/tty就是對映到dev/tty1-6之間的乙個(取決於你當前的控制台號),但是如果你現在是在圖形介面(xwindows),那麼你會發現現在的/dev/tty對映到的是/dev/pts的偽終端上。比如你可以輸入命令 #tty 那麼將顯示當前對映終端如:/dev/tty1或者/dev/pts/0等。

4。偽終端(/dev/pty/)這個是終端的發展,為滿足現在需求(比如網路登陸、xwindow視窗的管理)。

偽終端(pseudo terminal)是成對的邏輯終端裝置,例如/dev/ptyp3和/dev/ttyp3(或著在裝置檔案系統中分 

別是/dev/pty/m3和/dev/pty/s3)。它們與實際物理裝置並不直接相關。如果乙個程式把ttyp3看作是乙個串 

行埠裝置,則它對該埠的讀/寫操作會反映在該邏輯終端裝置對的另乙個上面(ttyp3)。而ttyp3則是 

另乙個程式用於讀寫操作的邏輯裝置。這樣,兩個程式就可以通過這種邏輯裝置進行互相交流,而其中 

乙個使用ttyp3的程式則認為自己正在與乙個串列埠進行通訊。這很象是邏輯裝置對之間的管道操作。 

對於ttyp3(s3),任何設計成使用乙個串列埠裝置的程式都可以使用該邏輯裝置。但對於使用ptyp3的 

程式,則需要專門設計來使用ptyp3(m3)邏輯裝置。 

例如,如果某人在網上使用telnet程式連線到你的計算機上,則telnet程式就可能會開始連線到設 

備ptyp2(m2)上(乙個偽終端埠上)。此時乙個getty程式就應該執行在對應的ttyp2(s2)埠上。當telnet從 

遠端獲取了乙個字元時,該字元就會通過m2、s2傳遞給getty程式,而getty程式就會通過s2、m2和telnet程式 

往網路上返回」login:」字串資訊。這樣,登入程式與telnet程式就通過「偽終端」進行通訊。通過使用適當的 

軟體,就可以把兩個甚至多個偽終端裝置連線到同乙個物理串列埠上。 

在使用裝置檔案系統(device filesystem)之前,為了得到大量的偽終端裝置特殊檔案,hp-ux aix等使用了 

比較複雜的檔名命名方式。

5.控制台終端(/dev/ttyn, /dev/console) 

在unix系統中,計算機顯示器通常被稱為控制台終端(console)。它**了型別為linux的一種終端(term=linux), 

並且有一些裝置特殊檔案與之相關聯:tty0、tty1、tty2等。當你在控制台上登入時,使用的是tty1。使用alt+[f1—f6]組合 

鍵時,我們就可以切換到tty2、tty3等上面去。tty1 –tty6等稱為虛擬終端,而tty0則是當前所使用虛擬終端的乙個別名, 

系統所產生的資訊會傳送到該終端上。因此不管當前正在使用哪個虛擬終端,系統資訊都會傳送到控制台終端上。 

你可以登入到不同的虛擬終端上去,因而可以讓系統同時有幾個不同的會話期存在。只有系統或超級使用者root可以 

向/dev/tty0進行寫操作

console是乙個緩衝的概念,其實是為核心提供列印的。我們的pc,終端常用的是顯示器和鍵盤構成,我們使用者列印和核心列印都從這個終端反映給使用者。所以,這裡,/dev/console是連線到/dev/tty0的,其實這裡有2個概念,console和tty這2個咚咚,怎麼實現,其實console這個結構中有個device,這裡其實就是tty0對應的乙個虛擬終端裝置。 如果,我們來個專門列印核心的裝置(比如通過串列埠),我們把那個串列埠register_console,那麼/dev/console就到這個串列埠裝置了。這時,核心列印就到這個串列埠裝置了,而使用者的列印還是和上面的/dev/tty相關,如果/dev/tty對應/dev/tty0,那麼使用者列印還在視窗中出現。所以說

/dev/console是用來外接控制台的。

6.串列埠終端(/dev/ttysn)

串列埠終端(serial port terminal)是使用計算機串列埠連線的終端裝置。計算機把每個串列埠都看作是乙個字元裝置。有段時間這些串列埠裝置通常被稱為終端裝置,因為那時它的最大用途就是用來連線終端。這些串列埠所對應的裝置名稱是/dev/tts/0(或/dev/ttys0), /dev/tts/1(或/dev/ttys1)等,裝置號分別是(4,0), (4,1)等,分別對應於dos系統下的com1、com2等。若要向乙個埠傳送資料,可以在命令列上把標準輸出重定向到這些特殊檔名上即可。例如,在命令列提示符下鍵入:echo 

test

> /dev/ttys1會把單詞」test」傳送到連線在ttys1(com2)埠的裝置上。可接串列埠來實驗。

即是相對與dos下的com1和com2等....

總結一下:感覺概念還是比較模糊的,因為可能是時間命名的緣故吧,有很多概念都很模糊吧!

首先:兩種模式:字元模式:對應的為控制台,裝置檔案為/dev/tty1-6(是乙個控制台終端的裝置檔案),而/dev/tty0則是當前終端裝置檔案的別名(我覺得可以說是鏈結吧,即tty0就是指當前的裝置檔案)。圖形模式(xwindow): 對應的應該是tty7,但是在xwindow下終端(即輸入命令的視窗)對應的裝置檔案為/dev/pts/0-(是乙個偽終端裝置檔案)

關於dev/tty其實很簡單:就是當前終端裝置的乙個鏈結(有點像/dev/tty0吧,但是他好像更強大一點),我們可以做下這個實驗:

在xwindow下開啟多個終端(輸入命令的視窗):#tty命令,發現在各個視窗分別顯示為# dev/pts/0  #dev/pts/1  #dev/pts/2....

然後在#dev/pts/0終端中輸入echo"test">/dev/pts/0 結果顯示test。然後你在#dev/pts/0終端中輸入echo"test">/dev/tty, 你會發現在當前視窗也顯示test字串。也就是說dev/tty其實就是當前裝置檔案的乙個鏈結。

關於/dev/console  應該來說更像乙個緩衝結果吧,來實現對核心的列印,比如說核心把要列印的內容裝入緩衝區,然後由console來決定列印到**吧(比如是tty0還是串列埠等等吧)。所以說/dev/console是用來外接控制台的。

unix終端的登陸過程

unix終端登入過程 系統管理員建立通常名為 etc ttys的檔案,檔案中每個終端裝置都有一行用來說明裝置名和傳遞給getty程式的引數 如終端的波特率等等 1.當系統自舉時,核心建立程序id為1的程序也就是init程序,init程序使系統進入多使用者狀態。init程序讀檔案 etc ttys,對...

Unix終端登入過程

unix終端登入過程 系統管理員建立通常名為 etc ttys的檔案,檔案中每個終端裝置都有一行用來說明裝置名和傳遞給getty程式的引數 如終端的波特率等等 1.當系統自舉時,核心建立程序id為1的程序也就是init程序,init程序使系統進入多使用者狀態。init程序讀檔案 etc ttys,對...

Unix環境高階程式設計 十九 終端I O

終端i o應用很廣泛,用於終端 計算機之間的直接連線 數據機以及印表機等等。終端i o有兩種不同的工作模式 1 規範模式輸入處理 終端輸入以行為單位進行處理,對於每個讀要求,終端驅動程式最多返回一行。預設模式 2 非規範模式輸入處理 輸入字元並不組成行。終端裝置是由一般位於核心的終端驅動程式控制的,...