オペレーティング・システムのしくみと機能

!!
y it
セルフスタディ・シリーズ
op
メインフレーム・コンピュータ
on
't c
MVS(z/OS、MSP、VOS3)
Thi
s is
as
am
ple
.D
オペレーティング・システムのしくみと機能
「メインフレーム・コンピュータ」で遊ぼう
AD 株式会社アルテシード
オペレーティング・システムのしくみと機能
ジョブ(JOB) ·········································· 5
y it
Chapter1
!!
⽬次
ジョブは仕事の単位 ······················································6
op
ジョブの形態(処理形態から⾒た分類) ····························6
◆ バッチ処理······································································6
◆ オンライン処理································································8
on
't c
◆ 対話処理 ········································································9
ジョブの種類(起動⽅法による分類) ·······························11
◆ JOB(バッチジョブ)························································11
◆ STC(開始タスク) ··························································13
◆ TSU(タイムシェアリングユーザー) ···································13
ジョブとプログラム ······················································14
ple
.D
◆ ジョブ・ステップ ·····························································15
◆ ジョブ・ネットワーク ·······················································15
ジョブとリソース ·························································16
Chapter2
ジョブとJCL·············································· 17
am
JCL(Job Control Language) ·······································18
JCLの概要 ··································································20
◆ IDフィールド ··································································22
◆ 名前フィールド································································22
as
◆ 命令フィールド································································22
◆ オペランド(パラメーター)フィールド ································23
◆ コメント・フィールド ·······················································23
s is
JOBステートメント ······················································24
◆ 会計情報、プログラマー名 ·················································24
◆ CLASSパラメーター··························································25
◆ MSGCLASSパラメーター ···················································25
Thi
EXECステートメント ····················································25
◆ PGMパラメーター ····························································26
◆ REGIONパラメーター ·······················································26
◆ PARMパラメーター···························································26
-2-
オペレーティング・システムのしくみと機能
DDステートメント ·······················································27
◆ DSNパラメーター·····························································27
!!
◆ DISPパラメーター ····························································28
◆ UNITパラメーター ···························································28
y it
◆ VOL=SERパラメーター ·····················································28
◆ SPACEパラメーター··························································28
◆ DCBパラメーター·····························································28
◆ DDステートメントの連結 ···················································29
op
◆ SYSINとSYSOUT·····························································30
プロシージャ·······························································31
◆ ストリーム内プロシージャ ·················································31
Chapter3
on
't c
◆ カタログ式プロシージャ ····················································32
ジョブ・プロセッシングとJES······················· 33
ジョブ・プロセッシングの機能········································34
ジョブ⼊⼒サブシステム(JES)······································35
ple
.D
◆ ジョブ・スケジューリング ·················································35
◆ キューとスプール ·····························································37
ジョブの⼊⼒·······························································38
ジョブの実⾏·······························································41
◆ JCLの解釈(interpretation)··············································41
◆ 資源の割り振り(Allocation)·············································43
am
◆ プログラムの実⾏(execution) ··········································43
◆ 後始末(Termination) ·····················································43
Chapter4
as
ジョブの出⼒·······························································45
対話処理とTSO ·········································· 47
TSO(Time Sharing Option) ···········································48
s is
コマンド ····································································49
◆ TSOコマンドの構⽂ ··························································50
◆ データセット名の指定⽅法 ·················································50
◆ LOGOFFコマンド ·····························································51
Thi
◆ CALLコマンド ·································································51
◆ ALLOCATEコマンド··························································51
◆ FREEコマンド ·································································52
◆ LISTALCコマンド·····························································52
◆ アテンション割込み ··························································53
-3-
オペレーティング・システムのしくみと機能
CLIST········································································55
ISPFとダイアログ ························································57
!!
◆ ISPF/PDF·······································································57
Chapter5
y it
◆ SDSF·············································································59
データセット ············································· 61
データセットとファイル ················································62
op
◆ データセットの⼤きさは事前に決める ···································62
データセット名····························································63
on
't c
デバイスとボリューム ···················································65
◆ デバイス ········································································65
◆ ボリューム······································································66
レコードとブロック ······················································66
◆ 固定⻑レコード形式 ··························································67
◆ 可変⻑レコード形式 ··························································68
ple
.D
◆ 不定⻑レコード形式 ··························································69
データセット編成とアクセス⽅式·····································70
◆ 順次データセット ·····························································70
◆ 区分データセット ·····························································71
◆ VSAMデータセット···························································72
am
◆ データベース···································································73
アロケーションとカタログ ·············································75
◆ DD⽂とアロケーション······················································75
Chapter6
as
◆ カタログ ········································································75
アドレス空間とタスク ································· 77
アドレス空間とジョブ ···················································79
s is
タスクとプログラム ······················································80
ローディングと実⾏ ······················································82
Thi
割込みとディスパッチ ···················································83
-4-
オペレーティング・システムのしくみと機能
!!
ジョブ
op
y it
ジョブ・ステップ
on
't c
プログラムとリソース
ple
.D
ジョブ・ステップ
am
プログラムとリソース
as
◆ジョブとジョブ・ステップ
ジョブはジョブ・ステップの集まり。
●
プログラムはジョブ・ステップで実行される。
●
プログラムと使うデータ(リソース)はジョブ・ステップで指定する。
s is
●
Thi
ジョブとプログラム
コンピュータで何らかの処理を行うためには、その処理の内容を 1 つ 1 つとても
細かい手順としてあらかじめ記述しておかなければなりません。これがプログラ
ムです。プログラムを動かすことによってはじめてコンピュータは意味のある処理
を行うようになります。
- 14 -
オペレーティング・システムのしくみと機能
MVS(MSP、VOS3)では、プログラムはジョブで仕事を行うための具体的な作
業内容を記述した物で、ジョブによってプログラムを動かすことで実際の作業が
!!
行われます。
y it
◆ ジョブ・ステップ
1 つの仕事が複数の作業で成り立つように、MVS(MSP、VOS3)のジョブも 1
op
つのジョブを複数のプログラムの実行で成り立たせることができます。この場合
の 1 つ 1 つのプログラムの実行をジョブ・ステップ(JOB STEP)または単にステッ
on
't c
プと呼びます。1 つのジョブは 1 つまたは複数のステップで構成されます。
ジョブ内のステップは順序通りに実行されます。一般に 1 つの仕事を構成する
各々の作業には順序に基づく関連性があります。MVS(MSP、VOS3)のジョブ・
ステップにも同じ考えが当てはまります。先行ステップの出力データ(処理結果)
を後続のステップの入力データにして、さらに別の処理を行うというようにしてデ
ple
.D
ータ処理の順番にステップが並べられ、ジョブが構成されます。
★ポイント
・ プログラムはジョブ・ステップで実⾏される。
am
・ ステップは順番通りに実⾏される。
as
◆ ジョブ・ネットワーク
仕事を作業に細分化するのとは別に、複数の仕事を組み合わせて完結させる
ことを考えることもできます。この場合、複数のジョブを集めてグループ化すること
s is
になります。グループにまとめられたジョブの集まりはジョブ・ネットワークなどと
呼ばれます。
あるジョブが作成し、出力したデータを、別のジョブが入力に使用するような場
Thi
合、そこには先行関係に基づく順序性が生まれます。それらのジョブは順番を逆
にすることはできませんし、同時に実行することもできません。このようなジョブの
処理が依存ジョブ制御(DJC:Dependent Job Control)です。
- 15 -
オペレーティング・システムのしくみと機能
現在日本で一般的に使われる JES システムである、JES2 には DJC の機能はあ
!!
りません。オペレーターあるいは自動運用ソフトなどによって、ジョブ・ネットワーク
や DJC をコントロールします。ただし JES システムに JES3(VOS3 では JSS4)を
y it
使用すれば、DJC の機能を利用することはできます。
MVS(MSP、VOS3)ではステップによって作業(処理=プログラム)を並べて、仕事
op
(ジョブ)を構成し、複数の仕事(ジョブ)を集めて、業務(コンピュータによる業務)を構
ジョブとリソース
on
't c
成している、と考えることができます。
仕事を行うためにはリソース(資源)が必要です。企業でも仕事をするには、人
員・経費・設備・情報などのさまざまなリソースが必要です。MVS(MSP、VOS3)
ple
.D
のジョブでも同じことが言え、入出力されるファイルや、処理で使用される各種の
ハードウェア装置(デバイス)、プログラムが動作するメモリー領域などはジョブが
使うリソースとなります。実際の業務処理を行うプログラムそのものも、ジョブから
見ればリソースの 1 つです。
am
入出力データや、プログラムの実行結果などはコンピュータ処理における基本
的なリソースとしてよく知られています。MVS(MSP、VOS3)では一般のプログラ
ムはこれらの入出力データの名前(ファイル名)や場所(どのディスクにあるか)を
as
直接指定しません。ジョブ・ステップの定義を行う際に間接的に指定するしくみに
なっています。また特別な事情がない限りプログラムからオペレーターに問いか
けることもしません。大量のデータを少しでも早く処理させるため、メインフレー
ム・コンピュータではプログラムの実行に際して、可能な限り人間(オペレーター)
s is
の介入が不要となるように設計されます。
★ポイント
Thi
・ ファイルや I/O 装置などはジョブで使⽤するリソース。
・ プログラムとファイルは間接的に結びつけられる。
- 16 -
ジョブとJCL
op
Chapter2
y it
!!
オペレーティング・システムのしくみと機能
as
am
ple
.D
on
't c
ジョブと JCL
Chapter2
●JCL とは
●JCL の概要
●JOB ステートメント
●EXEC ステートメント
●DD ステートメント
Thi
s is
●プロシージャ
- 17 -
オペレーティング・システムのしくみと機能
!!
JCL(Job Control Language)
MVS(MSP、VOS3)ではジョブは、JCL と呼ばれるジョブ定義専用の言語(ジョブ制
y it
御言語)によって、ジョブが行う処理(ジョブ・ステップ)と使う資源(ジョブ・リソース)が
定義されます。
op
JCL に記述された内容と順序に従って必要なプログラムと資源を準備し、ジョブとし
てプログラムを実行させるのです。
on
't c
JCL は大きく 3 つの要素(JOB 文、EXEC 文および DD 文)で構成され、先頭が 2
つの//記号で始まる 80 バイトの固定長レコード(カードイメージ)の集合です。
メインフレーム以外のコンピュータ・システムでも複数のプログラムやコマンドを連続し
て実行したり、自動で実行したりするために、バッチファイルやシェルスクリプトと呼ば
れるものが使われます。JCL にも同様の機能があり、同じ目的でも使われます。
ple
.D
しかしメインフレームの JCL にはジョブのプログラムの実行を制御し、プログラムで使
用する各種の資源が割り当てる、と言う重要な役割を持っています。
JCL は MVS の他にも、VSE、XSP など多くのメインフレーム OS において、その形
式は異なるものの、ジョブを定義するために使われています。特にバッチ処理指向の
am
OS である MVS では、JCL はすべての処理の基本になるものであり、COBOL や PL/I
ものです。
★ポイント
as
などのプログラミング言語と異なり、OS を利用する上で必ず習得しなければならない
s is
・ JCL でジョブの処理と使う資源(データ)を定義する。
Thi
・ JCL は 3 つの要素(JOB、EXEC、DD)で構成される。
- 18 -
オペレーティング・システムのしくみと機能
!!
JOBステートメント
JOB ステートメントはジョブ定義の開始を示し、ジョブの名前や実行属性、課金のた
y it
めの情報などを指定し、そのジョブをどのように処理するかを定義します。
ジョブ名はジョブを識別する名前であり、任意の名前を指定できます。同じ名前を
op
重複して使えますが、同じ名前のジョブは同時には実行されません。ジョブはジョブ名
と、システムによって割り振られるジョブ ID(ジョブ番号)によって識別されます。
on
't c
1---+----1----+----2----+----3----+----4----+----5----+----6----+----7-//MYJOB
JOB (A234-H7),MYNAME,CLASS=A,MSGCLASS=K
//*
//
EXEC PGM=......
//
:
//
:
//
ple
.D
◆ 会計情報、プログラマー名
最初の定位置パラメーターは会計情報、2 番目の定位置パラメーターはプログ
ラマー名を示します。会計情報は課金処理(ジョブの実行に対して、コンピュータ
での処理費用を請求すること)のために使用され、パラメーターの指定が必要か
どうか、必要な場合のパラメーター値の形式はセンターの規約で決まります。一
am
般的にはジョブの実行者や部署名などをコード化したものを指定します。
プログラマー名は必ずしも、実行するプログラムを作成した人の名前ではあり
as
ません。初期のシステムでは JCL はプログラマーが作成する OS への実行指示
書の位置づけでしたから、JCL を書く人=プログラマーであったことの名残です。
実際にはジョブの実行者、責任者、担当グループ名などを指定します。このパラ
s is
メーターも指定が必要かどうか、必要な場合に何を指定するかはセンターの規約
で決まります。
会計情報を省略し、プログラマー名のみを指定する場合、プログラマー名が会
Thi
計情報と誤って認識されないように、会計情報の省略を示すカンマ記号のみを指
定します。
1---+----1----+----2----+----3----+----4----+----5----+----6----+----7//MYJOB
JOB ,MYNAME,CLASS=A,MSGCLASS=K
- 24 -
オペレーティング・システムのしくみと機能
既存のデータセットであっても、プログラムによる入出力処理の一部を制御す
るために使用されることがあります。例えば入出力バッファーの数などがありま
!!
す。
y it
◆ DDステートメントの連結
複数のデータセットをあたかも 1 つのデータセットであるかのようにアクセスす
op
ることができます。これを行うのが DD 文の連結です。各データセットを定義した
DD 文を処理順に定義して、先頭の DD 文にのみ DD 名を記述します。連結され
on
't c
た DD 文によって論理的に構成されたデータセットを連結データセットと呼びます。
連結データセットは、読み込み専用であり、出力処理を行うことはできません。
運用の現場では DD 文の連結は非常によく使われます。これを使えば業務用
アプリケーションで使うデータなどを、まとめて処理するようなことも簡単にできま
す。例えば、売上マスターを格納するデータセットが月別に作成されている場合、
ple
.D
1 月分から 12 月分を連結してプログラムに読み込ませれば 1 年分をまとめて処
理できます。12 個のデータセットをマージして別のデータセットを作る必要はあり
ません。
また実行プログラムのすべてを 1 つのデータセットに格納する必要がなくなり、
業務別のプログラム・ライブラリーと共通で使うサブルーチン・ライブラリーとで分
am
けて管理することができます。
Thi
s is
as
1---+----1----+----2----+----3----+----4----+----5----+----6----+----7//STEP1
EXEC PGM=PROG1
//STEPLIB DD DISP=SHR,DSN=GYOMUMOD.COMMON
//
DD DISP=SHR,DSN=GYOMUMOD.KEIRI
//INPUTLIB DD DISP=SHR,DSN=URIAGE.MASTER.Y200901
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200902
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200903
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200904
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200905
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200906
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200907
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200908
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200909
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200910
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200911
//
DD DISP=SHR,DSN=URIAGE.MASTER.Y200912
//
- 29 -
オペレーティング・システムのしくみと機能
◆ SYSINとSYSOUT
!!
JCL ではストリーム内データセットが定義でき、プログラムへの入力データを
JCL 内に直接記述することもできます。ユーティリティの制御文などのように、せ
y it
いぜい数行で済んでしまう少量のデータ・レコードのためにわざわざ別データセッ
トを作成するのは面倒ですが、この機能を使えば JCL 内に順次データセットを定
義することができます。ストリーム内データセットは、80 バイト固定長レコードで構
op
成され、入力専用です。
on
't c
1---+----1----+----2----+----3----+----4----+----5----+----6----+----7//SYSIN
DD *
ABCDEFGH
12345678
//
多くの OS ユーティリティが実行パラメーターとなる制御文を SYSIN と言う DD
名で定義したことから、ストリーム内データセットは慣例的に SYSIN データセットと
ple
.D
も呼ばれます。
入力専用である SYSIN とは逆に、出力専用となる SYSOUT データセットがあり
ます。SYSOUT はプログラムの実行結果など、本来なら印刷して出力するデータ
を取り扱うために使用されます。メインフレームではプログラムが印刷データをプ
リンター装置に直接出力することは一般的ではありません。スプーリングと呼ば
am
れる仕組みを使って間接的に出力します。この場合、JCL ではプリンター装置に
変わって、SYSOUT と言う仮想のデータセットを定義します。スプーリングの機能
によって SYSOUT データセットは、システムによって自動的にプリンターへ出力さ
as
れる仕組みになっています。
s is
1---+----1----+----2----+----3----+----4----+----5----+----6----+----7//SYSPRINT DD SYSOUT=A
//
★ポイント
Thi
・ DD ⽂はステップで使うデータなどの資源を定義する。
・ DD 名はプログラムで定めた名前に合わせる。
・ 複数のデータセットを 1 つのファイルとして定義できる。
・ 少量の⼊⼒データは JCL 内に直接記述できる。
- 30 -
オペレーティング・システムのしくみと機能
スループットを重視するバッチ処理では人間の手操作は、処理効率を阻害す
る大きな要因です。JES が行うジョブ・スケジューリングは可能な限り、人の操作を
!!
排除して、大量のジョブを処理するしくみです。
y it
日付や時刻、処理の順番などによるスケジューリングもジョブ・スケジューリン
グですが、これらの多くは、自動運用を行うパッケージ・ソフトウェアなどによって
JCL
スプール
ple
.D
JCL データ
on
't c
op
処理されます。
SYSIN データ
ジョブキュー
実行待ちジョブ
行列
SYSOUT データ
実行中ジョブ
as
am
SYSOUT データ
アウトプット
キュー
出力待ちジョブ
行列
s is
◆ キューとスプール
JES は、ジョブの入力・実行・出力それぞれの機能の間にキュー(待ち行列)と
Thi
スプールを設け、ジョブ処理が連続して流れるように制御します。スプーリングと
は、プログラムからの出力などを、メモリーやディスク装置で受け取り、後からプリ
ンターなどに書き出す方法です。これによりプログラムはスプールへの出力が終
わればプリントアウトできたものとして、処理をどんどん進めることができます。超
高速な CPU によるプログラム処理と、低速なプリンターの速度差を埋めて、プリ
- 37 -
オペレーティング・システムのしくみと機能
ンターという資源を有効に使うための重要な仕組みです。MVS(MSP、VOS3)で
はスプーリング制御はジョブ出力だけでなく、リーダーからのジョブ入力に対して
!!
も行われます。また、実行待ちや実行中の JCL も JES が保持しています。
y it
実行されるジョブと出力されるジョブを、イニシエーターやライターに割り振るた
めに使用されるのがキューです。ジョブはクラスと呼ばれるグループで区分けさ
れ、優先順位で順番が管理されます。JCL などで個別に優先度が指定されない
op
限り、はやく終わる(予測実行時間が短い)処理が優先されます。実行に時間が
掛かったり、大量の印刷が行われたりするとそれだけ資源が占有されるので、実
on
't c
行時間が短く、印刷量も少ないジョブから順次に処理されるのです。しかし、それ
では長時間ジョブや大量印刷ジョブがなかなか処理されないので、処理待ち時間
が長くなるにつれ、優先順位が上がるような調整(プライオリティエージング)もな
されます。
JES が 読 み 取 っ た JCL や 受 け 取 っ た 入 力 デ ー タ ( SYSIN ) と 出 力 デ ー タ
ple
.D
(SYSOUT)はジョブのための仮想のデータセットとして区分けされます。これらの
仮想のデータセットを格納するのがスプール・データセットです。スプールの中は
JES によって細分化され、SYSIN や SYSOUT が独自の方法で格納されます。
★ポイント
am
・ JES はジョブの⼊⼒を受け⼊れ、キューによって実⾏と出⼒のス
ケジューリングを⾏う。
as
・ JES のキューにはジョブ・キュー(実⾏待ち⾏列)とアウトプッ
ト・キュー(出⼒待ち⾏列)がある。
s is
・ JES はスプーリングによって、ジョブ処理の効率を⾼める。
Thi
ジョブの⼊⼒
JCL によって定義されたジョブは、リーダー(Reader)を通じて JES に入力されます。
リーダーは物理的な装置と論理的なプログラムによって構成されます。現在では、物
理的な装置が使われることはほとんどありません。主に JES によって提供される、プロ
- 38 -
オペレーティング・システムのしくみと機能
!!
CLIST
CLIST(MSP と VOS3 ではコマンド・プロシージャ)は複数の TSO コマンドを連続して
y it
実行させたり、端末オペレーターにコマンドのパラメーターを入力させたりするために
用いられます。変数の使用や、コマンドの反復、文字列の処理、端末やファイルの入
op
出力機能などを備えた、TSO におけるシェルスクリプトです。
実行するプログラム(コマンド)と実行順序を定義し、使用するデータセットを定義す
る点では、CLIST は JCL に似ています。しかし JCL はジョブが使う資源を明確にする
on
't c
ことが大きな役割ですが、CLIST はコマンド(プログラム)の連続実行や反復の制御な
ど操作性の向上が大きな役割です。この点でも Windows のバッチファイルや Unix
のシェルスクリプトに、より近いものです。
EXEC データセット名(CLIST メンバー名)
ple
.D
(CLIST は EXEC コマンドで実行を開始する)
CLIST では端末の入出力や変数が使えるため、単一のコマンドであっても CLIST に
て記述して実行されることもあります。例えばデータセットを作成する場合、名前や作
成場所、大きさなどをメッセージに答えて進めれば、適切な ALLOCATE コマンドを発
サンプルの CLIST を実行。
Thi
s is
as
am
行するような CLIST を作ることができます。
- 55 -
オペレーティング・システムのしくみと機能
on
't c
SET &I = &SYSINDEX(CYL,&STR(&WKSPA))
IF &I = 0 THEN SET &INSPTYP = TRACKS
ELSE SET &INSPTYP = CYLINDERS
op
y it
!!
1---+----1----+----2----+----3----+----4----+----5----+----6----+----7-PROC 0
CONTROL MAIN
WRITENR ENTER NEW DATASET NAME ==>
READ &INDSN
WRITENR ENTER ALLOCATE VOLUME ==>
名前、作成ボリューム、割り振りサイズ、
READ &INVOL
レコード長を、入力させて、ALLOCATE
WRITENR ENTER SPACE PARAMETER ==>
コマンドを発行する CLIST のサンプル。
READ &WKSPA
WRITENR ENTER RECORD LENGTH ==>
READ &INLRECL
&C = &STR((
&I = &SYSINDEX(&STR(&C),&STR(&WKSPA))
&I = &I + 1
&C = &STR(,)
&J = &SYSINDEX(&STR(&C),&STR(&WKSPA),&I)
&J = &J - 1
&INSP1ST = &SUBSTR(&I:&J,&STR(&WKSPA))
SET
SET
SET
SET
SET
&I = &J + 2
&C = &STR())
&J = &SYSINDEX(&STR(&C),&STR(&WKSPA))
&J = &J - 1
&INSP2ND = &SUBSTR(&I:&J,&STR(&WKSPA))
ple
.D
SET
SET
SET
SET
SET
SET
SET
am
ALLOC DA('&INDSN') NEW CATALOG UNIT(SYSDA) VOLUME(&INVOL) +
&INSPTYP SPACE(&INSP1ST &INSP2ND) RECFM(F B) LRECL(&INLRECL)
SET &ALLOCCC = &LASTCC
IF &ALLOCCC = 0 THEN FREE DA('&INDSN')
s is
★ポイント
as
IF &ALLOCCC = 0 THEN +
WRITE DATASET &INDSN WAS ALLOCATED, CODE=&ALLOCCC
ELSE +
WRITE DATASET &INDSN ALLOCATION FAILED, CODE=&ALLOCCC
・ CLIST は TSO におけるシェルスクリプト。
Thi
・ 条件分岐、ループ、⽂字列処理、端末やファイル⼊出⼒などが⾏
える。
- 56 -
オペレーティング・システムのしくみと機能
◆ ボリューム
!!
テープ装置では取り外し可能な記録媒体が使われます。リールとかカートリッ
ジと呼ばれるものです。1 つの装置に、複数のテープが交互に取り付けられるた
y it
め、テープ上のデータセットは装置番号では正しく指し示すことができません。そ
こで装置に取り付けられるテープには名前を付けて識別できるようにしています。
これがボリューム通し番号(ボリューム名)で、最大 6 文字までの英数字を使用す
op
ることができます。ボリュームの考え方はディスク装置でも同じです。ディスクの場
合は取り外し可能媒体ではありませんが、考え方として装置と記録媒体を分けて
on
't c
います。
★ポイント
ple
.D
・ ディスクやテープ装置など、すべての⼊出⼒装置には装置番号(4
桁の 16 進数)が付けられる。
・ 同じタイプのデバイスは名前でグループ化される。
・ デバイス上の記録媒体がボリュームである。
am
・ ボリュームは 6 ⽂字の名前によって識別される。
as
レコードとブロック
MVS(MSP、VOS3)では、データセットを構成する最小の単位をレコードと呼びます。
すべてのデータセットはレコードによって構造化されるという特徴を持っています。レコ
s is
ードはプログラムから見た I/O の最小単位でもあって、通常はレコード単位にファイル
を読み書きします。
複数のレコードをまとめたものがブロックです。ブロックはデータセットがディスクや
Thi
テープなどのハードウェア装置に記録されるときの単位であり、物理レコードとも呼ば
れます。ブロックを物理レコードと呼んだ場合、ブロック内の各レコードは論理レコード
となります。ブロックの中にいくつのレコードが格納できるかを示す数値をブロック化
因数(Blocking Factor)といいます。複数の論理レコードをブロックにまとめることが
- 66 -
オペレーティング・システムのしくみと機能
ユーザー領域とシステム領域は同じ空間に同居するため、ユーザープログラムが
誤ってシステム領域を壊さないようにするため、記憶保護キーが設定されます。キー
!!
の値として、ユーザー領域には 8、システム領域には 0 が設定されます。ただし OS
y it
の機能に応じて、システム領域のキーは 1~7 の値によって使い分けられます。
★ポイント
op
・ アドレス空間はジョブを動かすメモリー領域。
on
't c
・ アドレス空間はジョブ毎に独⽴して存在する。
・ アドレス空間の⼤きさは 2GB。ただしユーザープログラムで使え
るのはその⼀部(約 6〜8MB+32MB)
・ 空間は独⽴しているが、複数のジョブでデータをやり取りするた
めの共⽤領域(CSA)が存在する。
ple
.D
・ ユーザー領域とシステム領域は異なる記憶保護キーを持つ。
タスクとプログラム
am
タスクは CPU から見た作業の単位で、実際のプログラムの実行を行います。アドレ
ス空間はプログラムを実行するためのメモリーの割り当て、タスクはプログラムを実行
するための CPU の割り当てです。アドレス空間の中にあるタスクによってプログラム
as
が実行されます。
JCL の EXEC 文で指定されたプログラムにもタスクが割り当てられます。これはジョ
s is
ブステップ・タスクと呼ばれ、ユーザープログラムにとってのメインタスクとなります。
1 つのアドレス空間には複数のタスクを持つことができます。複数のタスクで実行さ
れるプログラムは、マルチタスク・プログラムと呼ばれます。マルチタスクにすると同じ
Thi
ジョブステップの中で、複数のプログラムが同時に動き、並行処理ができます。マルチ
タスク・プログラムは主にオンライン制御システムやデータベース・システムなどの、シ
ステム・ソフトウェアやオンライン・アプリケーションで用いられます。
- 80 -
オペレーティング・システムのしくみと機能
アドレス空間(MYJOB)
!!
RCT
DUMP
INIT
ジョブステップ・タスク
(EXEC 文で指定した
プログラムを実行する)
ple
.D
MYPROG1
実行タスク
on
't c
イニシエーター・タスク
op
STC
y it
OS の空間制御用タスク
MYPROG1
のサブタスク
JOB
EXEC PGM=MYPROG1
DD DISP=SHR,DSN=MY.LOADLIB
DD DISP=SHR,DSN=TEST.DATA1
DD SYSOUT=*
s is
★ポイント
as
am
//MYJOB
//*
//STEP1
//STEPLIB
//INPUT
//OUTPUT
//
・ プログラムはタスクによって実⾏される。
Thi
・ JCL で指定したプログラムを動かすタスクを、ジョブステップ・
タスクと呼ぶ。
・ アドレス空間には複数のタスクを作ることができる。
- 81 -