Linux发展史

Linux发展史

摘要:因为学习linux过程中对整个linux发展历史只有一些模糊的理解,以本文来对linux发展史进行梳理来加深学习。

 

一、linux是什么

linux就是一套操作系统,如下图操作系统就是内核与系统调用接口那

Linux只是一套操作系统并不包含其他应用程序。

blob.png

Linux提供了一个完整的操作系统当中最底层的硬件控制和资源管理的完整构架,这个是沿袭了Unix良好传统而来的,所以相当稳定并且功能强大。

虽然linux仅是其内核与内核提供的工具,不过由于内核、内核工具与软件开发者提供的软件的整合使得linux成为一个更完整的、功能强大的操作系统

二、 Unix的历史

Multics: 

    1969年以前:一个伟大的梦想——1965年左右美国AT&T公司贝尔实验室(Bell),麻省理工学院(MIT),通用电气公司(GE)的Multics.

但是到1969年前后,项目进度落后,资金也短缺,虽然该项目仍继续在研究,但贝尔实验室还是退出了该项目的研究工作。(最后虽然开发成功但是没有受到很大重视,但是他培养的人才是相当优秀的)

1969年Ken Thompsonde的小型File Server System

      Ken Thompsonde为了移植一套太空旅行的游戏,用一台PDP-7经过四个星期的奋斗终于以汇        编语言写出了一组内核程序,同时包括一些内核工具程   序,以及一个小的文件系统,该系统就      是UNIX的原型

1973年:UNIX正式诞生,Ritchie等人以C语言写出第一个正式的UNIX内核

     Ken Thompsonde与Ritchie合作想将UNIX该以更高级的程序语言来编写,当时的高级程序有B语言,但     是B语言所编译出来的内核性能不是很好,后来Dennis Ritchie将B语言重新改写成C语言,再以C语言重新     改写与编译Unix的内核,最后发行出Unix的正式版本

   1977年:重要的UNIX分支——BSD诞生

       伯克利大学的Bill Joy将UNIX修改成适合自己机器的版本并且同时增加了很多工具软件与编译程序,最终将它命名为Berkeley Software Distrbution(BSD)。Bill Joy也是Sun公司的创办者

   1979年:重要的System V 构架与版权声明

       早期的UNIX只能与服务器(Server)或者大型工作站(Workstation)划上等号,1979年AT&T推出      System V 第七版UNIX可以支持X86构架的个人计算机系统,可以在个人计算机上安装与运行了。

   1984年之一:X86构架的Minix操作系统诞生

 Andrew Tanenbaum出于教学目的,在完全不看UNIX内核源码的情况下,自己动手编写出Minix,由于Andrew Tanenbaum认为Minix主要用在教育上所以对Minix是点到为止。

1984年之二:GNU项目与FSF基金成立

   1983年,理查德·马修·斯托曼创立GNU计划。这个计划有一个目标,是为了发展一个完全自由的类  Unix操作系统。自1984年发起这个计划以来,在1985年,理查德·马修·斯托曼发起自由软件基金会并  且在1989年撰写GPL。1990年代早期,GNU开始大量的产生或收集各种系统所必备的组件,像是——库、  编译器、调试工具、文本编辑器、网页服务器,以及一个Unix的用户界面(Unix shell)——但是像一  些底层环境,如硬件驱动守护进程运行内核(kernel)仍然不完整和陷于停顿,GNU计划中是在马赫微  核(Mach microkernel)的架构之上开发系统内核,也就是所谓的GNU Hurd,但是这个基于Mach的设计  异常复杂,发展进度则相对缓慢。林纳斯·托瓦兹曾说过如果GNU内核在1991年时可以用,他不会自己去  写一个。                      

blob.png

 理查德·马修·斯托曼

Richard M. Stallman

 GNU计划的创立者。

GNU的通用公共许可证:

    1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名    的通用公共许可证(General Public License,   GPL), 并且称呼他为copyleft(相对于专利软件的        copyright)

1988年:图形接口XFree86计划

   有鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重,在1984年由MIT与其他第三  方首次发表了X Window System ,并且更在1988年成立了非营利性质的XFree86这个组织。所谓的XFree86其实  是X Window System + Free + x86的整合名称呢! 而这个XFree86GUI界面更在Linux的核心1.0版于1994年  释出时,整合于Linux操作系统当中!

 1991年:芬兰大学生Linus Torvalds的一则简讯

     1991年,芬兰的赫尔辛基大学的Linus TorvaldsBBS上面贴了一则消息, 宣称他以bash, gcc等工    具写了一个小小的核心程序,这个核心程序可以在Intel386机器上面运作, 让很多人很感兴趣!从此开始    了Linux不平凡的路程!

