
X标准化及实现.doc
19页第2章U NIX标准化及实现2.1引言UNIX应用程序在不同的UNI X版本之间进行移植相当容易,但是80年代UNIX版本的剧增以及它们之间差别的扩大导致很多大用户(例如美国政府)要求对其 进行标准化本章将介绍正在进行的各种标准化工作,及这些标准对本书所列举的实际U N I X实现的影响 所有标准化工作的一个重要部分是对每种实现必须定义的各种限制的说明,我们将说明这些限制以及确定它们值的多种方法2.2 UNIX标准化2.2.1 ANSI C1989年后期,C程序设计语言的ANSI标准X3.1 59- 1 989得到批准〔ANSI 1989〕 此标准已被采用为国际标准ISO/IEC 9899:1990.ANSI是美国国家标准学会,它是由制造商和用户组成的非赢利性组织在国际标准化组织(ISO)中是代表美国的成员ANSI C标准的意图是提供C程序的可移植性,而不只是UN IX标准定义了C程序设计语言的语法和语义,标准库〔ANSI 1989第4章;Plauger 1992;Kernighan^ Ritchie 1988中的附录B〕.因为很多新的UNIX系统(例如本书介绍的几个UNIX系统)都提供C标准中说明的库函数,所以 此库对我们来讲是很重要的。
按照该标准定义的各个头文件,可将该库分成15区表2・1中列出了C标准定义的头文件,以及下面几节中说明的另外两个标准(POSIX.1和XPG3) 定义的头文件在其中也列举了 SVR4和4・3 + BS D所支持的头文件本章也将对这两种U N I X实现进行说明«2-1由各种彳 ;现定义的头丈件头文件标准实现说明ANS1CPOSIX AXPG3SVR443+BSDcassert ・ h:>■•验证程序时
P O S I X的意思是计算机环境的可移植操作系统界面(Portable Operating System Interface for Computer Environment)o它原来指的只是IE EE标准1 00 3.1・1 98 8(操作系统界面),IEEE目前正在制订POSIX族中 的其他有关标准例如,1 003.2将是针对s h e 11和公用程序的标准,1 003.7将是系统管理方面的标准在1003工作组中至少有15个子委员会与本书相关的是10 0 3.1操作系统界面标准,该标准定义 了 “ POSIX依从的”操作系统必须提供的服务该标准«/1 9 8 8^, IEEE 1003.1-1988经修改后递交给ISO,没有增加新的界面或功能,但修改了文本最终的文档作为IEEEStd.1003.1-1990正式出版CIEEE 1990〕,这也就是国际标准ISO/IEC 9945-1:1990该标准通常被称之为POSIX.1,本书将使用此标准POSIX.1没有包括超级用户这样的概念代之以规定某些操作要求“适当的优先权”,POSIX・1将此术语的定义留由具体实现进行解释某些符合国防部安全性指导原则要求的U n i x 系统具有很多不同的安全级。
本书仍使用传统的UNIX术语,并指明要求超级用户特权的操作2.2.3 X/Open XPG3X/Open是一个国际计算机制造商组织它提出了一个7卷本可移植性指南X/OpenPortability Guide (X/Open可移植性指南)第3版〔X/Open 1989〕,称之为XPG3XPG3的第2卷XSI System Interface and Headers (XSI系统界面和头文件)对类似UNIX的系统 定义了 一个界面,该東面定义是在IEEE Std.1003.1-1988界面的基础上制订的2.2.4 FIPSF I P S的含义是联邦信息处理标准(Federal Information Processing Standard),这些标准是由美国政 府出版的,并由美国政府用于计算机系统的采购FIPS 1 5 1・1 (198 9年 4 月)基于 I EEEStd ・1003・1・ 198 8及 ANSI C 标准草案FIPS 151-1 要求某些在POSIX.1中可选的功能这种FIPS有时称为POSIX.1 FIPSo 2.5.5节列出了FIPS 所要求的POSIX.1的选择项。
POSIX.1 FIPS的影响是:它要求任一希望向美国政府销售POSIX.1依从的计算机系统的厂商应支 持POSIX.1的某些可选功能我们将不把POSIX.1 FIPS视作为另一个标准,因为实际上它只是一 个更加严格的P OSIX.1标准2.3 UNIX实现上面一节说明了三个由各自独立的组织所制定的标准:ANSI C、IEEE POSIX 以及X/OpenXPG3但是,标准只是界面的规格说明这些标准是如何与现实世界相关连的呢?这些标准由制造商采用, 然后转变成具体实施U N IX的各种版本和变体都起源于在P D P・11系统上运行的U N IX分时系统第6版( 1976#-)和 第7版( 1 979年)(通常称为V6和V7)这两个版本是在贝尔实验室以外首先得到广泛应用的U N IX系统从这棵树上发展出三个分支:(a) AT & T分支,从此导出了系统皿和系统V (被称之为U N I X的商用版本),(b) 加州大学伯克利分校分支,从此导出4.XBSD实现,(c) 由AT&T贝尔实验室的计算科学研究中心不断开发的UNIX研究版本,从此导出第8、第9和第 1()版2.3.1 SVR4S VR 4是AT&T UNIX系统实验室的产品,它汇集了下列系统的功能:AT&T UNIX系统V第3 ・ 2版(S V R 3 ・ 2 ),Sun公司的S u nO S系统,加州大学伯克利分校的4.3BSD以及微软的Xenix系统(Xenix是在V7的基础上开发的,后来又采用了很多系统V的功能)。
其源代码于1989年后期分发,在1990年则开始向最终用户提供.2.3.2 4.3+BSDBSD是由加州大学伯克利分校的计算机系统研究组研究开发和分发的4・ 2BSDT1 9 83#问世,4・31^0则在1 9 86年这两个版本都在VA X小型机上运行4・3 B S D Ta h o eTl 9 8 8^^,在一台称为Ta h o e的小型机上运行4.3BSD Reno版于1 9 9 0年发希,它支持很多P OSIX.1的功能4・ 4BSDfi^E1 9 9 2#^o早期的B S D系统包含了 AT & T专有的源代码,它们需要AT & T许可证BSD系统的源代码,需要持有AT&T的UNIX许可证这种情况正在得到改变,在近几年来愈来愈多的AT&T源代码正被代换成非AT&T源代码,很多 加到B S D系统上的新功能也来自于非AT & T方面2.4标准和实现的关系本书集中阐述了两个实际的UN IX系统:S VR44 ・ 3 + B S D这两个系统都依从POSIX2.5限制有很多由实现定义的宏和常数,其中有很多已被编写到程序中,或由特定的技术所确定由于大量 标准化工作的努力,已有若干种可移植的方法用以确定这些幻数和实现定义的限制。
这非常有助于 软件的可移植性以下三种类型的功能是必需的:•编译时间选择项(该系统是否支持作业控制)•编译时间限制(短整型的最大值是什么)•运行时间限制(文件名的最大字符数为多少)前两个,编译时间选择项和限制可在头文件中定义程序在编译时可以包含这些头文件但是,运行时间限制则要求进程调用一个函数以获得此种限制值另外,某些限制在一个给定的实现中可能是固定的(因此可以静态地在一个头文件中定义), 而在另一个实现上则可能是变动的(需要有一个运行时间函数调用)这种类型限制的一个例子是文件名的最大字符数系统V由于历史原因只允许文件名有14个字符, 而伯克利的系统则将此增加为2555 VR4允许我们对每一个创建的文件系统指明是系统V文件系统还是BSD文件系统,而每个系统有 不同的限制这就是运行时间限制的一个实例,文件名的最大长。












