Unix系统和软件开发环境

上传人:沈*** 文档编号:132355591 上传时间:2022-08-08 格式:PPT 页数:85 大小:270KB
收藏 版权申诉 举报 下载
Unix系统和软件开发环境_第1页
第1页 / 共85页
Unix系统和软件开发环境_第2页
第2页 / 共85页
Unix系统和软件开发环境_第3页
第3页 / 共85页
资源描述:

《Unix系统和软件开发环境》由会员分享,可在线阅读,更多相关《Unix系统和软件开发环境(85页珍藏版)》请在装配图网上搜索。

1、Unix系统和软件开发环境Unix系统与软件开发环境Unix系统和软件开发环境教学目的与考核方式 目的:带领同学们进入一个计算机应用与开发的新领域:Unix/Linux 学完后能胜任Unix/Linux领域的管理与开发工作 考核方式:考试(笔试+机试)学时:周4(218周)课程内容:Unix系统与软件开发环境 Unix/Linux系统知识(请准备笔记本,做好笔记)。开发部分,参考Unix环境高级编程请做好笔记。要做好实验,要通过实验理解教材。Unix系统和软件开发环境关于教材 没有非常合适的教材 使用:Linux操作系统 参考书 Unix环境高级编程,W Richard Stevens,尤晋元

2、等译,机械工业 Linux程序设计,Neil Matthew等编,杨晓云等译,机械工业,人民邮电 Unix系统编程,Kay A.Ribbins等编,陈娟等译,机械工业 Unix编程艺术,Eric S.Raymond等编,姜宏等译,电子工业 Red Hat Linux 9应用基础教程,梁如军,机械工业 Linux下的C编程,贾明等编,人民邮电 Unix网络编程,W Richard Stevens,施振川等译,清华大学Unix系统和软件开发环境课程安排及学习方式 知识点及理论学时(38)Unix/Linux基本知识 Unix/Linux管理与配置 Linux网络服务及管理 Unix系统软件开发环境

3、 实验(30)Unix/Linux基础与基本操作 Unix/Linux管理与配置 Unix系统软件开发 理论与实践相结合 Unix/Linux知识学习 实践与应用 为就业和今后发展打基础Unix系统和软件开发环境课程概览简介与入门知识shell与命令界面文件系统及管理用户与口令管理进程管理Unix系统常用命令设备管理网络、网络服务及应用内核与系统管理系统安装shell编程文件I/O标准I/O高级I/O文件和目录进程关系、信号与进程控制进程间通讯(IPC)C/S,C/M/S与守候进程Unix系统和软件开发环境第一章 简介 Unix/Linux 发展历程 Unix/Linux 的特点与发展趋势 U

4、nix/Linux 的厂家与版本 Unix/Linux 应用简介 Unix的文化与哲学Unix系统和软件开发环境1.1 Unix发展简史Unix系统和软件开发环境1 Unix的起源及历史1969-1995 Unix的祖辈是小而简单的兼容分时系统(CTSS:Compatible Time-Sharing System),也算是曾经实施过的分时系统的第一代或者第二代了。Unix的父辈是颇具开拓性的Multics项目,该项目试图建立一个具备众多功能的information utility,能够很漂亮地支持大群用户对大型计算机的交互式分时使用。可是,Multics设计得太完美了,最后因不堪自身重负而崩

5、溃了。但Unix却正是从它的废墟中破壳而出的。最初的Unix就是一个第三系统。小型实验原型系统的后继产品往往备受令人讨厌的“第二版效应”折磨。由于迫切希望把所有首次开发时遗漏的功能都添加进去,往往导致设计十分庞大、过于复杂。其实,还有一个因不常遇到而鲜为人知的“第三版效应”:有时候,在第二系统不堪自身重负而崩溃之后,有可能返朴归真,走上正道。Unix系统和软件开发环境2 创世纪:1969-1971 Unix于1969年诞生于贝尔实验室的计算机科学家Ken Thompson的头脑中。(Thompson曾经是Multics项目的研究人员。)当时代计算机硬件的原始程度:那时最强大的机器所拥有的计算能

6、力和内存还不如现在一个普通的手机。所谓的大硬盘容量也不超过1M。视频显示终端才刚刚起步,六年以后才得到广泛应用。最早分时系统的标准交互设备就是ASR-33电传打字机。Unix命令简洁、“少说多做”的传统正是从这里开始的。Unix系统和软件开发环境创世纪:1969-1971 当贝尔实验室(Bell Labs)从Multics研究联盟中退出时,Ken Thompson带着从Multics激发的灵感留了下来。他甚至没能留下一台机器来玩自己编写的“星际旅行(Space Travel)”。Unix就在一台废弃的PDP-7小型机上问世了。这台PDP-7成为了“星际旅行”的游戏平台和Thompson关于操作

7、系统设计思路的试验场。Unix系统和软件开发环境创世纪:1969-1971 Dennis Ritchie(Unix的合作发明者和C语言的发明者)、Doug McIlroy和其他一些同事,已经习惯了Multics环境下的交互计算方式,不愿意放弃这一能力。Thompson的PDP-7操作系统给了他们一把救生稻草。Ritchie评述道:“我们希望保留的不仅仅是一个良好的编程环境,还包括一种能够形成伙伴关系的系统。Unix系统和软件开发环境创世纪:1969-1971 Thompson和Ritchie“星际旅行”的实现引起了关注。Thompson和Ritchie为支持游戏开发而在PDP-7上编制的实用程

