[Linux/C/C++ 学习笔记]系列 4. POSIX标准(一)简介
一、POSIX标准的起源
POSIX(Portable Operating System Interface for Unix,可移植操作系统接口)标准是一个由IEEE(美国电气和电子工程师协会)制定的开放标准,其主要目的是为了增强不同操作系统之间的兼容性和应用程序的可移植性。POSIX标准的起源可以追溯到20世纪70年代和80年代UNIX系统的快速发展阶段。POSIX标准起源的历史过程主要为:
- UNIX系统的快速发展
1969年,贝尔实验室(AT&T Bell Labs)开发了UNIX操作系统,这种操作系统以其简单、灵活和易于移植的特点迅速普及。
随着UNIX的流行,不同组织和厂商(如BSD、AT&T System V、IBM AIX等)开发了自己的UNIX版本。这些变种系统之间在功能、接口和工具上产生了分歧。 - 跨平台兼容性问题
不同的UNIX变种导致应用程序开发者需要为每个系统单独编写代码,从而大大增加了软件开发和维护的成本。
因此,需要一种统一的标准,来保证不同UNIX系统之间的兼容性和应用程序的可移植性。 - IEEE和ISO的介入
1985年,IEEE成立了POSIX工作组(正式名称为IEEE P1003委员会),以制定一个可移植操作系统接口标准。
1988年,POSIX的第一个版本(POSIX.1)正式发布,定义了系统调用和C语言API的标准。
国际标准化组织(ISO)和国际电工委员会(IEC)也参与了该工作,并于1990年将POSIX纳入国际标准(ISO/IEC 9945)。
POSIX 定义了应用程序编程接口 (API) 以及命令行 shell 和实用程序接口,以实现与 Unix 和其他操作系统变体的软件兼容性(可移植性)。
二、POSIX的主要内容
POSIX 标准涵盖了一系列操作系统接口和功能,它的主要目的是为应用程序提供一个统一的编程环境,使它们可以在不同的操作系统上无缝运行。POSIX标准主要包括了:
POSIX 的当前版本主要包括以下内容:
- 基本系统接口
定义术语、头文件、基础数据类型和标准错误码。 - 系统接口
涵盖文件、目录、进程、线程、信号、内存、I/O 等核心操作系统接口。
规范操作系统提供的核心 API,是 POSIX 标准的核心部分 - Shell 和实用工具
定义标准命令行工具和 Shell 脚本行为。 - 实时扩展
支持实时功能,如实时调度、定时器、信号队列等。 - 线程
定义 POSIX 线程(Pthreads)接口。 - 网络编程
基于 socket 的网络通信接口。 - 异步 I/O
定义异步 I/O 操作接口。 - 安全扩展
提供访问控制列表(ACL)和权限管理。
三、面向 POSIX 的操作系统
面向 POSIX 的操作系统是指那些部分或完全实现了 POSIX 标准的操作系统,它们通过支持 POSIX API 提供跨平台兼容性,使应用程序可以在多个系统上运行而无需进行大量修改。
- 当前认证的 POSIX 系统包括 AIX、macOS、VxWorks 等。
- 大部分符合 POSIX 的系统,如 Linux(大部分发行版)、BSD 系列、Android 等,未认证但实现了大部分标准。
- 一些系统通过兼容层提供 POSIX 支持,如 Windows 的 WSL 和 Cygwin 等。
四、 POSIX的意义
可移植性:通过定义一套标准的API,开发者可以编写一次代码,就能在所有兼容POSIX的系统上运行。
开放性:推动操作系统开发的开放性,避免厂商锁定(vendor lock-in)。
标准化:为操作系统功能和行为提供明确的规范。
POSIX标准如今在许多主流操作系统中得到了支持,例如Linux、macOS,以及部分支持的Windows(通过子系统或第三方工具)。