IBMメインフレーム用オペレーティングシステムの歴史

IBMメインフレーム用オペレーティングシステムの歴史は、世界最大のメインフレーム機メーカーとして長期に渡り君臨したIBMの歴史であり、オペレーティングシステムの歴史の中でも特に注目に値する。 
IBMが初期にメインフレーム用としてユーザーに提供していたオペレーティングシステム(OS)は、CP-67以降から実装された仮想マシン以外はそれほど革新的といえるものではなかった。しかし実績のある確かなテクノロジーを優先する同社の姿勢は評判を呼び、コンピュータの購入希望者はIBMのシステムであれば間違いないと納得しやすかった。IBMのメインフレーム用OSであるz/OS、z/VM、 z/VSE、z/TPFは、1960年代に開発されたOSの後継バージョンで、大幅に改良されている。 
当記事ではIBM提供のOS以外にも、IBM以外が提供したIBMメインフレームで著名なOSについても記載する。
System/360以前.
当初IBMはOSを開発していなかった。ゼネラルモーターズは自社が所有するIBM機のために、1955年にGeneral Motors OSを開発し、1956年にGM-NAA I/Oを開発、また1962年には同業他社のバロウズコーポレーションがMCPを、ゼネラルエレクトリックがGECOSをユーザー向けに開発した。 
IBM機用の最初のOSは、1950年代半ばの相場で200万ドルもする非常に高価なマシンを前にして、計算もさせずにジョブを手入力する時間がもったいないと思い、ジョブのキューを管理する仕組みが欲しいと考えたユーザーが開発したものだった。 
下記のOSは一部のモデルでのみ動作し、科学技術計算や工学計算にのみ適していた。IBMの別のモデルを持つユーザーや、別のアプリケーションでは、OSなしでなんとかしなければならなかった。しかしIBMの小型機の1つであるIBM 650には、後にOS/360の一部となるある機能があった。もし処理がハード障害を意味する「ランダム処理エラー」で中断された場合、オペレーターが自動でジョブを最初からやり直すのではなく、直近のチェックポイントから自動的に復旧することができた。 
ゼネラルモーターズのGM-NAA I/OがIBSYSになるまで.
ゼネラルモーターズの研究開発部門は、1955年に開発したGM Operating Systemをプロトタイプに、1956年に社内で使っていたIBM 701用にGM-NAA I/Oを開発し、その後701の後継機に対応するようアップデートした。1960年にIBMユーザー互助会SHAREがこれを引き継ぎ、アップデート版のSHARE OSを開発した。 
最終的にIBMがこのプロジェクトを引き継ぎ、拡張したバージョンをIBSYSと名付け、IBM 7090用やIBM 7094用として提供した。IBSYSは8台のテープドライブが必要だった(システムが1台以上のディスクドライブを持つ場合はこの数を減らすことができた)。カード方式のジョブ制御言語、FORTRANとCOBOLのコンパイラ、 アセンブラ、ソートプログラムなどの様々なユーティリティなどが付属した。 
1958年にミシガン大学はコンピュータシステムにGM-NAA I/Oを採用し、学生が書いた小さなジョブを大量に処理するのに適したUMESを開発した。UMESは1967年にMTSタイムシェアリングシステムへ置き換わるまで使われた。 
BESYS.
ベル研究所はBESYS (別名BELLMON)を開発して1960年代中頃まで使用した。 ベル研究所はこれを無料・無保証で他社にも公開した。 
FORTRANモニターシステム.
IBSYSが登場する前にIBMはIBM 709、7090、7094の各機種用に、FORTRANのプログラムをコンパイルするための単機能OSとしてテープベースのOSであるFMSを開発した。FMSとFORTRANコンパイラは同じテープの中に格納されていた。 
初期のタイムシェアリングシステムと仮想マシンシステム.
MITのフェルナンドコルバトは、メインフレームのIBM 704とIBM 7090を使い、CTSSなどの初期の実験的なタイムシェアリングシステムを1957年から1960年代初頭に開発した。これらのシステムはジョン・マッカーシーから提案されたアイデアに基づいていた。IBMは自社の複数の研究所で1960年代にタイムシェアリングシステムの実験をしており、市販のメインフレームをベースにハードウェアとマイクロコードを修正して仮想メモリをサポートし、1960年代初頭にIBM M44/44X、1964年から1967年にCP-40、1967年から1972年にCP-67を開発した。CP-67に至っては1968年から1972年までの間に無保証で複数の大手顧客にリリースしていた。CP-40とCP-67にはSystem/360 CPUシリーズに改造が必要だったが、M44/44Xは内部構造が大きく異なる最初期のCPUであるIBM 7044で動作した。 
これらのプロトタイプはIBMが1964年に発売したSystem/360シリーズには間に合わなかったものの、IBMはこれを足掛かりにして1972年に発売したSystem/370で仮想メモリと仮想マシンに対応した。 
コンピュータソフトウェアシステムという名前のコンサルティング会社は1968年にリリース版のCP-67を用いて商用タイムシェアリングサービスを提供した。同社の技術チームはMITの卒業生であるディック・オレンシュタインとハロルド・ファインリーブの2人を新卒で採用していた(前述のCTSSを参照)。会社の規模拡大に伴い社名をナショナルCSSに改め、サポートを求める有料ユーザーが増えるようにシステムに大幅な改良を加えてOSの名前をVP/CSSに変えた。1980年代初頭にIBMがVM/370(詳細は後述)を投入して市場を奪われるまで、VS/CSSはナショナルCSSの主力商品だった。 
これらの他にも1960年代後半には複数の大学が3つのS/360用タイムシェアリングOSを開発していた。 
System/360 オペレーティングシステム.
1960年代初頭までIBMのローエンドシステムとハイエンドシステムには互換性がなく、プログラムを別のシステムに移植するのは難しく、各システムはディスクドライブなどの周辺機器も異なっていることが多かった。このためIBMではハードとソフトの設計、開発、製造のコストが高騰し、顧客からのアップグレードの要望に応えきれなくなり、そのために売り上げが頭打ちになった。同社が1964年に発売したSystem/360は全てのマシンで共通の周辺機器を使用でき、プログラムもほぼ共有できることが売りとなった。 
元々IBMはバッチ処理に特化したOSであるOS/360だけをSystem/360に提供するつもりだった。後によりシンプルなバッチ処理専用OSであるDOS/360を開発しており、これを開発した理由には主に以下の2つがあった。 
System/360のOSはこれまでにIBMが開発したOSの中でも特に複雑で、それには以下のような理由があった。 
こうした厳しい要求によりOS/360や他のSystem/360用ソフトウェアの開発は当時としては前人未到の大規模プロジェクトとなり、間もなくIBMは問題に直面し、膨大な時間と費用をかけて大量のバグに対処しなければならなくなった。PCがなくクロスコンパイラやエミュレーターもない当時の開発環境では、System/360のOSを実機上で開発してテストしなければならず、問題は大きくなる一方で、IBMはBasic Programming Support / 360 (BPS/360)を先に開発しなければならなくなった。BPSはDOS/360やOS/360を開発するのに必要なツールを開発するのに使われ、FORTRANとCOBOLのコンパイラやソートなどのユーティリティ及びこれら全てをビルドするのに必要だったアセンブラなどのツールがあり、これらのツールはDOS/360やOS/360にも含まれた。 
IBMの競合他社はOS/360とSystem/360の開発が遅れたことを利用し、IBM市場の最大の弱点をシステムと捉え、各社ともOSを発表した。IBMはSystem/360のセールスが失敗するのを防ぐため4つの間に合わせのOSを繋ぎでリリースした。 
IBMはS/360-67の発表と同時に、360/67の新しい仮想メモリ機能を活用したタイムシェアリングOSのTSS/360も発表した。TSS/360のリリースは遅れ、初期バージョンは遅くて不安定だった。当時既にIBMのケンブリッジ科学センターがCP-67を別途開発しており、タイムシェアリング機能としてIBMが一部の大口顧客向けに無保証ながら提供しているほどに上手く動作していた。CP-67はVM/370にアップグレードし、最終的にはz/VMとなった。IBMはTSS/360を導入したユーザーにアップグレードパスのTSS/370 PRPQを3度リリースした後にこれを放棄した。 
System/360 OSを開発する際に得られた教訓からソフトウェア工学を学問的に整備しようとする機運が高まり、ソフトウェア開発やプロジェクトマネジメントを科学的に取り扱うようになった。System/360のプロジェクト全体を監督し、後にOS/360の特定パートの責任者となったシニアプロジェクトマネージャーのフレデリック・ブルックスは、プロジェクト中に遭遇した問題や学んだ教訓をもとにベストセラーとなった"人月の神話を執筆した""。その教訓とは主に次の2つである。" 
DOS/360.
System/360シリーズの中でもハイエンド向けのOSとしてOS/360が推奨された一方で、DOS/360はローエンド向けの非力なマシンに適した平凡なOSだった。これには一連のユーティリティプログラム、マクロアセンブラ、FORTRANやCOBOLのコンパイラなどが含まれていた。RPGがサポートされたのは後年で、最終的にはPL/Iのサブセットが追加された。また様々なファイルの構造をサポートし、そのアクセスを制御するインターフェイスが提供された。 
シーケンシャルファイルとISAMファイルは固定長又は可変長のレコードを格納でき、いずれの組み合わせにおいても複数のディスクボリュームにまたがってデータを格納できる。 
DOS/360はまたデータ通信機能としてBTAMも提供しており、今日の基準で見れば大変に使い辛いものだった。しかしBTAMはあらゆる種類の端末と通信でき、通信プロトコルが全く標準化されていなかった当時としては非常に画期的だった。 
しかしDOS/360は、System/360機のより大型なモデルで使われたOS/360と比べて制約が大きかった。 
DOS/360のユーザーはすぐにOS/360へアップグレードするだろうとIBMは考えていたが、制約があったにもかかわらず、DOS/360は世界で最も広く使われるOSになった。それには次のような理由があった。 
DOS/360は中規模の企業が購入できるSystem/360機で不都合なく動作しており、またこのクラスのユーザーたちが過去に持っていたマシンが備えていたどのOSよりもまだマシだった。この結果、その子孫であるz/VSEは2005年になっても依然として広く使われている。 
OS/360.
OS/360は様々なレベルの機能をサポートしており、共通のAPIで、より多くのコードが共通化された。PCPは同時に1つのプログラムだけしか実行できない廉価版で、MFT (一定個数のタスクを実行できるマルチプログラミング版)とMVT(タスクを無制限に実行できるマルチプログラミング版)は、後継機が発売されてから5年が経過した1970年代後半頃まで使用された。PCP、MFT、MVTの3つに分割した理由は明らかではなく、MVTが中間クラスのモデルで使用するにはメモリを喰い過ぎたのか、あるいはIBMがマルチプログラミング版をMFTとして至急リリースしなければならなかったかなどの理由が考えられる。 
PCP、MFT、MVTの3つはメモリの管理方法が異なっているが、機能的には非常に似ている(下記参照)。 
OSが256KB未満のシステムにインストールすることは当時の経験から推奨されず、これは1960年代にはどこでもよくある制約だった。 
MFT.
ユーザーはMFTをインストールする際に、メモリを最大で4本のパーティションに固定長で区切ることができ、複数のアプリケーションを同時に実行できるように設定できた。MFTバージョンII (MFT-II)は最大で52本まで上限を緩和した。 
MVT.
MVTはMFTよりもはるかに巨大かつ複雑であり、そのためSystem/360のハイエンド機で用いられた。OSは全ての未使用メモリを単一のプールとして扱い、そこから連続した領域を並列動作するアプリケーションの数に応じて必要なだけ無制限に割り当てることができた。この方式はMFTよりもはるかに柔軟で、仕組み的にメモリを効率よく利用できたが、断片化しやすい問題があった。この問題が顕在化すると、全体としてはプログラムを実行するのに十分な空き容量があるにもかかわらず、各領域が分断されてしまい必要なサイズの連続した空き領域がないという状態に陥った。 
1971年にMVTで使えるタイムシェアリングオプション(TSO)機能が追加された。バッチジョブ実行機能、ジョブの完了通知機能、レポートが印刷されるのを待たなくても結果を閲覧できる機能などを持つエディタが含まれていたほか、System/360で使われる一部のプログラミング言語で使用できるデバッガが含まれていたことから、 TSOはプログラムの開発に広く使われるようになった。TSOはTCAM (Telecommunications Access Method)で端末と通信でき、これまで使われていたQTAM (Queued Telecommunications Access Method)と置き換わった。IBMはデータ通信のスタンダードになることを見越してTCAMと名付けたが、結局TCAMはほぼTSO上でしか使われず、1970年代後半にVTAMにほぼ置き換えられた。 
TPモニタ.
System/360のハードウェアとOSは実行に何時間もかかる可能性がある極端なバッチジョブを処理できるように設計されている。そのため各件の処理時間が30秒から数分程度の処理を1日に数千件こなすトランザクション処理には適していなかった。IBMは1968年にトランザクションを処理するためにIMSをリリースし、1969年にはIBMグループの従業員がとある顧客のために開発した、よりシンプルなトランザクション処理システムであるCICSをリリースした。IMSはOS/360とその後継OSでしか利用できなかったが、CICSはDOS/360とその後継OSでも利用できた。この種の製品は長年に渡り「TP（テレプロセッシング）モニタ」と呼ばれていた。厳密に言えば、TPモニタはOSの構成要素ではなく、アプリケーションを管理するためのアプリケーションに過ぎなかった。1970年代と1980年代には複数のサードパーティ (Taskmaster、Shadow、Intercommなど）がTPモニタをリリースしてCICSと競合したが、IBMは継続的にCICSを改善してゆき、ほとんどの顧客がIBMの純正品を使うようになった。 
航空会社専用システム.
航空業界は1950年代に急成長していたが、数千件の予約をカードファイルを使って手作業で裁く手間による物理的な制約があったため伸び悩んでいた。IBMは1957年にコンピュータ予約システムを開発する契約をアメリカン航空と結び、後にこのシステムをSABREと名付けた。1960年にテスト版の稼働を開始し、1964年に全ての予約業務を引き受けるようになり、このプロジェクトでは最初から一貫してIBM 7090メインフレームが用いられた。IBMは1960年代初期には他の航空会社とも同様のプロジェクトを開始し、すぐにSystem/360用の共通予約システムであるPARSを開発することを決めた。 
SABREや初期バージョンのPARSにはアプリケーションとOSの区別がなかったが、IBMは1968年にアプリケーション部分のPARSとOS部分のACPに分割した。その後ACPはACP/TPFに改名され、また航空業界以外の業界向けに大量のオンライントランザクションを裁けるOSとしてTPF (Transaction Processing Facility)の名前で提供した。最新バージョンはz/TPFという名前になっている。 
IBMの汎用OS(DOS/360やOS/360)は1960年代中盤までバッチ処理に特化しており、大量の短いトランザクションを高速に捌くことができず、汎用OSで動作するトランザクションモニタのIMSやCICSであっても、数百便のフライトの予約を数千の旅行代理店から受け付けるのに十分な処理速度がなかったことから、IBMはACPやその後継版を開発した。 
最後のパブリックドメイン版であり無料版のACPはACP 9.2で、1本のミニリールテープで配布され、48インチ幅の棚一列がいっぱいに埋まるほどの数十冊のマニュアルが付属し、IBM 3340のディスクドライブに展開でき、ACPシステムの全機能が完璧に動作する形で提供された。 
ACPはマスターカード®などの銀行発行カードや、金融機関向けのアプリケーションを主なユーザーとして想定していたが、航空業界用の予約システムにも利用でき、当時としてはACPは多目的な汎用OSだった。 
プログラムの開発や、オンライン経由で並行してファイルをメンテナンスしたりするのに使える、VS1という(必要であればVS2も可能な)バーチャルOSをゲストとして利用できるハイパーバイザーモジュール(CHYR)が後期のACPに統合され、まさに汎用的なOSだった。 
一部では本番環境もハイパーバイザーモードのVS2で運用され、IMS DBも搭載されることがあった。 
System/360 Model 20.
Model 20はSystem/360の周辺機器の一部を利用できたことから、そのシリーズの1モデルに分類されたが、これは16ビット機であり、他のSystem/360シリーズのマシンとはプログラムの完全な互換性がなかった。ドイツにあるIBMの複数の研究所が360/20の複数の構成に対応するよう調整した3つのOS(ディスクを搭載して最小メモリ容量が12KBのDPS、ディスクがなくテープを搭載して最小メモリ構成が8KBのTPS、パンチカード機で最小メモリ構成が4KBのCPS)を開発した。IBMは小規模事業者向けにSystem/3シリーズを後に発売し、360/20とはアーキテクチャが異なっていたことから、IBMのメインフレーム機とは周辺機器が異なる360/20の後継機は開発されなかった。 
System/360 Model 44.
System/360の周辺機器を使える別アーキテクチャのプロセッサ。360/44は地質学や気象学などのデータ分析に用いられる浮動小数点計算機能を搭載しており、科学技術計算に適した設計だった。内部のアーキテクチャが他機種と異なり、特定の用途に特化した設計であったことから、360/44にはPS/44という専用のOSが提供された。Model 44にはSystem/360が持つ命令の一部がなかったが、命令をエミューレーションする機能があり、OS/360を実行することが可能だった。360/44とPS/44の直接的な後継機は作られなかった。
System/370と仮想メモリOS.
1970年に発表されたSystem/370は機能的にはSystem/360と同じだったが、System/360の同価格帯のモデル構成と比較して4倍の処理速度があった。1972年にIBMが発表したSystem/370 Advanced Functionsは仮想メモリの対応が目玉機能で、既に販売したSystem/370に後付けで追加することが可能だった。故にIBMは仮想メモリに対応した強化版OSの販売にも力を入れた。 
新OSのほとんどは旧OSと区別するため名前の最後に/VSを付けていた。VSはバーチャルストレージ(仮想ストレージ)の略で、メモリという言葉にはコンピュータがデータを忘れて紛失してしまうような印象を与える恐れがあったことから、IBMは意図的にバーチャルメモリ(仮想メモリ)という用語を避けていた。 
IBMが販売するの今日のメインフレームが搭載するOSの全て(z/TPFを除く)はこの時発表されたSystem/370 Advanced Functionsの子孫であり、z/TPFはIBMが当初航空会社向けに航空機の予約を大量に捌くべく開発したACPの子孫である。 
DOS/VS.
DOS/VSはDOS/360の後継OSであり、仮想メモリを含む同様の機能強化があった。仮想メモリの他にもDOS/VSには下記のような機能の強化があった。 
DOS/VSは後に大幅なアップグレードを実施した。DOS/VSEとVSE/SPが1980年代に、VSE/ESAが1991年に、z/VSEが2005年にリリースされた。 
OS/VS1.
OS/VS1はMFTの後継OSであり、仮想メモリを含む同様の機能強化があった。IBMは1983年までOS/VS1のマイナーチェンジを続け、1984年にサポートの終了を宣言した。IBMがSystem/370用に開発したOSの中で現代的な最新機能を持つ後継OSがないのはOS/VS1とTSS/370だけである。 
"Special Real Time Operating System"（SRTOS, 特殊用途用リアルタイムOS）であるProgramming RPQ Z06751は、リアルタイム処理に対応するよう拡張されたOS/VS1の亜種である。電力会社の電力管理や石油精製プラントなどの業界をターゲットにしていた。 
OS/VS2とMVS.
OS/VS2リリース1(SVS)は仮想メモリ機能を搭載したMVTの代替OSで、数多くの機能強化があったが、全体的なアーキテクチャは維持された。しかしIBMが1974年にOS/VS2リリース2として発表したOSは、元のOS/VS2 SVSと上位互換性を保ったまま内部が大幅に書き換えられた。システムで最も顕著な拡張は複数の仮想メモリ空間に対応したことだった。これまでは複数のアプリケーションが1つの仮想メモリ空間を共有するのが常識だったが、新OSの仮想メモリ機能ではアプリケーションごとに別々のメモリ空間が割り当てられた。この新システムはユーザーの間ですぐにMVS (マルチ仮想ストレージ)と呼ばれるようになり、元のOS/VS2はSVS (シングル仮想ストレージ)と呼ばれるようになった。IBMはこの用語を逆輸入して自社の後継OSにMVS/～の名前を付けるようになった。 
MVSに搭載された主な新機能には他にも次のようなものがあった。メインのカタログを必ずVSAMカタログとして扱う。対称型マルチプロセッシングのサポート(2つ以上のCPUが同じメモリとOSのコピーを共有する)。優先度の高いジョブのパフォーマンスを低下させることなくユーザーがプロセスを追加でロードできるシステムリソースマネージャ(後のバージョンでワークロードマネージャに改名)。 
IBMはMVSを数回アップグレードした。MVS/SE、MVS/SPバージョン1、MVS/XAを1981年に、MVS/ESAを1985年に、OS/390を1991年に、z/OSを2001年にリリースしている。 
VM/370.
VM/370は会話型モニターシステム (CMS)というシングルユーザー用のシステムに仮想マシン機能を組み合わせたもので、CMSのコピーを各ユーザーの仮想マシン上で実行できるタイムシェアリング機能がこれにより提供された。CP/CMSはこの構成の直系の子孫である。仮想マシン機能によりソフトウェアの開発者は仮想マシンの1つで開発作業を継続しながら別の仮想マシンを使ってテストすることができるようになり、CMSタイムシェアリングシステムはプログラムの開発に広く使われた。 
VM/370はその後アップグレードが繰り返された。VM/SEPP (Systems Extensions Program Product)、VM/BSEPP (Basic Systems Extensions Program Product)、VM/SP (System Product)、VM/SP HPO (High Performance Option)、VM/XA MA (Extended Architecture Migration Aid)、 VM/XA SF (Extended Architecture System Facility)、VM/XA SP (Extended Architecture System Product)、VM/ESA (Enterprise Systems Architecture)、z/VMがリリースされた。またIBMはVMやその後継OS向けに、OSだけしか使えない特権命令をゲストOSに代わって実行するハイパーバイザーのエミュレーション処理を高速化する、マイクロコードアシスト機能もオプションで提供した。CPハイパーバイザーをさらに高速化するStart Interpretive Execution(SIE)命令を追加したこともIBMが370/Extended Architectureに加えた機能強化だった。