690 likes | 943 Views
第 19 章. X Window 系統. 前言. 現今的作業系統絕大多數都提供了圖形化的介面 , 在 Linux 底下 , 使用的圖形介面是 X Window System 。透過 X Window System, 使用者可以如同在 Windows 一般 , 用滑鼠指指點點 , 輕鬆使用 Linux 。 此外 , X Window System 的 client/server 架構 , 更讓這個圖形介面系統有更多不同的發展。. 本章提要. 19-1 X Window 簡介 19-2 X Window 的架構及運作原理
E N D
第 19 章 X Window 系統
前言 • 現今的作業系統絕大多數都提供了圖形化的介面, 在 Linux 底下, 使用的圖形介面是 X Window System。透過 X Window System, 使用者可以如同在 Windows 一般, 用滑鼠指指點點, 輕鬆使用 Linux。 • 此外, X Window System 的client/server 架構, 更讓這個圖形介面系統有更多不同的發展。
本章提要 • 19-1 X Window 簡介 • 19-2 X Window 的架構及運作原理 • 19-3 視窗環境簡介
19-1 X Window 簡介 • 圖形使用者介面的理念, 創始於全錄 (Xerox) 公司的實驗室, 最早出現在1970 年代末期, 但第一個將這理念普及化的公司則是蘋果電腦。 • X.Org 基金會 • X Window 的稱呼
X.Org 基金會 • X Window System 出現於 1984 年, 由麻省理工學院與 DEC (DigitalEquipment Corporation) 共同進行雅典娜 (Athena) 計畫開發, 後來則成為 Unix環境圖形介面的標準。
X.Org 基金會 • 隨著個人電腦的普及, Intel x86 架構的機器日益增多, 為了在 x86 架構的平台上發展 X Window System, 1992 年 4 名相關研究人員成立了 XFree86 計畫 ("86" 為 x86 架構的意思, 實際上其支援多種作業平台), 而其推出的 X WindowSystem 被所有 Linux 發行版共同採用, 成為 Linux 的標準圖形介面。
X.Org 基金會 • 不過在 2003 年底時, 由於 XFree86 變更其授權的內容, 引發許多人質疑新授權是否符合自由軟體的精神, 同時更造成內部團隊因理念不合而分裂。
X.Org 基金會 • 隨後在 2004 年 1 月, 出走的 XFree86 成員與 X 協會 (X Consortium) 合作, 成立X.Org 基金會, 也推出了可以在 x86 平台上運作的 X Window System。依筆者撰文時的情勢而言, X.Org 基金會的 X Window System 獲得了較多 Linux 發行版的支持, 有機會成為 Linux 圖形介面未來的主流。 • 目前 X.Org 基金會的 XWindow System 的最新版本為 X11R6.7。
X Window 的稱呼 • X Window System 的稱呼有下列 3 種: • X 或 X Window:這是最常被使用的兩個名字, 可視為是 X Window System的簡稱。 • X11 或 X11R6:X11 指的是 X Window System 的第 11 版, 而 X11R6 則是 X Window System 的第 11 版/第 6 發行版。目前最新的版本為 X11R6.7。 • X Window System:這是正式的稱呼。
19-2 X Window 的架構及 運作原理 • X Window System 採用 X client 與 X server 的架構, 但這與一般架設伺服器所稱的 client/server 架構不大一樣。 • 在一般伺服器的 client/server 中, 我們稱提供服務的一方為 server (例如SQL server、WWW server 或 FTP server) , 而使用服務的一方為 client。因此通常使用者是在 client 端操作, 以存取 server 端的資源:
X Window 的架構及運作原理 • 在 X Window System 中, X client 是應用程式執行所在的一方, 而 X server是顯示應用程式視窗的一方:
X Window 的架構及運作原理 • 那麼此架構中, X client 與 X server 是如何分工及溝通的呢?以下我們將分別說明。
X Window 的架構及運作原理 • X Window System 的 client/server 架構 • X Window System 架構的優點
X Window System 的 client/server 架構 • X Window System 採用了 client/server 模式, 其組成可分為 X server、Xclient 與 X protocol 等 3 部分, 以下分別說明它們的角色與關係。 • X server:處理輸入輸出訊息 • X client:執行應用程式大部分的運算功能 • X protocol:X server 與 X client 的溝通管道 • 本尊與分身?
X server:處理輸入輸出訊息 • X server 主要是控制輸出及輸入設備的程式, 並維護相關資源 (如顏色、字型等)。 • 它接受輸入設備 (如滑鼠、鍵盤) 的訊息, 並將這些訊息傳送給 X client。 • 而 X client 所傳來的訊息, 也由 X server 負責輸出到輸出設備 (螢幕) 上。
X server:處理輸入輸出訊息 • X server 傳遞給 X client 的訊息稱之為 Event, 主要是有關於鍵盤輸入, 滑鼠移動或按下, 和視窗狀態異動 (如視窗顯示的區域有所變化) 的訊息。 • 而 Xclient 傳送給 X server 的訊息則稱為 Request, 主要是要求 X server 建立視窗、更改視窗大小位置、或在視窗上繪圖或輸出文字。
X server:處理輸入輸出訊息 • 要請您注意的是, X server 僅傳遞輸入設備所輸入的訊息, 但並不加以解釋, 解釋的工作由 X client 負責。 • 也就是說, 當使用者按下鍵盤按鍵, 或移動、按下滑鼠時, X server 只將使用者按了哪些鍵、將滑鼠從哪裡移動到哪裡的訊息,用 Event 傳遞給 X client, 由 X client 去解釋這些動作的意義。
X server:處理輸入輸出訊息 • 而由於現今的作業系統都具有多工的機制, 因此 X server 能同時接受多個X client 的 Request。這也意謂著我們可在 X Window System 的視窗環境中執行多個 X client 應用程式, 而每個應用程式也都可以擁有自己的視窗, 並同時間被執行。 • 例如您可以開啟一個視窗執行郵件程式來寫情書, 而另一個視窗用來播放 MP3 音樂。
X server:處理輸入輸出訊息 • 由於 X server 主要是負責螢幕的輸出, 所以也常被稱為顯示伺服器(Display Server) , 與顯示卡的支援與否息息相關。 • 因此當我們使用較新的顯示卡(或其他輸出入硬體), 卻發現原來的 X server 無法支援時, 就需要安裝新版本的X server 來配合:
X client:執行應用程式 大部分的運算功能 • X client 主要是負責應用程式運算處理的部分:如信件處理程式收發電子郵件的程式部分, 與資料庫程式處理資料的程式部分。如前面所述, X client 並不接受使用者輸入的訊息, 這些輸入訊息由 X server 接受後, 以 Event 的形式傳遞給 X client。而 X client 針對所收到的 Event 進行程式運算後, 如需要輸出到螢幕上, 或更改畫面的顯示外觀, 再發出 Request 傳送給 X server:
X client:執行應用程式 大部分的運算功能
X client:執行應用程式 大部分的運算功能 • 雖然在一般的情況下, 我們都在同一台電腦執行 X client 與 X server。但X client 與 X server 也可以分別在不同的電腦上執行, 使用者可將遠端電腦執行的應用程式顯示在本地電腦的螢幕上, 程式開發者完全不需要為此重新撰寫及編譯 X client 應用程式。 • 也因為在 X Window System 的架構中, X client 是與硬體無關的, 所以更換顯示卡等硬體時, 不需重新編寫 X client 程式。
X protocol:X server 與 X client 的溝通管道 • 在人類社會裏, 人跟人之間要能互相溝通及傳達訊息, 需要有共通的語言。 • 既然 X client 與 X server 要在 X Window System 裏相互傳遞訊息, 他們也同樣需要一個共通的語言, 那就是 -X protocol (X 協定):
X protocol:X server 與 X client 的溝通管道 • 依 X client 與 X server 相對位置的不同, 可將 X protocol 分為以下二種情況: • X client 與 X server 在同一台電腦:此為最常見的情況, X client 與 X server利用系統內部已有的溝通機制來傳遞訊息。如共用記憶體 (shared memory)、Pipes、Unix Sockets...等方式。
X protocol:X server 與 X client 的溝通管道 • X client 與 X server 在不同電腦:X client 與 X server 之間的通訊透過外部網路相連。這兩台電腦不需要有相同的硬體平台及作業系統, 也不限定要架設在何種網路環境之上, 只要它們能用 X protocol 相互溝通即可。X protocol支援了現今常用的通訊網路協定如 TCP/IP、OSI、DECnet...等;而在硬體層 (Physical Level) 協定方面, 也支援了乙太網路、Token Ring、X.25、序列埠...等。
X protocol:X server 與 X client 的溝通管道 • 基於 X Window System 網路架構的特性, X client 可以跟 X server 分別在不同的電腦上執行, 因此可在本地電腦執行 X server, 而在遠端執行 X client。
X protocol:X server 與 X client 的溝通管道 • 此時使用者透過本地的滑鼠及鍵盤下達操作命令, 然後由本地的 X server 將使用者的操作訊息傳送給遠端的 X client。 • X client 針對使用者的動作及需求運算後, 將要顯示的結果透過網路傳回給本地的 X server。 • 最後 X server再將結果顯示到螢幕上:
X protocol:X server 與 X client 的溝通管道 • 使用者透過滑鼠及鍵盤對 X server 下達操作命令。 • X server 利用 Event傳送使用者操作訊息給 X client。 • X client 進行程式運算。 • X client 利用 Request 傳回所要顯示的結果。 • X server 將結果顯示在螢幕上。
本尊與分身? • 宗教上的神明常有本尊與分身的能力, 分身四處遠遊及顯像, 接受各地信徒的祈求;本尊則在其居處思考處理的方式。仔細想想, 這種運作方式是不是跟 X Window System 的運作原理很像呢? • X server 如同分身負責顯示及接受使用者的輸入訊息, X client 則像本尊處理程式運算的部分:
X Window System 架構的優點 • X Window System 將 X client 與 X server 分開來, 其優點有以下幾點。 • 整合不同的作業平台: • 妥善利用網路上的硬體資源: • 妥善利用網路上的軟體資源 • 適合教學等具特殊需求的工作環境 • 透過網路執行 X Window System 真的比較有效率嗎? • 方便程式開發者的網路通透性
整合不同的作業平台: • 由於 X Window System 並不限制所能執行的硬體平台及作業系統, 而X client 與 X server 也不需要在同一部電腦才能互相溝通。因此我們可將 Xclient 與 X server 移植到不同硬體平台及作業系統, 並在不同的作業平台上分別執行。利用這點, 可充分地整合現有的各種作業平台。尤其在一個具有多作業平台的機構裏, 此種架構特別有用:
整合不同的作業平台: • 既然 X Window System 不受所執行的作業平台限制, 因此我們也可以在MS Windows 上安裝 X server, 以接受遠端 Linux 主機的 X client 所傳送過來的 Request:
妥善利用網路上的硬體資源: • 由於 X server 只負責螢幕顯示, 及接受使用者的輸入訊息, 工作負荷量不大, 因此我們可將執行效能較差電腦當成 X server 顯示之用。 • 相反的, 由於 Xclient 需要負擔應用程式大部分運算的功能, 所以需要功能較強的電腦來執行:
妥善利用網路上的硬體資源: • 當然我們也可以同時在不同的遠端電腦分別執行 X client 應用程式, 然後將這些結果全部輸出到本地電腦的螢幕上:
妥善利用網路上的硬體資源: • 甚至, 可以同時在遠端及本地電腦執行不同的 X client 應用程式, 並將這些結果全部顯示在本地電腦的螢幕上:
妥善利用網路上的硬體資源: • X Window System 的 client/server 架構, 使我們可以在遠端執行 X client的應用程式, 然後將結果顯示在本地電腦的螢幕上。 • 利用此特性, 對於那些本地電腦沒有的軟體 (可能因為授權因素, 或此軟體根本沒有本地電腦作業系統的版本), 可以透過網路在遠端執行, 使得軟體資源能充分利用:
適合教學等具特殊需求 的工作環境 • X client/server 的架構在某些特殊場合裏特別有用。 • 例如在公司或學校裏,系統管理者想要同時存取多台電腦;或者在教學環境裏, 老師可將教學內容直接顯示在學生的螢幕上, 而學生也可以將學習結果傳回到老師的螢幕:
適合教學等具特殊需求 的工作環境
透過網路執行 X Window System 真的比較有效率嗎? • 能在遠端執行 X client 是 X Window System 的的一個重要特色, 您或許會懷疑透過網路來執行 X client 真的會提升程式執行效率嗎? • 一般而言在下列條件下, 在遠端執行 X client 將有明顯的效率提升: • 網路頻寬較大。 • 遠端電腦有較好的硬體配備, 如較快的 CPU、更多的記憶體, 更大磁碟空間...等。
透過網路執行 X Window System 真的比較有效率嗎? • 遠端電腦是閒置的, 或本地電腦工作負擔較重。 • 所執行的程式需要較多的運算時間, 並且不需要常常將結果輸出到在螢幕上。如果程式的輸出結果是個影像圖, 此時只能用點陣圖的方式傳送 Request, 無法以物件方式傳送, 就不適合在遠端執行。
方便程式開發者的網路通透性 • 在一般的系統裏, 如果要將單機版的程式改成能在網路環境執行, 程式開發者需要為網路版的軟體改寫程式, 並重新編譯。