ポータブルオペレーティングシステムインターフェース (POSIX ; [ 1 ] )は、オペレーティングシステム 間の互換性を維持するためにIEEE コンピュータ協会 によって指定された標準 ファミリです。[ 1 ] 互換性のレベルを定義するために、POSIX は、アプリケーションプログラミングインターフェース (API)、コマンドラインシェル 、およびシェルコマンド に分類できる機能の多くの側面を規定しています。もともとは一般的な Unix API、シェル、およびコマンドから派生したもので(Unix はメーカー中立であると考えられていたため)、今日では多くのシステムがこの標準に準拠しており、これにはブランド Unix システム、Unix ライクな システム、歴史的に Unix と無関係であった多くのシステムが含まれます。[ 1 ] [ 2 ]
標準化されたユーザーコマンドラインとスクリプトインターフェースは UNIX System V Bourneシェル をベースとしている。[ 3 ] 多くのユーザーレベルプログラム、サービス、ユーティリティ(awk 、echo 、ed など)もUNIX System V版をベースとして標準化されており、必要なプログラムレベルサービス(基本I/O :ファイル 、端末 、ネットワーク など)も標準化されている。POSIXは標準のスレッド ライブラリAPIも定義しており、これは最近のほとんどのオペレーティングシステムでサポートされている。
POSIX 標準は、Austin Group ( IEEE、The Open Group 、ISO/IEC JTC 1/SC 22 /WG 15 の共同ワーキング グループ) によって開発されています。
POSIXはアプリケーション開発者とシステム開発者の両方が使用することを目的としています。[ 4 ]
名前 この標準規格は、 /usr/group 協会の関連活動を基にして1984年に始まったプロジェクトから生まれました。 [ 5 ] リチャード・ストールマンは、 IEEEに以前のIEEE-IX の代わりにPOSIX という名称を提案しました。[ 6 ] [ 7 ] [ 8 ] 委員会はPOSIXの方が発音しやすく覚えやすいと判断し、それを採用しました。
もともと、POSIX は 1988 年にリリースされた IEEE Std 1003.1-1988 を指していました。POSIX 標準ファミリは正式にはIEEE 1003 として指定され、ISO/IEC 標準番号はISO / IEC 9945 です。
POSIXはIEEEの商標です。 [ 1 ]
バージョン POSIX は当初、コアサービスに関する単一の文書で構成されていましたが、時間の経過とともに仕様を拡張および改訂するための追加文書が公開されました。1997 年より前は、POSIX は数年にわたって公開された複数の文書で構成されていました。1997 年以降、オースティン グループが Single UNIX Specification (SUS)という仕様を作成しました。時間の経過とともに、グループはこの仕様のバージョンを公開し、後に POSIX は SUS バージョンの一部またはすべてに従って修正されます。SUS バージョンは、必要な動作をグループ化したボリュームのコレクションと、その他の情報 (ボリューム外) で構成されます。[ 9 ] 各ボリュームには、バージョンの各ボリュームで同じであるが、バージョンと同じ値ではない発行番号が割り当てられています。たとえば、SUS バージョン 3 (SUSv3) には、発行 6 というラベルの付いたボリュームが含まれています。
2014 年現在、POSIX ドキュメントは 2 つの部分に分かれています。
POSIX.1、2013 版: POSIX 基本定義、システム インターフェイス、コマンドおよびユーティリティ (POSIX.1、POSIX.1 の拡張、リアルタイム サービス、スレッド インターフェイス、リアルタイム拡張、セキュリティ インターフェイス、ネットワーク ファイル アクセスおよびネットワーク プロセス間通信、ユーザー ポータビリティ拡張、修正および拡張、保護および制御ユーティリティ、バッチ システム ユーティリティが含まれます。これは、技術訂正 1 を含む POSIX 1003.1-2008 です。) POSIX適合性テスト:POSIXのテストスイートは標準VSX-PCTS またはVSX POSIX適合性テストスイート に付属しています。[ 10 ]
1997年以前
POSIX.1 コア サービス (IEEE Std 1003.1-1988) には標準ANSI C が組み込まれており、次の内容が含まれます。
プロセスの作成と制御 信号 浮動小数点例外 セグメンテーション/メモリ違反 不正な命令 バスエラー タイマー ファイルとディレクトリの操作 パイプ Cライブラリ(標準C) POSIX端末インターフェース
POSIX.1b リアルタイム拡張 (IEEE Std 1003.1b-1993、後にlibrt(リアルタイム拡張ライブラリ)として登場)には以下が含まれます。[ 11 ]
優先スケジュール リアルタイム信号 時計とタイマー セマフォ メッセージパッシング 共有メモリ 非同期 および同期I/Oメモリロックインターフェース
POSIX.1c スレッド拡張 (IEEE Std 1003.1c-1995) には以下が含まれます。
スレッドの作成、制御、およびクリーンアップ スレッドのスケジューリング スレッド同期 信号処理
POSIX.2 シェルとユーティリティ (IEEE Std 1003.2-1992) には以下が含まれます。
コマンドインタープリタ ユーティリティプログラム
POSIX.1-2001 POSIX.1-2001 (IEEE Std 1003.1-2001) は、SUSv3(第6版)の大部分を占めており、基本定義 、システムインターフェースとヘッダー 、コマンドとユーティリティ で構成されています。POSIX仕様では、SUSv3のcurses API(SUSv3には明確なグループ分けはありませんが、 X/Open Curses と呼ばれることが多い)の要件は明確に除外されています。[ 12 ]
IEEE Std 1003.1-2004は、POSIX.1-2001を2つのマイナーアップデートまたは技術訂正文書と呼ばれるエラッタによって修正しました。 [ 13 ] [ 14 ]
POSIX.1-2008 POSIX.1-2008( IEEE Std 1003.1-2008 、2016年版)は、その前身と同様に、 SUSv4(基本定義 、システムインタフェースとヘッダー 、コマンドとユーティリティ の第7巻)の規範資料の大部分で構成されています。[ 15 ] SUSv4には、それ自体は含まれていませんが、主にPOSIXに適用される根拠情報も含まれています。
POSIX.1-2017 POSIX.1-2017 ( IEEE Std 1003.1-2017 )は、2つの技術的訂正によって以前のバージョン(POSIX.1-2008)を改訂した。[ 16 ]
POSIX.1-2024 POSIX.1-2024(IEEE Std 1003.1-2024 )は2024年6月14日に発行されました。[ 15 ] [ 17 ]
POSIX 2024 の時点では、標準はC17 言語標準に準拠しています。
論争
512バイトブロックと1024バイトブロック POSIXは、ディスク上のブロックの一般的なサイズを反映して、df およびduユーティリティのデフォルトの ブロック サイズを512バイトと定めています。リチャード・ストールマン とGNUチームが GNUオペレーティングシステム 用にPOSIXを実装していたとき、ほとんどの人が1024バイト(または1 KiB )のブロックで考えているという理由で、これに反対しました。環境変数POSIX_ME_HARDERが 導入され、ユーザーは標準に準拠した動作を強制できるようになりました。[ 18 ] この変数名は後にPOSIXLY_CORRECT に変更されました。[ 19 ] 2025年現在、この変数は他の多くの動作の癖にも使用されています。[ 20 ] [ 21 ] [ 22 ] [ 23 ] [ 24 ] [ 25 ] [ 26 ] [ 27 ] [ 28 ]
オペレーティング システムは、POSIX 標準への準拠度に応じて分類できます。
認定済み 以下のオペレーティングシステムの現在のバージョンは、様々なPOSIX標準の1つ以上に準拠していることが認定されています。これは、自動適合テスト[ 29 ] に合格しており、認定の有効期限が切れておらず、オペレーティングシステムが廃止されていないことを意味します。[ 30 ] [ 31 ]
以下のオペレーティングシステムの一部のバージョンは、様々なPOSIX標準規格の1つ以上に準拠していることが認定されています。これは、自動適合テストに合格したことを意味します。認定は期限切れであり、一部のオペレーティングシステムは廃止されています。[ 30 ]
以下は POSIX 準拠として認定されていませんが、部分的に準拠していると見なされており、準拠している と呼ばれることもあります。
以下のオペレーティング システムは POSIX 準拠として認定されていませんが、互換性機能 (通常は変換ライブラリ、またはカーネル上のレイヤー) を介して POSIX サポートを実装することにより、標準に大部分準拠しています。
一部のテクノロジでは、オペレーティング システム自体が POSIX にほとんど準拠していないかまったく準拠していない場合でも、オペレーティング システムが POSIX に一定レベル準拠できるようになります。
Windowsの場合 Windows は POSIX に準拠していませんが、次のテクノロジによって一定レベルの準拠が提供されます。
シグウィン Microsoft Windows 向けに、ほぼ POSIX 準拠の開発および実行環境を提供します。MinGW Cygwin のフォークであり 、POSIX 準拠ではない開発環境を提供し、Microsoft の古い Visual Cランタイム ライブラリである Msvcrtを介して互換性のある C プログラム アプリケーションをサポートします。 libunistd CinePaint のLinuxベースのC/ C++ ソースコードをMicrosoft Visual Studio でそのままビルドするために作成された、ほぼPOSIX準拠の開発ライブラリです。POSIX APIをWindows APIの対応する呼び出しにマッピングするPOSIX互換ヘッダーファイルを備えた軽量実装です。[ 61 ] Microsoft POSIX サブシステム Windows 2000 までの Windows NT ベースのオペレーティング システムに含まれているオプションの Windows サブシステム。1990 年改訂版の POSIX.1 をスレッド やソケット なしでサポートしていました。 インターリックス OpenNTは元々Softway Systems, Inc.が開発したもので、 1999年にMicrosoft が買収したMicrosoft POSIXサブシステム のアップグレードおよび代替品である。当初はスタンドアロンのアドオン製品として販売され、その後Windows Services for UNIX (SFU)のコンポーネントとして組み込まれ、最終的にはWindows Server 2003 R2 以降のWindows OSリリースに「UNIXベースアプリケーション用サブシステム」(SUA)という名前でコンポーネントとして組み込まれたが、2012年(Windows 8)に非推奨となり[ 62 ] 、2013年(2012 R2、8.1)には廃止された。これにより、特定のMicrosoft Windows 製品で完全なPOSIX準拠が可能になる。 Linux 用 Windows サブシステム (WSL)Ubuntu、Debian、OpenSUSEなどのLinuxイメージを使用して、Windows 10および11上でLinuxバイナリ実行ファイルをネイティブに実行するための互換性レイヤー。Windows Services for UNIXのアップグレードおよび代替として機能します。2016年4月にベータ版がリリースされました。最初に利用可能になったディストリビューションはUbuntuでした。 ユーウィン AT&T Research では、Win32 API の上に POSIX レイヤーを実装しています。 MKS ツールキット 元々はMS-DOS用に開発され、 MKS Inc. によって開発・保守されているソフトウェアパッケージです。32ビットおよび64ビットのMicrosoft Windowsシステムへの Unix およびLinux ソフトウェアのスクリプト作成、接続、移植のためのUnixライクな 環境を提供します。そのサブセットは、1998年にリリースされたWindows Services for UNIX (SFU)の最初のリリースに含まれていました。[ 63 ] [ 64 ] Windows C ランタイム ライブラリ とWindows ソケット API ファイル、時間、環境、ソケットアクセスのための一般的に使用されるPOSIX API関数を実装しているが[ 65 ] 、サポートは依然として不完全であり、POSIX準拠の実装と完全に相互運用できるわけではない。[ 66 ] [ 67 ]
OS/2の場合OS/2 の POSIX 環境:
emx+gcc 大部分は POSIX に準拠しています。
DOSの場合 DOS の POSIX 環境には次のものが含まれます。
emx+gcc POSIX準拠 DJGPP 部分的にPOSIX準拠 DR-DOS EMM386 /MULTI 経由のマルチタスクコア- POSIXスレッドフロントエンドAPI拡張が利用可能
参照
参考文献 ^ a b c d 「POSIX.1 FAQ」 . The Open Group. 2020年6月13日. 2023年 2月20日 閲覧 。^ 「IEEE 1003.1-2024」 . IEEE規格協会 . ^ 「Shellコマンド言語 - The Open Group Base仕様 第7版、2013年版」 。 2020年 4月28日 閲覧 。 ^ 「はじめに」 。The Open Group Base仕様書、第7号、2018年版。 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 Status (including POSIX) (Report). IEEE Computer Society . 2003年12月4日. 2024年 9月26日 閲覧 。 ^ 「テストスイート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リアルタイム拡張で規定されているインタフェースのほとんどを提供します。 ^ 「単一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日 閲覧 。 。^ a b 「オースティン共通規格改訂グループ」 The Open Group . 2024年 7月20日 閲覧 。 ^ 「Base Specifications, Issue 7, 2018 Edition」 (2018年版)The Open Group . 2024年 7月20日 閲覧 。 ^ 「Base仕様、第8号」 (2024年版)。The Open Group。 。^ リチャード・ストール マン(1991年8月28日) 「ディスクユニットにおける民主主義の勝利」 。 ニュースグループ : gnu.announce。Usenet : [email protected] – Googleグループ経由。 ^ 「GNUコーディング標準」 。GNU。 ^ "environ(7) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年5月17日. 2025年 10月10日 閲覧 。 ^ "bash(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年4月7日. 2025年 10月10日 閲覧 。 ^ "file(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年6月17日. 2025年 10月10日 閲覧 。 ^ "find(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年7月9日. 2025年 10月10日 閲覧 。 ^ "grep(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年3月21日. 2025年 10月10日 閲覧 。 ^ "more(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年8月9日. 2025年 10月10日 閲覧 。 ^ "patch(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年5月1日. 2025年 10月10日 閲覧 。 ^ "ps(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年4月23日. 2025年 10月10日 閲覧 。 ^ "renice(1) — Linuxマニュアルページ" . man7.org . Michael Kerrisk. 2025年8月9日. 2025年 10月10日 閲覧 。 ^ 「POSIX Certified by IEEE and The Open Group - Program Guide」 。第2章「認定の取得方法」 。 2024年 9月26日 閲覧 。 ^ a b 「POSIX Certified by IEEE and The Open Group - Program Guide」 。第4章「更新と認定製品のアップデート」 。 2024年 9月26日 閲覧 。 ^ 「企業別認定製品」 The Open Group.nd . 2022年 1月22日 閲覧 。 ^ a b 「IBM」 . The Open Group . 2022年 1月23日 閲覧 。 ^ 「Hewlett-Packard」 . The Open Group . 2014年 1月26日 閲覧 。 ^ a b 「POSIX Certification Register」 . The Open Group . 2024年 8月22日 閲覧 。 ^ 「IntelベースのMacコンピュータ上のmacOSバージョン10.5 Leopard」 。 オープンブランド製品登録簿 。The Open Group 。 2015年 5月20日 閲覧 。 ^ 「IntelベースのMacコンピューター上のmacOSバージョン26.0 Tahoe」 The Open Group . 2025年 10月5日 閲覧 。 ^ 「Apple SiliconベースのMacコンピューター上のmacOSバージョン26.0 Tahoe」 The Open Group . 2025年 10月5日 閲覧 。 ^ 「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日 閲覧 。 ^ 「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日時点の オリジナル よりアーカイブ 。 ^ リアルタイム製品技術概要、第5版 (PDF) . Digital Equipment Corporation . 1992年12月. 2021年 12月8日 閲覧 。 ^ 「第29章 POSIX互換性」 。MS Windows NT Workstationリソースキット 。Microsoft。 2008年1月15日時点の オリジナル よりアーカイブ。 ^ Rowe, Robin (2022年9月8日). "libunistd" . Github . 2023年 2月18日 閲覧. Windows、Linux、MacOSで動作する単一のコードベースのC++コードをビルドしたい場合は、Windows用のlibunistdが必要です。 ^ 「Windows Server 2012で削除または非推奨となった機能」 。Microsoft Docs 。2016年8月31日。 ^ 「Windows NT Services for UNIX アドオン パック」 。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ソケットの互換性」 ウォーレン・ヤング、2015年8月31日。 2015年 10月8日 閲覧 。
外部リンク