Answers:
“类Unix”系统可能完全符合“ 单一UNIX规范 ”(Single UNIX Specification),该标准是具有Unix系统资格的标准的统称,但同时Unix是The Open Group的注册商标,并且类Unix的供应商需要获得注册到他们的系统正式资格作为Unix的。当前已注册的UNIX 03系统是:
- Apple Inc .:基于Intel的Macintosh计算机上的Mac OS X版本10.5 Leopard
- Apple Inc .:基于Intel的Macintosh计算机上的Mac OS X版本10.6 Snow Leopard
- 富士通有限公司:基于富士通PRIMEPOWER®64位SPARC®平台的Solaris™10操作系统
- 惠普公司:HP Integrity服务器上的HP-UX 11i V3版本B.11.31或更高版本
- IBM Corporation:日期为2004年8月8日或更高版本的AIX 5L for POWER V5.2,带有APAR:在pSeries CHRP系统上具有VAC 6.0.0.8或更高版本的IY59610,IY60869,IY61405
- IBM公司:2006年7月或之后发布的用于POWER V5.3的AIX 5L或更高版本,该系统使用带有POWER™处理器的CHRP系统架构
- IBM公司:使用带有POWER™处理器和2、8或128端口异步卡的CHRP系统架构的系统上的AIX 6操作系统V6.1.2 SP1或更高版本
- Oracle公司:32位和64位基于SPARC的平台以及32位和64位基于X86的平台上的Oracle Solaris 11 FCS及更高版本
- Oracle Corporation:在基于64位X86的系统上,针对X86及更高版本的Solaris 10操作系统以及补丁118844-06
- Oracle Corporation:Solaris 10操作系统及其上基于32位和64位SPARC的系统
- Oracle Corporation:Solaris 10操作系统及更高版本,在基于32位X86的系统上
像开源Unix这样的系统(主要是Linux和FreeBSD)的供应商通常不向The Open Group注册,以避免认证成本,或者因为他们没有太大的价值。从理论上讲,从技术上说,像Unix这样的系统完全有可能是Unix,而缺少的只是认证。
另一方面,Linux基金会创建了Linux标准库(ISO标准),以使Linux标准化。POSIX的合规性 是SUS和LSB的核心,以某种方式保持Unix和Linux之间的链接。
Unix和类似Unix的系统趋于相似而不是不同,理论上所有流行的Unix版本(已注册或未注册)都符合POSIX(完全或大部分),因此它们共享一个核心编程接口,shell和实用程序(以及许多其他功能)东西)。IEEE和The Open Group维护着一个免费版本的最新版本POSIX.1-2008,您可以在其中找到有关POSIX合规性实际含义的更多信息。
现在,除了法律和技术上的原因外,Linux从与GNU的关联中继承了“非Unix”的口号,GNU是由Richard Stallman发起的类似Unix的操作系统。GNU代表“ GNU而不是Unix”,因为Stallman的意图是建立一个免费的Unix兼容系统,并且为了做到这一点,它不包含Unix代码,因为Unix是专有的。
早期的Linux开发人员开始将GNU工具移植到Linux,最终的系统早在1992年被称为GNU / Linux 。关于将Linux称为Linux还是GNU / Linux(因为它包含了GNU的多个部分),存在着长期的争论,但这与您的问题无关,重要的是“非Unix”可能仅指该关联。与GNU无关,并且与上下文无关。
Wikipedia上的“ Linux的历史”文章详细解释了Linux的起源以及它与Unix的关系(通过Minix和GNU),如果您感兴趣,还应该花一些时间通读本文的参考文献。了解更多。
UNIX是操作系统家族,如今UNIX更加是The Open Group拥有的品牌。对于要打上UNIX品牌的操作系统,它必须经过一致性测试,而对于Linux,这意味着在那里的每个发行版(Ubuntu,Debian,Fedora,Red Hat等)对于每个发行版都必须分别进行一致性测试。 。因此,这是Linux是类Unix系统而不是UNIX的主要原因之一。
我提到的该测试是为了确保操作系统符合Single Unix规范,该规范当前为SUSv4版本4(Single Unix Specification 4版)。该规范定义了一组API,这些API必须可供应用程序使用,系统才能使用UNIX名称。
现有答案已经提到您要寻找的一些差异。在没有成为Linux内核专家的情况下,我还要补充一点,Linux内核设计模式系列涵盖了GNU / Linux与各种Unices之间的许多设计/实现差异。
要确定“ UNIX”是一件很复杂的事情。就标准一致性而言,Solaris和Mac OS X都是“官方”的UNIX,但是您不必花很多时间就可以发现两者之间的差异很大。有一个很棒的图表记录了各种版本的UNIX或类似UNIX的操作系统的发布,以及它们如何相互影响和相异。
在看起来像UNIX的宏伟的事物中,Linux系统[*]是较传统的发行版之一。人们指的是Unices或* nix,意思是“任何类似于UNIX的东西”,其中可能包括Linux。但是UNIX是注册商标,在商业上应受限制。没有Linux发行版符合这些限制。
[*]因为这个问题引起了一定程度的语义上的分裂,所以我认为在这种情况下指出Linux本身只是可以构建操作系统的内核。在Linux之上构建类似UNIX的系统是很常见的,这正是其设计目的,并且该系统通常由GNU项目组件构建而成。在上面的答案中,“ Linux”可以理解为“包含Linux内核的操作系统”的简写。
我曾经读过,Linux是当您聘请PC开发人员并要求他编写Unix OS时得到的,而FreeBSD是当您聘请Unix开发人员并要求他创建PC操作系统时得到的。...不要忘记您的比较中的BSD!
区别主要在于内核,因为用户空间应用程序(包括ls之类的东西)都是GNU项目的一部分。这意味着Unix,FreeBSD和Linux几乎都是同一件事。
但是,一旦仔细观察,就会有差异。目录布局将有所不同(但是许多Linux发行版使用它们自己的大部分兼容的格式,但仍然存在不同的布局),文件系统也有所不同(Unix使用UFS,FreeBSD使用FFS,Linux使用Ext3来简化-它们都可以使用端口常见的FS,例如ZFS)
然后核心API有所不同,Linux将为您提供inotify API来告诉您文件何时发生更改,Mac OSX为您提供FSEvents,而FreeBSD为您提供kqueue。
因此,可以将它们视为同一家族-将带有移植到GNU工具的Windows系统与带有相同工具的Linux系统进行比较。它们只是表面上看起来是一样的,但是Unix或FreeBSD系统仍会看起来可比。仔细观察一下,您会发现与在Windows等替代操作系统上进行移植相比,在FreeBSD,Unix和Linux之间移植应用程序相对容易。
Unix不再是一个单一的操作系统。它曾经是Bell Labs / AT&T的实现,但现在是标准。
从技术上讲,Linux只是一个内核。该内核可以在非Unix之类的OS中找到,最受欢迎的是Android。另一方面,有许多基于Linux的操作系统类似于Unix。他们中的大多数(如果不是全部)都在使用Gnu库和实用程序。这种结合为Linux发行版提供了Unix API和对标准的遵从性(或不遵从性)。
Unix标准不需要兼容系统是专有的或具有任何特定的许可证。BSD,OpenSolaris / Illumos,darwin是非Linux仍免费的Unix实现的示例。
兼容的系统通常但不总是专有和开源组件的组合,而Gnu / Linux可以是完全开源的,也可以包含专有的东西。
就Unix合规性而言,没有太大差异。大多数Linux发行版和Unix实现使用相同的选项集共享相同的命令集。但是,您会发现许多标准命令的扩展,尤其是在Gnu端,它们被称为Gnuisms,还有许多标准并未首先定义的命令(编译器,管理命令,安装,打包,图形环境)。在这个区域中,您会发现很多分歧,不相容性,有时还会有神圣的战争。
Gnu / Linux开发模型通常被认为更像“有机”和“集市”,而其他类似Unix的系统则更像“设计”和“大教堂”。根据子系统的不同,区别并不那么明确,而是取决于背后的个人和/或公司。
Linux附带许多工具,例如:
但是,由于所有UNIX操作系统都来自单一来源或供应商,因此大多数UNIX操作系统都被视为完整的操作系统。
他们分享的一些东西:
并非完全如此,Linux毕竟是拼凑在一起的Unix逆向工程,因此内核设计遵循Ken Thompson的理念。Linux的方式似乎是尽可能地模仿Unix哲学,而不用原本的思想负担自己。