一、X服务器与X客户程序之间的关系
X Window System的组成可以分为X server,X client,X protocol三部分。
X server主要控制输入输出,维护字体,颜色等相关资源。它接受输入设备的输入信息并传递给X client,X client将这些信息处理后所返回的信息,也由X server负责输出到输出设备(即我们所见的显示器)上。
X server传递给X client的信息称为Event,主要是键盘鼠标输入和窗口状态的信息。X client传递给X server的信息则称为Request,主要是要求X server建立窗口,更改窗口大小位置或在窗口上绘图输出文字等。
X client主要是完成应用程序计算处理的部分,并不 直接 接受用户的输入信息,输入信息都是输入给X server,然后由X server以Event的形式传递给X client,X client对收到的Event进行相应的处理后,如果需要输出到屏幕上或更改画面的外观等,则发出Request给X server,由X server负责显示。
在X Window System中,X client是与硬件无关的,它并不关心你使用的是什么显卡什么显示器什么键盘鼠标,它也不关心显示的文本是什么字体,这些只与X server相关。
二、验证X服务器与客户机之间的关系(初步)
一般安装FreeBSD系统,客户程序和X服务器都是安装在一台计算机上的,因此在客户程序中输入、运行、输出不能明显的区分出哪些任务是由客户程序完成,哪些任务由X服务器来完成。所以会造成一定的混淆。
为了明确两者之间的关系,利用Freebsd的多个控制台作以下演示:
必要条件:安装的X服务器要配置好,可以工作。
演示的步骤是:
1、把当前登录环境作为客户端,用来启动X服务器和运行客户程序
2、在客户端启动两个X服务器,:0和:1
3、客户端运行xeye程序到:0
4、客户端运行xterm程序到:1
三、验证
1、启动X服务器:
# X :0 &
运行这个命令如果X服务器配置正确的话,会启动一个灰色屏幕和鼠标,你所看到的就是X服务器的第一个显示器。按ctrl+alt+shift+F1回到当前登录的命令行环境,alt+F9可以切换会X服务器的显示。
# X :1 &
另外启动一个X服务器,屏幕编号是1,也就是第二个显示器。可以用alt+F10进行切换。
2、在客户端输入以下命令:
xeyes -display :0 &
这个命令的作用是“在客户端运行xeyes这个程序,显示到X服务器的第0号显示器,这个程序运行后,在当前客户端并不显示那双眼睛,只是返回一个pid,按alt+f9,可以看到一双眼睛。
这基本演示了X服务器的作用,就是接受客户程序的输出并显示到屏幕上。
3、进一步验证:
在客户端命令行上输入 xterm -display :1 &
作用是在客户端启动一个虚拟终端,显示到X服务器上的第1号显示器。这个程序运行以后,依然在客户端返回一个pid,按alt+f10,切换到X服务器的第1号显示,可以看到xterm的运行窗口。可以在这个窗口中输入任何命令,包括运行客户程序kde,gnome等。通过观察可以看出X服务器负责输入和输出。
以上初步验证了X客户程序和X服务器之间的关系,X服务器和X客户程序也可以分别放在不同的计算机上,这提供了更大的灵活性。可以根据任务需要,合理配置计算机资源。例如:可以把进行大规模计算的程序放到性能好的计算机上,把X服务器放到配置不高的计算机上。