说起Xwindow,很多人都知道,但是它的意义并不仅仅在于提供了一个图形操作机制,任何事情如果牵扯到它的意义,那么就不得不谈谈它的出生背景以及简要的历史,Xwindow出生在终端大行其道的时期,那个时候,人们提出了终端的概念,这样的话一台计算机就可以被很多人共享,每个人一个终端然后连接到同一台计算机上,这样就扩充了计算机的概念,再也不是只有计算机旁边的人可以操作它了,只要有终端连接到计算机上,哪怕在大洋彼岸的人也可以是计算机的拥有者之一,这样的话,终端可以扩充到全世界,某种意义上讲,计算机本身和连接它的终端就是一台整个的大计算机,其实多用户,多任务的概念就是那个时期被发掘的。这里说的和windows操作系统无关,windows系统根本就不是那个时期的东西,即使是后来的系统,它也没有做到后来者居上,想想msdos吧想想windows3.1吧,再想想windows多任务的发展吧,可怜的协作多任务,经典的毕竟是经典,unix的哲学和文化影响了整个计算机产业,后面会提及。

终端是有了,人们可以远程地操作计算机了,可是终端毕竟只是一个字符界面,那个时期有个字符界面就很不错了,可是人们总是希望把自己可以触及的东西尽量变得精彩,虽然很多人们摸不到那些巨无霸计算机,但是unix的产生和c语言的产生让很多人可以为计算机写程序了,人们开始可以在0和1的世界里面畅游了,用0和1搭建起来的世界成就了我们今天世界的精彩。既然如此,人们迫不及待地要改进终端的操作方式,于是图形化的操作界面便成了一个需求,毕竟视觉上的东西总是很逼真,它卸掉了很多字符界面的逻辑包袱,具有讽刺意味的是,也正是如此,windows最后才风靡天下,不过windows也就仅仅如此罢了。如果说人们想到了在远程通过图形界面来操作计算机,那么必然要有一种方式来使得计算机“理解”这一种方式,需要注意的是,终端就是终端,即使它有了图形界面它还只是一个终端,真正的计算任务是在计算机端完成的,因此终端本身就是一个操作接口而已,不包括任何逻辑运算元素,因此比如说我按下一个按钮,那么我“按下按钮”这件事就必须告诉计算机,以前字符终端依着计算机,字符终端传过去一个“ls -l”,那么计算机知道该怎么做,把事情做完后会把结果传回来,这个过程是如此的容易被理解以至于根本没有什么要说的,字符终端只需要显示字符就可以了,但是图形界面就不一样了,这回计算机该照顾一下图形终端了。

还是那个例子,我按下一个按钮,我的本意是弹出来一个提示框,注意,按钮是我按下的,计算机那边根本没有按钮这个概念,提示框也是在我的图形终端弹出的,计算机那边也没有提示框的概念,这就是说一定要通过某种机制使得当计算机“收到”按下按钮这件事时(当然要有一个约定表示比如计算机收到“click 属性”就表示用户按下一个按钮),通过自己的计算,然后发回图形终端一个消息,当图形终端收到消息时,知道要在图形界面的某个地方画上什么图形其实就是一个提示框。图形终端已经不再是仅有显示字符的功能的“终端”了,它已经成了一个小得多的计算机了,拥有了自己的逻辑控制功能,于是就分出了服务器和客户机,服务器就是那个只负责计算和回显的大家通过终端(字符/图形)共享的计算机,而客户端就是拥有终端的小得多,功能也弱很多的计算机,这就是在计算本身的意义上分出的服务器和客户机,这种模型一直延续到现在,在显示的意义上,负责接收用户输入和显示的计算机成了服务器,而负责告诉服务器该如何显示的计算机成了客户机,而它们之间复杂的交互固然需要一个约定,这个约定成了一个协议,就是x协议,而整个体系就成了X window体系。见下图:

话说linux来自网络是从开发意义上说的,不仅如此,它的诞生环境决定了它的思想深深扎根于网络,这就是它继承于unix的最好的基因,unix诞生之日就不是让用户在它面前摆置的,用户必须拥有一个终端,通过终端连接,当然终端可以在本机。在unix的诞生之日,它就宣称一切都可以来自于网络,这里的网络不仅仅指TCP/IP网络,那个时候还没有呢,网络的意义就在于分布式,TCP/IP仅仅说的是一个网络的实现而已,它就是一套协议族,在没有TCP/IP的时候,可以通过终端的线路规程组成网络,也可以用任何可以把操作者和计算机拉开距离的机制组成网络,现在我们看一下当今存储领域很火的SAN吧,其实SAN就是一个不是TCP/IP的网络,它的实现协议就是scsi协议和底层的光纤传输规程,其实任何的计算机内部的io指令都可以实现一个网络协议,一台计算机本身就是一个网络,其中cpu是中心,而各种io外设都是这个网络上的节点,于是按照分布式的思想将那些外设拉到外边去不就组成了一台分布式计算机了吗?这个思想根本不是什么新东西,想想unix的终端,它不是把键盘和显示器拉到外边了吗?x window当然也是,现在把硬盘拉到外面就成了SAN,这一切是不是很有趣。硬盘拉到外边再通过scsi的协议规程就可以让很多计算机共享一个磁盘阵列,这也不是什么新东西,想想商用unix的虚拟化的概念,一台计算机中运行n多个操作系统,分成了n多个node,在加上numa机制可能更复杂,这些操作系统不就是共享一个本机的磁盘吗?可见现在分布式的概念,集群的概念仅仅是一个策略性的东西罢了,机制在于什么?机制就是unix的哲学!

