(57)【要約】【課題】メモリ内の記憶領域を複数の異なるサイズのページを用いて管理する情報処理装置において、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化する【解決手段】一実施形態に従った情報処理装置は、メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する空きページ格納部と、未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを空きページ格納部から選択し、選択された空きページに関する管理情報を用いて空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行するページ割り当て処理部とを含む。【選択図】図１
2015143943.tif 000002
【特許請求の範囲】
【請求項１】
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する空きページ格納部と、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行するページ割り当て処理部と
を含む、情報処理装置。
【請求項２】
前記空きページ格納部は、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体を含み、
第１および第２のノーマルページが初期化処理済みの空きページである場合には、前記ページ割り当て処理部は、前記第１および前記第２のノーマルページが結合されたラージページに関する管理情報を前記第１のノーマルページに対応する前記ページ構造体に記録し、
前記第１および第２のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ページ割り当て処理部は、前記ラージページに関する管理情報を前記第１および第２のノーマルページに対応する各々の前記ページ構造体に記録する、
請求項１に記載の情報処理装置。
【請求項３】
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合、前記ページ割り当て処理部は、前記ラージページが分割された第３および第４のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを２等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合、前記ページ割り当て処理部は、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第３のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第４のノーマルページに対応する前記ページ構造体の情報として保存する、
請求項２に記載の情報処理装置。
【請求項４】
前記ページ割り当て処理部により実行される前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行するゼロクリア処理部を更に含む、請求項１〜３の何れか一項に記載の情報処理装置。
【請求項５】
前記ゼロクリア処理部は、前記空きページ格納部から選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページであるか否かを判定し、選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、請求項４に記載の情報処理装置。
【請求項６】
前記空きページに関する管理情報は、前記空きページに対する前記ゼロクリア処理部による前記非同期の初期化処理の実行を制御する制御フラグを含み、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記ページ割り当て処理部は、前記制御フラグに前記ゼロクリア処理部による前記非同期の初期化処理を停止させる停止フラグを立てる、
請求項４または５に記載の情報処理装置。
【請求項７】
前記ゼロクリア処理部は、前記空きページ内のノーマルページ１ページ分に対して前記非同期の初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、請求項６に記載の情報処理装置。
【請求項８】
前記ゼロクリア処理部が前記非同期の初期化処理を実行するタイミングを制御するプロセススケジューラ処理部を更に含み、
前記プロセススケジューラ処理部は、前記ページ割り当て処理部により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第１のタイミングで前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、
請求項４〜７の何れか一項に記載の情報処理装置。
【請求項９】
前記ページ割り当て処理部により割り当てられた記憶領域を用いたジョブが実行中である第２のタイミングにおいて、前記プロセススケジューラ処理部は、前記ジョブを実行するプロセス実行部と共有されるキャッシュまたは前記ゼロクリア処理部と前記メモリとの間のメモリバスを使用せずに前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、請求項８に記載の情報処理装置。
【請求項１０】
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
情報処理装置の制御方法。
【請求項１１】
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
処理をコンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、および情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
コンピュータに実装されるOperating System（ＯＳ）を実行するプロセッサは、そのＯＳの配下で動作する新たなプロセスやタスクを実行するために使用されるメモリの記憶領域として、以前のプロセスやタスクの実行後に解放された記憶領域を再び割り当てる。こうした記憶領域の再割り当てが実行される前には、再割り当て対象の記憶領域内に残された以前のプロセスやタスクの情報が漏洩することを防ぐために、記憶領域の再初期化が実行される。ただし、ＯＳのカーネル内部でのメモリの割り当てでは必ずしも初期化が必要でないケースがあることや、解放された記憶領域が事前に初期化されたとしてもコンピュータの電源オフまでの期間といった所定の有効期間内に新たなプロセスの実行に利用されないケースがある。そこで、不必要に初期化が実行されることを抑制するために、記憶領域の再初期化は、記憶領域の再割り当てが必要になった時点で実行され得る。
【０００３】
プロセッサにより実行されるＯＳにおいて、メモリ内の記憶領域は、ページと称される単位、すなわち、連続した所定の記憶領域のサイズ（領域サイズ）単位で分割して管理される。ＯＳにより管理されるページの大きさは、4 Kbytesや8 Kbytesであり得る。また、近年、ＯＳ或いはＯＳの配下で動作するプロセスやタスクの種類によっては、4 Kbytesや8 Kbytesといった通常サイズよりも大きなサイズのページ、例えば、Mbytes単位のサイズのページが用いられ得る。以下の説明では、4 Kbytesや8 Kbytesといった通常サイズのページを便宜的にノーマルページと呼び、通常サイズよりも大きなサイズのページをラージページと便宜的に呼ぶ。メモリ内の記憶領域がラージページにより管理される場合、同じ大きさのメモリを利用するために必要なページ数は、ノーマルページが用いられるケースと比較して少なくなるため、ページの管理コストは小さくなる。このため、メモリ内の記憶領域の管理にラージページが用いられると、Translation Look aside Buffer（ＴＬＢ、アドレス変換バッファ）ミスといった不具合を削減し得、アプリケーションの性能を向上し得る。
【０００４】
しかしながら、メモリ内の記憶領域の管理に単一サイズのラージページが用いられると、有効に利用できるメモリ量が減少し得る。例えば、メモリ内の記憶領域が4 Mbytesのラージページにより管理されるケースにおいて64 Kbytesのプログラムが実行されると、プログラムは64 Kbytesしかないにもかかわらず、１ページ分の4 Mbytesの記憶領域がプログラムの実行に割り当てられる必要が生じる。
【０００５】
そこで、複数の異なるサイズのページが用途に応じて利用できれば、メモリをより有効に利用できる。サイズの異なる複数のメモリブロックを効率的に管理する方法としては、バディシステム（Buddy System）があり、Linuxカーネル等で採用されている。バディシステムでは、複数の連続したページがより大きなサイズのページに結合され、大きなサイズのページが複数の小さなサイズのページに分割されるようにページサイズが可変に制御される。このようなページの結合および分割が実行されることによって、実行されるプロセスやタスクに応じて適切な領域サイズの記憶領域が割り当てられる。
【０００６】
なお、以下のようなページ割り当てシステムが知られている。すなわち、ページで管理されているメモリについて、アプリケーションからのページ取得要求時、アプリケーションからのページ解放時、もしくは、ページを確保しているアプリケーションからのページに対するデータ設定時に、データの流出を防ぐ必要がある安全でないページが検出される。そして、検出された安全でないページのみに対して初期化が行われる。
【０００７】
また、以下のようなメモリ割り当て方式が知られている。システム負荷監視機構は、計算機システムの負荷状況を監視し、システム負荷が低いと判断すると、ページゼロクリア機構を起動させる。ページゼロクリア機構は、次に要求された際に割り当てる予定のページをフリーページプールから取り出して、その内容をゼロクリアし、そのページをゼロクリアページプールへ移し替える。ページアロケート機構は、ゼロクリアされたページが要求されていると判断した場合には、ページゼロクリア機構が用意したゼロクリア済みページプールから取り出したページを要求者に返す。
【０００８】
さらに、以下のようなマイクロプロセッサシステムが知られている。すなわち、マイクロプロセッサは、メモリの初期化すべき先頭アドレスとサイズを指定する。ＤＭＡコンローラは、先頭アドレスおよびサイズにより指定されたメモリの初期化すべき全てのアドレスに初期化データを転送してメモリの初期化を行う。ＤＭＡ転送によりメモリの初期化が行われる場合、初期化データレジスタから出力された初期化データは、ビット幅拡張回路においてビット幅が拡張され、データバスを介してメモリへ転送される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−４８４３６号公報
【特許文献２】特開平１１−３２７１号公報
【特許文献３】特開２００６−２１５９９１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
発明が解決しようとする課題の１つは、メモリ内の記憶領域を複数の異なるサイズのページを用いて管理する情報処理装置において、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化することである。
【課題を解決するための手段】
【００１１】
一実施形態に従った情報処理装置は、空きページ格納部およびページ割り当て処理部を含む。空きページ格納部は、メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する。ページ割り当て処理部は、未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを空きページ格納部から選択し、選択された空きページに関する管理情報を用いて空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する。
【発明の効果】
【００１２】
一実施形態に従った情報処理装置によれば、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化できる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に従った情報処理装置を含む例示的な計算機システムの機能構成図である。
【図２】実施形態に従った例示的なページ構造体の概略図である。
【図３】実施形態に従った空きページ管理リストの例図である。
【図４】実施形態に従った情報処理装置を含む例示的な計算機システムのハードウェア構成図である。
【図５】ゼロクリア処理部により実行されるゼロクリア処理フローの例図である。
【図６】ページ割り当て処理部により実行されるメモリの割り当て処理フローの例図である。
【図７】分割処理に伴う管理情報の更新処理フローの例図である。
【図８】分割処理に伴う管理情報の更新処理についての第１の説明図である。
【図９】分割処理に伴う管理情報の更新処理についての第２の説明図である。
【図１０】結合処理に伴う管理情報の更新処理フローの例図である。
【図１１】結合処理に伴う管理情報の更新処理についての第１の説明図である。
【図１２】結合処理に伴う管理情報の更新処理についての第２の説明図である。
【図１３】結合処理に伴う管理情報の更新処理についての第３の説明図である。
【図１４】第１のタイミングにおけるゼロクリア処理の説明図である。
【図１５】第２のタイミングにおけるゼロクリア処理の説明図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら発明を実施するための形態を説明する。
プロセスやタスクにメモリ内の記憶領域を新たに割り当てるために要する処理時間は、プロセスやタスクを実行するために要求されるメモリの領域サイズに対応するページの数と、割り当てのために初期化処理を要するメモリの領域サイズとに依存し得る。メモリの記憶領域がラージページを用いて管理されるケースでは、割り当てに必要とされるページ数は、ノーマルページを用いて管理されるケースと比較して減少し得る。一方、要求された領域サイズに対応した記憶領域を割り当てるために初期化が必要となるメモリの領域サイズは、ノーマルページが用いられるケースと変わらない。この結果、メモリ内の記憶領域がラージページを用いて管理されるケースでは、１ページに対応する記憶領域をプロセスやタスクに新たに割り当てるために要する処理時間の中で、メモリの記憶領域の初期化処理に要する時間が支配的な時間となり得る。
【００１５】
また、記憶領域の初期化処理が記憶領域の割り当て時に割り当て対象のページ単位で実行されるならば、１回のメモリの割り当て処理に要する時間は、ノーマルページが用いられるケースと比較してラージページが用いられるケースでは長くなる。
【００１６】
上記のような理由から、メモリ内の記憶領域がラージページを用いて管理されるケースでは、記憶領域の初期化処理を含むメモリの割り当て処理に要する時間の長さによっては、複数の計算ノードを含む並列計算機システム全体の性能或いは挙動に好ましくない影響を与え得る。
【００１７】
例えば、ある計算ノードにおいてメモリの割り当て時に行われる初期化処理の時間は、計算機システム内の計算ノード間の通信時間と比較して同等以上の長さになり得る。このような場合に、複数計算ノードがMessage Passing Interface（ＭＰＩ)等のApplication Programming Interface（ＡＰＩ）によって一斉に通信すると、一部の計算ノード間の中継動作においてメモリの初期化待ちによる遅延が発生する。この遅延発生の影響は、全計算ノードに波及し、全体の処理に遅延が生じる。
【００１８】
また、上述の計算ノード間通信といったプロセス間通信を含む処理では、通信の相手側のプロセスが応答するまでのタイムアウト時間は、最悪のケースを想定して設定され得る。そこで、タイムアウト時間は、上述のようなメモリの初期化待ち時間を加味して長く設定される必要が生じ得る。
【００１９】
以下で詳述するように、実施形態に従った情報処理装置は、メモリ内の記憶領域を複数の異なるページサイズのページを用いて管理する。例えば、実施形態に従った情報処理装置は、各ページの管理情報を用いて、各々のページに対応するメモリ内の記憶領域の初期化状態（ゼロクリア状態）を管理する。また、実施形態に従った情報処理装置は、各ページの管理情報を用いて、各々のページに対応するメモリ内の記憶領域の初期化処理を実行する。こうした初期化状態の管理および初期化処理の実行によって、メモリ内の記憶領域の割り当て時に行われる記憶領域の初期化処理に要する時間を削減し、要求される領域サイズに応じた記憶領域の割り当て処理を高速化する。なお、以下の説明において、用語「ゼロクリア」とは、初期化を指す。
【００２０】
図１は、実施形態に従った情報処理装置を含む例示的な計算機システムの機能構成図である。
【００２１】
図１に示すように、計算機システム１は、アプリケーション実行用計算機１１−１〜１１−３およびジョブ管理用計算機１２を含む。計算機システム１は、ジョブ管理用計算機１２を通じて利用者端末装置２と接続する。そして、計算機システム１は、利用者端末装置２のアプリケーションプログラム処理部２Ａから指示されたアプリケーションプログラム、ソースコード、および実行バイナリ等を実行する。以下の説明では、用語「アプリケーションプログラム」とは、特段の記載がない限り、利用者端末装置２からの指示に従って計算機システム１により実行されるアプリケーションプログラム、ソースコード、および実行バイナリ等を便宜的に指す。
【００２２】
ジョブ管理用計算機１２は、ジョブスケジューラ処理部１２Ａを含む。ジョブスケジューラ処理部１２Ａは、利用者端末装置２から指示されたアプリケーションプログラムのジョブを任意のアプリケーション実行用計算機１１−１〜１１−３に実行させるスケジュールを管理する。
【００２３】
アプリケーション実行用計算機１１−１〜１１−３は、ジョブ管理用計算機１２により指示されたアプリケーションプログラムのジョブをそれぞれ実行する。アプリケーション実行用計算機１１−１〜１１−３は、計算機システム１の計算ノードであり、実施形態に従った情報処理装置の一例である。図１には、３つのアプリケーション実行用計算機１１−１〜１１−３が示されているが、計算機システム１に含まれるアプリケーション実行用計算機の数は、任意の数であってよい。以下の説明においてアプリケーション実行用計算機１１−１〜１１−３を特に区別しない場合には、アプリケーション実行用計算機１１と記載する。
【００２４】
アプリケーション実行用計算機１１は、ジョブ管理部１１０、プロセス実行部１２０−１および１２０−２、ならびにOperating System（ＯＳ）処理部１３０を含む。図１には、２つのプロセス実行部１２０−１および１２０−２が示されているが、アプリケーション実行用計算機１１に含まれるプロセス実行部の数は、任意の数であってよい。以下の説明においてプロセス実行部１２０−１および１２０−２を特に区別しない場合には、プロセス実行部１２０と記載する。
【００２５】
ジョブ管理部１１０は、ジョブスケジューラ処理部１２Ａ、プロセス実行部１２０、およびＯＳ処理部１３０と接続する。ジョブ管理部１１０は、アプリケーションプログラムのジョブを実行するスケジューリング、ジョブの実行状態の監視、およびジョブの実行状態の報告といった当該アプリケーション実行用計算機１１内で実行されるジョブ全体をジョブスケジューラ処理部１２Ａと連携して管理する。ジョブスケジューラ処理部１２Ａとジョブ管理部１１０とは、計算機システム１のジョブスケジューリングシステムを構成する。
【００２６】
プロセス実行部１２０は、ジョブ管理部１１０により指示されたアプリケーションプログラムのプロセスをＯＳ処理部１３０により割り当てられたメモリの記憶領域を用いて実行する。また、プロセス実行部１２０は、ジョブ管理部１１０により指示されたアプリケーションプログラムのプロセスをＯＳ処理部１３０により指示されたスケジュールに従って実行する。
【００２７】
ＯＳ処理部１３０は、アプリケーション実行用計算機１１に実装されたＯＳを実行する。ＯＳ処理部１３０は、プロセススケジューラ処理部１３１、ページ割り当て処理部１３２、ゼロクリア処理部１３３、および空きページ格納部１３４を含む。
【００２８】
プロセススケジューラ処理部１３１は、ジョブ管理部１１０、プロセス実行部１２０、およびゼロクリア処理部１３３と接続する。プロセススケジューラ処理部１３１は、ジョブ管理部１１０と連携して、プロセス実行部１２０によるアプリケーションプログラムのプロセスの実行と、ゼロクリア処理部１３３による空きページのゼロクリア処理の実行とのスケジュールを管理する。
【００２９】
ページ割り当て処理部１３２は、プロセス実行部１２０と接続する。ページ割り当て処理部１３２は、メモリ内の記憶領域の割り当て要求をプロセス実行部１２０から受信する。なお、記憶領域の割り当て要求は、プロセスの実行に必要なメモリの領域サイズを要求することで行われるように構成されてよく、プロセスの実行に必要なページサイズを要求することで行われるように構成されてよい。ページ割り当て処理部１３２は、プロセス実行部１２０から要求されたメモリの領域サイズに応じたページサイズの空きページ、またはプロセス実行部１２０から要求されたページサイズに応じた空きページを空きページ格納部１３４から探索する。ページ割り当て処理部１３２は、探索された空きページがゼロクリア処理済みであるか否かを判定し、判定の結果、ゼロクリア処理されていないページである場合には、探索された空きページに対応する記憶領域をゼロクリア処理する。ページ割り当て処理部１３２は、ゼロクリア済みの記憶領域をプロセス実行部１２０に渡す。
【００３０】
ゼロクリア処理部１３３は、プロセススケジューラ処理部１３１および空きページ格納部１３４と接続する。ゼロクリア処理部１３３は、プロセススケジューラ処理部１３１によるスケジュールに従って、空きページ格納部１３４内の空きページを取得する。ゼロクリア処理部１３３は、取得された空きページに対応するメモリ内の記憶領域がゼロクリア処理済であるか否かを判定する。判定の結果、取得された空きページに対応する記憶領域がゼロクリア未処理の記憶領域である場合には、ゼロクリア処理部１３３は、ゼロクリア未処理の記憶領域をゼロクリア処理する。
【００３１】
空きページ格納部１３４では、プロセス実行部１２０によるアプリケーションプログラムのプロセスの実行等に使用されていないメモリ内の記憶領域に対応する空きページが管理される。空きページ格納部１３４は、物理メモリ１３４１、ページ構造体群１３４２、および空きページ管理リスト１３４３を含む。
【００３２】
物理メモリ１３４１は、複数の異なるページサイズのページに分割されて管理される物理的なメモリであり、ページの実体である。なお、特段の記載がない限り、用語「メモリ」と用語「物理メモリ」とは同義である。
【００３３】
ページ構造体群１３４２は、ページに関する情報を管理するページ構造体の集合である。ページ構造体は、管理対象の複数サイズのページの内の最小のページサイズのページ単位、すなわち、ノーマルページ単位で設定される。ノーマルページは、例えば、4 Kbytesまたは8 Kbytesのサイズのページである。ノーマルページ単位で設定された各ページ構造体は、メモリ内の所定アドレスの記憶領域にそれぞれ対応する。
【００３４】
各ページ構造体には、対応するノーマルページまたは対応するノーマルページ１ページ分を含むラージページに関する情報が記録される。すなわち、ノーマルページに関する情報は、対応するページ構造体に記録され、ラージページに関する情報は、ラージページを分割したノーマルページ１ページ毎の対応するページ構造体の内の少なくとも１つに記録される。図２は、実施形態に従った例示的なページ構造体の概略図である。
【００３５】
図２に示すように、実施形態に従ったページ構造体１３４２Ａは、ゼロクリア状態ビットＡ１、ゼロクリア状態ロックビットＡ２、ゼロクリア処理制御ビットＡ３、および空きページビットＡ４を含む。ページ構造体１３４２Ａは、次の空きページのページ構造体へのポインタＡ５および前の空きページのページ構造体へのポインタＡ６を含む。ページ構造体１３４２Ａは、ゼロクリア状態サイズＡ７を含む。
【００３６】
ゼロクリア状態ビットＡ１は、当該ページ構造体１３４２Ａに対応するページ（対応するノーマルページまたは対応するノーマルページ１ページ分を含むラージページ）がゼロクリア処理済みのページであるか否かを示すビットである。ゼロクリア状態ロックビットＡ２は、当該ページ構造体１３４２Ａに対応するページに対するゼロクリア処理をゼロクリア処理部１３３が排他的に実行するためのフラグが立てられるビットである。ゼロクリア処理制御ビットＡ３は、当該ページ構造体１３４２Ａに対応するページに対するゼロクリア処理部１３３によるゼロクリア処理動作の可否を制御するビットである。空きページビットＡ４は、当該ページ構造体１３４２Ａに対応するページが空きページであるか否かを示すビットである。これらの各フラグＡ１〜Ａ４は、例えば1 bitであり、フラグ全体で64 bit以下であり得る。
【００３７】
次の空きページのページ構造体へのポインタＡ５および前の空きページのページ構造体へのポインタＡ６は、空きページ管理リスト１３４３内において当該ページ管理構造体１３４２Ａが接続する隣接の空きページのページ管理構造体１３４２Ａへのポインタである。次の空きページのページ構造体へのポインタＡ５および前の空きページのページ構造体へのポインタＡ６は、例えば、64 bitであり得る。
【００３８】
ゼロクリア状態サイズＡ７は、当該ページに対応する記憶領域内の連続したゼロクリア状態の長さを表すビットである。すなわち、ゼロクリア状態サイズＡ７は、当該ページ構造体１３４２Ａに対応するページ（対応するノーマルページまたは対応するノーマルページ１ページ分を含むラージページ）の連続したゼロクリア済みの領域サイズを示すビットである。ゼロクリア状態サイズＡ７は、ノーマルページのページサイズの２のべき乗で表現され、例えば、8 bitであり得る。
【００３９】
実施形態に従った情報処理装置では、ページ構造体１３４２Ａ内の情報が用いられることによって、ページ割り当て処理部１３２により実行される記憶領域の割り当て処理と、ゼロクリア処理部１３３により実行される記憶領域のゼロクリア処理とが制御される。例えば、ゼロクリア状態ロックビットＡ２およびゼロクリア処理制御ビットＡ３が用いられることによって、ページ割り当て処理部１３２およびゼロクリア処理部１３３による処理が同じ空きページ（同じ空きページに対応する記憶領域）に対して同時に実行されないように制御される。また、空きページに対応するメモリ内の記憶領域の中で、ゼロクリア処理が未実施の記憶領域、すなわち、ゼロクリア処理の実行対象となる記憶領域は、ゼロクリア状態ビットＡ１、空きページビットＡ４、およびゼロクリア状態サイズＡ７が用いられることによって識別される。
【００４０】
空きページ管理リスト１３４３は、プロセス実行部１２０によるアプリケーションプログラムのプロセスの実行等に用いられていない未使用の記憶領域に対応する空きページを管理するリストである。ページ割り当て処理部１３２およびゼロクリア処理部１３３は、空きページ管理リスト１３４３を参照することによって空きページおよびその空きページに対応する記憶領域を探索する。図３は、実施形態に従った空きページ管理リストの例図である。
【００４１】
図３に示すように、8 Kbytes、16 Kbytes、32 Kbytes、および64 Kbytesといったページサイズを表すエントリが空きページ管理リスト１３４３の先頭列に付され、異なるページサイズを有する空きページは、対応するページサイズのエントリと結び付けられて管理される。図３に示す一例では、ノーマルページのサイズは、8 Kbytesであり、ラージページのページサイズは、16 Kbytes、32 Kbytes、および64 Kbytesである。図３中の矢印で表されるように、エントリ毎の空きページは、対応するページ管理構造体１３４２Ａの前述したポインタＡ５およびＡ６によって相互に結び付けられる。なお、図３は、実施形態に従った空きページ管理リスト１３４３の一例にすぎないことに留意すべきである。すなわち、ノーマルページのサイズは、8 Kbytes以外の任意のページサイズであってよい。また、ラージページのページサイズは、16 Kbytes、32 Kbytes、および64 Kbytes以外のページサイズであってよい。異なるページサイズを有するラージページの種類は、３つの種類に限定されず、任意の種類であってよい。
【００４２】
図４は、実施形態に従った情報処理装置を含む例示的な計算機システムのハードウェア構成図である。
【００４３】
図４に示すように、計算機システム３は、アプリケーション実行用計算機３１−１〜３１−５、ジョブ管理用計算機３２、およびノード間接続ネットワーク３３を含む。計算機システム３は、ジョブ管理用計算機３２を通じてコンピュータといった利用者端末装置４と接続する。なお、図４には、５つのアプリケーション実行用計算機３１−１〜３１−５が示されているが、計算機システム３に含まれるアプリケーション実行用計算機の数は、任意の数であってよい。以下の説明においてアプリケーション実行用計算機３１−１〜１３１−５を特に区別しない場合にはアプリケーション実行用計算機３１と記載する。
【００４４】
ジョブ管理用計算機３２は、コンピュータといった情報処理装置であり、ジョブ管理用計算機１２に対応する。ジョブ管理用計算機１２内のジョブスケジューラ処理部１２Ａは、例えば、ジョブ管理用計算機３２内のCentral Processing Unit（ＣＰＵ）である。
【００４５】
アプリケーション実行用計算機３１は、コンピュータといった情報処理装置であり、実施形態に従った情報処理装置の一例であるアプリケーション実行用計算機１１に対応する。各アプリケーション実行用計算機３１は、計算機システム３の計算ノードである。
【００４６】
図４に示すように、アプリケーション実行用計算機３１は、ＣＰＵコア（Central Processing Unit Core）３１０−１〜３１０−４、一次（Level 1、Ｌ１）キャッシュ３２０−１〜３２０−４、二次（Level 2、Ｌ２）キャッシュ３３０、メインメモリ３４０、ストレージ３５０、記憶媒体用ドライブ３６０、インターコネクト３７０、およびバス３８０を含む。図４には、４つのＣＰＵコア３１０−１〜３１０−４と、４つのＣＰＵコア３１０−１〜３１０−４に対応する４つの一次キャッシュ３２０−１〜３２０−４が示されている。しかしながら、アプリケーション実行用計算機３１に含まれるＣＰＵコアおよびそのＣＰＵコアに対応する一次キャッシュの数は、任意の数であってよい。以下の説明において、ＣＰＵコア３１０−１〜３１０−４を区別しない場合には、ＣＰＵコア３１０と記載する。一次キャッシュ３２０−１〜３２０−４を区別しない場合には、一次キャッシュ３２０と記載する。
【００４７】
ＣＰＵコア３１０は、プロセッサの中核であり、演算処理を行う論理回路である。各ＣＰＵコア３１０は、高速にアクセス可能な対応する一次キャッシュ３２０と接続し、複数のＣＰＵコア３１０により共有される二次キャッシュ３３０と接続する。ＣＰＵコア３１０、一次キャッシュ３２０、および二次キャッシュ３３０は、マルチプロセッサを構成する。ＣＰＵコア３１０、一次キャッシュ３２０、および二次キャッシュ３３０は、ジョブ管理部１１０、プロセス実行部１２０、プロセススケジューラ処理部１３１、ページ割り当て処理部１３２、およびゼロクリア処理部１３３に対応する。
【００４８】
メインメモリ３４０は、実行中のプログラムや処理中のデータを一時的に記憶し、ＣＰＵコア３１０が直接アクセス可能な主記憶装置である。メインメモリ３４０は、例えば、Random Access Memory（ＲＡＭ）である。メインメモリ３４０は、空きページ格納部１３４に対応する。
【００４９】
ストレージ３５０は、例えば、ハードディスクドライブ（Hard Disk Drive、ＨＤＤ）である。ストレージ３５０には、ＯＳ等のプログラムやデータが格納される。
【００５０】
記録媒体用ドライブ３６０は、記録媒体に記録されたデータを読み込み、および／またはアプリケーション実行用計算機３１内で処理されたデータを記録媒体へ書き込むための装置である。記録媒体は、例えば、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ、およびフラッシュメモリ等である。
【００５１】
インターコネクト３７０は、ノード間接続ネットワーク３３を介して他のノード３１およびジョブ管理用計算機３２と接続する通信装置である。
【００５２】
バス３８０は、ＣＰＵコア３１０、一次キャッシュ３２０、および二次キャッシュ３３０を含むマルチプロセッサ、メインメモリ３４０、ストレージ３５０、記録媒体用ドライブ３６０、ならびにインターコネクト３７０を相互に接続する。バス３８０は、ＣＰＵコア３１０、一次キャッシュ３２０、および二次キャッシュ３３０を含むマルチプロセッサと、メインメモリ３４０とを接続するメモリバスを含む。
【００５３】
ノード間接続ネットワーク３３は、ジョブ管理用計算機３２とアプリケーション実行用計算機３１との間、およびアプリケーション実行用計算機３１間を接続するケーブルおよびスイッチである。
【００５４】
まず、ゼロクリア処理部１３３により実行されるゼロクリア処理について説明する。ゼロクリア処理とは、空きページに対応するメモリ内の記憶領域に対する初期化処理を指す。図５は、ゼロクリア処理部により実行されるゼロクリア処理フローの例図である。
【００５５】
ゼロクリア処理部１３３は、プロセススケジューラ処理部１３１からの指示に従ってゼロクリア処理を開始すると（ステップＳ１００１）、空きページ管理リスト１３４３を参照して、ゼロクリア処理されていない空きページを探索する（ステップＳ１００２）。具体的には、ゼロクリア処理部１３３は、空きページ管理リスト１３４３中の空きページに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１を参照することによって、ゼロクリア処理されていない空きページを探索する。
【００５６】
探索の結果、ゼロクリア処理されていない空きページがなかった場合（ステップＳ１００３で“ＮＯ”）、ゼロクリア処理部１３３は、一連のゼロクリア処理を終了する。そして、ゼロクリア処理部１３３は、ゼロクリア処理の実行をプロセススケジューラ処理部１３１により新たに指示されるまで待機する（ステップＳ１００４）。
【００５７】
探索の結果、ゼロクリア処理されていない空きページがある場合（ステップＳ１００３で“ＹＥＳ”）、ゼロクリア処理部１３３は、探索された空きページの内の１つの空きページを選択する。図３を参照しながら前述したように、空きページ管理リスト１３４３では、異なるページサイズ毎に空きページが管理される。したがって、ゼロクリア処理部１３３により選択される空きページは、ノーマルページ、ノーマルページ同士が結合されたラージページ、またはラージページページ同士が更に結合されたより大きなページサイズのラージページであり得る。
【００５８】
ゼロクリア処理部１３３は、選択された空きページ全体に対するロックを試みる（ステップＳ１００６）。具体的には、ゼロクリア処理部１３３は、選択された空きページに対応するページ構造体１３４２Ａのゼロクリア状態ロックビットＡ２に、ゼロクリア処理の排他的実行を示すロックフラグを立てることを試みる。ステップＳ１００６の処理が実行されることによって、同一の空きページがゼロクリア処理部１３３およびページ割り当て処理部１３２による処理対象になることを抑制できる。
【００５９】
選択された空きページ全体に対するロックに失敗した場合（ステップＳ１００７で“ＮＯ”）、ゼロクリア処理部１３３は、ステップＳ１００２の処理に戻って、ゼロクリア処理されていない空きページを再び探索する。
【００６０】
選択された空きページ全体に対するロックに成功した場合（ステップＳ１００７で“ＹＥＳ”）、ゼロクリア処理部１３３は、選択された空きページの割り当てを待っているリクエストがある否かを判定する（ステップＳ１００８）。具体的には、ゼロクリア処理部１３３は、選択された空きページに対応するページ構造体１３４２Ａのゼロクリア処理制御ビットＡ３を参照することにより、選択された空きページをページ割り当て処理部１３２が割り当て対象のページとしていないか否かを判定する。ステップＳ１００８の処理においてゼロクリア処理制御ビットＡ３のフラグが定期的に確認されることによって、ゼロクリア処理部１３３によるゼロクリア処理よりもページ割り当て処理部１３２による割り当て処理が優先されるように制御される。したがって、ページ割り当て処理部１３２にメモリの割り当てを要求したプロセス実行部１２０によるアプリケーションプログラムのプロセス実行がゼロクリア処理部１３３による処理により停滞することが抑制できる。
【００６１】
判定の結果、選択された空きページの割り当てを待っているリクエストがある、すなわち、ゼロクリア処理停止フラグがゼロクリア処理制御ビットＡ３に立っている場合（ステップＳ１００８で“ＮＯ”）、ゼロクリア処理部１３３は、選択された空きページに対するロックを解除する（ステップＳ１００９）。そして、ゼロクリア処理部１３３は、ステップＳ１００２の処理に戻って、ゼロクリア処理されていない空きページを再び探索する。
【００６２】
判定の結果、選択された空きページの割り当てを待っているリクエストがない、すなわち、ゼロクリア処理停止フラグがゼロクリア処理制御ビットＡ３に立っていない場合（ステップＳ１００８で“ＹＥＳ”）、ゼロクリア処理部１３３は、ステップＳ１０１０の処理を実行する。すなわち、ゼロクリア処理部１３３は、選択されたページの内、ゼロクリア処理されていないノーマルページ１ページ分に対応する物理メモリ１３４１内の記憶領域をゼロクリア処理する（ステップＳ１０１０）。
【００６３】
ゼロクリア処理部１３３は、新たにゼロクリア処理された状態を選択されたページに対応するページ構造体１３４２Ａに反映させる（ステップＳ１０１１）。具体的には、ゼロクリア処理部１３３は、対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１にゼロクリア処理済みであることを示すフラグを立てる。また、ゼロクリア処理部１３３は、対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７に、新たにゼロクリア処理された領域サイズを加算する。
【００６４】
例えば、選択された空きページがラージページである場合、ゼロクリア処理部１３３は、選択された空きページ内の先頭のノーマルページ１ページ分に対応するページ構造体１３４２Ａに対して、ゼロクリア処理済みであることを示すフラグを立て、ゼロクリア処理された領域サイズを加算する。また、ゼロクリア処理部１３３は、新たにゼロクリア処理された当該ノーマルページ１ページ分に対応するページ構造体１３４２Ａに対して、ゼロクリア処理済みであることを示すフラグを立て、ゼロクリア処理された領域サイズを加算し得る。
【００６５】
ノーマルページ１ページ分に対応する物理メモリ１３４１内の記憶領域のゼロクリア処理が完了すると、ゼロクリア処理部１３３は、選択されたページ全体のゼロクリア処理が完了したか否かを判定する（ステップＳ１０１２）。具体的には、ゼロクリア処理部１３３は、選択された空きページ内の先頭のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７が選択された空きページのページサイズと一致するか否かを判定する。
【００６６】
選択されたページ全体のゼロクリア処理が完了していないと判定される場合（ステップＳ１０１２で“ＮＯ”）、ゼロクリア処理部１３３は、ステップＳ１００８の処理に戻って、選択された空きページの割り当てを待っているリクエストがあるか否かを判定する。
【００６７】
選択されたページ全体のゼロクリア処理が完了したと判定される場合（ステップＳ１０１２で“ＹＥＳ”）、ゼロクリア処理部１３３は、選択された空きページに対するロックを解除する（ステップＳ１００９）。具体的には、ゼロクリア処理部１３３は、ステップＳ１００６の処理によりロックフラグを立てたゼロクリア状態ロックビットＡ２に、ゼロクリア処理部１３３によるゼロクリア処理の排他的実行の停止を示すロック解除フラグを立てる。そして、ゼロクリア処理部１３３は、ステップＳ１００２の処理に戻って、ゼロクリア処理されていない空きページを再び探索する。こうして、空きページ管理リスト１３４３内にゼロクリア処理されていない空きページがなくなるまで一連のゼロクリア処理が実行される。
【００６８】
このように、メモリ内の記憶領域の割り当て処理時に実行されるゼロクリア処理とは別に上述のような一連のゼロクリア処理が実行されることによって、メモリ内の記憶領域の割り当て処理時に必要なメモリのゼロクリア処理を削減できる。この結果、複数のページサイズを用いて管理されるメモリ内の記憶領域の中から、要求されたプロセスやタスクに応じた適切な領域サイズの初期化済みの記憶領域を高速に割り当てることができる。また、上述のような一連のゼロクリア処理よりも記憶領域の割り当て処理が優先的に実行されるように制御されることによって、プロセスやタスクの実行に必要な記憶領域の割り当て処理を遅延させずに、空きページに対応する記憶領域のゼロクリア処理を実行できる。
【００６９】
次に、ページ割り当て処理部１３２により実行される処理について説明する。ページ割り当て処理部１３２により実行される処理は、メモリの割り当て処理とメモリの解除処理とに大別できる。
【００７０】
まず、ページ割り当て処理部１３２により実行されるメモリの割り当て処理について説明する。メモリの割り当て処理とは、複数の異なるページサイズのページを用いて管理されるメモリ内の記憶領域の中から、プロセス実行部１２０から要求されたメモリの領域サイズまたはページサイズに応じてゼロクリア処理済みの記憶領域を割り当てる処理である。図６は、ページ割り当て処理部により実行されるメモリの割り当て処理フローの例図である。
【００７１】
ページ割り当て処理部１３２は、プロセスやタスクの実行に必要なメモリ内の記憶領域の割り当て要求をプロセス実行部１２０から受信し、一連のメモリの割り当て処理を開始する（ステップＳ２００１）。なお、記憶領域の割り当て要求は、必要なメモリの領域サイズを要求することで行われるように構成されてよく、必要なページサイズを要求することで行われるように構成されてよい。ページ割り当て処理部１３２は、プロセス実行部１２０から要求されたメモリの領域サイズ以上のページサイズを有する空きページ、またはプロセス実行部１２０から要求されたページサイズ以上のページサイズを有する空きページを空きページ管理リスト１３４３を参照して探索する（ステップＳ２００２）。
【００７２】
探索の結果、プロセス実行部１２０から要求された領域サイズまたはページサイズ以上の空きページがなかった場合（ステップＳ２００２で“ＮＯ”）、ページ割り当て処理部１３２は、要求された領域サイズを有する未使用の記憶領域が枯渇していると判断し、メモリの割り当てエラーをプロセス実行部１２０へ送信し、一連のメモリの割り当て処理を終了する（ステップＳ２００３）。
【００７３】
探索の結果、プロセス実行部１２０から要求された領域サイズまたはページサイズ以上の空きページがある場合（ステップＳ２００２で“ＹＥＳ”）、ページ割り当て処理部１３２は、探索された空きページの内の１つの空きページを割り当て対象ページとして決定する。図３を参照しながら前述したように、空きページ管理リスト１３４３では、異なるページサイズ毎に空きページが管理される。したがって、ページ割り当て処理部１３２により決定される空きページは、ノーマルページ、ノーマルページ同士が結合されたラージページ、またはラージページページ同士が更に結合されたより大きなページサイズのラージページであり得る。
【００７４】
例えば、ページ割り当て処理部１３２は、空きページ管理リスト１３４３の中から、プロセス実行部１２０から要求された領域サイズまたはページサイズ以上のページサイズを有する空きページの内で、ページサイズが最も小さい空きページを選択する。仮に、選択された空きページのページサイズがプロセス実行部１２０から要求された領域サイズまたはページサイズの２倍以上である場合には、ページ割り当て処理部１３２は、選択された空きページがノーマルページでない限り、選択された空きページを２つの空きページに分割する。そして、ページ割り当て処理部１３２は、分割された一方の空きページを割り当て候補ページとして選択し、分割された他方の空きページを分割後のページサイズで管理されるように空きページ管理リスト１３４３に戻す。仮に、割り当て候補ページとして選択された空きページのページサイズがプロセス実行部１２０から要求された領域サイズまたはページサイズの２倍以上である場合には、ページ割り当て処理部１３２は、選択された空きページを２つの空きページに再分割する。そして、ページ割り当て処理部１３２は、再分割された一方の空きページを新たな割り当て候補ページとして選択し、再分割された他方の空きページを再分割後のページサイズで管理されるように空きページ管理リスト１３４３に戻す。このように、選択された空きページのサイズがプロセス実行部１２０から要求された領域サイズまたはページサイズの２倍未満になるまで、ページ割り当て処理部１３２は、上述のような分割処理を繰り返す。そして、選択された空きページのページサイズがプロセス実行部１２０から要求された領域サイズの２倍未満になると、ページ割り当て処理部１３２は、選択された空きページを割り当て対象ページとして決定する。
【００７５】
上述のような空きページの分割処理が行われる場合には、ページ割り当て処理部１３２は、ゼロクリア状態に関する管理情報といった、分割された空きページに関する管理情報の更新処理を実行する。図７は、分割処理に伴う管理情報の更新処理フローの例図である。
【００７６】
ページ割り当て処理部１３２は、空きページの分割処理に伴う管理情報の更新処理を開始すると（ステップＳ３００１）、空きページ管理リスト１３４３により管理されている当該空きページに対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７を取得する（ステップＳ３００２）。例えば、処理対象の空きページがラージページである場合、ページ割り当て処理部１３２は、ラージページ内の先頭のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７を取得する。
【００７７】
ページ割り当て処理部１３２は、取得されたゼロクリア状態サイズＡ７により示されるゼロクリア処理済の領域サイズと、空きページ管理リスト１３４３により管理されている当該空きページのページサイズとを比較する（ステップＳ３００３）。
【００７８】
比較の結果、両者のサイズが一致する場合（ステップＳ３００３で“ＹＥＳ”）、ページ割り当て処理部１３２は、取得されたゼロクリア状態サイズＡ７が示すゼロクリア処理済みの領域サイズを２等分する。そして、ページ割り当て処理部１３２は、分割処理により当該空きページが分割された２つの空きページに対応する各々のページ構造体１３４２Ａのゼロクリア状態サイズＡ７に、２等分された領域サイズを書き込む（ステップＳ３００４）。
【００７９】
比較の結果、両者のサイズが一致しない場合（ステップＳ３００３で“ＮＯ”）、ページ割り当て処理部１３２は、分割された２つの空きページに対応する各々のページ構造体１３４２Ａに既に記録されているゼロクリア状態サイズＡ７を書き換えずに、分割された２つの空きページの各々の管理情報としてそのゼロクリア状態サイズＡ７を保持する（ステップＳ３００５）。
【００８０】
ステップＳ３００４の処理またはステップＳ３００５の処理が実行されると、ページ割り当て処理部１３２は、一連の管理情報の更新処理を終了する（ステップＳ３００６）。なお、割り当て候補ページとして選択されたラージページが再分割される場合には、ページ割り当て処理部１３２は、一連の管理情報の更新処理を再度実行する。
【００８１】
ステップＳ３００４の処理およびステップＳ３００５の処理に対する理解を助けるために、図８および図９を用いて分割処理に伴う管理情報の更新処理を説明する。
【００８２】
図８は、分割処理に伴う管理情報の更新処理についての第１の説明図である。図８には、16 KbytesのページサイズのラージページＡが8 Kbytesの２つのノーマルページＢおよびＣに分割されるケースが例示的に示されている。
【００８３】
図８に示した一例では、ラージページＡに対応するメモリ内の記憶領域は、全てゼロクリア処理されており、ラージページＡの管理情報領域には、“ゼロクリア状態＝16 Kbytesについてゼロクリア済”と記録される。具体的には、ラージページＡの管理情報領域の内、“ゼロクリア状態＝ゼロクリア済”という情報は、ラージページＡ内の先頭のノーマルページ１ページ分、すなわち、ラージページＡ内の前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１に記録される。また、“ゼロクリア状態＝16 Kbytes”という情報は、ラージページＡ内の前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７に記録される。このように、ラージページＡに関する管理情報は、ラージページＡ内の前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａによって記録される。このように、実施形態に従ったページに関する管理情報の記録方法を用いれば、ラージページ内のノーマルページ１ページ毎の全てのページ構造体を参照しなくても、ラージページの管理情報を検索および更新できるため、管理情報の検索および更新の処理を簡略化および高速化できる。また、ページサイズの大きさに依存せずに、管理情報の更新を伴うページの分割処理を実行できる。
【００８４】
図８に示したラージページＡでは、ラージページＡのページサイズ（16 Kbytes）とラージページＡのゼロクリア処理済の領域サイズ（16 Kbytes）とが一致する。そこで、ラージページＡが２つのノーマルページＢおよびＣに分割処理されるケースでは、図７のステップＳ３００４の処理によって、ラージページＡの管理情報領域に記録されたゼロクリア状態の領域サイズ、すなわち16 Kbytesが２等分される。そして、図８に示すように、２等分処理後の“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報が、分割されたノーマルページＢおよびＣに関する管理情報としてそれぞれの管理情報領域内に記録される。具体的には、“ゼロクリア状態＝ゼロクリア済”という情報は、ノーマルページＢおよびＣに対応する各々のページ構造体１３４２Ａのゼロクリア状態ビットＡ１に記録される。また、“ゼロクリア状態＝8 Kbytes”という情報は、ノーマルページＢおよびＣに対応する各々のページ構造体１３４２Ａのゼロクリア状態サイズＡ７に記録される。
【００８５】
図９は、分割処理に伴う管理情報の更新処理についての第２の説明図である。図９には、16 KbytesのページサイズのラージページＤが8 Kbytesの２つのノーマルページＥおよびＦに分割されるケースが例示的に示されている。
【００８６】
図９に示した一例では、ラージページＤのページサイズの内の前半のノーマルページ１ページ分の記憶領域は、ゼロクリア処理されており、後半のノーマルページ１ページ分の記憶領域は、ゼロクリア処理されていない。そこで、ラージページＤの管理情報領域には、前半のノーマルページ１ページ分について“ゼロクリア状態＝8 Kbytesについてゼロクリア済”と記録され、後半のノーマルページ１ページ分について“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”と記録される。具体的には、“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報は、ラージページＤ内の前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７に記録される。また、“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”という情報は、ラージページＤ内の後半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７に記録される。このように、ラージページＤに関する管理情報は、前半および後半のノーマルページ１ページ分に分割されて記録および管理される。
【００８７】
図９に示したラージページＤでは、ラージページＤのページサイズ（16 Kbytes）とラージページＤのゼロクリア処理済の領域サイズ（8 Kbytes）とが一致しない。そこで、図７のステップＳ３００５の処理によって、ラージページＤの管理情報の内、前半のノーマルページ１ページ分についての“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報は、ラージページＤの前半のノーマルページ１ページ分に対応するノーマルページＥの管理情報として引き続き保持される。また、ラージページＤの管理情報の内、後半のノーマルページ１ページ分についての“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”という情報は、ラージページＤの後半のノーマルページ１ページ分に対応するノーマルページＦの管理情報として引き続き保持される。具体的には、“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報は、ノーマルページＥに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７により引き続き保持される。また、“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”という情報は、ノーマルページＦに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７により引き続き保持される。
【００８８】
上述したようなページの分割処理および管理情報の更新処理を含む図６のステップＳ２００４の処理によって、割り当て対象の空きページが決定される。ページ割り当て処理部１３２は、決定された割り当て対象の空きページに対するゼロクリア処理を停止するようにゼロクリア処理部１３３に要求する（ステップＳ２００５）。具体的には、ページ割り当て処理部１３２は、割り当て対象の空きページに対応するページ構造体１３４２Ａのゼロクリア処理制御ビットＡ３にゼロクリア処理の停止フラグを立てる。ステップＳ２００５の処理によって、割り当て対象の空きページに対応する記憶領域がゼロクリア処理部１３３によるゼロクリア処理中であったとしても、ゼロクリア処理部１３３によるゼロクリア処理よりもページ割り当て処理部１３２による割り当て処理が優先されるように制御される。したがって、メモリ内の記憶領域の割り当てをページ割り当て処理部１３２に要求したプロセス実行部１２０によるアプリケーションプログラムのプロセスの実行がゼロクリア処理部１３３による処理により停滞することが抑制できる。
【００８９】
ページ割り当て処理部１３２は、割り当て対象の空きページに対するゼロクリア処理部１３３によるゼロクリア処理が停止するのを待ち合わせる（ステップＳ２００６）。具体的には、ページ割り当て処理部１３２は、割り当て対象の空きページに対応するページ構造体１３４２Ａのゼロクリア状態ロックビットＡ２を参照する。そして、仮に、参照されたゼロクリア状態ロックビットＡ２にロックフラグが立っていた場合には、ページ割り当て処理部１３２は、ロックフラグからロック解除フラグへゼロクリア状態ロックビットＡ２が変更されるのを待ち合わせる。ロックフラグとは、ゼロクリア処理部１３３によるゼロクリア処理の排他的実行を示すフラグである。ロック解除フラグとは、ゼロクリア処理部１３３によるゼロクリア処理の排他的実行の停止を示すフラグである。
【００９０】
割り当て対象の空きページに対するゼロクリア処理部１３３によるゼロクリア処理が停止されると、ページ割り当て処理部１３２は、割り当て対象の空きページに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７を読み込む。そして、ページ割り当て処理部１３２は、読み込まれたゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７を用いて、割り当て対象の空きページの中でゼロクリア処理が未実施の記憶領域がないか否かを探索する。具体的には、ページ割り当て処理部１３２は、読み込まれたゼロクリア状態ビットＡ１にゼロクリア処理済を示すフラグが立っているか否かを判定する。また、ページ割り当て処理部１３２は、割り当て対象の空きページのページサイズと、読み込まれたゼロクリア状態サイズＡ７とが一致するか否かを判定する。ゼロクリア状態ビットＡ１にゼロクリア処理済を示すフラグが立っていない場合、および割り当て対象の空きページのページサイズと読み込まれたゼロクリア状態サイズＡ７とが一致しない場合には、ページ割り当て処理部１３２は、ゼロクリア処理が未実施の記憶領域があると判定する。そして、ページ割り当て処理部１３２は、判定されたゼロクリア処理が未実施の記憶領域をゼロクリア処理する（ステップＳ２００７）。
【００９１】
割り当て対象の空きページに対応する全ての記憶領域がゼロクリア処理されると、ページ割り当て処理部１３２は、割り当て対象の空きページに対応するゼロクリア処理済みの記憶領域を、割り当てを要求したプロセス実行部１２０へ渡す（ステップＳ２００８）。そして、ページ割り当て処理部１３２は、一連のメモリの割り当て処理を終了する（ステップＳ２００９）。
【００９２】
次に、ページ割り当て処理部１３２により実行されるメモリの解放処理について説明する。メモリの解放処理とは、プロセス実行部１２０によるプロセスやタスクの実行等の後に解放されたメモリ内の記憶領域を、管理対象とされる複数の異なるページサイズの内の所定のページサイズの空きページに対応する記憶領域として解放する処理である。
【００９３】
ページ割り当て処理部１３２は、プロセス実行部１２０によるプロセスやタスクの実行等に割り当てられたメモリ内の記憶領域が解放されると、メモリの解放処理を開始する。ページ割り当て処理部１３２は、解放された記憶領域に対応するページをゼロクリア未実施の空きページとしてマークする。具体的には、ページ割り当て処理部１３２は、解放された空きページに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１にゼロクリア処理が未実施であることを示すフラグを立てる。ページ割り当て処理部１３２は、空きページビットＡ４に空きページであることを示すフラグを立てる。ページ割り当て処理部１３２は、ゼロクリア状態サイズＡ７にゼロクリア実施済みの領域サイズがないことを示す値“０”を書き込む。
【００９４】
ページ割り当て処理部１３２は、ゼロクリア未実施の空きページとしてマークされたページを空きページ管理リスト１３４３に格納する。具体的には、ページ割り当て処理部１３２は、以下のような処理を実行する。
【００９５】
図３等を参照しながら前述したように、アプリケーション実行用計算機１１を一例とする実施形態に従った情報処理装置では、複数の異なるページサイズを有するページを用いてメモリ内の記憶領域が管理される。そこで、空きページ管理リスト１３４３中には、格納対象の空きページのバディが存在し得る。バディとは、当該ページよりも大きなページサイズを有するページとして当該ページと結合されるページを指す。バディシステムでは、所定の結合規則に従って、当該ページの結合相手となるバディは予め決められる。ページ割り当て処理部１３２は、格納対象の空きページのページサイズに対応するエントリを参照して、格納対象の空きページのバディが空きページ管理リスト１３４３中に存在しないか否かを確認する。
【００９６】
確認の結果、格納対象の空きページのバディが存在しない場合、ページ割り当て処理部１３２は、格納対象の空きページに対応するページ構造体１３４２ＡのポインタＡ５およびＡ６に所定の値を書き込み、格納対象の空きページを空きページ管理リスト１３４３に格納する。確認の結果、格納対象の空きページのバディが存在する場合、ページ割り当て処理部１３２は、格納対象の空きページと格納対象の空きページのバディとの結合処理を実行する。
【００９７】
ページ割り当て処理部１３２は、結合処理されたページのバディが空きページ管理リスト１３４３中に存在しないか否かを確認する。確認の結果、結合処理されたページのバディが存在しない場合、ページ割り当て処理部１３２は、結合処理されたページに対応するページ構造体１３４２ＡのポインタＡ５およびＡ６に所定の値を書き込み、結合処理されたページを空きページ管理リスト１３４３に格納する。確認の結果、結合処理されたページのバディが存在する場合、ページ割り当て処理部１３２は、結合処理されたページと結合処理されたページのバディとの結合処理を実行する。そして、空きページ管理リスト１３４３中にバディが存在しないと確認されるまで、ページ割り当て処理部１３２は、上述のような結合処理を繰り返す。
【００９８】
上述のような結合処理が実行される場合、ページ割り当て処理部１３２は、結合される２つのページに関する管理情報が失われないように、結合される２つのページに関する管理情報を結合後のページに関する管理情報に反映させる。図１０は、結合処理に伴う管理情報の更新処理フローの例図である。
【００９９】
ページ割り当て処理部１３２は、空きページの結合処理に伴う管理情報の更新処理を開始すると（ステップＳ４００１）、結合対象の前半の空きページ（第１の空きページ）に関する管理情報を取得する（Ｓ４００２）。また、ページ割り当て処理部１３２は、結合対象の後半の空きページ（第２の空きページ）に関する管理情報を取得する（Ｓ４００２）。前半および後半の空きページの内、一方の空きページは、新たに解放された記憶領域に対応するページ、或いは新たに解放された記憶領域に対応するページと空きページ管理リスト１３４３中のそのバディとが結合された結合後のページである。また、他方の空きページは、前半の空きページのバディであり、空きページ管理リスト１３４３中に存在する。ステップＳ４００２およびＳ４００３の処理により取得される管理情報は、前半および後半の空きページに対応する各々のページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７である。
【０１００】
ページ割り当て処理部１３２は、取得された管理情報を基に、前半の空きページのゼロクリア状態と後半の空きページのゼロクリア状態とが一致するか否かを判定する（ステップＳ４００４）。具体的には、ページ割り当て処理部１３２は、前半の空きページのゼロクリア状態ビットＡ１と後半の空きページのゼロクリア状態ビットＡ１とが一致し、且つ、前半の空きページのページサイズと前半の空きページのゼロクリア状態サイズＡ７とが一致し、後半の空きページのページサイズと後半の空きページのゼロクリア状態サイズＡ７とが一致するか否かを判定する。
【０１０１】
判定の結果、前半の空きページのゼロクリア状態と後半の空きページのゼロクリア状態とが一致すると判定される場合（ステップＳ４００４で“ＹＥＳ”）、ページ割り当て処理部１３２は、結合後のページに関する管理情報として、前半および後半の空きページに関する管理情報を纏めて記載する（ステップＳ４００５）。具体的には、ページ割り当て処理部１３２は、結合後のページがゼロクリア処理済か否かを示す情報として、前半の空きページに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１を保持する。また、ページ割り当て処理部１３２は、結合後のページのゼロクリア済みの領域サイズを示す情報として、前半の空きページに対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７に、前半および後半の空きページのゼロクリア状態サイズＡ７の合計値を書き込む。
【０１０２】
判定の結果、前半の空きページのゼロクリア状態と後半の空きページのゼロクリア状態とが一致しないと判定される場合（ステップＳ４００４で“ＮＯ”）、ページ割り当て処理部１３２は、結合後のページに関する管理情報として、前半および後半の空きページに関する管理情報を保持する（ステップＳ４００６）。具体的には、ページ割り当て処理部１３２は、結合後のページがゼロクリア処理済か否かを示す情報として、前半および後半の空きページに対応する各々のページ構造体１３４２Ａのゼロクリア状態ビットＡ１を保持する。また、ページ割り当て処理部１３２は、結合後のページのゼロクリア済みの領域サイズを示す情報として、前半および後半の空きページに対応する各々のページ構造体１３４２Ａのゼロクリア状態サイズＡ７を保持する。
【０１０３】
ステップＳ４００５の処理またはステップＳ４００６の処理が実行されると、ページ割り当て処理部１３２は、一連の管理情報の更新処理を終了する（ステップＳ４００７）。なお、結合後のページと結合後のページのバディが更に結合される場合には、ページ割り当て処理部１３２は、一連の管理情報の更新処理を再度実行する。
【０１０４】
ステップＳ４００５の処理およびステップＳ４００６の処理に対する理解を助けるために、図１１〜図１３を用いて結合処理に伴う管理情報の更新処理を説明する。
【０１０５】
図１１は、結合処理に伴う管理情報の更新処理についての第１の説明図である。図１１には、8 Kbytesの２つのノーマルページＧおよびＨが16 KbytesのページサイズのラージページＩに結合されるケースが例示的に示されている。
【０１０６】
図１１に示した一例では、ノーマルページＧおよびＨに対応するメモリ内の記憶領域は、全てゼロクリア処理されており、ノーマルページＧおよびＨの各々の管理情報領域には、“ゼロクリア状態＝8 Kbytesについてゼロクリア済”と記録される。具体的には、ノーマルページＧおよびＨの各管理情報領域の内、“ゼロクリア状態＝ゼロクリア済”という情報は、ノーマルページＧおよびＨに対応する各々のページ構造体１３４２Ａのゼロクリア状態ビットＡ１に記録される。また、“ゼロクリア状態＝8 Kbytes”という情報は、ノーマルページＧおよびＨに対応する各々のページ構造体１３４２Ａのゼロクリア状態サイズＡ７に記録される。
【０１０７】
図１１に示したノーマルページＧおよびＨでは、ノーマルページＧのゼロクリア状態ビットＡ１とノーマルページＨのゼロクリア状態ビットＡ１とが一致する。また、ノーマルページＧのページサイズとノーマルページＧのゼロクリア状態サイズＡ７とが一致する。ノーマルページＨのページサイズとノーマルページＨのゼロクリア状態サイズＡ７とが一致する。そこで、ノーマルページＧおよびＨがラージページＩに結合処理されるケースでは、図１０のステップＳ４００５の処理によって、ノーマルページＧの管理情報領域に記録されたゼロクリア処理済みという情報がラージページＩの管理情報領域に保持される。また、ノーマルページＧおよびＨのゼロクリア処理済の領域サイズの合計値がラージページＩの管理情報領域に保持される。具体的には、ラージページＩの“ゼロクリア状態＝ゼロクリア済”という情報は、ラージページＩの前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１に記録される。また、ラージページＩの“ゼロクリア状態＝16 Kbytes”という情報は、ラージページＩの前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態サイズＡ７に記録される。
【０１０８】
このように、ラージページに関する管理情報は、ラージページ内のノーマルページ１ページ毎の全てのページ構造体に記録される必要はない。また、ラージページに関する管理情報は、ラージページ内のノーマルページ１ページ毎の全てのページ構造体を参照しなくても取得できる。したがって、実施形態に従ったページに関する管理情報の更新処理によれば、ページに関する管理情報の検索処理および更新処理を簡略化および高速化できる。
【０１０９】
図１２は、結合処理に伴う管理情報の更新処理についての第２の説明図である。図１２には、8 Kbytesの２つのノーマルページＪおよびＫが16 KbytesのページサイズのラージページＬに結合されるケースが例示的に示されている。
【０１１０】
図１２に示した一例では、ノーマルページＪに対応するメモリ内の記憶領域は、ゼロクリア処理されており、ノーマルページＫに対応するメモリ内の記憶領域は、ゼロクリア処理されていない。そこで、ノーマルページＪの管理情報領域には、“ゼロクリア状態＝8 Kbytesについてゼロクリア済”と記録され、ノーマルページＫの管理情報領域には、“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”と記録される。具体的には、ノーマルページＪの“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報は、ノーマルページＪに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７に記録される。また、ノーマルページＫの“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”という情報は、ノーマルページＫに対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７に記録される。
【０１１１】
図１２に示した２つのノーマルページＪおよびＫでは、ノーマルページＪのゼロクリア状態ビットＡ１とノーマルページＫのゼロクリア状態ビットＡ１とが一致しない。また、ノーマルページＫのページサイズとノーマルページＫのゼロクリア状態サイズＡ７とが一致しない。そこで、図１０のステップＳ４００６の処理によって、ノーマルページＪの“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報が、結合されたラージページＬの管理情報領域に引き続き保持される。また、ノーマルページＫの“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”という情報が、結合されたラージページＬの管理情報領域に引き続き保持される。具体的には、ノーマルページＪの“ゼロクリア状態＝8 Kbytesについてゼロクリア済”という情報は、ラージページＬの前半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７により引き続き保持される。また、ノーマルページＫの“ゼロクリア状態＝8 Kbytesについてゼロクリア未実施”という情報は、ラージページＬの後半のノーマルページ１ページ分に対応するページ構造体１３４２Ａのゼロクリア状態ビットＡ１およびゼロクリア状態サイズＡ７により引き続き保持される。
【０１１２】
図１３は、結合処理に伴う管理情報の更新処理についての第３の説明図である。図１３には、図１２に示したラージページＬと図１１に示したラージページＩとが更に結合処理されたラージページＭが例示的に示されている。
【０１１３】
図１２に示されるように、ラージページＬの管理情報領域には、前半のノーマルページページ１ページ分に関する管理情報として“ゼロクリア状態＝8 Kbytesについてゼロクリア済”と記録される。また、ラージページＬの管理情報領域には、後半のノーマルページページ１ページ分に関する管理情報として“ゼロクリア状態＝8 Kbytesについてゼロクリア済”と記録される。図１１に示されるように、ラージページＩの管理情報領域には、“ゼロクリア状態＝16 Kbytesについてゼロクリア済”と記録される。このため、ラージページＬのゼロクリア状態とラージページＩのゼロクリア状態とが一致しない。すなわち、ラージページＬのゼロクリア状態ビットＡ１とノーマルページＩのゼロクリア状態ビットＡ１とが一致しない。また、ラージページＬのページサイズとノーマルページＬのゼロクリア状態サイズＡ７とが一致しない。そこで、図１３に示すように、図１０のステップＳ４００６の処理によって、ラージページＭの管理情報領域には、ラージページＬおよびＩのゼロクリア状態に関する情報が引き続き保持される。
【０１１４】
このように、ラージページ同士が結合されたケースにおいても、結合後のラージページに関する管理情報は、結合後のラージページ内のノーマルページ１ページ毎の全てのページ構造体に記録される必要はない。また、結合後のラージページに関する管理情報は、結合後のラージページ内のノーマルページ１ページ毎の全てのページ構造体を参照しなくても取得できる。したがって、実施形態に従ったページに関する管理情報の更新処理によれば、ページに関する管理情報の検索処理および更新処理を簡略化および高速化できる。また、ページサイズの大きさに依存せずに、管理情報の更新を伴うページの結合処理を実行できる。
【０１１５】
以上の説明から理解し得るように、アプリケーション実行用計算機１１を一例とする実施形態に従った情報処理装置は、異なるページサイズを各々有する各ページの管理情報を用いて、各ページに対応するメモリ内の記憶領域の初期化状態を管理する。そして、実施形態に従った情報処理装置は、当該空きページに対応する記憶領域の内、管理情報により示される初期化未実施の領域に対して初期化処理を実行する。したがって、割り当て対象のページに対応する全ての記憶領域が常に初期化処理される場合と比べて、記憶領域の割り当て時に初期化処理が必要な領域サイズを少なくできるので、初期化処理を伴う割り当て処理全体の処理時間を短縮できる。すなわち、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化できる。
【０１１６】
また、実施形態に従った情報処理装置は、メモリ内の記憶領域の割り当て処理とは別に、空きページに対応するメモリ内の記憶領域の初期化処理を実行し得る。したがって、記憶領域の割り当て時に初期化処理が必要な領域サイズを少なくできるので、初期化処理を伴う割り当て処理全体の処理時間を短縮できる。すなわち、メモリ取得要求側から指定されたサイズに応じた初期化済みの記憶領域の割り当て処理を高速化できる。
【０１１７】
なお、メモリの割り当て処理およびメモリの初期化処理を含む上述した実施形態に従った情報処理装置により実行される各種処理は、例示であり、必要に応じて変更可能であることに留意すべきである。例えば、上述では、ページの結合処理は、メモリの解放処理時に実行される一例を説明したが、必要に応じて、メモリの割り当て処理時に実行されるように変更してもよい。
【０１１８】
上述したように、実施形態に従った情報処理装置では、メモリの割り当てを必要とするジョブの遅延を抑制するために、メモリの割り当て処理は、メモリの割り当て処理とは非同期で実行されるメモリの初期化処理に優先して実行される。さらに、実施形態に従った情報処理装置では、ジョブの性能に影響を与えないように、非同期のゼロクリア処理が実行されるように制御し得る。
【０１１９】
ジョブスケジューラ処理部１２Ａおよびジョブ管理部１１０と連携して、プロセススケジューラ処理部１３１がゼロクリア処理部１３３にゼロクリア処理を実行させるタイミングには、次の２つのタイミングがある。すなわち、ジョブスケジューラ処理部１２Ａおよびジョブ管理部１１０といったジョブスケジューリングシステムを介して指示されたアプリケーションプログラムの全てのジョブが当該アプリケーション実行用計算機１１内において完了された第１のタイミングである。また、当該アプリケーション実行用計算機１１内において、スケジューリングシステムを介して指示されたアプリケーションプログラムのジョブと並行して初期化処理が実行される第２のタイミングである。以下では、図４に示したアプリケーション実行用計算機３１を一例として、第１および第２のタイミングにおけるゼロクリア処理の制御方法について説明する。
【０１２０】
まず、第１のタイミングについて説明する。図１４は、第１のタイミングにおけるゼロクリア処理の説明図である。なお、説明を明確にするために、図１４では、図４に示したアプリケーション実行用計算機３１の一部の構成要素の図示が省略されている。
【０１２１】
ジョブスケジューリングシステムを介して指示されたアプリケーションプログラムの全てのジョブが完了された第１のタイミングでは、当該アプリケーション実行用計算機３１内には、ゼロクリア処理の実行よりも優先されるジョブが存在しない。そこで、第１のタイミングでは、メインメモリ３４０に対するゼロクリア処理が短時間で完了するように、アプリケーション実行用計算機３１内のプロセッサ資源がゼロクリア処理の実行に用いられる。例えば、図１４に示すように、４つのＣＰＵコア３１０の内の２つのＣＰＵコア３１０にゼロクリア処理を実行させることで、メインメモリ３４０に対するゼロクリア処理を短時間で完了させる。第１のタイミングでは、ゼロクリア処理を実行するＣＰＵコア３１０は、二次キャッシュ３３０やバス３８０中のメモリバスを独占的に使用できる。
【０１２２】
次に、第２のタイミングについて説明する。図１５は、第２のタイミングにおけるゼロクリア処理の説明図である。図１５には、アプリケーション実行用計算機３１に含まれる４つのＣＰＵコア３１０の内、３つのＣＰＵコア３１０にジョブが割り当てられるときに、ジョブが割り当てられていない１つのＣＰＵコア３１０にゼロクリア処理を実行させる一例が示されている。なお、説明を明確にするために、図１５では、図４に示したアプリケーション実行用計算機３１の一部の構成要素の図示が省略されている。
【０１２３】
指示されたアプリケーションプログラムのジョブの実行と並列してゼロクリア処理が実行される第２のタイミングでは、二次キャッシュ３３０やバス３８０内のメモリバスは、ジョブを実行するＣＰＵコア３１０とゼロクリア処理を実行するＣＰＵコア３１０とに共有される。二次キャッシュ３３０やメモリバスの帯域には、限りがあるため、二次キャッシュ３３０やメモリバスの帯域がゼロクリア処理の実行に割り当てられると、ジョブのメモリアクセス性能が劣化し、ジョブの実行遅延が生じ得る。そこで、第２のタイミングでは、以下で説明する２つの方法の内の少なくとも１つの方法を用いてゼロクリア処理が実行されるように制御される。
【０１２４】
まず第１の制御方法では、ゼロクリア処理時におけるストア命令において、ゼロクリア処理を実行するＣＰＵコア３１０は、キャッシュの利用を抑止する命令を使用する。具体的には、ゼロクリア処理を実行するＣＰＵコア３１０は、二次キャッシュ３３０をバイパスしてメモリバスに直接アクセス可能なＣＰＵ命令を使用してメインメモリ３４０にアクセスする。第１の制御方法では、ジョブを実行するＣＰＵコア３１０とゼロクリア処理を実行するＣＰＵコア３１０との間で二次キャッシュ３３０が共有されないため、ジョブの性能への影響を小さくできる。
【０１２５】
第２の制御方法では、Remote Direct Memory Access（ＲＤＭＡ）機能をインターコネクト３７０に実装させる。また、計算機システム３に含まれる複数の計算ノード（アプリケーション実行用計算機）３１の中の任意の計算ノード３１のメインメモリ３４０内にゼロクリア処理済みの記憶領域を予め設定する。そして、ゼロクリア処理を実行する当該計算ノード３１は、インターコネクト３７０を介して、任意の計算ノード３１内のゼロクリア処理済みの記憶領域を当該計算ノード３１内のメインメモリ３４０上にＲＤＭＡ転送させることにより、メインメモリ３４０内の所定領域のゼロクリア処理を実行する。図１５に示すようにインターコネクト３７０がメモリバスに接続されている場合には、インターコネクト３７０は、二次キャッシュ３３０を介さずにメインメモリ３４０に直接アクセスできる。したがって、第２の制御方法では、ジョブを実行するＣＰＵコア３１０とゼロクリア処理を実行するＣＰＵコア３１０との間で二次キャッシュ３３０の競合を起こさずにゼロクリア処理を実施できるので、ジョブの性能への影響を小さくできる。
【０１２６】
以上の説明のように、ページ割り当て処理部１３２およびゼロクリア処理部１３３を含む実施形態に従った上述の各種処理を実行する構成要素は、ＣＰＵコア３１０、一次キャッシュ３２０、および二次キャッシュ３３０を含むハードウェア構成要素によって実現できる。さらに、実施形態に従った上述の各種処理を実行する構成要素は、実施形態に従ったメモリの割り当て処理やメモリの初期化処理を含む上述の各種処理手順を規律した制御プログラムを実行するコンピュータによって実現することもできる。例えば、上述の各種処理手順を規律した制御プログラムは、磁気ディスク、光ディスク、および光磁気ディスク等の記録媒体に記録される。記録媒体に記録された制御プログラムは、記録媒体用ドライブ３６０を介してストレージ３５０に格納される。そして、ＣＰＵコア３１０、一次キャッシュ３２０、および二次キャッシュ３３０を含むプロセッサは、ストレージ３５０に格納された制御プログラムをメインメモリ３４０に読み込んで、制御プログラムを実行する。
【０１２７】
以上の実施形態に関し、更に以下の付記を開示する。
（付記１）
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理し、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納する空きページ格納部と、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行するページ割り当て処理部と
を含む、情報処理装置。
（付記２）
前記空きページ格納部は、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体を含み、
第１および第２のノーマルページが初期化処理済みの空きページである場合には、前記ページ割り当て処理部は、前記第１および前記第２のノーマルページが結合されたラージページに関する管理情報を前記第１のノーマルページに対応する前記ページ構造体に記録し、
前記第１および第２のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ページ割り当て処理部は、前記ラージページに関する管理情報を前記第１および第２のノーマルページに対応する各々の前記ページ構造体に記録する、
付記１に記載の情報処理装置。
（付記３）
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合、前記ページ割り当て処理部は、前記ラージページが分割された第３および第４のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを２等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合、前記ページ割り当て処理部は、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第３のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第４のノーマルページに対応する前記ページ構造体の情報として保存する、
付記２に記載の情報処理装置。
（付記４）
前記ページ割り当て処理部により実行される前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行するゼロクリア処理部を更に含む、付記１〜３の何れか一項に記載の情報処理装置。
（付記５）
前記ゼロクリア処理部は、前記空きページ格納部から選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページであるか否かを判定し、選択された前記空きページが前記ページ割り当て処理部が割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、付記４に記載の情報処理装置。
（付記６）
前記空きページに関する管理情報は、前記空きページに対する前記ゼロクリア処理部による前記非同期の初期化処理の実行を制御する制御フラグを含み、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記ページ割り当て処理部は、前記制御フラグに前記ゼロクリア処理部による前記非同期の初期化処理を停止させる停止フラグを立てる、
付記４または５に記載の情報処理装置。
（付記７）
前記ゼロクリア処理部は、前記空きページ内のノーマルページ１ページ分に対して初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、付記６に記載の情報処理装置。
（付記８）
前記ゼロクリア処理部が前記非同期の初期化処理を実行するタイミングを制御するプロセススケジューラ処理部を更に含み、
前記プロセススケジューラ処理部は、前記ページ割り当て処理部により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第１のタイミングで前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、
付記４〜７の何れか一項に記載の情報処理装置。
（付記９）
前記ページ割り当て処理部により割り当てられた記憶領域を用いたジョブが実行中である第２のタイミングにおいて、前記プロセススケジューラ処理部は、前記ジョブを実行するプロセス実行部と共有されるキャッシュまたは前記ゼロクリア処理部と前記メモリとの間のメモリバスを使用せずに前記ゼロクリア処理部に前記非同期の初期化処理を実行させる、付記８に記載の情報処理装置。
（付記１０）
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
情報処理装置の制御方法。
（付記１１）
前記空きページ格納部には、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体が含まれ、
第１および第２のノーマルページが初期化処理済みの空きページである場合には、前記第１および前記第２のノーマルページが結合されたラージページに関する管理情報を前記第１のノーマルページに対応する前記ページ構造体に記録し、
前記第１および第２のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ラージページに関する管理情報を前記第１および第２のノーマルページに対応する各々の前記ページ構造体に記録する、
付記１０に記載の情報処理装置の制御方法。
（付記１２）
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合に、前記ラージページが分割された第３および第４のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを２等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合に、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第３のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第４のノーマルページに対応する前記ページ構造体の情報として保存する、
付記１１に記載の情報処理装置の制御方法。
（付記１３）
前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行する、
付記１０〜１２の何れか一項に記載の情報処理装置の制御方法。
（付記１４）
前記空きページ格納部から選択された前記空きページが前記割り当て処理の対象とするページであるか否かを判定し、
前記空きページが割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、
付記１３に記載の情報処理装置の制御方法。
（付記１５）
前記空きページに関する管理情報には、前記空きページに対する前記非同期の初期化処理の実行を制御する制御フラグが含まれ、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記制御フラグに前記非同期の初期化処理を停止させる停止フラグを立てる、
付記１３または１４に記載の情報処理装置の制御方法。
（付記１６）
前記空きページ内のノーマルページ１ページ分に対して前記非同期の初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、付記１５に記載の情報処理装置の制御方法。
（付記１７）
前記非同期の初期化処理を実行するタイミングを制御し、
前記割り当て処理により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第１のタイミングで前記非同期の初期化処理を実行させる、
付記１３〜１６の何れか一項に記載の情報処理装置の制御方法。
（付記１８）
前記割り当て処理により割り当てられた記憶領域を用いたジョブが実行中である第２のタイミングにおいて、前記ジョブの実行と共有されるキャッシュまたは前記メモリへのメモリバスを使用せずに前記非同期の初期化処理を実行する、
付記１７に記載の情報処理装置の制御方法。
（付記１９）
メモリ内の記憶領域を複数の異なるページサイズのページに分割して管理する空きページ格納部に、前記メモリ内の未使用の記憶領域に対応する空きページの初期化状態に関する管理情報を格納し、
前記未使用の記憶領域の割り当てが要求された場合に、要求された領域サイズに従ったページサイズまたは要求されたページサイズの空きページを前記空きページ格納部から選択し、
選択された前記空きページに関する管理情報を用いて前記空きページに対応する記憶領域内で初期化処理が未実施の記憶領域に対する初期化処理を実行する、
処理をコンピュータに実行させる制御プログラム。
（付記２０）
前記空きページ格納部には、前記複数の異なるページサイズの内で最小のページサイズを有するノーマルページ単位で設定されたページ構造体が含まれ、
第１および第２のノーマルページが初期化処理済みの空きページである場合には、前記第１および前記第２のノーマルページが結合されたラージページに関する管理情報を前記第１のノーマルページに対応する前記ページ構造体に記録し、
前記第１および第２のノーマルページの何れかが初期化処理が未実施の空きページである場合には、前記ラージページに関する管理情報を前記第１および第２のノーマルページに対応する各々の前記ページ構造体に記録する、
付記１９に記載の制御プログラム。
（付記２１）
ラージページのページサイズと前記ラージページの管理情報により示される初期化処理済みの領域サイズとが一致する場合に、前記ラージページが分割された第３および第４のノーマルページに対応する各々の前記ページ構造体に前記初期化済みの領域サイズを２等分したサイズを記録し、
前記ラージページのページサイズと前記初期化処理済みの領域サイズとが一致しない場合に、前記ラージページ内の前半ページに対応する前記ページ構造体の情報を前記第３のノーマルページに対応する前記ページ構造体の情報として保存し、前記ラージページ内の後半ページに対応する前記ページ構造体の情報を前記第４のノーマルページに対応する前記ページ構造体の情報として保存する、
付記２０に記載の制御プログラム。
（付記２２）
前記初期化処理を含む記憶領域の割り当て処理とは異なるタイミングで、前記空きページ格納部に格納された前記空きページに対応する記憶領域に対する非同期の初期化処理を前記空きページに関する前記管理情報を用いて実行する、
付記１９〜２１の何れか一項に記載の制御プログラム。
（付記２３）
前記空きページ格納部から選択された前記空きページが前記割り当て処理の対象とするページであるか否かを判定し、
前記空きページが割り当て処理の対象とするページである場合には、前記空きページに対する前記非同期の初期化処理を停止する、
付記２２に記載の制御プログラム。
（付記２４）
前記空きページに関する管理情報には、前記空きページに対する前記非同期の初期化処理の実行を制御する制御フラグが含まれ、
前記空きページが前記割り当て処理の対象のページと決定された場合に、前記制御フラグに前記非同期の初期化処理を停止させる停止フラグを立てる、
付記２２または２３に記載の制御プログラム。
（付記２５）
前記空きページ内のノーマルページ１ページ分に対して前記非同期の初期化処理を実行した後に、前記制御フラグに前記停止フラグが立っていないか否かを確認する、付記２４に記載の制御プログラム。
（付記２６）
前記非同期の初期化処理を実行するタイミングを制御し、
前記割り当て処理により割り当てられた初期化処理済の記憶領域を用いて実行されるジョブが完了している第１のタイミングで前記非同期の初期化処理を実行させる、
付記２２〜２５の何れか一項に記載の制御プログラム。
（付記２７）
前記割り当て処理により割り当てられた記憶領域を用いたジョブが実行中である第２のタイミングにおいて、前記ジョブの実行と共有されるキャッシュまたは前記メモリへのメモリバスを使用せずに前記非同期の初期化処理を実行する、
付記２６に記載の制御プログラム。
【符号の説明】
【０１２８】
１、３      計算機システム
２、４      利用者端末装置
２Ａ      アプリケーションプログラム処理部
１１、３１      アプリケーション実行用計算機（計算ノード）
１１０      ジョブ管理部
１２０      プロセス実行部
１３０      ＯＳ処理部
１３１      プロセススケジューラ処理部
１３２      ページ割り当て処理部
１３３      ゼロクリア処理部
１３４      空きページ格納部
１３４１      物理メモリ
１３４２      ページ構造体群
１３４２Ａ      ページ構造体
Ａ１      ゼロクリア状態ビット
Ａ２      ゼロクリア状態ロックビット
Ａ３      ゼロクリア処理制御ビット
Ａ４      空きページビット
Ａ５      次の空きページのページ構造体へのポインタ
Ａ６      前の空きページのページ構造体へのポインタ
Ａ７      ゼロクリア状態サイズ
１３４３      空きページ管理リスト
１２、３２      ジョブ管理用計算機
１２Ａ      ジョブスケジューラ処理部
３１０      ＣＰＵコア
３２０      一次（Ｌ１）キャッシュ
３３０      二次（Ｌ２）キャッシュ
３４０      メインメモリ
３５０      ストレージ
３６０      記録媒体用ドライブ
３７０      インターコネクト
３８０      バス
３３      ノード間接続ネットワーク
【図１】
2015143943.tif 000003
【図２】
2015143943.tif 000004
【図３】
2015143943.tif 000005
【図４】
2015143943.tif 000006
【図５】
2015143943.tif 000007
【図６】
2015143943.tif 000008
【図７】
2015143943.tif 000009
【図８】
2015143943.tif 000010
【図９】
2015143943.tif 000011
【図１０】
2015143943.tif 000012
【図１１】
2015143943.tif 000013
【図１２】
2015143943.tif 000014
【図１３】
2015143943.tif 000015
【図１４】
2015143943.tif 000016
【図１５】
2015143943.tif 000017