JPH04267421A - 仮想ファイルによるデータ入出力方式 - Google Patents
仮想ファイルによるデータ入出力方式Info
- Publication number
- JPH04267421A JPH04267421A JP3028336A JP2833691A JPH04267421A JP H04267421 A JPH04267421 A JP H04267421A JP 3028336 A JP3028336 A JP 3028336A JP 2833691 A JP2833691 A JP 2833691A JP H04267421 A JPH04267421 A JP H04267421A
- Authority
- JP
- Japan
- Prior art keywords
- file
- buffer
- output
- record
- input
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims abstract description 97
- 238000001514 detection method Methods 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は仮想ファイルによるデー
タ入出力方式、特に主記憶装置と外部記憶装置との間で
大量のデータを入出力するプログラムで主記憶装置をあ
る決った領域(バッファ)に区切りそのバッファを仮想
的にファイルと見立ててデータの入出力を行う仮想ファ
イルによるデータ入出力方式に関する。
タ入出力方式、特に主記憶装置と外部記憶装置との間で
大量のデータを入出力するプログラムで主記憶装置をあ
る決った領域(バッファ)に区切りそのバッファを仮想
的にファイルと見立ててデータの入出力を行う仮想ファ
イルによるデータ入出力方式に関する。
【0002】
【従来の技術】従来のこの種の仮想ファイルによるデー
タ入出力方式は、バッファが出力時には一杯に、入力時
にはバッファ上のデータを全て読み込んだ場合にこのバ
ッファをまるごと1レコードとして、指定された外部記
憶装置との間で入出力を行う。この際、プログラム上で
指定された一つ一つの装置番号に対応してそれぞれ一つ
ずつ外部記憶装置が割り付けられる。
タ入出力方式は、バッファが出力時には一杯に、入力時
にはバッファ上のデータを全て読み込んだ場合にこのバ
ッファをまるごと1レコードとして、指定された外部記
憶装置との間で入出力を行う。この際、プログラム上で
指定された一つ一つの装置番号に対応してそれぞれ一つ
ずつ外部記憶装置が割り付けられる。
【0003】図8は従来例の構成を示すブロック図であ
る。
る。
【0004】メモリバッファ部7−1はメモリを仮想的
にファイルと見立ててデータを格納していく場所である
。図9に示すようにメモリバッファ部7−1はプログラ
ム実行時にメモリ上に動的に割り付けられたある大きな
配列(例えば配列名TABLE、配列の大きさmemo
ry size)からなる。そしてこの配列はプログ
ラム上で使用される装置番号に対応して、ある一定の大
きさ(bufsz)で各々分割された複数の領域の集合
として使用される。
にファイルと見立ててデータを格納していく場所である
。図9に示すようにメモリバッファ部7−1はプログラ
ム実行時にメモリ上に動的に割り付けられたある大きな
配列(例えば配列名TABLE、配列の大きさmemo
ry size)からなる。そしてこの配列はプログ
ラム上で使用される装置番号に対応して、ある一定の大
きさ(bufsz)で各々分割された複数の領域の集合
として使用される。
【0005】バッファ入出力部7−2は、「読み込み」
(READ)あるいは「書き出し」(WRITE)命令
時に指定された変数あるいは配列等メモリ上の格納場所
と、指定された装置番号に対応するメモリバッファ部7
−1内のあるバッファ領域(buffer1,buff
er2…)との間でデータの入出力を行う。
(READ)あるいは「書き出し」(WRITE)命令
時に指定された変数あるいは配列等メモリ上の格納場所
と、指定された装置番号に対応するメモリバッファ部7
−1内のあるバッファ領域(buffer1,buff
er2…)との間でデータの入出力を行う。
【0006】ディスク入出力部7−3は、バッファ入出
力部7−2で使用していたある装置番号に対応するバッ
ファがWRITE時には一杯に、READ時にはバッフ
ァ上のデータを全て読み込んだ場合に、このバッファ領
域全体を1レコードとして、指定された外部記憶装置(
ディスク)との間で入出力を行う(この処理をページン
グと呼ぶ)。つまり、レコード長は前述したbufsz
と同等の長さとなる。この際、ディスクのファイル形式
は順編成であり、データは1レコードずつ順次格納また
は搬出される。よって、ディスクはプログラム上で使用
している装置番号に対応して一つずつ割り当てられる。
力部7−2で使用していたある装置番号に対応するバッ
ファがWRITE時には一杯に、READ時にはバッフ
ァ上のデータを全て読み込んだ場合に、このバッファ領
域全体を1レコードとして、指定された外部記憶装置(
ディスク)との間で入出力を行う(この処理をページン
グと呼ぶ)。つまり、レコード長は前述したbufsz
と同等の長さとなる。この際、ディスクのファイル形式
は順編成であり、データは1レコードずつ順次格納また
は搬出される。よって、ディスクはプログラム上で使用
している装置番号に対応して一つずつ割り当てられる。
【0007】以上のことから、データの入出力はメモリ
上の中心に行われ、またディスクとの入出力はプログラ
ム側でブロッキングして行われるため、極めて高速な入
出力処理が可能となる。
上の中心に行われ、またディスクとの入出力はプログラ
ム側でブロッキングして行われるため、極めて高速な入
出力処理が可能となる。
【0008】バッファ管理部7−4は上述した一連のデ
ータの受け渡しを制御し、メモリバッファ部7−1の管
理を司る。バッファ管理部7−4は以下の5つの部分か
ら成る。
ータの受け渡しを制御し、メモリバッファ部7−1の管
理を司る。バッファ管理部7−4は以下の5つの部分か
ら成る。
【0009】バッファ割り付け/解放部7−4−1は、
プログラム上である装置番号に対しての使用が宣言、ま
たは解除される都度、メモリバッファ部7−1にその装
置番号に対応するバッファ領域の割り付け、解放を行う
。
プログラム上である装置番号に対しての使用が宣言、ま
たは解除される都度、メモリバッファ部7−1にその装
置番号に対応するバッファ領域の割り付け、解放を行う
。
【0010】バッファ容量検出部7−4−2は、後述す
る制御情報作成/検出部7−4−3およびバッファ入出
力制御部7−4−4の作動前にバッファ領域の残り容量
をチェックし、その情報をバッファ入出力制御部7−4
−4およびディスク入出力制御部7−4−5へ渡す。
る制御情報作成/検出部7−4−3およびバッファ入出
力制御部7−4−4の作動前にバッファ領域の残り容量
をチェックし、その情報をバッファ入出力制御部7−4
−4およびディスク入出力制御部7−4−5へ渡す。
【0011】制御情報作成/検出部7−4−3は、バッ
ファ入出力時に1回で処理するデータの個数、つまりプ
ログラム上でデータをWRITE/READする際の1
レコードのワード数を制御情報としてバッファ上の先頭
と後尾に付加あるいはそれらの位置からの読み取りを行
う。この制御情報をヘッダ、トレーラと呼ぶ。
ファ入出力時に1回で処理するデータの個数、つまりプ
ログラム上でデータをWRITE/READする際の1
レコードのワード数を制御情報としてバッファ上の先頭
と後尾に付加あるいはそれらの位置からの読み取りを行
う。この制御情報をヘッダ、トレーラと呼ぶ。
【0012】バッファ入出力制御部7−4−4は、バッ
ファ容量検出部7−4−2の情報と制御情報検出/作成
部7−4−3から得られたデータ1レコードのワード数
を基に、効率的なバッファ入出力の方法を選定し、バッ
ファ入出力部7−4−4へ指令を渡す。
ファ容量検出部7−4−2の情報と制御情報検出/作成
部7−4−3から得られたデータ1レコードのワード数
を基に、効率的なバッファ入出力の方法を選定し、バッ
ファ入出力部7−4−4へ指令を渡す。
【0013】ディスク入出力制御部7−4−5は、バッ
ファ容量検出部7−4−2からバッファの残り容量が無
くなったという情報を受けてディスク入出力部7−3へ
作動の命令を出す。
ファ容量検出部7−4−2からバッファの残り容量が無
くなったという情報を受けてディスク入出力部7−3へ
作動の命令を出す。
【0014】以上がバッファ管理部7−4の各機能であ
るが、当部全体での制御の情報を管理するために、図1
0で示すようなバッファ管理テーブルを設ける。
るが、当部全体での制御の情報を管理するために、図1
0で示すようなバッファ管理テーブルを設ける。
【0015】
【発明が解決しようとする課題】上述した従来の仮想フ
ァイルによるデータ入出力方式では、プログラム上で使
用している装置番号に対応して外部記憶装置(ディスク
)が一つずつ割り当てられるため、装置番号の数は使用
している言語の制約を受ける。FORTRANの場合は
99個である。
ァイルによるデータ入出力方式では、プログラム上で使
用している装置番号に対応して外部記憶装置(ディスク
)が一つずつ割り当てられるため、装置番号の数は使用
している言語の制約を受ける。FORTRANの場合は
99個である。
【0016】また、一つ一つの装置に格納するデータの
量が少なくてもディスクが一つ割り当てられてしまうた
め、装置数が多い場合はシステムから与えられる資源を
無駄に使用してしまうばかりか、実行を遅延させる要因
にも成りかねない。
量が少なくてもディスクが一つ割り当てられてしまうた
め、装置数が多い場合はシステムから与えられる資源を
無駄に使用してしまうばかりか、実行を遅延させる要因
にも成りかねない。
【0017】さらにディスクのファイル形式は順編成の
ため、ディスクの巻き戻しや後退…FORTRANの「
REWIND」、「BACKSPACE」時には、ディ
スクに対して実際にこれらの処理を行わなくてはならな
いため、処理時間が長くなってしまうという欠点がある
。
ため、ディスクの巻き戻しや後退…FORTRANの「
REWIND」、「BACKSPACE」時には、ディ
スクに対して実際にこれらの処理を行わなくてはならな
いため、処理時間が長くなってしまうという欠点がある
。
【0018】
【課題を解決するための手段】本発明の方式は、主記憶
装置と外部記憶装置との間で大量のデータを入出力する
プログラムで、主記憶をある決った領域(バッファ)に
区切りそのバッファを仮想的にファイルと見立ててデー
タの入出力を行い、バッファの退避/復元に外部記憶装
置との間で入出力を行うデータ入出力方式において、バ
ッファと外部記憶装置との間で入出力を行う部分に、プ
ログラム上で使用している装置番号の先頭アドレスを管
理するファイルアドレス管理部および退避または復元し
たいバッファのレコード番号の情報を得るためのレコー
ドポインタテーブル設定部からなるレコード番号管理部
と、指定されたレコード番号がディスク上のどのファイ
ル上に存在するかを調べるファイル番号検出部およびそ
のファイル上での実際のレコード番号を決めるレコード
番号設定部からなる入出力アドレス管理部と、出力処理
時にファイル番号検出部で指定されたファイルが存在し
ない場合に、新規にファイルを作成するためのファイル
作成部とを有している。
装置と外部記憶装置との間で大量のデータを入出力する
プログラムで、主記憶をある決った領域(バッファ)に
区切りそのバッファを仮想的にファイルと見立ててデー
タの入出力を行い、バッファの退避/復元に外部記憶装
置との間で入出力を行うデータ入出力方式において、バ
ッファと外部記憶装置との間で入出力を行う部分に、プ
ログラム上で使用している装置番号の先頭アドレスを管
理するファイルアドレス管理部および退避または復元し
たいバッファのレコード番号の情報を得るためのレコー
ドポインタテーブル設定部からなるレコード番号管理部
と、指定されたレコード番号がディスク上のどのファイ
ル上に存在するかを調べるファイル番号検出部およびそ
のファイル上での実際のレコード番号を決めるレコード
番号設定部からなる入出力アドレス管理部と、出力処理
時にファイル番号検出部で指定されたファイルが存在し
ない場合に、新規にファイルを作成するためのファイル
作成部とを有している。
【0019】
【実施例】次に本発明について図面を参照して説明する
。
。
【0020】(構成)図1に示すように、本発明の仮想
ファイルによるデータ入出力方式は、従来技術で示され
たバッファを仮想的にファイルと見立ててデータの入出
力を行うために必要なメモリバッファ部1−1,バッフ
ァ入出力部1−2,ディスク入出力部1−3およびバッ
ファ管理部1−4,(バッファ割り付け/解放部1−4
−1,バッファ容量検出部1−4−2,制御情報作成/
検出部1−4−3,バッファ入出力制御部1−4−4お
よびディスク入出力制御部1−4−5から成る)に対し
て、レコード番号管理部1−5(プログラム上で使用し
ている装置番号の先頭アドレスを管理するファイルアド
レス管理部1−5−1および退避または復元したいバッ
ファのレコード番号の情報を得るためのレコードポイン
タテーブル設定部1−5−2から成る)と、入出力アド
レス管理部1−6(指定されたレコード番号がディスク
上のどのファイル上に存在するかを調べるファイル番号
検出部1−6−1およびそのファイル上での実際のレコ
ード番号を決めるレコード番号設定部1−6−2から成
る)と、出力処理時にファイル番号検出部で指定された
ファイルが存在しない場合に新規にファイルを作成する
ためのファイル作成部1−7が追加されている。
ファイルによるデータ入出力方式は、従来技術で示され
たバッファを仮想的にファイルと見立ててデータの入出
力を行うために必要なメモリバッファ部1−1,バッフ
ァ入出力部1−2,ディスク入出力部1−3およびバッ
ファ管理部1−4,(バッファ割り付け/解放部1−4
−1,バッファ容量検出部1−4−2,制御情報作成/
検出部1−4−3,バッファ入出力制御部1−4−4お
よびディスク入出力制御部1−4−5から成る)に対し
て、レコード番号管理部1−5(プログラム上で使用し
ている装置番号の先頭アドレスを管理するファイルアド
レス管理部1−5−1および退避または復元したいバッ
ファのレコード番号の情報を得るためのレコードポイン
タテーブル設定部1−5−2から成る)と、入出力アド
レス管理部1−6(指定されたレコード番号がディスク
上のどのファイル上に存在するかを調べるファイル番号
検出部1−6−1およびそのファイル上での実際のレコ
ード番号を決めるレコード番号設定部1−6−2から成
る)と、出力処理時にファイル番号検出部で指定された
ファイルが存在しない場合に新規にファイルを作成する
ためのファイル作成部1−7が追加されている。
【0021】(各部の機能)レコード番号管理部1−5
は、バッファとディスク上のファイルとの入出力の際の
、バッファのレコード番号の管理を司る部分である。 このレコード番号は、プログラム上で使用している装置
番号の相違に関係無く、バッファからの出力の際に割り
当てられていく数字である。つまりこのレコード番号管
理部1−5においては、ディスク上のファイルを全く意
識せずに、現在扱っているバッファが全体の内何番目の
レコードに相当するかを把握していれば良い。
は、バッファとディスク上のファイルとの入出力の際の
、バッファのレコード番号の管理を司る部分である。 このレコード番号は、プログラム上で使用している装置
番号の相違に関係無く、バッファからの出力の際に割り
当てられていく数字である。つまりこのレコード番号管
理部1−5においては、ディスク上のファイルを全く意
識せずに、現在扱っているバッファが全体の内何番目の
レコードに相当するかを把握していれば良い。
【0022】レコード番号の割り当てには図2(a)で
示すような後ポインタテーブル(配列名NEXTPT、
配列の大きさNUMREC)を利用する。このNUMR
ECの値の大きさによりプログラム上で利用できるファ
イルの総レコード数が決定する。つまりこのNUMRE
Cの値によりプログラム上で利用できるバッファの格納
領域の大きさが決定される。
示すような後ポインタテーブル(配列名NEXTPT、
配列の大きさNUMREC)を利用する。このNUMR
ECの値の大きさによりプログラム上で利用できるファ
イルの総レコード数が決定する。つまりこのNUMRE
Cの値によりプログラム上で利用できるバッファの格納
領域の大きさが決定される。
【0023】ファイルアドレス管理部1−5−1は、プ
ログラム上で使用している装置番号の先頭アドレスを管
理する部分である。アドレスの登録には図3で示すよう
なアドレス管理テーブル(配列名MNGADR、配列の
大きさNUMILU)を利用する。NUMILUの値が
プログラム上で使用する装置番号(仮想装置番号)の数
となる。論理的にはこのNUMILUの値を無限大にと
ればプログラム上で無限個の装置番号を使用できること
になるが、実際はシステムからメモリ上での制約を受け
る。ある装置番号の仮想ファイルであるバッファの最初
の出力時にそのレコード番号をテーブルに登録し、最初
の入力時にこのテーブルからそのバッファのレコード番
号を拾う。
ログラム上で使用している装置番号の先頭アドレスを管
理する部分である。アドレスの登録には図3で示すよう
なアドレス管理テーブル(配列名MNGADR、配列の
大きさNUMILU)を利用する。NUMILUの値が
プログラム上で使用する装置番号(仮想装置番号)の数
となる。論理的にはこのNUMILUの値を無限大にと
ればプログラム上で無限個の装置番号を使用できること
になるが、実際はシステムからメモリ上での制約を受け
る。ある装置番号の仮想ファイルであるバッファの最初
の出力時にそのレコード番号をテーブルに登録し、最初
の入力時にこのテーブルからそのバッファのレコード番
号を拾う。
【0024】レコードポインタテーブル設定部1−5−
2は、バッファの出力時にはレコードポインタ(後ポイ
ンタテーブル)の張り付けと同時に、図2(b)で示す
ような前ポインタテーブルの作成を、入力時にはアドレ
ス管理テーブルとともに後ポインタテーブルからのレコ
ードポインタの抽出を、プログラム上で使用していたあ
る装置番号で使用していたデータが不要になった場合に
そのバッファをレコード上から削除する時にはレコード
ポインタの張り替えを行う。詳細については後述する。
2は、バッファの出力時にはレコードポインタ(後ポイ
ンタテーブル)の張り付けと同時に、図2(b)で示す
ような前ポインタテーブルの作成を、入力時にはアドレ
ス管理テーブルとともに後ポインタテーブルからのレコ
ードポインタの抽出を、プログラム上で使用していたあ
る装置番号で使用していたデータが不要になった場合に
そのバッファをレコード上から削除する時にはレコード
ポインタの張り替えを行う。詳細については後述する。
【0025】入出力アドレス管理部1−6は、バッファ
とディスク上のファイルとの入出力の際に、レコード番
号管理部で指定されたバッファのレコード番号(アドレ
ス)が実際にどのファイルの何番レコードに相当するか
を設定する部分である。この際、ディスクのファイル形
式は直編成である。
とディスク上のファイルとの入出力の際に、レコード番
号管理部で指定されたバッファのレコード番号(アドレ
ス)が実際にどのファイルの何番レコードに相当するか
を設定する部分である。この際、ディスクのファイル形
式は直編成である。
【0026】ファイル番号検出部1−6−1は、指定さ
れたレコード番号がディスク上のどのファイル上に存在
するかを調べる部分である。レコード番号管理部1−5
で指定されたバッファのレコード番号とディスク上のフ
ァイルとの関係を図4に示す。図4は、ディスク上のフ
ァイル番号を1番から設定し、最大レコード長MAXR
ECを10とした場合におけるものである。
れたレコード番号がディスク上のどのファイル上に存在
するかを調べる部分である。レコード番号管理部1−5
で指定されたバッファのレコード番号とディスク上のフ
ァイルとの関係を図4に示す。図4は、ディスク上のフ
ァイル番号を1番から設定し、最大レコード長MAXR
ECを10とした場合におけるものである。
【0027】直編成ファイルの最大レコード長をMAX
REC、バッファのレコード番号をNOWRECとすれ
ば、ファイル番号IFCは式(1)で与えられる。
REC、バッファのレコード番号をNOWRECとすれ
ば、ファイル番号IFCは式(1)で与えられる。
【0028】
【0029】ここでIFLSTはディスク上に作成する
ファイルの先頭番号とする。
ファイルの先頭番号とする。
【0030】レコード番号設定部1−6−2は、ファイ
ル番号検出部1−6−1で指定されたファイル上でのレ
コード番号の設定する部分である。上と同じように、レ
コード番号IRECは式(2)で与えられる。
ル番号検出部1−6−1で指定されたファイル上でのレ
コード番号の設定する部分である。上と同じように、レ
コード番号IRECは式(2)で与えられる。
【0031】
【0032】つまり、レコード番号管理部1−5におけ
るレコード番号は「論理的レコード番号」、入出力アド
レス部1−6におけるレコード番号は「物理的レコード
番号」という意味合いとなる。
るレコード番号は「論理的レコード番号」、入出力アド
レス部1−6におけるレコード番号は「物理的レコード
番号」という意味合いとなる。
【0033】ファイル作成部1−7は、バッファからデ
ィスクへの出力処理時にファイル番号検出部1−6−1
で指定された番号のファイルが存在しない場合に、新規
にその番号のファイルを作成する部分である。この際フ
ァイル形式は直編成とし、レコード長はバッファ長と同
じ大きさBUFSZ、最大レコード長はMAXRECと
する。作成したファイルのファイル名は、図5で示すよ
うなファイル名テーブル(配列名FNAME、配列の大
きさNUMFL)に登録する。ファイルの存在の有無は
、このファイル名テーブルに名前が登録されているかど
うかで判断すればよい。
ィスクへの出力処理時にファイル番号検出部1−6−1
で指定された番号のファイルが存在しない場合に、新規
にその番号のファイルを作成する部分である。この際フ
ァイル形式は直編成とし、レコード長はバッファ長と同
じ大きさBUFSZ、最大レコード長はMAXRECと
する。作成したファイルのファイル名は、図5で示すよ
うなファイル名テーブル(配列名FNAME、配列の大
きさNUMFL)に登録する。ファイルの存在の有無は
、このファイル名テーブルに名前が登録されているかど
うかで判断すればよい。
【0034】(動作例)次に、動作例を図を参照しなが
ら以下に示す。
ら以下に示す。
【0035】FORTRAN言語を対象とし、バッファ
と外部記憶装置との間で入出力を行う部分、バッファ削
除時のレコードポインタの張り替え部、および、BAC
KSPACE・REWIND処理の各項目について本シ
ステムでどのように実現していくかを順を追って示す。
と外部記憶装置との間で入出力を行う部分、バッファ削
除時のレコードポインタの張り替え部、および、BAC
KSPACE・REWIND処理の各項目について本シ
ステムでどのように実現していくかを順を追って示す。
【0036】(1)ディスク上へのWRITE処理高速
入出力方式のWRITEサブルーチンにおいてバッファ
上にデータを書き込んでいきページングが発生する際、
以下の形式でファイル出力ルーチンを呼び出す。
入出力方式のWRITEサブルーチンにおいてバッファ
上にデータを書き込んでいきページングが発生する際、
以下の形式でファイル出力ルーチンを呼び出す。
【0037】CALL FLWRIT(LU,DAT
A,ISTAT) LU:プログラム上で使用している装置番号DATA:
バッファ上のデータ ISTAT:入出力状態指定子 FLWRITサブルーチンは、レコード番号管理部1−
5,入出力アドレス管理部1−6,ファイル作成部1−
7から成る。例として、装置番号101番,102番の
バッファをファイルに掃き出す場合について図6を参照
しながら示す。
A,ISTAT) LU:プログラム上で使用している装置番号DATA:
バッファ上のデータ ISTAT:入出力状態指定子 FLWRITサブルーチンは、レコード番号管理部1−
5,入出力アドレス管理部1−6,ファイル作成部1−
7から成る。例として、装置番号101番,102番の
バッファをファイルに掃き出す場合について図6を参照
しながら示す。
【0038】論理的レコード番号NOWRECには初期
値として1が与えられている。ファイルの最大レコード
長AAXRECの値を100とする。
値として1が与えられている。ファイルの最大レコード
長AAXRECの値を100とする。
【0039】まず101番のバッファを掃き出す際、N
OWRECの値を入出力アドレス管理部1−6に送りフ
ァイル番号とレコード番号を決める。ファイルの先頭番
号IFLSTを10とすればNOWREC=1より式(
1)からファイル番号は10と決まる。ファイル番号1
0番のテーブルポインタを1としてファイル名テーブル
FILE(1)の値を調べ、空白ならファイル作成部1
−7へファイル番号を送り、直編成ファイルを作成し、
そのファイル名をFILE(1)へ登録する。また、式
(2)より物理的レコード番号は1と決まる。これらの
情報をディスク入出力制御部1−4−5へ送り、書き込
み処理を行う。
OWRECの値を入出力アドレス管理部1−6に送りフ
ァイル番号とレコード番号を決める。ファイルの先頭番
号IFLSTを10とすればNOWREC=1より式(
1)からファイル番号は10と決まる。ファイル番号1
0番のテーブルポインタを1としてファイル名テーブル
FILE(1)の値を調べ、空白ならファイル作成部1
−7へファイル番号を送り、直編成ファイルを作成し、
そのファイル名をFILE(1)へ登録する。また、式
(2)より物理的レコード番号は1と決まる。これらの
情報をディスク入出力制御部1−4−5へ送り、書き込
み処理を行う。
【0040】次にレコード番号管理部1−5へNOWR
ECの値を送りレコードポインタテーブルの設定を行う
。まずバッファ管理テーブルより装置番号101番のデ
ィスク上での最終レコード番号LRECDK(初期値0
)を抽出し、前ポインタテーブルBEFRPT(NOW
REC)(ここではBEFRPT(1))に登録する。 そして、装置番号101番のテーブルポインタを1とし
てアドレス管理テーブルMNGADR(1)にNOWR
ECの値1を登録する、また、バッファ管理テーブルの
ディスク上の現在のレコード番号NRECDKと、LR
ECDKにNOWRECの値1を登録する。
ECの値を送りレコードポインタテーブルの設定を行う
。まずバッファ管理テーブルより装置番号101番のデ
ィスク上での最終レコード番号LRECDK(初期値0
)を抽出し、前ポインタテーブルBEFRPT(NOW
REC)(ここではBEFRPT(1))に登録する。 そして、装置番号101番のテーブルポインタを1とし
てアドレス管理テーブルMNGADR(1)にNOWR
ECの値1を登録する、また、バッファ管理テーブルの
ディスク上の現在のレコード番号NRECDKと、LR
ECDKにNOWRECの値1を登録する。
【0041】次に、後ポインタテーブルより現在レコー
ドの次のレコード番号NEXTPT(NOWREC)(
ここではNEXTPT(1))の値を調べ、もし0なら
(初期設定時は0)NOWRECに1を加えNOWRE
Cの値を更新する(ここで先程のNEXTPT(NOW
REC)の値は0のままとする。)これでNOWREC
には2が設定されたことになる(図6の(1))。
ドの次のレコード番号NEXTPT(NOWREC)(
ここではNEXTPT(1))の値を調べ、もし0なら
(初期設定時は0)NOWRECに1を加えNOWRE
Cの値を更新する(ここで先程のNEXTPT(NOW
REC)の値は0のままとする。)これでNOWREC
には2が設定されたことになる(図6の(1))。
【0042】NEXTPT(NOWREC)の値が0で
ない場合は、バッファ削除処理が行われており次ポイン
タは設定されているという事であるからその値でNOW
RECの値を更新し、先程のNEXTPT(NOWRE
C)の値は0に戻す(図7の(5))。
ない場合は、バッファ削除処理が行われており次ポイン
タは設定されているという事であるからその値でNOW
RECの値を更新し、先程のNEXTPT(NOWRE
C)の値は0に戻す(図7の(5))。
【0043】次に102番のバッファを掃き出すとすれ
ば、NOWRECの値を2として上と同様に行う。処理
終了時にはNOWRECの値は3となる(図6の(2)
)。
ば、NOWRECの値を2として上と同様に行う。処理
終了時にはNOWRECの値は3となる(図6の(2)
)。
【0044】次に101番の2回目のバッファを掃き出
すとする。NOWRECの値は3としてやはり上と同様
の処理をするが、先程と違い今度は101番バッファの
先頭レコードではないのでアドレス管理テーブルへの登
録は行わず、先程0とした後ポインタテーブルへNOW
RECの値を登録しポインタの張り継ぎを行う。つまり
、一つ前のバッファのレコード番号はLRECDKに格
納されているので、NEXTPT(LRECDK)へN
OWRECの値を登録する(図7の(3))。
すとする。NOWRECの値は3としてやはり上と同様
の処理をするが、先程と違い今度は101番バッファの
先頭レコードではないのでアドレス管理テーブルへの登
録は行わず、先程0とした後ポインタテーブルへNOW
RECの値を登録しポインタの張り継ぎを行う。つまり
、一つ前のバッファのレコード番号はLRECDKに格
納されているので、NEXTPT(LRECDK)へN
OWRECの値を登録する(図7の(3))。
【0045】(2)ディスク上からのREAD処理高速
入出力方式のREADサブルーチンにおいてバッファ上
からデータを読み込んでいきページングが発生する際、
以下の形式でファイル入力ルーチンを呼び出す。
入出力方式のREADサブルーチンにおいてバッファ上
からデータを読み込んでいきページングが発生する際、
以下の形式でファイル入力ルーチンを呼び出す。
【0046】CALL FLREAD(LU,DAT
A,ISTAT) LU:プログラム上で使用している装置番号DATA:
バッファ上のデータ ISTAT:入出力状態指定子 FLREADサブルーチンは、レコード管理部1−5,
入出力アドレス管理部1−6から成る。読み込みにはバ
ッファ管理テーブルのディスク上の現在のレコード番号
NRECDKの値を使用する。処理は以下のようになる
。
A,ISTAT) LU:プログラム上で使用している装置番号DATA:
バッファ上のデータ ISTAT:入出力状態指定子 FLREADサブルーチンは、レコード管理部1−5,
入出力アドレス管理部1−6から成る。読み込みにはバ
ッファ管理テーブルのディスク上の現在のレコード番号
NRECDKの値を使用する。処理は以下のようになる
。
【0047】まず、ディスクからまだ何も読み込んでな
い、これはNRECDK=0の場合であるがこの場合は
、アドレス管理テーブルMNGADRから必要な装置番
号のバッファの先頭アドレスを拾いNRECDKへ格納
する。既にディスクから読み込んでいる場合はNREC
DKには現在のレコード番号が格納されているので、後
ポインタテーブルより次に必要なレコード番号を検出し
NRECDKの値を更新する(NRECDK=NEXT
PT(NRECDK))。
い、これはNRECDK=0の場合であるがこの場合は
、アドレス管理テーブルMNGADRから必要な装置番
号のバッファの先頭アドレスを拾いNRECDKへ格納
する。既にディスクから読み込んでいる場合はNREC
DKには現在のレコード番号が格納されているので、後
ポインタテーブルより次に必要なレコード番号を検出し
NRECDKの値を更新する(NRECDK=NEXT
PT(NRECDK))。
【0048】次に、NRECDKを入出力アドレス管理
部1−6へ送りディスク上のファイル番号の物理的レコ
ード番号を検出する。そしてこれらの情報をディスク入
出力制御部1−4−5へ送り、読み込み処理を行う。
部1−6へ送りディスク上のファイル番号の物理的レコ
ード番号を検出する。そしてこれらの情報をディスク入
出力制御部1−4−5へ送り、読み込み処理を行う。
【0049】(3)バッファの削除処理プログラム上で
使用していたある装置番号のデータが不要となった場合
、今まで書き込んできたディスク上のファイル領域を解
放する必要がある。この際、以下の形式でファイル削除
ルーチンを呼び出す。
使用していたある装置番号のデータが不要となった場合
、今まで書き込んできたディスク上のファイル領域を解
放する必要がある。この際、以下の形式でファイル削除
ルーチンを呼び出す。
【0050】CALL DELETE(LU,IST
AT) LU:プログラム上で使用している装置番号ISTAT
:入出力状態指定子 DELETEサブルーチンは、レコード番号管理部1−
6から成る。(1)の例に続けて図6および図7を参照
しながら示す。
AT) LU:プログラム上で使用している装置番号ISTAT
:入出力状態指定子 DELETEサブルーチンは、レコード番号管理部1−
6から成る。(1)の例に続けて図6および図7を参照
しながら示す。
【0051】今、装置番号101番のデータを削除する
とする。まず装置番号101番のディスクでの最終レコ
ード番号LRECDKでの後ポインタNEXTPT(L
RECDK)の値は0となっているので、そこに現在の
論理的レコード番号であるNOWRECの値を登録する
ことによりポインタの張り継ぎを行っておく。次にその
NOWRECを装置番号101番のディスク上での先頭
アドレスを示すMNGADR(1)の値で更新すること
により、ポインタの張り替えは完了する(図7の(4)
)。
とする。まず装置番号101番のディスクでの最終レコ
ード番号LRECDKでの後ポインタNEXTPT(L
RECDK)の値は0となっているので、そこに現在の
論理的レコード番号であるNOWRECの値を登録する
ことによりポインタの張り継ぎを行っておく。次にその
NOWRECを装置番号101番のディスク上での先頭
アドレスを示すMNGADR(1)の値で更新すること
により、ポインタの張り替えは完了する(図7の(4)
)。
【0052】この処理に続けて装置番号102番のバッ
ファを掃き出す例を図7の(5)に示す。
ファを掃き出す例を図7の(5)に示す。
【0053】(4)BACKSPACE/REWIND
処理 高速入出力方式のBACKSPサブルーチンにおいてバ
ッファを一つ前の状態に戻す場合、またREWINDサ
ブルーチンにおける処理は、従来と異なり非常に簡単に
なる。つまりレコードポインタを設定するだけでよくな
る。
処理 高速入出力方式のBACKSPサブルーチンにおいてバ
ッファを一つ前の状態に戻す場合、またREWINDサ
ブルーチンにおける処理は、従来と異なり非常に簡単に
なる。つまりレコードポインタを設定するだけでよくな
る。
【0054】・BACKSPサブルーチンバッファを一
つ戻す場合、レコード番号管理部1−6における前ポイ
ンタテーブルを利用する。現在のディスク上でのレコー
ド番号NRECDKを、以下の処理により更新する。
つ戻す場合、レコード番号管理部1−6における前ポイ
ンタテーブルを利用する。現在のディスク上でのレコー
ド番号NRECDKを、以下の処理により更新する。
【0055】NRECDK=BEFRPT(NRECD
K) ・REWINDサブルーチン この場合は、NRECDKを0で更新すればよい。必要
なレコード番号はREAD時に設定される((2)参照
)。
K) ・REWINDサブルーチン この場合は、NRECDKを0で更新すればよい。必要
なレコード番号はREAD時に設定される((2)参照
)。
【0056】
【発明の効果】以上説明したように本発明は、論理的に
はディスクを意識せず一連のレコード番号のみで管理し
、レコードポインタテーブルの活用によりメモリから掃
き出されるプログラム上の複数の装置番号に対応する各
バッファの内容を、自動的にディスク上の直編成形式の
ファイルに割り付けていくことにより、プログラム上で
は、言語による装置番号に対する番号付け、使用数の制
限を全く受けずに、任意の装置番号で、論理的には無限
の装置数を(実際はシステムからメモリ上での制約を受
ける)使用することができる。
はディスクを意識せず一連のレコード番号のみで管理し
、レコードポインタテーブルの活用によりメモリから掃
き出されるプログラム上の複数の装置番号に対応する各
バッファの内容を、自動的にディスク上の直編成形式の
ファイルに割り付けていくことにより、プログラム上で
は、言語による装置番号に対する番号付け、使用数の制
限を全く受けずに、任意の装置番号で、論理的には無限
の装置数を(実際はシステムからメモリ上での制約を受
ける)使用することができる。
【0057】また、ディスク上の一つのファイル上に、
プログラム上で使用している装置番号に対応するバッフ
ァの内容を複数個格納できるため、ディスク上に作成す
るファイルの数を節約できるので、システムの資源を有
効に活用できる。
プログラム上で使用している装置番号に対応するバッフ
ァの内容を複数個格納できるため、ディスク上に作成す
るファイルの数を節約できるので、システムの資源を有
効に活用できる。
【0058】また、レコード番号のみで管理されている
ため、ディスクの巻き戻しや後退…FORTRANの「
REWIND」,「BACKSPACE」時には、レコ
ード番号を付け替えるのみでディスクに対するアクセス
を生じないので、処理時間を極めて短時間にすることが
できる、という効果がある。
ため、ディスクの巻き戻しや後退…FORTRANの「
REWIND」,「BACKSPACE」時には、レコ
ード番号を付け替えるのみでディスクに対するアクセス
を生じないので、処理時間を極めて短時間にすることが
できる、という効果がある。
【図面の簡単な説明】
【図1】本発明の機能構成図である。
【図2】本発明におけるレコードポインタテーブル構成
図であり、図2(a)は後ポインタテーブル、図2(b
)は前ポインタテーブルである。
図であり、図2(a)は後ポインタテーブル、図2(b
)は前ポインタテーブルである。
【図3】本発明におけるアドレス管理テーブル構成図で
ある。
ある。
【図4】本発明における論理的レコード番号とディスク
上のファイルとの関係図である。
上のファイルとの関係図である。
【図5】本発明におけるファイル名テーブル構成図であ
る。
る。
【図6】本発明における動作例の説明図である。
【図7】本発明における動作例の説明図である。
【図8】従来技術の機能構成図である。
【図9】従来例におけるメモリバッファ部とディスクと
の関係図である。
の関係図である。
【図10】従来例におけるバッファ管理テーブル構成図
である。
である。
1−1,7−1 メモリバッファ制御部1−2,
7−2 バッファ入出力部1−3,7−3
ディスク入出力部1−4,7−4 バッファ管
理部1−5 レコード番号管理部 1−6 入出力アドレス管理部 1−7 ファイル作成部
7−2 バッファ入出力部1−3,7−3
ディスク入出力部1−4,7−4 バッファ管
理部1−5 レコード番号管理部 1−6 入出力アドレス管理部 1−7 ファイル作成部
Claims (1)
- 【請求項1】 主記憶装置と外部記憶装置との間で大
量のデータを入出力するプログラムで、主記憶をある決
った領域(バッファ)に区切りそのバッファを仮想的に
ファイルと見立ててデータの入出力を行い、バッファの
退避/復元に外部記憶装置との間で入出力を行うデータ
入出力方式において、バッファと外部記憶装置との間で
入出力を行う部分に、プログラム上で使用している装置
番号の先頭アドレスを管理するファイルアドレス管理部
および退避または復元したいバッファのレコード番号の
情報を得るためのレコードポインタテーブル設定部から
なるレコード番号管理部と、指定されたレコード番号が
ディスク上のどのファイル上に存在するかを調べるファ
イル番号検出部およびそのファイル上での実際のレコー
ド番号を決めるレコード番号設定部からなる入出力アド
レス管理部と、出力処理時にファイル番号検出部で指定
されたファイルが存在しない場合に、新規にファイルを
作成するためのファイル作成部とを設けたことを特徴と
する仮想ファイルによる高速入出力方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3028336A JP2842697B2 (ja) | 1991-02-22 | 1991-02-22 | 仮想ファイルによるデータ入出力方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3028336A JP2842697B2 (ja) | 1991-02-22 | 1991-02-22 | 仮想ファイルによるデータ入出力方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH04267421A true JPH04267421A (ja) | 1992-09-24 |
JP2842697B2 JP2842697B2 (ja) | 1999-01-06 |
Family
ID=12245770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3028336A Expired - Fee Related JP2842697B2 (ja) | 1991-02-22 | 1991-02-22 | 仮想ファイルによるデータ入出力方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2842697B2 (ja) |
-
1991
- 1991-02-22 JP JP3028336A patent/JP2842697B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2842697B2 (ja) | 1999-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8209693B2 (en) | System and method for processing series of processes in given order having processing status generation with tables storing status including beginning, end and existence segment | |
US7461201B2 (en) | Storage control method and system for performing backup and/or restoration | |
WO2024119775A1 (zh) | 一种raid卡的节点更新方法、系统及相关装置 | |
JPH0340868B2 (ja) | ||
US7082445B2 (en) | Fast data copy using a data copy track table | |
JPH04267421A (ja) | 仮想ファイルによるデータ入出力方式 | |
JP2785451B2 (ja) | 記憶制御方法および装置 | |
JPH08202595A (ja) | ファイルシステム | |
JP2000057013A (ja) | トレース情報採取装置及びプログラムを記録した機械読み取り可能な記録媒体 | |
JP2822869B2 (ja) | ライブラリファイル管理装置 | |
JP2004506259A (ja) | 仮想記憶システム | |
JPH0258653B2 (ja) | ||
JP2641399B2 (ja) | フアイル管理装置 | |
JP3099429B2 (ja) | Ipl処理におけるファイルデータの保存方法 | |
JPH04350738A (ja) | ディスクスペース管理方式 | |
JPH09231012A (ja) | 直接アクセス形外部記憶装置間のボリュームコピー方式 | |
JPH11249937A (ja) | コンピュータシステム | |
JP2994917B2 (ja) | 記憶システム | |
JPH0337748A (ja) | 主記憶を利用した外部記憶アクセス方式 | |
JP3009168B2 (ja) | データ処理装置 | |
JPH04105117A (ja) | データ入出力方式 | |
JPS5987572A (ja) | デイスク記憶装置制御方式 | |
JPH0823840B2 (ja) | デ−タベ−ス更新方法および装置 | |
JPH01163848A (ja) | ディスクファイルの二重更新防止方式 | |
JPH0512093A (ja) | フアイルブロツク排他解除方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19980922 |
|
LAPS | Cancellation because of no payment of annual fees |