(57)【要約】【課題】  ページフォールト処理にかかるオーバーヘッドと、２次記憶領域から１次記憶領域にロードする際のオーバーヘッドを削減し、プログラムの実行応答性能を向上させる。【解決手段】  ページアクセス検出部１０２は、プロセスが物理ページへアクセスすることを検出し、ページアクセス情報管理部１０３は、ページアクセス検出部１０２で検出した過去のページアクセス頻度を管理し、ページアクセス予測部１０４は、ページアクセス情報管理部１０３の情報に基づいて、次にアクセスされる可能性が高いページを予測し、予測ロード実行部１０６は、予測したページを２次記憶領域から１次記憶領域にロードする。ページアクセス予測部１０４は、予測精度を高めるために過去のページアクセス頻度に基づいて予測し、予測ロード実行部が負荷を高めないように事前にロードする。【選択図】      図１
2006048422.tif 000002
【特許請求の範囲】
【請求項１】
１次記憶領域と２次記憶領域とを利用して動作するローディング装置であって、
プログラムが実行されている動作状態を管理する動作状態管理手段と、
実行プログラムが１次記憶領域のページへアクセスすることを検出するページアクセス検出手段と、
前記ページアクセス検出手段によって検出されたページを識別する情報と、前記ページへのアクセス頻度とを、過去のページアクセス情報として管理するページアクセス情報管理手段と、
前記動作状態管理手段の状態情報と前記ページアクセス情報管理手段のページアクセス情報とに基づいて、将来アクセスされる可能性が高いページを予測するページアクセス予測手段と、
前記ページアクセス予測手段によって予測されたページを実行プログラムがアクセスする前に、２次記憶領域から１次記憶領域にあらかじめロードする予測ロード実行手段とを備え、
前記ページアクセス予測手段は、予測精度を確保するためのしきい値の範囲内で、アクセス頻度の上位ページを予測対象のページとして選択することを特徴とするローディング装置。
【請求項２】
前記ページが１次記憶領域に存在するかどうかを管理するロード状態管理手段をさらに備え、
前記ページアクセス予測手段は、前記ロード状態管理手段からページの存在情報を取得して１次記憶領域にロードすべきページを前記予測ロード実行手段に通知することを特徴とする請求項１記載のローディング装置。
【請求項３】
前記予測ロード実行手段は、現在実行中のプログラムが動作する演算処理装置を介さずに、あるいは現在実行中のプログラムの動作を停止させずにロードすることを特徴とする請求項１又は２記載のローディング装置。
【請求項４】
前記ページアクセス情報管理手段は、前記ページを識別する情報として対応する２次記憶領域のページ情報を取得して、プログラムの実行を終了した後もページアクセス情報を保持し続けることを特徴とする請求項１〜３のいずれかに記載のローディング装置。
【請求項５】
前記動作状態管理手段は、プログラムの仮想記憶空間の情報を管理し、
前記予測ロード実行手段は、前記動作状態管理手段から仮想記憶空間の情報を取得し、ページがすでに１次記憶領域に存在するかどうかによらず、仮想記憶空間に登録されていないページを仮想記憶空間に登録することを特徴とする請求項１〜４のいずれかに記載のローディング装置。
【請求項６】
前記予測ロード実行手段は、実行中ではないプログラムの仮想記憶空間に登録されていないページを仮想記憶空間に登録することを特徴とする請求項５記載のローディング装置。
【請求項７】
前記動作状態管理手段は、動作状態の変化を前記予測ロード実行手段に通知し、
前記予測ロード実行手段は、前記ページアクセス予測手段から通知されたページを１次記憶領域にロードするまで管理し、前記動作状態管理手段から動作状態の変化が通知されると、管理していたページのロードを停止することを特徴とする請求項３〜６のいずれかに記載のローディング装置。
【請求項８】
前記予測ロード実行手段は、ロードを停止したページと停止した際の動作状態を保存し、前記動作状態管理手段が次に同じ動作状態を検出した際に、以前保存したページのロードを続行することを特徴とする請求項７記載のローディング装置。
【請求項９】
前記動作状態管理手段は、複数のプログラムの実行状態に対応する状態を管理し、
前記ページアクセス情報管理手段は、複数のプログラムの実行状態に対応するページアクセス情報を管理し、
前記ページアクセス予測手段は、複数のプログラムの実行状態に応じて、予測対象のページを選択することを特徴とする請求項１〜８のいずれかに記載のローディング装置。
【請求項１０】
前記ページアクセス情報管理手段は、ページへのアクセス頻度の合計を管理し、
前記ページアクセス予測手段は、前記しきい値の範囲としてアクセス頻度の合計に対する割合を用いることを特徴とする請求項１〜８のいずれかに記載のローディング装置。
【請求項１１】
前記ページアクセス予測手段は、前記しきい値の範囲として、アクセス記録が存在するページの中で、予測の対象とするページのアクセス頻度との比較を用いることを特徴とする請求項１〜８のいずれかに記載のローディング装置。
【請求項１２】
前記ページアクセス情報管理手段は、全てのページアクセス頻度の合計値がしきい値を下回る場合に、ページアクセス予測手段にページアクセス情報を送らないことを特徴とする請求項１〜８のいずれかに記載のローディング装置。
【請求項１３】
前記ページアクセス情報管理手段は、管理していたデータを破棄してページアクセス情報を新規に取得することを特徴とする請求項１〜８のいずれかに記載のローディング装置。
【請求項１４】
１次記憶領域と２次記憶領域とを利用するローディング方法であって、
プログラムが実行されている動作状態を管理する動作状態管理ステップと、
実行プログラムが１次記憶領域のページへアクセスすることを検出するページアクセス検出ステップと、
前記ページアクセス検出ステップにおいて検出されたページを識別する情報と、前記ページへのアクセス頻度とを、過去のページアクセス情報として管理するページアクセス情報管理ステップと、
前記動作状態の情報と前記ページアクセス情報とに基づいて、将来アクセスされる可能性が高いページを予測するページアクセス予測ステップと、
前記ページアクセス予測ステップにおいて予測されたページを実行プログラムがアクセスする前に、２次記憶領域から１次記憶領域にあらかじめロードする予測ロード実行ステップとを含み、
前記ページアクセス予測ステップは、予測精度を確保するためのしきい値の範囲内で、アクセス頻度の上位ページを予測対象のページとして選択することを特徴とするローディング方法。
【請求項１５】
１次記憶領域と２次記憶領域とを利用するローディングプログラムであって、
プログラムが実行されている動作状態を管理する動作状態管理手段と、
実行プログラムが１次記憶領域のページへアクセスすることを検出するページアクセス検出手段と、
前記ページアクセス検出手段によって検出されたページを識別する情報と、前記ページへのアクセス頻度を、過去のページアクセス情報として管理するページアクセス情報管理手段と、
前記動作状態管理手段の動作状態情報と前記ページアクセス情報管理手段のページアクセス情報とに基づいて、将来アクセスされる可能性が高いページを予測するページアクセス予測手段と、
前記ページアクセス予測手段によって予測されたページを実行プログラムがアクセスする前に、２次記憶領域から１次記憶領域にあらかじめロードする予測ロード実行手段としてコンピュータを機能させ、
前記ページアクセス予測手段は、予測精度を確保するためのしきい値の範囲内で、アクセス頻度の上位ページを予測対象のページとして選択することを特徴とするローディングプログラム。
【請求項１６】
請求項１５記載のローディングプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想記憶システムのデマンドローディング機構において、ページフォールト処理のオーバーヘッドの削減とプロセスの応答性を高める技術に関するものである。
【背景技術】
【０００２】
一般に、プログラムの実行単位であるプロセスとプロセスが実際にアクセスする実記憶領域との間に仮想記憶空間を設けて、様々な機能を有用にする仮想記憶システムが存在する。
【０００３】
仮想記憶システムにより実現可能な機能の一つが、デマンドローディングと呼ばれるものである。これは、２種類以上の実記憶領域、すなわち高速であるが容量が小さい１次記憶領域と２次記憶領域とを持つシステムであり、プロセスから１次記憶領域へのアクセスが実際に発生するまで、他の２次記憶領域からの１次記憶領域への情報データをロードしないことで、無駄な１次記憶領域の消費を避けることができる機能である。プロセスから１次記憶領域へのアクセスを検出する手段として、一般的にはシステムの記憶領域に対する例外処理を利用している。
【０００４】
仮想記憶空間あるいは実記憶領域は、管理するための一定の単位に分割されている。その単位は、一般的にページと呼ばれ、以降本発明においてもページという名称を用いる。また、システムの記憶領域に対する例外処理を、一般的にはページフォールトと呼び、以降本発明においてもページフォールトという名称を用いる。
【０００５】
デマンドローディング機構を利用することで１次記憶領域の消費サイズを削減することができる一方、問題点も存在する。それは、新規ページへのアクセスの度に、ページフォールト処理にかかるオーバーヘッドと、２次記憶領域から１次記憶領域にロードするオーバーヘッドとが処理時間に加わることである。この問題を解決するために、すなわち１次記憶領域の物理ページへのアクセスを高速化するためには、ページフォールトが発生した時に、そのアクセスしたページからメモリ上で連続する数ページを事前にまとめてロードする方法が一般的である。
【０００６】
さらに改善を施した従来技術には、１つのプログラムを事前に全てロードして実行し、一度参照したページに、マークをつけてページファイルに退避させ、再度実行時に、ページフォールト近辺のページで以前実行した際にアクセスされた数ページを事前にロードする技術があった（例えば、特許文献１参照）。
【０００７】
また、ページフォールトが発生したページと、その次にページフォールトを発生させたページとの順序を記録し、その履歴情報の順序にしたがって先読みロードし、履歴情報がない場合には、メモリ上で連続する数ページをまとめてロードする技術があった（例えば、特許文献２参照）。
【０００８】
その他に、１つのプログラムのページアクセス履歴を順番に記録し、再実行時に履歴順番にしたがって主記憶装置の最大サイズまで、ページをあらかじめ主記憶装置にロードし、ページフォールトが発生すると、逆に履歴テーブルから該当ページ以降のページをロードし、その他のページをページアウトする技術があった（例えば、特許文献３参照）。
【特許文献１】特開平７−１５２５７４号公報
【特許文献２】特開平８−１６１２３０号公報
【特許文献３】特開平８−６３３９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、前記従来の構成では、ページが将来アクセスされると予測する予測精度が低いために、無駄なローディングを増加させてオーバーヘッドを増加させ、プロセスの応答性も向上しないという課題を有していた。
【００１０】
例えば、特許文献１では、アクセス記録が初回の動作のみに依存するため、他の処理シーケンスではアクセスしないページもローディングされ、無駄なローディングが増えてオーバーヘッドをさらに増加させ、さらにプロセスの応答性が向上しないという問題があった。また、ページフォールト近辺のアクセス済みページのみを事前にロードするので、将来のアクセスの確実性に乏しいページまでロードする恐れがある。
【００１１】
また、特許文献２では、最後に発生したページフォールトの順序のみにしたがって、事前にローディングする。しかし実際には、多数のプロセスが連携して動作するので、多数の動作シーケンスが存在し、ページのアクセスパターンが一定とは限らない。最後のアクセスパターンに依存する予測ローディングでは、確実性が乏しく無駄なローディングが増えるという問題があった。
【００１２】
また、特許文献３でも同様に、アクセスを順番に記録した履歴テーブルに基づくローディングでは、すぐに発生する別のアクセスパターンによって、無駄なローディングが増える恐れがある。また、ページフォールトが発生すると常に、履歴テーブルにないページのページアウトと、履歴テーブルに基づいて最大容量までのローディングが発生するのでオーバーヘッドの増大が著しいという問題があった。
【００１３】
本発明は、前記従来の課題を解決するもので、将来アクセスされるページの予測精度を向上させて事前のローディングを実行し、ページフォールトのオーバーヘッドの削減と、プロセスの応答性能の向上を達成するローディング装置、ローディング方法、ローディングプログラム及びローディングプログラムを記録したコンピュータ読み取り可能な記録媒体の提供を目的とする。
【課題を解決するための手段】
【００１４】
前記従来の課題を解決するために、本発明に係るローディング装置は、１次記憶領域と２次記憶領域とを利用して動作するローディング装置であって、プログラムが実行されている動作状態を管理する動作状態管理手段と、実行プログラムが１次記憶領域のページへアクセスすることを検出するページアクセス検出手段と、前記ページアクセス検出手段によって検出されたページを識別する情報と、前記ページへのアクセス頻度とを、過去のページアクセス情報として管理するページアクセス情報管理手段と、前記動作状態管理手段の状態情報と前記ページアクセス情報管理手段のページアクセス情報とに基づいて、将来アクセスされる可能性が高いページを予測するページアクセス予測手段と、前記ページアクセス予測手段によって予測されたページを実行プログラムがアクセスする前に、２次記憶領域から１次記憶領域にあらかじめロードする予測ロード実行手段とを備え、前記ページアクセス予測手段は、予測精度を確保するためのしきい値の範囲内で、アクセス頻度の上位ページを予測対象のページとして選択する。すなわち、ページアクセス情報管理部手段がこれまでに実行したページアクセス情報をページへのアクセス回数に基づいて記憶し、ページアクセス予測手段がページアクセス情報管理手段のページアクセス情報を統計的に利用して将来のページアクセスを予測し、事前のローディングを行う。
【００１５】
本構成によって、ページアクセスの予測を統計的に予測することができるので、精度の高い事前のローディングを可能にする。
【発明の効果】
【００１６】
本発明のローディング装置及びローディング方法及びローディングプログラムによれば、高精度な事前のローディングを可能にするので、不必要なローディング処理のオーバーヘッドやメモリ消費サイズの増大を招くことなく、ページフォールト処理のオーバーヘッドを削減し、プロセスの応答性を高めることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００１８】
（実施の形態１）
図１は、本発明の実施の形態１におけるローディング装置の構成を示す図である。本発明のローディング装置は、ＣＰＵなどの演算処理装置１０と１次記憶領域１１と２次記憶領域１２とを備える仮想記憶システムにおいて、プロセスの起動状態などの動作状態を管理する動作状態管理部１０１と、プロセスが物理ページへアクセスすることを検出するページアクセス検出部１０２と、ページアクセス検出部１０２で検出した過去のページアクセス情報を管理するページアクセス情報管理部１０３と、２次記憶領域から１次記憶領域にロードしたページの状態を管理するロード状態管理部１０５と、ページアクセス情報管理部１０３の情報に基づいて、次にアクセスされる可能性が高いページを予測するページアクセス予測部１０４と、ページアクセス予測部１０４が予測したページを２次記憶領域から１次記憶領域にロードする予測ロード実行部１０６とによって構成される。
【００１９】
以上のように構成されたローディング装置について、以下その動作を述べる。
【００２０】
本発明のローディング装置は、ページフォールト情報を記憶して、過去のページアクセス情報を学習する処理と、記憶したページフォールト情報を統計的に利用して、将来のページアクセスを予測し、ページアクセスが起こる前にあらかじめ１次記憶領域にロードする処理の２つによって説明できる。
【００２１】
図２は、過去のページアクセス情報を学習する処理について説明するためのフローチャートである。まず、ページアクセス検出部１０２は、ページアクセスを検出して、検出したページ情報をページアクセス情報管理部１０３に渡す（Ｓ１０１）。次に、動作状態管理部１０１は、プロセス動作状態をページアクセス情報管理部１０３に通知する（Ｓ１０２）。ページアクセス情報管理部１０３は、受け取ったページアクセス情報を管理（登録）する（Ｓ１０３）。
【００２２】
図３は、将来のページアクセスを予測する処理について説明するためのフローチャートである。ページアクセス情報管理部１０３は、ページアクセス予測部１０４にページアクセス情報を通知する（Ｓ１５１）。ページアクセス予測部１０４は、予測対象となるページを選択する（Ｓ１５２）。ロード状態管理部１０５は、予測対象となるページのロード情報をページアクセス予測部１０４に通知する（Ｓ１５３）。ページアクセス予測部１０４は、予測ロードするページを選択して予測ロード実行部１０６に通知する（Ｓ１５４）。予測ロード実行部１０６は、予測対象のページをロードする（Ｓ１５５）。
【００２３】
ページアクセスを学習する処理と予測してロードする処理の２つの処理は、システムが動作している間並列で実施されるが、一方の処理のみを実施することも可能である。この場合、例えば学習する処理のみを実施する場合、一定の学習ができるまで予測ローディングを実施しない設定が可能になる。あるいは、予測してロードする処理のみを実施する場合、一定の学習を経た後に予測ローディングのみを実施することが可能になる。
【００２４】
次に、動作状態管理部１０１の動作に関して、図４を参照して説明する。仮想記憶システムにおいて、起動後に演算処理装置で動作中のプロセス１３１や現在動作可能なプロセス１３２を管理している。例えば、図４ではプロセス＃１が動作中であり、プロセス＃２とプロセス＃５とプロセス＃７とが動作可能である。動作状態管理部１０１は、各々のプロセスのページアクセス情報を管理するために、現在プロセスを識別する情報をページアクセス情報管理部１０３及び予測ロード実行部１０６に通知する。
【００２５】
また、動作状態管理部１０１は、各々のプロセスに対応する情報として、仮想記憶空間の状態やアドレス変換処理テーブルや利用しているファイルやページの情報を記憶している。動作状態管理部１０１は、予測ロード実行部１０６から特定のプロセスに関する情報の要求があった場合、該当するそれらのプロセスの情報を予測ロード実行部１０６に通知する。また、動作状態管理部１０１は、予測ロード実行部１０６から特定のファイルやページの情報を利用するプロセスに関する要求があった場合、管理しているプロセスの情報を検索して予測ロード実行部１０６に通知する。
【００２６】
動作状態管理部１０１は、動作中のプロセス１３１に対応するプロセスの情報だけではなく、動作可能なプロセス１３２の各プロセスも同様に、対応する仮想記憶空間の状態やアドレス変換処理テーブルや利用しているファイルやページの情報を記憶している。動作状態管理部１０１は、システムの動作状態をページアクセス情報管理部１０３に通知する。
【００２７】
次に、ページアクセスの際の動作に関して図５を参照して説明する。仮想記憶システムにおいて動作するプロセスは、自らに割り当てられた仮想記憶空間１４１にアクセスすることで、物理メモリ領域である１次記憶領域１４２へのアクセスを行っている。プロセスが仮想記憶空間１４１のいずれかのページにアクセスすると、アドレス変換処理テーブル１５２によって仮想記憶空間１４１のアドレスに対応する１次記憶領域１４２のアドレスが求められ、該当するページにアクセスする。
【００２８】
ここで、仮想記憶空間１４１からプロセスにとって必要な１次記憶領域１４２に対応付けられていないページ１５１にプロセスがアクセスすると、アドレス変換処理テーブル１５２でそれを検知してページフォールトが発生する。ページフォールトが発生すると、仮想記憶空間１４１のページ１５１を１次記憶領域１４２のページ１５３へ割り当てるとともに、必要であればプロセスにとって必要な２次記憶領域１４３のページ１５４を１次記憶領域１４２のページ１５３にロードする。
【００２９】
２次記憶領域１４３には、どのような記憶媒体を用いてもよいが、不揮発性のメモリが使用され、ハードディスクやフラッシュＲＯＭやスワップ用記憶媒体等が考えられる。２次記憶領域１４３に記憶されるページは、使用を容易にするためにある集合でまとめて管理され、まとめられた単位としてファイルという用語が用いられる。本発明では、以降ファイルという単位を用いる。
【００３０】
ページアクセス検出部１０２の動作に関して、図５を参照して説明する。ページアクセス検出部１０２は、プロセスが１次記憶領域１４２の物理ページへアクセスしたことを検出して、該当する仮想記憶空間１４１のページの情報を、ページアクセス情報管理部１０３に通知する。ページアクセス検出部１０２は、アドレス変換処理の中で発生したページフォールトを検出することも可能であり、あるいはプロセスが１次記憶領域１４２に対して読み出しや書き込みを行った際にアドレス変換処理の過程で、その読み出しや書き込みの発生を検出することも可能である。
【００３１】
ページアクセス検出部１０２は、ページへのアクセスを検出すると、ページアクセスのあったファイルとページに関する情報をページアクセス情報管理部１０３に通知する。例えば、ページアクセス情報としては、ページフォールトやページの読み出しや書き込みを検出することが考えられる。ページフォールトを検出する場合、ページアクセス情報管理部１０３には過去に発生したページフォールトの情報が管理されることになり、各ページのページフォールトの発生しやすさを情報として蓄えられる。また、読み出しや書き込みを検出する場合、ページアクセス情報管理部１０３には過去に発生した読み出しや書き込みの情報が管理されることになり、各ページの読み出しや書き込みの発生しやすさが情報として蓄えられる。
【００３２】
ページアクセス情報管理部１０３の動作に関して、図６を参照して説明する。図６は、ページアクセス情報管理部１０３が管理するページアクセス情報の一つの形態を示す図である。ページアクセス情報管理部１０３は、過去にページアクセス検出部１０２によって検出されたページアクセスの情報を管理する。ページアクセス情報は、過去に起動し動作したプロセスごとに、そのプロセスがアクセスしたファイルとそのファイルの各ページへのアクセス頻度を記録している。ページアクセス情報管理部１０３は、現在動作しているプロセスの情報を動作状態管理部１０１から取得して、そのプロセスがアクセスする回数をページごとに記録する。
【００３３】
ページアクセス情報管理部１０３は、プロセスごとにページアクセス情報を管理する。例えば、図６に示すプロセス＃１に対応するページアクセス情報には、これまでプロセス＃１がアクセスしたファイルＡとファイルＢとが含まれる。各ファイルのページアクセス情報には、ファイルに含まれる各ページを識別する仕組みがあり、例えばページ識別番号２０１に対応する各ページのページアクセス頻度２０２を管理している。
【００３４】
ページアクセス情報管理部１０３が記憶するページアクセス情報は、プロセスが終了して動作可能な状態ではなくなっても保持され続け、再度当該プロセスが起動した場合にも過去のページアクセス情報を有効的に利用することができる。例えば、ページアクセス情報として、２次記憶領域のページへのアクセス、あるいは２次記憶領域のファイルとページへのアクセス情報を用いることにより、プロセスの終了後にも有効なページアクセス情報の保持が可能になる。
【００３５】
なお、ページアクセス情報は、リセットして一度破棄することによって、新たに過去のページアクセス情報を学習し直すことも可能である。
【００３６】
ここでは、ページ識別番号に対するページアクセス頻度の対応関係を表で表したが、ファイルの各ページとそれに対するアクセス頻度が記録できればよく、実装方法に依存しない。例えば、ファイルの先頭からの変位によってページを特定し、ファイル名とファイルの先頭からの変位の組み合わせに応じたアクセス頻度を管理してもよい。
【００３７】
また、ページアクセス情報管理部１０３は、プロセスごとに管理しているページアクセス情報をプロセスが終了した際に、破棄したり無効にしたりすることも可能である。その場合、動作状態管理部１０１からプロセスが終了した際の情報を取得し、ページアクセス情報管理部１０３が当該プロセスのページアクセス情報を破棄あるいは無効にする処理を行えばよい。この場合、ページアクセス情報管理部１０３は、ページアクセス情報として、１次記憶領域のページへのアクセス情報を管理するだけでも実現可能である。
【００３８】
ページアクセス情報管理部１０３は、将来のページアクセスを予測するために、プロセスのページアクセス情報を適切に選択し、選択したページアクセス情報をページアクセス予測部１０４に渡す。ページアクセス情報管理部１０３は、現在動作中のプロセスに関わるページアクセス情報を選択して渡す。
【００３９】
ページアクセス予測部１０４は、ページアクセス情報管理部１０３から過去のページアクセス情報を受け取り、将来アクセスされるページをあらかじめ予測する。ページアクセス予測部１０４は、予測の対象となったページに関するロード情報を、ロード状態管理部１０５から受け取り、予測対象ページとロード情報を予測ロード実行部１０６に通知する。
【００４０】
ページアクセス予測部１０４は、動作中のプロセスが切り替わった時に、そのプロセスが将来使用するページに対して予測ローディングを開始する。そのために動作状態管理部１０１は、管理する動作中のプロセスから別のプロセスに動作が切り替わると、そのことをページアクセス予測部１０４に通知する。
【００４１】
また、ページアクセス予測部１０４は、動作中のプロセスが切り替わった時だけではなく、ページアクセス検出部１０２によって検出したページフォールトを契機にして、予測ローディング開始してもよい。
【００４２】
ページアクセス情報管理部１０３から取得したページアクセス情報には、図６に例示したとおり、各ページに対するページアクセスの頻度情報が記憶されているので、この頻度情報に基づいて予測することで、精度の高いページアクセスの予測が可能になる。
【００４３】
具体的には、例えば、ページアクセス予測部１０４は、あらかじめ予測ロードするページ数を定めておいて、ページアクセス情報の中で最もページアクセスの頻度が高いページから順に、一定のページ数まで予測ロードの対象ページとする。あるいは、一定のページ数ではなく、一定のページアクセス頻度以上のページを予測ロードの対象とすることもできる。
【００４４】
以上のしきい値は、あらかじめ設定するだけではなく、ページアクセス情報管理部１０３がページアクセス頻度の情報に基づいて設定してもよい。例えば、最大値や最小値や平均値を基準にしてしきい値を設定してもよい。
【００４５】
また、ページアクセス情報管理部１０３がファイルごとのページアクセス頻度の合計を記憶してあるいは計算しておき、一定のページアクセス頻度が得られるまで、ページアクセス予測部１０４はページアクセスの予測を実施しないことで、予測精度を高めることができる。
【００４６】
さらには、ファイルごとにページアクセス予測部１０４で予測ロード対象にする各ページのページアクセス頻度の合計が一定割合を占めるまで予測ロード対象のページを選択することもできる。ファイル単位ではなく、複数のファイルを含む全体で一つにまとめて適用してもかまわない。
【００４７】
さらに別の方式として、ページアクセス予測部１０４は、アクセス記録のあるページの中で、そのページのアクセス頻度がどの程度上位であるかを判断して、予測対象のページを選択することができる。例えば、ページアクセス情報管理部１０３が、ファイルごとに（あるいは全体での）ページアクセスの頻度の最小値を記憶しておいて、予測ロードの対象にするページのページアクセス頻度と、そのファイル（あるいは全体）のページアクセス頻度の最小値との差が一定以上にならない場合は、予測ロードの対象としないことで、予測の精度をさらに改善することができる。あるいは、ページアクセスの頻度の分布が一定の標準偏差以上にならないと、ページアクセスを予測しないことも可能である。
【００４８】
なお、ページアクセス予測部１０４は、ページアクセスの予測精度を向上させるために、上述した方法を様々に組み合わせて将来のページアクセスを予測してもかまわない。
【００４９】
図７は、ロード状態管理部１０５がロード状態を管理する一つの形態を示す図である。ロード状態管理部１０５は、ファイルあるいはページごとにロード状態を管理する。図７では、ファイルＡのロード状態を管理していることを示している。ページ識別番号２５１は、ファイルＡに含まれる各ページを一意に識別するためのものである。ロード状態２５２は各ページのロード状態を管理していて、ロードされたか（図７の○）、ロードされていないか（図７の×）のいずれの状態であるのかを判断できる。
【００５０】
ロード状態管理部１０５は、ページアクセス予測部１０４から受け取った予測対象のページに対応するロード情報をページアクセス予測部１０４に返す。これにより、１次記憶領域にまだロードされていないページを選択してロードすることが可能になる。
【００５１】
図７の２５３は、ファイルＡに対応する領域を仮想記憶空間に持つプロセスの情報である。この情報は必ずしも必須の情報ではないが、ロード状態管理部１０５が、ページアクセス予測部１０４を通じてこの情報を予測ロード実行部１０６に通知することにより、他プロセスのページフォールトのオーバーヘッドを削減することが可能になる。
【００５２】
ロード状態管理部１０５は、ファイルの各ページとそのページのロード状態を管理できれば、どのような方式で実現してもよい。図７ではページ識別番号に対するロード状態の対応関係を表で表したが、ファイルの先頭からの変位によってページを特定し、ファイルと変位の組み合わせに応じたロード状態を管理してもよいし、ロードされたページだけを管理してもよい。また、ファイルという単位を用いずに、２次記憶領域上のページ単位のみでロード状態を管理してもよい。
【００５３】
図８は、ページアクセスを予測した後に、ページのロード状態を得て、予測ローディングを実施する処理を説明するためのフローチャートである。
【００５４】
まず、ページアクセス予測部１０４は、ロード状態管理部１０５から対象ページに関するロード状態を取得する（Ｓ３０１）。次に、ページアクセス予測部１０４は、予測ロード実行部１０６に対象ページの情報を渡す（Ｓ３０２）。そして、予測ロード実行部１０６は、対象ページがすでに１次記憶領域にロードされているか否かを判断する（Ｓ３０３）。すでに１次記憶領域にロードされている場合（Ｓ３０３でＹＥＳ）、予測ロード実行部１０６は、対象ページがプロセスの仮想記憶空間に登録されているか否かを判断する（Ｓ３０４）。対象ページがプロセスの仮想記憶空間に登録されている場合（Ｓ３０４でＹＥＳ）、予測ロード実行部１０６は、何もせず終了する。対象ページがプロセスの仮想記憶空間に登録されていない場合（Ｓ３０４でＮＯ）、予測ロード実行部１０６は、プロセスの仮想記憶空間に対象ページを登録する（Ｓ３０６）。
【００５５】
一方、対象ページが１次記憶領域にロードされていない場合（Ｓ３０３でＮＯ）、予測ロード実行部１０６は、対象ページを１次記憶領域にロードする（Ｓ３０５）。次に、予測ロード実行部１０６は、プロセスの仮想記憶空間に対象ページを登録する（Ｓ３０６）。
【００５６】
予測ロード実行部１０６は、動作状態管理部１０１から現在実行中のプロセスの情報を取得する。具体的には、実行中のプロセスを識別する情報、そのプロセスの仮想記憶空間の情報、及び予測ローディング対象のファイルやページに関する仮想記憶空間上の位置などを取得する。
【００５７】
予測ロード実行部１０６は、ページアクセス予測部１０４から予測ロード対象のページやファイル情報を取得し、事前に２次記憶領域から１次記憶領域にロードする。演算処理装置を用いて通常のロードをしてもよいが、さらに現在実行しているプロセスの動作を妨げずにロードする方法が考えられる。例えば、ダイレクトメモリアクセス（ＤＭＡ）を使用して、演算処理装置を介さず直接２次記憶領域から１次記憶領域にロードする方法や、マルチプロセッサシステムにおいて他の空き演算処理装置を用いてロードする方法がある。これにより、システムの動作を極力停止させることなく、予測ローディングを実施できる。
【００５８】
また、予測ローディングを実施した後に、動作状態管理部１０１から取得したプロセスの仮想記憶空間及びアドレス変換処理テーブル１５２に、ロードした１次記憶領域上のページを指すように登録する。予測対象ページがすでに１次記憶領域にローディングされている場合でも、このプロセスの仮想記憶空間及びアドレス変換処理テーブル１５２に登録されていなければ登録する。
【００５９】
これにより、プロセスの実行中に発生するページフォールトを事前に防止し、ページフォールトの発生によるオーバーヘッドを削減することができる。対象ページがすでに１次記憶領域にロードされているかどうかを判断する（図８のＳ３０３）方式の一例を挙げると、１次記憶領域上に物理ページがロードされているかどうかを示すフラグを、プロセスの仮想アドレスの空きビットに立てることによる方式が考えられる。あるいは、対応するアドレス変換処理の過程でロードされているかどうかを検出する方式や、直接アドレス変換処理を行って１次記憶領域の有効なデータにアクセスできるかどうかによって判断する方式も考えられる。
【００６０】
対象ページがプロセスの仮想記憶空間に登録されているか否かを判断する（図８のＳ３０４）方式の一例を挙げる。予測ロード実行部１０６は、ページアクセス予測部１０４から予測ローディング対象のページ情報として、ファイルとページへの変位の情報を取得する。また、動作状態管理部１０１から取得した当該プロセスの仮想記憶空間情報の中で、そのファイルのページに対応する空間を見つけて、その空間及び対応するアドレス変換処理テーブル１５２が１次記憶領域のページを指すように登録する。該当する仮想記憶空間あるいはアドレス変換処理テーブル１５２に、そのページが登録されたかどうかを示すビットを設けて、登録されているかどうかを判断すればよい。
【００６１】
また、予測ロード実行部１０６は、現在演算処理装置上で実行しているプロセスだけではなく、実行可能な状態の他プロセスの仮想記憶空間に登録されているかどうかを判断することができる。登録されていない場合に、他のプロセスの仮想記憶空間にも登録する方式も取ることができる。これを実現するために、予測ロード実行部１０６は、図１の動作状態管理部１０１から他のプロセスの仮想記憶空間情報を取得し、対象ページを該当する仮想記憶空間及びアドレス変換処理テーブル１５２のページに登録する。
【００６２】
あるいは、ファイルに対する領域を仮想記憶空間に持つプロセスの情報２５３を、ロード状態管理部１０５が持つ場合、予測ロード対象のファイルを利用するプロセスの情報を動作状態管理部１０１に問い合わせ、ページを取得したプロセスの仮想記憶空間及びアドレス変換処理テーブル１５２に登録することが可能である。
【００６３】
以上の方式を取ることにより、他のプロセスが実行されてそのページにアクセスされても、ページフォールトが発生せず、他のプロセスのページフォールト処理を削減することが可能になる。
【００６４】
予測ロード実行部１０６は、ページアクセス予測部１０４から取得した予測ロード対象のページを全て２次記憶領域から１次記憶領域にローディングしてもよいが、予測ロード対象のページやファイル情報を、予測ローディングを実行する時まで管理して、管理しているページの予測ロードが必要なくなった時には、それらのページの予測ロードを停止させることが可能である。
【００６５】
管理しているページの予測ロードが必要なくなる場合の一例を挙げると、プロセススイッチにより別プロセスのためのページアクセス予測が必要になった場合や、あるいは割り込みや例外処理などの発生によって、それまでのプロセスが動作していた条件が変化する場合である。
【００６６】
予測ロード実行部１０６が動作状態の変化を検知するために、動作状態管理部１０１は例えば、管理する動作中のプロセスから別のプロセスに動作が切り替わると、予測ロード実行部１０６に通知する。あるいは、動作状態管理部１０１は、演算処理装置で実施される割り込み処理や例外処理を検出し、それらの処理が入ると予測ロード実行部１０６に通知する。
【００６７】
予測ロード実行部１０６が、不要な予測ロードを実施しない方法を、プロセススイッチが発生した場合を例に挙げて説明する。不要な予測ロードを妨げるために、予測ロード実行部１０６は、プロセススイッチが発生した時に、それまで予測ロード対象としていたページを全て破棄して、ページアクセス予測部１０４から新しいプロセスのためのページをロードすることが可能である。あるいは、プロセスごとに予測ロード対象のページを保存、管理して、以前に予測ロード対象としてページアクセス予測部１０４から取得したページを、スイッチ後のプロセスのためにロードする。
【００６８】
以上のように、本発明の第１の実施形態にかかるローディング装置によれば、過去のページアクセスの頻度情報をもとに、将来のアクセスされるページを高精度に予測し、ページアクセスが発生する前にあらかじめ予測されたページをロードすることによって、ページフォールト処理のオーバーヘッドを削減し、プロセスの応答性を高めることが可能になる。
【００６９】
（実施の形態２）
本発明の第２の実施形態では、プロセスの起動状態に応じてページアクセス情報を管理し、将来のページアクセスを予測することで、より精度の高い予測を実現する。連動して動作する複数のプロセスが存在する場合、その複数のプロセスが起動している状態と、いずれかのプロセスのみ起動している状態とでは、ページアクセスの傾向が異なる。さらに、特定の処理を行う場合のみ、すなわち特定の連動するプロセスを起動した場合のみに、プロセスのメモリアクセスの応答性を高めたいことがある。これらの場合、複数のプロセスが起動している状態でのページアクセスの予測が必要になる。
【００７０】
以下、この第２の実施形態にかかるローディング装置に関して説明する。
【００７１】
第２の実施形態におけるページアクセス情報管理部１０３に関して、図９を参照して説明する。ページアクセス情報管理部１０３は、動作中のプロセスのページアクセス情報を管理するだけではなく、システムにおけるプロセスの起動状態に対応するページアクセス情報を管理する。図９は、あるプロセス集合３０１に対応するページアクセス情報を管理していることを示す。この場合、２つのプロセス＃１とプロセス＃２が一つのプロセス集合３０１に属し、プロセス＃１とプロセス＃２が起動している際に発生したページアクセスの情報を管理している。
【００７２】
このようにページアクセス情報管理部１０３は、各プロセス集合３０１に対応するページアクセス情報を管理する。
【００７３】
動作状態管理部１０１は、プロセス集合３０１に含まれるプロセスが全て動作中あるいは動作可能な状態になると、そのプロセス集合３０１としての起動を検知し、起動の検知とプロセス集合３０１を識別する情報をページアクセス情報管理部１０３に通知する。また、逆にプロセス集合３０１に含まれるプロセスが終了して、一つでも動作中及び動作可能な状態から外れれば、プロセス集合３０１としての終了を検知し、ページアクセス情報管理部１０３に通知する。
【００７４】
プロセス集合３０１は、起動しうる各プロセスを組み合わせることが可能であり、全ての組み合わせを設定してもよいが、連動するプロセスをあらかじめ指定して、いくつかのプロセス集合３０１を作成しておくことが考えられる。アプリケーション開発者やユーザが事前に関連するプロセス集合３０１を指定してもよい。
【００７５】
ページアクセス予測部１０４は、プロセス集合３０１としての起動とプロセス集合３０１の識別情報を動作状態管理部１０１から取得し、当該プロセス集合３０１のページアクセス情報をページアクセス情報管理部１０３から取得して、実施の形態１と同様に将来のページアクセスの予測を行い、予測ローディングを実行するページ情報を予測ロード実行部１０６に通知する。ページアクセス予測部１０４は、動作状態管理部１０１からプロセス集合３０１としての終了を検知した場合、ページアクセスの予測を停止する。
【００７６】
また、ページアクセス情報管理部１０３及びページアクセス予測部１０４は、指定されたプロセス集合３０１に対する動作のみを実施してもよいが、単一のプロセスの起動に対しても第１の実施形態と同様に実施することができる。
【００７７】
その他の動作に関しては、第１の実施形態と同様に実施することができる。
【００７８】
以上、本発明に関してローディング装置を中心に説明してきたが、ローディング装置のみに実施の範囲を限定するものではなく、ローディング方法、ローディングプログラム及びローディングプログラムを記録したコンピュータ読み取り可能な記録媒体に関しても、同様に実施することができる。
【００７９】
また、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【００８０】
本発明にかかるローディング装置、ローディング方法、ローディングプログラム及びローディングプログラムを記録したコンピュータ読み取り可能な記録媒体は、ページフォールト処理のオーバーヘッドを削減し、プロセスの応答性を高めることができ、１次記憶領域と２次記憶領域とを利用して動作するローディング装置、ローディング方法、ローディングプログラム及びローディングプログラムを記録したコンピュータ読み取り可能な記録媒体等として産業上有用である。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施の形態１におけるローディング装置の構成を示すブロック図である。
【図２】過去のページアクセス情報を学習する手順を示すフローチャートである。
【図３】将来のページアクセスを予測しあらかじめロードする手順を示すフローチャートである。
【図４】動作状態管理部の管理するプロセスの情報の一例を示す図である。
【図５】ページアクセスの際の動作を示す図である。
【図６】ページアクセス情報管理部が管理するページアクセス情報の一例を示す図である。
【図７】ロード状態管理部が管理するロード状態の一例を示す図である。
【図８】ページアクセス予測部と予測ロード実行部の動作を示すフローチャートである。
【図９】本発明の実施の形態２においてページアクセス情報管理部が管理するページアクセス情報の一例を示す図である。
【符号の説明】
【００８２】
１０    演算処理部
１１    １次記憶領域
１２    ２次記憶領域
１０１    動作状態管理部
１０２    ページアクセス検出部
１０３    ページアクセス情報管理部
１０４    ページアクセス予測部
１０５    ロード状態管理部
１０６    予測ロード実行部
【図１】
2006048422.tif 000003
【図２】
2006048422.tif 000004
【図３】
2006048422.tif 000005
【図４】
2006048422.tif 000006
【図５】
2006048422.tif 000007
【図６】
2006048422.tif 000008
【図７】
2006048422.tif 000009
【図８】
2006048422.tif 000010
【図９】
2006048422.tif 000011