====================
== Hi, I'm Vimiix ==
====================
Get hands dirty.

TPLI笔记—linux/unix标准和历史

tlpi Linux note POSIX

前言

最近开始阅读《Linux/Unix 系统编程手册》 这本书,重新系统的学习一下 linux 系统编程方面的知识。

在阅读完第一章《历史和标准》以后,对于很多标准名词都见过,但是对于他们之间的发展历程很是模糊,通读这部分内容后豁然开朗,尤其本章最后总结部分,对于前面的概况的既简练还没有遗漏。不禁在书上用笔写下:“牛 B 总结,一气呵成”

方便以后不去翻书回顾,特花点时间摘录至此。

Unix 标准和历史

1969 年,贝尔实验室(AT&T 的一个部门)的 Ken Thompson 在 Digital PDP-7 小型机上首次实现了 UNIX 系统。对该操作系统而言,无论是理念还是其双关语的称谓都来源于早期的 MULTICS 系统。时至 1973 年,UNIX 已经被移植到了 PDP-11 小型机上,并以 C 语言对其进行了重写,C 编程语言是由贝尔实验室的 Dennis Ritchie 设计并实现的。因为法律禁止 AT&T 销售 UNIX, 于是,在象征性地收取了一定的费用之后,AT&T 索性将 UNIX 系统散布进了大学。这其中便包括了源码,因为这一廉价操作系统的代码可供大学计算机系的师生研究和修改,故而这一操作系统在校园内广受欢迎。

在 UNIX 系统的开发方面,加州大学伯克利分校扮演了“关键先生”。在该校,Ken Thompson 及一干研究生又对这一操作系统进行了“精雕细琢”。到了 1979 年,这所大学发布了属于自己的 UNIX 发布版 — BSD。这一发布版在学术界广为流传,并在日后成为某些商业 UNIX 实现的基石。

在此期间, 随着 AT&T 不再对电信市场形成垄断,该公司被获准销售 UNIX,这也就催生出了另一种 UNIX 的变种—System V,日后,它也成为了某些商业 UNIX 实现的基石。

有两股不同的潮流引领着(GNU/)Linux 的开发,其中之一便是由 Richard Stallman 所创的 GNU 项目。20 世纪 80 年代末, GNU 项目已经开发出了一套几乎完备且可以自由分发的 UNIX 实现,但独缺一颗能够有效运作的内核。1991 年, Linus Torvalds 被 Minix 内核(由 Andrew Tanenbaum 编写)“灵魂附体”,于是便开发出了一颗能够在 Intel x86-32 架构上正常运作的内核。应 Torvalds 之邀,许多其他程序员也加入到了改进内核的行列中。随着时光的流逝,在一干程序员的不懈努力下,Linux 逐渐发展壮大,并被移植到了多种硬件架构之上。

20 世纪 80 年代末, UNIX 和 C 语言的实现“百花齐放”,所引发的可移植性问题迫使人们开展针对以上两者的标准化工作。1989 年,对 C 语言的标准化工作完成(C89 颁布),在 1999 年,对 C89 这一标准进行了修订(C99 颁布)。在操作系统接口方面,对其标准化的“第一次吃螃蟹”便催生出了 POSIX.1,1988 年和 1990 年,IEEE 和 ISO 先后将 POSIX.1 采纳为标准。20 世纪 90 年代,人们又开始酝酿一个囊括各版 SUS 在内的更为详尽的标准。2001 年,合二为一的 POSIX 1003.1-2001 和 SUSv3 标准颁布。该标准合并并扩展了先前的 POSIX 标准和各版 SUS。2008 年,人们完成了对该标准的修订(改动幅度不算太大)工作,于是,合二为一的 POSIX 1003.1-2008 和 SUSv4 标准浮出水面。

于大多数商业 UNIX 实现不同, Linux 的开发和发行可谓“风马牛不相及”。因此,并无单一的“官方” Linux 发布版。各家 Linux 发行商所提供的只是当前稳定内核的快照,最多针对其打几个补丁。 LSB 开发并推广了一套 Linux 系统标准,其主要目的是用来保证二进制应用程序(即编译过的过程)在不同的 Linux 发布版之间的兼容性,以便编译过的应用程序能够运行在任何符合 LSB 规范的操作系统上,但前提是操作系统所运行的硬件平台必须相同。

由 LSB 所推广的二进制可移植性与 POSIX 所推广的源码可移植性可谓“一时瑜亮”。

感情纠葛图