8、序成了Unix的核心。直到1970年才产生Unix这个名字。最初的缩写是“UNICS”(Uniplexed Information and Computing Service),Ritchie后来称之为“一个有点反叛Multics味道的双关语”,因为它的前身是Multics(MULTiplexed Information and Computing Service)。Unix系统和软件开发环境创世纪:1969-1971 Unix的第一功,是1971年为贝尔实验室的专利部门进行“文字处理”的支持工作。Unix在贝尔实验室计算群落中的重要而永久地位由此确立,并且开创了Unix历史的下一个主旋律与文

9、档格式化、排版和通讯工具的紧密结合。Unix的轻装开发和方法上不拘一格的传统与生俱来。既使在最早期,PDP-7 Unix已经拥有现今Unix的诸多共性,提供的编程环境也比当时读卡式批处理大型机的环境要舒服得多。Unix几乎可以称得上第一个能让程序员直接坐在机器旁,一边编程一边测试的联机系统。Unix的整个发展进程中都能吸引那些不堪忍受其它操作系统局限性的程序员自愿为它进行开发,这也一直是Unix不断拓展其能力的模式。Unix系统和软件开发环境3 出埃及记:1971-1980 最初的Unix用汇编语言写成,应用程序用汇编语言和解释型语言B混合编写。B语言的优点在于小巧,能在PDP-7上运行,但是

10、作为系统编程语言还不够强大,所以Dennis Ritchie给它增加了数据类型和结构。1971年起从B语言进化出了C语言。1973年,Thompson和Ritchie成功地用C语言重写了整个Unix系统。这是一个大胆的举措那时为了最大程度地利用硬件性能,系统编程都通过汇编器来完成。与此同时,可移植操作系统的概念几乎鲜为人知。可是有了C之后,可移植操作系统“已经”变成了现实。1979年,Ritchie这么写:“Unix的成功很大程度上源自其以高级语言作为表述方式所带来的可读性、可改性和可移植性”。Unix系统和软件开发环境出埃及记:1971-1980 1974年在美国计算机通信(Communic

11、ations of the ACM)上发表的一篇论文中Ritchie-Thompson第一次公开展示了Unix。文中作者描述了Unix前所未有的简洁设计,并报告了600多例Unix应用(这些都是安装在即便按照那个年代的标准,性能都算很低的机器上,但是(正如Ritchie和Thompson所写)“性能的局限不仅成就了经济性,而且鼓励了设计的简约”。)CACM论文发表后,全球各个研究实验室和大学都嚷着要亲身体验Unix。但根据1958年为解决反托拉斯案例达成的和解协议,AT&T(贝尔实验室的母公司)被禁止进入计算机相关的商业领域。所以,Unix不能够成为一种商品。实际上,根据和解协议的规定,贝尔实

12、验室必须将非电话业务的技术许可给任何提出要求的人。于是,Ken Thompson开始默默回应那些请求,将磁带和磁盘一包包地寄送出去。Unix的发展迅速笼罩了一层反传统文化的氛围。Unix黑客们沉浸在同时编织未来和编写系统的狂欢中。Unix系统和软件开发环境出埃及记:1971-1980 那些日子的兴奋从Douglas Comer的话语中可见一斑:许多大学都对Unix作出过贡献:多伦多大学计算机系发明了200dpi的打印机/绘图仪,并且开发了用打印机模拟照相排版机的软件;耶鲁大学的计算机专家和学生们改进了Unix的shell;普渡大学的电子工程系对Unix的性能作了重要改进,推出了支持大量用户的U

13、nix版本,还推出了最早的Unix网络之一;加州大学伯克利分校的学生开发了新shell和许多小型实用工具。1970年代后期贝尔实验室发布Unix V7版本时,该系统解决了许多部门的运算问题,也综合了许多高校的创意,最终诞生了一个更强大的系统。思想潮流开始了新一轮循环,从学术界流向工业实验室,然后又回到学术界,最后流向了不断增加的商业用户。现代Unix程序员公认的第一个完全意义上的Unix是1978年发布的V7版本。Unix系统和软件开发环境出埃及记:1971-1980 第一代Unix用户群一年前就已形成。此时,Unix用于支撑贝尔系统(Bell System)的所有操作,并且传播到高校中,甚至

14、远至澳大利亚在那里,John Lions对V6版源码的注释成了Unix内核的第一个正式文档Lions Unix源代码分析。许多资深的Unix黑客仍然珍藏着一份拷贝。Lions Unix源代码分析:Lions的书是地下出版界轰动一时的大事。由于侵犯版权等诸如此类的问题,该书不能在美国出版,所以大家就你拷给我、我拷给你。在那个时代,若没有Lions的书,你就当不成内核黑客。Unix系统和软件开发环境出埃及记:1971-1980 Unix产业也初露端倪。1978年,第一个Unix公司(the Santa Cruz Operation,SCO)成立,同年售出第一个商用C编译器。1980年,西雅图一家还

15、不起眼的软件公司微软也加入到Unix游戏中,他们把AT&T版本移植到微机上,取名为XENIX来销售。但是微软把Unix作为一个产品的热情并没有持续多久(尽管直到1990年左右,微软的大部分内部开发工作都用的是Unix)。Unix系统和软件开发环境4 TCP/IP和Unix内战:1980-1990 在Unix的发展过程中,加州大学伯克利分校很早就成为唯一最重要的学术热点。伯克利分校早在1974年就开始了对Unix的研究,而Ken Thompson利用1975-1976的年休在此教学,更对Unix的研究注入了强劲活力。1977年,当时还默默无闻的伯克利毕业生Bill Joy管理的实验室发布了第一版

