色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

Q4MP_gh_c472c21 ? 來源:互聯網 ? 作者:佚名 ? 2018-01-30 09:23 ? 次閱讀

每天使用Linux每天都要接觸到Bash,使用Bash時似乎永遠都讓人摸不著頭腦的概念就是終端,坐在這臺運行著Linux的機器的顯示器前面,這個顯示器就是終端的輸出,而插在機器上的USB鍵盤或者PS/2鍵盤就是終端的輸入,看來這是一種最直白意義上關于終端的解釋。

但是有的時候,機器上并沒有看到顯示器或者鍵盤接口,但是卻有一個串口,想操作這臺機器想必只能通過這個串口來進行了,這個時候,串口另一端的那臺電腦的顯示器鍵盤也叫做終端。除了上述兩種意義的終端之外,我們使用的類似SecureCRT這種軟件上運行的SSH,Telnet等也算是一種終端程序,只是說它是通過TCP/IP網絡而不是通過串口與主機連接的。

現在可以給終端下一個非嚴格意義上的定義了,什么是終端?終端就是處理計算機主機輸入輸出的一套設備,它用來顯示主機運算的輸出,并且接受主機要求的輸入,典型的終端包括顯示器鍵盤套件,打印機打字機套件等。但想要徹底理解終端的概念,還是要從計算機發展歷史的角度去尋根溯源。

最開始的時候,計算機有三間房屋那么大,確切地講應該叫三間車間。如此的龐然大物有一個專門的操作臺,就好像機床廠車間的操作臺一樣,或者說它像飛機駕駛艙的操作臺更加合適,各種儀器儀表,操作員只需要在這里對這部機器發出指令,整部機器就開始為他的指令而運算,然后機器運算后的結果也會反饋到這里而不是其它地方,這里這個操作臺就是最原始的終端。這里曾經是整部機器的控制中樞。

后來有了多用戶多任務分時系統,不同的程序竟然可以“同時運行”了,為了讓不同的程序分別獨立地接受輸入和處理輸出,就需要多個不同的上述的操作臺,當然了,坐在或者站在操作臺前面的最好始終是同一個人,這樣不同的人擁有不同的操作臺處理不同的程序,這就進入了多終端時代,從這時起一直到現在,每一個終端都是和一個用戶綁定的。為了保證這種綁定,于是就出現了登錄,即通過一種叫做登錄的動作,去喚起一個終端起來工作。為了支持多用戶,終端從硬件分離了出來,終端成了一個軟件概念,在一個硬件終端上成功登錄后,便獲得了一個軟件終端。

可見,這個時代已經和三車間的時代不同了,終端不再只有一個,而是變成了多個,每一個登錄成功的用戶擁有一個可工作的軟件終端來處理輸入輸出。

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

分久必合。

到了個人計算機時代,計算機和終端又成了一對一的關系。畢竟嘛,這時的計算機叫做個人計算機,并不是隨便誰都能用的,計算機本身就是歸屬個人,所以根本沒必要去支持什么多用戶,或者至少是淡化了多用戶和多終端的概念。我們都曾記得,當時買電腦的時候,都是一個主機配一個顯示器和一套鍵盤鼠標,這種情況從上世紀80年代初一直持續到今天。不過近些年來當人們逐漸全面認識到計算機和終端的一對一關系后,一體機的市場就來了,既然你幾乎不會(我當然知道有人會,但這里我說的是大多數人,程序員占比寥寥,程序員為了裝X,是不會用一體機的,就連品牌機套裝有時也不屑的)在同一主機上接多個顯示器多套鍵盤,何必再那么麻煩,干脆把主機和顯示器合在一起不就好了嘛。嗯,這個點子不錯,循著這個路子,最終有了觸屏一體機,連鍵盤都內置了。對比一下下圖和三車間里的計算機時代,是不是很像呢?

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

但是好景不長。

合久必分。

