当前位置:Linux教程 - Linux资讯 - X windows系统使用指南(一)

X windows系统使用指南(一)

  第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 。
[1] [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的基本功能,

(出处:http://www.sheup.com)


上一页 [1] [2] 

. 需求区块通常大小为20位元组左右,算是相当的小,因为需求是设定为相当高阶的,(例如画一条线是指定两个端点而非记录一串萤幕上的点)通常萤幕上被影响到的像素的数目往往是区块本身大小的十到一百倍,如此不会使网路的负荷太重,网路的使用效率会非常的好(一般认为X的server和client之间的传输是位元影像 (bitmaps)的观念是错误的)。 2.2.2 Server送达Client的东西;Input Handling (输入交予) Server也会利用通讯通道送资讯回client,这些资讯包括回应client需求是否成功和告诉client有兴趣的特殊 "事件" ,这些 "事件" 包含的讯息类似”视窗XYZ 的滑鼠左按钮被碰触”或”视窗ABC 已被重定大小等”。就像从client来的需求一般,server的回应也是一些和语言、机器、作业系统无关的简单区块。 "事件" 是X的基本功能,

(出处:http://www.sheup.com)


上一页 [1] [2] [3]