2008年4月30日水曜日

OSの進化と技術の継承

今日は、個人的な視点でのOSの歴史とその技術が受け継がれてきた流れをメモしておこう。

1960年 MITにてMULTICSが開発(複数ユーザーのタイムシェアリングが可能となった)
ここからバッチ処理からタイムシャアリングによる同時利用が可能な時代となった。
言語は、PL/IでFORTRAN+COBOLの合体言語だった。
# 私は類似の言語のPL/Hで仕事をしたがCOBOLが苦手でFORTAN形式で書いてばかりいたかな。

重いOSから軽く動作するOSを求めてUNIXとC言語が開発された。
1973年にAT&Tベル研究所でUNIXが開発された。
UNIXのネーミングがMULTICSとポリシーが異なることを明示している。
ケン・トンプソンとデニス・リッチーがUNIXとC言語を開発した。彼らのC言語の教科書が日本語でも発売されていた。
このUNIXがOSの教材として広まっていった。

1975年以降にUCバークレー大学院のビル・ジョイがPascal言語やライエディタex、スクリーンエディタのviを開発し、ビル・ジョイがバグFIXしたに等しいUNIX Ver.7が有名だ。ビルジョイはexやviをバンドルしたUNIXをBSD(Berkeley Software Distribution)として配布しオープンソースコミュニティを作った。このことに関するビル・ジョイの興味深いコメントがある。

1978年にベル研究所が、32ビット化したUNIX 32Vをリリース
1979年に、その32Vをベースにビル・ジョイが仮想記憶を実装し利用できるようにした。
そして全て32ビット化した3BSDを配布した。

ARPAが3BSDにTCP/IPの実装のためにバークレー校と契約し、ビル・ジョイが中心的にCSRGという組織が作られたた。
1980年に、強化改良された4BSDが配布された。
1982年にTCP/IPを組み込んだ4.1aBSDができた。
スタンフォード大学でアンディ・ベクトルシャイムが設計したEthernet(1980年にIEEE標準になった)が使えるUNIXマシンを開発。
TCP/IPを実装した4.2BSDが主流となる。

この後に、AT&Tの方針転換からUNIXは商用OSとして非オープンになっていった。

1984年にSunがNFSを発表。通信プロトコルはC言語で実装したRPC。
同じ頃に、Emacsを開発したStallmanはMITを退職し、GNUプロジェクトを開始。
GNUの歴史もググれる。 GNUの歴史は「Think GNU -プロジェクトGNU日記とソフトウェアの憂鬱」を見て欲しい。

1984年にMIT(マサチューセッツ工科大学)でX Window Systemが開発された、X11R1は1987年にリリースされている。

1989年、UNIX SystemVと4.3BSD、SunOSを統合したUNIXのSVR4が完成。
UNIXのソースコードは自由に見れなくなった時代だった。
BSDもAT&Tの契約が無いと駄目だった。
OSFとの争いでOSFは結局は統一UNIXを挫折し、SunはNeWSウインドウを断念した。
あまり政治的な技術とプロパライタリーな技術は受け入れられないという教訓かもしれない・・・

1985年にMach OSのSupercomputer Workbench Project が始まった。
# このプロジェクトで解決しようとした問題は、モノリシック系のOSでも時間が解決した。
# Windows NT以降でサブシステムからマイクロカーネルに機能が移るたびにどちらがいいのか考えさせられたものだ。GNU Hurdも成功しなかった。
# 唯一成功したMach OSベースのOSはMac OS Xだ。NEXTSTEPはブームを作ったOSと言える。
# Mach3.0を日本で配布したらMIPSに移植した人がいたのを覚えている。

1987年に、アンドリュー・タネンバウム教授が、OSの教育用に執筆した著書「Operating Systems: Design and Implementation」用の例として開発したUNIX風のMINIXオペレーティングシステムがその後に注目をあびた。 MINIXは、UNIXのソースコードが自由に見れなくなったため必然的に誕生したOSだ。
# 自分も日本語版で勉強した。そしてPC98への移植記事に影響されて、ノートPCである98ノートで動かなかったので移植を決意した。ビル・ジョイへの憧れも多分にあったかな。

そのMINIXを開発環境としてLinuxが1991年に誕生した。
ブームになったのは、0.95か0.96あたりだったように覚えている。
1992年にLinux 0.96が出て利用者1000人とWiKiに書いてある・・・
そして、GNUソフトウェアとLinuxをパッケージにしたディストリビューションが始まる。
最近は、むやみやたらとLinuxをもてはやす傾向にあるが、先人の知恵と貢献が無ければ生まれなかったはずだ。NFSやX11 Window Systemなど先にオープンソースとしてあったからこと成立したOSに過ぎない。また、インテルやIBMなどの大手がエンタープライズ化したLinuxカーネルやファイルシステムを提供したのも貢献が大きい。組み込み分野ではリアルタイム・カーネル化されたLinuxを実装した方々がいたのも大きな貢献だった。

日本でも、
1992年10月にSuperASCIIで386BSD/Linux/Mach3.0の特集記事が出た。
OSの勉強をする方々が増えた時代だ。

先人のオープンソースの貢献が無ければ、OSの進化はどんなだったろうかと時々考えることがある。

MS-DOSはCP/Mの物まねだが、ローダブル・モジュールは素晴らしい発想だった。
そのローダブル・モジュールの発想は、SunOS/Solarisにも実装され、Linuxで真似され実装された。

Mac はスターの真似だったかな。
Mac OSとWindowsは多くの人にWindowアプリを(実質的に)普及させた。
しかし、もうWindowsは肥大化して収拾が付かない感じがする。
なぜVistaはなかなか普及しないのかな。

OSは、肥大化による混沌とシンプル化による衰退と誕生を繰り返して進化してきている。
一度、混沌としたものは、生まれ変わるしかないのかもしれない。

2007年のGoogle Androidの発表は、携帯電話用OSの行き詰まりを解決するものではないか自分は受け止めた。
そして、Linuxを整理するタイミングのようにも思えた。
だから、このブログを開設し、「興味のあるターゲットとOSのマッピング 」など以前の記事に少しずつ書いた。
そろそろ、一旦、絞ったOS環境を用意する必要があるのではないかと思うのだが。

ベンダー固有の技術は、その企業が無くなると一緒に消えてしまうが、オープンソースと標準化された技術は生き残る可能性が高い。将来に渡りOS環境を安心して使うにはオープンソース化と標準化が重要だと思う。

0 件のコメント: