万字长文!Unix和Linux你不知道的那些历史(详解版)

00 前言

UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,可以说 UNIX 是操作系统中的'老大哥',后来的 Windows 和 Linux 都参考了 UNIX。

现代的 Windows 系统已经朝着“图形界面”的方向发展了,和 UNIX 系统有了巨大的差异,从表面上甚至看不出两者的关联。

01 正文

UNIX 的坎坷历史

UNIX 操作系统由肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。

上个世纪六十年代,那个计算机还没有很普及,只有少数人才能使用,而且当时的计算机系统都是批处理的,就是把一批任务一次性提交给计算机,然后就等待结果。并且中途不能和计算机交互。往往准备作业都需要花费很长时间,并且这个时候别人也不能用,导致了计算机资源的浪费。

说明:分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求,并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。

但是由于Multics项目太复杂,加上其他原因导致了项目进展缓慢,1969年贝尔实验室觉得这个项目可能不会成功,于是就退出不玩了。

贝尔实验室退出Multics计划之后,Bell实验室的那批科学家就没有什么事做了,其中一个叫做Ken Thompson的人在研发Multics的时候,写了一个叫做太空大战(Space Travel)的游戏,大概就是一个很简单的打飞机的游戏,但是这个游戏运行在Multics上。当Bell退出了Multics后,Thompson就没有了Multics的使用环境了,为了能够继续游戏,于是他花了一个月的时间写了一个小型的操作系统,用于运行Space Travel,当完成之后,Thompson怀着激动的心情把身边同事叫过来,让他们来玩他的游戏,大家玩过之后纷纷表示对他的游戏不感兴趣,但是对他的系统很感兴趣。这个时候的操作系统还是用汇编语言写。

因为MULTICS是“Multiplexed informtion and Computing Service”的缩写(多路信息计算系统),于是他们命名这个系统为:“UNiplexed Information and Computing Service”,缩写为“UNICS”(没路信息计算系统,与Multics相反)。后来大家取其谐音,就称其为“UNIX”了。

这个时候已经是1970年了,于是就将1970年定为Unix元年,因此UTC时间就是从这一年开始计算的。

后来Unix这个小操作系统就在Bell实验室内部流行开,并经过不断地改良最终在1974年7月Unix发展到第5个版本,Bell实验室公开了Unix,结果引起了学术界的广泛兴趣并对其源码索取。所以,Unix第五个版本就以“仅用于教育目的”的协议,提供给各大学作为教学之用,成为当时操作系统课程的范例教材。各大学公司开始通过Unix源码对Unix进行了各种各样的改进和拓展。1978年学术界的老大伯克利大学,推出了一份以第六版为基础,加上一些改进和新功能而成的Unix。并命名为BSD(Berkeley Software Distribution伯克利分发版),开创了Unix的另一分支:BSD系列,这就是著名的“1 BSD(1st Berkeley Software Distribution)”。 于是乎Unix就有了两个分支,一个就是BSD系列的分支,一个就是Bell本身发放的分支,当时因为Bell属于AT&T,AT&T受到了美国《谢尔曼反托拉斯法》的影响,不能销售除了电话机电报机等之外的商品,后来AT&T分解,Bell可以卖Unix了,Unix走向了商业化,如果想继续使用就需要购买授权,一份授权4万美元。

C语言的诞生和unix的发展密不可分。前面提及1969—1970 年,美国贝尔实验室的 KenThompson 和 DennisRitchie 等使用汇编语言编写了第一个版本的 UNIX 操作系统。

由于 UNIX 操作系统良好的性能,在其发布初期,就得到迅速的推广和应用。1973 年,KenThompson 和 DennisRitchie 在做系统内核移植开发时,感觉使用汇编语言很难实现。后来决定使用一种称为BCPL(BasicCombinedProgrammingLanguage) 的语言进行开发,在开发过程中,他们在 BCPL 的基础上做了进一步的改进,推出了 B 语言(取 BCPL 第一个字母)。

后来发现使用 B 语言开发的 UNIX 内核,还是无法达到他们的预期要求,于是在 B 语言的基础上,做了进一步的改进,设计出了具有丰富的数据类型,并支持大量运算符的编程语言。改进后的语言较B语言有质的飞跃,取名为 C 语言,并使用 C 语言成功重新编写了 UNIX内核。

