(57)【要約】【課題】第１のＯＳ及び第２のＯＳを稼働する場合に、第１のＯＳが直接関与することなく第２のＯＳを起動させる。【解決手段】複数の計算機を備える計算機システムであって、メモリは、第１のＨＷ制御部を格納し、記憶装置は、第１のＯＳイメージと、第２のＯＳイメージと、第２のＯＳの起動処理を実行する第２のＨＷ制御部と、第２のＨＷ制御部が参照する情報が格納されるメモリにおける記憶領域の絶対アドレスであるアドレスデータを書き換えるアドレス書換部とを格納し、第２のＨＷ制御部は第２のＨＷ制御部を起動する起動部を含み、第１のＯＳによって起動されたアドレス書換部は、書換対象のアドレスデータが格納される記憶領域のアドレスである対象アドレスを取得し、対象アドレスに対応する記憶領域に格納されるアドレスデータを書き換え、起動部を起動し、起動部は、書き換えられたアドレスデータを用いて第２のＨＷ制御部を起動する。【選択図】図１
2015001757.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムが稼働する計算機を複数備える計算機システムであって、
前記複数の計算機の各々は、プロセッサ、前記プロセッサに接続される第１のメモリ、前記プロセッサに接続される第２のメモリ、前記プロセッサに接続されるＩ／Ｏデバイス、及び前記プロセッサに接続される記憶装置を有し、
前記複数のオペレーティングシステムは、第１のオペレーティングシステム及び第２のオペレーティングシステムを含み、
前記第２のメモリは、前記第１のオペレーティングシステムの起動時に、前記計算機が備えるハードウェアを制御し、前記第１のオペレーティングシステムの起動処理を実行する第１のハードウェア制御部を格納し、
前記記憶装置は、
前記第１のオペレーティングシステムの実行イメージである第１のオペレーティングシステムイメージと、
前記第１のオペレーティングシステムを起動する第１のオペレーティングシステムブートローダと、
前記第２のオペレーティングシステムの実行イメージである第２のオペレーティングシステムイメージと、
前記第２のオペレーティングシステムを起動する第２のオペレーティングシステムブートローダと、
前記第２のオペレーティングシステムの起動時に、前記計算機が備えるハードウェアを制御し、前記第２のオペレーティングシステムの起動処理を実行する第２のハードウェア制御部と、
前記第２のハードウェア制御部が参照する情報が格納される前記第１のメモリにおける記憶領域の絶対アドレスであるアドレスデータを書き換えるアドレス書換部と、を格納し、
前記第２のハードウェア制御部は、当該第２のハードウェア制御部を起動するための起動部を含み、
前記プロセッサは、電源が投入された場合、前記第２のメモリに格納される前記第１のハードウェア制御部を前記第１のメモリに書き込み、前記第１のハードウェア制御部を実行し、
前記第１のハードウェア制御部は、
前記記憶装置から前記第２のハードウェア制御部、及び前記アドレス書換部を読み出して、前記第１のメモリの所定の記憶領域に書き込み、
前記第２のハードウェア制御部に含まれる前記起動部が格納される記憶領域の先頭アドレスを取得して、ベースアドレスデータとして前記第１のメモリに書き込み、
前記記憶装置から前記第１のオペレーティングシステムブートローダを読み出して、前記第１のメモリに書き込み、
前記第１のメモリに書き込まれた第１のオペレーティングシステムブートローダを起動し、
前記第１のオペレーティングシステムブートローダは、
前記記憶装置から前記第１のオペレーティングシステムイメージを読み出して、前記第１のメモリに書き込み、
前記第１のメモリに書き込まれた第１のオペレーティングシステムイメージを実行することによって前記第１のオペレーティングシステムを起動し、
前記第１のオペレーティングシステムは、前記アドレス書換部を起動し、
前記アドレス書換部は、
前記第１のメモリに書き込まれたベースアドレスを取得し、
書換対象の前記アドレスデータが格納される記憶領域のアドレスである対象アドレスを取得し、
前記取得されたベースアドレスに基づいて、前記取得された対象アドレスに対応する記憶領域に格納される前記アドレスデータを書き換え、
前記起動部を起動し、
前記起動部は、前記書き換えられたアドレスデータを用いて、前記第２のハードウェア制御部を起動し、
前記第２のハードウェア制御部は、
前記記憶装置から前記第２のオペレーティングシステムブートローダを読み出して、前記第１のメモリに書き込み、
前記第１のメモリに書き込まれた第２のオペレーティングシステムブートローダを起動し、
前記第２のオペレーティングシステムブートローダは、
前記記憶装置から前記第２のオペレーティングシステムイメージを読み出して、前記第１のメモリに書き込み、
前記第１のメモリに書き込まれた第２のオペレーティングシステムイメージを実行することによって前記第２のオペレーティングシステムを起動することを特徴する計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記アドレス書換部は、
前記第２のハードウェア制御部から前記対象アドレスに関する情報を取得し、
前記取得された対象アドレスに対応する記憶領域に格納されるアドレスデータに前記ベースアドレスを加算することによって、当該アドレスデータを書き換えることを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記アドレス書換部は、
前記第２のハードウェア制御部の実行形式のファイルを参照することによって前記対象アドレスに関する情報を取得することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記記憶装置は、第１の記憶装置及び第２の記憶装置を含み、
前記第１の記憶装置は、前記第１のオペレーティングシステムイメージ、前記第１のオペレーティングシステムブートローダ、前記第２のハードウェア制御部、及び前記アドレス書換部を格納し、
前記第２の記憶装置は、前記第２のオペレーティングシステムイメージ、及び前記第２のオペレーティングシステムブートローダを格納することを特徴とする計算機システム。
【請求項５】
複数のオペレーティングシステムが稼働する計算機における起動方法であって、
前記計算機は、プロセッサ、前記プロセッサに接続される第１のメモリ、前記プロセッサに接続される第２のメモリ、前記プロセッサに接続されるＩ／Ｏデバイス、及び前記プロセッサに接続される記憶装置を備え、
前記複数のオペレーティングシステムは、第１のオペレーティングシステム及び第２のオペレーティングシステムを含み、
前記第２のメモリは、前記第１のオペレーティングシステムの起動時に、前記計算機が備えるハードウェアを制御し、前記第１のオペレーティングシステムの起動処理を実行する第１のハードウェア制御部を格納し、
前記記憶装置は、
前記第１のオペレーティングシステムの実行イメージである第１のオペレーティングシステムイメージと、
前記第１のオペレーティングシステムを起動する第１のオペレーティングシステムブートローダと、
前記第２のオペレーティングシステムの実行イメージである第２のオペレーティングシステムイメージと、
前記第２のオペレーティングシステムを起動する第２のオペレーティングシステムブートローダと、
前記第２のオペレーティングシステムの起動時に、前記計算機が備えるハードウェアを制御し、前記第２のオペレーティングシステムの起動処理を実行する第２のハードウェア制御部と、
前記第２のハードウェア制御部が参照する情報が格納される前記第１のメモリにおける記憶領域の絶対アドレスであるアドレスデータを書き換えるアドレス書換部と、を格納し、
前記第２のハードウェア制御部は、当該第２のハードウェア制御部を起動するための起動部を含み、
前記方法は、
前記プロセッサが、電源が投入された場合、前記第２のメモリに格納される前記第１のハードウェア制御部を前記第１のメモリに書き込み、前記第１のハードウェア制御部を実行する第１のステップと、
前記プロセッサによって実行される前記第１のハードウェア制御部が、前記記憶装置から前記第２のハードウェア制御部、及び前記アドレス書換部を読み出して、前記第１のメモリの所定の記憶領域に書き込む第２のステップと、
前記プロセッサによって実行される第１のハードウェア制御部が、前記第２のハードウェア制御部に含まれる前記起動部が格納される記憶領域の先頭アドレスを取得して、ベースアドレスデータとして前記第１のメモリに書き込む第３のステップと、
前記プロセッサによって実行される前記第１のハードウェア制御部が、前記記憶装置から前記第１のオペレーティングシステムブートローダを読み出して、前記第１のメモリに書き込む第４のステップと、
前記プロセッサによって実行される前記第１のハードウェア制御部が、前記第１のメモリに書き込まれた第１のオペレーティングシステムブートローダを起動する第５のステップと、
前記プロセッサによって実行される前記第１のオペレーティングシステムブートローダが、前記記憶装置から前記第１のオペレーティングシステムイメージを読み出して、前記第１のメモリに書き込む第６のステップと、
前記プロセッサによって実行される前記第１のオペレーティングシステムブートローダが、前記第１のメモリに書き込まれた第１のオペレーティングシステムイメージを実行することによって前記第１のオペレーティングシステムを起動する第７のステップと、
前記プロセッサによって実行される前記第１のオペレーティングシステムが、前記アドレス書換部を起動する第８のステップと、
前記プロセッサによって実行される前記アドレス書換部が、前記第１のメモリに書き込まれたベースアドレスを取得する第９のステップと、
前記プロセッサによって実行されるアドレス書換部が、書換対象の前記アドレスデータが格納される記憶領域のアドレスである対象アドレスを取得する第１０のステップと、
前記プロセッサによって実行されるアドレス書換部が、前記取得されたベースアドレスに基づいて、前記取得された対象アドレスに対応する記憶領域に格納される前記アドレスデータを書き換える第１１のステップと、
前記プロセッサによって実行されるアドレス書換部が、前記起動部を起動する第１２のステップと、
前記プロセッサによって実行される前記起動部は、前記書き換えられたアドレスデータを用いて、前記第２のハードウェア制御部を起動する第１３のステップと、
前記プロセッサによって実行される前記第２のハードウェア制御部が、前記記憶装置から前記第２のオペレーティングシステムブートローダを読み出して、前記第１のメモリに書き込む第１４のステップと、
前記プロセッサによって実行される前記第２のハードウェア制御部が、前記第１のメモリに書き込まれた第２のオペレーティングシステムブートローダを起動する第１５のステップと、
前記プロセッサによって実行される前記第２のオペレーティングシステムブートローダが、前記記憶装置から前記第２のオペレーティングシステムイメージを読み出して、前記第１のメモリに書き込む第１６のステップと、
前記プロセッサによって実行される前記第２のオペレーティングシステムブートローダが、前記第１のメモリに書き込まれた第２のオペレーティングシステムイメージを実行することによって前記第２のオペレーティングシステムを起動する第１７のステップと、を含むことを特徴する起動方法。
【請求項６】
請求項５に記載の起動方法であって、
前記第１０のステップでは、前記第２のハードウェア制御部から前記対象アドレスに関する情報を取得し、
前記第１１のステップでは、前記取得された対象アドレスに対応する記憶領域に格納されるアドレスデータに前記ベースアドレスを加算することによって、当該アドレスデータを書き換えることを特徴とする起動方法。
【請求項７】
請求項６に記載の起動方法であって、
前記第１０のステップでは、前記第２のハードウェア制御部の実行形式のファイルを参照することによって前記対象アドレスに関する情報を取得することを特徴とする起動方法。
【請求項８】
請求項７に記載の起動方法であって、
前記記憶装置は、第１の記憶装置及び第２の記憶装置を含み、
前記第１の記憶装置は、前記第１のオペレーティングシステムイメージ、前記第１のオペレーティングシステムブートローダ、前記第２のハードウェア制御部、及び前記アドレス書換部を格納し、
前記第２の記憶装置は、前記第２のオペレーティングシステムイメージ、及び前記第２のオペレーティングシステムブートローダを格納することを特徴とする起動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一つの計算機上に複数のＯＳが稼働する計算機システム、及び計算機の起動方法に関する。
【背景技術】
【０００２】
近年、物理計算機上のハードウェアリソースを有効に活用するために、一台の物理計算機上で二つ以上のＯＳ（オペレーティングシステム）を起動する技術が注目されている（例えば、特許文献１及び特許文献２参照）。
【０００３】
特許文献１には、「マルチオペレーティングシステム計算機は、優先度が設定された複数のタスクを優先度順に実行する第１のＯＳ（オペレーティングシステム）と、前記第１のＯＳと異なる第２のＯＳとを動作ＯＳとして交互に動作させるマルチオペレーティングシステム計算機であって、前記第１のＯＳが動作ＯＳとして動作しているときに前記複数のタスクのうち所定の優先度が設定された所定のタスクであって動作ＯＳの切替え契機を特定するための切替え契機タスクとして用いられるタスクが実行された場合に、動作ＯＳを前記第１のＯＳから前記第２のＯＳに切り替えるＯＳ切替え部」を備えることが記載されている。
【０００４】
また、特許文献２には、「第１のＯＳと第２のＯＳとの少なくとも２つのＯＳを起動するマルチＯＳ起動装置において、（１）メモリ領域を有し、前記メモリ領域に対してメモリ空間が定義される１次記憶部と、（２）セカンドブートローダと、前記第２のＯＳとを記憶する２次記憶部と、（３）ＣＰＵに対する制御情報を示すコンテキストであって前記第１のＯＳ用のコンテキストである第１のコンテキストで動作する前記第１のＯＳのもとで動作するファーストブートローダを前記第１のコンテキストで動作中の前記第１のＯＳのもとで動作させることにより、前記第１のＯＳが管理する第１のメモリ空間として前記第１のコンテキストにより前記１次記憶装置に対して定義された前記１次記憶部のメモリ領域に前記２次記憶部から前記セカンドブートローダと前記第２のＯＳとを前記ファーストブートローダにロードさせるＯＳ実行部と、（４）前記第１のメモリ空間として定義されたメモリ領域にロードされた前記セカンドブートローダを前記第１のコンテキストで動作中の前記第１のＯＳのもとで実行することにより前記第２のＯＳが管理する第２のメモリ空間として定義されるメモリ領域と前記セカンドブートローダ及び前記第２のＯＳがロードされたメモリ領域とを含む第３のメモリ空間を前記１次記憶部に対して定義する前記セカンドブートローダ用のコンテキストを前記セカンドブートローダに生成させると共に生成された前記セカンドブートローダ用のコンテキストへ前記第１のコンテキストから切り替えさせ、前記セカンドブートローダ用のコンテキストのもとで前記セカンドブートローダを実行することにより前記第３のメモリ空間に含まれる前記第２のメモリ空間として定義された前記１次記憶部のメモリ領域に前記ファーストブートローダによって前記１次記憶部のメモリ領域にロードされた前記第２のＯＳを前記セカンドブートローダにロードさせると共に前記第２のＯＳ用のコンテキストを生成させ、生成された前記第２のＯＳ用のコンテキストへ前記セカンドブートローダ用のコンテキストから切り替えさせ、前記第２のＯＳ用のコンテキストのもとで前記セカンドブートローダに前記第２のＯＳの起動を実行させるローダ実行部と」を備えることが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１４９３８５号公報
【特許文献２】国際公開第２００９／１１３３９４号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１及び特許文献２では、ＯＳ１のデバイスドライバが、外部記憶装置からＯＳ２のブートローダ及びイメージファイルを読み出し、ＯＳ２用のメモリ領域に書き込むことによって、ＯＳ２を起動させることを特徴とする。
【０００７】
しかし、セキュリティ上の理由で、ＯＳ１が、ＯＳ２のブートローダ及びイメージファイルが格納される記憶領域に対するアクセスが許可されていない場合がある。また、ＯＳ１のイメージファイル及びＯＳ２のイメージファイルが異なる外部記憶装置に格納されている場合、ＯＳ１のカーネルが古い等の理由によって、ＯＳ１が、ＯＳ２のイメージファイルが格納される外部記憶装置のデバイスドライバを使用できない場合がある。前述のように、セキュリティ及びハードウェア構成の制限によって、ＯＳ２を起動することができない場合が存在する。
【０００８】
本発明は、ＯＳ１が直接関与することなく、通常の起動処理と同様の手順に従ってＯＳ２を起動するためのシステム及び起動方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数のオペレーティングシステムが稼働する計算機を複数備える計算機システムであって、前記複数の計算機の各々は、プロセッサ、前記プロセッサに接続される第１のメモリ、前記プロセッサに接続される第２のメモリ、前記プロセッサに接続されるＩ／Ｏデバイス、及び前記プロセッサに接続される記憶装置を有し、前記複数のオペレーティングシステムは、第１のオペレーティングシステム及び第２のオペレーティングシステムを含み、前記第２のメモリは、前記第１のオペレーティングシステムの起動時に、前記計算機が備えるハードウェアを制御し、前記第１のオペレーティングシステムの起動処理を実行する第１のハードウェア制御部を格納し、前記記憶装置は、前記第１のオペレーティングシステムの実行イメージである第１のオペレーティングシステムイメージと、前記第１のオペレーティングシステムを起動する第１のオペレーティングシステムブートローダと、前記第２のオペレーティングシステムの実行イメージである第２のオペレーティングシステムイメージと、前記第２のオペレーティングシステムを起動する第２のオペレーティングシステムブートローダと、前記第２のオペレーティングシステムの起動時に、前記計算機が備えるハードウェアを制御し、前記第２のオペレーティングシステムの起動処理を実行する第２のハードウェア制御部と、前記第２のハードウェア制御部が参照する情報が格納される前記第１のメモリにおける記憶領域の絶対アドレスであるアドレスデータを書き換えるアドレス書換部と、を格納し、前記第２のハードウェア制御部は、当該第２のハードウェア制御部を起動するための起動部を含み、前記プロセッサは、電源が投入された場合、前記第２のメモリに格納される前記第１のハードウェア制御部を前記第１のメモリに書き込み、前記第１のハードウェア制御部を実行し、前記第１のハードウェア制御部は、前記記憶装置から前記第２のハードウェア制御部、及び前記アドレス書換部を読み出して、前記第１のメモリの所定の記憶領域に書き込み、前記第２のハードウェア制御部に含まれる前記起動部が格納される記憶領域の先頭アドレスを取得して、ベースアドレスデータとして前記第１のメモリに書き込み、前記記憶装置から前記第１のオペレーティングシステムブートローダを読み出して、前記第１のメモリに書き込み、前記第１のメモリに書き込まれた第１のオペレーティングシステムブートローダを起動し、前記第１のオペレーティングシステムブートローダは、前記記憶装置から前記第１のオペレーティングシステムイメージを読み出して、前記第１のメモリに書き込み、前記第１のメモリに書き込まれた第１のオペレーティングシステムイメージを実行することによって前記第１のオペレーティングシステムを起動し、前記第１のオペレーティングシステムは、前記アドレス書換部を起動し、前記アドレス書換部は、前記第１のメモリに書き込まれたベースアドレスを取得し、書換対象の前記アドレスデータが格納される記憶領域のアドレスである対象アドレスを取得し、前記取得されたベースアドレスに基づいて、前記取得された対象アドレスに対応する記憶領域に格納される前記アドレスデータを書き換え、前記起動部を起動し、前記起動部は、前記書き換えられたアドレスデータを用いて、前記第２のハードウェア制御部を起動し、前記第２のハードウェア制御部は、前記記憶装置から前記第２のオペレーティングシステムブートローダを読み出して、前記第１のメモリに書き込み、前記第１のメモリに書き込まれた第２のオペレーティングシステムブートローダを起動し、前記第２のオペレーティングシステムブートローダは、前記記憶装置から前記第２のオペレーティングシステムイメージを読み出して、前記第１のメモリに書き込み、前記第１のメモリに書き込まれた第２のオペレーティングシステムイメージを実行することによって前記第２のオペレーティングシステムを起動することを特徴する。
【発明の効果】
【００１０】
本発明によれば、第１のＯＳが直接関与することなく第２のＯＳを起動することができる。また、アドレス書換部がアドレスデータを書き換えることによって、第２のハードウェア制御部がどの記憶領域に書き込まれても正常に動作することができる。
【００１１】
前述した以外の課題、構成及び効果は、以下の実施形態の説明によって明らかにされる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例１における計算機システムの構成の一例を示す説明図である。
【図２】本発明の実施例１における第２のＨＷ制御プログラムの構成例を示す説明図である。
【図３】本発明の実施例１における第１のＨＷ制御プログラムの構成例を示す説明図である。
【図４】本発明の実施例１におけるアドレスデータ書換モジュールの構成例を示す説明図である。
【図５】本発明の実施例１におけるリソース範囲定義情報の一例を示す説明図である。
【図６】本発明の実施例１の書換対象アドレス情報の一例を示す説明図である。
【図７Ａ】本発明の実施例１における計算機システムの起動処理を説明するシーケンス図である。
【図７Ｂ】本発明の実施例１における計算機システムの起動処理を説明するシーケンス図である。
【図７Ｃ】本発明の実施例１における計算機システムの起動処理を説明するシーケンス図である。
【図７Ｄ】本発明の実施例１における計算機システムの起動処理を説明するシーケンス図である。
【図８】本発明の実施例１における第２の制御部用ローダのアドレスデータの変化の状態を示す説明図である。
【発明を実施するための形態】
【００１３】
以下、図面を用いて実施例について説明する。
【実施例１】
【００１４】
図１は、本発明の実施例１における計算機システムの構成の一例を示す説明図である。
【００１５】
本実施例の計算機システムは、物理計算機１０、第１の外部記憶装置２０、及び第２の外部記憶装置３０から構成される。物理計算機１０は、第１の外部記憶装置２０及び第２の外部記憶装置３０と直接、又は、ネットワークを介して接続される。ネットワークとしては、ＷＡＮ、及びＬＡＮ等が考えられる。なお、物理計算機１０は、装置内部に記憶装置を備えていてもよい。
【００１６】
物理計算機１０は、所定の処理を実行するＯＳが稼働する計算機である。本実施例では、第１のＯＳ２７０及び第２のＯＳ２８０の二つのＯＳが稼働するものとする。なお、第１のＯＳ２７０及び第２のＯＳ２８０は、一般的なＯＳ及び仮想化機能を提供するハイパバイザのいずれを適用してよい。以下の説明では、第１のＯＳ２７０を一般的なＯＳ、第２のＯＳ２８０をハイパバイザであるものとする。
【００１７】
また、本実施例では、第１のＯＳ２７０及び第２のＯＳ２８０を並列に稼働させる。具体的には、第１のＯＳ２７０の起動後、第２のＯＳ２８０を起動させる起動方式を採用する。また、第２のＯＳ２８０は、一般的な起動手順に沿って起動するようにする。
【００１８】
これによって、第１のＯＳ２７０によって第２のＯＳ２８０のＯＳイメージが扱われないため、セキュリティ面の課題を解決することができる。また、第１のＯＳ２７０のデバイスドライバに依存することなく第２のＯＳ２８０を起動することができる。
【００１９】
物理計算機１０は、ハードウェアリソース１００として複数のプロセッサ、複数のメモリ、複数のＩ／Ｏデバイス、及びＲＯＭ１０８を備える。
【００２０】
プロセッサは、メモリに格納されるプログラムを実行する。プロセッサがプログラムを実行することによって、ＯＳ等の機能が実現される。以下、プログラムを主体に処理を説明する場合、当該プログラムがプロセッサによって実行されていることを示す。
【００２１】
メモリは、プロセッサによって実行されるプログラム及び当該プログラムの実行に必要な情報を格納する。また、メモリは、各プログラムのワークエリアを含む。
【００２２】
Ｉ／Ｏデバイスは、外部装置と接続し、外部から情報を入力し、外部に情報を出力するためのデバイスである。例えば、Ｉ／Ｏデバイスとしては、ネットワークインタフェース、及びディスクインタフェース等が考えられる。
【００２３】
ＲＯＭ１０８は、ＯＳの起動時に用いられる第１のＨＷ（ハードウェア）制御プログラム２１０を格納するための専用の記憶媒体である。第１のＨＷ制御プログラム２１０は、第１の外部記憶装置２０等に格納されてもよい。なお、第１のＨＷ制御プログラム２１０としては、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ/Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）が考えられる。
【００２４】
第１のＨＷ制御プログラム２１０は、ＯＳの起動処理時に、物理計算機１０のハードウェアリソース１００を制御し、ＯＳブートローダ及びＯＳイメージ等、ＯＳの起動に必要なプログラムを外部記憶装置から読み出し、読み出されたプログラムをメモリに書き込む。
【００２５】
第１の外部記憶装置２０及び第２の外部記憶装置３０は、物理計算機１０がＯＳを起動するために必要なプログラム及び情報を格納する装置である。
【００２６】
第１の外部記憶装置２０及び第２の外部記憶装置３０は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶媒体が考えられる。また、第１の外部記憶装置２０及び第２の外部記憶装置３０は、コントローラ及び複数の記憶媒体を備えるストレージシステムであってもよい。
【００２７】
物理計算機１０は、第１の外部記憶装置２０及び第２の外部記憶装置３０からプログラム及び情報を読み出し、複数のＯＳを起動させる。ここで、第１の外部記憶装置２０及び第２の外部記憶装置３０に格納されるプログラム及び情報について説明する。
【００２８】
第１の外部記憶装置２０は、プログラムとして、第１のＯＳブートローダ２４０、第１のＯＳイメージ２５０、アドレスデータ書換モジュール２２０、及び第２のＨＷ制御プログラム２３０を格納し、また、情報としてリソース範囲定義情報２６０を格納する。
【００２９】
第１のＯＳイメージ２５０は、第１のＯＳ２７０のＯＳイメージである。
【００３０】
第１のＯＳブートローダ２４０は、第１のＯＳイメージ２５０を用いて第１のＯＳ２７０を起動する。本実施例では、第１のＯＳブートローダ２４０は、第１の外部記憶装置２０から第１のＯＳイメージ２５０を読み出し、第１のＯＳイメージ２５０を第１の分割メモリ１０２に書き込み、第１のＯＳ２７０を起動する。
【００３１】
第２のＨＷ制御プログラム２３０は、ＯＳの起動処理時に、物理計算機１０のハードウェアリソース１００を制御し、ＯＳブートローダ及びＯＳイメージ等、ＯＳの起動に必要なプログラムを外部記憶装置から読み出し、読み出されたプログラムをメモリに書き込む。
【００３２】
アドレスデータ書換モジュール２２０は、第２のＨＷ制御プログラム２３０の起動時にアドレスデータを書き換え、その後、第２のＨＷ制御プログラム２３０を起動する。ここで、アドレスデータは、第２のＨＷ制御プログラム２３０の起動時に参照される関数等が格納される記憶領域の先頭アドレス（ポインタ）である。
【００３３】
リソース範囲定義情報２６０は、ハードウェアリソース１００の割り当てに関する情報を格納する。なお、リソース範囲定義情報２６０の詳細については、図５を用いて後述する。
【００３４】
第２の外部記憶装置３０は、プログラムとして、第２のＯＳブートローダ２４５及び第２のＯＳイメージ２５５を格納する。
【００３５】
第２のＯＳイメージ２５５は、第２のＯＳ２８０のＯＳイメージである。
【００３６】
第２のＯＳブートローダ２４５は、第２のＯＳイメージ２５５を用いて第２のＯＳ２８０を起動する。本実施例では、第２のＯＳブートローダ２４５は、第２の外部記憶装置３０から第２のＯＳイメージ２５５を読み出し、第２のＯＳイメージ２５５を第２の分割メモリ１０５に書き込み、第２のＯＳ２８０を起動する。
【００３７】
なお、第２のＯＳブートローダ２４５及び第２のＯＳイメージ２５５は、第１の外部記憶装置２０に格納されてもよい。
【００３８】
ハードウェアリソース１００は、リソース範囲定義情報２６０に基づいて割り当てられる。本実施例では、ＯＳ等の各プログラムが排他的に使用するハードウェアリソースと、各プログラムが共有して使用するハードウェアリソースとに分けられる。
【００３９】
ここで、排他的に使用するハードウェアリソースは、当該ハードウェアリソースが割り当てられたプログラムが占有的に使用し、他のプログラムが使用できないハードウェアリソースを示す。
【００４０】
以下の説明では、リソース範囲定義情報２６０に基づいて分割されたハードウェアリソース１００を分割ハードウェアリソース１００と記載する。本実施例では、分割ハードウェアリソース１００には、分割プロセッサ、分割メモリ、分割共有メモリ、及び分割Ｉ／Ｏデバイスが含まれる。
【００４１】
また、以下の説明では、分割ハードウェアリソース、及び分割ハードウェアリソース上の稼働するプログラムをまとめてＯＳセグメントと記載する。本実施例では、一つのＯＳセグメントに一つのＯＳが稼働するものとする。
【００４２】
本実施例では、物理計算機１０には、第１のＯＳセグメント３０１及び第２のＯＳセグメント３０２の二つのＯＳセグメントが存在する。
【００４３】
第１のＯＳセグメント３０１には、第１の分割ハードウェアリソース１１１が割り当てられる。第１の分割ハードウェアリソース１１１は、第１の分割プロセッサ１０１、第１の分割メモリ１０２、第１の分割Ｉ／Ｏデバイス１０３、及び分割共有メモリ１０７を含む。また、第１の分割ハードウェアリソース１１１上では、第１のＨＷ制御プログラム２１０、第１のＯＳブートローダ２４０、及び第１のＯＳ２７０が稼働する。
【００４４】
第２のＯＳセグメント３０２には、第２の分割ハードウェアリソース１１２が割り当てられる。第２の分割ハードウェアリソース１１２は、第２の分割プロセッサ１０４、第２の分割メモリ１０５、第２の分割Ｉ／Ｏデバイス１０６、及び分割共有メモリ１０７を含む。また、アドレスデータ書換モジュール２２０、第２のＨＷ制御プログラム２３０、第２のＯＳブートローダ２４５、及び第２のＯＳ２８０が稼働する。
【００４５】
前述したように、各ＯＳセグメントに含まれるプログラムは、当該ＯＳセグメントに割り当てられた分割ハードウェアリソースのみを使用し、他のＯＳセグメントに割り当てられた分割ハードウェアリソースは使用しない。
【００４６】
ただし、後述するように、第２のＯＳセグメント用起動モジュール２７１を実行する第１の分割プロセッサ１０１は、第２のＯＳ２８０の起動時に、第２の分割プロセッサ１０４に起動命令を発行することによって、当該第２の分割プロセッサ１０４を起動させる。ただし、当該処理は、第２のＯＳセグメント３０２の初期起動時にのみ許可される処理である。また、当該処理は、単に、分割プロセッサを起動させる処理であり、第１のＯＳセグメント３０１が、占有的に使用するわけではないため、セキュリティ及びハードウェアリソースの割当ポリシ等の問題は発生しない。
【００４７】
ここで、ＯＳセグメント上で稼働するプログラムについて説明する。なお、第１の外部記憶装置２０と同一のプログラムについては説明を省略する。
【００４８】
第１のＯＳセグメント３０１上では、第１のＨＷ制御プログラム２１０、第１のＯＳブートローダ２４０、及び第１のＯＳ２７０が稼働する。
【００４９】
第１のＯＳ２７０は、第１の分割ハードウェアリソース１１１上で稼働するＯＳである。第１のＯＳ２７０は、第２のＯＳセグメント用起動モジュール２７１を含む。
【００５０】
第２のＯＳセグメント用起動モジュール２７１は、ＯＳ２を起動させるための命令を発効する。具体的には、第２のＯＳセグメント用起動モジュール２７１は、第２の分割プロセッサ１０４の起動を指示する。
【００５１】
なお、第２のＯＳセグメント用起動モジュール２７１を実行する第１の分割プロセッサ１０１が、第２の分割プロセッサ１０４を操作（起動）することになる。しかし、第２のＯＳセグメント３０２に割り当てられた第２の分割ハードウェアリソース１１２の初期起動時に限り許可される処理であり、セキュリティ面の問題も発生しない。
【００５２】
第２のＯＳセグメント３０２上では、アドレスデータ書換モジュール２２０、第２のＨＷ制御プログラム２３０、第２のＯＳブートローダ２４５、及び第２のＯＳ２８０が稼働する。
【００５３】
本実施例の第２のＯＳ２８０は、ハイパバイザに対応する、ハイパバイザは、第２の分割ハードウェアリソース１１２を用いて複数のＬＰＡＲ２９０を生成し、生成されたＬＰＡＲ２９０上で複数のゲストＯＳ２９５を稼働させる。本実施例のハイパバイザは、リソース管理部２８１及びプロセススケジュール部２８２を有する。
【００５４】
リソース管理部２８１は、リソース範囲定義情報２６０に基づいて、第２の分割ハードウェアリソース１１２を管理する。プロセススケジュール部２８２は、第２の分割ハードウェアリソース１１２を用いて生成されたＬＰＡＲ２９０上にゲストＯＳ２９５を稼働させる。
【００５５】
図２は、本発明の実施例１における第２のＨＷ制御プログラム２３０の構成例を示す説明図である。
【００５６】
第２のＨＷ制御プログラム２３０は、第２のＯＳ２８０の起動時に実行されるプログラムである。第２のＨＷ制御プログラム２３０は、第２の制御部用ローダ２３１、第２の制御部２３２及び書換対象アドレス情報２３３を含む。
【００５７】
第２の制御部用ローダ２３１は、第２の制御部２３２を起動する。具体的には、第２の制御部用ローダ２３１は、第２の分割メモリ１０５の空き領域に第２の制御部２３２を書き込み、当該第２の制御部２３２を起動する。
【００５８】
本実施例では、後述するアドレスデータ書換モジュール２２０によって、制御部用ローダ２３１が保持するアドレスデータに関する情報が変換される。
【００５９】
第２の制御部２３２は、第２の制御部用ローダ２３１によって起動された後、第２の分割ハードウェアリソース１１２を制御する。また、第２の制御部２３２は、第２の外部記憶装置３０から第２のＯＳブートローダ２４５を読み出し、第２の分割メモリ１０５に読み出された第２のＯＳブートローダ２４５を書き込む。その後、第２の制御部２３２は、第２の分割メモリ１０５に書き込まれた第２のＯＳブートローダ２４５を起動する。
【００６０】
書換対象アドレス情報２３３は、書換対象のアドレスデータが格納される記憶領域に関する情報を格納する。書換対象アドレス情報２３３の詳細については、図６を用いて後述する。
【００６１】
一般的な計算機には、計算機のハードウェアリソースを制御するＨＷ制御プログラムが存在する。ＨＷ制御プログラムは、ＯＳの起動時に、ＯＳイメージより先にメモリに書き込まれ、実行される。
【００６２】
図２に示すように、一般的なＨＷ制御プログラムは、制御部用ローダを含む。制御部用ローダは、計算機の起動時に最初に実行されるプログラムである。そのため、制御部用ローダは、関数等の一部のデータの読み出しについては、絶対アドレスで表記されたアドレスデータを参照するように設定されている。
【００６３】
二つのＯＳを独立に起動させるために、一つの計算機上に二つの異なるＨＷ制御プログラムを実行する場合、アドレスデータが重複することによって、制御部用ローダが正常に動作しない可能性がある。また、ＨＷ制御プログラムをそれぞれ異なる記憶領域に書き込んだ場合であっても、同様の問題が発生する。
【００６４】
すなわち、ＨＷ制御プログラムは、分割メモリに書き込まれた場合、格納される記憶領域が通常の記憶領域と異なる。そのため、アドレスデータが示す参照先のアドレスが不適切なアドレスとなり、制御部用ローダが正常に動作しない可能性がある。
【００６５】
本発明では、第２のＨＷ制御プログラム２３０が書き込まれる記憶領域に依存することなく、第２の制御部用ローダ２３１が正常に動作するための機能を提供する。
【００６６】
具体的には、アドレスデータ書換モジュール２２０が、第２のＨＷ制御プログラム２３０が書き込まれた記憶領域に対応させて、第２の制御部用ローダ２３１に設定されるアドレスデータを書き換える。これによって、参照先のアドレスが適切なアドレスに変更されるため、第２の制御部用ローダ２３１は、正常に関数等を呼び出し、処理を実行することができる。
【００６７】
なお、第２の制御部２３２は、第２の制御部用ローダ２３１によって第２の分割メモリ１０５の空き領域に書き込まれ、起動される。したがって、第２の制御部用ローダ２３１が正常に稼働することによって、第２の制御部２３２が第１の分割メモリ１０２上で稼働するという問題は発生しない。
【００６８】
図３は、本発明の実施例１における第１のＨＷ制御プログラム２１０の構成例を示す説明図である。
【００６９】
第１のＨＷ制御プログラム２１０は、第１のＯＳ２７０の起動時、すなわち、システム起動時に実行されるプログラムである。第１のＨＷ制御プログラム２１０は、第１の制御部用ローダ２１１、第１の制御部２１２、及びベースアドレスデータ２１３を含む。
【００７０】
第１の制御部用ローダ２１１は、第１の制御部２１２を起動する。具体的には、第１の制御部用ローダ２１１は、第１の分割メモリ１０２の空き領域に第１の制御部２１２を書き込み、当該第１の制御部２１２を起動する。
【００７１】
第１の制御部２１２は、第１の制御部用ローダ２１１によって起動された後、第１の分割ハードウェアリソース１１１を制御する。本実施例の第１の制御部２１２は、第１のＯＳ２７０を起動する前に、以下のような処理を実行する。
【００７２】
第１の制御部２１２は、アドレスデータ書換モジュール２２０、及び第２のＨＷ制御プログラム２３０を第１の外部記憶装置２０から読み出し、第２の分割メモリ１０５に読み出されたアドレスデータ書換モジュール２２０、及び第２のＨＷ制御プログラム２３０を書き込む。
【００７３】
第１の制御部２１２は、ＨＷ制御プログラム２に含まれる第２の制御部用ローダ２３１が格納される記憶領域の先頭アドレスを取得し、取得されたアドレスをベースアドレスデータ２１３として保持する。さらに、第１の制御部２１２は、ベースアドレスデータ２１３を、第２の分割メモリ１０５の特定の記憶領域に書き込む。
【００７４】
なお、当該記憶領域は、予め、定義された記憶領域であるものとする。また、アドレスデータ書換モジュール２２０は、当該記憶領域を参照するように予め設定されているものとする。
【００７５】
前述した処理が完了した後、第１の制御部２１２は、第１の外部記憶装置２０から第１のＯＳブートローダ２４０を読み出し、第１の分割メモリ１０２に読み出された第１のＯＳブートローダ２４０を書き込む。その後、第１の制御部２１２は、第１の分割メモリ１０２に書き込まれた第１のＯＳブートローダ２４０を起動する。
【００７６】
ベースアドレスデータ２１３は、第２の制御部用ローダ２３１が格納される記憶領域の先頭アドレスである。
【００７７】
図４は、本発明の実施例１におけるアドレスデータ書換モジュール２２０の構成例を示す説明図である。
【００７８】
アドレスデータ書換モジュール２２０は、第２の制御部用ローダ２３１が保持するアドレスデータを変換する。アドレスデータ書換モジュール２２０は、第１のＯＳ２７０起動前に、第１のＨＷ制御プログラム２１０によって、第１の外部記憶装置２０から読み出され、第２の分割メモリ１０５に書き込まれる。また、アドレスデータ書換モジュール２２０は、第２のＯＳセグメント用起動モジュール２７１によって起動される。
【００７９】
アドレスデータ書換モジュール２２０は、アドレスデータ書換部２２１、及び第２のＨＷ制御プログラム用ローダ２２２を含む。
【００８０】
アドレスデータ書換部２２１は、第２の制御部用ローダ２３１におけるアドレスデータを変換する。具体的には、以下のような処理が実行される。
【００８１】
アドレスデータ書換部２２１は、第２のＨＷ制御プログラム２３０のリロケーションセクションを参照することによって、アドレスデータが格納される記憶領域のアドレスを取得する。
【００８２】
アドレスデータ書換部２２１は、取得されたアドレスに対応する記憶領域に格納されるアドレスデータに、ベースアドレスデータ２１３を加算することによって、当該アドレスデータを書き換える。
【００８３】
なお、予め、第２のＨＷ制御プログラム２３０にアドレスデータが格納される記憶領域のアドレスの情報が含まれる場合、アドレスデータ書換モジュール２２０は、第２のＨＷ制御プログラム２３０に含まれる情報を参照することによって、当該アドレスデータが含まれる記憶領域のアドレスを取得してもよい。
【００８４】
第２のＨＷ制御プログラム用ローダ２２２は、第２のＨＷ制御プログラム２３０に含まれる第２の制御部用ローダ２３１のアドレスデータが書き換えられた後、当該第２の制御部用ローダ２３１を起動する。
【００８５】
書き換えられたアドレスデータは、第２の分割メモリ１０５の所定の記憶領域に対応するアドレスデータに変換されているため、第２の制御部用ローダ２３１は、書き換えられたアドレスデータに基づいて、関数等を正しく参照することができる。したがって、第２の制御部用ローダ２３１は、正常に動作することができる。
【００８６】
図５は、本発明の実施例１におけるリソース範囲定義情報２６０の一例を示す説明図である。
【００８７】
リソース範囲定義情報２６０は、分割ハードウェアリソースとして割り当てるハードウェアリソース１００の範囲（割当量、割当数等）に関する情報を格納する。本実施例では、リソース範囲定義情報２６０は、プロセッサの定義情報２６１、メモリの定義情報２６２、及びＩ／Ｏデバイスの定義情報２６３を含む。
【００８８】
プロセッサの定義情報２６１は、プロセッサ番号２６１１及び属性２６１２を含む。プロセッサ番号２６１１は、物理計算機１０が備えるプロセッサを一意に識別するための識別番号である。属性２６１２は、プロセッサの割り当て属性を示す情報である。
【００８９】
各ＯＳセグメントが共有して使用するプロセッサの場合、属性２６１２には共有して使用する旨の情報が格納される。例えば、属性２６１２には「共有」が格納される。
【００９０】
また、ＯＳセグメントが占有的に使用するプロセッサの場合、属性２６１２にはＯＳセグメントを特定するための情報が格納される。例えば、第１のＯＳセグメント３０１に割り当てられるプロセッサの場合、属性２６１２には「第１の分割プロセッサ」が格納される。これによって、各ＯＳセグメントが占有的に使用するプロセッサを定義することができる。
【００９１】
図５に示す例では、プロセッサ番号２６１１が奇数の識別番号であるプロセッサは、第１のＯＳセグメント３０１に割り当てられる第１の分割プロセッサ１０１として定義され、プロセッサ番号２６１１が偶数の識別番号であるプロセッサは、第２のＯＳセグメント３０２に割り当てられる第２の分割プロセッサ１０４として定義される。
【００９２】
メモリの定義情報２６２は、範囲始点２６２１、範囲終点２６２２、及び属性２６２３を含む。
【００９３】
範囲始点２６２１及び範囲終点２６２２は、分割メモリとして割り当てる記憶領域の始点及び終点のアドレスである。属性２６２３は、記憶領域の割り当て属性を示す情報である。なお、範囲始点２６２１及び範囲終点２６２２の代わりに、記憶領域の先頭アドレス及び記憶領域の長さを、記憶領域を特定する情報として用いてもよい。
【００９４】
各ＯＳセグメントが共有して使用する記憶領域、すなわち、分割共有メモリの場合、属性２６２３には「共有」が格納される。
【００９５】
また、ＯＳセグメントが占有的に使用する記憶領域の場合、属性２６２３にはＯＳセグメントを特定するための情報が格納される。例えば、第１のＯＳセグメント３０１に割り当てられる記憶領域の場合、属性２６２３には「第１の分割メモリ」が格納される。これによって、各ＯＳセグメントが占有的に使用する記憶領域、すなわち、分割メモリを定義することができる。
【００９６】
図５に示す例では、物理アドレス１から物理アドレス２の範囲の記憶領域は、第１のＯＳセグメント３０１に割り当てられる第１の分割メモリ１０２として定義され、物理アドレス３から物理アドレス４の範囲の記憶領域は、第１のＯＳセグメント３０１に割り当てられる第２の分割メモリ１０５として定義される。また、物理アドレス２から物理アドレス３の範囲の記憶領域は、第１のＯＳセグメント３０１及び第２のＯＳセグメント３０２に割り当てられる分割共有メモリ１０７として定義される。
【００９７】
Ｉ／Ｏデバイスの定義情報２６３は、Ｉ／Ｏデバイス番号２６３１及び属性２６３２を含む。Ｉ／Ｏデバイス番号２６３１は、物理計算機１０が備えるＩ／Ｏを一意に識別するための識別番号である。属性２６３２は、Ｉ／Ｏデバイスの割り当て属性を示す情報である。
【００９８】
各ＯＳセグメントが共有して使用するＩ／Ｏデバイスの場合、属性２６３２には共有して使用する旨の情報が格納される。例えば、属性２６３２には「共有」が格納される。
【００９９】
また、ＯＳセグメントが占有的に使用するＩ／Ｏデバイスの場合、属性２６３２にはＯＳセグメントを特定するための情報が格納される。例えば、第１のＯＳセグメント３０１に割り当てられるＩ／Ｏデバイスの場合、属性２６１２には「第１の分割Ｉ／Ｏデバイス」が格納される。これによって、各ＯＳセグメントが占有的に使用するＩ／Ｏデバイスを定義することができる。
【０１００】
図５に示す例では、Ｉ／Ｏデバイス番号２６３１が奇数の識別番号であるＩ／Ｏデバイスは、第１のＯＳセグメント３０１に割り当てられる第１の分割Ｉ／Ｏデバイス１０３として定義され、Ｉ／Ｏデバイス番号２６３１が偶数の識別番号のＩ／Ｏデバイスは、第２のＯＳセグメント３０２に割り当てられる第２の分割Ｉ／Ｏデバイス１０６として定義される。
【０１０１】
図６は、本発明の実施例１の書換対象アドレス情報２３３の一例を示す説明図である。
【０１０２】
書換対象アドレス情報２３３は、第２の制御部用ローダ２３１が格納される記憶領域の先頭アドレスからのオフセットを格納する。
【０１０３】
図７Ａ、図７Ｂ、図７Ｃ、及び図７Ｄは、本発明の実施例１における計算機システムの起動処理を説明するシーケンス図である。
【０１０４】
物理計算機１０に電源が投入されると、まず、ＲＯＭ１０８に格納される第１のＨＷ制御プログラム２１０の第１の制御部用ローダ２１１が起動する。第１の制御部用ローダ２１１は、第１のＨＷ制御プログラム２１０をメモリに書き込み、第１の制御部２１２を起動する（ステップＳ１０１）。その後、第１の制御部用ローダ２１１は、処理を終了する（ステップＳ１０２）。
【０１０５】
本実施例では、第１の分割プロセッサ１０１に含まれる一つのプロセッサが、第１の制御部用ローダ２１１を実行し、また、第１の制御部用ローダ２１１によって起動された第１の制御部２１２を実行する。また、第１の制御部２１２は、第１の分割メモリ１０２の記憶領域に書き込まれる。
【０１０６】
なお、第１の制御部用ローダ２１１及び第１の制御部２１２を実行するプロセッサ、及び第１のＨＷ制御プログラム２１０が書き込まれる記憶領域は、前述したものに限定されず、システム構成に合わせて適宜変更できる。
【０１０７】
以下の説明では、第２の制御部用ローダ２３１を実行する一つの第１の分割プロセッサ１０１を第１の起動用プロセッサとも記載する。
【０１０８】
第１の制御部２１２は、起動後、第１の外部記憶装置２０から、リソース範囲定義情報２６０を読み出し、読み出されたリソース範囲定義情報２６０を分割共有メモリ１０７に書き込む（ステップＳ１１１）。
【０１０９】
第１の制御部２１２は、第１の外部記憶装置２０からアドレスデータ書換モジュール２２０及び第２のＨＷ制御プログラム２３０を読み出し、リソース範囲定義情報２６０に基づいて、読み出されたアドレスデータ書換モジュール２２０及び第２のＨＷ制御プログラム２３０を第２の分割メモリ１０５に書き込む（ステップＳ１１２）。
【０１１０】
第１の制御部２１２は、第２の分割メモリ１０５に書き込まれた第２のＨＷ制御プログラム２３０に含まれる第２の制御部用ローダ２３１が格納される記憶領域の先頭アドレスを取得する（ステップＳ１１３）。第１の制御部２１２は、取得された先頭アドレスをベースアドレスデータ２１３として保持する。
【０１１１】
第１の制御部２１２は、リソース範囲定義情報２６０に基づいて、第２の分割メモリ１０５にベースアドレスデータ２１３を書き込む（ステップＳ１１４）。本実施例では、第１の制御部２１２は、第２の分割メモリ１０５の記憶領域のうち、予め、定義された記憶領域にベースアドレスデータ２１３を書き込む。
【０１１２】
第１の制御部２１２は、第１のＯＳブートローダ２４０を第１の外部記憶装置２０から読み出し、第１の分割メモリ１０２に読み出された第１のＯＳブートローダ２４０を書き込み、第１のＯＳブートローダ２４０を起動する（ステップＳ１１５）。その後、第１の制御部２１２は、処理を終了する。第１のＯＳブートローダ２４０は、第１の起動用プロセッサによって実行される。
【０１１３】
なお、第１の制御部２１２は、第２の分割メモリ１０５へのアクセスを行っているが、第１のＯＳ２７０起動前の処理であり、第１のＯＳ２７０によって第２のＯＳ２８０のデータを直接扱われることはない。したがって、セキュリティ上の問題は発生しない。
【０１１４】
第１のＯＳブートローダ２４０は、起動後、第１の外部記憶装置２０から第１のＯＳイメージ２５０を読み出し、リソース範囲定義情報２６０に基づいて、読み出された第１のＯＳイメージ２５０を第１の分割メモリ１０２に書き込む（ステップＳ１２１）。
【０１１５】
第１のＯＳブートローダ２４０は、第１のＯＳイメージ２５０を用いて、第１のＯＳ２７０を起動する（ステップＳ１２２）。その後、第１のＯＳブートローダ２４０は、処理を終了する。第１の起動用プロセッサが、第１のＯＳイメージ２５０を用いて、第１のＯＳ２７０を起動する。
【０１１６】
第１のＯＳ２７０は、起動後、リソース範囲定義情報２６０に基づいて、第１のＯＳ２７０が使用する第１の分割プロセッサ１０１を起動する（ステップＳ１３１）。これ以降、第１のＯＳ２７０は、第１の分割プロセッサ１０１を用いて稼働する。
【０１１７】
第１のＯＳ２７０は、第２のＯＳセグメント用起動モジュール２７１を起動する（ステップＳ１３２）。その後、第１のＯＳ２７０は、通常の処理を実行する。なお、本発明は、第１のＯＳ２７０が実行する処理の種類に限定されない。
【０１１８】
第２のＯＳセグメント用起動モジュール２７１は、起動後、第２の分割プロセッサ１０４を起動させ、アドレスデータ書換モジュール２２０の起動を指示する（ステップＳ１４１）。その後、第２のＯＳセグメント用起動モジュール２７１は、処理を終了する。
【０１１９】
具体的には、第２のＯＳセグメント用起動モジュール２７１は、第２の分割プロセッサ１０４のうちの少なくとも一つのプロセッサの起動命令を発行する。以下、第２のＯＳセグメント用起動モジュール２７１によって起動される第２の分割プロセッサ１０４を第２の起動用プロセッサとも記載する。
【０１２０】
なお、ステップＳ１４１の処理は、第２のＯＳセグメント３０２の初期起動時にのみ許可される処理である。また、当該処理は、単に、分割プロセッサを起動させる処理であり、第１のＯＳセグメント３０１が、占有的に使用するわけではないため、セキュリティ及びハードウェアリソースの割当ポリシ等の問題は発生しない。
【０１２１】
第２のＯＳセグメント用起動モジュール２７１によって起動された第２の起動用プロセッサは、リソース範囲定義情報２６０に基づいて、第２の分割メモリ１０５に書き込まれるアドレスデータ書換モジュール２２０を実行する。これによって、最初に、アドレスデータ書換部２２１が起動される。
【０１２２】
アドレスデータ書換部２２１は、起動後、第２の制御部用ローダ２３１に設定されるアドレスデータを書き換える（ステップＳ２０１）。具体的には、以下のような処理が実行される。
【０１２３】
まず、アドレスデータ書換部２２１は、第２の分割メモリ１０５に書き込まれた第２のＨＷ制御プログラム２３０から書換対象アドレス情報２３３を取得する。これによって、書換対象のアドレスデータが特定される。
【０１２４】
アドレスデータ書換部２２１は、第２の分割メモリ１０５に書き込まれるベースアドレスデータ２１３を取得する。
【０１２５】
アドレスデータ書換部２２１は、書換対象アドレス情報２３３に基づいて、書換対象のアドレスデータが格納される記憶領域のアドレスデータに、ベースアドレスデータ２１３の値を加算することによって、アドレスデータを書き換える。例えば、第２の制御部用ローダ２３１のバイナリコードが書き換えられる。
【０１２６】
以上がステップＳ２０１の処理の説明である。
【０１２７】
次に、アドレスデータ書換部２２１は、第２のＨＷ制御プログラム用ローダ２２２を起動する（ステップＳ２０２）。その後、アドレスデータ書換部２２１は、処理を終了する。第２のＨＷ制御プログラム用ローダ２２２は、第２の起動用プロセッサによって実行される。
【０１２８】
第２のＨＷ制御プログラム用ローダ２２２は、起動後、第２の制御部用ローダ２３１を起動する（ステップＳ２１１）。その後、第２のＨＷ制御プログラム用ローダ２２２は、処理を終了する。第２の制御部用ローダ２３１は、第２の起動用プロセッサによって実行される。
【０１２９】
第２の制御部用ローダ２３１は、起動後、第２の制御部２３２を起動する（ステップＳ２２１）。その後、第２の制御部用ローダ２３１は、処理を終了する。第２の制御部２３２は、第２の起動用プロセッサによって実行される。
【０１３０】
本実施例では、第２の制御部用ローダ２３１は、書き換えられたアドレスデータを用いて処理を実行するため、不正なアドレスに基づくエラーは発生しない。なお、第２の制御部用ローダ２３１が実行する処理は、公知のものであるため詳細な説明は省略する。
【０１３１】
第２の制御部２３２は、第２のＯＳブートローダ２４５を第２の外部記憶装置３０から読み出し、第２の分割メモリ１０５に読み出された第２のＯＳブートローダ２４５を書き込み、第２のＯＳブートローダ２４５を起動する（ステップＳ２３１）。その後、第２の制御部２３２は、処理を終了する。第２のＯＳブートローダ２４５は、第２の起動用プロセッサによって実行される。
【０１３２】
第２のＯＳブートローダ２４５は、起動後、第２の外部記憶装置３０から第２のＯＳイメージ２５５を読み出し、リソース範囲定義情報２６０に基づいて、読み出された第２のＯＳイメージ２５５を第２の分割メモリ１０５に書き込む（ステップＳ２４１）。
【０１３３】
第２のＯＳブートローダ２４５は、第２のＯＳイメージ２５５を用いて、第２のＯＳ２８０を起動する（ステップＳ２４２）。その後、第２のＯＳブートローダ２４５は、処理を終了する。第２のプロセッサが、第２のＯＳイメージ２５５を用いて、第２のＯＳ２８０を起動する。第２のＯＳ２８０は、第２の起動用プロセッサによって実行される。
【０１３４】
第２のＯＳ２８０は、起動後、リソース範囲定義情報２６０に基づいて、第２のＯＳ２８０が使用する第２の分割プロセッサ１０４を起動する（ステップＳ２５１）。これ以降、第２のＯＳ２８０は、第２の分割プロセッサ１０４を用いて稼働する。
【０１３５】
図８は、本発明の実施例１における第２の制御部用ローダ２３１のアドレスデータの変化の状態を示す説明図である。
【０１３６】
記憶領域４００は、物理計算機１０が備えるメモリによって提供されるメモリの記憶領域を示す。本実施例では、Ｐ＿Ａｄ１（物理アドレス１）からＰ＿Ａｄ１（物理アドレス２）までの記憶領域が第１の分割メモリ１０２に対応し、Ｐ＿Ａｄ２（物理アドレス２）からＰ＿Ａｄ３（物理アドレス３）までの記憶領域が分割共有メモリ１０７に対応し、Ｐ＿Ａｄ３（物理アドレス３）からＰ＿Ａｄ４（物理アドレス４）までの記憶領域が第２の分割メモリ１０５に対応する。
【０１３７】
また、メモリマップ４０１は、アドレスデータが書き換えられる前の第２の制御部用ローダ２３１のメモリマップを示し、メモリマップ４０２は、アドレスデータが書き換えられた後の第２の制御部用ローダ２３１のメモリマップを示す。
【０１３８】
図８に示す例では、メモリマップ４０１、４０２の太枠の範囲、すなわち、Ａｄ＿１からＡｄ＿２９までの範囲に含まれる記憶領域が書換対象のアドレスデータが格納される記憶領域である。
【０１３９】
図８に示すように、アドレスデータ書換部２２１によって、各記憶領域に格納されるアドレスデータは、元のアドレスデータにベースアドレスデータ２１３の値が加算された値に書き換えられる。
【０１４０】
これによって、第２の制御部用ローダ２３１は、第２の分割メモリ１０５内の所定のアドレスを参照することによって、正常に動作することができる。すなわち、第２のＨＷ制御プログラム２３０がどの記憶領域に書き込まれても、当該第２のＨＷ制御プログラム２３０を正常に動作させることが可能となる。
【０１４１】
以上で説明したように、本発明によれば、第２のＨＷ制御プログラム２３０が第２のＯＳ２８０の起動処理を行うため、第１のＯＳ２７０が直接関与することなく、第２のＯＳ２８０を起動することができる。
【０１４２】
また、第２のＨＷ制御プログラム２３０に含まれる第２の制御部用ローダ２３１のアドレスデータを予め書き換えることによって、第２のＨＷ制御プログラム２３０がどの記憶領域に書き込まれても起動させることができる。
【０１４３】
したがって、第１のＯＳ２７０が第２のＯＳ２８０のデータを扱うことができないシステム構成の場合、第１のＨＷ制御プログラム２１０のデバイスドライバが、第２の外部記憶装置３０に対応していない場合であっても、第２のＯＳ２８０を起動することができる。
【０１４４】
（変形例１）
実施例１では、第２のＨＷ制御プログラム２３０が書換対象アドレス情報２３３を保持していたが、本発明はこれに限定されない。この場合、ステップＳ２０１の処理は以下のようになる。
【０１４５】
アドレスデータ書換部２２１は、第２の制御部用ローダ２３１の実行形式のファイルを参照し、当該実行形式のファイルに含まれるリロケーションセクション（リロケーション情報）に基づいて、書換対象のアドレスデータが含まれる記憶領域を特定する。
【０１４６】
なお、第２の制御部用ローダ２３１の実行形式のファイルは、予め、第１の外部記憶装置２０等に格納し、第１の制御部２１２が第２の分割メモリ１０５に書き込む方法が考えられる。
【０１４７】
その他の処理は、実施例１と同一であるため説明を省略する。
【０１４８】
（変形例２）
実施例１では、第１の制御部２１２が、アドレスデータ書換モジュール２２０及び第２のＨＷ制御プログラム２３０を第２の分割メモリ１０５に書き込んでいたが、本発明はこれに限定されない。
【０１４９】
一つの方法としては、第１のＯＳセグメント３０１上で稼働する任意のプログラムが、アドレスデータ書換モジュール２２０及び第２のＨＷ制御プログラム２３０を第２の分割メモリ１０５に書き込む。この場合、第２の分割メモリ１０５への一時的なアクセスを可能とするために、以下のような処理が必要となる。
【０１５０】
任意のプログラムは、第２の分割メモリ１０５の一部の記憶領域に対して、書き込み可能なページテーブルを生成し、当該ページテーブルを参照することによって、第１のＯＳ２７０用の仮想メモリ空間に第２の分割メモリ１０５の一部の記憶領域をマッピングする。
【０１５１】
また、アドレスデータ書換モジュール２２０及び第２のＨＷ制御プログラム２３０が第２の分割メモリ１０５に書き込まれた後、任意のプログラムは、第１のＯＳ２７０用の仮想メモリ空間にマップされた第２の分割メモリ１０５の一部の記憶領域のマッピングを解除する。これによって、第２の分割メモリ１０５へのアクセスが禁止される。
【０１５２】
他の方法としては、第１の制御部２１２が、第２の分割メモリ１０５ではなく、分割共有メモリ１０７に、アドレスデータ書換モジュール２２０及び第２のＨＷ制御プログラム２３０を書き込む。この場合、第２の分割プロセッサ１０４が、分割共有メモリ１０７にアクセスするように設定すればよい。
【０１５３】
各実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【０１５４】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０１５５】
１０  物理計算機
２０  第１の外部記憶装置
３０  第２の外部記憶装置
１００  ハードウェアリソース
１０１  第１の分割プロセッサ
１０２  第１の分割メモリ
１０３  第１の分割Ｉ／Ｏデバイス
１０４  第２の分割プロセッサ
１０５  第２の分割メモリ
１０６  第２の分割Ｉ／Ｏデバイス
１０７  分割共有メモリ
１０８  ＲＯＭ
１１１  第１の分割ハードウェアリソース
１１２  第２の分割ハードウェアリソース
２１０  第１のＨＷ制御プログラム
２１１  第１の制御部用ローダ
２１２  第１の制御部
２１３  ベースアドレスデータ
２２０  アドレスデータ書換モジュール
２２１  アドレスデータ書換部
２２２  第２のＨＷ制御プログラム用ローダ
２３０  第２のＨＷ制御プログラム
２３１  第２の制御部用ローダ
２３２  第２の制御部
２３３  書換対象アドレス情報
２４０  第１のＯＳブートローダ
２４５  第２のＯＳブートローダ
２５０  第１のＯＳイメージ
２５５  第２のＯＳイメージ
２６０  リソース範囲定義情報
２６１  プロセッサの定義情報
２６２  メモリの定義情報
２６３  Ｉ／Ｏデバイスの定義情報
２７０  第１のＯＳ
２７１  第２のＯＳセグメント用起動モジュール
２８０  第２のＯＳ
２８１  リソース管理部
２８２  プロセススケジュール部
２９０  ＬＰＡＲ
２９５  ゲストＯＳ
３０１  第１のＯＳセグメント
３０２  第２のＯＳセグメント
４００  記憶領域
４０１  メモリマップ
４０２  メモリマップ
【図１】
2015001757.tif 000003
【図２】
2015001757.tif 000004
【図３】
2015001757.tif 000005
【図４】
2015001757.tif 000006
【図５】
2015001757.tif 000007
【図６】
2015001757.tif 000008
【図７Ａ】
2015001757.tif 000009
【図７Ｂ】
2015001757.tif 000010
【図７Ｃ】
2015001757.tif 000011
【図７Ｄ】
2015001757.tif 000012
【図８】
2015001757.tif 000013