一切似乎又回到了大型機時代。在大型機時代,一臺機器是擁有多個終端的,那是五十年以前。今天,我們擁有了各種各樣的小型設備,智能手機,平板電腦,智能手表….然而這些東西,其實僅僅只是一系列的終端而已!那么既然這些東西都成了終端,真正的計算機在哪兒?當然在各大機房(也是類似車間大小的那種房間)里了,只是現在不叫大型機了,而叫做云端,這種技術叫做云計算(似乎有點炒作概念的意思)。如果你不信你花了幾千上萬塊的錢買來的設備僅僅是一個完成輸入輸出功能的終端,那么請斷網試試,看看你的iPhone是不是變磚頭了??梢?,昂貴的是云提供的計算服務,而不是終端設備本身,我們把所謂的云看作是一臺計算機,這幅圖景是不是跟五十年前的非常像呢?

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

你有多久沒有打開過家里的PC了,是不是很久了,但是日子也還過得去。但是你能忍受哪怕幾個小時不登錄微信嗎?某種意義上,成為新的終端的不是這些個硬件設備,而是基于云計算技術的現代互聯網服務的各類APP?!?/p>

是不是又要分久必合了呢?早就有跡象了,從用QQ號可以登錄微信,微博,內推網的時候就有跡象了。

好了,扯了這么多關于終端的發展,其實根本上也就一句話,能接受輸入,能顯示輸出,就這就夠了,不管到了什么時代,終端始終扮演著人機接口的角色,所謂Terminal,即機器的邊緣!

只要能提供給計算機輸入和輸出功能,它就是終端,而與其所在的位置無關。我可以用ls命令列舉五千公里以外的一臺計算機上某個目錄下的文件并且顯示在我眼前的屏幕上,至于我的輸入如何到達五千公里以外,這并不是我要關注的,也不是計算機要關注的,這顯然只是一個通信方式問題。那么使用TCP/IP網絡進行這類通信傳輸就是再顯然不過的了。

這就是SSH使用的方法。我們知道,SSH是一個TCP/IP協議族的協議,而其上跑的卻是一個遠程登錄后的終端流,這顯然只是用TCP/IP構建了一條隧道,然后終端流通行于該隧道。除此之外,更簡單的Telnet也不例外,也是通過一個TCP/IP隧道來封裝承載遠程登錄的終端流。除卻TCP/IP,如果我們執意使用卡車來運載我們的輸入和輸出,也完全是合適的,TCP/IP也好,卡車也好,它們只是通信手段,它們并非終端本身。

我們現在可以想象一下終端存在的形式都會有哪些。

·本地終端用VGA連接主機和顯示器,用PS/2或者USB連接主機和鍵盤,這樣的一個顯示器/鍵盤組合就是一個本地終端。

·用串口連接的遠程終端通過串口線把主機接到另外一個有顯示器和鍵盤的主機,通過運行一個終端模擬程序,比如“Windows超級終端”來將這臺主機的顯示器和鍵盤借給串口對端的主機。

·用TCP/IP承載的遠程終端類似Telnet,SSH這般。

大致就先說這幾類吧??梢娚鲜龅娜愔?,前兩類都是在本地就直接關聯了物理設備的,比如VGA口啊,PS/2口啊,串口啊之類的,這種終端叫做物理終端,而第三類在本地則沒有關聯任何物理設備,注意,不要把物理網卡當成終端關聯的物理設備,它只是隧道關聯的物理設備,這里的物理網卡完全可以換成卡車,它們與終端并不直接相關,所以這類不直接關聯物理設備的終端叫做偽終端。

既然知道了這些終端到底是怎么回事,理解余下來的那些術語就不在話下了。這些術語的存在并非是為了故意增加復雜性,而是因為工程上的東西必須要有可操作性,要可操作就必須至少有個名字來稱呼,僅此而已。這跟我們中國的傳統道,可道非常道;名,可名非常名是完全不同的??芍^現代數學,既要有名又要有道,而現代工程,則必須舍道而取名。

先看下Linux系統中管終端都叫做什么。tty是最令人熟悉的了,在Linux中,/dev/ttyX代表的都是上述的物理終端,其中,/dev/tty1~/dev/tty63代表的是本地終端,也就是接到本機的鍵盤顯示器可以操作的終端。換句話說,你往/dev/tty3里寫個東西,它就會顯示在顯示器對應的終端。

為什么會有63個終端這么多呢?畢竟顯示器只是一個單獨的顯示設備,鍵盤往往也只有一個,但Linux內核有能力知道現在該干什么,所以事實上Linux內核在初始化時會生成63個本地終端,通過鍵盤上的Fn-Alt-FX(X為1,2,3…)可以在這些終端之間切換,每切換到一個終端,該終端就是當前的焦點終端,比如說,你按下了Fn-Alt-F4組合鍵,那么此時第4個終端就是焦點終端,即/dev/tty4就是焦點終端設備。

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

誰是焦點終端會被內核記錄為全局變量,這樣只要有鍵盤輸入,就會把輸入的字符交給焦點終端。這里順便提一下,對于串口而言,不存在焦點終端的概念,誰連了串口就是誰,而對于偽終端來講,一般情況下client都是運行在GUI環境,對于Windows那是微軟的事,對于Linux,則有X系統完成同樣的事,在此略過,繼續我們正在說的話題。

系統中有沒有什么變量可以表示焦點終端呢?當然有了,那就是/dev/console,不管你在哪里往/dev/console里寫東西,這些東西總會出現在系統當前的焦點終端上!

按照以他人為中心,我們解釋了/dev/console其實就是一個全局變量,指代當前的焦點終端,如果當前的焦點是/dev/tty4,那么/dev/console指的就是/dev/tty4,當然這一切都是由內核來維護的。

那么系統中有沒有一個叫做自己的全局變量呢?當然有,那就是/dev/tty,也就是說,無論你在哪個終端下工作,當你往/dev/tty里寫東西的時候,它總是會馬上出現在你的眼前。

/dev/tty1~/dev/tty63我們知道了它們是什么,/dev/tty表示自己,/dev/console表示焦點終端這些我們也知道了,那么串口終端如何表示呢?很簡單,以ttyS開頭的就是串口連接的終端,比如ttyS1,ttyS2…

最后,解釋一下偽終端。其實也很好解釋,只要你理解TUN/TAP虛擬網卡的原理就行,它們如出一轍!類似Telnet,SSH不是沒有實際的物理設備嗎?簡單,給它模擬一個不就得了?系統是分層的,執行流只管調用接口,并不管具體實現。

模擬一個虛擬的終端設備,實現它的write,read等回調即可。對于VGA連接的顯示器而言,write其實就是將顯存刷新,而對于偽終端而言,write其實是想將數據導入到一個用戶態的程序中(不然又能去哪里呢?它下面又沒有任何物理的東西),這簡直跟很多VPN的原理非常類似。為此,Linux設計出一對虛擬終端設備,即/dev/ptmx和/dev/pts/X,這就跟TUN/TAP網卡的網卡與字符設備之前的對應關系一致。

簡單來講,當有ssh客戶端連接后,sshd會fork一個進程,然后在子進程中打開一個叫做/dev/pts/1(或者2,3,4,5…)的設備,然后和sshd進程的/dev/ptmx配對,這樣在ptmx與pts之間就構成了一條管道,數據可以順利被導入到sshd,然后通過TCP/IP封裝發往ssh client所在的機器。

為了幫助理解上述的文字,我特意作圖一張,希望能解釋清楚這些終端之間的關系以及弄明白它們的工作流程。為了讓圖畫的更加緊湊,避免橫向網絡吧圖拉的過長而不好看,我這里采用了環形解釋法,類似Intel早先的Ring1,Ring2,Ring3,我把最內層視作硬件(比它更里面的還有叫做人的東西),中間層視作內核,最外層視作軟件。

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

理解了圖例,我上我的圖,這是我昨晚畫到很晚才完成的,希望能有寶貴的意見提出(圖有點大,請單獨查看):

詳細解析Linux中讓人摸不著頭腦的終端類型以及概念

/dev目錄下的各種tty,ptmx,pts/X,console等等這些是令人混淆的根源,其實理解這些是有竅門的,記住它們只是操作某種終端設備的設備文件而已,這是UNIX風格的延續,這些設備文件對應的真實設備也就那么幾種,比如顯示器鍵盤套件,串口對面的超級終端,偽終端對面的SSH,Telnet等等。然后試著畫出一個上面的圖,基本就理清楚了。

最后,簡單說下關于getty和login相關的東西。

