历史
1.1 操作系统
操作系统始于二十世纪 50 年代,当时的操作系统能运行批处理程序。批处理程序不需要用户的交互,它从文件或者穿孔卡片读取数据,然后输出到另外一个文件或者打印机。
1.2 Multics
早期的计算机不像现在这样普及,是一件花费巨大的奢侈品,一般只有财大气粗的军事单位、科研机构、高校才能买得起。那时候,由于一台主机同时只能供一人使用,使用者经常需要排队,使用率异常低下。
1960 年代初期麻省理工学院 (MIT) 发展了所谓的“兼容分时系统”( Compatible Time-Sharing System, CTSS ),它可以让大型主机透过提供数个终端机以联机进入主机,来利用主机的资源进行运算工作。
为了更加强化大型主机的系统,以让主机的资源可以提供更多使用者来利用,在1965 年前后, 由贝尔实验室 (Bell)、麻省理工学院 (MIT) 及通用公司 (GE) 共同发起了 Multics 计划,Multics 目的是想要让大型主机可以达成提供 300 个以上的终端机联机使用的目标。 不过,到了 1969 年前后,计划进度落后,资金也短缺,所以该计划半路夭折了。
1.3 Ken Thompson与Unics
参与Multics计划当中有一位来自贝尔实验室的大神——肯·汤普森(Ken Thompson)
1969年8月份左右,汤普森的妻儿去探亲,他为了使一款名为“星际旅行”(star travel)的游戏可运行于Multics,经过四个星期的奋斗,用编译语言写出来一个核心程序,同时包括一些工具及档案系统。当时汤普森将Multics庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为“Unics”,这就是Unix的原型!
也就是这一年,Linux之父Linus Torvalds(林纳斯·托瓦兹) 在芬兰出生。
汤普森爷爷还有段佳话,他开发的操作系统最早被安装在贝尔实验室里供大家日常使用。很快大家就发现汤普森爷爷总能进入他们的帐户,获得最高权限。贝尔实验室里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了他的代码,找到后门,修改代码,然后重新编译。就在大家都以为“这个世界清净了”的时候,他们发现汤普森爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到汤普森爷爷获得图灵奖之后,发表自己获奖感言时道出个其中缘由。原来,代码里的确有后门,但后门不在代码里,而在编译代码的C编译器里。
顺便提一下,汤普森爷爷在退休之后,离开贝尔实验室,成为一名飞行员。
大神就是大神,向来不走寻常路。
1.4 Dennis Ritchie与Unix
汤普森有一个好基友——丹尼斯·里奇(Dennis Ritchie),两人均是计算机历史上开天辟地的人物。
Unix 本来是以编译语言写成的,后来因为系统移植与效能的需求,该系统被 B 语言所改写。不过,效能依旧不是很好。后来,丹尼斯·里奇将 B 语言重新改写成 C 语言,C 语言算是比较高阶的程序语言,可以在不同的机器上面运作,因此丹尼斯·里奇被称为C语言之父。
汤普森与里奇成功地用C语言重写了Unix的第三版内核。至此,Unix这个操作系统修改、移植相当便利,为Unix日后的普及打下了坚实的基础。而Unix和C完美地结合成为一个统一体,C与Unix很快成为世界的主导。
1.5 Bill Joy与BSD
虽然贝尔实验室属于AT&T 公司,但是 AT&T 此时对于Unix 是采取开放的态度, 此外, Unix 是以高阶的C语言写成的,具有很好的可移植性。所以,只要取得 Unix 的原始码,并且针对大型主机的特性加以修改,就可以将 Unix 移植到另一部不同的主机上头了。所以在 1973 年以后, Unix 便得以与学术界合作开发。最重要的接触就是与加州伯克利 ( Berkeley ) 大学的合作了。伯克利大学的比尔·乔伊(Bill Joy) 在取得了 Unix 的核心原始码后,着手修改成适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将他命名为 Berkeley Software Distribution (BSD)。
比尔·乔伊也是一位大神级别的人物,随便举个例子。TCP/IP协议出来以后,一直都没有人写出一个能用的TCP/IP栈,比尔•乔伊同学就写了一个放出来了,大家都很诧异,就问比尔•乔伊同学是怎么写的。比尔•乔伊回答说,我就是一边看着RFC,一边写就好了啊……其他人唯有吐血而已。直到很多年以后,BSD上的TCP/IP栈还都是网络世界的基石。
除此之外,他还是神器VI、CShell的作者,Sparc处理器设计者之一,后来创建了SUN(Stanford University Network)公司,90年代的SUN大约如现在的Google,该公司还是JAVA语言的诞生地。
不多说了,颤抖吧,无知的人类。
1.6 Richard Stallman与GNU
由于 Unix 的高度可移植性,加上当时并没有版权的纠纷,所以让很多商业公司开始了 Unix 操作系统的发展,例如 AT&T 自家的 System V、IBM 的 AIX 以及 HP 与 DEC 等公司,都有推出自家的主机搭配自己的 Unix 操作系统。
1979年 AT&T 出于商业的考虑将想 Unix 的版权收回去,造成 Unix 业界之间的紧张气氛,并且引爆了很多的商业纠纷。
AT&T的这种商业态度,让当时许多的Unix爱好者和软件开发者们感到相当的痛心和忧虑,他们认为商业化的种种限制并不利于产生的发展,相反还能导制产品出现诸多的问题。随着商业化Unix的版本的种种限制和诸多问题,引起了大众的不满和反对。于是,大家开始有组织地结成“反叛联盟”以此对抗欺行罢市的AT&T等商业化行为。这个新思潮对IT业产生了非常深远影响。为整个计算机世界带来了革命性的价值观。
此时,一个名叫理查德·斯托曼(Richard Stallman)的领袖出现了,他认为Unix是一个相当好的操作系统,如果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异!他倡导的Open Source的概念,就是针对Unix这一事实反对实验室里的产品商业化、私有化。
为了这个理想,理查德•斯托曼于1984年创业了GNU(GNU's Not Unix的缩写),计划开发一套与Unix相互兼容的的软件。1985 年理查德•斯托曼又创立了自由软件基金会(Free Software Foundation,FSF)来为 GNU 计划提供技术、法律以及财政支持。
为了构建开放、自由的Unix环境,理查德•斯托曼开发出来一系列大名鼎鼎的软件,每个单独拿出来都够人骄傲一辈子:
l Emacs:Emacs,著名的集成开发环境和文本编辑器。
l GNU C (gcc):C语言编译器。
l GNU C Library (glibc):glibc是GNU发布的libc库,即c运行库。
l Bash shell:它是命令解释器,将用户输入的命令,翻译给内核程序,内核处理完成之后将结果返回给Bash
它们至今依然是Unix世界的中流砥柱。
到了 1985 年,为了避免 GNU 所开发的自由软件被其它人所利用而成为专利软件, 所以斯托曼与律师草拟了有名的通用公共许可证 (GeneralPublic License, GPL), 并且幽默地称呼它为 copyleft (相对于专利软件的 copyright)。
首先, 斯托曼对GPL一直是强调 Free 的,这个 Free 的意思是这样的:
"Free software" is a matter ofliberty, not price. To understand the concept, you should think of "freespeech", not "free beer". "Free software" refers tothe users freedom to run, copy, distribute, study, change, and improve thesoftware
一个软件挂上了 GPL 版权宣告之后,他自然就成了自由软件!,这个软件就具有底下的特色:
• 取得软件与原始码:您可以根据自己的需求来执行这个自由软件;
• 复制:您可以自由的复制该软件;
• 修改:您可以将取得的原始码进行程序修改工作,使之适合您的工作;
• 再发行:您可以将您修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
• 回馈:您应该将您修改过的程序代码回馈于社群!
从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件,让这使得Unix社区生机勃勃,一派繁荣景象。
1.7 Linus Torvalds与Linux
GNU计划的最初构想是建立一个“自由的 Unix 操作系统”,但是当时并没有一款“自由的Unix 核心”存在……所以GNU软件只能在那些有专利的Unix 平台上工作,一直到 Linux 的出现。
1990年,林纳斯·托瓦兹(Linus Torvalds)还是芬兰赫尔辛基大学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小 的Unix操作系统,主要用于操作系统教学)得到灵感,进一步产生了自认为狂妄的想法——写一个比Minix更好的系统,于是开始写了一些硬件的设备驱动程序,一个小的文件系统。这样,1991年0.0.1版本的Linux就出来了,但是它只具有操作系统内核的勉强的雏形,甚至不能运行,必须在有Minix的机器上编译以后才能玩。这时候托瓦兹已经完全着迷而不想停止,决定踢开Minix,使用GNU的bash操作接口与 gcc 编译器等自由软件来开发一套独立的操作系统核心。
开发完成后,他希望这个程序可以获得大家的一些修改建议,于是在1991年10 月5号他便将这个核心放置在网络上提供大家下载,同时在 BBS 上面贴了一则消息:
Hello everybodyout there using minix-
I'm doing a(free) operation system (just a hobby,
won't be big andprofessional like gnu) for 386(486) AT clones.
因为托瓦兹放置核心的那个 FTP网站的目录为: Linux , 从此,大家便称这个核心为Linux 了。
同时,为了让自己的 Linux 能够兼容于 Unix 系统,托瓦兹开始将一些能够在Unix上面运作的软件拿来在 Linux 上面跑。不过,他发现有很多的软件无法在 Linux 这个核心上运作,于是托瓦兹开始参考标准的POSIX规范。POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称。只要是依据这些标准规范来设计的核心与软件,理论上就可以搭配在一起运行了。而 Linux 的发展就是依据这个 POSIX 的标准规范, Unix 上面的软件也是遵循这个规范来设计的, 如此一来,让 Linux 很容易就与 Unix 兼容共享互有的软件。
在自由软件之父理查德·斯托曼的精神感召下,托瓦兹很快以Linux的名字把这款类Unix的操作系统加入到了自由软件基金(FSF)的GNU计划中,并通过GPL的通用性授权。
无疑,正是托瓦兹的这一举措带给了Linux和他自己巨大的成功和极高的声誉。短短几年间,在Linux身边已经聚集了成千上万的狂热分子,大家不计得失的为Linux增补、修改,并随之将开源运动的自由主义精神传扬下去,人们几乎像看待神明一样对林纳斯顶礼膜拜。
Linux系统
Linux内核版本:
1991年 0.0.1版本
1992年 0.0.2版本
1994年 1.0版本
2003年 2.6版本
开放性(开源)、多用户、多任务、优异的性能与稳定性
多用户多任务:
单用户:一个用户,在登录计算机(操作系统),只能允许同时登录一个用户;
单任务:一个任务,允许用户同时进行的操作任务数量;
多用户:多个用户,在登录计算机(操作系统),允许同时登录多个用户进行操作;
多任务:多个任务,允许用户同时进行多个操作任务;
Windows属于:单用户、多任务。
Linux属于:多用户、多任务。
Linux分支
分支:Linux分支有很多,现在比较有名的ubuntu、debian、centos(Community Enterprise Operating System)、redhat等等。