1 / 69

第 19 章

第 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 的架構及運作原理

uma-wagner
Download Presentation

第 19 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 19 章 X Window 系統

  2. 前言 • 現今的作業系統絕大多數都提供了圖形化的介面, 在 Linux 底下, 使用的圖形介面是 X Window System。透過 X Window System, 使用者可以如同在 Windows 一般, 用滑鼠指指點點, 輕鬆使用 Linux。 • 此外, X Window System 的client/server 架構, 更讓這個圖形介面系統有更多不同的發展。

  3. 本章提要 • 19-1 X Window 簡介 • 19-2 X Window 的架構及運作原理 • 19-3 視窗環境簡介

  4. 19-1 X Window 簡介 • 圖形使用者介面的理念, 創始於全錄 (Xerox) 公司的實驗室, 最早出現在1970 年代末期, 但第一個將這理念普及化的公司則是蘋果電腦。 • X.Org 基金會 • X Window 的稱呼

  5. X.Org 基金會 • X Window System 出現於 1984 年, 由麻省理工學院與 DEC (DigitalEquipment Corporation) 共同進行雅典娜 (Athena) 計畫開發, 後來則成為 Unix環境圖形介面的標準。

  6. X.Org 基金會 • 隨著個人電腦的普及, Intel x86 架構的機器日益增多, 為了在 x86 架構的平台上發展 X Window System, 1992 年 4 名相關研究人員成立了 XFree86 計畫 ("86" 為 x86 架構的意思, 實際上其支援多種作業平台), 而其推出的 X WindowSystem 被所有 Linux 發行版共同採用, 成為 Linux 的標準圖形介面。

  7. X.Org 基金會 • 不過在 2003 年底時, 由於 XFree86 變更其授權的內容, 引發許多人質疑新授權是否符合自由軟體的精神, 同時更造成內部團隊因理念不合而分裂。

  8. 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。

  9. 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:這是正式的稱呼。

  10. 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 端的資源:

  11. X Window 的架構及運作原理 • 在 X Window System 中, X client 是應用程式執行所在的一方, 而 X server是顯示應用程式視窗的一方:

  12. X Window 的架構及運作原理 • 那麼此架構中, X client 與 X server 是如何分工及溝通的呢?以下我們將分別說明。

  13. X Window 的架構及運作原理 • X Window System 的 client/server 架構 • X Window System 架構的優點

  14. 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 的溝通管道 • 本尊與分身?

  15. X server:處理輸入輸出訊息 • X server 主要是控制輸出及輸入設備的程式, 並維護相關資源 (如顏色、字型等)。 • 它接受輸入設備 (如滑鼠、鍵盤) 的訊息, 並將這些訊息傳送給 X client。 • 而 X client 所傳來的訊息, 也由 X server 負責輸出到輸出設備 (螢幕) 上。

  16. X server:處理輸入輸出訊息

  17. X server:處理輸入輸出訊息 • X server 傳遞給 X client 的訊息稱之為 Event, 主要是有關於鍵盤輸入, 滑鼠移動或按下, 和視窗狀態異動 (如視窗顯示的區域有所變化) 的訊息。 • 而 Xclient 傳送給 X server 的訊息則稱為 Request, 主要是要求 X server 建立視窗、更改視窗大小位置、或在視窗上繪圖或輸出文字。

  18. X server:處理輸入輸出訊息 • 要請您注意的是, X server 僅傳遞輸入設備所輸入的訊息, 但並不加以解釋, 解釋的工作由 X client 負責。 • 也就是說, 當使用者按下鍵盤按鍵, 或移動、按下滑鼠時, X server 只將使用者按了哪些鍵、將滑鼠從哪裡移動到哪裡的訊息,用 Event 傳遞給 X client, 由 X client 去解釋這些動作的意義。

  19. X server:處理輸入輸出訊息 • 而由於現今的作業系統都具有多工的機制, 因此 X server 能同時接受多個X client 的 Request。這也意謂著我們可在 X Window System 的視窗環境中執行多個 X client 應用程式, 而每個應用程式也都可以擁有自己的視窗, 並同時間被執行。 • 例如您可以開啟一個視窗執行郵件程式來寫情書, 而另一個視窗用來播放 MP3 音樂。

  20. X server:處理輸入輸出訊息

  21. X server:處理輸入輸出訊息 • 由於 X server 主要是負責螢幕的輸出, 所以也常被稱為顯示伺服器(Display Server) , 與顯示卡的支援與否息息相關。 • 因此當我們使用較新的顯示卡(或其他輸出入硬體), 卻發現原來的 X server 無法支援時, 就需要安裝新版本的X server 來配合:

  22. X server:處理輸入輸出訊息

  23. X client:執行應用程式 大部分的運算功能 • X client 主要是負責應用程式運算處理的部分:如信件處理程式收發電子郵件的程式部分, 與資料庫程式處理資料的程式部分。如前面所述, X client 並不接受使用者輸入的訊息, 這些輸入訊息由 X server 接受後, 以 Event 的形式傳遞給 X client。而 X client 針對所收到的 Event 進行程式運算後, 如需要輸出到螢幕上, 或更改畫面的顯示外觀, 再發出 Request 傳送給 X server:

  24. X client:執行應用程式 大部分的運算功能

  25. X client:執行應用程式 大部分的運算功能 • 雖然在一般的情況下, 我們都在同一台電腦執行 X client 與 X server。但X client 與 X server 也可以分別在不同的電腦上執行, 使用者可將遠端電腦執行的應用程式顯示在本地電腦的螢幕上, 程式開發者完全不需要為此重新撰寫及編譯 X client 應用程式。 • 也因為在 X Window System 的架構中, X client 是與硬體無關的, 所以更換顯示卡等硬體時, 不需重新編寫 X client 程式。

  26. X protocol:X server 與 X client 的溝通管道 • 在人類社會裏, 人跟人之間要能互相溝通及傳達訊息, 需要有共通的語言。 • 既然 X client 與 X server 要在 X Window System 裏相互傳遞訊息, 他們也同樣需要一個共通的語言, 那就是 -X protocol (X 協定):

  27. 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...等方式。

  28. 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、序列埠...等。

  29. X protocol:X server 與 X client 的溝通管道 • 基於 X Window System 網路架構的特性, X client 可以跟 X server 分別在不同的電腦上執行, 因此可在本地電腦執行 X server, 而在遠端執行 X client。

  30. X protocol:X server 與 X client 的溝通管道 • 此時使用者透過本地的滑鼠及鍵盤下達操作命令, 然後由本地的 X server 將使用者的操作訊息傳送給遠端的 X client。 • X client 針對使用者的動作及需求運算後, 將要顯示的結果透過網路傳回給本地的 X server。 • 最後 X server再將結果顯示到螢幕上:

  31. X protocol:X server 與 X client 的溝通管道

  32. X protocol:X server 與 X client 的溝通管道 • 使用者透過滑鼠及鍵盤對 X server 下達操作命令。 • X server 利用 Event傳送使用者操作訊息給 X client。 • X client 進行程式運算。 • X client 利用 Request 傳回所要顯示的結果。 • X server 將結果顯示在螢幕上。

  33. 本尊與分身? • 宗教上的神明常有本尊與分身的能力, 分身四處遠遊及顯像, 接受各地信徒的祈求;本尊則在其居處思考處理的方式。仔細想想, 這種運作方式是不是跟 X Window System 的運作原理很像呢? • X server 如同分身負責顯示及接受使用者的輸入訊息, X client 則像本尊處理程式運算的部分:

  34. 本尊與分身?

  35. X Window System 架構的優點 • X Window System 將 X client 與 X server 分開來, 其優點有以下幾點。 • 整合不同的作業平台: • 妥善利用網路上的硬體資源: • 妥善利用網路上的軟體資源 • 適合教學等具特殊需求的工作環境 • 透過網路執行 X Window System 真的比較有效率嗎? • 方便程式開發者的網路通透性

  36. 整合不同的作業平台: • 由於 X Window System 並不限制所能執行的硬體平台及作業系統, 而X client 與 X server 也不需要在同一部電腦才能互相溝通。因此我們可將 Xclient 與 X server 移植到不同硬體平台及作業系統, 並在不同的作業平台上分別執行。利用這點, 可充分地整合現有的各種作業平台。尤其在一個具有多作業平台的機構裏, 此種架構特別有用:

  37. 整合不同的作業平台:

  38. 整合不同的作業平台: • 既然 X Window System 不受所執行的作業平台限制, 因此我們也可以在MS Windows 上安裝 X server, 以接受遠端 Linux 主機的 X client 所傳送過來的 Request:

  39. 整合不同的作業平台:

  40. 妥善利用網路上的硬體資源: • 由於 X server 只負責螢幕顯示, 及接受使用者的輸入訊息, 工作負荷量不大, 因此我們可將執行效能較差電腦當成 X server 顯示之用。 • 相反的, 由於 Xclient 需要負擔應用程式大部分運算的功能, 所以需要功能較強的電腦來執行:

  41. 妥善利用網路上的硬體資源:

  42. 妥善利用網路上的硬體資源: • 當然我們也可以同時在不同的遠端電腦分別執行 X client 應用程式, 然後將這些結果全部輸出到本地電腦的螢幕上:

  43. 妥善利用網路上的硬體資源: • 甚至, 可以同時在遠端及本地電腦執行不同的 X client 應用程式, 並將這些結果全部顯示在本地電腦的螢幕上:

  44. 妥善利用網路上的硬體資源: • X Window System 的 client/server 架構, 使我們可以在遠端執行 X client的應用程式, 然後將結果顯示在本地電腦的螢幕上。 • 利用此特性, 對於那些本地電腦沒有的軟體 (可能因為授權因素, 或此軟體根本沒有本地電腦作業系統的版本), 可以透過網路在遠端執行, 使得軟體資源能充分利用:

  45. 妥善利用網路上的硬體資源:

  46. 適合教學等具特殊需求 的工作環境 • X client/server 的架構在某些特殊場合裏特別有用。 • 例如在公司或學校裏,系統管理者想要同時存取多台電腦;或者在教學環境裏, 老師可將教學內容直接顯示在學生的螢幕上, 而學生也可以將學習結果傳回到老師的螢幕:

  47. 適合教學等具特殊需求 的工作環境

  48. 透過網路執行 X Window System 真的比較有效率嗎? • 能在遠端執行 X client 是 X Window System 的的一個重要特色, 您或許會懷疑透過網路來執行 X client 真的會提升程式執行效率嗎? • 一般而言在下列條件下, 在遠端執行 X client 將有明顯的效率提升: • 網路頻寬較大。 • 遠端電腦有較好的硬體配備, 如較快的 CPU、更多的記憶體, 更大磁碟空間...等。

  49. 透過網路執行 X Window System 真的比較有效率嗎? • 遠端電腦是閒置的, 或本地電腦工作負擔較重。 • 所執行的程式需要較多的運算時間, 並且不需要常常將結果輸出到在螢幕上。如果程式的輸出結果是個影像圖, 此時只能用點陣圖的方式傳送 Request, 無法以物件方式傳送, 就不適合在遠端執行。

  50. 方便程式開發者的網路通透性 • 在一般的系統裏, 如果要將單機版的程式改成能在網路環境執行, 程式開發者需要為網路版的軟體改寫程式, 並重新編譯。

More Related