至此,使用 C 语言编写内核的 UNIX 版本已相当稳定,且具有良好的可移植性,为 UNIX 的进一步推广和普及奠定了坚实的基础,也展现了 C 语言与 UNIX 的完美结合及 C 语言在编写系统软件时得天独厚的优势。

到了 1973 年,UNIX 系统的绝大部分源代码都用C语言进行了重写,这是UNIX的第三版本,这为提高 UNIX 系统的可移植性打下了基础(之前操作系统多采用汇编语言,对硬件依赖性强),也为提高系统软件的开发效率创造了条件。可以说,UNIX 系统与C语言是一对孪生兄弟,具有密不可分的关系。

20 世纪 70 年代初,计算机界还有一项伟大的发明——TCP/IP 协议,这是当年美国国防部接手 ARPAnet 后所开发的网络协议。美国国防部把 TCP/IP 协议与 UNIX 系统、C语言捆绑在一起,由 AT&T 发行给美国各个大学非商业的许可证,这为 UNIX 系统、C语言、TCP/IP 协议的发展拉开了序幕,它们分别在操作系统、编程语言、网络协议这三个领域影响至今。肯·汤普森和丹尼斯·里奇因在计算机领域做出的杰出贡献,于 1983 年获得了计算机科学的最高奖——图灵奖。

图为肯·汤普森与丹尼斯·里奇的合影,天才都是不修边幅的……

随后出现了各种版本的 UNIX 系统,目前常见的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等。

AT&T和BSD的纠纷

前面提及,1978年,学术界的老大柏克利大学 (UC Berkeley),推出了一份以第六版为基础,加上一些改进和新功能而成的 Unix。

1979年,AT&T推出第七版System V,支持x86架构。但同时特别声明“不可对学生提供源码”。

虽然 AT&T的Unix System V也是非常优秀的Unix版本,但是BSDUnix在Unix领域内的影响更大。AT&T的Unix系统实验室一直关注着BSD的发展,在1992年,Unix系统实验室指控BSDI──一家发行商业BSDUnix的公司,违反了AT&T的许可权,发布自己的Unix版本,并进一步指控伯克利计算机系统研究组泄漏了Unix的商业机密(此时的4.3BSD中来自AT&T Unix的代码已经不足10%)。

这个官司影响了很多Unix厂商,使他们不得不从BSD Unix转向UnixSystem V,以避免法律问题。以至于当今大多数商业Unix版本都是基于Unix System V的。

由于最后判决悬而未决,这桩法律诉讼将BSD后裔的开发,特别是自由软件,延迟了两年,这导致没有法律问题的Linux内核获得了极大的支持。Linux跟386BSD的开发几乎同时起步,Linus说,当时如果有自由的基于386的Unix-like操作系统,他就可能不会创造Linux。尽管无法预料这给以后的软件业究竟造成了什么样的影响,但有一点可以肯定,Linux更加丰富了这块土壤。

这场官司一直打到 AT&T将自己的Unix系统实验室卖掉,这个时候已经是1993年,新接手的Novell公司采取了一种比较开明的做法,允许BSDI自由发布自己的BSD,但是前提是必须将来自于AT&T的代码完全删除,于是诞生了4.4 BSD Lite版,由于这个版本不存在法律问题,4.4BSD Lite成为了现代BSD系统的基础版本。

由于BSD系统已经十分成熟,作为对操作系统进行研究的目标已经达到,伯克利计算机系统研究组(CSRG)在发布了4.4BSD-lite2之后就解散了,小组的科研人员有些进入了Unix商业公司,有些继续进行其他计算机领域的研究。此时,严格意义上的Unix System V和BSDUnix都不复存在了,存在的只是他们的各种后续版本。此后,BSD Unix走上了复兴的道路。BSD的开发也走向了几个不同的方向,并最终导致了FreeBSD、OpenBSD和NetBSD的出现。

Unix的版权曾经为AT&T所有,之后Novell拥有了Unix,再之后Novell又将版权出售给了SCO(这一事实双方尚存在争议)。有很多大公司在取得了Unix的授权之后,开发了自己的Unix产品。

开源领袖--斯托曼

AT&T不再开发源码的这种商业态度,让当时许许多的Unix的爱好者和软件开发者们感到相当的痛心和忧虑,他们认为商业化的种种限制并不利于产生的发展,相反还能导制产品出现诸多的问题。随着商业化Unix的版本的种种限制和诸多问题,引起了大众的不满和反对。于是,大家开始有组织地结成“反叛联盟”以此对抗欺行罢市的AT&T等商业化行为。

