400 likes | 576 Views
MULTICS. OS 和网络从这里走来. 李博杰 bojieli@gmail.com 2013-04-21 LUG@USTC. UNIX 创世纪. 1960~1964 , Frederic. P. Brooks 等为 IBM 的大型机开发 OS/360 操作系统,曾有一万人同时写代码 1964~1969 , AT&T, G.E., MIT 合作开发了通用、分时和多用户的操作系统 MULTICS
E N D
OS和网络从这里走来 李博杰 bojieli@gmail.com 2013-04-21 LUG@USTC
UNIX创世纪 • 1960~1964,Frederic. P. Brooks等为IBM的大型机开发OS/360操作系统,曾有一万人同时写代码 • 1964~1969,AT&T, G.E., MIT合作开发了通用、分时和多用户的操作系统MULTICS • 项目由于性能太低而解散,Ken Thompson与Dennis Ritchie不想让他们的Space Travel白费劲,就在废弃的PDP-7上用汇编开发了新的操作系统 • Thompson逐步实现了文件系统、进程、shell • Brian Kernighan嘲笑他们的系统是“Unics”(太简单),随后改成了UNIX
UNIX创世纪 • 1971年,Ken Thompson以为专利部门开发文书处理系统的名义申请到一台24K Mem, 500K Disk的PDP-11,UNIX第一版诞生,系统占用12K内存 • 1973年,Ken Thompson和Dennis Ritchie厌烦了汇编语言,但他没能写出Fortran编译器,只好用BCPL,然后逐步改进成B语言、C语言,最后用C语言重写第三版内核 • UNIX和C成为不可分割的统一体,C语言是高级语言,易于修改、移植,UNIX有一切皆文件的抽象和“Less is more”的哲学。
UNIX兴起 • The UNIX Time Sharing System, Communications of the ACM, July 1974 • 现代操作系统的核心概念在此奠基:文件系统、mount、设备文件、fork (Berkeley time-sharing system)、pipe、shell (multics)、管道、重定向 • Ken Thompson被铺天盖地的源码请求淹没 • Unix第5版源码以“仅用于教育目的”的协议提供给大学使用
始于UNIX的黑客文化 • “几乎从一开始,Unix就开始了自我进化。所有的源代码容易被人修改,当一个新的想法诞生时,大家都自愿地修订Unix上的软件”——The UNIX Time Sharing System, CACM • Bell实验室的Mcllroy发明了管道 • Bell实验室的Korn开发了Korn Shell • 由于UNIX始于垃圾堆里的PDP-7,它只要成本低廉的硬件就能跑起来,屌丝纷纷涌过来
UNIX分裂 • 1978年,UC Berkeley推出以Unix第6版为基础的1 BSD(1st Berkeley Software Distribution) • AT&T看到了Unix的商机,成立Unix Support Group,把Unix商业化,成为System III • 1979年,Unix第7版发布,这是最后一个版本的Unix,还被移植到VAX机上(VAX操作系统VMS的作者David Cutler,日后被微软挖走,创造了Windows NT)
TCP/IP的诞生 • UC Berkeley继续开发BSD,成为UNIX System V的替代选择。 • BSD的最大贡献是TCP/IP协议,这些代码被UNIX System V参考,使TCP/IP成为了计算机网络的事实标准 • 很多现代操作系统都多少参考了BSD,如1982年的SunOS和Sun Microsystems公司,后来成为了Solaris
BSD BSD 4.1 SunOS BSD 4.2 Solaris Mach BSD 4.3 GNU/Hurd NeXT BSD 4.4 NetBSD FreeBSD OpenBSD Rhapsody Apple Darwin Apple Mac OS X
The Open Group • Unix厂商害怕AT&T和Sun结盟,于是形成了各种名字里带Open的“标准”组织,如开放软件基金会、开放系统国际和公司等 • 1993年,微软发布了Windows NT,进军服务器市场。这下Unix世界着慌了,AT&T和Sun背景的Unix International Group并入开放软件基金会,就是今天的The Open Group • 他们发布了Single UNIX Specification,不过囚徒困境中的Unix厂商并没有真正做到标准化,而在各种Unix版本的争斗中毁掉了这个优美的系统
反垄断法与UNIX的封闭化 • 1958年AT&T曾与美国司法部签订和解协议,不进入计算机业,以免违反《反垄断法》 • 1974年,再次起诉AT&T违反《反垄断法》,1982年,AT&T败诉,被拆分为8家小公司 • 但这也意味着AT&T可以重新进入计算机业 • 1983年,AT&T发布了System V,商业版本,不再公开源码,它成为HP UX和IBM AIX的基础 • BSD只好一方面限制传播范围,一边将AT&T代码从BSD中逐渐去除
从冷战到热战 • 80年代后期,几个Berkeley毕业生成立了Berkeley Software Design公司,宣称不包含任何AT&T代码。这惹恼了AT&T,1990年BSDi公司被告上法庭,还拉上了UC Berkeley • 这场官司使得所有BSD开发活动停止,大家都担心遭到AT&T的追究 • 事实上1994年AT&T把Unix卖给Novell后,只删除了BSD中的3个文件,做了一些小修改,BSD就能重新开源了
黄金时代的错失 • 90年代初,正是基于x86的个人计算机开始普及的时代。IBM, AT&T等都看不上这些破芯片。而微软正是抓住了这个机会,与Intel结盟,才奠定了今天的霸主地位。 • Unix和BSD在90年代初都忙于版权官司,谁也没去做x86平台的移植,错过了重要的时间窗口 • 硝烟已散,战争的遗迹是今天我们看到的System V和BSD两种风格的Linux命令 • 第一代Unix黑客已垂垂老矣,衣食不饱,1993年,有人预测Unix的传奇将连同黑客文化一同破产
UNICS UNIX 1 UNIX 6 UNIX System III Minix UNIX 7 BSD Sun OS UNIX V BSD 4.1 UNIX 8 HP UX BSD 4.2 IBM AIX UNIX 9 UNIX 10
有封闭,就有反抗 • Richard Stallman受不了这些限制黑客的商业条款,在1983年宣布了GNU (GNU is Not Unix) 计划,目标是创建一套完全自由的操作系统 • 为保证GNU软件的自由,他撰写了General Public License (GPL, 1989),规定对GPL代码的修改必须以GPL协议开源发布,这种“传染性”使得没有人能封闭GPL软件
自由软件的四大自由 • 不论目的为何,有运行该软件的自由。 • 有研究该软件如何运行,以及按需改写该软件的自由。取得该软件源代码为达成此目的之前提。 • 有重新发布拷贝的自由,这样你可以借此来敦亲睦邻。 • 有改进该软件,以及向公众发布改进的自由,这样整个社群都可受惠。取得该软件源码为达成此目的之前提。
GNU计划 • 1985年,Richard Stallman创立了自由软件基金会,为GNU计划提供技术、法律、财政支持 • Richard Stallman为GNU计划开发了“神的编辑器”Emacs • 到1990年,GNU项目还开发出了GCC (GNU Compiler Collection),包括C, Fortran等多种语言的编译器 • 实现了程序库(glibc)、大部分UNIX命令工具,创造了编译工具(make) • 但GNU Hurd内核的开发一直不顺利
Minix与Linux • 在大洋彼岸,反抗Unix封闭的努力也没有停止 • 1987年,荷兰Vrjie大学的计算机教授Andrew Tanenbaum(似曾相识的名字?)为教学目的克隆了Unix,创造了可以在80286上跑的开源Minix • 1991年,芬兰赫尔辛基大学的学生Linus Torvalds买不起昂贵的Unix工作站,但又想学习Unix,就用半年时间在80386上写了个只有10000行的仿Unix操作系统——Linux • Linus Torvalds说,如果早知道BSD没有版权问题,就加入BSD的开发了(可惜当时官司还没打完)
Hello everybody out there using minix - • I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). • I've currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-) • Linus (torvalds@kruuna.helsinki.fi) • PS. Yes – it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.
GNU/Linux • Linux采用GPL协议发布 • GNU计划缺少可以运行的内核,Linux缺少可用的软件,两个项目一拍即合,这就是今天的GNU/Linux系统 • Richard Stallman认为,把GNU/Linux系统称为“Linux”是不尊重历史的,因为Linux只是内核,GNU项目贡献了系统的更大部分 • GNU/Linux系统有很多种发行版,不同发行版的主要区别是包管理器和默认安装的软件包
GNU/Linux的兴起 • 1991~1995,Linux发展成为性能媲美Unix的操作系统,并在连续工作时间上打败了大部分Unix • 1995年,Linux找到了自己的杀手级应用——开源Web服务器Apache。乘着互联网泡沫的东风,基于Linux的Apache服务器成了全球Web服务提供商的首选 • 嵌入式系统需要体积小、可定制性强、稳定的内核,Linux和它的实时衍生版成为嵌入式操作系统的首选
Minix Linux GNU GNU/Linux Debian 1993 Slackware 1993 RedHat 1994 Android 2008 Suse 1993 CentOS Fedora OpenSuse Knoppix Raspbian Ubuntu Mint Deepin
Linux垄断高性能计算 • 2012年TOP500,Linux占据93.8%,Windows只有3个席位
主要依靠Linux和自由软件的互联网公司 Your Position
主要基于Linux的自由编程语言 Your Position
浏览器的前世今生 • 互联网刚诞生的时候,是没有浏览器的…… • UNIX命令news可以阅读新闻组,mail可以寄信,IRC能聊天,还有共享文件的FTP…… • 1989年3月,Tim Berners Lee向CERN提出了HTTP协议的初步设想。90年代初,HTTP协议逐渐成型,这是WWW的基础。 • 1993年,第一个被广泛使用的浏览器——NCSA Mosaic诞生
Mosaic IE Trident Netscape Konquerer KHTML Mozilla Gecko Opera Presto Firefox Safari Webkit Chrome Android Opera
User Agent • Mosaic: NCSA_Mosaic/2.0 (Windows 3.1) • Netscape: Mozilla/1.0 (Win3.1) • 网站管理员只给User-Agent带Mozilla的页面发送框架,IE想得到带框架的页面,只好伪装成Mozilla • IE: Mozilla/1.22 (compatible; MSIE 2.0; Windows 95) • Mozilla (渲染引擎叫Gecko): Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826 • Firefox: Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0
User Agent (续) • Konquerer: Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) • Safari (渲染引擎是Webkit): Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5 • IE: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) • Chrome: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13
Web的开放大势 世界上的建筑可以分两种:一种是集市,天天开放在那里,从无到有,从小到大;还有一种是大教堂,几代人呕心沥血,几十年才能建成,投入使用。 ——Eric Raymond The Cathedral and the Bazaar(阮一峰译)
Raymond谈Linux的成功之道 • “为什么一个本科生的业余作品能变成全世界最流行的操作系统之一?” • 我认为,未来会更多地属于那些告别大教堂、拥抱集市的人们。 • 这不是说个人的远见和才华不再重要;而是在我看来,未来的成功者只是从自己的远见和才华开始工作,然后通过有效的社区合作,将其不断地放大。 • 开放式的文化会最终胜利,这或许不是因为“开放”在道德上正确,或者“封闭”在道德上错误,而只是因为开放式合作可以在一个问题上投入多几个数量级的技术工时,封闭的世界无法赢得这样的竞争。
Thanks! • 参考了各种网络文章和图片,恕不一一引用,向文章作者致谢!
Question 1 • 开源软件和自由软件的主要区别是什么?
Question 2 • Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31 • 这是哪个浏览器的User-Agent? • 这一长串字符的来历是什么?