- Linux操作系统基础
- 方元
- 3043字
- 2020-08-27 12:07:38
1.2 Linux的诞生
1.2.1 塔能鲍姆和他的MINIX
塔能鲍姆编写的MINIX操作系统对Linux操作系统的诞生影响巨大。
安德鲁·塔能鲍姆是荷兰阿姆斯特丹自由大学教授,教授计算机操作系统课程。他编写的教材《操作系统:设计与实现》是关于操作系统的重要著作,很多大学的计算机专业都把它作为教材或者参考书。为了配合这本教材,塔能鲍姆专门编写了能支持当时个人计算机的简化版的UNIX操作系统MINIX(即mini-UNIX)。1987年教材出版时,有关内核、存储管理、文件系统部分的核心代码(共12000行)打印在书中,出版社同时提供完整的源码和编译好的可在软盘上运行的程序作为参考资源。这是一个可以在X86平台上运行的类UNIX操作系统,最初塔能鲍姆希望学生能尽可能方便地获得源代码,而出版社则不愿意,于是双方折中,象征性地收取69美元作为版税(包括书的价格)。2000年4月起,MINIX以BSD版权协议(开源版权协议的一种)发布。而此时其他免费、开源的类UNIX操作系统(如Linux、FreeBSD)已经实用化,MINIX则最终停留在为学生和爱好者提供操作系统模型的阶段。
由于MINIX是为教学目的编写的操作系统,缺乏一定的实用性。但它同时提供了用C语言和汇编语言写的系统源代码,这是自UNIX商业化之后首次提供给程序员系统地分析和学习类UNIX操作系统的源代码的机会。在它的影响下,实用的、免费的操作系统已是呼之欲出。
1.2.2 GNU计划
自由软件的倡导者理查德·斯托曼于1983年9月通过互联网的一个新闻组发布消息称,计划开发GNU操作系统。GNU是GNU is Not UNIX(GNU不是UNIX)的首字母缩写,它将是一个免费的、可自由使用的操作系统,和UNIX兼容。GNU的logo如图1.3所示。UNIX的用户可以很容易地切换到这个操作系统上工作。
图1.3 GNU logo
1985年,Intel的第一款32位处理器芯片80386问世,它是一个成熟的现代处理器(此前的8086不具备存储器保护方式,而80286的保护方式不够完善,不能与实地址方式共存)。这意味着PC家族已具备运行Unix的硬件基础。
同年5月,斯托曼发表了著名的GNU宣言,阐明了GNU的意义,请求社会对GNU计划加以关注和支持。随后斯托曼创立了自由软件基金会(Free Software Foundation,FSF),并担任不拿工资的主席。
1989年2月,斯托曼拟定了GNU公共版权协议(GNU General Public License,GPL),作为GNU软件的法律文书。GPL强调软件的自由属性:任何人都可以自由地研究、修改、使用和再分发。它规定:遵循GPL版权协议获得的软件,在发布二进制代码的同时必须要让用户能以同等的权利获得修改的源代码;不允许为软件的再发布增加额外的限制条件。GPL是开源软件界最具影响力的版权协议。
到20世纪90年代初,GNU项目已经开发出许多高质量的免费软件,包括著名的GNU emacs编辑系统、bash shell程序、GNU C编译器GCC和调试器GDB(GNU Debugger)等。这些软件为Linux操作系统的开发创造了合适的环境,也是Linux能够诞生的基础之一。然而,GNU自己的操作系统内核GNU/Hurd则进展缓慢。随着Linux操作系统的横空出世,GNU将注意力转移到这种新型操作系统上面。Debian GNU/Linux就是自由软件基金会对Linux大力支持的结果。
1.2.3 Linus和Linux
1988年,李纳斯·托瓦兹开始了他的大学生活。他在学习计算机操作系统课程时,研究了塔能鲍姆教授编写的教材《操作系统:设计与实现》。在此之前他已购买了一台386的个人计算机,得以将学习的MINIX代码在个人计算机上实施。
李纳斯当初并没想到要写一个操作系统。他在自己的计算机上写了一个小程序,包括两个进程,一个进程打印“A”,另一个进程打印“B”,然后又把A、B改成了别的东西(一个进程读取键盘信息送到调制解调器,另一个进程则从调制解调器读取信息送到显示屏上)。然后就是键盘、显示器、调制解调器的驱动程序,接着就是磁盘驱动程序,再之后就是文件系统。按他自己的话说,当所有这些都具备之后,一个操作系统的内核也就形成了。
最晚到1991年4月,李纳斯就已经开始全身心地投入到MINIX系统的研究中,并且尝试着将一些GNU软件(GCC编译器、bash shell、GDB等)向MINIX移植。1991年8月25日,李纳斯通过互联网向comp.os.minix新闻组发布了一条消息,大致意思是他正在开发一个供386(或者486)使用的免费的操作系统,只是出于个人兴趣,不会很大,也不会像GNU那样专业,希望大家多提宝贵意见,等等。
当时这个操作系统还没有正式命名。李纳斯想的是“Freax”,即free(自由)、freak(怪胎)和x(“UNIX”中的“x”)的组合。当他把程序文件上传到大学的FTP(File Transfer Protocol)服务器上的时候,服务器管理员不喜欢Freax这个名字,也没跟李纳斯商量,就改成了Linux。
同年9月,Linux 0.01版内核公布在赫尔辛基大学的FTP服务器上,源代码共10239行这也标志着Linux操作系统的诞生,从此登上计算机操作系统的舞台,对信息技术的发展产生越来越大的影响。
最初发布的Linux遵从私有版权协议,对商业使用有限制,但已经开始受到GNU的影响。Linux 0.01版就包含了一个GNU的软件bash二进制程序。在听过理查德· 斯托曼的演讲之后,李纳斯开始接受自由软件的思想。从1992年12月的Linux 0.99版开始,即遵从GNU GPL版权协议发布。GPL版权协议使得Linux以更快、更广泛的方式传播,并且在公众心中留下了美好的印象,得到了全世界计算机爱好者的热心支持。
如今,Linux社区相当活跃,成为一个有成千上万人参与的项目。最初,爱好者们通过邮件将代码发给李纳斯,由他将代码规划到内核中。从2005年(Linux内核纳入git版本控制系统)到2017年,共有来自1400多家企业/社团的超过15000人为内核作出过贡献。现在平均每天仍会收到200次左右的代码提交或修改,每6个月左右就会有一个稳定的新版本向外公布,几乎每两个星期就会有一个子版本的更新。2018年8月发布的Linux-4.18版有6万多个文件,2000多万行代码。
Linux以其可靠性和稳定性,迅速进入服务器领域。全世界超级计算机统计网站公布的数据显示,1998年11月,性能最强的前500台超级计算机,99%以上都在使用UNIX,只有1台在使用Linux;次年6月,这个数字上升到17台;而到2018年6月,世界上最强大的500台超级计算机全部使用Linux。
在移动设备上,Linux很早就进入了市场竞争,早期的个人数字助理(Personal Digital Assistant,PDA)、手机上都有它的身影。自从谷歌发布Android系统以后,几乎所有的移动设备生产厂商都开始采用这种基于Linux内核的操作系统打造手机和平板电脑。据全球网站通信流量检测机构statcounter统计,到2018年8月,Android系统的手机市场占有率为72.9%,平板电脑上则几乎与苹果的iOS平分天下。
Linux操作系统虽有不少优势,但在向个人计算机市场普及过程中仍面临着巨大的障碍,桌面系统的Linux普及始终非常缓慢,到2018年也只占2%左右。大量的Windows用户无法在短时间内改变自己的使用习惯。随着移动设备的普及,Linux迎来了新的发展机遇。安装Linux操作系统的服务器配合采用Linux内核或操作系统的互联网设备和移动终端,让人们看到了Linux操作系统在性能上的优势。
Linux的吉祥物是一个名叫Tux的企鹅,身着一袭绅士服装,如图1.4所示。Tux可以解释为Torvalds UNIX。它也恰好是tuxedo(一种男式晚礼服)的缩写。Tux形象最早出现在1996年,创作者是美国程序员拉里·爱温(Larry Ewing)。
图1.4 企鹅Tux
1.2.4 POSIX标准
POSIX(Portable Operating System Interface,缩写中的字母X只是为了发音方便,不对应任何单词)是为了保持计算机系统之间的兼容性,由IEEE和ISO/IEC共同制定的一系列相互关联的标准的总称。该标准基于现有的UNIX实践和经验,定义了应用程序编程接口(Application Programming Interface,API)、命令行以及其他应用,保证应用程序在源代码一级上在各操作系统之间的可移植性。此标准源于20世纪80年代中期的一个项目,该项目曾试图将AT&T的System V和BSD UNIX系统的调用接口之间的区别加以调和。
第一个POSIX正式标准在1988年公布。POSIX在IEEE的编号是IEEE 1003,对应的国际标准化组织编号是ISO/IEC 9945。
90年代初,正是Linux刚刚起步的时候,这个标准为Linux提供了极为重要的参考,使得Linux能够在标准的指导下进行开发,并能够与绝大多数UNIX系统兼容。在最初的Linux内核代码中(0.01版、0.11版),就已经为Linux与POSIX标准的兼容做好了准备。1996年,美国国家标准技术局的计算机系统实验室确认Linux 1.2.13版符合POSIX标准。