免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1299 | 回复: 0
打印 上一主题 下一主题

concept of xserver 转贴 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-25 12:19 |只看该作者 |倒序浏览
X Window 系統的基本概念
在對 X Window 的使用有了一點認識之後,我們接著來討一些 XWindow
系統的基本概念。
和其它的視窗系統比較起來,X Window 具有以下幾項特色:
  • 網路通透性 (network transparancy)
    所謂網路通透性就是使用者可以將同一網路上其它機器執行的應用
    程式結果同時輸出在自己所在機器 (區域) 的螢幕上如圖 22 所示,
    就如同程式是在自己所在的機器上執行一般。X Window 可以在同一
    螢幕上同時使用數個來自不同機器的程式。更重要的是這種特性不受
    機器架構的影響,所使用的系統可以是不同的廠牌,不同的硬體架構  
    甚至不同的作業系統。

    圖 22  X Window 可以同時顯示遠方和區域的程式輸出
  • 系統的彈性 (flexibility)
    X Window 系統只基本上只是一個協定 (X prorocal),它定義了
    X Window必需具備的功能和通訊方式,只要是合乎 X Protocal 定義的
    視窗系統,都可以稱之為X Window。因此 X Window 系統軟體只提供
    了一些很基本的功能,而將大部分的彈性空間留給了 X 的程式設計師
    和使用者。例如使用者可以使用不同的視窗經理,定義不同風格的
    使用者介面,因為這些都不是定義在 X Window 的系統中。
    也就因為 X Window系統留下的高度彈性,我們可以在不同的機器上
    見到外觀全然不同的 X Window。
  • 高度的可攜性 (portability)
    X Window 並不是作業系統的一部分,對於作業系統而言 X Window
    只是一個應用軟體,所以 X Window 可以很容易的被安裝在其它的系統中。
    事實上今天幾乎所有使用 UNIX 作業系統的機器都安裝了 X Window。
  • 階層性的視窗 (window heirarchy)
    X Window 的設計融合了物件導向 (object oriented) 的觀念。
    在 X Window 中的每個``單元''如捲動棒 (scroll bar),按鈕等都可以視為
    一個小的``視窗''(或者是一個``物件'')(在 X Window 中另外有一個
    專有名詞 --- widget。有關widget 的詳細說明,請參照 O'Reily 出版的
    ``X Toolkit Intrinsics ProgrammingManual'' 及其它相關書籍。)。
    當 X 程式設計師在設計應用程式時就不需要再設計這些視窗,而可以
    用小的視窗組合而 產生大的視窗。這就是視窗的階層性。這簡化了
    X Window應用程式的設計流程,也使得所設計出的每個 X 軟體可以
    具有相同的基本特性。
  • 原始程式可免費取得
    X Window 的原始程式可以透過 Internet 或其它的方法免費取得,因此
    它是一個很好的研究對象。也因為它可以免費取得,使得 X Window
    被廣泛的使用在各種機器上,幾乎已經成為 UNIX 系統下的視窗標準。

X Window 與網路
這幾年來電腦網路的快速發展,帶給我們一個與從前全然不同的環境。
X Window系統就針對了今日強大的網路系統加以設計,大大的提昇了
系統的效能,同時也擴充了系統的應用範圍。雖然也可以將所有
X Window 的工作在同一台機器上完成,但這就無法充分顯現 X Window
的威力。現在就讓我們來看看 X Window 是怎樣利用網路的。

  • 分散式處理
    前面曾經提到在 X Window 中可以在一個終端機上同時執行數個不同的
    遠方程式,這項功能頗為符合今日分散式處理的要求。
    例如我們要執行一個複雜的科學運算軟體,如視覺效果 (visualization )
    軟體,我們可以透過網路讓程式在遠方運算能力較強大的大型電腦或
    超級電腦中執行,最後再將結果或圖形顯示在自己的終端機上。
    另外一個例子是如果一個人要同時作幾件事,如編譯程式、科學運算及\n文書處理。他可以將各個程式依不同的需要交由不同的遠方機器執行,
    再將結果顯示在自己的終端機上。如此不但可以縮短執行的時間,
    又可以同時監視每個程式執行的結果。
    以上所提的都只是比較基本的分散處理的例子,我們也可以透過一些
    功能較完備的平行分散處理工具來進一步發揮網路的功能。
    至於如何透過網路來執行一個 X 程式呢?以下是幾個基本的步驟:
  • 首先我們必需要``授權''遠方的機器將結果輸出在本地的終端機上。
    要達成這項要求,必需在本地的終端機上輸入:
    % xhost +  hostname
    其中 hostname 代表遠方機器的名稱,例如輸入:
    % xhost +  gate.sinica.edu.tw
    即是授權將在 gate.sinica.edu.tw 上程式執行的結果顯示在本地的終端機上。
  • 指定 X 程式的輸出螢幕。每個 X 程式都可以設定將其結果輸出到
    某台機器的某個螢幕上,方法是在執行程式時使用 X 的標準參數  -display
    (或是  -d)。例如要將  xeyes 的執行結果輸出在 omega 的第零個螢幕上,
    只要輸入:
    % xeyes -display  omega :0 &
    當然我們也可以將在本地機器執行的程式結果輸出到遠方的終端機上,
    只是在一般的情況下這樣的用處不大罷了。
  • 字型管理
    X11R5 增加了一項``字型伺服器'' (font server) 的功能,它的基本概念是
    將字型分散儲存在網路上的機器中,每個 X server 都可以透過網路取得
    所需要的字型。不必像X11R4 及以前版本的 X Window,每個 X server
    都需要儲存一套字型。

    圖 23 不使用 font server --- 每個 X server 都必需儲存一套字型

    圖 24 使用 font server --- X server 可以透過網路取得字型
    圖 23 及圖 24 對是否使用 font server 的分別作了一個清楚的說明。
    在圖 23 中每個X server 都必需從自己的字型資料庫中取得字型。
    而圖 24 則顯示在使用 font server的情況下,X server 不一定要自己
    儲存字型。它可以使用自己儲存的字型,透過網路取得字型,或者是
    同時使用本地及遠方的字型。
    Font server 的架構是非常具有彈性的,每個 X server 除了可讀取自己
    的字型資料庫之外,還可以連接到一個或是多個 font server 如圖 25
    所示。此外 font server還可以作階層式的配置,例如圖 26 中即是
    X server 透過 font server 1 取得 fontserver 2 中的字型。

    圖 25 一個 X server 可以連接到一個以上的 font server

    圖 26 階層式的 font server
    font server 充分發揮了網路的的功效,使用 font server 具有以下的優點:
  • 資源分散儲存,不致於在某系統故障時造成所有的資源遺失或無法
    使用。
  • 在同一區域網路上同一種字型僅需儲存一至二分,大大的減少了
    所佔用的磁碟空間。
    但 font server 也有著它先天上的缺點,那就是無可避免的會造成網路
    交通量的增加,降低了網路的整體效率,這一點是需要再改進的
    (有關 font server 的詳細內容請參考 font server 的 man pages 及
    X Consoutium 的 ``The X Font Services Protocol''。)。

