Linux与Unix到底有什么区别?

Stella981
• 阅读 771

Linux与Unix到底有什么区别?

Linux与Unix到底有什么区别?

作者:Phil

来源:

https://opensource.com/article/18/5/differences-between-linux-and-unix

如果你是一名20多岁或30多岁的软件开发人员,那么你已成长在一个由Linux主导的世界中。数十年来,它一直是数据中心的重要参与者,尽管很难找到明确的操作系统市场份额的报告,但Linux在数据中心操作系统上的份额可能高达70%,而Windows变体几乎涵盖了所有剩余的比例。使用任何主流公共云的开发人员可以假定目标系统将运行Linux。近些年来,随着Android和基于Linux的嵌入式系统在智能手机、电视、汽车和其他设备中的应用,Linux随处可见的证据比比皆是。

即便如此,大多数软件开发人员,甚至是那些在这场古老的“Linux革命”中成长的软件开发人员,也至少听说过Unix。这听起来与Linux类似,你可能已经听说过人们可以互换地使用这些术语。或者你也许听说过Linux被称为“类Unix”操作系统。

那么这个Unix是什么呢? 一些漫画种讲到的是坐在发绿光的屏幕后面的精灵般的“老人”,他编写C代码和shell脚本,由老式的滴灌咖啡所驱动。但除了那些1970年代那些老去的C程序员以外,Unix有更丰富的历史。

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-派生。

讲讲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到底有什么区别?

- End -

推荐阅读

手把手教你如何快速搭建Zabbix监控系统

程序员为什么一定要用Linux操作系统?

如何用几个简单的命令改善你的Linux安全

Linux环境下误删重要文件怎么办?

Linux磁盘和文件系统管理

H3C交换机如何配置SNMP协议?

Linux环境下账号和权限管理

Linux 系统结构详解

Oracle数据库环境搭建

Linux与Unix到底有什么区别?

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
ES6 新增的数组的方法
给定一个数组letlist\//wu:武力zhi:智力{id:1,name:'张飞',wu:97,zhi:10},{id:2,name:'诸葛亮',wu:55,zhi:99},{id:3,name:'赵云',wu:97,zhi:66},{id:4,na
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这