ポジックス【POSIX】
読み方:ぽじっくす
《portable operating system interface》UNIXをベースとするオペレーティングシステムが最低限必要とする標準仕様のセット。アプリケーションソフトはこの仕様により、各社オペレーティングシステムとの互換性を確保できる。
POSIX
正式名称:Portable Operating System Interface for UNIX
米国の電気電子学会(Institute of Electrical and Electronic Engineers)と、UNIX関連業界団体「The Open Group」が定めたUNIX系OSの互換性維持のための標準仕様。POSIXの規定範囲は、アプリケーションがOS機能を呼び出すための「システムコール」や標準のライブラリ関数、ファイルやディレクトリ階層、ユーザー情報の管理方法、標準コマンドやそれらが使用するデータフォーマットなど多岐にわたる。
なおLinuxは、当初からPOSIX準拠を目指して開発されたOSである。また、Windows NTやWindows 2000もPOSIX準拠のサブシステムを搭載している。ほかのUNIX標準には、The Open Groupが策定する「X/Open Portability Guide」などがある。
関連見出し
UNIX
Linux
Linux Standard Base
The Open Group
Q:LinuxはPOSIXに準拠していますか?
関連URL
POSIX Certified by the IEEE and The Open Group(http://posixcertified.ieee.org/)
POSIX
読み方:ポジックス
POSIXとは、オペレーティングシステム(OS)の一種であるUNIXに関する標準的なインターフェースを定めた規格のことである。米国電気電子学会(IEEE)によって、IEEE 1003.1として定義されている。
UNIXはソースコードが無償で公開され、各機関において独自の改良・拡張が行われたという歴史的変遷を持つ。そのため、UNIX系OS、UNIX互換OSと呼ばれるバリエーションが複数存在する。POSIXは、そのようなUNIX系OSの互換性を確保するために定義されたものである。
一般的に、アプリケーションソフトウェアは、計算機の有するCPUやメモリなどの資源、ストレージ、その他の周辺機器などが持つ機能へアクセスする際、OSの機能を利用してアクセスする。アプリケーションがOSの機能を利用するために提供されているAPI(Application Programming Interface)としては、システムコールや、標準ライブラリ、OSコマンドなどがある。POSIXは、IEEEと、UNIX関連業界団体であるThe Open Groupが、これらのAPIの標準としてを定められている。
POSIXでは、OSとのシステムインタフェースがC言語の関数を中心とした仕様によって規定されている。UNIX系OS向けのアプリケーションの開発者は、POSIXの仕様を前提としてアプリケーションを開発することによって、POSIXに対応した複数のOSに移植可能なアプリケーションが開発できる。
POSIXが仕様を規定している領域は多岐にわたり、プロセス制御、権限管理、ファイルおよびディレクトリ、端末とのI/O、アーカイブのファイル形式、スレッド、正規表現、タイマー、シグナル、ソケット、共有メモリ、OSのコマンド、引数などを挙げることができる。
POSIXは米国の標準的規格として採用されており、FreeBSDなどをはじめとした主要なUNIX系OSの多くにおいて、POSIXへの準拠の動きを進めている。Linuxは、UNIXから派生したわけではなく厳密に言えばUNIX系OSではない(UNIX互換OSと呼ばれる)が、POSIXに準拠した開発が行われている。また、かつてWindows NT系OSでも、POSIXに準拠して開発されたアプリケーションを動作させることができるサブシステムを開発・実装していた。
POSIX 関数
導入
このモジュールは、IEEE 10003.1 (POSIX.1) 標準ドキュメントで 定義された関数へのインターフェースを有しています。 これらの関数は、他の手段からは利用できません。 POSIX.1 としては例えばかなり以前から PHP 3 の一部として open(), read(), write() および close() 関数が定義されていました。 いくつかのよりシステム依存の関数は、以前は利用できませんでしたが、 このモジュールではこれらの関数に対する簡単なアクセス手段を提供する ことにより、これらの問題を解決しようとしています。警告 |
posix_getpwnam() のような POSIX 関数で重要な
データを取得することができます。
safe mode が有効な場合に、
POSIX関数のどれもアクセスチェックを行うことはできません。
このため、このような環境で処理を行うには、
(configure において --disable-posix を指定して)
POSIX 拡張モジュールを無効にしておくことを
強く推奨します。
|
注意: この拡張モジュールは Windows 環境では利用できません。
インストール手順
POSIX 関数は、デフォルトで有効となっています。POSIX 互換関数を --disable-posix により無効にする ことができます。定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。- POSIX_F_OK (integer)
- ファイルが存在するかどうかを調べます。
- POSIX_R_OK (integer)
- ファイルが存在し、読み込みが許可されているかどうかを調べます。
- POSIX_W_OK (integer)
- ファイルが存在し、書き込みが許可されているかどうかを調べます。
- POSIX_X_OK (integer)
- ファイルが存在し、実行が許可されているかどうかを調べます。
- POSIX_S_IFBLK (integer)
- ブロックスペシャルファイル。
- POSIX_S_IFCHR (integer)
- キャラクタスペシャルファイル。
- POSIX_S_IFIFO (integer)
- FIFO (名前つきパイプ) スペシャルファイル。
- POSIX_S_IFREG (integer)
- 通常のファイル。
- POSIX_S_IFSOCK (integer)
- ソケット。
参考
プロセス制御関数に関する節も 役に立つでしょう。目次
- posix_access — ファイルのアクセス権限を判断する
- posix_ctermid — 制御する端末のパス名を得る
- posix_get_last_error — 直近で失敗した posix 関数が設定したエラー番号を取得する
- posix_getcwd — 現在のディレクトリのパス名
- posix_getegid — 現在のプロセスの有効なグループ ID を返す
- posix_geteuid — 現在のプロセスの有効なユーザ ID を返す
- posix_getgid — 現在のプロセスの実際のグループ ID を返す
- posix_getgrgid — 指定したグループ ID を有するグループに関する情報を返す
- posix_getgrnam — 指定した名前のグループに関する情報を返す
- posix_getgroups — 現在のプロセスのグループセットを返す
- posix_getlogin — ログイン名を返す
- posix_getpgid — ジョブ制御のプロセスグループ ID を得る
- posix_getpgrp — 現在のプロセスのグループ ID を返す
- posix_getpid — 現在のプロセス ID を返す
- posix_getppid — 親プロセスの ID を返す
- posix_getpwnam — 指定した名前のユーザに関する情報を返す
- posix_getpwuid — 指定 ID のユーザに関する情報を返す
- posix_getrlimit — システムリソース制限に関する情報を返す
- posix_getsid — プロセスの現在の sid を得る
- posix_getuid — 現在のプロセスの実際のユーザ ID を返す
- posix_isatty — ファイル記述子が対話型端末であるかどうかを定義する
- posix_kill — プロセスにシグナルを送信する
- posix_mkfifo — fifo スペシャルファイル(名前付きパイプ)を作成する
- posix_mknod — スペシャルファイルあるいは通常のファイルを作成する (POSIX.1)
- posix_setegid — 現在のプロセスの実効 GID を設定する
- posix_seteuid — 現在のプロセスの実効 UID を設定する
- posix_setgid — 現在のプロセスの GID を設定する
- posix_setpgid — ジョブ制御のプロセスグループ ID を設定する
- posix_setsid — 現在のプロセスをセッションリーダーにする
- posix_setuid — 現在のプロセスの UID を設定する
- posix_strerror — 指定したエラー番号に対応するシステムのエラーメッセージを取得する
- posix_times — プロセス時間を得る
- posix_ttyname — 端末のデバイス名を調べる
- posix_uname — システム名を得る
POSIX
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/01/11 04:52 UTC 版)
POSIX(ポジックス[1][2]、英: Portable Operating System Interface)は、オペレーティングシステム (OS) の標準的なインタフェースおよび環境を定義するIEEE規格である[3]。ソースコードレベルでの移植性の高いアプリケーションソフトウェアの開発を容易にすることを目的として、主にUNIX系のOSに関して、各OSが共通して持つべきコマンドラインインタプリタ(シェル)、共通のユーティリティプログラム、およびアプリケーションプログラミングインタフェース (API) について定めている[3]。POSIX仕様に準拠したソースコードは、POSIX準拠OSであればどれでも動作させることができる。アプリケーション開発者とシステム実装者の両方から利用されることを意図している。
概要
規格の内容
POSIXのバージョンごとに、定められている項目が異なる。各バージョンで定められている項目を下に示す。
なおPOSIXにはいくつものバージョンがあるので、古い文書などで単に「POSIX」と書いてある場合は、現在「POSIX.1」(IEEE Std 1003.1) と呼ばれているものだけを指している可能性がある。
POSIX.1
POSIX.1 - Core Services (Standard ANSI Cと統合) (IEEE Std 1003.1-1988)
- Process Creation and Control
- Signals
- Floating Point Exceptions(浮動小数点例外)
- Segmentation / Memory Violations
- Illegal Instructions
- Bus Errors
- Timers
- File and Directory Operations
- Pipes
- C Library (Standard C)
- I/O Port Interface and Control
- Process Triggers
POSIX.1b
POSIX.1b - Real-time extensions (IEEE Std 1003.1b-1993)[注釈 1]
- Priority Scheduling
- Real-Time Signals
- Clocks and Timers
- Semaphores
- Message Passing
- Shared Memory
- Asynchronous and Synchronous I/O
- Memory Locking Interface
POSIX.1c
POSIX.1c - Threads extensions (IEEE Std 1003.1c-1995) POSIXスレッドも参照
- Thread Creation, Control, and Cleanup
- Thread Scheduling
- Thread Synchronization
- Signal Handling
POSIX.2
POSIX.2 - Shell and Utilities (IEEE Std 1003.2-1992)
- Command Interpreter
- Utility Programs
名称の由来
この規格は起源をさかのぼると、もともとはIEEEの規格番号やISO/IEC標準番号などで呼ばれていたものであるが、それが発展していく途中でPOSIXと改名された。最初、この一群の規格は「IEEE 1003」という名でつくられ、ISO/IEC標準での番号は「ISO/IEC 9945」だった。 1988年に「IEEE Std 1003.1-1988」と呼ばれていたころに、並行して「POSIX」という名称でも呼ばれ始めた。POSIXという名前はリチャード・ストールマンがIEEEに提案したものである[4]。末尾の「X」はUNIX互換OSに「X」の字がつく名前が多いことからつけられた。IEEE側のほうも、番号で呼ぶよりもPOSIXという名称で呼んだほうが発音しやすく憶えやすいと気づき、これを採用すると決め、正式名称という位置づけとなった。
POSIX指向のOS
POSIXの規則を守っていることを英語でPOSIX-compliant(ポジックス・コンプライアント)と言うが、各OSは、どれくらいPOSIXに適合しているかという程度によって、POSIX完全適合のものからPOSIX部分適合のものまで、多段階に分類することができる。
(IEEEはOS開発元から申請があればそのOSがPOSIXに適合しているか審査しており)IEEEでPOSIX認証を受けたOSは、登録されIEEEの公式ウェブサイト内で公表されている[5]。認証プログラムのガイドラインが公式サイトに記載されている[6]。ただし審査は有料制。[注釈 2]
POSIX準拠
以下に挙げるOSのいくつかのバージョンは、POSIXのいずれかのバージョンを満たすとしてIEEEから認証を受けている (POSIX-certified)。
POSIXにおおむね準拠
以下に挙げるものは、IEEEから公式認証を受けてはいないが、おおむねPOSIXに準拠しているものである。
- Android[注釈 3]
- BeOS (結果としてHaikuも含む)
- Contiki
- Darwin (macOSおよびiOSのコア)
- DragonFly BSD
- FreeBSD[18]
- illumos
- Linux[注釈 4]
- LynxOS
- MINIX (現在[いつ?]ではMINIX3)
- MPE/iX[19]
- NetBSD
- Nucleus RTOS
- NuttX
- OpenBSD
- OpenSolaris[20]
- PikeOS
- Redox
- RTEMS – POSIX API support designed to IEEE Std. 1003.13-2003 PSE52
- SkyOS
- Syllable Desktop
- VSTa
- VMware ESXi
- Xenix
TRON系のNucleus RTOSのように、Unix系OS以外でも、すべてではないがPOSIX指向のOSは存在する。
POSIXと他の規格の関係
C言語のシステムコールとライブラリ関数を規定した規格としては、他にANSI C/ISO CとSUS(Single UNIX Specification、XPG4の後継)がある。各規格の立場の違いにより、これらが含む関数の種類には差異がある。数学の包含関係記号で表すと、ANSI/ISO C ⊂ POSIX.1 ⊂ SUSとなる。
(参考情報)POSIX非準拠OS
- ただしWindows NT系は、Windows 7/Windows Server 2008 R2世代まではPOSIX 1.0に準拠しているPOSIX向けのサブシステムを搭載していて、POSIXアプリケーションをそのサブシステム上で実行できた[21]。貿易の技術的障害に関する協定 (WTO/TBT協定) では、非関税障壁として工業製品は国際規格を尊重して仕様を規定することを提唱しているため、米国政府機関のコンピュータシステム導入要件 (連邦情報処理標準、FIPS) としてPOSIX準拠であることが規定されていたためである[22]。Windows 2000までPOSIXサブシステムを搭載していたが、Windows XPからはServices for UNIXに同梱のInterixサブシステムに役割を譲り、Windows Server 2003 R2やWindows Vistaからは「UNIXベースアプリケーション用サブシステム」(Subsystem for UNIX-based Applications, SUA) となった[21]。
- しかしマイクロソフトはWindows 8およびWindows Server 2012よりSUAを非推奨とし、代替手段の一つとしてCygwinのPOSIXエミュレーションモードを紹介するようになった[23][24]。
- Windows 8.1およびWindows Server 2012 R2ではSUAは完全に利用できなくなった[21]。
- その後Windows 10では、Windows 10 version 1607以降でWSL (Windows Subsystem for Linux) を搭載したことにより、POSIX準拠のサブシステムを利用できるようになった。WSLではLinuxアプリケーションを実行することもできる。
脚注
注釈
- ^ 後にlibrt (Realtime Extensions library) となっていった。
- ^ その審査料金や認定料や認証後の「POSIX」名の使用料が高額なので[1]、ボランティアらで開発されているオープンなソフトウェアなどは通常そうした余計な費用負担はできず審査を申し込まないので、結果としてPOSIXにほぼ適合していても審査を受けようともしないということが起きている。そのような理由で、実は認証が無いOSでもPOSIXにほぼ適合しているものもある。
- ^ ただし、Android NDKを利用する場合に限る。
- ^ ほとんどのディストリビューションが該当するが、全てではない。Linux Standard Baseを参照。
出典
- ^ Linux用語事典 [POSIX(Portable Operating System Interface for UNIX)]
- ^ “POSIX™ 1003.1 Frequently Asked Questions (FAQ Version 1.18)” (2020年6月13日). 2021年5月6日閲覧。 “It is expected to be pronounced pahz-icks, as in positive, not poh-six, or other variations.”
- ^ a b IEEE公式サイト。P1003.1 - Standard for Information Technology--Portable Operating System Interface (POSIX(TM)) Base Specifications, Issue 8
- ^ “POSIX 1003.1 FAQ Version 1.12” (2006年2月2日). 2010年12月29日閲覧。
- ^ POSIX Certification Register
- ^ POSIX Certification Guide
- ^ “IBM”. The Open Group. 26 January 2014閲覧。
- ^ a b “Hewlett-Packard”. The Open Group. 26 January 2014閲覧。
- ^ “Silicon Graphics, Inc.”. The Open Group. 26 January 2014閲覧。
- ^ “Huawei Technology Co., Ltd”. The Open Group. 26 May 2017閲覧。
- ^ “The Open Brand - Register of Certified Products”. Register of Open Branded Products. The Open Group. 20 May 2015閲覧。
- ^ “Apple Inc”. Register of Open Branded Products. The Open Group. 20 May 2015閲覧。
- ^ “Oracle Corporation”. The Open Group. 26 January 2014閲覧。
- ^ “UnixWare ® 7.1.3 and later”. The Open Group (16 May 2003). 2013年6月10日閲覧。
- ^ “QNX Achieves New POSIX Certification”. QNX (8 April 2008). 16 January 2016閲覧。
- ^ “Inspur Co., Ltd”. The Open Group. 26 May 2017閲覧。
- ^ “POSIX Certification Register”. get.posixcertified.ieee.org. 9 March 2018閲覧。
- ^ Schweikhardt, Jens. “POSIX utilities”. FreeBSD. 2019年4月12日閲覧。
- ^ Mark Halper (7 November 1994). “HP 3000 sales catch market by surprise”. Computerworld (IDG Enterprise) 28 (4) .
- ^ Solter, Nicholas A.; Jelinek, Jerry; Miner, David (21 March 2011) (英語). OpenSolaris Bible. John Wiley & Sons. ISBN 9781118080313
- ^ a b c “POSIX and UNIX Support in Windows”. 2018年8月10日閲覧。
- ^ Federal Information Processing Standard (FIPS) 151-2 - ウェイバックマシン(2014年2月20日アーカイブ分)
- ^ “Features Removed or Deprecated in Windows Server 2012”. Microsoft Docs. 2022年2月17日閲覧。
- ^ 第1回 Windows 8製品版の概要:Windows 8レボリューション(1/3 ページ) - @IT
関連項目
- POSIXスレッド
- POSIX 1003.1b
- en:C POSIX library
- Linux Standard Base
- アメリカ国立標準技術研究所
- 国際化と地域化
- 共通ロケールデータリポジトリ
- The Open Group
- Common User Access
- TRONプロジェクト
外部リンク
POSIX (mmap)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/07/27 00:42 UTC 版)
「メモリマップトファイル」の記事における「POSIX (mmap)」の解説
ファイル識別子、ファイル先頭からのオフセット、長さを指定してマッピングを生成する mmap() がPOSIX仕様の一部として定義されており、POSIX準拠の各種システム、UNIX、Linux、macOS、OpenVMS などに実装されている。
※この「POSIX (mmap)」の解説は、「メモリマップトファイル」の解説の一部です。
「POSIX (mmap)」を含む「メモリマップトファイル」の記事については、「メモリマップトファイル」の概要を参照ください。
固有名詞の分類
- POSIXのページへのリンク