另一方面,关于“大教堂”(集权、封闭、受控、保密)和“集市”(分权、公开、精细的同僚复审)两种开发模式的对比成为了新思潮的中心思想。这个新思潮对IT业产生了非常深远影响。为整个计算机世界带来了革命性的价值观。

此时,一个名叫Richard Stallman的领袖出现了,他认为Unix是一个相当好的操作系统,如果大家都能够将自己所学贡献出来,那么这个系统将会更加的优异!他倡导的Open Source的概念,就是针对Unix这一事实反对实验室里的产品商业化私有化。

尽管Stallman既不是、也从来没有成为一个Unix程序员,但在后1980的大环境下,实现一个仿Unix操作系统成了他追求的明确战略目标。Richard Stallman早期的捐助者大都是新踏入Unix土地的老牌ARPANET黑客,他们对代码共享的使命感甚至比那些有更多Unix背景的人强烈。

为了这个理想,Richard Stallman于1984年创业了GNU,计划开发一套与Unix相互兼容的的软件。1985 年 Richard Stallman 又创立了自由软件基金会(Free Software Foundation)来为 GNU 计划提供技术、法律以及财政支持。

尽管 GNU 计划大部分时候是由个人自愿无偿贡献,但 FSF 有时还是会聘请程序员帮助编写。当 GNU 计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被 Red Hat 兼并的 Cygnus Solutions。

GNU组织的建立,延续了当年Unix刚出现时的情形,并为这种情形建立了可靠的法律和财务保障。GNU 工程十几年以来,已经成为一个对软件开发主要的影响力量, 创造了无数的重要的工具。例如:强健的编译器,有力的文本编辑器,甚至一个全功能的操作系统。从那时开始,许多程序员聚集起来开始开发一个自由的、高质量、易理解的软件,让这使得Unix社区生机勃勃,一派繁荣景象。

自90年代发起这个计划以来,GNU 开始大量的产生或收集各种系统所必备的组件,像是——函数库(libraries)、编译器(compilers)、调试工具(debugs)、文本编辑器(text editors)、网站服务器(web server),以及一个Unix的使用者接口(Unix shell)等等,等等。

但由于种种原因,GNU一直没有开发操作系统的kernel。正当Richard Stallman在为操作系统内核伤脑筋的时候,Linux出现了。正是因为Unix的不开源路线促成了Linux的诞生,Linus Torvalids 在1991年创造了Linux –这并不是一个简单的Unix克隆版本,只不过它长得像Unix(系统结构和功能上),该内核和GNU套件整合后形成了如今各式各样的Linux版本。

GNU

GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。

为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。

简介

GNU是“GNU's Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同)。UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。

历史

1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。

到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs。GCC(GNU Compiler Collection,GNU编译器集合),是一套由 GNU 开发的编程语言编译器。以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。

1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)

许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。

GNU 包含3个协议条款,

  GPL:GNU通用公共许可证(GNU General Public License)

  LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License), ) ,旧称 GNU Library General Public License (GNU 库通用公共许可证);

  GFDL :GNU自由文档许可证(GNU Free Documentation License )的缩写形式。

  这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。GPL 通过如下途径实现这一目标:

  1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。

  2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。

  3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。

  由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证

  在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只有这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)

Solaris 和 FreeBSD

我们重点介绍一下 Solaris,它是 UNIX 系统的一个重要分支。Solaris 除可以运行在 SPARC CPU 平台上外,还可以运行在 x86 CPU 平台上。在服务器市场上,Sun 的硬件平台具有高可用性和高可靠性,是市场上处于支配地位的 UNIX 系统。

对于难以接触到 Sun SPARC 架构计算机的用户来说,可以通过使用 Solaris x86 来体验世界知名大厂的商业 UNIX 风采。当然,Solaris x86 也可以用于实际生产应用的服务器,在遵守 Sun 的有关许可条款的情况下,Solaris x86 可以免费用于学习研究或商业应用。

FreeBSD 源于美国加利福尼亚大学伯克利分校开发的 UNIX 版本,它由来自世界各地的志愿者开发和维护,为不同架构的计算机系统提供了不同程度的支持。FreeBSD 在 BSD 许可协议下发布,允许任何人在保留版权和许可协议信息的前提下随意使用和发行,并不限制将 FreeBSD 的代码在另一协议下发行,因此商业公司可以自由地将 FreeBSD 代码融入它们的产品中。苹果公司的 OS X 就是基于 FreeBSD 的操作系统。

