POSIX(Portable Operating System Interface)とは
POSIX(ポジックス)は、
[オペレーティングシステム]間の互換性を高めるために、
IEEE(米国電気電子学会)が策定した標準規格です。この規格は、主に
UNIX系のOSを対象としており、異なるOS間でも
アプリケーションソフトウェアを容易に移植できるようにすることを目的としています。
具体的には、POSIXは以下のような要素について標準的なインターフェースを定義しています。
コマンドラインインタプリタ(シェル): ユーザーがコマンドを入力・実行するためのインターフェース
共通ユーティリティプログラム: ファイル操作、テキスト処理など、OS上で一般的に利用されるプログラム
アプリケーションプログラミングインターフェース (API): プログラムがOSの機能を利用するためのインターフェース
POSIXに準拠したOSであれば、POSIX規格に沿って書かれたプログラムは、特別な変更なしに動作させることが可能になります。これにより、開発者は特定のOSに依存しない、よりポータブルなソフトウェアを開発できるようになります。
POSIXの規格内容
POSIX規格は、複数のバージョンが存在し、それぞれ定義されている内容が異なります。主なバージョンと内容は以下の通りです。
POSIX.1 (IEEE Std 1003.1)
コアサービス: プロセスの生成と制御、シグナル処理、浮動小数点例外、メモリ違反、タイマー、ファイル・ディレクトリ操作、パイプ、Cライブラリ、I/Oポートインターフェース、プロセストリガーなどが含まれます。
POSIX.1b (IEEE Std 1003.1b)
リアルタイム拡張: 優先度スケジューリング、リアルタイムシグナル、クロックとタイマー、セマフォ、メッセージパッシング、共有メモリ、非同期・同期I/O、メモリロックインターフェースなどが含まれます。
POSIX.1c (IEEE Std 1003.1c)
スレッド拡張: スレッドの生成、制御、クリーンアップ、スケジューリング、同期、シグナル処理などが含まれます。
POSIX.2 (IEEE Std 1003.2)
シェルとユーティリティ: コマンドインタプリタ、ユーティリティプログラムなどが含まれます。
名称の由来
POSIXは、当初はIEEEの規格番号(IEEE 1003)やISO/IEC標準番号(ISO/IEC 9945)で呼ばれていましたが、1988年頃から「POSIX」という名称が使われるようになりました。
この名称は、リチャード・ストールマンが提案したもので、末尾の「X」はUNIX互換のOSによく使われる「X」に由来しています。IEEE側も、覚えやすく発音しやすいという理由から、この名称を採用しました。
POSIX指向のOS
POSIXの規則にどの程度準拠しているかによって、OSは「完全適合」から「部分適合」まで多段階に分類されます。IEEEは、申請があったOSに対して適合性の審査を行い、認証を受けたOSは公式サイトで公表されます。
POSIX認証を受けたOSの例としては、いくつかのUNIX系OSやリアルタイムOSなどがあります。また、認証を受けていないものの、POSIXに準拠しているOSも多く存在します。
POSIX認証を受けたOSの例
いくつかのバージョンの
UNIX系OS
いくつかのリアルタイムOS
POSIXに概ね準拠しているOSの例
認証を受けていない
UNIX系OS
* TRON系の
Nucleus RTOSなど、一部の非
UNIX系OS
POSIXと他の規格の関係
C言語のシステムコールやライブラリ関数を規定する規格としては、他にANSI C/ISO CやSUS(Single UNIX Specification)があります。これらの規格の関係は、ANSI/ISO C ⊂ POSIX.1 ⊂ SUS と表現できます。これは、ANSI/ISO Cの規格が最も基本的な部分を規定し、POSIX.1がそれを拡張、SUSがさらにPOSIX.1を拡張した形であることを示しています。
POSIX非準拠OSとWindowsの変遷
Microsoft Windowsは、基本的にPOSIX非準拠のOSです。しかし、過去にはPOSIXサブシステムを搭載し、POSIXアプリケーションの実行を可能にしていました。
Windows NT系では、Windows 7/Server 2008 R2世代までPOSIX 1.0準拠のサブシステムを持っていましたが、Windows 8以降は非推奨となり、後に廃止されました。
その後、Windows 10では、Windows Subsystem for
Linux (WSL) を搭載することで、再びPOSIX準拠のサブシステムを利用できるようになりました。WSLでは、
Linuxアプリケーションも実行可能です。
まとめ
POSIXは、異なるOS間でのソフトウェア
移植性を高めるための重要な規格であり、多くのOS開発者やアプリケーション開発者にとって不可欠な存在です。その柔軟性と互換性への貢献は、
コンピューター技術の発展に大きな役割を果たしています。