SAN的方式有好处吗?当然有,当TCP/IP风靡的时代,让人们恨不得把所有东西都架设在它上面,于是一个网络里面的数据就十分杂乱了,而且在数据量很大的网络,TCP/IP会不堪重负,就好像一些粉丝把明星压得不堪重负一样的道理。这样通过另一个网络,scsi网络来传输块级的数据,不但可以将大量的文件数据从TCP/IP网络卸载下来,而且很灵活的块级传输会使得效率更高,不像tcp/ip的文件级的操作,保留了很多高层的东西,这样也会使文件服务器很累,san将存储策略交给了管理员,自己只管存储,人们像操作自己的磁盘一样操作san网络,再也不用被文件等高层概念困扰,也免去了很多的文件配置工作。如果按照unix哲学思考问题,那么计算机中的任何一个外设都可以被拉到外面,就连内存都可以,这样的话,分布式就真的变成现实了,人们再也不用为了分布式而写那么多基于tcp/ip的程序了,一切就好像在操作自己的计算机一样,tcp/ip的负载将大大减轻。这就是一个轮回,起初人们使用自己的计算机而且在自己的计算机中保存一切数据,然后有了网络,人们知道了网络的概念后开始让网络帮忙,然后人们发现一切都是网络后,就又开始自主的屏蔽掉了网络的概念,就像san一样,本地化的操作着整个网络...

本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274152

X window的思想和终端的重大意义相关推荐

  1. document.body ,window.screen javascript对象属性取值意义

    <SCRIPT LANGUAGE="JavaScript"> <!-- var s = "";     s += " 网页可见区域宽 ...

  2. 保护终端信息安全的意义何在?

    终端分为计算机终端和移动终端,是一种输入输出设备.如今的互联网时代,终端承载的信息及数据越来越庞大,也越来越重要,尤其是一些政府部门或涉密企业,终端信息安全犹如根基,一旦受到影响,大树便会轰然倒塌.所 ...

  3. 开源游戏机java模拟器_最棒的 7 款开源终端模拟器

    你是系统管理员,Linux 重度用户,或者只是每天要在命令行花费大量时间的用户?选择哪种终端仿真程序,可能跟个人的喜好有关.你是喜欢轻量级呢,还是探索全部功能和可定制化的选项?或者只使用发行版给的默认 ...

  4. 终端多窗口管理旗舰------screen

    ###################################################### 终端多窗口管理神器 ------tmux byobu screen terminator谁 ...

  5. linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解

    首先: 1.终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两 ...

  6. Ubuntu手机和电脑安装其他终端Terminal Emulator

    安装命令一致: sudo apt install tilda sudo apt install terminator 手机端使用效果和命令: ubuntu-app-launch ros_termina ...

  7. linux里怎么看终端类型,如何区分Linux下的几种终端类型:tty、pty和pts

    如何区分Linux下的几种终端类型:tty.pty和pts 基本概念: 1. tty(终端设备的统称): tty一词源于teletypes,或者teletypewriters,原来指的是电传打字机,是 ...

  8. Linux终端一直输出login,Linux tty pty console区别

    基本概念: 1. tty(终端设备的统称): tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被 ...

  9. 21款实用的Linux命令行终端工具

    本文中,介绍了14款最佳Linux命令行终端工具,可以用来替代debian系的Linux原生终端.如果你每天需要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件, ...

最新文章

  1. 迁移学习与图神经网络“合力”模型:用DoT-GNN克服组重识别难题
  2. 编译GCC4.8.2
  3. 如何判断模糊图像_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
  4. 运维部门工作总结_2018年度工作总结
  5. leetcode 105. 从前序与中序遍历序列构造二叉树
  6. LiveVideoStack线上分享第三季(十三):腾讯云LiteAVSDK演进之路
  7. 应用上下文webApplicationContext
  8. 我的世界java怎么玩起床战争_我的世界怎么玩起床战争_我的世界起床战争怎么玩_52pk单机游戏...
  9. windows server 2008 (五)web服务器的搭建和部署
  10. TabLayout+Fragment+ViewPager+FragmentStatePagerAdapter实现Tab标签
  11. mysql 数据库视图_MySQL视图介绍
  12. java数组怎么添加元素_Java封装数组之添加元素操作实例分析
  13. centos 卸载 jdk
  14. rdesktop 访问windows remote desktop
  15. Windows鼠标右键没有“新建”“新建文件夹”选项
  16. Tableau 第五章 创建仪表板和故事
  17. C++面试之Linux操作系统
  18. Java实现找零问题
  19. 帆软加密狗注册配置安装步骤
  20. 【sql server】已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行 解决方法总结

热门文章

  1. Wex5铛铛开发环境搭建步骤
  2. Java 比较相等 == or .equal()?
  3. win7 64位系统oracle客户端访问远程数据库
  4. 工作心得之-------关于“表现”
  5. Delphi 与 DirectX 之 DelphiX(35): TDIB.Saturation();
  6. <binding>和<operation>元素
  7. linux高级运维要会的,linux高级运维必会命令
  8. oracle apex接口文件,Oracle之APEX深入开发指南
  9. 在ubuntu16.04中安装apache2+modsecurity以及自定义WAF规则详解
  10. DevExtreme 学习应用[1]