Client-Server 架構
X Window 的基本成分
X Window 和其它的視窗系統不同,它不是一個單一的軟體,而是由
以下三個基本成分所組成。
  • X Server:它控制了所有的 X 資源 (X resources),也控制實體的
    顯示器及輸出入裝置。它同時負責處理一切由 client 所傳來的 X 事件
    (X event)。
  • Client:除了 X Server 以外的所有 X 程式。一般我們在 X Window
    下所執行的所有應用程式,都是屬於 X client。
  • 通訊通道 (communication channel):介於 X Server 及 client 之間,
    包含了實體的網路裝置及通訊協定。
    圖 27 就是以上三個基本成分之間的關係。

    圖 27 X 的基本成分
    X Server
    X Server 控制了實體的顯示器和輸出入裝置如鍵盤和滑鼠等。它的
    主要工作有資源的管理及控制,事件的處理,錯誤訊息的處理等。
    所謂的 X 資源主要包括了色彩,字型等。在 X Window 中這些都由
    X Server來取得與使用,因此減輕了 client 的負擔,也使得 X Window
    的可攜性更高。有關 X資源的詳細討論,將在下一節中加以介紹。
    X Server 取得資源後便會依照 client 的要求加以回應,通常是
    將其顯示在螢幕上,例如使用不同的字型,改變顏色等。
    在 X Window 中如滑鼠的移動、鍵盤的輸入、視窗是否被覆蓋等
    動作的變化我們稱之為 X事件。X Server 第二項重要的工作就是將這些
    發生的事件通知 client,client才能根據這些訊息作出適當的反應。
    另一個 X Server 的任務是錯誤訊息的處理。諸如當 X Server 無法
    完成 client 的請求,或者是系統有錯誤的狀況發生,X Server 也都會將
    這些訊息告訴 client。
    一般我們啟動 X Window 即是啟動 X Server,然後再根據需要執行
    client程式。我們經常使用的 X terminal 實際上也就是一個專門執行
    X Server的機器,它所有的 client 都是來自遠方的 host。同樣的,我們
    在 PC 上執行一個 XWindow 模擬器 (emulator) 也就是執行一個 X Server
    ,這就是為什麼安裝一個 XWindow 模擬器的同時也得安裝字型、色彩等
    資源的原因。
    X Client
    Client 就是 X Window 中的應用程式,它會要求 X Server 執行
    各種特定的動作,如``將視窗背景顏色改成綠色''等等。很多其它視窗中
    屬於系統的功能在 X Window 中都只是一個 client,例如前面提到過的
    視窗經理,以及桌面經理 (desktop manager),檔案經理(file manager)
    等。由於 X Window 系統的這種特殊架構,使得軟體發展者有了更大的
    彈性空間。
    X Server 與 Client 之間如何交互作用
    為了更清楚的說明 X Server 和 client 之間的交互作用,
    我們用以下的例子做一個說明。圖 28-1 至 28-4 就是在  ctwm 中
    圖像化的 ``分解動作''。
    最後我們以圖 29 說明 X Server 和 client 之間的關係。

    圖 28-1 滑鼠移至圖像化按鈕上。此時 X Server 將這個 X 事件通知 client。

    圖 28-2 按下圖像化按鈕。此時 X Server 將這個 X 事件通知 client。

    圖 28-3 client 請求 X Server 執行圖像畫的動作,將螢幕重畫。

    圖 28-4 X Server 通知 client 工作完成。

    圖 29 X Server 和 client 的關係。
                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/92965/showart_2159724.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP