Skip to main content

Unix/Linux操作系统的发展史

发信人: victoryluyu (lulu), 信区: Linux
标  题: 周末随笔(一)
发信站: BBS 未名空间站 (Sun Apr 11 07:23:56 2010, 美东)

作为一个号称研究领域横跨计算机网络(computer networking),人机交互(HCI)和
控制理论应用( applications of control theory)的小博,周末环顾四周,大家都
出去约会的约会,回家抱孩子的抱孩子。闲来无事,干脆用中文写点儿相关的科普方面
的简单介绍,八卦一下这些研究领域的历史和未来。纯属自娱自乐哈,大牛切莫笑俺。

现在全世界VC/PE都在折腾Mobile Internet, cloud computing 和 E-Commerce,然而
,想真正搞懂计算机网络和这些上层应用。首先,你就得对计算机操作系统Unix/Linux
有一定了解。因为当今如火如荼的互联网,从某种意义上说,正是Unix /Linux操作系
统的衍生品。所以第一篇先来八卦下计算机操作系统吧。说起各式各样的计算机操作系
统(Linux, Windows, Mac OS,  Solaris),听起来很牛B,其实本质上就是个软件而
已。这个软件有点儿特别的地方就在于,它向下可以和一堆计算机硬件(CPU, 内存等
等)打交道,向上可以和各种应用软件沟通,说白了就是个中介,但是自己给自己起了
个很好听又貌似神秘的名字叫kernel.
 
话说很久很久以前(其实也就是区区五六十年前),计算机刚出现的时候,是没有什么
像样的操作系统的, 而且大多数还要人工配合完成稍复杂的计算任务。后来到了60年代
,有些人觉得这样用计算机不爽了。于是,MIT,Bell Labs 和 GE 联合起来搞了个操
作系统叫MULTICS. 虽然这个系统商业化不甚成功,但是有位贝尔实验室的仁兄也参与
了这个project,并且私下把这个操作系统的单用户版发展壮大起来。这位仁兄就是KEN
Thompson, 而这个操作系统就是鼎鼎大名的Unix. 操作系统的历史从这里也开始精彩
起来,就好像三国里诸葛亮正式出了隆中,随后数十年间掀起波澜万千。
 
Thompson最开始的 Unix版本是用汇编语言写成的,所以兼容性很差。 后来又一位叫
Dennis Ritchie的哥们看不过去了,和Thompson一起重写了Unix操作系统, 并且专门为
此设计了一种新的计算机语言。作为Unix设计过程中的副产品,这种语言被给了个傻得
不能再傻得名字 --- C语言。原因也很简单,因为前面有个B语言没成功。此后,尽管
计算机技术发展如脱缰野马,但C语言在50年后的今天,仍然有统治性的影响力。1974
年,哥俩儿联合发表了关于Unix系统设计的论文, 并且因此双双获得了1984年的图灵奖
(计算机界的诺贝尔奖)。随后短短数年,Unix在各路人马的协力下,成功演进了多个
版本。80年代中,Unix称雄一时,被广泛用在各种微机和工作站上。在Unix被各个帮派
集团购买应用之时,UC-Berkeley有一伙儿人也把Unix源码买过来进行改进和研究。他
们把当时的Unix Version6 加入了新的代码和功能用来连接不同的计算机,并为此引入
了一种简单可靠的网络通讯协议栈。这个当时不起眼儿的协议栈就是如今整个国际互联
网的基础,无处不在的TCP/IP!计算机网络需要我再另写一整篇,所以先接着八卦计算
机操作系统。 到了80年代末,UC-Berkeley这个版本的Unix 演进到了4.3BSD, 势力已
经可以和正统的Unix抗衡了。为了规范和协调这两派互相兼容,IEEE老前辈出面主持大
局,促成了著名的 1003.1规范 (POSIX).  从此大家以为天下太平,Unix可以一统天
下了,永享太平了。却不知螳螂捕蝉,黄雀在后。
 
就在 UC-Berkelely的Unix BSD版本的基础上, 广大IT民工山寨出了类Unix操作系统 --
- FreeBSD。类Unix的操作系统不是简单的克隆Unix,而是继承了Unix操作系的设计思
想并发挥开源社区群众智慧编写的新操作系统。 FreeBSD 很成功,而且大有曹魏篡汉
的意思,重要原因之一当然是因为其免费和开源的特征。正统Unix的拥有者贝尔实验室
和AT&T感到了前所未有的威胁,于是一纸诉状,以侵权的名义把FreeBSD告上了法庭。
这个官司打了数年,其间 FreeBSD也被禁止传播应用,知道1995年官司完结后才能重出
江湖。然而这几年的法庭纠缠成为了开源操作系统的短暂空白期,却给了另一位乱世英
雄天赐良机。这就是Linux 操作系统。
 
