如果 Linux 的内核是单一的,为什么它是“类 Unix”的?

如果 Linux 的内核是单一的,为什么它是“类 Unix”的?

据我了解,Unix 特性的一部分是它有一个微内核,将工作委托给高度模块化的文件进程。那么,如果 Linux 偏离了采用单一内核的这种方法,为什么它仍然被认为是“类 Unix”呢?

答案1

我相信答案在于你如何定义“类Unix”。根据维基百科的“类 Unix”条目,似乎没有标准定义。1

类 Unix(有时称为 UN*X 或 *nix)操作系统是一种行为方式类似于 Unix 系统的操作系统,但不一定符合或经过任何版本的单一 UNIX 规范的认证。

没有定义该术语的标准,并且对于给定操作系统“类 Unix”的程度可能存在一些不同意见。

该术语可以包括受贝尔实验室 Unix 启发或设计用于模拟其功能的免费和开源操作系统、商业和专有的类似操作系统,甚至是基于许可的 UNIX 源代码的版本(可能足够“类 Unix”) 》通过认证并贴有“UNIX”商标)。

最明显的原因可能是 UNIX 和 MINIX 是 Linux 的前身,启发了 Linux 的诞生。2

Torvalds 开始在 MINIX 上开发 Linux 内核,为 MINIX 编写的应用程序也在 Linux 上使用。后来,Linux 逐渐成熟,在 Linux 系统上进行了进一步的 Linux 内核开发。

Linus Torvalds 想将他的发明称为 Freax,这是“free”、“freak”和“x”(暗指 Unix)的组合。

当称操作系统为“类Unix”时,似乎并没有考虑系统是单片系统还是微内核。至少,不像系统是否符合 POSIX 标准或大部分符合 POSIX 标准那样频繁。

答案2

“UNIX 方式”实际上指的是用户的体验。可以组合一小组实用程序来构建有效的操作系统命令行。与此相关的是,操作系统实用程序绝不是“特殊”的,也不具有超出您自己编写的程序的功能。

如今,这一点很难说清楚,因为 UNIX 在这方面非常成功,以至于它已成为操作系统呈现其命令行界面的方式。通过一个反例可以最好地说明这一点:以下是cp a.txt b.txt在 IBM 大型机上的操作方法:

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

这甚至不会复制每种类型的文件。

UNIX 做出了许多假设,这些假设以牺牲性能为代价来简化可用性。文件通道 1 (stdin)、2 (stdout) 和 3 (stderr) 往返于终端,从上面的 JCL 中删除了大量样板。文件系统支持一种数据类型——字节——和一种访问模式——顺序(尽管可以移动可以读取或写入顺序数据的指针以实现一种“随机访问”)。这意味着系统实用程序只需要处理一种类型的文件和一种类型的数据即可覆盖所有文件和数据类型。文件系统不需要预分配。如果操作系统已知文件名,则会自动将文件添加到目录(在 IBM 大型机上称为“磁盘目录”)。

这些假设是如此成功,以至于如今我们甚至不再考虑它们。而在当时,他们会显得挥霍无度——想象一下如果没有事先告知文件的最大大小的文件系统的巨大开销。

但 UNIX 并没有就此止步。它促进了系统实用程序的“工具箱”方法。大型机的 IEBGENER 可以打印文件、重新排列记录中的字段、删除记录、创建空白记录。相反,在 UNIX 中 cp 复制文件,cat 列出文件内容,cut 处理字段。有一种简洁的语法可以将命令的标准输出字符串到下一个文件的标准输入,所有这些都在一个终端行上。使用这个“管道”语法和那些小命令,我们可以做 IEBGENER 可以做的一切。这是 IEBGENER 的作者从未梦想过的事情。

Kernighan 和 Plauger 在 1976 年写了一本关于这种方法的有影响力的书——软件工具——这确实是“UNIX 方式”的第一次阐述。 Kernighan 和 Pike 在他们 1984 年的书中重申了这种方法UNIX 编程环境

答案3

根据我的理解,“monolithic”是对 linux 的错误描述。整体意味着巨大且不变。模块可以插入内核空间这一事实打破了单一的定义。我认为“整体”这个名称是从 Greg Kroah-Hartman 的一次演讲中开始的,他在演讲中表示他使用的这个词不太正确,但人们接受 Linux 是整体的。我认为,微内核和整体这两个术语通常被认为是完全相反的,但事实上并非如此。 linux 是一个非整体内核,但不是微内核。

答案4

我一直认为 UNIX 既是一个商标,也是一个技术规范。

在黄金时代,情况从来都不是这样,但我是个年轻人,SCO v IBM 塑造了这一点。

UNIX® - 由名称有趣的 OpenGroup 定义和认可。https://www.opengroup.org/unix%C2%AE-systems

POSIX 是一个有用的规范,但多年来略有平淡,即使从过去的痛苦岁月开始,Microsoft Windows 2K 也达到了必要的标准。最近的迭代为这四个国家带来了和谐,Windows Subsystem for Linux v.2 对于许多拥有异构服务器资产的企业来说是一个引人注目的选择。

据我所知,Linux 一直教条地接近“什么对用户有用”的共识,无论是系统管理员、开发人员还是最终用户,而不是“专门的书说了什么”。

相关内容