16、BSD。到1980年,伯克利分校成了为这个Unix变种积极作贡献的高校子网的核心。有关伯克利Unix(包括vi编辑器)的创意和代码不断从伯克利反馈到贝尔实验室。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 1980年,国防部高级研究计划局(DARPA,Defense Advanced Research Projects Agency)需要请人在Unix环境下的VAX机上实现全新的TCP/IP协议栈。DARPA选择了伯克利Unix作为平台显然是因为可以毫无阻碍地拿到它的源码。伯克利计算机科学研究组当时拥有天时地利,还有最强大的开发工具;而DARPA的合作无疑成为Uni

17、x历史上自诞生以来最关键的转折点。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文化自边缘开始融合,这种发展最终使两者都免遭灭亡。Uni

18、x系统和软件开发环境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从硬件中剥离出来单独出售。接下来的十年中,盖茨利

19、用这个非他所写的程序变成了超级亿万富翁,精明的商业策略更是让微软垄断了桌面计算机市场。那时,没什么人能看出微软会多么成功。因为IBM PC-1硬件条件不足以来运行Unix,所以Unix人群几乎没在乎这个产品。尽管,DOS2.0光芒能盖过CP/M,主要因为微软的合创者Paul Allen在DOS2.0中融入了一些Unix的特征,包括子目录和管道等。作为产品的XENIX很快就弃而不用了,最终卖给了SCO公司。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 还有一件事,那就是1982年SUN微系统公司的出世。SUN微系统公司的创立者Bill Joy、Andreas Bech

20、tolsheim和Vinod Khosla打算制造出一种内置网络功能的Unix梦幻机器。他们综合了斯坦福大学设计的硬件和伯克利分校开发的Unix,取得了辉煌的成功,开创了工作站产业。随着Sun公司越来越像传统商家,Unix大树上的这根分支源码来源的树枝逐渐枯萎。而当时没人在意这一点,因为伯克利分校仍然随同源码一起销售BSD;各个高校也依然同贝尔实验室交换代码,看起来Sun公司对Unix的商业化似乎再好不过了。此时,C语言也有望被选为Unix世界外的系统编程语言。仅仅五年左右的时间,C语言就几乎让机器码汇编语言完全失去了作用。到了九十年代早期,C和C+不仅统治了系统编程领域,而且成为了主流,到九

21、十年代晚期,其他所有传统编程语言实际上都已经过时了。Unix系统和软件开发环境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、

22、QNX、Idis和运行在Sritek PC子板上的移植版本,但是System V和BSD版本仍然没有Unix移植。IBM PC上的这些Unix通用操作系统无一取得显著的商业成功,但表明了市场迫切需求运行Unix的低价硬件。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 1983年,美国司法部在针对AT&T的第二起反托拉斯诉讼中获胜,并拆分了贝尔系统,这时Sun公司己经取得了成功。这次判决将AT&T从1958年的禁止将Unix产品化的和解协议中解脱了出来。AT&T马上忙不迭地将Unix System V商业化(SCO)这一举措差点扼杀了Unix。很多人认为这是一个好消息

23、,没有人意识到,Unix的产业化会破坏Unix源码的自由交流。因为唯恐宫司上身,非法交易的Unix源码也越来越乏人问津。来自高校的贡献随之开始枯竭。更糟的是:刚刚进入Unix市场的几家大公司立马犯下了重大的战略性错误,其中之一就是试图通过产品差异化来寻求有利地位。这个策略导致了各种Unix接口的分歧,抹杀了Unix的跨平台兼容性,造成了Unix市场分割。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 事实上,AT&T拆分后的数年内,Unix社区却在忙着Unix大战的第一阶段 System V Unix和BSD Unix之间的内部争吵。争吵分成不同的层面,有些属于技术层

24、面,也有文化层面。AT&T拆分当年发生的另一件事对Unix产生了更深远的影响。程序员兼语言学家Larry Wall发明了patch实用程序。这意味着Unix开发人员之间可通过传送补丁进行协作,而不必传送整个代码文件。这种方式在1990年后让Unix获得新生 运用这个工具,基于共有源码库的开发流可以分开、并行、最后合拢。patch程序比其它任何单一工具都更能促进Internet上的协作开发。现在的所有操作系统无一不支持patch实用程序。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 1985年,Intel第一枚386芯片下线了。它具有用平面地址空间寻址4G内存的能力。

25、这是条大新闻,因为这意味着占据主导地位的intel家族终于有了一款无需作出痛苦妥协就能运行Unix的微处理器。对Sun公司和其它工作站厂商来说,这真是不祥之兆。同年,Richard Stallman发表了GNU宣言(the GNU manifesto),并发起了自由软件基金会(Free Software Foundation)。同年,在一项与此不相干的开发行动中,X window系统的创始人发布了X window的源码,而无需版税、约束和授权。这项决策的直接结果就是X window成为不同Unix厂商之间合作的安全中立区,并挫败了专属的竞争对手,成为了Unix的图形引擎。Unix系统和软件开发

26、环境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编译器的第

27、一版问世,到1987年底,GNU工具包的核心部分编辑器、编译器、调试器以及其它基本的开发工具等一一就位。同时,X window系统也开始在相对低廉的工作站上露面了。这些因素都为20世纪90年代的Unix开源发展提供了利器。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 同样是在1986年,PC技术挣脱了IBM的掌控。最积极进取者康柏(Compaq),发布了第一款386机器,靠这张牌打败了IBM。虽然主频只有16MHz,但是跑起了Unix。这是第一款可以叫Unix机器的PC。这会儿已经能够想象Stallman的GNU项目可以和386机器配合而制造出Unix工作站,它比当