Linux的兴起也很有意思,值得玩味。最初,因为正统的Unix操作系统过于庞大复杂,
不适合大学和科研机构教学,所以人们写了个简化版的类Unix操作系统叫MINIX,只有
几千行C代码和几百行汇编代码,很适合学生在一个学期内学完操作系统的基本原理。
慢慢地,大家都希望能够给MINIX加入更多的功能。但是正统的Unix是不屑于帮助这个
不起眼的愣头小青年的,不肯提供任何技术支持。于是,这惹恼了一位民间的草莽英雄
,愤然决定造反革命,重新写一个基于MINIX,类Unix的开源免费操作系统。这位仁兄
叫做Linus Torvalds, 而他把自己的这个操作系统就称为 --- Linux. 更为巧合的是,
当第一版Linux在网上发布不久(1991年),其最大开源竞争对手FreeBSD与正统Unix在
法庭开战。于是,Linux趁着这个间隙发展壮大,从1991年的9300行C代码和950行汇编
,扩充到1996年的47万行C代码和 8000行汇编,并且功能日趋完善。直到今日,Linux
仍然在茁壮成长,特别在嵌入式系统和Web server领域占有率很大,Ubuntu版本也开始
大举进军个人电脑市场,为Linux集团开疆扩土。正像当年的魏吴赤壁鏖战,无暇西顾
,才促成了蜀汉的最终建立。
 
在80年代初,正统Unix鼎盛一时的时候,有一群小公司靠给不同的计算机销售商做各种
版本的Unix混饭吃。这其中有间不起眼儿的小店,领头的小伙儿也靠几个人每天整整
Unix搞搞BASIC语言,赚点养家糊口的小钱,有上顿没下顿的。IBM有天不经意间问那个
领头小伙子有没有什么推荐的个人电脑操作系统,那小伙子很诚实,告诉IBM自己那小
作坊搞不出来,推荐了当时最牛的Digital Research公司的一款操作系统。Digital
Research的老板当时太忙,没时间和IBM玩,所以此事就耽搁下来。于是这个小伙子就
趁机买了这个操作系统,迅速改造成了自己的PC操作系统,转手卖给了IBM。 此后这个
小伙子随着IBM计算机的畅销而一举成功,淘得了人生中的第一桶金。是的,这个PC操
作系统就是著名的MS-DOS, 那个当时不起眼儿的小公司就是Microsoft, 而那个当时穷
得连老婆都娶不到的小伙子正是Bill Gates。随后,Gates瞄准了图形界面操作系统的
发展前景,完全抛弃了MS-DOS内核,开发出了基于NT内核的Windows系列,从而最终称
雄于个人电脑操作系统至今。 而从DOS到Windows的革命性转变,是Human-Computer
Interaction (HCI)领域的佳话了,所以恐怕过两天我还要用另外一篇小文来八卦之了
。从计算机网络发展的角度看来,在我看来微软不值得一提;但是从计算机操作系统的
角度来看,微软这个异族的崛起却改写了从个人电脑到大型机服务器操作系统的整个历
史。
 
操作系统的发展史就好似三国两晋时代,所有人都在关注曹魏篡汉,司马氏代魏,并且
最终以为三家归晋就是结局。但是,谁也没有注意到北方匈奴和鲜卑的趁机崛起,使得
貌似强大的西晋帝国迅速灭亡,残存的东晋只能死守半壁江山。Unix, FreeBSD, Linux
, MS-DOS, Windows NT就是这段波澜壮阔历史的主角,而互联网的衍生和发展只不过是
这段历史的小小插曲罢了。然而,在我看来,计算机操作系统的精彩历史并没有结束的
迹象,相反却会越发引人入胜。在如今的操作系统领域,全世界都能看到的是微软阵营
和Linux/Unix阵营每日兵戎相见,战乱不休。但是,外人很少会注意到这样一些新闻:
2007年11月,互联网领域的google发布了自己的最新移动操作系统adroid; 2009年7
月,Google宣布将正式在2010年下半年推出新的PC操作系统 Chrome OS,而且这款
Chrome革命性地改变了传统操作系统的设计思路,设计思路完全以网络通讯为基础。可
以很清楚地看出,Google的目的的不是替 Linux/Unix阵营摇旗呐喊,也不是和微软小
打小闹,而是要将各个对手最终至于死地,一统江湖。当微软和传统Unix/Linux阵营还
在紧张对恃的时候,远处风啸黄沙泛起,两队人马身后渐渐浮现出现一队更强壮的身影
,若隐若现。就如同1644年4月的山海关,当时没有人知道赢得最后胜利的是西来的李
自成,关前的吴三桂,还是突然北下的多尔衮...... 的确,正因江山之多娇,英雄竞
折腰。

Unix/Linux操作系统的事情先八卦到此,下回要努力进入计算机网络的正题,嘿嘿。
--

※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 137.132.]

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...