POSIX
略語 | POSIX |
---|---|
状態 | 公開済み |
開始年 | 1988年 |
最新バージョン | IEEE Std 1003.1-2024 2024 |
組織 | オースティン グループ( IEEE コンピュータ ソサエティ、The Open Group、ISO/IEC JTC 1/SC 22 /WG 15) |
関連規格 | 9945認証 |
ドメイン | アプリケーションプログラミングインターフェース |
Webサイト | posix.opengroup.org |
ポータブルオペレーティングシステムインターフェース(POSIX ; IPA : / ˈ p ɒ z . ɪ k s / [ 1] )は、オペレーティングシステム間の互換性を維持するためにIEEEコンピュータ協会によって指定された標準ファミリです。[1] POSIXは、Unixやその他のオペレーティングシステムのバリアントとのソフトウェア互換性(移植性)のために、システムレベルおよびユーザーレベルのアプリケーションプログラミングインターフェース(API)に加えて、コマンドラインシェルとユーティリティインターフェースを定義します。 [1] [2] POSIXはIEEEの商標でもあります。 [1] POSIXは、アプリケーション開発者とシステム開発者の両方が使用することを目的としています。[3]
名前
もともと、「POSIX」という名前は、1988 年にリリースされた IEEE Std 1003.1-1988 を指していました。POSIX 標準ファミリは正式にはIEEE 1003として指定され、ISO/IEC 標準番号はISO / IEC 9945 です。
この標準規格は、1984年に/usr/group協会の関連活動を基にして始まったプロジェクトから生まれました。 [4] リチャード・ストールマンは、以前のIEEE-IX [7 ]の代わりにPOSIXという名前をIEEE [5] [6]に提案しました。委員会は、POSIXの方が発音しやすく覚えやすいと判断し、採用しました。[要出典]
概要
Unixが標準システム インターフェースのベースとして選択されたのは、それが「メーカー中立」であるという理由も一部あった。しかし、Unix には複数のメジャー バージョンが存在していたため、共通分母のシステムを開発する必要がありました。Unix系オペレーティング システムの POSIX 仕様は、当初はコアプログラミング インターフェースに関する単一のドキュメントで構成されていましたが、最終的には 19 の個別のドキュメント (POSIX.1、POSIX.2 など) にまで拡大しました。[8]標準化されたユーザーコマンド ラインとスクリプト インターフェースは、 UNIX System Vシェルをベースとしていました。[9]多くのユーザー レベルのプログラム、サービス、ユーティリティ ( awk、echo、edなど) も標準化され、必要なプログラム レベルのサービス (基本的なI/O :ファイル、端末、ネットワークなど)も標準化されました。POSIX は、ほとんどの最新オペレーティング システムでサポートされている標準のスレッドライブラリ API も定義しています。 2008 年に、POSIX のほとんどの部分が 1 つの標準(IEEE Std 1003.1-2008、POSIX.1-2008 とも呼ばれる) に統合されました。
2014 年現在[アップデート]、POSIX ドキュメントは 2 つの部分に分かれています。
- POSIX.1、2013 版: POSIX 基本定義、システム インターフェイス、コマンドとユーティリティ (POSIX.1、POSIX.1 の拡張、リアルタイム サービス、スレッド インターフェイス、リアルタイム拡張、セキュリティ インターフェイス、ネットワーク ファイル アクセスとネットワーク プロセス間通信、ユーザー ポータビリティ拡張、修正と拡張、保護および制御ユーティリティ、バッチ システム ユーティリティが含まれます。これは、技術訂正 1 を含む POSIX 1003.1-2008 です。)
- POSIX適合性テスト:POSIXのテストスイートは標準VSX-PCTSまたはVSX POSIX適合性テストスイートに付随しています。[10]
POSIX 標準の開発は、オースティン グループ( IEEE、The Open Group、ISO/IEC JTC 1/SC 22 /WG 15 の共同作業グループ) で行われています。
バージョン
1997年以前の部品
1997 年以前、POSIX はいくつかの標準で構成されていました。
- POSIX.1 : コアサービス (標準ANSI Cを組み込む) (IEEE Std 1003.1-1988)
- プロセスの作成と制御
- 信号
- ファイルとディレクトリの操作
- パイプ
- C ライブラリ (標準 C)
- POSIX端末インターフェース
- POSIX.1b : リアルタイム拡張 (IEEE Std 1003.1b-1993、後にlibrt—リアルタイム拡張ライブラリとして登場) [11]
- POSIX.1c :スレッド拡張(IEEE Std 1003.1c-1995)
- スレッドの作成、制御、およびクリーンアップ
- スレッドのスケジューリング
- スレッド同期
- 信号処理
- POSIX.2 : シェルとユーティリティ (IEEE Std 1003.2-1992)
- コマンドインタープリタ
- ユーティリティプログラム
1997 年以降のバージョン
1997 年以降、オースティン グループがPOSIX 改訂版を開発しました。仕様は、ISO によって正式に承認されて POSIX 標準となるまでは、 Single UNIX Specificaionという名前で知られていました。
POSIX.1-2001 (2 つの TC を含む)
POSIX.1-2001(またはIEEE Std 1003.1-2001)は、 X/Open Cursesを除いたSingle UNIX仕様バージョン3に相当します。[12]
この規格は以下から構成されています。
- 基本定義、第6号、
- システムインターフェースとヘッダー、第6号、
- コマンドとユーティリティ、第 6 号。
IEEE Std 1003.1-2004はPOSIX.1-2001のマイナーアップデートです。テクニカルコリジェンダ(TC)と呼ばれる2つのマイナーアップデートまたはエラッタが組み込まれています。 [13]その内容はウェブ上で公開されています。[14]
POSIX.1-2008 (2 つの TC を含む)
基本仕様、第7版(またはIEEE Std 1003.1-2008、2016年版)。[15]
この規格は以下から構成されます。
- 基本定義、第7号、
- システムインターフェースとヘッダー、第7号、
- コマンドとユーティリティ、第7号、
- Rationale ボリューム。
POSIX.1-2017
IEEE Std 1003.1-2017 (IEEE Std 1003.1-2008 の改訂版) - IEEE 情報技術標準 - ポータブル オペレーティング システム インターフェイス (POSIX(R)) 基本仕様、第 7 版は、The Open Group または IEEE から入手できます。技術的には、技術訂正 1 および 2 が適用された POSIX.1-2008 と同一です。その内容は Web で入手できます。[16]
POSIX.1-2024
IEEE Std 1003.1-2024 - IEEE情報技術標準 - ポータブルオペレーティングシステムインターフェース(POSIX(R))基本仕様、第8号は、2024年6月14日に発行されました。 [15]その内容はウェブ上で入手できます。[17]
論争
512バイトブロックと1024バイトブロック
POSIXは、ディスク上のブロックの一般的なサイズを反映して、dfおよびduユーティリティのデフォルトのブロックサイズを512バイトにすることを義務付けています。リチャード・ストールマンとGNUチームがGNUオペレーティングシステム用にPOSIXを実装していたとき、ほとんどの人が1024バイト(または1 KiB )のブロックで考えているという理由でこれに反対しました。環境変数POSIX_ME_HARDERが導入され、ユーザーは標準に準拠した動作を強制できるようになりました。[18]この変数名は後にPOSIXLY_CORRECTに変更されました。[19]この変数は現在、他のいくつかの動作の癖にも使用されています。
POSIX指向のオペレーティングシステム
標準への準拠の度合いに応じて、オペレーティング システムを POSIX に完全互換か部分的に互換かに分類できます。
POSIX認定
以下のオペレーティングシステムの現在のバージョンは、さまざまなPOSIX標準の1つ以上に準拠していることが認定されています。これは、自動化された適合テストに合格し[20]、認定が期限切れになっておらず、オペレーティングシステムが廃止されていないことを意味します。[21] [22]
- エイエックス[23]
- HP-UX [24]
- 誠実さ[25]
- macOS ( OS X Leopard以降) [26] [27]
- オープンサーバー[28]
- UnixWare [29]
- VxWorks [25]
- オペレーティングシステム[23]
以前はPOSIX認定
以下のオペレーティングシステムのいくつかのバージョンは、さまざまなPOSIX標準の1つ以上に準拠していることが認定されています。これは、自動化された適合テストに合格したことを意味します。認定は期限切れであり、オペレーティングシステムの一部は廃止されています。[21]
ほぼPOSIX準拠
以下は POSIX 準拠として認定されていませんが、大部分は準拠しています。
- Android (Android NDK 経由で利用可能) [引用が必要]
- BeOS (そしてその後のHaiku )
- コンティキ
- Darwin ( macOSとiOSのコア)
- ドラゴンフライBSD
- フリーBSD [38]
- イルモス
- Linux (ほとんどのディストリビューション)
- リンクスOS
- MINIX (現在はMINIX3 )
- MPE/iX [39]
- ネットBSD
- ニュークリアスRTOS
- ナッツX
- オープンBSD
- オープンソラリス[40]
- オプションの PSE51 および PSE52 パーティションを備えた組み込みシステム用のPikeOS RTOS。パーティション (メインフレーム)を参照。
- PX5 RTOS [41]
- 酸化還元
- RTEMS – IEEE Std. 1003.13-2003 PSE52 に準拠した POSIX API サポート
- セレニティOS
- ストラタスOpenVOS [42]
- スカイOS
- 音節
- ウルトリクス[43]
- VSタ
- VMware ESXi
- ゼニックス
- ゼファー[44]
Microsoft Windows 用 POSIX
- Cygwin は、Microsoft Windows向けに、ほぼ POSIX に準拠した開発および実行環境を提供します。
- Cygwin のフォークであるMinGW は、 POSIX 準拠ではない開発環境を提供し、Microsoft の古い Visual Cランタイム ライブラリであるMsvcrtを介して互換性のあるCプログラム アプリケーションをサポートします。
- libunistdは、もともとCinePaintのLinuxベースのC / C ++ソースコードをMicrosoft Visual Studioでそのままビルドするために作成された、主にPOSIX準拠の開発ライブラリです。POSIX APIをWindows APIの対応するものを呼び出すようにマップするPOSIX互換ヘッダーファイルを持つ軽量実装です。[45]
- Microsoft POSIX サブシステムは、Windows 2000 までの Windows NT ベースのオペレーティング システムに含まれているオプションの Windows サブシステムです。1990 年の改訂版では、スレッドやソケットなしで POSIX.1 をサポートしていました。
- Interixは元々 Softway Systems, Inc. の OpenNT で、1999 年にMicrosoftが買収したMicrosoft POSIX サブシステムのアップグレードおよび代替品です。当初はスタンドアロンのアドオン製品として販売され、その後Windows Services for UNIX (SFU) のコンポーネントとして組み込まれ、最終的にはWindows Server 2003 R2以降の Windows OS リリースに「UNIX ベース アプリケーション用サブシステム」(SUA) という名前でコンポーネントとして組み込まれました。その後、2012 年 (Windows 8) [46]に非推奨となり、2013 年 (2012 R2、8.1) に廃止されました。これにより、特定のMicrosoft Windows製品で完全な POSIX 準拠が可能になります。[要出典]
- Windows Subsystem for Linux(WSL とも呼ばれる)は、Ubuntu、Debian、OpenSUSE などの Linux イメージを使用して、Windows 10 および 11 上で Linux バイナリ実行可能ファイルをネイティブに実行するための互換性レイヤーであり、Windows Services for UNIX のアップグレードおよび代替として機能します。2016 年 4 月にベータ版がリリースされました。最初に利用可能になったディストリビューションは Ubuntu でした。
- AT&T Research のUWIN は、Win32 API の上に POSIX レイヤーを実装します。
- MKS Toolkit は、もともと MS-DOS 用に作成されたソフトウェア パッケージで、MKS Inc.によって作成および保守されており、スクリプト作成、接続、および32 ビットと 64 ビットの両方のMicrosoft WindowsシステムへのUnixおよびLinuxソフトウェアの移植のためのUnix ライクな環境を提供します。そのサブセットは、1998 年にWindows Services for UNIX (SFU)の最初のリリースに含まれていました。[47] [48]
- Windows CランタイムライブラリとWindowsソケットAPIは、ファイル、時間、環境、ソケットアクセスによく使用されるPOSIX API関数を実装していますが、[49]サポートは不完全であり、POSIX準拠の実装と完全に相互運用できるわけではありません。[50] [51] [議論]
OS/2 用 POSIX
OS/2用のほぼ POSIX 準拠の環境:
- emx+gcc – ほぼPOSIX準拠
DOS 用 POSIX
DOSの部分的な POSIX 準拠環境には次のものがあります。
互換性レイヤーによる準拠
以下のものは POSIX 互換として正式に認定されていませんが、何らかの互換性機能 (通常は変換ライブラリ、またはカーネル上のレイヤー) を介して POSIX サポートを実装することで、標準にほぼ準拠しています。これらの機能がなければ、通常は非準拠となります。
- AmigaOS(ixemulライブラリまたはvbcc _PosixLib [52]経由)
- eCos – POSIX は標準ディストリビューションの一部であり、多くのアプリケーションで使用されています。詳細については、以下の「外部リンク」セクションを参照してください。
- IBM i ( PASE互換レイヤー経由)[53]
- MorphOS (組み込みの ixemul ライブラリ経由)
- OpenVMS(オプションのPOSIXパッケージ経由)[54]
- ベル研究所APEのプラン9 - ANSI/POSIX環境[55]
- RIOT (オプションのPOSIXモジュール経由)
- PIPS搭載Symbian OS (PIPS は Symbian 上の POSIX)
- VAXELN(VAXELN POSIXランタイムライブラリによる1003.1および1003.4の部分的なサポート)[56]
- Microsoft SFU 3.5 またはSUA を使用する場合のWindows NT カーネル
- Windows 2000 ServerまたはProfessional(Service Pack 3以降)。POSIX準拠にするには、Windows NTおよびWindows 2000 Serverのオプション機能を有効にする必要があります。[57]
- Windows XP Professional Service Pack 1 以降
- Windows Server 2003
- Windows Server 2008およびWindows Vistaの Ultimate および Enterprise バージョン
- Windows Server 2008 R2およびWindows 7の Ultimate および Enterprise バージョン
- 非推奨ではあるものの、Windows Server 2012およびWindows 8の Enterprise バージョンではまだ利用可能です。
参照
- 単一のUNIX仕様
- POSIXシグナル
- POSIX スレッド
- C POSIX ライブラリ
- IBM Common User Access – ユーザーインターフェース標準
- ポータブル文字セット、POSIX準拠の文字セットロケールでサポートされる103文字のセット
- リアルタイムオペレーティングシステム
- Interix – Microsoft の Windows NT ベースのオペレーティング システム向けのフル機能の POSIX および Unix 環境サブシステム
- TRON プロジェクト – POSIX に代わる OS 標準
参考文献
- ^ abcd "POSIX.1 FAQ". The Open Group. 2020年6月13日. 2023年2月20日閲覧。
- ^ 「IEEE 1003.1-2024」。IEEE規格協会。
- ^ 「はじめに」。The Open Group Base Specifications、2018年第7号。 2021年7月22日閲覧。
- ^ 「JimIsaak - POSIX Impact」. sites.google.com . 2022年9月15日閲覧。
- ^ 「IEEE Std 1003.1 の背景情報」。脚注。
- ^ 「POSIXという名前の由来」。stallman.org 。 2024年9月26日閲覧。
- ^ Stoughton, Nicholas. 「標準の最新情報」. ;login: .
- ^ PASC ステータス (POSIX を含む) (レポート)。IEEEコンピュータ協会。2003 年 12 月 4 日。2024年9 月 26 日閲覧。
- ^ 「Shell Command Language - The Open Group Base Specifications Issue 7、2013 Edition」。2020年4月28日閲覧。
- ^ 「テストスイート VSX-PCTS2003」。The Open Group。
- ^ "librt(3LIB)". docs.oracle.com . man ページ セクション 3: ライブラリ インタフェースとヘッダー。Oracle Corporation。1998 年 8 月 4 日。2016年2 月 18 日に取得。librt
、libposix4 - POSIX.1b リアルタイム拡張ライブラリ [...] librt は、このライブラリの推奨名です。libposix4 という名前は下位互換性のために維持されており、使用しないでください。このライブラリの関数は、POSIX.1b リアルタイム拡張で指定されたインタフェースのほとんどを提供します。
- ^ 「Single UNIX 仕様バージョン 3 - 概要」unix.org。
- ^ 「IEEE Std 1003.1」(2004年版)Unix.org 。 2009年7月26日閲覧。
- ^ 「Base Specifications, Issue 6」(2004年版)。The Open Group 。 2024年7月20日閲覧。。
- ^ ab 「オースティン共通規格改訂グループ」。The Open Group 。 2024年7月20日閲覧。
- ^ 「Base Specifications, Issue 7, 2018 Edition」(2018年版)。The Open Group 。 2024年7月20日閲覧。
- ^ 「Base Specifications、第 8 号」(2024 年版)。The Open Group。。
- ^ リチャード・ストールマン (1991 年 8 月 28 日)。「ディスク装置における民主主義の勝利」。ニュースグループ: gnu.announce。Usenet : 9108281809.AA03552@mole.gnu.ai.mit.edu – Google グループ経由。
- ^ 「GNU コーディング標準」。GNU。
- ^ 「POSIX Certified by IEEE and The Open Group - Program Guide」。セクション 2、認定を取得する方法。2024年9 月 26 日閲覧。
- ^ ab 「POSIX Certified by IEEE and The Open Group - Program Guide」。セクション 4、更新と認定製品のアップデート。2024年9 月 26 日閲覧。
- ^ 「企業別認定製品」The Open Group。nd 。 2022年1月22日閲覧。
- ^ ab "IBM". The Open Group . 2022年1月23日閲覧。
- ^ 「Hewlett-Packard」。The Open Group 。 2014年1月26日閲覧。
- ^ ab 「POSIX Certification Register」。The Open Group 。 2024年8月22日閲覧。
- ^ 「The Open Brand - 認定製品登録」。オープンブランド製品登録。The Open Group 。 2015年5月20日閲覧。
- ^ 「Apple Inc」。オープンブランド製品登録。The Open Group 。 2015年5月20日閲覧。
- ^ 「SCO OpenServer Release 5」。The Open Group。1995年5月3日。 2021年12月24日閲覧。
- ^ 「UnixWare ® 7.1.3 以降」。The Open Group。2003 年 5 月 16 日。2021 年12 月 24 日閲覧。
- ^ 「Huawei Technology Co., Ltd」。The Open Group 。 2017年5月26日閲覧。
- ^ 「Inspur Co., Ltd.」 The Open Group . 2017年5月26日閲覧。
- ^ 「Silicon Graphics, Inc.」 The Open Group 。 2014年1月26日閲覧。
- ^ 「The Open Brand - Register of Certified Products」Open Group 2003年7月23日。2003年8月2日時点のオリジナルよりアーカイブ。 2022年1月23日閲覧。
- ^ 「QNX、新たなPOSIX認証を取得」(プレスリリース)。QNX。2008年4月8日。 2016年1月16日閲覧。
- ^ 「Oracle Corporation」。The Open Group。2017年7月12日時点のオリジナルよりアーカイブ。 2014年1月26日閲覧。
- ^ 「Hewlett-Packard」。The Open Group。2014年7月9日時点のオリジナルよりアーカイブ。2014年1月26日閲覧。
- ^ 「Huawei LiteOS / LiteOS」。Gitee。Huawei。2024年5月23日閲覧。
- ^ Schweikhardt, Jens. 「FreeBSD POSIX 2001 ユーティリティコンプライアンス」。FreeBSD。
- ^ Mark Halper (1994 年 11 月 7 日)。「HP 3000 の販売が市場を驚かせる」。Computerworld、第 28 巻、第 4 号。IDG Enterprise。
- ^ ソルター、ニコラス A.;ジェリネク、ジェリー。デビッド・マイナー(2011年3月21日)。 Solaris 聖書を開きます。ジョン・ワイリー&サンズ。ISBN 9781118080313。
- ^ Lamie, Bill; Taubinger, Rafael (2023年6月15日). 「標準POSIX pthreads APIを備えたRTOS:組み込みLinuxの補完」. Embedded.com . 2023年9月13日閲覧。
- ^ 「OpenVOS POSIX.1: 適合ガイド」。Status Technologies 。 2021年11月26日閲覧。
- ^ ULTRIX POSIX適合性ドキュメント(PDF) . Digital. 1990年6月. 2021年12月13日閲覧。
- ^ 「POSIX サポート」。Zephyr ドキュメント。2023年3 月 7 日閲覧。
- ^ Rowe, Robin (2022年9月8日). 「libunistd」. Github . 2023年2月18日閲覧。Windows
、Linux、MacOSで実行できる単一のコードベースのC++コードをビルドしたい場合は、Windows用にこれが必要です。
- ^ 「Windows Server 2012 で削除または非推奨となった機能」。Microsoft Docs。2016年 8 月 31 日。
- ^ 「Windows NT Services for UNIX Add-On Pack」。Microsoft。1999年5月8日時点のオリジナルよりアーカイブ。
- ^ 「MKS が企業の相互運用性の課題を解決」(プレス リリース)。1999 年 4 月 28 日時点のオリジナルよりアーカイブ。
- ^ 「非推奨の CRT 関数」。Microsoft Docs。2009年 10 月 15 日。2022 年7 月 23 日に閲覧。
- ^ 「ソケット アプリケーションの Winsock への移植」。Microsoft Docs。2021年 1 月 7 日。2022 年7 月 23 日に閲覧。
- ^ 「Winsock プログラマー向け FAQ 記事: BSD ソケットの互換性」。Warren Young。2015 年 8 月 31 日。2015 年10 月 8 日閲覧。
- ^ 「Aminet - dev/C/Vbcc_PosixLib.lha」。
- ^ 「Programming IBM PASE for i」(PDF) . ibm.com . IBM. 2013 . 2021 年11 月 25 日閲覧。
- ^ 「FIPS 151-2 適合性検証済み製品リスト」。Perennial Test Lab。2022年8 月 14 日閲覧。
- ^ 「APE — ANSI/POSIX 環境」。Plan 9 ドキュメント。 ベル研究所。 2017 年 6 月 1 日時点のオリジナルよりアーカイブ。
- ^ Realtime Products 技術概要、第 5 版(PDF)。Digital Equipment Corporation。1992 年 12 月。2021 年12 月 8 日に閲覧。
- ^ 「第 29 章 - POSIX 互換性」。MS Windows NT Workstation リソース キット。Microsoft。2008 年 1 月 15 日時点のオリジナルよりアーカイブ。
外部リンク
- 「The Open Group 基本仕様第 8 版、2024 年版 IEEE Std 1003.1™-2024」。The Open Group/IEEE。
- 「POSIX 認証ホーム」。The Open Group/IEEE。