Unix和Linux在设计和其他方面有什么基本区别?[关闭]


24

我一直在读这句话:

Linux是类Unix系统,但不是Unix。

我不知道两者之间的真正区别是什么。我知道Linux从Unix得到了很多想法,并且两者的许可证是不同的。除此之外,由于我都不是其中之一,因此我想知道它们在设计或其他重要方面是否存在基本差异。


2
您介意澄清您在哪里读的书吗?网络搜索向我展示了Robert Love的Linux Kernel Development(第3版),是吗?
t

Answers:


30

“类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),如果您感兴趣,还应该花一些时间通读本文的参考文献。了解更多。


好的答案,我会等待,看看是否选择您的答案作为答案:)
Gnijuohz 2012年

8
@Gnijuohz不要急于接受答案,总是让您的问题成熟一两天(或者,如果需要,甚至更多),如果他们看到您已经接受了答案,那么他们就不会打扰他们,您可能会得到很好的答案。回答。接受答案完全取决于您,无论社区如何回应,您甚至都不必接受是否所有答案都对您没有帮助。
yannis'4

1
有趣的是,显然最新版本的OS X不是“正式”的UNIX。
克里斯·哈珀

@ root45这是可以预期的,因为需要一段时间才能检查版本是否符合要求。
yannis

@YannisRizos啊,好的。那讲得通。感谢您的信息。
克里斯·哈珀

4

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作者会尝试吗?
工作

1
这是一个很好的但是不完整的标准。Linux内核的贡献者确实尝试遵循该标准,因此Linux可以被非正式地认为是UNIX系统。如果您要开发符合Unix标准的应用程序,则它可能会在Linux系统上编译并运行。不幸的是,正如我之前所说,UNIX在某些方面还很不完善,因此OS为某些任务提供了额外的API,这就是某些应用程序平台依赖的原因,因为这些额外的API往往会有所不同。
拉斐尔2012年

有一个名为Linux-FT的发行版开始了POSIX认证过程,但是不足为奇的是,赞助商没有钱了。ukuug.org/newsletter/linux-newsletter/linux@uk12/ftinfo.shtml

感谢您提供此信息!我很想知道是否有人试图认证发行版。
拉斐尔2012年

3

现有答案已经提到您要寻找的一些差异。在没有成为Linux内核专家的情况下,我还要补充一点,Linux内核设计模式系列涵盖了GNU / Linux与各种Unices之间的许多设计/实现差异。


2

要确定“ UNIX”是一件很复杂的事情。就标准一致性而言,Solaris和Mac OS X都是“官方”的UNIX,但是您不必花很多时间就可以发现两者之间的差异很大。有一个很棒的图表记录了各种版本的UNIX或类似UNIX的操作系统的发布,以及它们如何相互影响和相异。

在看起来像UNIX的宏伟的事物中,Linux系统[*]是较传统的发行版之一。人们指的是Unices或* nix,意思是“任何类似于UNIX的东西”,其中可能包括Linux。但是UNIX是注册商标,在商业上应受限制。没有Linux发行版符合这些限制。

[*]因为这个问题引起了一定程度的语义上的分裂,所以我认为在这种情况下指出Linux本身只是可以构建操作系统的内核。在Linux之上构建类似UNIX的系统是很常见的,这正是其设计目的,并且该系统通常由GNU项目组件构建而成。在上面的答案中,“ Linux”可以理解为“包含Linux内核的操作系统”的简写。


@YannisRizos我将为答案添加参考,它肯定是经过认证的。

是的,从Leopard开始,您是完全正确的,Mac OS已获得UNIX 03认证,这是另一个参考
yannis

2

我曾经读过,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之间移植应用程序相对容易。


1

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的系统则更像“设计”和“大教堂”。根据子系统的不同,区别并不那么明确,而是取决于背后的个人和/或公司。


1

Linux附带许多工具,例如:

  • GUI系统
  • GNU实用程序(例如cp,mv,ls,date,bash等)
  • 安装和管理工具
  • GNU C / C ++编译器
  • 编辑(vi)
  • 以及各种应用程序(例如OpenOffice,Firefox)。

但是,由于所有UNIX操作系统都来自单一来源或供应商,因此大多数UNIX操作系统都被视为完整的操作系统。

他们分享的一些东西:

  • GUI,文件和Windows管理器(KDE,Gnome)
  • 外壳(ksh,csh,bash)
  • 各种办公应用程序,例如OpenOffice.org
  • 开发工具(perl,php,python,GNU C / C ++编译器)
  • POSIX介面

Linux还扩展了Unix哲学……
Job

2
Linux不仅是内核,而且Linux内核是内核。Linux通常是指围绕Linux内核构建的完整系统。
yannis'4

@Anonymous-有时,如果您编辑和更正答案,则拒绝投票的人可能会删除拒绝投票的人。不能保证,但是有时确实可以。(我不是拒绝投票,只是想提供帮助):)恕我直言,您的其余答案是正确的,因此消除差异可能会帮助您进行一些投票/避免更多的拒绝投票。
jmort253

-7

并非完全如此,Linux毕竟是拼凑在一起的Unix逆向工程,因此内核设计遵循Ken Thompson的理念。Linux的方式似乎是尽可能地模仿Unix哲学,而不用原本的思想负担自己。


@YannisRizos您的意思是“但它并不是真的可用”。AFAIK完全可用,但是由于它是用PDP组件编写的,因此很难将其移植到其他体系结构中。
sakisk 2012年

@ samual-johnson -1因为您不使用引用来备份您的陈述。这是我第一次听到“肯·汤普森哲学”(这是汤普森,而不是汤姆森)。
sakisk 2012年

1
@faif在检查我的参考文献时,我所指的基本内核是为GE-645而不是PDP编写的,因此将其称为Unix内核是很困难的。我删除了评论,因为要点是无论如何都缺乏参考,您的评论足以传达该信息。-SAMAL,请花一些时间用可靠的参考资料来备份您的主张,或者将其修改为基于观点的内容。
yannis

@YannisRizos有趣。我还没有听说过GE-645,根据Wikipedia的说法,它是Multics的改进版本。谢谢(你的)信息。
sakisk 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.