码迷,mamicode.com
首页 > Windows程序 > 详细

RHEL6-X Window System-2.组件

时间:2016-06-30 23:39:53      阅读:649      评论:0      收藏:0      [点我收藏+]

标签:x server   x window system   x client   window manager   display manager   

组件包括:

  • X Server

  • X Client

  • Window manager

  • Display manager 


X Window System是个利用网络架构的图形用户界面的软件,那到底这个架构可以分成多少个组件呢?

基本上分成X server与X client两个组件

  • X Server:硬件管理、屏幕绘制与提供字体功能(XFree86计划及Xorg基金会主要提供的就是这个X Server)

  • X Client:即应用程序,负责X Server要求的“事件”处理,提供绘图数据给X Server

在运行上,X Client应用程序会将所想要呈现的界面的绘图参数告知X Server,最终由X Server将所接收到的绘图参数通过它所管理的硬件绘制出来


X Server 主要工作就是管理客户端的硬件,包括接收键盘、鼠标等设备的输入信息,并且将图形绘制在屏幕上(注意下图的所有组件之间的箭头指示)

技术分享

但到底要绘制个什么东西呢?绘图总是需要一些数据才能绘制吧,此时X Client(即X 应用程序)就很重要,它主要提供的就是告知X Server要绘制什么东西


那照这样的想法来思考,我们是想要取得远程服务器的绘图数据来我们的计算机上面显示。所以,远程服务器提供的是X Client软件,本地客户端提供的是X Server 软件

如图:

技术分享


1.X Server:硬件管理、屏幕绘制与提供字体功能

XFree86计划及Xorg基金会主要提供的就是这个X Server


X Server管理的设备主要有哪些?

答:与输入/输出有关,包括键盘、鼠标、手写板、显示器、屏幕分辨率与色彩深度、显卡(包含驱动程序)与显示的字体等


显卡、屏幕以及键盘鼠标的设置,不是在开机的时候linux系统以/etc/sysconfig目录下的keyboard/mouse等设置文件就设置好了吗?为何X Server还要重新设置?

答:因为X window 在linux里面仅能算是一套很棒的软件,所以X window有自己的设置文件,你必须要针对它的设置文件设定妥当才行。也就是说,linux的设置与X server的设置不一定相同。因此,你在linux的run level 3想要玩图形界面时,就得要加载X window需要的驱动程序才行。总之,x server的主要功能就是管理主机上面显示硬件与驱动程序


既然X window system是以通过网络取得图形界面的一个架构,那么客户端是如何取得服务器端提供的图形界面呢?

答:由于服务器与客户端的硬件不可能完全相同,因此我们客户端当然不可能使用到服务器端的硬件显示功能,所以每部客户端主机都需要安装X Server,而服务器端则是提供X Client软件,以提供客户端绘图所需要的数据

即: 

客户端(有屏幕的一端)运行X server (接收数据进行绘图)

服务端运行x client (发送数据)



2.X Client:负责x server 要求的“事件”处理

前面提到的x server主要是管理显示界面与在屏幕上绘图,同时将输入设备的行为告知X Client,此时 X cient就会依据这个输入设备的行为来开始处理,然后x client 会为这个输入装置的行为产生某个图示的信息,再然后将这个图示的显示数据回传给x server,xserver再根据x client传来的绘图资料

将它描绘在屏幕上,来得到显示的结果。


也就是说x client最重要的工作就是处理来自x server的操作,将该操作处理成为绘图数据,再将这些绘图数据回传给x server,由于x client的目的是产生绘图的数据,因此,我们也称x client为x application(x 应用程序)。


除此之外,x client并不知道其他x client的存在,也就是说,如果有两个以上x client同时存在时,两者并不知道对方到底传了什么数据给x server,因此,x client的绘图经常会互相重叠而产生困扰。


比如:当我们在 x window的界面中,将鼠标向右移动,它的整个工作流程是怎样的呢(如何告知x server与x client的呢)?

如图:

技术分享

这样做的好处:

最大的好处是X client不需要知道X Server的硬件配备与操作系统。因为x client单纯就是处理绘图的数据而已,本身不绘图。所以,对于客户端的x server用的是什么硬件、哪套操作系统、服务器端的x client根本不需要知道



3.Window manager:特殊的x client,负责管理所有的x client 软件

因为 x client 的主要工作是将来自x server的数据处理成为绘图数据,再回传给x server而已。

所以x client 本身是不知道它在x server当中的位置、大小,以及其他相关信息的,即x client 彼此不知道对方在屏幕的哪个位置。


为了解决这个问题,因此就有了window manger(VM,窗口管理器)的产生。

窗口管理器,首先它也是一个apppication,即也是x client,只是它主要负责全部x client的管理还包括提供某些特殊的功能

如:

  • 提供许多控制元素、包括任务栏、背景桌面的设置等

  • 管理虚拟桌面

  • 提供窗口控制参数,包括窗口大小、窗口的重叠显示、窗口的移动、窗口的放大缩小


KDE/GNOME这一类的软件,就是窗口管理器的项目计划。这些项目计划中,每种窗口管理器所用以开发的显示引擎都不太相同。所以着重的方向也不一样,因此我们才会说,在Linux下面,每套window manager都是独特存在的的,不是简单的换了桌面与显示效果而已。而是连显示引擎都不会一样。



x server/x client/window manager 之间的关系?

如图:举例GNOME

技术分享



4.Display manager:提供登录需求的环境,并且加载用户选择的Window manger与语系等数据

从总体上来看,Display manager是由Window manager 提供的


ps:内容参考总结自《鸟哥的Linux私房菜 基础学习篇 第三版》

本文出自 “糊涂小孩123” 博客,请务必保留此出处http://hutuxiaohai123.blog.51cto.com/3491681/1794665

RHEL6-X Window System-2.组件

标签:x server   x window system   x client   window manager   display manager   

原文地址:http://hutuxiaohai123.blog.51cto.com/3491681/1794665

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!