X window的思想和终端的重大意义

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

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

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

clip_image001clip_image002

话说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一样,本地化的操作着整个网络...

你可能感兴趣的:(windows,网络,unix,服务器,图形,终端)