JPS63247848A - デ−タ入出力方式 - Google Patents

デ−タ入出力方式

Info

Publication number
JPS63247848A
JPS63247848A JP62082329A JP8232987A JPS63247848A JP S63247848 A JPS63247848 A JP S63247848A JP 62082329 A JP62082329 A JP 62082329A JP 8232987 A JP8232987 A JP 8232987A JP S63247848 A JPS63247848 A JP S63247848A
Authority
JP
Japan
Prior art keywords
block
input
logical
area
buffer
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.)
Pending
Application number
JP62082329A
Other languages
English (en)
Inventor
Isao Kamoi
鴨井 功
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP62082329A priority Critical patent/JPS63247848A/ja
Publication of JPS63247848A publication Critical patent/JPS63247848A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は二次記憶装置と主記憶装置とのデータ入出力方
式に関する。
〔従来の技術〕
従来、固定長プロ・ツク内に格納されたレコードのサイ
ズ拡大が発生し、該当ブロック内に拡大要求を満たす空
きスペースが無かった場合や、新しいレコードの追加に
おいて、目的のブロックに空きスペースが無かった場合
に、以下の方式が採られていた。
(1)充分な空きスペースを持った別のブロックに再格
納する これまで格納されていたブロックにサイズ拡張の予備ス
ペースが無がった場合、そのブロックがら一旦、レコー
ド全体を削除し、サイズ拡張後のレコードが格納可能な
予備スペースを持つ別なブロックを捜して、格納する。
第二図はこの方式の動作を示す図である。
第二図を参照すると、ブロックn1に格納されていたレ
コードr1のフィールドf1のサイズが20バイトから
200バイトに拡張されたが、ブロックn1の予備スペ
ースは100バイトしがないため、拡張されたレコード
n1を格納出来ない。
その為、ブロックn1から一旦、レコード1−1を削除
し、拡張後のレコードr1のレコード長である480バ
イト以上の予備スペースを持つブロックとしてブロック
n2が割り当てられ、ブロックn2にレコードr1が格
納される。従って、この方式では対象レコードのレコー
ドアドレスが変更されることになる。
(2)オーバフロポインタ生成 方式(1)で発生するレコードアドレスの変更を回避す
る為に、元のブロックのレコード位置に制御情報(レコ
ード識別等)とオーバフロポインタだけを残し、レコー
ド実体を充分な空きスペースを持った別のブロックに再
格納する。第三図はこの方式の動作を示す図である。第
三図を参照すると、第二図の例と同様に、ブロックn1
に格納されていたレコードr1のフィールドf1のサイ
ズが20バイトから200バイトに拡張されたが、ブロ
ックn1の予備スペースは100バイトシかないため、
拡張されたレコードr1を格納出来ない。そこで、拡張
されたレコードr1を格納出来る空きブロックを捜し、
レコードr1を新しいブロックn2に格納する。その後
、ブロックnl中のレコードr1をレコードヘッダrh
lとブロックr2中のレコードr1を指すオーバフロポ
インタptrlだけから構成されるレコードに縮小する
〔発明が解決しようとする問題点〕
上述した従来方式(1)では、目的レコードのブロック
アドレスが変更されることになり、目的レコードが既存
レコードの場合で、他のレコードが目的レコードのアド
レスを持っている場合、それらのレコードの変更も必要
になり、処理を繁雑になる。第四図(a)は複数のレコ
ードが変更対象レコードのアドレスを持っていた場合の
影響について示している。第四図(a)を参照すると、
レコードX1のアドレスが100から200に変更され
ることによって、レコードx1のアドレスを持つ、レコ
ードa1の次方向ポインタ401とレコードX2の前方
向ポインタ402及びレコードb1の次方向ポインタ4
03とレコードx4の前方向ポインタ404を同時に変
更しなければならないことを示している。
また、目的レコードが親子関係にある複数の子レコード
を持っていた場合、目的レコードを削除する時、関係す
る子レコードの削除も必要になり、その親子関係を復元
する為の手続きが繁雑になり、処理オーバヘッドが増大
するという欠点がある。
第四図(b)は目的レコードが複数の子レコードを持っ
ている例を示している。第四図(b)を参照すると、レ
コードy1の変更の為に格納ブロックがブロックB1か
らブロックB2へ変更になり、レコードy1の子レコー
ドであるzl、z2.z3、z4も同時にレコードy1
が新たに格納されたブロックに移されている。
従来方式(2)ではブロックアドレスが変わることから
来る、従来方式(1)が持つ欠点が解消されるが、レコ
ードの格納またはサイズ拡大でオーバフロが発生した場
合、それらのレコードを処理する為に、一旦オーバフロ
ポインタのみを持つレコードをアクセスし、そこで得ら
れたオーバフロポインタで再度実レコードをアクセスす
るという特別のアクセス方法を導入する必要がある為、
レコードの処理手続きが複雑になるという欠点がある。
〔問題点を解決するための手段〕
本発明のデータ入出力方式は、レコードのアクセス要求
で指定されるブロック番号を持つ第一のブロック領域、
この第一のブロック領域でオーバフロが発生した場合に
前記第一のブロックからリンクして使われる第二のブロ
ック領域を持つファイルと、該ファイルの第一のブロッ
ク領域のブロック番号で、ブロックの入力要求が発行さ
れた時、第一のブロック領域をアクセスし、該ブロック
が第二のブロック領域へのポインタを持っている場合に
は、第二のブロック領域もアクセスし、第一のブロック
領域から入力した一個のブロックと、第二のブロック領
域から入力された任意器のブロックを連結した、一つの
論理ブロックとして主記憶上に展開するブロック入力部
料、バッファ上の論理ブロックとファイル上のブロック
の関係を記録した論理ブロック管理テーブルを備えた入
出力がバッファと、前記入出力バッファ上に展開された
論理ブロックにレコード追加の為の空き領域が無くなっ
たとき、第二のブロック領域から空きブロックを割り当
てると共に、入出力バッファ上の該論理ブロックに1ブ
ロック分の領域を追加し、対応する論理ブロック管理テ
ーブルを変更するブロック拡張部と、論理ブロックを、
主記憶上の入出力バッファから二次記憶装置上のファイ
ルへ書き出す要求が出た時、論理ブロック管理テーブル
に従って、一つの論理ブロックを、第一のブロック領域
と第二のブロック領域に分解して書き出すブロック出力
部とから成ることを特徴とする。
〔実施例〕
以下、本発明を図面を参照して詳細に説明する。
第一図は、本発明の一実施例を示す機能ブロック図であ
る。この方式は、第一のブロック領域11と第二のブロ
ック領域12とをもったファイル1と、主記憶上に論理
ブロックを展開する入出力バッファ2と、ブロック入力
要求が発行された時、第一のブロック領域と第二のブロ
ック領域から必要なブロックを読み込み、入出力バッフ
ァ上に論理ブロックとして展開するブロック入力部10
と、バッファ上の論理ブロックとファイル上のブロック
との関係を記録した論理ブロック管理テーブル3と、レ
コードの追加やサイズ拡張によって、バッファ上に展開
された論理ブロックのスペース不足が発生した場合に、
論理ブロックのサイズ拡張を行うブロック拡張部20と
、バッファ上の論理ブロックをファイル1に出力するブ
ロック出力部30を備えている。
以下、この方式の動作をブロック入力処理、ブロック拡
張処理、ブロック出力処理に分けて順次説明する。
■、ブロック入力処理 第五図は第一図のブロック入力部の概念を示す図である
。ブロック入力部10が論理ブロックしB1の入力要求
を受は収ると、第一のブロック領域のブロックB10と
、第二のブロック領域のブロックBll、B12をアク
セスし、入出力バッファ2上に論理ブロックLBIとし
て展開する。
第八図はブロック入力部10の処理内容を示すフローチ
ャートである。以下にこのフローの流れに沿って説明す
る。
ブロック入力部10は、第一のブロック領域内の特定の
ブロック番号を指定したブロック入力要求を受は取ると
、入出力バッファ2上に1ブロック分のスペースを確保
して(ステップ801)、最初に第一のブロック領域内
の指定されたブロックを入出力バッファ2に読み込む(
ステップ802)。その後、該当ブロックのブロックヘ
ッダを参照し、このブロックがオーバフロブロックを持
っている(第二のブロック領域へのポインタを持ってい
る)か否かを判定する(ステップ803)。
第六図はブロックヘッダの内容を示す図であり、各ブロ
ックを一意に識別できるブロック番号6゜1、該当ブロ
ックがオーバフロブロックを持つか否かを示すオーバフ
ロ識別602およびそのオーバフロブロックのブロック
番号を記録するオーバフロポインタ603が含まれてい
る。
ブロックヘッダ中のオーバフロ識別602がゼロであっ
た場合、このブロックはまだオーバフロブロックを持っ
ていないことになるので、ブロック入力処理を終了する
。オーバフロ識別602にゼロ以外が設定されていた場
合、オーバフロブロックを持っていることを意味する為
、オーバフロ識別602で示される個数分のバッファ領
域を、入出力バッファ上に最初に確保した1ブロック分
のスペースの直後に確保(ステップ804)した後、オ
ーバフロポインタ603を参照しながら、必要個数分の
第二のブロック内のブロックを人出カバッファ2に読み
込み、ブロックヘッダ中のオーバフロ識別がゼロになる
までこの処理を繰り返す(ステップ805)。リンクさ
れた全てのブロックの読み込みを終了した段階で、ブロ
ック入力部10の処理を終了する。ブロック入力部10
は、ブロック入力処理過程で、入出力バッファ2に展開
された論理ブロックと、ファイル中のブロックとの関係
を記録する為に論理ブロック管理テーブル3を作成する
。第七図は論理ブロック管理テーブル3の形式を示す図
である。第七図を参照すると、論理ブロック管理テーブ
ル3には、各論理ブロックのバッファアドレスを示すバ
ッファポインタ701と、有効ブロック数を示すブロッ
ク個数702、論理ブロック内の空きスペースを示すス
ペースサイズ703及び第一のブロック領域のブロック
番号(ブロック番号1)704、第二のブロック領域の
ブロック番号(ブロック番号2〜ブロツク番号n)70
5が記録されている。
■、ブロック拡張処理 入出力バッファ2上に展開された論理ブロックでレコー
ドの修正/追加を行う際に、ブロック内の空きスペース
が足りなくなると、ブロック拡張部が呼ばれる。第九図
はブロック拡張部20の処理内容を示すフローチャート
である。
ブロック拡張部20は、最初にファイル1中の第二のブ
ロック領域12から利用可能なブロックを捜しくステッ
プ901)、そのブロックを使用中にする(ステップ9
02)と共に、該当論理ブロックの論理ブロック管理テ
ーブル3(第七図参照)に、ブロック番号を追加し、有
効ブロック数を更新する(ステップ903)。その後、
該当論理ブロックのバッファ領域と連続してlブロック
分のバッファ領域を追加して(ステップ904)処理を
終了する。
■、ブロックの出力処理 通常のバッファ管理やレコードアクセス処理の終了等に
よって、入出力バッファ2上の論理ブロックを二次記憶
装置上のファイルへ出力する必要が生じると、ブロック
出力部30が呼ばれる。ブロックの出力処理は該当ブロ
ックの有効データを判定し、バッファ上に展開されてい
る論理ブロックイメージを、第一のブロック領域と、第
二のブロック領域に分解して出力する。この時、レコー
ドの削除やレコードの移動によって、該当ブロックに1
ブロック以上の空きスペースが発生していた場合、その
部分に該当する第二のブロック領域は空きブロックとし
て解放される。第五図に例示されている論理ブロックL
B2でこの動作を説明すると、論理ブロックLB2の入
力時には、第一ブロック領域のブロックB20と第二の
ブロック領域のブロックB21から展開されていたが、
その後の更新によって、有効データが第一のブロック領
域のブロックB20だけで足りた場合、論理ブロックL
B2の出力処理で、第二のブロック領域のブロックB2
1が解放され、第一のブロック領域の820だけが書き
戻される。
第十図はブロック出力部30の制御を示すフローチャー
トである。ブロック出力部30は入出力バッファ2上に
ある論理ブロックの出力要求を受は取ると、論理ブロッ
ク管理テーブル3中の利用可能スペースをチェックしく
ステップ1001)、ブロックの解放処理が必要か否か
をチェックする。
解放する必要がある場合、論理ブロック管理テーブル3
の最下位エントリから、利用可能スペースがブロックサ
イズを下回るエントリまで、解放処理を繰り返す(ステ
ップ1002)。解放処理が終了すると、論理プロ・ツ
ク管理テーブル3の最上位エントリを、第一ブロック領
域の対応ブロックに出力する(ステップ1003)。そ
の際、論理ブロック管理テーブル3の第二エントリ以下
に有効エントリがある場合は、第一ブロック領域の対応
ブロックのブロックヘッダのオーバフロポインタに第二
エントリに示されるブロック番号と、オーバフロ識別に
第二エントリ以下の有効エントリ数を設定する。第二エ
ントリ以下が存在しない場合はオーバフロポインタ及び
オーバフロ識別にゼロが設定される。
第二エントリ以下が存在した場合、次のエントリのブロ
ック番号をブロックヘッダのオーバフロポインタに設定
し、第ニブロック領域の該当ブロックに出力する処理を
、有効エントリが終了するまで繰り返す(ステップ10
04)。
〔発明の効果〕
本発明は以上説明したように、レコードの新規追加や、
既存レコードのサイズ拡張時に、指定されたブロック番
号に対応するブロックに空きスペースが無くとも、該当
レコードに割り当てたブロック番号を変更することなく
、レコードの追加、サイズ拡張を可能にし、且つ、同一
のブロック番号でアクセスされるレコードが物理的には
別ブロックに格納されてもバッファ上では一つのブロッ
クに格納されているように汲える為、従来までの欠点と
されていた、格納ブロック番号が変更されることによる
他のレコードの変更処理を不要に出来るという効果、及
び格納ブロックが分散することから来る繁雑な処理が不
要になるという効果がある。
【図面の簡単な説明】
第一図は本発明の一実施例を示すブロック図である。第
二図と第三図は従来例の説明図、第四図は従来例でのレ
コード関係の一例を示す説明図である。第五図は本発明
の動作の概要を示す説明図、第六図は本発明の一実施例
でのブロックヘッダの構成図、第七図は本発明の一実施
例での論理ブロック管理テーブルの構成図である。第八
図、第九図、第十図は第一図中のブロック入力部、ブロ
ック拡張部、ブロック出力部のフローチャートである。 1・・・二次記憶装置上のファイル、11・・・ファイ
ル中の第一のブロック領域、12・・・ファイル中の第
二のブロック領域、2・・・入出力バッファ、3・・・
論理ブロック管理テーブル、1o・・・ブロック入力部
、20・・・ブロック拡張部、30・・・ブロック出力
第二図 vI、−図 ルト了