28、时任何方案都要便宜一个数量级,但当时没人想到这步棋。AT&T和Sun的联盟以及以POSIX为核心的技术标准的发展,最终弥合了System V和BSD Unix之间的裂痕。当二线商家(IBM、DEC、HP等)创建开放软件基金会(Open software Foundation)并结成盟友和以“Unix国际”为代表的“AT&T/Sun轴心”对抗时,Unix内战的第二阶段开始了。Unix系统和软件开发环境TCP/IP和Unix内战:1980-1990 这段时间中,微软从家庭和小型商用市场赚了数十亿美元的钱,而争战不休的Unix各方却从未决意涉足这些市场。1990年,Windows 3.0巩固了微软的

29、统治地位,为微软荡平并最终垄断桌面应用市场创造了条件。1989年到1993年是Unix的中世纪。当时,似乎Unix社群所有的梦想都破灭了。相互争斗的战事已使专有Unix产业衰落得像个吵闹的肉店,无力振起挑战微软的雄心。GNU项目没能开发出自由的Unix内核,尽管从1985年GNU就不断作出此承诺。PC技术被无情地商业化了。1970年代的Unix黑客先锋们人到中年,步履开始蹒跚。硬件便宜了,但Unix还是太贵。人们幡然醒悟:过去的IBM垄断让位于现在的微软垄断,而微软设计糟糕的软件像浊流一样,围着我们越涨越高。Unix系统和软件开发环境5 反击帝国:1991-1995 1990年,William

30、 Jolitz把BSD移植到了386机器上,这是黑暗中的第一缕曙光。向386移植BSD之所以可能,是由于伯克利黑客Keith Bostic一定程度上受Stallman影响。但是,Jolitz在1991年底退出386-BSD项目,并毁掉了自己的成果。公认原因是他希望将其代码以源码形式无限制地发布,但当项目的企业赞助商选择了更专有的授权模式时,他火了。1991年8月,当时默默无闻的芬兰大学生Linus Torvalds宣布了Linux项目。据称Torvalds最主要的激励是学校里用的Sun Unix太贵了。但是386-BSD直到1992年早些时候才下线,而此时Linux第一版已经发布好几个月了。T

31、orvalds还说,要是早知道有BSD项目,他就会加入BSD组而不是自己做一个。Unix系统和软件开发环境反击帝国:1991-1995 又过了两年,经历了1993-1994年的互联网大爆炸,Linux和开源BSD的重要性才为整个Unix世界所了解。与此前各种版本的Unix开发相比,Linux和BSD的开发相当不同。它们植根于互联网,依赖分布式开发和patch工具,通过Email和Usenet新闻组招募开发者。互联网的大规模市场推广,既增加了潜在开发者的数量,又降低了分布式开发的处理成本,这些影响可从XFree86之类的项目上看出。1992年诞生的第一版XFree86赋予了Linux和BSD作为

32、一直缺乏的图形用户界面引擎。XFree86利用Internet为中心的模式建立了一个比官方X联盟更有效的开发组织。Unix系统和软件开发环境反击帝国:1991-1995 到1993年末,Linux已经具备了Internet能力和X系统。整套GNU工具包从一开始就内置其中,以提供高质量的开发工具。除此之外,Linux好像一个魅力聚宝盆,囊括了二十年来分散在十几种专有Unix平台上的开源软件之精华。尽管当时Linux内核还是测试版(0.99),但稳定性已经让人刮目相看。Linux上软件之多、质量之高,已经达到一个产品级操作系统的水准。在旧学派的Unix开发者中,一部分脑筋活络的人开始注意到,做了多

33、年的平价Unix之梦从一个意想不到的方向悄然成真。它既不是来自AT&T,也不是来自Sun,或者任何一个传统厂商,也不是出于学术界有组织的工作成果。它就这样从Internet的石头缝中跳了出来,浑然天成,以令人惊奇的方式重新规划拼装了Unix的传统元素的Linux。Unix系统和软件开发环境反击帝国:1991-1995 另一方面,商业运作继续进行。1992年AT&T抛售了其手中Sun公司的股份,然后在1993年把Unix系统实验室(Unix Systems Laboratories)卖给了Novell;Novell又于1994年将Unix商标转手给X/Open标准组(X/open standar

34、ds group);同年AT&T和Novell加入了OSF(开放软件基金会),Unix之战尘埃落定。1995年,SCO从Novell手中买下了UnixWare(以及最初Unix源码的权利)。1996年,X/Open和OSF合并,创立了一个大型Unix标准组。2000年SCO把UnixWare和原创的Unix源码包出售给了Caldera(一家Linux发行商)。整个产业变迁终告结束。但1995年后,Unix的故事就成了开源运动的故事。Unix系统和软件开发环境6 黑客的起源和历史:1961-1995 与Unix传统的历史交织在一起的则是另一种隐性文化,一种更难归类的文化。这种传达着一个有关美和优

35、秀设计的价值体系:里面有它的江湖和侠客。这些人部分与Unix文化交迭,部分源于它处。人们把这种文化称为“黑客文化”,从1998年起,这种文化已经很大程度上和计算机行业出版界所称的“开源运动”重合了。Unix传统、黑客文化以及开源运动间的关系微妙而复杂。三种隐性文化背后往往是同一群人。但是,从1990年以来,Unix的故事很大程度上成了开源世界的黑客们改变规则、从保守的专有Unix厂商手中夺取主动权的故事。因此,今天Unix身后的历史,有一半就是黑客的历史。Unix系统和软件开发环境游戏在校园的林间:1961-1980 黑客文化的根源可以追溯到1961年,这一年MIT购买了第一台PDP-10小型

