版を指定して表示しています。
理由が無い限り、最新版の閲覧をお願いします。

OS の登場

前回とりあげた、MEMEX から NLS の間というのは非常に長い期間になっています。

今回は、前回と同じ期間で、MEMEX から NLS に至る流れとは別の流れ、「OS の登場」を追ってみようと思います。

目次

自動プログラミング

FORTRAN モニター

MULTICS

UNIX

BSD

1950年のEDVAC の登場で、コンピュータは「技術」の問題ではなく「学術」的研究という俎上に乗せられることになりました。目指すべき方向性が明確に示されたことの影響は大きく、その方向にしたがってさまざまなアイディアが出されます。

こうして、ハードウェアはすぐに安定し、実用的になります。しかし、同時に新しい問題が出てきました。

プログラムの問題です。それまではハードウェアさえ出来ればさまざまな計算に使えると信じられていたのですが、ここに来てプログラムが想像以上に難しいことがわかったのです。


自動プログラミング

当時、プログラムを動かすには機械語コードと1対1で対応するアセンブリコードという物を使ってプログラムを行い、人間が自分の手で対応表を引いて数字からなる機械語コードに変換して、それをパンチカードに穿孔してからコンピューターに入力する、という作業が必要でした。

プログラムが難しいのは、このアセンブリコードがあまりにも単純なことしか出来ないためです。そのため、これを英語のような「人間にわかりやすい言葉」で指示することでコンピューターを動かせないか、というアイディアが出てきました。

これは、後に「自動プログラム」と呼ばれるアイディアです。


コンピューターが、自分自身のプログラムを作り上げる。これは夢のようなアイディアです。人間にも難しいことを、人間が作り出した機械にさせることが可能なのでしょうか?

自動プログラムについては、可能論と不可能論が激しく対立しました。

しかし、IBM にとっては、これは同社の有力商品である「コンピューター」の普及のためにも、ぜひ可能であって欲しい技術でした。

そこで、IBM 内で自動プログラムの研究がスタートしたのです。


最初は、とにかく「自動プログラムは可能である」ことを証明することが重要でした。証明と言っても、数学的な証明なんかは必要ではありません。実際に動くシステムを作ればいいだけです。

そこで、もともとコンピューターの得意分野である「数学計算」に的が絞られました。変数を含む複雑な数式を入力し、変数の値を決定してやると、計算結果を表示するプログラム。それが目標でした。

いまでは電卓でも出来るような簡単なことですが、可能かどうかもわからない状況では、十分すぎるほどの研究テーマだったのです。


1957年、システムは完成しました。

数式(FORMULER)を変換(TRANSLATION)するという意味から、「FORTRAN」と呼ばれるその言語は、確かに人間にとってわかりやすい言語を、自動的に機械コードに翻訳(コンパイル)することを可能としたのです。


初期の FORTRAN は制御構造を持たない単純なものでした。

パンチカード1枚に入れられる文字数が 80文字以内に限られていたため、1行は80文字以内に限られました。(現在でも、コンピューターで1行を 80 文字以内にすることが多いのはこの名残)

また、行の先頭に C が来た行は「COMMENT」を意味するなど、文法とは関係のない「決まりごと」も沢山ある言語でした。

それでも、FORTRAN の登場により自動プログラミングが可能であることが示され、COBOL や BASIC 、PL/I などの言語を生み出していくきっかけとなるのです。


FORTRAN モニター

FORTRAN は、パンチカードの1枚を1行(1命令)として、すべてのカードを読み込ませてから機械コードへの翻訳(コンパイル)を行い、その後翻訳された機械コードを実行させることでプログラムを動作させる仕組みになっていました。

そのため、プログラムの動作まで手間がかかります。それに、まだ当時はコンピューターは高価でしたが、これらの作業をしているあいだ、他の人はコンピューターが空くのを待っていなくてはならなかったのです。


1950 年代末から 60年代前半にかけて、これらの制御もコンピューターにやらせてしまおう、というアイディアが生まれます。

カードの束をセットしてプログラムをスタートさせれば、読み込み・コンパイル・実行を自動で行い、紙テープに結果を出力します。

