Linux与Unix到底有什么不同?
来自:开源中国
原文:Linux vs. Unix: What's the difference?
链接:
https://opensource.com/article/18/5/differences-between-linux-and-unix
译者:Tocy, LinuxTech, 琪花亿草, lnovonl, 雪落无痕xdj, kevinlinkai, 无若
如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中。数十年来,它一直是数据中心的重要参与者,尽管很难找到明确的操作系统市场份额的报告,但Linux在数据中心操作系统上的份额可能高达70%,而Windows变体几乎涵盖了所有剩余的比例。使用任何主流公共云的开发人员可以假定目标系统将运行Linux。近些年来,随着Android和基于Linux的嵌入式系统在智能手机、电视、汽车和其他设备中的应用,Linux随处可见的证据比比皆是。
即便如此,大多数软件开发人员,甚至是那些在这场古老的“Linux革命”中成长的软件开发人员,也至少听说过Unix。这听起来与Linux类似,你可能已经听说过人们可以互换地使用这些术语。或者你也许听说过Linux被称为“类Unix”操作系统。
那么,这个Unix是什么呢? 一些漫画种讲到的是坐在发绿光的屏幕后面的精灵般的“老人”,他编写C代码和shell脚本,由老式的滴灌咖啡所驱动。但除了那些1970年代那些老去的C程序员以外,Unix有更丰富的历史。虽然详细介绍Unix历史和“Unix与Linux”比较的文章比比皆是,但本文将提供高层的背景介绍和这些互补世界之间的主要差别的列表。
Unix 开端
Unix的历史起始于二十世纪六十年代的AT&T贝尔实验室,在那时,一小组程序员正在为PDP-7编写多任务、多用户操作系统。在贝尔实验室研究机构的这个小组里有两位最知名的人物,ken Thompson和Dennis Ritchie。尽管Unix的许多概念继承于它的先驱Multics,但在二十世纪八十代早期Unix小组用C语言重写这个小型操作系统的决定使得Unix与其它的系统区别开来。那个时候的操作系统很少是可移植的。相反,由于先天的设计和底层源语言,那些操作系统和所被授权运行的硬件平台紧密地联系在一起。通过使用C语言重构Unix,现在Unix可以被移植到许多硬件平台。
除了这个新的可移植移能力,有几个对于用户和程序员来说很有吸引力的操作系统设计的关键点使得Unix扩张到除贝尔实验室以外的其它领域,如研究、学术甚至商业用途。关键点一,Ken Thompson的Unix哲学成为了模块化软件设计和计算的强有力的典范。Unix哲学建议使用小规模的为特定目的构建的程序的结合体来处理复杂的总体任务。由于Unix是围绕着文件和管道设计的,这个"piping(管道)“模型至今仍然很流行,它把程序的输入和输出链接在一起作为一系列的线性输入操作。实际上,当今的函数即服务(FaaS)/无服务器计算模型要更多地归功于对Unix哲学的继承。
快读增长和竞争
在20世纪70和80年代末,Unix成为了族谱的根,族谱扩展到研究届、学术届和不断增长的商业Unix操作系统业务。Unix不是开源软件,Unix源码可以与它的拥有者AT&T通过协议获得许可证。第一个已知的软件许可证在1975年卖给了伊利诺伊大学。
Unix在学术界发展迅速,随着伯克利成为重要的活动中心,在70年代给了Ken Thompson一个学术休假。通过在伯克利的Unix的所有活动,一个新的Unix软件支付诞生了:伯克利软件发行版,或者叫BSD。最初,BSD并不是AT&T的Unix的代替品,而是附加软件和功能附加品。直到1979年的2BSD(第二Berkeley软件发型版),伯克利研究生Bill Joy已经添加了现在知名的程序,例如vi和C shell(/bin/csh)。
除了BSD,它成为了Unix家族中最受欢迎的分支之一,Unix的商业产品在20世纪80年代和90年代激增,包括HP-UX、IBM的AIX、Sun的Solaris、Sequent和Xenix。随着分支从最初的根开始增长,“Unix战争”开始了,标准化成为了社区的一个新焦点。POSIX标准诞生于1988年,以及其他开源工作组的标准化工作一直进行到到20世纪90年代。
大约在这个时候,AT&T和Sun发布了System V Release 4(SVR4),这是许多商业厂商采用的。另外,BSD家族的操作系统在过去的几年里不断增长,导致了一些开源的变种,这些变种是在现在熟悉的BSD许可下发布的。这包括FreeBSD、OpenBSD和NetBSD,每个都在Unix服务器行业中有一个稍微不同的目标市场。这些Unix变体在今天仍然有一些使用,尽管许多人已经看到他们的服务器市场份额减少到个位数(或更低)。
BSD可能是当今所有现代Unix系统中最大的安装基础。此外,在最近的历史中,每一个苹果Mac硬件单元搭载的系统都可以被称为BSD,因为它的OS X(现在的macOS)操作系统是一个BSD-派生。
虽然Unix的完整历史和它的学术和商业变体可能需要更多的篇幅来介绍,但是为了突出我们的文章的重点,让我们继续关注Linux的兴起。
讲讲 Linux
今天我们所说的Linux操作系统实际上是90年代初期的两个成果的组合。Richard Stallman希望创建一个作为替代私有Unix系统的真正免费的和开源的系统。他正在以GNU的名义开发实用工具和程序,这是一种递归算法,意思是“GNU不是Unix!” 虽然它有一个内核项目正在进行,但结果证实开展起来很困难,这样没有内核,免费并开源操作系统的梦想就无法实现。
这是Linus Torvald的工作 - 编写出一种可工作的和可行的内核,被他称为Linux--整个操作系统因此而诞生。鉴于Linus使用的是多种GNU工具(例如GNU编译器集合或GCC),GNU工具和Linux内核的结合是天生的绝配。
Linux发行版使用GNU提供的组件、Linux内核,MIT的X-Windows GUI以及其他可以在开源BSD许可下使用的BSD组件来实现。像Slackware和Red Hat这样的发行版的早期流行给了上世纪90年代的“普通PC用户”使用Linux操作系统的机会,以及他们在工作或学术生活中使用的许多专有的Unix系统功能和实用工具。
由于所有Linux组件的免费和开源,任何人都可以通过一些努力来创建一个Linux发行版,很快,发行版的总数就达到了数百个。今天,http://distrowatch.com列出了312种独特的Linux发行版。当然,许多开发人员通过云提供商使用linux或使用流行的免费发行版,如Fedora、Canonical的Ubuntu、Debian、Arch Linux、Gentoo和许多其他变体Linux。
在免费和开源组件之上提供支持的商业Linux产品变得可行,因为包括IBM在内的许多企业都从专有的Unix迁移到在Linux上提供中间件和软件解决方案。Red Hat在Red Hat Enterprise Linux周围建立了一个商业支持模型,德国供应商SUSE Linux Enterprise Server(SLES)也是如此。
比较 Unix 和 Linux
目前为止,我们已经了解了Unix的历史,和Linux的崛起,以及与Unix不同的以免费和开源为基础的GNU/Free软件基金会。这两个操作系统有着相同的文化遗产和相同的目标,我们现在来看一下他们的区别。
从一个用户体验角度来讲,没有太多区别!Linux的大部分优点包括操作系统可跨多硬件架构(包括现代PC)特性,以及能够让Unix系统的管理员和用户使用他们熟悉的工具的能力。
由于POSIX标准和兼容性,在Unix上编写的软件可以在Linux操作系统上编译,而在移植方面不用花费太多的功夫。很多情况下,Shell脚本可以直接在Linux上使用。虽然在Unix和Linux之间有一些工具的标志/命令行选项略微不同,但是他们的很多操作是相同的。
要注意的一方面是,作为把Linux作为主要目标的开发平台,macOS设备和操作系统的普及,可能归功于类BSD的macOS操作系统。很多Linux系统工具和脚本可以简单地在macOS终端运行。很多在Linux上可用的开源软件组件也可以在macOS上使用,如Homebrew。
其他Linux和Unix区别主要与授权模式相关:开源vs.私有,授权软件。此外,Unix发行版中缺少通用内核对软件和硬件供应商都有影响。对于Linux,供应商可以为特定硬件设备创建设备驱动,并有理由预计,它可以在大多数发行版中运行。由于Unix家族的商业和学术分支,供应商可能不得不为不同版本的Unix开发不同的驱动,而且作为很多不同版本的Unix的二进制设备驱动,对这些软件的SDK或者发行版本的访问,也会让他们有授权和其他方面的担忧。
在过去十年中随着这两个社区的日渐成熟,Linux中许多进步已经在Unix世界中被采用了。许多GNU实用程序已经被作为Unix系统的附属而提供,他们提供了开发人员需要的来自不属于Unix的GNU程序的功能。例如,IBM的AIX为Linux应用程序提供了一个AIX工具箱,其中包含数百个GNU软件包(如Bash、GCC、OpenLDAP和许多其他软件包),这些软件包可添加到AIX安装中以简化基于Linux和基于Unix的AIX系统之间的迁移。
私有的Unix仍然存在,并且状况不错,随着许多主流供应商承诺支持其当前版本知道2020年,不言而喻,在可预见的未来Unix依然会出现。此外,Unix树的BSD分支是开源的,而NetBSD、OpenBSD和FreeBSD都有强大的用户群和开源社区,它们可能不像Linux那样可见或活跃,但在近期的服务器份额报告中保持不变,维持在像Web服务等领域以远高于私有Unix数量之上。
Linux 已经显示出超越专有 Unix 的显著优势在于其在大量硬件平台和设备上的可用性。 Raspberry Pi 受到业余爱好者和发烧友的欢迎,它是 Linux 驱动的,为运行 Linux 的各种物联网设备打开了大门。 我们已经提到了 Android 设备,汽车(包括Automotive Grade Linux)和智能电视,其中Linux占有很大的市场份额。 这个星球上的每个云提供商都提供运行Linux的虚拟服务器,而且当今许多最受欢迎的云本地堆栈都是基于 Linux 的,无论您是在谈论容器运行时还是Kubernetes,还是许多无服务器的平台都越来越受欢迎。
其中一个最显着的趋势是近年来微软的转变。 如果你十年前告诉软件开发人员,Windows操作系统将在2016年“运行Linux”,他们中的大多数人会歇斯底里地笑了。 但是Windows Linux子系统(WSL)的存在和普及,以及最近宣布的诸如Docker的Windows端口(包括Windows上的Linux容器)支持等功能都证明了Linux具有的影响 - 以及 显然将会继续存在 - 跨软件世界。
关于作者
Phil Estes
美国,弗吉尼亚州
Phil是IBM Watson和云平台部门的杰出工程师 & CTO、容器和Linux操作系统架构战略师。Phil目前是Docker(现为Moby)引擎项目、CNCF容器项目的OSS维护者,同时也是Open Container Initiative(OCI)技术监督委员会和Moby技术指导委员会的成员。Phil是Docker Captains计划的长期成员之一,并且与Docker生态系统的主要开源贡献者和专家有着长期的合作关系。
Linux与Unix到底有什么不同?的更多相关文章
- Linux 与 Unix 到底有什么不同?区别在哪?
Linux 与 Unix 到底有什么不同?区别在哪? 如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中.数十年来,它一直是数据中心的重要参与者,尽管很难找到明确 ...
- Linux 与 Unix 到底有啥区别和联系?
原文:https://opensource.com/article/18/5/differences-between-linux-and-unix 来源:开源中国社区,译者:Tocy, LinuxTe ...
- Linux vs Unix - Linux与Unix到底有什么不同?
来自:Linux迷链接:https://www.linuxmi.com/linux-vs-unix.html Linux和Unix这两个术语可以互换地用来指同一操作系统.这在很大程度上是由于他们惊人的 ...
- Linux,Unix,GNU 到底有什么样的渊源?
Linux,Unix, GNU,你可能经常听到这些名字被放在一起,比如 “Linux是类Unix系统”, “Linux其实应该叫 GNU/Linux” 等等.为什么会有这些说法,这些名词的历史渊源和背 ...
- 对Linux(Unix)的基础知识归纳
前言,不论是原生APP(Android&IOS),还是大型架构级基础环境(.NET&J2EE,或LAMP阵营等), 基本都不可避免的涉及到Linux(Unix),故还是觉得有必要把自己 ...
- Linux和UNIX监控
Linux和UNIX上的数据库监控工具包括监控CPU.内存.磁盘.网络.安全性和用户的监控工具.下面罗列了我们找到的有用工具及其简单描述. ps 显示系统上运行的进程列表 top ...
- 在Linux或者Unix下打开,每一行都会出多出^M这样的字符
Windows上写好的文件,在Linux或者Unix下打开,每一行都会出多出^M这样的字符,这是因为Windows与*nix的换行符不同所致,我们看看文件格式有什么不同. 在Linux下查看文件格式: ...
- 【笔记】Linux 和 Unix 作业控制
Linux 和 Unix 属于多任务的操作系统,也就是说一个系统在同一时间段内能运行多重任务(进程). 作业控制不只是能够停止/挂起(stop/suspend)正在执行的进程(命令),也可以继续/唤醒 ...
- linux 和unix 的区别
Linux与Unix的区别 某些PC机的Unix和Linux在实现方面相类似.几乎所有的商业Unix版本都基本支持同样的软件.程序设计环境和网络特性.然而,Linux和Unix的商业版本依然存在许多 ...
随机推荐
- Java编程思想:为什么要使用内部类
public class Test { public static void main(String[] args) { Callbacks.test(); } } /* 为什么需要内部类: 1.可以 ...
- ElasticSearch01--安装ElasticSearch服务(Linux)
在linux系统上安装ElasticSearch服务 Linux系统要求: 1.centos6或centos7 2.jdk1.8及以上 1. 新建用户 新建一个用户 useradd yuank 修改用 ...
- 比赛:大奔的方案solution
分析: 此题是小奔的方案的改进.小奔的方案思路:倒推,每次都从小到大排序并且保证小号在前,然后使每一个人分到的金币都是上一次加一,直到金币分完或者自己可以存活(投票率大于等于所需概率),如果不行就-1 ...
- java面试题库(长期)
本文内容来自互联网各种面试实例,以及自己的面试经历,主要是中级开发的面试题 初中级java面试主要分为几个部分: 0.序 1.java基础 2. java多线程 3. jvm知识 4. spring等 ...
- [系列] Gin框架 - 数据绑定和验证
目录 概述 推荐阅读 概述 上篇文章分享了 Gin 框架使用 Logrus 进行日志记录,这篇文章分享 Gin 框架的数据绑定与验证. 有读者咨询我一个问题,如何让框架的运行日志不输出控制台? 解决方 ...
- 用tcp协议实现一个并发的socketserver 进行密文登录
先在客户端进行摘要,客户端把用户名作为盐. 然后在服务端进行二次摘要,用固定的盐(不能让别人知道你的盐是什么),然后存到文件中,密文存储.或者和文件中的密文对比. 这样即使在网络上用户信息被截获,和存 ...
- Surging实践经验
背景 在去年9月份的时候,我入职一家做航空软件产品的公司.当时公司部门领导决定构建一个技术平台(或称为技术中台),通过该技术平台进而孵化各个业务系统.说白了就是需要通过一个分布式框架或是微服务框架提高 ...
- linux初学者-网络管理篇
linux初学者-网络管理篇 linux学习中,网络管理是非常重要的一个内容,本篇将会介绍一些ip.网关.DNS配置的一些基本内容. 1.ip配置 1.1.ip查询 在linux系统中一般可以使用& ...
- 实现一个Golang的reverse函数
Reverse函数,用来反转列表,本例子用golang实现,反转一个slice列表. 因为slice是引用类型,因此直接修改参数的值即可. func myReverse(l []string) { f ...
- 《css的总结》
一.span标签:能让某几个文字或者某个词语凸显出来 <p> 今天是11月份的<span>第一天</span>,地铁卡不打折了 </p> 二.字体风格 ...