(57)【特許請求の範囲】
【請求項１】
所定の時間後までに資源を排他的に確保する第１のプロセスが使用する第１のプロセス空間の容量を求めるページインサイズ計算手段と、
前記第１のプロセス空間をページインするためのメモリ領域がない場合、前記所定の時間後までに資源を排他的に確保しない第２のプロセスのプロセス空間からページアウトする第２のプロセス空間を決定するページアウト空間決定手段と、
前記第１のプロセス空間からページインして常駐設定する第３のプロセス空間を決定する常駐設定空間決定手段と
を含む監視部を含む情報処理装置。
【請求項２】
前記ページアウト空間決定手段が決定した第２のプロセス空間をページアウトするページアウト手段と、
前記常駐設定空間決定手段が決定した第３のプロセス空間をページインする常駐設定手段とを含む
請求項１に記載の情報処理装置。
【請求項３】
前記資源を排他的に使用するプロセスと、前記資源を排他的に使用するために待ち状態であるプロセスとの情報を保存する排他機構手段と、
前記資源の排他的使用状態の情報を示すロック情報を格納するロック情報格納手段とを含む
ロック関連情報格納手段を含み、
前記第１のプロセス及び第２のプロセスが、前記待ち状態のプロセスである
請求項１又は請求項２に記載の情報処理装置。
【請求項４】
前記第１のプロセス及び第２のプロセスが、
前記ロック情報格納手段に資源を排他的に使用するための情報を登録するロック登録手段と、
前記排他機構手段に排他情報を設定するロック取得手段と、
前記ロック取得手段からの指示を基に、前記ロック情報格納手段の情報に前記資源の排他的使用の開始に関する情報を設定するロック開始手段と、
前記資源の排他的使用を解除するロック解除手段と、
前記ロック解除手段から指示を受けて前記ロック情報格納手段の情報に前記資源の解除に関する情報を設定する積算手段と、
前記ロック解除手段から指示されて、プロセス空間の常駐設定を解除する常駐解除手段と、
とを含む情報を処理する処理プロセスである
請求項３に記載の情報処理装置。
【請求項５】
前記処理プロセスが
前記プロセス空間の消失を解決するミッシング解決手段と、
前記ミッシング解決手段からの指示を基に前記ロック情報格納手段の消失に関する情報を更新するカウント手段と
を含む
請求項４に記載の情報処理装置。
【請求項６】
前記ロック情報格納手段が、
前記資源のアドレスであるロックアドレスと、前記処理プロセスのプロセス番号と、前記処理プロセスがアクセスするプロセス空間のアドレスと、前記資源が排他的に確保された回数であるロックの回数と、前記プロセス空間の消失の発生回数であるミッシング発生回数と、前記資源が排他的に確保された時間であるロック取得時間と、前記資源を排他的に確保した時刻であるロック取得時刻とを含む
請求項４又は請求項５に記載の情報処理装置。
【請求項７】
情報処理装置において、
所定の時間後までに資源を排他的に確保する第１のプロセスが使用する第１のプロセス空間の容量を求め、
前記第１のプロセス空間をページインするためのメモリ領域がない場合、前記所定の時間後までに資源を排他的に確保しない第２のプロセスのプロセス空間からページアウトする第２のプロセス空間を決定し、
前記第１のプロセス空間からページインして常駐設定する第３のプロセス空間を決定する
情報処理方法。
【請求項８】
所定の時間後までに資源を排他的に確保する第１のプロセスが使用する第１のプロセス空間の容量を求める処理と、
前記第１のプロセス空間をページインするためのメモリ領域がない場合、前記所定の時間後までに資源を排他的に確保しない第２のプロセスのプロセス空間からページアウトする第２のプロセス空間を決定する処理と、
第１のプロセス空間からページインして常駐設定する第３のプロセス空間を決定する処理と
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理に関し、特に、資源（リソース）の排他的な管理に関する。
【背景技術】
【０００２】
情報処理装置では、複数の処理（例えば、プロセス）が並列に動作する。このような情報処理装置のシステムは、マルチプロセスシステムと言われる。マルチプロセスシステムにおいて、複数の処理（プロセス）で共有するシステムの資源（メモリや装置（デバイス）などの資源（リソース））の利用効率や情報の整合性を保つため、リソースのアクセス制限として排他制御（ロック）が用いられる。（例えば、特許文献１参照）
例えば、１つのプロセスがあるデバイスを使用する場合、そのプロセスは、他のプロセスがそのデバイスにアクセスできないように、デバイスにアクセス制限（排他制御）を設定する。デバイスの使用が終了すると、そのプロセスは、デバイスのアクセス制限を解除する。
【０００３】
デバイスがアクセス制限（排他状態）されている場合、他のプロセスは、そのデバイスにアクセスできない。そのため、各プロセスは、使用したいデバイスがアクセス制限されているか否かを確認し、アクセス制限されている場合、アクセス制限が解除（解放）されるまで、デバイスへのアクセスを待つ。
【０００４】
なお、プロセスが、リソースにアクセス制限を設定することを、「ロックする」、「ロック取得」、又は、「ロックを確保する」と言う。また、プロセスがアクセス制限を解除することを、「アンロックする」、「ロック解放」、又は「ロック解除」と言う。
【０００５】
また、情報処理装置の各処理（プロセス）が、情報処理装置の物理的なメインメモリ（主記憶）の容量に制限されないで処理を実行するため、一般的な情報処理装置を管理するシステム（例えば、ＯＳ（Operation System））は、メモリの管理として仮想メモリを用いる。
【０００６】
例えば、ＯＳは、各プロセスがアクセスする範囲（プロセス空間）を外部の補助記憶装置に割り当てる。そして、プロセスが、実際にプロセス空間にアクセスするとき、ＯＳは、ＭＭＵ(Memory Management Unit)などを用いて、アクセスする範囲のプロセス空間をメインメモリに読み込んで、プロセスに提供する。プロセスがプロセス空間へのアクセスを終了すると、ＯＳは、メインメモリのプロセス空間を、補助記憶装置に退避して、プロセス空間に割り当てたメインメモリの領域を解放する。
【０００７】
また、ＯＳがプロセス空間をメインメモリに割り当てようとしたときにメインメモリに割り当てる空き領域がない場合、ＯＳは、メインメモリに割り当てているいずれかのプロセス空間の領域を補助記憶装置に退避し、メインメモリの領域を開放する。（例えば、特許文献２参照。また、仮想メモリではなくキャッシュメモリの技術であるが、関連する技術が特許文献３に記載されている。）
なお、メインメモリから補助記憶装置にデータを退避することを、「ページアウト」又は「スワップアウト」と言う。プロセス空間が、ページアウトされ、メインメモリにないことを、ミッシング（消失）と言う。
【０００８】
また、補助記憶装置からメインメモリにプロセス空間を読み出すことを、「ページイン」又は「スワップイン」と言う。
【０００９】
このような仮想メモリを用い、プロセスは、メインメモリの容量に制限されない処理を実行する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１１−２０４０６４
【特許文献２】特開２００４−２２７１８８
【特許文献３】特開２０１０−１０２４１３
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ページアウトされたプロセス空間にアクセスするために、プロセスは、プロセス空間が補助記憶装置からメインメモリに読み出される（ページイン）まで待つことが必要である。このように、ページアウトされたプロセス空間へのアクセスは、メインメモリにあるプロセス空間へのアクセスに比べ、多くの時間を必要とする。
【００１２】
そのため、ロック取得中のプロセスが使用するプロセス空間が、ページアウトされると、そのプロセスは、処理時間が長くなる。その結果、ロックを取得したプロセスのロックを取得している時間が長くなってしまう問題点がある。（ロック取得時間が長くなってしまうことを、「ロックネック」と言う。）
ロック取得時間を長くしないためには、ロック中のプロセスがアクセスするプロセス空間は、ページアウトしないことが必要である。
【００１３】
例えば、各プロセスが、使用するプロセス空間に、メインメモリに常駐する属性を設定（常駐設定）すると、プロセス空間のページアウトは、発生しない。
【００１４】
しかし、動作しているすべてのプロセスのプロセス空間を常駐させると、メインメモリの容量が不足してしまう。（メインメモリの容量の不足を、「メモリネック」と言う。）
そこで、プロセスがリソースのロックを取得する前に、使用するプロセス空間を常駐に設定することが行われる。しかし、この場合でもロックを取得して動作するプロセスが多くなると、常駐設定するプロセス空間が多くなり、メモリネックが発生する。さらに、各プロセスは、ロックの取得と解除のたびに、プロセス空間の常駐の設定及び解除の設定の処理が必要となり、プロセスの処理時間が、長くなる。そのため、情報処理装置を含む処理システムのスループットが低下する問題点があった。
【００１５】
上述の特許文献１に記載のマルチプロセッサシステムは、平均キャッシュミス回数などを基に、排他処理専用プロセッサ又は汎用プロセッサへの割り当てを決めるものである。そのため、特許文献１に記載のマルチプロセッサシステムは、プロセス割り当て後のページアウトについては対応できない。そのため、特許文献１に記載のマルチプロセッサシステムは、汎用プロセッサに割り当て後に発生する、ロック取得中のページアウトに基づくロックネックの問題点があった。
【００１６】
特許文献２に記載のジョブ管理装置は、メモリ量に基づいてスワップアウト・スワップインするジョブを決めるものである。そのため、特許文献２に記載のジョブ管理装置は、ロック取得中でもメモリ量が所定の条件を満たさない限りスワップアウトが発生するため、ロックネックの問題点があった。
【００１７】
特許文献３に記載の技術は、ストレージ制御装置のキャッシュメモリの割り当て容量を変更するものであり、ロックに連動した上記の問題点を解決するものではない。
【００１８】
本発明の目的は、上記問題点を解決し、メモリネックを発生しないでロック時間を短縮する情報処理装置、及び、情報処理方法を提供することにある。
【課題を解決するための手段】
【００１９】
本発明の情報処理装置は、所定の時間後までにリソースを排他的に確保する第１のプロセスが使用する第１のプロセス空間の容量を求めるページインサイズ計算手段と、前記第１のプロセス空間をページインするためのメモリ領域がない場合、前記所定の時間後までにリソースを排他的に確保しない第２のプロセスからページアウトする第２のプロセス空間を決定するページアウト空間決定手段と、前記第１のプロセス空間からページインして常駐設定する第３のプロセス空間を決定する常駐設定空間決定手段とを含む監視部を含む。
【００２０】
本発明の情報処理方法は、情報処理装置において、所定の時間後までにリソースを排他的に確保する第１のプロセスが使用する第１のプロセス空間の容量を求め、前記第１のプロセス空間をページインするためのメモリ領域がない場合、前記所定の時間後までにリソースを排他的に確保しない第２のプロセスからページアウトする第２のプロセス空間を決定し、前記第１のプロセス空間からページインして常駐設定する第３のプロセス空間を決定する。
【００２１】
本発明のプログラムは、所定の時間後までにリソースを排他的に確保する第１のプロセスが使用する第１のプロセス空間の容量を求める処理と、前記第１のプロセス空間をページインするためのメモリ領域がない場合、前記所定の時間後までにリソースを排他的に確保しない第２のプロセスからページアウトする第２のプロセス空間を決定する処理と、第１のプロセス空間からページインして常駐設定する第３のプロセス空間を決定する処理とをコンピュータに実行させる。
【発明の効果】
【００２２】
本発明によれば、メモリネックを発生しないで、ロック時間を短縮することができる。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明における第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図２】図２は、第１の実施形態の監視動作の一例を示すフローチャートである。
【図３】図３は、第１の実施形態に係る情報処理装置の別の構成の一例を示すブロック図である。
【図４】図４は、第２の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図５】図５は、ロック情報の一例を示す図である。
【図６】図６は、セマフォの一例を示す図である。
【図７】図７は、第２の実施形態に係る監視部の構成の一例を示すブロック図である。
【図８】図８は、第２の実施形態に係るロック取得動作の一例を示すフローチャートである。
【図９】図９は、第２の実施形態に係るロック情報の設定の動作の一例を示すフローチャートである。
【図１０】図１０は、第２の実施形態に係るロック監視動作の一例を示すフローチャートである。
【図１１】図１１は、第２の実施形態に係るページインサイズの計算動作の一例を示すフローチャートである。
【図１２】図１２は、第２の実施形態に係るページアウト空間を決定する動作の一例を示すフローチャートである。
【図１３】図１３は、第２の実施形態に係るページイン動作の一例を示すフローチャートである。
【図１４】図１４は、第２の実施形態に係るロック解除動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２４】
次に、本発明の実施形態について図面を参照して説明する。
【００２５】
なお、各図面は、本発明の実施形態を説明するものである。そのため、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明は、省略する場合がある。
【００２６】
なお、情報処理装置においてリソースを排他的に管理（ロック）する処理の単位は、いろいろなレベルで行われ、呼称もいろいろとある（例えば、プロセス、スレッド、タスク、ジョブ）。本発明の実施形態では、特に制限はない。以下の説明では、処理の単位の一例として「プロセス」を用いて説明する。
【００２７】
（第１の実施形態）
図１は、本発明のおける第１の実施形態に係る情報処理装置１０の機能の構成の一例を示すブロック図である。
【００２８】
情報処理装置１０は、処理プロセス１００ａと、処理プロセス１００ｂと、ロック関連情報格納部２００と、監視プロセス３００とを含む。
【００２９】
なお、処理プロセス１００ａ及び処理プロセス１００ｂをまとめて処理プロセス１００と言う。また、図１に記載した処理プロセス１００の数は、説明の便宜のためであり、処理プロセス１００の数を限定するものではない。本実施形態の情報処理装置１０が含む処理プロセス１００の数は、動的又は静的に、１つ又は３つ以上に変化しても良い。
【００３０】
処理プロセス１００（処理プロセス１００ａと処理プロセス１００ｂ）は、図示しないＣＰＵ（Central Processing Unit）、メモリ、外部装置などの資源（リソース）を割り当てられ処理を実行する処理の単位である。処理プロセス１００ａ及び処理プロセス１００ｂは、独立して動作しても良く、相互に関連しながら動作しても良い。ただし、処理プロセス１００ａ及び処理プロセス１００ｂは、共有のリソースを使用する場合、リソースのロックを取得して使用する。ここで共通のリソースとは、各処理プロセス１００に割り当てられたリソースとは異なる、複数の処理プロセス１００で共通に使用するロック（排他制御）の対象となるリソースである。
【００３１】
また、処理プロセス１００ａ及び処理プロセス１００ｂは、処理に用いる空間（以下、プロセス空間と言う）に対して、仮想メモリの手法が適用されるとする。そのため、処理プロセス１００ａ及び処理プロセス１００ｂは、プロセス空間に常駐を設定しない場合、一部又は全部のプロセス空間が、図示しない外部記憶装置にページアウトされることがある。なお、プロセス空間は、仮想メモリとして処理されるデータなどのためのメモリの空間であるが、メモリ空間に割り当てられた外部記憶装置などＩＯ（Input/Output）空間を含んでも良い。
【００３２】
ロック関連情報格納部２００は、プロセスが使用するリソースの排他的状態（ロック状態）を示す情報を保存（格納）する。本実施形態のロックは、セマフォ（semaphore）やミューテックス(Mutex)などいろいろな排他的機構（排他機構部）を用いることができ、特に制限はない。以下は、一例として、セマフォを用いて説明する。つまり、以下の説明では、ロック関連情報格納部２００は、リソースのロックのためのセマフォと、ロックに関連する情報を保持（格納）する。処理プロセス１００は、ロック関連情報格納部２００を用いてリソースのロック状態を確認し、ロックを取得及び解除する。
【００３３】
監視プロセス３００は、処理プロセス１００やメインメモリの状態を監視し、必要に応じて、処理プロセス１００が使用するプロセス空間を図示しないメインメモリにページインし、図示しない外部記憶装置にページアウトする。また、監視プロセス３００は、プロセス空間の常駐の設定や常駐解除を管理する。
【００３４】
より具体的に説明すると、監視プロセス３００は、所定の時間間隔（インターバル、このインターバルを、以下、「監視インターバル」と言う。）毎に、以下、図２を用いて説明する監視の処理を繰り返す。なお、監視インターバルは、情報処理装置１０の管理者などが、予め監視プロセス３００に設定しておく。
【００３５】
なお、以下の説明において、現在動作している監視の処理を「今回の監視の処理」、今回の監視の処理の後、監視インターバルを経過して再開する監視の処理を「次回の監視の処理」と言う。
【００３６】
図２は、監視プロセス３００の監視動作の一例を示すフローチャートである。
【００３７】
監視プロセス３００は、メインメモリ（主記憶）の空き状態、つまり、メインメモリの負荷状態（以下、「メモリ負荷」と言う）を確認する（ステップ１００１）。
【００３８】
メモリ負荷が高くない場合（ステップ１００２でNO）、監視プロセス３００は、ステップ１００４に進む。
【００３９】
メモリ負荷が高い場合（ステップ１００２でYES）、監視プロセス３００は、次回の監視の処理（インターバル経過後の次回の監視の処理）までロック待ちが続く（ロック継続の）処理プロセス１００のプロセス空間をページアウトする（ステップ１００３）。ここで、監視プロセス３００がページアウトする処理プロセス１００の数は、制限はなく、１つでも２つ以上の複数でもよい。監視プロセス３００は、ステップ１００３において、メモリ負荷の状態を基に、ページアウトするプロセス空間の数を決めても良い。
【００４０】
また、後ほど説明するステップ１００６において、監視プロセス３００は、次回の監視の処理までにロック取得する処理プロセス１００のプロセス空間をページインして常駐設定する。つまり、監視プロセス３００は、ステップ１００６において、次回の監視の処理までにページインが必要なプロセス空間をページインする。そのため、監視プロセス３００は、現在プロセス空間に常駐を設定しているが次回の監視の処理までロック待ちが続く処理プロセス１００のプロセス空間をページアウトしても、ロックネックの発生を抑制できる。
【００４１】
なお、監視プロセス３００は、次回の監視の処理までロック待ちが続く処理プロセス１００を、各処理プロセス１００から取得した情報及びロック関連情報格納部２００に格納した情報を基に判定する。あるいは、監視プロセス３００は、次回の監視の処理までロック待ちが続く処理プロセス１００を、各処理プロセス１００から取得した情報及びロック関連情報格納部２００に格納された情報を基に予測する。
【００４２】
次に、監視プロセス３００は、次回の監視の処理までに、ロック待ちが解除される処理プロセス１００を確認する（ステップ１００４）。
【００４３】
なお、監視プロセス３００は、ロック待ちが解除される処理プロセス１００を、各処理プロセス１００から取得した情報及びロック関連情報格納部２００に格納した情報を基に判定する。あるいは、監視プロセス３００は、ロック待ちが解除される処理プロセス１００を、各処理プロセス１００から取得した情報及びロック関連情報格納部２００に格納された情報を基に予測する。
【００４４】
解除される処理プロセス１００がない場合（ステップ１００５でNO）、監視プロセス３００は、処理を終了する。
【００４５】
解除される処理プロセス１００がある場合（ステップ１００５でYES）、監視プロセス３００は、その処理プロセス１００のプロセス空間にメインメモリへの常駐を設定する（ステップ１００６）。なお、プロセス空間がページアウトされている場合、監視プロセス３００は、プロセス空間をページインし、常駐を設定する。
【００４６】
そして、監視プロセス３００は、監視インターバルの間、監視処理を停止する。そして、監視プロセス３００は、監視インターバル後、処理（次回の監視の処理）を再開する。
【００４７】
なお、本実施形態の説明において、監視プロセス３００を１つとして説明したが、本実施形態はこれに限らない。例えば、情報処理装置１０に含まれる処理プロセス１００を複数のグループに分け、それぞれのグループが、監視プロセス３００を備えても良い。あるいは、情報処理装置１０が、複数のロック関連情報格納部２００を含み、それぞれのロック関連情報格納部２００に対応する監視プロセス３００を含んでも良い。
【００４８】
本実施形態の情報処理装置１０は、メモリネックを発生しないでロック時間を短縮する効果を得ることができる。
【００４９】
その理由は、次のとおりである。
【００５０】
情報処理装置１０の監視プロセス３００は、次回の監視の処理までロック待ちが継続する処理プロセス１００のプロセス空間をページアウトして、メインメモリの領域を解放する。そのため、情報処理装置１０は、メモリネックの発生を抑えることができる。
【００５１】
また、監視プロセス３００は、次回の監視の処理までに、つまり所定の監視インターバル後までにロックを取得する（ロック待ちが解除される）処理プロセス１００のプロセス空間をページインして常駐を設定する。そのため、ロック待ちが解除される処理プロセス１００は、プロセス空間のミッシングが発生しないためである。
【００５２】
なお、本実施形態の情報処理装置１０の構成は、図１に限られるわけではない。例えば、情報処理装置１０は、ＣＰＵを含むコンピュータを用いて実現できる。
【００５３】
図３は、本実施形態に係る情報処理装置６０のＣＰＵを含むコンピュータを用いた物理的な構成の一例を示すブロック図である。
【００５４】
情報処理装置６０は、ＣＰＵ６１０と、ＲＯＭ（Read Only Memory）６２０と、ＲＡＭ（Random Access Memory）６３０と、ＩＯ（Input/Output）−インターフェース（IF：Interface）６４０と、記憶装置６５０と、キーボード６６０と、マウス６７０と、ディスプレイ６８０とを含み、コンピュータを構成している。
【００５５】
ＣＰＵ６１０は、ＲＯＭ６２０からプログラムを読み込み。あるいは、ＣＰＵ６１０は、ＩＯ−ＩＦ６４０を介して記憶装置６５０からプログラムを読み込んでも良い。そして、ＣＰＵ６１０は、読み込んだプログラムに基づいて、既に説明した本実施形態の情報処理装置１０の各機能を実現する。ＣＰＵ６１０は、各機能を実現する際に、ＲＡＭ６３０及び記憶装置６５０を一時記憶として使用する。また、ＣＰＵ６１０は、長期保存する情報を記憶装置６５０に保存する。さらに、ＣＰＵ６１０は、ＩＯ−ＩＦ６４０を介して、キーボード６６０及びマウス６７０などの入力部から入力データを受け取り、ディスプレイ６８０に情報を表示する。
【００５６】
なお、ＣＰＵ６１０は、コンピュータで読み取り可能にプログラムを記憶した記憶媒体６９０が含むプログラムを、図示しない記憶媒体読み取り装置を用いて読み込んでも良い。
【００５７】
このように構成された情報処理装置６０は、情報処理装置１０と同様の効果を得ることができる。
【００５８】
その理由は、情報処理装置６０のＣＰＵ６１０が、ＲＯＭ６２０又は記憶装置６５０のプログラムに基づいて情報処理装置１０と同様の動作を実現できるためである。
【００５９】
（第２の実施形態）
第２の実施形態は、第１の実施形態の各構成をより詳細に構成した実施形態である。ただし、第２の実施形態は、各構成の一例である。
【００６０】
図４は、第２の実施形態の情報処理装置２０の構成の一例を示すブロック図である。
【００６１】
なお、図４において、図１と同様に情報処理装置２０が含む、処理プロセス１００と、ロック関連情報格納部２００と、監視プロセス３００とに加え、説明を明確にするため、プロセス空間４００を示している。また、図４において、構成の明確にするため、処理プロセス１００を１つで示した。
【００６２】
ロック関連情報格納部２００は、ロック情報格納部２１０と、セマフォ２２０とを含む。
【００６３】
ロック情報格納部２１０は、ロックを監視するメモリなどのリソースのロックに関連する情報（以下、「ロック情報」と言う）を格納（保存）する。ロック情報は、ロックの手法に対応した情報であり、本実施形態は、特に制限はない。
【００６４】
図５は、ロック情報の一例を示す。なお、以下の説明においても、図５に示すロック情報を用いて説明する。以下、各ロック対象となるリソース毎のロック情報をまとめて「エントリ」と言う。
【００６５】
図５に示すロック情報は、エントリを表形式で示している。エントリは、エントリを識別するための情報（エントリ識別子）と、ロック対象のリソースに関する情報（例えば、リソースのアドレスを示すロックアドレス）と、ロックを取得した処理プロセス１００に関する情報と、ロックの状態に関する情報とを含む。
【００６６】
ロックを取得した処理プロセス１００に関する情報は、処理プロセス１００を識別するプロセス番号と、処理プロセス１００が使用するプロセス空間４００のアドレス（例えば、先頭アドレスと空間の大きさ、又は、先頭アドレスと終了アドレス）とを含む。
【００６７】
ロックの状態に関連する情報は、次の情報を含む。ロック回数は、リソースを排他的に確保したロックの累積回数である。ミッシング発生回数は、処理プロセス１００のプロセス空間４００のアクセスにおいて発生したミッシング（消失）の累積回数である。ロック取得時間は、リソースを排他的に確保した（ロックを取得した）累積時間である。ロック取得時刻は、リソースを排他的に確保した（ロックを取得した）時刻である。
【００６８】
図４を用いた説明に戻る。
【００６９】
セマフォ２２０は、リソースの排他制御のための情報、具体的にはリソースを所得してロックを設定した処理プロセス１００、及び、ロックの取得を待っている処理プロセス１００の情報を保持する排他機構部である。セマフォ２２０は、リソース毎に設けられる。本実施形態のセマフォ２２０は、特に制限はない。一例として、本実施形態は、図６に示すセマフォ２２０を使用するとして説明する。
【００７０】
図６は、本実施形態の説明に用いるセマフォ２２０の一例を示す図である。
【００７１】
図６に示すセマフォ２２０は、ロックを取得した処理プロセス１００の情報（ロック取得プロセス情報７１０）、及び、ロック取得を待つ処理プロセス１００の情報（ロック待ちプロセス情報７２０ａ及びロック待ちプロセス情報７２０ｂ）を、待ち行列（キュー）として保存する。
【００７２】
なお、ロック待ちプロセス情報７２０ａ及びロック待ちプロセス情報７２０ｂをまとめて、ロック待ちプロセス情報７２０と言う。
【００７３】
また、図６において、１つのロック取得プロセス情報７１０と、２つのロック待ちプロセス情報７２０ａとロック待ちプロセス情報７２０ｂを示しているのは、例示である。本実施形態のセマフォ２２０は、待ち行列（キュー）に保存するプロセス情報の数に制限はない。セマフォ２２０は、１つもロック待ちプロセス情報７２０を含まない場合もあり、１つ又は３つ以上のロック待ちプロセス情報７２０を含む場合もある。さらに、ロックを取得している処理プロセス１００がない場合、セマフォ２２０は、ロック取得プロセス情報７１０を含まない、又は、空のロック取得プロセス情報７１０を含む。また、リソースが複数の処理プロセス１００からの占有が可能な場合、セマフォ２２０は、複数のロック取得プロセス情報７１０を含んでも良い。
【００７４】
図６に示す各プロセス情報は、ロックを取得又はロックを待っている処理プロセス１００の「プロセス番号」と、処理プロセス１００が使用するプロセス空間４００が常駐設定であるか否かを示す情報（常駐設定フラグ）と、プロセス空間４００がページアウトされているか否かを示す情報（ページアウトフラグ）とを含む。さらに、各プロセス情報は、次のロックを取得するロック待ちプロセス情報７２０の位置（アドレス）を示す「次プロセス情報アドレス」を含む。
【００７５】
ロック取得プロセス情報７１０は、ロックを取得したプロセスに関する情報である。ロック取得プロセス情報７１０のプロセス番号は、ロックを取得した処理プロセス１００のプロセス番号である。常駐設定フラグ及びページアウトフラグは、ロックを取得した処理プロセス１００のプロセス空間４００の常駐設定及びページアウトの状態を示す。また、ロック取得プロセス情報７１０の「次プロセス情報アドレス」は、次にロックを取得するロック待ちプロセス情報７２０（図６では、ロック待ちプロセス情報７２０ａ）のアドレスである。なお、ロック取得プロセス情報７１０の次にロックを取得するロック待ちプロセス情報７２０ａは、ロック待ち待ち行列（キュー）に含まれる先頭のロック待ちプロセス情報７２０となる。
【００７６】
図６の中央のロック待ちプロセス情報７２０ａは、先頭のロック待ちプロセス情報７２０である。このロック待ちプロセス情報７２０ａは、ロック取得プロセス情報７１０と同様に、プロセス番号と、常駐設定フラグと、ページアウトフラグとを含む。また、ロック待ちプロセス情報７２０ａは、次にロックを取得するロック待ちプロセス情報７２０ｂのアドレスである「次プロセス情報アドレス」を含む。
【００７７】
図６の下段のロック待ちプロセス情報７２０ｂも、ロック待ちプロセス情報７２０ａと同様の情報を含む。
【００７８】
図４を用いた説明に戻る。
【００７９】
プロセス空間４００は、処理プロセス１００が実行時にアクセスする空間である。プロセス空間４００は、図示しないＯＳに基づき、仮想メモリとして動作する。そのため、処理プロセス１００がプロセス空間４００にアクセスする場合、プロセス空間４００は、情報処理装置２０の図示しないメインメモリにページインされ、適宜、図示しない外部記憶装置にページアウトされる。
【００８０】
処理プロセス１００は、ロック登録部１１０と、ロック取得部１２０と、ロック開始部１３０と、ロック解除部１４０と、積算部１５０と、常駐解除部１６０と、ミッシング解決部１７０と、カウント部１８０とを含む。処理プロセス１００は、情報処理装置２０の各処理を実行する処理単位である。図４は、以下の本実施形態の説明に関係する構成を示し、他の構成の記載を省略した。
【００８１】
ロック登録部１１０は、処理プロセス１００の起動など初期化時に、処理プロセス１００に呼び出される。ロック登録部１１０は、処理プロセス１００が使用するリソースに対応するエントリをロック情報格納部２１０に登録する。
【００８２】
図５に示すエントリを使用する場合、ロック登録部１１０は、ロック情報格納部２１０にエントリを登録するためのエントリ領域を要求する。ロック情報格納部２１０は、エントリ識別子を設定して、エントリの領域のロック登録部１１０に通知する。ロック登録部１１０は、エントリのロックアドレスにリソースのアドレスを、プロセス番号に処理プロセス１００のプロセス番号を、プロセス空間アドレスに処理プロセス１００が使用するプロセス空間４００のアドレスを設定する。また、ロック登録部１１０は、他の情報を初期化（クリア）する。
【００８３】
なお、ロック登録部１１０が、ロック情報格納部２１０のエントリ領域を確保しても良い。この場合、ロック登録部１１０が、エントリ識別子を設定する。
【００８４】
ロック取得部１２０は、リソースのロック取得時に処理プロセス１００に呼び出される。ロック取得部１２０は、リソースのセマフォ２２０を確認し、リソースを取得した他の処理プロセス１００があるか否かを確認する。例えば、ロック取得部１２０は、セマフォ２２０のロック取得プロセス情報７１０のプロセス番号が登録されているか否かを確認する。
【００８５】
リソースのロックを取得した処理プロセス１００がない場合、ロック取得部１２０は、ロック取得プロセス情報７１０のプロセス番号に、自分の処理プロセス１００の番号を設定する。さらに、ロック取得部１２０は、自分の処理プロセス１００で使用するプロセス空間４００の常駐の状態とページアウトの状態を、常駐設定フラグとページアウトフラグに設定する。さらに、ロック取得部１２０は、「次プロセス情報アドレス」をクリア、又は、後続がない状態に設定する。そして、ロック取得部１２０は、ロック開始部１３０を呼び出す。ロック開始部１３０については後ほど説明する。
【００８６】
ロックを取得した処理プロセス１００がある場合、ロック取得部１２０は、自分の処理プロセス１００に対応するロック待ちプロセス情報７２０（例えば、ロック待ちプロセス情報７２０ｂ）を作成して、セマフォ２２０のキューの最後尾に追加する。例えば、ロック取得部１２０は、次のような動作する。ロック取得部１２０は、ロック待ちプロセス情報７２０のための領域をセマフォ２２０から取得する。そして、ロック取得部１２０は、取得したロック待ちプロセス情報７２０の領域のプロセス番号に自分の処理プロセス１００のプロセス番号を設定し、プロセス空間４００の常駐の状態とページアウトとの状態を、常駐設定フラグとページアウトフラグとに設定する。さらに、ロック取得部１２０は、「次プロセス情報アドレス」をクリア、又は、後続がない状態に設定する。
【００８７】
そして、ロック取得部１２０は、セマフォ２２０の待ち行列（キュー）の最後に作成したロック待ちプロセス情報７２０を追加する。具体的には、ロック取得部１２０は、次のように動作する。
【００８８】
ロック取得プロセス情報７１０の「次プロセス情報アドレス」にアドレスの登録がない場合、ロック取得部１２０は、作成したロック待ちプロセス情報７２０のアドレスをロック取得プロセス情報７１０の「次プロセス情報アドレス」に設定する。（例えば、ロック待ちプロセス情報７２０ａを作成した場合、ロック取得部１２０は、ロック取得プロセス情報７１０の「次プロセス情報アドレス」にロック待ちプロセス情報７２０ａのアドレスを登録（設定）する。）
アドレスが登録されている場合、ロック取得部１２０は、登録されているアドレスのロック待ちプロセス情報７２０の「次プロセス情報アドレス」を確認する。ロック待ちプロセス情報７２０の「次プロセス情報アドレス」にアドレスの登録がない場合、ロック取得部１２０は、作成したロック待ちプロセス情報７２０のアドレスをロック待ちプロセス情報７２０の「次プロセス情報アドレス」に設定する。（例えば、ロック待ちプロセス情報７２０ｂを作成した場合、ロック取得部１２０は、ロック待ちプロセス情報７２０ａの「次プロセス情報アドレス」にロック待ちプロセス情報７２０ｂのアドレスを登録（設定）する。）
アドレスが登録されている場合、ロック取得部１２０は、同様に、「次プロセス情報アドレス」が登録されていないロック待ちプロセス情報７２０が現れるまで、ロック待ちプロセス情報７２０を順番に確認する。
【００８９】
アドレスが登録されていないロック待ちプロセス情報７２０が見つかると、ロック取得部１２０は、作成したロック待ちプロセス情報７２０のアドレスをロック待ちプロセス情報７２０の「次プロセス情報アドレス」に設定する。
【００９０】
そして、ロック取得部１２０は、後ほど説明するように、再開指示が届くまで、ロック解除を待つ。再開指示を受けると、ロック取得部１２０は、ロック開始部１３０を呼び出す。
【００９１】
ロック開始部１３０は、ロック取得部１２０から呼び出されて動作を開始する。ロック開始部１３０は、ロック情報格納部２１０に登録されているエントリのロックの開始に関する情報を設定する。例えば、ロック開始部１３０は、エントリのロック取得時刻に、現在の時刻を設定する。
【００９２】
ロック解除部１４０は、ロック解除時に、処理プロセス１００に呼び出される。ロック解除部１４０は、まず、積算部１５０を呼び出し、後ほど説明するようにエントリの情報を更新する。
【００９３】
次に、ロック解除部１４０は、セマフォ２２０のロック取得プロセス情報７１０の常駐設定フラグを保持する。
【００９４】
続いて、ロック解除部１４０は、セマフォ２２０にロック待ちプロセスがあるか否かを確認する。例えば、ロック解除部１４０は、ロック取得プロセス情報７１０の「次プロセス情報アドレス」にアドレスが登録されているか否かを確認する。
【００９５】
ロック待ちプロセスがある場合、ロック解除部１４０は、ロック待ちプロセス情報７２０の先頭のプロセス情報（例えば、図６のロック待ちプロセス情報７２０ａ）をロック取得プロセス情報７１０に複製（コピー）する。そして、ロック解除部１４０は、複製後、不要となったセマフォ２２０のロック待ちプロセス情報７２０の領域を解放（空きエントリに）する。つまり、ロック解除部１４０は、セマフォ２２０のキューを１つ進める。そして、ロック解除部１４０は、ロック取得プロセス情報７１０にコピーしたプロセス番号の処理プロセス１００、つまり、ロックを取得した処理プロセス１００のロック取得部１２０に再開の指示を送る。
【００９６】
なお、ここまでの説明において、ロック解除部１４０が、セマフォ２２０の情報を処理したが、本実施形態は、これに限られる必要はない。例えば、ロック解除部１４０がセマフォ２２０に指示を送り、セマフォ２２０が、キューを１つ進めても良い。さらに、キューを１つ進めたセマフォ２２０が、ロックを取得した処理プロセス１００に再開指示を送っても良い。
【００９７】
ロック待ちプロセスがない場合、ロック解除部１４０は、ロック取得プロセス情報７１０の領域を初期化（空きエントリに）する。なお、ロック解除部１４０から指示を受けたセマフォ２２０が、初期化しても良い。
【００９８】
続いて、ロック解除部１４０は、先ほど保持した常駐設定フラグを確認する。常駐設定フラグが常駐の場合、ロック解除部１４０は、後ほど説明する常駐解除部１６０を呼び出し、プロセス空間４００の常駐を解除する。常駐解除部１６０を呼び出し後、又は、常駐設定でない場合、ロック解除部１４０は、処理を終了する。
【００９９】
積算部１５０は、ロック解除部１４０から呼び出されて動作する。積算部１５０は、ロック解除に伴うロック情報格納部２１０のエントリの情報を更新する。例えば、積算部１５０は、エントリのロック取得時刻と、現在時刻とから、今回のロックを取得していた時間を算出し、エントリのロック取得時間に加算する。また、積算部１５０は、エントリのロック回数を１つ増やす。
【０１００】
常駐解除部１６０は、ロック解除部１４０から指示されたプロセス空間４００の常駐設定を解除する。なお、常駐解除部１６０は、図示しないＯＳの機能を利用して常駐設定を解除しても良い。
【０１０１】
ミッシング解決部１７０は、処理プロセス１００の処理において、ページアウト（ミッシング）されたプロセス空間４００へのアクセスが発生した場合、処理プロセス１００に呼び出される。ミッシング解決部１７０は、ページアウトされたプロセス空間４００をページインする。なお、メインメモリにページインする領域がない場合、ミッシング解決部１７０は、ページアウトできるプロセス空間４００をページアウトした後、自分の処理プロセス１００のプロセス空間４００をページインする。なお、ミッシング解決部１７０は、図示しないＯＳの機能を利用して、ページイン又はページアウトしても良い。その後、ミッシング解決部１７０は、カウント部１８０を呼び出す。
【０１０２】
カウント部１８０は、ミッシング解決部１７０に呼び出されて動作する。カウント部１８０は、ロック情報格納部２１０に自分の処理プロセス１００のエントリがあるか否かを確認する。エントリがある場合、カウント部１８０は、エントリのミッシング発生回数を１つ増やす。
【０１０３】
監視プロセス３００は、監視部３１０と、ページアウト部３２０と、常駐設定部３３０とを含む。
【０１０４】
監視部３１０は、監視インターバルの間隔で監視の動作を繰り返し、ページアウトするプロセス空間４００と常駐設定するプロセス空間４００とを判定する。そのため、監視部３１０は、ページインサイズ計算部３１１と、ページアウト空間決定部３１２と、常駐設定空間決定部３１３とを含む。
【０１０５】
図７は、監視部３１０の構成の一例を示すブロック図である。
【０１０６】
ページインサイズ計算部３１１は、監視インターバルと、ロック情報格納部２１０が格納する情報と、セマフォ２２０の情報とを基に、次回の監視の処理までにページインが必要なプロセス空間４００の大きさの合計量（ページインサイズ）を計算する。ページインサイズ計算部３１１が用いるロック情報格納部２１０が格納する情報は、例えば、ロック発生回数、ロック取得時間である。なお、ページインサイズ計算部３１１は、ページインが必要なプロセス空間４００として、他の条件のプロセス空間４００を含めても良い。例えば、ページインサイズ計算部３１１は、ミッシング発生回数が多いプロセス空間４００をページインが必要であるプロセス空間４００に含めても良い。（なお、以下、ページインサイズ計算部３１１が次回の監視の処理までにページインが必要と判定したプロセス空間４００を「第１のプロセス空間」と言う。）
ページアウト空間決定部３１２は、ページインサイズ計算部３１１が算出したページインサイズと、情報処理装置２０のメモリの量と、監視インターバルと、ロック情報格納部２１０が格納する情報と、セマフォ２２０の情報とを基に、ページアウトするプロセス空間４００を決定する。より具体的には、ページアウト空間決定部３１２は、次回の監視の処理までにロックを取得しない処理プロセス１００のプロセス空間４００を求め、ページアウトするプロセス空間４００を決定する。そして、ページアウト空間決定部３１２は、決定したプロセス空間４００をページアウト部３２０に通知する。ページアウト空間決定部３１２は、使用するメモリの量として、例えば、メインメモリの使用量、メインメモリの全容量を用いる。また、ロック情報格納部２１０が格納する情報は、例えば、ロック回数、ロック取得時間である。なお、ページアウト空間決定部３１２は、他の条件のプロセス空間４００をページアプトするプロセス空間４００に含めても良い。例えば、ページアウト空間決定部３１２は、ロック取得時間が短いプロセス空間４００を、ページアウトするプロセス空間４００に含めても良い。（なお、以下、ページアウト空間決定部３１２がページアウトすると決定したプロセス空間を「第２のプロセス空間」と言う。）
常駐設定空間決定部３１３は、ページインサイズ計算部３１１が算出したページインサイズと、情報処理装置２０のメモリの量と、監視インターバルと、ロック情報格納部２１０が格納した情報と、セマフォ２２０の情報とを基に、常駐設定するプロセス空間４００を決定する。より具体的には、常駐設定空間決定部３１３は、次回の監視の処理までにロックを取得する処理プロセス１００を求め、ページインするプロセス空間４００を決定する。なお、空きメモリの量が十分ある場合、常駐設定空間決定部３１３は、ページインサイズ計算部３１１がページインする判定した「第１のプロセス空間」を全て常駐設定するプロセス空間４００と決定する。しかし、ページアウト空間決定部３１２が決定したプロセス空間４００をページアウトしても、メモリに「第１のプロセス空間」をページインする容量が確保できない場合、常駐設定空間決定部３１３は、所定の順番（例えばロック解除が早い順番）で常駐設定するプロセス空間４００を決定する。そして、常駐設定空間決定部３１３は、決定したプロセス空間４００を、常駐設定部３３０に通知する。なお、メモリの量は、例えば、メインメモリの使用量、メインメモリの全容量である。また、ロック情報格納部２１０が格納する情報は、例えば、ロック回数、ロック取得時間である。なお、常駐設定空間決定部３１３は、ページインするプロセス空間４００に他の条件のプロセス空間４００を含めても良い。例えば、常駐設定空間決定部３１３は、ミッシング発生回数が多いプロセス空間４００を常駐するプロセス空間４００に含めても良い。（なお、以下、常駐設定空間決定部３１３が決定したページインするプロセス空間を「第３のプロセス空間」と言う。）
ページアウト部３２０は、監視部３１０からページアウトするプロセス空間４００の情報を受け取り、指定されたプロセス空間４００をページアウトする。なお、ページアウト部３２０は、図示しないＯＳの機能を利用してページアウトしても良い。
【０１０７】
常駐設定部３３０は、監視部３１０から常駐設定するプロセス空間４００の情報を受け取り、指定されたプロセス空間４００を常駐に設定する。なお、指定されたプロセス空間４００がページアウトされている場合、常駐設定部３３０は、プロセス空間４００をページインしてから、常駐設定する。常駐設定部３３０は、図示しないＯＳの機能を利用して、ページイン及び常駐を設定しても良い。
【０１０８】
次に、本実施形態の情報処理装置２０のロックに関係する動作について図面を参照してさらに説明する。
【０１０９】
まず、ロックの取得の動作について説明する。
【０１１０】
図８は、ロック取得動作の一例を示すフローチャートである。
【０１１１】
なお、ロック情報格納部２１０のエントリは、既に登録済みとする。
【０１１２】
リソースのロックが必要な場合、処理プロセス１００のロック取得部１２０は、セマフォ２２０の情報を基に、ロックを取得するリソースがロック状態（ロック取得済み）であるか否かを確認する（ステップ２００１）。本実施形態のロック取得部１２０のロック取得状態の確認は、特に制限はない。例えば、ロック取得部１２０は、図６に示したロック取得プロセス情報７１０のプロセス番号に、プロセス番号が登録されているか否かを確認しても良い。
【０１１３】
ロック済みでない場合（ステップ２００１でNO）、ロック取得部１２０は、セマフォ２２０のロック取得プロセス情報７１０に自分の処理プロセス１００の情報を設定し、ロックを取得する（ステップ２００２）。例えば、図６に示すセマフォ２２０の場合、ロック取得部１２０は、ロック取得プロセス情報７１０のプロセス番号に自分の処理プロセス１００のプロセス番号を設定する。また、ロック取得部１２０は、プロセス空間４００の状態を常駐設定フラグとページアウトフラグに設定する。そして、ロック取得部１２０は、「次プロセス情報アドレス」を初期化（クリア）する。
【０１１４】
その後、処理プロセス１００は、エントリの情報の設定（ステップ２００６）に進む。
【０１１５】
ロック済みの場合（ステップ２００１でYES）、ロック取得部１２０は、セマフォ２２０にロック待ちプロセス情報７２０を作成する（ステップ２００３）。例えば、図６ロック待ちプロセス情報７２０ａに設定する場合、ロック取得部１２０は、空きのロック待ちプロセス情報７２０を確保し、自プロセスのプロセス番号を、ロック待ちプロセス情報７２０のプロセス番号に設定する。また、ロック取得部１２０は、プロセス空間４００の状態を常駐設定フラグとページアウトフラグに設定する。そして、ロック取得部１２０は、「次プロセス情報アドレス」を初期化（クリア）する。
【０１１６】
次に、ロック取得部１２０は、作成したロック待ちプロセス情報７２０をセマフォ２２０の待ち行列（キュー）の最後の接続する（ステップ２００４）。例えば、図６のロック待ちプロセス情報７２０ａを使用する場合、ロック取得部１２０は、ロック取得プロセス情報７１０の「次プロセス情報アドレス」に、作成したロック待ちプロセス情報７２０ａのアドレスを設定する。また、図６のロック待ちプロセス情報７２０ｂを作成した場合、ロック取得部１２０は、ロック待ちプロセス情報７２０ａの「次プロセス情報アドレス」に、作成したロック待ちプロセス情報７２０ｂのアドレスを設定する。
【０１１７】
ロック待ち取得情報の設定終了後、処理プロセス１００は、ロックの取得（再開）まで待つ（ステップ２００５）。
【０１１８】
ロックを取得後、処理プロセス１００は、ロック情報格納部２１０が格納するロック情報のエントリの情報を設定する（ステップ２００６）。具体的には、ロック取得部１２０は、ロック開始部１３０を呼び出す。呼び出されたロック開始部１３０は、ロック情報格納部２１０のエントリにロック開始に関する情報（例えば、ロック取得時刻）を設定する。
【０１１９】
図９は、図８のステップ２００６の動作の一例を示すフローチャートである。
【０１２０】
呼び出されたロック開始部１３０は、取得したロックのエントリがロック情報格納部２１０に登録されているか否かを確認する（ステップ３００１）。
【０１２１】
登録されていない場合（ステップ３００１でNO）、ロック開始部１３０は、エントリを操作しないで終了する。
【０１２２】
登録されている場合（ステップ３００１でYES）、ロック開始部１３０は、エントリのロック取得時刻に現在時刻を設定する（ステップ３００２）。
【０１２３】
ロック取得動作が完了すると、処理プロセス１００は、ロック取得したリソースを用いた処理を開始する。
【０１２４】
次に、監視プロセス３００のロック監視の動作について説明する。
【０１２５】
図１０は、監視プロセス３００のロック監視の動作の概要を示すフローチャートである。
【０１２６】
監視プロセス３００の監視部３１０は、ロック待ちプロセス情報７２０の中で、ページインが必要な処理プロセス１００のプロセス空間４００を求める。そして、監視部３１０は、求めたプロセス空間４００に必要なサイズ（ページインサイズ）を計算する（ステップ４００１）。
【０１２７】
次に、監視部３１０は、メインメモリにステップ４００１で計算したページインに必要なサイズを確保するため、ページアウトするプロセス空間４００（ページアウト空間）を決定する（ステップ４００２）。監視部３１０は、決定したページアウトするプロセス空間４００の情報をページアウト部３２０に出力する。ページアウト部３２０は、受け取った情報で示されるプロセス空間４００をページアウトする。
【０１２８】
続いて、監視部３１０は、ページインするプロセス空間４００の情報を常駐設定部３３０に出力する（ステップ４００３）。常駐設定部３３０は、受け取った情報で示されるプロセス空間４００をページインして常駐を設定する。
【０１２９】
なお、監視部３１０は、ステップ４００１でページインが必要と判断された処理プロセス１００のプロセス空間４００を全てページインできることが望ましい。しかし、ステップ４００２を行っても、全てのプロセス空間４００のページイン必要な容量を確保できない場合がある。そのため、監視部３１０は、所定の規則に基づいて、可能な範囲で、ページインするプロセス空間４００を決定する。例えば、監視部３１０は、各リソースのセマフォ２２０の待ち行列（キュー）の前から、可能な範囲で、ページインするプロセス空間４００を決定する。
【０１３０】
ステップ４００３の後、監視部３１０は、所定の時間（監視インターバル）を待ち（ステップ４００４）、ステップ４００１から処理を再開する。つまり、監視部３１０は、監視インターバル毎に、ステップ４００１からステップ４００３を繰り返し、不要なプロセス空間４００をページアウトしてメインメモリを確保し、必要なプロセス空間４００をページインして、ロック処理時間を削減する。
【０１３１】
続いて、各動作についてより詳細に説明する。
【０１３２】
まず、ページインサイズの計算について説明する。
【０１３３】
図１１は、ページインサイズの計算の動作の一例を示すフローチャートである。
【０１３４】
監視部３１０のページインサイズ計算部３１１は、処理するエントリを示す変数とページインサイズを保存する変数を初期化する（ステップ５００１）。本実施形態の説明では、一例として、処理するエントリを表す変数をエントリの順番を示す変数ｓとし、ページインするページサイズを保存する変数を変数ｐとする。そして、本実施形態の説明では、初期化の一例として、ページインサイズ計算部３１１は、変数ｓ＝１、変数ｐ＝０を設定するとして説明する。以下、図１１の説明において、変数ｓで示されるエントリを「対象エントリ」と言う。
【０１３５】
ページインサイズ計算部３１１は、対象エントリが、ロック待ちか否かを判定する。本実施形態のページインサイズ計算部３１１は、ロック待ちか否かを、対象エントリのプロセスが、セマフォ２２０のロック待ちプロセス情報７２０に含まれるか否かで判定する。さらに、ページインサイズ計算部３１１は、対象エントリのロックが発生したか否かを判定する。本実施形態のページインサイズ計算部３１１は、ロックの発生を、対象エントリのロック回数が１以上（０でない）か否かで判定する。まとめると、ページインサイズ計算部３１１は、対象エントリが、「ロック待ち」、且つ、「ロックが発生した」であるか否かを判定する（ステップ５００２）。
【０１３６】
対象のエントリが、ロック待ちでない、又は、ロックが発生していない場合（ステップ５００２でNO）、対象エントリのプロセス空間４００は、ページインが不要である。そのため、ページインサイズ計算部３１１は、次のエントリについて処理するため、ステップ５００９に進む。
【０１３７】
一方、対象エントリが、ロック待ち且つロックが発生した場合（ステップ５００２でYES）、対象エントリのプロセス空間４００は、ページインが必要である。
【０１３８】
そのため、ページインサイズ計算部３１１は、ページインのサイズ（ｐ）を修正する。まず、ページインサイズ計算部３１１は、ページインのサイズ（ｐ）を修正するために用いる変数を初期化する（ステップ５００３）。本実施形態の説明では、次回の監視の処理までにロックを取得するプロセス数を示す変数ｍと確認するロック待ちプロセス情報７２０を示す変数ｎを用いるとする。なお、次回の監視の処理までにロックを取得するプロセス数とは、今回の監視の処理を終了し、所定の監視インターバルを経過し、次回の監視の処理までにロックを取得するプロセスの数である。ロックを取得するプロセス数は、情報処理装置１０の各プロセス処理を基に求めることができるが、多くの計算を必要とする。そのため、本実施形態の情報処理装置２０は、計算量を削減するため、ロックを取得するプロセスの数として、予測値を用いる。以下、本実施形態の情報処理装置２０は、予測の一例として、ロックを取得するプロセスの数（ｍ）として次の数式１を使用する。
［数１］
ｍ  ＝  監視インターバル  ＊  ロック回数  ／  ロック取得時間        （１）
ここで、ロック回数とロック取得時間とは、エントリに含まれる値である。ロック回数とロック取得時間は、ロック情報格納部２１０に含まれる一部又はすべてのエントリの平均値を用いても良く、所定のエントリの値を用いても良い。
【０１３９】
なお、「ロック取得時間／ロック回数」は、「平均ロック取得時間」である。そのため、情報処理装置２０は、ロックを取得するプロセスの数（ｍ）として、次の数式２を用いても良い。
［数２］
ｍ  ＝  監視インターバル  ／  平均ロック取得時間        （２）
【０１４０】
また、ページインサイズ計算部３１１は、確認するロック待ちプロセス情報７２０を示す変数ｎの初期として１を設定する。以下、図１１の説明において変数ｎで示されるロック待ちプロセス情報７２０を「対象プロセス情報」と言う。
【０１４１】
ページインサイズ計算部３１１は、対象プロセス情報がページアウトされているか否かを確認する（ステップ５００４）。本実施形態のページインサイズ計算部３１１は、対象プロセス情報のページアウトフラグがオンかオフかを確認する。
【０１４２】
ページアウトされている場合（ステップ５００４でYES）、ページインサイズ計算部３１１は、ページインサイズの修正（ステップ５００６）に進む。
【０１４３】
ページアウトされていない場合（ステップ５００４でNO）、ページインサイズ計算部３１１は、対象エントリのミッシングが発生したか否かを確認する（ステップ５００５）。本実施形態では、ページインサイズ計算部３１１は、ミッシング回数が１以上（０でない）か否かを確認する。
【０１４４】
ページアウトされておらず（ステップ５００４でNO）且つミッシングが発生していない場合（ステップ５００５でNO）、ページインサイズ計算部３１１は、ページインサイズを修正しないでステップ５００７に進む。
【０１４５】
ページアウトされている、又は、ミッシングが発生している場合（ステップ５００４でYES、又は、５００５でYES）、ページインサイズ計算部３１１は、対象エントリのプロセス空間４００（第１のプロセス空間）をページインサイズ（変数ｐ）に加える（ステップ５００６）。
【０１４６】
ページインサイズ計算部３１１は、対象エントリに関するページインサイズの修正が終了したか否かを判定する（ステップ５００７）。具体的には、ページインサイズ計算部３１１は、対象プロセス情報が、セマフォ２２０の待ち行列（キュー）の最後か否かを判定する。さらに、対象プロセス情報が最後でない場合、ページインサイズ計算部３１１は、対象プロセス情報の数（ｎ）が次回の監視の処理までにロックを取得するプロセス数（ｍ）以上か否か比較する。そして、対象プロセス情報がセマフォ２２０の最後、又は、対象プロセス情報の数がロックを取得するプロセス数以上の場合、ページインサイズ計算部３１１は、終了と判断する。
【０１４７】
終了の場合（ステップ５００７でYES）、ページインサイズ計算部３１１は、対象エントリが最後か否かの確認（ステップ５００９）に進む。
【０１４８】
対象エントリのついての確認が終了でない場合（ステップ５００７でNO）、ページインサイズ計算部３１１は、対象プロセス情報を変更して（ステップ５００８）、ステップ５００４に戻る。具体的には、ページインサイズ計算部３１１は、変数ｎを１つ加算する。
【０１４９】
対象エントリのページインが不要な場合（ステップ５００２でNO）、又は、ページインサイズの修正が終了した場合（ステップ５００７でYES）、ページインサイズ計算部３１１は、次のエントリがあるか否か、つまり、対象エントリが最後か否かを判定する（ステップ５００９）。
【０１５０】
最後でない場合（ステップ５００９でNO）、ページインサイズ計算部３１１は、対象エントリを変更して（ステップ５００１）、ステップ５００２に戻る。具体的には、ページインサイズ計算部３１１は、変数ｓを１つ増加する。
【０１５１】
最後のエントリの場合（ステップ５００９でYES）、監視部３１０は、ページインサイズの計算を終了する。
【０１５２】
次に、ページアウトするプロセス空間４００を決定する動作について説明する。
【０１５３】
監視プロセス３００は、メインメモリが不足している場合、次回の監視の処理までにロックを取得しないロック待ちプロセス情報７２０のプロセス空間４００をページアウトする。
【０１５４】
図１２は、ページアウトするプロセス空間４００を決定する動作の一例を示すフローチャートである。
【０１５５】
監視部３１０のページアウト空間決定部３１２は、メインメモリの容量不足、つまり、メインメモリの空き容量が、ページインサイズのための容量より少ないか否かを判定する（ステップ６００１）。この判定は、特に制限はない。例えば、ページアウト空間決定部３１２は、現状のメインメモリの使用量と、図１１の説明を用いて説明したページインサイズ（ｐ）を加えた容量が、所定の値より大きい場合に、メモリが不足していると判定しても良い。また、ページアウト空間決定部３１２は、メインメモリの使用比率で判定しても良い。あるいは、監視部３１０は、メモリの負荷を監視する図示しないメモリ管理部から、メモリ不足の通知を受けても良い。
【０１５６】
容量が不足でない場合（ステップ６００１でNO）、ページアウト空間決定部３１２は、動作を終了する。この場合、監視部３１０は、ページアウト部３２０にプロセス空間４００に関する情報を出力しない。
【０１５７】
容量が不足の場合（ステップ６００１でYES)、ページアウト空間決定部３１２は、処理するエントリを表す変数を初期化する（ステップ６００２）。ここでは、一例として、処理の対象のエントリを表す変数をｔとし、初期化を変数ｔ＝１として説明する。以下、図１２の説明において、変数ｔで示されるエントリを「対象エントリ」と言う。
【０１５８】
ページアウト空間決定部３１２は、対象エントリに対応する処理プロセス１００が、セマフォ２２０のロック待ちか否かを判定する。本実施形態にページアウト空間決定部３１２は、ロック待ちか否かを、ロック待ちプロセス情報７２０に含まれるか否かに基づいて判定する。ロック待ちの場合、ページアウト空間決定部３１２は、対象エントリにロックが発生したか否かを判定する。ロックが発生したか否かの判定として、本実施形態のページアウト空間決定部３１２は、対象エントリのロック回数が１以上（０でない）か否かを確認する。まとめると、ページアウト空間決定部３１２は、対象エントリがロック待ち、且つ、ロックが発生しているかを判定する（ステップ６００３）。
【０１５９】
対象エントリがロック待ち、且つ、ロックが発生している場合、ページアウト空間決定部３１２は、対象エントリのプロセス空間４００をページアウトの対象とする。そのため、ページアウト空間決定部３１２は、ステップ６００４以降の処理に進む。
【０１６０】
一方、ロック待ちでない、又は、ロックが発生していない場合（ステップ６００３でNO）、ページアウト空間決定部３１２は、対象エントリの処理を終了し、次のエントリの処理（ステップ６００９）に進む。
【０１６１】
ロック待ち且つロック発生の場合（ステップ６００３でYES）、ページアウト空間決定部３１２は、判定用の変数を設定する（ステップ６００４）。本実施形態の説明では、ページアウト空間決定部３１２は、次回の監視の処理までにロックを取得するプロセス数を示す変数ｐと確認するロック待ちプロセス情報７２０を示す変数ｑを用いるとする。本実施形態の説明では、変数ｍと同様に、変数ｐとして次の式を使用する。
［数３］
ｐ  ＝  監視インターバル  ＊  ロック回数  ／  ロック取得時間        （３）
【０１６２】
また、ページアウト空間決定部３１２は、変数ｑの初期としてｐ＋１を設定する。ページアウト空間決定部３１２は、次回の監視の処理までにロックを取得するロック待ちプロセス情報７２０より後ろ、つまり、次回の監視の処理までにロックを取得しないロック待ちプロセス情報７２０を以下の処理の対象とする。以下、図１２の説明において、変数qで示されるロック待ちプロセス情報７２０を「対象プロセス情報」と言う。
【０１６３】
ページアウト空間決定部３１２は、変数qの値がセマフォ２２０に含まれるロック待ちプロセス情報７２０の数より大きいか否かを確認する（ステップ６００５）。この判定は、処理の対象となる対象プロセス情報が残っている否かの判定である。
【０１６４】
対象プロセス情報がない場合（ステップ６００５NO）、ページアウト空間決定部３１２は、次のエントリを処理するため、ステップ６００９に進む。
【０１６５】
対象プロセス情報がある場合（ステップ６００５でYES）、ページアウト空間決定部３１２は、対象プロセス情報がページアウトされている否か確認する（ステップ６００６）。本実施形態では、ページアウト空間決定部３１２は、対象プロセス情報のページアウトフラグがオンかオフかを確認する。
【０１６６】
ページアウトされている場合（ステップ６００６でYES）、対象プロセス情報のプロセス空間４００は、ページアウト済みである。そのため、ページアウト空間決定部３１２は、ページアウトの処理（ステップ６００７）をスキップする。
【０１６７】
ページアウトされてない場合（ステップ６００６でNO）、監視プロセス３００は、対象プロセス情報のプロセス空間４００（第２のプロセス空間）をページアウトする（ステップ６００７）。具体的には、ページアウト空間決定部３１２は、対象プロセス情報に含まれるプロセス番号と、対象エントリの情報とを基に、ページアウト部３２０にページアウトするプロセス空間４００の情報を出力する。ページアウト部３２０は、受け取ったプロセス空間４００の情報を基に、プロセス空間４００をページアウトする。さらに、ページアウト空間決定部３１２は、対象プロセス情報のページアウトフラグをオンにし、常駐設定フラグをオフにする。
【０１６８】
なお、本実施形態のページアウト空間決定部３１２とページアウト部３２０との間の情報は、これに限るわけではない。例えば、ページアウト空間決定部３１２は、プロセス番号をページアウト部３２０に出力しても良い。この場合、ページアウト部３２０は、プロセス番号とロック情報格納部２１０が含む情報とから、ページアウトするプロセス空間４００を取得し、ページアウトする。
【０１６９】
ページアウト後、ページアウト空間決定部３１２は、次のロック待ちプロセス情報７２０を確認するため、変数を変更する（ステップ６００８）。本実施形態では、ページアウト空間決定部３１２は、対象プロセス情報を示す変数（ｑ）を１つ増加する。そして、ページアウト空間決定部３１２は、ステップ６００５に戻る。
【０１７０】
対象エントリの処理を終了すると（ステップ６００３でNO、又は、ステップ６００５でNO）、ページアウト空間決定部３１２は、エントリが終了したか否かを確認する（ステップ６００９）。
【０１７１】
エントリが終了した場合（ステップ６００９でYES）、ページアウト空間決定部３１２は、処理を終了する。
【０１７２】
エントリが終了してない場合（ステップ６００９でNO）、ページアウト空間決定部３１２は、対象エントリを示す変数（ｔ）を次のエントリを示すように修正（具体的には、１を加算）して、ステップ６００３に戻る。
【０１７３】
次に、ページインの動作について説明する。
【０１７４】
監視プロセス３００は、次回の監視の処理までにロックを取得するロック待ちプロセス情報７２０のプロセス空間４００をページインする。
【０１７５】
図１３は、ページインの動作の一例を示すフローチャートである。
【０１７６】
監視部３１０の常駐設定空間決定部３１３は、処理に用いる変数（例えば、対象エントリを示す変数）を設定する（ステップ７００１）。本実施形態の説明では、対象エントリを示す変数ｕに１を設定する。以下、図１３の説明において、変数ｕで示されるエントリを「対象エントリ」と言う。
【０１７７】
常駐設定空間決定部３１３は、対象エントリがロック待ちか否かを判定する。本実施形態の常駐設定空間決定部３１３は、この判定として、セマフォ２２０のロック待ちプロセス情報７２０に含まれるか否かを用いる。ロック待ちの場合、常駐設定空間決定部３１３は、対象エントリにロックが発生したか否かを確認する。本実施形態の常駐設定空間決定部３１３は、対象エントリのロック回数が１以上（０でない）か否かを確認する。まとめると、常駐設定空間決定部３１３は、対象エントリがロック待ちであり且つロックが発生しているか否かを判定する（ステップ７００２）。
【０１７８】
エントリがロック待ちでない、又は、ロックが非発生の場合（ステップ７００２でNO）、常駐設定空間決定部３１３は、エントリのデータ（情報）の修正（ステップ７０１０）に進む。
【０１７９】
ロック待ち、且つ、ロック発生済みの場合（ステップ７００２でYES）、常駐設定空間決定部３１３は、以下で説明する判定用の変数を設定する（ステップ７００３）。本実施形態の説明では、常駐設定空間決定部３１３は、次回の監視の処理までにロックを取得するプロセス数を示す変数ｊと確認するロック待ちプロセス情報７２０を示す変数ｋを用いるとする。本実施形態の説明では、変数ｍと同様に、変数ｊとして次の式を使用する。
［数４］
ｊ  ＝  監視インターバル  ＊  ロック回数  ／  ロック取得時間        （４）
【０１８０】
また、常駐設定空間決定部３１３は、変数ｋの初期として１を設定する。以下、図１３の説明において、変数ｊで示されるロック待ちプロセス情報７２０を「対象プロセス情報」と言う。
【０１８１】
常駐設定空間決定部３１３は、メインメモリにページインに必要な容量があるか否かを確認する（ステップ７００４）。監視部３１０の常駐設定空間決定部３１３は、この判定をステップ６００１と同様に行っても良い。しかし、ページインするプロセス空間４００は、１つとは限らない。そのため、本実施形態の常駐設定空間決定部３１３は、既に使用されているメインメモリの容量と、対象プロセス情報のページインに必要な容量とを基に判定する。
【０１８２】
メモリに空きがない場合（ステップ７００４でNO）、常駐設定空間決定部３１３は、ページインできないため、次の対象プロセス情報の処理（ステップ７００７）に進む。なお、ここで次の対象プロセス情報の処理に進むのは、以下に示す理由のためである。処理プロセス１００のプロセス空間４００のサイズは、同じではない。つまり、今回の対象プロセス情報のプロセス空間４００より小さいプロセス空間４００を用いる対象プロセス情報が、残りの対象プロセス情報に含まれる可能性があるためである。ただし、各処理プロセス１００のプロセス空間４００のサイズが同程度の場合、又は、メインメモリに追加の容量がない場合、常駐設定空間決定部３１３は、処理を終了しても良い。
【０１８３】
メモリに空きがある場合（ステップ７００４でYES）、常駐設定空間決定部３１３は、対象プロセス情報のプロセス空間４００がページアウトされているか否かを確認する（ステップ７００５）。本実施形態の常駐設定空間決定部３１３は、この確認として、対象プロセス情報のページアウトフラグを確認する。
【０１８４】
ページアウトされていない場合（ステップ７００５でNO）、常駐設定空間決定部３１３は、ページインの必要がないため、次のプロセスの処理（ステップ７００７）に進む。
【０１８５】
ページアウトされている場合（ステップ７００５でYES）、監視プロセス３００は、プロセス空間４００（第３のプロセス空間）をページインする（ステップ７００６）。具体的には、常駐設定空間決定部３１３は、対象プロセス情報のプロセス番号のプロセス空間４００の情報をロック情報格納部２１０から取得し、常駐設定部３３０に出力する。プロセス空間４００の情報を受け取った常駐設定部３３０は、プロセス空間４００を常駐設定でページインする。常駐設定空間決定部３１３は、常駐設定部３３０に出力後、対象プロセス情報のページアウトフラグをオフに、常駐設定フラグをオンにする。
【０１８６】
なお、本実施形態の常駐設定空間決定部３１３と常駐設定部３３０との間の情報は、これに限るわけではない。例えば、常駐設定空間決定部３１３は、プロセス番号を常駐設定部３３０に出力しても良い。この場合、常駐設定部３３０は、プロセス番号とロック情報格納部２１０が含む情報とから、ページインするプロセス空間４００を取得し、ページインする。
【０１８７】
常駐設定空間決定部３１３は、対象となるロック待ちプロセス情報７２０が残っているか否かを判定する（ステップ７００７）。例えば、常駐設定空間決定部３１３は、対象プロセス情報がセマフォ２２０の最後であるか、及び、対象プロセス情報を示す変数（ｋ）が次回の監視の処理までにロックを取得するプロセスの数（ｊ）より大きいか否かを判定する。
【０１８８】
ロック待ちプロセス情報７２０がある場合（ステップ７００７でYES）、常駐設定空間決定部３１３は、プロセスを確認するために変数を修正する（ステップ７００８）。常駐設定空間決定部３１３は、例えば、変数ｋを１つ加算する。そして、常駐設定空間決定部３１３は、ステップ７００４に戻る。
【０１８９】
ロック待ちプロセス情報７２０がない場合（ステップ７００７でNO）、常駐設定空間決定部３１３は、対象エントリのデータを修正する（ステップ７０１０）。例えば、常駐設定空間決定部３１３は、プロセス空間４００を常駐させたため、ミッシング発生回数をクリアする。
【０１９０】
その後、常駐設定空間決定部３１３は、次のエントリがあるか否かを確認する（ステップ７０１１）。
【０１９１】
次のエントリがある場合（ステップ７０１１でYES）、常駐設定空間決定部３１３は、次のエントリを確認するために変数を修正（例えば、ｕを１つ加算）する（ステップ７０１２）。そして、常駐設定空間決定部３１３は、ステップ７００２に戻る。
【０１９２】
次のエントリがない場合（ステップ７０１１でNO）、常駐設定空間決定部３１３は、処理を終了する。
【０１９３】
続いて、ロック解除の動作について説明する。
【０１９４】
図１４は、ロック解除の動作の一例を示すフローチャートである。
【０１９５】
ロックを取得したリソースの処理の終了などロック解除する場合、ロック解除部１４０は、ロックのリソースに関する情報（例えば、エントリの位置）を積算部１５０に通知する。積算部１５０は、既に説明したようにロック解除に伴う情報（例えば、エントリのロック取得時間とロック回数）を更新する（ステップ８００１）。
【０１９６】
次に、ロック解除部１４０は、ロックを解除するロック取得プロセス情報７１０の情報を一時的に保存する（ステップ８００２）。具体的には、ロック解除部１４０は、常駐設定フラグを保存する。
【０１９７】
ロック解除部１４０は、セマフォ２２０にロック待ちプロセス情報７２０があるか否かを確認する（ステップ８００３）。
【０１９８】
ロック待ちプロセス情報７２０がない場合（ステップ８００３でNO）、ロック解除部１４０は、ロック取得プロセス情報７１０を初期化（クリア）する（ステップ８００７）。なお、ロック解除部１４０がセマフォ２２０に、ロック取得プロセス情報７１０の領域の初期化を指示しても良い。
【０１９９】
ロック待ちプロセス情報７２０がある場合（ステップ８００３でYes）、ロック解除部１４０は、ロック待ちプロセス情報７２０の先頭の情報（例えば、図６のロック待ちプロセス情報７２０ａ）をロック取得プロセス情報７１０に複製する（ステップ８００４）。
【０２００】
ロック解除部１４０は、複製した先頭のロック待ちプロセス情報７２０ａの領域を解放する（ステップ８００５）。
【０２０１】
ロック解除部１４０は、複製したロック取得プロセス情報７１０のプロセス番号の処理プロセス１００にロック取得を通知する（ステップ８００６）。通知を受けた処理プロセス１００は、ロックを取得して処理を再開する。
【０２０２】
つまり、ロック解除部１４０は、セマフォ２２０の待ち行列（キュー）を１つ進める（更新する）。
【０２０３】
なお、既に説明しているように、本実施形態の情報処理装置２０は、セマフォ２２０の情報を処理する構成を、ロック解除部１４０に限らない。例えば、ロック解除部１４０がセマフォ２２０に指示を送り、セマフォ２２０が、キューを１つ進めても良い。さらに、キューを１つ進めたセマフォ２２０が、ロックを取得した処理プロセス１００に再開指示を送っても良い。
【０２０４】
ロック解除部１４０は、ステップ８００２で保存したプロセス情報の常駐設定フラグが、常駐（オン）であるか否かを確認する（ステップ８００８）。
【０２０５】
常駐の設定の場合（ステップ８００８でYES）、ロック解除部１４０は、常駐解除部１６０に、ロック解除した処理プロセス１００のプロセス空間４００の常駐設定の解除を依頼する（ステップ８００９）。依頼を受けた常駐解除部１６０は、プロセス空間４００の常駐設定を解除する。
【０２０６】
常駐の設定ではない場合（ステップ８００８でNO）、又は、常駐解除部１６０に依頼後、ロック解除部１４０は、処理を終了する。
【０２０７】
なお、常駐解除部１６０がプロセス空間４００の常駐状態を確認してから解除する場合、ロック解除部１４０は、ステップ８００２及びステップ８００８を行わずに、常にステップ８００９を実行しても良い。
【０２０８】
このように第２の実施形態の情報処理装置２０は、第１の実施形態の情報処理装置１０と同様の効果を得ることができる。
【０２０９】
つまり、第２の実施形態の情報処理装置２０は、ロック取得時間を削減できる効果を得ることができる。
【０２１０】
その理由は、第２の情報処理装置２０は、ロック取得中のプロセスのプロセス空間４００を常駐設定する。そのため、ロック取得中のプロセスは、ページアウトに基づくミッシングページが発生を抑えることができる。
【０２１１】
また、本実施形態の情報処理装置２０は、メインメモリの容量不足の発生を抑える効果を得ることができる。
【０２１２】
その理由は、情報処理装置２０は、次に監視までにロックを取得しないプロセスのプロセス空間４００をページアウトするためである。
【０２１３】
さらに、本実施形態の情報処理装置２０は、スループットの低下を抑える効果を得ることができる。
【０２１４】
その理由は、情報処理装置２０は、処理プロセス１００ではなく、監視プロセス３００が必要と判定した場合にプロセス空間４００を常駐させる。そのため、処理プロセス１００は、プロセス空間４００の常駐の判断や設定の処理を必要としないためである。
【０２１５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０２１６】
１０    情報処理装置
２０    情報処理装置
６０    情報処理装置
１００    処理プロセス
１１０    ロック登録部
１２０    ロック取得部
１３０    ロック開始部
１４０    ロック解除部
１５０    積算部
１６０    常駐解除部
１７０    ミッシング解決部
１８０    カウント部
２００    ロック関連情報格納部
２１０    ロック情報格納部
２２０    セマフォ
３００    監視プロセス
３１０    監視部
３１１    ページインサイズ計算部
３１２    ページアウト空間決定部
３１３    常駐設定空間決定部
３２０    ページアウト部
３３０    常駐設定部
４００    プロセス空間
６１０    ＣＰＵ
６２０    ＲＯＭ
６３０    ＲＡＭ
６４０    ＩＯ−ＩＦ
６５０    記憶装置
６６０    キーボード
６７０    マウス
６８０    ディスプレイ
６９０    記憶媒体
７１０    ロック取得プロセス情報
７２０    ロック待ちプロセス情報
７２０ａ    ロック待ちプロセス情報
７２０ｂ    ロック待ちプロセス情報
【図１】
0005915235.tif 000002
【図２】
0005915235.tif 000003
【図３】
0005915235.tif 000004
【図４】
0005915235.tif 000005
【図５】
0005915235.tif 000006
【図６】
0005915235.tif 000007
【図７】
0005915235.tif 000008
【図８】
0005915235.tif 000009
【図９】
0005915235.tif 000010
【図１０】
0005915235.tif 000011
【図１１】
0005915235.tif 000012
【図１２】
0005915235.tif 000013
【図１３】
0005915235.tif 000014
【図１４】
0005915235.tif 000015