三、GUN:GNU计划对于整个自由软件来说是占有非常重要的角色!

自由的软件活动:

1984年创立GNU计划与FSF基金会的Stallman先生认为,写程序最大的快乐就是让自己发展的良好的软件让大家来使用了! 而既然程序是想要分享给大家使用的,不过,每个人所使用的计算机软硬件并不相同, 既然如此的话,那么该程序的原始码(Source code)就应该要同时释出, 这样才能方便大家修改而适用于每个人的计算机中呢!这个将原始码连同软件程序释出的举动, 就称为自由软件(Free Software)运动!

自由软件的版权GNU GPL

而为了避免自己的开发出来的Open source自由软件被拿去做成专利软件, 于是Stallman同时将GNUFSF发展出来的软件,都挂上GPL的版权宣告~ 这个FSF的核心观念是『版权制度是促进社会进步的手段, 版权本身不是自然权力。

自由(Free)的真谛

          自由软件的重点并不是指『免费』的,而是指具有『自由度, freedom』的软件

自由度的意义是: 使用者可以自由的执行、复制、再发行、学习、修改与强化自由软件

取得软件与原始码:你可以根据自己的需求来执行这个自由软件;

复制:你可以自由的复制该软件;

修改:你可以将取得的原始码进行程序修改工作,使之适合你的工作;

再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;

回馈:你应该将你修改过的程序代码回馈于社群!

特别注意:

修改授权:你不能将一个GPL授权的自由软件,在你修改后而将他取消GPL授权~

单纯贩卖:你不能单纯的贩卖自由软件。

三、Torvalds的Linux发展

Minix之间

Linus Torvalds (托瓦兹, 1969年出生)的外祖父是赫尔辛基大学的统计学家,1988Linus Torvalds进入赫尔辛基大学,在大学期间有接触Minix的原始码,托瓦兹也经由这个原始码学习到了很多的核心程序设计的设计概念

386硬件的多任务测试

     为了彻底发挥386的效能,于是托瓦兹花了不少时间在测试386机器上! 他的重要测试就是在测试386的多功效      能。首先,他写了三个小程序,一个程序会持续输出A、一个会持续输出B 最后一个会将两个程序进行切换。他将三个程序同时执行,结果,他看到屏幕上很顺利的一直出现ABABAB…… 他知道,他成功了! ^_^ 

    

blob.png

初次发布Linux0.02

GNU计划提供的bash工作环境软件以及gcc编译程序等自由软件让托瓦兹得以顺利的撰写核心程序。他参考Minix的设计理念与书上的程序代码,然后仔细研究出386个人计算机的效能优化, 然后使用GNU的自由软件将核心程序代码与386紧紧的结合在一起,最终写出他所需要的核心程序。 而这个小玩意竟然真的可以在386上面顺利的跑起来~还可以读取Minix的文件系统。 真是太好了!不过还不够,他希望这个程序可以获得大家的一些修改建议, 于是他便将这个核心放置在网络上提供大家下载,同时在BBS上面贴了一则消息:

blob.png

