The Wayback Machine - https://web.archive.org/web/20221028215543/https://baike.sogou.com/kexue/d10181.htm

POSIX

编辑

便携式操作系统接口(POSIX)[1] 是由IEEE计算机协会规定的一系列标准,用于维护操作系统之间的兼容性。POSIX定义了应用程序编程接口,以及命令行shell程序和实用程序接口,用于与Unix的变体和其他操作系统的软件兼容性。[2][3]

1 名称编辑

最初,“POSIX”这个名字指的是1988年发布的IEEE标准1003.1-1988。POSIX标准系列正式命名为IEEE 1003,国际标准名称为ISO/IEC9945。

这些标准是从大约1985年开始的一个项目中产生的。理查德·斯托尔曼向IEEE建议了POSIX这个名称,而不是以前的IEEE-IX。委员会发现它更容易发音和记忆,因此采纳了它。[2][4]

2 概观编辑

Unix被选为标准系统接口的基础,部分是因为它是“制造商中立的”。然而,Unix存在几个主要版本——所以需要开发一个公共的分母系统。类Unix操作系统的POSIX规范最初由核心编程接口的单一文档组成,但最终发展到19个独立的文档(POSIX.1、POSIX.2等)。[5] 标准化的用户命令行和脚本接口基于UNIX系统VShell。[6] 许多用户级程序、服务和实用程序(包括awk、echo、ed)以及所需的程序级服务(包括基本输入/输出:文件、终端和网络)也被标准化了。POSIX还定义了大多数现代操作系统支持的标准线程库API。2008年,POSIX的大部分被合并成一个单一的标准(IEEE Std 1003.1-2008,也称为POSIX.1-2008)。

截至2014年,POSIX文档分为两部分:

  • POSIX.1,2013版:POSIX基本定义、系统接口、命令和实用程序(包括POSIX.1、POSIX.1的扩展、实时服务、线程接口、实时扩展、安全接口、网络文件访问和网络进程到进程通信、用户可移植性扩展、纠正和扩展、保护和控制实用程序以及批处理系统实用程序。这是POSIX 1003.1-2008,附有技术勘误。)
  • POSIX一致性测试:POSIX的测试套件与标准:VSX-PCTS或VSX POSIS一致性测试套件。[7]

POSIX标准的开发发生在奥斯汀集团(一个联合工作组,将IEEE、Open Group和ISO/IECJTC 1组织联系在一起)。

3 版本编辑

3.1 1997年以前的部分

1997年之前,POSIX包括几个标准:

  • POSIX.1:核心服务(包含标准ANSI C) (IEEE标准1003.1-1988)
    • 进程创建和控制
    • 信号
      • 浮点异常
      • 分段/内存违规
      • 非法指令
      • 总线错误
      • 定时器
    • 文件和目录操作
    • 管道
    • C语言库(标准C)
    • 输入输出端口接口和控制
    • 进程触发器
  • POSIX.1b:实时扩展(IEEE Std 1003.1b-1993,后来成为libt——实时扩展库)[8]
    • 优先级调度
    • 实时信号
    • 时钟和计时器
    • 信号灯
    • 消息传递
    • 共用存储器
    • 异步和同步输入输出
    • 内存锁定接口
  • POSIX.1c:线程扩展(IEEE标准1003.1c-1995)
    • 线程创建、控制和清理
    • 线程调度
    • 线程同步
    • 信号处理
  • POSIX.2:Shell和实用程序(IEEE标准1003.2-1992)
    • 命令解释程序
    • 实用程序

3.2 1997年以后的版本

1997年后,奥斯汀工作组开发了POSIX修订版。这些规范在被ISO正式批准成为POSIX标准之前,被称为单一UNIX规范。

POSIX.1-2001

POSIX.1-2001(或IEEE标准1003.1-2001)等同于单个UNIX规范第3版[9]

