X-Window(也常称为X11或X)系统是一种以位图方式显示的软件视窗系统,最初是1984年麻省理工学院的研究,之后变成UNIX、类UNIX、 以及OpenVMS等操作系统所一致适用的标准化软件工具包及显示架构的运作协议。X Window系统通过软件工具及架构协议来建立操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能 支持与使用X。更重要的是,今日知名的桌面环境——GNOME和KDE也都是以X Window系统为基础建构成的。

X只是工具包及架构规范(协议),本身并无实际参与运作的实体,所以必须有人依据此标准进行开发撰写。如此才有真正可用、可运行的实体,始可称为实现体。 目前依据X的规范架构所开发撰写成的实现体中,以X.Org最为普遍且最受欢迎。X.Org所用的协议版本是X11,是在1987年9月所发布。而今最新 的参考实现(参考性、示范性的实现体)版本则是X11 Release 7.4(简称:X11R7.4)。在它的基础上开发出了诸如Gnome和KDE等桌面环境。

X-Window在Linux系统中的位置可以用下图表示:

下面让我们看一下X系统的组成以及它的基本架构:C/S架构。

二.X-Window系统的组成

1、X-Server:

运行在有显示设备的主机上,是服务器端。

X-Server 主要在处理来自 X-Client applICatiONs 的 请求,在屏幕上绘制图形 (所以又称为 Display Server);并且负责管理可用的字形与屏幕可用的颜色等系统资源,读取使用者的输入 (来自键盘或鼠标),传送键盘、鼠标事件与窗口状态信息给 X-Client (也就是应用程序)。

2、X-Client:

客户端可以运行在本地机器,也可以运行在网络上的不同主机。

其实就是各式各样的应用程序(文字处理、数据库应用、网络软件等)

客户端以请求的方式让服务器管理图形化界面。

3、X-Protocol:

客户端与服务器通信的协议

在接触更多 X Programming 的信息后,会慢慢体会到它的存在;目前不妨暂时将 X Protocol 在 X-Window System 中所扮演的角色,想象为 HTTP 协议在 Web Server 与 Web Client (Browser) 间所扮演的沟通角色一样。

在 X-Window SySTem 中比较特殊的一点,就是 X-Protocol 允许 X-Server 与 X-Client 能跨网络来交换讯息,这意味着 X-Server 与 X-Client 不限制都得在同一台机器上执行,可在不同的计算机上同时执行(网络透明性)。

4、X-Lib:

客户端的C语言接口库,它封装了X协议,并对应用程序提供方便使用的API。使用X-Lib,应用程序不用直接向服务器发送请求与处理回复。

X-Lib = C Language X Interface

三.X-Window的C/S架构:

不知道大家有没有注意到一个很有意思的现象:X-Window的C/S架构和我们平常看到的很多C/S架构正好相反,对于大多数的C/S架 构,Server一般都是在网络上提供某种服务的程序,如FTP,HTTP,BBS,Email等服务,而Client则是向这些Server要求服务的 程序,比如Browser,Email-Client等。而在 X-Window System 中,X-Client 指的则是可在网络上任何计算机上执行的各种应用程序,它们的执行结果必须传到某个屏幕显示器上,而负责将执行结果显示到屏幕上与管理各种系统资源的程序, 便是 X-Server(一定是运行在使用者自己的计算机上)。

如下图所示:

我们可以在自己的计算机上激活 X-Server后,再 Telnet 联机至其它计算机,将其它计算机上 X-Client的执行结果传回到自己的屏幕上。当然 X-Server 一定得在使用者自己的计算机上执行,这样我们才能看到应用程序 (X-Clients) 的执行结果为何。

下图是X-Window系统的C/S架构视图,有助于我们从宏观上了解X系统的结构:

当用户点击鼠标或者按下键盘的时候这些动作会传递给X-Server,X-Server把这些动作以事件的形式传递给X-Client,X-Client 根据具体的事件执行相应的程序,再将所要显示的结果传给X-Server,X-Server将结果显示在屏幕上相信到此为止,我们可以对X-Window 系统总体上有了一个比较清晰的认识了。

