歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> X windows系統使用指南(一)

X windows系統使用指南(一)

日期:2017/2/27 9:47:18   编辑:更多Linux
  第1章 使用者對X WINDOWS系統的概觀 X Window System 是一套在各種位元映像顯示器 (bitmapped dispalys) 上具有極大可攜性 (portable) 的視窗系統 (window system), 它是由麻省理工學院 (M99v)所發展出來. X Windows System ( 本書以後部份簡稱為X) 可在許多系統上執行. 由於它和生產者無關、具可攜性、對彩色掌握的多樣性及對網路之間的操作透通性 (operate transparently), 使 得X成為一個工業的標准. 由於原始程式可自由使用, 所以它也是一個優良的研究媒介. X視窗系統是一個讓程式設計師發展可攜性圖形使用者介面的工業軟體標准, X最重要的特徵之一是它獨特的與設備無關結構.任何硬體只要提供X協定 (Protocol),便可以執行應用程式顯示一群包含圖文的視窗,而毋需重新編譯和連結.這種與設備無關的特性,使得只要是根據X標准所發展的應用程式,均可在不同的環境下如大型電腦,工作站,個人電腦上執行,因 而奠定了X成為工業標准的地位. 第2章 從基本系統模式概觀X 在本章和下一章我們將描述X的基本架構,並介紹許多基礎的觀念,其目的在於對你稍後使用系統時能有一個了解,你將會洞悉系統程式做些什麽和如何做,如此你將更快和更有效率的使用系統,我們也會指出系統外在的利益,以及使用系統對你的影響。 本章描述系統的基本元素,以及它們彼此之間如何交談(interact),下一章描述系統其它的面貌,特別是使用者介面。此章包含了許多新觀念,你不妨先很快的浏覽這兩章後,開始實際地使用它,當你對系統比較有感覺之後,再回頭來復習,這樣比較容易了解。 2.1 X的基本元素 X不像早期的視窗系統,把一堆同類軟體集中在一起,而是由三個相關的部份組合起來。 1. 一個"server"(供應者):是控制實際顯示器和輸入裝置的程式。 2. "Client" (顧客) 程式:需藉著server在指定的視窗中完成特定的操作。 3. 一個 "通訊通道(communication channel)":client和server用來作為彼此交談之用。 基本的"server","client"和 "通訊通道" 的關系圖如圖2-1 。 ┌—————————————┐ │ p16 fig 2.1 │ │ │ │ 圖 2-1 X的基礎成員 │ └—————————————┘ 底下我們描述一下這三個部份。 2.1.1 Server Server是控制實際顯示器和它的輸入裝置 (鍵盤和滑鼠或其它指示裝置)的軟體,server可以建立視窗、在視窗中畫圖形影像和文字、回應client程式的 "需求" (requests),它不會自己動作,只有在client程式提出需求後才完成動作。 每一個顯示器只有一個唯一的server。server一般由系統的供應廠商提供,通常無法被使用者修改。針對作業系統而言,server只是一個普通的使用者程式而已,因此很容易換一個新的版本,或許甚至是由第三集團提供的原始程式 (注1) 。 注1:這是Unix系統上的情況,有些供應廠商會選擇將server的部份或全部放在作業系統核心(kernel)。 2.1.2 Client Client是使用系統視窗功能的一些應用程式。把X下的應用程式稱作"client",原因是因為它是server的 "顧客" :它要求server應它的需求完成特定的動作。 Client無法直接影響視窗或顯示,它們只能送一個 "需求" (request) 給server,讓server來完成它們的需求。典型的 "需求" 通常是: "在 XYZ視窗中寫一列 (Hello, world) 的字串" ,或 "在 CDE視窗中用這種顏色從 A點到B點畫一條直線" 。 當然,對視窗操作提 "需求" 只是client程式的一部份,其它的部份是那些讓使用者執行的程式部份。例如:編輯文字、畫一個系統的工程圖、執行計算表的計算等等。一般來說,client程式的這個部份和視窗是獨立的,對於視窗幾乎不需要知道什麽,通常 (特別是指大型的標准繪圖套裝軟體,統計套裝軟體等) 應用程式對許多的輸出裝置具有輸出的能力。在X視窗上的顯示只是client程式許多輸出格式中的一種,所以,client程式中和X相關的部份在整個程式中,只占了非常小的一部份。 使用者可由不同的來源來使用client程式:一些是由系統提供的 (例如時鐘) ,一些來自於第三集團,一些是使用者為了特殊應用而撰寫他自己的client程式。 2.1.3 通訊通道 X的第三個元素為通訊通道,client藉著它送 "需求" 給server,而server藉著它回送狀態 (status) 及一些其它的資訊 (information)。 只要 client 和 server 都知道如何使用通道,通道的本身並不是很重要,在系統或網路上支援通訊型態的需求是內建於系統基本的X視窗函數館(library),所有和通訊型態有關的事都從函數館獨立出來,client和server之間的通訊只要藉著使用這函數館(在標准X版為xlib)即可,如圖2-2 。


