說起Xwindow,很多人都知道,但是它的意義并不僅僅在于提供了一個圖形操作機制,任何事情如果牽扯到它的意義,那么就不得不談談它的出生背景以及簡要的歷史,Xwindow出生在終端大行其道的時期,那個時候,人們提出了終端的概念,這樣的話一臺計算機就可以被很多人共享,每個人一個終端然后連接到同一臺計算機上,這樣就擴充了計算機的概念,再也不是只有計算機旁邊的人可以操作它了,只要有終端連接到計算機上,哪怕在大洋彼岸的人也可以是計算機的擁有者之一,這樣的話,終端可以擴充到全世界,某種意義上講,計算機本身和連接它的終端就是一臺整個的大計算機,其實多用戶,多任務的概念就是那個時期被發掘的。這里說的和windows操作系統無關,windows系統根本就不是那個時期的東西,即使是后來的系統,它也沒有做到后來者居上,想想msdos吧想想windows3.1吧,再想想windows多任務的發展吧,可憐的協作多任務,經典的畢竟是經典,unix的哲學和文化影響了整個計算機產業,后面會提及。
終端是有了,人們可以遠程地操作計算機了,可是終端畢竟只是一個字符界面,那個時期有個字符界面就很不錯了,可是人們總是希望把自己可以觸及的東西盡量變得精彩,雖然很多人們摸不到那些巨無霸計算機,但是unix的產生和c語言的產生讓很多人可以為計算機寫程序了,人們開始可以在0和1的世界里面暢游了,用0和1搭建起來的世界成就了我們今天世界的精彩。既然如此,人們迫不及待地要改進終端的操作方式,于是圖形化的操作界面便成了一個需求,畢竟視覺上的東西總是很逼真,它卸掉了很多字符界面的邏輯包袱,具有諷刺意味的是,也正是如此,windows最后才風靡天下,不過windows也就僅僅如此罷了。如果說人們想到了在遠程通過圖形界面來操作計算機,那么必然要有一種方式來使得計算機“理解”這一種方式,需要注意的是,終端就是終端,即使它有了圖形界面它還只是一個終端,真正的計算任務是在計算機端完成的,因此終端本身就是一個操作接口而已,不包括任何邏輯運算元素,因此比如說我按下一個按鈕,那么我“按下按鈕”這件事就必須告訴計算機,以前字符終端依著計算機,字符終端傳過去一個“ls -l”,那么計算機知道該怎么做,把事情做完后會把結果傳回來,這個過程是如此的容易被理解以至于根本沒有什么要說的,字符終端只需要顯示字符就可以了,但是圖形界面就不一樣了,這回計算機該照顧一下圖形終端了。
還是那個例子,我按下一個按鈕,我的本意是彈出來一個提示框,注意,按鈕是我按下的,計算機那邊根本沒有按鈕這個概念,提示框也是在我的圖形終端彈出的,計算機那邊也沒有提示框的概念,這就是說一定要通過某種機制使得當計算機“收到”按下按鈕這件事時(當然要有一個約定表示比如計算機收到“click 屬性”就表示用戶按下一個按鈕),通過自己的計算,然后發回圖形終端一個消息,當圖形終端收到消息時,知道要在圖形界面的某個地方畫上什么圖形其實就是一個提示框。圖形終端已經不再是僅有顯示字符的功能的“終端”了,它已經成了一個小得多的計算機了,擁有了自己的邏輯控制功能,于是就分出了服務器和客戶機,服務器就是那個只負責計算和回顯的大家通過終端(字符/圖形)共享的計算機,而客戶端就是擁有終端的小得多,功能也弱很多的計算機,這就是在計算本身的意義上分出的服務器和客戶機,這種模型一直延續到現在,在顯示的意義上,負責接收用戶輸入和顯示的計算機成了服務器,而負責告訴服務器該如何顯示的計算機成了客戶機,而它們之間復雜的交互固然需要一個約定,這個約定成了一個協議,就是x協議,而整個體系就成了X window體系。見下圖:
話說linux來自網絡是從開發意義上說的,不僅如此,它的誕生環境決定了它的思想深深扎根于網絡,這就是它繼承于unix的最好的基因,unix誕生之日就不是讓用戶在它面前擺置的,用戶必須擁有一個終端,通過終端連接,當然終端可以在本機。在unix的誕生之日,它就宣稱一切都可以來自于網絡,這里的網絡不僅僅指TCP/IP網絡,那個時候還沒有呢,網絡的意義就在于分布式,TCP/IP僅僅說的是一個網絡的實現而已,它就是一套協議族,在沒有TCP/IP的時候,可以通過終端的線路規程組成網絡,也可以用任何可以把操作者和計算機拉開距離的機制組成網絡,現在我們看一下當今存儲領域很火的SAN吧,其實SAN就是一個不是TCP/IP的網絡,它的實現協議就是scsi協議和底層的光纖傳輸規程,其實任何的計算機內部的io指令都可以實現一個網絡協議,一臺計算機本身就是一個網絡,其中cpu是中心,而各種io外設都是這個網絡上的節點,于是按照分布式的思想將那些外設拉到外邊去不就組成了一臺分布式計算機了嗎?這個思想根本不是什么新東西,想想unix的終端,它不是把鍵盤和顯示器拉到外邊了嗎?x window當然也是,現在把硬盤拉到外面就成了SAN,這一切是不是很有趣。硬盤拉到外邊再通過scsi的協議規程就可以讓很多計算機共享一個磁盤陣列,這也不是什么新東西,想想商用unix的虛擬化的概念,一臺計算機中運行n多個操作系統,分成了n多個node,在加上numa機制可能更復雜,這些操作系統不就是共享一個本機的磁盤嗎?可見現在分布式的概念,集群的概念僅僅是一個策略性的東西罷了,機制在于什么?機制就是unix的哲學!
SAN的方式有好處嗎?當然有,當TCP/IP風靡的時代,讓人們恨不得把所有東西都架設在它上面,于是一個網絡里面的數據就十分雜亂了,而且在數據量很大的網絡,TCP/IP會不堪重負,就好像一些粉絲把明星壓得不堪重負一樣的道理。這樣通過另一個網絡,scsi網絡來傳輸塊級的數據,不但可以將大量的文件數據從TCP/IP網絡卸載下來,而且很靈活的塊級傳輸會使得效率更高,不像tcp/ip的文件級的操作,保留了很多高層的東西,這樣也會使文件服務器很累,san將存儲策略交給了管理員,自己只管存儲,人們像操作自己的磁盤一樣操作san網絡,再也不用被文件等高層概念困擾,也免去了很多的文件配置工作。如果按照unix哲學思考問題,那么計算機中的任何一個外設都可以被拉到外面,就連內存都可以,這樣的話,分布式就真的變成現實了,人們再也不用為了分布式而寫那么多基于tcp/ip的程序了,一切就好像在操作自己的計算機一樣,tcp/ip的負載將大大減輕。這就是一個輪回,起初人們使用自己的計算機而且在自己的計算機中保存一切數據,然后有了網絡,人們知道了網絡的概念后開始讓網絡幫忙,然后人們發現一切都是網絡后,就又開始自主的屏蔽掉了網絡的概念,就像san一樣,本地化的操作著整個網絡...
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
