まえがき - ASCII Books

まえがき
本書は、カリフォルニア大学バークレイ校で開発された UNIX システム 4.3BSD および 4.4BSD
の設計と実装を正統的な立場から詳解した既刊書に続くものである。最後のバークレイリリース
が 1994 年に作られて以来、いくつかのグループが BSD システムの開発を続けてきた。本書は、
その中でも最大の開発規模を持ち最も広く利用されている FreeBSD システムの詳細を扱ったも
のである。FreeBSD の配布にはユーティリティプログラムも含まれ、その数は基本システムだけ
でおよそ 1000、オプションの移植ツールも含めると 10000 近くに及ぶが、本書は専らそのカーネ
ルについて焦点を当てる。
UNIX 系システム
UNIX 互換システムには以下のような種類がある。Solaris や HP-UX などの伝統的なベンダー
によるシステム; Red Hat、Debian、SuSE、Slackware などの Linux ディストリビューション;
FreeBSD、NetBSD、OpenBSD さらには Darwin を含む BSD ベースのシステムである。これら
は、ラップトップからスーパーコンピュータまでの、幅広い計算機環境で動作する。ほとんどの
マイクロプロセッサ、画像・ベクトル処理システムのオペレーティングシステムとして選択するこ
とができ、もちろん従来の時分割システムとして広く利用されている。インターネット上のサー
ビス(FTP から WWW まで)を提供するための最も一般的なプラットフォームであり、総合的に
見れば、今までに開発された中で最も移植性に富んだオペレーティングシステムである。この高
い移植性は、実装言語として(それ自身が広範に利用可能である)C 言語 [Kernighan & Ritchie,
1989] が用いられていることと、洗練されたシステム設計によってもたらされている。
1969 年の誕生以来 [Ritchie & Thompson, 1978]、UNIX システムは幾度かの分岐や統合を経て現
在に至っている。AT&T ベル研究所のオリジナルの開発者達による最新 UNIX システムは Ninth
Edition、Tenth Edition を経て、UNIX の後継となる Plan 9 に引き継がれている。一方で AT&T
は UNIX System V のライセンス販売を行い、それは後に Novell 社に売却された。Novell 社は
UNIX の商標を X/OPEN に譲渡し、ソースコードの配布権を Santa Cruz Operation(SCO)に売
却した。System V と Ninth Edition UNIX は、カリフォルニア大学バークレイ校の Computer
Systems Research Group(CSRG)による Berkeley Software Distributions に強い影響を受けて
いる。Linux は他の UNIX 系オペレーティングシステムとは独立に開発されたが、UNIX インタ
フェースを実現している。したがって、他の UNIX 系プラットフォームのために開発されたアプ
リケーションは、容易に Linux に移植することができる。
13
まえがき
Berkeley Software Distribution
バークレイからの配布は、以下に挙げるような重要な機能を実装した最初の UNIX システムで
ある。
●
要求時ページング仮想記憶サポート
●
ハードウェアと入出力システムの自動コンフィグレーション
●
高速で修復可能なファイルシステム
●
ソケットを基本とするプロセス間通信機能(IPC)
●
TCP/IP の参照実装
バークレイリリースは、多くのベンダーの UNIX システムとして採用されたし、それ以外のベ
ンダーも内部の開発システムとして広く利用した。4.2BSD および 4.3BSD による TCP/IP ネット
ワークプロトコルの実装は、これらのシステムの普及とあいまって TCP/IP ネットワークプロト
コルを世界標準として受け入れさせるための中心的役割を果たした。非 UNIX 系ベンダーである
Microsoft でさえも、バークレイによるソケットの設計を彼らの Winsock IPC インタフェースに
採り入れている。
BSD リリースは、オペレーティングシステムインタフェース標準である POSIX(IEEE Std
1003.1)をはじめとする関連標準にも大きな影響を与えた。多くの機能
ブ制御、プロセスグループ、ディレクトリ操作関数など
高信頼シグナル、ジョ
は、BSD から POSIX に採り入れら
れている。
初期の BSD リリースには、ライセンス管理下の UNIX コードが含まれていたため、BSD システ
ムを取得し利用するためには AT&T のソースライセンスを必要とした。1988 年に、バークレイ
は配布内容を AT&T のライセンスが必要なものと自由に再配布できるコードとに分割した。再配
布自由コードは独立してライセンスされ、誰でもが自由に取得・利用し、再配布することができる
ようになった。バークレイによる最後の再配布自由なリリースは 1994 年の 4.4BSD-Lite2 であり、
これにはほぼ完全なカーネルに加え、すべての重要なライブラリやユーティリティが含まれた。
1993 年には、NetBSD と FreeBSD という 2 つのグループが、バークレイによる再配布自由リ
リースを元にしたシステムのサポートと配布を行うための活動を開始した。NetBSD は移植性と
単純さを追求したグループであり、40 ものプラットフォームに移植を行い、組み込みシステムと
しての利用も視野に入れたシステムとなっている。FreeBSD グループは、PC アーキテクチャに
対する最高レベルのサポートを目標に掲げ、容易なインストール環境とシステムをより多くの利
用者に提供することを信条としている。1995 年には OpenBSD グループが NetBSD グループから
派生し、セキュリティに重きを置いた配布システムの開発を目指した。何年にも渡って、これら
の BSD リリースの間では健全な競争が行われ、多くのアイデアと実装がそれぞれの実装の間で交
換されている。
14
まえがき
本書が対象とする内容
本書が対象とするのは FreeBSD 5.2 カーネルの内部構造であり、その設計方針やデータ構造、
システム機能を実現するために利用されるアルゴリズムについて解説する。内容のレベルは Bach
による UNIX System V についての書籍 [Bach, 1986] と同等であるが、本書では UNIX の中でも
FreeBSD 系統オペレーティングシステムの機能、データ構造、アルゴリズムに焦点を当てている
点が異なる。本書のカバーする範囲は FreeBSD のシステムコールから下の部分
つまりカー
ネルインタフェースからハードウェアに至るまでである。カーネルが提供するシステム機能には、
プロセス管理、仮想記憶、入出力システム、ファイルシステム、ソケット IPC メカニズム、ネット
ワークプロトコル実装、等が含まれる。システムコールよりも上位の部分
ル、コマンド、プログラム言語、その他のユーザインタフェース等
ライブラリ、シェ
については、一部の端末
インタフェースやシステム起動時に関するものを除き対象とはしない。Organick による Multics
の解説書 [Organick, 1975] にならい、本書は近代オペレーティングシステムを細部に渡り考察す
ることを目的としたものである。
特定のハードウェアに関連する部分では、本書は Intel Personal Computer(PC)アーキテクチャ
を参照する。FreeBSD は PC を主な開発対象としているので、これが最も完成された実装であり、
参照としても適している。
計算機を職業とする読者へ
FreeBSD は、世界中の多くの企業の中心的な基盤システムをサポートするために利用されてい
る。小規模環境でも動作することから、組み込みシステムとしても広く利用されるようになって
きた。FreeBSD のライセンス方針では、システムに対する改造や拡張を配布することを求めてい
ないのに対し、Linux のライセンスは、カーネルに対するすべての変更や拡張を、ソースコード
として最小限のコストで配布することを求めている。したがって、FreeBSD を利用すれば、企業
が製品における知的財産を管理することが可能なのである。
FreeBSD システムを使用して作業している専門家であれば、本書の内容は直接業務に役立つは
ずである。技術や営業のサポート従事者は、システムの機能や制限を理解するのに役立つ。アプ
リケーションの開発者は、システムを効果的かつ効率的に利用する方法について学ぶことができ
る。今まで FreeBSD カーネルを直接利用したことのないシステム管理者であっても、システム
を構成・管理・最適化する方法を習得できる。システムプログラマは、システムを利用するだけで
なく、それを拡張し改良する方法を学ぶことができる。
本書が有益であろうと思われる読者は、オペレーティングシステムの実装者、システムプログ
ラマ、UNIX のアプリケーション開発者、システム管理者、それに加えて好奇心旺盛な利用者であ
る。本書をソースコードを読むための参考書として使用すれば、マニュアルページと実際のコー
ドによる処理の詳細との間を埋めるのに役立つだろう。しかし、本書は単独で UNIX のプログラ
ミングマニュアルとなることを意図してはいないし、ユーザ向けの入門書でもない(入門書につ
いては [Libes & Ressler, 1988] を参照)。何らかの UNIX システムについての知識や(たとえば
15
まえがき
[Stevens, 1992] を参照)、C プログラミング言語に関する知識(たとえば [Kernighan & Ritchie,
1989] を参照)があると非常に有効である。
オペレーティングシステムの教本として
本書は、オペレーティングシステムに関する導入段階の授業において、教科書を補足して背景
知識を与えるための参考書として適している。オペレーティングシステム入門のための主要な教
本として使われることは想定していない。読者は、すでにメモリ管理やプロセス間通信、入出力
システムなどの用語についての知識があることを前提としている [Silberschatz et al., 2002]。ネッ
トワークプロトコルについての知識があると、後半のいくつかの章を理解するためには有効であ
る [Comer, 2000] [Stallings, 2000] [Tanenbaum, 2003]。
オペレーティングシステムに関するより高度な授業の中では、本書を実際の FreeBSD システ
ムと共に利用することもできる。学生に、オペレーティングシステムの重要な構成要素を改造し
たり置き換えたりする課題を与えることは有効である。対象としては、スケジューラ、ページ管
理デーモン、ファイルシステム、スレッドシグナリング、各種のネットワーク層、入出力システ
ムなどが挙げられる。実行中にカーネルモジュールを追加・置換・削除する機能を使えば、システ
ムをコンパイルして再起動せずに実験を行うことができる。実際のオペレーティングシステムを
扱うことで、学生は自分の行った変更を直接的に評価し体験することができる。25 年の長きに渡
り関係者の厳しいレビューを受け、確固としたコーディング基準を執拗に守り続けているため、
FreeBSD のカーネルソースは同程度の規模と歴史を持つ他のソフトウェアプロジェクトに比べて
極めて整然としており、よりモジュール化もされている。したがって、理解するのも容易である。
各章の最後には、演習問題を用意した。演習はアスタリスクの数によって 3 つの種類に分けら
れている。無印の演習問題の答は、本文を探せば得られるはずである。アスタリスクが 1 つの問
題を解くためには、本文中で述べられた概念を元にした推論や洞察が必要である。アスタリスク
が 2 つの問題は、まとまった設計作業が必要であったり、未解決の研究課題となるようなもので
ある。
構成
本書では、実装プログラムの詳細に加え、その背景にある思想や設計方針についても解説する。
それぞれの説明は、システムコールのレベルから始まり、カーネルの内部構造へと進んでいくこ
とが多い。データ構造や制御の流れを明らかにするためには、表や図解を採り入れた。アルゴリ
ズムを説明するためには、C 言語に似た擬似コードを使っている。ボールド体のフォントは、プ
ログラム名やファイルシステム上のパス名であることを示す。イタリック体のフォントで表記さ
れているのは、巻末の用語集に含まれる用語や、システムコール、変数、関数、構造体などの名
前である。関数名(システムコールを除く)の後には一対の括弧が付加される(たとえば malloc ( )
は関数名で、argv は変数名)
。
本書は、以下の 5 つのパートから構成される。
16
まえがき
●
第 1 部 概要 3 つの章によって、オペレーティングシステムと本書の残りの部分についての
全体像を概説する。第 1 章歴史と目標では、システムの研究的側面に注目しながら、開発の
歴史について述べる。第 2 章 FreeBSD の設計概要では、システムが提供するサービスにつ
いて説明し、カーネルの内部構造の概要を解説する。また、システム開発時に行われた設計
上の選択についても述べる。第 2 章の 2.3 節から 2.14 節では、それぞれが対応する章の内容
について説明する。第 3 章カーネルサービスでは、システムコールがどのように実行される
かについて説明し、カーネルが持ついくつかの基本サービスの詳細について述べる。
●
第 2 部 プロセス 第 2 部の最初の章である第 4 章プロセス管理では、プロセスやプロセスを
構成するスレッドの実行に用いられるアルゴリズム、カーネル中のデータ構造に対する一貫
したアクセスを保証するための同期機構などについて解説することで、後続の章のための基
礎を固める。第 5 章メモリ管理では、仮想記憶管理システムについて詳細に解説する。
●
第 3 部 入出力システム まず、第 6 章入出力システムの概要では、入出力のためのシステム
インタフェースと、そのインタフェースをサポートするための機能構造について説明する。
その後に続く 4 つの章は、入出力システムの中心部を取り扱う。第 7 章デバイスは、PC にお
ける入出力の構造について述べ、入出力サブシステムがどのように管理され、カーネルが実行
する初期動作と、起動後に接続したり切り離されたりするデバイスを管理する方法について
解説する。第 8 章ローカルファイルシステムでは、ファイルシステムを実現するためのデー
タ構造とアルゴリズムについて、アプリケーションプログラムの視点と、ファイルシステム
が第 7 章で述べたデバイスとどうかかわるかという両方の視点から解説する。第 9 章ネット
ワークファイルシステムでは、ネットワークファイルシステムについて、サーバとクライア
ントの両方の側面から解説する。第 10 章端末操作では、文字端末のサポートと、擬似端末デ
バイスドライバについて解説する。
●
第 4 部 プロセス間通信 第 11 章プロセス間通信では、あらかじめ関係を持つプロセス間お
よび、関係を持たないプロセスの間で通信を行うための仕組みについて解説する。第 12 章と
第 13 章のネットワーク通信とネットワークプロトコルは、互いに密接に関連しており、前者
では通信機能について解説し、それを特定のプロトコル、たとえば TCP/IP について実装す
る方法が後者で述べられる。
●
第 5 部 システムオペレーション 第 14 章システムの起動と終了では、システムの起動と終
了の方法について述べ、システムによるプロセスの初期化について、カーネルの初期状態か
らユーザがログインするまでの様子を解説する。
本書は各章を順序通りに読み進むことを想定してはいるが、第 1 部以外はそれぞれ独立してお
り、単独で読むことも可能である。第 14 章は、他の章が終了してから読むのが望ましいが、すで
に知識のある読者であれば単独でも役立つだろう。
巻末には、主だった用語について簡単に解説した用語集と索引が付けられている。各章には、
関連文書への参照情報が付けられている。
17
まえがき
BSD システムの入手
すべての BSD の配布は、ネットワークからのダウンロードか、CD-ROM や DVD などの記
録メディアで入手することができる。FreeBSD のソースやバイナリを入手する方法について
は http: //www.FreeBSD.org に詳しい解説がある。NetBSD では、ほとんどのワークステーショ
ンについて、コンパイル済の実行可能な配付を入手することが可能である。詳細な情報につい
ては http://www.NetBSD.org/にある NetBSD プロジェクトのページを参照していただきたい。
OpenBSD の配布もまた、数多くのワークステーション用のバイナリが用意されており、セキュ
リティと信頼性について特に入念に検査されている。詳細については、OpenBSD プロジェクト
のウェブサイト http://www.OpenBSD.org/を参照していただきたい。
まえがきを最後まで読んでくれた生真面目な読者の特典は、本書の表紙を飾る John Lasseter に
よるイラストの原画を元にした T シャツの入手方法だ(そう、Pixar でトイ・ストーリーを作った
あの John Lasseter である)
。T シャツ購入方法については、http://www.McKusick.com/beastie/
にある "History of BSD T-shirts" のページをご覧いただきたい。その他にも、本書の内容に沿っ
た 32 時間の入門用ビデオコースや、FreeBSD 5.2 のソースコードを使った 40 時間の上級ビデオ
コース、BSD の歴史についての 2 時間半のビデオ講座、バークレイから配布されたすべての BSD
システムのソースコードを収めた 4 枚組の CD などを入手することができる。これらの商品は、
トップページの最後にあるリンクからたどることができる。
謝辞
まず、PC アーキテクチャおよび、FreeBSD とのインタフェースについて比類無き洞察を与え
てくれた Nate Lawson に対して格別の感謝を送りたい。
また、本書の大部分を読んでコメントしてくれた以下の人々に感謝する: Michael Schuster(Sun
Microsystems, Inc.)と Addison-Wesley のレビュアーである Chris Cooper(Hewlett-Packard)と
Robert Kitzberger(IBM)
。
本書の各章の初期の原稿を読んでコメントをいただいた、以下の方々にも深く感謝する: Samy Al
Bahra
(Kerneled.com)
、Dorr H. Clark
(Santa Clara University)
、Matthew Dillon
(The DragonFly
BSD Project)
、John Dyson、Andreas Gustafsson、Poul-Henning Kamp(The FreeBSD Project)
、
David G. Lawrence
(The FreeBSD Project)
、Samuel Leffler、M. Warner Losh
(Timing Solutions)
、
Andre Oppermann(Internet Business Solutions AG)、David I. Parfitt(independent hacker)、
Doug Rabson(Qube Software Ltd.)
、Jeffrey Roberson(The FreeBSD Project)
、Soren Schmidt
(FreeBSD senior developer)、Ken Smith(University at Buffalo CSE Department)、Gregory
Sutter(Daemon News)、Charles P. Wright(SUNY Stony Brook)、Erez Zadok(Stony Brook
University)。
すばらしき我らが編集者である Peter Gordon 氏は、著者の責任による何年もの遅れにもかかわ
らず、本書が完成することを固く信じ、やっと原稿ができあがるや猛烈なスピードで出版にこぎ着
けてくれた。本書の完成を支えてくれた Addison-Wesley の人々にも感謝したい: John Fuller 編
18
参考文献
集長、編集助手の Bernie Gaffney、出版責任者の Elizabeth Ryan、そして装丁を担当していただ
いた Chuti Prasertsith。また Stratford Publishing Services の方々にもお世話になった: 編集サー
ビス責任者である Kathy Glidden、編集担当の Debbie Prato、そして校正の Hilary Farquhar。最
後に、BSD シリーズの troff マクロを作成してくれた Jaap Akkerhuis と、表紙で使われているオ
リジナルの BSD デーモンをデザインしてくれた John Lasseter に感謝の念を表する。
本書は James Clark による pic、tbl、eqn、groff によって作成されている。索引は Jon Bentley
と Brian Kernighan による awk スクリプトを使って準備した [Bentley & Kernighan, 1986]。図
の多くは xfig で書かれている。図の配置とページ調整は groff マクロで処理したが、孤立行の削
除や偶数ページの整形の一部は手作業で行わなければならなかった。
本書に関する改善案や、誤植その他の誤りを発見した読者は、[email protected]
まで電子メールでご連絡いただきたい。
参考文献
Bach, 1986.
M. J. Bach, The Design of the UNIX Operating System, Prentice-Hall, Englewood Cliffs, NJ,
1986.(邦訳:坂本文、多田好克、村井純 訳『UNIX カーネルの設計』、共立出版)
Bentley & Kernighan, 1986.
J. Bentley & B. Kernighan, "Tools for Printing Indexes", Computing Science Technical
Report 128, AT&T Bell Laboratories, Murray Hill, NJ, 1986.
Comer, 2000.
D. Comer, Internetworking with TCP/IP Volume 1, 4th ed., Prentice-Hall, Upper Saddle River,
NJ, 2000.(邦訳:村井純、楠本博之 訳、
『TCP/IP によるネットワーク構築 Vol.1 原理・プ
ロトコル・アーキテクチャ 第 4 版』
、共立出版)
Kernighan & Ritchie, 1989.
B. W. Kernighan & D. M. Ritchie, The C Programming Language, 2nd ed., Prentice-Hall,
Englewood Cliffs, NJ, 1989.(邦訳:石田晴久 訳『プログラミング言語 C ANSI 規格準拠 第
2 版』、共立出版)
Libes & Ressler, 1988.
D. Libes & S. Ressler, Life with UNIX, Prentice-Hall, Englewood Cliffs, NJ, 1988.(邦訳:坂
本文 監訳、福崎俊博 訳『Life with UNIX』、アスキー)
Organick, 1975.
E. I. Organick, The Multics System: An Examination of Its Structure, MIT Press, Cambridge,
MA, 1975.
Ritchie & Thompson, 1978.
D. M. Ritchie & K. Thompson, "The UNIX Time-Sharing System", Bell System Technical
Journal, vol. 57, 6, Part 2, pp. 78-90, July-August 1978. The original version [Comm. ACM
vol. 7, no. 7, pp. 365-375 (July 1974)] described the 6th edition; this citation describes the
7th edition.(邦訳:石畑清、小野芳彦 訳“UNIX タイムシェアリング・システム”
、
『bit』1981,
Vol13, No.9、共立出版)
19
まえがき
Silberschatz et al., 2002.
A. Silberschatz, P. Galvin & G. Gagne, Operating System Concepts, 6th ed., John Wiley and
Sons, Hoboken, NJ, 2002.
Stallings, 2000.
R. Stallings, Data and Computer Communications, 6th ed., Prentice Hall, Hoboken, NJ, 2000.
Stevens, 1992.
W. Stevens, Advanced Programming in the Unix Environment, Addison-Wesley, Reading, MA,
1992.(邦訳:大木敦雄 訳『詳解 UNIX プログラミング 新装版』
、ピアソンエデュケーション)
Tanenbaum, 2003.
A. S. Tanenbaum, Computer Networks, 4th ed., Prentice-Hall, Englewood Cliffs, NJ, 2003.(邦
訳:水野忠則、相田仁、東野輝夫、太田賢、西垣正勝 訳『コンピュータネットワーク 第 4
版』
、日経 BP 社)
20
著者略歴
George V. Neville-Neil(左)と Marshall Kirk McKusick(右)
Marshall Kirk McKusick は、書籍や記事の執筆、コンサルティング、UNIX や BSD に関連する講演活
動などを行っている。カリフォルニア大学バークレイ校在学中に 4.2BSD 上の Fast Filesystem を実
装し、Berkeley Computer Systems Research Group
(CSRG)
の Research Computer Scientist とし
て 4.3BSD と 4.4BSD の開発を指揮した。専門分野は、仮想記憶システムとファイルシステムである。
コーネル大学を電気工学で卒業し、カリフォルニア大学バークレイ校で計算機科学と経営学の修士
号、計算機科学の博士号を取得した。二度に渡って Usenix Association の会長を務め、現在は ACM
Queue マガジン編集局、Usenix Association、ACM、IEEE 等で活動する。余暇には水泳、スキュー
バダイビング、ワイン収集を楽しむ。ワインは、25 年余を共に過ごす Eric Allman と暮らす家の
地下にある特注のワインセラーに保管されている(http://www.McKusick.com/cgi-bin/readhouse
で参照可能)。
George V. Neville-Neil は、ネットワークやオペレーティングシステムのコードに関して、趣味と
実益を兼ねた活動を続けており、プログラミングに関する多くの分野での講義も提供する。専門
分野はプログラム探索(code spelunking)、実時間オペレーティングシステム、ネットワークで
ある。マサチューセッツ州ボストンのノースイースタン大学で計算機科学の学士号を取得した。
ACM Queue マガジンの編集局員であり、Usenix Association、ACM、IEEE の会員である。自転
車とオートバイと旅行を熱愛し、1990 年からサンフランシスコを本拠地としている。
21
The Design and Implementation of the
FreeBSD Operating System
第
1
章
歴史と目標
1.1 UNIX システムの歴史
UNIX システムは、30 年以上にも渡って広範囲に利用され、計算機科学の多くの分野で役立っ
てきた。UNIX システムの開発には多くの個人と組織が関与してきたが(今でもそれは続いてい
る)
、本書はその中でも BSD の流れを組むものを主な対象とする。
●
ベル研究所
●
UNIX 創造の地
The Computer Systems Research Group(CSRG)
カリフォルニア大学バークレイ校の組
織で、UNIX に仮想記憶と TCP/IP の参照コードを実装した。
●
FreeBSD、NetBSD、OpenBSD の各プロジェクト
●
Darwin
CSRG による成果を継続開発している。
アップル社の OS X の中心となるオペレーティングシステム。Darwin は FreeBSD
に基づいている。
1.1.1 UNIX
UNIX システムの最初のバージョンは、1969 年にベル研究所において Ken Thompson の個人
的な研究プロジェクトとして作成され、動作環境は他に使い道のない PDP-7 であった。まもなく
Dennis Ritchie が開発にかかわるようになり、その設計と実装はもちろん、プログラミング言語
C を生み出すという大きな貢献をした。システムは完全に C で書き直され、アセンブリコードは
ほとんど残らなかった。優れた初期設計と [Ritchie, 1978] それに続く 15 年間の開発が [Ritchie,
1984a] [Compton, 1985] UNIX を偉大で強力なオペレーティングシステムへと育て上げた [Ritchie,
1987]。
ベル研究所の Ritchie や Thompson をはじめとする初期の UNIX 開発者達は、それ以前 Multics
プロジェクト [Peirce, 1985] [Organick, 1975] に参加しており、そのことは新しいオペレーティン
39
第 1 章 歴史と目標
グシステムにも強く影響している。実際 UNIX という名前も、Multics をもじったもので、Multics
が多くのことを実現しようとしたのに対し、UNIX は 1 つの仕事をうまく実現することを目的と
したことに由来している。ファイルシステムの基本構造、コマンドインタプリタとしてユーザプ
ロセスを使う発想、ファイルシステムインタフェースの全体構造をはじめとする UNIX の多くの
特徴は、Multics から直接受け継がれたものである。
マサチューセッツ工科大学(MIT)の CTSS をはじめ、他の多くのオペレーティングシステムか
らも考えが採り入れられている。新しいプロセスを作成するのに用いられる fork 操作は、バーク
レイの GENIE(SDS-940 後に XDS-940)オペレーティングシステムのものである。ユーザが簡単
にプロセスを作成できるようにすることで、コマンドを手続き呼び出しではなく、1 つのプロセ
スとして実行することを可能にしたのは Multics の考えである。
1.1.2 研究版 UNIX
最も初期の UNIX の主要なバージョンは、ベル研究所の一連の研究用システムである。これら
の初期システムに続いて V6 として知られる UNIX タイムシェアリングシステム Sixth Edition が
1976 年にリリースされ、ベル研究所以外でも広く利用される最初のバージョンとなった。これら
のシステムは、その配布が作成された時点の UNIX プログラマーズマニュアルのバージョン番号
で区別された。
他のオペレーティングシステムと比べて、UNIX システムは 3 つの大きな特徴を持っていた。
1.
高級言語で記述されている。
2.
ソースコードの形態で配布された。
3.
はるかに高価なハードウェアで動作するオペレーティングシステムしか持っていないよう
な、強力な基本機能を備えていた。
ほとんどのシステムコードは、アセンブリ言語ではなく C 言語で記述されていた。当時、十分な
効率とハードウェアに対するアクセスを実現するためには、オペレーティングシステムはアセン
ブリ言語で記述する必要があると一般には信じられていた。C 言語は、広範な計算機ハードウェ
アのために簡単にコンパイル可能な高水準言語であり、システムプログラマが十分な性能や機能
を実現するためにアセンブリ言語に頼らなければならないほど、複雑でも制約が強くもなかった。
コンテキスト切り替えなど、ハードウェアへのアクセスがどうしても必要な場合は、オペレーティ
ングシステム内の関数の 3 パーセントを占めるアセンブリ言語によるスタブルーチンによって実
現された。UNIX が成功した理由は、高級言語で記述されたことだけではないが、C 言語を使用
したことが重要な第一ステップだったことは間違いない [Kernighan & Ritchie, 1978] [Kernighan
& Ritchie, 1989] [Ritchie et al., 1978]。Ritchie の C 言語は Thompson による B 言語に基づいてお
り [Rosler, 1984]、それはさらに BCPL [Richards & Whitby-Strevens, 1982] に由来している。C
言語の改良は、その後も続けられている [Tuthill, 1985] [ISO, 1999]。
UNIX の 2 番目の特徴は、初期のリリースがベル研究所から他の研究機関に対してソースコー
40
1.1 UNIX システムの歴史
ドで提供されたことである。ソースを提供することで、他の機関がシステムを利用するだけでは
なく、その内部構造に手を入れることを可能にした。以来、新しい考えを簡単にシステムに採り入
れられるという環境が、その後のシステムの拡張に対して常に重要な役割を果たしてきた。UNIX
の成功を超えようとする新しいシステムが登場しても、誰かがそれを分析して、中心的な考えを
UNIX にも採り入れてしまったのである。小規模でわかりやすいシステムであることと高級言語
で記述されたことに加えて、常に新しい考えを採り入れてきたことで、UNIX システムは初期の
つつましやかな仕様から、はるかに進んだ形態へと変貌していったのである。ソースコードを入
手するためにはライセンスが必要だったが、大学に対しては安価なキャンパスライセンスが提供
されていた。そのため、多くの人々が UNIX に影響され、その後に到来するオープンソースの世
界を造る礎となったのである。
UNIX の 3 番目の重要な特徴は、個々のユーザが複数のプロセスを同時に実行し、それらのプ
ロセスをパイプ状につなぐことを可能にしたことである。当時は、大規模で高価な計算機上のオ
ペレーティングシステムでなければ複数プロセスの実行はできなかったし、同時に実行可能なプ
ロセス数はシステム管理者によって厳重に管理されていた。
最も初期の UNIX システムは、当時としては安価な割に強力だった PDP-11 上で動作した。
しかし、Sixth Edition UNIX には、他機種への移植が少くとも 1 つは存在することがわかって
いる
Interdata 7/32 である [Miller, 1978]。PDP-11 は、極めて小さなアドレス空間しかサポー
トしていなかった。32 ビットのアドレス空間を持つ計算機、とりわけ VAX-11/780 の登場で、
UNIX に仮想記憶やネットワーク機能を実現することが可能となった。UNIX に似た機能を異機
種のハードウェア環境でも提供しようとした研究グループによる実験では、異なるオペレーティ
ングシステム環境で UNIX サービスを動作させるのと、オペレーティングシステム全体を移植す
る作業を比較すると、大きな違いはないという結論に達した。移植性を考慮して作られた最初の
UNIX システムは UNIX Time-Sharing System, Seventh Edition(V7)であり、これは PDP-11 と
Interdata 8/32 上で動作し、VAX をサポートしたものは特に UNIX/32V タイムシェアリングシス
テムバージョン 1.0(32V)と呼ばれた。ベル研究所の研究グループは、この後 UNIX タイムシェ
アリングシステム Eighth Edition(V8)
、UNIX タイムシェアリングシステム Ninth Edition(V9)
、
UNIX タイムシェアリングシステム Tenth Edition(V10)を開発している。1996 年には、彼らの
システムは Plan 9 と呼ばれるようになった。
1.1.3 AT&T UNIX System III と System V
1978 年の Seventh Edition の配布以降、研究グループに代わって UNIX Support Group
(USG)が
外部への配布作業を行うようになった。USG は、当時 UNIX Programmer's Work Bench(PWB)
と呼ばれる内部向けに作られた独自のシステムを持っており、外部に対しても一部配布作業を行っ
ていた [Mohr, 1985]。
Seventh Edition 以降に行われた USG による最初の外部向けリリースは、1982 年の UNIX System
III(System III)であり、これは Seventh Edition と 32V に加え、研究グループ以外で開発された
41
第 1 章 歴史と目標
いくつかの UNIX システムの機能を採り入れたものだった。PWB からの多くの機能はもちろん、
UNIX/RT(リアルタイム UNIX システム)の機能も採り入れられた。USG は、1983 年に UNIX
System V(System V)をリリースしたが、これは概ね System III の機能を引き継ぐものだった。
裁判所によって AT&T に対して関連企業の分割命令が出されたことで、AT&T は System V の
営業活動を積極的に行うことができるようになった [Bach, 1986] [Wilson, 1985]。
USG は、その後 UNIX System Development Laboratory(USDL)となり、1984 年に UNIX
System V, Release 2 をリリースした。System V, Release 2, Version 4 では、ページング機能が導
入され [Jung, 1985] [Miller, 1984]、書き込み時コピー(copy-on-write)や、共有メモリの機能もサ
ポートされた。System V の実装は、バークレイ版のページ管理システムを基にしたものではな
かった。USDL は、その後 AT&T Information Systems
(ATTIS)
となり、1987 年に UNIX System
V, Release 3 をリリースした。このシステムは、V8 から採り入れられた STREAMS と IPC の機能
を含むものだった [Presotto & Ritchie, 1985]。ATTIS は、後に UNIX System Laboratory(USL)
となり、1993 年には Novell に売却された。Novell は UNIX の商標を X/OPEN コンソーシアムに
譲渡することで、UNIX を製品名称として使うための認定標準を作成する独占権を譲り渡した。
Novell は、その 2 年後に UNIX を Santa Cruz Operation(SCO)に売却した。
1.1.4 BSD 版 UNIX
ベル研究所と AT&T 関連機関以外で UNIX の開発に最も影響を与えた開発グループは、カリ
フォルニア大学バークレイ校である [DiBona et al., 1999]。バークレイから配布されたソフトウェ
アは、Berkeley Software Distributions(BSD)と呼ばれ、たとえば 4.4BSD のように表記される。
バークレイこそが BSD という名称の起源であり、そこからの配布が BSD オペレーティングシス
テムを明確に確立した最初のものである。バークレイで行われた、VAX UNIX に関する最初の
業績は、32V に対して仮想記憶、要求時ページング、ページ交換の機能を追加したことである。
~ によって行われ、1979 年に 3BSD としてリリースされ
これは、William Joy と Ozalp Babaoglu
~ & Joy, 1981]。3BSD で大きな仮想記憶空間が必要とされたのは、当時バークレイで
た [Babaoglu
Franz LISP のような、大規模なプログラムの開発が進んでいたことによる。このメモリ管理シス
テムの成果が、後に高等研究計画局(DARPA: Defense Advanced Research Projects Agency)を
して発注先が使用するための標準システム(4BSD)の開発のためにバークレイチームを支援させ
ることにつながった。
4BSD プロジェクトの目標は、DARPA インターネットプロトコルである TCP/IP のサポートに
なった [Comer, 2000]。このネットワークの実装は、多様なネットワーク機器間の通信を可能とす
る汎用的なもので、それは Ethernet やトークンリングなどのローカルネットワークから、DARPA
が運用する ARPANET のような広域ネットワークまでをサポートした。
3BSD より後に開発された VAX UNIX システムをすべて 4BSD と呼ぶが、実際には以下のいく
つものバージョンが含まれる: 4.0BSD、4.1BSD、4.2BSD、4.3BSD、4.3BSD Tahoe、4.3BSD Reno。
VAX が 1977 年に登場して以来、System V がリリースされる 1983 年まで、VAX 用の UNIX オ
42
1.2 BSD と周辺システム
ペレーティングシステムといえば 4BSD だった。ほとんどの組織はバークレイに 4BSD を注文す
るためだけに 32V のライセンスを取得した。ベル研究所内の多くのシステムも 4.1BSD を使用し
ていた(4.3BSD がリリースされると、それに置き換えられた)
。4.4BSD では、新しいメモリ管理
システムが導入された。すでに製品寿命を終えていた VAX には、4.4BSD が実装されることはな
かった。その代わり 4.4BSD は、68000、SPARC、MIPS、Intel、PC などの新しい計算機アーキテ
クチャをサポートすることになった。
DARPA のために行われた 4BSD の開発は、産業と学術の各分野の著名人を含む運営委員会に
よって指揮された。バークレイによる DARPA UNIX プロジェクトが最盛期を向かえたのは、1983
年の 4.2BSD リリース時で、その後の継続開発の成果は 1986 年半ばに 4.3BSD としてリリースさ
れた。その後は、1988 年 6 月に 4.3BSD Tahoe、1990 年 6 月に 4.3BSD Reno がそれぞれリリー
スされた。これらのリリースは、主に Computer Consoles Incorporated のハードウェアプラッ
トフォームへの対応を目的としていた。これらのリリースの合間に、2 つのライセンスフリーの
(unencumbered)ネットワークコードがリリースされた。1989 年 3 月の 4.3BSD Net1 と 1991 年
6 月の 4.3BSD Net2 である。これらのリリースは、4.3BSD から著作権に抵触しないコードを抜き
出したもので、UNIX のソースライセンスを持たない企業や組織に対しても、ソースあるいはバ
イナリの形態で自由に再配布できるものであった。CSRG による AT&T のソースライセンスを
必要とする最後のリリースは、1993 年 6 月の 4.4BSD である。1 年に及ぶ法廷闘争の後(1.3 節を
参照)、完全に再配布自由の 4.4BSD-Lite が 1994 年 4 月にリリースされた。CSRG によるリリー
スは、1995 年 6 月の 4.4BSD-Lite Release 2 をもって最後となる。
1.1.5 UNIX の時代
UNIX システムは学術分野においても目覚しい成果を残した。Thompson と Ritchie らには、そ
のシステム設計の業績に対して Association for Computing Machinery(ACM)からチューリング
賞が贈られた [Ritchie, 1984b]。UNIX および、教育のために設計された関連システムは、オペレー
ティングシステムの教育においても広く活用されている。有名なものとしては、Tunis [Ewens et
al., 1985] [Holt, 1983]、XINU [Comer, 1984]、MINIX [Tanenbaum, 1987] などが挙げられる。Linus
Torvalds による Linux オペレーティングシステムは、UNIX インタフェースを再実装した再配布
自由なリリースである。UNIX システムは、世界中の大学や研究機関ではなくてはならないもの
となり、産業界や商用製品としてもますます広く普及している。
1.2 BSD と周辺システム
CSRG は、UNIX 以外のオペレーティングシステムからも機能を採り入れてきた。4BSD の端
末ドライバの機能の多くは、TENEX/TOPS-20 から採り入れられたものである。ジョブ制御の
概念は(実装ではない)TOPS-20 と、MIT の Incompatible Timesharing System(ITS)に基づい
ている。4.2BSD で最初に提案され、最終的に 4.4BSD で実装された仮想記憶インタフェースは、
TENEX/TOPS-20 によって最初に導入されたファイルマッピングとページレベルインタフェース
43
第 1 章 歴史と目標
に基づいている。現行の FreeBSD の仮想記憶システム(第 5 章を参照)は、Mach から採り入れ
られたものだが、Mach 自体は 4.3BSD から派生したものである。Multics は、設計や新機能を実
装する上で常に参考にされてきた。
効率性の追求は、CSRG の目標の中でも大きな部分を占めていた。VAX 用の専用オペレーティン
グシステムである VMS との性能比較から、効率の向上を迫られたものもある [Joy, 1980] [Kashtan,
1980]。
4BSD から他の UNIX 系オペレーティングシステムに採り入れられた機能も多い。AT&T の
UNIX System V [AT&T, 1987]、IEEE の POSIX.1 標準 [P1003.1, 1988]、またそれと関連の深い
National Bureau of Standards(NBS)の Federal Information Processing Standard(FIPS)には、
以下の機能が採り入れられている。
●
ジョブ制御(第 2 章)
●
高信頼シグナル(第 4 章)
●
複数のファイルアクセスグループ(第 6 章)
●
ファイルシステムインタフェース(第 8 章)
X/OPEN グループ(当初はヨーロッパのベンダーのみによって構成されたが、現在ではアメリカ
合州国の多くの UNIX ベンダーも参加している)は、X/OPEN ポータビリティガイド [X/OPEN,
1987] を作成し、最近では Spec 1170 Guide を発表した。これらの文書は、カーネルインタフェー
スに加え、UNIX システムの利用者に提供されるユーティリティプログラムについて規定してい
る。Novell が 1993 年に AT&T から UNIX を買収した時点で、UNIX の名称に対する排他的管理
権限は X/OPEN へ移管された。以来、UNIX の名前を製品に冠するためには X/OPEN のインタ
フェース規約に準じていなければならない。現時点では、X/OPEN のインタフェース準拠試験に
通過した BSD システムは存在しないので、それらのいずれもが UNIX という名称を冠する資格
を有していない。X/OPEN の基準は、POSIX から多くの内容を採り入れた。POSIX.1 標準は、国
際基準である ISO にも採用され、SC22 WG15 と呼ばれている。いずれにせよ、POSIX で定めら
れた機能は、ほとんどの UNIX 系システムで世界的に受け入れられている。
4BSD のプロセス間通信機能を実現するソケットインタフェース(第 11 章参照)は、移植性を
重視して設計され、AT&T から System III がリリースされるとすぐに移植されたが、システム
が正式にサポートすることはなかった。4BSD による TCP/IP ネットワークプロトコルの実装(第
13 章参照)は、AT&T 3B で動作する System V や VMS、あるいは VxWorks のような組み込み
システムに至るまで、多くのシステムの実装の基礎となった。
CSRG は、4.2BSD や 4.3BSD に基づいたシステムを扱うベンダーと緊密な協力関係を持った。
この同時開発は、4.3BSD の移植性を高めるのに貢献し、システムの発展も加速した。
44
1.3 BSD のオープンソース化
1.2.1 ユーザコミュニティの影響
バークレイでの開発は、ユーザコミュニティからのフィードバックによるところが多い。アイデ
アや要望は、主要なスポンサーである DARPA のみならず、世界中の企業や大学のシステムユー
ザから寄せられた。
バークレイの研究者達は、ユーザコミュニティだけではなく、実際のソフトウェアからも新し
い考えを採り入れた。米国だけではなく、オーストラリア、カナダ、ヨーロッパ、日本などの大
学やその他の組織が 4BSD の開発に協力した。彼らから寄与されたものの中には、自動コンフィ
グレーションやディスククォータなどの大規模なものも含まれている。fcntl システムコールなど、
System V から採り入れられた考えもいくつかあるが、ライセンスとコストの問題から System III
や System V のコードが 4BSD で使われることはなかった。CSRG は、正式に配布システムに採
り入れられたもの以外にも、多くのユーザ寄与ソフトウェアを同時に配布した。
コミュニティによって開発された機能の例としては、4.3BSD Tahoe リリースで導入されたパブ
リックドメインのタイムゾーンパッケージが挙げられる。これは、Arthur Olson、Robert Elz、Guy
Harris らの国際的な開発グループによって実装されたものだが、きっかけとなったのは USENET
の comp.std.unix ニュースグループでの議論である。このパッケージは、タイムゾーン切り替え
の規則を完全に C ライブラリから取り除いて別ファイルに格納することで、タイムゾーン規則を
変更するためにシステムコードの変更を不要とするものである。この変更は、UNIX をバイナリ
のみで配布することに貢献した。また、この方式により、タイムゾーンをシステム単位ではなく、
個々のユーザプロセス単位で選択することができるようになった。配布内容には、中国、オース
トラリア、ヨーロッパなど、世界中の国々で利用できる大規模なデータベースが含まれている。
このデータベース全体を持っていれば、異なる地域のために特化した内容を用意する必要はなく、
配布内容を単純化することができた。BSD にタイムゾーンパッケージが導入されたのにならい、
Sun Microsystems などの商用ベンダーも自分達のシステムにその技術を採用するようになった。
1.3 BSD のオープンソース化
4.3BSD Tahoe リリースまでは、BSD を利用するためには、まず AT&T のソースライセンスを
取得しなければならなかった。これは、BSD システムが決してバイナリでバークレイから配布さ
れることがなかったことの理由でもある。配布内容は、常にシステム全体の完全なソースコード
を含んでいた。UNIX システム、とりわけ BSD システムの歴史は、利用者にソースコードを解放
することの有用性を証明した。利用者はシステムを受動的に使うのではなく、積極的にバグを修
正し、性能や機能を改善し、時にはまったく新しい機能を追加することもあったのである。
AT&T に対するソースライセンスのコストが増大するにしたがい、PC の市場に向けて BSD の
コードを使って TCP/IP ベースのネットワーク製品を作るベンダーは、バイナリに要求される費
用が高額すぎると考えるようになった。彼らは、ネットワークコードと付随するユーティリティ
を独立させ、AT&T のソースライセンスを必要としない形態で提供することをバークレイに求め
45
第 1 章 歴史と目標
るようになった。TCP/IP のネットワークコードは、32/V の中には明らかに存在しないもので、
完全にバークレイとその協力者の手によって作られたものである。BSD 起源のネットワークコー
ドと周辺ユーティリティ群は、1989 年の 6 月に Networking Release 1 としてリリースされ、バー
クレイから配布される最初の再配布自由なコードとなった。
ライセンスの内容は極めて開放的だった。コードを変更してもしなくても、ソースでもバイナ
リでも、バークレイに対していかなる代金や使用料を支払う必要はなかった。唯一求められたの
は、著作権に関する記述をソースファイル中にそのままの形で残し、コードを使用する製品のド
キュメント中にカリフォルニア大学と貢献者によるコードを含んでいる旨を記載することのみで
ある。バークレイはテープ配布の代金として $1000 を徴収したが、すでに持っている誰かからコ
ピーしてもらうことについては何も制限しなかった。実際、リリースされると間もなく、いくつ
かの大規模サイトが匿名 FTP にデータを置くようになった。コードは自由に流通できたにもか
かわらず数百の組織がテープを購入し、それは CSRG による開発継続に役立った。
1.3.1 Networking Release 2
最初のオープンソースリリースが成功を収めたことから、CSRG は、BSD の内のどの程度をフ
リーにできるかを真剣に検討しはじめた。Keith Bostic が陣頭に立ち、公表されている仕様のみ
に基づいて UNIX のユーティリティを完全に書き直すために人々を説得して回った。見返りとし
て期待できるのは、バークレイに対する貢献者リストの中に書き直したユーティリティと名前が
記載されるだけである。作業は緩やかに始まり、概ね単純なユーティリティから手が付けられた。
しかし、Bostic は Usenix 等の公のイベントで協力を求め続け、完成したユーティリティのリス
トが充実するのにしたがい、開発の動きは徐々に活発化してきた。まもなく、リストされたユー
ティリティの数は 100 を超え、18 ヵ月後には重要なユーティリティやライブラリのほとんどの書
き直しが終了していた。
カーネルを完全に書き直すのは簡単ではなく、かなりの労力を要する作業だった。カーネル全
体についてファイルを 1 つ 1 つ検査し、32/V リリースに由来するコードを削除していった。検査
が終了した時点では、ライセンスの影響を受け簡単に書き直すことが難しいカーネルファイルが
6 つだけ残った。これらの 6 つのファイルを書き直し、完全なカーネルをリリースするという考
えもあったが、CSRG は、論争を招く可能性がより低い形態でリリースすることを選択した。拡
大したリリースをするために、CSRG は大学の管理責任者の了解を求めようとした。大学内での
長い議論と、著作権に抵触するコードを区別するために用いられた方法の検証作業の後、リリー
ス許可が CSRG に与えられた。
2 回目の再配布自由なリリースについては、新しい名前を冠しようという考えも最初はあった。
しかし、新しいライセンス条項を作成し、大学の契約弁護士の承認を得るためには何ヵ月もの期
間が必要に思われた。結果として、新しいリリースは Networking Release 2 と名付けられ、その
ライセンスはすでに承認されていた Networking Release 1 の単なる改訂版として扱われた。こう
して、1991 年 6 月、大幅に拡大された二度目の自由配布リリースがついに送り出された。再配布
46
1.3 BSD のオープンソース化
の条件や費用は、最初のネットワークリリースのものと同一である。この時もやはり、数百の個
人や組織が $1000 を払ってバークレイから配付を購入してくれた。
Networking Release 2 の配付を元に、完全に動作するシステムが作られるまでに長くはかから
なかった。リリースから 6 ヵ月以内に、Bill Jolitz が足りなかった 6 つのファイルを書き起こし
た。1992 年 1 月、彼は 386 ベースの PC アーキテクチャを対象として、コンパイル済の起動可能
なシステムをリリースし、386/BSD と名付けた。Jolitz による 386/BSD は、ほとんどネットワー
クを介してのみ配付された。彼は、それを単に FTP サイトに置き、誰もがそれを無料でダウン
ロードすることを許したのである。数週間後には、彼に追従する人々は膨大な数になった。
残念ながら、Jolitz はフルタイムの本業を持っていたので、386/BSD に関して押し寄せるバグ対
応や拡張に対応するための時間を割くことは困難だった。386/BSD のリリースから数ヵ月が経過
すると、活発な 386/BSD ユーザ達は資源を集約してシステムの管理や拡張を行うために、NetBSD
というグループを結成した。1993 年初頭には、彼らは独自の NetBSD リリースの配付を行うよう
になっていた。NetBSD グループは、より多くのプラットフォームをサポートすることに注力し、
CSRG が採っていたような研究指向の開発スタイルを守った。1998 年まで、彼らの配付はネット
ワークを通じてのみ行われ、メディアを使った配付は行われなかった。グループが主な対象とし
ていたのは、技術力のあるユーザである。
NetBSD に遅れること数ヵ月、PC アーキテクチャのみのサポートを目的として活動を開始し
た FreeBSD は、Linux に倣って技術者だけでない広い利用者層を対象としたグループである。彼
らは、入念に作られたインストールスクリプトを用意し、1993 年 12 月には低価格の CD-ROM に
よるシステムの配付を開始した。導入が容易だったことと、ネットワークおよび Comdex をは
じめとするトレードショーなどでの活発な宣伝活動が功を奏して急速な成長を遂げた。まもなく
FreeBSD は、Networking Release 2 に基づくすべてのシステムの中で、最大のインストール数を
持つようになる。
Linux のバイナリを FreeBSD 上で動作させるエミュレーションモードを追加したことで、
FreeBSD は Linux の人気に乗じて普及を加速した。FreeBSD ユーザは Linux のために用意さ
れた豊富なアプリケーションと、FreeBSD の堅牢性、信頼性、性能を同時に手に入れることがで
きるようになったのである。
1995 年になると、NetBSD グループから OpenBSD が派生した。グループが技術的に重視した
のは、システムのセキュリティ向上である。彼らの戦略はシステムを扱いやすくし、より広く普
及させることだった。そのため、FreeBSD からインストールを容易にするための多くのアイデア
を採り入れ、CD-ROM の形態で頒布した。
1.3.2 訴訟問題
Networking Release 2 のテープを元にした活動を開始したのは、自由に再配付できることを目
的としたグループだけではなかった。Berkeley Software Design Incorporated(BSDI)は、その
サポートを商業的に提供するための開発と配付を目的として設立された企業である。他のグルー
47
第 1 章 歴史と目標
プと同様に、彼らもまた Bill Jolitz が 386/BSD のために作成した 6 つの欠損ファイルを利用した。
BSDI は、1992 年から $995 という価格で、システムをソースとバイナリの形式で販売しはじめた。
彼らは、それが System V からソースとバイナリを購入するのに比べて、99 パーセントも安上がり
だということを繰り返し宣伝した。
『興味のあるお客様は、今すぐフリーダイヤル 1-800-ITS-UNIX
までお電話を』がキャッチコピーだった。
BSDI がキャンペーンを始めるとまもなく、UNIX System Laboratory(USL)
(UNIX の販売を
目的として作られた AT&T の子会社)[Ritchie, 2004] から 1 通の手紙が届けられた。その手紙は
BSDI に対して、彼らの製品を UNIX という名称で呼ぶこと、そして誤解を招くような電話番号
の使用を中止することを求めていた。その電話番号は直ちに変更され、宣伝内容にも彼らの製品
が UNIX ではないことが付け加えられたが、USL はそれでは満足せず、BSDI に対して製品の販
売を中止するための訴訟を起こした。彼らの訴えによれば、BSDI の製品は USL が所有するコー
ドと機密情報を使用しているということだった。USL は、BSDI が製品の販売を続けることによ
る企業秘密の流出が自社に回復不能な損害をもたらすとして、訴訟が解決するまでの間 BSDI に
対する営業停止命令を求めた。
裁判所命令の予審において、BSDI は、カリフォルニア大学から自由に配付されているソース
と、6 つの追加ファイルを使用しているにすぎないと主張した。BSDI は、6 つの追加ファイルの
内容について議論することに異論はなかったが、カリフォルニア大学から配付されているファイ
ルについての責任を問われることには応じなかった。判事は BSDI の主張を受け入れ、USL に対
して、訴訟内容を 6 つのファイルのみを対象にするものに修正するか、申し立てを取り下げるこ
とを要求した。6 つのファイルのみに対する訴えでは裁判に勝つのは難しいと考え、USL は BSDI
とカリフォルニア大学の両方を被告とするよう訴訟内容を変更した。前回と同様、USL は、大学
による Networking Release 2 の配付と BSDI の製品の販売に対する停止命令を要求した。
裁判所命令に対する審理が数週間後に差し迫ると準備は本格的になった。CSRG の全メンバー
と、BSDI のほぼすべての社員が証言台に呼ばれた。双方の弁護士の間では何度も摘要書が応酬さ
れた。この間、CSRG のスタッフはプログラムを書く代わりに、様々な摘要書のために何百ペー
ジもの資料を作成した。
1992 年 12 月、米国ニュージャージー連邦地方裁判所判事 Dickinson R. Debevoise によって、差
し止め請求に対する審理が行われた。差し止め請求に対する裁定は直ちに下されるのが通例であ
るが、判事は時間をかけての審議を選択した。6 週間後の金曜日、判事は 40 ページにおよぶ意見
書の中で、2 つの点を除き、残りすべての請求を棄却すると述べた [Debevoise, 1993]。認められ
た 2 つの申し立ての範囲は、最新の著作権対象物と、企業秘密の逸失の可能性に狭められた。ま
た判事は、当該訴訟は連邦裁判所に送られる前に州裁判所で審理されるのが望ましいと提案した。
翌月曜日、カリフォルニア大学はカリフォルニア州裁判所に朝早く駆け込んで、USL に対する
反対訴訟を起こした。大学のねらいは、最初にカリフォルニア州に訴えて、その後の審理を行う州
裁判所の地域を限定することだった。合州国憲法は、州裁判所への提訴は 1 つの州でしか行えな
いと定めている。これは、経済力のある組織が 50 州すべてで裁判を起こして、訴訟相手の身動き
48
1.3 BSD のオープンソース化
を止めてしまうのを防ぐためである。この結果、USL が州裁判所で大学を相手取って闘おうとす
れば、地元のニュージャージーではなく、カリフォルニア州にその地を限定されることになった。
訴えは、USL が BSD のコードを System V の中で使用するために大学との間でライセンス契
約を結んでおり、そこで要求されている大学に対する謝辞を記載する義務を果たしていないとい
う内容である [Linzner & MacDonald, 1993]。この主張が有効であると判断された場合、大学は
USL に対して、すべてのドキュメントを適切な文面で印刷しなおした上で、すべての契約者に対
して瑕疵があったことを通知し、Wall Street Journal や Fortune のような有名な媒体での全面広告
を通じて産業界に対して不注意による義務違反を謝罪することを要求した。
州裁判所への提訴の直後、USL は AT&T から Novell へ売却された。Novell の CEO である Ray
Noorda は、裁判所より市場で競争することを選ぶと公式に言明した。1993 年の夏には和解のた
めの話合いが始まったが、双方とも自分達の主張を一歩も譲ろうとしなかったため、協議は非常
にゆっくりとしか進まなかった。Ray Noorda が USL を説得してくれたおかげで意見の食い違い
の多くは解消し、1994 年 1 月にはついに和解が成立した。結果として、Networking Release 2 の
18,000 あるファイルの中から 3 つのファイルが取り除かれ、残りのファイルに対していくつかの
軽微な変更が加えられた。さらに、大学はおよそ 70 個のファイルに USL の著作権表記を入れる
ことに合意したが、これらのファイルはそれまで通り自由に再配付できることになった。
1.3.3 4.4BSD
新たに生まれ変わったリリースは 4.4BSD-Lite と名付けられ、1994 年 6 月、それまでのネットワー
クリリースと変わらぬ条件で配付された。具体的には、ソースおよびバイナリの形態による再配付
は自由に認められ、そのための条件は、大学の著作権表記がそのまま残され、誰かがそのコードを
利用する時には、大学に対する謝辞を入れるということだけである。同時に、4.4BSD-Encumbered
という名前で完全な形でのリリースも作成され、これを入手するためには USL のソースライセン
スを必要とした。
和解事項の中には、その後 USL が、4.4BSD-Lite をベースにしたシステムを扱う組織を訴えな
いことが含まれていた。BSDI だけではなく、NetBSD、FreeBSD などすべての BSD グループは、
開発ベースを 4.4BSD-Lite に切り替え、そこに独自の拡張や改善を付け加えた。この再構築作業
は、様々な BSD システムの開発に若干の遅延をもたらしはしたが、Networking Release 2 のリ
リース以来、すべての派生グループが 3 年間に行った開発内容を同期することを余儀なくされた
ので、結果としては非常に有用なものになった。
1.3.4 4.4BSD-Lite Release 2
4.4BSD-Encumbered と 4.4BSD-Lite の収益は、バグ修正と拡張を行うためのパートタイムの労
働のために使われた。このような修正作業は、バグレポートと機能拡張がほとんど来なくなるま
で、およそ 2 年間続けられた。最後のリリースは 1995 年 6 月の 4.4BSD-Lite Release 2 である。
4.4BSD-Lite Release 2 に含まれるほとんどの変更は、やがて他のシステムの開発ソースにも取り
49
第 1 章 歴史と目標
込まれた。
大学に対する謝辞を明示するというライセンス条項は、訴訟問題の解決には極めて有用なもの
だったが、大学は最終リリースでその項目を削除することに同意した。BSD スタイルの著作権表
記を自分のコードで使用する開発者が増えるのにしたがい、オープンソースソフトウェアに含め
なければならない謝辞の量は増殖し、何が必要かを判断するのも困難になってきた。謝辞に関す
る項目を削除することで、大学は率先して他の同様なライセンスの利用者に対する手本を示そう
とした。時が経つにしたがい、BSD コミュニティの多大な努力が功を奏して、謝辞条項は BSD
スタイルのライセンスを使用する多くのオープンソースプログラムから消えていった。
4.4BSD-Lite Release 2 のリリースを最後に CSRG は解散する。BSD という名の船は 15 年間に
及ぶ航海を終え、その志は斬新なアイデアと限りない熱意を胸にする次の世代へと受け継がれた。
システム開発を集中的に監督する機関が存在するのが理想だったかもしれないが、異なる目的を
持つ複数のグループが存在することで、いくつものアプローチが試みられるし、どこかが失敗し
ても全体が破綻してしまうことはないだろう。システムはソースでリリースされるので、優れた
アイデアは他のグループと容易に共有することができる。実際、オープンソースプロジェクトで
は、技術の相互交流は日常的に行われているのである。
1.4 FreeBSD の開発モデル
オープンソースプロジェクトの運営は、従来のソフトウェア開発と同じようにはいかない。従
来型の開発では、スタッフは報酬によって雇われているので、マネージャやシステム設計者がス
ケジュールを立て、プログラマに対して作業を指示することができる。それに対して、オープン
ソースの開発者はボランティアである。彼らは気まぐれで、1 つか 2 つのプロジェクトを試して
みてから、自分の時間を費す価値がある活動に出会うのが普通だ。自分が興味があることしかや
ろうとしないので、管理しようとしてもできない。本業や家族、その他の社会生活がプロジェク
トの作業よりも優先されることが多く、スケジュールを調整するのは不可能である。そもそも、
普通の開発プロジェクトのように、報酬をもらって管理業務を行うスタッフなど存在しないのだ。
したがって、オープンソースプロジェクトが成功するためには、自然に組織化される構造を持ち、
活発な開発者が流出しないように緩やかにコントロールされていなければならない。
FreeBSD(NetBSD と OpenBSD も同様)で採用されている開発モデルは、CSRG ではじめられ
たものである [McKusick et al., 1989]。CSRG は、常に小規模なソフトウェア開発グループだった。
開発資源に限りがあることから、注意深いソフトウェア工学上の管理を必要とした。CSRG の職
員に限らず、システムの開発に協力してくれる他のコミュニティのメンバーについても慎重な調
整が必要だった。外部の開発者の中にも、システムソースのマスターを修正する権限を持つ者が
いた。マスターソースへのアクセスを与える際には入念な審査を行ったが、作業を細かく管理し
ていたわけではない。修正があると、それはすべてシステムソースを修正することができる開発
者全員に通知され、システムにどんな変更がなされているかを全員が把握できた。些細なものを
除き、修正を施す前には、少くとも別の誰か 1 人によるレビューを受ける必要があった。この開
50
1.4 FreeBSD の開発モデル
発モデルは、複数の作業を同時に行いながら、プロジェクトの一貫性を保つことを可能にした。
FreeBSD プロジェクトは、CSRG と似た組織構造を持っている。すべてのソースコード、ド
キュメント、バグレポート、メーリングリストアーカイブ、さらには管理情報も含む FreeBSD プ
ロジェクト全体は、公開されているソースコード管理システムに置かれている。誰でも、ソース
コードや、バグに関するレポートと修正状況を参照することができ、バグレポートを発行すること
ができる。数多くの FreeBSD メーリングリストには、誰でも参加することができる。FreeBSD
に直接かかわるメンバーは、開発者、コミッター、コアチームという 3 つのグループに分けられ
ている。
開発者は 3000 人から 4000 人登録されていて、FreeBSD カーネルのメンテナンス、1000 程のコ
アユーティリティの継続開発、ドキュメント作成、FreeBSD の移植ソフトウェアに含まれるオー
プンソースソフトの更新など、システムの特定分野を担当する。開発者達は、ソースコードのリ
ポジトリにアクセスすることはできるが、更新する権限は与えられていない。彼らが修正を反映
する方法は、コミッターと共同で作業するか、修正レポートを作成するかのいずれかである。
コミッターとして登録されているのは、300 から 400 人である。その多くは、開発者と同様に
システムの特定の部分を専門としている。開発者と違い、彼らにはそれぞれが認められている分
野について、ソースコードを変更する権限が与えられている。軽微なものを除き、他の 1 人以上
のコミッターのレビューを受けなければ、修正点をソースコードに取り入れることはできない。
多くのコミッターは自身の作業を行うのと同時に、レビューを行い、開発者の作業をコミットし
ている。
開発者からコミッターに進むためには、コミッターによる推薦が必要とされる。多くの場合、
作業を共にしていたコミッターが開発者を推薦する。任命者の過去の業績に関する説明と評価、
新しい作業に対する所信表明がコアチームに送られ承認を求められる。
コアチームは、プロジェクトの中心である。コアチームのメンバーは 9 人で、2 年毎に改選さ
れる。コアチームの候補者はコミッターの中から選ばれ、コミッターによる投票で決定する。コ
アチームはソースコードに対して、最終的な監督責任を持つ。彼らはコミットされるコードを監
視し、ある問題を解決するために 2 人以上のコミッターの意見が一致しない際には、それを調停
する役割を持つ。コアチームは、開発者からコミッターへ進むための審査を行い、
(あまりないこ
とだが)コミッターグループから一時的、あるいは永久的にメンバーを外す決定も下す。コミッ
ターグループから脱退する場合の主な理由は、活動内容が不活発になったこと(1 年以上システム
に対して変更を行っていない)である。
FreeBSD プロジェクトの開発方法は、CSRG で確立された形態をそのまま継承している。CSRG
と FreeBSD は、どちらも集中的なソースコード管理の仕組みを使っている。FreeBSD における
コアチームの役割は CSRG が果たしていたものと同じである。大学が CSRG の開発機上のアカウ
ントを発行し、CSRG のソースに修正を加えることを許可した協力者は、FreeBSD のコミッター
に相当する。FreeBSD の開発者達は、CSRG の開発機上にアカウントを持たずにバークレイに協
力してくれた人々である。
51
第 1 章 歴史と目標
FreeBSD プロジェクトは、さらにいくつかの重要な改善を行った。まず、彼らはどんなに献身
的なプログラマであっても、燃え尽きたり、興味を失ったりすることはあるし、そうでなかったと
してもより条件のいい仕事に移ってしまうことがあると考えた。そのような技術者がいなくなっ
てもプロジェクトの重要な部分がすっぽり抜け落ちることがないように、円滑に業務を移行する
方法がなければならない。そのため FreeBSD では、CSRG のように絶対的権限を持つ常勤のス
タッフを持つのではなく、コミッターによって選ばれるコアメンバーによる運営を選択した。燃
え尽きたコアメンバーは、任期が終了したら再選のために立候補しなければいいだけである(時
にはそのように説得される)
。コミッターの要求に応えられないと判断されたコアメンバーは、再
選されることはない。逆に、活発で熱心な技術者には、より高いランクへ昇りつめる機会がいく
らでも提供される。コアチームは投票によって決まるため、そこに選出されるのは、プロジェク
トで活発に活動する技術者達がその役目を与えたいと考える人材である。これは、世間一般の昇
進の仕組みよりもうまく機能する。トップにいるのは皆から仲間と認められた人々だからだ。ま
た、コアチームにはコミュニケーション能力が高い人材が選ばれることになるが、それはまさに
そのポジションに要求される能力なのである。
FreeBSD プロジェクトで行われたもうひとつの重要な改善点は、多くの作業を自動化し、ソー
スコードリポジトリ、ウェブサイト、バグレポートのリモートミラーを用意したことである。こ
れにより、CSRG モデルに比べて、より多くの協力者がプロジェクトに参加できるようになった。
また、FreeBSD プロジェクトは、米国からの独立性を格段に向上させており、主だった国だけを
挙げても、日本、オーストラリア、ロシア、南アフリカ、デンマーク、フランス、ドイツ、イギリ
スなど世界中の国々から活発な開発者を迎えている。
CSRG は、およそ 2 年毎に新しいバージョンをリリースしてきた。これらの配付に対する変更
は稀であり、セキュリティや信頼性に関連する深刻な問題を修正する小規模なものに限られてい
た。CSRG は、リリースの合間に、開発中の機能について経験を積むことを目的としたテストリ
リースを行うこともあった。
FreeBSD プロジェクトは、CSRG の配付の仕組みを大幅に拡張した。FreeBSD には、定常的
に 2 種類の配付が用意されている。ひとつは『ステーブル(stable: 安定した)
』リリースと呼ばれ、
実運用環境で使われることを想定している。もうひとつは『カレント(current: 現行の)』リリー
スと呼ばれる、その時点における最新版の FreeBSD システムであり、開発者や最新の機能を必要
とするユーザによって使われることを想定している。
ステーブルリリースの修正頻度は少く、その内容もバグの修正、性能改善、新しいハードウェア
のサポートなどに限られている。ステーブルシステムは、1 年に 3 回から 4 回リリースされるが、
もっと短い間隔でアップグレードすることを望むユーザは、好きな時にネットワークから最新の
コードをダウンロードしてインストールすることができる(たとえば、大きなセキュリティ上の
修正が施された後など)
。ステーブル版の FreeBSD は、CSRG のメジャーバージョンリリースに
似ているが、より活発に更新されユーザの手に渡る。ステーブルリリースと同様に、数ヵ月に一
度、カレントリリースのスナップショットが作成される。しかし、多くのユーザは、もっと頻繁
52
1.4 FreeBSD の開発モデル
にカレントリリースを更新することを望む(毎日更新するユーザも珍しくない)
。ステーブル版と
カレント版の配付は世界各地のミラーサイトにコピーされているので、世界中の FreeBSD ユー
ザは、CSRG の方法に比べて、はるかに容易に最新の状態を保つことが可能である。
およそ 2 年に一度、カレントの流れから新しいステーブルリリースが分岐される。新たなステー
ブルの流れが実運用に供するに足る信頼性を持つことがわかると、古いステーブルに対する作業
はほとんど行われなくなり、実運用ユーザも新しいステーブルリリースを使うようになる。開発
は、カレント版を中心に行われる。ほぼすべての変更は、まず最初にカレント版に適用される。
カレント版での検査が終了し、その環境で問題なく動作することが保証された変更は、ステーブ
ル版に適用される(これを merged-from-current という意味で MFC と呼ぶ)
。
CSRG の方が FreeBSD プロジェクトよりも有利だった部分があるとすれば、それは CSRG が
カリフォルニア大学バークレイ校という大学組織に属していたという点だろう。大学は非営利組
織なので、CSRG に対する寄付は非課税扱いになるのである。FreeBSD プロジェクトの何人か
は、寄付してくれる人々に対して免税措置を与える方法がないかと長い間模索していた。3 年間
の優れた非営利活動が評価され、米国税務当局から 501(c)3 適用団体の認可を受けて、数年前に
FreeBSD Foundation が設立された。この認可によって、FreeBSD Foundation に対する寄付は、
大学に対する寄付と同様に、連邦政府および州の免税対象となった。免税対象となったことによっ
て FreeBSD プロジェクトに対する寄付金は大幅に増え、必要で重要だが退屈なシステムの開発
作業を部分的に外注することが可能になった。
FreeBSD プロジェクトは、過去 10 年以上の間、安定して堅実なペースで成長してきた。Linux
が多くの支持を集めたのは確かだが、FreeBSD は高性能サーバの領域での位置を維持し続けてい
る。実際のところ、Linux が産業分野におけるオープンソースの可能性を切り開いてくれたおか
げで、FreeBSD もその恩恵を受けているのである。システムを Linux から FreeBSD に移行する
ように経営者を説得するのは、Microsoft Windows から FreeBSD に切り替えるのに比べれば格
段に楽な作業だ。また、Linux は FreeBSD のために安定して開発者を提供してくれている。最近
まで Linux は、集中的なソースコードのリポジトリを持っていなかったので、ディストリビュー
タとして働いているか、システムの変更権を持っている限られた開発者と親しい関係になければ、
プロジェクトに貢献することはできなかった。FreeBSD プロジェクトは、それに比べるとはるか
に平等で成果主義な運用方針を持っていたので、優秀な開発者の魅力的な活動の場として受け入
れられた。FreeBSD プロジェクトに集まって来る新人には、20 台半ばから後半で、Linux やその
他のオープンソースプロジェクトで 10 年程度の経験を持つ技術者が多い。彼らは十分な経験を持
つ成熟した技術者で、プロジェクトの中で即戦力として活躍することができる。そして、開発者
からコミッターへと進んでいく相互評価の仕組みがあるため、ある技術者が FreeBSD のソース
に直接コードをコミットできる資格を得たとすれば、彼はその時すでに、FreeBSD の品質、堅牢
性、管理性を維持するために必要不可欠な、明解なコードを書くための技術を習得していること
が保証されるのである。
FreeBSD プロジェクトが目指すのは、何からも拘束されることなく、どんな目的にも利用でき
53
第 1 章 歴史と目標
るソフトウェアを提供することである。多くの開発者は、コードの作成に多大な労力を払い、それ
に対しての経済的な見返りが少いことなど気にもしていないが、同時にそれほど強くプロジェクト
に執着してもいない。彼らは皆、いかなる目的であろうとすべての利用者を受け入れ、彼らのコー
ドがなるべく広く利用され、考え得る限り最大の成果を上げることを望んでいるのだ [Hubbard,
2004]。
参考文献
AT&T, 1987.
AT&T, The System V Interface Definition (SVID), Issue 2, American Telephone and Telegraph,
Murray Hill, NJ, January 1987.
~ & Joy, 1981.
Babaoglu
~ & W. N. Joy, "Converting a Swap-Based System to Do Paging in an Archi
Ö. Babaoglu
tecture Lacking Page-Referenced Bits", Proceedings of the Eighth Symposium on Operating
Systems Principles, pp. 78-86, December 1981.
Bach, 1986.
M. J. Bach, The Design of the UNIX Operating System, Prentice-Hall, Englewood Cliffs, NJ,
1986.(邦訳:坂本文、多田好克、村井純 訳『UNIX カーネルの設計』、共立出版)
Comer, 1984.
D. Comer, Operating System Design: The Xinu Approach, Prentice-Hall, Englewood Cliffs, NJ,
1984.
Comer, 2000.
D. Comer, Internetworking with TCP/IP Volume 1, 4th ed., Prentice-Hall, Upper Saddle River,
NJ, 2000.(邦訳:村井純、楠本博之 訳、『TCP/IP によるネットワーク構築 Vol.1 原理・プ
ロトコル・アーキテクチャ 第 4 版』、共立出版)
Compton, 1985.
M. Compton, editor, "The Evolution of UNIX", UNIX Review, vol. 3, no. 1, January 1985.
Debevoise, 1993.
D. Debevoise, Civ. No. 92-1667, Unix System Laboratories Inc. vs. Berkeley Software Design Inc.,
http://sco.tuxrocks.com/Docs/USL/Doc-92.html, March 3, 1993.
DiBona et al., 1999.
C. DiBona, S. Ockman & M. Stone, Open Sources: Voices from the Open Source Revolu
tion, pp. 31-46, Chapter 2
Twenty Years of Berkeley Unix: From AT&T-Owned to
Freely Redistributable, http: //www.oreilly.com/catalog/opensources/book/kirkmck.html,
ISBN 1-56592-582-3, O'Reilly & Associates, Inc., Sebastopol, CA 95472, 1999.(邦訳:倉骨彰
訳、
“バークレー版 UNIX の 20 年”
、
『オープンソースソフトウェア』
、オライリー・ジャパン
http://www.oreilly.co.jp/BOOK/osp/OpenSource_Web_Version/chapter03/chapter03.html)
54
参考文献
Ewens et al., 1985.
P. Ewens, D. R. Blythe, M. Funkenhauser & R. C. Holt, "Tunis: A Distributed Multipro
cessor Operating System", USENIX Association Conference Proceedings, pp. 247-254, June
1985.
Holt, 1983.
R. C. Holt, Concurrent Euclid, the UNIX System, and Tunis, Addison-Wesley, Reading, MA,
1983.(邦訳:大野豊 監訳、伊藤潔、広田豊彦 訳『並行処理と UNIX Concurrent EUCLID,
UNIX, TUNIS』、啓学出版)
Hubbard, 2004.
J. Hubbard, "A Brief History of FreeBSD", FreeBSD Handbook, section 1.3.1, http: //www.
freebsd.org/doc/en_US.ISO8859-1/books/handbook/history.html, March 2004.
ISO, 1999.
ISO, "ISO/IEC 9899 Programming Language C Standard", ISO 9899, can be orderd from
http://www.iso.org, December, 1999.
Joy, 1980.
W. N. Joy, "Comments on the Performance of UNIX on the VAX", Technical Report,
University of California Computer System Research Group, Berkeley, CA, April 1980.
Jung, 1985.
R. S. Jung, "Porting the AT&T Demand Paged UNIX Implementation to Microcomputers",
USENIX Association Conference Proceedings, pp. 361-370, June 1985.
Kashtan, 1980.
D. L. Kashtan, "UNIX and VMS: Some Performance Comparisons", Technical Report, SRI
International, Menlo Park, CA, February 1980.
Kernighan & Ritchie, 1978.
B. W. Kernighan & D. M. Ritchie, The C Programming Language, Prentice-Hall, Englewood
Cliffs, NJ, 1978.(邦訳:石田晴久 訳『プログラミング言語 C』、共立出版)
Kernighan & Ritchie, 1989.
B. W. Kernighan & D. M. Ritchie, The C Programming Language, 2nd ed., Prentice-Hall,
Englewood Cliffs, NJ, 1989.(邦訳:石田晴久 訳『プログラミング言語 C ANSI 規格準拠 第
2 版』、共立出版)
Linzner & MacDonald, 1993.
J. Linzner & M. MacDonald, University of California at Berkeley versus Unix System Laboratories
Inc., http: //cm.bell-labs.com/cm/cs/who/dmr/bsdi/930610.ucb_complaint.txt, June 1993.
McKusick et al., 1989.
M. K. McKusick, M. Karels & K. Bostic, "The Release Engineering of 4.3BSD", Proceedings
of the New Orleans Usenix Workshop on Software Management, pp. 95-100, April 1989.
Miller, 1978.
R. Miller, "UNIX
A Portable Operating System", ACM Operating System Review, vol. 12,
no. 3, pp. 32-37, July 1978.
55
第 1 章 歴史と目標
Miller, 1984.
R. Miller, "A Demand Paging Virtual Memory Manager for System V", USENIX Association
Conference Proceedings, pp. 178-182, June 1984.
Mohr, 1985.
A. Mohr, "The Genesis Story", UNIX Review, vol. 3, no. 1, pp. 18, January 1985.
Organick, 1975.
E. I. Organick, The Multics System: An Examination of Its Structure, MIT Press, Cambridge,
MA, 1975.
P1003.1, 1988.
P1003.1, IEEE P1003.1 Portable Operating System Interface for Computer Environments (POSIX),
Institute of Electrical and Electronic Engineers, Piscataway, NJ, 1988.
Peirce, 1985.
N. Peirce, "Putting UNIX in Perspective: An Interview with Victor Vyssotsky", UNIX
Review, vol. 3, no. 1, pp. 58, January 1985.
Presotto & Ritchie, 1985.
D. L. Presotto & D. M. Ritchie, "Interprocess Communication in the Eighth Edition UNIX
System", USENIX Association Conference Proceedings, pp. 309-316, June 1985.
Richards & Whitby-Strevens, 1982.
M. Richards & C. Whitby-Strevens, BCPL: The Language and Its Compiler, Cambridge
University Press, Cambridge, U.K., 1980, 1982.(邦訳:和田英一 訳『BCPL 言語とそのコン
パイラ』
、共立出版)
Ritchie, 1978.
D. M. Ritchie, "A Retrospective", Bell System Technical Journal, vol. 57, no. 6, pp. 1947-1969,
July-August 1978.
Ritchie, 1984a.
D. M. Ritchie, "The Evolution of the UNIX Time-Sharing System", AT&T Bell Laboratories
Technical Journal, vol. 63, no. 8, pp. 1577-1593, October 1984.(邦訳:石田晴久、長谷部紀
元、清水謙多郎 訳“UNIX タイムシェアリング・システムの発展”、
『UNIX 原典』、パーソ
ナルメディア)
Ritchie, 1984b.
D. M. Ritchie, "Reflections on Software Research", Comm ACM, vol. 27, no. 8, pp. 758-760,
1984.
Ritchie, 1987.
D. M. Ritchie, "Unix: A Dialectic", USENIX Association Conference Proceedings, pp. 29-34,
January 1987.
Ritchie, 2004.
D. M. Ritchie, Documents on Unix System Laboratories Inc. versus Berkeley Software Design Inc.,
http://cm.bell-labs.com/cm/cs/who/dmr/bsdi/bsdisuit.html, March 2004.
Ritchie et al., 1978.
D. M. Ritchie, S. C. Johnson, M. E. Lesk & B. W. Kernighan, "The C Programming Lan
guage", Bell System Technical Journal, vol. 57, no. 6, pp. 1991-2019, July-August 1978.
56
参考文献
Rosler, 1984.
L. Rosler, "The Evolution of C
Past and Future", AT&T Bell Laboratories Technical
Journal, vol. 63, no. 8, pp. 1685-1699, October 1984.
Tanenbaum, 1987.
A. S. Tanenbaum, Operating Systems: Design and Implementation, Prentice-Hall, Englewood
Cliffs, NJ, 1987.(邦訳: 坂本文 監修、大西照代 訳『MINIX オペレーティング・システム』、
アスキー)
Tuthill, 1985.
B. Tuthill, "The Evolution of C: Heresy and Prophecy", UNIX Review, vol. 3, no. 1, pp. 80,
January 1985.
Wilson, 1985.
O. Wilson, "The Business Evolution of the UNIX System", UNIX Review, vol. 3, no. 1, pp.
46, January 1985.
X/OPEN, 1987.
X/OPEN, The X/OPEN Portability Guide (XPG), Issue 2, Elsevier Science, Amsterdam,
Netherlands, 1987.
57