OS/360(正式名称はIBM System/360 Operating System) [ 1 ] [ 2 ]は、IBMが当時新製品だったSystem/360メインフレームコンピュータ向けに開発した、現在は廃止されたバッチ処理オペレーティングシステムで、1964年に発表されました。IBM 7090/7094向けのIBSYS/IBJOBおよびInput/Output Control System(IOCS)パッケージ、そしてIBM 1410/7010プロセッサ向けのPR155 Operating Systemの影響を強く受けています。コンピュータハードウェアに少なくとも1つの直接アクセス記憶装置を搭載することを要求した、最も初期の[ NB 1 ]オペレーティングシステムの1つでした。
OS/360自体は既にサポート終了となっているものの、仮想ストレージMVSや64ビット版z/OSといった後継オペレーティングシステムは、 2023年現在も稼働し続けている。また、OS/360とのアプリケーションレベルでの互換性を維持する。
IBMは、同じテープから生成され、コードの大部分を共有する3つの異なるレベルのOS/360を発表した。IBMは最終的にこれらのオプションの名称を変更し、いくつかの重要な設計変更を行った。
ユーザーは「Big OS」や「OS/MFT」といったニックネームをよく付けていたが、これらの名称はいずれもIBMによって公式に認められていなかった。
IBMは、OS/360をテープ上のライブラリセットとして提供し、インストール時にDASDにリストアしてシステム生成を実行する必要がありました。IBMはまた、インストール時にIBMが通常オブジェクトコードとして提供するモジュールを変更およびアセンブルするために使用できるオプションのソーステープセットも提供しました。さらに、IBMは基本プログラムマテリアルと後続サービスのアセンブリリストを含むマイクロフィッシュを提供しました。 [ NB 3 ] IBMは、ライセンスソフトウェアに対してオブジェクトコードのみ[ 3 ](OCO)ポリシーを適用するまで、ソースコードの配布を続けました。
System/360ハードウェア向けのもう一つの主要なオペレーティングシステムはDOS/360でした。
OS/360はパブリックドメイン[ 4 ]であり、無料でダウンロードできます。実際のSystem/360ハードウェア上で動作するだけでなく、WindowsだけでなくLinux、Solaris、macOSなどのほとんどのUNIXおよびUnixライクなシステム上で動作する無料のHerculesエミュレータ上でも実行できます。Hercules上で実行できる、事前に生成されたOS/360 21.8システムを提供するOS/360ターンキーCDも存在します。
IBMは当初、System/360にはバッチ指向のオペレーティングシステム[ NB 4 ]であるOS/360 [ 2 ]のみを搭載し、 32 KiBという小さなマシンでも動作するようにすることを意図していた。また、 System/360モデル67向けに、 別のタイムシェアリングオペレーティングシステムTSS/360を提供する予定だった。IBMはOS/360のメモリ使用量目標を達成できず、限定的な生産でも44 KiBが必要となった。IBMが最終的に他のよりシンプルなバッチ指向のオペレーティングシステムを開発することにした理由については、少なくとも2つの説明がある。
IBM は System/360 ハードウェアの販売が崩壊するのを防ぐために一連の暫定措置を導入しました。最初はBasic Programming Support (BPS) とBOS/360 (Basic Operating System、8K バイトのメモリを搭載した最小のマシン向け)、次にTOS/360 (Tape Operating System、少なくとも 16K バイトのメモリとテープ ドライブのみを搭載したマシン向け)、そして最後にDOS/360 (Disk Operating System) です。これは主流のオペレーティングシステムとなり、今日広く使用されているVSE nの祖先となっています。[ 6 ] [ 7 ]
IBMはOS/360の3つのバリアントをリリースしました。1966年に、一度に1つのジョブしか実行できない暫定的なPCP(Primary Control Program)、中級機向けのMFT( Multiprogramming with Fixed number of Tasks)、そして最上位機向けのMVT(Multiprogramming with Variable number of Tasks)です。 [ 8 ] MFTとMVTは、後継機が発売されてから10年後の少なくとも1981年まで使用されました。 [ 9 ] [ 10 ] MFTとMVTの分離は、ストレージの制限とスケジューリングの制約によって生じました。当初、IBMはMFTとMVTは単に「OS/360制御プログラムの2つの構成」であると主張していましたが、後にIBMはこれらを「OS/360の別々のバージョン」と表現しました。[ 2 ] [ 11 ]
IBMは当初、OS/360をアセンブリ言語で記述しました。その後、IBMはPL/Iから派生した新しい言語であるBasic Systems Language(BSL)[ 12 ]でOS/360コードの一部を記述しました。リリース20のTSOコードの大部分はBSLで記述されています。
TSS/360 は開発が遅れ、信頼性も低かったため IBM は開発を中止したが、その後 IBM は TSS/370 PRPQ の 3 つのリリースを提供した。この頃にはCP-67 は十分に安定して動作していたため、IBM は少数の大口顧客向けにタイムシェアリング設備として保証なしで提供していた。[ 13 ]
これら 3 つのオプションは非常に似た機能を提供していたため、アプリケーションをそれらの間で移植するには通常最小限の労力しか必要ありませんでした。ほとんどの[ NB 5 ] IBMプログラム製品、アプリケーション、ユーティリティソフトウェアの同じバージョンが両方で動作しました。以下のテキストでは、PCP、MFT、MVT は、設計上の変更がいくつかあったものの、元のSSS、MSS、MPSの新しい名前として扱われています。また、テキストでは M65MP と MVT を区別していません。
公式には、PCP、MFT、MVT は OS/360 とは別のオペレーティングシステムではなく、[ 2 ]インストール時の構成オプションにすぎません。つまり、今日の言葉で言えば、OS の核とスケジューラの 3 つの異なるバリアントです。しかし、動作やメモリ要件が大きく異なるため、ユーザーは一般的にこれらを事実上別のオペレーティングシステムとみなし、それぞれ「初期の OS/360」、「OS/MFT」、「OS/MVT」と呼んでいます。MFT は、メモリの管理方法において MVT と大きく異なります。MFT をインストールする際、顧客はシステム生成(SysGen) で固定数の パーティション[ NB 6 ]を指定します。パーティションとは、アプリケーション プログラムを同時に実行できる固定境界を持つメモリ領域のことです。[ 11 ]
プライマリ制御プログラム (PCP) は、メモリ容量の小さいマシン向けに設計されました。パーティションが 1 つだけのMFT [ NB 7 ]と似ています。経験上、メモリ容量が 128 KiB 未満のシステムに OS/360 をインストールすることは推奨されませんでしたが、メモリ容量が 48 KiB のようなはるかに小さいマシンでも限定的な運用は可能でした。IBM は OS/360 の最終リリースで PCP オプションを削除し、より多くのメモリを必要とする MFT II と MVT のみを残しました。
システム依存のマクロ展開では、SYS=MIN とも呼ばれる。
固定タスク数マルチプログラミング(MFT)は、OS/360の目標構成である可変タスク数マルチプログラミング(MVT)が1967年に利用可能になるまでの暫定的な手段として考案されました。MVTの初期バージョンには多くの問題があったため、よりシンプルなMFTが長年にわたって使用され続けました。1972年に仮想メモリを搭載した新しいSystem/370マシンを導入した後、IBMはMFT 2をOS/VS1へと発展させました。これがこの系統の最後のシステムとなりました。
MFTの最初のバージョン[ 14 ]は、PCPとコードとアーキテクチャの多くを共有しており、パーティションは4つに制限されていました。複数のパーティションを実行するのは非常に面倒でした。多くのインストールでは、複雑さを軽減するためにヒューストン自動スプーリング優先度(HASP)が使用されました。
MFT バージョン II (MFT-II) [ 15 ] は、MVT と制御プログラムおよびスケジューラのコードをより多く共有しており、実行の柔軟性が大幅に向上しました。パーティションの最大数は 52 に増加しました。
MFT-IIの後の改良版ではサブタスク機能が追加され、タスクの数は固定ではなくなったものの、パーティションの数は依然として制限事項として残った。
経験上、256 KiB未満 のメモリを搭載したシステムにMFTをインストールすることは推奨されないことが分かった[ 16 ]。 1960年代には、これはかなり大きな容量だった。
システム依存のマクロ展開では、SYS=INT とも呼ばれる。
可変タスク数によるマルチプログラミング (MVT) [ 17 ]は、OS/360の制御プログラムで利用可能な 3 つの構成の中で最も高度なものであり、最終リリースで利用可能な 2 つの構成のうちの 1 つでした。 [ 18 ] MVT は System/360 ファミリーの中で最大のマシン向けに設計されていました。1964 年に導入されましたが、実際に利用可能になったのは 1967 年になってからです。初期バージョンには多くの問題があり、よりシンプルな MFT が長年にわたって使用され続けました。経験上、512 KiB 未満のメモリを搭載したシステムに MVT をインストールすることは推奨されませんでした。
MVT は、オペレーティングシステムで使用されていないすべてのメモリを単一のプールとして扱い、そこから無制限の数の同時実行アプリケーション プログラムおよびシステム プログラムが必要に応じて連続した領域を割り当てることができました。 [ NB 8 ]この方式は MFT よりも柔軟で、原理的にはメモリをより効率的に使用しましたが、断片化が発生しやすいという問題がありました。しばらくすると、プログラムを実行するのに十分な予備メモリが合計であっても、それが別々のチャンクに分割され、どれも十分な大きさではないという状況になることがありました。[ 11 ] System/360 にはメモリ再配置ハードウェアがなかったため、メモリ圧縮を使用して断片化を減らすことはできませんでした。Rollout /Rollin と呼ばれる機能を使用すると、実行中のジョブを二次ストレージにスワップアウトして、そのメモリを別のジョブで使用できるようにすることができました。ただし、ロールアウトされたジョブは、元のメモリ位置が再び使用可能になったときに、元のメモリ位置にロールインする必要がありました。 [ 19 ]
1971年、 MVTで使用するためのタイムシェアリングオプション(TSO)がリリース20.1の一部として追加されました。TSOは、エディタ、バッチジョブの送信機能、完了通知、印刷レポートを待たずに結果を表示する機能、System/360で使用される一部のプログラミング言語のデバッガを提供したため、プログラム開発で広く使用されるようになりました。OS/360のTSO [ NB 9 ]は、テレコミュニケーションアクセス方式(TCAM)を使用して端末と通信しました。TCAMという名前は、IBMがデータ通信の標準アクセス方式になることを期待していたことを示唆していますが、実際にはOS/VS2のTCAMはほぼ完全にTSOに使用され、1970年代半ばから後半にかけて仮想テレコミュニケーションアクセス方式(VTAM)にほぼ置き換えられました。
システムに依存する一部のマクロの呼び出しでは、SYS=VMS とも呼ばれます。
モデル65マルチプロセッシング(M65MP)はMVTの派生版です。マルチシステムモードの360/65上で動作します[ 20 ]。M65MPは、Set System Mask(SSM)命令の使用をトラップし、無効化されたコードを2つのCPU間でシリアル化します。M65MPシステムは、ほとんどの場合、他のMVTシステムと同じ動作とインターフェースを備えています。
キーワードパラメータSYS=VMSには、M65MPと単一プロセッサMVTが含まれていました。
PCP、MFT、MVTは、アプリケーションプログラムの観点から見ると、同様の機能を提供している。
OS/360は、PCP、MFT、MVT向けに同じ言語、サービス補助機能、ユーティリティを提供します。OS/VSシステムでは、ソート/マージ機能とすべての言語プロセッサが削除されましたが、新しいアセンブラIFOX00(アセンブラXF)が提供されています。IBMは、ほとんどのフリー言語プロセッサとその他のサポートプログラムの一部を置き換えるプログラム製品をリリースしました[ NB 11 ]。OS/360は以下をサポートしています。
一部の機能はMFTおよびMVTでのみ利用可能でした。
1970 年にSystem/370が発表されたとき、System/360 とほぼ同じ機能を提供していましたが、プロセッサ速度は同価格帯の System/360 CPU の約 4 倍でした。[ 21 ]その後、1972 年に IBM はSystem/370 Advanced Functionsを発表しました。その主な内容は、将来の System/370 の販売には仮想メモリ機能が含まれること、そしてこれは既存の System/370 CPU にも後付けできることでした。そのため、IBM は仮想メモリの使用をサポートできる強化されたオペレーティングシステムを提供することにもコミットしました。[ 22 ] [ 23 ]
IBMはS/370サポートのためにOS/360 SYSGENオプションを提供したが、これはDATをサポートしていなかったものの、以下の機能をサポートしていた。
OS/VS1はMFTの後継であり、RESや仮想メモリなどいくつかの追加機能を備えた同様の機能を提供します。VSAM(下記参照)は当初、独立コンポーネントリリース(ICR)として提供され、後にOS/VS1ベースに統合されました。[ 11 ]
IBMは、OS/VS1が(1970年代としては)中規模のワークロード、すなわちバッチ処理アプリケーションのみで構成され、OS/360のスプーリング機能を置き換えるバッチジョブ管理システムであるジョブエントリサブシステム1(JES1)を介して固定数のオペレーティングシステムパーティション内で実行されることを意図していました。しかし、OS/VS1は、IBMのCICSトランザクション処理モニタをパーティション内のジョブとして実行することで、対話型アプリケーションとユーザーをサポートすることができ、実際によくそうしていました。 [ 24 ]
IBMは1983年までOS/VS1の小規模な機能強化版をリリースし続け、1984年にはこれ以上のリリースは行わないと発表した。AIX /370、AIX/ESA、DPPX、IX/370、OS/VS1、TSS/370は、現代の派生版を持たない唯一のSystem/370オペレーティングシステムである。
OS/VS1 基本プログラミング拡張機能 (BPE)、製品番号 5662-257 は、3380 ダイレクトアクセスストレージなどの 1980 年代の新しいハードウェア、および VTAM と VM/VTAM 通信ネットワークアプリケーション (VCNA) 間の VM ハンドシェイクをサポートします。
OS/VS2 リリース 1 は、MVTに仮想メモリと VSAM を加えただけのものでした (下記参照)。[ 11 ]このバージョンは、OS/VS2 リリース 2 (別名 MVS、Multiple Virtual Storage) が導入された際に、最終的にOS/VS2 SVS (Single Virtual Storage) と 改名されました。SVS は MVT から MVS への足がかりとして意図されており、今日では歴史的な興味の対象となっています。
1974 年に IBM は OS/VS2 Release 2 と称するものをリリースしましたが、これは実際にはOS/VS2 Release 1 と上位互換性のある新しいオペレーティングシステムでした。この新しいシステムのスーパーバイザは、BSL の新しい方言であるPL/Sで大幅に書き直されました。[ 25 ] [ 26 ] BSL と PL/S は、コンピュータ全体を制御するために必要な特権命令を含むアセンブリ言語コードを転写するように設計された拡張機能を備えたPL/Iの方言でした。OS ディスパッチャやIOSなど、時間制約のある OS コンポーネントは、特にその他多くのコンポーネントと同様に、アセンブリ言語でコーディングされたままでした。アセンブリ言語は、古い OS/360 IEUASM アセンブラから IFOX00 アセンブラ[ NB 13 ]で OS/VS 用に拡張されていました。
新バージョンの最も注目すべき特徴は、複数の仮想アドレス空間をサポートしていたことです。異なるアプリケーションは同じ仮想アドレス範囲を使用していると考えていましたが、新システムの仮想メモリ機能はこれらを異なる範囲の実メモリアドレスにマッピングしていました。各アプリケーションのアドレス空間は、オペレーティングシステム(すべてのジョブで共有されるインスタンス)、各アプリケーション固有のアプリケーション領域、ジョブ間通信を含むさまざまな目的で使用される共有仮想領域の 3 つの領域で構成されていました。IBM は、アプリケーション領域が常に少なくとも 8MB であることを約束しました。このアプローチにより、MVT および SVS に存在していたメモリ断片化のリスクが排除され、システムの内部セキュリティが向上しました。[ 11 ]新システムはすぐに「MVS」(Multiple Virtual Storage)として知られるようになり、元の OS/VS2 は「SVS」(Single Virtual Storage)として知られるようになり、IBM 自身もこの用語を受け入れ、MVS の後継システムに「MVS/ xxx」というラベルを付けました。[ 27 ]
MVSはワークロード管理に新しいアプローチを導入し、ユーザーが優先度の高いバッチジョブのパフォーマンス目標を定義できるようにしました。これにより、ユーザーは最優先ジョブのパフォーマンスに影響を与えることなく、以前よりも多くの作業をシステムに与えることができるようになりました。[ 28 ]
MVSは、IBMが「密結合マルチプロセッシング」と呼んだものをサポートする、 System/370 [ NB 14 ]上でのIBM初の主流オペレーティングシステムでした。これは、2つ(後にIBMメインフレームでは最大12つ、Amdahlメインフレームでは最大16つ)のCPUが同じメモリ(およびオペレーティングシステムと周辺機器の単一のコピー)に同時アクセスを共有し、より高い処理能力と、1つのCPUが故障した場合の段階的な性能低下を実現しました(幸いなことに、システムの稼働時間が数時間から数日、そして数年にまで延びるにつれて、CPUの故障はますますまれな事象となりました)。
当初、MVS にはJES2 (Job Entry Subsystem 2)と呼ばれるジョブ キューマネージャが付属していました。これは HASP ( Houston Automatic Spooling Priority ) の流れを汲み、他の場所に配置されたワークステーションからのリモート ジョブ エントリーもサポートしていました。JES2 は 1 つの CPU (密接に結合されたマルチ プロセッサ システムである可能性がある) のジョブのみを管理できます。1976 年に IBM は別のオプションとしてJES3 (Job Entry Subsystem 3) を提供しました。これは ASP ( Attached Support Processor ) の流れを汲み、1 つの CPU で複数の物理的に異なる CPU に作業を供給する単一のジョブ キューを管理できるため、1 つのオペレータ コンソールでそれらすべての CPU の作業を管理できます。[ 29 ]注: JES1 は OS/VS1 のジョブ キュー マネージャでした (上記参照)。
IBMは、仮想ストレージアクセス方式(VSAM)が、以前のシーケンシャル、インデックス付き、および直接アクセス方式の改良版を提供することで、これらの方式に取って代わることを期待していました。[ 30 ] [ 31 ]
これらのVSAMフォーマットは、 IBMのデータベース管理システムであるIMS/VSおよびDB2(通常、実際のデータ格納にはESDS、インデックスにはKSDSが使用される)の基盤となった。
VSAM は、カタログ機能の新しい実装も提供しており、アプリケーションはどのディスク ドライブにあるかを知る必要なく、名前でファイルにアクセスできます。VSAM データセットは、使用する前に VSAM カタログで定義する必要があり、VSAM 以外のデータセットも VSAM カタログにリストできます。MVS マスター カタログはVSAM カタログである必要があります。 [ 31 ] カタログは、元々 OS/360 では CVOL の形式で提供されていました。MVS では、VSAM 用に別のカタログ構造が追加され、その後 IBM は ICF カタログと呼ばれる 3 番目のタイプのカタログを追加しました。[ 33 ] (IBM は、Y2K に準拠していないため、2000 年以降 CVOL および VSAM カタログのサポートを終了しました。そのため、z/OS では ICF カタログのみがサポートされています。) [ 34 ]
1974年、IBMはシステムネットワークアーキテクチャ(SNA)を発表しました。これは、主に通信回線をより効率的に利用することで、大規模な端末ネットワークの運用コストを削減することを目的としていました。ただし、メインフレームソフトウェアコンポーネントであるVTAMはこれらのオペレーティングシステムでしか利用できないため、SNAはIBMの仮想メモリオペレーティングシステムでのみ利用可能です。
1977年、IBMはMVS/System Extensionsを発表しました。これはMVSのパフォーマンスを向上させ、機能を追加したプログラム製品(つまり、追加料金が必要でした)です。 [ 35 ]
オリジナルのMVSの派生版は、System/360、 System/390、zSeriesの最新の派生版でも引き続き使用されています。System/390ではOS/390に名称変更され、zSeriesの64ビット版はz/OSと名付けられました。
ページの都合上、このセクションでは OS/360 の MVT オプションに焦点を当てます。PCP と MFT は非常に似ており、名称の変更と若干の違いがあるのみです。OS /VS1とSVS はMFT II と MVT とほぼ同じ構造ですが、MVS はMVT のロジックを多く引き継いでいるものの、大幅な機能強化が施されており、これについては別の記事で詳しく説明します。この記事では、IBM がメモリではなくストレージという用語を使用していることに従います。
OS/360 は、他のシステムにおける軽量プロセスやスレッドに相当するタスクにプロセッサを割り当てます。各タスクには、タスク制御ブロック(TCB) と要求ブロック(RB)のスタックがあります[ NB 15 ]。タスクはディスパッチ可能かディスパッチ不可か[ NB 16] のいずれかであり、RB は待機中か待機していないかのいずれかです[ NB 17 ] 。ディスパッチャは、現在の RB が待機していない、最も優先度の高いディスパッチ可能なタスクを選択します。
MVSは、プロセッサをアドレス空間(プロセスに相当)と、そのアドレス空間内のサービス要求ブロック(SRB)およびタスクに割り当てます。各アドレス空間には、アドレス空間制御ブロック(ASCB)、SRBのキュー、およびTCBのキューがあります。
OS/360 では、すべてのコードからすべてのストレージが参照可能ですが、フェッチ保護により、特権のないコードによる一部の制御ブロックやジョブ間のアクセスが制限される場合があります。MVT のメイン ストレージは、実ストレージの下部にあるシステム(固定) 領域、上部にある共通領域、中央にあるプライベート領域に分割されています。これらには、次の領域が含まれます。
SYS1.NUCLEUS(IEANUCxx)これは、通常 xx が 01 である場所 0 にあるストレージのセクションで、 からロードされます。モデル 65 MP (M65MP) の場合、各プロセッサごとにプレフィックス (場所 0-4095) の別々のコピーがあります[ 36 ] : 72絶対アドレスという用語は、プレフィックスの後に実際にメモリに送信されるアドレスを指し、実アドレスという用語は、プレフィックスが適用される前のアドレスを指します。 Nucleus には、割り込みハンドラ、制御ブロック、タイプ 1 およびタイプ 2 SVC ルーチン、SVC トランジェント領域、非特権コードから直接呼び出すことができるルーチン、および特権コードからのみ呼び出すことができるルーチンが含まれています。「これは、最も高い物理アドレスにあるストレージセクションです。これには、
SVSは、システム領域が実ストレージではなく仮想ストレージの上部と下部にある点、Nucleusが仮想=実(V=R)ストレージにある点、プライベート領域に各リージョンごとにローカルシステムキュー領域(LSQA)が含まれている点、LPAが以下のように分割されている点を除いて、SVSと似ています。
MVSでは、すべてのアドレス空間がシステム領域[ NB 19 ]を共有しますが、プライベート領域は共有しません。MVSはさらに以下を追加します。
MVS/XA以降では、システム、プライベート、および共通領域が16 Mi B (2 24バイト)行、およびその間の拡張領域16 Mi B と2 Gi B (2 31バイト)。
z/OSでは、ストレージ レイアウト[ 37 ]は MVS/XA、MVS/ESA、OS/390 と同様です。ストレージは2 Gi B バーは、バーの下にあるストレージとは異なるサービスによって管理されます。
OS/360 は、システム ジョブ キューを SYS1.SYSJOBQE に 176 バイトのレコードとして格納します。[ 38 ] [ 39 ] JCL およびメッセージに使用される制御ブロックを除き、OS/360 の SPOOL 処理では、ジョブ キュー上のデータセット ブロック (DSB) が指す通常の一時的な DASD データセットを使用します。
ジョブには、カード、DASD、またはテープ上のインストリームデータからリーダー/インタープリタによって作成された関連付けられたシステム入力(SYSIN)データセットがあり、ジョブによって作成されるシステム出力( SYSOUT ) ファイル。SYSOUT という用語には、ジョブに関連付けられたメッセージも含まれます。ジョブは複数の出力クラスに SYSOUT を持つことができ、システム出力ライターは各出力クラスを個別に処理します。[ 38 ] [ 39 ]
OS/VS2 R1 (SVS)のサポートは基本的に同じです。プログラムAttached Support Processor (ASP) とHouston Automatic Spooling Priority (HASP) [ 40 ]は、OS/360 と SVS のスプール機能を乗っ取り、独自の SPOOL メカニズムで SYSIN および SYSOUT データセットを維持します。
OS/VS1では、SYSINおよびSYSOUTデータセットはジョブエントリサブシステム1 (JES1)によって管理され、多くのオペレータコマンドはそのまま維持されますが、SPOOLメカニズムは置き換えられます。
MVS 、OS/VS2 R2以降では、SYSINおよびSYSOUTデータセットはジョブエントリサブシステム(JES2またはJES3)によって管理され、HASPまたはASPのオペレータコマンドの多くが保持され、独自のスプールメカニズムが提供されます。
オペレータが最初に を選択するとLOAD、システムはREAD IPL選択されたデバイスにコマンドを送信し、シリンダ 0、トラック 0、レコード 1 から 24 バイトを読み取り、ストレージ ロケーション 0 に格納します。[ 36 ] : 22バイト 8-23 を読み取り、ブートストラップ レコードに転送します。[ 41 ]シリンダ 0、トラック 0、レコード 2 は、読み取り、IPL ローダーに転送します。IPL ローダーは、初期ハウスキーピングを行い、要求された核を特定し、再配置を使用してそれをロードします。割り込みハンドラ csect は常にロケーション 0 にあり、核初期化 csect は常に最後にあるため、最終的に破棄できます。核初期化プログラム (NIP) は、さまざまなシステム コンポーネントを初期化します。
NIPは当初、必要なサービスを提供する必要があります。しかし、さまざまなOS機能を初期化するにつれて、標準サービスの使用を開始します。例えば、ボリューム目次(VTOC)からデータセット制御ブロックOBTAIN(DSCB)を読み取るマクロを使用します。
NIPはデータセットからメンバーを読み取り、SYS1.PARMLIBさまざまな運用データを取得します。これらのメンバーは、デフォルト設定、オペレーターによる指定、または他のメンバーのパラメーターによって指定できます。
NIPは最終的にプライベート領域からマスタースケジュール領域を作成し、IEEVIPLに転送してマスタースケジューラと通信タスクを初期化し、システム初期化を完了します。
OS/360はバッチジョブに加えて、バッチジョブと同様の方法で処理するいくつかのカテゴリの作業をサポートしています。いずれの場合も、システムはJCLを処理し、領域を割り当て、デバイスを割り当て、ジョブステッププログラムを開始する必要があります。バッチジョブの場合、リーダー/インタープリタは外部デバイスからJCLを処理します。STARTコマンド、 MOUNTコマンド、およびTSOLOGONの場合、システムはカタログ化されたプロシージャを呼び出すJCLを生成します。
ジョブのような各作業単位ごとに、リーダー/インタープリタはJCLをSYS1.SYSJOBQE(システムジョブキュー)上の制御ブロック(テーブル)に変換し、イニシエータはその制御ブロックを使用してジョブを実行します。以下の詳細はMVTおよびSVSに関するものです。PCPはスプーリングをサポートしておらず、MFTパーティションの処理はMVT領域の処理とは若干異なります。
リーダー/インタープリタ(R/I)は、システムからの呼び出し方に応じて、2つの機能を実行します。
OS がマスター スケジューラを初期化したり、MOUNTコマンドを処理したり、TSOSTARTを処理したりすると、システムはカタログ化されたプロシージャを呼び出す JCL を生成し、R/I を呼び出し、続いてイニシエータを呼び出します。LOGON
リーダープロシージャの場合、R/I は入力ストリーム内のジョブごとにジョブキュー上に個別の入力ジョブエントリを作成します。R/I は明示的な DD *、暗黙的な DD *、および明示的な DD DATA インストリーム (SYSIN) データセットを認識し、ジョブ名とタイムスタンプを含む特別な DSNAME を使用して、それぞれに個別の DASD データセットを割り当てます。
イニシエータは、システムからの呼び出し方に応じて、2つの機能を実行します。
マスター スケジューラの開始、コマンドの処理、およびTSO のLOGON処理のために、システムはイニシエータを呼び出し、R/I によって構築されたばかりのジョブを、新たに取得した領域で実行します。
バッチジョブの場合、イニシエータは入力キューから作業を選択し、各ステップの領域を取得し、JCLで要求された場合はステップをスキップしながら、ステップを順番に実行します。
システム出力ライターは、ジョブキューからジョブを取得し、SYSOUTデータを通常はプリンタ、カードパンチ、またはテープドライブに書き出します。出力クラスなどに基づいてジョブを選択します。
OS/360には、通信ベクタテーブル(CVT)と呼ばれる制御ブロックがあり、そこには他の制御ブロックや各種ルーチンへのポインタが格納されています。OS/360のマクロ命令の中には、CVTや他の制御ブロック内のフィールドを参照するものがあります。
OS/360には、一部の制御ブロックのdsectマッピングを提供するマクロがありますが、多くのマクロでは、マッピングマクロ内の名前ではなく、オフセットがハードコードされています。
OS/360のサービスは通常、レジスタ1にパラメータを持ちます。レジスタ0と1を使用するものもあれば、レジスタ0、1、15を使用するものもあります。
OS/360のサービスマクロには、主に次の3つの形式があります。
重要なサービスの多くはSVCルーチンで実装され、レジスタ2~14を保持します。その他のサービスは、システム制御ブロック内のエントリアドレスを持つ直接呼び出し可能なサブルーチンとして実装され、レジスタ13が標準保存領域を指している必要があります。これらのサブルーチンは通常、レジスタ2~13を保持します。いずれの場合も、終了時にレジスタ15には通常、戻りコードが格納されます。多くのサービスは、レジスタ0と1に追加データを返します。
OS/360は、待機可能なイベントを表すイベント制御ブロック(ECB)を用いたシリアル化に大きく依存しています。ECBには、イベントの完了コード、またはそのイベントを待機している要求ブロック(RB)のアドレスが含まれます。WAITマクロは、指定されたイベントが発生するまでタスクを待機状態にします。POSTマクロは、ECBを完了としてマークし、完了コードをECBに格納し、待機中のRBが存在する場合は待機カウントをデクリメントして、関連付けられたタスクをディスパッチする可能性があります。
MVSは他の同期方法も追加している。
OS/360 は、キュー名 ( qnameまたは major) とリソース名 ( rnameまたは minor) で識別されるリソースへのアクセスをシリアル化するためにENQとDEQを使用します。ENQ マクロは、要求されたすべてのリソースが利用可能になるまでタスクの実行を遅延させます。DEQ マクロは、ENQ によって以前に要求された名前付きリソースを返します。DEQ は、対応する ENQ 要求によって取得されたすべてのリソースを解放する必要はありませんが、後続の DEQ 要求は最終的にそれらすべてを解放する必要があります。
MVSは他のシリアル化方法も追加しています。
OS/360には少なくとも1つのオペレーターコンソールが必要です。サポートレベルは2段階あります。
書き込みオペレーター (WTO) または返信付き書き込みオペレーター (WTOR) によって発行される各メッセージには、1 つ以上のルーティング コードが関連付けられています。オペレーターは、コンソールに特定のルーティング コードのみを表示するように制限できます。この典型的な使用例としては、コンソールをテープライブラリに配置し、そのコンソール上のテープライブラリアンに関連するメッセージのみを表示することが挙げられます。特別なルーティング コード 7 を使用すると、メッセージ テキストがジョブのメッセージ ログに含まれます。
各メッセージには、その処理方法を制御する記述子も含まれています。
主要なオペレーターコマンドの1つはREPLY、マクロへの応答を提供するコマンドですWTOR。オペレーターは、メッセージテキストを受信したコンソールでのみWTORに応答できます。
ディスプレイコンソール(例: 2250、2260、3270 )のキーコマンドはCONTROL ( K )で、スクロールなどの処理オプションを設定します。
これらのデータは、IBM 360 オペレーティング・システム・リリース履歴、System/370 製品およびサービスの市場年表、 IBM 「z/OS、z/OS.e、および OS/390 のマーケティングおよびサービスの発表、提供開始、および終了日」から取得したものです。2008年 3 月 14 日にオリジナルからアーカイブされました。そしてIBMの発表レター。