linux的发展史

一、今天要介绍的Linux是一套免费使用和自由传播的Unix操作系统,是一个基于POSIXUNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持3264硬件。Linux继承了Unix网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。 但是很多时候我们了解到的技术都不是一蹴而就的,往往都经过漫长的岁月不断的经过改进、优化才能到现在流传在市面上供我们使用的,那么一个操作系统也一样,所有学习linux之前有必要知道linux的发展史,这个对于我们了解其技术演变过程及将要加深学习起到了很好的帮助,那么下面就让我们简单了解下linux的发展史吧!

二、 Linux 操作系统的诞生、发展和成长过程依赖于以下五个重要支柱: 

UNIX操作系统

        Linux 操作系统是UNIX 操作系统的一个克隆版本。UNIX 操作系统是美国贝尔实验室的Ken.ThompsonDennis Ritchie 1969 年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统。Ken Thompson 为了能在闲置不用的PDP-7 计算机上运行他非常喜欢的星际旅行(Space travel)游戏,于是在1969 年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了UNIX 操作系统的原型。当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 1972 年用移植性很强的C语言进行了改写,使得UNIX 系统在大专院校得到了推广。

MINIX操作系统

        MINIX 系统是由Andrew S. TanenbaumAST)开发的。AST 是在荷兰Amsterdam Vrije 大学数学与计算机科学系统工作,是ACM IEEE 的资深会员(全世界也只有很少人是两会的资深会员)MINIX 是他1987 年编制的,主要用于学生学习操作系统原理。到1991 年时版本是1.5。目前主要有两个版本在使用:1.5 版和2.0 版。当然目前MINIX 系统已经是免费的,可以从许多FTP 上下载。
       
对于Linux 系统,他后来曾表示对其开发者Linus的称赞。但他认为Linux的发展很大原因是由于他为了保持MINIX 的小型化,能让学生在一个学期内就能学完,因而没有接纳全世界许多人对MINIX的扩展要求。因此在这样的前提下激发了Linus 编写Linux 系统。当然Linus 也正好抓住了这个好时机。
       
作为一个操作系统,MINIX 并不是优秀者,但它同时提供了用C 语言和汇编语言编写的系统源代码。这是第一次使得有抱负的程序员或hacker 能够阅读操作系统的源代码。在当时,这种源代码是软件商们一直小心守护着的秘密。

GNU计划

        软件产业在70年代成就了两位针锋相对的领袖人物,来自哈佛大学的比尔·盖茨和Richard M.Stallman。前者宣布了Copyright(版权)时代的到来,并构建了微软帝国的辉煌;后者于1984年创立自由软件体系GNU,拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),今天Linux的成功就得益于GPL协议。
       
所有GPL协议下的自由软件都遵循着Richard M. Stallman"Copyleft"(非版权)原则:即自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开。
        GNU
计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU 系统(GNU "GNU's Not Unix"的递归缩写,它的发音为"guh-NEW")。
       
各种使用Linux 作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作"Linux",但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。
       
到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。

POSIX标准

        POSIXPortable Operating System Interface for Computing Systems)是由IEEE ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口。用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。它是在1980 年早期一个UNIX 用户组(usr/group)的早期工作基础上取得的。该UNIX 用户组原来试图将AT&T System V 操作系统和BerkeleyCSRG BSD 操作系统的调用接口之间的区别重新调和集成。并于1984 年定制出了/usr/group 标准。
         
90 年代初,POSIX 标准的制定正处在最后投票敲定的时候,那是1991-1993 年间。此时正是Linux刚刚起步的时候,这个UNIX 标准为Linux 提供了极为重要的信息,使得Linux 能够在标准的指导下进行开发,并能够与绝大多数UNIX 操作系统兼容。在最初的Linux 内核源代码中(0.01 版、0.11 版)就已经为Linux 系统与POSIX 标准的兼容做好了准备工作。在Linux 0.01 版内核的/include/unistd.h 文件中就已经定义了几个有关POSXI 标准要求的符号常数,而且Linus 在注释中已写道:“OK,这也许是个玩笑,但我正在着手研究它呢

Internet 网络

        Internetlinux开发、交流、发展的信息和资源的交流平台。

