您的位置:首页 > 运维架构 > Linux

关于X Window的一些理解

2017-06-27 19:50 169 查看
什么是X Window?

X Window即X Window图形用户接口,是一种计算机软件系统和网络协议,提供了一个基础的图形用户界面(GUI)和丰富的输入设备能力联网计算机。其中软件编写使用广义的命令集,它创建了一个硬件抽象层,允许设备独立性和重用方案的任何计算机上实现。

------来自百度百科

与windows有何区别?

windows是一个完整的操作系统,包括了从内核到shell到窗口环境等一切内容,但是X Window只是操作系统的一部分,是一个窗口环境。但是两者都能提供图形界面,都可以初一多个窗口,允许用户通过鼠标键盘与计算机完成信息交互。

X Window的灵活性高,windows会帮用户制定好各种窗口界面,即使使用一些定制工具,能够改变的也不多,无法按照自己的想法来定制,而X Window完全可以自己来定制,包括从界面到交互方式。

与Mac OS的有何区别?

虽Mac os虽然基于unix,它的图形界面的也是X协议的一种实现,由苹果公司实现,而且它的X server集成到内核中,经过苹果的优化实起来更加高效,而且图形界面更加精美,我们也不能自己去配置。

一些基本知识:

X Window 是一种规范,有多种实现方式,Linux系统下最流行的是实现Xorg和XFree86,当然还有比较新的Xwayland

可以用ps -e | grep X 来查看当前系统的实现方式,如图,目前fedora 25 使用的是Xwayland。

用 ps -ef | grep X 可以查看Xwayland运行时的命令行参数。



X Window 是一个分层的架构,它分为 Server 和 Client。X Server 负责图形界面的显示,而Client 程序需要连接到 X Server,然后请求 X Server 绘制图形界面,同时从 X Server 接受用户的输入。在桌面系统上,X Server 和 Client 程序往往安装在同一台机器上,日常使用基本感觉不到它是分层的。但是很显然,X
Server 和 Client 也可以分别运行在不同的机器上,在一台机器上运行程序,而在另外一台机器上显示图形界面。

  X Window 中的 Server 和 Client 的概念和我们平时接触到的“Server/Client”概念刚好相反。很多熟悉 Internet 原理的人,第一次接触 X Window 的这两个概念都会搞错。比如,我在一台本地机器上运行 Ubuntu 14.04 桌面版,而在另外一台远程机器上运行 CentOS 5.10(纯字符界面),当我用 ssh 从 Ubuntu 连接到 CentOS 的时候,Ubuntu 是 Client,而 CentOS 是 Server。在 X Window 中,Server
偏偏是我面前的这台 Ubuntu,X Server 运行在 Ubuntu 上。我可以在 CentOS 中运行 GVim,但是窗口显示在 Ubuntu 中,这时,GVim 是一个 Client 程序,它在远程机器上运行,而它的窗口显示在本地。
Server和Client之间的通信

第一类,Server和Client在同一台机器上执行,它们可以共同使用机器上任何可用的通信方式做互动式信息处理。在这种模式下,X可以同其他传统的视窗系统一样高效工作。

第二类,Client在一台机器上运行,而显示器和Server则在另一台机器上运行。因此两者的信息交换就必须通过彼此都遵守的网络协议进行,最常用的协议为TCP/IP。这种通信方式一般被称为网络透明性,这也几乎是X独一无二的特性。

关于display

只有一套键盘鼠标和一个显示器,也就是只有一个 display,那又怎么能运行多个 X Server 呢?那是因为在 Linux 中,还有虚拟控制台这样的高级特性。只需要同时按下 Ctrl+Alt+F1、Ctrl+Alt+F2、...、Ctrl+Alt+F7,就可以在不同的虚拟控制台中进行切换。

如图,当前运行了两个虚拟桌面



关于X window的其他方面的知识还有很多,包括怎么与其他设备进行协作,生成2d或者3d的画面,要去深度学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux X Window