文章目录

  • 1. Unix
  • 2. Linux

1. Unix

早期计算机只有在军事或者学术研究方面才能接触到,并不像现如今拥有如此高的普及程度。

非但如此,当时的计算机不仅架构很难用、处理器运算速度慢,而且开发接口也没有···

当时的“程序员”编写程序需要使用卡纸进行信息打洞,再将打好的卡纸放入卡纸阅读机中读入计算,可以想象如果某个地方打错,就需要进行重新打卡,加上当时计算机的稀有程度与使用者众多,光是人员排队和等待运算就耗去了很多时间。

1960年麻省理工学院(MIT)开发了兼容分时系统(Compatible Time Sharing System),可以让大型主机通过多个终端机(Terminal)来联机进行运算,并将结果从主机传输到终端机。

终端机仅仅具有输入输出功能,具体运算能力在主机上。并且当时比较先进的主机也只能带动30个终端机。

当时为了让大型主机可以带动300个以上终端机,由贝尔实验室(Bell)、麻省理工学院(MIT)、以及奇异公司(GE)共同发起Multics计划,后来到1969年前后,由于资金短缺,进度落后,此计划宣告失败!


在原本参与Multics计划的人员中,Ken Thompson 希望开发一个小小的操作系统来满足自己的需求,于是在1969年8月份回家探亲时利用当时一部没人使用的DEC(Digital Equipment Corporation) PDP-7 主机,利用一个月的时间采用汇编语言(Assembly Language)写出了一个核心程序包括一些核心工具与一个小型文件系统(File Server System)。

由于 Thompson 将 Multics 进行了简化,当时他的同事们称这个系统为 Unics ,这个小型文件系统就是 Unix 的原型。它有两个重要的概念

  1. 所有程序或系统装置都是文件
  2. 不管构建编辑器还是附属文件,程序只有一个目的,有效完成相应的目标

后来,由于Thompson 写的这个系统非常好用,于是在贝尔实验室内部广为流传,并且同事们根据需求进行改版,1973年因为系统移植与性能原因,Dennis Ritchie 将其改写为B语言,后又重新改写为C语言,并发行出Unix的正式版本。那么在以 Unix 为代表的分时操作系统被发明前,你和电脑的交互会被任何人的使用而打断,而这一点延迟通常意味着几千美元的损失。

站在商业角度来看,这时的贝尔实验室隶属于AT&T,当时正忙于其它商业活动,对于此时的Unix采取比较开放的态度,并且C语言是拥有移植性的,也就是说只要取得当时Unix的源码,可以移植到任何一部主机上。于是Unix与学术界开始合作,最重要的是与加州柏克莱(Berkeley)大学的合作,柏克莱大学的Bill Joy(Sun 公司的创办者)修改为自己机器的版本并且增加了很多工具软件与编译程序,命名为Berkeley Software Distribution (BSD),成为Unix一个很重要的分支,Sun公司也以BSD为核心发展商业Unix版本,后来出现的可以安装在x86硬件架构上的FreeBSD就是BSD改版而来。

由于Unix没有版权纠纷与其高度的可移植性与强大的效能,商业公司纷纷开始推出自家主机搭配的Unix系统,例如AT&T的System V,IBM的AIX,HP,DEC等公司。因为操作系统的内核必须要搭配硬件才能工作,此时各硬件公司之间也没有所谓的协议,所以他们是需要根据自家公司的硬件开发合适的Unix系统的,也就是说各大公司开发出的Unix只能支持自家的硬件。

此时AT&T看中了Unix的商业价值,想要将Unix的版权收回,于是在1979年发行的第七版Unix版权声明中特别提出了不可对学生提供源码的严格限制,同时也引爆了很多的商业纠纷。

由于教学要求,没有原始码如何教导学生认识Unix成为Andrew Tanenbaum教授伤脑筋的问题,于是Tanenbaum于1984-1986年动手编写了基于x86架构的Minix这个Unix Like的核心程序,并于1987年出版Minix相关书籍,Minix十分有趣,它并不是免费的,需要购买磁盘或磁带,但是很便宜。由于Minix开发者只有Tanenbaum一个人,并且他认为Minix主要用于教育用途,点到为止即可,不再进行继续开发。