FreeBSD 与 Linux 的用户群有相当一部分是重合的,二者支持的硬件环境也比较一致,所采用的软件也比较类似。FreeBSD 的最大特点就是稳定和高效,是作为服务器操作系统的不错选择;但其对硬件的支持没有 Linux 完备,所以并不适合作为桌面系统。

其他 UNIX 版本因应用范围相对有限,在此不做过多介绍。

Linux 的那些往事

在Unix代码不开源之后,有昂贵的授权费用,很多大学不得不停止对其研究,老师导致上课也不知道讲什么了。在1987年荷兰有个大学教授安德鲁写了一个Minix,类似于Unix,专用于教学。当Minix流传开来之后,世界各地的黑客们纷纷开始使用并改进,希望把改进的东西合并到Minix中,但是安德鲁觉得他的系统是用于教学的,不能破坏纯净性,于是拒绝了。

1990年,Linus Torvalds 还是芬兰赫尔辛基大学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理多任务切换的程序,后来从 Minix(Andy Tanenbaum教授所写的很小的 Unix 操作系统,主要用于操作系统教学)得到灵感,进一步产生了自认为狂妄的想法——写一个比 Minix 更好的Minix,于是开始写了一些硬件的设备驱动程序,一个小的文件系统。这样0.0.1版本的 Linux 就出来了,但是它只具有操作系统内核的勉强的雏形,甚至不能运行,你必须在有Minix的机器上编译以后才能玩。这时候Linus已经完全着迷而不想停止,决定踢开 Minix,于是在1991年10 月5号发布Linux 0.0.2版本,在这个版本中已经可以运行 bash 和 gcc。

从一开始,Linus就决定自由扩散Linux,包括原代码,随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的内核开发。Linux倾向于成为一个黑客的系统——直到今天,在Linux社区里内核的开发被认为是真正的编程。由于一批高水平黑客的加入,使Linux 发展迅猛,几乎一两个礼拜就有新版或修正版的出现,到1993年底94年初,Linux 1.0 终于诞生了!Linux 1.0已经是一个功能完备的操作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道。

关于 Linux Logo 的由来是一个很有意思的话题,它是一只企鹅。

为什么选择企鹅,而不是选择狮子、老虎或者小白兔?有人说因为李纳斯·托瓦兹是芬兰人,所以选择企鹅,有人说因为其他动物图案都被用光了,李纳斯·托瓦兹只好选择企鹅。还有一种说法是李纳斯曾经被企鹅咬过手指。

我更愿意相信以下说法,企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有,不属于世界上的任何国家,可国家都无权将南极洲纳入其版图。Linux 选择企鹅图案作为 Logo,其含义是:开放源代码的 Linux 为全人类共同所有,可公司无权将其私有。

严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和应用程序的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux发行套件包含大量的软件,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org),等等。

1991至1995年间,Linux从概念型的 0.1 版本内核原型,发展成为能够在性能和特性上均堪媲美专有Unix的操作系统,并且在连续正常工作时间等重要统计数据上打败了这些Unix中的绝大部分。1995年,Linux找到了自己的杀手级应用——开源的web服务器Apache。就像Linux,Apache出众地稳定和高效。很快,运行 Apache 的 Linux 机器成了全球ISP平台的首选。约60%的网站选用Apache,轻松击败了另两个主要的专有型竞争对手。今天的LAMP(Linux , Apache, MySQL, PHP)已经成为了架构 Web 服务器的主要首选。

李纳斯·托瓦兹无疑是这个世界上最伟大的程序员之一,何况,他还搞出了全世界最大的程序员交友社区 GitHub (开源代码库及版本控制系统)。

现如今的Linux不但可以装在几乎所有的主流服务器上,当然也包括桌面的X86系统中。其还常常被用于嵌入式系统,机顶盒、手机、交换机、游戏机、PDA、网络交换机、路由器、等等,都是因为 Linux 那精彩的内核。

Linux 的出现,不仅仅给世界带来了一个免费的操作系统,也不仅仅是对 Unix 自由、共享的文化的延续,它的出现带给了计算机世界自 Unix、GNU 以来更为成熟的思想和文化。

UNIX与Linux的亲密关系

二者的关系,不是大哥和小弟,'UNIX 是 Linux 的父亲'这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。

二者也有两个大的区别:

1、UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;2、UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。

