我所理解的计算机(三) 之 UNIX与交响乐

来源:互联网 发布:sketchup2016 pro mac 编辑:程序博客网 时间:2024/04/28 09:39
         表面上看UNIX是一种操作系统,实际上它代表着计算机世界里的贵族文化。如果你做得事是和UNIX沾上一点边,那么大家都对你刮目相看,哪怕你是看机房的。
         UNIX产生和发展以大公司和大学为背景[d1] (那时候有数的几台计算机都在政府、大公司、学校里)教授和学生都有很多研究题目需要用计算机来算。而作业操作系统在多人共享使用方面做得太差,提交一个作业要排很久的队,还要看管理员的脸色行事,比现在买经济适用房还难。终于在某个大学,几个老师和学生受不了了,写出了一种面向多用户的操作系统,叫做UNIX。实际上它的本意是单用户操作系统,这点幽默有跟我们京剧中的净角有暗合的意思。它的努力方向是让更多的人可以来使用计算机,下面就会说到它努力的成果。
它让每个使用计算机的人都有一个自己独占的用户界面,互不影响。虽然权限上仍然受管理员的限制,但是在授权范围内有了最大程度的自由。你可以和你的程序你一言我一语的交互,也可以把程序扔在后台,然后聊天泡MM或者玩游戏,再也不用通过管理员了。
         用户终端独占好说,反正价格便宜量又足。但是打印机、扫描仪、月光宝盒什么的,一人一个实在是奢侈,一起用又会乱套。动不动就把分别给Mary和Betty的情书混着打到一起,可不能冒这个险。所以就有了虚设备这个概念,操作系统伪造一个设备给用户使用,其实真正的设备它给藏起来,只自己用。它有这个权利是因为它宣誓公正完整的完成所有用户交给的任务,用户就满足于表面上的独占使用而不深究了。【马丁.福勒说:[d2] 程序员认为所有的问题都可以通过增加一层间接性加以解决的】
         多个用户的多个程序都会同时在一台主机上运行,有时候一个程序还要同时运行几个实例。程序在内存中的运行实体叫做进程,主机中的进程数要远大于CPU的数量(CPU很贵的)。平衡这个矛盾的方法叫做进程调度。调度算法要满足CPU这个不知疲倦的工作狂,又能让用户感到公平,还要能让有急事的先干。一般都是带优先级请求队列的轮转时间片算法,或者类似的。
         UNIX还有一个我最喜欢的优点,它把所有的东西都看成是文件。不管是数据、程序、设备、内存……统统都用文件的形式来表示,简单有效。从UNIX开始,文件成为了使用最广泛的数据表示形式。现在说到文件的时候我已经不再联想到纸了,只有拷贝的欲望。
        现代操作系统基本上全都具备上边的特征,或者类似,好像没什么特别的。但是那是在70年代,已经足够先锋了,和在温布尔登球场裸奔的尊敬的女士有的一比。
        在那只有字符界面和单色显示器的时代,人们如果只能使用操作系统提供的命令,编程语言的语法又那么简单,那坐在机器前该多单调啊!怎么可能吸引那么多程序员用UNIX。所以UNIX的用户环境,洋文叫做shell,提供了处理字符文本的编程能力,而且这个能力随时间越来越强大。处理文本的著名工具awk的作者那三个老外Aho 、 Weinberger 和Kernighan还因为研究文本处理的正则表达式而获过图灵奖。shell的编程能力是立等可取的,现在追求快速编程的各种脚本语言都是以它为鼻祖。喜欢吃快餐的程序员基本上都是脚本语言的爱好者。
        脚本语言毕竟能力有限,偶尔吃吃还能忍,一年到头吃谁也受不了。林林总总的高级语言还是程序员的主要兵器。这些兵器表达逻辑的能力很强,只要你能想出来的逻辑行为都可以用标号、跳转(goto)表达出来。但是这种能力伤敌的时候也容易伤到自己。当年我用BASIC的时候,当程序行数一多,就会觉得自己是一只迷宫里的蛤蟆在程序里跳来跳去,在没有像仙剑那样的帅哥美女吸引我的时候,一般我对迷宫没什么兴趣。这时候Dijkstra跳了出来,告诉我们其实所有程序逻辑都可以表示为顺序、条件、循环三种形式,所有的程序宫殿都只需要三块积木就能搭出来。这种程序就叫做结构化程序,我个人认为叫做块状程序或者砖头状程序更形象。砖头程序的意义在于它的逻辑表示更贴近人的逻辑思考习惯,而不是更贴近计算机,而且使程序重用成为可能,当然重用的前提是砖头的质量比较好。像我们人类这么容易犯错又懒惰,只有砖头程序才有可能垒到几十万行那么大。
        说了这么多,该回到我们的UNIX上了。与UNIX联系最密切的砖头语言叫C语言。最早UNIX不是用C语言写的,但是当它们相遇的时候,就产生了一段浪漫而稳定的婚姻。UNIX被C语言重写以后焕发了前所未有的力量,而C语言的接口主宰了操作系统的API定义,并成为操作系统或者同层次程序开发的首选。C语言厉害之处在于:1,具有向汇编靠拢的执行性能;2,具有结构化的特点,就是可以写成砖头。3,易学难精,学好以后都是牛人,还不愁没有学徒,挣钱大大的容易。因此C语言及衍生语言(后边会讲到C++)形成了目前世界上第一大的程序员生物群落,并牢牢把持住了操作系统级程序开发这块领地。
         到后来UNIX便继承了由作业计算机遗留下来的产业,并全面接管了大中小型服务器领域。随便点几个名字,AIX, HP-UNIX,SOLARIS, SCO-UNIX都是UNIX林林总总的变种的一种,它们长相虽然不一样,骨子里的脾气秉性都非常相似。除了服务器,也有人使用UNIX工作站。但是因为贵和复杂,UNIX在小型服务器和工作站市场上站的并不那么稳当,后面我们会看到乘虚而入的竞争对手们。

 [d1]本部分参考UNIX操作系统教材和《Life with UNIX(R) -- A Guide for Everyone》Don Libes, Sandy Ressler
 [d2]《重构》
原创粉丝点击