21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

POSIXとUnix関連の標準規格と歴史年表 (IEEE, SVID, XPG, SUS)

Last updated at Posted at 2021-10-07

はじめに

POSIX とは Portable Operating System Interface の略で 主に Unix 系 OS でソフトウェアの高い互換性(移植性)を実現するために、OS との C 言語用アプリケーションプログラミングインターフェース(API)と共に、シェルとコマンド(ユーティリティ)の仕様を定めた標準規格です。現在一番支持されている標準規格ですが、いきなり POSIX が生まれたわけではなく、さまざまな紆余曲折があって現在の形に落ち着きました。この記事では POSIX をメインに関連する標準規格とその歴史をまとめています。

補足 表記の揺れに注意。IEEE (Std) 1003 は POSIX のことです。1003 が POSIX を意味する番号ですが、省略されたりされなかったりします。

注意 標準規格がいくつもあり標準化団体が変わったりと複雑すぎるのでいろいろと間違いが含まれている可能性が高いです。少しずつ正確な内容に修正していっています。

更新履歴

関連 POSIX C言語API一覧とコマンド一覧の調べ方

予備知識 POSIX 以外の主要な標準規格

1984: /usr/group Standard 

  • のちに POSIX の基礎として仕様される

1985: [System V Interface Definition (SVID)] (https://ja.wikipedia.org/wiki/System_V_Interface_Definition)

  • AT&T Unix System Laboratories
  • POSIX と争っていた UNIX の標準規格
  • POSIX では対象としてないシステム管理ツールも含まれている
  • SVID コマンド一覧

1985: X/Open Portability Guide (XPG)

  • System V Interface Definition をベースとして開発された
  • POSIX より広い範囲を扱っていたが、POSIX 収束に向けて仕様が縮小された(?)
  • Issue 1 から始まり X/Open としてリリースしたのは、おそらく Issue 5 まで
    • Open Group Technical Standard として Issue 6 から引き継いでいる
    • XPG6 以降は公式な名前ものじゃないと思うが一部で使われている

1995: Single UNIX Specification (SUS)

  • Open Group による UNIX 認証のための仕様
  • SUSv1 と SUSv2 は XPG ベース
  • SUSv3 より内容は POSIX と同じだが XSI / UP オプションが必須

標準規格と歴史年表

Unix 誕生と標準化時代の幕開け

  • 1969-1971 年 Unix 誕生(Thompson シェル) Unix First Edition Manuals
  • 1975 年 Version 6 Unix (これが後の BSD のベースとなる) Manuals
  • 1977 年 PWB/UNIX 1.0(Version 6 Unix ベース、PWB シェル)
  • 1978 年 BSD 誕生、PWB/UNIX 2.0(Version 7 Unix ベース)
  • 1979 年 Version 7 Unix(Bourne シェル誕生) Manuals、2BSD(csh 誕生)
  • 1981 年 「/usr/group」標準化委員会(現 UniForum)で標準化作業が始まる
  • 1983 年 UNIX System V Release 1 (SVR1)
  • 1984 年 /usr/group Standard (貢献団体に IEEE や ISO が含まれる)
  • 1984 年 GNU プロジェクト開始
  • 1985 年 SVID1: System V Interface Definition 1 (SVR2 対応)
  • 1985 年 XPG1: X/Open Portability Guide, Issue 1
  • 1986 年 SVID2: System V Interface Definition 2 (SVR3 対応)
  • 1987 年 XPG2: X/Open Portability Guide, Issue 2

POSIX.1-1988 (IEEE Std 1003.1-1988)

  • C 言語インターフェースのみが標準化された
  • POSIX にシェルとコマンドはまだ収録されてない

更新や追加された細かいサブ仕様

  • POSIX.1-1990 (POSIX 1003.1-1990): POSIX.1-1988 更新 = ISO/IEC 9945-1:1990
  • POSIX.1b (POSIX 1003.1b, IEEE Std 1003.1b-1993): リアルタイム拡張
  • POSIX.1c (POSIX 1003.1c, IEEE Std 1003.1c-1995): スレッドイ拡張
  • 他にも色々とよくわからないものがある(廃案?)

シェルとコマンドが標準化されたのは 1992 年、当時からコマンドは殆ど変わってないんだから、その後に標準化された「リアルタイム拡張」「POSIX スレッド」「ネットワーク API」に対応するコマンドがないのも仕方ないね。

参考Windows NT POSIX サブシステム が準拠していたのは POSIX.1-1990。つまり POSIX スレッドなし、ソケットなし、シェル・コマンドなし。後に SFU に代わってシェルやコマンドが追加されたり Interix サブシステムに代わったりしたが、それが POSIX に準拠しているかは調べてない(WSL 登場よりもずっと前の話だし使ってないので興味ない)。「MicrosoftとUnixのお話」で詳しくまとめている方がいるのでそちらを参照してください。

Linux 誕生

  • 1989 年 SVID3: System V Interface Definition 3 (SVR4 対応)
  • 1989-1994 年 BSD が AT&T のコードを排除していく
  • 1990 年 XPG3: X/Open Specification, Issue 3
    • POSIX.1 + SVID ベース?
  • 1991 年 Linux 誕生

POSIX.2-1992 (IEEE Std 1003.2-1992)

  • これがシェルとコマンドの POSIX 標準化の最初の歴史!
  • SVID をベースに Unix 系 OS で移植性が高いと認められるコマンドを収録
  • Korn Shell (ksh88) のサブセットが POSIX シェルとなった(Bourne シェルではない!)
  • 1993 年に ISO でも承認された (ISO/IEC 9945-2:1993)

Single UNIX Specification 誕生

POSIX.1-1996 (IEEE Std 1003.1-1996)

  • リアルタイム拡張 (POSIX.1b) と スレッド拡張 (POSIX.1c) を取り込む

更新や追加された細かいサブ仕様

  • POSIX.1d (POSIX 1003.1d, IEEE Std 1003.1c-1999): 追加のリアルタイム拡張
  • POSIX.1g (POSIX 1003.1g, IEEE Std 1003.1g-2000): ネットワーク API
  • POSIX.1j (POSIX 1003.1j, IEEE Std 1003.1j-2000): 高度なリアルタイム拡張

The Open Group 誕生

  • 1996 年 The Open Group 誕生 (The Open Group による歴史年表 もおすすめ)
  • 1997 年 SUSv2 (UNIX 98) = XPG5(?)
    • 以下の内容で構成されている
      • Base Definitions, Issue 5
      • System Interfaces and Headers, Issue 5
      • Commands and Utilities, Issue 5
      • Networking Services, Issue 5
      • X/Open Curses, Issue 4, Version 2

Austin Group 誕生

  • 1998年 Austin Group (オースティン・グループ)誕生

複数の標準化団体による統一団体。複数の標準仕様を同期し、現在は POSIX の維持管理(修正・更新)を行っている。

  • IEEE PASC
    • みんなが POSIX、POSIX って言ってるのはこれ
    • POSIX という名前はここで生まれた(元々の名前は IEEEIX)
      • 命名者は GNU プロジェクトのリチャード・ストールマン
  • The Open Group (1996)
    • みんなが POSIX の ドキュメントって言って見てるのはこれ
    • X/Open (1984) と OSF - Open Software Foundation (1988) が合併して生まれた
      • OSF: AT&T と SUN の同盟に対抗(参考 UNIX戦争
    • Issue {N} は The Open Group Base Specifications Issue {N} のこと
    • Issue {N} の N は XPG{N} (XPG Issue {N}) の N を(たぶん)引き継いてる
    • POSIX を元に Single UNIX Specification (SUS) の維持管理を行っている
    • 現在の UNIX 商標の権利保有者(以前は X/Open、その前は AT&T が権利保有者)
  • ISO/IEC JTC 1/SC 22
    • 影が薄い

POSIX.1-2001 (IEEE Std 1003.1-2001)

  • POSIX と SUS の統合
  • POSIX.1 に シェルとコマンド の標準がマージ (POSIX.2 はもうない)
  • POSIX.1-2001 = SUSv3 (UNIX 03) = XPG6(?) = Open Group Technical Standard, Issue 6
    • Issue 6, 2003 edition (POSIX.1-2003, POSIX 1003.1-2003) TC1 バグ修正版
    • Issue 6, 2004 edition (POSIX.1-2004, POSIX 1003.1-2004) TC2 バグ修正版
  • 2007 年 Mac OS X 10.5 が UNIX 03 の認証を受ける(macOS 11.0 Big Sur も UNIX 03)

POSIX.1-2008 (IEEE Std 1003.1-2008)

POSIX.1-202x

  • 次世代の POSIX
  • 2022 年後期 予定

参考資料

まだ内容を確認してないが何かしら情報が得られそうなもの

21
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?