Linux 受至旷大计算机爱好者的喜爱,主要原因也有两个:它属于开源软件,用户不用支付可费用就可以获得它和它的源代码,并且可以根据自己的需要对它进行必要的修改,无偿使用,无约束地继续传播;它具有 UNIX 的全部功能,任何使用 UNIX 操作系统或想要学习 UNIX 操作系统的人都可以从 Linux 中获益。

开源软件是不同于商业软件的一种模式,从字面上理解,就是开放源代码,大家不用担心里面会搞什么猫腻,这会带来软件的革新和安全。

另外,开源其实并不等同于免费,而是一种新的软件盈利模式。目前很多软件都是开源软件,对计算机行业与互联网影响深远。

近年来,Linux 已经青出于蓝而胜于蓝,以超常的速度发展,从一个丑小鸭变成了一个拥有庞大用户群的真正优秀的、值得信赖的操作系统。历史的车轮让 Linux 成为 UNIX 最优秀的传承者。

总结一下 Linux 和 UNIX 的关系/区别

Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。

说模仿可能会被人喷,你也可以说微创新或者改进。相比于 UNIX,Linux 最大的创新是开源免费,这是它能够蓬勃发展的最重要原因;而目前的 UNIX 大部分都是收费的,小公司和个人都难以承受。

正是由于 Linux 和 UNIX 有着千丝万缕的联系,所以人们把 Linux 叫做“类UNIX系统”,下节我们将会着重讲解。

UNIX/Linux系统结构

UNIX/Linux 系统可以粗糙地抽象为 3 个层次(所谓粗糙,就是不够细致、精准,但是便于初学者抓住重点理解),如图 3 所示。底层是 UNIX/Linux 操作系统,即系统内核(Kernel);中间层是 Shell 层,即命令解释层;高层则是应用层。

UNIX/Linux 系统结掏层次概要

1) 内核层内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

2) Shell层Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

3) 应用层应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。

现在大多数的 UNIX 系统上(包括 Solaris、HP-UX、AIX 等)都可以运行 CDE (Common Desktop Environment,通用桌面环境,是运行于 UNIX 的商业桌面环境)的用户界面;而在 Linux 上广泛应用的有 Gnome(见图

4)KDE 等。

X Window 与微软的 Windows 图形环境有很大的区别:UNIX/Linux 系统与 X Window 没有必然捆绑的关系,也就是说,UNIX/Linux 可以安装 X Window,也可以不安装;而微软的 Windows 图形环境与内核捆绑密切。UNIX/Linux 系统不依赖图形环境,依然可以通过命令行完成 100% 的功能,而且因为不使用图形环境还会节省大量的系统资源。

图 Gnome图形界面

作为服务器部署,绝大多数 Linux 并不安装或并不启用图形环境.

Linux的发行版本

我们知道Linux或者Unix是一个操作系统,1991年的Linus Torvalds公布的是Linux的内核(kernel)。但是要注意的是,公布的是源码,并不是编译好的直接可安装的操作系统,我们如何安装一个操作系统呢?很简单啊,就是先下载一份源码,然后进行编译安装,但是编译的时候程序需要运行在操作系统上啊,操作系统呢?还没有编译呢。于是就陷入了一个死循环中,就是我们要安装操作系统,就需要编译,编译的时候需要操作系统,这样就是鸡生蛋,蛋生鸡。

这里就需要引入交叉编译了,具体做法是假设我们要在电脑上安装Linux,我们把A的硬盘拆下来,放到已经安装了操作系统的电脑B上,然后编译,将编译好的操作系统放到硬盘上,再把硬盘装回去,开机启动,这就是交叉编译安装系统。

这得有多难啊,入门难度实在太高了,所以我们迫切需要一种简单的方式来安装。于是就出现了这么一种公司,他们将已经公开好的Kernel(内核)再加上一些开源的周边软件收集起来编译成二级制文件放到网上供别人使用,其中Red Hat(红帽)就是其中著名的一家。我们知道Linux是遵循GPL协议的,也就是公开免费的,那么他们怎么盈利呢?既然不能卖软件,那么就卖服务呗,比如说,发现了Linux漏洞,然后Red Hat修复,如果你买了我们的服务,我们就将补丁程序给你,并指导你安装,所有问题都帮你解决。

