从Linux 与 Unix 异同,看开源世界的发展!

  如果你是一名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发行版,很快,发行版的总数就达到了数百个。今天,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具有的影响 - 以及 显然将会继续存在 - 跨软件世界。

从Linux 与 Unix 异同,看开源世界的发展!的更多相关文章

  1. [转]Unix/Linux开源世界资源链接汇总

    转自:http://blog.csdn.net/21aspnet/article/details/6754126 最后更新:2012.12.04 说明:好东西在后面,Linux镜像基本涵盖全球主要下载 ...

  2. linux入门--Linux和UNIX的关系及区别

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

  3. 资料收集:学习 Linux/*BSD/Unix 的 30 个最佳在线文档

    文章转自:https://linux.cn/article-10311-1.html 手册页(man)是由系统管理员和 IT 技术开发人员写的,更多的是为了作为参考而不是教你如何使用.手册页对于已经熟 ...

  4. 1.3 Linux和UNIX的关系及区别(详解版)

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

  5. 故事 --- Linux和UNIX之间的那些爱恨与情仇

    Linux和UNIX具体有哪些关系及区别? UNIX 与 Linux 之间的关系是一个很有意思的话题.在目前主流的服务器端操作系统中,UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 ...

  6. 对Linux(Unix)的基础知识归纳

    前言,不论是原生APP(Android&IOS),还是大型架构级基础环境(.NET&J2EE,或LAMP阵营等), 基本都不可避免的涉及到Linux(Unix),故还是觉得有必要把自己 ...

  7. Linux 与 Unix 到底有什么不同?区别在哪?

    Linux 与 Unix 到底有什么不同?区别在哪? 如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中.数十年来,它一直是数据中心的重要参与者,尽管很难找到明确 ...

  8. Linux与Unix到底有什么不同?

    来自:开源中国 原文:Linux vs. Unix: What's the difference? 链接: https://opensource.com/article/18/5/difference ...

  9. Linux 与 Unix 到底有啥区别和联系?

    原文:https://opensource.com/article/18/5/differences-between-linux-and-unix 来源:开源中国社区,译者:Tocy, LinuxTe ...

随机推荐

  1. bat脚本自定义魔兽warIII运行分辨率,去黑边

    我们一般平时安装完WarIII后运行时的分辨率默认是800*600,导致有黑边的存在.所以我写了一个bat脚本来自定义WarIII的运行分辨率.需要以管理员身份运行. 下载链接: 链接:https:/ ...

  2. eShopOnContainers 知多少[2]:Run起来

    环境准备 Win10(开启Hyper-V) .NET Core SDK Docker for Windows VS2017 or VS Code Git SQL Server Management S ...

  3. Java数据结构和算法 - OverView

    Q: 为什么要学习数据结构与算法? A: 如果说Java语言是自动档轿车,C语言就是手动档吉普.数据结构呢?是变速箱的工作原理.你完全可以不知道变速箱怎样工作,就把自动档的车子从1档开到4档,而且未必 ...

  4. 安卓 App 性能专项测试指标之 CPU 深度解析

    指标背景 很多场景下我们去使用App,可能会碰到手机会出现发热发烫的现象.这是因为CPU使用率过高.CPU过于繁忙,会使得整个系统无法响应用户,整体性能降低,用户体验变得相当差,也容易引起ANR等等一 ...

  5. JavaScript 执行机制

    一.宏任务与微任务 macro-task(宏任务):包括整体代码script,setTimeout,setInterval micro-task(微任务):Promise,process.nextTi ...

  6. 利用 vue-cli 构建一个 Vue 项目

    一.项目初始构建 现在如果要构建一个 Vue 的项目,最方便的方式,莫过于使用官方的 vue-cli . 首先,咱们先来全局安装 vue-cli ,打开命令行工具,输入以下命令: $ npm inst ...

  7. MacBook IDEA激活码(附视频)

    Windows激活请看这里:IDEA激活码 此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: idea官网下载地址:https://www.jetbrains.com/idea/ ...

  8. 关于 Docker 镜像的操作,看完这篇就够啦 !(下)

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  9. 基于python脚本,实现Unity全平台的自动打包

    转载请标明出处:http://www.cnblogs.com/zblade/ 0. 概述 本文主要针对项目中自动打包过程进行调研,实现用python脚本来打出win/android/ios三个平台下的 ...

  10. JavaScript夯实基础系列(三):this

      在JavaScript中,函数的每次调用都会拥有一个执行上下文,通过this关键字指向该上下文.函数中的代码在函数定义时不会执行,只有在函数被调用时才执行.函数调用的方式有四种:作为函数调用.作为 ...