(57)【要約】【課題】要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、読み出したブロックの利用効率を向上させる技術を提供する。【解決手段】アクセス制御プログラムは、コンピュータに、第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、第１のデータを含む第１のブロックを含む連続するブロックを読み出し、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、第１記憶部の連続するブロックを無効化し、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域におけるページへのアクセス状況に応じて、第１記憶部の連続した空き領域に書き込む処理を実行させることにより、上記課題の解決を図る。【選択図】図４
2016028319.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、前記第１のデータを含む第１のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第１記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第１記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御プログラム。
【請求項２】
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第１記憶部に書き込む
ことを特徴とする請求項１に記載のアクセス制御プログラム。
【請求項３】
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第１記憶部とは異なる第２記憶部に書き込む
ことを特徴とする請求項１または２に記載のアクセス制御プログラム。
【請求項４】
第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、前記第１のデータを含む第１のブロックを含む連続するブロックを読み出す読出部、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードするロード部と、
前記第１記憶部の前記連続するブロックを無効化する無効化部と、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第１記憶部の連続した空き領域に書き込む書込部と、
を備えることを特徴とするアクセス制御装置。
【請求項５】
コンピュータは、
第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、前記第１のデータを含む第１のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第１記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第１記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置に記憶されたデータにアクセスする技術に関する。
【背景技術】
【０００２】
近年、ビジネスの高速化に伴い、次々と流れてくる大量のデータをリアルタイムに処理することが求められている。これに伴い、流れて来るデータに対し、その場で分析処理を実行する技術であるストリームデータ処理が注目されている。
【０００３】
ストリーム処理の中には、メモリに載るサイズを越えるデータを分析対象とするものも存在する。メモリに載るサイズを越えるデータを処理するためには、処理に応じて、ディスクに対するアクセスを行い、分析処理が実行される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−３１５５９号公報
【特許文献２】特開２００８−１６０２４号公報
【特許文献３】特開２００８−２０４０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データアクセスの効率化を図るため、サーバが、データアクセスで要求されたディスクのブロックとともに、そのブロックの近傍にあるブロックもアクセスされることを期待して、物理的に近傍にあるブロックを予めメモリ領域に読み出すことができる。
【０００６】
しかしながら、ブロックの近傍にあるブロックがアクセスされるのは、ディスクにおけるブロックの配置と、データアクセスとが関連を持つ場合である。ディスクにおけるブロックの配置がデータアクセスと十分に関連を持たない場合は、アクセス要求されたブロックの近傍のブロックを予め読み出しても、実際にアクセスされない状況が生じ、メモリ領域の利用効率を低下させる。
【０００７】
本発明は、一側面として、要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、読み出したブロックの利用効率を向上させる技術を提供する。
【課題を解決するための手段】
【０００８】
本発明の一側面に係るアクセス制御プログラムは、コンピュータに、次の処理を実行させる。コンピュータは、第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、第１のデータを含む第１のブロックを含む連続するブロックを読み出す。コンピュータは、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードする。コンピュータは、第１記憶部の連続するブロックを無効化する。コンピュータは、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域における該ページへのアクセス状況に応じて、第１記憶部の連続した空き領域に書き込む。
【発明の効果】
【０００９】
本発明によれば、一側面として、要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、読み出したブロックの利用効率を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】データアクセスにおけるメモリとディスク間でのデータブロックの取り扱いを説明するための図である。
【図２】データアクセスにおけるプリフェッチを説明するための図である。
【図３Ａ】ディスクアクセスが頻発する場合に起こりうる事象を説明するための図（その１）である。
【図３Ｂ】ディスクアクセスが頻発する場合に起こりうる事象を説明するための図（その２）である。
【図４】本実施形態におけるアクセス制御装置の一例を示す。
【図５Ａ】本実施形態における動作を説明するための図（その１）である。
【図５Ｂ】本実施形態における動作を説明するための図（その２）である。
【図５Ｃ】本実施形態における動作を説明するための図（その３）である。
【図６】本実施形態におけるデータとブロックを説明するための図である。
【図７】本実施形態におけるサーバのハードウェア構成を示す。
【図８】本実施形態における物理レイアウト管理情報の一例を示す。
【図９】本実施形態におけるページ管理リストの一例を示す。
【図１０】本実施形態におけるＩＯ実行部の動作フローを示す。
【図１１】本実施形態におけるＩＦ  getitems_bulk(K, N)の動作フローを示す。
【図１２】本実施形態におけるＩＯサイズ算出部の動作フローを示す。
【図１３】本実施形態におけるブロックＩｄ（Ｋ＝７）のブロックがリクエストされた場合のページ管理リストの更新例である。
【図１４】本実施形態におけるgetitems_bulk(K, N)呼び出し後のページ管理リストの更新例を示す。
【図１５】本実施形態におけるページ管理部の動作フローを示す。
【図１６Ａ】本実施形態におけるＩＦ  setitems_bulk(N)の動作フロー（その１）を示す。
【図１６Ｂ】本実施形態におけるＩＦ  setitems_bulk(N)の動作フロー（その２）を示す。
【図１７】本実施形態におけるページ管理リストの下から４エントリで示すページに対応するブロックが対象ブロックとして選択される場合を説明するための図である。
【図１８】本実施形態における物理レイアウト管理情報（used用）と物理レイアウト管理情報（unused用）の更新例を示す。
【図１９】本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。
【発明を実施するための形態】
【００１１】
メモリに載るサイズを越えるデータを扱うストリーム処理では、大量のデータが流入した場合、ディスクアクセスが頻発し、サーバ全体の処理性能に影響を与える。
【００１２】
図１は、データアクセスにおけるメモリ領域とディスク間でのデータブロックの取り扱いを説明する図である。図１において、ディスク１０２と、メモリ領域１０１とが示されている。ここでは、メモリ上の一部領域を、メモリ領域１０１としている。メモリ領域１０１のページ置き換えアルゴリズムに関しては、一例として、メモリ領域１０１において参照されていない時間が最も長いページを置換対象にする方式（Least Recently Used、ＬＲＵ）が用いられる。
【００１３】
図１において、ディスク１０２上には複数のブロック１〜８が配置されている。データアクセス要求により要求されたデータが記憶されているブロックが読み出され、メモリ領域１０１に配置される。例えば、ブロック１，３，５に記憶されたデータについてデータアクセス要求がされた場合、ディスク１０２からブロック１，３，５が読み出され、読み出されたブロック１，３，５に対応するページ１，３，５がメモリ領域１０１に配置される。
【００１４】
ここで、メモリ領域１０１上で配置されるページを置き換える場合、置き換え対象となるページ（置き換えページ）は、ページ置き換えアルゴリズムにより決定される。
【００１５】
ＬＲＵ方式では、メモリ領域１０１に保持されたページであって、かつ、最終アクセス日時が最古のページが、置き換えページとして選択される。置き換えページに対応するブロックは、たとえばディスク１０２へ書き戻される。ページは、ページへのアクセスの日時の古い順に、キュー１０３によって管理される。例えば、アクセスされたデータに対応するページは、キュー１０３の最後尾へ配置される。その結果、アクセスされなかったデータに対応するページほどキュー１０３の先頭に位置することになる。キュー１０３の先頭に位置するページから、置き換えページとしてページが選択され、その選択されたページがたとえばディスク１０２へ書き戻される。図１において、キュー１０３は、（Ａ１）、（Ａ２），（Ａ３）の順でデータアクセスが発生後のキューの状態を示す。
【００１６】
図２は、データアクセスにおけるプリフェッチを説明するための図である。本実施形態において、プリフェッチは、ディスク１０２上のブロックを、予めメモリ領域１０１に読み出しておくことである。図２では、データアクセスで要求されたブロックに対応するページをメモリ領域１０１に配置する際、物理配置上、要求されたブロックの近傍にあるブロックもアクセスされて、一緒にメモリ領域１０１に配置されている。このように、参照時の空間的局所性を利用して、その時点で要求がない近傍のブロックに対応するページを、プリフェッチにより事前にメモリ領域１０１に配置する。
【００１７】
ディスク１０２へのアクセス回数の削減のため、プリフェッチによりその時点で要求されていないブロックに対応するページも一緒にメモリ領域１０１に配置される。しかし、要求されたブロックに対応するページと一緒にメモリ領域１０１に配置されたページが、アクセスされる前に他ページに置き換えされるとプリフェッチの効果がない。
【００１８】
図２では、ページ置き換えアルゴリズムのキュー１０３は、プリフェッチにより、ディスク１０２に配置されたブロック５及びその近傍ブロック（６，７）をアクセスした後の状態を表している。
【００１９】
図３Ａ及び図３Ｂは、ディスクアクセスが頻発する場合に起こりうる事象を説明するための図である。ディスクアクセスが頻発する状況では、メモリ領域１０１のサイズ制限のため、ページ置き換えアルゴリズムによるメモリ領域１０１からディスク１０２への書き戻しも頻発する。
【００２０】
図３Ａにおいて、データアクセス（Ａ１）のプリフェッチで、ディスク１０２におけるブロック１とその近傍ブロック（２，３，４）がアクセスされると、メモリ領域１０１にページ１，２，３，４が配置される。
【００２１】
データアクセス（Ａ２）のプリフェッチで、ディスク１０２におけるブロック５とその近傍ブロック（６，７，８）がアクセスされると、メモリ領域１０１にページ５，６，７，８が配置される。この場合、メモリ領域１０１のサイズ制限（例えば、６ページ分とする）のため、ページ置き換えアルゴリズムによりページの置き換えが発生する。その結果、データアクセス（Ａ１）で先読みされたブロック３，４に対応するページ３，４はアクセスされていないので、置き換え対象となる。
【００２２】
プリフェッチで先読みされたページのうちアクセスされずに置き換わるページが増えた結果、メモリ領域１０１の利用効率が低下する。すなわち、アクセスされないブロックに対応するページが、メモリ領域１０１に配置されることになる（すなわち、無駄読みが発生する）。そのため、メモリ領域１０１を、アクセスされないページが占めることになる（メモリ領域の利用効率の低下）。また、プリフェッチで先読みされたページのうちアクセスされずに置き換わるページが増えた場合、プリフェッチにより読み出された複数のブロックに対する使用されるブロックの割合が低下するので、ディスクアクセスが非効率となる。
【００２３】
例えば、図３Ｂに示すように、データアクセス（Ａ１）〜（Ａ４）のアクセスがあった場合について説明する。データアクセス（Ａ１）、（Ａ２）及び（Ａ４）でプリフェッチが行われる。データアクセス（Ａ１）でプリフェッチされたブロックに対応するページ１，２，３，４のうち、アクセスされたページは、ページ１，２であり、使用されたページの割合は２／４である。一方で、データアクセス（Ａ２）でプリフェッチされたブロックに対応するページ５，６，７，８のうち、アクセスされたページは、ページ５であり、使用されたページの割合は、１／４である。
【００２４】
このように、プリフェッチの効果が得られない上に、ディスクアクセスも非効率（１つのブロックのために、４ブロック読んでいて、使われなかった）となる。
【００２５】
そこで、本実施形態では、プリフェッチによる無駄読みを削減し、メモリ領域の利用効率を向上させる技術を説明する。
【００２６】
図４は、本実施形態におけるアクセス制御装置の一例を示す。アクセス制御装置１は、読出部２、ロード部３、無効化部４、書込部５を含む。アクセス制御装置１の一例として、制御部１２が挙げられる。
【００２７】
読出部２は、第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部６から、第１のデータを含む第１のブロックを含む連続するブロックを読み出す。読出部２の一例として、ＩＯ実行部１３が挙げられる。
【００２８】
ロード部３は、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードする。ロード部３の一例として、ＩＯ実行部１３が挙げられる。
【００２９】
無効化部４は、第１記憶部６の連続するブロックを無効化する。無効化の一例として、ＩＯ実行部１３が挙げられる。
【００３０】
書込部５は、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域におけるページへのアクセス状況に応じて、第１記憶部６または第２記憶部７の連続した空き領域に書き込む。書込部５は、押し出されたページのうち、メモリ領域にてアクセスされたページを第１記憶部６に書き込む。書込部５は、押し出されたページのうち、メモリ領域にてアクセスされなかったページを、記憶領域がブロック単位で管理された第２記憶部７に書き込む。書込部５の一例として、ページ管理部１７が挙げられる。
【００３１】
このように構成することにより、メモリ領域において使用されたデータを、使用されたデータ用の記憶装置にまとまって配置することができる。その結果、要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、ブロックの利用効率を向上させることができる。
【００３２】
以下に、本実施形態を詳述する。
本実施形態は、例えば、サーバ装置（以下、「サーバ」と称する。）におけるストレージミドルウェア機能を実現する制御部により実行される。ディスクからのブロックの読み出しでは、サーバは、アプリケーションプログラム（以下、「アプリケーション」と称する。）からのデータアクセスで要求されたブロックの他、物理領域が近傍の有効なブロックを併せて読み出す（プリフェッチ）。
【００３３】
その読み出しでは、サーバは、揮発性read（読み出すブロックは、ディスク上から削除する）を実行する。揮発性readを実行することで、物理領域上に連続した空き領域を確保することができる。
【００３４】
ディスクへのページ書き込みでは、サーバは、“使われたページ（すなわち、アクセスのあったページ）”と“使われなかったページ（すなわち、アクセスのなかったページ）”を、２つのリストを用いて、別々に指定する。
【００３５】
ストレージミドルウェア起動時、サーバは、“使われたページ”に対応するブロックを書き込むusedエリア、“使われなかったページ”に対応するブロックを書き込むunusedエリアを作成し、usedエリア、unusedエリアの使用領域の最後に追記する。これにより、使われたページに対応するブロックをまとめて配置し、無駄読み削減とメモリ領域の利用効率の向上を図る。
【００３６】
サーバは、usedエリア、unusedエリアに関わらず、ブロックの読み出しは揮発性readを用いて、要求されたデータに関するブロックとその近傍の連続物理領域とにアクセスする。
【００３７】
図５Ａ−図５Ｃは、本実施形態における動作を説明するための図である。本実施形態では、ページ置き換えアルゴリズムの一例として、ＬＲＵ方法を用いる。また、メモリ領域のサイズ制限は、例えば、６ブロック分とする。
【００３８】
図５Ａに示すように、ディスクからのブロックの読み出しでは、サーバは、プリフェッチにより、要求があったブロック及びその近傍のブロックにアクセスする。それから、サーバは、揮発性readを実行することにより、ディスクアクセスで読み出したブロックを、ディスク１０２から削除にする。
【００３９】
次に、図５Ｂ、図５Ｃに示すように、サーバは、メモリ領域１０１に保持したページをディスクに書き戻す時は、使われたページに対応するブロックと使われなかったページに対応するブロックとを別々の領域（usedエリア、unusedエリア）に追記する。これにより、使われたページに対応するブロックがまとまって配置されるので、無駄読み削減と、メモリ領域の利用効率を向上させることができる。
【００４０】
例えば、図５Ｂ及び図５Ｃにおけるデータアクセス（Ａ１）〜（Ａ５）が行われる場合について考えてみる。データアクセス（Ａ１）で、ブロックＩｄ＝１〜４のブロックがプリフェッチされると、ディスク１０２ｂからブロックＩｄ＝１〜４のブロックが削除され、キュー１０３にはブロックＩｄ＝１〜４が格納される。
【００４１】
データアクセス（Ａ２）で、ブロックＩｄ＝５〜８のブロックがプリフェッチされると、ディスク１０２ｂからブロックＩｄ＝５〜８のブロックが削除され、キュー１０３にはブロックＩｄ＝５〜８が格納される。このとき、メモリ領域１０１のサイズ制限のため、所定のページがディスクに書き戻される。データアクセス（Ａ１）でプリフェッチされたページのうちページ（３，４）は使われなかったページ（アクセスされなかったページ）なので、ページ（３，４）はunusedエリアのあるディスク１０２ａに書き戻される。
【００４２】
それから、データアクセス（Ａ３）で、メモリ領域１０１に保持されているページ（２）にアクセスがされ、キュー１０３内のブロックＩｄの順番が更新される。それから、データアクセス（Ａ４）で、ブロックＩｄ＝９〜１４のブロックがプリフェッチされると、ディスク１０２ｂからブロックＩｄ＝９〜１４のブロックが削除され、キュー１０３にはブロックＩｄ＝９〜１４が格納される。このとき、メモリ領域１０１のサイズ制限のため、所定のページがディスクに書き戻される。キュー１０３内に保持されたブロックＩｄのうち、ページ（６，７、８）は使われなかった（アクセスされなかった）ので、ページ（６，７、８）はunusedエリアのあるディスク１０２ａに書き戻される。一方、キュー１０３内に保持されたブロックＩｄに対応するページのうち、ページ（１，２、５）は使われた（アクセスされた）ので、ページ（１，２，５）はusedエリアのあるディスク１０２ｂに追記される。
【００４３】
データアクセス（Ａ５）で、ブロックＩｄ＝１，２，５のブロックがプリフェッチされると、ディスクからブロックＩｄ＝１，２，５のブロックが削除され、キュー１０３にはブロックＩｄ＝１，２，５が格納される。このとき、メモリ領域１０１のサイズ制限のため、所定のページがディスクに書き戻される。キュー１０３に保持されたブロックＩｄに対応するページのうち、使われなかった（アクセスされなかった）ページ（１２、１３、１４）は、unusedエリアのあるディスク１０２ａに書き戻される。
【００４４】
本実施形態によれば、“使われたページ”に対応するブロックが、ディスクの領域上にまとまって配置される。その結果として、プリフェッチによる無駄読みを削減し、メモリ領域の利用効率を向上させる。また、プリフェッチの効率化と、メモリ領域による高速化を両立させることができる。
【００４５】
以下に、本実施形態をさらに詳述する。
図６は、本実施形態におけるデータとブロックを説明するための図である。データは、図６（Ａ）に示すように、キーと値（value）との組である。ブロックは、ディスク１０２ａ，１０２ｂにおいて、アドレスで管理される管理単位である。データは、図６（Ｂ）に示すように、ディスク１０２ａ，１０２ｂにブロック単位で格納される。１つのブロックには、複数の組のデータが含まれる。
【００４６】
ブロック及び該ブロックに対応するページは、ブロックＩｄにより識別される。ブロックの読み出しは、ブロックＩｄを指定することにより行われる。
【００４７】
図７は、本実施形態におけるサーバのハードウェア構成を示す。サーバ１１は、制御部１２とディスク（ストレージ）２０ａ，２０ｂを含む。制御部１２は、本実施形態に係るプログラムを記憶装置（不図示）から読み出して実行することにより、ディスク２０へのデータの読み書きを行うストレージミドルウェア機能を有する。
【００４８】
ディスク２０ａには、ストレージミドルウェア起動時にunusedエリアが作成され、ディスク２０ｂにusedエリアが作成される。unusedエリアは、“使われなかったページ”に対応するブロックを書き込む領域である。usedエリアは、“使われたページ”に対応するブロックを書き込む領域である。なお、unusedエリア、usedエリアは１つのディスク内に存在してもよいし、それぞれ異なるディスクに存在してもよい。
【００４９】
ストレージミドルウェアにおける入出力（ＩＯ）のインターフェース（ＩＦ）として、例えば、“getitems_bulk(K, N)”、“setitems_bulk(N)”がある。
【００５０】
“getitems_bulk(K, N)”は、制御部１２がディスクからメモリ領域へブロックを読み出すＩＦである。Kは読み出し要求対象のブロックＩｄである。制御部１２は、キーKに対応するブロックとディスク上の物理配置が近くのブロックもまとめて読み出す（プリフェッチ）。Nは後述するＩＯサイズである。ＩＯサイズは、アクセスする物理配置の近傍の範囲（サイズでも、データ件数でもよい）を示し、指定された範囲で示される近傍領域にアクセスがされる。本実施例では、ＩＯサイズ（N）をブロック数で指定する。
【００５１】
setitems_bulk(N)は、メモリ領域からディスクへブロックを書き込むＩＦである。制御部１２は、ＩＯサイズ（N）を指定する。 setitems_bulk(N)は、ＩＯサイズ（N）から書き込むブロックを決定する。その書き込み対象ブロックを、アクセスのあったusedブロックと、アクセスのなかったunusedブロックに分けて、usedブロックはusedエリアへ、unusedブロックはunusedエリアへ書き込む。
【００５２】
制御部１２は、ＩＯ実行部１３、ＩＯサイズ算出部１６、ページ管理部１７、メモリ領域１９を含む。
【００５３】
ＩＯ実行部１３は、アプリケーションからのデータアクセス（readアクセス、またはwriteアクセス）要求に基づいて、ディスク２０上のブロックにアクセスするブロック読み出しを実行する。
【００５４】
ＩＯ実行部１３は、ブロックＩＯキュー１４と、物理レイアウト管理情報１５ａ，１５ｂを有する。ブロックＩＯキュー１４は、要求されたブロックのＩｄを入れるキューである。
【００５５】
物理レイアウト管理情報１５ａ，１５ｂは、ディスク２０ａ，２０ｂ上の各ブロックについて、そのブロックの有効・無効と、そのブロックのブロックアドレスとを管理する。物理レイアウト管理情報１５ａは、unusedエリア用として指定されたディスク２０ａについての物理レイアウト管理情報である。物理レイアウト管理情報１５ｂは、usedエリア用として指定されたディスク２０ｂについての物理レイアウト管理情報である。
【００５６】
ＩＯ実行部１３は、“getitems_bulk(K, N)”を実行することにより、ブロック読み出しを行う。ＩＯ実行部１３は、アプリケーションからブロックへのアクセス要求があった場合、その要求されたブロックのブロックＩｄをブロックＩＯキュー１４に入れ、ブロックＩＯキュー１４から順次、ブロックＩｄを取り出して要求を実行する。
【００５７】
その際、ＩＯ実行部１３は、ＩＯサイズ算出部１６を呼び出し、読み出すブロック数（Ｎ）を取得する。Ｎは、ＩＯサイズ算出部１６がブロックＩＯキュー１４の長さ（Ｌ）と１つ前のブロック読み出し要求で算出したＩＯサイズ（Ｎ’）によって決定する値であり、１以上の値である。
【００５８】
ＩＯ実行部１３は、ブロックの読み出しの場合には、ブロックＩＯキュー１４の先頭からブロックＩｄを取り出し、物理レイアウト管理情報１５を通して、ブロックアドレスを取得し、そのブロックアドレスに基づいてディスク２０ａ、２０ｂにアクセスする。
【００５９】
このとき、ＩＯ実行部１３は、指定ブロックＩｄ（Ｋ）に対応するブロックにアクセスする。それと共に、ＩＯ実行部１３は、Ｎで指定された数に従ってディスク２０上の物理配置のその近傍のブロックにアクセスし、その中で、物理レイアウト管理情報で有効なブロックを返す。
【００６０】
ＩＯ実行部１３は、ブロックの読み出しの際には、通常、不揮発性readを用い、ある閾値を下回ったら揮発性readを用いる。
【００６１】
ＩＯ実行部１３は、ブロックを読み出す前に、物理レイアウト管理情報１５を参照し、充填率を算出し、充填率に基づいて、読み出し方式を揮発性readにするか、不揮発性readにするか選択する。
【００６２】
ＩＯ実行部１３は、揮発性readを選択した場合においてブロックを削除する時は、物理レイアウト管理情報１５上でそのブロックを無効にする。
【００６３】
また、ＩＯ実行部１３は、“setitems_bulk(N)”を実行することにより、メモリ領域１９上にあるページに対応するブロックのうち、Ｎで指定された数のブロックをディスクへ書き戻す。このとき、ＩＯ実行部１３は、後述するページ管理リスト１８上の参照カウンタの情報に従って、メモリ領域１９上にあるページに対応するブロックを、使われたブロック[used_key_value_list]と使われなかったブロック[unused_key_value_list]とに分類する。
【００６４】
[unused_key_value_list]で指定されたブロックについて、ＩＯ実行部１３は、ブロックをディスクに書き込む前に物理レイアウト管理情報１５を参照し、揮発性readで読み出されたか、不揮発性readで読み出されたかを確認する。すなわち、ＩＯ実行部１３は、物理レイアウト管理情報１５を参照し、当該ブロックが無効になっているか否かにより、揮発性readで読み出されたか、不揮発性readで読み出されたかを確認する。
【００６５】
ＩＯ実行部１３は、[unused_key_value_list]で指定されたブロックが不揮発readで読み出されていればが何もしない。ＩＯ実行部１３は、[unused_key_value_list]で指定されたブロックが揮発性readで読み出されていれば、ディスク２０への追記対象にする。
【００６６】
ＩＯ実行部１３は、[used_key_value_list]で指定されたブロックについて、既存の該当ブロックを無効にして、ディスクへの追記対象にする。
【００６７】
ＩＯ実行部１３は、ディスクへ追記する対象ブロックが決定した場合、物理レイアウト管理情報１５を更新して、ディスク２０へ、決定した対象ブロックを追記する。ＩＯ実行部１３は、追記対象に関わらず、[unused_key_value_list]及び[used_key_value_list]で指定されたブロックについては、ページ管理リスト１８から削除する。
【００６８】
ＩＯサイズ算出部１６は、ブロックＩＯキュー１４に積まれた要求されたブロックＩｄの数（以下、キュー長（Ｌ））と、１つ前のブロック読み出し要求で算出したＩＯサイズ（Ｎ’）から、ＩＯサイズ（＝読み出すブロック数）（Ｎ）を算出して返す。
【００６９】
ページ管理部１７は、ページ管理リスト１８を保持する。ページ管理部１７の処理の詳細については、図１０で説明する。ページ管理リスト１８は、各ブロックの参照回数と直近でアクセスされたブロックを管理するために用いられる。
【００７０】
ページ管理リスト１８は、各ブロックの参照カウンタを持つ。ページ管理部１７は、ブロック読み出し要求があると、ページ管理リスト１８における、該当ブロックの参照カウンタをカウントアップして、当該ブロックをページ管理リスト１８の先頭に移動する。
【００７１】
図８は、本実施形態における物理レイアウト管理情報の一例を示す。上述の通り、物理レイアウト管理情報１５ａは、unusedエリア用として指定されたディスク２０ａについての物理レイアウト管理情報である。物理レイアウト管理情報１５ｂは、usedエリア用として指定されたディスク２０ｂについての物理レイアウト管理情報である。物理レイアウト管理情報１５ａ，１５ｂは、同じデータ構造を有する。物理レイアウト管理情報１５ａ，１５ｂは、「ブロックＩｄ」１５−１、「有効／無効フラグ」１５−２、「ブロックアドレス」１５−３のデータ項目を含む。
【００７２】
「ブロックＩｄ」１５−１には、ディスク２０ａ，２０ｂ上のブロックを識別するブロックＩｄが格納されている。「有効／無効フラグ」１５−２には、ブロックＩｄで示されるブロックが有効（〇）か無効（×）かのフラグ情報が格納される。ブロックアドレス１５−３には、ブロックＩｄで示されるブロックのディスク２０ａ，２０ｂ上のアドレスが格納される。
【００７３】
ＩＯ実行部１３は、ブロックＩＯキュー１４に格納された先頭のブロックＩｄから順に読み出す。ＩＯ実行部１３は、物理レイアウト管理情報１５ａ，１５ｂを参照し、ブロックＩＯキュー１４から読み出したブロックＩｄのブロックアドレスを取得する。ＩＯ実行部１３は、その取得したブロックアドレスの示すディスク２０ａ，２０ｂ上のアドレスにアクセスする。
【００７４】
図９は、本実施形態におけるページ管理リストの一例を示す。ページ管理リスト１８は、「ブロックＩｄ」１８−１、「参照カウンタ」１８−２のデータ項目を含む。「ブロックＩｄ」１８−１には、メモリ領域１９に配置されたページに対応するブロックを識別するブロックＩｄが格納されている。「参照カウンタ」１８−２には、ブロックＩｄで示されるブロックに対応するページの参照回数が格納される。
【００７５】
ページ管理リスト１８には、より直近でアクセスされたページが、よりリストの先頭に格納される。
【００７６】
図１０は、本実施形態におけるＩＯ実行部の動作フローを示す。ＩＯ実行部１３は、ブロックＩＯキュー１４に格納されたブロックＩｄ（＝Ｋ）を、ブロックＩＯキュー１４の先頭から順に読み出すと、ブロックＩＯキュー１４に積まれた要求されたブロックＩｄの数（以下、キュー長（Ｌ））を取得する（Ｓ１）。
【００７７】
ＩＯ実行部１３は、ＩＯサイズ算出部１６を呼び出し、ＩＯサイズ（読み出すブロック数）（Ｎ）を取得する（Ｓ２）。ＩＯサイズ算出部１６は、ブロックＩＯキューの長さ（Ｌ）と、１つ前のブロック読み出しリクエストで算出したＩＯサイズ（Ｎ’）から、ＩＯサイズ（Ｎ）を決定する。キュー長（Ｌ）には、事前に閾値が設定される。Ｎの初期値は１とし、Ｌが閾値を超えていたら、例えば、Ｎ’×２倍の値を新しいＮとする（例：１，２，４，８，・・・増える）。逆に、そのＬが閾値を下回っていたら、Ｎを１／２にする（例、８，４，２，１）。Ｎの最小値は１、最大値は事前に決めた値（例えば、６４といった値）とする。
【００７８】
ＩＯ実行部１３は、ページ管理部１７を呼び出す（Ｓ３）。ページ管理部１７は、必要に応じて、メモリ領域からアクセス頻度の低いページをディスクへ書き出す。ページ管理部１７は、メモリ領域が満杯である場合において、ブロックを読み出す時は、まず、メモリ領域に保持されたページのうち、ＩＯサイズ分のページをディスクへ書き戻す。その書き戻し対象となるページは、ページ管理リスト１８の下位のブロックからＩＯサイズ分（Ｎ個）とする。その時、ページ管理部１７は、参照カウンタの値によって、使われたページに対応するブロックと使われなかったページに対応するブロックに分類する。参照カウンタ=0のブロックは“使われなかったページ”に対応するブロック”であり、参照カウンタ＞0のブロックは“使われたページに対応するブロック”となる。
【００７９】
ＩＯ実行部１３は、ＩＦ  getitems_bulk(K, N)を呼び出す（Ｓ４）。ＩＯ実行部１３は、指定ブロックＩｄ（Ｋ）に対応するブロックにアクセスすると共に、ＩＯサイズ（読み出すブロック数）に従ってディスク２０の物理配置上、指定ブロックＩｄ（Ｋ）近傍のブロックにもアクセスする。ＩＯ実行部１３は、そのアクセスしたブロックのうち、有効なブロックを返す。
【００８０】
ＩＯ実行部１３は、指定ブロックＩｄ（Ｋ）に対応するブロックについて、物理レイアウト管理情報から当該ブロックのブロックアドレスを取得し、ディスク上のブロックにアクセスする。物理レイアウト管理情報は、上述したように、used用とunused用の２つある。ＩＯ実行部１３は、ブロックアドレスを検索する際は、２つの物理レイアウト管理情報１５ａ，１５ｂを検索する。
【００８１】
ＩＯ実行部１３は、ブロックの読み出しの際には、揮発性readを用いる。すなわち、ＩＯ実行部１３は、読み出したブロックを、ディスクから削除されたブロックと同等に扱う。つまり、ＩＯ実行部１３は、物理レイアウト管理情報１５ａ，１５ｂ上で読み出したブロックを無効化する。
【００８２】
図１１は、本実施形態におけるＩＦ  getitems_bulk(K, N)の動作フローを示す。呼び出されたgetitems_bulk(K, N)には、入力パラメータとして、リクエストされたブロックＩｄ（Ｋ）と、ＩＯサイズ（Ｎ）が渡される。
【００８３】
ＩＯ実行部１３は、リクエストされたブロックＩｄ（Ｋ）をキーとして、物理レイアウト管理情報１５ａ，１５ｂを検索して、ブロックＩｄ（＝Ｋ）のブロックアドレスを取得する（Ｓ１１）。例えば、図８において、リクエストされたブロックＩｄが“１”の場合、物理レイアウト管理情報からブロックアドレス“１００１”が取得される。
【００８４】
ＩＯ実行部１３は、揮発性read方式を用いて、ディスク２０ａまたはディスク２０ｂからブロックＩｄ＝Ｋ〜Ｋ＋Ｎ−１（Ｋ：整数、Ｎ：整数）のブロックを読み出す（Ｓ１２）。
【００８５】
ＩＯ実行部１３は、Ｓ１２で読み出したブロックを無効化するため、物理レイアウト管理情報１５ａまたは物理レイアウト管理情報１５ｂにおいて、その読み出したブロックの有効／無効フラグを無効（×）に更新する（Ｓ１３）。
【００８６】
ＩＯ実行部１３は、Ｓ１２で読み出した有効なブロックを返す（Ｓ１４）。すなわち、ＩＯ実行部１３は、Ｓ１２で読み出したブロックのうち、Ｓ１３での更新前の物理レイアウト管理情報１５ａ，１５ｂにおいて、有効／無効フラグが有効（〇）になっているブロックを返す。ＩＯ実行部１３は、その読み出した有効なブロックをメモリ領域１９に保持する。
【００８７】
図１２は、本実施形態におけるＩＯサイズ算出部の動作フローを示す。図１０のＳ２において、ＩＯ実行部１３により呼び出されたＩＯサイズ算出部１６は、図１２のフローを実行する。ＩＯサイズ算出部１６は、入力パラメータとして、ブロックＩＯキュー長（Ｌ）と、前回算出したＩＯサイズ（Ｎ’）をＩＯ実行部１３により受け取る。
【００８８】
ＩＯサイズ算出部１６は、ブロックＩＯキュー長（Ｌ）と閾値Ｔ２とを比較する（Ｓ２１）。閾値Ｔ２は、予め記憶部に設定されている。ブロックＩＯキュー長（Ｌ）＞閾値Ｔ２の場合、ＩＯサイズ算出部１６は、Ｎ’×２により算出した値をＮに設定する（Ｓ２２）。ここで、Ｎの最大値は事前に決められている。Ｎの最大値を例えば６４とし、それ以上大きくはしない。
【００８９】
ブロックＩＯキュー長（Ｌ）≦閾値Ｔ２の場合、ＩＯサイズ算出部１６は、Ｎ’／２により算出した値をＮに設定する（Ｓ２３）。ここで、Ｎの最小値を“１”とし、それより小さくはしない。
【００９０】
ＩＯサイズ算出部１６は、算出したＩＯサイズ（Ｎ）をＩＯ実行部１３へ返す（Ｓ２４）。
【００９１】
図１３は、本実施形態におけるブロックＩｄ（Ｋ＝７）のブロックがリクエストされた場合のページ管理リストの更新例である。ブロックＩｄ＝７のブロックがリクエストされると、ページ管理部１７は、ページ管理リスト１８において、ブロックＩｄ＝７の参照カウンタをインクリメントし、ブロックＩｄ＝７のエントリをページ管理リスト１８の先頭に移動させる。
【００９２】
図１４は、本実施形態におけるgetitems_bulk(K, N)呼び出し後のページ管理リストの更新例を示す。図１４では、ブロックＩｄ（Ｋ＝１）のブロックがリクエストされ、ＩＯサイズＮ＝４、ＩＦ  getitems_bulk(１，４)、ブロックＩｄ＝［１，２，３，４］のブロックが読み出される場合について説明する。
【００９３】
ページ管理部１７は、リクエストされたブロック（ブロックＩｄ＝１）に対応するページのエントリを、ページ管理リスト１８の先頭へ配置する。また、ページ管理部１７は、ＩＯサイズ＝４指定で読み出された、リクエストされていないブロック（ブロックＩｄ＝２，３，４）に対応するページのエントリを、ページ管理リスト１８の最後に配置し、それらの参照カウンタを“０”に設定する。
【００９４】
図１５は、本実施形態におけるページ管理部の動作フローを示す。図１０のＳ３において、ＩＯ実行部１３により呼び出されたページ管理部１７は、図１５のフローを実行する。ページ管理部１７は、入力パラメータとして、リクエストされたブロックＩｄ（Ｋ）と、ＩＯサイズ（Ｎ）をＩＯ実行部１３により受け取る。
【００９５】
ページ管理部１７は、リクエストされたブロック（Ｋ）について、図１３及び図１４で説明したように、ページ管理リスト１８を更新する（Ｓ３１）。
【００９６】
ページ管理部１７は、メモリ領域に保持されている全ページ数、すなわち、ページ管理リスト１８に登録されている全エントリ数を取得する（Ｓ３２）。
【００９７】
ページ管理部１７は、Ｓ３２で取得したページ数が、メモリ領域１９に保持可能なブロックの最大数である場合（Ｓ３３で「Ｙｅｓ」）、次の処理を行う。すなわち、ページ管理部１７は、ＩＦ  setitems_bulk(N)を呼び出す（Ｓ３４）。
【００９８】
データの追記の際には、（１）ブロックの追記、（２）物理レイアウト管理情報を更新（書き込んだブロックを有効にする）、（３）ページ管理リストの更新が行われる。
【００９９】
図１６Ａ及び図１６Ｂは、本実施形態におけるＩＦ  setitems_bulk(N)の動作フローを示す。ページ管理部１７により呼び出されたsetitems_bulk(N)には、入力パラメータとして、ＩＯサイズ（Ｎ）が渡される。
【０１００】
ページ管理部１７は、ページ管理リスト１８を参照して、対象ブロックを決定する（Ｓ４１）。ここでは、ページ管理部１７は、ページ管理リスト１８の最後からＩＯサイズ（Ｎ）分のブロックを対象ブロックとして選択する。例えば、Ｎ＝４の場合、図１７に示すように、ページ管理リスト１８の下から４エントリで示すページに対応するブロックが対象ブロックとして選択される。
【０１０１】
ページ管理部１７は、Ｓ４１で選択された対象ブロックを、参照カウンタに基づいて、使われた（used）ページに対応するブロックと、使われなかった（unused）ページに対応するブロックとに分類する（Ｓ４２）。参照カウンタ＝０のページに対応するブロックは、使われなかった（unused）ページに対応するブロックであり、参照カウンタ＞０のページに対応するブロックは、使われた（used）ブロックと判定される。図１７の場合、usedブロックは、ブロックＩｄ＝６のブロックであり、unusedブロックは、ブロックＩｄ＝２，３，４のブロックである。
【０１０２】
ページ管理部１７は、usedブロックをusedエリアに追記し（Ｓ４３ａ）、unusedブロックをunusedエリアに追記する（Ｓ４３ｂ）。Ｓ４３ａ及びＳ４３ｂの処理の詳細を、図１６Ｂに示す。
【０１０３】
ページ管理部１７は、追記対象となるブロックがusedブロックの場合、usedエリアに追記する。また、ページ管理部１７は、追記対象となるブロックがunusedブロックの場合、unusedエリアに追記する（Ｓ４３−１）。
【０１０４】
Ｓ４３−１では、ページ管理部１７は、追記対象となるブロックがusedブロックの場合、ディスク２０ｂに作成されたusedエリアのうち、有効なブロックが配置されている最後の領域に隣接する空き領域へ、追記対象となるusedブロックを追記する。すなわち、ページ管理部１７は、ディスク２０ｂにおいて書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するｍ個のブロックが配置されていない空領域に、ｍ個のブロックをそれぞれ書込みする。ここで、ｍ（ｍ：整数）個のブロックとは、Ｓ４２においてusedブロックとして分類されたブロック群のことである。
【０１０５】
また、Ｓ４３−１では、ページ管理部１７は、追記対象となるブロックがunusedブロックの場合、ディスク２０ａに作成されたunusedエリアのうち、有効なブロックが配置されている最後の領域に隣接する空き領域へ、追記対象となるunusedブロックを追記する。すなわち、ページ管理部１７は、ディスク２０ａにおいて書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するｍ個のブロックが配置されていない空領域に、ｍ個のブロックをそれぞれ書込みする。ここで、ｍ（ｍ：整数）個のブロックとは、Ｓ４２においてunusedブロックとして分類されたブロック群のことである。
【０１０６】
ページ管理部１７は、usedブロックについては物理レイアウト管理情報（used用）１５ｂ、unusedブロックについては物理レイアウト管理情報（unused用）１５ａを更新する（Ｓ４３−２）。物理レイアウト管理情報の更新について、図１８を用いて説明する。
【０１０７】
ページ管理部１７は、追記対象ブロックに対応するページのエントリを、ページ管理リスト１８から削除する（Ｓ４３−３）。ページ管理部１７は、ページ管理リスト１８からＳ４１で決定された対象ブロック（unusedブロックとusedブロック）に対応するページのエントリを削除する。図１７の場合、ページ管理リスト１８の下から４つのエントリ（破線で囲まれたエントリ）が削除される。
【０１０８】
図１８は、本実施形態における物理レイアウト管理情報（used用）と物理レイアウト管理情報（unused用）の更新例を示す。なお、物理レイアウト管理情報（used用）１５ｂと物理レイアウト管理情報（unused用）１５ａの更新前において、以下で説明するブロックＩｄ＝２，３，４、６のブロックは、usedエリアに配置されているものとする。
【０１０９】
例えば、追記対象となるusedブロックが、ブロックＩｄ＝６のブロックである場合、ページ管理部１７は、図１８（Ａ）に示すように、旧ブロックＩｄ＝６に対応するブロックとして、新たにブロックＩｄ＝１０のエントリを、物理レイアウト管理情報（used用）１５ｂの最後に追加する。このとき、追加されたエントリの有効／無効フラグは、有効（〇）となっている。
【０１１０】
また、例えば、追記対象となるunusedブロックが、ブロックＩｄ＝２，３，４のブロックである場合、ページ管理部１７は、図１８（Ｂ）に示すように、旧ブロックＩｄ＝２，３，４に対応するブロックとして、新たにブロックＩｄ＝２０，２１，２２のエントリを、物理レイアウト管理情報（unused用）１５ａの最後に追加する。このとき、追加されたエントリの有効／無効フラグは、有効（〇）となっている。
【０１１１】
本実施形態によれば、“使われたページ”に対応するブロックがディスクの記憶領域上にまとまって配置される。その結果として、プリフェッチによる無駄読みを削減し、メモリ領域の利用効率を向上させることができる。それと共に、プリフェッチに効率化と、メモリによる高速化との両立を図ることができる。
【０１１２】
なお、本実施形態では、メモリ領域からディスクへページを書き戻す場合、ディスク２０ａ、２０ｂにて有効なブロックが配置されている最後の領域に隣接する空き領域（または無効化された領域）へそのブロックを追記したが、これに限定されない。例えば、追記対象となるブロックのサイズ以上の空き領域（無効化された領域）がディスク内にあれば、その空き領域の直前にある有効なブロックの次の領域からそのブロックを書き込むようにしてもよい。
【０１１３】
図１９は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ３０は、サーバ装置１１として機能する。コンピュータ３０は、ＣＰＵ３２、ＲＯＭ３３、ＲＡＭ３６、通信Ｉ／Ｆ３４、記憶装置３７、出力Ｉ／Ｆ３１、入力Ｉ／Ｆ３５、読み取り装置３８、バス３９、出力機器４１、入力機器４２によって構成されている。
【０１１４】
ここで、ＣＰＵは、中央演算装置を示す。ＲＯＭは、リードオンリメモリを示す。ＲＡＭは、ランダムアクセスメモリを示す。Ｉ／Ｆは、インターフェースを示す。バス３９には、ＣＰＵ３２、ＲＯＭ３３、ＲＡＭ３６、通信Ｉ／Ｆ３４、記憶装置３７、出力Ｉ／Ｆ３１、入力Ｉ／Ｆ３５、及び読み取り装置３８が接続されている。読み取り装置３８は、可搬型記録媒体を読み出す装置である。出力機器４１は、出力Ｉ／Ｆ３１に接続されている。入力機器４２は、入力Ｉ／Ｆ３５に接続にされている。
【０１１５】
記憶装置３７としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置３７またはＲＯＭ３３には、ＣＰＵ３２をアクセス制御装置１として機能させるプログラムが格納されている。ＲＡＭ３６は、データを一時的に保持するメモリ領域を有する。
【０１１６】
ＣＰＵ３２は、記憶装置３７等に格納した上記実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
【０１１７】
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク４０、および通信Ｉ／Ｆ３４を介して、例えば記憶装置３７に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置３８にセットされて、記憶装置３７にそのプログラムがインストールされ、インストールされたプログラムがＣＰＵ３２によって読み出されて、実行されてもよい。可搬型記憶媒体としてはＣＤ−ＲＯＭ、フレキシブルディスク、光ディスク、光磁気ディスク、ＩＣカード、ＵＳＢメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置３８によって読み取られる。
【０１１８】
また、入力機器４２には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器４１には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク４０は、インターネット、ＬＡＮ、ＷＡＮ、専用線、有線、無線等の通信網であってよい。
【０１１９】
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【０１２０】
上記実施形態に関し、更に以下の付記を開示する。
（付記１）
コンピュータに、
第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、前記第１のデータを含む第１のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第１記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第１記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御プログラム。
（付記２）
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第１記憶部に書き込む
ことを特徴とする付記１に記載のアクセス制御プログラム。
（付記３）
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第１記憶部とは異なる第２記憶部に書き込む
ことを特徴とする付記１または２に記載のアクセス制御プログラム。
（付記４）
第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、前記第１のデータを含む第１のブロックを含む連続するブロックを読み出す読出部、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードするロード部と、
前記第１記憶部の前記連続するブロックを無効化する無効化部と、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第１記憶部の連続した空き領域に書き込む書込部と、
を備えることを特徴とするアクセス制御装置。
（付記５）
前記書込部は、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第１記憶部に書き込む
ことを特徴とする付記４に記載のアクセス制御装置。
（付記６）
前記書込部は、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第１記憶部とは異なる第２記憶部に書き込む
ことを特徴とする付記４または５に記載のアクセス制御装置。
（付記７）
コンピュータは、
第１のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第１記憶部から、前記第１のデータを含む第１のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第１記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第１記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御方法。
（付記８）
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第１記憶部に書き込む
ことを特徴とする付記７に記載のアクセス制御方法。
（付記９）
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第１記憶部とは異なる第２記憶部に書き込む
ことを特徴とする付記７または８に記載のアクセス制御方法。
【符号の説明】
【０１２１】
１０１  メモリ領域
１０２，１０２ａ，１０２ｂ  ディスク
１０３  キュー
１      アクセス制御装置
２      読出部
３      ロード部
４      無効化部
５      書込部
６      第１記憶装置
７      第２記憶装置
１１    サーバ
１２    制御部
１３    ＩＯ実行部
１４    ブロックＩＯキュー
１５ａ，１５ｂ  物理レイアウト管理情報
１６    ＩＯサイズ算出部
１７    ページ管理部
１８    ページ管理リスト
１９    メモリ
２０ａ，２０ｂ  ディスク
【図１】
2016028319.tif 000003
【図２】
2016028319.tif 000004
【図３Ａ】
2016028319.tif 000005
【図３Ｂ】
2016028319.tif 000006
【図４】
2016028319.tif 000007
【図５Ａ】
2016028319.tif 000008
【図５Ｂ】
2016028319.tif 000009
【図５Ｃ】
2016028319.tif 000010
【図６】
2016028319.tif 000011
【図７】
2016028319.tif 000012
【図８】
2016028319.tif 000013
【図９】
2016028319.tif 000014
【図１０】
2016028319.tif 000015
【図１１】
2016028319.tif 000016
【図１２】
2016028319.tif 000017
【図１３】
2016028319.tif 000018
【図１４】
2016028319.tif 000019
【図１５】
2016028319.tif 000020
【図１６Ａ】
2016028319.tif 000021
【図１６Ｂ】
2016028319.tif 000022
【図１７】
2016028319.tif 000023
【図１８】
2016028319.tif 000024
【図１９】
2016028319.tif 000025