Linux学习-Linux历史(总结篇)
Linux之前,Unix的历史
- 1969年以前,一个伟大的梦想:Bell,MIT与GE的Multics系统
在此之前的计算机主机少,用户从多,程序是在读卡纸上打洞,光是等待。为了更加强化大型主机的功能,以讥主机的资源可以提供更多使用者来利用,所以在 1965 年前后, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE,或称为通用电器)共同发起了 Multics 的计划,Multics 计划的目的是想要讥大型主机可以达成提供 300 个以上的织端机联机使用的目标。 不过,到了 1969 年前后,计划一度落后,资金也短缺,所以全计划虽然继续在研究,但贝尔实验室还是退出了全计划的研究工作。 Multics 计划虽然后来没有受到很大的重规,但是他培养出来的人材是相当优秀的!
- Ken Thompson就是当时贝尔实验室的一位
1969年8分份左右,经过四个星期,Thompson以汇编语言Assembler写出了一组核心程序,同时包括一些核心工具程序,以及一个小小的文件系统。那个系统就是Unix的原型。当时Thompson将Multics庞大的复杂系统简化不少,于是同实验室的朋友都称种这个系统为Unics。
- 1973年:Unix正式诞生,Ritchie等人用C语言写出一个正式Unix核心
由于Thompson写的系统好用,在贝尔实验室文为流传。但是因为Unics是汇编语言写成的,加上当时计算机机器架构都不太相同,所以每次安装到不同的机器都得要重新编写汇编语言,不方便。1973年,Dennis Ritchie以C语言重新改写与编译Unics的核心,最后改名Unix,正试版本。
早期的Unix没有版权的纠纷,采取比较开放的态度。此外,Unix是以高阶的C语言写的,理论上具有较好的移植性。亦即只要取得Unix的原始码,并且针对大型主机的特性加以修订原代码,就可以将Unix移植到另一部不同的主机上头了。所以,在1973年以后,Unix便得以与学术界合作开发。
- 1977年:重要的Unix分支——BSD的诞生
柏克莱大学(Berkeley)的Bill Joy在取得了Unix核心原代码后,着手修改成适合自己机器的版本,并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distribution(BSD)。这个BSD是Unix很重要的一个分支,Bill Joy也是Sun公司的创办者。Sun公司即是以BSD发展核心进行自己的商业Unix版本的发展的。
- 1979年:第七版Unix及版权宣告
早先的Unix只能与服务器或者大型工作站划上等号。但是到了1979年,AT&T推出Unix第七个版本后,这个情况就有点改善了。这一版最重要的特色是可以支持x86架构的个人计算机系统,也就是说Unix第七个版可以在个人计算机上面安装与运作了。贝尔实验室是AT&T公司的,出于商业与现实环境的考虑,AT&T将Unix的版权收回去。因此,AT&T在1979年发行的第七版Unix中,许可证就开始禁业大学使用Unix源码,包括在授课中学习。同时,也造成Unix业界紧张气氛,并且也引爆了很多商业纠纷。
到了1980年,有两个最主要的Unix的版本线,一个是Berkeley的BSD UNIX,另一个是AT&T的Unix,在这个时候,很显然,竞争最终引发了Unix的战争。在这场战争中,好的是,软件开发人员还是能够得到Unix的源码并对其按照自己的需要和兴致进行裁剪。而不好的是,Unix开始一发不可收拾地开发不停地出现各种各样的变种。很多商业公司也开始了Unix操作系统的发展,例如AT&T自家公司的Unix System V,IBM的AIX以及HP的DEC等公司,都有推出自家的主机搭配自己的Unix操作系统。每一家公司自己的Unix虽然在架构上大同小异,但是却真的仅能支持自身的硬件。
Unix历史造一段落,不过目前被称为纯种的Unix指的就是AT&T的Unix以及BSD这两套。
- 1984年:x86架构的Minix操作系统诞生
对于1979年的版权声明中,最受影响的是学校教Unix核心相关学问的教授了。1984年Andrew Tanenbaum(谭宁邦)教授开始撰写Minix这个Unix Like的核心程序,在撰写过程中,完全不看Unix核心代码,到了1986年终于完成并于次年出版Minix相关书籍。这个Minix有趣的是,它并不是完全免费的,无法在网络上下载,必须通过购买磁盘磁带才行。导致Minix的传递速度并不是很快。此外,Tanenbaum始终认为Minix主要用在教育用途上面,所以对于Minix是点到为止。
- 1984年:GNU计划与FSF基金会的成立
1984年Richard Mathew Stallman(史托曼)发起GNU:GNU's Not Unix(读音为new)计划,对于现今的自由软件风潮,真有不可磨灭的地位!目前我们所使用的很多自由软件,几乎均直接或间接受益于GNU这个计划。这个计划的目的是:建立一个自由,开放的Unix操作系统(Free Unix)。但是建立一个操作系统谈何容易。而且在当时GNU仅仅有自己一个人。Stallman这么想的,既然操作系统太复杂了,我就先写可以在Unix上面运行的小程序,这总可以了吧。Stallman开始参考Unix上面的其他软件,并依据这些软件的作用开发出功能相同的软件,且不看其他原码,避免吃官司。后来一堆人知道免费的GNU软件和一些专利软件差不了太多,于是便转而使用GNU软件,GNU计划开始逐渐打开知名度。
虽然GNU计划渐渐打开知名度,但是能见度还是不够。这时Stallman又想:不认是什么软件,都要进行编译成二进制文件(binary program)才能够执行,如果能够写出一个不错的编译程序,那不就是大家都需要的软件了吗?因此他便开始撰写C语言的编译程序,那就是现在相当有名的GNU C Compiler(gcc)!开始写GCC时并不顺利,他先转而将他原先就已经写过的Emacs编辑器写成可以在Unix上面跑的软件,并公布原码。Emacs是一种程序编辑器,他可以在用户编写程序的过程中进行程序语法检验,此一功能可以减少程序员除错的时间!因为Emacs太优秀了,因此,很多人便直接向他购买。此时因因特网尚未流行,所以,Stallman将Emacs以磁带(tape)出售,赚了一点钱,进面开始全力撰写其他软件。
1985年Stallman又创立了自由软件基金会FSF(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。同时为了避免GNU所开发的自由软件被其他人利用而成为专利软件,所以他与律师起草了有名的通用公共许可证(General Public License,GPL)。到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs,GNU C Compiler(gcc),GNU C Library(glibc)以及可以被用来操作操作系统的基本接口BASH shell。
说到软件,这里说一下图形用户接口(Graphical User Interface,GUI)。有1984年由MIT与其他第三方首次发表了X Window System研究,之后变成Unix,Unix Like等操作系统所一致适用的标准化软件工具包及显示架构运作协议,X Window System通过软件工具及架构协议来创建操作系统所用的图形用户界面,此后则逐渐扩展适用到各形各色的其他操作系统上。现在几乎所有的操作系统都能支持与使用X。更重要的是,今日知名的桌面环境——GNOME和KDE也都是以X窗口系统为基础建构成的。1988年成立了的非营利性质XFree86组织。XFree86是X Window System + Free + x86整合名称。这个XFree的GUI在1994年Linux的核心1.0版本时整合到了Linux操作系统中。
- 1992年:芬兰大学生Linus Torvalds写出第一版Linux 0.02
到了1991年,芬兰的赫尔辛基大学的Linus Torvalds(托瓦兹)在BBS上面贴了一则消息,宣称他以bash,gcc等工具写了一个小小的核心程序,这个核心程序可以在Intel的386机器上运行,让很多人很感兴趣。从此开始了Linux不平凡的路程。
早期的Intel x86架构计算机不是很受重视,因为x86的芯片对于多任务处理不佳,CPU在不同的工作间切换不是很顺畅,这个情况在386计算机推出后,有很大的改善。Torvalds在得知新的386芯片相关信息后,就决定贷款去买了一部Intel 386来玩。在研究过程中,他发现Minix虽然很棒,但是Tanenbaum(谭宁邦)教授不愿意进行功能的加强,这个时候年轻的Torvalds就想,既然如此,我何不自己来改写一个我想要的操作系统?于是他就开始了核心程序的撰写。
好在有GNU计划提供的bash工作环境软件及gcc编译程序,让Torvalds得以顺利的撰写核心程序。最终他写出了所需的核心(Linux kernel 0.02)程序,这个玩意竟然真的可以在386上面顺利的跑起来,还可以读取Minix的文件系统。真的太好了!不过还不够,他希望这个程序可以获得大家的一些修改建议,于是他便将这个核心放置在网络上供大家下载。有趣的是,因为Torvalds放置核心的那个FTP网站的目录为:Linux,从此,大家便称这个核心为Linux了。同时为了让自己的Linux能够兼容Unix系统,Torvalds决定开始参考标准的POSIX规范。
POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口,这是IEEE所发布的一项标准。这个正确的决定让Linux的起步就比别人优良,因为POSIX标准主要是针对Unix与一些软件运行的标准规范,只要依据这些标准规范来设计的核心与软件,理论上,就可以搭配在一起执行。如此一来,Linux与Unix兼容共享互有软件了。同时Linux直接放置在网络下,提供大家下载,所以流通的速度相当快。
- Linux的发展:虚拟团队的产生
Linux能够成功除了Torvalds个人理念与力量之外,其实还有个重要的团队!
Linux虽然是Torvalds发明的,而且内容还绝不会涉及专利软件的版权问题。不过要靠Torvalds自己一个人的话,那么Linux要茁壮实在很困难——因为一个人的力量是很有限的。好在Torvalds选择Linux的开发方式相当务实!首选,他将Linux kernel放置在FTP上面,并告诉大家新的版本信息,等到用户下载了这个kernel且安装后,如果发生问题,或者是由于特殊需求亟需某些硬件驱动程序,那么这些使用就会主动回报给Torvalds。在Torvalds能够解决问题的范围内,他都奶快速的进行kernel的更新与除错。
不过,Torvalds总是有些硬件无法取得的啊,那么他当然无法帮助进行驱动程序的编写与相关软件的改良。这个时候,就会有社区的志工跳出来说:“这个硬件我有,我来帮忙写相关的驱动程序。”因为Linux的核心是Open Source的,志工们很容易跟随Linux的设计架构,并且写出驱动程序/软件带入核心中,并且加以测试。只要测试可以运行,并且没有什么主要的问题,那么他就会很乐意将志工们写的程序代码加入核心中。再次证明,Torvalds是个很务实的人,对于Linux核心所欠缺的项目,他总是“先求有且能跑,再求进一步改良”的心态!这让Linux使用者与志工得到了相当大的鼓励!因为Linux的进步太快了!用户要求虚拟内存,结果不到一个星期推出的新版Linux就有了!这不得不让人佩服啊!特别值得注意的是,这些Torvalds的Linux的发展副手,以及及自愿传送修补程序的志工,其实都没有见过面,而且彼此在地球各个角落,大家群策群力的共同社发展出现今的Linux,我们称这群人为虚拟团队!
1994年终于完成了Linux核心正式版1.0。1996年完成了2.0版。此外,Torvalds指明了企鹅为Linux的吉祥物。
- Linux distributions
我们知道Linux是一个操作系统最底层的核心及其提供的核心工具,他是GNU GPL授权模式,所以,任何人均可以取得原码并修改。此外,因为Linux参考POSIX设计规范,于是兼容Unix系统,故亦可称之为Unix Like的一种。Linux的出现让GNU计划放下了心里原一块大石头,因为GNU一直以来就是缺乏核心程序,导致他们的GNU自由软件只能在其他的Unix上跑。Stallman认为Linux的全名应该为GNU/Linux。因为GNU让大多软件围绕Linux操作系统进行开发。这样,可以在Linux上面运行的软件也越来越多。
这时,一个Linux Kernel + Softwares + Tools的可完全安装的东西,我们称之为Linux distribution。一般中文翻译成可完全安装套件,或者Linux发布商套件等。
由于GNU的GPL授权并非不能从事商业行为,于是很多商业公司便成立来贩卖Linux distribution。不过,由于发展Linux distributions的社群与公司实在太多了,例如有名的Red Hat,SuSE,Ubuntu,Fedora,Debian等等。所以很多人都很担心,如此一来每个distribution是否都不相同呢?这就不用担心了,因为每个Linux distributions使用的kernel都是http://www.kernel.org所发布的。
最后总结一下吧。
Linux学习-Linux历史(总结篇)的更多相关文章
- Linux学习-->linux系统在移动硬盘的安装
由于自己看了一些文章和linux的好奇,想来一窥Linux的奥秘,因此自己准备学习使用Linux系统,这里记录下自己的安装过程,方便以后自己重装系统时进行查阅. 参考的书籍是鸟哥的<Linux私 ...
- LINUX学习之二磁盘篇
1.Linux系统中,每个设备都被当成一个文件来对待.文件系统的最小单位是区块(Block) 设备 设备在Linux中的文件名 IDE硬盘 /dev/hd[a-d] SCSI/SATA/USB硬盘 / ...
- linux 学习笔记 查看文件篇
1 diff 比较两个文件 #diff -y test.txt test.txt 输出源文件和目标文件的全部.分左右两栏. aaaa aaaa bbb | b ccc < > ddd 注 ...
- Linux学习笔记 3 权限篇
chmod 查看命令 ls -l - rwx r_x r_x 4 user grop ...
- Linux学习笔记之初级篇
第一部分:[安装注意环节] 第二部分:[常用命令小试] 第三部分:[oracle的安装]
- Linux学习笔记 - Shell 运算符篇
Shell 运算符分类 Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 算数运算符 首先,使用 shell 算数运算符是,需要 ...
- Linux学习-Linux 的开机流程分析
开机流程一览 系统开机的经过可以汇整成底下的流程的: 加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置; 读取并执行第一个开机装置内 MBR 的 boot Loader (亦 ...
- linux学习-linux基础和帮助
1.终端terminal (1)设备终端 键盘,鼠标,显示器 (2)物理终端(/dev/console) 控制台concole (3)串行终端(/dev/ttyS#) ttyS (4)虚拟终端(tty ...
- Linux学习-linux系统下安装jdk和tomcat,以及遇到的问题清单
安装JDK 1. 在usr目录下建立java安装目录 cd /usr mkdir java 2.下载jdk包 登录网址:http://www.oracle.com/technetwork/java ...
随机推荐
- Poj Roadblocks(次短路)
Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her best ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(19)-用户信息的修改和浏览 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- 一些有用的javascript实例分析(一)
原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学 ...
- Firefox firebug and xpath checker
From http://blog.sina.com.cn/s/blog_5aefba9a0100csy8.html
- 有趣iOS开展 - 网络请求
网络请求 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split(' ...
- opencv2对于读书笔记——二值化——thresholded功能
opencv二进制图象值功能threshold功能 其结构 double cv::threshold( //二值化函数 const CvArr* src, //原始图像 CvArr* dst, //输 ...
- jQuery中queue和dequeue的用法
jQuery中的queue和dequeue是一组很有用的方法,他们对于一系列需要按次序运行的函数特别有用.特别animate动画,ajax,以及timeout等需要一定时间的函数 queue和dequ ...
- 【百度地图API】自行获取区域经纬度的工具
原文:[百度地图API]自行获取区域经纬度的工具 摘要:上一章教大家如何建立自己的行政区域地图.这次为大家提供一个,可视化选择区域,并且能自动生成经纬度代码的工具.工具的源代码完全公开,并且做了详尽的 ...
- 使用JFinal框架中Validator
Validator是JFinal框架中的校验组件,在Validator类中提供了我们经常使用的校验方法,而Validator本身实现了Interceptor接口,所以Validator也相当于一个拦截 ...
- Objective-C系列
我的Objective-C系列文章和坚持写博客的感想 做iOS开发有一段时间了,也有自己上线的App产品,也在坚持着发表技术博客总结自己所学的东西.在写博客的时候虽然博文中不免有错别字,但每句话都 ...