(57)【要約】  【課題】  与えられた一定容量の前記主記憶装置における読み出しバッファ領域を、必要に応じて破壊しながら効率よく使用し、かつ、特定の読み出しデータは、破壊されにくい場所に移動して主記憶管理を行うこと。  【解決手段】  補助記憶装置と、補助記憶装置からの読出しデータと処理結果を格納する主記憶装置と、読出しデータを用いて応用処理を実行する応用処理装置とを備えたデータ処理システムで、前記読出しデータを前記主記憶装置の記憶領域の先頭または末尾のいずれか一方から格納して読出しバッファ領域とし、処理結果を前記主記憶装置の記憶領域の他方から格納して処理結果格納領域とし、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へも処理結果を格納するようにした。【選択図】  図２
2005032114.tif 000002
【特許請求の範囲】
【請求項１】
データ処理に必要なデータを格納する補助記憶装置と、補助記憶装置から読み出されたデータを読出しデータとして格納するとともに、データ処理されて得られた結果を格納する主記憶装置と、読出しデータを用いて応用処理を実行する応用処理装置とを備えたデータ処理システムにおける主記憶管理方法であって、
前記読出しデータを前記主記憶装置の記憶領域の先頭または末尾のいずれか一方から格納して読出しバッファ領域とし、処理結果を前記主記憶装置の記憶領域の他方から格納して処理結果格納領域とし、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へも処理結果を格納するようにしたことを特徴とするデータ処理システムにおける主記憶管理方法。
【請求項２】
前記応用処理装置は、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域の、処理結果格納領域との境界線付近に格納されていた読出しデータを破壊して読出しバッファ領域へ処理結果を格納することを特徴とする請求項１記載のデータ処理システムにおける主記憶管理方法。
【請求項３】
前記応用処理装置は、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へ処理結果を格納し、さらに、前記読出しバッファ領域に格納されている読出しデータを、処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させることを特徴とする請求項１記載のデータ処理システムにおける主記憶管理方法。
【請求項４】
前記応用処理装置は、処理結果格納領域との境界線付近の読出しバッファ領域に格納されていた読出しデータを破壊して読出しバッファ領域へ処理結果を格納したときは、破壊された読出しデータ以外のデータを処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させることを特徴とする請求項２記載のデータ処理システムにおける主記憶管理方法。
【請求項５】
前記応用処理装置は、読出しデータを処理結果格納領域との境界線から遠い位置へ移動させるとき、使用頻度の高い読出しデータほど処理結果格納領域との境界線からより一層遠い読出しバッファ領域内の位置へ移動させることを特徴とする請求項３または４記載のデータ処理システムにおける主記憶管理方法。
【請求項６】
データ処理に必要なデータを格納する補助記憶装置と、前記補助記憶装置から読み出されたデータを読出しデータとして格納するとともに、データ処理されて得られた結果を格納する主記憶装置と、読出しデータを用いて応用処理を実行する応用処理装置とを備えたデータ処理システムにおいて、
前記応用処理装置は、
前記補助記憶装置から読み出した情報の管理情報を記録する読み出しバッファ管理情報を記録する読み出しバッファ管理情報記録手段と、
現時点での前記主記憶装置に格納されている処理結果の末尾の位置を記録する現在使用位置記憶手段と、
前記補助記憶からの最後の呼び出し以降から、現時点までの処理結果の最大の使用末尾位置を記録する最大使用末尾位置記憶手段と、
前記現在使用末尾位置記憶手段と、前記最大使用末尾位置記憶手段と、前記読み出しバッファ管理情報記憶手段とからの情報を用いて、処理結果の使用状況を必要に応じて、得られた処理結果を前記主記憶装置の先頭部分に格納して所望の処理結果を得る応用処理手段と、
前記補助記憶から読み出した呼び出し結果の管理と、呼び出す際の読み出し先の位置を決定すると共に、前記応用処理手段の処理結果の格納に伴い、末尾部分の読み出しデータが破壊されたことを検知して、読み出し結果の格納位置を管理する読み出しバッファ管理手段と、
を備えたデータ処理システムの主記憶管理装置。
【請求項７】
前記応用処理手段が前記読み出しバッファ管理手段に読み出し要求を最後に発行してから、次の呼び出し要求の間で使用した処理結果の末尾位置の最大値を、前記最大使用末尾位置が変化する度に更新することを特徴とする請求項６記載のデータ処理システムの主記憶管理装置。
【請求項８】
前記読み出しバッファ管理手段を呼び出すごとに、現在の前記主記憶装置の先頭部分の使用末尾位置の値を現在使用末尾位置記憶手段に格納することを特徴とする請求項７記載のデータ処理システムの主記憶管理装置。
【請求項９】
前記読み出しバッファ管理手段が呼び出されたときに、現在使用末尾位置記憶手段と、最大使用末尾位置記憶手段の値を参照して、前記主記憶装置の末尾部部分の呼び出した情報のどこまでが有効かを判断して最大使用末尾位置記憶手段の値を更新することを特徴とする請求項８記載のデータ処理システムの主記憶管理装置。
【請求項１０】
前記応用処理装置がＲＤＢ、全文検索などの検索処理を行う装置であって、前記補助記憶装置に格納され、読み出されるデータが索引情報であって、前記応用処理手段が、検索処理を行う手段であり、前記処理結果が、検索結果であることを特徴とする請求項６記載のデータ処理システムの主記憶管理装置。
【請求項１１】
前記補助記憶装置から前記主記憶装置に読み出したデータの中で、再び参照される可能性が高いものほど、可能な限り、前記主記憶装置の読出しバッファ領域の処理結果格納領域との境界線から最も遠い位置に配置することを特徴とする請求項８記載のデータ処理システムの主記憶管理装置。
【請求項１２】
前記補助記憶装置から読み出したデータは、最も最近に呼び出された、またはアクセスされた読み出しデータほど、再び参照される可能性が高いとみなし、前記応用処理手段よりデータ読み出しの要求が来る度に、前記主記憶装置の読出しバッファ領域の処理結果格納領域との境界線から最も遠い位置に格納することを特徴とする請求項８記載のデータ処理システムの主記憶管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶装置を利用するデータ処理システムにおける主記憶管理方法及び装置に関するものである。
【背景技術】
【０００２】
UNIX（登録商標）や、Windows（登録商標）など既存のオペレーティングシステムのアドレス空間は、テキスト、データ、スタックの３つのセグメントに分かれており、データセグメントは主記憶装置の先頭から使用していき（この領域を処理結果格納領域、すなわち、データ領域という）、スタックは主記憶装置の末尾部分から使用していく  （この領域をバッファ領域という）という主記憶管理の方法が一般的に使用されている。これは、次のような非特許文献（１）〜（３）などにおいて、記載されており、広く一般的に知られている。なお、この主記憶管理方法は、組込み機器などの容量の制限された主記憶装置の一般的な使用でも、従来用いられている。
【非特許文献１】Maurice J. Bach ，「UNIXカーネルの設計」，共立出版株式会社，1991年6 月10日発行。
【非特許文献２】山口和紀，「The Unix Super Text ( 上) 」，技術評論社，平成4 年9 月1 日発行。
【非特許文献３】James E. Beveridge/ Robert Wiener ，「Win32 マルチスレッドプログラミング」，株式会社アスキー，1997年9 月1 日発行。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の方式では、主記憶装置の先頭から読み込むデータ領域の部分と、末尾から読み込むバッファ領域の部分とが衝突した際に、両方の領域を破壊しないようにするため、上記先頭と末尾の中間部分で主記憶装置の記憶領域を仕切り（すなわち、境界線を設け）先頭と末尾のいずれから使用しても上記境界線を越えては使用できない（すなわち、書き込みができない）ようにしている。そのため、データの性質によっては、主記憶装置にほとんど読み込まれることのない領域が存在しており、無駄な主記憶装置の領域を生じさせてしてしまうという問題があった。
【０００４】
また、読み出し要求のない前記主記憶装置の末尾部分に格納される読み出しデータの領域は最初に入ったものが主記憶装置の末尾に保持され、最近読み出したばかりのデータが頻繁に読み書きされるため、主記憶装置を非効率的に使用している可能性が高いという問題点がある。
【０００５】
本発明は、上述した問題点を解決するためになされたもので、その第１の目的は、与えられた一定容量の前記主記憶装置の記憶領域のうち読み出しバッファ領域を、必要に応じて一部破壊しながら効率よく使用することである。
【０００６】
本発明の第２の目的は、前述のように読み出しバッファ領域を一部破壊しながらも、読み出しバッファ領域に格納された読出しデータのうち頻繁に読み出される可能性の高い読出しデータは、破壊されにくい場所に移動（退避）して主記憶管理を行うことで、前記主記憶装置の記憶領域をより効率的に使用することである。
【課題を解決するための手段】
【０００７】
本発明は、上記目的を達成するために、データ処理に必要なデータを格納する補助記憶装置と、補助記憶装置から読み出されたデータを読出しデータとして格納するとともに、データ処理されて得られた結果を格納する主記憶装置と、読出しデータを用いて応用処理
を実行する応用処理装置とを備えたデータ処理システムにおける主記憶管理方法であって、
前記読出しデータを前記主記憶装置の記憶領域の先頭または末尾のいずれか一方から格納して読出しバッファ領域とし、処理結果を前記主記憶装置の記憶領域の他方から格納して処理結果格納領域とし、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へも処理結果を格納するようにしたものである。これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することができる。
【０００８】
本発明はまた、応用処理結果を格納することにより、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域の、処理結果格納領域との境界線付近に格納されていた読出しデータを破壊して読出しバッファ領域へ処理結果を格納するようにしたことを特徴とする。これにより、主記憶装置の記憶領域にはより重要なデータを優先的に格納することができ、上記重要データの保持を図ることができる。
【０００９】
本発明はまた、応用処理結果を格納することにより、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へ処理結果を格納し、さらに、前記読出しバッファ領域に格納されている読出しデータを、処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させるようにしたものである。これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することを図りつつ、読出しバッファについては、未だ破壊されていない読出しデータのうち、重要なデータを主記憶装置のより末尾の領域へ退避させることができる。
【００１０】
本発明はまた、応用処理結果を格納するために処理結果格納領域との境界線付近の読出しバッファ領域に格納されていた読出しデータを破壊して読出しバッファ領域へ処理結果を格納したときは、破壊された読出しデータ以外のデータを処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させるようにしたものである。これにより、
破壊されていないデータが保護され、さらなるデータ処理を迅速に実行することができる。
【００１１】
本発明はまた、応用処理結果を格納するために読出しデータを処理結果格納領域との境界線から遠い位置へ移動させるとき、使用頻度の高い読出しデータほど処理結果格納領域との境界線からより一層遠い読出しバッファ領域内の位置へ移動させるようにしたものである。これにより、使用頻度の高い読出しデータの保護を図るとともに、その読出しデータを使用した処理をより迅速化することができる。
【００１２】
本発明はまた、データ処理に必要なデータを格納する補助記憶装置と、前記補助記憶装
置から読み出されたデータを読出しデータとして読出しバッファ領域に格納するとともに、データ処理されて得られた結果を処理結果格納領域に格納する主記憶装置と、読出しデータを用いて応用処理を実行する応用処理装置とを備えたデータ処理システムの主記憶管理装置であって、前記補助記憶装置から読み出した情報の管理情報を記録する読み出しバッファ管理情報を記録する読み出しバッファ管理情報記録手段と、現時点での前記主記憶装置に格納されている処理結果の末尾の位置を記録する現在使用位置記憶手段と、前記補助記憶からの最後の呼び出し以降から、現時点までの処理結果の最大の使用末尾位置を記録する最大使用末尾位置記憶手段と、前記現在使用末尾位置記憶手段と、前記最大使用末尾位置記憶手段と、前記読み出しバッファ管理情報記憶手段とからの情報を用いて、処理結果の使用状況を必要に応じて、得られた処理結果を前記主記憶装置の先頭部分に格納して所望の処理結果を得る応用処理手段と、前記補助記憶から読み出した呼び出し結果の管理と、呼び出す際の読み出し先の位置を決定すると共に、前記応用処理手段の処理結果の格納に伴い、末尾部分の読み出し結果が破壊されたことを検知して、読み出し結果の格納位置を管理する読み出しバッファ管理手段とを備えたものである。かかる構成において、前記読出しデータを前記主記憶装置の記憶領域の先頭または末尾のいずれか一方から格納して読出しバッファ領域とし、処理結果を前記主記憶装置の記憶領域の他方から格納して処理結果格納領域とし、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へも処理結果を格納するようにしたものである。これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することができる。
【００１３】
本発明はまた、応用処理手段が前記読み出しバッファ管理手段に読み出し要求を最後に発行してから、次の呼び出し要求の間で使用した処理結果の末尾位置の最大値を、前記最大使用末尾位置が変化する度に更新するようにしたものである。これにより、最大使用末尾位置を常に把握しておき、読出しバッファ領域への進入格納の要否を判断することができる。
【００１４】
本発明はまた、応用処理手段が読み出しバッファ管理手段を呼び出すごとに、現在の前記主記憶装置の先頭部分の使用末尾位置の値を現在使用末尾位置記憶手段に格納するようにしたものである。これにより、現在使用末尾位置がどこまで進出してきているかを把握し、読出しバッファ領域への進入の有無を判断することができる。
【００１５】
本発明はまた、読み出しバッファ管理手段が呼び出されたときに、現在使用末尾位置記憶手段と、最大使用末尾位置記憶手段の値を参照して、前記主記憶装置の末尾部部分の呼び出した情報のどこまでが有効かを判断して最大使用末尾位置記憶手段の値を更新するようにしたものである。これにより、データ処理にあたっての有効データ、無効データの判断ができ、正しいデータ処理が行なえる。
【００１６】
本発明はまた、応用処理装置がＲＤＢ、全文検索などの検索処理を行う装置であって、前記補助記憶装置に格納され、読み出されるデータが索引情報であって、前記応用処理手段が、検索処理を行う手段であり、前記処理結果が、検索結果であるようにしたものである。これにより、ナビゲーション装置や文書管理装置において、主記憶装置を効率的に使ったデータ処理を行なうことが可能になる。
【００１７】
本発明はまた、読出しバッファ領域へ進出して処理結果を格納した場合に、補助記憶装置から読み出したデータの中で、再び参照される可能性が高いものほど、可能な限り、処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させるようにしたものである。これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することを図りつつ、読出しバッファについては、再び参照される可能性が高い重要なデータを主記憶装置のより末端の領域へ退避させることができる。
【００１８】
本発明はまた、読出しバッファ領域へ進出して処理結果を格納した場合に、補助記憶装置から読み出したデータの中で、最も最近に呼び出された、またはアクセスされた読み出しデータほど、可能な限り、処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させるようにしたものである。これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することを図りつつ、読出しバッファについては、最も最近に呼び出され、再び参照される可能性が高い読出しデータを主記憶装置のより末端の領域へ退避させることができる。
【発明の効果】
【００１９】
以上のように、本発明によれば、補助記憶装置と、補助記憶装置からの読出しデータと処理結果を格納する主記憶装置と、読出しデータを用いて応用処理を実行する応用処理装置とを備えたデータ処理システムにおいて、前記読出しデータを前記主記憶装置の記憶領域の先頭または末尾のいずれか一方から格納して読出しバッファ領域とし、処理結果を前記主記憶装置の記憶領域の他方から格納して処理結果格納領域とし、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へも処理結果を格納するようにしたため、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することができる。
【００２０】
また、本発明によれば、応用処理結果を格納することにより、処理結果格納領域が所定の格納レベルを越えたとき、読出しバッファ領域へ処理結果を格納し、さらに、前記読出しバッファ領域に格納されている読出しデータを、処理結果格納領域との境界線から遠い読出しバッファ領域内の位置へ移動させるようにしたものである。これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の記憶領域を使用して格納することを図りつつ、読出しバッファについては、未だ破壊されていない読出しデータのうち、重要なデータを主記憶装置のより末端の領域へ退避させることができる。
【発明を実施するための最良の形態】
【００２１】
（実施の形態１）
以下、本発明の実施の形態を図面を参照しながら具体的に説明する。図１は，本発明の第１の実施の形態が適用されるデータ処理システムのハードウェア構成例を示すブロック
図である。図中、１は所望の応用処理に対する入力を行うためのキーボード等の入力装置、２は得られた応用処理結果を表示するためのモニタ等の表示装置、３は高速にデータの読み書きが行えるＤＲＡＭ等の主記憶装置、４は応用処理に必要な情報を格納するハードディスク等の補助記憶装置、５は検索処理等の応用処理（すなわち、データ処理）を実行する応用処理装置、６は入力装置１、表示装置２、主記憶装置３、補助記憶装置４、応用処理装置５の処理動作を制御する制御装置を表す。
【００２２】
主記憶装置３は制御装置６からの指令により応用処理装置５が処理に必要とするデータを補助記憶装置４から読み出し、この読出しデータを所定の領域に格納して読出しバッファとする。応用処理装置５は、主記憶装置３に格納された読出しデータに対し処理を行って、それにより得られた結果を再び主記憶装置３に格納する、という基本的な機能を有している。応用処理装置５の応用処理機能としては、ナビゲーション装置における文字列検索処理や経路検索処理、或いは文書管理における文字列検索処理などが該当する。制御装置６はＣＰＵから構成され、システム制御部としての機能を有する。応用処理装置５は制御装置６からの指令を受けて各種演算処理を行なうマイクロコンピュータから構成される。
【００２３】
図２は図１に示されたデータ処理システムの応用処理装置５の内部構成を示すブロック図である。本実施の形態における応用処理装置５は、応用処理機能のみならず主記憶管理機能を有しており、そのための各種手段を備えている。図２において、２１は文字列検索処理等、応用処理装置５の基本的な機能である所望の応用処理を行う応用処理手段、２５は応用処理に必要なデータを補助記憶装置４から、主記憶装置３へ読み出してバッファ領域として使用した場合の、読出しバッファ領域中のデータの管理情報を記憶する読出しバッファ管理情報記憶手段、２３は読出しバッファのデータに対し、所望の応用処理を行って得られた結果を主記憶装置３に格納し、その領域を処理（中間）結果格納領域として使用した場合の、処理（中間）結果格納域の使用末尾位置を記憶する現在使用末尾位置記憶手段、２４は主記憶装置３における、前回の処理結果格納動作時に現在使用末尾位置の中で、最大の使用位置を記憶する最大使用末尾位置記憶手段、２２は応用処理手段２１から命令が来るたびに，現在使用末尾位置記憶手段２３、最大使用末尾位置記憶手段２４、読出しバッファ管理情報記憶手段２５の値を見ながら、必要に応じて読出しバッファ管理情報記憶手段２５の内容を変更する読出しバッファ管理手段を表す。
【００２４】
図３は、本実施の形態に係るデータ処理システムにおける主記憶装置３の管理状況を説明する概念図である。主記憶装置３は、図３に示す主記憶イメージのように、記憶領域の最後部側の末端に当たるアドレス末尾部（以下、単に末尾部という）を補助記憶装置４から読み出したデータ（読出しデータ）を格納する読出しバッファ領域１１として用いる一方、記憶領域の開始部側の末端に当たるアドレス先頭部（以下、単に先頭部という）を前記応用処理装置５にて所望の読出しデータに対し処理を行って得られた結果（中間結果を含む）を格納する処理（中間）結果格納領域１２として用い、かつ、読出しバッファ領域
１１は随時、処理結果格納領域１２のサイズに応じ、動的に変化することを前提とする。
【００２５】
また、本発明における主記憶装置３は、図３の概念図にあるように、補助記憶装置４から一時的に必要なデータを格納する領域が読出しバッファ領域１１であり、かつ、そのデータに対し必要な応用処理を行って得られた結果を格納する領域を処理結果格納領域１２として使用する主記憶装置であり、特に、処理結果格納領域１２と読出しバッファ領域１１とをそれぞれ主記憶装置の先頭、末尾部分から使用していき、場合応じ、読出しバッファ領域１１を破壊しながら処理結果格納領域１１を最大限使用する主記憶装置である。
【００２６】
図４は、本実施の形態に係るデータ処理システムにおける主記憶装置３の管理情報の例を説明する概念図である。ここで、読出しバッファ領域１１における読出しデータの格納状態について図４を参照して説明する。主記憶装置３の末尾には、読出しバッファ領域１１に格納されている読出しデータの情報として、ブロック単位サイズ１４と、有効セグメント数１５と、バッファ先頭アドレス１６とが読出しバッファ管理ヘッダ情報として格納される。ブロック単位サイズ１４としては例えば２００ＫＢ（キロバイト）である等の設定がなされる。有効セグメント数１５とは、この読出しバッファ領域に格納された読出しデータの本体を成すセグメントの個数である。バッファ先頭アドレス１６とは、主記憶装置３の中で読出しバッファ領域１１がスタートするアドレス番号を表し、バッファヘッド（ｂｕｆ＿ｈｅａｄ）１７とは、読出しバッファ領域１１での先頭位置を表す。このバッファヘッド１７はまた、主記憶装置３の記憶領域における読出しバッファ領域１１と処理結果格納領域１２との境界線をなす線でもある。ただし、この境界線は、読出しバッファ領域１１と処理結果格納領域１２とを完全に区切るものではなく、処理結果格納領域１２側から読出しバッファ領域１１側へ進出して上書き可能に設定されている。また、この実施の形態においては、読出しバッファ領域１１側から処理結果格納領域１２側へは進出して上書きすることは不可能に設定されている。
【００２７】
次いでこの読出しバッファ管理ヘッダ情報の上位アドレス側には実際の読出しデータおよびその管理情報が格納されている。例えば図４において「データ領域１」およびその下側に記載された「１：１００：２」について具体例を説明する。これはデータ領域１に格納されている読出しデータに関する管理情報を表しており、「１」はこの読出しバッファ領域１１におけるデータ領域１のバッファ管理番号が「１」であることを示し、「１０・・０」は当該読出しデータの読込み先頭アドレス、すなわち、当該読出しデータがスタートする補助記憶装置４における先頭アドレス番号が「１００」であることを示す。また「・・２」は当該読出しデータの読込みサイズ、すなわち、データ本体を成すセグメント（セグメント番号は１と表される）のブロックサイズが「２」であり、２ブロックを読出しデータの本体として使用していることを表している。
【００２８】
データ領域２、およびデータ領域３に格納されている読出しデータに関する管理情報に
ついても同様である。すなわち、データ領域２に格納されている読出しデータについては、バッファ管理番号は「２」、読込み先頭アドレスは「３０００」、データ本体を成すセグメント（セグメント番号は２と表される）の読込みサイズは「４（ブロック）」であり、また、データ領域３に格納されている読出しデータについては、バッファ管理番号は「・・３」、読込み先頭アドレスは「１００００」、データ本体を成すセグメント（セグメント番号は３と表される）の読込みサイズは「１２（ブロック）」であることがわかる。これらの管理情報は、読出しバッファ管理手段２２において生成され、読出しバッファ管理情報記憶手段２５に格納されている。なお、主記憶装置３に記憶されている格納データが充分に少なく記憶領域に余裕があるときは、読出しバッファ領域１１と処理結果格納領域１２との間には空き領域１３が存在する。
【００２９】
以上の構成を有するデータ処理システムについて図５のフローチャートを参照して動作を説明する。ここでは、データ処理システムは、文字列などを基にデータを検索する検索装置であるとする。
【００３０】
まず第１に、上記データ処理システムの基本動作について説明すると、最初に、初期値として現在使用末尾位置記憶手段２３と、最大使用末尾位置記憶手段２４に、主記憶装置３の先頭アドレスの値がセットされる（ステップＳＴ１）。
【００３１】
より具体的には、現在使用末尾位置記憶手段２３が内部に保持するパラメータである、現在使用末尾位置（ｃｕｒｒｅｎｔ＿ｒｅｓ）に、上記主記憶装置３の先頭アドレスの値がセットされる。同様に、最大使用末尾位置記憶手段２４が内部に保持するパラメータである、最大使用末尾位置（ｍａｘ＿ｒｅｓ）に、上記主記憶装置３の先頭アドレスの値がセットされる。
【００３２】
次にユーザから検索要求が来たか否かをチェックし（ステップＳＴ２）、ユーザから検索要求が来なければ処理を終了する一方、ユーザから検索要求が来ると、応用処理手段２１は所望の処理を実施するために必要なデータについて主記憶装置３または補助記憶装置４よりデータの読出しを試み、文字列対象辞書の補助記憶装置４（ハードディスク）内におけるアドレスおよびデータサイズを取得する（ステップＳＴ３）。特に、ここでは、データ処理システムは、検索装置であるので、図６にあるような入力文字列を含むレコード番号集合に関する情報が記録された索引辞書などの読出しに用いる。なお、図５のＳＴ３における「ＨＤＤ＿ａｄｒ」とは、文字列対象辞書のＨＤＤ内アドレスを示し、「ｓｉｚｅ」とは対象辞書のサイズを示す。
【００３３】
次に応用処理手段２１は辞書などの読出しデータの読込み可能領域が存在するか否かをチェックし（ステップＳＴ４）、読出しデータの読込み可能領域が存在する場合はバッファ破壊が発生しているか否かをチェックする（ステップＳＴ５）。
【００３４】
バッファ破壊とは、次の状況をいう。すなわち、応用処理手段２１は所望の処理を実行するために主記憶装置３に格納された読出しデータに対し処理を行って、それにより得られた結果を再び主記憶装置３に格納する、という動作を基本動作として実行する。仮に処理実行に必要なデータが主記憶装置３に存在しないときは補助記憶装置４に対してデータの読出しを行ない、読出しデータを主記憶装置３の読出しバッファ領域１１に書き込む。応用処理装置５が上記処理実行を繰り返し行なうことにより、処理結果格納領域１２には先頭アドレスから順次データの書き込みが行なわれて行き、空き領域１３が次第に少なくなる。その状況は現在使用末尾位置記憶手段２３と、最大使用末尾位置記憶手段２４にセ
ットされたアドレス情報をもとに読出しバッファ管理手段２２により監視される。そして、応用処理手段２１による処理結果の格納により処理結果格納領域１２が満杯となりさらに処理結果が増えれば、増えた分の処理結果が設定ライン（読出しバッファ領域１１との境界線）を越えて読出しバッファ領域１１側に上書きされ、格納される。この状況を、読出しバッファ領域１１の破壊という。図７は上記読出しバッファ領域１１の破壊が起こる前と後の状況を説明するもので、図７の左側に示された主記憶装置３では処理結果格納領域１２へのデータの書き込みにより空き領域１３が次第に少なくなっている状況を示し、図７の右側に示された主記憶装置３では処理結果格納領域１２へのデータの書き込みにより処理結果格納領域１２に設定ラインを越えて処理結果が格納され、読出しバッファ領域１１の破壊が起こった状況を示す。
【００３５】
ステップＳＴ５においてバッファ破壊が起こっている場合は、読込みバッファ管理手段２２は読込みバッファ管理情報記憶手段２５に記憶されているバッファ管理情報を更新する（ステップＳＴ６）。この動作では、読出しバッファ管理手段２２はバッファヘッドの
値を最大使用末尾位置記憶手段２４に記憶されたアドレスに１を加えた値に変更設定する。
【００３６】
図８は読出しバッファが破壊されたときの読出しバッファ管理情報の更新動作を説明する図である。読出しバッファ管理手段２２は、読出しバッファ内容の破壊を検知して、破壊が起きていれば読出しバッファ管理情報記憶手段２５の内容を図８のように変更する。  
【００３７】
図８において、読出しバッファ管理情報記憶手段２５に格納されている変更前の主記憶装置３の管理情報は図８の左側に示された主記憶装置３に表示されており、次の通りである。すなわち、先頭アドレスからＫ番地までは処理結果格納領域１２である。次にＫ＋１番地からＫ＋Ｉ番地までは空き領域１３である。他方末尾側のＪ番地にはバッファ先頭アドレスの情報が格納され、Ｊ−１（Ｊマイナス１のことである。以下同じ）番地には有効セグメント数が格納され、Ｊ−２番地にはブロック単位サイズが格納され、Ｊ−３番地にはデータ領域１の読出しデータのバッファ管理番号、読込み先頭アドレス、読込みサイズの情報が格納されている。また、Ｊ−５およびＪ−６番地にはデータ領域１の読出しデータのデータ本体を成すセグメントが格納されている。また、Ｊ−７番地にはデータ領域２の読出しデータのバッファ管理番号、読込み先頭アドレス、読込みサイズの情報が格納されている。また、Ｊ−８〜Ｊ−１１番地にはデータ領域２の読出しデータのデータ本体を成すセグメントが格納されている。また、Ｊ−１２番地にはデータ領域３の読出しデータのバッファ管理番号、読込み先頭アドレス、読込みサイズの情報が格納されている。さらに、Ｊ−１３〜Ｊ−Ｉ＋１番地にはデータ領域３の読出しデータのデータ本体を成すセグメントが格納されている。
【００３８】
他方、図８において、読出しバッファ管理情報記憶手段２５に格納されている変更後の主記憶装置３の管理情報は図８の右側に示された主記憶装置３に表示されており、次の通りである。すなわち、先頭アドレスからＫ番地までは処理結果格納領域１２である。次にＫ＋１番地からＫ＋Ｉ番地までは空き領域１３である。他方末尾側のＪ番地にはバッファ先頭アドレスの情報が格納され、Ｊ−１（Ｊマイナス１のことである。以下同じ）番地には有効セグメント数が格納され、Ｊ−２番地にはブロック単位サイズが格納され、Ｊ−３番地にはデータ領域１の読出しデータのバッファ管理番号、読込み先頭アドレス、読込みサイズの情報が格納されている。また、Ｊ−５およびＪ−６番地にはデータ領域１の読出しデータのデータ本体を成すセグメントが格納されている。また、Ｊ−７番地にはデータ領域２の読出しデータのバッファ管理番号、読込み先頭アドレス、読込みサイズの情報が格納されている。また、Ｊ−８〜Ｊ−１１番地にはデータ領域２の読出しデータのデータ本体を成すセグメントが格納されている。また、Ｊ−１２番地にはデータ領域３の読出し
データのバッファ管理番号、読込み先頭アドレス、読込みサイズの情報が格納されている。さらに、Ｊ−１３〜Ｊ−Ｉ＋３番地にはデータ領域３の読出しデータのデータ本体を成すセグメントが格納されている。
【００３９】
これら変更前と変更後の主記憶装置の管理情報を比較すると、読出しバッファ領域１１が処理結果格納領域１２により２ブロック分侵入され、その分だけ破壊されていることが分かる。よって、読出しバッファ領域１１のＪ−１２番地に格納されているデータにおいても、データ領域３のデータ本体の読込みサイズが１２から１０に書き換えられている。  
【００４０】
以上のようにして、読出しバッファ領域１１の空きが無くなったら、既に読み出している読出しバッファ領域１１に上書きする。そして、読出しバッファ領域１１の内容に破壊が起きている場合は読出しバッファ管理情報記憶手段２５の内容を変更する。
【００４１】
次に、読出しバッファ領域１１内に読出しデータが存在するか否かをチェックする（ステップＳＴ７）。読出しバッファ領域１１内にデータが存在する場合は、上でも述べた通り、応用処理手段２１は所望の処理を実行するために主記憶装置３の所定のアドレスに格納された読出しデータ（辞書）に対し処理を行って、それにより得られた結果を再び主記憶装置３に格納する、という動作を基本動作として実行する（ステップＳＴ８）。読出しデータは読出しバッファ領域１１から読み出され、処理結果は処理結果格納領域１２に書き込まれる。そして、この処理結果の書き込みが行われた後は図７に示すように現在使用末尾位置記憶手段２３および最大使用末尾位置記憶手段２４に対してデータの更新が行なわれ（ステップＳＴ９）、その後ステップＳＴ２へ戻る。なお、ステップＳＴ７において読出しバッファ領域１１内にデータが存在しない場合は、補助記憶装置４のアドレスよりデータを読み出して、主記憶装置３へ格納される（ステップＳＴ１０）。また、読出しバッファ領域１１については、ステップＳＴ４において、処理結果格納領域１２の末尾により、読出し対象とするデータのサイズが格納可能なバッファ領域を越える場合は、メモリ不足エラーとして（ステップＳＴ１１）処理を終了する。
【００４２】
以上のように、応用処理手段２１は、主記憶装置３から読み出したデータをもとに所定の処理を行ないそれによって得られた処理結果を主記憶装置３の処理結果格納領域１２に先頭から逐次記録する。そして、処理結果格納領域１２が満杯となりさらに処理結果が得られれば、処理結果が読出しバッファ領域１１との境界線を越えて読出しバッファ領域１１側に格納される。かつ、同時に現在使用末尾位置記憶手段２３の内容および最大使用末尾位置記憶手段２４の内容をそれぞれ、図７のように変更する。所望の結果が全て得られるか、または読出しバッファ領域１１の領域不足でメモリ不足エラーになった場合は一連の処理を終了する。
【００４３】
これにより、所望の応用処理結果を限定されたメモリ領域内で最大限の処理結果を格納することができる。
【００４４】
なお、本実施の形態では、「読出しバッファ管理情報記憶手段２５」は、応用処理装置５の内部に存在する例として記載したが、主記憶装置３の内部に存在しても構わない。
【００４５】
（実施の形態２）
本発明の実施の形態２では、バッファの破壊が生じた場合に、主記憶装置３内において読み出しバッファ領域１１に格納されたデータの退避を行なうことを特徴とする。
【００４６】
そのために、主記憶装置３の管理情報の構成を実施の形態１における管理情報（図４に示されている）とは異なったものにする。
【００４７】
図９は、本発明の第２の実施の形態に係るデータ処理システムにおける主記憶装置３の管理情報の例を説明する概念図である。この図において、図４と異なる点は、実際の読出しデータの管理情報が異なっていることで、例えば図９において「データ領域１；１：１００：２：２」について具体例を説明する。これはデータ領域１に格納されている読出しデータに関して、「１」はこの読出しバッファ領域１１におけるデータ領域１のバッファ管理番号が「１」であることを示し、「１００」は当該読出しデータの読込み先頭アドレス、すなわち、当該読出しデータがスタートする補助記憶装置４における先頭アドレス番号が「１００」であることを示す。また「２」は当該読出しデータの読込みサイズ、すなわち、データ本体を成すセグメント（セグメント番号：１）のブロックサイズが「２（ブロック）」であり、さらにその右の「２」はその読出しデータの使用頻度が、読出しバッファ領域１１に格納されている全てのデータ（３種類ある）の中で２番目であることを表している。この使用頻度に関して、データ領域２、およびデータ領域３に格納されている読出しデータについても検討すると、データ領域２に格納されている読出しデータについては、その使用頻度が、読出しバッファ領域１１に格納されている全てのデータの中で３番目であり、データ領域３に格納されている読出しデータについては、その使用頻度が、読出しバッファ領域１１に格納されている全てのデータの中で１番目であることが分かる。そして、本発明においては、使用頻度の高い読出しデータほど重要なデータと認定する。
【００４８】
したがって、本実施の形態では、応用処理手段２１の処理により主記憶装置３の処理結果格納領域１２へデータの格納が行なわれ、読出しバッファの破壊が生じたときは、未だ破壊されていない読出しデータのうち、重要なデータを主記憶装置３のより末尾の領域へ退避させる。
【００４９】
上記第２の実施の形態に係るデータ処理システムについて図１０のフローチャートを参照して動作を説明する。この第２の実施の形態においても、データ処理システムは文字列などの検索装置であるとする。
【００５０】
図１０のフローチャートにおいて、データ処理システムの動作開始後のステップＳＴ１からステップＳＴ５までは上記第１の実施の形態における処理フローと同じである。ステップＳＴ５のチェック処理動作において、バッファ破壊が起こっている場合は、読込みバッファ管理手段２２は読込みバッファ管理情報記憶手段２５に記憶されているバッファ管理情報を更新する（ステップＳＴ１６）。この動作では、読出しバッファ管理手段２２はバッファヘッドの値を最大使用末尾位置記憶手段２４に記憶されたアドレスに１を加えた値に設定するとともに、格納位置Ｎを読出しバッファ領域の末尾にセットする。次に読出しバッファ領域１１内の各要素（すなわち、データ）を使用頻度の高い順に主記憶装置３の末尾位置より降順にソートして書き換え、その後バッファ管理情報を更新する（ステップＳＴ１７）。これにより、読出しバッファの破壊が生じたときは、未だ破壊されていない読出しデータのうち、重要なデータを主記憶装置３のより末尾の領域へ退避させることができる。なお図９に示された主記憶装置３の管理情報の構成では最も使用頻度が高いデータ領域３の読出しデータが破壊され、しかも次に使用頻度の高いデータ領域１の読出しデータはすでに主記憶装置３の末尾に格納されているから、上記のようにバッファ領域１１内の各要素を使用頻度の高い順に主記憶装置３の末尾位置より降順にソートして書き換えてもデータの入替えは生じない。しかし、仮に使用頻度が高い順にデータ領域２→データ領域１→データ領域３の順になっていた場合は、データの入替えが行なわれる。
【００５１】
次に、読出しバッファ領域１１内にデータが存在するか否かをチェックする・・（ステップＳＴ１８）。読出しバッファ領域１１内にデータが存在する場合は、応用処理手段２１は所望の処理を実行するために主記憶装置３の所定のアドレスに格納された読出しデータ（辞書）に対し処理を行って、それにより得られた結果を再び主記憶装置３に格納する、という動作を実行する（ステップＳＴ１９）。読出しデータは読出しバッファ領域１１から読み出され、処理結果は処理結果格納領域１２に書き込まれる。そして、この処理結果の書き込みが行われた後は図７に示すように現在使用末尾位置記憶手段２３および最大使用末尾位置記憶手段２４に対してデータの更新が行なわれ（ステップＳＴ２０）、その後ステップＳＴ２へ戻る。なお、ステップＳＴ１８において読出しバッファ領域１１内にデータが存在しない場合は、補助記憶装置４のアドレスよりデータを読み出して、主記憶装置３へ格納される（ステップＳＴ２１）。また、読出しバッファ領域１１については、ステップＳＴ４において、処理結果格納領域１２の末尾により、読出し対象とするデータのサイズが格納可能なバッファ領域を越える場合は、メモリ不足エラーとして（ステップＳＴ１１）処理を終了する。
【００５２】
以上のように、応用処理手段２１は、主記憶装置３から読み出したデータをもとに応用処理手段２１は所定の処理を行ないそれによって得られた処理結果を主記憶装置３の先頭から逐次記録する。そして、処理結果格納領域１２が満杯となりさらに処理結果が得られれば、処理結果が読出しバッファ領域１１との境界線を越えて読出しバッファ領域１１側に格納される。かつ、同時に現在使用末尾位置記憶手段２３の内容および最大使用末尾位
置記憶手段２４の内容をそれぞれ、図７のように変更する。所望の結果が全て得られるか、またはバッファ領域の領域不足でメモリ不足エラーになった場合は一連の処理を終了する。
【００５３】
これにより、所望の応用処理結果を、限定されたメモリ領域内で最大限の処理結果を格納することを図りつつ、読出しバッファの破壊が生じたときは、未だ破壊されていない読出しデータのうち、重要なデータを主記憶装置３のより末尾の領域へ退避させることができる。
【００５４】
なお、この第２の実施の形態における変更例として、読出しバッファ領域の破壊が生じたとき、未だ破壊されていない読出しデータを主記憶装置３の末尾の領域へ退避させる基準としては、上記使用頻度によるもの以外に、前記主記憶装置の末尾部分を一定容量のｎ個のセグメントに分けて、前記補助記憶装置から読み出したデータは、最も最近に呼び出された、またはアクセスされた読み出しデータほど、再び参照される可能性が高いとみなし、前記応用処理手段よりデータ読み出しの要求が来る度に、上記データ読み出しの要求があった読出しデータを最も前記主記憶装置の末尾側に格納するようにしてもよい。
【００５５】
また、上述の第１および第２の実施の形態においては、読出しバッファ領域１１を主記憶装置の記憶領域の末尾側から確保し、処理結果格納領域１２を主記憶装置の記憶領域の先頭側から確保しているが、それぞれは逆の側から確保してもよい。
【００５６】
なお、本実施の形態では、「読出しバッファ管理情報記憶手段２５」は、応用処理装置５の内部に存在する例として記載したが、主記憶装置３の内部に存在しても構わない。
【図面の簡単な説明】
【００５７】
【図１】本発明の第１の実施の形態が適用されるデータ処理システムのハードウェア構成例を示すブロック図
【図２】前記実施の形態に係るデータ処理システムの応用処理装置の内部構成を示すブロック図
【図３】前記実施の形態に係るデータ処理システムにおける主記憶装置の管理状況を説明する概念図
【図４】前記実施の形態に係るデータ処理システムにおける主記憶装置の管理情報の例を説明する概念図
【図５】前記実施の形態に係るデータ処理システムにおける動作を説明するフローチャート
【図６】前記実施の形態に係るデータ処理システムにおける検索動作で読み出される情報の例としての索引辞書を示す図
【図７】前記実施の形態に係るデータ処理システムの主記憶装置において読出しバッファ領域の破壊が起こる前と後の状況を説明する図
【図８】前記実施の形態に係るデータ処理システムの主記憶装置において読出しバッファが破壊されたときの読出しバッファ管理情報の更新を説明する図
【図９】本発明の第２の実施の形態に係るデータ処理システムにおける主記憶装置の管理情報の例を説明する概念図
【図１０】前記第２の実施の形態に係るデータ処理システムにおける動作を説明するフローチャート
【符号の説明】
【００５８】
１  入力装置
２  表示装置
３  主記憶装置
４  補助記憶装置
５  応用処理装置
６  制御装置
１１  読出しバッファ領域
１２  処理（中間）結果格納領域
１３  空きデータ領域
１４  ブロック単位サイズ
１５  有効セグメント数
１６  バッファ先頭アドレス
２１  応用処理手段
２２  バッファ管理手段
２３  現在使用末尾位置記憶手段
２４  最大使用末尾位置記憶手段
２５  バッファ管理情報記憶手段
【図１】
2005032114.tif 000003
【図２】
2005032114.tif 000004
【図３】
2005032114.tif 000005
【図４】
2005032114.tif 000006
【図５】
2005032114.tif 000007
【図６】
2005032114.tif 000008
【図７】
2005032114.tif 000009
【図８】
2005032114.tif 000010
【図９】
2005032114.tif 000011
【図１０】
2005032114.tif 000012