Unix は Bell Labs の小さなシステムとして始まり、ソースコードの系譜、インターフェースの伝統、 標準化された環境、登録商標という複数の関連する存在になりました。これらの分類を 1 つの系図にまとめると、歴史的主張は誤解を招きます。
Multics から PDP-7 へ #
Bell Labs は 1960 年代に MIT、General Electric と Multics プロジェクトへ参加し、1969 年に離脱しました。 Ken Thompson は対話型コンピューティングとファイルシステム設計への関心を持ち続けました。 彼は Space Travel も開発し、最初は Multics 向け、次に実験のコストが高い GECOS システム向けに書きました。
Bell Labs であまり使われていなかった DEC PDP-7 が実用的な対象になりました。 Thompson は 1969 年にファイルシステム、プロセスサポート、アセンブラー、シェル、ユーティリティを書きました。 Dennis Ritchie、Rudd Canaday、Doug McIlroy などの研究者が発展する環境に貢献しました。 Brian Kernighan は「Multics」をもじって「Unix」という名前を作りました。
PDP-7 実装はアセンブリで書かれ、厳しいメモリ制約がありました。階層型ファイルシステム、プロセス、 ファイル指向インターフェースによるデバイスアクセス、通常のプログラムとしてのコマンドインタープリター、 組み合わせ可能な小さなツールなど、長く残る考え方がすでに存在していました。
PDP-11 への移行 #
グループがテキスト処理システムを提案した後、Bell Labs は 1970 年に PDP-11/20 を取得しました。
当初このマシンにはディスクがなかったため、新しいシステムが自己完結するまで開発にはクロスアセンブラーと紙テープが必要でした。
テキスト処理は組織上の目的を与え、後に Bell Labs の特許部門は roff、nroff、troff とともに Unix を使いました。
初期の PDP-11 Unix はアセンブリ言語ソフトウェアのままでした。命令順序、呼び出し規約、割り込み、デバイスコードが カーネル全体に浸透していたため、ハードウェア依存性によって移植は困難でした。 高水準実装言語はその依存性を減らせますが、効率的なポインター、整数演算、マシンレベルのストレージを公開できる場合に限ります。
アセンブリから B、C へ #
Thompson はシステムプログラミングのために BCPL から B を派生させました。B の型なしでワード指向のモデルは PDP-7 に適していましたが、 PDP-11 のバイトアドレス指定と発展中の浮動小数点サポートにはうまく対応しませんでした。 Ritchie は「New B」を通じて型、構造体、PDP-11 に適したコンパイラーを追加し、言語を C へ発展させました。
試みられた B の書き換えは必要な性能と意味論を実現できませんでした。1972〜1973 年、Thompson と Ritchie はカーネルの大部分を C で書き直し、 スタートアップ、トラップ、コンテキスト切り替え、その他のアーキテクチャ固有操作にはアセンブリを残しました。 したがって移植性とは、マシン依存性を除去するのではなく分離することでした。
The 1974 Communications of the ACM paper described the system publicly. A later Interdata port validated the strategy: a C kernel and userland could move to a different architecture after supplying a compiler, runtime, and machine-dependent kernel layer.
Research Unix のエディション #
「Research Unix」はすべての AT&T 製品ではなく、Bell Labs Computing Science Research Center が制作したエディションを指します。 エディション番号は Unix Programmer’s Manual の successive edition に由来します。
- The First Edition appeared in 1971 for the PDP-11.
- The Third Edition included pipes, which McIlroy had advocated as a composition mechanism.
- The Fourth Edition reflected the C rewrite.
- The Sixth Edition, released in 1975, became a widely studied and licensed academic system.
- The Seventh Edition, released in 1979, consolidated substantial kernel and tool development and became an ancestor of several later branches.
- Research continued through the Eighth, Ninth, and Tenth Editions inside Bell Labs.
AT&T distributed Unix source under license to universities, government users, and commercial organizations. Contemporary consent-decree restrictions shaped AT&T’s computer-business activity, while licensing terms still controlled redistribution. Academic licensees could study and modify source, but the arrangement was not an open-source license in the modern sense.
UNIX/32V carried Seventh Edition code to the VAX without Berkeley’s later virtual- memory work. The source path matters because BSD and several commercial systems incorporated or evolved licensed Research Unix code rather than merely imitating its interfaces.
BSD と AT&T の商用系統 #
Berkeley Software Distribution は、カリフォルニア大学バークレー校でライセンスされた Unix 向けのソフトウェアとパッチとして始まりました。
後続リリースでは vi エディター、C シェル、仮想メモリ、ソケット API、TCP/IP、Fast File System、
その他のカーネルとユーザーランドの成果が追加されました。3BSD と 4BSD は AT&T の系譜を保持し、
後の Networking Release 2 と 4.4BSD-Lite はコードレビューと置換を経て、自由に再配布できる BSD 派生物を可能にしました。
Modern FreeBSD, NetBSD, and OpenBSD descend through BSD code. Darwin, the open-source foundation of macOS, combines Mach with substantial BSD facilities and userland, so macOS has BSD code ancestry without being a direct continuation of one Research Unix kernel.
AT&T’s product line followed a different path through the Programmer’s Workbench, UNIX/TS, System III, and System V. System V Release 4 combined AT&T work with BSD, SunOS, and other contributions. Commercial descendants and derivatives include Solaris, AIX, and HP-UX, but their exact source relationships and retained components differ by release.
POSIX とインターフェースの系譜 #
ベンダー間の相違によってソースの移植が難しくなったため、IEEE は移植可能なオペレーティングシステムインターフェースを標準化しました。 POSIX は API、シェルとユーティリティの動作、関連規約を定めます。Open Group の Base Specifications は POSIX と Single UNIX Specification を組み合わせます。
Standards lineage is not code lineage:
- Linux was independently implemented and contains no necessary Research Unix or BSD kernel ancestry merely because it implements many POSIX interfaces.
- A BSD-derived system can retain historical code while differing from a current POSIX requirement.
- Applications can target POSIX source interfaces without depending on one kernel architecture or on the historical Unix source license.
GNU supplied an independently developed compiler, C library, shell, and utilities for Unix-like environments. Linux distributions combine the Linux kernel with GNU and other projects, which further demonstrates why an interface family is not one codebase.
UNIX 商標 #
UNIX は The Open Group の登録商標です。製品は該当する Single UNIX Specification に適合し、認証プログラムを完了した場合に UNIX ブランドを使えます。 認証が対象とするのは観測可能な適合性であり、Bell Labs のソースから派生していることは要求しません。
Conversely, “Unix-like” is a descriptive engineering term rather than a certification. A system can share process, filesystem, shell, and API conventions without carrying the UNIX trademark. Precise historical writing should state which relationship is intended:
- Code lineage traces inherited and replaced source.
- Standards lineage traces conformance to POSIX or the Single UNIX Specification.
- Trademark status traces certification and naming rights.
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)