他说,他完成了一个小小的操作系统,这个核心是用在386机器上的, 同时,他真的仅是好玩,并不是想要做一个跟GNU一样大的计划! 另外,他希望能够得到更多人的建议与回馈来发展这个操作系统!这个概念跟Minix刚好背道而驰呢! 这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个核心来安装。 有趣的是,因为托瓦兹放置核心的那个FTP网站的目录为:Linux 从此,大家便称这个核心为Linux了。(请注意,此时的Linux就是那个kernel喔! 另外,托瓦兹所丢到该目录下的第一个核心版本为0.02呢!

Linux 的发展:虚拟团队的产生

  • 单一个人维护阶段

Linux虽然是托瓦兹发明的,而且内容还绝不会涉及专利软件的版权问题。 不过,如果单靠托瓦兹自己一个人的话,那么Linux要茁壮实在很困难~ 因为一个人的力量是很有限的。好在托瓦兹选择Linux的开发方式相当的务实! 首先,他将释出的Linux核心放置在FTP上面,并请告知大家新的版本信息, 等到使用者下载了这个核心并且安装之后,如果发生问题, 或者是由于特殊需求亟需某些硬件的驱动程序,那么这些使用者就会主动回报给托瓦兹。 在托瓦兹能够解决的问题范围内,他都能很快速的进行Linux核心的更新与除错。

  • 广大黑客志愿者加入阶段

不过,托瓦兹总是有些硬件无法取得的啊,那么他当然无法帮助进行驱动程序的撰写与相关软件的改良,这个时候官大黑客志愿者自发加入写出兼容的驱动程序或者软件。 托瓦兹将该驱动程序/软件带入核心中,并且加以测试。 只要测试可以运行,并且没有什么主要的大问题,那么他就会很乐意的将志愿者写的程序代码加入核心中!另外,为适应这种随时都有程序代码加入的状况,于是Linux便逐渐发展成具有模块的功能

  • 内核功能细部分工发展阶段

§  因为Linux核心加入了太多的功能,光靠托瓦兹一个人进行核心的实际测试并加入核心原始程序实在太费力~ 结果,就有很多的朋友跳出来帮忙这个前置作业!例如考克斯(Alan Cox)、与崔迪(Stephen Tweedie)等等, 这些重要的副手会先将来自志工们的修补程序或者新功能的程序代码进行测试, 并且结果上传给托瓦兹看,让托瓦兹作最后核心加入的原始码的选择与整并! 这个分层负责的结果,让Linux的发展更加的容易!

§  特别值得注意的是,这些托瓦兹的Linux发展副手,以及自愿传送修补程序的黑客志工, 其实都没有见过面,而且彼此在地球的各个角落,大家群策群力的共同发展出现今的Linux 我们称这群人为虚拟团队!而为了虚拟团队数据的传输,于是Linux便成立的核心网站: http://www.kernel.org!而这群素未谋面的虚拟团队们,在1994年终于完成的Linux的核心正式版!version 1.0 这一版同时还加入了X Window System的支持呢!更于1996年完成了2.0版。此外,托瓦兹指明了企鹅为Linux的吉祥物。                 

blob.png

              

Linux的核心版本

Linux的核心版本编号有点类似如下的样子:

blob.png

托瓦兹将内核的发展趋势分为两种并根据这两股核心的发展分别给予不同的核心编号,那就是:

主、次版本为奇数:发展中版本(development)

主、次版本为偶数:稳定版本(stable)

Linux distributions

因为Linux早期都是由黑客工程师所开发维护的,他们并没有考虑到一般使用者的能力…… 为了让使用者能够接触到Linux,于是很多的商业公司或非营利团体, 就将Linux Kernel(tools)与可运行的软件整合起来,加上自己具有创意的工具程序, 这个工具程序可以让用户以光盘/DVD或者透过网络直接安装/管理Linux系统。 这个『Kernel + Softwares + Tools的可完全安装』的咚咚,我们称之为Linux distribution 一般中文翻译成可完全安装套件,或者Linux发行版等。    

blob.png

各大Linux Distributions的主要异同:支持标准!

为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的File system Hierarchy Standard (FHS)标准规范! 唯一差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式

Linux的特色

自由与开放的使用与学习环境

由于Linux是基于GPL的授权之下,因此他是自由软件, 也就是任何人都可以自由的使用或者是修改其中的原始码的意思!

配置需求低廉

Linux可以支持个人计算机的x86架构,系统资源不必像早先的Unix系统那般,仅适合于单一公司所出产的设备!

核心功能强大而稳定

而且由于Linux功能并不会输给一些大型的Unix工作站,因此,近年来越来越多的公司或者是团体、 个人投入这一个操作系统的开发与整合工作!

独立作业

由于很多的软件套件逐渐被这套操作系统拿来使用,而很多套件软件也都在 Linux这个操作系统上面进行发展与测试,因此,Linux近来已经可以独力完成几乎所有的工作站或服务器的服务了

Linux的优缺点

优点:

稳定的系统、免费或少许费用、安全性、漏洞的快速修补、多任务、多使用者、使用者与群组的规划、相对比较不耗资源的系统、适合需要小核心程序的嵌入式系统、整合度佳且多样的图形用户接口(GUI)

缺点:

没有特定的支持厂商、游戏的支持度不足、专业软件的支持度不足、教育训练作的还不够好

总结:

·  操作系统(Operation System)主要在管理与驱动硬件,因此必须要能够管理内存、管理装置、 负责行程管理以    及系统呼叫等等。因此,只要能够让硬件准备妥当(Ready)的情况, 就是一个性价比最好操作系统了。

·  性价比最好操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要透过应用软件或者是壳程序(shell) 的    功能,来呼叫操作系统操纵硬件工作。因此,目前称为操作系统的, 除了上述功能外,通常已经包含了日常    工作所需要的应用软件在内了。

·  Unix的前身是由贝尔实验室(Bell lab.)的Ken Thompson利用汇编语言写成的, 后来在1971-1973年间由Dennis    Ritchie以C程序语言进行改写,才称为Unix。

·  1977年由Bill Joy释出BSD (Berkeley Software Distribution),这些称为Unix-like的操作系统。

·  1984年由Andrew Tanenbaum制作出Minix操作系统,该系统可以提供原始码以及软件;

·  1984年由Richard Stallman提倡GNU计划,倡导自由软件(Free software), 强调其软件可以『自由的取得、复    制、修改与再发行』,并规范出GPL授权模式, 任何GPL(General Public License)软件均不可单纯仅贩卖其    软件,也不可修改软件授权。

·  1991年由芬兰人Linus Torvalds开发出Linux操作系统。简而言之,Linux成功的地方主要在于: Minix(Unix),    GNU, Internet, POSIX 及虚拟团队的产生。

·  Linux本身就是个性价比最好的操作系统,其开发网站设立在http://www.kernel.org,我们亦称Linux操作系统    最底层的数据为『核心(Kernel)』。

·  目前Linux核心的发展分为两种版本,分别是稳定版本的偶数版,如2.6.X,适合于商业与家用环境使用; 一种    是发展中版本的奇数版如2.5.X 版,适合开发特殊功能的环境。

·  Linux distributions的组成含有:『Linux Kernel + Free Software + Documentations(Tools) + 可完全安    装的程序』所制成的一套完整的系统。

原创文章,作者:征(_少,如若转载,请注明出处:http://www.178linux.com/51040

(0)
上一篇 2016-10-14 11:37
下一篇 2016-10-14 11:38

相关推荐

  • Linux文件系统管理

    一、什么是文件系统     我理解的文件系统就是管理磁盘分区上数据的索引信息,其实文件系统就是一种应用程序,只不过是用来维护和管理分区上的数据而已,就跟操作系统是用来管理底层硬件一样。不同的分区可以有不同的文件系统。 二、文件系统类型     在linux系统上主要有如下类型的文件系统: &nbsp…

    Linux干货 2016-03-03
  • 正则表达式

         正则表达式是由一类特殊字符所编写的模式,通过这些字符的使用,我们能检索 查找文本中符合某些规则的内容。 正则表达式元字符的分类有:字符匹配,匹配次数,位置锚定,分组等。      字符匹配:      . : 匹配任意单个字符     &n…

    Linux干货 2017-04-06
  • Linux系统操作练习-2

    1、显示当前系统上root、fedora或user1用户的默认shell: 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(): 3、使用echo命令输出一个绝对路径,使用grep取出基名;扩展:取出路径名: 扩展: 4、找出ifconfig命令结果中的1-255之间的数字: 5、挑战题:写一个…

    2017-11-25
  • 用户管理权限命令总结

    用户 Linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。 用户分类 超级用户:(root,UID=0) 普通用户:(UID在500到60000) 伪用户:(UID在1到499) 系统和服务相关的:bin、daemon、shutdown等 进程相…

    Linux干货 2017-04-03
  • N25-第二周博客作业

    第二周博客作业 1.Linux上的文件管理类命令都有哪些,其常用的使用方法和演示 2.bash的工作特性之命令执行状态返回值和命令行展开所涉及内容演示及其实例 3.请使用命令行展开功能完成以下练习;    (1)创建/tmp的目录下a_c,a_d,b_c,b_d     (2) 创建/tmp/mylinux目录下的 4…

    Linux干货 2016-12-11
  • Linux之bash shell脚本编程入门篇(二)以及文件查找和压缩的使用

    bash shell脚本编程入门篇(二) read命令的使用 作用:     使用read来把输入值分配给一个或多个shell变量:         -p指定要显示的提示      &nbs…

    Linux干货 2016-08-18