X Window系统组件

X Window系统采用主从式架构,其中主要的组成组件为X Server和X Client。前者负责驱动显示卡和各种图形的显示,同时也会驱动其他输入设备,使客户端可以通过这些输入界面与应用程序沟通。而后者指实际执行的应用程序,它会向X Server提出服务请求,以得到响应的显示画面。

X Server

X Server控制了实体的显示器和输出入装置如键盘和滑鼠等。它的主要工作有资源的管理及控制,事件的处理,错误信息的处理等。

所谓的 X 资源主要包括了色彩,字型等。 X Window 中这些都由X Server来取得与使用,因此减轻了 client的负担,也使得X Window的可携性更高。

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上执行一个X Window 模拟器 (emulator) 也就是执行一个X Server,这就是为什么安装一个 XWindow模拟器的同时也得安装字型、色彩等资源的原因。

X Client

Client就是X Window中的应用程序,它会要求X Server执行各种特定的动作,如“将视窗背景颜色改成绿色”等等。很多其它视窗中属于系统的功能在X Window中都只是一个client,例如前面提到过的视窗管理,以及桌面管理 (desktop manager),档案管理(file manager) 等。由于X Window 系统的这种特殊架构,使得软件开发者有了更大的弹性空间。

区分X server 和 X client

X Window系统一开始就是针对网络而设计的,所以采用了“client-server”模型。这可能会让一些人感到困惑, 因为X的术语和他们想像的有些不同。他们以为“X server”是运行在功能强大的大型机上的,而“X client”是运行在他们桌面上的计算机上的。

与你想像相反,请记住:X server是有键盘和显示器的那台计算机,而 X client是那些显示窗口的程序。如果你只有一台使用 Debian的计算机,就只能在同一台计算机上运行X server和X client了。而你如果要在另外一台电脑中远程操作图形程序,你桌面计算机上运行的是 X server,而你远程打开的一个一个X应用程序(比如 XTerm, 或者FireFox)就是一个X Client(客户程序)。

Client和server不一定都要运行在同一种操作系统上,它们甚至不需要在同一种类型的计算机上运行。在Microsoft Windows或Apple公司的Mac OS上运行X server也是可以的,在它们上面也有很多免费的和商业化的应用程序。  

其他组成组件

除了X Server和X Client之外,在X Window系统中还包含其他组成组件,如图所示。

X Window系统组成组件

以下是这些组件的说明:

X Protocol:介于X Server和X Client间用于沟通的通信协议,因为基本的X Window系统并不提供用户界面,如按钮和菜单等组件,因此必须依靠X Protocol中的程序库来提供这类功能,否则单纯的X Window系统无法满足客户端的要求。

X Library:最底层的程序界面。它的主要功能是存取X Protocol服务,这对于图形程序编写非常重要,常见的X Library有Xlib、Motif、Qt和Gimp library等。

X Toolkit:包含在X Library中的应用程序发展工具。它提供了X Window设计时需要的基本函数,避免了程序开发时必须自行设计所有组件的不便,如滚动条和功能钮,这些组件也称为widgets。目前X Toolkit的种类有很多,较常见的有Motif Development Toolkit、OpenLook Toolkit、Gimp Tool Kit(GTK)、TCL/TK、XForms和X Toolkit(Xt)等。

guide/desktop/xwindow/x-components.txt · 最后更改: 2009/08/09 00:41 (外部编辑)
[unknown link type]到顶部
GNU Free Documentation License 1.3
京ICP备05034962号 Debian Driven by DokuWiki get firefox browser Recent changes RSS feed Valid XHTML 1.0