该标准包括:

  • 基础定义,第6期,
  • 系统接口和标题,第6期,
  • 命令和实用程序,第6期。

POSIX.1-2004(有两个TCs)

IEEE Std 1003.1-2004涉及POSIX.1-2001的小更新。它包含了两个小的更新或勘误表,称为技术勘误表(TCs)。[10] 其内容可在网上查阅。[11]

POSIX.1-2008(含两个技术勘误表)

基础规范,第7项(或IEEE标准1003.1-2008,2016版)类似于当前的2017版(截至2018年7月22日)。[12][13] 免费的在线拷贝可能仍然可用。[12]

本标准包括:

  • 基础定义,第7期,
  • 系统接口和标题,第7期,
  • 命令和实用程序,第7期,
  • 基本原理卷。

POSIX.1-2017

IEEE标准1003.1-2017(IEEE标准1003.1-2008的修订版)- IEEE信息技术标准-便携式操作系统接口(POSIX(R))基本规范,第7期可从Open Group或IEEE获得,截至2018年7月22日为当前标准。

4 争议编辑

4.1 512字节与1024字节的数据块

POSIX要求df和du实用程序的默认块大小为512字节,反映了磁盘上块的典型大小。当理查德·斯托尔曼和GNU团队为GNU操作系统实现POSIX时,他们反对这样做,理由是大多数人认为是1024字节(或1个KiB)块。引入环境变量POSIX _ ME _ HARDER是为了允许用户强制执行符合标准的行为。[14] 变量名后来被更改为POSIXLY _ CORRECT。[15]这个变量现在也用于许多其他行为怪癖,其中“POSIX和常识不一致”。

5 面向POSIX的操作系统编辑

下列操作系统的某些版本已经过认证,符合一个或多个不同的POSIX标准。这意味着他们通过了自动化一致性测试。[16]

5.1 POSIX认证

下列操作系统的某些版本已经过认证,符合一个或多个不同的POSIX标准。这意味着他们通过了自动化一致性测试。[17]

5.2 大多数符合POSIX

以下内容虽然没有正式认证为POSIX兼容,但在很大程度上符合要求:

  • 机器人 (可通过安卓NDK获得)
  • BeOS (随后 俳句)
  • 康蒂基
  • 达尔文 (的核心 OS X/互助委员会 和 ios)
  • FreeBSD[29]
  • illumos
  • Linux (大多数发行版 — 看见 Linux标准库)
  • LynxOS
  • MINIX (现在 MINIX3)
  • MPE/iX[30]
  • NetBSD
  • RTOS核
  • NuttX
  • OpenBSD
  • OpenSolaris[31]
  • PikeOS RTOS适用于带有可选PSE51和PSE52分区的嵌入式系统;看见 分区(大型机)
  • 氧化还原
  • RTEMS –根据IEEE标准设计的POSIX应用编程接口支持。1003.13-2003 PSE52
  • SkyOS
  • 音节
  • VSTa
  • VMware ESXi
  • VxWorks
  • Xenix