┌—————————————┐ │ p17 fig 2.2 │ │ │ │ 圖 2-2 xlib函數館的功能│ └—————————————┘ 總結來說,只要client程式利用函數館,自然有能力用到所有可用的通訊方法。 Client和Server通訊大略分為兩類,相對應於二種基本X系統的操作模式: 1. server和client在同一部電腦執行,則它們彼此均可使用機器上任何可用的方法做交互處理通訊(inter-process communication (簡稱IPC)), 見圖2-3 ,在這種模式下,X可以像許多傳統的視窗系統一樣有效率的操作。 ┌—————————————┐ │ p18 fig 2.3 │ │ │ │ 圖 2-3 在相同機器上的 │ │ client和server │ └—————————————┘ 2. client在一部機器上執行,顯示器和server則在另一部機器上,則client和server的通訊必需透過網路利用彼此同意的協定(protocol)方可。目前,最常見的協定為TCP/IP和DECnet,但其它任何被提供的可信賴地協定亦可使用。圖2-4 顯示一個典型的Ethernet網路的通訊。 ┌—————————————┐ │ p18 fig 2.4 │ │ │ │ 圖 2-4 在不同機器上的 │ │ client和server │ └—————————————┘ 這種透過網路,使得應用程式的操作,如同在本地機器一樣的能力稱為網路透通性(network transparence),幾乎是X獨一無二的特性(注1)。這種特性使得它非常適合建立在有彈性地多目標混合機器網路上。 注1:有幾種例如Sun Microsystems 的NEWS的視窗系統有使用到網路結構,但沒有一種被廣泛地使用,而有超過一家以上的制造廠商使用它們。 因為client和server完全獨立,一種名之為X-terminal 的新型態顯示器被發展出來。簡單的說,X-terminal 是一種除了能直接在上面執行X server 程式外,什麽也沒有的工作站,它有鍵盤,滑鼠和螢幕,以及一些和網路互相通訊的方法(所以在其它主機上的client可在它上面顯示),但並沒有檔案系統,也不提供一般目的 (general purpose)的程式,一般目的的程式需要在網路上執行。 2.2 Server和Client如何交談 本節描述client和server互相通訊時,雙方各傳輸些什麽。基本上,一個client要求server去執行輸出,輸入則藉著 "事件" (event) 的通知由server來掌握( "事件" :如按下鍵盤的鍵或滑鼠的按鈕等等)。 2.2.1 Client送達server的東西;Output Handing (輸出交予) 當一個client要求server做一個動作,例如在一個指定的螢幕上建立一個特殊特徵的視窗,或者在一個視窗中寫一列文字串。這時client是藉著送 "需求"(requests)到server上來達成。一個 "需求" 是一個被封裝(package) 的簡單區塊(block) ,區塊包含一個 "操作碼"(opcode) 來指示要執行何種操作,伴隨著一些引數(arguments) 提供更多的需求細節。例如:清除一個視窗內的一個長方形區域,client會送一個16位元組(byte)的需求區塊,來指定是哪一個視窗,欲清除區域的左上角座標及區域的高和寬。 這個格式有幾個重要的特徵: . 需求區塊的內容,和client與server在何種型態上的機器上執行完全無關。一個client可以輸出需求給在任何型式顯示器上的任何X視窗server。需求和語言、機器及作業系統均無關。 . 每一個需求包含了視窗的細節和其它被使用的資源,對一個client送至特定server的需求超過一種以上的連接方法,所以在網路架構上提供的視窗數目沒有限制。 . 需求區塊通常大小為20位元組左右,算是相當的小,因為需求是設定為相當高階的,(例如畫一條線是指定兩個端點而非記錄一串螢幕上的點)通常螢幕上被影響到的像素的數目往往是區塊本身大小的十到一百倍,如此不會使網路的負荷太重,網路的使用效率會非常的好(一般認為X的server和client之間的傳輸是位元影像 (bitmaps)的觀念是錯誤的)。 2.2.2 Server送達Client的東西;Input Handling (輸入交予) Server也會利用通訊通道送資訊回client,這些資訊包括回應client需求是否成功和告訴client有興趣的特殊 "事件" ,這些 "事件" 包含的訊息類似”視窗XYZ 的滑鼠左按鈕被碰觸”或”視窗ABC 已被重定大小等”。就像從client來的需求一般,server的回應也是一些和語言、機器、作業系統無關的簡單區塊。 "事件" 是X的基本功能,



. 需求區塊通常大小為20位元組左右,算是相當的小,因為需求是設定為相當高階的,(例如畫一條線是指定兩個端點而非記錄一串螢幕上的點)通常螢幕上被影響到的像素的數目往往是區塊本身大小的十到一百倍,如此不會使網路的負荷太重,網路的使用效率會非常的好(一般認為X的server和client之間的傳輸是位元影像 (bitmaps)的觀念是錯誤的)。 2.2.2 Server送達Client的東西;Input Handling (輸入交予) Server也會利用通訊通道送資訊回client,這些資訊包括回應client需求是否成功和告訴client有興趣的特殊 "事件" ,這些 "事件" 包含的訊息類似”視窗XYZ 的滑鼠左按鈕被碰觸”或”視窗ABC 已被重定大小等”。就像從client來的需求一般,server的回應也是一些和語言、機器、作業系統無關的簡單區塊。 "事件" 是X的基本功能,



Copyright © Linux教程網 All Rights Reserved