36、机,吸引了一帮好奇的学生带着一种好玩的心态摆弄这台设备。他们最著名的成就是“太空大战(SpaceWar)”1969年后,MIT AI实验室和斯坦福、BBN 公司、卡内基.梅隆大学以及其它顶级计算机科学研究实验室通过早期的ARPANET联上了网。研究人员和学生们第一次尝到了快速网络联接消除了地域限制的甜头,一种类似共享文化的东西开始成形。从技术性而言,早期的黑客文化大都基于PDP-10小型机。从社会性而言,他们年轻,天资过人,献身编程达到痴迷的地步,决不墨守成规后来被人们唤做“极客(geek)”。协作式开发和源码共享是Unix程序员的法宝。Unix系统和软件开发环境互联网大融合与自由软件运动:1

37、981-1991 1983年后,随着BSD植入了TCP/IP,Unix文化和ARPANET文化开始融合。既然两种文化都由同一类人构成,一旦沟通环节到位,两种文化的融合就水到渠成。ARPANET黑客学到了C语言,用起了管道、过滤器和shell之类的行话。Unix程序员学到了TCP/IP,也开始互称“黑客”。1983年,木星项目的取消虽然葬送了PDP-10的前途,却加速了两种文化融合的进程。到1987年,这两种文化己经完全融合在一起。Unix系统和软件开发环境Richard M.Stallman(RMS)Richard M.Stallman早在1970年代晚期就已经证明他是当时最有能力的程序员之一

38、。Emacs编辑器就是他众多发明中的一项。1983年木星项目的取消仅仅只是宣告了麻省理工学院人工智能实验室文化的最终解体。但RMS觉得自己被逐出了黑客的伊甸园,他把这一切都归咎于专有软件。于是1983年,Stallman创建了GNU项目,致力于编一个完全自由的OS,实现一个仿Unix操作系统成了他追求的战略目标。RMS早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他们对代码共享的使命感甚至比那些有更多Unix背景的人更强烈。1985年,RMS发表了GNU宣言。在宣言中,他有意从1980年之前的ARPANET黑客文化价值中创造出一种意识形态包括前所未见的政治伦理主张、自成体系而极

39、具特色的论述以及激进的改革计划。RMS的目标是将后1980的松散黑客社群变成一台有组织的社会化机器以达到一个单纯的革命目标。RMS宣言引发的争论至今仍存于黑客文化中。RMS这个魅力超凡又颇具争议的人物本身已经成为了一个文化英雄。Unix系统和软件开发环境通用公共许可证(GPL)为了追求这个目标,RMS将“自由软件(free software)”这一术语大众化,这是将整个黑客文化的产品进行标识的首次尝试。他撰写了“通用公共许可证(General Public License,GPL)”。“GPL”是一种描述,也是为黑客进行文化标识的一个尝试。在RMS之前,黑客文化中的人们彼此当作“同路人”,说着

40、同样的行话,但没人费神去争辩“黑客”是什么或者应该是什么。在他之后,黑客文化更加有自我意识。RMS的论点甚至影响了那些对其理论持怀疑态度的黑客的行为。然而,尽管他花了不下十五年的苦功夫,后1980黑客文化却从未统一在他的理想之下。Unix系统和软件开发环境Linux和实用主义者的应对:1991-1998 Linus Torvalds巧妙地跨越了GPL和反GPL的派别之争。他利用GNU工具包搭起了自创的Linux内核,用GPL的传染性质保护它,但拒绝认同RMS许可协议反映的思想体系。Torvalds明确表示他认为自由软件通常更好,但他偶尔也用专有软件。即使在他自己的事业中,他也拒绝成为狂热分子。

41、这一点极大地吸引了大多数黑客。Torvalds令人愉快的实用主义及灵活而低调的行事风格,促使黑客文化在1993-1997年间取得了一连串令人惊奇的胜利,不仅仅在技术上的成功,还让围绕Linux操作系统的发行、服务和支持产业有了坚实的开端。结果,他的名望和影响也一飞冲天,成了互联网时代的英雄,Linux之父。到1995年为止,他只用了四年时间就在整个黑客文化界声名显赫,而RMS为此花了十五年。但Torvalds的成功离不开RMS的奠基工作。Unix系统和软件开发环境Linux和实用主义者的应对:1991-1998 1991至1995年间,Linux从概念型的0.1版本内核原型,发展成为能够在性能

42、和特性上均堪媲美专有Unix的操作系统,并且在连续正常工作时间等重要统计数据上打败了这些Unix中的绝大部分。1995年,Linux找到了自己的杀手级应用开源的web服务器Apache。Apache出众地稳定和高效。很快,运行Apache的Linux机器成了全球ISP平台的首选。约60%多的网站选用Apache,轻松击败了其它专有型竞争对手。Torvalds未作的一件事就是提供新的思想体系一套关于黑客行为的新理论基础或繁衍神话,以及一套吸引黑客文化圈内圈外人士的正面论述,以消弭RMS对知识产权的不友善。当有人(1997年)试图探寻为什么Linux开发没有在几年前崩溃时,偶然地填补了这个空白:“