X-window的更多相关文章

  1. [虾扯蛋] android界面框架-Window

    从纯sdk及framwork的角度看,android中界面框架相关的类型有:Window,WindowManager,View等.下面就以这几个类为出发点来概览下安卓开发的"界面架构&quo ...

  2. JS判断鼠标进入容器方向的方法和分析window.open新窗口被拦截的问题

    1.鼠标进入容器方向的判定 判断鼠标从哪个方向进入元素容器是一个经常碰到的问题,如何来判断呢?首先想到的是:获取鼠标的位置,然后经过一大堆的if..else逻辑来确定.这样的做法比较繁琐,下面介绍两种 ...

  3. 谈谈document.ready和window.onload的区别

    在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行 ...

  4. X Window 的奥秘

    大名鼎鼎的 X Window 大家肯定不陌生.都知道它是 Unix/Linux 下面的窗口系统,也都知道它基于 Server/Clinet 架构.在网上随便搜一搜,也可以找到不少 X Window 的 ...

  5. Android Starting Window(Preview Window)

    当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果 ...

  6. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  7. JavaScript权威设计--Window对象(简要学习笔记十三)

    1.Window对象是所有客户端JavaScript特性和API的主要接入点. Window对象中的一个重要属性是document,它引用Document对象. JavaScript程序可以通过Doc ...

  8. $(document).ready() 与window.onload的区别

    1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 ...

  9. window.name实现的跨域数据传输

    这篇文章是对 JavaScript跨域总结与解决办法 的补充. 有三个页面: a.com/app.html:应用页面. a.com/proxy.html:代理文件,一般是一个没有任何内容的html文件 ...

  10. CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录

    一.CAS是什么? CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(支持 ...

随机推荐

  1. PAT 1014. Waiting in Line

    Suppose a bank has N windows open for service.  There is a yellow line in front of the windows which ...

  2. (int),Convert.ToInt32(),Int32.Parse(),Int32.TryParsed()的用法总结

    1 (int) 强制转型为整型. 当将long,float,double,decimal等类型转换成int类型时可采用这种方式. double dblNum = 20; int intDblNum = ...

  3. CONTROLS: <> TYPE TABLEVIEW USING SCREEN<>.在 ABAP/4 中声明表格 控制

    在 ABAP/4 中声明表格 控制 在屏幕中使 用表格控制 时,必须在 ABAP/4 程序中同时 声明表格控 制结构和表 格控制字段 . 例如: TABLES:   SFLIGHT. CONTROLS ...

  4. ABAP ALV表头的实现

    ABAP实现ALV表头的DEMO: 效果: 源代码: *&------------------------------------------------------------------- ...

  5. PowerShell 导出SharePoint管理中心解决方式

    PowerShell 导出SharePoint管理中心解决方式         SharePoint QQ群有人问能不能下载(导出)管理中心里的解决方式.由于在管理中心中点击解决方式会进入还有一个页面 ...

  6. [Redux] Wrapping dispatch() to Log Actions

    We will learn how centralized updates in Redux let us log every state change to the console along wi ...

  7. thinkphp连接oracle

    配置文件中: //Oracle 测试环境    'DB_TYPE'     => 'Oracle',             // 数据库类型    'DB_HOST'     => '1 ...

  8. hibernate相关知识

    1.为什么要用Hibernate JDBC的优点 直接底层操作,提供了很简单.便捷的访问数据库的方法,跨平台性比较强.灵活性比较强,可以写很复杂的SQL语句. JDBC的缺点 因为JAVA是面向对象的 ...

  9. LPC2378-Jlink 能下载程序,但是调试出现各种奇怪问题

    LPC2378-Jlink调试经验 1.Jlink(d版的没有关系)不能下载程序?     把下载速率设置到500Khz及以下的速率. 2.Jlink能在500Khz的速率下载程序,但是不能调试?添加 ...

  10. 手把手教你从Core Data迁移到Realm

    来源:一缕殇流化隐半边冰霜 (@halfrost ) 链接:http://www.jianshu.com/p/d79b2b1bfa72 前言 看了这篇文章的标题,也许有些人还不知道Realm是什么,那 ...