【TLPI读书笔记】 一、历史和标准
UNIX和C语言简史
- 1969年,在AT&T电话公司下辖的bell实验室中,Ken Thompson 开发出了首个UNIX实现。
- 1970年,AT&T的工程师们又在刚购进的Digital PDP-11 小型机上,以汇编语言重写了UNIX;未过多久,Dennis Ritchie设计并实现出了C编程语言。
- 到1973年,C语言步入了成熟期,人们使用这一新语言重写了UNIX内核。
Linux简史
GNU项目
- 1984年,Richard Stallman之前一直供职于MIT的一位天赋异禀的程序员,开始着手创建一个“自由的(free)”UNIX实现;为开发出一套完整而又可自由获取,包含内核以及所有相关软件包的类UNIX系统,Stallman发起了GNU项目(“GNU's not UNIX”)。
- 1985年,Stallman创立了非盈利机构————自由软件基金会(FSF),以支持GNU项目和广义意义上的自由软件开发。
- 最初GNU项目未能开发出能够有效运作的UNIX内核,但却开发了其他大量针对类UNIX系统的程序,万事俱备,独缺内核。
Linux内核
- 1991年,Linus Torvalds,一位芬兰赫尔辛基大学的学生,参考Minix(由荷兰大学教授开发用于教育的类UNIX)开发出了一个内核雏形。
- 为了传承UNIX历史悠久的光荣传统,在为UNIX系统克隆命名时,总是以字母 'X' 结尾,故而人们将这一内核命名为Linux;最初Linux的使用许可协议要严格得多,但Torvalds很快就将其归于GNU GPL阵营。
标准化
C语言标准
- K&R 标准:20世纪80年代初,C语言问世已达10年之久,在大量的UNIX系统以及其他操作系统上都有实现。各种C语言的实现之间存在着细微差别,当时C语言事实上的标准是 Kernighan和Ritchie于1978年所著的《The C Programming Language》。
- ANSI C/C89/ISO C/C90 标准:以上因素形成了C语言标准化进程的强力推手,ANSI(美国国家标准委员会) C语言标准最终于1989年获批;随之于1990年被ISO(国际标准化组织)所采纳。
- C99 标准:1999年,ISO又正式批准了对C语言的修订版,通常将这一标准称为C99。
首个POSIX标准
- 术语“POSIX(可移植操作系统)”是指在IEEE(电器及电子工程师协会)下属的可移植应用标准委员会(PASC)赞助下所开发的一系列标准,其标准的目标是提升应用程序在源码级别的可移植性。
- POSIX.1于1989年成为IEEE标准,后在稍作修改后于1990年被正式采纳为ISO标准。
X/Open 公司和 The Open Group
- X/Open公司是由多家国际计算机厂商所组成的联盟,致力于采纳和改进现有标准,以制定出一套全面而又一致的开放系统标准。
- 该公司编撰了《X/Open可移植指南》是一套基于 POSIX 标准的可移植性指导丛书,即XPG。
- 1996年,X/Open与开放软件基金会(OSF)合并,成立 The Open Group。
SUSv3和POSIX.1-2001
- 2001年12月,奥斯丁公共标准修订工作组(IEEE、Open集团以及ISO/IEC共同成立)正式批准了POSIX 1003.1-2001,有时也简称为POSIX.1-2001。
- POSIX 1003.1-2001取代了大批早期的POSIX标准,有时人们也将该标准称为 Single Unix Specification版本3,即SUSv3。
- 人们将XSI(X/Open系统接口[X/Open System Interface])规范符合度达标所需的额外接口和行为统称为XSI扩展。
SUSv4和POSIX.1-2008
2008年,奥斯丁工作组完成了对已合并的POSIX和SUS规范的修订工作。较之于之先前版本,该标准包含了基本规范以及XSI扩展,人们将这一修订版本称为SUSv4。
UNIX标准时间表
Linux、标准、Linux标准规范
遵守各种UNIX标准,尤其是符合POSIX和SUS规范,是Linux(即内核、glibc以及工具)开发的总体目标。
总结
本章内容重点关注各项标准,而这里提到C语言和Unix(Linux都遵循Unix标准)标准,这是两种不同的东西,需要注意区分。