ソフトウェアは、さまざまなバックグラウンドを持つ多数の開発者によって作成されています。一般的なアルゴリズムは、無料のライセンスの下で利用可能であるか、科学的に公開されています。また、学習目的で無料で利用できる場合もあります。これにより、さまざまなニーズに適合するさまざまな実装とソフトウェアバージョンが得られます。これらの異なる実装を交換可能かつモジュール式にするためには、インターフェースとデータ形式の標準化が必要です。
つまり、POSIX [1]は、UNIXおよびUNIXライクなシステムに対してまさにそれを実行します(このトピックの詳細な履歴については、Zak Hの記事[4]を参照してください)。これは、ソフトウェアの交換インターフェース、呼び出しメカニズム、および転送データを定義しますが、内部実装はソフトウェアの開発者または保守者に任せます。目的は、さまざまなソフトウェア実装が相互に対話できるように、さまざまなUNIXフォークとUNIXライクなシステムをすべて統合することです。 POSIXの主な利点は、これらのコンポーネント(インターフェース、メカニズム、およびデータ)の拘束力のあるドキュメントを書面で入手できることです。
POSIX標準に完全に準拠しているオペレーティングシステムは、POSIX準拠として分類されます。この記事では、POSIXの意味を説明し、Linuxがこのカテゴリーに属するかどうかを判断し、この分類から除外する必要のあるLinuxコンポーネントをリストします。
POSIXという用語は何の略ですか?
POSIXは、Portable Operating SystemInterfaceの略語です。上で簡単に説明したように、POSIXは、オペレーティングシステム間の互換性を維持するために必要な一連の標準の名前です。 [1]で述べたように、[it]は、Unixや他のオペレーティングシステムのバリアントとのソフトウェア互換性のために、コマンドラインシェルとユーティリティインターフェイスとともに、アプリケーションプログラミングインターフェイス(API)を定義します。 POSIXの最初のバージョンは1988年に公開されました。それ以来、POSIXはAustin Common Standards Revision Group(単にAustin Groupとも呼ばれます)によって継続的に拡張および更新されています[7]。
2021年の時点で、POSIX標準には次の部分が含まれています。
- コアサービス (標準ANSI Cを組み込んでいます)(IEEE std 1003.1-1988)–プロセスの作成と制御、信号、ファイルとディレクトリの操作、パイプ、Cライブラリ、I / Oポートのインターフェイスと制御、プロセストリガー
- 拡張機能 (シンボリックリンク)
- リアルタイムおよびI / O拡張 (IEEE Std 1003.1b-1993)–優先順位スケジューリング、リアルタイム信号、クロックとタイマー、セマフォ、メッセージパッシング、共有メモリ、非同期および同期I / O、メモリロックインターフェイス
- スレッド拡張 (IEEE Std 1003.1c-1995)–スレッドの作成、制御、およびクリーンアップ、スレッドのスケジューリング、スレッドの同期、信号処理
- よりリアルタイムの拡張機能
- セキュリティ拡張機能 (アクセス制御リスト)
- シェルとユーティリティ (IEEE Std 1003.2-1992)–コマンドインタープリター、ユーティリティプログラム
この規格は、技術的な変更や改善を反映するために定期的に見直されます。新しいバージョンが公開され、変更が組み込まれるまでに数年かかる場合があります。これは不利になる可能性がありますが、規格の範囲を考えると理解できます。
近年、リアルタイム処理の拡張機能が追加されました。現在のバージョンは2018年の初めにリリースされました[3]。 SibylFS [5]の作成者は、高階述語論理と相互作用を決定するために、POSIX標準に多くの注釈を公開しています。
POSIX準拠とはどういう意味ですか?
POSIX準拠という用語は、オペレーティングシステムがすべてのPOSIX基準を満たしていることを意味します。オペレーティングシステムはUNIXプログラムをネイティブに実行することも、アプリケーションをUNIXシステムから別のシステムに移植することもできます。 UNIXからターゲットオペレーティングシステムへのアプリケーションの移植は、POSIXをサポートしていない場合よりも簡単であるか、少なくとも簡単です。安全のために、オペレーティングシステムはPOSIX認証を正常に達成している必要があります[2]。このステップは、自動認証テストに合格することで(コストをかけて)達成されます。対応するテストスイートはここにあります[11]。
2021年現在、POSIX認定オペレーティングシステムのリストには、IBMのAIX、HPのHP-UX、SGIのIRIX、HuaweiのEulerOS [6]、AppleのMac OS X(10.5 Leopard以降)、Solaris、QNXNeutrinoが含まれています。 Oracle、InspurのK-UX [11]、およびGreen HillsSoftwareのリアルタイムOSINTEGRITY [15]。現在、3つのSolarisの後継であるOpenSolaris、Illumos、およびOpenIndianaの新しいバージョンも完全にPOSIX準拠として分類されているかどうかは不明です。これらのオペレーティングシステムは、POSIX2001までPOSIXに準拠していました。
ほとんど(完全ではない)POSIX準拠と見なされている他のオペレーティングシステムには、Android、BeOS、FreeBSD、Haiku、Linux(以下を参照)、およびVMWareESXiが含まれます。 Microsoft Windowsの場合、Cygwinは主にPOSIX準拠の開発およびランタイム環境を提供します。
Linux POSIXに準拠していますか?
Linuxという用語は、Debian GNU / Linux、RedHat Linux、Linux Mint、Ubuntu Linux、Fedora、CentOSなど、フレーバーに関係なく、Linuxオペレーティングシステム全体を指します。正確には、Linuxは、この無料のオペレーティングシステムのコアコンポーネントであるカーネルの名前にすぎません。
LinusTorvaldsが本JustFor Fun [8]で説明しているように、Linuxカーネルを開発するために、彼はPOSIX標準のコピーを要求しました。これは、彼が商用UNIXシステムで使用されているのと同じメカニズムを実装するのに役立ちました。さらに、これにより、彼はLinuxカーネルを主に同じアプローチに従ったGNUツールとリンクすることができました。公平を期すために、Linuxシステム上のソフトウェアは、POSIX標準を尊重するさまざまなソースから提供されていますが、独自の概念を実装している場合もあります。しかし同時に、これはLinuxをオペレーティングシステムとして構成する多様性も示しています。
この一例は、コマンドライン引数の記述方法です。ダッシュが2つある引数(例:-help)はGNUの規則ですが、POSIXコマンドはダッシュが2つある引数を使用せず、代わりに単一の引数(-helpなど)のみを使用します。 Linuxは最初からGNUを念頭に置いて設計されていたため、コマンドにGNUスタイルが含まれています
引数。 POSIX準拠を実現するために、POSIXスタイルの引数が段階的に追加されています。それでも、最終的な決定は開発者によって行われます。現在、ほとんどのコマンドは、短い引数と長い引数の両方、またはダッシュなしの引数(たとえば、findコマンドなど)を受け入れます。公平を期すために、1つのシステムのコマンド間に一貫性はありません。これは、別のUNIXベースのシステムで同じコマンドを使用する場合、特にLinux、OS X、およびSolarisを切り替える場合に問題になる可能性があります。
現在のところ、Linuxは、2つの商用LinuxディストリビューションであるInspur K-UX [12]とHuaweiEulerOS [6]を除いて、コストが高いためPOSIX認定を受けていません。代わりに、LinuxはほとんどPOSIXに準拠していると見なされています。
この評価は、主要なLinuxディストリビューションがPOSIXではなくLinux Standard Base(LSB)に従っているという事実によるものです[9]。 LSBは、個々のLinuxディストリビューション間の違いを最小限に抑えることを目的としています[14]。これは、Linuxカーネルで使用されるファイルシステム階層標準(FHS)を含むソフトウェアシステム構造を指します。 LSBは、POSIX仕様、Single UNIX Specification(SUS)[10]、およびその他のいくつかのオープンスタンダードに基づいていますが、特定の領域でそれらを拡張しています。
LSBベースのLinuxディストリビューションには、RedHat Linux、Debian GNU / Linux(2002-2015)、Ubuntu(2015年まで)などがあります。
POSIXを念頭に置いて開発する
POSIXをより詳細に理解するには、POSIX標準のコピーを入手して完全に読むことをお勧めします。この本は、OpenGroupのWebサイトから入手できます。これには登録料が必要ですが、この貴重なリソースへのフルアクセスが可能になります。標準は、すべてのUNIXプラットフォームで同じように動作するようにソフトウェアを開発できるため、役立ちます。
リンクとリファレンス
- [1] POSIX、ウィキペディア、 https://en.wikipedia.org/wiki/POSIX
- [2] POSIX認定、 http://get.posixcertified.ieee.org/
- [3] POSIX標準、オープングループ、 https://publications.opengroup.org/t101
- [4] Zak H:POSIX標準、https://linuxhint.com/posix-standard/
- [5] POSIXアノテーション、SybilFS、 https://github.com/sibylfs/sibylfs_src
- [6] EulerOS、 https://developer.huaweicloud.com/ict/en/site-euleros/euleros
- [7]オースティン共通規格改訂グループ、 https://www.opengroup.org/austin/
- [8]トーバルズ、ライナス;ダイヤモンド、デビッド(2001)。楽しみのためだけに:偶然の革命家の物語。アメリカ合衆国、ニューヨーク市:HarperCollins。 ISBN 0-06-662072-4
- [9] Linux Standard Base(LSB)、ウィキペディア、 https://en.wikipedia.org/wiki/Linux_Standard_Base
- [10] Single UNIX Specification(SUS)、ウィキペディア、 https://en.wikipedia.org/wiki/Single_UNIX_Specification
- [11] POSIXテストスイート、 https://www.opengroup.org/testing/testsuites/vsx4.htm
- [12] Inspur K-UX、ウィキペディア、 https://en.wikipedia.org/wiki/Inspur_K-UX
- [14] Linux Standard Base(LSB)、 https://wiki.linuxfoundation.org/lsb/start
- [15]誠実さ、 https://www.ghs.com/products/rtos/integrity.html
ありがとうございました
著者は、この記事を準備する際に助けとアドバイスをしてくれたAxelBeckertとVeitSchieleに感謝します。