三、Linux的诞生 

    1、Multics计划

   上世纪四五十年代,电子管计算机都是大型机Mainframe,计算能力很强,但是没有操作系统,当时的操作系统就是所谓的批处理操作系统,batch批处理 也称为脱机批处理,单任务,所以当时迫切需要一套多任务、多用户的操作系统,至此Multics项目便油然而生。

Multics是1964年由美国AT&T的贝尔实验室、麻省理工学院的人工智能实验室以及美国通用电气公司所共同研发的一套安装在大型主机上多人多任务的操作系统。后来因计划进度落后,资金短缺,宣告失败。贝尔实验室退出该项目的研究。

 

    2、UNIX的诞生及发展

   在复杂的Multics系统的计划失败后,曾经参与Multics计划的贝尔实验室的成员Ken Thompson正在撰写一个名为“星际旅行(Space Travel)”的游戏程序,但是该游戏需要基于操作系统之上运行的,于是他便在1969年的时候以DEC公司的计算机PDP-7为硬件基准,借鉴Multics的许多思想,并将其简单化开发出一个可以运行自己游戏的文件系统,后来Ken的同事Dennis Ritchie等人为了让这个文件系统的执行效能更优化,以先进的计算机PDP-11为硬件基准使用编译效能更好的C语言将文件系统的核心大幅度的改写了,并且确定该操作系统名称为Unix。Ken和Dennis二人发表论文并召开新闻发布会。但该操作系统归属于贝尔实验室,贝尔实验室隶属于AT&T,而AT&T当时不能出售电话电报以外的任何东西。与此同时美国加州大学伯克利分校成立BSRG组织专门研究Unix,1976年贝尔实验室的Ken年休到伯克利分校任教,BSRG邀请Ken,在Ken的帮助下,伯克利分校于1980年发布了自己的操作系统BSD并进行售卖。而后,贝尔实验室从AT&T分离出来,可以对自己开发的Unix系统进行售卖,并开发出了第五版稳定的Unix称为Sys V,使得当时Unix系统形成了两大阵营,即伯克利分校的BSD和贝尔实验室的Sys V,于是贝尔公司就Unix操作系统的知识产权问题与伯克利分校开始了长达十年的官司。

 

    3、Linux的诞生

  到了上世纪70年代,由于计算机硬件工业的强力运作,以intel主导的x86系统架构的个人计算机大行其道,但是当时人们使用的操作系统并不是免费的,购买操作系统的价格相当昂贵。此时,位于荷兰某大学的教授Andrew 给学生们讲课正需要Unix操作系统,可是购买Unix操作系统需要4万美元,学生学习Unix将变得很难。基于此原因,Andrew 教授模仿Unix开发了Minix操作系统,用于学生教学。但是Minix还不能移植到其他主机上,此时,世界上由对Unix商业化不满者组成的开源组织GNU组织对Andrew 教授的Minix操作系统很感兴趣,希望教授把Minix操作系统的源代码遵循GPL条款免费公布出来,方便Minix的移植,可是被教授拒绝了。同时,Andrew教授的一位芬兰学生名叫Linus Torvalds对教授的Minix系统相当感兴趣,于是Linus仿照教授的Minix在自己的386计算机上编写出了一款新的操作系统取名linux操作系统,并将系统代码无偿贡献给了GNU组织,使得Linux迅速风靡全球。

 

    4、Linux的发行版本

   Redhat和centos都是Linux最著名的发行版本,Redhat是在Linux内核(os)的基础上多了一些GNU的小工具,应用程序或界面等,将之封装成的一个镜像(ios),Red Hat是一个符合大众需求的最优版本。而centos也是利用Redhat的源码重新编译进行二次发行的版本centos是Redhat源代码再编译的产物,而且在RHEL的基础上修正了不少已知的 Bug ,相对于其他 Linux 发行版,其稳定性值得信赖。Ubuntu是一个以桌面应用为主的Linux操作系统,目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

 

    5、Linux内核版本

  Linux是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统。

  Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。

  1.0版本有176,250字符串。此版本的Linux内核只支持单处理器基于i386的计算机系统,可移植性成为一个问题。随后1.2版本(310,950字符串)支持多种计算机架构例如Alpha、SPARC、MIPS处理器。而后的3.0-3.19版本对计算机系统的架构以及系统所支持的功能都做了不同的改进。

 

    6、Linux内核与发行版本的关系

  Linux发行版的推动了Linux的应用,而也让更多的人开始关注Linux。一些组织或厂家,将Linux系统的内核与外围实用程序软件和文档包装起来,并提供一些系统安装界面和系统配置、设定与管理工具,就构成了一种发行版本,Linux的发行版本其实就是Linux核心再加上外围的实用程序组成的一个大软件包而已。相对于Linux操作系统内核版本,发行版本的版本号随发布者的不同而不同,与Linux系统内核的版本号是相对独立的。因此把SUSE、RedHat、Ubuntu、Slackware等直接说成是Linux是不确切的,它们是Linux的发行版本,更确切地说,应该叫做“以Linux为核心的操作系统软件包”。根据GPL准则,这些发行版本虽然都源自一个内核,并且都有自己各自的贡献,但都没有自己的版权。Linux的各个发行版本,都是使用Linus主导开发并发布的同一个Linux内核,因此在内核层不存在什么兼容性问题。每个版本都不一样的感觉,只是在发行版本的最外层才有所体现,而绝不是Linux本身特别是内核不统一或是不兼容。

 