43、如果有足够多眼睛的关注,所有的bug都无处藏身”。这种新思潮在1998年初促使网景公司公布了其Mozilla浏览器的源码。事实证明,此事无论对黑客文化的历史还是对Unix的历史都是一个转折点。Unix系统和软件开发环境7 开源运动:1998年及之后 到1998年Mozilla源码公布的时候,黑客社区其实算是一个众多派系或部落的松散集合,包括了Richard stallman的自由软件运动、Linux社区、Perl社区、Apache社区、BSD社区、X开发者、互联网工程工作组(IETF),还有很多其它组织。这些派系相互交叠,一个开发者很可能同时隶属两个或更多组织。一个部落的凝聚力可能来自他们维护

44、的代码库,或是一个或多个有着超凡影响力的领导者,或是一门语言、一个开发工具,或是一个特定的软件许可,或是一种技术标准,或是基础结构某个部分的管理组织。1995年后,Linux扮演了一个特殊的角色:既是社区内多数软件的统一平台,又是黑客中最被认可的品牌。Linux社区随之显现了兼并其它亚部落的倾向甚至包括争取并吸纳一些专有Unix相关的黑客派系。整个黑客文化开始凝聚在一个共同目标周围:尽力推动Linux和集市(bazaar)开发模式向前发展。这是因为后1980黑客文化已经深深植根于Unix,新目标成了Unix传统争取胜利的不成文纲要。Unix系统和软件开发环境开源运动:1998年及之后 Nets

45、cape开放源码的宣告和Linux的新近崛起产生的激励效应远远超越了Unix社区和黑客文化。许多其它(比如Java)开发者喜欢上了开源运动中的新生事物,于是就像此前跟随Netscape加入Java一样,又跟随它加入了Linux和开源运动。开源行动的积极分子热烈欢迎来自各个领域的移民潮。老一辈Unix人也开始认同新移民的梦想。唯一的例外是Richard Stallman和自由软件运动。“开源”明显要用一个意识形态中性的公众标签来取代Stallman钟爱的“自由软件”。新标签无论对于历史上一贯反对“自由软件”的BSD黑客之类的团体,还是对于不愿在GPL是非之争中表态的人均能接受。Stallman尝

46、试着接受这个术语,但随后又以其未能代表其思想的核心为由而排斥它。从此,自由软件运动坚持同“开源”划清界限,这也许成了2003年黑客文化中最重大的政治分歧。“开源”背后另一个(也是更重要的)意图是希望将黑客社区的方法以一种更亲和市场、更少对抗性的方式介绍给外部世界(尤其是主流商用市场)。幸运的是,在这方面,它取得了绝对成功,这也重新激起了人们对其根源Unix传统的兴趣。Unix系统和软件开发环境8 Unix的历史教训 在Unix历史中,最大的规律是:距开源越近就越繁荣。任何将Unix专有化的企图,只能陷入停滞和衰败。对今后的教训就是:过度依赖任何一种技术或者商业模式都是错误的。相反,保持软件及其

47、设计传统的的灵活性才是长存之道。Unix要繁荣,就必须继续采用吸纳低价而灵活的方案的诀窍。借此,我们可以想想微软,想想我们。Unix系统和软件开发环境9 Unix系统的演变(综述)自从1969年出生以来,至今,它已经历了一个从开发、发展、不断演变和获得广泛应用以致逐渐成为工作站等小型机以上系统的标准操作系统的演变过程。1972年开始,Unix系统已移植到PDP-10系列机上;1974年正式发表在美国计算机学会杂志ACM上;1975年发表的第6版中引入多道技术;1979年,贝尔实验室将其移植到类似于IBM370的32位机Interdata8/32上。从而公布了得到西部电气公司正式承认的Unix第

48、7版。1980年贝尔实验室公布了为VAX-11/780机编写的操作系统Unix 32 V。Unix系统和软件开发环境 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系统。Unix系统和软件开发环境

49、 1986年,Unix System V发展到了它的修订版Res2.1和Res3.0;BSD4.2步升级到BSD4.3 Sunmicro公司开发了基于BSD4.2/4.3的SUN工作站操作系统SUNOS,Solaris。MIT又在Unix的基础上,开发出了近年来已成为工作站图形界面标准的X-window系统。至此各大型厂家的小型机以上的系统大都配置Unix或类Unix的操作系统。且各不相同,互相攻击。Unix系统和软件开发环境10 Unix系统的标准化 在Unix系统不断发展的背景下,美国IEEE(美国电气及电子工程师学会Institute of Electrical and Electron

50、ics Engineers)组织成立了POSIX(可移植操作系统接口标准Portable Operation System Interface)委员会专门从事Unix的标准化工作。POSIX委员会完成了Unix系统标准化,并按其定义重新实现Unix。标准Unix意味着一个可以运行Unix应用软件的平台,它为用户提供一个标准的用户界面,而不在于系统内部如何实现。Unix系统和软件开发环境11 Unix操作系统进一步发展 在标准化基础上,Unix System V Res 4.0版以及BSD4.3版等统一了用户界面的Unix操作系统相继推出,使Unix系统的开发工作进入了一个新的阶段:面向对象设计

51、思想的引入;商用系统:IBM AIX、SUN Solaris、SCO Unix OpenServer、HP UX;Linux(百种以上):RedHat,Federa,Slackware,SuSE,Turbo,红旗,Unix系统和软件开发环境12 Unix系统的特点(1)Unix系统是一个可供多用户同时操作的会话式分时操作系统。(2)两种用户友好界面或接口:命令和系统调用。(3)Unix系统具有一个可装卸的分层树型结构文件系统。该文件系统具有使用方便和搜索简单等特点。(4)Unix系统把所有外部设备都当作文件,并分别赋予它们对应的文件名。(5)Unix系统核心程序的绝大部分源代码和系统上的支持软

