Unix系统与软件开发环境.ppt
Unix系统与软件开发环境,教学目的与考核方式,目的:带领同学们进入一个计算机应用与开发的新领域:Unix/Linux学完后能胜任Unix/Linux领域的管理与开发工作考核方式:考试(笔试+机试)学时:周4(218周)课程内容:Unix系统与软件开发环境Unix/Linux系统知识(请准备笔记本,做好笔记)。开发部分,参考Unix环境高级编程请做好笔记。要做好实验,要通过实验理解教材。,关于教材,没有非常合适的教材使用:Linux操作系统参考书Unix环境高级编程,W Richard Stevens,尤晋元等译,机械工业Linux程序设计,Neil Matthew等编,杨晓云等译,机械工业,人民邮电Unix系统编程,Kay A.Ribbins等编,陈娟等译,机械工业Unix编程艺术,Eric S.Raymond等编,姜宏等译,电子工业Red Hat Linux 9应用基础教程,梁如军,机械工业Linux下的C编程,贾明等编,人民邮电Unix网络编程,W Richard Stevens,施振川等译,清华大学,课程安排及学习方式,知识点及理论学时(38)Unix/Linux基本知识Unix/Linux管理与配置Linux网络服务及管理Unix系统软件开发环境实验(30)Unix/Linux基础与基本操作Unix/Linux管理与配置Unix系统软件开发理论与实践相结合Unix/Linux知识学习实践与应用为就业和今后发展打基础,课程概览,简介与入门知识shell与命令界面文件系统及管理用户与口令管理进程管理Unix系统常用命令设备管理网络、网络服务及应用内核与系统管理系统安装shell编程文件I/O标准I/O高级I/O文件和目录进程关系、信号与进程控制进程间通讯(IPC)C/S,C/M/S与守候进程,第一章 简介,Unix/Linux 发展历程Unix/Linux 的特点与发展趋势Unix/Linux 的厂家与版本Unix/Linux 应用简介Unix的文化与哲学,1.1 Unix发展简史,1 Unix的起源及历史1969-1995,Unix的祖辈是小而简单的兼容分时系统(CTSS:Compatible Time-Sharing System),也算是曾经实施过的分时系统的第一代或者第二代了。Unix的父辈是颇具开拓性的Multics项目,该项目试图建立一个具备众多功能的information utility,能够很漂亮地支持大群用户对大型计算机的交互式分时使用。可是,Multics设计得太完美了,最后因不堪自身重负而崩溃了。但Unix却正是从它的废墟中破壳而出的。最初的Unix就是一个第三系统。小型实验原型系统的后继产品往往备受令人讨厌的“第二版效应”折磨。由于迫切希望把所有首次开发时遗漏的功能都添加进去,往往导致设计十分庞大、过于复杂。其实,还有一个因不常遇到而鲜为人知的“第三版效应”:有时候,在第二系统不堪自身重负而崩溃之后,有可能返朴归真,走上正道。,2 创世纪:1969-1971,Unix于1969年诞生于贝尔实验室的计算机科学家Ken Thompson的头脑中。(Thompson曾经是Multics项目的研究人员。)当时代计算机硬件的原始程度:那时最强大的机器所拥有的计算能力和内存还不如现在一个普通的手机。所谓的大硬盘容量也不超过1M。视频显示终端才刚刚起步,六年以后才得到广泛应用。最早分时系统的标准交互设备就是ASR-33电传打字机。Unix命令简洁、“少说多做”的传统正是从这里开始的。,创世纪:1969-1971,当贝尔实验室(Bell Labs)从Multics研究联盟中退出时,Ken Thompson带着从Multics激发的灵感留了下来。他甚至没能留下一台机器来玩自己编写的“星际旅行(Space Travel)”。Unix就在一台废弃的PDP-7小型机上问世了。这台PDP-7成为了“星际旅行”的游戏平台和Thompson关于操作系统设计思路的试验场。,创世纪:1969-1971,Dennis Ritchie(Unix的合作发明者和C语言的发明者)、Doug McIlroy和其他一些同事,已经习惯了Multics环境下的交互计算方式,不愿意放弃这一能力。Thompson的PDP-7操作系统给了他们一把救生稻草。Ritchie评述道:“我们希望保留的不仅仅是一个良好的编程环境,还包括一种能够形成伙伴关系的系统。,创世纪:1969-1971,Thompson和Ritchie“星际旅行”的实现引起了关注。Thompson和Ritchie为支持游戏开发而在PDP-7上编制的实用程序成了Unix的核心。直到1970年才产生Unix这个名字。最初的缩写是“UNICS”(Uniplexed Information and Computing Service),Ritchie后来称之为“一个有点反叛Multics味道的双关语”,因为它的前身是Multics(MULTiplexed Information and Computing Service)。,创世纪:1969-1971,Unix的第一功,是1971年为贝尔实验室的专利部门进行“文字处理”的支持工作。Unix在贝尔实验室计算群落中的重要而永久地位由此确立,并且开创了Unix历史的下一个主旋律与文档格式化、排版和通讯工具的紧密结合。Unix的轻装开发和方法上不拘一格的传统与生俱来。既使在最早期,PDP-7 Unix已经拥有现今Unix的诸多共性,提供的编程环境也比当时读卡式批处理大型机的环境要舒服得多。Unix几乎可以称得上第一个能让程序员直接坐在机器旁,一边编程一边测试的联机系统。Unix的整个发展进程中都能吸引那些不堪忍受其它操作系统局限性的程序员自愿为它进行开发,这也一直是Unix不断拓展其能力的模式。,3 出埃及记:1971-1980,最初的Unix用汇编语言写成,应用程序用汇编语言和解释型语言B混合编写。B语言的优点在于小巧,能在PDP-7上运行,但是作为系统编程语言还不够强大,所以Dennis Ritchie给它增加了数据类型和结构。1971年起从B语言进化出了C语言。1973年,Thompson和Ritchie成功地用C语言重写了整个Unix系统。这是一个大胆的举措那时为了最大程度地利用硬件性能,系统编程都通过汇编器来完成。与此同时,可移植操作系统的概念几乎鲜为人知。可是有了C之后,可移植操作系统“已经”变成了现实。1979年,Ritchie这么写:“Unix的成功很大程度上源自其以高级语言作为表述方式所带来的可读性、可改性和可移植性”。,出埃及记:1971-1980,1974年在美国计算机通信(Communications of the ACM)上发表的一篇论文中Ritchie-Thompson第一次公开展示了Unix。文中作者描述了Unix前所未有的简洁设计,并报告了600多例Unix应用(这些都是安装在即便按照那个年代的标准,性能都算很低的机器上,但是(正如Ritchie和Thompson所写)“性能的局限不仅成就了经济性,而且鼓励了设计的简约”。)CACM论文发表后,全球各个研究实验室和大学都嚷着要亲身体验Unix。但根据1958年为解决反托拉斯案例达成的和解协议,AT&T(贝尔实验室的母公司)被禁止进入计算机相关的商业领域。所以,Unix不能够成为一种商品。实际上,根据和解协议的规定,贝尔实验室必须将非电话业务的技术许可给任何提出要求的人。于是,Ken Thompson开始默默回应那些请求,将磁带和磁盘一包包地寄送出去。Unix的发展迅速笼罩了一层反传统文化的氛围。Unix黑客们沉浸在同时编织未来和编写系统的狂欢中。,出埃及记:1971-1980,那些日子的兴奋从Douglas Comer的话语中可见一斑:许多大学都对Unix作出过贡献:多伦多大学计算机系发明了200dpi的打印机/绘图仪,并且开发了用打印机模拟照相排版机的软件;耶鲁大学的计算机专家和学生们改进了Unix的shell;普渡大学的电子工程系对Unix的性能作了重要改进,推出了支持大量用户的Unix版本,还推出了最早的Unix网络之一;加州大学伯克利分校的学生开发了新shell和许多小型实用工具。1970年代后期贝尔实验室发布Unix V7版本时,该系统解决了许多部门的运算问题,也综合了许多高校的创意,最终诞生了一个更强大的系统。思想潮流开始了新一轮循环,从学术界流向工业实验室,然后又回到学术界,最后流向了不断增加的商业用户。现代Unix程序员公认的第一个完全意义上的Unix是1978年发布的V7版本。,出埃及记:1971-1980,第一代Unix用户群一年前就已形成。此时,Unix用于支撑贝尔系统(Bell System)的所有操作,并且传播到高校中,甚至远至澳大利亚在那里,John Lions对V6版源码的注释成了Unix内核的第一个正式文档Lions Unix源代码分析。许多资深的Unix黑客仍然珍藏着一份拷贝。Lions Unix源代码分析:Lions的书是地下出版界轰动一时的大事。由于侵犯版权等诸如此类的问题,该书不能在美国出版,所以大家就你拷给我、我拷给你。在那个时代,若没有Lions的书,你就当不成内核黑客。,出埃及记:1971-1980,Unix产业也初露端倪。1978年,第一个Unix公司(the Santa Cruz Operation,SCO)成立,同年售出第一个商用C编译器。1980年,西雅图一家还不起眼的软件公司微软也加入到Unix游戏中,他们把AT&T版本移植到微机上,取名为XENIX来销售。但是微软把Unix作为一个产品的热情并没有持续多久(尽管直到1990年左右,微软的大部分内部开发工作都用的是Unix)。,4 TCP/IP和Unix内战:1980-1990,在Unix的发展过程中,加州大学伯克利分校很早就成为唯一最重要的学术热点。伯克利分校早在1974年就开始了对Unix的研究,而Ken Thompson利用1975-1976的年休在此教学,更对Unix的研究注入了强劲活力。1977年,当时还默默无闻的伯克利毕业生Bill Joy管理的实验室发布了第一版BSD。到1980年,伯克利分校成了为这个Unix变种积极作贡献的高校子网的核心。有关伯克利Unix(包括vi编辑器)的创意和代码不断从伯克利反馈到贝尔实验室。,TCP/IP和Unix内战:1980-1990,1980年,国防部高级研究计划局(DARPA,Defense Advanced Research Projects Agency)需要请人在Unix环境下的VAX机上实现全新的TCP/IP协议栈。DARPA选择了伯克利Unix作为平台显然是因为可以毫无阻碍地拿到它的源码。伯克利计算机科学研究组当时拥有天时地利,还有最强大的开发工具;而DARPA的合作无疑成为Unix历史上自诞生以来最关键的转折点。,TCP/IP和Unix内战:1980-1990,在1983年TCP/IP实现随Berkeley 4.2版发布之前,Unix对网络的支持一直是最薄弱的。早期的以太网实验不尽人意。贝尔实验室开发了一个难看但还能用的工具UUCP,可在普通电话线上通过调制解调器来传送软件。UUCP可以在分布很广的机器之间转发邮件,并且(在1981年Usenet发明后)支持Usenet。在TCP/IP诞生之前,Unix和Internet文化尚未融合。但有了TCP/IP,一切都变了。ARPANET和Unix文化自边缘开始融合,这种发展最终使两者都免遭灭亡。,TCP/IP和Unix内战:1980-1990,不过,事情不问题一帆风顺的,起因是两个毫不相干的灾难:微软的兴起和AT&T的拆分。1981年,微软同IBM就新型IBM PC达成了历史性交易。比尔.盖茨从西雅图计算机产品公司(SCP)买下了QDOS(Quick and Dirty Operating System)。QDOS是SCP公司的Tim Paterson花六个星期凑出来的CP/M翻版。盖茨对Paterson和SCP公司隐瞒了同IBM的交易,以五万美元的价格买下了所有版权。后来,盖茨又说服了IBM公司允许微软将MS-DOS从硬件中剥离出来单独出售。接下来的十年中,盖茨利用这个非他所写的程序变成了超级亿万富翁,精明的商业策略更是让微软垄断了桌面计算机市场。那时,没什么人能看出微软会多么成功。因为IBM PC-1硬件条件不足以来运行Unix,所以Unix人群几乎没在乎这个产品。尽管,DOS2.0光芒能盖过CP/M,主要因为微软的合创者Paul Allen在DOS2.0中融入了一些Unix的特征,包括子目录和管道等。作为产品的XENIX很快就弃而不用了,最终卖给了SCO公司。,TCP/IP和Unix内战:1980-1990,还有一件事,那就是1982年SUN微系统公司的出世。SUN微系统公司的创立者Bill Joy、Andreas Bechtolsheim和Vinod Khosla打算制造出一种内置网络功能的Unix梦幻机器。他们综合了斯坦福大学设计的硬件和伯克利分校开发的Unix,取得了辉煌的成功,开创了工作站产业。随着Sun公司越来越像传统商家,Unix大树上的这根分支源码来源的树枝逐渐枯萎。而当时没人在意这一点,因为伯克利分校仍然随同源码一起销售BSD;各个高校也依然同贝尔实验室交换代码,看起来Sun公司对Unix的商业化似乎再好不过了。此时,C语言也有望被选为Unix世界外的系统编程语言。仅仅五年左右的时间,C语言就几乎让机器码汇编语言完全失去了作用。到了九十年代早期,C和C+不仅统治了系统编程领域,而且成为了主流,到九十年代晚期,其他所有传统编程语言实际上都已经过时了。,TCP/IP和Unix内战:1980-1990,1983年,在DEC公司取消PDP-10的后继机型的“木星”(Jupiter)开发计划后,运行Unix的VAX机器开始代之成为主流的互联网机器,直到被Sun工作站取代。到1985年,已有25%左右的VAX用上了Unix。更主要的是,人工智能实验室以PDP-10为中心的黑客文化的消亡激发了Richard Stallman开始编制GNU一个完全自由的Unix克隆版本。到1983年,IBM PC可使用不下六种的Unix通用操作系统:uNETix、Venix、Coherent、QNX、Idis和运行在Sritek PC子板上的移植版本,但是System V和BSD版本仍然没有Unix移植。IBM PC上的这些Unix通用操作系统无一取得显著的商业成功,但表明了市场迫切需求运行Unix的低价硬件。,TCP/IP和Unix内战:1980-1990,1983年,美国司法部在针对AT&T的第二起反托拉斯诉讼中获胜,并拆分了贝尔系统,这时Sun公司己经取得了成功。这次判决将AT&T从1958年的禁止将Unix产品化的和解协议中解脱了出来。AT&T马上忙不迭地将Unix System V商业化(SCO)这一举措差点扼杀了Unix。很多人认为这是一个好消息,没有人意识到,Unix的产业化会破坏Unix源码的自由交流。因为唯恐宫司上身,非法交易的Unix源码也越来越乏人问津。来自高校的贡献随之开始枯竭。更糟的是:刚刚进入Unix市场的几家大公司立马犯下了重大的战略性错误,其中之一就是试图通过产品差异化来寻求有利地位。这个策略导致了各种Unix接口的分歧,抹杀了Unix的跨平台兼容性,造成了Unix市场分割。,TCP/IP和Unix内战:1980-1990,事实上,AT&T拆分后的数年内,Unix社区却在忙着Unix大战的第一阶段 System V Unix和BSD Unix之间的内部争吵。争吵分成不同的层面,有些属于技术层面,也有文化层面。AT&T拆分当年发生的另一件事对Unix产生了更深远的影响。程序员兼语言学家Larry Wall发明了patch实用程序。这意味着Unix开发人员之间可通过传送补丁进行协作,而不必传送整个代码文件。这种方式在1990年后让Unix获得新生运用这个工具,基于共有源码库的开发流可以分开、并行、最后合拢。patch程序比其它任何单一工具都更能促进Internet上的协作开发。现在的所有操作系统无一不支持patch实用程序。,TCP/IP和Unix内战:1980-1990,1985年,Intel第一枚386芯片下线了。它具有用平面地址空间寻址4G内存的能力。这是条大新闻,因为这意味着占据主导地位的intel家族终于有了一款无需作出痛苦妥协就能运行Unix的微处理器。对Sun公司和其它工作站厂商来说,这真是不祥之兆。同年,Richard Stallman发表了GNU宣言(the GNU manifesto),并发起了自由软件基金会(Free Software Foundation)。同年,在一项与此不相干的开发行动中,X window系统的创始人发布了X window的源码,而无需版税、约束和授权。这项决策的直接结果就是X window成为不同Unix厂商之间合作的安全中立区,并挫败了专属的竞争对手,成为了Unix的图形引擎。,TCP/IP和Unix内战:1980-1990,以调解System V和Berkeley API为目标的严肃的标准化工作始于1983年。随之为1985年IEEE支持的POSIX标准。这些标准描述了BSD和SVR3(System V Release 3)调用的交集,综合了伯克利出色的信号处理和作业控制,以及SVR3的终端控制。所有后续的Unix标准核心都加入了POSIX,后续开发的各种Unix版本也严格遵循这个标准。后来的现代Unix核心API唯一主要的补充就是BSD套接字。1986年,Larry Wall开始开发Perl语言,现在最广泛使用的开源脚本语言。1987年初,GNU C编译器的第一版问世,到1987年底,GNU工具包的核心部分编辑器、编译器、调试器以及其它基本的开发工具等一一就位。同时,X window系统也开始在相对低廉的工作站上露面了。这些因素都为20世纪90年代的Unix开源发展提供了利器。,TCP/IP和Unix内战:1980-1990,同样是在1986年,PC技术挣脱了IBM的掌控。最积极进取者康柏(Compaq),发布了第一款386机器,靠这张牌打败了IBM。虽然主频只有16MHz,但是跑起了Unix。这是第一款可以叫Unix机器的PC。这会儿已经能够想象Stallman的GNU项目可以和386机器配合而制造出Unix工作站,它比当时任何方案都要便宜一个数量级,但当时没人想到这步棋。AT&T和Sun的联盟以及以POSIX为核心的技术标准的发展,最终弥合了System V和BSD Unix之间的裂痕。当二线商家(IBM、DEC、HP等)创建开放软件基金会(Open software Foundation)并结成盟友和以“Unix国际”为代表的“AT&T/Sun轴心”对抗时,Unix内战的第二阶段开始了。,TCP/IP和Unix内战:1980-1990,这段时间中,微软从家庭和小型商用市场赚了数十亿美元的钱,而争战不休的Unix各方却从未决意涉足这些市场。1990年,Windows 3.0巩固了微软的统治地位,为微软荡平并最终垄断桌面应用市场创造了条件。1989年到1993年是Unix的中世纪。当时,似乎Unix社群所有的梦想都破灭了。相互争斗的战事已使专有Unix产业衰落得像个吵闹的肉店,无力振起挑战微软的雄心。GNU项目没能开发出自由的Unix内核,尽管从1985年GNU就不断作出此承诺。PC技术被无情地商业化了。1970年代的Unix黑客先锋们人到中年,步履开始蹒跚。硬件便宜了,但Unix还是太贵。人们幡然醒悟:过去的IBM垄断让位于现在的微软垄断,而微软设计糟糕的软件像浊流一样,围着我们越涨越高。,5 反击帝国:1991-1995,1990年,William Jolitz把BSD移植到了386机器上,这是黑暗中的第一缕曙光。向386移植BSD之所以可能,是由于伯克利黑客Keith Bostic一定程度上受Stallman影响。但是,Jolitz在1991年底退出386-BSD项目,并毁掉了自己的成果。公认原因是他希望将其代码以源码形式无限制地发布,但当项目的企业赞助商选择了更专有的授权模式时,他火了。1991年8月,当时默默无闻的芬兰大学生Linus Torvalds宣布了Linux项目。据称Torvalds最主要的激励是学校里用的Sun Unix太贵了。但是386-BSD直到1992年早些时候才下线,而此时Linux第一版已经发布好几个月了。Torvalds还说,要是早知道有BSD项目,他就会加入BSD组而不是自己做一个。,反击帝国:1991-1995,又过了两年,经历了1993-1994年的互联网大爆炸,Linux和开源BSD的重要性才为整个Unix世界所了解。与此前各种版本的Unix开发相比,Linux和BSD的开发相当不同。它们植根于互联网,依赖分布式开发和patch工具,通过Email和Usenet新闻组招募开发者。互联网的大规模市场推广,既增加了潜在开发者的数量,又降低了分布式开发的处理成本,这些影响可从XFree86之类的项目上看出。1992年诞生的第一版XFree86赋予了Linux和BSD作为一直缺乏的图形用户界面引擎。XFree86利用Internet为中心的模式建立了一个比官方X联盟更有效的开发组织。,反击帝国:1991-1995,到1993年末,Linux已经具备了Internet能力和X系统。整套GNU工具包从一开始就内置其中,以提供高质量的开发工具。除此之外,Linux好像一个魅力聚宝盆,囊括了二十年来分散在十几种专有Unix平台上的开源软件之精华。尽管当时Linux内核还是测试版(0.99),但稳定性已经让人刮目相看。Linux上软件之多、质量之高,已经达到一个产品级操作系统的水准。在旧学派的Unix开发者中,一部分脑筋活络的人开始注意到,做了多年的平价Unix之梦从一个意想不到的方向悄然成真。它既不是来自AT&T,也不是来自Sun,或者任何一个传统厂商,也不是出于学术界有组织的工作成果。它就这样从Internet的石头缝中跳了出来,浑然天成,以令人惊奇的方式重新规划拼装了Unix的传统元素的Linux。,反击帝国:1991-1995,另一方面,商业运作继续进行。1992年AT&T抛售了其手中Sun公司的股份,然后在1993年把Unix系统实验室(Unix Systems Laboratories)卖给了Novell;Novell又于1994年将Unix商标转手给X/Open标准组(X/open standards group);同年AT&T和Novell加入了OSF(开放软件基金会),Unix之战尘埃落定。1995年,SCO从Novell手中买下了UnixWare(以及最初Unix源码的权利)。1996年,X/Open和OSF合并,创立了一个大型Unix标准组。2000年SCO把UnixWare和原创的Unix源码包出售给了Caldera(一家Linux发行商)。整个产业变迁终告结束。但1995年后,Unix的故事就成了开源运动的故事。,6 黑客的起源和历史:1961-1995,与Unix传统的历史交织在一起的则是另一种隐性文化,一种更难归类的文化。这种传达着一个有关美和优秀设计的价值体系:里面有它的江湖和侠客。这些人部分与Unix文化交迭,部分源于它处。人们把这种文化称为“黑客文化”,从1998年起,这种文化已经很大程度上和计算机行业出版界所称的“开源运动”重合了。Unix传统、黑客文化以及开源运动间的关系微妙而复杂。三种隐性文化背后往往是同一群人。但是,从1990年以来,Unix的故事很大程度上成了开源世界的黑客们改变规则、从保守的专有Unix厂商手中夺取主动权的故事。因此,今天Unix身后的历史,有一半就是黑客的历史。,游戏在校园的林间:1961-1980,黑客文化的根源可以追溯到1961年,这一年MIT购买了第一台PDP-10小型机,吸引了一帮好奇的学生带着一种好玩的心态摆弄这台设备。他们最著名的成就是“太空大战(SpaceWar)”1969年后,MIT AI实验室和斯坦福、BBN 公司、卡内基.梅隆大学以及其它顶级计算机科学研究实验室通过早期的ARPANET联上了网。研究人员和学生们第一次尝到了快速网络联接消除了地域限制的甜头,一种类似共享文化的东西开始成形。从技术性而言,早期的黑客文化大都基于PDP-10小型机。从社会性而言,他们年轻,天资过人,献身编程达到痴迷的地步,决不墨守成规后来被人们唤做“极客(geek)”。协作式开发和源码共享是Unix程序员的法宝。,互联网大融合与自由软件运动:1981-1991,1983年后,随着BSD植入了TCP/IP,Unix文化和ARPANET文化开始融合。既然两种文化都由同一类人构成,一旦沟通环节到位,两种文化的融合就水到渠成。ARPANET黑客学到了C语言,用起了管道、过滤器和shell之类的行话。Unix程序员学到了TCP/IP,也开始互称“黑客”。1983年,木星项目的取消虽然葬送了PDP-10的前途,却加速了两种文化融合的进程。到1987年,这两种文化己经完全融合在一起。,Richard M.Stallman(RMS),Richard M.Stallman早在1970年代晚期就已经证明他是当时最有能力的程序员之一。Emacs编辑器就是他众多发明中的一项。1983年木星项目的取消仅仅只是宣告了麻省理工学院人工智能实验室文化的最终解体。但RMS觉得自己被逐出了黑客的伊甸园,他把这一切都归咎于专有软件。于是1983年,Stallman创建了GNU项目,致力于编一个完全自由的OS,实现一个仿Unix操作系统成了他追求的战略目标。RMS早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他们对代码共享的使命感甚至比那些有更多Unix背景的人更强烈。1985年,RMS发表了GNU宣言。在宣言中,他有意从1980年之前的ARPANET黑客文化价值中创造出一种意识形态包括前所未见的政治伦理主张、自成体系而极具特色的论述以及激进的改革计划。RMS的目标是将后1980的松散黑客社群变成一台有组织的社会化机器以达到一个单纯的革命目标。RMS宣言引发的争论至今仍存于黑客文化中。RMS这个魅力超凡又颇具争议的人物本身已经成为了一个文化英雄。,通用公共许可证(GPL),为了追求这个目标,RMS将“自由软件(free software)”这一术语大众化,这是将整个黑客文化的产品进行标识的首次尝试。他撰写了“通用公共许可证(General Public License,GPL)”。“GPL”是一种描述,也是为黑客进行文化标识的一个尝试。在RMS之前,黑客文化中的人们彼此当作“同路人”,说着同样的行话,但没人费神去争辩“黑客”是什么或者应该是什么。在他之后,黑客文化更加有自我意识。RMS的论点甚至影响了那些对其理论持怀疑态度的黑客的行为。然而,尽管他花了不下十五年的苦功夫,后1980黑客文化却从未统一在他的理想之下。,Linux和实用主义者的应对:1991-1998,Linus Torvalds巧妙地跨越了GPL和反GPL的派别之争。他利用GNU工具包搭起了自创的Linux内核,用GPL的传染性质保护它,但拒绝认同RMS许可协议反映的思想体系。Torvalds明确表示他认为自由软件通常更好,但他偶尔也用专有软件。即使在他自己的事业中,他也拒绝成为狂热分子。这一点极大地吸引了大多数黑客。Torvalds令人愉快的实用主义及灵活而低调的行事风格,促使黑客文化在1993-1997年间取得了一连串令人惊奇的胜利,不仅仅在技术上的成功,还让围绕Linux操作系统的发行、服务和支持产业有了坚实的开端。结果,他的名望和影响也一飞冲天,成了互联网时代的英雄,Linux之父。到1995年为止,他只用了四年时间就在整个黑客文化界声名显赫,而RMS为此花了十五年。但Torvalds的成功离不开RMS的奠基工作。,Linux和实用主义者的应对:1991-1998,1991至1995年间,Linux从概念型的0.1版本内核原型,发展成为能够在性能和特性上均堪媲美专有Unix的操作系统,并且在连续正常工作时间等重要统计数据上打败了这些Unix中的绝大部分。1995年,Linux找到了自己的杀手级应用开源的web服务器Apache。Apache出众地稳定和高效。很快,运行Apache的Linux机器成了全球ISP平台的首选。约60%多的网站选用Apache,轻松击败了其它专有型竞争对手。Torvalds未作的一件事就是提供新的思想体系一套关于黑客行为的新理论基础或繁衍神话,以及一套吸引黑客文化圈内圈外人士的正面论述,以消弭RMS对知识产权的不友善。当有人(1997年)试图探寻为什么Linux开发没有在几年前崩溃时,偶然地填补了这个空白:“如果有足够多眼睛的关注,所有的bug都无处藏身”。这种新思潮在1998年初促使网景公司公布了其Mozilla浏览器的源码。事实证明,此事无论对黑客文化的历史还是对Unix的历史都是一个转折点。,7 开源运动:1998年及之后,到1998年Mozilla源码公布的时候,黑客社区其实算是一个众多派系或部落的松散集合,包括了Richard stallman的自由软件运动、Linux社区、Perl社区、Apache社区、BSD社区、X开发者、互联网工程工作组(IETF),还有很多其它组织。这些派系相互交叠,一个开发者很可能同时隶属两个或更多组织。一个部落的凝聚力可能来自他们维护的代码库,或是一个或多个有着超凡影响力的领导者,或是一门语言、一个开发工具,或是一个特定的软件许可,或是一种技术标准,或是基础结构某个部分的管理组织。1995年后,Linux扮演了一个特殊的角色:既是社区内多数软件的统一平台,又是黑客中最被认可的品牌。Linux社区随之显现了兼并其它亚部落的倾向甚至包括争取并吸纳一些专有Unix相关的黑客派系。整个黑客文化开始凝聚在一个共同目标周围:尽力推动Linux和集市(bazaar)开发模式向前发展。这是因为后1980黑客文化已经深深植根于Unix,新目标成了Unix传统争取胜利的不成文纲要。,开源运动:1998年及之后,Netscape开放源码的宣告和Linux的新近崛起产生的激励效应远远超越了Unix社区和黑客文化。许多其它(比如Java)开发者喜欢上了开源运动中的新生事物,于是就像此前跟随Netscape加入Java一样,又跟随它加入了Linux和开源运动。开源行动的积极分子热烈欢迎来自各个领域的移民潮。老一辈Unix人也开始认同新移民的梦想。唯一的例外是Richard Stallman和自由软件运动。“开源”明显要用一个意识形态中性的公众标签来取代Stallman钟爱的“自由软件”。新标签无论对于历史上一贯反对“自由软件”的BSD黑客之类的团体,还是对于不愿在GPL是非之争中表态的人均能接受。Stallman尝试着接受这个术语,但随后又以其未能代表其思想的核心为由而排斥它。从此,自由软件运动坚持同“开源”划清界限,这也许成了2003年黑客文化中最重大的政治分歧。“开源”背后另一个(也是更重要的)意图是希望将黑客社区的方法以一种更亲和市场、更少对抗性的方式介绍给外部世界(尤其是主流商用市场)。幸运的是,在这方面,它取得了绝对成功,这也重新激起了人们对其根源Unix传统的兴趣。,8 Unix的历史教训,在Unix历史中,最大的规律是:距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。对今后的教训就是:过度依赖任何一种技术或者商业模式都是错误的。相反,保持软件及其设计传统的的灵活性才是长存之道。Unix要繁荣,就必须继续采用吸纳低价而灵活的方案的诀窍。借此,我们可以想想微软,想想我们。,9 Unix系统的演变(综述),自从1969年出生以来,至今,它已经历了一个从开发、发展、不断演变和获得广泛应用以致逐渐成为工作站等小型机以上系统的标准操作系统的演变过程。1972年开始,Unix系统已移植到PDP-10系列机上;1974年正式发表在美国计算机学会杂志ACM上;1975年发表的第6版中引入多道技术;1979年,贝尔实验室将其移植到类似于IBM370的32位机Interdata8/32上。从而公布了得到西部电气公司正式承认的Unix第7版。1980年贝尔实验室公布了为VAX-11/780机编写的操作系统Unix 32 V。,1982年,AT&T又相继公布了Unix System E的3.0,4.0和5.0等版本。从此,Unix系统的发展走上了以AT&T和伯克利分校二者为主开发的道路。1983年AT&T推出了Unix System V和几种微处理机上的Unix。同年,伯克利分校公布了BSD4.2版。1984年,IBM公司公布了IBM/PC上的Unix。1985年微软将Unix改造为用于16位PC机操作系统Xenix.1985年,cray公司公布了用于超大型机的Unix系统。,1986年,Unix System V发展到了它的修订版Res2.1和Res3.0;BSD4.2步升级到BSD4.3Sunmicro公司开发了基于BSD4.2/4.3的SUN工作站操作系统SUNOS,Solaris。MIT又在Unix的基础上,开发出了近年来已成为工作站图形界面标准的X-window系统。至此各大型厂家的小型机以上的系统大都配置Unix或类Unix的操作系统。且各不相同,互相攻击。,10 Unix系统的标准化,在Unix系统不断发展的背景下,美国IEEE(美国电气及电子工程师学会Institute of Electrical and Electronics Engineers)组织成立了POSIX(可移植操作系统接口标准Portable Operation System Interface)委员会专门从事Unix的标准化工作。POSIX委员会完成了Unix系统标准化,并按其定义重新实现Unix。标准Unix意味着一个可以运行Unix应用软件的平台,它为用户提供一个标准的用户界面,而不在于系统内部如何实现。,11 Unix操作系统进一步发展,在标准化基础上,Unix System V Res 4.0版以及BSD4.3版等统一了用户界面的Unix操作系统相继推出,使Unix系统的开发工作进入了一个新的阶段:面向对象设计思想的引入;商用系统:IBM AIX、SUN Solaris、SCO Unix OpenServer、HP UX;Linux(百种以上):RedHat,Federa,Slackware,SuSE,Turbo,红旗,,12 Unix系统的特点,(1)Unix系统是一个可供多用户同时操作的会话式分时操作系统。(2)两种用户友好界面或接口:命令和系统调用。(3)Unix系统具有一个可装卸的分层树型结构文件系统。该文件系统具有使用方便和搜索简单等特点。(4)Unix系统把所有外部设备都当作文件,并分别赋予它们对应的文件名。(5)Unix系统核心程序的绝大部分源代码和系统上的支持软件都用C语言编写。且Unix系统是一个开放式系统。(6)丰富的开发工具、强大的网络功能和稳定的系统性能。,13 Unix系统结构,Unix系统结构可分为三层。最内层为Unix核心(kernel)。最外层是用户程序。中间层则是shell命令解释层、实用程序、库函数等。Unix系统结构图如下:,14 Unix的命令控制界面,Unix具有丰富的操作命令,这些命令都通过shell提供给用户使用。shell是Unix系统为用户提供的键盘命令解释程序的集合,是人机交互的桥梁;Unix shell命令每个都有返回值,输入输出可以重定向,输出结果也直接赋给shell变量,为用户提供了功能强大的shell编程功能;Unix通过shell向用户提供丰富的命令。根据