不要说专业的程序员,就算是平常和计算机打交道的人们也很难不会不知道除了windows操作系统外还有其他的桌面操作系统,linux和Unix系统就是其中的翘楚,那么他们之间是什么关系呢?
Linux就是Unix克隆(派生),它是由Linus Torvalds在全球一些黑客的帮助下从头开始编写的。Linux is a clone of the operating system Unix, written from scratch by Linus Torvalds with assistance from a loosely-knit team of hackers across the Net.
这段话来源于:Linux kernel 源代码顶层目录下的README文件, Linux kernel release 2.6.xx。相信大家对他们之间的关系不明觉厉了吧。
Linux就是Unix克隆,实际上在创建Linux之前和Windows兴起之前,计算世界由Unix和Unix操作系统家族主导。
Unix 操作系统的诞生:Unix诞生于1960年代后期。AT&T贝尔实验室的一个由肯·汤普森领导下小型程序员小组,发布了一个用C编写的操作系统被命名为Unix,那时的操作系统不是可移植的,使用低能源语言意味着为操作系统编写的硬件平台就是它所依赖的平台。但是使用C语言编写的Unix使得可以将其移植到其他硬件体系结构中,它可以更快地进行修改和移植。
Unix被认为是大多数操作系统的母亲,它具有以下特征:
· 使用纯文本进行数据存储;
· 分层文件系统;
· 处理设备和某些特定类型的进程间通信(IPC)作为文件;
· 使用大量的软件工具;
· 可以通过命令行解释器使用管道将多个小型,简单和模块化的程序线程化在一起,而使用包含所有相同功能的单个整体程序则相反;
Unix Philosophy:Unix操作系统的可移植性(帮助Unix在其他研究,学术和商业环境中的快速采用)使某些操作系统的核心设计概念吸引了程序员和用户。Unix哲学是针对软件模块化设计,其思想是可以将小型的,专门构建的程序组合起来,以处理大型和复杂的任务。因为Unix是围绕管道和文件设计的,所以这种将程序的输入和输出"插入"到输入的直接操作集的方法今天仍然很流行。实际上,当前的云功能即服务(FaaS)/无服务器体系架构起源于Unix思维方式。
"尽管不能用一句话写下哲学,但其核心思想是系统的力量更多地来自程序之间的关系,而不是程序本身。许多Unix程序孤立地完成琐碎的事情,但与其他程序结合在一起,成为通用且有用的工具。"– Brian Kernighan和Rob Pike(开发Unix的主要贡献者)。
Unix体系结构:如果了解了Unix的架构,基本上可以说对所有的操作系统就都有了一个认知。
Unix的主控制程序是其内核。内核可以完全控制整个系统,是操作系统的心脏,并充当用户和硬件之间的接口。每个内核子系统都具有某些功能,例如并发,虚拟内存,分页和虚拟文件系。在体系结构的外层,具有"外壳"(shell)、命令和应用程序。Shell是用户和内核之间的接口。Shell和用户键入命令,解释这些命令并相应地调用计算机程序。
Unix的历史:由于肯·汤普森于1970年代开始在伯克利大学"休假",许多Unix的故事就从这里开始了,在伯克利期间汤普森继续Unix研究并发布了版本,从而创建了Berkeley Software Distribution,即BSD(最初,BSD并未想和AT&T Unix竞争)。1979年2BSD(第二个Berkeley软件发行版)问世时,Berkeley研究生Bill Bill Joy提供了更多程序,如vi和C shell(/bin/csh),商业化的Unix产品在1980年代和1990年代初变得很普遍。随着Unix家族树的不同分支的形成,随之而来的是"Unix战争"。。。可以关于Unix的战争可以说很久(现在的苹果macOS操作系统是从BSD派生的),甚至可以拍一部"宫廷剧"(给美国短暂的历史增加一些戏码),但这超出了本文的范围(和篇幅),我就此打住,就知道版本多,主权复杂就好了。
Unix最主要的特点:Unix是一个多任务,多用户计算机操作系统家族,它可以用作工作站和服务器中的主控制程序。但是Unix并不是开源软件,这意味着任何想要使用它的人都需要向拥有它机构购买许可证。
Linux操作系统的来源:Linux操作系统是1990年代开始的两个项目的结合。理查德·斯托曼希望建立一个免费和开源的Unix替代方案。他将程序命名为GNU,意思是"GNU不是Unix!"但项目进展很困难,由于没有内核支持,对自由和开源操作系统的任何希望都将落空。随后出现了赫尔辛基大学的Linus Torvald,它有一个名为Linux的可行内核,Linus使用了许多GNU工具,事实证明它们非常适合Linux内核。于是两个项目结合就诞生了Linux操作系统(Linux发行版)。Linux发行版中包含的大多数软件都是免费和开源的。
Linux内核是重写的:Linux内核代码是完全从头开始编写的。它的设计方式使其类似于Unix,但其中没有原始的Unix代码。它是Unix设计基础的延续。还值得注意的是,Linux只是内核,而不是完整的OS。该Linux内核通常打包在Linux发行版中,从而使其成为一个完整的OS。因此,Linux只是内核,Unix本身就是一个完整的OS。
基于Linux的OS体系结构:可以看出仍然有Unix的印记:
因此,通过向Linux发行版添加不同的应用程序,实际上可以使Linux内核完全可用作操作系统。现在总共大约有600个Linux发行版。Linux OS主要针对家用PC和笔记本电脑。但是,由于它的普及性和稳定性,它开始在办公室和高端系统中使用,包括手机、服务器、甚至是嵌入式系统现在最著名的移动智能操作系统google的Android就是基于Linux的,Android OS的每个迭代都基于当前的Linux内核。
Linux是类Unix的操作系统:人们确实在Unix和Linux之间混淆了很多,他们通常会问诸如:Linux和Unix是同一回事吗?Linux是否建立在Unix上?这样的问题。这些所有的疑惑都是有答案的:Linux和Unix不同,但是它们确实有关系,因为Linux是从Unix克隆(派生)的。Linux不是Unix,而是类似Unix的操作系统。根据Linux内核官方README文件(见文章开头),它的目标是符合POSIX。
什么是类Unix的操作系统呢?以类似于Unix系统的方式工作,但不必符合单一Unix规范(SUS)或类似的POSIX(可移植)操作系统接口)标准。SUS是任何操作系统都必须满足的标准,才能使用Unix商标。该商标由"The Open Group"授予。
开源软件:Linux的开发是由世界各地的开发人员团体免费提供的(Linux内核由社区开发,Linus Torvalds负责监督事务),Linux OS是一个开源OS,其源代码是免费提供的。任何人可以在计算机上阅读、修改和实现它。但是,不能出售它,因为它受GNU GPL许可。Linux的开发是自由和开源软件协作的最杰出例子之一。开源理念就此兴起,开始了自由开源的时代。
操作系统是非常复杂的系统工程,Unix和Linux操作系统的区别可以写一本小说。通过表格的方式简单看一下:
Linux的局限性
· 没有标准版的Linux
· Linux对驱动程序的支持不完整,这可能导致整个系统无法正常运行。
· 至少对于新用户而言,Linux不如Windows易于使用。
· 我们用于Windows的许多程序只有在复杂的仿真器的帮助下才能在Linux上运行。例如。微软办公软件。
· Linux最适合企业用户。在家庭环境中引入它要困难得多。
Unix的局限性
· 不友好,简洁,不一致且非助记符的用户界面
· Unix OS是为慢速计算机系统而设计的,因此您不能期望获得快速的性能。
· Shell界面可能是危险的,因为键入错误会破坏文件。
· 各种计算机上的版本略有不同,因此缺乏一致性。
· Unix不提供任何有保证的硬件中断响应时间,因此它不支持实时响应时间系统。
从用户的角度来看,Linux和Unix之间并没有很多明显的区别。Linux的许多吸引力来自于以下事实:它可以在不同的体系结构类型(包括现代PC)上工作,并且它的工具为Unix用户和系统管理员所熟悉。
Linux和Unix之间的其他差异主要与许可有关。Linux vs Unix主要是免费 vs 许可软件的较量。除此之外,Unix发行版缺少通用内核这一事实也影响到软件和硬件供应商。使用Linux,供应商可以合理地期望它可以在大多数发行版中正常运行,从而为特定的硬件设备创建设备驱动程序。但是由于Unix具有商业和学术分支机构,因此可能有必要针对所有Unix变体发布不同的驱动程序。还存在许可问题,以及与跨多个版本的Unix作为二进制设备驱动程序访问软件的SDK或分发模型有关的其他担忧。
Unix和Linux都是伟大的操作系统,创造了人类计算机的历史。现在的操作系统中还有很多他们的印记。Unix很老,据说是所有操作系统的母亲,Linux内核也源自Unix,说明他们之间有着纠缠不清的关系。Linux OS非常适合中小型操作,如今,它还用于以前被认为是Unix唯一选择的大型企业。但是遗憾的是,由于各种原因,Unix和Linux的商业市场反应都不好。
反倒是后起之秀Windows和在Unix基础上发展而来的MacOS大出风头,倒是有些让人唏嘘。近年来Linux借助Google的Android在移动市场倒是火热起来,总算让人有了些安慰。