紙テープ出力後は、すぐに次のカードの束の読み込みにかかります。このため、コンピューターを使いたい人はカードの束をセットしたら、しばらくたって結果を受け取りにいけばいいだけになります。


こうした仕組みは、FORTRAN モニターと呼ばれました。そして、これがいわゆる「OS」の最も原始的な姿です。


MULTICS

1960 年代になると、マサチューセッツ工科大学(MIT)の学生達が、非常にユニークなしかけをソフトウェアで実現します。

タイム・シェアリング・システム(時分割システム。以下 TSS と略称)と呼ばれるそのソフトウェアは、コンピューターの動作を非常に短時間で区切って複数のソフトウェアを動かすことで、複数のプログラムを同時に動かすことが可能でした。


高価なコンピューターを、1台で何台分にも使うことの出来るこのシステムは非常に注目されます。

ここで、MIT の TSS は国防総省高等技術研究局(ARPA)からの援助も受けて、IBM や AT&Tなどコンピューターに携わる多くの企業が技術を出し合う一大プロジェクトに発展します。

さまざまな最新技術・思想が取り入れられたこのシステムは、1台のコンピューターを複数人数で使うことを目標とし、「複数の」という意味の MULTI から、MULTICS と名付けられていました。


MULTICS は今見ても非常に先進的です。その一例をここに記しておきましょう・・・

すでに、当時は外部記憶装置が実用化されていました。MULTICS では、この外部記憶装置を使いやすくするために、データを「ファイル」という単位で管理する方法を取り入れており、しかも同種のファイルを管理しやすくするための「階層化」の概念まで導入されています。

さらに、ファイルを記憶装置だけではなく、システムを制御するすべての構造に適用するようになっています。たとえば、キーボードやディスプレイと言った装置も「特殊なファイル」という位置づけで、プログラムの入力や出力は、すべて自由なファイルに対して行うようになっていました。

これにより、複数人数で使う際に複数のキーボードやディスプレイを接続していても、システムからは「入出力ファイルが異っている」というだけの扱いで済ませることが出来ます。また、出力をファイルに保存しておいたり、ファイルに収められたデータを処理したりするのにも、特別なプログラムは不要になりました。


さらに、ファイルシステムを前提としたために、TSS の問題点を解決することも出来ました。

たとえば、プログラムが停止したとき、TSS 以前ならば停止した状態のプログラムのメモリを調べることで、異常の原因などを探ることが可能でした。

しかし、TSS 以降は複数人数で限られたメモリを使用するため、停止したプログラムをメモリに留めておくことが難しく、原因調査が行いにくくなっていました。

MULTICS では、これを「コアダンプ」という方法で解決しています。ファイルシステムがあることは MULTICS の前提ですので、異常が起こると、そのプログラムが使用していたメモリの内容をすべてファイルとして書きだすのです。


後でこのファイルをしらべ、原因が取り除けたらメモリの状態を復元し、続きからプログラムを実行するようなことも可能になっていました。

また、「コアダンプをファイルに出力でき、それをもう一度メモリに戻せる」というのは、メモリが不足したときに、急ぎでないプログラムを一時的にメモリから取り除き、あとでまた元に戻せることを意味していました。

MULTICS では現在で言うような仮想記憶はサポートされませんでしたが、メモリとファイルを同一に見るという基本的なアイディアは実現されていたことになります。


結局、これらの仕組みにより、MULTICS では、「メモリ」「外部記憶」「周辺機器」などの、コンピューターを構成するさまざまな要素を「ファイル」という、仮想的な単一要素にまとめてしまったことになります。これは、近代的な OS の最初の形でした。


このように、MULTICS には非常に優れた機能が多数盛り込まれたにもかかわらず、プロジェクトは事実上失敗しました。

理由は簡単です。当時のコンピューターには、まだここまでの仕組みを支えられるほどのパワーがなかったのです。

MULTICS は、たしかに優れた機能を複数の人数に提供することが可能でした。しかし、その代償として処理能力が非常に落ち、使用に堪えなかったのです。


次ページ: UNIX


1 2 次ページ

(ページ作成 1999-06-09)
(最終更新 2006-04-14)
第1版 …他の版 2版 最新版

戻る
トップページへ

-- share --

60012

-- follow --




- Reverse Link -