複数のCPUコアと、該複数のCPUコアからアクセス可能な主記憶とを有するマルチコアプロセッサにおいて、第1のCPUコア上で動作し、前記主記憶のうちの第1のメモリ領域を専有する現用系プログラムと、第2のCPUコア上で動作し、前記主記憶のうちの前記第1のメモリ領域と重複しない第2のメモリ領域を専有し、前記現用系プログラムに障害が発生したことを検出すると、前記現用系プログラムで実行されていた業務処理を引き継ぐ待機系プログラムとを有するマルチコアプロセッサ。第3のCPUコア上で動作し、前記現用系プログラムに対して前記第1のCPUコアと前記第1のメモリ領域とを専用リソースとして割り当て、前記待機系プログラムに対して前記第2のCPUコアと前記第2のメモリ領域とを専用リソースとして割り当て、前記現用系プログラムおよび前記待機系プログラムの実行を開始させる仮想化制御プログラムを有する請求項1に記載のマルチコアプロセッサ。前記複数のCPUコアは、それぞれ専用のキャッシュメモリを有する請求項2に記載のマルチコアプロセッサ。前記仮想化制御プログラムは、前記第1のCPUコアの前記キャッシュメモリと前記第2のCPUコアの前記キャッシュメモリとの間で行われる、キャッシュコヒーレンシ制御のためのキャッシュ更新状態の情報の交換を抑止する設定を行った後、前記現用系プログラムおよび前記待機系プログラムの実行を開始させる請求項3に記載のマルチコアプロセッサ。前記複数のCPUコアの前記キャッシュメモリは、ソフトウェアビジブルなフラグを他のキャッシュメモリ対応に有し、前記フラグの値に基づいて前記キャッシュ更新状態の情報の交換を行う他のキャッシュメモリを判断するキャッシュ制御部を有し、前記仮想化制御プログラムによる前記設定では、前記第1のCPUコアの前記キャッシュメモリと前記第2のCPUコアの前記キャッシュメモリとの間の前記キャッシュ更新状態の情報の交換を抑止するように前記フラグの値を設定する請求項4に記載のマルチコアプロセッサ。複数のCPUコアと、該複数のCPUコアからアクセス可能な主記憶とを有するマルチコアプロセッサにおけるプログラム実行方法であって、前記主記憶のうちの第1のメモリ領域を専有する現用系プログラムを、第1のCPUコア上で実行し、前記主記憶のうちの前記第1のメモリ領域と重複しない第2のメモリ領域を専有する待機系プログラムを、第2のCPUコア上で実行し、前記待機系プログラムが、前記現用系プログラムに障害が発生したことを検出すると、前記現用系プログラムで実行されていた業務処理を引き継ぐプログラム実行方法。複数のCPUコアと、該複数のCPUコアからアクセス可能な主記憶とを有するマルチコアプロセッサに、現用系プログラムに対して、第1のCPUコアと前記主記憶のうちの第1のメモリ領域とを専有リソースとして割り当てる処理と、前記現用系プログラムに障害が発生したことを検出すると前記現用系プログラムで実行されていた業務処理を引き継ぐ待機系プログラムに対して、第2のCPUコアと前記主記憶のうちの前記第1のメモリ領域と重複しない第2のメモリ領域とを専有リソースとして割り当てる処理とを行わせるための仮想化制御プログラム。特許文献1に記載の技術によれば、一つのプロセッサを用いてホットスタンバイ機能を実現できるため、コスト面で有利である。しかし、CPU上のキャッシュメモリに復旧困難な障害が発生する等、プロセッサにハードウェア障害が発生すると、現用系および待機系の双方がダウンしてしまう。特許文献2に記載される、CPUコアを各OSに専用に割り当てる技術を特許文献1に適用し、現用系と待機系とにそれぞれ異なるCPUコアを割り当てるようにすれば、何れかのCPUコアに復旧困難な障害が発生してもその影響は障害の発生したCPUコアを使用する系のみに止まるため、現用系および待機系の双方が一度にダウンすることはなくなる。しかし、現用系と待機系とは主記憶を共有しているため、主記憶に復旧困難な障害が発生すると、現用系および待機系の双方がダウンしてしまうことになる。本発明の目的は、上述したような課題、すなわち、CPUコアや主記憶に復旧困難な障害が発生すると現用系および待機系が一度にダウンする危険性がある、という課題を解決することにある。本発明の一形態にかかるマルチコアプロセッサは、複数のCPUコアと、この複数のCPUコアからアクセス可能な主記憶とを有するマルチコアプロセッサにおいて、第1のCPUコア上で動作し、上記主記憶のうちの第1のメモリ領域を専有する現用系プログラムと、第2のCPUコア上で動作し、上記主記憶のうちの上記第1のメモリ領域と重複しない第2のメモリ領域を専有し、上記現用系プログラムに障害が発生したことを検出すると、上記現用系プログラムで実行されていた業務処理を引き継ぐ待機系プログラムとを有する、といった構成を採る。本発明は上述したような構成を有するため、CPUコアや主記憶に復旧困難な障害が発生しても現用系および待機系が一度にダウンすることはなくなる。次に本発明の実施の形態について図面を参照して詳細に説明する。第1の実施形態図1を参照すると、本発明の第1の実施形態にかかるマルチコアプロセッサ1は、ハードウェアとして、マルチコアCPU2と、主記憶メモリ3と、その他ハードウェア4と、これらを相互に接続するシステムバス5とを有する。マルチコアCPU2は、3つのCPUコア6a~6cと、CPUコア6間の通信に使用するコア間通信路7とを有する。それぞれのCPUコア6は、システムバス5に接続されると共に、コア間通信路7に接続されている。また、それぞれのCPUコア6は、自コア専用のキャッシュメモリ8a~8cを有する。それぞれのCPUコア6には、キャッシュメモリ8以外に、演算部等の他の要素が存在するが、図示は省略している。主記憶メモリ3は、読み書き可能なメモリであり、RAM等で構成される。その他ハードウェア4は、例えば入出力装置、外部記憶装置、通信装置、或いはそれらのインタフェースなどである。図2を参照すると、本発明の第1の実施形態にかかるマルチコアプロセッサ1は、ソフトウェアとして、仮想化ハイパーバイザー11と、現用系のOS12aと、待機系のOS12bと、各々のOSの制御の下で動作するアプリケーションプログラム図示せずとを有する。仮想化ハイパーバイザー11は、ハードウエアを直接制御する機能を持ち、CPUコア6c上で動く仮想化制御プログラムである。現用系のOS12aおよび待機系のOS12bは、この仮想化ハイパーバイザー11を通じてCPUコア6a、6b、主記憶メモリ3、およびその他ハードウェア4を利用する。本実施形態の場合、図2の破線で示すように、仮想化ハイパーバイザー11は、現用系のOS12aに対して、CPUコア6aと、主記憶メモリ3上の一部のメモリ領域9aを専有リソースとして割り当てる。また、仮想化ハイパーバイザー11は、待機系のOS12bに対して、図2の一点鎖線で示すように、CPUコア6bと、主記憶メモリ3上の他の一部のメモリ領域9bとを専有リソースとして割り当てる。さらに、仮想化ハイパーバイザー11は、その他ハードウェア4に関しては、現用系のOS12aおよび待機系のOS12bの両方から使用可能な共有リソースとして割り当てている。現用系のOS12aは、現用系の業務を行うプログラムである。待機系のOS12bは、現用系のOS12bに障害が発生した場合に現用系のOS12aで実行されていた業務処理を引き継いで実行するプログラムである。業務処理としては、例えばマルチプロセッサコア1をネットワーク機器に適用する場合、パケット転送サービスなどが考えられるが、それに限定されるものではない。現用系のOS12aと待機系のOS12bとは、仮想化ハイパーバイザー11により割り当てられたそれぞれ異なるCPUコア6aとCPUコア6b上で動作しながら、ホットスタンバイ機能を実現するために、コア間通信路7を利用して互いに通信を行っている。この通信の目的は、一つは、現用系と待機系とでOS状態の同期を採るためである。また他の目的は、障害が発生していないかどうかを互いに監視するためである。本実施形態では、双方のOS間で共有する主記憶領域が存在しないため、共有メモリを経由するOS間通信は行えない。そのため、コア間通信路7を利用したOS間通信を行うようになっている。次に本実施形態の動作を説明する。現在、マルチプロセッサ1は、OS12aを現用系、OS12bを待機系とした冗長構成で動作しているとする。この状態では、例えばその他ハードウェア4を通じて外部から入力されるマルチコアプロセッサ1に対する処理要求は、現用系であるOS12aがCPUコア6aとメモリ領域9aとその他ハードウェア4とを使用して処理しており、またその処理結果をコア間通信路7経由によるOS間通信によって待機系であるOS12bに送信している。OS12bは、受け取った情報を使用して自OS12bの内部状態を更新することで、OS12aの内部状態に一致させている。また、OS12aとOS12bは、コア間通信路7経由によるOS間通信によって互いの稼動状態をモニターしており、対向OSに障害が発生した際には、直ちにそれを検出することが可能である。今、現用系のOS12aが使用しているCPUコア6aに搭載されているキャッシュメモリ8aあるいは主記憶メモリ3におけるOS12a用のメモリ領域9aに回復不可能なメモリエラーが発生したとする。現用系と待機系の双方のOSでCPUコアおよび主記憶を共有している場合、それらに発生した障害は双方のOSに影響が及ぶため、双方のOSを再起動する以外にエラー状態から回復することができず、マルチコアプロセッサ1が提供している業務処理は中断することとなる。しかし、本実施形態においては、CPUコア6aおよびメモリ領域9aの障害は、仮想化ハイパーバイザー11を通じて障害の発生したCPUコア6aおよびメモリ領域9aを占有的に使用しているOS12aのみに影響が波及し、仮想化ハイパーバイザー11を通じてCPUコア6aおよびメモリ領域9aを使用していないOS12bにはその影響は及ばない。この結果、OS12aは最終的に再起動することとなるが、OS12bは本障害の影響を受けることなく動作を継続することが可能である。待機系のOS12bは、OS間通信によって現用系のOS12bに障害が発生したことを検出すると、自らを現用系に切り替えて業務処理を引き継ぐ。これにより、マルチコアプロセッサ1全体としての業務処理は継続される。OS12aは、再起動完了後、コア間通信路7を使用したOS間通信を通じて、OS12bから状態情報等を受け取って自OS12aの内部状態をOS12bの内部状態に一致させ、以後、待機系のOSとして動作する。なお、メモリエラーのように再起動することで復旧可能なエラーではなく、ハードウェア自体に物理的な障害が発生した場合では、該当ハードウェア領域を使用するOSはそれ以降使用不能となり、上記のような冗長性は失われるが、それでも他方のOSが制御を引き続き行うために、マルチコアプロセッサ全体では業務処理は継続される。このように本実施形態によれば、現用系のOS12aと待機系のOS12bとをそれぞれ異なるCPUコア6a、6b上で動作させ、また現用系のOS12aと待機系のOS12bとに主記憶メモリ3上のそれぞれ異なるメモリ領域9a、9bを割り当てるようにしているため、何れかのCPUコア6a、6bのキャッシュメモリや何れかの主記憶メモリ領域に復旧困難な障害が発生しても、現用系および待機系の双方が一度にダウンすることがなくなる。第2の実施形態図3を参照すると、本発明の第2の実施形態にかかるマルチコアプロセッサ21は、それぞれのCPUコア6a~6cのキャッシュメモリ8a~8cが、キャッシュ更新状態の情報の交換を行う他のキャッシュメモリを判断するキャッシュ制御部23a~23cを有する点で、第1の実施形態と相違する。それぞれのキャッシュ制御部23a~23cは、自キャッシュの更新状態の情報を交換するか否かを示すフラグ22a~22cを他のキャッシュメモリ対応に有する。それぞれのキャッシュ制御部23a~23cは、フラグがオンになっている他のキャッシュメモリに対してのみ、自キャッシュの更新状態の情報をシステムバス5を通じて当該他のキャッシュメモリへ送出する。3つのCPUコア6a~6cを有する本実施形態の場合、フラグ22a~22cのそれぞれは、最低2ビットあれば良い。一般に、それぞれのCPUコア6a~6cが独自のキャッシュメモリ8a~8cを有するマルチコアプロセッサにおいては、キャッシュのコヒーレンシ一貫性を保証する仕組みが必要になる。その代表的な手法にスヌープ方式がある。スヌープ方式では、CPUコアのキャッシュメモリ間でキャッシュ更新状態の情報を交換することで、各CPUコアのキャッシュは自身や他のCPUコアのキャッシュのライン更新状態を把握し、どのキャッシュに最新のデータが存在するかを把握し、必要なときに最新のデータを取得できるようにキャッシュラインのパージなどを行う。具体的なプロトコルとして、MESIプロトコルがある。しかし、キャッシュ更新状態の情報の交換はシステムバス5を介して行われるため、コヒーレンシ保持のためのトラフィックによって性能が低下するという課題がある。本実施形態において、第1の実施形態と同様に、現用系のOS12aと待機系のOS12bとに主記憶メモリ3上のそれぞれ異なるメモリ領域9a、9bを割り当て、現用系のOS12aをCPUコア6a上で動作させ、待機系のOS12bをCPUコア6b上で動作させると、CPUコア6aとCPUコア6bとから主記憶メモリ3の同一アドレスのメモリ領域をアクセスすることはない。従って、キャッシュメモリ8aとキャッシュメモリ8bとの間でキャッシュ更新状態の情報の交換を行う必要はない。そこで、本実施形態では、仮想化制御プログラム11は、CPUコア6aのキャッシュメモリ8aとCPUコア6bのキャッシュメモリ8bとの間のキャッシュ更新状態の情報の交換を抑止するようにフラグ22a、22bの値を設定した後、現用系OS12aおよび待機系OS12bを起動するようにしている。なお、現用系および待機系OSが動作するCPUコア6a、6bのキャッシュメモリ8a、8bと、CPUコア6cのキャッシュメモリ8cとの間のキャッシュ更新状態の情報の交換を抑止するかどうかは、CPUコア6cからメモリ領域9a、9bをアクセスする可能性があるか否かに基づいて決定される。次に本実施形態のセットアップ時の動作を説明する。なお、起動に必要なBIOSは、マルチコアプロセッサ21のCPUコア6c中の図示しないROMに記憶されているものとする。また、起動に必要なブートプログラム、仮想化ハイパーバイザー、システム設定ファイル、各OSは、例えばシステムバス5に接続される磁気ディスク24に記憶されているものとする。図4は、マルチコアプロセッサ21の電源投入から業務処理が開始されるまでのセットアップ処理の一例を示す流れ図である。電源が投入されると、BIOSが起動し、各種デバイスの初期化などが行われるステップS1。次に、BIOSにより、磁気ディスク24からブートプログラム25がCPUコア6cにロードされて起動されステップS2、続いて、このブートプログラム25により磁気ディスク24から仮想化ハイパーバイザー11がCPUコア6cにロードされて起動されるステップS3。次に、仮想化ハイパーバイザー11は、システム設定ファイル26を磁気ディスク24から読み込むステップS4。このシステム設定ファイル26には、起動すべきOS12a、12bの情報、各OSに割り当てるCPUコア、主記憶メモリ、その他ハードウェアに関する情報、フラグ22a~22cの設定値が定義されている。仮想化ハイパーバイザー11は、システム設定ファイル26に定義された情報に従って、各OS12a、12bにリソースを割り当てるステップS5。また、仮想化ハイパーバイザー11は、システム設定ファイル26に定義された情報に従って、フラグ22a~22cの値を設定すると共に、ハードウェア割り込みコントローラの設定等を行うステップS6。フラグ22a~22cの値の設定では、フラグ22a中のキャッシュメモリ8bに対応するフラグと、フラグ22b中のキャッシュメモリ8aに対応するフラグとは、キャッシュ更新状態の情報の交換を行わないようにオフに設定する。フラグ22a~22c中の他のキャッシュメモリに対応するフラグについてもシステム設定ファイル26に定義された値に従って設定を行う。その後、仮想化ハイパーバイザー11は、OS12aを磁気ディスク24からメモリ領域9aにロードして起動すると共に、OS12bを磁気ディスク24からメモリ領域9bにロードして起動するステップS7。以後、OS12aの制御の下で現用系の業務処理が実行され、OS12bの制御の下で待機系の処理が実行される。本実施形態によれば、第1の実施形態と同様の効果が得られると共に、コヒーレンシ保持のためのトラフィックによって業務処理の性能が低下するのを防止することができる。また、キャッシュ更新状態の情報の交換を抑止する設定を自動化することができる。以上、本発明を幾つかの実施形態を挙げて説明したが、本発明は以上の実施形態にのみ限定されず、その他各種の付加変更が可能である。例えば、以上の各実施形態では、メモリ障害を例として挙げたが、同種のハードウェアを複数実装する場合でも、仮想化ハイパーバイザーにてそれらを占有的に制御するOSを割り振り、上記実施形態と同様の処理を行うことで、それらハードウェアに障害が発生した場合でもマルチコアプロセッサ全体での業務処理を継続することが可能となる。また、以上の各実施形態では、コア間通信路7を使用してOS間通信を実現したが、コア間通信路7の代わりにシステムバス5経由でOS間通信を実現することもできる。また、その他ハードウェア4として通信インターフェースが複数存在する場合、通信インターフェース間の通信をOS間通信に利用することも可能である。また、CPUコアを3つ有するマルチコアCPUを例として挙げたが、4つ以上のCPUコアを有するマルチコアCPUに対しても本発明は適用可能である。