UNIX 标准及实现

2016-03-15  本文已影响0人  JamesPeng

UNIX 标准及实现

Unix标准化

ISO C

1989年下半年,C程序设计语言的ANSI标准X3.159-1989得到标准
ANSI时美国国家标准学会(American National Standards Institute)的缩写,它是国际标准化组织(International Organization For Standardization ,ISO)中代表美国的成员。
IEC时国际电子技术委员会(International Electrotechnical Commission)的缩写。

gcc 对ISO C标准1999版本符合程度总结可参见http:///www.gnu.org/c99status.html

ISO C 标准定义的头文件

IEEE POSIX

POSIX是一个最初由IEEE(Institute Of Electrical and Electronics Engineers )制定的标准族。
POSIX指的是可移植操作系统接口(Portable Operating System interface)/

由于1003.1标准说明了一个接口(interface)而不是一种实现(implementation),所以并不区分系统调用和库函数。所有标准中的例程都称为函数。

POSIX 标准定义的必需的头文件 POSIX 标准定义的XSl可选头文件 POSIX 标准定义的可选头文件 POSIX 可选接口组合选项码 POSIX 可选接口组合选项码续

Single UNIX specification[单一Unix规范]

single unix specification (SUS ,单一UNIX规范)是POSIX标准的超集,它定义了一些附加借口扩展了POSIX.1提供的功能。POSIX相当于 single Unix specification 的基本规范部分。

POSIX.1 中的X/open 系统接口(X/Open system interface ,XSI)选项描述了可选的接口,也定义了遵循XSI的实现鼻血支持POSIX.1的那些可选部分。这些鼻血支持的部分包括:文件同步、线程栈地址和长度属性、线程进程共享同步遗迹_XOPEN_UNIX 符号常量。只有遵循XSI的实现才能称为UNIX系统。

Open Group 拥有Unix商标,他们使用single unix specification 定义了一系列接口。一个系统要想称为Unix系统,其实现必须支持这些接口,Unix系统供应商必须以文件形式提供符合性的声明,并通过验证符合性的测试,才能得到Unix商标的许可证。

FIPS

FIPS代表的是联邦信息处理标准(Federal InforMation Processing Standard)这一标准是由美国政府发布的,并由美国政府用于计算机系统的的采购

POSIX.1 FIPS 的作用是,它要求任何希望美国政府销售符合POSIX.1标准的计算机系统的厂商都应该支持POSIX.1的某些可选功能。

Unix 系统实现

(1)AT&T分支,从此引出了系统III和系统V(被称为UNIX的商用版本)
(2)加州大学伯克利分校分之,从此引出4.xBSD 实现
(3)由于AT&T贝尔实验室的计算机研究中心不断开发的UNIX研究版本,从此引出Unix分时系统第8版本,第9版本,终止于1990年的第10版本。

SVR4

SVR4是AT&T的unix系统实验室的产品

4.4BSD

BSD 是由加州大学伯克利分校的计算机系统研究组(CSRG)研究开发和分发的。

FreeBSD

FreeBSD 基于4.4BSD-Lite操作系统。在加州大学伯克利分校的CSRG决定终止其在UNIX操作系统的BSD版本的研究工作,而且386BSD项目被忽视很长时间之后,为了继续坚持BSD系列,形成了FreeBSD项目。

LINUX

Linux是一种提供类似于UNIX的丰富编程环境的操作系统,在GNU公用许可证的指导下,Linux是免费使用的。

Mac os X

与其以前的版本相比,Mac OS X 使用了完全不同的技术。其核心操作系统称为“Darwin”,它基于Mach内核、FreeBSD操作系统以及具有面向对象框架的驱动和其他内核扩展的结合。

Solaris

Solaris是由Sun Microsystems(现为Oracle)开发的Unix系统版本。

其他Unix系统

已通过验证的其他Unix版本包括:

限制

Unix 系统实现定了很多幻数和常量,其中很多已被硬编码到程序中,或用特定的技术确定。

以下两种类型的限制时必需的。

1:编译时限制
2:运行时限制

2.5.1 ISO C限制

ISO C 定义的所有编译时限制都列在头文件<limits.h>。这些限制常量在个给定的系统中并不会改变。

limits.h 中定义的整型值的大小

我们将会遇到的一个区别是系统是否提供带符号或无符号的字符值。

2.5.2 POSIX 限制

POSIX.1 定义了很多涉及操作系统实现限制的常量,遗憾的是,这是POSIX.1最令人迷惑不解的部分之一。虽然POSIX.1定义了大量限制和常量,我们只关心与基本的POSIX.1接口有关的部分。这些限制和常量分成下列7类。

1:数值限制:LONG_BIT 、SSIZE_MAX 和 WORD_BIT
2:最小值:
3:最大值:POSIX_CLOCKRES_MIN
4:运行时可以增加的值:CHARCLASS_NAME_MAX、COLL_WEIGHTS_MAX、LINE_MAX、NGROUPS_MAX 和RE_DUP_MAX
5:运行时不变值(可能不确定)
6:其他不变值:NL_ARGMAX、NL_MSGMAX、NL_SETMAX和NL_TEXTMAX.
7:路径名可变值:FILESIZEBITS、LINK_MAX、MAX_CANON、MAX_INPUT、NAME_MAX、PATH_MAX、PIPE_BUF 和 SYMILNK_MAX。

一个严格符合(strictly conforming)POSIX 的应用区别于一个刚刚符合POSIX(merely POSIX confirming)的应用。符合POSIX的应用只使用IEEE1003.1-2001中定义的接口,严格符合POSIX的应用满足更多的限制,例如:不依赖于POSIX未定义的行为,不使用其他任何已弃用的接口以及不要求所使用的常量值大于 图 所列出的最小值。

上一篇下一篇

猜你喜欢

热点阅读