Part1では,OSの出現あるいは発表の年代にとらわれず,主にコンピュータの利用形態から見たOSの変遷と,その後のOSに大きな影響を与えたOSをピックアップして紹介しよう。

 商用コンピュータが出現したのは,1950年代のことである。しかし,当時のコンピュータシステムはハードウエアが非常に高価であり,かつシステムとして利用するために必要なプログラムはユーザーが開発することが原則(ハードウエア重視の時代)であった。

 とはいえ,ユーザーがすべてのプログラムを開発するのは効率的ではなかった。このため,入出力装置の制御をユーザーのプログラムに代わって実行する「入出力制御システム(IOCS=Input/Output Control System)」,あるいは当時の一般的処理形態だったバッチ処理(後述)を効率的に実行するための「常駐モニター」が提供され,これが後のOSへの足がかりとなった。

 1960年代中頃に米IBMが汎用コンピュータ(メインフレーム),「System/360シリーズ」用OSとして開発した「OS/360」が,「OS」という用語を普及させる契機となった(コンピュータ名およびOS名の「360」とは角度の360度のことであり,全分野で利用可能という意味である)。

 さらに,1970年代にSystem/360シリーズの後継として開発された「System/370シリーズ」でハードウエアとソフトウエアの価格分離(アンバンドリング)が実施された。

 ここで,(OSがハードウエアの付属物だった)ハードウエア重視の時代からソフトウエア重視の時代への流れが始まったのであり,その後「コンピュータシステムはソフトウエアがなければただの箱」という,今日誰でもが認める考え方が定着していく。

バッチ処理とリアルタイム処理

 ハードウエアが高価だった時代には,いかにハードウエアを効率的に利用するか,すなわち一連のプログラムを途切れることなく処理するか,が求められた。これが「バッチ処理」であり,バッチ処理を効率的に実施するOSの機能が「ジョブ管理」である。

 汎用コンピュータの時代には「ジョブ制御言語(JCL=Job Control Language)」でジョブステップ(実行するプログラムとそのプログラムが処理するデータ)を指定した。一連のプログラムを一括して実行するため,必要なデータは磁気テープや紙カードあるいは紙テープなどからまとめて入力し,処理結果は磁気テープあるいはラインプリンタなどにまとめて出力していた(図1)。

図1●バッチ処理
図1●バッチ処理
一連のプログラムを一括して実行する。

 一連のプログラムを一括して実行するバッチ処理に対して,要求された処理を即座に実行することを「リアルタイム処理」と呼ぶ(実時間処理とも言う)。許容された時間内に処理を完了することも,リアルタイム処理に含まれる。汎用コンピュータの時代は,ホストコンピュータに通信回線を介して端末を接続したシステム構成が一般的で,これをオンラインリアルタイムシステムと呼んでいた。

 現在ではリアルタイム性よりも業務上の取引(処理)に注目した用語「オンライントランザクションシステム」を使うことが多い。例えば,銀行のキャッシュディスペンサー(現金支払機)やATM(現金自動預け払い機)を利用した入出金,JRのみどりの窓口設置の端末を利用した座席予約などが,オンラインリアルタイムシステムの発展形である。

処理結果を踏まえて次の指示を与えるインタラクティブ処理

 一方,ユーザーがシステムに指示(コマンド)を与えて処理結果を待ち,その結果を踏まえて次の指示を与える処理形態を「インタラクティブ処理」と呼ぶ(対話処理あるいは会話処理とも言う)。これは,ハードウエアよりもユーザーの都合を優先する利用方法と言える。

 高価なハードウエアが主役だった汎用コンピュータの時代には,ユーザーが1人でシステムを独占して利用することはできず,一台のコンピュータを複数のユーザーで共有する利用形態(マルチユーザーシステム)であった。この利用形態でのインタラクティブ処理の代表例が,「時分割システム(TSS=Time Sharing System)」である。

 TSSは,中央処理装置(CPU=Central Processing Unit)の微少時間をあるユーザーに割り当ててそのプログラムを実行,次の微少時間でさらに別のユーザーのプログラムを実行,これを繰り返すことで各ユーザーにあたかも独占的にシステムを利用しているように思わせる処理形態である(図2)。リアルタイム処理とは違い,相手が人間なので数秒程度までの遅延は許されるという前提に立っており,応答性能よりもサービス可能なユーザー数を重視していた。

図2●時分割システム(TSS)<br>CPUの微少時間をあるユーザーに割り当ててそのプログラムを実行し,次の微少時間で別のユーザーのプログラムを実行。これを繰り返すことで各ユーザーが独占的にシステムを利用しているように思わせる処理形態である。
図2●時分割システム(TSS)
CPUの微少時間をあるユーザーに割り当ててそのプログラムを実行し,次の微少時間で別のユーザーのプログラムを実行。これを繰り返すことで各ユーザーが独占的にシステムを利用しているように思わせる処理形態である。
[画像のクリックで拡大表示]

 TSSでは,ユーザーは端末(ターミナル)を利用してコマンド(命令)を入力した。端末は通信回線を介して汎用コンピュータに接続されており,文字ベースのユーザーインタフェース(CUI=Character User Interface)しか提供されなかった。CUIでは,システムのコマンドをすべてキーボードから入力する必要があり,コマンド名を知らなければ操作は一切できなかった。

 その後,ウインドウシステムが開発され,その上にデスクトップ環境を構築すれば,コマンド名を知らなくともマウスでアイコンをクリックすることでコマンド実行を代替できるようになった。これがグラフィカル・ユーザーインタフェース(GUI)である(米Xeroxのパロアルト研究所で1970年代に開発されたAltoマシンが原型)。

 しかし,最近のOSであっても,CUIではコマンド名さえ知っていればキーボードのみですべての操作を行え,GUIよりも迅速に操作できる。エキスパート・ユーザーを中心に,例えばUNIXの実質標準ウインドウシステムX Window Systemの端末エミュレータやWindowsのコマンド・プロンプトなどを愛用しているユーザーは多い(図3)。

図3●CUIとGUI
図3●CUIとGUI
CUIでは,システムのコマンドをすべてキーボードから入力する必要があるが,GUIではコマンド名を知らなくともマウスでアイコンをクリックすることでコマンド実行を代替できる。