Richard Mathew Stallman原本使用Lisp操作系统(MIT 的专利软件),后来由于实验室硬件更换无法使用,对于一个想要成立开放团体的他来说Lisp系统是一个阻碍,此时他接触到Unix系统,开始进行软件移植。Stallman认为写程序最大的快乐是自己的软件可以分享给大家使用,既然每个人所使用的计算机软硬件不同那么程序的源码就要公开,方便大家修改或者除错后适用于自身的计算机,这样该程序会越来越壮大,越来越优秀,那么这一举动便称为开源(Open Source)。

1984年Stallman开始GNU计划(GNU's Not Unix),即建立一个自由开放的Unix操作系统,但是一个人建立操作系统实在是太麻烦,于是他着手开始编写在Unix上可以运行的程序,模仿原有专利软件进行重新编写。但是无论什么软件都要编译为二进制文件后计算机才能够执行,但是当时的C语言编译器都是专利软件,于是他靠将Emacs编辑器(Editor)移植到Unix后以磁带售卖赚钱,成立自由软件基金会(Free Software Foundation)聘请工程师一起编写出GNU C编译器、C函数库(GNU C Library)以及操作系统基本接口Bash Shell,也就是现如今的GCC编译器。

同年由于图形使用接口(Graphical User Interface , GUI)的需求,MIT与其它厂商联合发表了X Window System,并于1988年成立非营利性XFree86组织。

1985年,Stallman为了避免GNU所开发的自由软件被人利用成为专利软件,与律师起草了通用公共许可证(General Public License , GPL),GPL是可以从事商业行为的,但其自身是开源的自由软件,贩卖的大多数是服务和二次开发后的服务。

GPL授权的软件特色如下:

  • 取得软件与源码
  • 复制该软件
  • 修改过的程序代码回馈给社群
  • 对软件源码进行修改后再度发行,保证不会与原始撰写者冲突
  • 不可将修改后的程序取消GPL授权
  • 不能单纯贩卖自由软件,但可搭配相应手册或者后续服务

尽管如此,对于GNU最初构想建立一个自由开放的Unix操作系统由于没有自由的Unix核心存在所以这些软件还是只能运行在有专利的Unix平台上。这种情况一直到Linux的出现。

2. Linux

Linus Torvalds(1969年出生)的外祖父是赫尔辛基大学的统计学家,为了让自己的小孙子能够学点东西,从小就将Torvalds带到身边来管理一些微计算机。 在这个时期,Torvalds接触了汇编语言。在1988年,Torvalds顺利的进入了赫尔辛基大学,并选读了计算机科学系。在就学期间,Torvalds接触到了Unix操作系统。当时整个赫尔辛基只有一部最新的Unix系统,同时仅提供16个终端机(terminal)。光是等待使用Unix的时间就很耗时,为此,他不禁想到: 『我何不自己搞一部Unix来玩?』不过,就如同Stallman当初的GNU计划一样,要写核心程序,谈何容易~

不久之后,他知道了有一个类似Unix的系统, 并且与Unix完全兼容,还可以在Intel 386机器上面跑的操作系统, Tanenbaum教授为了教育需要而撰写的Minix系统!

于是他贷款买了一部Intel的386计算机,参考Minix的设计理念与书上的程序代码,然后仔细研究出386个人计算机的效能优化, 然后使用GNU计划提供的bash工作环境软件以及gcc编译程序等自由软件将核心程序代码与386紧紧的结合在一起,最终写出他所需要的核心程序。

他希望这个程序可以获得大家的一些修改建议,于是便将这个核心放置在网络上提供大家下载,同时在BBS上面贴了一则消息:他说,他完成了一个小小的操作系统,这个核心是用在386机器上的, 同时,他真的仅是好玩,并不是想要做一个跟GNU一样大的计划! 另外,他希望能够得到更多人的建议与回馈来发展这个操作系统!

这则新闻引起很多人的注意,他们也去托瓦兹提供的网站上下载了这个核心来安装。因为托瓦兹放置核心的那个FTP网站的目录为:Linux,大家便称这个核心为Linux了。

同时,为了让自己的Linux能够兼容Unix系统,于是托瓦兹开始将一些能够在Unix上面运作的软件拿来在Linux上面跑。 不过,他发现到有很多的软件无法在Linux这个核心上运作。这个时候他有两种作法, 一种是修改软件,让该软件可以在Linux上跑, 另一种则是修改Linux,让Linux符合软件能够运作的规范! 由于Linux希望能够兼容于Unix,于是托瓦兹选择了第二个作法『修改Linux』! 为了让所有的软件都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX(Portable Operating System Interface)可携式操作系统接口规范。

因为Linux的核心是开源的,极客们很容易就能够跟随Linux的原本设计架构, 并且写出兼容的驱动程序或者软件。他将该驱动程序/软件带入核心中, 只要测试可以运行,并且没有什么主要的大问题,那么他就会很乐意的将志工们写的程序代码加入核心中!为应对这种随时都有程序代码加入的状况,于是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版。此外,Torvalds指明了他小时候去动物园被咬了一口的企鹅为Linux的吉祥物。

Linux的核心版本编号:
2.6.18-92.el5
主版本.次版本.释出版本-修改版本

  • 主、次版本为奇数:发展中版本(development)
    如2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。 如果有新增的核心程序代码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中;

  • 主、次版本为偶数:稳定版本(stable)
    如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家庭计算机以及企业版本中。 重点在于提供使用者一个相对稳定的Linux作业环境平台。

Linux其实就是一个操作系统最底层的核心及其提供的核心工具。 他是GNU GPL授权模式,所以,任何人均可取得原始码与可执行这个核心程序,并且可以修改。 此外,因为Linux参考POSIX设计规范,于是兼容于Unix操作系统,故亦可称之为Unix Like的一种。

Linux的出现让Stallman的GNU计划放下了心里的一块大石头,因为GNU一直以来就是缺乏了核心程序, 导致他们的GNU自由软件只能在其他的Unix上面跑。既然目前有Linux出现了,且 Linux也用了很多的GNU相关软件,所以Stallman认为Linux的全名应该称之为GNU/Linux!

为了让使用者能够接触到Linux,于是很多的商业公司或非营利团体, 就将Linux Kernel(含tools)与可运行的软件整合起来,并加上具有创意的工具程序, 这个工具程序可以让用户以光盘/DVD或者网络直接安装/管理Linux系统。

这个『Kernel + Softwares + Tools』的可完全安装称之为Linux Distribution,一般中文翻译成可完全安装套件,或者Linux发布商套件等。由于GNU的GPL授权并非不能从事商业行为,于是很多商业公司便贩卖Linux Distribution,例如Red Hat,、Debian、Ubuntu、SuSE、 Fedora 等等

每个Linux distributions使用的kernel都是http://www.kernel.org所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的Apache,电子邮件服务器的Postfix/sendmail,文件服务器的Samba等等。

此外,为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的File system Hierarchy Standard (FHS)标准规范

事实Distributions主要分为两大系统,一种是使用RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类; 一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。

因为Linux具有 1.硬件需求低、 2.架构开放、 3.系统稳定性及保密性功能够强、 4.完全免费,所以造成一些所谓『反微软联盟』的程序设计高手不断的开发新软件!以与Microsoft进行抗衡!

Linux早期都是由工程师所发展的,对於窗口介面并没有很需要,所以造成Linux不太亲和的印象。为了要强化桌面计算机的使用率,Linux与X Window System结合了! 自从1994年Linux 1.0后就加入的X Window系统,在众多黑客的努力之下终于与Linux有高度整合, 且主要的绘图卡公司(Intel, NVidia, ATI等)都有针对Linux推出最新的驱动程序, 因此Linux的GUI已经有长足的进步了!另外,Linux环境下的图形接口不只有一种呢! 包括大家耳熟能详的KDE(http://www.kde.org/)以GNOME(http://www.gnome.org)都是很常见的!要注意的是,X Window System仅只是Linux上面的一套软件, 而不是核心,所以即使X Window挂了,对Linux也可能不会有直接的影响,这些都比较吃显卡与内存

操作系统的起源与发展历程相关推荐

  1. 小学生计算机的起源与发展ppt,计算机的起源与发展历程ppt课件.ppt

    计算机的起源与发展历程ppt课件 1.1 计算机的起源与发展历程;了解计算机的起源与发展历程,计算机在信息社会中的应用,掌握计算机的组成和计算机硬件系统的构成.;教学难点;计算机的特性与应用计算机应用 ...

  2. 计算机的发展经历起源与未来,计算机起源与发展历程.ppt

    计算机起源与发展历程 1.1.1 计算机的起源 1.最早的计算工具:人的双手(图1-1所示) 1.1.1 计算机的起源 1.1.1 计算机的起源 1.1.1 计算机的起源 1.1.2 电子计算机的问世 ...

  3. JavaSE入门0之java起源与发展历程

    JavaSE入门0之java起源与发展历程 文章目录 JavaSE入门0之java起源与发展历程 前言 1.Java的起源 2.Java和互联网 3.java历史 4.java语言特点 5.java应 ...

  4. 计算机的起源与发展历程

    文章目录 1. 计算机的起源 2. 计算机的发展 1. 计算机的起源 在原始社会中,人类开始使用结绳,垒石,枝条或刻字等方式进行辅助计算和计数的工具. 在春秋时期,我们的祖先发明了算筹计数的 &quo ...

  5. 基于 RISC-V SoC 的可配置 FFT 系统设计(2)RISC-V 的起源及其发展历程

    引言  2010 年,伯克利大学(University of California, Berkeley,UCB)的 Krste Asanovic 教授领导的一支科研队伍,启动了一个有关 CPU 设计的 ...

  6. Hadoop的起源及发展历程

    Hadoop之父 Doug Cutting Hadoop最早起源于lucene下的Nutch.Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取.索引.查询等功能,但随着抓取网页数量的增加 ...

  7. 【操作系统】操作系统的发展历程——手工阶段、批处理阶段、分时操作系统、实时操作系统

    [操作系统]操作系统的发展历程--手工阶段.批处理阶段.分时操作系统.实时操作系统 说明:本系列用于记录学习操作系统时的知识点,主要参考资料:王道考研. 不骗各位,博主真的是小菜鸡,如有纰漏还请指出. ...

  8. 简述微型计算机操作系统的发展历程,微型计算机系统简介V要点.ppt

    微型计算机系统简介V要点.ppt 教学目的 巩固同学们的计算机基础知识 加深对计算机体系结构的认识 自己动手配置,安装计算机和解决计算机常见的一些基本故障 教学计划 成绩考核办法 该课程属于实践课,成 ...

  9. 《新一代SDN——VMware NSX 网络原理与实践》——第1章 SDN与网络虚拟化的起源与现状 1.1SDN的起源和发展历程...

    本节书摘来自异步社区<新一代SDN--VMware NSX 网络原理与实践>一书中的第1章,第1.1节,作者:范恂毅 , 张晓和著,更多章节内容可以访问云栖社区"异步社区&quo ...

  10. 华为鸿蒙系统发展历程,华为鸿蒙操作系统怎么样 鸿蒙操作系统的发展历程介绍...

    华为鸿蒙操作系统 有网友曝光了上海交通大学的一份PPT演示,在这份名为系统软件的幻灯中可以看到由某教授领导华为操作系统团队开发了自主产权操作系统--鸿蒙,根据幻灯片的信息,该操作系统已对Linux大量 ...

最新文章

  1. java 虚拟机规范_Java虚拟机规范----Java虚拟机结构
  2. IIS7.5 错误代码0x8007007e HTTP 错误 500.19
  3. Linux安全漏洞审计工具Lynis
  4. java web基本流程
  5. php命名空间规则解析及高级功能,PHP命名空间解析规则
  6. c++趣味小程序_工具类小程序10天增长103万全复盘
  7. bindresult必须在哪个位置_手机视频剪辑工具哪个好?清爽视频编辑APP有人推荐吗?...
  8. 剑指 Offer 40-----50
  9. 使用详解_Log4j2使用详解
  10. 隐马尔可夫模型的三个基本问题
  11. 2018/12/13
  12. 知识图谱开源社区_您需要了解的关于开源社区中的倦怠的知识
  13. vim:复制复制字符到vim的命令行窗口的4种方法
  14. Linux下解压rar格式文件
  15. Java —— Reflect反射机制
  16. 真正靠谱免费的数据恢复软件哪个好用?
  17. GitLab 如何删除 Forked from
  18. 发票查验一直网络异常、无法显示验证码、点击查验没反应怎么办?
  19. Logisim入门实验 1位加减法器 4位加减法器 用加法器实现32位加减法器
  20. 网络安全框架知多少?

热门文章

  1. 萤石云官方Demo下载并二次开发 QT5.12.10
  2. Delphi7--基本数据类型和表达式
  3. HTML图片跟随鼠标移动代码,网页怎么实现图片跟随鼠标移动
  4. 复制百度文库内容chrome插件
  5. python通过pop3方式登录邮箱(qq,新浪,网易)
  6. 金庸15部小说精校版
  7. STM32 BOOT设置以及对应的意义
  8. Hadoop权威指南PDF分享
  9. 11款中兴盒子固件合集分享(已列出全部型号,附刷机教程)
  10. 手机音乐计算机软件,盘点适合手机音频剪辑软件