前面在講終端發展歷史的時候說到過,到了多終端時代,每一個終端必須綁定一個用戶,只有登錄成功的用戶方可獲得一個終端。因此當一個人站到一個終端面前并不意味著它就能在這個終端上操作計算機,他首先要做的就是登錄。所謂的登錄呢,就是輸入用戶名和密碼,如果輸入正確,則會給你一個Bash(或者別的Shell)讓你操作計算機,如果輸入不正確,則讓你繼續輸入…

getty給了讓你登錄并且繼續輸入的機會!init進程不斷調用getty,然后getty會發起login讓你登錄,當你輸入正確的用戶名和密碼后,ttyXYZ就是你的了,如果你是用SSH進行的login,那么你將得到一個叫做/dev/pts/X,如果你是在顯示器鍵盤登錄,你將得到/dev/tttX(X取決于當前的焦點終端)。

所有這一切其實都是多終端以及多用戶的產物,但歸根結底其根源都在分時系統。在計算機最初被放在車間大小的屋子里的年代,可能把屋子的門禁做好以及將屋子外的鑒權系統做好顯得比后來的多用戶login更為重要,只有在后來,終端不再屬于計算機了,終端與計算機分離了,用戶也和終端分離了的時候,設計一套登錄機制就顯得尤為必要了,因為首先即便你把計算機鎖在鐵屋子里,只要終端在外面,那么計算機就毫無安全感可言,其次,你也不可能把終端全部鎖在完全屬于你控制的鐵屋子里,特別是在TCP/IP出現以后,幾乎所有的計算機都是互聯互通的,這意味著任何一臺計算機都可以作為其它任何一臺另外的計算機的操作終端,任何外部的鑒權系統和物理保護在TCP/IP網絡面前都堪比馬其諾防線,看似固若金湯,實則百無一用。

如果想檢驗一下自己是否多一件事情有足夠深刻的理解,那么試著給別人講一講,試著回答別人不斷深入的問題,迎接挑戰,這是正道。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209328
  • 計算機
    +關注

    關注

    19

    文章

    7488

    瀏覽量

    87849
  • 終端
    +關注

    關注

    1

    文章

    1128

    瀏覽量

    29864

