1980年起始,unix与unix-like os蓬勃发展,各个开发作者(组织)都想加入自己的特性,unix马上就要走向混乱.
为了提高兼容性和应用程序的可移植性,阻止这种趋势, IEEE(电气和电子工程师协会)开始努力标准化Unix的开发,后来由 Richard Stallman命名为“Posix”。
2023-9-30 15:09:37, 目前看来,POSIX 标准 在几个方面定义了标准,划定了界限
POSIX提出之初,其描述比较混乱,经过年轮的洗礼, posix.1 即 IEEE 1003.1 描述了上述三个内容
The Single UNIX® Specification // The Open Group 发布的标准集合
Version 1 : 1994
Version 2 : 1997
Version 3 : 2001 // 包含 POSIX.1-2004
Version 4 : 2008 // 包含 POSIX.1-2008,POSIX.1-2013,POSIX.1-2016,POSIX.1-2018
version 4 简介 : https://unix.org/version4/
Version 4 由 两者构成 // 此时, The Single UNIX® Specification 中的 unix 应该指的是 unix v7
The Base Specifications, Issue 7 // 这个7 应该对应 "Certification Standard: UNIX V7" 中的 7
X/Open Curses, Issue 7
The Open Group Base Specifications
The Single UNIX Specification uses The Open Group Base Specifications, Issue 7 documentation as its core.
The Open Group Base Specifications has been jointly developed by the IEEE and The Open Group.
It is both an IEEE Standard and an Open Group Technical Standard.
The Base Specifications, Issue 7, composed of:
Base Definitions, Issue 7 (XBD7)
System Interfaces, Issue 7 (XSH7)
Shell and Utilities, Issue 7 (XCU7)
Rationale, Issue 7, (XRAT7) (Informative)
IEEE Std 1003.1 and ISO/IEC 9945 // 即POSIX , 被 The Open Group 集成到了 "The Single UNIX® Specification"
// The Single UNIX Specification Version 4 - incorporating IEEE Std 1003.1 and ISO/IEC 9945 and integrating the industry's Open Systems standards.
综上,
如果我们想看 POSIX标准,我们看 "The Base Specifications, Issue 7" 就可以了
在 "The Open Group" ,这份文档"The Base Specifications, Issue 7" 可以被 The Open Group member 获取 (pdf)
在 "The Open Group" ,可以获取 "The Single UNIX Specification"(包括 "The Base Specifications, Issue 7"),(online,或者下载html)
在 "The Open Group" ,可以获取 "The Single UNIX Specification" 的 guide (pdf)
可以认为 "C标准库" 是 POSIX标准的一部分
C语言标准(包括C标准库的定义) 由ANSI提出,由ISO收录,相较POSIX较早
1989 年POSIX 的工作被转移至ISO/IEC 社团,并由15 工作组继续将其制定成ISO 标准。
1990 年,POSIX.1 与已经通过的"C语言标准"联合,正式批准为IEEE 1003.1-1990(也是ANSI 标准)和ISO/IEC 9945-1:1990 标准。
目前来看, "C标准库" 对应了 POSIX 标准中的 "System Interfaces" ,即可以认为 "C标准库" 是 POSIX标准的一部分
但是 "C标准库的更新" 和 "POSIX标准的更新" 是 ISO 不同的小组负责的!
unix-like上可以调用哪些函数
1.os提供的syscall
2.编译器提供的(例如libgcc.a)
3.c标准库(即libc)提供的
4.其他lib提供的
6.程序员自己写的函数
glibc包含c标准库,也包括其他的库(例如pthread)。glibc属于posix标准的一部分
glibc 提供了 与系统调用同名的 API,(例如open)
和 更高一层的 API,(例如fopen) // 属于C标准库
总介
1
5大块的介绍
2
C语言接口(XSH) // 1191
3 : lib
7 : // 与之前lib的不同
shell接口(XCU) // 174 -> 160+14
4
8 : // 与之前的不同
Base Definitions(XBD) // 82
5 : headers // 与 XBD的关系
9 : // 与之前header的不同
X/Open Curses // 386 -> 379
6
10 : // 与之前的不同
不同的版本之间的迁移
11/12/13/14
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行。它是在1980 年早期一个UNIX 用户组(usr/group)的早期工作的基础上取得的。该UNIX 用户组原来试图将AT&T 的系统V 和Berkeley CSRG的BSD 系统的调用接口之间的区别重新调和集成,从而于1984 年产生了/usr/group 标准。1985 年,IEEE操作系统技术委员会标准小组委员会(TCOS-SS)开始在ANSI 的支持下责成IEEE 标准委员会制定有关程序源代码可移植性操作系统服务接口正式标准。到了1986 年4 月,IEEE 就制定出了试用标准。第一个正式标准是在1988 年9 月份批准的(IEEE 1003.1-1988),也既以后经常提到的POSIX.1 标准。
1989 年POSIX 的工作被转移至ISO/IEC 社团,并由15 工作组继续将其制定成ISO 标准。到1990 年,POSIX.1 与已经通过的C 语言标准联合,正式批准为IEEE 1003.1-1990(也是ANSI 标准)和ISO/IEC 9945-1:1990 标准。
POSIX.1 仅规定了系统服务应用程序编程接口(API),仅概括了基本的系统服务标准,因此期望对系统的其它功能也制定出标准。这样IEEE POSIX 的工作就开始展开了。在1990 年,刚开始有十个批准的计划在进行,有近300 多人参加每季度为期一周的会议。着手的工作有命令与工具标准(POSIX.2)、测试方法标准(POSIX.3)、实时API(POSIX.4)等。到了 1990 年上半年已经有25 个计划在进行,并且有16 个工作组参与了进来。与此同时,还有一些组织也在制定类似的标准,如X/Open,AT&T,OSF 等。
// 注意 : 现在POSIX.2 POSIX.3 POSIX.4 已经合并入 POSIX.1
在90 年代初,POSIX 标准的制定正处在最后投票敲定的时候,那是1991-1993 年间。此时正是Linux刚刚起步的时候,这个UNIX 标准为Linux 提供了极为重要的信息,使得Linux 的能够在标准的指导下进行开发,能够与绝大多数UNIX 系统兼容。在最初的Linux 内核代码中(0.01 版、0.11 版)就已经为Linux与POSIX 标准的兼容做好了准备工作。在0.01 版的内核/include/unistd.h 文件中就已经定义了几个有关POSXI 标准要求的常数符号,并且在注释中就写到"ok,这也许是个玩笑,但我正在着手研究它呢"。
1991 年7 月3 日在comp.os.minix 上发布的post 上就已经提到了正在搜集POSIX 的资料。(当然此时还不存在Linux 这个名称,当时Linus 的脑子里想的可能是FREAX ,FREAX 的英文含义是怪诞的、怪物、异想天开等)。其中透露了他正在进行Linux 系统的开发,并且在Linux 最初的时候已经想到要实现与POSIX(UNIX 的国际标准)的兼容问题了。