FreeBSD 中文社区 2025 第二季度问卷调查
FreeBSD 中文社区(CFC)
VitePress 镜像站QQ 群 787969044视频教程Ⅰ视频教程Ⅱ
  • FreeBSD 从入门到追忆
  • 中文期刊
  • 状态报告
  • 发行说明
  • 手册
  • 网络文章集锦
  • 笔记本支持报告
  • Port 开发者手册
  • 架构手册
  • 开发者手册
  • 中文 man 手册
  • 文章与书籍
  • UNIX 四分之一世纪
  • Unix 痛恨者手册
  • 《Unix 四分之一世纪》翻译项目
  • 前言
  • 致谢
  • 简介
  • 序幕
    • 太空序曲
    • 1969 年夏到 1970 年秋
    • 机械计算和电子计算
    • 操作系统
    • MAC 项目:CTSS 和 Multics
  • 一款系统的诞生
    • PDP-11
    • 1971 年,第 1 版
    • 1971-1973,C 语言和管道
    • 1973,第一篇论文
    • 法律 第一幕
  • 是什么让 UNIX 成为 UNIX?
    • 用户 第一幕
    • 为什么是 Unix
    • 风格和工具
    • PWB 和 MERT
    • 实用工具
  • Unix 的传播与发展
    • 用户 第二幕
    • 伯克利 Unix 第一幕
    • 第 7 版
    • 伯克利 Unix 第二幕
    • 商业 Unix
    • DEC
    • 法律 第二幕
  • Unix 产业
    • /usr/group
    • Sun 和 JAW
    • 标准
  • 现状
    • 互相争斗的 Unix
    • 衍生版本
    • OSF 和 UI
    • VAX 后的伯克利 Unix
    • 法律 第三幕
  • 落幕
    • 结语:Unix 为什么能成功
    • 进一步阅读
    • 人物与术语表
    • 附图
由 GitBook 提供支持
LogoLogo

FreeBSD 中文社区(CFC) 2025

在本页
在GitHub上编辑
导出为 PDF
  1. Unix 产业

标准

市场的压力和用户的需求推动了 Unix 标准的建立。在不到十年的时间里,市场迅速扩展。在接下来的十年里,许多公司诞生,其中大多数消失了,但有些幸存下来。硬件和软件的不兼容性成为多厂商市场中的主要缺陷,这与 1956 年到 1978 年期间几乎所有计算中心都使用单一颜色(通常是蓝色)的情况不同。微型计算机和工作站——苹果、PC 和微软——对这种变化影响深远。

这里有两个方向:系统标准化和语言标准化。后者(C 语言的标准化)已经完成:美国国家标准协会(ANSI)成立了 X3J11 委员会——《C 语言》委员会——并成功发布了 ANSI 标准 X3.159-1989,随后成为国际标准 ISO/IEC 9899:1990。

操作系统的标准化经历了更曲折的过程。Unix 标准化始于 Heinz Lycklama 向 /usr/group 董事会提出成立标准委员会的建议。到 1984 年,该委员会制定了一个 /usr/group 标准,并被会员采纳。虽然它没有官方地位,但 /usr/group 标准影响很大:ANSI X3J11 在制定 C 库部分时以此为基础。然而,由于 System V、4.nBSD 和 XENIX 等系统的分歧发展,/usr/group 标准很快变得不适用。

1985 年初,/usr/group 委员会与新成立的 IEEE POSIX 工作组(电气和电子工程师协会,可移植操作系统)合并,/usr/group 标准被采纳为初稿。

到 1989 年,POSIX 产生了 10 个子委员会;四年后,子委员会超过 20 个,但只发布了两个标准——虽然是最重要的两个标准——POSIX.1 和 POSIX.2。还有一本 POSIX.0 文档:《POSIX 开放系统环境指南》,试图解释应用程序的可移植性。

但需要明确的是,POSIX 不是 Unix,它是接口,而不是实现。Fred Zlotnick 称 POSIX 为“Unix 的泛化”。POSIX.1 采纳了许多 Unix 的概念,并将它们替换为抽象,从而使许多原本不兼容的系统成为“POSIX 兼容”。

