作者 | Aholiab 责编 | Carol

出品 | CSDN(ID:CSDNnews)

道生一,一生二,二生三,三生万物

——老子

与人类的历史相比,软件的历史很短,但如果给软件的历史找一个奇点,那这个奇点就是UNIX。

UNIX是什么?它是计算机历史上的一座丰碑、一种文化、一种哲学、一个传奇。它看不见,但万物中都有它的影子。如果没有它,谷歌、脸书、亚马逊可能不会存在;Office办公软件可能要晚很多年出现;苹果电脑也不再优雅,因为没有了MacOS;导航软件、智能家电、物联网也不会大大改变人们的生活;而如今人人离不开的手机,也会因缺少安卓系统而少了很多精彩。

自1969年在贝尔实验室的阁楼中诞生以来,UNIX的发展远远超出了创造者们的想象。本期视频就让我们走近UNIX的传奇,回到计算的「原点」。

点击视频更精彩????????

UNIX的起点

1969年的美国是传奇的一年,阿姆斯特朗在月球迈出了「人类的一大步」;胡士托音乐节上,50万人在阴雨中,被「和平、反战、博爱」点燃;在纽约一个叫「石墙」的酒吧里,同性恋者与警察的对抗,成为了世界同性恋权利运动的起点。在这样的背景下,一个运行在一台过时计算机上的操作系统的诞生,并没有引起人们的注意,但随着50年的发展,它却真正改变了世界。

上世纪60年代,麻省理工大学希望对当时的「兼容分时系统」CTSS进行升级,做一套向大众提供计算服务的信息处理工具,他们把这套系统命名为MULTICS。这么大的项目MIT一个人肯定搞不定,所以它拉上了通用电气和贝尔实验室。

可能是劲儿使大了,什么功能都想往MULTICS上加,导致它越来越复杂,最后变成了一个巨大的四不像。

眼看着MULTICS要跨,贝尔实验室率先决定退出这个项目。当时实验室里有六七个研究员参加了MULTICS项目,其中就包括肯·汤普森和丹尼斯·里奇。虽然项目不做了,但肯·汤普森仍然想继续研究操作系统,但一朝被蛇咬,实验室死活都不愿意给汤普森批预算,想买硬件更是没门。

无奈之下,汤普森只好找来一台没人用的PDP-7计算机来折腾,这款机器是1964年出产的,距离当时已经五年,早就过时了。它只有16KB内存,而且还是做电路设计用的。好在它的图形显示非常漂亮,汤普森就为它写了个「太空旅行」的游戏。

跟今天小巧的电脑不一样,PDP-7十分巨大,上面高耸着磁盘驱动器,里面是高速运转的磁盘,一不小心飞出来,可以把人瞬间KO。汤普森想这也太危险了,于是他写了个磁盘调度算法;为了测试这个算法,他还需要写一个批量写数据的程序。这个程序包含三个部分:a)用来创建代码的编辑器;b)将代码转化为机器语言的汇编器;c)再加上内核的外层。要是一周写一个,三周就能写完。一个操作系统的雏形基本就实现了。

巧的是,这个时候汤普森的老婆正好休假,要带着儿子去加州看公婆,来回正好三周。

1969年末,第一版有明确UNIX特征的系统已可以运行,UNIX正式诞生。

从PDP-7到PDP-10

虽然UNIX的雏形完成了,但第一版UNIX直到2年后的1971年才正式运行。这两年间汤普森和里奇对UNIX进行了持续的改进。但巧妇难为无米之炊,PDP-7根本带不动这么大的系统,当务之急是要换一台更好的计算机。

他们首先句瞄上了当时在高校和科研机构里最受欢迎的PDP-10,它的性能强大,当然价格也不菲,要50万美元。

贝尔实验室是个巨大的研究机构,每年都会产出大量的专利。专利申请的文档有严格的格式要求。现有的计算机系统无法满足,所以公司只能购买专门的硬件来处理,但有些格式仍然无法实现,例如「标出行号」等。

这不正是个机会吗,于是他们提议,可以买一台PDP-11,让UNIX小组在上面编写专门申请专利的程序。PDP-11是当时DEC新出的计算机,但售价只有PDP-10的十分之一,只要6.5万美元。

PDP-11到手后,汤普森和里奇将UNIX系统从之前的PDP-7上移植了过来。汤普森和里奇在新电脑上的工作卓有成效,他们白天写专利申请软件,晚上写UNIX系统。两项工作在同一台计算机上运行,互不干扰,一个小小的失误就会造成系统崩溃、文件丢失。领导也对他们的工作很满意,终于批准他们再买一台PDP-11用于UNIX的研发。

UNIX的重要里程碑

在UNIX的发展中,第六版和第七版是两个重要的里程碑,分别发布于1975年和1979年。这两个版本,一个是正式对外发布的版本;一个是后面遍地开花的「类UNIX系统」的分叉点。C语言和C++也是在这两个版本中诞生的。

