UNIX 標準及實現(xiàn)
Unix標準化
ISO C
1989年下半年模叙,C程序設(shè)計語言的ANSI標準X3.159-1989得到標準
ANSI時美國國家標準學會(American National Standards Institute)的縮寫涯雅,它是國際標準化組織(International Organization For Standardization ,ISO)中代表美國的成員趣倾。
IEC時國際電子技術(shù)委員會(International Electrotechnical Commission)的縮寫饼煞。
gcc 對ISO C標準1999版本符合程度總結(jié)可參見http:///www.gnu.org/c99status.html 痹束。
IEEE POSIX
POSIX是一個最初由IEEE(Institute Of Electrical and Electronics Engineers )制定的標準族宇色。
POSIX指的是可移植操作系統(tǒng)接口(Portable Operating System interface)/
由于1003.1標準說明了一個接口(interface)而不是一種實現(xiàn)(implementation)能庆,所以并不區(qū)分系統(tǒng)調(diào)用和庫函數(shù)施禾。所有標準中的例程都稱為函數(shù)。
Single UNIX specification[單一Unix規(guī)范]
single unix specification (SUS 搁胆,單一UNIX規(guī)范)是POSIX標準的超集弥搞,它定義了一些附加借口擴展了POSIX.1提供的功能。POSIX相當于 single Unix specification 的基本規(guī)范部分渠旁。
POSIX.1 中的X/open 系統(tǒng)接口(X/Open system interface ,XSI)選項描述了可選的接口攀例,也定義了遵循XSI的實現(xiàn)鼻血支持POSIX.1的那些可選部分。這些鼻血支持的部分包括:文件同步顾腊、線程棧地址和長度屬性粤铭、線程進程共享同步遺跡_XOPEN_UNIX 符號常量。只有遵循XSI的實現(xiàn)才能稱為UNIX系統(tǒng)杂靶。
Open Group 擁有Unix商標梆惯,他們使用single unix specification 定義了一系列接口。一個系統(tǒng)要想稱為Unix系統(tǒng)伪煤,其實現(xiàn)必須支持這些接口加袋,Unix系統(tǒng)供應(yīng)商必須以文件形式提供符合性的聲明,并通過驗證符合性的測試抱既,才能得到Unix商標的許可證职烧。
FIPS
FIPS代表的是聯(lián)邦信息處理標準(Federal InforMation Processing Standard)這一標準是由美國政府發(fā)布的,并由美國政府用于計算機系統(tǒng)的的采購
POSIX.1 FIPS 的作用是,它要求任何希望美國政府銷售符合POSIX.1標準的計算機系統(tǒng)的廠商都應(yīng)該支持POSIX.1的某些可選功能蚀之。
Unix 系統(tǒng)實現(xiàn)
(1)AT&T分支蝗敢,從此引出了系統(tǒng)III和系統(tǒng)V(被稱為UNIX的商用版本)
(2)加州大學伯克利分校分之,從此引出4.xBSD 實現(xiàn)
(3)由于AT&T貝爾實驗室的計算機研究中心不斷開發(fā)的UNIX研究版本足删,從此引出Unix分時系統(tǒng)第8版本寿谴,第9版本,終止于1990年的第10版本失受。
SVR4
SVR4是AT&T的unix系統(tǒng)實驗室的產(chǎn)品
4.4BSD
BSD 是由加州大學伯克利分校的計算機系統(tǒng)研究組(CSRG)研究開發(fā)和分發(fā)的讶泰。
FreeBSD
FreeBSD 基于4.4BSD-Lite操作系統(tǒng)。在加州大學伯克利分校的CSRG決定終止其在UNIX操作系統(tǒng)的BSD版本的研究工作拂到,而且386BSD項目被忽視很長時間之后痪署,為了繼續(xù)堅持BSD系列,形成了FreeBSD項目兄旬。
LINUX
Linux是一種提供類似于UNIX的豐富編程環(huán)境的操作系統(tǒng)狼犯,在GNU公用許可證的指導下,Linux是免費使用的领铐。
Mac os X
與其以前的版本相比悯森,Mac OS X 使用了完全不同的技術(shù)。其核心操作系統(tǒng)稱為“Darwin”绪撵,它基于Mach內(nèi)核瓢姻、FreeBSD操作系統(tǒng)以及具有面向?qū)ο罂蚣艿尿?qū)動和其他內(nèi)核擴展的結(jié)合。
Solaris
Solaris是由Sun Microsystems(現(xiàn)為Oracle)開發(fā)的Unix系統(tǒng)版本莲兢。
其他Unix系統(tǒng)
已通過驗證的其他Unix版本包括:
- AIX ,IBM 版本的UNIX操作系統(tǒng)
- HP-UX ,HP版本的UNIX操作系統(tǒng)
- IRIX,Silicon Graphics版本的操作系統(tǒng)
- UNIX ware 汹来,SVR4派生的UNIX系統(tǒng),現(xiàn)在由SCO銷售改艇。
限制
Unix 系統(tǒng)實現(xiàn)定了很多幻數(shù)和常量收班,其中很多已被硬編碼到程序中,或用特定的技術(shù)確定谒兄。
以下兩種類型的限制時必需的摔桦。
1:編譯時限制
2:運行時限制
2.5.1 ISO C限制
ISO C 定義的所有編譯時限制都列在頭文件<limits.h>。這些限制常量在個給定的系統(tǒng)中并不會改變承疲。
我們將會遇到的一個區(qū)別是系統(tǒng)是否提供帶符號或無符號的字符值邻耕。
2.5.2 POSIX 限制
POSIX.1 定義了很多涉及操作系統(tǒng)實現(xiàn)限制的常量,遺憾的是燕鸽,這是POSIX.1最令人迷惑不解的部分之一兄世。雖然POSIX.1定義了大量限制和常量,我們只關(guān)心與基本的POSIX.1接口有關(guān)的部分啊研。這些限制和常量分成下列7類御滩。
1:數(shù)值限制: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 的應(yīng)用區(qū)別于一個剛剛符合POSIX(merely POSIX confirming)的應(yīng)用。符合POSIX的應(yīng)用只使用IEEE1003.1-2001中定義的接口赵誓,嚴格符合POSIX的應(yīng)用滿足更多的限制,例如:不依賴于POSIX未定義的行為柿赊,不使用其他任何已棄用的接口以及不要求所使用的常量值大于 圖 所列出的最小值俩功。