随着标准化越来越多地由市场驱动而非技术驱动,其结果难以预测。各种行业联盟发布的标准反而没有鼓励用户。

例如,1985 年 1 月,AT&T 发布了 System V 接口定义(SVID),这是一份“有版权的、非专有的开放系统文档”。五年后发布了新版。与此同时,X/Open(成立于 1984 年底)发布了其可移植性指南(XPG),现已历经多个版本:XPG2、XPG3、XPG4。XPG3 和 XPG4 在多个方面超越了 SVID。

88open 是“一家致力于基于 Motorola 88000 RISC 处理器家族创建多厂商开放计算环境的公司和个人社区”,成立于 1988 年。该联盟发布了《源代码手册》和《开放系统参考指南——标准世界》。我将在后续章节讨论开放软件基金会和 UNIX International。

在 Unix 20 周年会议上,Ritchie 评论了 C 语言标准和 POSIX:

我们与 Unix 标准化工作几乎没有太多直接关联。最主要的互动是试图对 POSIX shell 做一些改进,或者提出一些批评。对于 C 语言标准,我刻意没有介入 X3J11。我确实在幕后与 Larry Rosler 和 Dave Prosser 有过一些交流,他们当时是草案的编辑,也是委员会中 AT&T 的代表,但除了在“noalias 事件”中我非常直言不讳之外,我并没有参与其他事情……

我认为 [C 语言标准] 做得很好。实际上,几乎可以说是一个成功标准化工作的典范。他们拿到了一个基本没坏但确实需要澄清和更新的东西,既澄清了也更新了,而且没有破坏它。当然,肯定还有许多批评之处……但相比于其他语言标准化的结果,比如 FORTRAN 8X,甚至是标准化机构尝试定义的 Pascal,C 语言的命运非常理想。

Ritchie 对 POSIX 努力的热情远不如对 C 语言标准那样高涨:

这是一种更为复杂的情况。系统调用接口、库,甚至命令行看起来都相当稳固,也没有太大的争议和混乱。业界似乎也普遍支持这样的结果。另一方面,这些部分却缺乏一些相当明显的东西,比如一个连贯的网络处理方式。Presotto 和我几年前在 USENIX 上讨论过一种方法……不过,我们的方法似乎还没有席卷全球。

此外,IEEE 的 POSIX 工作似乎在以某种令人沮丧的方式走偏了。特别是实时组,似乎正在收集各种未经消化的想法,这些想法和现有系统之间并不怎么契合。我对所谓“任务处理”——即多个小进程在同一个内存镜像中执行——感到担忧,因为 Unix 及其软件所建立的模型并不能很好地容纳这种方式 —— C 语言不支持,库也不支持。多处理带来了许多关于软件设计方式的影响,而我担心如果只是硬塞进去,最终只会造成一团糟。说我对此态度矛盾简直是轻描淡写!围绕标准化所带来的(心理上、政治上的)紧张,在很多层面上都是巨大的。

人们常提到的,是创新与标准化之间的斗争。但我不认为这是真正的问题。如果存在标准,你可以有意识地做出决策,是选择遵循标准还是另辟蹊径。这固然是一种赌博,但也是合理的。而真正的紧张在于,决定某个领域是否“已经到了该标准化的时候”。当某件事情明明该制定一个统一标准却没有做到时,后果真的很糟糕(比如 VHS 与 XBeta 的对决)。

有一点大家应该明白,在许多与我们相关的领域,标准往往是由非常窄的群体制定的,而如果你足够关心,并以合适的方式参与,是可以对其施加影响的。在形成阶段,一个措辞得当、具体明确的建议可以起到很大的作用。当然,这也是一种悖论。这意味着,少数几位优秀的人真的可以挽救局势,但也意味着,少数几个蠢人也能把事情搞砸很多年。

自从 Ritchie 发表上述评论以来,POSIX 子委员会的数量不断增加,而当时存在的一些提案中,只有少数推进到了投票阶段。此外,随着越来越多的联盟组织的成立,不符合各个 IEEE 委员会正在进行的工作的非正式标准的数量也在不断增加。

上一页Sun 和 JAW下一页互相争斗的 Unix

最后更新于7天前