52、件都用C语言编写。且Unix系统是一个开放式系统。(6)丰富的开发工具、强大的网络功能和稳定的系统性能。Unix系统和软件开发环境13 Unix系统结构 Unix系统结构可分为三层。最内层为Unix核心(kernel)。最外层是用户程序。中间层则是shell命令解释层、实用程序、库函数等。Unix系统结构图如下:UNIX 的系统结构 Unix系统和软件开发环境14 Unix的命令控制界面 Unix具有丰富的操作命令,这些命令都通过shell提供给用户使用。shell是Unix系统为用户提供的键盘命令解释程序的集合,是人机交互的桥梁;Unix shell命令每个都有返回值,输入输出可以重定向,输

53、出结果也直接赋给shell变量,为用户提供了功能强大的shell编程功能;Unix通过shell向用户提供丰富的命令。根据功能,可将命令划分为基本类和特殊类两种。Unix也提供有窗口图形界面(X-Window)。Unix系统和软件开发环境15 Unix的编程界面 Unix系统的另一个用户接口是编程接口系统调用。Unix系统的系统调用以标准子程序形式给出供编程使用。系统调用的主要目的是使用户可以使用操作系统提供的有关设备管理、输入输出系统、文件系统和进程控制、通信以及存储管理等多方面的功能和服务,而不必了解系统程序的内部结构和有关硬件细节,从而起到减轻用户负担和保护系统以及提高资源利用率的作用。

54、Unix提供的系统调用有如下大类:设备管理的系统调用文件系统的系统调用进程控制的系统调用进程通信的系统调用存储管理的系统调用管理用系统调用Unix系统和软件开发环境 1.2 Linux的发展简史Unix系统和软件开发环境1 Linux的发展简史 Linux 是Linus Torvalds基于一种教学用Unix系统Minix上发展起来的。Linus Torvalds被称为Linux之父。在学习和开发过程中,非常努力,借助网络进行交流、学习。终于1991年9月17日将自己成果发表在FTP服务器上,供大家下载测试。Linus Torvalds最初想将该系统命名为FreeX,但根据Ari Lemke的

55、建议,将该系统命名为Linux。这也是对Linus Torvalds的纪念。当时版本为0.01Unix系统和软件开发环境2 Linux 的开放源代码规则(1)任何人可以免费使用该操作系统,但不得将其作为商品出售;(2)任何人可以对该操作系统进行修改,但必须将其修改以源代码形式公开;(3)如不同意以上规定,任何人无权对其进行复制或从事任何行为。Unix系统和软件开发环境3 软件发放的三种形式(1)商业软件(Commercial Software)先购买后使用,典型代表是Microsoft的Windows;(2)共享软件(Share Software)先试用后付费,通常不提供源代码,到期未购买仍在

56、继续使用者被认为是侵权;(3)自由软件(Free Software)在发布时向用户提供源代码。通常用户通过网络等多种渠道而得到发布版本。如果用户付费的话将得到完美的服务和文档。Unix系统和软件开发环境4 GNU,GPL Richard Stallman 于1983年9月27日公开发起的,它的目标是创建一套完全自由的Unix-兼容的操作系统。为了保证GNU软件可自由地“使用、复制、修复、修改和发布”,所有GNU软件必须遵守GNU的通用许可证GPL(GNU General Public License,简称GNU GPL)。GNU GPL创造性的提出了“反版权”(Copyleft),这是一个不同

57、于商业软件“版权所有”(Copyright)的法律概念,它不否认版权,也不反对发布软件时收取费用或取得利益。它的核心是必须把发布者的一切权利给予接受者。必须保证接受者能同时或通过其它渠道得到源程序,并将GNU GPL条款附加到软件的版权声明中,使接受者知道自己的权利。GNU GPL本身也是受法律保护的版权声明。Unix系统和软件开发环境5 Linux的发展 从0.12版始,Torvalds把Linux奉献给了自由软件,奉献给了GNU。铸造了自由软件也包括Linux的辉煌。现在,全球计算机厂商的巨头们都 纷纷感受到了Linux的魅力:IMB、HP、DELL、ORACLE、INTEL都 提供了对L

58、inux的支持,Linux走进了很多大型公司和企业。Unix系统和软件开发环境6 Linux操作系统的特点 Linux是兼容绝大部分Unix标准、具有Unix风格和特点的操作系统;其最大的优势是遵循GNU GPL,是开放式源代码的自由软件,是计算机爱好者的自己的操作系统。Linux具有X windows桌面系统,兼有Windows作风格。Unix系统和软件开发环境7为什么需要Linux 掌握核心技术,促进技术发展 打破技术垄断,保护国家安全 降低使用成本,提高经济效益Unix系统和软件开发环境8 Linux的技术特点 自由开放的Linux代码 强大的图形操作界面 强大的网络功能 真正多用户多任

59、务的操作系统 支持多种硬件平台的操作系统 完整的开发平台Unix系统和软件开发环境9 Linux的发行版本介绍 Linux继承了Unix版本的特点,版本号有点长。Linux内核版本号由3组数字构成,以“.”分隔。第一组是主版本号;第二组是次版本号,说明主版本的第几次重大更新,偶数代表稳定版本,奇数表示测试版本。稳定版本只修改错误不增加功能。测试版本会不断地增加功能,直到经测试形成稳定版本;第三组是当前版本的错误修订次数。如Linux 2.4.24Unix系统和软件开发环境10 Linux系统结构 Linux是在Unix系统基础上发展起来的;Linux系统结构参见Unix系统;多用户,多任务,支