微软windows操作系统

  • Cygwin为微软windows系统提供了一个基本符合POSIX的开发和运行时环境。
  • MinGW是Cygwin的一个分支,它提供了一个较少符合POSIX的开发环境,并通过微软旧的可视化运行时库Msvcrt支持兼容的C编程应用程序。
  • 微软POSIX子系统,一个可选的windows子系统,包含在windows2000之前基于windowsNT的操作系统中。POSIX-1与1990年修订版一样,没有线程或socket
  • Interix最初是由Softway Systems公司开发的,是微软在1999年购买的微软POSIX子系统的升级和替换。它最初是作为一个独立的附加产品销售的,后来作为一个组件包含在SFU的UNIX系统服务中,最后作为一个组件包含在r 2的windows服务器2003和后来的windows操作系统版本中,名为“基于UNIX的应用子系统”(SUA);后来在2012年被弃用(windows8),在2013年被弃用(2012年R2,8.1)。[32] 它使某些微软windows产品完全符合POSIX标准。
  • 用于Linux的windows子系统,也称为WSL,是一个兼容层,用于使用诸如Ubuntu、Debian或OpenSUSE等Linux映像在windows10上本机运行Linux二进制可执行文件,作为UNIX的windows服务的升级和替换。它于2016年4月发布测试版。第一个发行版是Ubuntu。
  • AT&T研究公司的UWIN在Win32应用编程接口之上实现了一个POSIX层。
  • MKS工具包(MKS Toolkit)最初是为微软操作系统(MS-DOS)创建的,是MKS Inc .生产和维护的软件包,为编写脚本、连接以及将Unix和Linux软件移植到32位和64位微软windows系统提供了一个类似Unix的环境。它的一个子集被包括在1998年为UNIX(SFU)发行的第一版windows服务中。[33]
  • 虽然对文件、时间、环境和套接字访问的支持在很大程度上仍然是不完整的,并且不能与符合POSIX的实现完全互操作,[34] 但是windowsC运行时库和windows套接字应用编程接口实现了常用的POSIX应用编程接口函数。[35][36]

OS/2的POSIX

OS/2的大部分符合POSIX的环境:

  • emx+gcc–基本符合POSIX标准

DOS的POSIX

部分符合POSIX的DOS环境包括:

  • emx+gcc–基本符合POSIX标准
  • DJGPP–部分符合POSIX标准
  • 通过EMM386 /MULTI实现的DR-DOS多任务内核——可提供POSIX线程前端应用编程接口扩展

符合兼容性功能

以下内容没有被正式认证为POSIS兼容,但是它们通过某种兼容特性(通常是翻译库,或者内核上的一层)实现POSIX支持,从而在很大程度上符合标准。没有这些特性,它们通常是不兼容的。

  • eCos–POSix是标准分发的一部分,被许多应用程序使用。下面的“外部链接”部分有更多信息。
  • MorphOS (通过内置的ixemul库)
  • OpenVMS(通过可选的POSIX包)
  • 贝尔实验室APE - ANSI/POSIX环境中的计划9[37]
  • RIOT(通过可选的POSIX模块)
  • 带有 PIPS 的Symbian OS  (PIPS 是Symbian上的 POSIX)
  • Windows NT 内核(当使用微软SFU 3.5或SUA时)
    • 带有服务包3或更高版本的Windows 2000服务器版或专业版。要符合POSIX,必须激活WindowsNT和Windows2000服务器版的可选功能。[38]
    • 带有服务包1或更高版本的Windows XP专业版
    • Windows服务器2003
    • WindowsServer2008和WindowsVista的终极版和企业版
    • WindowsServer2008 R2版和Windows7的终极版和企业版
    • 尽管已被否决,但仍可用于Windows服务器2012和Windows8的企业版
  • 运行在z/OS上的UNIX系统服务(认证为兼容)