第六版包含了众多令人惊叹的功能,如分层文件系统;可兼容的I/O;管道、正则表达式、grep等。但最引人注目的,还是C语言。

C语言的基础是汤普森发明的B语言,它跟Fortran很像。在PDP-11到货后,里奇发现它的操作单位是字节,而非之前的字(PDP-7的块单位是18位,约2字节)。B语言并不适合以字节为操作单位的PDP-11,所以开始着手对B语言进行改造,并为其编写了编译器。他给这个语言起名为NewB,NewB最后进化成了C。第6版UNIX的内核就是由9000行C语言和700行汇编语言写成的。

C语言让系统的维护和修改变得更加容易,也让其可以更方便地移植到不同架构的计算机,打破了操作系统互不兼容的局面。

1975年,汤普森带着UNIX第6版在加州大学伯克利分校教授「操作系统课程」,有个叫比尔·乔伊的研究生对这个系统很入迷,他修改了UNIX的本地版本,添加了一些自己的程序,包括vi编辑器和csh,以及至今仍在使用的TCP/IP网络接口。后来他修改的这一版本演化成了UNIX最重要的分支BSD(伯克利发行版)。

从第7版开始,UNIX有了两条发展线:官方商业版和BSD版

第7版是最后一个发布并被广泛使用的UNIX的版本。第8版、第9版分别于1985年、1986年问世;1989年,第10版完成,这是最后的科研版本,但没有对外发行。此后,肯·汤普森等人开始研发新的操作系统——Plan9,此项目创造了UTF-8编码,今天互联网上几乎所有文本都是用它来编码的。

第7版之所以有两条路线,一方面,是看到UNIX有利可图,贝尔实验室的母公司AT&T于1984年发行了其第一个商业版本SVR4抢占市场,并注册了UNIX的商标;另一边BSD也不弱,先后对UNIX进行重构,用新的代码来重写相同的功能,还在1991年发布了不包含AT&T专利材料的UNIX版本,不但一举打赢了跟AT&T的专利官司,还缔造了庞大的BSD家族——FreeBSD、OpenBSD、NetBSD。就连苹果操作系统MacOS的核心Darwin所使用的NextSTEP也是BSD的衍生版本。

从80年末,到90年代初,AT&T围绕UNIX的版权之争旷日持久,一团乱麻。最后以网威买下了UNIX的版权,而不打算继续扯皮而告终。

在这场持续了十年的版权拉锯战中,还诞生了另外两个最著名的UNIX分叉——Minix和Linux。

如当初汤普森和里奇没有想到UNIX的成功一样,林纳斯也没想到自己做着玩的东西竟然能以商品化操作系统的形态,运行在今天全球数十亿台设备上。从谷歌、亚马逊、脸书的服务器;到汽车、电视、手机、Kindle的操作系统。

Linux早已成为了互联网基础设施的一部分。它的代码也从当年的几千行,发展到了今天的两千多万行。

 UNIX即出,则万物生

会不会有另一个UNIX横空出世,在几十年内占领世界?历史是否会重演?不太可能。但可以肯定的是,操作系统会变得更好,只是同时继续携带这大量的UNIX的基因。UNIX的成功技术固然重要,但更多来源于贝尔实验室伊甸园般的研发环境和一系列幸运的意外。

在一个远离喧嚣的园区中,一群天才没有生存压力、没有KPI、不需要做工作计划,可以年复一年的根据自己的兴趣研究一个课题。晶体管、太阳能电池、负反馈放大器、激光机、手机、通信卫星,都是那个时期的重要发明。从贝尔实验室中走出了9个诺贝尔奖。

更有甚者,喜欢飞行的汤普森,还带着一帮研究员成立了一个「1127空军」(1127:贝尔实验室计算科学研究中心内部编号)。在苏联解体后,他还专门跑去俄罗斯开了一次米格战斗机。

如今UNIX早已化为了DNA写进了互联网的基因中,他是「道」,一既出,则万物生。

点击视频更精彩????????

福利·福利·福利

本视频内容基于《UNIX传奇》;作者:Brain Kernighan;中国工信出版集团、人民邮电出版社。

3月14日前,在本文下留言的小伙伴,抽取点赞最高的5个留言赠送本书每人一本,欢迎踊跃留言、点赞、转发!


☞15 万个监控摄像头被黑,医院、学校、监狱都被看得一清二楚!☞RedMonk 编程语言排行榜:JS持续霸榜,Dart 快速上升!
☞CTO 写的低级 Bug 再致网站被黑,CEO 的号都被盗了!
☞百度92年程序员因“篡改数据”被抓;运营商辟谣首批 5G 用户被抛弃;特斯拉回应上海工厂摄像头被入侵 | 极客头条

