說起
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一樣,本地化的操作著整個網路
...
使用x window的遠端顯示
經常要幫一些同學設定一些東西,就是用telnet,ssh來進行遠端登入,用 ftp,sftp來傳檔案.最近裝了ximian gnome,覺得很好用,於是到處宣傳,於是同學要我幫他 裝ximian.好吧,開始,我可懶得離開我的電腦,遠端登入.我的ip 211.83.114.189 呵呵,你可以ftp進...
XWindow與GtkWindow的轉換
在gdk gdkx.h中可以看到定義了gdkwindow與xlib中結構的變數訪問,如gdk window xid得到window xid display可以通過xopendisplay null 或者gdk window xdisplay。得到這些後,想更變一下窗體控制項的屬性就簡單了。例如 gt...
幾種不同的Xwindow載入方法
以前整理過有關xwindow啟動過程的資料,但是因為後來工作一直是配置伺服器,所以很久沒有用了。今天安裝ubuntu6.06,一時心血來潮,查了有關x的啟動過程,發現有些變化。順便把幾種不同系統下,載入x的過程整理下來。首先是老版本的linux 系統 redhat 7.0,7.2 xserver x...