Linux 系统编程1.pdf
《Linux 系统编程1.pdf》由会员分享,可在线阅读,更多相关《Linux 系统编程1.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 UNIX 系统编程 UNIX 系统编程 需要说明的话:1、关于 UNIX:3 方面内容 2、第一次开这门课 2、你为什么选这门课 3、知识的投资 4、参考书:UNIX 系统编程,Linux 程序设计,以前者为主 Lecturer:Wang Xiaoniu College of Mathematics and Information Science Northwest Normal University 2第一章 预备知识 第一章 预备知识 1、UNIX 发展历史 第一阶段:诞生 Unix 的诞生和 Multics(Multiplexed Information and Computing S
2、ystem)是有一定渊源的。Multics 是由麻省理工学院,AT&T 贝尔实验室和通用电气合作进行的操作系统项目,被设计运行在 GE-645 大型主机上,但是由于整个目标过于庞大,糅合了太多的特性,Multics虽然发布了一些产品,但是性能都很低,最终以失败而告终。AT&T 最终撤出了投入 Multics 项目的资源,其中一个开发者 Ken Thompson 则继续为GE-645 开发软件,并最终编写了一个太空旅行游戏。经过实际运行后,他发现游戏速度很慢而且耗费昂贵每次运行会花费 75 美元。在 Dennis Ritchie 的帮助下,Thompson 用 PDP-7 的汇编语言重写了这个游
3、戏,并使其在 DEC PDP-7 上运行起来。这次经历加上 Multics 项目的经验,促使 Thompson 开始了一个DEC PDP-7 上的新操作系统项目。Thompson 和 Ritchie 领导一组开发者,开发了一个新的分时多用户操作系统。这个系统包括命令解释器和一些实用程序,这个项目被称为 UNICS(Uniplexed Information and Computing System),后来才被改为 UNIX。UNIX 的第一功,是 1971 年为贝尔实验室的专利部门进行“文字处理”的支持工作。首个 UNIX 应用程序是 nroff(1)文本格式化程序的前身。这个项目也让他们名正
4、言顺的购买了一台功能强大得多 PDP-11 小型机。万幸的是,当时管理层还未意识到 Thompson 和其同事所编写的字处理系统就快孵化出一个操作系统,因为贝尔实验室并没有开发操作系统的计划AT&T 加入 Multics 联盟正是为了避免自行开发一个操作系统。UNIX 在贝尔实验室计算群落中重要而永久的地位确立。最初的 Unix 是用汇编语言编写的,一些应用是由叫做 B 语言的解释型语言和汇编语言混合编写的。B 语言在进行系统编程时不够强大,所以 Thompson 和 Ritchie 对其进行了改造,增加了数据类型和结构,并与 1971 年共同发明了 C 语言。1973 年 Thompson
5、和 Ritchie用 C 语言重写了 Unix。在当时,为了实现最高效率,系统程序都是由汇编语言编写,所以Thompson 和 Ritchie 此举是极具大胆创新和革命意义的。用 C 语言编写的 Unix 代码简洁紧凑、易移植、易读、易修改,为此后 Unix 的发展奠定了坚实基础。Thompson 和 Ritchie 也因此获得 1983 年度的图灵奖。第二阶段:黑客(Hacker)1974 年,Thompson 和 Ritchie 合作在 CACM(Communication of the ACM)上第一次公开展示了 UNIX,作者在名为“The Unix Time Sharing Syst
6、em”的文章中描述了 UNIX 前所未有的简洁设计,并报告了 600 多例 UNIX 应用这些都是安装在即使按照那个年代的标准性能都很低的机器上,但是“性能的局限不仅成就了经济性,而且鼓励了设计的简约”。CACM 论文发表后,全球各个研究实验室和大学都嚷着要亲身体验 UNIX。根据 1958年为解决反托拉斯案例达成的和解协议,AT&T(贝尔实验室的母公司)被禁止进入计算机相关的商业领域,所以 UNIX 不能够成为一种商品。并且,根据和解协议的规定,贝尔实验室必须将非电话业务的技术许可给任何提出要求的人。Ken Thompson 开始默默回应那些请求,将磁带和磁盘一包包的寄出去。AT&T 以分发
7、许可证的方法,对 UNIX 仅仅收取很少的费用,大学和研究机构就能获得 UNIX 源代码以进行研究。那时候个人机还未出现,对能用得起 UNIX 的小型机的使用管制要比大型机少得多,因此,在上世纪 70 年代最早搞 UNIX 的通常都是头发蓬乱的嬉皮士和准嬉皮士们,摆弄操作系统的乐趣对他们来说不仅意味着可以在计算机学科的前沿纵情挥洒,而且在于可以挑战伴随“大计算”的所有技术假定和商业实践:COBOL、商务套装和 IBM 批处理大型机。许多大学都对 UNIX 做出过贡献。多伦多大学计算机系发明了 200dpi 的打印机/绘图仪;耶鲁大学的计算机专家和学生们改进了 shell;普渡大学工程系对 UN
8、IX 性能作了重要改进,推出了支持大量用户的 UNIX 版本;加州大学伯克利分校的学生开发了新 shell 和许多小型实用工具;而澳大利亚的新南威尔士大学的 John Lions 写的“莱昂氏 UNIX 源代码分析”至今被UNIX 程序员奉为圣典。Lecturer:Wang Xiaoniu College of Mathematics and Information Science Northwest Normal University 3Lecturer:Wang Xiaoniu College of Mathematics and Information Science Northwest
9、 Normal University 4在这种从学术界到工业实验室,然后又回到学术界,最后到不断增加的商业用户的循环过程中,UNIX 不断发展,日益完善。在此期间,AT&T 发布了 UNIX 早期的几个版本,从V1 到 V5。到了 1975 年,当 UNIX 发展到 V6 时,AT&T 认识到了 UNIX 的价值。因此 AT&T一方面继续发展内部使用的 UNIX 版本 V7(被 UNIX 程序员认为是第一个完全意义上的UNIX),一方面成立 UNIX 系统实验室(Unix System Lab,USL)开发对外正式发行的 UNIX版本,同时 AT&T 宣布对 UNIX 产品拥有所有权。USL
10、对外发布的第一个商业版本是 System III,当时一份 System III 的源码许可证的官方价格为 4 万美元。在 UNIX 最初的发展过程中,加州大学伯克利分校早在 1974 年就开始了对 UNIX 的研究,而 Ken Thompson 利用 19751976 的年休在此教学,更对 UNIX 的研究注入了强劲的活力。1977 年(AT&T 的 UNIX V6 发布后不久),当时还默默无闻的伯克利毕业生 Bill Joy 工作的加州大学伯克利分校计算机系统研究小组(CSRG,Computer Science Research Group)发布了第一版的 BSD(Berkeley Sof
11、tware Distribution),从此伯克利的 BSD 和 AT&T 的 UNIX System 就成 UNIX 发展的两大阵营,前者属于学院派,而后者则是商业中的代表。第三阶段:内战 BSD UNIX 在 UNIX 的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用 UNIX 的基础,而 AT&T 与其同时存在的 UNIX 版本的影响就小得多。同时很多研究项目也是以 BSD UNIX 为研究系统,例如 1980 年美国国防部高级研究计划局(DAPRA,Defense Advanced Research Projects Agency)需要在 UNIX 环境下的 VAX 机
12、上实现全新的TCP/IP 协议栈时,就选择了伯克利 UNIX 作为平台,这份合同无疑成为 UNIX 自诞生以来最关键的转折点。而 AT&T 的 UNIX 系统实验室,同时也在不断改进他们的商用 UNIX 版本,直到他们吸收了 BSD UNIX 中已有的各种先进特性,并结合其本身的特点,推出了 Unix System V 版本之后,情况才有了改变。虽然 AT&T 的 UNIX System V 也是非常优秀的 UNIX 版本,但是 BSD UNIX 在 UNIX领域内的影响更大。AT&T 的 UNIX 系统实验室一直关注着 BSD 的发展。1992 年,UNIX系统实验室指控 BSDI一家发行商
13、业 BSD UNIX 的公司违反了 AT&T 的许可权,发布自己的 UNIX 版本,并进一步指控伯克利计算机系统研究组泄漏了 UNIX 的商业机密(此时的 4.3BSD 中来自 AT&T Unix 的代码已经不足 10%)。这个官司影响了很多 UNIX 厂商,使他们不得不从 BSD UNIX 转向 UNIX System V,以避免法律问题。以至于当今大多数商业Lecturer:Wang Xiaoniu College of Mathematics and Information Science Northwest Normal University 5UNIX 版本都是基于 UNIX Sys
14、tem V 的。这件有关 UNIX 版权的案子直到 UNIX 系统实验室被 AT&T 卖给了 Novell 公司后才得以解决。Novell 不打算陷入这样的法律纷争中,因此就采用了比较友好的做法,伯克利的CSRG 被允许自由发布 BSD,但是其中来自于 AT&T 的代码必须完全删除。因此 CSRG 就对他们最新的 4.4BSD 进行了修改,删除了那些来自于 AT&T 的源代码,发布了 4.4 BSD Lite版本(该系统是不完整的,尤其对于英特尔 386 体系的计算机系统)。由于这个版本不存在法律问题,4.4BSD Lite 成为了现代 BSD 系统的基础版本。Novell 比较友善的做法还不
15、止对 BSD,它把自己的 UNIX 改名为 Unixware,而将 UNIX商标赠送给 X/Open一个由众多 UNIX 厂家组成的联盟,这样这个联盟内的所有成员均可使用 UNIX 商标。从此之后,UNIX 不再是专有产品的名字了。同时,由于 BSD 系统已经十分成熟,作为对操作系统进行研究的目标已经达到,伯克利计算机系统研究组(CSRG)在发布了 4.4BSD-lite2 之后就解散了,小组的科研人员有些进入了 UNIX 商业公司,有些继续进行其他计算机领域的研究。此时,严格意义上的 UNIX System V 和 BSD UNIX 都不复存在了,存在的只是他们的各种后续版本。在 UNIX
16、System V 之后的一些典型商业 UNIX 版本包括:IBM 公司的 AIX;HP 公司的HP/UX;SUN 公司的 Solaris;SGI 公司的 IRIX 等;SCO 公司的 OpenServer 等。Sun 是最早的工作站厂商,但一直在 UNIX 工作站领域不断发展。其操作系统 SunOS是基于 4.2BSD 开发的,直到 SunOS 4。但是在此之后,Sun 将操作系统的开发工作转向了System V,这个新版本为 Solaris 2,或者称为 SunOS 5,因此也可以将 SunOS 4 称为 Solaris 1.0,但是 SunOS 4 与 Solaris 2 分属两个流派,其
17、中的差别就比较大了。值得一提的是 Sun公司的创始人之一的 Bill Joy,他就是 BSD 的主创人员之一,对 UNIX 的贡献主要包括基于分页的虚存系统、csh、vi、NFS、以及最为重量级的 UNIX 应用TCP/IP。后来在 Sun公司又参与设计 Sparc 芯片,参与设计 Java,并一手缔造出 JINI 规范。一般人终其一生,能有他的一项成就,就足以傲视业界,遑论软硬兼修了。IRIX 是 SGI 公司的 Unix,这也是一种基于 Unix System V 的产品。SGI 的 Unix 图形工作站是图形图象处理领域内的顶级产品,这一方面是由于 SGI 的硬件性能相当优秀,另一方面在
18、软件方面,SGI 开发了工作站下的图形图象处理软件,成为这个领域的领先者。SGI在图形图象领域的领先地位掩盖了他作为一家 UNIX 厂商在操作系统领域内的努力,事实上在他们还生产超级计算机,在多处理器和并行计算等大负荷计算方面都有独到的研究。Lecturer:Wang Xiaoniu College of Mathematics and Information Science Northwest Normal University 6SCO UNIX 是在国内比较有名气的 UNIX 操作系统,并且较早进入中国市场。SCO(the Santa Cruz Operation)成立于 1978 年,
19、同年售出第一个商用 C 编译器(Whitesmiths)。1980年SCO和微软联合开发了基于AT&T UNIX V6的XENIX,1987年SCO收购了微软的XENIX版权,1995年收购了Novell公司的UnixWare业务,1995年SCO推出了OpenServer Release 5。SCO 之所以能占有市场,并不是其产品特别出色,而是因为在小型机特别昂贵的年代,对一些追求稳定的行业来说,使用能在 x上运行的 SCO UNIX,可以节约大量成本。因此早期的银行、金融行业的终端大多使用 SCO UNIX,SCO 产品一度占据 UNIX 中低端市场份额的 40%,但是随着 Linux 的
20、崛起,SCO 经营情况每况愈下。2004 年 3 月,SCO 宣称 IBM的 Linux 产品使用了 SCO 的 Unix 源代码程序,对 IBM 提出了盗用商业机密,侵权干涉,不公平竞争以及违背契约等多项指控,并开出了要求赔偿 10 亿美元的天价。同年 5 月,SCO公司对全球 Linux 用户发出了这样的警告:“UNIX 知识产权的问题一天得不到正确解决,Linux 的用户也一天得不到安宁”。为了表示自己的决心,SCO 还戏剧性地宣布暂停发售自己所有的 Linux 产品。SCO 的指控立即引来了业界,尤其是 Linux 社区的熊熊怒火,不但被痛斥为“败类”(因为 SCO 原本是 Linux
21、 阵营的重要厂商),其网站也因遭遇拒绝服务式攻击而瘫痪。成千上万的 Linux 用户在网上发起请愿运动,直接要求:SCO,请你起诉我!截至 5 月 22 日,已经有 2500 多个单位和个人主动要求 SCO 来起诉,有人写道:“SCO,请你起诉我和我的母亲吧,因为我们都热爱 Linux”。在软件史上,这样令人感动的场景可以说绝无仅有。但 SCO 并没有因此止步,5 月 17 日,它又致函全球 1500 家大企业,警告它们:使用 Linux 将承担相应的法律责任。SCO 上演的这一出闹剧进一步震动了市场,震撼了全球 IT 界。在三年多时间的诉讼过程中,事件扑朔迷离,时不时的闪现微软的影子,200
22、7 年8 月,美国联邦法官做出裁决称,Novell 是 UNIX 和 UnixWare 的版权拥有者。SCO 必须向Novell 支付损失费。2007 年 12 月 28 日,SCO 接到了美国纽约纳斯达克上市资格委员会的通知,其股票将从纳斯达克市场摘牌。第四阶段:开源 在两大阵营不断纷争的过程中,UNIX 仍在艰难的发展,但是微软的崛起使得他们失去了太多的市场,而 IBM 的霸主地位更使他们感到无奈,Sun 公司的出现也使得 UNIX 大树上这根源码来源的树枝逐渐枯萎,甚至 386 芯片的下线也没能引起他们足够的重视。上世纪 80 年代初个人计算机的出现,给个人拥有一个 UNIX 系统的愿望
23、带来了一线曙光。但是使用 8086 芯片的计算能力还不足以在其上实现真正正常工作的多用户系统。进入Lecturer:Wang Xiaoniu College of Mathematics and Information Science Northwest Normal University 7九十年代之后,英特尔公司推出的 80386 芯片使个人计算机的计算能力大大提高,在个人计算机上构建一个可以真正使用的 UNIX 也成为了可能。事实上此时能运行在 X86 平台上的 UNIX 相当有限,Mircosoft 的 XENIX 是一种(后来发展成为 SCO Unix),但不能指望能自由、免费使用这
24、个商用系统。要移植 UNIX 到 X86平台上便需要 UNIX 的源代码,而此时受 AT&T 的许可权的限制,UNIX 代码还不能被自由获得(但在 BSD 与 AT&T 的法律纠纷之后的 4.4 BSD Lite 不再受这个限制了,可以在 BSD许可下自由使用)。很多计算机爱好者为了实现一个可以自由使用的操作系统,不断进行着努力。自由软件基金会的 GNU 计划的目的就是打算创建一个自由的、与 UNIX 类似的操作系统,为了实现这个目的,GNU 开发了很多非常有效的工具,包括编译器和很多系统命令,然而 GNU 计划中的操作系统内核 HURD,却进展缓慢,从而无法构建一个完整的操作系统。很快,就有
25、计算机爱好者开始考虑在个人计算机平台上构建一个 UNIX 内核。芬兰一位计算机研究生 Linus Torvalds 开始了这个工作,并取得了相当大的成功,他通过学习Minix一个用于教学目的的简单 UNIX 系统,在 x86 平台上构建了 Linux 内核,这个内核和 GNU 的系统工具结合起来,成为当前非常流行的 GNU/Linux 系统。与这些努力相比,BSD 方面的研究人员的行动则比较迟缓,一个原因是 Unix 技术上已经相当成熟,计算机系统研究组的大部分成员已经把注意力转向了其他研究项目,另外AT&T与BSD的法律纷争也使得BSD发展受到了阻碍。但是还是有两个将BSD移植到80386平
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统编程1 系统 编程
限制150内