(57)【特許請求の範囲】
【請求項１】
予め定められた範囲のメモリ領域を検査する起動用検査手段と、電源停止を行う前にカーネルの実行メモリイメージを他の記憶装置に格納するカーネルイメージ書込部と、を有し、
前記起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムは、
前記起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を有し、
前記オペレーティングシステムが、前記実行メモリイメージが前記起動用検査手段による検査の対象となるメモリ領域に収まるようにメモリの整理を行った後、
前記カーネルイメージ書込部が、整理後の前記実行メモリイメージを前記他の記憶装置に格納する
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記アプリケーション起動手段は、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量がアプリケーションの起動に必要なメモリ量を超えていると判断される場合に、当該アプリケーションを起動する
情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記アプリケーション起動手段は、アプリケーション毎の起動に必要な条件を示す条件情報を有しており、前記条件情報と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量とに基づいてアプリケーションを起動させる
情報処理装置。
【請求項４】
請求項３に記載の情報処理装置であって、
前記条件情報は、アプリケーションの起動順序を示す情報を含んでおり、
前記アプリケーション起動手段は、前記条件情報が示す起動順序に応じてアプリケーションを起動させる
情報処理装置。
【請求項５】
請求項１乃至４のいずれかに記載の情報処理装置であって、
前記アプリケーション起動手段は、前記メモリ検査手段による検査の結果アプリケーションを起動させるためのメモリ領域が不足すると判断される場合に、当該アプリケーションが実行できない旨を他の情報処理装置に対して通知する
情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理装置であって、
前記メモリ検査手段を複数有し、複数の前記メモリ検査手段により並列で前記メモリ領域を検査する
情報処理装置。
【請求項７】
予め定められた範囲のメモリ領域を検査し、
検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムは、
前記メモリ領域のうち検査したメモリ領域以外のメモリ領域を検査し、検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させ、
電源停止を行う前に、前記オペレーティングシステムが、前記オペレーティングシステムを起動させる前に検査の対象となる、予め定められた範囲のメモリ領域にカーネルの実行メモリイメージが収まるようにメモリの整理を行った後、
整理後の前記実行メモリイメージを前記他の記憶装置に格納する
情報処理方法。
【請求項８】
情報処理装置に、
予め定められた範囲のメモリ領域を検査する起動用検査手段と、電源停止を行う前にカーネルの実行メモリイメージを他の記憶装置に格納するカーネルイメージ書込部と、を実現させ、
前記起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムに、
前記起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を実現させ、
前記オペレーティングシステムが、前記実行メモリイメージが前記起動用検査手段による検査の対象となるメモリ領域に収まるようにメモリの整理を行った後、
前記カーネルイメージ書込部が、整理後の前記実行メモリイメージを前記他の記憶装置に格納する
プログラム。
【請求項９】
請求項８に記載のプログラムであって、
前記メモリ検査手段は、前記メモリ領域のうち前記起動用検査手段が検査した領域以外の領域を検査するとともに、前記メモリ領域のうちの所定範囲ごとの検査の有無を示す検査進捗状況情報を取得し、
前記アプリケーション起動手段は、前記進捗状況情報に基づいて、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量がアプリケーションの起動に必要なメモリ量を超えていると判断される場合に、当該アプリケーションを起動する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、プログラムに関し、特に大規模なメモリを有する情報処理装置、情報処理方法、プログラムに関する。
【背景技術】
【０００２】
サーバ装置などの情報処理装置においては、電源を投入後、ファームウェアがＰＯＳＴ（Ｐｏｗｅｒ  Ｏｎ  Ｓｅｌｆ  Ｔｅｓｔ）と呼ばれる処理において、メモリ検査を実施する。そして、ファームウェアによる検査の後、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）の起動処理が行われる。
【０００３】
ここで、メモリの部分的な切り離しなどの機能が有効になる前のＯＳ起動処理中に故障メモリにアクセスしてしまうと、制御が不能となり異常終了するしかなくなってしまう。そのため、起動処理においては、ＯＳ起動前にメモリを検査して信頼性を確保することが要求されている。
【０００４】
上記のような流れで起動処理が行われるため、ファームウェアが全てのメモリ範囲を機械的に検査する間、ＯＳを起動することは出来ないことになる。その結果、メモリの大容量化に伴い、待ち時間が増大してしまう、という問題が生じていた。そこで、このような待ち時間が増大してしまう、という問題に対処するための様々な技術が考えられている。
【０００５】
上記のような技術として、例えば、特許文献１がある。特許文献１によると、メモリ領域を２つに分割し、第１のメモリ領域をファームウェアで検査する。そして、検査済みのメモリ領域のみを使用してＯＳを起動する。さらに、特許文献１によると、ＯＳの起動処理と並行して第２のメモリ領域をファームウェアで検査し、検査の完了をＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔｓ）でＯＳに通知する。そして、ＳＭＩを受けて検査が完了したメモリをホットプラグし、ＯＳから利用可能な状態とする。特許文献１によると、このような処理により、メモリ検査とＯＳ初期化とを並列で実施でき、起動を高速化させることが出来る。
【０００６】
また、同様の技術として、例えば、特許文献２がある。特許文献２によると、オペレーティングシステムがメモリに読み込まれる前のシステム起動時に、オペレーティングシステムを起動するのに必要とする最小限のメモリ領域をチェックする。また、特許文献２によると、オペレーティングシステムの実行後、メモリへのアクセスを検出し、アクセスのあったメモリページの使用前にページ単位でメモリチェック済みであるか否かを判定する。そして、メモリチェックが行われていなければ、メモリチェックを行い、メモリチェック済みになったメモリページを使用する。特許文献２によると、このような構成により、大規模メモリシステムのシステム起動時の起動時間を短縮することが出来る。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第５３６３１８７号公報
【特許文献２】特開２０００−２９３３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載されている技術の場合、メモリの容量によっては、ＯＳ初期化がメモリ検査よりも早い段階で完了してしまうことがある。このような場合、ＯＳは、ＳＭＩが投入されるまで第２のメモリ領域を必要とするアプリケーションを起動することが出来ないことになる。その結果、アプリケーションの起動高速化には繋がらないおそれがあった。また、特許文献２に記載されている技術の場合、メモリへのアクセスごとに当該メモリに対して既にアクセス済みであるか否かを判断することが必要となり、メモリへのアクセス処理が煩雑になる。その結果、アプリケーションの処理が遅くなるおそれがある、などの問題が生じていた。
【０００９】
このように、待ち時間の問題を解消するための様々な技術が考えられているものの、依然として、サーバ装置などの情報処理装置を高速に起動して、アプリケーションを遅延なく高速に実行することは難しかった。
【００１０】
そこで、本発明の目的は、サーバ装置などの情報処理装置においては、高速にアプリケーションを実行することが難しい、という問題を解決する情報処理装置を提供することにある。
【課題を解決するための手段】
【００１１】
かかる目的を達成するため本発明の一形態である情報処理装置は、
予め定められた範囲のメモリ領域を検査する起動用検査手段を有し、
前記起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムは、
前記起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を有する
という構成を採る。
【００１２】
また、本発明の他の形態である情報処理方法は、
予め定められた範囲のメモリ領域を検査し、
検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムは、
前記メモリ領域のうち検査したメモリ領域以外のメモリ領域を検査し、検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させる
という構成を採る。
【００１３】
また、本発明の他の形態であるプログラムは、
情報処理装置に、
予め定められた範囲のメモリ領域を検査する起動用検査手段を実現させ、
前記起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムに、
前記メモリ領域のうち前記起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を実現させるためのプログラムである。
【発明の効果】
【００１４】
本発明は、以上のように構成されることにより、サーバ装置などの情報処理装置においては、高速にアプリケーションを実行することが難しい、という問題を解決する情報処理装置を提供することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態におけるサーバ装置の構成の一例を示すブロック図である。
【図２】図１で示すＡＣＰＩ情報の一例を示す図である。
【図３】図１で示すメモリページ管理テーブルの一例を示す図である。
【図４】図１で示すＡＰ起動条件テーブルの一例を示す図である。
【図５】本発明の第１の実施形態に係るサーバ装置とメモリ検査完了後カーネルを起動する場合との違いを説明するための図である。
【図６】本発明の第１の実施形態に係るサーバ装置とメモリ検査完了後カーネルを起動する場合との違いを説明するための図である。
【図７】本発明の第１の実施形態に係るサーバ装置の電源投入から起動が完了するまでの流れの一例を示すフローチャートである。
【図８】図７で示すサーバ装置が行うメモリ検査の一例を示すフローチャートである。
【図９】図７で示すＡＰ起動処理の一例を示すフローチャートである。
【図１０】本発明の第１の実施形態に係るサーバ装置の停止処理の一例を示すフローチャートである。
【図１１】本発明の第１の実施形態に係るサーバ装置の２回目以降の起動処理の一例を示すフローチャートである。
【図１２】本発明の第２の実施形態に係るサーバ装置の構成の一例を示すブロック図である。
【図１３】図１２で示すＡＰ復旧手順テーブルの一例を示す図である。
【図１４】本発明の第２の実施形態に係るサーバ装置の起動処理の一例を示すフローチャートである。
【図１５】図１４で示すＡＰ復旧処理の一例を示すフローチャートである。
【図１６】本発明の第３の実施形態に係るサーバ装置の構成の一例を示す概略ブロック図である。
【発明を実施するための形態】
【００１６】
［第１の実施形態］
本発明の第１の実施形態を図１乃至図１１を参照して説明する。図１は、サーバ装置１の構成の一例を示すブロック図である。図２は、ＡＣＰＩ情報３２の一例を示す図である。図３は、メモリページ管理テーブル５４の一例を示す図である。図４は、ＡＰ起動条件テーブル５６の一例を示す図である。図５、図６は、サーバ装置１とメモリ検査完了後カーネルを起動する場合との違いを説明するための図である。図７は、サーバ装置１の電源投入から起動が完了するまでの流れの一例を示すフローチャートである。図８は、サーバ装置１が行うメモリ検査の一例を示すフローチャートである。図９は、サーバ装置１が行うＡＰ起動処理の一例を示すフローチャートである。図１０は、サーバ装置１の停止処理の一例を示すフローチャートである。図１１は、サーバ装置１の２回目以降の起動処理の一例を示すフローチャートである。
【００１７】
本発明の第１の実施形態では、メモリに対する検査を行った後ＯＳを起動させるサーバ装置１の構成の一例について説明する。後述するように、本実施形態におけるサーバ装置１のＦＷ３（Ｆｉｒｍｗａｒｅ）は、予め定められた範囲のメモリ領域であるＦＷ検査対象メモリ２１を検査する。そして、サーバ装置１は、ＦＷ検査対象メモリ２１を利用してＯＳ５を起動する。また、サーバ装置１のＯＳ５は、残りのメモリ領域であるＦＷ検査対象外メモリ２２を検査する。そして、ＯＳ５は、ＦＷ検査対象外メモリ２２に対する検査の進み具合に応じて、アプリケーション（ＡＰ：Ａｐｐｌｉｃａｔｉｏｎ）を起動させる。
【００１８】
図１を参照すると、本実施形態におけるサーバ装置１は、ＨＷ２（Ｈａｒｄｗａｒｅ）とＦＷ３とブートローダ４１とカーネルイメージライタ４２とカーネルイメージローダ４３とＯＳ５とを含んでいる。
【００１９】
図１で示すように、ＨＷ２は、ＦＷ検査対象メモリ２１（予め定められた範囲のメモリ領域）とＦＷ検査対象外メモリ２２と不揮発メモリ２３（他の記憶装置）とを含んでいる。ＨＷ２は、サーバ装置１に対する電源投入からＯＳ５が起動するまでの間、ＦＷ３により制御される。また、ＨＷ２は、ＯＳ５の起動の後、ＯＳ５により制御される。
【００２０】
ＨＷ２が有するメモリのうち、ＦＷ検査対象メモリ２１とＦＷ検査対象外メモリ２２との境界は、ＦＷ３が検査するか否かに応じて予め定められている。例えば、ＦＷ検査対象メモリ２１の範囲は、ＯＳ５の起動に必要となるメモリ量を確保することが出来るよう予め定められている。
【００２１】
具体的には、例えば、ＦＷ検査対象メモリ２１は最も低位のアドレス範囲に割り当てられているメモリモジュール１セット分であり、ＨＷ２が有する揮発性のメモリのうちＦＷ検査対象メモリ２１を除いた範囲がＦＷ検査対象外メモリ２２である。一般的に、低位のアドレスにカーネルプログラム等の重要なデータを配置する実装が多い。そのため、上記のようにＦＷ検査対象メモリ２１を定めることで、重要なデータを配置する範囲をＦＷ３による検査の対象とすることが出来る。
【００２２】
また、例えば、プロセッサからメモリへのアクセス距離が不均一なＮＵＭＡ（Ｎｏｎ  Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）構成の装置の場合には、それぞれのＮＵＭＡノードに属するメモリの低位アドレスに相当する範囲をＦＷ検査対象メモリ２１とすることも考えられる。これは、各ＮＵＭＡノードの管理情報はそれぞれのＮＵＭＡノードに属するメモリ領域に格納することが性能や効率の観点から好ましく、ファームウェアからメモリ構成を読み取った直後に各ＮＵＭＡノードのメモリを利用できることが初期化処理の単純化に繋がるためである。
【００２３】
このように、ＦＷ３が検査を行うＦＷ検査対象メモリ２１の範囲は予め定められている。なお、ＦＷ検査対象メモリ２１の範囲は、ＦＷ検査対象メモリ２１とＦＷ検査対象外メモリ２２との総和に対して、十分小さく設定されていることが望ましい。また、ＦＷ検査対象メモリ２１の位置やサイズは、例えば、ＨＷ２の特性やＨＷ２がサポートするＯＳ５の種別（例えば、ＯＳ５が使用するメモリ量）などに応じて変更して構わない。つまり、ＦＷ検査対象メモリ２１の位置やサイズは、ＨＷ２がサポートするＯＳ５の仕様・実装などに基づいて、ファームウェア設計者が適宜定めることが出来る。
【００２４】
不揮発メモリ２３は、ＯＳ５の実行メモリイメージ（カーネルの実行イメージ）を保存するために用いられる。不揮発メモリ２３が記憶するカーネルの実行イメージを用いることで、後述するように、２回目以降の起動時間を短縮することが出来る。
【００２５】
なお、図１ではＨＷ２が不揮発メモリ２３を有するとしたが、不揮発メモリ２３は必ずしもＨＷ２の内部にある必要はない。不揮発メモリ２３は、外部接続された、もしくは、取り外し可能な記憶装置であっても構わない。
【００２６】
ＦＷ３は、ＯＳ５起動前にＨＷ２の検査を行うＰＯＳＴ処理手段３１（起動用検査手段）と、ＨＷ２の構成をＯＳ５に通知するための情報源となるＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）情報３２と、を含む。ＦＷ３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリなどの記憶装置に格納された状態でＨＷ２に組み込まれており、ＨＷ２を制御する。
【００２７】
ＰＯＳＴ処理手段３１は、予め定められた範囲のメモリ領域であるＦＷ検査対象メモリ１１をはじめとするＨＷ２上の機器に故障がないか否かを検査する。そして、ＰＯＳＴ処理手段３１は、検査結果に基づいて、ＡＣＰＩ情報３２を更新する。
【００２８】
ＰＯＳＴ処理手段３１がＦＷ検査対象メモリ１１に対する検査で故障を見つけた場合の処理は、不揮発メモリ１３を使用してサーバ装置１を起動するか否かに応じて変更することが出来る。例えば、不揮発メモリ１３を使用しない場合（例えば、初回起動の場合）、ＰＯＳＴ処理手段３１は、故障を検出した部分を無効化して新たな検査は行わないよう構成しても構わないし、追加で別のメモリ領域に対する検査を実施するよう構成しても構わない。不揮発メモリ１３不使用時に故障を検出した場合のＰＯＳＴ処理手段３１の処理は、ＨＷ２がサポートするＯＳ５の起動条件（最小限メモリ量など）に応じて変更することが出来る。
【００２９】
一方で、不揮発メモリ１３に格納されたカーネルの実行イメージを使用する場合（例えば、２回目以降の移動の場合）、単純にアドレス範囲を変更することは出来ない。不揮発メモリ１３に保存されているカーネルの実行イメージが参照しているアドレスに相当するメモリが消失していると、ＦＷ検査対象メモリ２１に書き戻した後に正常に動作することが出来ないためである。そのため、不揮発メモリ１３に格納されたカーネルの実行イメージを使用する場合には、ＰＯＳＴ処理手段３１は新たな検査は行わないことになる。また、対応する範囲のメモリが消失している場合には、例えば、２回目以降であってもカーネルの実行イメージを使用しないことになる。なお、ハードウェアの機能によりアドレス範囲の変更を隠蔽出来る場合には、ＰＯＳＴ処理手段３１が新たな範囲を検査するよう構成しても構わない。
【００３０】
なお、２回目以降の起動時にカーネルの実行イメージを廃棄して通常起動する事態を回避するためには、メモリの２重化を行っておくことが有効である。メモリの２重化を行っていた場合、故障によりメモリが縮退しても二重化のペアとしていたメモリモジュールの片方が有効であれば、前回とアドレス範囲が変わらないことになる。そのため、ＯＳ５を正常に起動することが出来る。なお、Ｍｅｍｏｒｙ  Ａｄｄｒｅｓｓ  Ｒａｎｇｅ  Ｍｉｒｒｏｒｉｎｇという一部のメモリ範囲のみを２重化する技術を用いることで、ＦＷ検査対象メモリ２１のメモリ範囲のみを２重化することが出来る。
【００３１】
ＡＣＰＩ情報３２は、従来のハードウェア構成に加えて、ＦＷ検査対象メモリ２１とＦＷ検査対象外メモリ２２との範囲を示す情報（どの範囲をＰＯＳＴ処理手段３１が検査するかを示す情報）を有している。ＡＣＰＩ情報３２は、例えば、ＰＯＳＴ処理手段３１により更新される。また、ＡＣＰＩ情報３２は、ＯＳ５からの要求に従って、自身が有する情報を提供する。
【００３２】
図２は、ＡＣＰＩ情報３２が有する情報の一例である。図２を参照すると、ＡＣＰＩ情報３２は、メモリ領域と、メモリ領域が示すアドレス範囲がどのＮＵＭＡノードに属するか否かを示すＮＵＭＡノードと、メモリ領域をＦＷ３のＰＯＳＴ処理手段が検査するか否かを示す検査主体と、メモリ領域が示すアドレス範囲が検査済みであるか否かを示す検査状態属性と、を含んでいる。例えば、図２の１行目は、メモリ領域「０ｘ００００００００−０ｘ００００ｆｆｆｆ」とＮＵＭＡノード「ノード０」と検査主体「ＦＷ」と検査状態属性「検査済み（正常）」とが対応付けられていることを示している。つまり、図２の１行目は、メモリ領域「０ｘ００００００００−０ｘ００００ｆｆｆｆ」がノード０に属し、ＦＷ３が検査を実行する領域であり（ＦＷ検査対象メモリ２１であり）、当該アドレス範囲は検査済みで故障は検出されなかった（正常である）ことを示している。
【００３３】
なお、ＡＣＰＩ情報３２のうちＮＵＭＡノードの項目（つまり、どの物理メモリアドレスがどのＮＵＭＡノードに属しているか）は、ハードウェアの構成がＮＵＭＡ形式である場合には従来からファームウェアが管理している項目である。また、検査主体及び検査状態属性は、本発明におけるＡＣＰＩ情報３２に新たに追加されている項目である。例えば、検査主体がＦＷであるメモリ領域に対してはＰＯＳＴ処理手段３１による検査が行われ、検査主体がＦＷでないメモリ領域に対しては、後述するＯＳ５のメモリ検査手段５１で検査が行われることになる。また、ＡＣＰＩ情報３２の検査状態属性は、例えば、検査済みでかつ故障が無かった旨を示す「検査済み（正常）」と、検査済みで故障が検出された旨を示す「検査済み（故障）」と、未検査の状態を示す「未検査」と、のいずれかの属性を示している。
【００３４】
ＡＣＰＩ情報３２は、例えば、このような情報を含んでいる。このように、本実施形態におけるＡＣＰＩ情報３２は、検査済みの範囲の情報だけでなく、検査前の範囲についての情報も含んでいる。つまり、ＡＣＰＩ情報３２には、全部でどれだけのメモリ量が存在するのかを示す情報も含まれている。そのため、ＡＣＰＩ情報３２を受け取ったＯＳ５は、後述するＯＳ５側でメモリ検査を実施する際に、メモリ全体のうち検査が終了したメモリの割合を示す検査の進捗率を計算することが出来る（進捗状況を示す情報を取得することが出来る）。その結果、ＯＳ５は、アプリケーションの起動に必要なメモリ量を検査する度にアプリケーションを起動させることが出来る。また、ＯＳ５は、アプリケーションの起動に必要なメモリを見つける可能性が残されているか否かを判定することが出来る。これにより、ＯＳ５は、アプリケーションの起動、又は維持に必要なメモリが不足すると判断される場合（例えば、予備メモリが不足すると判断される場合）に、サービスを継続することは出来ないと判断し、クラスタウェアに通知することができる。
【００３５】
なお、ＡＣＰＩ情報３２のうちのメモリ領域の範囲は、メモリモジュール単位で設定しても構わないし、任意のアドレス範囲で設定しても構わない。
【００３６】
また、サーバ装置１は、ＯＳ５の起動・停止を補助するためのツールとして、ブートローダ４１と、カーネルイメージライタ４２（カーネルイメージ書込部）と、カーネルイメージローダ４３と、を有している。
【００３７】
ブートローダ４１（ＯＳ実行手段）は、ＯＳ５の起動を補助するためにＦＷ３により使用される。一般的に、オペレーションシステムの起動は複雑な処理を含み、ＯＳの種類によっても処理が異なる。そのため、それらの詳細を隠蔽しＦＷ３からの操作を簡略化する仕組みとしてブートローダ４１を用いている。なお、ＦＷ３がＯＳ５と密に連携し、直接ＯＳ５を起動出来る場合には、ブートローダ４１は省略しても構わない。
【００３８】
カーネルイメージライタ４２とカーネルイメージローダ４３は、不揮発メモリ２３に対して、ＯＳ５の中核モジュールであるカーネルの実行イメージを保存・復旧するために用いられる。本発明では、データ量を削減する目的で、アプリケーションは終了し、カーネルの実行イメージのみを保存することを想定している。そのため、カーネルイメージライタ４２は、例えば、メモリマイグレーションにより必要な情報をＦＷ検査対象メモリ２１に移行させた後のカーネル実行イメージを不揮発メモリ２３に格納する。なお、不揮発メモリ２３の容量やアクセス速度が十分に高い場合などには、一部のアプリケーションの実行イメージも併せて保存・復旧するよう構成しても構わない。
【００３９】
ＯＳ５は、一般的なオペレーションシステムとしての機能を有するとともに、メモリに関する機能とアプリケーション（ＡＰ）の起動に関する機能とを有している。
【００４０】
図１で示すように、ＯＳ５には、メモリ検査手段５１とメモリ構成情報表５２とメモリ構成情報表（比較用）５３とメモリページ管理テーブル５４とＡＰ起動手段５５（アプリケーション起動手段）とＡＰ起動条件テーブル５６とを有している。本実施形態におけるＯＳ５及びＯＳ５に含まれる各手段は、サーバ装置１の図示しない記憶装置が記憶するプログラムを図示しない演算装置が実行することで実現される。
【００４１】
メモリ検査手段５１（メモリ検査スレッド関数）は、メモリページ管理テーブル５４を参照して、ＦＷ検査対象外メモリ２２をＯＳ５から検査する。そして、メモリ検査手段５１は、検査の結果をメモリページ管理テーブル５４に書き込む。メモリ検査手段５１は、サーバ装置１が有するプロセッサコアの数によって並列で複数動作することが出来る。
【００４２】
メモリ構成情報表５２は、カーネルがＡＣＰＩ情報３２から読み取った情報を保存し、利用するためのものである。メモリ構成情報表（比較用）５３は、不揮発メモリ２３からカーネルの実行イメージを復旧する２回目以降の起動時においてＡＣＰＩ情報３２を再読み込みした際、以前と構成が変わっていないか否かを確認するために使用される。
【００４３】
メモリページ管理テーブル５４（検査進捗状況情報を含む）は、物理メモリをカーネル内の管理単位であるメモリページとして表現し、その情報を格納する。メモリページ管理テーブル５４は、従来のメモリページの状態を示す情報に加え、メモリ検査の有無やその結果、対応するメモリ領域がメモリ割り当て対象として使用可能かどうかの状態を示す情報をメモリページごとに管理している。
【００４４】
メモリページ管理テーブル５４は、ＡＣＰＩ情報３２から読み取った物理メモリのアドレスやサイズの情報をベースにＯＳ５により生成される。また、後述するメモリページ管理テーブル５４のうちのメモリ検査結果を示す検査状態属性の項目やメモリ要求に対して払い出すことが可能か否かを示す状態の項目は、ＯＳ５（例えば、メモリ検査手段５１）により管理されることになる。
【００４５】
図３は、メモリページ管理テーブル５４が有する情報の一例である。図３を参照すると、メモリページ管理テーブル５４は、メモリ領域と、ＮＵＭＡノードと、状態と、検査状態属性と、を含んでいる。例えば、図３の１行目は、メモリ領域「０ｘ００００００００−０ｘ００００ｆｆｆｆ」とＮＵＭＡノード「ノード０」と状態「有効」と検査状態属性「ＦＷ検査済み（正常）」とが対応付けられていることを示している。つまり、図３の１行目は、メモリ領域「０ｘ００００００００−０ｘ００００ｆｆｆｆ」がノード０に属し、当該アドレス範囲はＦＷ３により検査済みで故障は検出されなかった（正常である）ことを示している。また、当該アドレス範囲の状態は有効であることを示している。
【００４６】
なお、メモリページ管理テーブル５４の検査状態属性は、例えば、ＦＷ検査済み（正常）、ＦＷ検査済み（故障）、ＯＳ検証済み（正常）、ＯＳ検証済み（故障）、ＯＳ検証中、未検査、のいずれかの属性を示している。また、状態の項目は、メモリ要求に対して払い出すことが可能か否かを示しており、払い出すことが可能な状態を示す「有効」と払い出すことが不可な状態を示す「無効」との２つの状態のいずれかを示している。検査状態属性がＦＷ検査済み（正常）、ＯＳ検証済み（正常）、のいずれかの状態である場合に状態が有効となり、検査状態属性がＦＷ検査済み（故障）、ＯＳ検証済み（故障）、ＯＳ検証中、未検査、のいずれかの状態である場合に状態が無効となることになる。
【００４７】
なお、図３においては、説明を簡単にするためメモリ領域の列をメモリ範囲で表記している。しかしながら、実際には、メモリページ管理テーブル５４においては、メモリページ単位でメモリ領域を管理することが望ましい。これは、メモリ検査が完了した結果はメモリページ管理テーブル５４に順次反映していくが、使用可能かどうかの状態（有効／無効）をＯＳ５内で管理する最小単位がメモリページであるためである。
【００４８】
ＡＰ起動手段５５は、メモリ検査手段５１が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させる。例えば、ＡＰ起動手段５５は、メモリページ管理テーブル５４及びＡＰ起動条件テーブル５６を参照して、メモリ検査手段５１が検査したメモリ量がアプリケーションの起動に必要なメモリ量を超えている場合に、当該アプリケーションを起動させる。また、ＡＰ起動手段５５は、ＡＰ起動条件テーブル５６を参照して、ＡＰ起動条件テーブル５６が示す起動順番に応じてアプリケーションを起動させる。このように、ＡＰ起動手段５５は、メモリページ管理テーブル５４及びＡＰ起動条件テーブル５６を参照して、条件を満たしたアプリケーションを順次起動させる。
【００４９】
ＡＰ起動条件テーブル５６（条件情報）は、アプリケーションの起動順序や依存関係、起動に必要なメモリ量などの情報を有している。つまり、ＡＰ起動条件テーブル５６は、アプリケーションごとの起動に必要な条件を示している。
【００５０】
図４は、ＡＰ起動条件テーブル５６が有する情報の一例である。図４を参照すると、ＡＰ起動条件テーブル５６は、起動順と、アプリケーションと、ＮＵＭＡノードと、必要メモリ量と、依存関係と、を含んでいる。例えば、図４の１行目は、起動順「１」のアプリケーションが「ネットワークサービス」であり、ＮＵＭＡノードの指定はなく、必要メモリ量が３０ＭＢであり、依存関係はないことを示している。
【００５１】
なお、図４においては、ＡＰ起動条件テーブル５６がプログラムを１つ１つ管理するのではなく、一まとまりの機能ごとにサービスという単位で管理している一例を示している。これは、アプリケーションは複数のプログラムが連携して一つの機能を実現することが多いためである。なお、ＡＰ起動条件テーブル５６が管理する単位は、必要に応じて変更して構わない。
【００５２】
また、例えば、図４の３、４行目で示すように、ＡＰ起動条件テーブル５６では、ＮＵＭＡノードごとにメモリ量を管理している。これは、ＮＵＭＡ構成のシステムにおいては、システム全体のリソース使用状況を効率化するために、アプリケーションを特定の距離の近いプロセッサとメモリの組み合わせのみで実行するように制約をすることが有効であるためである。また、メモリ検査の進捗状況により、使用可能なメモリが全てのＮＵＭＡノード上で要件を満たさなければアプリケーションの起動や動作に支障が生じる可能性があるためである。このように、どのＮＵＭＡノードがメモリをどれだけ使用するかを把握するために、ＡＰ起動条件テーブル５６には、ＮＵＭＡノードごとのメモリ要求量を示す情報が含まれている。
【００５３】
また、ＡＰ起動条件テーブル５６には、依存関係を示す情報が含まれている。これは、アプリケーション間には依存関係がある場合があるためである。例えば、Ｗｅｂサーバのサービスを起動するためにはネットワーク機能が使用可能となっている必要がある。このような場合に、ＡＰ起動条件テーブル５６を参照することで、ネットワークサービスの起動が完了するまでＷｅｂサービスの起動を待ち合わせることが出来る。
【００５４】
また、図４の最下段には、「予備メモリ」という項目が含まれている。ＡＰ起動条件テーブル５６が「予備メモリ」という項目を有する理由は、アプリケーションの起動や安定した業務サービスを行うために必要なキャッシュやバッファ等のメモリが不足している場合にクラスタフェイルオーバをすべきかどうかを判断するためである。通常、業務の負荷にはムラがあることが多く、特定の時間帯に負荷が高騰するケースはよくある。そのため、このような負荷の高騰に対応するため、サーバ装置１には最大負荷量を見積もったメモリ量を実装している。しかしながら、故障によりメモリが減少する際、起動には成功しても十分な予備メモリが確保できない場合がある。このような場合には業務サービスを継続することは出来ないと判断できるため、クラスタウェアに通知することができる。つまり、ＯＳ５は、メモリページ管理テーブル５４とＡＰ起動条件テーブル５６とを参照して、予備メモリが不足していると判断される場合に、他のサーバ装置（情報処理装置）に対して、アプリケーションの実行を交代するよう通知することが出来る。そのための情報として図４には予備メモリという概念を起動条件の一つとして扱っている。
【００５５】
以上が、サーバ装置１の構成の一例である。次に、図５、６を参照して、メモリ検査完了後にカーネルを起動する場合と本発明のサーバ装置１との動作の違いについてその概要を説明する。図５、図６では、２〜３ＴＢのメモリを実装していると想定し、メモリ検査に２０分かかると仮定している。また、その他の処理時間は、簡略化のため、一律で３分かかるとする。
【００５６】
図５は、ハードウェアの起動から業務サービスを開始するまでの動作の概要を図示している。図５を参照すると、メモリ検査完了後にカーネルを起動する場合、電源投入からファームウェアによるメモリ検査（ＰＯＳＴ）が完了するまでカーネルを起動することができない。そのため、実装されている全てのメモリ領域の検査が完了したあとで、カーネル起動およびアプリケーションの起動が逐次実施されることになる。従って、業務サービスが開始されるまでにかかる時間は各処理に係る時間の総和となり、例えば、電源投入から業務サービス開始まで２９分かかることになる。
【００５７】
一方、本実施形態におけるサーバ装置１の場合、ＦＷ３のＰＯＳＴ処理手段３１は、ＦＷ検査対象メモリ２１のみを検査の対象とする。そして、ＰＯＳＴ処理手段３１によるメモリ検査（ＰＯＳＴ）の後、ＦＷ３により検査済みのＦＷ検査対象メモリ２１を使用してカーネル起動が実施される。そのため、カーネル起動の開始までの時間が短縮されることになる。また、カーネルの起動では、ＯＳ５の初期化処理と並行してＯＳ５のメモリ検査手段５１によるメモリ検査（ＯＳ）処理が開始される。カーネルは実装されている複数のプロセッサコアを認識・初期化し、並列処理を実行できる状態にまで初期化が進んだ後の任意のタイミングでメモリ検査（ＯＳ）を開始することができる。カーネルが初期化するハードウェアの各コンポーネントは多岐に渡り時間がかかるため、それらの初期化とメモリ検査（ＯＳ）は並列で動作することとなる。ＯＳ５は各プロセッサコアの負荷状態を管理しながら、適宜負荷を分散して初期化およびメモリ検査を継続する。アプリケーションの起動は、メモリ検査（ＯＳ）の進捗状況と、ＡＰ起動条件テーブル５６とを照らし合わせて、ＡＰ起動手段５５により実施される。図５によると、サーバ装置１の方が上記場合と比較して、全てのメモリ範囲の検査完了を待たない分、業務サービス開始のタイミングが早いことが分かる。
【００５８】
図６は、メモリ検査を実施した結果、業務サービスを起動できずにクラスタフェイルオーバをするまでの概要を図示している。図６を参照すると、メモリ検査完了後にカーネルを起動する場合、図５と同様に、電源投入の後メモリ検査（ＰＯＳＴ）において全てのメモリ領域の検査が完了するまで、後に続く処理は待たされることになる。近年のサーバ装置においては、メモリコントローラが複数あり、各メモリコントローラが複数のメモリモジュールを制御する方式が広く用いられている。そのため、メモリコントローラそのもの、あるいは、メモリコントローラとメモリモジュールの接続経路が故障するようなケースでは、複数のメモリモジュールが同時に使用不能となり、大幅にメモリが減少する場合がある。そのような状況でアプリケーションを起動すると、メモリ不足に陥ることになる。その結果、アプリケーションの起動失敗や動作遅延がクラスタウェアによって検出され、それを契機にクラスタフェイルオーバが実施される。以上より、メモリ検査完了後にカーネルを起動する場合では、業務サービスを開始できないことを検出し、クラスタウェア通知を実施するまでに非常に時間がかかることが分かる。
【００５９】
一方、サーバ装置１の場合、図５の場合と同様にメモリ検査（ＯＳ）が開始するまでの時間が短縮される。メモリ検査（ＯＳ）において、メモリの故障が検出され、実際には使えないことが判明した場合、未検査のメモリ量とＡＰ起動条件テーブル５６との照合により、実際にアプリケーションを起動する前に、全ての業務サービスを稼動できないことを検出することが可能となる。一般的に、業務処理を担当するサーバ装置には、突発的な高負荷に備えて余分にメモリを実装しておくことが多い。そのような、余分に確保すべきメモリもＡＰ起動条件テーブル５６に登録しておくことにより、業務開始に成功してもその後の運用に支障がありそうなメモリ量しか使用可能にならないことを検出することも可能である。図６によると、従来方式よりも早いタイミングでクラスタウェア通知を実施することが分かる。
【００６０】
続いて、図７乃至図１１を参照して、サーバ装置１の動作の一例について説明する。まず、図７を参照して、初回起動時に電源投入から起動が完了するまでのサーバ装置１の動作の一例について説明する。
【００６１】
図７を参照すると、サーバ装置１の電源が投入されると、ＰＯＳＴ処理手段３１がＰＯＳＴ処理を実行して、ＦＷ検査対象メモリ２１を検査する（ステップＳ１０１）。また、ＰＯＳＴ処理手段３１は、メモリ故障を検出し、ＦＷ検査対象メモリ２１のサイズに変更が生じた場合、その部分を無効化し、必要に応じて追加でメモリ検査を行い、その結果をＡＣＰＩ情報３２に反映する。
【００６２】
次に、ブートローダ４１がＯＳ５のカーネルをＦＷ検査対象メモリ２１上にロードし、プロセッサの命令カウンタをカーネルプログラムの開始位置にセットすることで、カーネルに処理を移行する（ステップＳ１０２）。なお、ＰＯＳＴ処理手段３１により故障が検出されていた場合、無効化されたメモリを避けて上記処理が行われることになる。
【００６３】
続いて、カーネルは、ＦＷ検査対象メモリ２１の範囲のみを使用して、起動処理を行なう（ステップＳ１０３）。一般的に、カーネルが起動するもっとも初期の段階では低位の限られた範囲のアドレスのみを使用することが多い。しかしながら、そのような前提を満たさない種類のＯＳの場合には、ブートローダ４１からパラメータとして使用可能なメモリ範囲を通知するような対応が可能である。また、カーネルは、初期化処理において、ＡＣＰＩ情報３２を読み出し、各コンポーネントの特性（ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）種別、メモリサイズ、ＮＵＭＡ構成情報等)を入手する。そして、カーネルは、入手した情報をメモリ構成情報表５２に保存するとともに（ステップＳ１０４）、メモリページ管理テーブル５４に反映していく（ステップＳ１０５）。なお、ＦＷ検査対象メモリ２１に対してＦＷ検査対象外メモリ２２が非常に大きい場合、メモリページ管理テーブル５４も巨大になり、ＦＷ検査対象メモリ２１に収まらない可能性がある。そのような場合には、起動直後は小さいサイズで管理し、使用可能なメモリが増えた段階でサイズを拡張することで対応可能である。
【００６４】
カーネルがＡＣＰＩ情報３２をファームウェアから入手し終えたところで、サーバ装置１上に存在する、起動に使用したＣＰＵ以外のＣＰＵを有効化し、ＮＵＭＡ構成の非対称型マルチＣＰＵシステムとして動作を開始する。つまり、ＮＵＭＡ初期化コードを実行する（ステップＳ１０６）。これ以降、カーネルは任意のプロセッサコア上で並列処理を実行可能となる。
【００６５】
カーネルは、ＮＵＭＡ構成を意識し、それぞれのメモリに距離が近いＣＰＵ上でメモリ検査手段５１を実行する（ステップＳ１０７）。メモリ検査手段５１は、メモリ範囲を分担し、並列でＦＷ検査対象外メモリ２２を検査していくことになるが、カーネルは引き続きメモリ以外のデバイス等の初期化を進める。そして、アプリケーションが起動できる状態になったところで、ＡＰ起動手段５５を起動する（ステップＳ１０８）。ＡＰ起動手段５５は、ＡＰ起動条件テーブル５６を参照しながらメモリ検査の進捗を待ち、条件を満たした時点でアプリケーション（またはサービス）を起動し、起動完了までこれを続けることになる。
【００６６】
なお、メモリ検査手段５５は、各プロセッサコア上で動作するが、検査するメモリの単位やメモリ検査スレッドごとの分担・並列度はそれぞれのＯＳやハードウェアの構成により自由に変えて構わない。
【００６７】
以上が、初回起動時に電源投入から起動が完了するまでのサーバ装置１の動作の一例である。次に、図８を参照して、図７のステップＳ１０７の処理であるメモリ検査処理の流れの一例について説明する。
【００６８】
図８を参照すると、メモリ検査手段５１は、メモリページ管理テーブル５４を参照して、検査状態属性が「未検査」とされているメモリ範囲が存在するか否か判断する（ステップＳ２０１）。検査状態属性が「未検査」とされているメモリ範囲が存在しない場合（ステップＳ２０１、Ｎｏ）、メモリ検査手段５１は、処理を終了する。一方、検査状態属性が「未検査」とされているメモリ範囲が存在する場合（ステップＳ２０１、Ｙｅｓ）、メモリ検査手段５１は、メモリページ管理テーブル５４の対象メモリ範囲の検査状態属性を「ＯＳ検証中」に変更した後（ステップＳ２０２）、メモリ検査を実施する（ステップＳ２０３）。このように、検査状態属性を「ＯＳ検証中」に変更することで、メモリ検査の状況をサーバ装置１全体で共有することが出来る。
【００６９】
ＯＳ５のメモリ検査手段５１は、ＦＷ検査対象外メモリ２２に対して書き込みを行った後、読み出しを行い、読み出しデータに矛盾が存在するか否かを確認する（ステップＳ２０４）。また、メモリ検査手段５１は、ＦＷ検査対象外メモリ２２に対して書き込んだ結果ＨＷ２上でエラーを検出しＭＣＥ（Ｍａｃｈｉｎｅ  Ｃｈｅｃｋ  Ｅｘｃｅｐｔｉｏｎ）が発生するかを確認する（ステップＳ２０５）。メモリ検査手段５１は、例えば上記のような手段により、メモリ検査を実行する。
【００７０】
書き込み、読み出したデータに矛盾が存在する場合（ステップＳ２０４、Ｙｅｓ）やＭＣＥが発生した場合（ステップＳ２０５、Ｙｅｓ）、メモリ検査手段５１は、対象メモリ範囲が故障していると判断する。そこで、メモリ検査手段５１は、メモリページ管理テーブル５４の検査状態属性を「ＯＳ検証済み（故障）」に更新する（ステップＳ２０６）。一方、読み出したデータに矛盾が存在せず（ステップＳ２０４、Ｎｏ）、かつ、ＭＣＥが発生しなかった場合（ステップＳ２０５、Ｎｏ）、メモリ検査手段５１は、検査の対象となったメモリ領域を有効化する（ステップＳ２０７）。なお、ここでいう有効化とは、検査済みメモリをカーネル内のメモリ管理システムに空きメモリとして登録し、メモリ要求に対して割り当てる対象とすることを言う。また、メモリ検査手段５１は、有効化が完了したメモリ領域について、検査状態属性が「ＯＳ検証済み（正常）」、状態が「有効」となるように、メモリページ管理テーブル５４を更新する（ステップＳ２０８）。その後、メモリ検査手段５１は、再度メモリページ管理テーブル５４を参照して、検査状態属性が「未検査」とされているメモリ範囲が存在するか否か判断することになる（ステップＳ２０１）。
【００７１】
以上が、図７のステップＳ１０７の処理であるメモリ検査処理の流れの一例である。なお、メモリ検査手段５１がメモリ検査を行う方法は、上記説明した場合に限定されない。メモリ検査手段５１は、ＨＷ２のアーキテクチャに適した様々な方法を採用してメモリ検査を行うことが出来る。また、例えば、上記処理に加えて、利用可能なメモリ量をＡＰ起動手段５５が参照できる手段を提供するよう構成しても構わない。また、メモリの有効化が済んだ任意のタイミングで、ＡＰ起動手段５５に対して通知し、アプリケーションの起動を促進するよう構成しても構わない。次に、図９を参照して、図７のステップＳ１０８の処理であるＡＰ起動処理の流れの一例について説明する。
【００７２】
図９を参照すると、ＡＰ起動手段５５は、ＡＰ起動条件テーブル５６を参照して、アプリケーションの起動に必要となるメモリ量や依存関係等の情報を読み出す（ステップＳ３０１）。
【００７３】
続いて、ＡＰ起動手段５５は、依存関係のあるアプリケーション（先に起動させることが必要なアプリケーション）が既に起動しているかなど、起動させようとしているアプリケーションがメモリ量以外の起動条件を満たしているか確認する（ステップＳ３０２）。メモリ量以外の起動条件を満たしていない場合には（ステップＳ３０２、Ｎｏ）、ＡＰ起動手段５５は、当該アプリケーションを起動せず、他のアプリケーションを選択することになる。一方、起動させようとしているアプリケーションがメモリ量以外の起動条件を満たしている場合（ステップＳ３０２、Ｙｅｓ）、ＡＰ起動手段５５は、メモリページ管理テーブル５４を参照して、使用可能なメモリ量をノードごとに算出する（ステップＳ３０３）。そして、ＡＰ起動手段５５は、メモリページ管理テーブル５４を参照して、メモリ要求を満たすか否かを判定する（ステップＳ３０４）。
【００７４】
アプリケーションが要求するメモリ量を使用可能なメモリ量が超えていない場合（ステップＳ３０４、Ｎｏ）、ＡＰ起動手段５５は、アプリケーションが要求するメモリ量を使用可能なメモリ量が超えるまで待機する。一方、アプリケーションが要求するメモリ量を使用可能なメモリ量が超えている場合（ステップＳ３０４、Ｙｅｓ）、ＡＰ起動手段５５は、当該アプリケーションを起動する（ステップＳ３０５）。その後、ＡＰ起動手段５５は、メモリページ管理テーブル５４を参照して、残りのメモリ量から全てのアプリケーションが起動可能か否かを判断する（ステップＳ３０６）。メモリ不足を検出した場合（ステップＳ３０６、Ｎｏ）、ＡＰ起動手段５５は、クラスタウェアの通知を行う。一方、メモリ不足を検出しなかった場合（ステップＳ３０６、Ｙｅｓ）、ＡＰ起動手段５５は、ＡＰ起動条件テーブル５６を参照して、全てのアプリケーションを起動したか否かを確認する（ステップＳ３０７）。全てのアプリケーションを起動した場合（ステップＳ３０７、Ｙｅｓ）、ＡＰ起動手段５５は、その処理を終了する。一方、起動させるアプリケーションがまだ存在する場合（ステップＳ３０７、Ｎｏ）、ＡＰ起動手段５５は、ステップＳ３０１の処理に戻って新たなアプリケーションの起動を行う。
【００７５】
以上が、図７のステップＳ１０８の処理であるＡＰ起動処理の流れの一例である。続いて、図１０を参照して、サーバ装置１を停止させる処理の流れの一例について説明する。なお、この処理は、次回の起動を高速化するために、電源停止をまたいでカーネル実行イメージを不揮発メモリ２３に保存・復旧することを前提に行う。このような保存・復旧自体は、ハイバーネーションと呼ばれる一般的な既存技術であるが、本発明の方式は、ＦＷ検査対象メモリ２１に収まるようにカーネル実行イメージを縮小する点に特徴がある。
【００７６】
図１０を参照すると、ユーザがシャットダウンボタンの押下やコマンドの投入によるシャットダウン指示を行うことで、サーバ装置１の停止処理が開始される。サーバ装置１の停止処理が開始されると、ＯＳ５はアプリケーションを終了し、当該アプリケーションが使用していたメモリを解放していく（ステップＳ４０１）。
【００７７】
続いて、ＯＳ５は、アプリケーションに直接関連しないメモリを解放する（ステップＳ４０２）。この処理のなかには、ハイバーネーションに不要なカーネルモジュールのアンロード、共有メモリの解放、ダーティバッファのディスク書き込み、キャッシュの解放等を含む。
【００７８】
次に、カーネル実行イメージを不揮発メモリ２３に保存するために使用中メモリの整理を行なう。この処理は、カーネル実行イメージをＦＷ検査対象メモリ２１に収まるように、使用メモリ範囲を拡大する前のカーネル初期化直後の状態に戻すことを目的としている。従って、稼働中にＦＷ検査対象外メモリ２２に配置したメモリは解放または移動することになる。
【００７９】
例えば、全メモリ量が多いためにメモリページ管理テーブル５４を途中で拡張し、メモリページ管理テーブル５４をＦＷ検査対象外メモリ２２にも格納した場合は、ＦＷ検査対象メモリ２１に収まるように拡張した領域を開放する。また、別の例として、メモリプールは整理対象の一つである。ＯＳ５が長時間稼動すると、メモリはフラグメント化しカーネルが使用するメモリもメモリ領域全体に散らばることになる。カーネルには、メモリ確保要求に迅速に応じるために、プロセス情報やネットワークパケット、ディレクトリパス情報等の頻繁に使用される管理情報に関して、そのサイズに応じたメモリを予めプールしておき、一定量減少すると新たにメモリを割り当ててプールに補充する機能がある。そのため、プールへのメモリ補充の際、システムの空きメモリ状況によって、ＦＷ検査対象外メモリ２２からもメモリを割り当てる場合が生じる。システム負荷状況の変化に応じてプールの補充・削減を繰り返した結果、ステップＳ４０１、ステップＳ４０２の処理によってメモリを解放したとしても、このような「使っていないがカーネルが確保(プール)している」というメモリがＦＷ検査対象外メモリ２２にも残存する場合がある。そこで、ＦＷ検査対象メモリ２１を使用して効率よくカーネル実行イメージを保存するために、このようなメモリをＦＷ検査対象メモリ２１のメモリ範囲に移動する。このようなメモリ移動はメモリマイグレーションと呼ばれる既存技術である。このように、ＦＷ検査対象外メモリ２２のうち必要なメモリをＦＷ検査対象メモリ２１に移動させる（ステップＳ４０３）。
【００８０】
以上のように、ステップＳ４０１からステップＳ４０３の処理により、ＦＷ検査外対象メモリ２２を全て未使用な状態にするとともに、カーネルの新規メモリ割り当て対象から外す。そして、メモリページ管理テーブル５４のうちのＦＷ管理対象外メモリ２２に相当するメモリ範囲の状態、検査状態属性を「無効」、「未検査」に変更する（ステップＳ４０３）。このようにメモリページ管理テーブル５４を更新することで、次回起動時に、不揮発メモリ２３からカーネル実行イメージを読み込んだ際に再度メモリページ管理テーブル５４を利用してメモリ検査を行なうことが出来る。
【００８１】
次に、ＯＳ５は、メモリ構成情報表５２を、メモリ構成情報表(比較用)５３にコピーする（ステップＳ４０５）。これは、電源停止の間の構成の変化をチェックするためである。
【００８２】
その後、カーネルは休眠処理を行ない（ステップＳ４０６）、カーネルの各機能を停止後、カーネルイメージライタに処理を引き継ぐ。ハイバーネーション処理は、ＯＳ５全体が動作中にそのイメージをディスクに保存する形式が一般的ではあるが、この動作例では、アプリケーションを全て停止し、カーネル機能も最小限の状態に縮小してから休眠状態に入ることとしている。これは、カーネルイメージの保存・復帰処理を、ＦＷ検査対象メモリ２１の限られたメモリ量で行なうことを可能にするとともに、不揮発メモリ２３に読み書きするデータ量を削減するためである。また、カーネルが休眠処理を行う理由は、カーネル自身が動作中の状態のイメージを保存すると復旧後のイメージも不定となるためである。
【００８３】
カーネルから処理を引き継いだカーネルイメージライタ４２は、不揮発メモリ２３に対してカーネルの実行イメージを保存する（ステップＳ４０７）。カーネルイメージライタ４２が保存するメモリ領域は、ＦＷ検査対象メモリ２１の範囲全域であっても構わないし、必要なページのみであっても構わない。必要なページのみ保存する場合には、カーネルイメージライタ４２がカーネルのアドレス空間を解析し、メモリ管理情報から使用中のページのみを保存するといった実装例が考えられる。保存すべきメモリ量の転送時間と解析にかかる時間等を考慮し、任意の手段を用いることが可能である。カーネルの実行イメージの保存完了後、サーバ装置１の電源を停止する（ステップＳ４０８）。例えば、このような処理により、シャットダウン処理を完了する。
【００８４】
以上が、サーバ装置１を停止させる処理の流れの一例である。次に、図１１を参照して、二回目以降の起動処理の流れの一例について説明する。
【００８５】
図１１を参照すると、電源投入後、ＰＯＳＴ処理手段３１を用いてＦＷ検査対象メモリ２１のメモリ検査を実施する（ステップＳ５０１）。この処理は、図７で示す初回起動時と同様である。ただし、ＦＷ検査対象メモリ２１において故障を検出した場合には扱いが異なる。初回起動時には、故障したメモリを無効化しても構わないが、２回目以降の場合は、単純に故障したメモリを無効化することは出来ない。
【００８６】
続いて、ＦＷ３は、不揮発メモリ２３に退避したカーネルの実行イメージが存在するかどうかをチェックする（ステップＳ５０２）。チェック方法は、不揮発メモリ２３の任意の領域にカーネルの実行イメージの有無を示す情報を書きこんでおく方法や、ＦＷ３自身が記憶する方法など任意の手段を用いることができる。また、ＦＷ３は、ＦＷ検査対象メモリに故障などが生じておらず、前回起動時と同一であるか否かをチェックする（ステップＳ５０３）。なお、ステップＳ５０２、ステップＳ５０３のタイミングで、カーネルの実行イメージに電子署名をすることなどによって停止中に改ざんされていないかなどをチェックするような付加的な処理を行っても構わない。
【００８７】
不揮発メモリ２３上に保存された実行イメージが存在しない場合（ステップＳ５０２、Ｎｏ）や、ＦＷ検査対象メモリ２１が変更されている場合（ステップＳ５０３、Ｎｏ）、以降は、図７で説明した場合と同様の起動処理を実行する。一方、不揮発メモリ２３上にカーネルの実行イメージが存在し（ステップＳ５０２、Ｙｅｓ）、かつ、ＦＷ検査対象メモリ２１にも問題がない場合（ステップＳ５０３、Ｙｅｓ）、ＦＷ３は、カーネルイメージローダ４３を起動する。
【００８８】
カーネルイメージローダ４３は、不揮発メモリ２３から保存されているカーネルの実行イメージを読み出し、ＦＷ検査対象メモリ２１上に復元する（ステップＳ５０４）。続けて、カーネルのレジューム関数を呼び出して処理をカーネルに移行する（ステップＳ５０５）。このようなレジューム処理は、既存のハイバーネーション技術に含まれるものである。
【００８９】
次に、カーネルは、ＡＣＰＩ情報３２を読み出し、メモリ構成情報表５２に保存する（ステップＳ５０６）。そして、カーネルは、メモリ構成情報表５２と図１０で示す処理で保存した（ハイバーネーション前に保存した）メモリ構成情報表（比較用）５３との内容を比較する（ステップＳ５０７）。
【００９０】
比較の結果、構成に差分がある場合（ステップＳ５０８、Ｙｅｓ）には、カーネルは、カーネルの管理情報を更新して差分を反映していく。また、メモリ構成が異なっている場合には、メモリページ管理テーブル５４にも差分を反映する（ステップＳ５０９）。この際メモリモジュールが増設されており、メモリページ管理テーブル５４のサイズが不足するような場合には、テーブル自体の再作成を行なう。このようにして、カーネルは、ＦＷ検査対象外メモリ２２やシステムに接続されているＩ／Ｏデバイス等の構成が電源停止中に変更されている場合に、その変化を検出する。
【００９１】
一方、構成に差分が無い場合（ステップＳ５０８、Ｎｏ）や、上記ステップＳ５０９の処理により差分を反映した後、カーネルは各プロセッサコア上でメモリ検査手段５１を並列に実行する（ステップＳ５１０）。ステップＳ５１０の処理は、図７のステップＳ１０７の処理（図８の処理）と同様である。また、カーネルは、メモリ以外の初期化を並行して継続し、アプリケーションを起動できる状態になると、ＡＰ起動手段５５を起動する（ステップＳ５１１）。ステップＳ５１１の処理は、図７のステップＳ１０８の処理（図９の処理）と同様である。
【００９２】
以上が、二回目以降の起動処理の流れの一例である。
【００９３】
このように、本実施形態におけるサーバ装置１は、ＰＯＳＴ処理手段３１と、メモリ検査手段５１と、ＡＰ起動手段５５と、を有している。このような構成により、ＰＯＳＴ処理手段３１がＦＷ検査対象メモリ２１の検査を完了したタイミングで、ＯＳ５を起動することが出来る。また、ＯＳ５のメモリ検査手段５１によりＦＷ検査対象外メモリ２２の検査を行うことが出来るとともに、ＦＷ検査対象外メモリ２２に対する検査の進捗状況に応じて、ＡＰ起動手段５５によりアプリケーションを起動することが出来る。つまり、例えば、ＡＰ起動手段５５は、メモリ検査手段５１が検査したメモリ量がアプリケーションの起動に必要なメモリ量を超えるごとに、当該アプリケーションを起動させることが出来る。その結果、アプリケーションの起動開始タイミングをメモリ全体の検査完了前に早めることが可能となり、高速にアプリケーションを実行することが可能となる。
【００９４】
また、本実施形態におけるサーバ装置１によると、故障発生時などに、業務アプリケーション全体を実行できるかどうかを判定するタイミングをメモリ全体の検査完了前に早めることが可能となる。
【００９５】
また、本実施形態におけるカーネルイメージライタ４２は、必要な情報をＦＷ検査対象メモリ２１に移行させた後のカーネル実行イメージを不揮発メモリ２３に格納するよう構成されている。このような構成により、ハイバーネーション時の退避・復帰に必要なデータ量や時間を削減することが出来る。
【００９６】
［第２の実施形態］
次に、図１２乃至図１５を参照して、第２の実施形態について説明する。第１の実施形態においては、装置の停止や再起動によってメモリ内容がクリアされる特性をもつサーバ装置１において、本発明を適用する場合の説明を行なった。電源停止・再起動によりメモリの内容がクリアされるのは一般的な挙動であるが、用途によっては装置の停止や再起動をまたいでもメモリの内容が保持される特性をもつサーバ装置６がある。そこで、第２の実施形態においては、このような特性を持つサーバ装置６について説明する。なお、以下においては、第１の実施形態で説明した内容と重複する内容については、その説明を省略する。
【００９７】
なお、装置の停止や再起動をまたいでもメモリの内容を保持するという特性は、
（１）ハードウェア特性として電源供給無しに値を維持する、不揮発メモリを使用する
（２）停止・再起動時もデータをリセットせずに通電し続け、メモリ内容を保持する
といった手段により実現される。再起動によりデータがクリアされないという特性は、アプリケーションが使用するデータが非常に大きく、ディスク装置からメモリにロードするだけでも時間がかかる場合に、再起動後の業務サービスの再開までにかかる時間を短縮できる点において非常に有用である。
【００９８】
一方、カーネルやアプリケーションが動作中に使用するデータは流動的なものであり、サーバ装置の停止や再起動をまたいで保持する利点は少ない。特に（１）の実現方式に用いる不揮発メモリは、一般的なサーバ装置のメモリとして使用されるＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に比較してビット単価が高い、もしくはアクセス性能が低いという特性がある場合が多い。そのため、折衷案として図１２のように汎用的で高速・安価な揮発性メモリ領域であるＦＷ検査対象メモリ２１、ＦＷ検査対象外メモリ２２とデータ用の低速・高価な不揮発メモリ領域であるデータ用不揮発メモリ７４とが共存する構成を持つ装置がある。本実施例においては、このような電源停止・再起動の際にメモリがクリアされないサーバ装置６において本発明を適用する例を説明する。
【００９９】
図１２を参照すると、本実施形態におけるサーバ装置６は、ＨＷ７と、ＦＷ３と、ブートローダ４１と、カーネルイメージライタ４２と、カーネルイメージローダ４３と、ＯＳ８と、を含んでいる。
【０１００】
ＨＷ７は、第１の実施形態で説明したサーバ装置１の構成と比較して、データ用不揮発メモリ７４を新たに含んでいる。データ用に使用するメモリ領域は、ＯＳ８などが使用するＦＷ検査対象メモリ２１やＦＷ検査対象外メモリ２２と特性が異なり、明確な使い分けが必要である。本実施形態においては、個々のメモリ領域の特性やサイズの情報はＡＣＰＩ情報３２から提供する。データ用不揮発メモリ７４が通常のメモリ領域としてではなく、Ｉ／Ｏデバイスとして異なるインターフェースでシステムに接続されている場合などには、上記情報は、ＡＣＰＩ情報３２以外の手段で提供されても構わない。
【０１０１】
また、ＯＳ８のうちのメモリ検査手段８１の動作は、第１の実施形態で説明したメモリ検査手段５１の動作と異なる点がある。
【０１０２】
上記差異は、メモリ検査手段８１は、データ用不揮発メモリ７４に対しては、データ内容を破壊しないような手段で検査を行なう必要がある点に起因して生じる。メモリ検査手段８１は、例えば、未使用な領域を検出して書き込みテストを行なう、あるいは任意のデータを書き込むのではなく既に書き込まれているデータを読み出して書き戻す、といった手法で検査を行うことになる。
【０１０３】
なお、再起動時に関しては、直前まで故障を検出していないこと、および、ＡＰ復旧手段８７による上位層からの整合性チェックを行なうことにより、データ用不揮発メモリ７４に対するメモリ検査手段５１による検査を省略する、という運用も十分考えられる。厳密性や網羅性はやや下がるものの、ＦＷ３による定期メモリスクラビング機能等で補うことで、信頼性は保たれる。
【０１０４】
また、ＯＳ５は、ＡＰ起動手段５５、ＡＰ起動条件テーブル５６に加えてＡＰ復旧手段８７と、ＡＰ復旧手順テーブル８８と、を含んでいる。再起動をまたいでメモリを保持している場合でも、クラスタフェイルオーバや予期しないリセット等により正常な終了処理を経由せずに再起動した場合には、メモリ上のデータ書き込みが完了せず、整合性を欠いた状態となる場合がある。そのような状況を復旧するための手順を登録したものがＡＰ復旧手順テーブル８８であり、それを実行するものがＡＰ復旧手段８７である。
【０１０５】
図１３は、ＡＰ復旧手順テーブル８８が有する情報の一例である。図１３を参照すると、ＡＰ復旧手順テーブル８８は、アプリケーションと、復旧手順と、依存関係と、使用メモリ範囲とを含んでいる。例えば、図１３の１行目は、アプリケーション「ネットワークサービス」と復旧手順「なし」と依存関係「なし」と使用メモリ範囲「なし」とが対応付けられている。
【０１０６】
図１３で示すＡＰ復旧手順テーブル８８においては、アプリケーション「ネットワークサービス」や「クラスタウェアサービス」は、データ用不揮発メモリ７４を使用せずに動作する。そのため、復旧手順は不要としている。その他のアプリケーションやサービスは、それぞれの特性に合わせて一時データや不要なキャッシュを削除、あるいは仕掛かりデータの整合性確保を行なうことになる。そこで、このような処理の手順をＡＰ復旧手順テーブル８８は定めている。例えば、図１３で示す共有メモリに関しては、
（１）アプリケーションからのアタッチ要求に応じるため、データが格納されている領域を、データをクリアすることなく共有メモリとしてカーネルに登録する
（２）固定データが破損している場合には元データの再読み込みを行う
（３）アトミックに更新が必要な一連のデータが中途半端な更新状態になっている場合には、仕掛かりデータを破棄して復旧する
等の処理を行なうことが定められている。なお、（３）を行なうためには、アプリケーション自身がデータの更新履歴（ジャーナル）を備え、トランザクションの巻き戻し（ロールバック）機能を有していることが必要である。これは、データベースアプリケーションやファイルシステムが実装している既存技術である。上記を実施しても復旧しきれない場合にはクラスタウェアに通知し、フェイルオーバーを実施することになる。
【０１０７】
続いて、図１４を参照して、本実施形態におけるサーバ装置６の動作の一例について説明する。
【０１０８】
図１４を参照すると、起動時におけるステップＳ６０１からステップＳ６０６までの処理は、概ね第１の実施形態で説明したサーバ装置１の動作と同様である。
【０１０９】
ステップＳ６０６の処理の後、メモリ検査手段８１を実行する（ステップＳ６０７）。ステップＳ６０７において、メモリ検査手段８１は、例えば、未使用な領域を検出して書き込みテストを行なう、あるいは任意のデータを書き込むのではなく既に書き込まれているデータを読み出して書き戻す、といった手法で検査を行う。また、メモリ検査手段８１は、所定の条件を満たす場合、データ用不揮発メモリ７４に対する検査を省略することが出来る。
【０１１０】
なお、データ用不揮発メモリ７４に対して、メモリ検査手段５１による検査を実施する場合にはその実施後、実施しない場合にはカーネルが認識した後に、メモリページ管理テーブル５４において使用可能なメモリページの状態、検査状態属性を、「有効」「ＯＳ検証済み(正常)」に更新することになる。その他の動作は、第１の実施形態と同様である。
【０１１１】
メモリ検査手段８１によるメモリ検査と並行して、ＡＰ復旧手段８７によりＡＰ復旧処理が行われる（ステップＳ６０８）。そして、ＡＰ復旧手段８７によるＡＰ復旧処理の後、ＡＰ起動手段５５によるＡＰ起動処理が行われることになる（ステップＳ６０８）。なお、ステップＳ６０８のＡＰ起動処理は、第１の実施形態で説明したサーバ装置１の動作と同様に行われる。
【０１１２】
次に、図１５を参照して、ＡＰ復旧処理の流れの一例について説明する。図１５を参照すると、ＡＰ復旧手段８７は、メモリページ管理テーブル５４を参照して、アプリケーションが使用するメモリ領域の検査が終了したか否かを確認する（ステップＳ７０１）。
【０１１３】
アプリケーションが使用するメモリ領域の検査が終了していない場合（ステップＳ７０１、ＮＯ）、ＡＰ復旧手段８７は、必要なメモリ領域の検査が終了するまで待機する。一方、アプリケーションが使用するメモリ領域の検査が終了している場合（ステップＳ７０１、Ｙｅｓ）、ＡＰ復旧手段８７は、ＡＰ復旧手順テーブル８８を確認して復旧手順を読み出す（ステップＳ７０２）。また、ＡＰ復旧手段８７は、ＡＰ復旧手順テーブル８８を確認して、依存関係のあるアプリケーションが復旧済みであるか否か確認する（ステップＳ７０３）。そして、依存関係のあるアプリケーションが起動済みでない場合（ステップＳ７０３、Ｎｏ）、ＡＰ復旧手段８７は、再度ステップＳ７０２の処理に戻って別のアプリケーションに対する復旧手順を読み出す。このように、ＡＰ復旧手段８７は、ＡＰ復旧手順テーブル８８の依存関係を確認し、条件を満たすものから復旧手順を読み出す。
【０１１４】
依存関係のあるアプリケーションが復旧済みである場合（ステップＳ７０３）、ＡＰ復旧手段８７は、ＡＰ復旧手順テーブル８８に登録されている手順に従って、復旧処理を実施する（ステップＳ７０４）。そして、復旧処理が成功した場合（ステップＳ７０５、Ｙｅｓ）、つまり、アプリケーションの復旧によるデータの整合性を確保できた場合、ＡＰ復旧手段８７は、ＡＰ復旧処理を終了する。一方、復旧が成功しなかった場合（ステップＳ７０５、Ｎｏ）、ＡＰ復旧手段８７はクラスタウェアに通知する。
【０１１５】
以上のように、サーバ装置６は、ＡＰ復旧手順テーブル８８、ＡＰ起動条件テーブル５６、メモリページ管理テーブル５４の検査済みのメモリ量を参照しながら、順次アプリケーションデータの復旧およびアプリケーションの起動を進めていく。
【０１１６】
このように、本発明は、メモリの内容が保持される特性をもつサーバ装置６に対しても適応することが出来る。
【０１１７】
［第３の実施形態］
次に、図１６を参照して、第３の実施形態について説明する。第３の実施形態では、情報処理装置９の構成の概要について説明する。
【０１１８】
図１６を参照すると、本実施形態における情報処理装置９は、起動用検査手段９１と、オペレーティングシステム９２と、を含んでいる。また、オペレーティングシステム９２は、メモリ検査手段９２１と、アプリケーション起動手段９２２と、を有している。
【０１１９】
起動用検査手段９１は、予め定められた範囲のメモリ領域を検査する。また、起動用検査手段９１が検査したメモリ領域を利用してオペレーティングシステム９２を起動させる。
【０１２０】
上記のように、オペレーティングシステム９２は、メモリ検査手段９２１と、アプリケーション起動手段９２２と、を有している。メモリ検査手段９２１は、起動用検査手段９１が検査したメモリ領域以外のメモリ領域を検査する。アプリケーション起動手段９２２は、メモリ検査手段９２１が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させる。
【０１２１】
このように、本実施形態における情報処理装置９は、起動用検査手段９１を有している。また、情報処理装置９のオペレーションシステム９２は、メモリ検査手段９２１と、アプリケーション起動手段９２２と、を有している。このような構成により、起動用検査手段９１により予め定められた範囲のメモリ領域を検査して、当該検査したメモリ領域を利用してオペレーティングシステム９２を起動させることが出来る。また、オペレーティングシステム９２のメモリ検査手段９２１により残りのメモリ領域を検査するとともに、検査したメモリ量に応じて、アプリケーション起動手段９２２によりアプリケーションを起動させることが出来る。その結果、アプリケーションの起動開始タイミングをメモリ全体の検査完了前に早めることが可能となり、高速にアプリケーションを実行することが可能となる。
【０１２２】
なお、上記情報処理装置９は、当該情報処理装置９に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、情報処理装置に、予め定められた範囲のメモリ領域を検査する起動用検査手段を実現させ、起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、オペレーティングシステムに、メモリ領域のうち起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を実現させるためのプログラムである。
【０１２３】
また、上述した情報処理装置９が作動することにより実行される情報処理方法は、予め定められた範囲のメモリ領域を検査し、検査したメモリ領域を利用してオペレーティングシステムを起動させ、オペレーティングシステムは、メモリ領域のうち検査したメモリ領域以外のメモリ領域を検査し、検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させる、という方法である。
【０１２４】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記情報処理装置９と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１２５】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１２６】
（付記１）
予め定められた範囲のメモリ領域を検査する起動用検査手段を有し、
前記起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムは、
前記起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を有する
情報処理装置。
【０１２７】
（付記２）
付記１に記載の情報処理装置であって、
前記アプリケーション起動手段は、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量がアプリケーションの起動に必要なメモリ量を超えていると判断される場合に、当該アプリケーションを起動する
情報処理装置。
【０１２８】
（付記３）
付記１又は２に記載の情報処理装置であって、
前記アプリケーション起動手段は、アプリケーション毎の起動に必要な条件を示す条件情報を有しており、前記条件情報と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量とに基づいてアプリケーションを起動させる
情報処理装置。
【０１２９】
（付記４）
付記３に記載の情報処理装置であって、
前記条件情報は、アプリケーションの起動順序を示す情報を含んでおり、
前記アプリケーション起動手段は、前記条件情報が示す起動順序に応じてアプリケーションを起動させる
情報処理装置。
【０１３０】
（付記５）
付記１乃至４のいずれかに記載の情報処理装置であって、
前記アプリケーション起動手段は、前記メモリ検査手段による検査の結果アプリケーションを起動させるためのメモリ領域が不足すると判断される場合に、当該アプリケーションが実行できない旨を他の情報処理装置に対して通知する
情報処理装置。
【０１３１】
（付記６）
付記１乃至５のいずれかに記載の情報処理装置であって、
電源停止を行う前にカーネルの実行メモリイメージを他の記憶装置に格納するカーネルイメージ書込部を有し、
前記カーネルイメージ書込部は、前記実行メモリイメージを前記起動用検査手段による検査の対処となるメモリ領域に移動させた後の前記実行メモリイメージを格納する
情報処理装置。
【０１３２】
（付記７）
付記１乃至６のいずれかに記載の情報処理装置であって、
前記メモリ検査手段を複数有し、複数の前記メモリ検査手段により並列で前記メモリ領域を検査する
情報処理装置。
【０１３３】
（付記８）
予め定められた範囲のメモリ領域を検査し、
検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムは、
前記メモリ領域のうち検査したメモリ領域以外のメモリ領域を検査し、検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させる
情報処理方法。
【０１３４】
（付記８−１）
付記８に記載の情報処理方法であって、
前記オペレーションシステムは、
検査したメモリ領域以外のメモリ領域を検査するとともに、メモリ領域のうちの所定範囲ごとの検査の有無を示す検査進捗状況情報を取得し、
前記進捗状況情報に基づいて、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量がアプリケーションの起動に必要なメモリ量を超えていると判断される場合に、当該アプリケーションを起動する
情報処理方法。
【０１３５】
（付記８−２）
付記８又は付記８−１に記載の情報処理方法であって、
前記オペレーティングシステムは、
アプリケーション毎の起動に必要な条件を示す条件情報を有しており、前記条件情報と、検査したメモリ領域の量を示すメモリ量とに基づいてアプリケーションを起動させる
情報処理方法。
【０１３６】
（付記９）
情報処理装置に、
予め定められた範囲のメモリ領域を検査する起動用検査手段を実現させ、
前記起動用検査手段が検査したメモリ領域を利用してオペレーティングシステムを起動させ、
前記オペレーティングシステムに、
前記メモリ領域のうち前記起動用検査手段が検査したメモリ領域以外のメモリ領域を検査するメモリ検査手段と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量に応じてアプリケーションを起動させるアプリケーション起動手段と、を実現させるための
プログラム。
【０１３７】
（付記１０）
付記９に記載のプログラムであって、
前記メモリ検査手段は、前記メモリ領域のうち前記起動用検査手段が検査した領域以外の領域を検査するとともに、前記メモリ領域のうちの所定範囲ごとの検査の有無を示す検査進捗状況情報を取得し、
前記アプリケーション起動手段は、前記進捗状況情報に基づいて、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量がアプリケーションの起動に必要なメモリ量を超えていると判断される場合に、当該アプリケーションを起動する
プログラム。
【０１３８】
（付記１０−１）
付記９又は付記１０に記載のプログラムであって、
前記アプリケーション起動手段は、アプリケーション毎の起動に必要な条件を示す条件情報を有しており、前記条件情報と、前記メモリ検査手段が検査したメモリ領域の量を示すメモリ量とに基づいてアプリケーションを起動させる
プログラム。
【０１３９】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１４０】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１４１】
１  サーバ装置
２  ＨＷ
２１  ＦＷ検査対象メモリ
２２  ＦＷ検査対象外メモリ
２３  不揮発メモリ
３  ＦＷ
３１  ＰＯＳＴ処理手段
３２  ＡＣＰＩ情報
４１  ブートローダ
４２  カーネルイメージライタ
４３  カーネルイメージローダ
５  ＯＳ
５１  メモリ検査手段
５２  メモリ構成情報表
５３  メモリ構成情報表（比較用）
５４  メモリページ管理テーブル
５５  ＡＰ起動手段
５６  ＡＰ起動条件テーブル
６  サーバ装置
７  ＨＷ
７４  データ用不揮発メモリ
８  ＯＳ
８１  メモリ検査手段
８７  ＡＰ復旧手段
８８  ＡＰ復旧手順テーブル
９  情報処理装置
９１  起動用検査手段
９２  オペレーティングシステム
９２１  メモリ検査手段
９２２  アプリケーション起動手段
【図１】
0006677021.tif 000002
【図２】
0006677021.tif 000003
【図３】
0006677021.tif 000004
【図４】
0006677021.tif 000005
【図５】
0006677021.tif 000006
【図６】
0006677021.tif 000007
【図７】
0006677021.tif 000008
【図８】
0006677021.tif 000009
【図９】
0006677021.tif 000010
【図１０】
0006677021.tif 000011
【図１１】
0006677021.tif 000012
【図１２】
0006677021.tif 000013
【図１３】
0006677021.tif 000014
【図１４】
0006677021.tif 000015
【図１５】
0006677021.tif 000016
【図１６】
0006677021.tif 000017