在内存只有24KB的电脑上写操作系统,是怎样的体验?相关推荐

  1. 在内存只有 24KB 的电脑上写操作系统,是怎样的体验?

    作者 | Aholiab  责编 | Carol 出品 | CSDN(ID:CSDNnews) 道生一,一生二,二生三,三生万物 --老子 与人类的历史相比,软件的历史很短,但如果给软件的历史找一个奇 ...

  2. ddr4服务器内存和普通内存_DDR4内存可以在普通电脑上使用吗?有影响吗?

    DDR4内存可以在普通电脑上使用吗?DDR4是第四代内存,随着电脑DDR4内存开始上市,有不少网友问到:DDR4内存可以用在普通电脑上吗?简而言之,就是以前买的旧电脑或者现在用的普通电脑能升级DDR4 ...

  3. 使用手机访问电脑上写的网页

    使用手机访问电脑上写的网页 做移动端开发都要开发环境,但是我们有可能会在想我们能不能在PC端开发完后,然后在手机端预览效果,这样的话,对于我们开发有以下优点: 1. 能方便调式代码,能看到效果,不需要 ...

  4. 计算机怎样保存文档,【2人回答】怎么在电脑上写文档并保存?-3D溜溜网

    回答: 在电脑上写日记可以通过,电脑上的Word文档或者是记事本来写,下面是操作步骤: 工具:电脑一台(带Word文档的) 打开Word 文档,点击工具栏"开始"中的"标 ...

  5. 在电脑上写好的移动端页面,如何在手机上快速查看

    我在这里告诉大家一个小窍门,是我的神技,那就是在电脑上写好移动端页面, 如何在手机上快速查看呢?多余的话不说,直接说技能点. 1,这里首先找到自己的ip地址然后把自己的ip地址复制到这里,就是自己 在 ...

  6. 怎么用计算机编写文件,怎样在电脑上写作文做文件

    怎样在电脑上写作文做文件以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 1. 怎样用电脑写作文 1. 打开电脑,在桌面新 ...

  7. 您的计算机无法启动后,在多次尝试后,你的电脑上的操作系统仍无法启动

    故障描述 Windows10 1909版本(HOME,PRO),无论是直接安装还是从1903升级,正常关机后在开机可以正常进入系统, 但是在系统内部重启电脑会有非常高的概率启动后进入自动修复画面并提示 ...

  8. 谷歌基情实录:和Jeff Dean在同一台电脑上写代码

    大数据文摘出品 编译:DonFJ.周家乐.李雷.小七.胡笳.jin.钱天培 单丝不成线,孤木不成林,浑身是铁也打不成几根钉子. 谷歌的伟大有一多半要归功于公司中亲密无间.协同工作的程序猿们!向伟大的猿 ...

  9. 《纽约客》特写Jeff Dean与Sanjay:谷歌唯二11级工程师,同一台电脑上写代码

    作者:<纽约客> James Somers 翻译:新浪科技 堆堆.李明 量子位 经授权转载 | 公众号 QbitAI 最近,<纽约客>杂志写了一篇长文,描述谷歌唯二11级工程师 ...

最新文章

  1. 在Sublime Text 3中配置编译和运行Java程序
  2. A 01 如何理解会计中的借和贷
  3. 尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版(一)
  4. 图像处理--角点检测与匹配
  5. 《leetcode》single-number
  6. IE6下div宽高设置
  7. 前端学习(1304):package.json
  8. 微信小程序 bindtap 和 catchtap的区别
  9. 【大数据系列】hadoop单节点安装官方文档翻译
  10. Excel 2016新增函数之IFS
  11. AxWebBrowser打开本地文件
  12. python语言程序设计实践教程答案上海交通大学_计算机二级教程 Python语言程序设计 第4章程序的控制结构...
  13. 如何在arcmap中使用取色器
  14. UE4读取scv文件 -- 数据驱动游戏性元素
  15. 树莓派默认密码_树莓派快速指南,从购买到开机
  16. IP营销要从内部打破小众圈层的壁垒,“内容+社交”必不可少
  17. 服务器维护以后多久刷潮汐护符,魔兽世界怀旧服潮汐护符怎么获得
  18. 初步了解FPGA中的HLS
  19. 自动驾驶域控制器话题下的软件系统设计和研发管理
  20. C++break语句用法

热门文章

  1. 实现Fragment在ViewPager中滑动
  2. C#编码简单性之泛型篇(如何编写简短的C#代码,随时更新)
  3. iTOP-4412开发板基于Linux-C测试程序的编译和运行
  4. MongoDB安装问题
  5. CentOS下编译安装Gcc-4.9
  6. 跟着大彬读源码 - Redis 1 - 启动服务,程序都干了什么?
  7. 从一个故事开始谈项目与团队管理
  8. Handler 引起的内存泄露
  9. 百度EasyDL-表格数据预测试用示例
  10. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·004【标识列、外键、复制表】