Claims (1)

    【特許請求の範囲】
  1. レコードのアクセス要求で指定されるブロック番号を持
    つ第一のブロック領域、この第一のブロック領域でオー
    バフロが発生した場合に前記第一のブロックからリンク
    して使われる第二のブロック領域を持つファイルと、該
    ファイルの第一のブロック領域のブロック番号で、ブロ
    ックの入力要求が発行された時、第一のブロック領域を
    アクセスし、該ブロックが第二のブロック領域へのポイ
    ンタを持っている場合には、第二のブロック領域もアク
    セスし、第一のブロック領域から入力した一個のブロッ
    クと、第二のブロック領域から入力された任意個のブロ
    ックを連結した、一つの論理ブロックとして主記憶上に
    展開するブロック入力部と、バッファ上の論理ブロック
    とファイル上のブロックの関係を記録した論理ブロック
    管理テーブルを備えた入出力がバッファと、前記入出力
    バッファ上に展開された論理ブロックにレコード追加の
    為の空き領域が無くなったとき、第二のブロック領域か
    ら空きブロックを割り当てると共に、入出力バッファ上
    の該論理ブロックに1ブロック分の領域を追加し、対応
    する論理ブロック管理テーブルを変更するブロック拡張
    部と、論理ブロックを、主記憶上の入出力バッファから
    二次記憶装置上のファイルへ書き出す要求が出た時、論
    理ブロック管理テーブルに従って、一つの論理ブロック
    を、第一のブロック領域と第二のブロック領域に分解し
    て書き出すブロック出力部とから成ることを特徴とする
    データ入出力方式。
