OSの登場
目次
UNIX
1969年 AT&T ベル研究所のKen Thompsonが、自分の趣味で中古のミニコンピューター PDP-7 を買ってきました。
AT&T はMULTICS の開発が長引いたため、撤退を決めました。しかし、AT&Tから参加していた Ken は、MULTICS に未練を感じていました。
なぜなら、彼は MULTICS で作成した「宇宙旅行ゲーム(Space Travel)」を非常に気に入っていたのです。MULTICSプロジェクトから撤退してしまった今では、あの面白いゲームが遊ぶことが出来ません。
しかし、UNIX 開発者の一人、デニス・リッチーのホームページには、問題となるゲームが宇宙旅行ゲームであり、宇宙戦争ゲームとは異なるゲームだとはっきり書かれています。
もっとも、宇宙旅行ゲームとほぼ同時期に宇宙戦争ゲームの UNIX 移植も行ったとも書かれていますので、UNIX 開発メンバーが宇宙戦争ゲームのことを知っていたのは事実のようです。
買ってきた PDP-7 は、このゲームをなんとか移植して遊ぶための物でした。しかし、ここで彼は問題に気づきます。PDP-7 には、MULTICS のような優れたシステムが無かったのです。
彼は、ゲームのために MULTICS のようなシステムを PDP-7 で作ることにしました。しかし、MULTICS ほどのものは必要ありません。どうせ趣味なのですから。
そこで、彼は MULTICS のなかから気に入った機能だけを選び出して、小さな一人用システムを作り上げ、UNIX と名付けます。UNI とは、「ひとつの」という意味で、MULTI の対義語でした。つまり、このシステムは MULTICS のパロディ版なのです。
UNIX には、TSS や階層化ファイルシステム、周辺デバイスをすべてファイルに見せる仕組み、コアダンプなどが取り入れられました。
その反面、複数人数で使うためのセキュリティ機構などは無視された作りとなっていました。もともとゲームが遊べれば十分でしたから、セキュリティなんて不要なのです。
しかし、この UNIX システムは、彼一人で使うにはもったいないシステムでした。彼は快く仲間の研究者にシステムを開放します。彼らのグループはこのシステムに手を加え続け、十分実用になるシステムに育て上げます。そして、セキュリティは甘いながらも、結局複数人数が同時に使えるシステムへと発展を遂げるのです。
UNIX の開発を開始してからまもないうちに、UNIX を PDP-11 に移植することになりました。PDP-11 は PDP-7 の後継機で、性能もずっと上がっています。みんなが使い始めたシステムをいつまでも中古の PDP-7 で動かしているよりも、性能の良いマシンに移植しよう、というアイディアでした。
しかし、PDP-11 は PDP-7 の後継機とはいっても、まったく同じプログラムが動くわけではありません。プログラムには大幅な手直しが必要です。
彼らのグループは、ここでちょっと工夫を凝らすことにしました。
FORTRAN から始まった「プログラム言語」は、その後の研究で必要な機能が整理され、「構造化言語」というブームを興していました。構造化言語の特徴は、コンパイラのプログラムが作りやすく、その言語で書かれたプログラムが非常に整理されていてわかりやすいことです。
そこで彼らは、この構造化言語の流れを汲む言語を新たに作り、UNIX をその言語で書き直すというアイディアを思いつきました。
まず、構造化言語 BCPL の機能を単純化した「B」という言語を UNIX 上で作り、その機能を強化して「C」言語を作ります。
ついで、C 言語を C 言語自身で書き直します。ここまでは PDP-7 上の UNIX で作られました。ここまでが第1段階。
次いで、UNIX 自身を C 言語で書き直します。まずは、単純でも良いから PDP-7 で動く UNIX とほぼ同等なものを。
C 言語は UNIX 上で C 言語を使って開発され、UNIX は その C 言語で開発される。とにかくこの関係がちゃんと動くようになるまでが第2段階です。
これで、新しい言語である「C」と、この言語で書かれた UNIX ができ上がりました。
ここまで来れば後は簡単です。C 言語を改良して、PDP-11 の機械語コードを出力できるようにします。そして、UNIX と C 言語自身を PDP-11 用にコンパイルし直せば作業は終了です。
こうして、UNIX は、そのシステムがターゲットとしたシステムから別のシステムへ、無事に移植が終了したのです。そして、この開発方針を守っていけば、いつかさらに強力なコンピューターに移植することも可能だ、という保証を手に入れたことにもなります。
これまでは、プログラムというのはあくまでも「ハードウェアのおまけ」でしかありませんでした。しかし、ここでついにプログラムがハードウェアからの独立を果たしたのです。
BSD
AT&T は、この UNIX システムを商売に出来ないか、と考えました。当然のことです。
しかし、AT&T は大企業過ぎる余り、反トラスト法(日本の独占禁止法)によって、電話事業以外への事業展開が禁じられていました。
そこで、AT&T はこの優れたシステムを、公共機関にかぎって無料で配布することにしました。とにかく広めておけば、あとでコンピューター業界に乗りだすことが可能になったときに、商売につながるかもしれません。
そんなとき、ちょうど ARPA が、政府と研究機関を結ぶ新しいコンピューターネットワーク「ARPA-NET」の研究を開始していました。
ARPA-NET は、従来のように中枢コンピューターにデータを蓄積するのではなく、ネットワークで結ばれたコンピューターそれぞれが協調して動作するシステムです。これは、核兵器によって、1つの基地が壊滅的な打撃を受けたときでも残りのネットワークが動作できるようにするための、重要な研究でした。
そして、ARPA は、この研究をカリフォルニア大学バークレー校に依託します。
追記 2020.5.27
このページ、20年以上前に書いたもので、間違った記述多いです。すみません…上に書いてある「核攻撃に耐えられるネットワーク」は、実際に研究されたのですが、ARPA-NET とは別のものです。
詳細は、ポール・バランの誕生日記事に書いてあります。
バークレー校では、この研究を行うために UNIX を使用することにしました。無料で入手でき、わかりやすい言語でかかれたこの OS ならば、必要に応じて独自に改良することも可能だったのです。
こうして、バークレーの学生達によって、UNIX にさまざまなネットワーク機能が付け加えられました。
こうして作られた UNIX は、「Barkley Softwear Distribute UNIX」、略称 BSD UNIX と呼ばれるようになります。(現在のBSD)
この後、BSD の先進機能は本家も真似するようになり、AT&T UNIX (System V) と BSD という二つの流れを作るようになるのです。
こうして、現在でも広く使われている UNIX OS が生まれ、次いで さまざまな OS が生み出されていくことになります。
AT&T はこの後分割され、UNIX のライセンス供給を開始します。それは同時に、BSD UNIX を「海賊版」としてしまうことでもありました。BSD は、AT&T UNIX の派生品でありながら AT&T のライセンスを受けていないのです。
AT&T分割後は、コンピューター事業を行えるようになったため、ライセンス料を引き上げようとして訴訟となります。
このときの騒ぎが、AT&T の UNIX に反対し、同等品を作り上げてしまおうという活動、「GNU」(GNU is Not UNIX の略)の開始にも関係してきます。また、BSD が「UNIX」という名前を捨てた直接原因でもあります。
BSD とともに始まった ARPA ネットは後の インターネットに成長するのですが、この段階ではまだ Ethernet などは使われておらず、まだ「原形」としての形すら見えていません。
ここら辺の話は、また別の機会に。
参考文献 | |||
林檎百科〜マッキントッシュクロニクル〜 | SE編集部 | 1989 | 翔泳社 |
FORTRAN 77 | 大駒誠一 | 1982 | サイエンス社 |
TransTECH 創刊号 | 1999 | 翔泳社 |