参考文献

  • [1]

    ^"POSIX.1 FAQ". The Open Group. 5 October 2011..

  • [2]

    ^"POSIX 1003.1 FAQ Version 1.12". 2 February 2006. Retrieved 16 July 2006..

  • [3]

    ^"POSIX". Standards. IEEE..

  • [4]

    ^"The origin of the name POSIX". 2011. Retrieved 28 September 2013..

  • [5]

    ^PASC Status (including POSIX). IEEE Computer Society. 2003-12-04. Retrieved 2015-03-01..

  • [6]

    ^"Shell Command Language - The Open Group Base Specifications Issue 7, 2013 Edition"..

  • [7]

    ^"POSIX". The Open Group..

  • [8]

    ^"librt(3LIB)". docs.oracle.com. man pages section 3: Library Interfaces and Headers. Oracle Corporation. 1998-08-04. Retrieved 2016-02-18. librt, libposix4- POSIX.1b Realtime Extensions library [...] librt is the preferred name for this library. The name libposix4 is maintained for backward compatibility and should be avoided. Functions in this library provide most of the interfaces specified by the POSIX.1b Realtime Extension..

  • [9]

    ^"The Open Group announces completion of the joint revision to POSIX and the Single UNIX Specification" (Press release). The Open Group. 30 January 2002. Retrieved 26 July 2009..

  • [10]

    ^"IEEE Std 1003.1" (2004 ed.). Unix.org. Retrieved 26 July 2009.

  • [11]

    ^"IEEE Std 1003.1" (2004 ed.). The Open Group..

  • [12]

    ^"Base Specifications, Issue 7, 2016 Edition". The Open Group. Retrieved 18 December 2014..

  • [13]

    ^"The Austin Common Standards Revision Group". The Open Group. Retrieved 1 March 2016..

  • [14]

    ^Stallman, Richard (August 28, 1991). "Democracy Triumphs in Disk Units". Newsgroup: gnu.announce. Usenet: 9108281809.AA03552@mole.gnu.ai.mit.edu – via Google Groups..

  • [15]

    ^"GNU Coding Standards". GNU..

  • [16]

    ^"POSIX Certification". IEEE..

  • [17]

    ^"POSIX Certified by IEEE and The Open Group - Program Guide"..

  • [18]

    ^"IBM". The Open Group. Retrieved 26 January 2014..

  • [19]

    ^"Hewlett-Packard". The Open Group. Retrieved 26 January 2014..

  • [20]

    ^"Silicon Graphics, Inc". The Open Group. Retrieved 26 January 2014..

  • [21]

    ^"Huawei Technology Co., Ltd". The Open Group. Retrieved 26 May 2017..

  • [22]

    ^"The Open Brand - Register of Certified Products". Register of Open Branded Products. The Open Group. Retrieved 20 May 2015..

  • [23]

    ^"Apple Inc". Register of Open Branded Products. The Open Group. Retrieved 20 May 2015..

  • [24]

    ^"Oracle Corporation". The Open Group. Retrieved 26 January 2014..

  • [25]

    ^"UnixWare ® 7.1.3 and later". The Open Group. 16 May 2003..

  • [26]

    ^"QNX Achieves New POSIX Certification". QNX. 8 April 2008. Retrieved 16 January 2016..

  • [27]

    ^"Inspur Co., Ltd". The Open Group. Retrieved 26 May 2017..

  • [28]

    ^"POSIX Certification Register". get.posixcertified.ieee.org. Retrieved 2018-03-09..

  • [29]

    ^Schweikhardt, Jens. "POSIX utilities". FreeBSD..

  • [30]

    ^Enterprise, I. D. G. (1994-11-07). Computerworld (in 英语). IDG Enterprise..

  • [31]

    ^Solter, Nicholas A.; Jelinek, Jerry; Miner, David (2011-03-21). OpenSolaris Bible (in 英语). John Wiley & Sons. ISBN 9781118080313..

  • [32]

    ^Features Removed or Deprecated in Windows Server 2012.

  • [33]

    ^Windows NT Services for UNIX Add-On Pack for NT 4; see also the November '98 press release for MKS toolkit 6.1, also archived elsewhere.

  • [34]

    ^"MSDN Library: Deprecated CRT Functions". Microsoft. Retrieved 8 Oct 2015..

  • [35]

    ^"MSDN Library: Porting Socket Applications to Winsock". Microsoft. Retrieved 8 Oct 2015..

  • [36]

    ^"Winsock Programmer's FAQ Articles: BSD Sockets Compatibility". Warren Young. 31 Aug 2015. Retrieved 8 Oct 2015..

  • [37]

    ^"APE — ANSI/POSIX Environment". Plan 9. Bell Labs..

  • [38]

    ^"POSIX Compatibility". MS Windows NT Workstation Resource Kit. Microsoft..

阅读 1813
版本记录
  • 暂无