JP3135547B2 - データ転送制御方法 - Google Patents
データ転送制御方法Info
- Publication number
- JP3135547B2 JP3135547B2 JP02049362A JP4936290A JP3135547B2 JP 3135547 B2 JP3135547 B2 JP 3135547B2 JP 02049362 A JP02049362 A JP 02049362A JP 4936290 A JP4936290 A JP 4936290A JP 3135547 B2 JP3135547 B2 JP 3135547B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- output
- input
- buffer
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、計算機システムのメモリ利用技術に関す
る。
る。
中間データの引継ぎ処理を並行実行中のプロセス間で
実現する機能として、UNIXのPIPE機能がある〔ザ ユニ
ツクス オペレーテイングシステム,ワイリーインタサ
イエンス社刊(THE UNIX OPERATING SYSTEM,WILEY INTE
RSCIENCE)〕。PIPEは、前段のプロセスの出力を一時的
なフアイルとしてバツフアリングせずに、出てくる出力
をその都度、次段のプロセスへの入力とできる機能であ
る。
実現する機能として、UNIXのPIPE機能がある〔ザ ユニ
ツクス オペレーテイングシステム,ワイリーインタサ
イエンス社刊(THE UNIX OPERATING SYSTEM,WILEY INTE
RSCIENCE)〕。PIPEは、前段のプロセスの出力を一時的
なフアイルとしてバツフアリングせずに、出てくる出力
をその都度、次段のプロセスへの入力とできる機能であ
る。
中間データの引継ぎをするプロセスを並行実行させる
ことができるため、処理時間を短縮することができる。
ことができるため、処理時間を短縮することができる。
上記従来技術では、取り扱う中間データは保存する必
要のない場合に限られる。したがつて、上記中間データ
をMTやDISK等の入出力装置へ保存する必要がある場合に
は、PIPE機能を適用することができない。
要のない場合に限られる。したがつて、上記中間データ
をMTやDISK等の入出力装置へ保存する必要がある場合に
は、PIPE機能を適用することができない。
すなわち、中間データを保存する必要のある場合に
は、まず出力プロセスを実行させて、MTやDISK等に上記
中間データを出力させ、当該出力プロセスの実行完了
後、入出力装置へ出力した中間データを入力として、入
力プロセスを実行させる必要がある。
は、まず出力プロセスを実行させて、MTやDISK等に上記
中間データを出力させ、当該出力プロセスの実行完了
後、入出力装置へ出力した中間データを入力として、入
力プロセスを実行させる必要がある。
本発明の目的は、メモリを有効活用して、プロセス間
での保存する必要のある中間データの引継ぎ処理を高速
化を図ることにある。
での保存する必要のある中間データの引継ぎ処理を高速
化を図ることにある。
上記目的は、以下の手段を講じることにより達成され
る。
る。
中間データの引継ぎ処理を行う出力プロセスと入力プ
ロセスを並行実行させる。
ロセスを並行実行させる。
そして、上記出力プロセスと上記入力プロセスとが、
共通にアクセスできる仮想メモリ上の領域(共通領域)
に、入出力の単位長で区切つた複数のブロツクからなる
バツフアと、当該出力プロセスと入力プロセスとの中間
データの受渡しを管理するためのデータ引継ぎ記録領域
と、上記中間データの入出力装置への実出力を制御する
ためのテーブル(実出力制御テーブル)を設ける。
共通にアクセスできる仮想メモリ上の領域(共通領域)
に、入出力の単位長で区切つた複数のブロツクからなる
バツフアと、当該出力プロセスと入力プロセスとの中間
データの受渡しを管理するためのデータ引継ぎ記録領域
と、上記中間データの入出力装置への実出力を制御する
ためのテーブル(実出力制御テーブル)を設ける。
当該バツフアは、先頭ブロツクから順次1,2,3,…,Pと
番号付けをする。
番号付けをする。
当該データ引継ぎ記録領域には、上記出力プロセスと
上記入力プロセスとが、プロセス起動時に指定したデー
タセツト名とデータの入出力をする時のデータ長と、上
記バツフアのブロツク数と、当該出力プロセスの中間デ
ータ出力要求により、上記バツフアのブロツクにデータ
を書き込んだ回数と、 当該出力プロセスのデータ出理要求により上記バツフ
ア内のブロツクに中間データを書込もうとしたが、当該
バツフアに空きブロツクがないために待ち状態になつた
回数と、当該出力プロセスが、次に中間データ出力要求
を発行した場合に、中間データを書き込むバツフア内の
ブロツク番号と、当該出力プロセスが、上記バツフアへ
の中間データ出力を開始したことを示すフラグと、当該
出力プロセスが、上記バツフアへの中間データ出力が終
了したことを示すフラグと、当該出力プロセスが待ち状
態であることを示すフラグと、当該入力プロセスの中間
データ入力要求により、上記バツフア内のブロツクから
データを読み込んだ回数と、当該入力プロセスのデータ
入力要求により、当該バツフア内のブロツクからデータ
を読込もうとしたが、対象となる中間データを上記出力
プロセスが未出力のため待ち状態になつた回数と、当該
入力プロセスが、次に中間データ入力要求を発行した場
合に、中間データを読み込むバツフア内のブロツク番号
と、当該入力プロセスが、中間データ入力を開始したこ
とを示すフラグと、当該入力プロセスが、中間データ入
力を終了したことを示すフラグと、当該入力プロセス
が、待ち状態であることを示すフラグを記録する領域を
設ける。
上記入力プロセスとが、プロセス起動時に指定したデー
タセツト名とデータの入出力をする時のデータ長と、上
記バツフアのブロツク数と、当該出力プロセスの中間デ
ータ出力要求により、上記バツフアのブロツクにデータ
を書き込んだ回数と、 当該出力プロセスのデータ出理要求により上記バツフ
ア内のブロツクに中間データを書込もうとしたが、当該
バツフアに空きブロツクがないために待ち状態になつた
回数と、当該出力プロセスが、次に中間データ出力要求
を発行した場合に、中間データを書き込むバツフア内の
ブロツク番号と、当該出力プロセスが、上記バツフアへ
の中間データ出力を開始したことを示すフラグと、当該
出力プロセスが、上記バツフアへの中間データ出力が終
了したことを示すフラグと、当該出力プロセスが待ち状
態であることを示すフラグと、当該入力プロセスの中間
データ入力要求により、上記バツフア内のブロツクから
データを読み込んだ回数と、当該入力プロセスのデータ
入力要求により、当該バツフア内のブロツクからデータ
を読込もうとしたが、対象となる中間データを上記出力
プロセスが未出力のため待ち状態になつた回数と、当該
入力プロセスが、次に中間データ入力要求を発行した場
合に、中間データを読み込むバツフア内のブロツク番号
と、当該入力プロセスが、中間データ入力を開始したこ
とを示すフラグと、当該入力プロセスが、中間データ入
力を終了したことを示すフラグと、当該入力プロセス
が、待ち状態であることを示すフラグを記録する領域を
設ける。
上記実出力制御テーブルには、入出力装置へのデータ
出力の完了を通知するための領域と、出力データが収納
されている領域の仮想アドレスが収納される領域と、出
力するデータの長さ(データ長)が収納される領域と、
データの出力先である入出力装置の領域アドレスが収納
される領域を設ける。
出力の完了を通知するための領域と、出力データが収納
されている領域の仮想アドレスが収納される領域と、出
力するデータの長さ(データ長)が収納される領域と、
データの出力先である入出力装置の領域アドレスが収納
される領域を設ける。
上記出力プロセスと上記入力プロセスとの中間データ
引継ぎ処理は、上記バツフアを介して行なう。
引継ぎ処理は、上記バツフアを介して行なう。
上記出力プロセスと上記入力プロセスの関係付けをす
るため、当該出力プロセスと当該入力プロセスとで一致
したデータセツト名と、入出力の単位長(データ長)を
指定して起動する。
るため、当該出力プロセスと当該入力プロセスとで一致
したデータセツト名と、入出力の単位長(データ長)を
指定して起動する。
上記出力プロセスが、中間データ出力要求を発する度
に、当該バツフアの先頭ブロツク1から、ブロツク2,ブ
ロツク3,…,ブロツクkと当該バツフアの順方向に順次
データを書き込んでいく。この際に、上記実出力制御テ
ーブルに、上記バツフア内の中間データを書き込んだブ
ロツクを指定して、データの実出力動作を起動し、この
実出力動作を確認しながら処理を進める。
に、当該バツフアの先頭ブロツク1から、ブロツク2,ブ
ロツク3,…,ブロツクkと当該バツフアの順方向に順次
データを書き込んでいく。この際に、上記実出力制御テ
ーブルに、上記バツフア内の中間データを書き込んだブ
ロツクを指定して、データの実出力動作を起動し、この
実出力動作を確認しながら処理を進める。
そして、当該バツフアの最終ブロツクへの中間データ
書き込み終了後、再び中間データ出力要求が発行された
場合には、当該バツフアの先頭ブロツク1に中間データ
を書き込む。
書き込み終了後、再び中間データ出力要求が発行された
場合には、当該バツフアの先頭ブロツク1に中間データ
を書き込む。
一方、上記入力プロセスが、中間データ入力要求を発
行すると、当該バツフアの先頭ブロツク1から中間デー
タを読み込み、その後は、ブロツク2,ブロツク3,…,ブ
ロツクkからと順次中間データを読み込んでいく。そし
て、当該バツフアの最終ブロツクから中間データを読み
込んだ後、再び中間データ入力要求があつた場合には、
当該バツフアの先頭ブロツク1から中間データを読み込
む。上記のように、プロセス間の中間データ引継ぎ処理
を、上記バツフアをラツプアラウンドに使用して実現す
る。
行すると、当該バツフアの先頭ブロツク1から中間デー
タを読み込み、その後は、ブロツク2,ブロツク3,…,ブ
ロツクkからと順次中間データを読み込んでいく。そし
て、当該バツフアの最終ブロツクから中間データを読み
込んだ後、再び中間データ入力要求があつた場合には、
当該バツフアの先頭ブロツク1から中間データを読み込
む。上記のように、プロセス間の中間データ引継ぎ処理
を、上記バツフアをラツプアラウンドに使用して実現す
る。
また、上記出力プロセスと上記入力プロセスは、それ
ぞれプロセスの特性により、入出力動作命令の発行頻度
が異なる。そこで、当該出力プロセスと当該入力プロセ
スの中間データ入出力動作の同期をとることで、プロセ
ス間の中間データ引継ぎを保証する。
ぞれプロセスの特性により、入出力動作命令の発行頻度
が異なる。そこで、当該出力プロセスと当該入力プロセ
スの中間データ入出力動作の同期をとることで、プロセ
ス間の中間データ引継ぎを保証する。
上記出力プロセスのデータ出力要求により、上記バツ
フアのブロツクにデータを書き込む度に、前記データ引
継ぎ記録領域に、書き込み回数を記録していく。同様
に、上記入力プロセスのデータ入力要求により、上記バ
ツフアのブロツクからデータを読み込む度に、上記デー
タ引継ぎ記録領域に読み込み回数を記録していく。
フアのブロツクにデータを書き込む度に、前記データ引
継ぎ記録領域に、書き込み回数を記録していく。同様
に、上記入力プロセスのデータ入力要求により、上記バ
ツフアのブロツクからデータを読み込む度に、上記デー
タ引継ぎ記録領域に読み込み回数を記録していく。
上記入力ジヨブが、データ入力要求を発行した時に、
上記書き込み回数と上記読み込み回数とが等しい場合に
は、当該入力プロセスが入力しようとするデータを、当
該出力プロセスが未出力であることを意味する。このた
め、入力プロセスを待ち状態にする(WAIT)。この時、
上記出力プロセスは動作中であり、中間データの出力動
作を繰り返している。その度に、上記データ引継ぎ記録
領域の書き込み回数を更新している。そして、上記書き
込み回数と上記読み込み回数との差がブロツク数と等し
くなつた時点で、上記入力プロセスの待ち状態を解除す
る(POST)。
上記書き込み回数と上記読み込み回数とが等しい場合に
は、当該入力プロセスが入力しようとするデータを、当
該出力プロセスが未出力であることを意味する。このた
め、入力プロセスを待ち状態にする(WAIT)。この時、
上記出力プロセスは動作中であり、中間データの出力動
作を繰り返している。その度に、上記データ引継ぎ記録
領域の書き込み回数を更新している。そして、上記書き
込み回数と上記読み込み回数との差がブロツク数と等し
くなつた時点で、上記入力プロセスの待ち状態を解除す
る(POST)。
一方、上記出力プロセスのデータ出力命令を発行した
時に、上記書き込み回数と上記読み込み回数との差が、
上記データ引き継ぎ記録領域に記録されたブロツク数と
等しい場合には、当該バツフア内のブロツクに書き込ま
れている全てのデータを、上記入力プロセスが読み込ん
でいないことを意味する。したがつて、当該バツフアに
中間データを書き込む余裕がない。このため、出力プロ
セスを待ち状態にする(WAIT)。この時、上記入力プロ
セスは起動中であり、データ入力命令を発行して、当該
バツフアから中間データを読み込み、その度に、書き込
み回数を更新していく。そして、当該読み込み回数と当
該書き込み回数とが等しくなつた時点で、当該出力ジヨ
ブの待ち状態を解除する(POST)。
時に、上記書き込み回数と上記読み込み回数との差が、
上記データ引き継ぎ記録領域に記録されたブロツク数と
等しい場合には、当該バツフア内のブロツクに書き込ま
れている全てのデータを、上記入力プロセスが読み込ん
でいないことを意味する。したがつて、当該バツフアに
中間データを書き込む余裕がない。このため、出力プロ
セスを待ち状態にする(WAIT)。この時、上記入力プロ
セスは起動中であり、データ入力命令を発行して、当該
バツフアから中間データを読み込み、その度に、書き込
み回数を更新していく。そして、当該読み込み回数と当
該書き込み回数とが等しくなつた時点で、当該出力ジヨ
ブの待ち状態を解除する(POST)。
このように、プロセス間のデータ引継ぎを保証するた
めの同期処理を実行する頻度を小さくするために、一度
待ち状態になつたプロセスを再起動させるのは、データ
引継ぎの相手プロセスが、中間データの入出力命令を、
上記バツフアのブロツク数分発行した後にする。
めの同期処理を実行する頻度を小さくするために、一度
待ち状態になつたプロセスを再起動させるのは、データ
引継ぎの相手プロセスが、中間データの入出力命令を、
上記バツフアのブロツク数分発行した後にする。
しかし、上記に示す同期処理方法をとつたとしても、
上記出力プロセスと上記入力プロセスの特性により、当
該両プロセスの入出力命令の発行頻度が異なる場合に
は、当該両プロセスの同期をとる頻度が大きくなる。
上記出力プロセスと上記入力プロセスの特性により、当
該両プロセスの入出力命令の発行頻度が異なる場合に
は、当該両プロセスの同期をとる頻度が大きくなる。
そこで、同期をとる頻度が大きい場合には、上記バツ
フアに1ブロツク以上のブロツクを付加し、これによ
り、プロセス間で同期をとる頻度を小さくする。ここ
で、同期をとる頻度を観測するために、上記両プロセス
が待ち状態になる度に、前記データ引継ぎ記録領域に、
出力プロセス待ち回数もしくは、入力プロセス待ち回数
を更新しておく。そして、当該両待ち回数と、書き込み
回数及び読み込み回数から、上記両プロセスがデータ引
継ぎのために、同期をとる頻度を得る。そして、同期を
とる頻度が、上記データ引継ぎ記録領域に記した待ち頻
度パラメタよりも大きい場合には、上記に示したとお
り、バツフアに1個以上のブロツクを付加し、同期をと
る頻度を削減する。これにより、プロセス間のデータ引
継ぎのためのCPUオーバヘツドを削減する。
フアに1ブロツク以上のブロツクを付加し、これによ
り、プロセス間で同期をとる頻度を小さくする。ここ
で、同期をとる頻度を観測するために、上記両プロセス
が待ち状態になる度に、前記データ引継ぎ記録領域に、
出力プロセス待ち回数もしくは、入力プロセス待ち回数
を更新しておく。そして、当該両待ち回数と、書き込み
回数及び読み込み回数から、上記両プロセスがデータ引
継ぎのために、同期をとる頻度を得る。そして、同期を
とる頻度が、上記データ引継ぎ記録領域に記した待ち頻
度パラメタよりも大きい場合には、上記に示したとお
り、バツフアに1個以上のブロツクを付加し、同期をと
る頻度を削減する。これにより、プロセス間のデータ引
継ぎのためのCPUオーバヘツドを削減する。
本発明によれば、並列実行中のプロセス間で中間デー
タの引継ぎを行いながら、当該中間データを入出力装置
へ保存することができるため、処理経過時間を短縮する
ことができる。
タの引継ぎを行いながら、当該中間データを入出力装置
へ保存することができるため、処理経過時間を短縮する
ことができる。
以下、本発明の実施例を第1図から第13図を用いて説
明する。
明する。
第1図は、本発明の原理図である。第2図は、データ
引継ぎ記録領域の構造である。第3図は、プロセスがOP
EN命令を発行した場合に対する処理フローである。OPEN
命令は、プロセスがデータの入出力を開始する時に発行
する命令である。第4図は、プロセスがWRITE命令を発
行した場合に対するデータ書き込み処理のフローであ
る。WRITE命令は、出力プロセスが中間データを出力す
るために発行する命令である。第5図は、プロセスがRE
AD命令を発行した時に対するデータ読み込み処理のフロ
ーである。READ命令は、入力プロセスがデータを入力す
るために発行する命令である。第6図は、プロセスがCL
OSE命令を発行した場合に対する処理フローである。CLO
SE命令は、データの入出力を終了する時に発行する命令
である。第7図は、入力プロセスが、出力プロセスと同
期をとるために待ち状態になつた場合の時間遷移であ
る。第8図は、出力プロセスが、入力プロセスと同期を
とるために待ち状態となつた場合の時間遷移である。第
9図は、入出力装置へ中間データを出力する際に使用す
る実出力制御テーブルの構造である。第10図は、出力プ
ロセスが中間データの出力要求を発した場合のデータの
流れを示す第1の実施例で、第11図は、第10図に対応す
る処理フローである。第12図は、出力プロセスが中間デ
ータの出力要求を発した場合のデータの流れを示す第2
の実施例で、第13図は、第12図に対応する処理フローで
ある。
引継ぎ記録領域の構造である。第3図は、プロセスがOP
EN命令を発行した場合に対する処理フローである。OPEN
命令は、プロセスがデータの入出力を開始する時に発行
する命令である。第4図は、プロセスがWRITE命令を発
行した場合に対するデータ書き込み処理のフローであ
る。WRITE命令は、出力プロセスが中間データを出力す
るために発行する命令である。第5図は、プロセスがRE
AD命令を発行した時に対するデータ読み込み処理のフロ
ーである。READ命令は、入力プロセスがデータを入力す
るために発行する命令である。第6図は、プロセスがCL
OSE命令を発行した場合に対する処理フローである。CLO
SE命令は、データの入出力を終了する時に発行する命令
である。第7図は、入力プロセスが、出力プロセスと同
期をとるために待ち状態になつた場合の時間遷移であ
る。第8図は、出力プロセスが、入力プロセスと同期を
とるために待ち状態となつた場合の時間遷移である。第
9図は、入出力装置へ中間データを出力する際に使用す
る実出力制御テーブルの構造である。第10図は、出力プ
ロセスが中間データの出力要求を発した場合のデータの
流れを示す第1の実施例で、第11図は、第10図に対応す
る処理フローである。第12図は、出力プロセスが中間デ
ータの出力要求を発した場合のデータの流れを示す第2
の実施例で、第13図は、第12図に対応する処理フローで
ある。
(1)第1図の説明 第1図は、本発明の原理図である。
1は出力プロセスであり、2は入力プロセスである。
3はデータ管理プログラムである。4は共通領域であ
り、当該領域4内には、バツフア5とデータ引継ぎ記録
領域6がある。また、7は、中間データを保存するため
の入出力装置である。さらに、8は中間データを入出力
装置7へ実出力する時に使用する実出力制御テーブルで
ある。これは、バツフア5の各ブロツクに対応して設け
られる。
3はデータ管理プログラムである。4は共通領域であ
り、当該領域4内には、バツフア5とデータ引継ぎ記録
領域6がある。また、7は、中間データを保存するため
の入出力装置である。さらに、8は中間データを入出力
装置7へ実出力する時に使用する実出力制御テーブルで
ある。これは、バツフア5の各ブロツクに対応して設け
られる。
まず、データ管理プログラム3について説明する。当
該プログラム3は、出力プロセス1に対する場合と入力
プロセス2に対する場合とで異なる。出力プロセス1に
対するデータ管理プログラム3は、データ書き込み処理
31とデータ実出力処理33とからなる。データ書き込み処
理31は、出力プロセス1が発行したWRITE命令を受け
て、データをバツフア6内のブロツクに書き込む処理で
ある。データ実出力処理33は、出力プロセス1が、デー
タ書き込み処理31によりバツフア6に書き込んだデータ
を入出力装置7へ出力する処理である。
該プログラム3は、出力プロセス1に対する場合と入力
プロセス2に対する場合とで異なる。出力プロセス1に
対するデータ管理プログラム3は、データ書き込み処理
31とデータ実出力処理33とからなる。データ書き込み処
理31は、出力プロセス1が発行したWRITE命令を受け
て、データをバツフア6内のブロツクに書き込む処理で
ある。データ実出力処理33は、出力プロセス1が、デー
タ書き込み処理31によりバツフア6に書き込んだデータ
を入出力装置7へ出力する処理である。
一方、入力プロセス3に対するデータ管理プログラム
3は、データ読み込み処理32からなる。データ読み込み
処理32は、入力プロセス2が発行したREAD命令を受け
て、バツフア6内のブロツクからデータを読み込む処理
である。
3は、データ読み込み処理32からなる。データ読み込み
処理32は、入力プロセス2が発行したREAD命令を受け
て、バツフア6内のブロツクからデータを読み込む処理
である。
出力プロセス1が発行してWRITE命令と入力プロセス
2が発行したREAD命令を受けて、データ管理プログラム
3がプロセス間でのデータ引継ぎを行なうと共に、入出
力装置7へ中間データを出力する。
2が発行したREAD命令を受けて、データ管理プログラム
3がプロセス間でのデータ引継ぎを行なうと共に、入出
力装置7へ中間データを出力する。
次に、共通領域4内に設けたバツフア5とデータ引継
ぎ記録領域6及び、実出力制御テーブル8について説明
する。
ぎ記録領域6及び、実出力制御テーブル8について説明
する。
バツフア5とデータ引継ぎ記録領域6及び、実出力制
御テーブル8は、出力プロセス1と入力プロセス2のい
ずれか一方が先行してOPEN命令を発行した時点で、共通
領域4に確保し、出力プロセス1と入力プロセス2の両
プロセスがCLOSE命令を発行した時点で解放する。
御テーブル8は、出力プロセス1と入力プロセス2のい
ずれか一方が先行してOPEN命令を発行した時点で、共通
領域4に確保し、出力プロセス1と入力プロセス2の両
プロセスがCLOSE命令を発行した時点で解放する。
バツフア5はp個の入出力長のブロツクで構成され
る。各ブロツクは、バツフア5の先頭ブロツクから、5
1,52,…5pと番号付けがなされている。
る。各ブロツクは、バツフア5の先頭ブロツクから、5
1,52,…5pと番号付けがなされている。
データ引継ぎ記録領域6の構造は、第2図と同様であ
る。実出力制御テーブル8は、バツフア5の各ブロツク
に対応して、先頭から1,2,…,pと番号付けがなされてい
る。
る。実出力制御テーブル8は、バツフア5の各ブロツク
に対応して、先頭から1,2,…,pと番号付けがなされてい
る。
出力プロセスがWRITE命令を発行する度に、データ書
き込み処理31は、バツフア5の先頭ブロツク51から、5
2,53,…,5pと順次データを書き込んでいく。さらに、デ
ータ実出力処理33を用いて、中間データを書き込んだブ
ロツク内データを、対応する実出力制御テーブル8を用
いて、入出力装置7への出力を起動する。出力プロセス
1のデータ出力要求により、ブロツク5pへデータを書き
込んだ後は、バツフア5の先頭ブロツク51に戻り、上記
同様の動作を繰り返す。
き込み処理31は、バツフア5の先頭ブロツク51から、5
2,53,…,5pと順次データを書き込んでいく。さらに、デ
ータ実出力処理33を用いて、中間データを書き込んだブ
ロツク内データを、対応する実出力制御テーブル8を用
いて、入出力装置7への出力を起動する。出力プロセス
1のデータ出力要求により、ブロツク5pへデータを書き
込んだ後は、バツフア5の先頭ブロツク51に戻り、上記
同様の動作を繰り返す。
一方、入力プロセス2がREAD命令を発行する度に、デ
ータ読み込み処理32は、バツフア5の先頭ブロツク51か
ら、52,53,…,5pと順次データを読み込んでいく。入力
プロセス2のデータ入力要求により、ブロツク5pからデ
ータを入力した後は、バツフア5の先頭ブロツク51に戻
り、上記同様の処理を繰り返す。
ータ読み込み処理32は、バツフア5の先頭ブロツク51か
ら、52,53,…,5pと順次データを読み込んでいく。入力
プロセス2のデータ入力要求により、ブロツク5pからデ
ータを入力した後は、バツフア5の先頭ブロツク51に戻
り、上記同様の処理を繰り返す。
また、出力プロセス1と入力プロセス2は、並列実行
しており、かつ有限個数(p個)のブロツクでできたバ
ツフア5をラツプラウンドに使用しているため、以下の
2つの状態が発生し、データの引継ぎができない場合が
ある。
しており、かつ有限個数(p個)のブロツクでできたバ
ツフア5をラツプラウンドに使用しているため、以下の
2つの状態が発生し、データの引継ぎができない場合が
ある。
第1の状態は、バツフア5のブロツクの全データが入
力プロセス2で未入力であるため、出力プロセス1のデ
ータ出力要求に対し、データの書き込み先がない状態で
ある。
力プロセス2で未入力であるため、出力プロセス1のデ
ータ出力要求に対し、データの書き込み先がない状態で
ある。
第2の状態は、入力プロセス2がデータ入力要求を発
行したにもかかわらず、出力ジヨブが対象となるデータ
を未出力である状態である。
行したにもかかわらず、出力ジヨブが対象となるデータ
を未出力である状態である。
上記第1の状態に対しては、データ書き込み処理31
が、バツフア5に空き領域ができるのを待ち、第2の状
態に対しては、データ読み込み処理33が、対象となるデ
ータの書き込みがあるまで待つ。
が、バツフア5に空き領域ができるのを待ち、第2の状
態に対しては、データ読み込み処理33が、対象となるデ
ータの書き込みがあるまで待つ。
(2)第2図の説明 第2図は、データ引継ぎ記録領域6の構造を示す。デ
ータ引継ぎ記録領域6は、データセツト名61と、バツフ
アアドレス62,バツフア5のブロツク数63,データ入出力
の単位長64,待ち頻度パラメタ65,書き込みブロツク番号
66,読み込みブロツク番号67,書き込み回数68,読み込み
回数69,出力プロセス待ち回数6a,入力プロセス待ち回数
6b,出力プロセス開始(OPEN)フラグ6c,入力プロセスOP
ENフラグ6d,出力プロセス終了(CLOSE)フラグ6e、入出
力プロセスCLOSEフラグ6f、出力プロセス待ち(WAIT)
フラグ6g,入力プロセスWAITフラグ6hからなる。
ータ引継ぎ記録領域6は、データセツト名61と、バツフ
アアドレス62,バツフア5のブロツク数63,データ入出力
の単位長64,待ち頻度パラメタ65,書き込みブロツク番号
66,読み込みブロツク番号67,書き込み回数68,読み込み
回数69,出力プロセス待ち回数6a,入力プロセス待ち回数
6b,出力プロセス開始(OPEN)フラグ6c,入力プロセスOP
ENフラグ6d,出力プロセス終了(CLOSE)フラグ6e、入出
力プロセスCLOSEフラグ6f、出力プロセス待ち(WAIT)
フラグ6g,入力プロセスWAITフラグ6hからなる。
データセツト名61は、出力プロセス1と入力プロセス
2とが、起動時に指定したデータセツト名を記録する。
バツフアアドレス62は、OPEN命令処理時に設けたバツフ
ア5の先頭アドレスを記録する。バツフア5のブロツク
数63は、バツフア5のブロツク数を記録する。データ入
出力の単位長64は、出力プロセス1と入力プロセス2と
が起動時に指定した。1回の入出力時に取り扱うデータ
の長さ(データ長)を記録する。待ち頻度パラメタ65に
は、出力プロセス1と入力プロセス2とが待ち状態にな
る頻度を制御するためのパラメタを記録する。
2とが、起動時に指定したデータセツト名を記録する。
バツフアアドレス62は、OPEN命令処理時に設けたバツフ
ア5の先頭アドレスを記録する。バツフア5のブロツク
数63は、バツフア5のブロツク数を記録する。データ入
出力の単位長64は、出力プロセス1と入力プロセス2と
が起動時に指定した。1回の入出力時に取り扱うデータ
の長さ(データ長)を記録する。待ち頻度パラメタ65に
は、出力プロセス1と入力プロセス2とが待ち状態にな
る頻度を制御するためのパラメタを記録する。
書き込みブロツク番号66には、次に出力プロセス1が
WRITE命令を発行した時に、データを書き込むバツフア
5内のブロツク番号を記録する。読み込みブロツク番号
67には、入力プロセス2がREAD命令を発行した時に、バ
ツフア5内のブロツクからデータを読み込む時に、バツ
フア5内のどのブロツク番号のデータを入力するかを記
録する。
WRITE命令を発行した時に、データを書き込むバツフア
5内のブロツク番号を記録する。読み込みブロツク番号
67には、入力プロセス2がREAD命令を発行した時に、バ
ツフア5内のブロツクからデータを読み込む時に、バツ
フア5内のどのブロツク番号のデータを入力するかを記
録する。
書き込み回数68は、出力プロセスのWRITE命令発行に
より、バツフア5にデータを書き込んだ回数を記録す
る。読み込み回数69には、入力プロセスのREAD命令発行
により、バツフア5からデータを読み込んだ回数を記録
する。出力プロセス待ち回数6aには、出力プロセス1
が、入力プロセス2と同期をとるために、待ち状態にな
つた回数を記録する。入力プロセス待ち回数6bには、入
力プロセス2が、出力プロセス1と同期をとるために、
待ち状態になつた回数を記録する。
より、バツフア5にデータを書き込んだ回数を記録す
る。読み込み回数69には、入力プロセスのREAD命令発行
により、バツフア5からデータを読み込んだ回数を記録
する。出力プロセス待ち回数6aには、出力プロセス1
が、入力プロセス2と同期をとるために、待ち状態にな
つた回数を記録する。入力プロセス待ち回数6bには、入
力プロセス2が、出力プロセス1と同期をとるために、
待ち状態になつた回数を記録する。
出力プロセスOPENフラグ6cは、出力プロセス1がOPEN
命令を発行したか否かを示すフラグである。出力プロセ
スが、OPEN命令を発行した時にフラグをオンにする。入
力プロセスOPENフラグ6dは、入力プロセス2がOPEN命令
を発行したか否かを示すフラグである。OPEN命令を発行
した時にフラグをオンにする。出力プロセスCLOSEフラ
グ6eは、出力プロセス1がCLOSE命令を発行したか否か
を示すフラグである。出力プロセス1が、CLOSE命令を
発行した時にフラグをオンにする。入力プロセスCLOSE
フラグ6fは、入力プロセス2がCLOSE命令を発行したか
否かを示すフラグである。入力プロセス2が、CLOSE命
令を発行した時にフラグをオンにする。
命令を発行したか否かを示すフラグである。出力プロセ
スが、OPEN命令を発行した時にフラグをオンにする。入
力プロセスOPENフラグ6dは、入力プロセス2がOPEN命令
を発行したか否かを示すフラグである。OPEN命令を発行
した時にフラグをオンにする。出力プロセスCLOSEフラ
グ6eは、出力プロセス1がCLOSE命令を発行したか否か
を示すフラグである。出力プロセス1が、CLOSE命令を
発行した時にフラグをオンにする。入力プロセスCLOSE
フラグ6fは、入力プロセス2がCLOSE命令を発行したか
否かを示すフラグである。入力プロセス2が、CLOSE命
令を発行した時にフラグをオンにする。
出力プロセスWAITフラグ6gは、出力プロセス1が待ち
状態であるか否かを示すフラグである。出力プロセス1
が、待ち状態になつた時フラグをオンにし、待ち状態が
解除された時(稼働状態になつた時)、フラグをオフに
する。入力プロセスWAITフラグ6hは、入力プロセス2が
待ち状態であるか否かを示すフラグである。入力プロセ
ス2が待ち状態になつた時フラグをオンにし、待ち状態
が解除された時(稼動状態になつた時)、フラグをオフ
にする。
状態であるか否かを示すフラグである。出力プロセス1
が、待ち状態になつた時フラグをオンにし、待ち状態が
解除された時(稼働状態になつた時)、フラグをオフに
する。入力プロセスWAITフラグ6hは、入力プロセス2が
待ち状態であるか否かを示すフラグである。入力プロセ
ス2が待ち状態になつた時フラグをオンにし、待ち状態
が解除された時(稼動状態になつた時)、フラグをオフ
にする。
(3)第3の説明 第3図は、出力プロセス1と入力プロセス2のOPEN命
令発行に対する処理フローである。
令発行に対する処理フローである。
まず、301で、OPEN命令を発行したプロセスが、起動
時に指定したデータセツト名と同一のデータセツト名を
記録したデータ引継ぎ記録領域が存在するか否かを調べ
る。存在しない場合には、303で、データ引継ぎ記録領
域6を設ける。次に、304で、データ引継ぎ記録領域6
の初期設定を行う。このステツプでは、61にユーザが指
定したデータセツト名を登録し、さらに、63にブロツク
数、64に入出力の単位長、65に待ち頻度パラメタを登録
する。また、書き込みブロツク番号67と読み込みブロツ
ク番号68には1をセツトする。データ引継ぎ記録領域6
の上記以外の領域は、0クリアする。305では、(入出
力の単位長64)×(ブロツク数63)分のバツフア5を確
保し、バツフア5の先頭アドレスを62に登録する。
時に指定したデータセツト名と同一のデータセツト名を
記録したデータ引継ぎ記録領域が存在するか否かを調べ
る。存在しない場合には、303で、データ引継ぎ記録領
域6を設ける。次に、304で、データ引継ぎ記録領域6
の初期設定を行う。このステツプでは、61にユーザが指
定したデータセツト名を登録し、さらに、63にブロツク
数、64に入出力の単位長、65に待ち頻度パラメタを登録
する。また、書き込みブロツク番号67と読み込みブロツ
ク番号68には1をセツトする。データ引継ぎ記録領域6
の上記以外の領域は、0クリアする。305では、(入出
力の単位長64)×(ブロツク数63)分のバツフア5を確
保し、バツフア5の先頭アドレスを62に登録する。
一方、301で、データ引継ぎ記録領域が存在した場合
には、302で自プロセスが、出力プロセスが否かを識別
する。これは、OPEN命令発行時に指定したオペランドで
識別する。OPEN命令のオペランドが出力(OUTPUT)の場
合には、出力プロセスである。また、オペランドが入力
(INPUT)の場合には、入力プロセスである。
には、302で自プロセスが、出力プロセスが否かを識別
する。これは、OPEN命令発行時に指定したオペランドで
識別する。OPEN命令のオペランドが出力(OUTPUT)の場
合には、出力プロセスである。また、オペランドが入力
(INPUT)の場合には、入力プロセスである。
出力プロセスである場合には、306で、出力プロセスO
PENフラグ6cがオンか否かを調べる。出力プロセスOPEN
フラグ6cがオンの場合には、既に他の出力プロセスが、
同一データセツト名を指定し、OPEN命令を発行している
ことを示すので、当該出力プロセスを308で、以上終了
させる。同様に、入力プロセスの場合には、307で、入
力プロセスOPENフラグ6dがオンか否かを調べる。もし、
オンの場合には、既に他の入力プロセスが、同一データ
セツト名を指定し、OPEN命令を発行していることを示す
ので、当該入力プロセスを309で以上終了させる。
PENフラグ6cがオンか否かを調べる。出力プロセスOPEN
フラグ6cがオンの場合には、既に他の出力プロセスが、
同一データセツト名を指定し、OPEN命令を発行している
ことを示すので、当該出力プロセスを308で、以上終了
させる。同様に、入力プロセスの場合には、307で、入
力プロセスOPENフラグ6dがオンか否かを調べる。もし、
オンの場合には、既に他の入力プロセスが、同一データ
セツト名を指定し、OPEN命令を発行していることを示す
ので、当該入力プロセスを309で以上終了させる。
以上の処理により、対応するバツフア5とデータ引継
ぎ記録領域6の環境設定が整い、バツフア5とデータ引
継ぎ記録領域6を用いてデータの引継ぎ処理ができるよ
うになつた。310で、再び自プロセスは、出力プロセス
が入力プロセスかを識別する。そして、出力プロセスで
ある場合には、311で、出力プロセスOPENフラグ6cをオ
ンにする。入力プロセスである場合には、312で入力プ
ロセスOPENフラグをオンにする。
ぎ記録領域6の環境設定が整い、バツフア5とデータ引
継ぎ記録領域6を用いてデータの引継ぎ処理ができるよ
うになつた。310で、再び自プロセスは、出力プロセス
が入力プロセスかを識別する。そして、出力プロセスで
ある場合には、311で、出力プロセスOPENフラグ6cをオ
ンにする。入力プロセスである場合には、312で入力プ
ロセスOPENフラグをオンにする。
(4)第4図の説明 第4図は、データ書き込み処理フローである。
データ書き込み処理は、出力プロセスの書き込み(WR
ITE)命令により実行される命令である。
ITE)命令により実行される命令である。
401で、書き込み回数68と読み込み回数69との差が、
ブロツク数と等しいか否かを判断する。等しい場合に
は、バツフア5に書き込まれた全データは、入力プロセ
ス2が未入力のデータであることを示す。したがつて、
データを書き込む余地がバツフア5にはないことを意味
する。そこで、入力プロセスが読み込み(READ)命令を
発行し、バツフア5よりデータを読み込むことで空き領
域ができるのを待つ。そのために、まず402で、出力プ
ロセス1が待ち状態であることを示すために、出力プロ
セスWAITフラグ6gをオンにする。そして、403でWAITす
る。出力プロセス1が待ち状態になつている間、入力プ
ロセス2は、READ命令を発行することで、バツフア5よ
り中間データを入力していく。そして、入力プロセス2
が発行したREAD命令の処理の延長で、出力プロセス1を
起動する。出力プロセス1を起動させるタイミングの説
明は、第5図の説明の時に行う。再起動された出力プロ
セス1は、404で出力プロセス待ち回数6aを更新し、出
力プロセスWAITフラグ6gをオフにする。
ブロツク数と等しいか否かを判断する。等しい場合に
は、バツフア5に書き込まれた全データは、入力プロセ
ス2が未入力のデータであることを示す。したがつて、
データを書き込む余地がバツフア5にはないことを意味
する。そこで、入力プロセスが読み込み(READ)命令を
発行し、バツフア5よりデータを読み込むことで空き領
域ができるのを待つ。そのために、まず402で、出力プ
ロセス1が待ち状態であることを示すために、出力プロ
セスWAITフラグ6gをオンにする。そして、403でWAITす
る。出力プロセス1が待ち状態になつている間、入力プ
ロセス2は、READ命令を発行することで、バツフア5よ
り中間データを入力していく。そして、入力プロセス2
が発行したREAD命令の処理の延長で、出力プロセス1を
起動する。出力プロセス1を起動させるタイミングの説
明は、第5図の説明の時に行う。再起動された出力プロ
セス1は、404で出力プロセス待ち回数6aを更新し、出
力プロセスWAITフラグ6gをオフにする。
次に、406では、書き込みブロツク番号66がブロツク
数63よりも大きいか否かを判断する。大きい場合は、前
回のデータ書き込みで、バツフア5の最終ブロツクへの
書き込みがあつたことを意味する。前回のデータ書き込
みでバツフア5の最終ブロツクへの書き込みがあつた場
合には、バツフア5の容量を増量して、その領域にデー
タを書き込むか、もしくは、バツフア5の先頭ブロツク
51へ書き込むかを決定する。それが、407である。
数63よりも大きいか否かを判断する。大きい場合は、前
回のデータ書き込みで、バツフア5の最終ブロツクへの
書き込みがあつたことを意味する。前回のデータ書き込
みでバツフア5の最終ブロツクへの書き込みがあつた場
合には、バツフア5の容量を増量して、その領域にデー
タを書き込むか、もしくは、バツフア5の先頭ブロツク
51へ書き込むかを決定する。それが、407である。
407では、待ち状態になる頻度(出力プロセス待ち回
数6a/書き込み回数68、入力プロセス待ち回数6b/読み込
み回数69)が待ち頻度パラメタ65より大きいか否かで判
断する。大きい場合には、待ち状態になる頻度が大きい
ことを意味するので、408でバツフアを増量する。小さ
い場合には、409で待ち状態になる頻度が小さいので、
書き込みブロツク番号66を1にして、バツフア5の先頭
ブロツク51に巻き込むようにする。410では、書き込み
ブロツク番号66に対応するバツフア5の領域にデータを
書き込む。411では、書き込みブロツク番号66を後進
し、412では、書き込み回数68を更新する。
数6a/書き込み回数68、入力プロセス待ち回数6b/読み込
み回数69)が待ち頻度パラメタ65より大きいか否かで判
断する。大きい場合には、待ち状態になる頻度が大きい
ことを意味するので、408でバツフアを増量する。小さ
い場合には、409で待ち状態になる頻度が小さいので、
書き込みブロツク番号66を1にして、バツフア5の先頭
ブロツク51に巻き込むようにする。410では、書き込み
ブロツク番号66に対応するバツフア5の領域にデータを
書き込む。411では、書き込みブロツク番号66を後進
し、412では、書き込み回数68を更新する。
次に、入力プロセス2が待ち状態である場合に、その
待ち状態を解除するか否かを判断する。413では、入力
プロセスが待ち状態で、かつ書き込み回数68と読み込み
回数69との差が、ブロツク数63と等しいかどうかを判断
している。上記の条件を満たしている場合には、入力プ
ロセス2が待ち状態である間に、出力プロセス1は、バ
ツフア5の全ての領域にデータを書き込み、次にWRITE
命令を発行しても、データを書き込む空き領域がない状
態を意味している。そこで、414で、入力プロセスを再
起動させる。
待ち状態を解除するか否かを判断する。413では、入力
プロセスが待ち状態で、かつ書き込み回数68と読み込み
回数69との差が、ブロツク数63と等しいかどうかを判断
している。上記の条件を満たしている場合には、入力プ
ロセス2が待ち状態である間に、出力プロセス1は、バ
ツフア5の全ての領域にデータを書き込み、次にWRITE
命令を発行しても、データを書き込む空き領域がない状
態を意味している。そこで、414で、入力プロセスを再
起動させる。
以上が、データ書き込み処理である。
(5)第5図の説明 第5図は、データ読み込み処理フローである。
データ読み込み処理は、入力プロセス2のREAD命令に
より実行される処理である。まず501で書き込み回数68
と読み込み回数69とが等しいかを判断する。等しい場合
には、出力プロセス1がバツフア5に出力したデータ
を、入力プロセス2が全て読み込んだことを意味する。
等しい場合には、502で、出力プロセスCLOSEフラグ6eが
オンか否かを判断する。オンの場合には、出力プロセス
1は、全ての中間データの出力処理を終了し、CLOSE命
令を発行したことを意味する。したがつて、入力プロセ
ス2は、全中間データを入力したことになり、504でユ
ーザが指定したEOD(エンド オブ データ:End Of Dat
a)アドレスへ分岐する。出力プロセスCLOSEフラグ6eが
オフの場合には、まだ、出力プロセス1が中間データを
出力することを意味するので、503で入力プロセスWAIT
フラグをオンにし、505で待ち状態にして、出力プロセ
ス1が中間データを出力するのを待つ。入力プロセス1
が待ち状態になつている間、出力プロセス1は、WRITE
命令を発行して、バツフア5にデータを書き込んでい
く。そして、第4図の説明で述べたタイミングで、入力
プロセス2を再起動させる。再起動した入力プロセス2
は、506で、入力プロセス待ち回数6aを更新し、507で入
力プロセスWAITフラグ6gをオフにする。
より実行される処理である。まず501で書き込み回数68
と読み込み回数69とが等しいかを判断する。等しい場合
には、出力プロセス1がバツフア5に出力したデータ
を、入力プロセス2が全て読み込んだことを意味する。
等しい場合には、502で、出力プロセスCLOSEフラグ6eが
オンか否かを判断する。オンの場合には、出力プロセス
1は、全ての中間データの出力処理を終了し、CLOSE命
令を発行したことを意味する。したがつて、入力プロセ
ス2は、全中間データを入力したことになり、504でユ
ーザが指定したEOD(エンド オブ データ:End Of Dat
a)アドレスへ分岐する。出力プロセスCLOSEフラグ6eが
オフの場合には、まだ、出力プロセス1が中間データを
出力することを意味するので、503で入力プロセスWAIT
フラグをオンにし、505で待ち状態にして、出力プロセ
ス1が中間データを出力するのを待つ。入力プロセス1
が待ち状態になつている間、出力プロセス1は、WRITE
命令を発行して、バツフア5にデータを書き込んでい
く。そして、第4図の説明で述べたタイミングで、入力
プロセス2を再起動させる。再起動した入力プロセス2
は、506で、入力プロセス待ち回数6aを更新し、507で入
力プロセスWAITフラグ6gをオフにする。
508で、読み込みブロツク番号67がブロツク数63より
大きいかを判断する。大きい場合には、前回のREAD命令
では、バツフア5の最終ブロツクからデータを読み込ん
だことを意味する。そこで、読み込みブロツク番号67が
ブロツク数63より大きい場合には、509で読み込みブロ
ツク67を1にする。510では、読み込みブロツク67の示
すバツフア5内のブロツクからデータを読み込む。デー
タを読み込んだ後、511で読み込みブロツク番号67を更
新し、512で読み込み回数69を更新する。
大きいかを判断する。大きい場合には、前回のREAD命令
では、バツフア5の最終ブロツクからデータを読み込ん
だことを意味する。そこで、読み込みブロツク番号67が
ブロツク数63より大きい場合には、509で読み込みブロ
ツク67を1にする。510では、読み込みブロツク67の示
すバツフア5内のブロツクからデータを読み込む。デー
タを読み込んだ後、511で読み込みブロツク番号67を更
新し、512で読み込み回数69を更新する。
次に、513で出力プロセス1が待ち状態である場合
に、出力プロセス1を再起動させるか否かを判断する。
出力プロセス1を再起動させる条件は、書き込み回数68
と読み込み回数69が等しい場合である。これは、出力プ
ロセス1が待ち状態である間に、入力プロセス2が発行
するREAD命令により、バツフア5内の全データを読み込
んでしまつたことを意味する。この場合に、514で出力
プロセス1を再起動させる。
に、出力プロセス1を再起動させるか否かを判断する。
出力プロセス1を再起動させる条件は、書き込み回数68
と読み込み回数69が等しい場合である。これは、出力プ
ロセス1が待ち状態である間に、入力プロセス2が発行
するREAD命令により、バツフア5内の全データを読み込
んでしまつたことを意味する。この場合に、514で出力
プロセス1を再起動させる。
(6)第6図の説明 第6図は、プロセスのCLOSE命令を発行した時に対す
る処理フローである。
る処理フローである。
プロセスがCLOSE命令を発行すると、まず601で、自プ
ロセスがデータ入出力の時に使用したデータ引継ぎ記録
領域6をサーチする。602では、自プロセスが出力プロ
セスか、入力プロセスかを判断する。これは、OPEN命令
同様、オペランドがINPUTかOUTPUTかで判断する。出力
プロセス1の場合には、603で出力プロセスCLOSEフラグ
6eをオンにする。次に、604では、入力プロセスWAITフ
ラグ6hがオンかオフかで、入力プロセス2が待ち状態か
否かを判断する。入力プロセス2が待ち状態の場合に
は、605で入力プロセス2を再起動させる。一方、自プ
ロセスが入力プロセスの場合には、606で、入力プロセ
スCLOSEフラグ6fをオンにする。
ロセスがデータ入出力の時に使用したデータ引継ぎ記録
領域6をサーチする。602では、自プロセスが出力プロ
セスか、入力プロセスかを判断する。これは、OPEN命令
同様、オペランドがINPUTかOUTPUTかで判断する。出力
プロセス1の場合には、603で出力プロセスCLOSEフラグ
6eをオンにする。次に、604では、入力プロセスWAITフ
ラグ6hがオンかオフかで、入力プロセス2が待ち状態か
否かを判断する。入力プロセス2が待ち状態の場合に
は、605で入力プロセス2を再起動させる。一方、自プ
ロセスが入力プロセスの場合には、606で、入力プロセ
スCLOSEフラグ6fをオンにする。
上記処理の後は、607でバツフア5とデータ引継ぎ記
録領域6を解放するか否かの判断をする。バツフア5と
データ引継ぎ記録領域を解放するのは、出力プロセスCL
OSEフラグ6eがオンで、かつ入力プロセスCLOSEフラグ6f
がオンの場合である。この条件を満たした場合には、60
8でバツフア5を解放し、609でデータ引継ぎ記録領域6
を解放する。
録領域6を解放するか否かの判断をする。バツフア5と
データ引継ぎ記録領域を解放するのは、出力プロセスCL
OSEフラグ6eがオンで、かつ入力プロセスCLOSEフラグ6f
がオンの場合である。この条件を満たした場合には、60
8でバツフア5を解放し、609でデータ引継ぎ記録領域6
を解放する。
以上で、CLOSE命令に対する処理は終了する。
(7)第7図の説明 第7図を用いて、出力プロセス1が入力プロセス2と
同期をとるために、待ち状態になつた場合の時間遷移を
説明する。
同期をとるために、待ち状態になつた場合の時間遷移を
説明する。
入力プロセス2のREAD命令により、データ読み込み処
理32がバツフア5のブロツク5j−1からデータを読み込
んだ後、出力プロセス1のWRITE命令により、データ書
き込み処理31が、バツフア5のブロツク5j−1に書き込
む。この時点で、バツフア5内の全データは、入力プロ
セス2が未入力のデータとなる。次に、出力プロセス1
がWRITE命令を発行し、データ書き込み処理31は、ブロ
ツク5jにデータを書き込もうとする。しかし、入力プロ
セス2は現在ブロツク5jに書き込まれているデータをま
だ読み込んでいない。このため、出力プロセス1は、待
ち状態になる。
理32がバツフア5のブロツク5j−1からデータを読み込
んだ後、出力プロセス1のWRITE命令により、データ書
き込み処理31が、バツフア5のブロツク5j−1に書き込
む。この時点で、バツフア5内の全データは、入力プロ
セス2が未入力のデータとなる。次に、出力プロセス1
がWRITE命令を発行し、データ書き込み処理31は、ブロ
ツク5jにデータを書き込もうとする。しかし、入力プロ
セス2は現在ブロツク5jに書き込まれているデータをま
だ読み込んでいない。このため、出力プロセス1は、待
ち状態になる。
一方、入力プロセス2は、READ命令を発行し、データ
読み込み処理32は、ブロツク5j,5j+1,…,5p,51,…,5j
−1から順次データを読み込んでいく。そして、ブロツ
ク5j−1からのデータ入力が完了した時点で、出力プロ
セス2をREAD命令により動作しているデータ読み込み処
理32が起動させる。
読み込み処理32は、ブロツク5j,5j+1,…,5p,51,…,5j
−1から順次データを読み込んでいく。そして、ブロツ
ク5j−1からのデータ入力が完了した時点で、出力プロ
セス2をREAD命令により動作しているデータ読み込み処
理32が起動させる。
(8)第8図の説明 第8図を用いて、入力プロセス2が、出力プロセス1
とデータ引継ぎ用の同期をとるために待ち状態になつた
場合の時間遷移を説明する。
とデータ引継ぎ用の同期をとるために待ち状態になつた
場合の時間遷移を説明する。
出力プロセス1のWRITE命令発行により、データ書き
込み処理31がバツフア5のブロツクj−1へデータを書
き込む。その後、入力プロセス2はREAD命令を発行し、
それを受けて、データ読み込み処理32は、ブロツク5j−
1からデータを読み込む。この時点で、入力プロセス2
が、バツフア5内の全データを読み込んだことになる。
込み処理31がバツフア5のブロツクj−1へデータを書
き込む。その後、入力プロセス2はREAD命令を発行し、
それを受けて、データ読み込み処理32は、ブロツク5j−
1からデータを読み込む。この時点で、入力プロセス2
が、バツフア5内の全データを読み込んだことになる。
次に、入力プロセス2がREAD命令を発行し、それを受
けて、データ読み込み処理32は、ブロツク5jからデータ
を読み込もうとするが、出力プロセス1は、まだブロツ
ク5jにデータを出力していないため、入力プロセス3は
待ち状態になつて、出力プロセス1がデータを出力する
のを待つ。
けて、データ読み込み処理32は、ブロツク5jからデータ
を読み込もうとするが、出力プロセス1は、まだブロツ
ク5jにデータを出力していないため、入力プロセス3は
待ち状態になつて、出力プロセス1がデータを出力する
のを待つ。
その後、データ書き込み処理31は、出力プロセス1が
WRITE命令を発行する度に、ブロツク5j,5j+1,…,5p,5
1,…,5j−1へと順次データを書き込んでいく。そし
て、ブロツク5j−1へのデータ書き込み完了後、データ
書き込み処理31は、入力プロセス2を起動する。
WRITE命令を発行する度に、ブロツク5j,5j+1,…,5p,5
1,…,5j−1へと順次データを書き込んでいく。そし
て、ブロツク5j−1へのデータ書き込み完了後、データ
書き込み処理31は、入力プロセス2を起動する。
(9)第9図の説明 第9図を用いて、データ実出力処理33が、入出力装置
7へ中間データを出力する際に用いる実出力制御テーブ
ル8の構造を説明する。
7へ中間データを出力する際に用いる実出力制御テーブ
ル8の構造を説明する。
実出力制御テーブルは、データ出力完了通知領域801
と、データアドレス収納領域802と、データ長収納領域8
03と、装置アドレス収納領域804とからなる。
と、データアドレス収納領域802と、データ長収納領域8
03と、装置アドレス収納領域804とからなる。
データ出力完了通知領域801は、データ実出力処理13
が起動したデータ出力の完了を通知してもらうための領
域である。
が起動したデータ出力の完了を通知してもらうための領
域である。
データアドレス収納領域802は、入出力装置7へ、出
力するデータが収納されている領域の先頭アドレスを収
納する領域である。
力するデータが収納されている領域の先頭アドレスを収
納する領域である。
データ長収納領域803は、出力しようとするデータの
領域長を収納する領域である。
領域長を収納する領域である。
装置アドレス収納装置804は、データの出力先を収納
する領域である。
する領域である。
データ実出力処理33は、当該実出力制御テーブル8
を、データ出力の度に作成し、データ出力を起動する。
を、データ出力の度に作成し、データ出力を起動する。
(10)第10図,第11図の説明 第10図,第11図を用いて、出力プロセス1のデータ出
力要求に対する処理の第1の実施例を示す。
力要求に対する処理の第1の実施例を示す。
第10図は、出力プロセス1がWRITE命令を発行した場
合のデータの流れを示す。第11図は、第10図の処理フロ
ーを示す。
合のデータの流れを示す。第11図は、第10図の処理フロ
ーを示す。
まず、第10図を説明する。第10図は、出力プロセス1
のWRITE命令に対し、データ書き込み処理31が中間デー
タをバツフア5のブロツク5nに書き込み、データ実出力
処理33がブロツク5nのデータを入出力装置7の7nの位置
に出力している状態を示している。
のWRITE命令に対し、データ書き込み処理31が中間デー
タをバツフア5のブロツク5nに書き込み、データ実出力
処理33がブロツク5nのデータを入出力装置7の7nの位置
に出力している状態を示している。
次に、第11図を用いて、第10図の処理フローを説明す
る。
る。
第11図は、出力プロセス1のWRITE命令に対する処理
フローである。
フローである。
1101では、今回データを書き込もうとしているブロツ
ク5nに書き込まれているデータの入出力装置への入出力
動作が完了しているかを、データ出力完了通知領域71で
確認する。完了していない場合には、1102でデータ実出
力の完了を待つ。
ク5nに書き込まれているデータの入出力装置への入出力
動作が完了しているかを、データ出力完了通知領域71で
確認する。完了していない場合には、1102でデータ実出
力の完了を待つ。
実出力の完了確認後、第4図で説明したデータ書き込
み処理を行う(400)。その次に、1103で、今回データ
を書き込んだブロツクを指定して、実出力制御テーブル
を用いて、入出力装置7へデータを実出力する動作を起
動する。
み処理を行う(400)。その次に、1103で、今回データ
を書き込んだブロツクを指定して、実出力制御テーブル
を用いて、入出力装置7へデータを実出力する動作を起
動する。
(11)第12図,第13図の説明 第12図,第13図を用いて、出力プロセス1が発行した
WRITE命令に対する動作の第2の実施例を説明する。
WRITE命令に対する動作の第2の実施例を説明する。
第12図は、出力プロセス1が発行したWRITE命令に対
するデータの流れを示し、第13図は、処理フローを示
す。
するデータの流れを示し、第13図は、処理フローを示
す。
第12図が第10図と異なる点は、バツフア5を複数面用
意した点である。(5001,5002)これに伴い、バツフア
アドレスを示すフイールドも6201,6202と、バツフアの
面数に対応して用意してある。さらに、各バツフアのブ
ロツク数を記録する領域も6301,6302と複数用意され
る。さらに、実出力制御テーブルも、各ブロツクに対応
して用意する(8001,8002)。
意した点である。(5001,5002)これに伴い、バツフア
アドレスを示すフイールドも6201,6202と、バツフアの
面数に対応して用意してある。さらに、各バツフアのブ
ロツク数を記録する領域も6301,6302と複数用意され
る。さらに、実出力制御テーブルも、各ブロツクに対応
して用意する(8001,8002)。
本実施例が、第1の実施例と異なる点は、入出力装置
7へのデータ出力を起動する契機が異なる点である。
7へのデータ出力を起動する契機が異なる点である。
第2の実施例では、1ブロツクへデータの書き込みを
する度に、入出力装置7へのデータ出力を起動した。本
実施例では、バツフア5を複数面用意し、バツフア一面
への書き込みが完了した時点で、当該バツフアに含まれ
る全データの入出力装置7へのデータ出力を起動する。
そして、バツフアの切替を行ない、次回以降の出力プロ
セス2のデータ出力要求に対しては、切替たバツフアへ
データを書き込んでいく。
する度に、入出力装置7へのデータ出力を起動した。本
実施例では、バツフア5を複数面用意し、バツフア一面
への書き込みが完了した時点で、当該バツフアに含まれ
る全データの入出力装置7へのデータ出力を起動する。
そして、バツフアの切替を行ない、次回以降の出力プロ
セス2のデータ出力要求に対しては、切替たバツフアへ
データを書き込んでいく。
本実施例の処理フローを、第13図を用いて説明する。
第14図の1301〜1302及び400は、第12図の1101〜1102及
び400と同様である。1303で、今回書き込んだブロツク
は、当該ブロツクを含むバツフアの最終ブロツクかを判
断する。最終ブロツクの場合は、1304で、当該バツフア
の全ブロツクのデータの入出力装置7へのデータ出力を
当該ブロツクの先頭から順次起動していく。1305では、
次回以降のWRITE命令により中間データを書き込むバツ
フアを切り替える。以降のWRITE命令に対しては、上記
同様の動作を切り替えたバツフアに対して行う。第12図
では、ブロツク番号p1へデータ書き込みをした後、ブロ
ツク番号1からブロツク番号p1までのデータを、入出力
装置7へ出力している状態を示している。
第14図の1301〜1302及び400は、第12図の1101〜1102及
び400と同様である。1303で、今回書き込んだブロツク
は、当該ブロツクを含むバツフアの最終ブロツクかを判
断する。最終ブロツクの場合は、1304で、当該バツフア
の全ブロツクのデータの入出力装置7へのデータ出力を
当該ブロツクの先頭から順次起動していく。1305では、
次回以降のWRITE命令により中間データを書き込むバツ
フアを切り替える。以降のWRITE命令に対しては、上記
同様の動作を切り替えたバツフアに対して行う。第12図
では、ブロツク番号p1へデータ書き込みをした後、ブロ
ツク番号1からブロツク番号p1までのデータを、入出力
装置7へ出力している状態を示している。
上記の動作を繰返し、出力プロセス1のCLOSE処理で
は、第6図に示した処理の他に、全ての入出力装置7へ
のデータ出力が完了したことを確認したうえで終了す
る。
は、第6図に示した処理の他に、全ての入出力装置7へ
のデータ出力が完了したことを確認したうえで終了す
る。
本発明によれば、中間データの引継ぎをするプログラ
ムを別ジヨブとして、並列実行させることができるた
め、処理経過時間を短縮することができる。
ムを別ジヨブとして、並列実行させることができるた
め、処理経過時間を短縮することができる。
第1図は、本発明の原理的構成を示す図である。第2図
は、データ引継ぎ記録領域の構造図である。第3図は、
プロセスがOPEN命令を発行した場合に対する処理フロー
図である。第4図は、データ書き込み処理のフロー図で
ある。第5図は、データ読み込み処理のフロー図であ
る。第6図は、プロセスがCLOSE命令を発行した場合に
対する処理フロー図である。第7図は、入力プロセス
が、出力プロセスと同期をとるために待ち状態になつた
場合の時間遷移を示す説明図である。第8図は、出力プ
ロセスが、入力プロセスと同期をとるために待ち状態と
なつた場合の時間遷移を示す説明図である。第9図は、
入出力装置へ中間データを出力する際に使用する実出力
制御テーブルの構造図である。第10図は、出力プロセス
が中間データの出力要求を発した場合のデータの流れを
示す第1の実施例の説明図である。第11図は、第10図に
対応する処理フロー図である。第12図は、出力プロセス
が中間データの出力要求を発した場合のデータの流れを
示す第2の実施例を示す説明図である。第13図は、第12
図に対応する処理フロー図である。 1……出力プロセス、2……入力プロセス、3……デー
タ転送処理、4……共通領域、5……バツフア、6……
データ転送記録領域、7……入出力装置、8……実出力
制御テーブル。
は、データ引継ぎ記録領域の構造図である。第3図は、
プロセスがOPEN命令を発行した場合に対する処理フロー
図である。第4図は、データ書き込み処理のフロー図で
ある。第5図は、データ読み込み処理のフロー図であ
る。第6図は、プロセスがCLOSE命令を発行した場合に
対する処理フロー図である。第7図は、入力プロセス
が、出力プロセスと同期をとるために待ち状態になつた
場合の時間遷移を示す説明図である。第8図は、出力プ
ロセスが、入力プロセスと同期をとるために待ち状態と
なつた場合の時間遷移を示す説明図である。第9図は、
入出力装置へ中間データを出力する際に使用する実出力
制御テーブルの構造図である。第10図は、出力プロセス
が中間データの出力要求を発した場合のデータの流れを
示す第1の実施例の説明図である。第11図は、第10図に
対応する処理フロー図である。第12図は、出力プロセス
が中間データの出力要求を発した場合のデータの流れを
示す第2の実施例を示す説明図である。第13図は、第12
図に対応する処理フロー図である。 1……出力プロセス、2……入力プロセス、3……デー
タ転送処理、4……共通領域、5……バツフア、6……
データ転送記録領域、7……入出力装置、8……実出力
制御テーブル。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 新井 利明 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所システム開発研究所 内 (72)発明者 今居 和男 神奈川県横浜市戸塚区戸塚町5030番地 株式会社日立製作所ソフトウエア工場内 (72)発明者 櫻庭 健年 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所システム開発研究所 内 (56)参考文献 特開 昭63−71747(JP,A) 特開 平1−36351(JP,A) 特開 昭61−131043(JP,A) 特開 昭61−221856(JP,A) 中村明著、「ワークステーションシリ ーズ オペレーティングシステム構築法 −UNIX詳説−構造編」、丸善株式会 社発行、(昭和61年初版)、p.194〜 195
Claims (2)
- 【請求項1】計算機システムにおいて並行に実行可能な
第1と第2のプロセスとの間において当該第1のプロセ
スが生成し、外部記憶装置への保存が必要な中間データ
の当該第2のプロセスへのデータ転送制御方法であっ
て、 前記第1のプロセスが前記計算機システムの前記外部記
憶装置のファイルに対して前記中間データの出力を要求
したことに応じて、当該中間データを前記計算機システ
ムの主記憶装置にスタックするとともに、当該中間デー
タを前記外部記憶装置に出力し、 前記第2のプロセスが前記ファイルからの入力を要求し
たことに応じて、前記第1のプロセスによって前記主記
憶装置にスタックされた前記中間データを、スタックさ
れた順に前記主記憶装置から当該第2のプロセスに入力
することを特徴とするデータ転送制御方法。 - 【請求項2】計算機システムにおいて並行に実行可能な
第1と第2のプロセスとの間において当該第1のプロセ
スが生成し、外部記憶装置への保存が必要な中間データ
の当該第2のプロセスへの主記憶装置上のバッファを介
したデータ転送制御方法であって、 前記第1のプロセスが前記計算機システムの前記外部記
憶装置のファイルに対して前記中間データの出力を要求
したことに応じて、制御プログラムにおいて前記バッフ
ァに中間データを書き込む余地があるかを判定し、 余地があるならば、前記制御プログラムにより当該中間
データを前記バッファにスタックするとともに、当該中
間データを前記外部記憶装置に出力し、 余地がないならば、前記制御プログラムにより前記第1
のプロセスを待ち状態にし、 前記第2のプロセスが前記ファイルからの入力を要求し
たことに応じて、前記制御プログラムにより、前記第1
のプロセスによって前記バッファにスタックされた前記
中間データを、スタックされた順に当該第2のプロセス
に入力し、 前記制御プログラムにより前記待ち状態の第1のプロセ
スを再起動することを特徴とするデータ転送制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02049362A JP3135547B2 (ja) | 1990-03-02 | 1990-03-02 | データ転送制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02049362A JP3135547B2 (ja) | 1990-03-02 | 1990-03-02 | データ転送制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH03252729A JPH03252729A (ja) | 1991-11-12 |
JP3135547B2 true JP3135547B2 (ja) | 2001-02-19 |
Family
ID=12828907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02049362A Expired - Lifetime JP3135547B2 (ja) | 1990-03-02 | 1990-03-02 | データ転送制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3135547B2 (ja) |
-
1990
- 1990-03-02 JP JP02049362A patent/JP3135547B2/ja not_active Expired - Lifetime
Non-Patent Citations (1)
Title |
---|
中村明著、「ワークステーションシリーズ オペレーティングシステム構築法−UNIX詳説−構造編」、丸善株式会社発行、(昭和61年初版)、p.194〜195 |
Also Published As
Publication number | Publication date |
---|---|
JPH03252729A (ja) | 1991-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7325110B2 (en) | Method for acquiring snapshot | |
JP2003248605A (ja) | ストレージシステム、主記憶システム、副記憶システム、及びそのデータ複写方法 | |
JPH0423144A (ja) | データ管理システムおよびデータ管理方法 | |
JPH03252825A (ja) | データ更新・復元処理方式 | |
JP2821345B2 (ja) | 非同期i/o制御方式 | |
JP3135714B2 (ja) | チェックポイントリスタート方式 | |
JP3135547B2 (ja) | データ転送制御方法 | |
JPH10133927A (ja) | コンピュータシステムおよびファイル管理方法 | |
JP3781007B2 (ja) | 計算機間のデータ引き継ぎ方法 | |
JP7073737B2 (ja) | 通信ログ記録装置、通信ログ記録方法、および、通信ログ記録プログラム | |
JP2000057013A (ja) | トレース情報採取装置及びプログラムを記録した機械読み取り可能な記録媒体 | |
JPH0346033A (ja) | ジヨブ間データ転送制御方法 | |
JP2735400B2 (ja) | 非同期入出力制御方式 | |
JP2584528Y2 (ja) | 情報処理装置 | |
JPH10198644A (ja) | 同期制御方法およびマルチプロセッサシステム | |
JPH0337748A (ja) | 主記憶を利用した外部記憶アクセス方式 | |
JPH0447350A (ja) | 主記憶読み出し応答制御方式 | |
JP2000047830A (ja) | ミラーディスクアクセス装置および方法 | |
JPS63273146A (ja) | フアイル出力処理方式 | |
JPS62194558A (ja) | ジヤ−ナルレコ−ドの書込み制御方式 | |
JP2856091B2 (ja) | データ出力システム | |
JP2594567B2 (ja) | メモリアクセス制御装置 | |
JPH0546641A (ja) | オンラインデータ引継ぎ方式 | |
JPS63206846A (ja) | メモリアクセス再実行方式 | |
JPS63108448A (ja) | 入出力要求制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071201 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081201 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091201 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101201 Year of fee payment: 10 |
|
EXPY | Cancellation because of completion of term | ||
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101201 Year of fee payment: 10 |