JP62082329A 1987-04-02 1987-04-02 デ−タ入出力方式 Pending JPS63247848A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP62082329A JPS63247848A (ja) 1987-04-02 1987-04-02 デ−タ入出力方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP62082329A JPS63247848A (ja) 1987-04-02 1987-04-02 デ−タ入出力方式

Publications (1)

Publication Number Publication Date
JPS63247848A true JPS63247848A (ja) 1988-10-14

Family

ID=13771517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62082329A Pending JPS63247848A (ja) 1987-04-02 1987-04-02 デ−タ入出力方式

Country Status (1)

Country Link
JP (1) JPS63247848A (ja)

Similar Documents

Publication Publication Date Title
JP3609841B2 (ja) ファイル管理装置
JPS63247848A (ja) デ−タ入出力方式
CN111290709B (zh) 一种可动态调整的环形缓冲区
US5430846A (en) List-based buffering mechanism for buffering data between processes in a data processing system
JPH06110759A (ja) ファイルシステム
JP2704028B2 (ja) ファイル領域管理方式
GB2328531A (en) Storing a long record in a set of shorter keyed records
JPH05225012A (ja) データ列変換復元方法
JPH0833836B2 (ja) 共有資源管理処理方式
JPH01237853A (ja) データ管理装置
JP2615046B2 (ja) レコード追加処理方法
JPH0423143A (ja) データの蓄積方式
JP6794827B2 (ja) ストレージ管理装置、ストレージシステム、方法およびプログラム
JPS6016661B2 (ja) 主メモリ割付方式
JPS62154149A (ja) 領域共用フアイルのデ−タ領域割当て制御方式
JPH04350738A (ja) ディスクスペース管理方式
CN117724990A (zh) 一种nvm空间分配方法和装置
JPH0336640A (ja) レコード格納スペース制御方式
JP2605476B2 (ja) ダンプ採取処理方法
JPH0283639A (ja) ファイル作成制御方法
JP2000148550A (ja) ファイルの領域管理方法及び空き領域管理方法
JPH03100742A (ja) ファイル格納方式
JPH0432419B2 (ja)
JPH02253450A (ja) ファイル管理方法とファイル編集方法
JPS62229344A (ja) デ−タ格納方式