60、持多线程;动态链接库支持;嵌入式、组件开发。Unix系统和软件开发环境11 Linux发行套件 Linux的基础是内核,发行版内容包括:安装程序、内核系统、管理工具、开发系统等。发布光盘上包括几百个软件包,按功能分有:系统安装与系统引导管理程序 用户界面 X-Windows 系统管理 网络与网络服务 文件和打印服务 应用程序 开发工具 娱乐与多媒体等Unix系统和软件开发环境12 目前常见的Linux发行版 Linux版本在百种以上,常见的如下:Red Hat Linux Mandarke Linux Debian Linux SuSE Linux Slackware Linux 红旗Linu

61、x 冲浪XteamLinux Turbo LinuxUnix系统和软件开发环境13 Linux应用简介 办公系统 互联网 多媒体、娱乐与游戏 图形和图象处理 网络服务 数据库 编程与开发Unix系统和软件开发环境1.3 Unix文化与哲学 Unix系统和软件开发环境1 Unix的文化 工程和设计的每个分支都有自己的技术文化。Unix确实有它自己的文化;有独特的编程艺术;有一套影响深远的设计哲学。理解这些传统,会使你写出更好的软件,即使你是在非Unix平台上开发。Unix系统和软件开发环境2 Unix的生命力 Unix诞生于1969年,此后便一直应用于生产领域。按照计算机工业的标准,那已经是好几

62、个地质纪年前的事了。在现今所有分时系统中,也只有IBM的VM/CMS敢说它比Unix资格更老,但是Unix机器的服务时间却是VM/CMS的几十万倍。事实上,在Unix平台上完成的计算量可能比所有其它分时系统加起来的总和还要多。Unix比其它任何操作系统都更广泛地应用在各种机型上。从超级计算机到手持计算机到嵌入式网络设备,从工作站到服务器到PC机到微型计算机。Unix所能支持的机器架构和奇特硬件可能比你随便抓取任何其它三种操作系统所能支持的总和还要多。Unix系统和软件开发环境 Unix应用范围之广简直令人难以置信。没有哪一种操作系统能像Unix那样,能同时在作为研究工具、定制技术应用的友好宿主

63、机、商用成品软件平台和互联网技术的重要部分等各个领域都大放异彩。从Unix诞生之日起,各种预言就伴随着它,说Unix必将衰败,或者被其它操作系统挤出市场。可是在今天,化身为Linux、BSD、Solaris、MacOS X以及好几个其它变种的Unix,却显得前所未有的强大。Unix系统和软件开发环境 Unix的生命力和适应力委实令人称奇。尽管其它技术如蜉蝣般生生灭灭,计算机性能成千倍增长,语言历经嬗变,业界规范多次变革然而Unix依然巍然屹立,仍在运行,仍在创造价值,仍然能赢得无数最优秀、最聪明的软件技术人员的忠诚。Unix的稳定和成功在很大程度上归功于它与生俱来的内在优势,归功于Ken Th

64、ompson,Dennis Ritchie,Brian Kernighan,Doug McIlroy,Rob Pike和其他早期Unix开发者一开始就作出的设计决策。这些决策,连同设计哲学、编程艺术、技术文化一起,从Unix的婴儿期到今天的成长路程中,已经被反复证明是健康可靠的,而Unix才得以有今天的成功。Unix系统和软件开发环境3 Unix之得 1、开源软件 2、跨平台可移植性和开放标准 3、Internet和万维网 4、开源社区 5、彻头彻尾的灵活性 6、Unix Hack之趣 7、Unix的经验到处可适用 Unix系统和软件开发环境4 Unix哲学基础 Unix哲学起源于Ken Th

65、ompson早期关于如何设计一个服务接口简洁、小巧精干的操作系统的思考,随着Unix文化在学习如何尽可能发掘Thompson设计思想的过程中不断成长,同时一路上还从其它许多地方博采众长。Unix哲学说来不算是一种正规设计方法。它并不打算从计算机科学的理论高度来产生理论上完美的软件。Unix哲学(同其它工程领域的民间传统一样)是自下而上的,而不是自上而下的。Unix哲学注重实效,立足于丰富的经验。Unix系统和软件开发环境Doug McIlroy 如是说 Unix管道的发明人、Unix传统的奠基人之一Doug McIlroy曾经说过:1、让每个程序就做好一件事。如果有新任务,就重新开始,不要往原

66、程序中加入新功能而搞得复杂。2、假定每个程序的输出都会成为另一个程序的输入,哪怕那个程序还是未知的。输出中不要有无关的信息。避免使用严格的分栏格式和二进制格式输入。不要坚持使用交互式。3、尽可能早地将设计和编译的软件投入试用,哪怕是操作系统也不例外,理想情况下,应该是在几星期内。对拙劣的代码别犹豫,扔掉重写。4、优先使用工具而不是拙劣的帮助来减轻编程任务的负担。工欲善其事,必先利其器。后来他这样总结道:Unix哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。Unix系统和软件开发环境Rob Pike 如是说 Rob Pike,最伟大的C语言大师之一,在Notes on C Programming中从另一个角度表述了Unix的哲学:原则1:你无法断定程序会在什么地方耗费运行时间。瓶颈经常出现在想不到的地方,所以别急于胡乱找个地方改代码,除非你已经证实那儿就是瓶颈所在。原则2:估量。在你没对代码进行估量,特别是没找到最耗时的那部分之前,别去优化速度。原则3:花哨的算法在n很小时通常很慢,而n通常很小。花哨算法的常数复杂度很大。除非你确定n总

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!