原文標題:嵌入式Linux每天都要接觸到Bash終端,帶你徹底理解Linux中讓人摸不著頭腦的終端類型以及概念

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何將原單核工程手動轉為多核工程

    請問有沒有教材指導如何將原單核的開發工程手動更改成多核開發工程?光看生成的例程有點摸不著頭腦。
    發表于 12-30 09:24

    LabVIEW與SQL SERVER連接 做一個 醫療病例管理軟件

    小弟剛涉及這個軟件,哪位大神能夠給小弟指指路,現在這個畢業設計思路完全混亂,看了一些書,也是摸不著頭腦~多謝啦
    發表于 03-31 16:41

    DAQmx采樣通道設置遇到的錯誤,求解決!

    個“物理通道”,以測試一下編的程序可不可以使用,但是每次運行都出現如下錯誤,摸不著頭腦,還望各位老手不吝賜教!謝謝!
    發表于 07-08 19:49

    交流51學習經驗

    剛接觸51,有點摸不著頭腦,想問下單片機學習有沒有捷徑啊,請高手知點。
    發表于 10-11 16:57

    基于PSoC3的脈搏信號測量儀設計與實現

    `本人小女子一枚,畢業設計選到這個課題,老師給了兩本書和一個開發板,現在完全摸不著頭腦,需要大神指點`
    發表于 05-12 10:51

    求資料:2.4G&5G寬帶無線接入設備CE認證資料

    目前有藍牙產品要出口到歐盟,如何做CE相關的認證,目前還處于摸不著頭腦階段,有相關資料的小伙伴能幫忙提供一下嗎?感激不盡
    發表于 09-17 15:13

    差分線的含義是什么?

    ,就很容易初學者望而卻步,剛覺得好像摸著點了門道,但越往下看越覺得摸不著頭腦,概念太多太容易混亂,這就是初學者的痛苦。好吧,要想完全理解,沒有個兩三遍回爐是很難入信號完整性之門的,除非過目不忘哈。
    發表于 08-07 08:44

    舵機改裝連續旋轉舵機相關資料分享

    舵機改裝連續旋轉舵機這個其實挺簡單,正反向旋轉和速度控制卻很少有人提及。目前網上很多教程只說了一半,摸不著頭腦,我這邊點一下,作為補充。
    發表于 06-29 07:03

    球形機器簡單的設計方案分析

    隨著2021年電賽的臨近和清單的出爐,各參賽隊伍都在緊張的備賽當中。然而在電賽清單,我們能看到一個比較特別的器件--空心透明球。這個器件的特別之處在于它的吃尺寸過大,以至于摸不著頭腦
    發表于 09-01 06:33

    單片機為什么會死機呢

    在日常的單片機開發,不可避免會遇上死機的現象,摸不著頭腦,更嚴重的是死機并不能輕易復現的情況,下面我就說一些我在開發過程遇到過的情況
    發表于 11-22 06:08

    如何辨別交叉串口線與直連串口線?

    相信很多人都對單片機與計算機或者芯片通信時,RXD與TXD如何連接比較困惑。因為在一些電路圖中,有的是直連接法,有的是交叉接法,有點摸不著頭腦。首先需要明白兩個概念,就是DTE和D
    發表于 01-06 06:43

    是否有特定板的寄存器編程參考?

    的是 GPIO,用于 LED 和按鈕)到目前為止,我能做的最好的就是嘗試對組合的標頭進行逆向工程。但是層數太多了,摸不著頭腦。我正在嘗試編寫程序集,因此無法按原樣使用標頭。我感興趣的具體產品是核-ST32F401RENucl
    發表于 02-09 07:00

    單片機串口通訊RXD與TXD如何進行對接詳細資料講解

     相信很多人都對單片機與計算機或者芯片通信時,RXD與TXD如何連接比較困惑。因為在一些電路圖中,有的是直連接法,有的是交叉接法,有點摸不著頭腦。
    發表于 07-25 17:36 ?4次下載
    單片機串口通訊RXD與TXD如何進行對接<b class='flag-5'>詳細</b>資料講解

    AR和VR以及MR這三者的區別是什么

    AR、VR、MR技術讓我們見識到了科技神奇的同時,也真實可感的現實世界和無法觸摸的虛擬世界的聯系更加緊密。三種技術的出現很多人摸不著頭腦,甚至將它們混為一談。下面就來看看這三種技術到底是什么吧。
    發表于 10-21 15:56 ?4255次閱讀

    教你解讀內存條標簽的詳細信息

    內存是很多玩家重視的硬件,在升級電腦時也是首選,但如何區分不同品牌和不同定位的內存,可能很多玩家就摸不著頭腦了。
    的頭像 發表于 01-18 10:36 ?3w次閱讀
    主站蜘蛛池模板: 国产午夜精品美女免费大片| 伊人激情综合网| 日本漫画母亲口工子全彩| 快播理伦片| 精品无码国产AV一区二区三区| 国产精品免费大片| 国产成人免费a在线资源| 风流少妇BBWBBW69视频| 白嫩美女直冒白浆| 波多野结衣的AV一区二区三区| 99精品久久久久久久| 99久免费精品视频在线观看2| 51无码人妻精品1国产| 国产盗摄TP摄像头偷窥| 成年人视频在线免费| 草柳最新地址| 荡公乱妇HD中文字幕| 动漫成年美女黄漫网站| 国产高清视频在线观看不卡v| 国产超碰精久久久久久无码AV| 国产高清-国产av| 国产欧美精品国产国产专区| 国产亚洲日韩另类在线播放| 国内精品久久久久久久999下| 好想被狂躁A片免费久99| 九九久久久| 美女打开双腿扒开屁股男生| 欧美高清另类video| 青青草色青伊人| 偷拍亚洲色自拍| 亚洲乱码国产一区三区| 伊人久久网站| 99国产精品久久人妻无码| 不知火舞vs精子| 国产色婷婷精品人妻蜜桃成熟| 黑色丝袜在线观看| 理论937| 人妖操女人| 亚洲成A人片在线观看中文不卡 | 国产浮力草草影院CCYY| 国产高清-国产av|