原创文章,作者:Leslie0015,如若转载,请注明出处:http://www.178linux.com/52300

(0)
Leslie0015Leslie0015
上一篇 2016-10-17 08:34
下一篇 2016-10-17 08:35

相关推荐

  • 网络基础

    计算机网络     计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 1、网络通信设备     网络通信设备种类繁多,且日新月异,网络通信设备通常由网络线缆、网卡、集线器、中继器、网桥、交换机、路由器等组成。 网桥(Bri…

    Linux干货 2016-12-16
  • 马哥教育网络班21期+第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统; (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]#mke2fs -t ext4 -b 2048 -m 2 -L &qu…

    Linux干货 2016-08-15
  • N25-第六周作业

      复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;               s/要查找的内容/替换为的内容/修饰符 %:全文,相当…

    Linux干货 2017-02-13
  • Lvm基本应用,扩展及缩减实现

    什么是LVM LVM是Logical Volume Manager的简写。其是Linux环境下对磁盘分区进行管理的一种机制。LVM由Heinz Mauelshagen在Linux 2.4内核上实现。其主要作用是在不损坏磁盘数据的情况下对磁盘空间进行增加,缩减。LVM的做法是将几块物理硬盘通过软件的方式组合成一块空间相对大的Volume Group,简称VG,…

    Linux干货 2016-09-08
  • 自制linux和内核编译

    自制linux和内核编译 1、分区并创建文件系统 fdisk /dev/sdb分两个必要的分区/dev/sdb1对应/boot /dev/sdb2对应根/mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2 2、挂载boot mkdir/mnt/bootmount /dev/sdb1 /mnt/boot 3、安装grub grub-i…

    Linux干货 2016-09-23
  • N28-第二周

    1. Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。
    2. bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
    3. 請使用命令行展開功能來完成以下練習:
    (1) 創建/tmp目錄下的a_c、a_d、b_c、b_d。
    (2) 創建/tmp/mylinux目錄下的bin、boot/grub、dev、etc/rc.d/init.d、etc/sysconfig/network-scripts、lib/modules、
    lib64、proc、sbin、sys、tmp、usr/local/bin、usr/local/sbin、var/lock、var/log、var/run目錄。
    4. 如何查看文件的元數據,其信息有哪些,分別表示什麼含意?如何修改文件的時間戳信息?
    5. 如何定義一個命令的別名?如何在命令中引用另一個命令的執行結果?
    6. 顯示/var目錄下所有以L小寫開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
    7. 顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
    8. 顯示/etc目錄下,以非字母開頭,後面跟了一個字母以及其他任意長度任意字符的文件或目錄。
    9. 在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
    10. 複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
    11. 複製/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
    12. 複製/etc目錄下所有以L小寫或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    Linux干货 2017-12-14