世界上总是不缺好事者,RedHat既然可以这么做,为什么就不能有好心人免费做呢?是的,有这样一个社区,他们把RedHat的源码拿过来,然后编译成操作系统放出去,这就是CentOS,就是社区版的RedHat,所以基本RedHat的补丁包出来一个月之后,CentOS就出现对应的补丁包了。这对于Red Hat是好事还是坏事呢?这恐怕只有当事人知道了,不过在2014年年初传来消息,RedHat收编了CentOS的团队。就像MSDN I TELL YOU 上面都是微软的正版软件,可以随便下载,但是这不也是为微软做了免费宣传吗。

当别人说Linux的版本时,一般来说有两个版本,一个是内核的版本,一个是发行的版本。例如登录到我的ubuntu终端执行命令uname -a:

root@AI-Machine:~# uname -aLinux AI-Machine 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:26:51 UTC 2018 i686 i686 i686 GNU/Linuxroot@AI-Machine:~#

4.13.0是内核版本,16.04是指ubunut发行版本。

现在常见的linux操作系统有:ubuntu、红帽、深度、Centos。

(0)

相关推荐

  • 【科普】什么是Linux?Linux发行版必须开源免费吗? 来自 HeroCreeper

    ‼️长文警告‼️ 本文约2100字,建议在空闲时间看. 你很可能听说过"Linux":知名的Android操作系统基于"Linux",多数网络服务器上运行的是& ...

  • 十分钟带你深入了解Linux的世界

    我们大多数人都听说过Linux术语,并认为它是IT界使用的一些高级术语.如果不是Linux,则您会听到" Ubuntu "或" Mint ",它们是Linux的 ...

  • linux发展,应用与前景,主要特点,版本与系统主要组成

    UNIX系统的出现 1969年在美国的贝尔实验室K.Thompson 和D.M.Richie开发了名为UNIX的多用户多任务操作系统. UNIX操作系统相当可靠并运行稳定,至今仍广泛应用于银行.航空. ...

  • Linux GNU是什么?Linux基础入门

    对于熟悉Linux系统的朋友们而言,GNU是一个既熟悉又陌生的词,很多人在阅读有关Linux文章时,经常会看到Linux前面有一个"GNU".那么GNU到底是什么?和Linux是什 ...

  • Linux和UNIX的关系及区别(详解版)

    UNIX 与 Linux 之间的关系是一个很有意思的话题.在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞 ...

  • 万字长文:巴菲特投资思维精解

    '如果所有人都失去理智,你仍能保持头脑清醒: 如果你能等待,不要因此厌烦, 如果你是个爱思考的人--光想会达不到目标: 如果所有人都怀疑你,你仍能坚信自己,让所有的怀疑动摇: 你就可以拥有一个世界,这 ...

  • 两万字实操手册:法律尽调详解附检索工具

    法律尽职调查是对相关法律事务具有法律意义的背景资料进行应有的调查,使相关法律事务的处理建立在客观.全面的信息基础之上,以确保相关法律事务的处理能够达到预期的结果,而不因相关信息在真实性.完整性.全面性 ...

  • 埙的历史详解之话说秦埙

    说起"秦埙"在吹埙人之间可能都听说过,似乎成了埙的代名词.连我的邻居老刘头前天见了我还说:"你昨天吹的是秦埙吧",这个名词也不知他是从哪听来的. 看来" ...

  • Linux rsync命令用法详解

    在 Linux 系统下,数据备份的工具很多,除了前面介绍了 tar.cpio.dd 命令之外,本节再介绍一个用来备份数据的命令,就是 rsync. 从字面意思上,rsync 可以理解为 remote ...

  • Linux各种重要配置文件详解https://www.cnblogs.com/ginvip/p/6351740.html

    Linux各种重要配置文件详解https://www.cnblogs.com/ginvip/p/6351740.html

  • Linux 常用 ls命令详解

    ls命令是linux常用命令之一,用于在命令控制台提示符中列出目录和文件信息.   一.ls命令用法: ls命令运行在命令提示符终端,用法如下.其中[选项]和为可选参数,可以一零个或者多个选项:[文件 ...

  • Linux系统的文件系统详解

    Linux系统文件系统: 1.文件系统介绍 文件系统是linux的一个十分基础的知识,同时也是学习linux的必备知识. 本文将站在一个较高的视图来了解linux的文件系统,主要包括了linux磁盘分 ...

  • Linux下source命令详解

    source命令用法# source FileName source命令作用# 在当前bash环境下读取并执行FileName中的命令. *注:该命令通常用命令"."来替代. 使用 ...