実施の形態1.
以下、この発明の実施の形態1を図を用いて説明する。図1は、この実施の形態1における情報処理装置のハードウェア(H/W)構成図である。図中、1、2、3が演算処理を行うプロセッサコアであり、お互いが、バス4で結合される。また、バス4を通して、OSのコードやデータ、およびAPのコードやデータ、およびヒープ/スタックを保持するメモリ5や、OSやAPからのメッセージを出力するコンソール6、OSおよびAPプログラムや設定ファイルを格納するハードディスク装置(HDD)7、およびプロセッサコアのレジスタ情報や障害情報を、情報処理装置の再起動後でも保持しつづけるためのバックアップメモリ8が結合される。プロセッサコア1、プロセッサコア2、プロセッサコア3には、それぞれ、演算処理を行う演算処理部9(プロセッサコア1)、10(プロセッサコア2)、11(プロセッサコア3)、メモリ5の内容および演算処理部の処理結果を一時的に保持しておくキャッシュ12(プロセッサコア1)、13(プロセッサコア2)、14(プロセッサコア3)、および、各プロセッサコア間で通信を行うためのプロセッサ間通信機能15(プロセッサコア1)、16(プロセッサコア2)、17(プロセッサコア3)が存在する。
プロセッサ間通信機能については、プロセッサコアに割込みを通知する方法や、メモリ5を介して、通信したい(通信元)プロセッサコアが通信先プロセッサコアの参照するメモリ領域に印をつけ、通信先プロセッサがそれを参照することにより、通知を把握する方法などが利用される。また、プロセッサコア1、2、3には、メモリ5をアドレス空間として論理的に分割することができるMMU(Memory Management Unit)18、19、20を備えている。OSは、このMMUを使用することで、各APのアドレス空間を独立して配置することが可能となり、各APはお互いを干渉することなく、メモリアクセスすることが可能になっている。この実施の形態では、3つのプロセッサコアを図示しているが、3つである必要はなく、2つ以上のプロセッサコアでも、動作そのものに変更はない。
図2は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成を示す図である。図中、プロセッサコア1にはOS21と、OS21上で動作するAP22、AP23が動作する。同様にプロセッサコア3には、OS24と、OS24上で動作するAP25、およびAP26が動作する。また、OS21、AP22、AP23、およびOS24、AP25、AP26のコード/データ、およびヒープ/スタック領域はメモリ5上に存在する。メモリ5上は、OS21が使用するOS21用領域27と、OS24が使用するOS24用領域28とに用途が区切られている。OS21用領域27内には、OS21上で動作するAP22のコード/データおよびヒープ/スタック領域であるAP情報領域29と、OS21上で動作するAP23のコード/データおよびヒープ/スタック領域であるAP情報領域30が存在する。また、OS24用領域28内には、OS24上で動作するAP25のコード/データおよびヒープ/スタック領域であるAP情報領域31と、OS24上で動作するAP26のコード/データおよびヒープ/スタック領域であるAP情報領域32が存在する。そして、HDD7上にはAPに障害が発生した場合のAP情報を保持するコアファイル領域41が、バックアップメモリ8には、APに障害が発生した場合に動作していたプロセッサコアに関する障害情報および情報処理装置全体の情報を保持するエラー情報格納域42が存在する。プロセッサコア2には、障害処理を行うソフトウェアが存在する。
プロセッサコア1およびプロセッサコア3にあるOS21、およびOS24には、それぞれのプロセッサコア上で動作するAPに障害が発生した場合に、障害を検知し、対処する手段が存在する。そして、プロセッサコア2には、他プロセッサコアからの指示により障害情報を収集・記録する手段が存在する。プロセッサコア1上のOS21には、OSの初期化処理を行うOS初期化手段33と、障害発生時にOS21に対応した障害処理を他プロセッサコア上で行うための障害処理手段34、APの障害を検出する障害検出手段35と、APの動作を切り替えるためのプロセス切替手段36が存在する。同様にプロセッサコア3上のOS24にもOS初期化手段37、障害処理手段38、障害検出手段39、プロセス切替手段40が存在する。OS21およびOS24に存在する同じ名前の手段は、それぞれ同じ機能を有している。
一方、プロセッサコア2上には、他プロセッサコアで動作するOSに対応する障害処理手段の登録処理を行う障害処理登録手段43と、他プロセッサコアからの指示により障害処理手段を起動する障害管理手段44が存在するとともに、他プロセッサコア上のOSに対応する障害処理手段を格納するための登録領域45が存在する。なお、この実施の形態では、プロセッサコア2に障害情報を収集・記録する機能が配置されているが、これら機能はプロセッサコアに依存しないため、他のプロセッサコアにこの機能が存在しても同じ意味を持つ。また、プロセッサコア2ではOSの記載がないが、OS内の機能、またはAPの機能にて、これら収集・記録機能を代替しても、同じ効果を得ることができる。
次に、この実施の形態における情報処理装置のOS初期化時の動作について、図3の矢印および図4のフローチャートを用いて説明する。
まず、プロセッサコア1にH/Wリセットが掛かり、OS21が起動されると、OS初期化手段33が動作する。プロセッサコア1のOS初期化手段33は、OS内の様々な機能の初期化を行うと共に、OS21内にある障害処理手段34の登録をプロセッサコア2に依頼する(図3および図4のS101)。この登録依頼処理は、プロセッサコア1およびプロセッサコア2内のプロセッサ間通信機能(図1の15、16)を用いて行われる。プロセッサコア1での処理は以上となる。
プロセッサコア2は、起動後、障害処理登録手段43が起動し、他プロセッサコアからの通知を待つ(図4のS102)。他プロセッサコアからの通知がない場合は、再度通知を待つ(S102のN)。他プロセッサコアから通知があった場合(S102のY)、依頼されたプロセッサコア1から障害処理手段34の内容を受信し、登録領域45内に障害処理手段34’として格納する(図3および図4のS103)。そして再度、他プロセッサからの通知を待つ(S102)。このようにして、プロセッサコア2内の登録領域45には、他プロセッサコア上で動作する各OSに対応した障害処理手段が格納されることになる。障害処理手段の受信については、依頼元プロセッサコアがメモリ5に障害処理手段のデータを格納し、それをプロセッサコア2が参照する方法や、各プロセッサコアのプロセッサコア間通信機能(図1の15、16、17)にて障害処理手段のデータを送信するようにする方法が考えられる。なお、上記実施の形態では、プロセッサコア1を対象に説明したが、これはプロセッサコア3の場合も同様であり、プロセッサコア3にてOS24内にある障害処理手段38の登録をプロセッサコア2に依頼することで、プロセッサコア2内の障害処理登録手段43が障害処理手段38”を登録領域45に格納する。
この実施の形態では、プロセッサコア2の障害処理登録手段43が、他プロセッサコアからの通知を待っているように記載しているが、これを割込みベースにしても動作は同じである。この場合、プロセッサコア2にて他の処理を行っている最中に、プロセッサ間通信機能(図1の16)にて割込みが発生し、その割込み処理にて障害処理登録手段43が起動し、登録処理が実施された後、プロセッサコア2は、割込みが発生した時に行っていた処理に戻る。以上がこの実施の形態における情報処理装置のOS初期化時の動作である。
次に、この実施の形態における情報処理装置の障害発生時の動作について、図5内の矢印および図6のフローチャートを用いて説明する。この実施の形態では、プロセッサコア1上で動作するAP22に障害が発生した場合の例で説明する。
まず、AP22の動作中に障害が発生すると、プロセッサコア1上で例外が発生し、OS21内の障害検出手段35が、その例外を検出する(図5、図6のS111)。そして障害検出手段35は、最低限のレジスタ情報をメモリ5内に保存した後、障害が発生したAP22を停止させるためにプロセス切替手段36に通知する(図5、図6のS112)。
障害検出手段35により通知されたプロセス切替手段36は、障害が発生したAP22の実行を停止する(図5、図6のS113)。これは、AP22が動作していたプロセスをスケジューリング対象から外し、同プロセスの状態を停止状態に移行することを意味し、プロセスそのものを削除することはこの時点ではしない。プロセスそのものを削除しないことにより、AP22が使用していたメモリ5内のAP情報領域29がそのまま残存し、これをプロセッサコア2上から参照することが可能となる。
次に障害検出手段35は、プロセッサ間通信機能(図1の15)を利用して、障害を処理するプロセッサコア2に通知する(図5、図6のS114)。この時、障害が発生したAP22の情報や保存したレジスタ情報などが付加される。これら情報については、プロセッサコア2への通知時にメッセージ情報として付加する方法や、メモリ5上の特定領域に書き込む方法が考えられる。そして障害処理手段34は、プロセス切替手段36を介して、他APへの切替を行う。プロセス切替手段36は、OS21内のプロセス情報を参照し、動作可能なAP23を抽出し、AP23を動作可能(RUN状態)にする(図5、図6のS115)。これにより以降、プロセッサコア1上ではAP23が動作する(図6のS116)。
プロセッサコア2では、障害管理手段44が動作しており、他プロセッサからの通知があるかチェックしている(図6のS117)。S114にて、プロセッサコア1からプロセッサコア2に割込みが通知されると、プロセッサコア2のプロセッサ間通信機能(図1の16)が、その割込みを検出し、障害管理手段44に通知する(図5、図6のS117)。障害管理手段44では、S117にてその通知をチェックしており、通知があれば(S117のY)、通知元プロセッサコアに対応する障害処理手段を登録領域45内から見つけ出し、その手段を起動する(図5、図6のS118)。
この実施の形態では、プロセッサコア1から通知されたので、登録領域45内の障害処理手段34’が起動される。この障害処理手段34’は、プロセッサコア1内のOS21用のものであり、OS21にあわせた障害処理が可能となる。障害処理手段34’は、まず、通知にて付加されたAP22の情報を元に、メモリ5のOS21用領域27内のAP情報領域29を探し、その中にある情報からエラーの発生種類(ページフォルト、0割り算等)や、発生箇所(OS内/AP内)、エラー発生時のレジスタ情報等を収集する(図5、図6のS119)。
次に障害処理手段34’は、収集されたAP22の障害情報を元にエラー原因の特定および、それに伴いプロセッサコア1の動作を継続動作させるか、それとも、そのエラーが継続できない障害でプロセッサコア1をシステムダウン(停止または再起動)にすべきかを判断する(図6のS120)。システムダウンするケースとしては、障害発生の箇所がAP22が呼び出したOS21内で発生したエラーでOS復帰ができないものや、CPU内部エラーが発生した場合などが挙げられる。そして障害処理手段34’は、特定されたエラー原因や継続動作またはシステムダウン動作遷移情報、および収集された障害情報を、コンソール6に表示し、使用者に障害が発生したことを通知するとともに、バックアップメモリ8内のエラー情報格納域42に、これら情報を記録し、障害発生後も使用者が障害発生情報を参照できるようにする(図5、図6のS121)。
次に障害処理手段34’は、プロセッサコア1の対処としてシステムダウンすべきか否か判断する(図6のS122)。システムダウンすべき場合(S122のY)は、プロセッサコア1を停止状態にさせた後、メモリ5内のOS21用領域27の内容をディスクに書き込む(メモリダンプ)などした後、プロセッサコア1のリブート(H/Wリセット)を行う(図6のS123)。これにより、プロセッサコア1は初期状態に戻り、再度OS21がブートされる。
S122にてシステムダウンしない場合(S122のN)、障害処理手段34’は、特定されたエラー原因を元に、各エラーに対応した処理をおこなう(図6のS124)。これは、例えば0割り算によるエラーであれば、次にAP22が実行される場合は、0割り算のシグナルハンドラ(エラー発生に伴い呼び出される関数)を呼び出すようにAP情報領域29内のAP22のスタックを操作したり、セグメンテーションフォルトによるエラーであれば、コアファイル41を作成する準備を行う。そして、障害処理手段34’は、コアファイル41を作成するようなエラーである場合に、コアファイル作成処理を行う(図5、図6のS125)。この時、障害処理手段34’は、AP情報領域29の内容をHDD7内のコアファイル41に書き出す。コアファイル41の作成が終了すると、障害処理手段34’は、AP22を再開させるために停止処理解除要求をプロセッサコア1に通知する(図5、図6のS126)。これは、プロセッサ間通信機能(図1の16)を利用して、プロセッサコア1に割込みを通知することで行われる。この時、AP22を継続動作させるか、削除すべきかの情報が付加される。
S116にてプロセッサコア1上でAP23が動作している間に、プロセッサコア2での障害情報の収集および記録が終了し、S126にてプロセッサコア2からプロセッサコア1に対しAP22の停止処理解除要求が実施されると、プロセッサコア1のプロセッサ間通信機能(図1の15)がその割込みを受信し、OS21内のプロセス切替手段36を起動する(図6のS127)。プロセス切替手段36は、通知にて付加されたAP22を継続動作させるか、削除すべきかの情報を元に、AP22の再開または終了を処理する(図5、図6のS128)。継続動作させる場合は、AP22が動作していたプロセスをスケジューリング対象に戻し、終了させる場合は、AP22が動作していたプロセスを削除する処理を行う。以上がこの実施の形態における情報処理装置の障害発生時の動作である。
この実施の形態1による情報処理装置の障害処理システムでは、APの障害発生時に、障害が発生したAPを停止した後、障害が発生したAPが動作していたプロセッサコアとは別のプロセッサコアにて障害情報の収集・記録・対処を行うようにし、障害情報の収集・記録・対処をしている間、障害が発生したAPが動作していたプロセッサコアでは、別のAPを動作できるようにしたので、障害が発生したプロセッサコア上で次に動作すべきAPを迅速に動作させることができる、情報処理装置の障害処理システムを得ることができる。
また、この実施の形態では、各エラーごとで異なる処理を、障害が発生したプロセッサコアとは別のプロセッサコアで処理し、障害が発生したプロセッサでは、障害検出・レジスタ保存・AP停止など処理時間が固定化された処理のみを行うようにしたことで、障害が発生しても、一定時間に別のAPが動作することができ、APの一定時間による応答性が確保できる情報処理装置の障害処理システムを得ることできる。
さらに、この実施の形態では、各プロセッサコア内のOS初期化時に、OS毎に固有な障害処理を、障害処理専用プロセッサコア内に登録するようにしたので、障害処理専用プロセッサコア上のソフトウェアが各OSに依存することなく、複数のOSの障害処理を行うことができる、障害処理装置の障害処理システムを得ることができる。
実施の形態2.
この発明の他の実施の形態における情報処理装置の障害処理システムについて説明する。実施の形態2では、情報処理装置のH/W構成は実施の形態1と同じであり、図1で示される。図7は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成を示す図である。実施の形態2では、実施の形態1のS/W構成におけるOSと内部の各手段、APおよびプロセッサコア2上の各手段と登録領域は、ほぼ同じような機能を持つ。図中、プロセッサコア1にはOS21と、OS21上で動作するAP22、およびAP23を備え、プロセッサコア3にはOS24と、OS24上で動作するAP25、およびAP26を備える。OS21、およびOS24には、それぞれのプロセッサコア上で動作するAPに障害が発生した場合に、障害を検知し、対処する手段が存在する。そして、プロセッサコア2には、他プロセッサコアからの指示により障害情報を収集・記録する手段が存在する。
プロセッサコア1上のOS21には、OSの初期化処理を行うOS初期化手段33と、障害発生時にOS21に対応した障害処理を他プロセッサコア上で行うための障害処理手段34、APの障害を検出する障害検出手段35と、APの動作を切り替えるためのプロセス切替手段36が存在する。同様にプロセッサコア3上のOS24にもOS初期化手段37、障害処理手段38、障害検出手段39、プロセス切替手段40が存在する。OS21およびOS24に存在する同じ名前の手段は、それぞれ同じ機能を有している。
一方、プロセッサコア2上には、他プロセッサコアで動作するOSに対応する障害処理手段の登録処理を行う障害処理登録手段43と、他プロセッサコアからの指示により障害処理手段を起動する障害管理手段44が存在するとともに、他プロセッサコア上のOSに対応する障害処理手段が登録される登録領域45が存在する。そして、HDD7上にはAPに障害が発生した場合のAP情報を保持するコアファイル領域41が、また、バックアップメモリ8には、APに障害が発生した場合に動作していたプロセッサコアに関する障害情報および情報処理装置全体の情報を保持するエラー情報格納域42が存在する。プロセッサコア2には、障害処理を行うソフトウェアが存在する。
OS21、AP22、AP23、およびOS24、AP25、AP26のコード/データ、およびヒープ/スタック領域はメモリ5上に存在する。メモリ5上には、OS21が使用するOS21用領域27と、OS24が使用するOS24用領域28、およびプロセッサコア2が使用するプロセッサコア2用領域49とに用途が区切られている。
OS21用領域27内には、OS21上で動作するAP22のコード/データおよびヒープ/スタックを格納しているAP22テキスト/データ領域と、OS21のコード/データおよびヒープ/スタックを格納しているOSテキスト/データ領域が存在し、それらは、AP22アドレス空間50として、ページテーブル52を介して結合されている。ページテーブル52は、メモリ5上のAP22テキスト/データ領域およびOSテキスト/データ領域を論理的に連続したアドレス空間にマッピングするための空間配置テーブルである。このページテーブル52がプロセッサコア1のMMU18に設定されることにより、プロセッサコア1のアドレス空間は、AP22アドレス空間50にマッピングされ、AP22のテキスト/データ領域が参照できることで、AP22が動作可能となる。
また、AP22からシステムコール呼び出しでOS21が呼び出されても、AP22アドレス空間50にはOSテキスト/データ領域が含まれているので、OS21の動作が可能となる。OS21用領域27には、同様にOS21上で動作するAP23のコード/データおよびヒープ/スタックを格納しているAP23テキスト/データ領域が存在し、これは、AP23アドレス空間51として、ページテーブル53を介し、OSテキスト/データ領域と結合されている。OSテキスト/データ領域はOS21用領域27内においては1つだけであるが、ページテーブル52および53の空間配置テーブルにて、双方とも参照するように設定されており、これにより、AP22アドレス空間50およびAP23アドレス空間51双方からOSテキスト/データ領域を共有する形となっている。OSテキスト/データ領域はOS21のコード/データおよびヒープ/スタックを格納しているので、この中に、OS21内の各手段も格納されており、障害処理手段34も、この領域で参照可能になっている。
同様に、OS24用領域28内には、OS24上で動作するAP25のコード/データおよびヒープ/スタックを格納しているAP25領域と、OS24のコード/データおよびヒープ/スタックを格納しているOS領域が存在し、それらは、AP25アドレス空間54として、ページテーブル56を介して結合されている。このページテーブル56がプロセッサコア3のMMU20に設定されることにより、プロセッサコア3のアドレス空間は、AP25アドレス空間54にマッピングされ、AP25領域が参照できることで、AP25が動作可能となる。
また、AP25からシステムコール呼び出しでOS24が呼び出されても、AP25アドレス空間54にはOS領域が含まれているので、OS24の動作が可能となる。OS24用領域28には、同様にOS24内で動作するAP26のコード/データおよびヒープ/スタックを格納しているAP26領域が存在し、これは、AP26アドレス空間55として、ページテーブル57を介し、OS領域と結合されている。OS領域はOS24領域28内においては、1つだけあるが、ページテーブル56および57の空間配置テーブルにて、双方とも参照するように設定されており、これにより、AP25アドレス空間54およびAP26アドレス空間55双方からOS領域を共有する形となっている。OS領域はOS24のコード/データおよびヒープ/スタックを格納しているので、この中に、OS24内の各手段も格納されており、障害処理手段39も、この領域で参照可能になっている。
プロセッサコア2用領域49内には、プロセッサコア2上で動作するソフトウェアのコード/データおよびヒープ/スタックを格納しているテキスト/データ領域58が存在し、それらはアドレス空間58としてページテーブル59を介して結合されている。テキスト/データ領域58には、プロセッサコア2上で動作するソフトウェアを格納しているため、障害処理登録手段43、障害管理手段44および登録領域45は、この領域で参照可能になっている。また、ページテーブル59がプロセッサコア2のMMU19に設定されることにより、プロセッサコア2のアドレス空間は、アドレス空間(テキスト/データ領域)58にマッピングされ、プロセッサコア2上のソフトウェアのテキスト/データ領域が参照できることで、障害処理登録手段43、障害管理手段44が動作可能となり、登録領域45も、これら各手段で参照可能になる。
次に、この実施の形態における情報処理装置のOS初期化時の動作について、図8の矢印および図9のフローチャートを用いて説明する。まず、プロセッサコア1にH/Wリセットが掛かり、OS21が起動されると、OS初期化手段33が動作する。プロセッサコア1のOS初期化手段33は、OS内の様々な機能の初期化を行うと共に、プロセッサコア2にOS21内にある障害処理手段34のアドレス、すなわちOS21用領域27内のOSテキスト/データ領域内にある障害処理手段テキスト/データ領域のアドレスの登録を依頼する(図8、図9のS201)。
このアドレスはページテーブル52またはページテーブル53を介してアクセス可能な論理空間アドレスを登録依頼する。OSテキストデータ領域は、ページテーブル52またはページテーブル53を介した論理空間アドレス上では、同じアドレスに配置されており、どちらのページテーブルを参照しても、同じ位置で障害処理手段が参照可能になっている。登録依頼処理は、プロセッサコア1およびプロセッサコア2内のプロセッサコア通信機能(図1の15、16)を用いて行われる。プロセッサコア1でのOS初期化時の処理は以上となる。
プロセッサコア2は、起動後、障害処理登録手段43が起動し、他プロセッサコアからの通知を待つ(図9のS202)。他プロセッサコアから通知がない場合は、再度通知を待つ(S202のN)。他プロセッサコアから通知があった場合(S202のY)、依頼されたプロセッサコア1から障害処理手段34のアドレスを受信し、登録領域45内に障害処理手段アドレス60として格納する(図8、図9のS203)。そして再度、他プロセッサからの通知を待つ(S202)。このようにして、プロセッサコア2内の登録領域45には、他プロセッサコア上で動作する各OSにある障害処理手段のアドレスが格納されることになる。障害処理手段のアドレス情報の受信については、依頼元プロセッサコアがメモリ5に障害処理手段アドレス情報のデータを格納し、それをプロセッサコア2が参照する方法や、各プロセッサコアのプロセッサコア間通信機能(図1の15、16、17)にて障害処理手段アドレス情報のデータを送信するようにする方法が考えられる。
なお、上記例では、プロセッサコア1を対象に説明したが、これはプロセッサコア3の場合も同様であり、プロセッサコア3にてOS24内にある障害処理手段38のアドレスの登録をプロセッサコア2に依頼することで、プロセッサコア2内の障害処理登録手段43が障害処理手段38のアドレス61を登録領域45に格納する。この実施の形態では、プロセッサコア2の障害処理登録手段43が、他プロセッサコアからの通知を待っているように記載しているが、これを割込みベースにしても動作は同じである。この場合、プロセッサコア2にて他の処理を行っている最中に、プロセッサ間通信機能(図1の16)にて割込みが発生し、その割込み処理にて障害処理登録手段43が起動し、登録処理が実施された後、プロセッサコア2は、割込みが発生した時に行っていた処理に戻る。
以上がこの実施の形態における情報処理装置のOS初期化時の動作である。
次に、この実施の形態における情報処理装置の障害発生時の動作について、図10のフローチャートおよび図11、図12、図13、を用いて説明する。
この実施の形態では、プロセッサコア1上で動作するAP(AP)22に障害が発生した場合の例で説明する。まず、プロセッサコア1ではAP22が動作している(図10、S210)。この時の動作状況を示すのが図11である。AP22が動作している時、プロセッサコア1のMMU18は、OS21用領域27内のページテーブル52を参照するように設定されている。これにより、プロセッサコア1は、AP22アドレス空間50をアドレス空間として動作しており、この中にあるAP22テキスト/データ領域を参照し、AP22内のコードを実行している。
一方、プロセッサコア2のMMU19は、プロセッサコア2用領域49内のページテーブル59を参照するように設定されている。これにより、プロセッサコア2は、アドレス空間(テキスト/データ領域)58をアドレス空間として動作しており、この中にあるテキスト/データ領域を参照し、障害管理手段44のコードを実行している。
AP22の動作中に障害が発生すると、プロセッサコア1上で例外が発生し、OS21内の障害検出手段35が、その例外を検出する(図10、図12のS211)。この時、プロセッサコア1のMMU18は、OS21用領域のページテーブル52が設定されており、プロセッサコア1はAP22アドレス空間50内にあるOSテキスト/データ領域内に存在する障害検出手段35に制御を移すことができる。障害検出手段35は、最低限のレジスタ情報をメモリ5内に保存した後、障害が発生したAP22を停止させるためにプロセス切替手段36に通知する(図10、図12のS212)。プロセス切替手段36もAP22アドレス空間50内のOSテキスト/データ領域に存在するので、そのまま制御が移すことができる。障害検出手段35により通知されたプロセス切替手段36は、障害が発生したAP22の実行を停止する(図10、図12のS213)。これは、AP22が動作していたプロセスをスケジューリング対象から外し、同プロセスの状態を停止状態に移行することを意味し、プロセスそのものを削除することはこの時点ではしない。
また、プロセッサコア1はAP22アドレス空間50を参照したままであり、MMU18はページテーブル52をまだ参照している。プロセスそのものを削除しないことにより、AP22が使用していたメモリ5内のAP22アドレス空間50内の情報がそのまま残存し、これによりプロセッサコア2上から参照することが可能となる
次に障害検出手段35は、プロセッサ間通信機能(図1の15)を利用して、AP22の障害発生を障害処理するプロセッサコア2に通知する(図10、図12のS214)。この時、障害が発生したAP22の情報や保存したレジスタ情報などが付加されるとともに、ページテーブル52の情報も付加される。これら情報については、プロセッサコア2への通知時にメッセージ情報として付加する方法や、メモリ5上の特定領域に書き込む方法が考えられる。そして障害処理手段34は、プロセス切替手段36を介して、他APへの切替を行う。
プロセス切替手段36は、OS21内のプロセス情報を参照し、動作可能なAP23を抽出し、AP23を動作可能(RUN状態)にし、プロセッサコア1のMMU18をOS21用領域のページテーブル53を参照するように設定する(図10、図12のS215)。これにより、プロセッサコア1はAP23アドレス空間51をアドレス空間として参照するようになる。OSテキスト/データ領域は、AP22アドレス空間50、AP23アドレス空間51ともに同じアドレス上に存在するため、アドレス空間を切り替えても、OS21内のコード/データは同じように扱うことができ、OS21内の各手段もそのまま動作可能である。OS21のプロセス切替手段36は、切り替えられたAP23アドレス空間51内にある、AP23テキスト/データ領域内のAP23に制御を移すことにより、以降、プロセッサコア1上ではAP23が動作する(図10のS216)。
プロセッサコア2では、障害管理手段44が動作しており、他プロセッサからの通知があるかチェックしている(図10のS217)。S214にて、プロセッサコア1からプロセッサコア2に割込みが通知されると、プロセッサコア2のプロセッサ間通信機能(図1の16)が、その割込みを検出し、障害管理手段44に通知する(図10のS217)。障害管理手段44では、S217にてその通知をチェックしており、通知があれば(S217のY)、通知元プロセッサコアに対応する障害処理手段のアドレスを登録領域45内から見つけ出す。そして、通知元プロセッサから送られてきたページテーブル情報と障害処理手段のアドレスを元に、障害処理手段を起動する(図10、図12のS218)。
この実施の形態では、プロセッサコア1から通知されたので、登録領域45内の障害処理手段アドレス60が選択される。そして、プロセッサコア2のMMU19を、プロセッサコア1から送られてきたページテーブル52の情報を元に設定する。ページテーブル52の情報は、メモリ5上にあり、プロセッサコア1でもプロセッサコア2でも同じように扱うことができる。これにより、プロセッサコア2は、AP22アドレス空間50にアドレス空間が切り替わる。そして、登録領域45に登録されていた障害処理手段アドレス60を元に、AP22アドレス空間50内にある、OS21のコード/データが格納されているOSテキスト/データ領域内の、障害処理手段を起動する。これにより、プロセッサコア2にて障害処理手段34が動作する。この障害処理手段34は、OS21用のものであり、OS21にあわせた障害処理が可能となる。
プロセッサコア2で動作している障害処理手段34は、まず、通知にて付加されたAP22の情報を元に、AP22アドレス空間50内にあるAP22テキスト/データ領域を探し、その中にある情報からエラーの発生種類(ページフォルト、0割り算等)や、発生箇所(OS内/AP内)、エラー発生時のレジスタ情報等を収集する(図10、図12のS220)。次にプロセッサコア2で動作している障害処理手段34は、収集されたAP22の障害情報を元にエラー原因の特定および、それに伴いプロセッサコア1の動作を継続動作させるか、それとも、そのエラーが継続できない障害でプロセッサコア1をシステムダウン(停止または再起動)にすべきかを判断する(図10のS221)。そしてプロセッサコア2で動作している障害処理手段34は、特定されたエラー原因や継続動作またはシステムダウン動作遷移情報、および収集された障害情報を、コンソール6に表示し、使用者に障害が発生したことを通知するとともに、バックアップメモリ8内のエラー情報格納域42に、これら情報を記録し、障害発生後も使用者が障害発生情報を参照できるようにする(図10、図12のS222)。
次にプロセッサコア2で動作している障害処理手段34は、プロセッサコア1の対処としてシステムダウンすべきか否か判断する(図10のS223)。システムダウンすべき場合(S223のY)は、プロセッサコア1を停止状態にさせ、メモリ5内のOS21用領域27の内容をディスクに書き込む(メモリダンプ)などした後、プロセッサコア1のリブート(H/Wリセット)を行う(図10のS224)。これにより、プロセッサコア1は初期状態に戻り、再度OS21がブートされる。
S223にてシステムダウンしない場合(S223のN)、プロセッサコア2で動作している障害処理手段34は、特定されたエラー原因を元に、各エラーに対応した処理をおこなう(図10のS225)。これは、例えば0割り算によるエラーであれば、次にAP22が実行される場合は、0割り算のシグナルハンドラ(エラー発生に伴い呼び出される関数)を呼び出すようにAP22アドレス空間50のAP22テキスト/データ領域内にあるAP22のスタックを操作したり、セグメンテーションフォルトによるエラーであれば、コアファイル41を作成する準備を行う。そして、プロセッサコア2で動作している障害処理手段34は、コアファイル41を作成するようなエラーである場合に、コアファイル作成処理を行う(図10、図12のS226)。この時、障害処理手段34は、AP22アドレス空間50のAP22テキスト/データ領域の内容をHDD7内のコアファイル41に書き出す。
コアファイル41の作成が終了すると、プロセッサコア2で動作している障害処理手段34は、AP22を再開させるために停止処理解除要求をプロセッサコア1に通知する(図10、図13のS227)。これは、プロセッサ間通信機能(図1の16)を利用して、プロセッサコア1に割込みを通知することで行われる。この時、AP22を継続動作させるか、削除すべきかの情報が付加される。その後、プロセッサコア2で動作している障害処理手段34の処理は終了し、障害管理手段44に復帰する(図10、図13のS228)。プロセッサコア2のMMU19を、障害管理手段34が動作するために設定していたページテーブル52から、プロセッサコア2用領域にあるページテーブル59に変更し、プロセッサコア2のアドレス空間が、OS21用領域27内のAP22アドレス空間50から、プロセッサ2用領域49のアドレス空間58に切り替わることにより、アドレス空間(テキスト/データ領域)58内にある障害管理手段44に制御が戻る。制御が戻った障害管理手段44は、他プロセッサからの通知がない場合のチェックに戻る(図10のS217)。
S216にてプロセッサコア1上でAP23が動作している間に、プロセッサコア2での障害情報の収集および記録が終了し、S227にてプロセッサコア2からプロセッサコア1に対しAP22の停止処理解除要求が実施されると、プロセッサコア1のプロセッサ間通信機能(図1の15)がその割込みを受信し、OS21内のプロセス切替手段36を起動する(図10のS229)。プロセス切替手段36は、通知にて付加されたAP22を継続動作させるか、削除すべきかの情報を元に、AP22の再開または終了を処理する(図10、図13のS230)。継続動作させる場合は、AP22が動作していたプロセスをスケジューリング対象に戻し、終了させる場合は、AP22が動作していたプロセスを削除する処理を行う。以上がこの実施の形態における情報処理装置の障害発生時の動作である。
この実施の形態2による情報処理装置の障害処理システムでは、障害を処理するプロセッサコアに、他プロセッサコア上で動作する各OSの障害処理手段のアドレスを登録し、プロセッサコアにて障害が発生した場合に、障害が発生したAPが動作していたアドレス空間を管理するページテーブル情報を障害を処理するプロセッサコアに渡し、障害を処理するプロセッサコアは、ページテーブル情報を元に、自身のMMUをAPが動作していたアドレス空間に切り替えることで、障害を処理するプロセッサコアにてAPが動作していたアドレス空間で障害処理を行うことができるようにしたので、障害が発生したプロセッサコア上で次に動作すべきAPを迅速に動作させることができるとともに、障害処理専用プロセッサコアのソフトウェアが各OSに依存することなく、複数のOSの障害処理を行うことができる、障害処理装置の障害処理システムを得ることができる。
なお、この実施の形態では、MMUにて仮想(論理)アドレス空間を切り替えるようなOSを用いて実施例を説明したが、MMUを持たない情報処理装置でも、同様な処理は可能である。この場合、各OS用領域および障害処理専用プロセッサコア用領域は、独立して配置される(各領域が同じアドレス上に存在すると、データが上書きされるため、動作はできない)ので、障害処理専用プロセッサコアの登録領域に登録される各OSの障害処理手段アドレスも、それぞれ異なるアドレスになる。障害処理専用プロセッサコアは、通知されたプロセッサコアに対応した障害処理手段アドレスを実行することで、そのプロセッサコア上で動作しているOSの障害処理手段を実行することが可能であるとともに、APのテキスト/データ領域も、メモリ5上にて障害処理専用プロセッサコアから参照可能であるので、この実施の形態と同様な障害処理を行うことが可能となる。
実施の形態3.
この発明の他の実施の形態における情報処理装置の障害処理システムについて説明する。実施の形態3では、情報処理装置のH/W構成は実施の形態1と同じであり、図1で示される。図14は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成を示す図である。図中、プロセッサコア1にはOS21と、OS21上で動作するAP22、AP23が動作する。同様にプロセッサコア3には、OS24と、OS24上で動作するAP25、およびAP26が動作する。また、OS21、AP22、AP23、およびOS24、AP25、AP26のコード/データ、およびヒープ/スタック領域はメモリ5上に存在する。
メモリ5上は、OS21が使用するOS21用領域27と、OS24が使用するOS24用領域28とに用途が区切られており、OS21用領域27内には、OS21上で動作するAP22のコード/データおよびヒープ/スタック領域であるAP情報領域29と、OS21上で動作するAP23のコード/データおよびヒープ/スタック領域であるAP情報領域30、OS21のコード/データおよびヒープ/スタック領域であるOS内部情報領域70が、OS24用領域28内には、OS24上で動作するAP25のコード/データおよびヒープ/スタック領域であるAP情報領域31と、OS24上で動作するAP26のコード/データおよびヒープ/スタック領域であるAP情報領域32、およびOS24のコード/データおよびヒープ/スタック領域であるOS内部情報領域71が存在する。
またメモリ5上には、障害情報が格納されている領域を示す収集領域情報72も存在する。そして、HDD7上にはAPに障害が発生した場合のAP情報を保持するコアファイル領域41が、バックアップメモリ8には、APに障害が発生した場合に動作していたプロセッサコアに関する障害情報および情報処理装置全体の情報を保持するエラー情報格納域42が存在する。プロセッサコア2には、障害処理を行うソフトウェアが存在する。
プロセッサコア1上のOS21には、APの障害を検出する障害検出手段35と、APの動作を切り替えるためのプロセス切替手段36が存在する。同様にプロセッサコア3上のOS24にも障害検出手段39、プロセス切替手段40が存在する。OS21およびOS24に存在する同じ名前の手段は、それぞれ同じ機能を有している。一方、プロセッサコア2上には、他プロセッサコアからの指示により障害情報の収集・対処・記録を管理する障害管理手段44が存在する。なお、この実施の形態では、プロセッサコア2に障害情報を収集・記録する機能が配置されているが、これはプロセッサコアに依存しないため、他のプロセッサコアにこの機能が存在しても同じ意味を持つ。また、プロセッサコア2ではOSの記載がないが、OS内の機能、またはAPの機能にて、これら収集・記録機能を代替しても、同じ効果を得ることができる。
次に、この実施の形態における収集領域情報72の内容を図15を用いて説明する。収集領域情報72の内容は、図15に示すように、各領域毎にその領域がどの障害情報を保持しているかを示すタイプ格納部分と、収集する領域のアドレスを格納および領域のサイズを保持する部分、そして保存先を示す部分および保存先アドレスを示す部分が存在する。プロセッサコア2の障害管理手段44は、収集した収集領域情報72のタイプ情報からレジスタ情報がどこにあるか判断し、エラー原因の特定を行い、コアファイル保存領域がどこにあるか判断し、その保存先とアドレス情報から、収集した領域をコアファイル41内の任意の位置に保存する。また、それ以外の領域については、コンソール6やエラー情報格納領域42に内容を表示・記録する。
次に、この実施の形態における情報処理装置の障害発生時の動作について、図16内の矢印および図17のフローチャートを用いて説明する。この実施の形態では、プロセッサコア1上で動作するAP22に障害が発生した場合の例で説明する。まず、AP22の動作中に障害が発生すると、プロセッサコア1上で例外が発生し、OS21内の障害検出手段35が、その例外を検出する(図16、図17のS301)。そして障害検出手段35は、APを切り替えるために最低限必要なレジスタ情報をメモリ5内のOS21用領域27内に保存するとともに、収集領域情報72に障害情報として記録すべき情報のタイプおよび領域のアドレス/サイズ、保存先および保存先アドレスを設定する(図16、図17のS302)。OS21用領域27内に保存されるレジスタ情報は、OS21内部情報70に保存される。
また、収集領域情報72に保存される領域は、OS21内部情報70に保存されたレジスタ情報や、コアファイルを保存するために必要なAP情報領域29全体の情報、そして、コンソール6やバックアップメモリ8内のエラー情報格納域42に保存すべき、その他の情報(AP情報領域29内のスタック情報やヒープ情報、APの変数情報など)について、タイプ(レジスタ情報、コアファイル情報等)とその情報のメモリ5上の位置(領域アドレス)とサイズ、および保存先のタイプと保存先デバイス内の保存位置(アドレス)が設定される。
レジスタ情報の保存および収集領域情報72の設定が終了した後、障害情報対処手段35は、障害が発生したAP22を停止させるためにプロセス切替手段36に通知する(図16、図17のS303)。障害検出手段35により通知されたプロセス切替手段36は、障害が発生したAP22の実行を停止する(図16、図17のS304)。これは、AP22が動作していたプロセスをスケジューリング対象から外し、同プロセスの状態を停止状態に移行することを意味し、プロセスそのものを削除することはこの時点ではしない。プロセスそのものを削除しないことにより、AP22が使用していたメモリ5内のAP情報領域29がそのまま残存し、これをプロセッサコア2上から参照することが可能となる。
次に障害検出手段35は、プロセッサ間通信機能(図1の15)を利用して、障害発生を障害処理するプロセッサコア2に通知する(図16、図17のS305)。この実施の形態では、プロセッサコア2はメモリ5内の収集領域情報72に従って情報収集を行うため、障害が発生したAP22の情報は通知する必要がない。そして障害処理手段35は、プロセス切替手段36を介して、他APへの切替を行う。プロセス切替手段36は、OS21内のプロセス情報を参照し、動作可能なAP23を抽出し、AP23を動作可能(RUN状態)にする(図16、図17のS306)。これにより以降、プロセッサコア1上ではAP23が動作する(図17のS307)。
プロセッサコア2では、障害管理手段44が動作しており、他プロセッサからの通知があるかチェックしている(図17のS308)。S308にて、プロセッサコア1からプロセッサコア2に割込みが通知されると、プロセッサコア2のプロセッサ間通信機能(図1の16)が、その割込みを検出し、障害管理手段44に通知する(図16、図17のS309)。障害管理手段44では、S308にてその通知をチェックしており、通知があると(S308のY)、障害管理手段44は、まず、障害情報の収集を行う(図16、図17のS310)。障害管理手段44は、収集領域情報72内の情報を元に、レジスタ情報やコアファイル保存領域、その他の保存領域のメモリ5内のアドレスおよびサイズの内容からエラーの発生種類(ページフォルト、0割り算等)や、発生箇所(OS内/AP内)、エラー発生時のレジスタ情報等を収集する。
次に障害管理手段44は、収集した障害情報を元にエラー原因の特定および、それに伴いプロセッサコア1の動作を継続させるか、それとも、そのエラーが継続できない障害でプロセッサコア1をシステムダウン(停止または再起動)にすべきかを判断する(図17のS311)。システムダウンするケースとしては、障害発生の箇所がAP22が呼び出したOS21内で発生したエラーでOS復帰ができないものや、CPU内部エラーが発生した場合などが挙げられる。
そして障害管理手段44は、障害情報の記録および出力を行う(図16、図17のS312)。障害管理手段44は特定されたエラー原因や継続動作またはシステムダウン動作遷移情報、および収集した障害情報を、コンソール6に表示し、使用者に障害が発生したことを通知するとともに、バックアップメモリ8内のエラー情報格納域42に、これら情報を記録し、障害発生後も使用者が障害発生情報を参照できるようにする。
次に障害管理手段44は、プロセッサコア1の対処としてシステムダウンすべきか否か判断する(図17のS313)。システムダウンすべき場合(S313のY)は、プロセッサコア1を停止状態にさせた後、メモリ5内のOS21用領域27の内容をディスクに書き込む(メモリダンプ)などした後、プロセッサコア1のリブート(H/Wリセット)を行う(図17のS314)。これにより、プロセッサコア1は初期状態に戻り、再度OS21がブートされる。
S313にてシステムダウンしない場合(S313のN)、障害管理手段44は、次に特定されたエラー原因を元に、各エラーに対応した処理をおこなう(図17のS315)。これは、例えば0割り算によるエラーであれば、次にAP22が実行される場合は、0割り算のシグナルハンドラ(エラー発生に伴い呼び出される関数)を呼び出すようにAP情報領域29内のAP22のスタックを操作したり、セグメンテーションフォルトによるエラーであれば、コアファイル41を作成する準備を行う。そして、障害管理手段44は、コアファイル41を作成するようなエラーである場合に、コアファイル作成処理を行う(図16、図17のS316)。この時、障害管理手段44は、収集領域情報72にあるHDD7に書き込むべき領域をAP22情報領域29の内容と判断し、HDD7内のコアファイル41に書き込む。コアファイル41の作成が終了すると、障害管理手段44は、AP22を再開させるために停止処理解除要求をプロセッサコア1に通知する(図16、図17のS317)。これは、プロセッサ間通信機能(図1の16)を利用して、プロセッサコア1に割込みを通知することで行われる。この時、AP22を継続動作させるか、削除すべきかの情報が付加される。
S307にてプロセッサコア1上でAP22が動作している間に、プロセッサコア2での障害情報の収集および記録が終了し、S317にてプロセッサコア2からプロセッサコア1に対しAP21の停止処理解除要求が実施されると、プロセッサコア1のプロセッサ間通信機能(図1の15)がその割込みを受信し、OS21内のプロセス切替手段36を起動する(図17のS318)。プロセス切替手段36は、通知にて付加されたAP22を継続動作させるか、削除すべきかの情報を元に、AP22の再開または終了を処理する(図16、図17のS319)。継続動作させる場合は、AP22が動作していたプロセスをスケジューリング対象に戻し、終了させる場合は、AP22が動作していたプロセスを削除する処理を行う。以上がこの実施の形態における情報処理装置の障害発生時の動作である。
この実施の形態3による情報処理装置の障害処理システムでは、収集すべき障害情報の領域をOS内部情報とは別に設け、そこにレジスタ情報やコアファイル情報の領域アドレスとサイズおよび、情報のタイプを設定するようにしたので、障害情報を収集するプロセッサコアは、障害が発生したプロセッサコアで動作するOSに依存せずに障害情報の収集を行うことが可能となり、障害が発生したプロセッサコア上で次に動作すべきAPを迅速に動作させることができる、情報処理装置の障害処理システムを得ることができる。
また、この実施の形態では、OSに依存することなく、障害情報の収集が可能となっているので、複数のプロセッサコアで、それぞれ異なるOSが動作していた場合においても、各OSで発生した障害を、1つの障害情報収集プロセッサコア上で処理することができる、情報処理装置の障害処理システムを得ることができる。
なお、この実施の形態では、収集領域情報に格納される領域情報の内容を4つにしていたが、4つ以上でも、同様な情報処理装置の障害処理システムを得ることができる。
さらに、この実施の形態では、収集領域情報72の設定を障害発生時に行うようにしているが、これをOS初期化時や、プロセス切替時に実施しても同様な情報処理装置の障害処理システムを得ることができる。
またさらに、この実施の形態では、メモリダンプを行う際、OS21用領域27をプロセッサコア2が把握してダンプするようにしているが、メモリダンプの領域を収集領域情報に追加し、プロセッサコア2上で、その情報を元にメモリダンプすることや、複数のメモリダンプ領域を収集領域情報に追加し、分割したメモリ領域をダンプすることができるようにしても、同様な情報処理装置の障害処理システムを得ることができる。
実施の形態4.
この発明の他の実施形態における情報処理装置の障害処理システムについて説明する。実施の形態4では、情報処理装置のH/W構成は実施の形態1と同じであり、図1で示される。図18は、図1で示したH/W構成に対する、ソフトウェア(S/W)の構成を示す図である。実施の形態4では、OS21内に、メモリ5上のOS21用領域27の各領域の読み書きをAP毎に制御し、書込みの権利がないAPが書き込みを行った場合にトラップを発生させるようにH/Wに設定することを行う読み書き管理手段80が存在し、同様にOS24内にも同様な読み書き管理手段81が存在する。また、メモリ5上に、OS21用領域内にOS21内の各APで領域を共有する共有メモリ領域82と、OS24用領域にOS24内の各APで領域を共有する共有メモリ領域83が存在し、障害検出手段35および39、障害処理手段34(34’)および38に、これら読み書き管理手段80および81および共有メモリ領域82および83に対する操作が追加される。それ以外は実施の形態1と同じである。この実施の形態4では、OS初期化時の動作は、実施の形態1と同じであり、図3の矢印および図4のフローチャートで示される。
次に、この実施の形態における情報処理装置の障害発生時の動作について、図19内の矢印および図20のフローチャートを用いて説明する。この実施の形態では、プロセッサコア1上で動作するAP22に障害が発生した場合の例で説明する。まず、AP22の動作中に障害が発生すると、プロセッサコア1上で例外が発生し、OS21内の障害検出手段35が、その例外を検出する(図19、図20のS411)。そして障害検出手段35は、最低限のレジスタ情報をメモリ5内に保存した後、読み書き管理手段80を呼び出し、障害が発生したAP22が共有メモリ領域82を使用していたか否かをチェックさせる(図19、図20のS412)。
読み書き管理手段80では、AP22が共有メモリ領域82を使用している場合(図20の412のY)、共有メモリ領域82を書込み禁止に設定する(図19、図20のS413)。これにより、他APから共有メモリに書込みが発生すると、トラップが発生する。書込み禁止の設定方法としては、プロセッサコア1のMMU18に対し、共有メモリ領域82のアドレス空間に対し書き込みを禁止するような設定を行うことで、以降の書込みに対しトラップが発生させることができる。これには、MMUが使用するページテーブルにある、書込み禁止フラグや、ページ存在フラグなどを利用することが考えられる。読み書き管理手段80にて共有メモリ領域82を書込み禁止に設定(S413)した後、または、障害発生APが共有メモリを利用していなかった(S412のN)場合、読み書き管理手段80の動作は終了し、障害検出手段35に処理が戻り、障害が発生したAP22を停止させるためにプロセス切替手段36に通知する(図19、図20のS414)。
障害検出手段35により通知されたプロセス切替手段36は、障害が発生したAP22の実行を停止する(図19、図20のS415)。これは、AP22が動作していたプロセスをスケジューリング対象から外し、同プロセスの状態を停止状態に移行することを意味し、プロセスそのものを削除することはこの時点ではしない。プロセスそのものを削除しないことにより、AP22が使用していたメモリ5内のAP情報領域29、および共有メモリ領域82がそのまま残存し、これをプロセッサコア2上から参照することが可能となる。
また、共有メモリ領域82については、他のAPから書込みがあるとトラップにより、書込みを防ぐようになっており、共有メモリ領域82についてもAP22が障害にて停止した状態が維持される。次に障害検出手段35は、プロセッサ間通信機能(図1の15)を利用して、障害発生を障害処理するプロセッサコア2に通知する(図19、図20のS416)。この時、障害が発生したAP22の情報や保存したレジスタ情報などが付加される。そして障害処理手段35は、プロセス切替手段36を介して、他APへの切替を行う。プロセス切替手段36は、OS21内のプロセス情報を参照し、動作可能なAP23を抽出し、AP23を動作可能(RUN状態)にする(図19、図20のS417)。これにより以降、プロセッサコア1上ではAP23が動作する(図20のS418)。
プロセッサコア2では、障害管理手段44が動作しており、他プロセッサからの通知があるかチェックしている(図20のS419)。S416にて、プロセッサコア1からプロセッサコア2に割込みが通知されると、プロセッサコア2のプロセッサ間通信機能(図1の16)が、その割込みを検出し、障害管理手段44に通知する(図19、図20のS419)。障害管理手段44では、S419にてその通知をチェックしており、通知があれば(S419のY)、通知元プロセッサコアに対応する障害処理手段を登録領域45内から見つけ出し、その手段を起動する(図19、図20のS420)。この実施の形態では、プロセッサコア1から通知されたので、登録領域45内の障害処理手段34’が起動される。この障害処理手段34’は、プロセッサコア1内のOS21用のものであり、OS21にあわせた障害処理が可能となる。
障害処理手段34’は、まず、通知にて付加されたAP22の情報を元に、メモリ5のOS21用領域27内のAP情報領域29を探し、その中にある情報からエラーの発生種類(ページフォルト、0割り算等)や、発生箇所(OS内/AP内)、エラー発生時のレジスタ情報等を収集する(図19、図20のS421)。
次に障害処理手段34’は、収集されたAP22の障害情報を元にエラー原因の特定および、それに伴いプロセッサコア1の動作を継続させるか、それとも、そのエラーが継続できない障害でプロセッサコア1をシステムダウン(停止または再起動)にすべきかを判断する(図20のS422)。そして障害処理手段34’は、特定されたエラー原因や継続動作またはシステムダウン動作遷移情報、および収集された障害情報を、コンソール6に表示し、使用者に障害が発生したことを通知するとともに、バックアップメモリ8内のエラー情報格納域42に、これら情報を記録し、障害発生後も使用者が障害発生情報を参照できるようにする(図19、図20のS423)。
次に障害処理手段34’は、プロセッサコア1の対処としてシステムダウンすべきか否か判断する(図20のS424)。システムダウンすべき場合(S424のY)は、プロセッサコア1を停止状態にさせた後、メモリ5内のOS21用領域27の内容をディスクに書き込む(メモリダンプ)などした後、プロセッサコア1のリブート(H/Wリセット)を行う(図20のS425)。これにより、プロセッサコア1は初期状態に戻り、再度OS21がブートされる。
S422にてシステムダウンしない場合(S424のN)、障害処理手段34’は、特定されたエラー原因を元に、各エラーに対応した処理をおこなう(図20のS426)。これは、例えば0割り算によるエラーであれば、次にAP22が実行される場合は、0割り算のシグナルハンドラ(エラー発生に伴い呼び出される関数)を呼び出すようにAP情報領域29内のAP22のスタックを操作したり、セグメンテーションフォルトによるエラーであれば、コアファイル41を作成する準備を行う。
そして、障害処理手段34’は、コアファイル41を作成するようなエラーである場合に、コアファイル作成処理を行う(図19、図20のS427)。この時、障害処理手段34’は、AP情報領域29の内容およびAP22が共有メモリを使用していれば共有メモリ領域82の内容をHDD7内のコアファイル41に書き出す。コアファイル41の作成が終了すると、障害処理手段34’は、AP22を再開させるために停止処理解除要求をプロセッサコア1に通知する(図19、図20のS428)。これは、プロセッサ間通信機能(図1の16)を利用して、プロセッサコア1に割込みを通知することで行われる。この時、AP22を継続動作させるか、削除すべきかの情報が付加される。
S418にてプロセッサコア1上でAP23が動作している間に、プロセッサコア2での障害情報の収集および記録が終了し、S428にてプロセッサコア2からプロセッサコア1に対しAP22の停止処理解除要求が実施されると、プロセッサコア1のプロセッサ間通信機能(図1の15)がその割込みを受信し、OS21内のプロセス切替手段36を起動する(図20のS429)。プロセス切替手段36はまず、読み書き管理手段80を呼び出し、障害が発生していたAP22が共有メモリ領域82を使用していたかチェックさせる(図19、図20のS430)。
読み書き管理手段80では、AP22が共有メモリ領域を82を使用していた場合(図20のS430のY)、既に障害が発生したAP22に対する障害処理は終了しており、かつ、共有メモリ領域82には、S413にて書込み禁止に設定されていたため、共有メモリ領域82の書込み禁止を解除する(図19、図20のS431)。これにより、以降、他APが共有メモリ82に書込み操作を行っても、トラップは発生せず、直接書き込むことが可能となる。
読み書き管理手段80にて共有メモリ領域を書込み禁止解除に設定(S431)した後、または、障害発生APが共有メモリを使用していなかった(S430のN)場合、読み書き管理手段80の動作は終了し、プロセス切替手段36に処理が戻り、プロセス切替手段36は、プロセッサコア2からの通知にて付加されたAP22を継続動作させるか、削除すべきかの情報を元に、AP22の再開または終了を処理する(図19、図20のS432)。継続動作させる場合は、AP22が動作していたプロセスをスケジューリング対象に戻し、終了させる場合は、AP22が動作していたプロセスを削除する処理を行う。以上がこの実施の形態における情報処理装置の障害発生時の動作である。
次に、この実施の形態における情報処理装置の共有メモリ領域82に書込み禁止設定になっていた場合の、他APによる書込み操作が実施された時の動作について、図21の矢印および図22のフローチャートを用いて説明する。この実施の形態では、AP22およびAP23が共有メモリ領域82を使用しており、AP22に障害が発生し、AP22の障害処理操作の過程で共有メモリ領域82が書込み禁止設定(図19、図20のS413)になっている時に、AP23が共有メモリ領域82に書込みを行おうとした場合の例で説明する。まず、AP23(他AP)が共有メモリ領域82に書込み操作を行う(図21、図22のS451)。すると、それをプロセッサコア1が検知し、トラップを発生し、そのトラップを読み書き管理手段80が検出する(図21、図22のS452)。
読み書き管理手段80は、トラップ処理内にてAP23が共有メモリ領域82内のどこに書き込もうとしていたかを判断すると共に、OS21用領域27にある空きメモリ領域84から、空きメモリを確保する(図21、図22のS453)。確保する量は、プロセッサコア1のMMU18によって管理される、アドレス空間の最小単位(ページテーブルにて管理できる最小サイズ。インテル社x86系プロセッサでは1ページ=4KB)の量となる。
次に読み書き管理手段80は、AP23が共有メモリ領域82内の書き込もうとしていた領域の内容をS453にて確保した領域にコピーする(図21、図22のS454)。このコピーする量も、空きメモリを確保した量と同じであり、書き込もうとした領域が含まれる、アドレス空間の最小単位の領域全てが、確保した空きメモリ領域にコピーされる(例えば、アドレス空間の最小単位4KBにて、アドレス0x80000010から始まる4バイトの領域に書き込もうとしていた場合、0x80000000〜0x80000fffの領域がコピーされる)。
次に、読み書き管理手段80は、AP23が共有メモリ領域82に対して行おうとしていた書込み操作を、コピーした領域に対して行わせるように、AP23の領域設定を切り替える(図21、図22のS455)。これは、AP23のアドレス空間にて、共有メモリ領域82として参照していた空間を、S454にてコピーした領域を参照するように切り替える。具体的には、プロセッサコア1のMMU18が参照しているページテーブルにある、AP23が書き込もうとしていた領域に対するアドレスに対するテーブルを、S454にてコピーした領域に対するアドレスに切り替えることで、S454にてコピーした領域がAP23が書き込もうとしていたアドレス空間に対し参照可能となる。これにより、以降AP23が共有メモリ82の同様な領域を書き込もうとしても、アドレス空間としては、コピーした領域を参照しているので、コピーした領域に対し、書込みが発生し、障害が発生したAP22が参照している共有メモリ領域に書込みは発生しない。
次に読み書き管理手段80は、AP23が共有メモリ82内の書き込もうとしていた領域が、他APにて参照しているかチェックする(図22のS456)。他APにて参照している場合(S456のY)、他APにて参照している共有メモリ82内の該当領域を、S454にてコピーした領域になるよう、他APのアドレス空間の設定を変更する。これにより、以降、AP22、AP23以外のAPも、AP23によって書込みが発生した領域を共有メモリ領域として参照することが可能となり、障害が発生しているAP22が参照していた共有メモリは障害発生時の状態を保ったまま、他APについては、共有メモリの操作が可能で、かつ、最新の共有メモリ状態を参照することが可能となる。
S457にて他のAPに対する共有メモリ設定の変更を行った後、または、AP23が書き込もうとした領域を他のAPが使用していなかった(S456のN)場合、読み書き手段80の動作は終了し、トラップ処理を復帰し(図22のS458)、AP23の共有メモリ領域82に対する書込み操作が継続される。この時、既に、書き込もうとした領域はS454にてコピーした領域であり、AP22が参照していた共有メモリ領域82は、障害発生時のデータがそのまま残っている。以上が、この実施の形態における、共有メモリ領域82が書き込み禁止設定になっていた場合の、他APによる書込み操作が実施された時の動作である。
この実施の形態4による情報処理装置の障害処理システムでは、各APで同じメモリを読み書きすることができる共有メモリ領域に対し、共有メモリの書込みを禁止し、書込みが発生した場合はトラップが発生するような設定と、トラップが発生した場合の処理を行う読み書き管理手段を設け、APに障害が発生し、そのAPが共有メモリを参照している場合は読み書き管理手段にて、他APに対し、共有メモリを書込み禁止にするような設定を行い、障害が発生していないAPが、その共有メモリ領域に書込みを行うことでトラップが発生すると、読み書き管理手段にて、書き込もうとしていた領域に対し代替となる領域を確保するとともに、書き込もうとしていていた領域の内容を代替領域にコピーし、書き込もうとしていたAPを含む、障害発生AP以外のAPの共有メモリ領域を、その代替領域を参照するように、各APのアドレス空間を切り替えるようにしたので、障害発生APの障害処理は障害発生時の状態を保存でき、かつ、他APの共有メモリ操作も継続して実行できるようにすることで、障害が発生したプロセッサ上で次に動作すべきAPを迅速に動作させることができる情報処理装置の障害処理システムを得ることができる。
なお、この実施の形態では、代替領域への切替を、書き込もうとしたAPのアドレス空間に対して行ったが、これを障害発生APに対して切り替えるようにしても同様な情報処理装置の障害処理システムを得ることができる。この場合、書き込もうとした領域の内容を確保した空きメモリ領域にコピーした後、障害発生APのアドレス空間の共有メモリ領域を、確保した領域に切り替えるとともに、書き込もうとしたAPを含む傷害発生AP以外のAPのアドレス空間に対し、書込み禁止の設定を解除する。これにより、障害発生AP以外のAPの書込みは共有メモリ領域に対して行われるが、障害発生APの共有メモリ領域に対するアドレス空間は、確保した領域を参照するため、障害発生APの障害処理は、障害発生時の状態で共有メモリ領域を参照することができる。
また、この実施の形態では、S456、S457にて、書込み操作を実施しようとしたAP以外のAPに対する共有メモリ領域82に対する処理を行っているが、ここで処理を行わず、次に他APが同領域に書込みを行った際に、既に代替領域があるか否かをチェックし、代替領域がなければ代替領域の確保およびコピーを、あれば、代替領域を参照するように自身のアドレス空間を切り替える設定をするようにしても、同様な情報処理装置の障害処理システムを得ることができる。
実施の形態5.
この発明の他の実施の形態における情報処理装置の障害処理システムについて説明する。実施の形態5では、情報処理装置のH/W構成は実施の形態1と同じであり、図1で示される。図23は、図1で示したH/W構成に対する。ソフトウェア(S/W)の構成を示す図である。図中、プロセッサコア1には、OS21と、OS21で動作するAP22、AP23が動作する。同様にプロセッサコア2には、OS121と、OS121上で動作するAP122、およびAP123が、プロセッサコア3にはOS24と、OS24上で動作するAP25とAP26が存在する。また、OS21、AP22、AP23、およびOS121、AP122、AP123、およびOS24、AP25、AP26、のコード/データ、およびヒープ/スタック領域はメモリ5上に存在する。
メモリ5上には、OS21が使用するOS21用領域27と、OS24が使用するOS24用領域28と、OS121が使用するOS121用領域132とに用途が区切られており、OS21用領域27内には、OS21上で動作するAP22のコード/データおよびヒープスタック領域であるAP情報領域29と、OS21上で動作するAP23のコード/データおよびヒープ/スタック領域であるAP情報領域30が、OS24用領域28には、OS24上で動作するAP25のコード/データおよびヒープ/スタック領域であるAP情報領域31と、OS24上で動作するAP26のコード/データおよびヒープスタック領域であるAP情報領域32が、OS121用領域132内には、OS121上で動作するAP122のコード/データおよびヒープ/スタック領域であるAP情報領域133と、OS121上で動作するAP123のコード/データおよびヒープ/スタック領域であるAP情報領域134が存在する。
また、メモリ5上には、各プロセッサコアが処理すべきものが何もない(アイドル状態)時に、アイドル状態を他のプロセッサコアに知らしめるための、待ちキュー135が存在する。この実施の形態では、プロセッサコア2およびプロセッサコア3がアイドル状態であり、待ちキュー135には、プロセッサコア2がアイドル状態であることを示す待ち136と、プロセッサコア3がアイドル状態であることを示す待ち137がリンクされている。
プロセッサコア1、プロセッサコア2、およびプロセッサコア3にある、OS21、OS121、OS24には、それぞれプロセッサコア上で動作するAPに障害が発生した場合に、障害を検知し、対処する手段と、他のプロセッサコアの指示により障害情報を収集・記録する手段が存在する。プロセッサコア1上のOS21には、OSの初期化処理を行うOS初期化手段33と、障害発生時にOS21に対応した障害処理を他プロセッサコア上で行うための障害処理手段34、APの障害を検出する障害検出手段35と、APの動作を切り替えるためのプロセス切替手段36が存在し、他プロセッサコアで動作するOSに対応する障害処理手段の登録処理および他プロセッサコアからの指示により障害処理手段を起動する障害管理手段101が存在する。さらに、他プロセッサコア上のOSに対応する障害処理手段を格納するための登録領域102が存在し、かつ、プロセッサコア上で処理すべきものが何もない(アイドル状態)ことを検出するアイドル状態検出手段103と、プロセッサコア上で処理すべきものが存在する(非アイドル状態)ことを検出する非アイドル状態検出手段104が存在する。
同様な手段は、プロセッサコア2上のOS121、およびプロセッサコア3上のOS24にも存在する。プロセッサコア2上のOS121には、OS初期化手段124、障害処理手段125、障害検出手段126、プロセス切替手段127、障害管理手段128、登録領域129、アイドル状態検出手段130、非アイドル状態検出手段131が存在し、プロセッサコア3上のOS24には、OS初期化手段37、障害処理手段38、障害検出手段39、プロセス切替手段40、障害管理手段111、登録領域112、アイドル状態検出手段113、非アイドル状態検出手段114が存在する。
次に、この実施の形態における情報処理装置のOS初期化時の動作について、図24の矢印および図25のフローチャートを用いて説明する。まず、プロセッサコア1にH/Wリセットが掛かり、OS21が起動されると、OS初期化手段33が動作する。プロセッサコア1のOS初期化手段33は、OS内の様々な機能の初期化を行うと共に、プロセッサコア1を含め、全プロセッサコアに対し、OS21内にある障害処理手段34の登録を依頼する(図24および図25のS501)。この登録依頼処理は、プロセッサコア1、プロセッサコア2、プロセッサコア3内のプロセッサ間通信機能(図1の15、16、17)を用いて行われる。プロセッサコア2は、OS121の起動後、OS21と同様にOS初期化処理手段33が動作した後、障害管理手段128が動作し、他プロセッサコアからの通知を待つ(図25のS502)。
他プロセッサコアからの通知がない場合は、再度通知を待つ(S502のN)。他プロセッサコアから通知があった場合(S502のY)、依頼されたプロセッサコア1から障害処理手段34の内容を受信し、登録領域45内に障害処理手段34”として格納する(図24および図25のS503)。そして再度、他プロセッサからの通知を待つ(S502)。このようにして、プロセッサコア2内の登録領域45には、プロセッサコア1上で動作する各OSに対応した障害処理手段が格納されることになる。
同様にプロセッサコア3でもプロセッサコア1からの通知により、登録領域112に障害処理手段34の内容が格納される。さらに、プロセッサコア1自身もOS初期化処理手段33からの通知により、自身の登録領域102に自身の障害処理手段34の内容が障害処理手段34’として格納される。また、プロセッサコア2上のOS初期化処理手段124、およびプロセッサコア3上のOS初期化処理手段37も、プロセッサコア1のOS初期化処理手段33と同じ動作を行う。
プロセッサコア2上のOS121のOS初期化手段124は、プロセッサコア2を含む、全プロセッサコアに対し、OS121内にある障害処理手段125の登録を依頼し、プロセッサコア3上のOS24のOS初期化手段37は、プロセッサコア3を含む、全プロセッサコアに対し、OS24内にある障害処理手段38の登録を依頼する。それぞれの依頼に対し、各プロセッサコア障害管理手段がそれぞれの登録領域に、障害処理手段の内容を格納する。
これにより、プロセッサコア1の登録領域102には、プロセッサコア1用の障害処理手段34’とプロセッサコア2用の障害処理手段125’とプロセッサコア3用の障害処理手段38’が存在し、プロセッサコア2の登録領域129には、プロセッサコア1用の障害処理手段34”とプロセッサコア2用の障害処理手段125”とプロセッサコア3用の障害処理手段38”が存在し、プロセッサコア3の登録領域112にも各プロセッサコア用の障害処理手段が存在するようになる。
この実施の形態では、プロセッサコア2の障害処理登録手段43が、他プロセッサコアからの通知を待っているように記載しているが、これを割込みベースにしても動作は同じである。この場合、プロセッサコア2にて他の処理を行っている最中に、プロセッサ間通信機能(図1の16)にて割込みが発生し、その割込み処理にて障害処理登録手段43が起動し、登録処理が実施された後、プロセッサコア2は、割込みが発生した時に行っていた処理に戻る。以上がこの実施の形態における情報処理装置のOS初期化時の動作である。
次に、この実施の形態における情報処理装置の定常状態の動作について、図26内の矢印および図27のフローチャートを用いて説明する。この実施の形態では、プロセッサコア2上での動作を例に説明するが、プロセッサコア1およびプロセッサコア3でも同様な動作になる。まず、プロセッサコア2上でAPが動作している(図27のS511)状態で、APの動作が終了(または、I/O要求等の待ちになる)すると(図27のS512)、制御がOS121のプロセス切替手段127に移り、プロセス切替手段127は、次に動作可能なAPが存在するかチェックする(図27のS513)。
動作可能なAPが存在しない場合、アイドル状態になるため、プロセス切替手段127はアイドル状態検出手段130を呼び出す(図26、図27のS513のN)。アイドル状態検出手段130は、メモリ5上の待ちキュー135に自プロセッサコア(プロセッサコア2)が既に登録済になっているかチェックを行う(図27のS514)。待ちキュー135に自プロセッサコアが登録されていない場合(S514のN)、アイドル状態検出手段130は、プロセッサコア2が他の処理をすることが可能なことを他のプロセッサコアに知らせるために、待ちキュー135に、待ち136を繋げる(図26、図27のS515)。
待ちキュー135には、それがプロセッサコア2であることを意味するための情報(プロセッサコア番号やOS番号等)を格納しておく。これにより、他プロセッサコアからこのプロセッサコアに対し、障害対応処理を要求することを受け付けられるようになる。そして、アイドル検出手段130の処理は終了し、プロセス切替手段127はアイドル状態に遷移する(図27のS516)。その後、再度S513に戻り、動作可能なAPが存在するかチェックする。S514にて待ちキュー135に自プロセッサコアが既に登録されている場合(S514Y)は、アイドル状態検出手段130は処理を終了し、プロセス切替手段127はアイドル状態に遷移する(図27のS516)。
S513にて、動作可能なAPが存在する場合、APを動作させることにより、非アイドル状態になるため、プロセス切替手段127は非アイドル状態検出手段131を呼び出す(図26、図27のS513のY)。非アイドル状態検出手段131は、メモリ5上の待ちキュー135に自プロセッサコア(プロセッサコア2)が既に登録済みになっているかチェックを行う(図27のS517)。待ちキュー135に自プロセッサコアが登録されている場合(図27のS517のY)、自プロセッサコアがアイドル状態から外れたので、待ちキュー135から、待ち136を削除する(図26、図27のS518)。これにより、他プロセッサコアからこのプロセッサコアに対し、障害対応処理を要求されることはなくなる。そして、非アイドル状態検出手段131の処理は終了し、該当するAPの動作が開始される(図27のS511)。S517にて待ちキュー135に自プロセッサコアが登録されていない場合は、直ぐに非アイドル状態検出手段131の処理を終了し、該当するAPの動作が開始される(図27のS511)。
以上が、この実施の形態に置ける情報処理装置の定常状態の動作である。なお、この実施の形態では、アイドル状態および非アイドル状態の検出をプロセス切替手段127からの呼び出しを契機として説明しているが、アイドル状態の検出については、アイドル検出手段130を、APの動作と同様に1つの実行単位(プロセス)とし、一番低い優先度で動作させることにより、OS121上で動作するするAPが何もなくなったとき、アイドル検出手段130プロセスが動作し、待ちキュー135に対するプロセッサコア2の登録を行うことでも同様な機能を実現可能である。さらに、非アイドル状態の検出については、外部からの割込みを受信する割込みハンドラから非アイドル状態検出手段131を実行させることでも、同様な機能を実現可能である。
次に、この実施の形態における情報処理装置の障害発生時の動作について、図28内の矢印および図29のフローチャートを用いて説明する。この実施の形態では、プロセッサコア2およびプロセッサコア3がアイドル状態の時に、プロセッサコア1上で動作するAP22に障害が発生した場合の例で説明する。
まず、AP22の動作中に障害が発生すると、プロセッサコア1上で例外が発生し、OS21内の障害検出手段35が、その例外を検出する(図28、図29のS520)。そして障害検出手段35は、最低限のレジスタ情報をメモリ5内に保存した後、障害が発生したAP22を停止させるためにプロセス切替手段36に通知する(図28、図29のS521)。障害検出手段35により通知されたプロセス切替手段36は、障害が発生したAP22の実行を停止する(図28、図29のS522)。これは、AP22が動作していたプロセスをスケジューリング対象から外し、同プロセスの状態を停止状態に移行することを意味し、プロセスそのものを削除することはこの時点ではしない。プロセスそのものを削除しないことにより、AP22が使用していたメモリ5内のAP情報領域29がそのまま残存し、これを他のプロセッサコアから参照することが可能となる。
次に障害検出手段35は、待ちキュー135に繋がれているプロセッサコアが存在するかチェックする(図28、図29のS523)。待ちキュー135に他プロセッサコアの待ちが繋がれている場合(S523のY)、障害処理を他プロセッサに依頼することができるので、障害検出手段35は、待ちキュー135を参照し、そこに繋がれている待ち、この実施の形態ではプロセッサコア2の待ち136の情報から、障害の処理が対応可能なプロセッサコア2を見つけ出すとともに、待ち136を待ちキュー135から削除する(図27のS524)。
次に障害検出手段35は、プロセッサ間通信機能(図1の15)を利用して、障害発生を障害処理するプロセッサコア2に通知する(図28、図29のS525)。この時、障害が発生したAP22の情報や保存したレジスタ情報などが付加される。そして障害処理手段35は、プロセス切替手段36を介して、他APへの切替を行う。プロセス切替手段36は、OS21内のプロセス情報を参照し、動作可能なAP23を抽出し、AP23を動作可能(RUN状態)にする(図28、図29のS526)。これにより以降、プロセッサコア1上ではAP23が動作する(図29のS527)。
プロセッサコア2では、待ちキュー135に自身の待ち136を繋げている状態であり、アイドル状態となっている。この時、障害管理手段128が動作しており、他プロセッサからの通知があるかチェックしている(図29のS528)。S528にて、プロセッサコア1からプロセッサコア2に割込みが通知されると、プロセッサコア2のプロセッサ間通信機能(図1の16)が、その割込みを検出し、障害管理手段128に通知する。障害管理手段128では、S528にてその通知をチェックしており、通知があれば(S528のY)、通知元プロセッサコアに対応する障害処理手段を登録領域129内から見つけ出し、その手段を起動する(図28、図29のS529)。
この実施の形態では、プロセッサコア1から通知されたので、登録領域129内の障害処理手段34”が起動される。この障害処理手段34”は、プロセッサコア1内のOS21用のものであり、OS21にあわせた障害処理が可能となる。障害処理手段34”は、まず、通知にて付加されたAP22の情報を元に、メモリ5のOS21用領域27内のAP情報領域29を探し、その中にある情報からエラーの発生種類(ページフォルト、0割り算等)や、発生箇所(OS内/AP内)、エラー発生時のレジスタ情報等を収集する(図28、図29のS530)。
次に障害処理手段34”は、収集されたAP22の障害情報を元にエラー原因の特定および、それに伴いプロセッサコア1の動作を継続動作させるか、それとも、そのエラーが継続できない障害でプロセッサコア1をシステムダウン(停止または再起動)にすべきかを判断する(図29のS531)。システムダウンするケースとしては、障害発生の箇所がAP22が呼び出したOS21内で発生したエラーでOS復帰ができないものや、CPU内部エラーが発生した場合などが挙げられる。そして障害処理手段34”は、特定されたエラー原因や継続動作またはシステムダウン動作遷移情報、および収集された障害情報を、コンソール6に表示し、使用者に障害が発生したことを通知するとともに、バックアップメモリ8内のエラー情報格納域42に、これら情報を記録し、障害発生後も使用者が障害発生情報を参照できるようにする(図28、図29のS532)。
次に障害処理手段34”は、プロセッサコア1の対処としてシステムダウンすべきか否か判断する(図29のS533)。システムダウンすべき場合(S533のY)は、プロセッサコア1を停止状態にさせた後、メモリ5内のOS21用領域27の内容をディスクに書き込む(メモリダンプ)などした後、プロセッサコア1のリブート(H/Wリセット)を行う(図29のS534)。これにより、プロセッサコア1は初期状態に戻り、再度OS21がブートされる。
S533にてシステムダウンしない場合(S533のN)、障害処理手段34”は、特定されたエラー原因を元に、各エラーに対応した処理をおこなう(図29のS535)。これは、例えば0割り算によるエラーであれば、次にAP22が実行される場合は、0割り算のシグナルハンドラ(エラー発生に伴い呼び出される関数)を呼び出すようにAP情報領域29内のAP22のスタックを操作したり、セグメンテーションフォルトによるエラーであれば、コアファイル41を作成する準備を行う。そして、障害処理手段34”は、コアファイル41を作成するようなエラーである場合に、コアファイル作成処理を行う(図28、図29のS536)。 この時、障害処理手段34”は、AP情報領域29の内容をHDD7内のコアファイル41に書き出す。
コアファイル41の作成が終了すると、障害処理手段34”は、AP22を再開させるために停止処理解除要求をプロセッサコア1に通知する(図28、図29のS537)。これは、プロセッサ間通信機能(図1の16)を利用して、プロセッサコア1に割込みを通知することで行われる。この時、AP22を継続動作させるか、削除すべきかの情報が付加される。この後、障害処理手段34”の処理は終了し、障害管理手段128に戻る。
障害管理手段128は、定常状態の処理に戻る(図29、S518)。定常状態の処理(図27)では、アイドル状態時(図27のS516)から、障害管理手段128が呼び出されているので、再度動作可能なAPがいるかチェック(図27のS513)し、動作可能なAPがいなければ(図27のS513のN)、再度待ちキュー135に待ち136を繋げ(図27のS515)、アイドル状態に遷移(図27のS516)し、動作可能なAPがいれば(図27のS513のY)、待ちキューに登録済みか否かのチェック(図27のS517、図29のS524にて待ちキューへの登録は削除されているので、S517のNを実行)し、そのAPに制御を移す(図27のS511)。
S527にてプロセッサコア1上でAP23が動作している間に、プロセッサコア2での障害情報の収集(図29のS530)および記録(図29のS536)が終了し、S537にてプロセッサコア2からプロセッサコア1に対しAP22の停止処理解除要求が実施されると、プロセッサコア1のプロセッサ間通信機能(図1の15)がその割込みを受信し、OS21内のプロセス切替手段36を起動する(図29のS539)。プロセス切替手段36は、通知にて付加されたAP22を継続動作させるか、削除すべきかの情報を元に、AP22の再開または終了を処理する(図28、図29のS540)。継続動作させる場合は、AP22が動作していたプロセスをスケジューリング対象に戻し、終了させる場合は、AP22が動作していたプロセスを削除する処理を行う。
S523にて待ちキュー135に他のプロセッサコアの待ちがつながれていない場合(S523のN)、他プロセッサでAP22の障害処理を実施することができないため、プロセッサコア1自身で障害処理が行うため、障害検出手段35は、プロセッサコア1自身の障害管理手段101を呼び出す。障害管理手段101は、登録領域102からプロセッサコア1自身の障害処理手段34’を見つけ出し、起動する(図29のS541)。障害処理手段34’は、まず、通知にて付加されたAP22の情報を元に、メモリ5のOS21用領域27内のAP情報領域29を探し、その中にある情報からエラーの発生種類(ページフォルト、0割り算等)や、発生箇所(OS内/AP内)、エラー発生時のレジスタ情報等を収集する(図29のS542)。
次に障害処理手段34’は、収集されたAP22の障害情報を元にエラー原因の特定および、それに伴いプロセッサコア1の動作を継続動作させるか、それとも、そのエラーが継続できない障害でプロセッサコア1をシステムダウン(停止または再起動)にすべきかを判断する(図29のS543)。そして障害処理手段34’は、特定されたエラー原因や継続動作またはシステムダウン動作遷移情報、および収集された障害情報を、コンソール6に表示し、使用者に障害が発生したことを通知するとともに、バックアップメモリ8内のエラー情報格納域42に、これら情報を記録し、障害発生後も使用者が障害発生情報を参照できるようにする(図29のS544)。
次に障害処理手段34’は、プロセッサコア1の対処としてシステムダウンすべきか否か判断する(図29のS545)。システムダウンすべき場合(S545のY)は、メモリ5内のOS21用領域27の内容をディスクに書き込む(メモリダンプ)などした後、リブート(H/Wリセット)を行う(図29のS546)。これにより、プロセッサコア1は初期状態に戻り、再度OS21がブートされる。
S545にてシステムダウンしない場合(S545のN)、障害処理手段34’は、特定されたエラー原因を元に、各エラーに対応した処理をおこなう(図29のS547)。これは、例えば0割り算によるエラーであれば、次にAP22が実行される場合は、0割り算のシグナルハンドラ(エラー発生に伴い呼び出される関数)を呼び出すようにAP情報領域29内のAP22のスタックを操作したり、セグメンテーションフォルトによるエラーであれば、コアファイル41を作成する準備を行う。そして、障害処理手段34’は、コアファイル41を作成するようなエラーである場合に、コアファイル作成処理を行う(図29のS548)。この時、障害処理手段34’は、AP情報領域29の内容をHDD7内のコアファイル41に書き出す。
コアファイル41の作成が終了すると、障害処理手段34’は、AP22の停止解除を行うためにプロセス切替手段36を起動する(図29のS549)。プロセス切替手段36は、AP22を継続動作させるか、削除すべきかの情報を元に、AP22の再開または終了を処理する(図29のS540)。継続動作させる場合は、AP22が動作していたプロセスをスケジューリング対象に戻し、終了させる場合は、AP22が動作していたプロセスを削除する処理を行う。以上がこの実施の形態における情報処理装置の障害発生時の動作である。
この実施の形態5による情報処理装置の障害処理システムでは、各プロセッサコアに障害処理用の手段を設け、メモリ上に待ちキューを備え、各プロセッサコアが、自身ですべき処理が何もないときに、待ちキューに自身の情報を登録し、何らかの処理が発生した場合に待ちキューから自身の情報を削除する。障害が発生したプロセッサは、待ちキューにつながれているプロセッサコアの情報を元に、障害処理が可能なプロセッサコアに障害が発生したことを通知し、通知されたプロセッサコアは、自身の持っている障害処理用の手段を用いて、障害発生プロセッサで動作していたAPの障害情報の収集/記録、および障害に対する対処を行うようにしたので、障害処理用のプロセッサコアを持たない場合でも、障害が発生したプロセッサ上で次に動作すべきAPを迅速に動作させることができる、情報処理装置の障害処理システムを得ることができる。
なお、この実施の形態では、各プロセッサコア内の登録領域にプロセッサコア上で動作するOS自身の障害処理手段を登録するようにしたが、これを登録せずに、障害発生時での待ちキューに他プロセッサコアの待ちがない場合には直接自身の障害処理手段を呼び出すようにしてもこの実施の形態と同様な情報処理装置の障害処理システムを得ることができる。
1、2、3;プロセッサコア、4;バス、5;メモリ、6;コンソール、7;ハードディスク装置(HDD)、8;バックアップメモリ、9、10、11;演算処理部、12、13、14;キャッシュ、15、16、17;プロセッサ間通信機能、18、19、20;MMU、21、24、121:OS、22、23、25、26、122,123;AP、27;OS21用領域、28;OS24用領域、29、30、31、32、133、134;AP情報領域、33、37、124;OS初期化手段、34、38、125;障害処理手段、35、39、126;障害検出手段、36、40、127;プロセス切替手段、41;コアファイル、42;エラー情報格納域、43;障害処理登録手段、44、111、128;障害管理手段、45、102、112、129;登録領域、49;プロセッサコア2用領域、50;AP22アドレス空間、51;AP23アドレス空間、52、53、56、57、59;ページテーブル、54;AP25アドレス空間、55;AP26アドレス空間、58;テキスト/データ領域、60;障害処理手段アドレス、70、71;OS内部情報、72;収集領域情報、80、81;読み書き管理手段、82、83;共有メモリ領域、84;空きメモリ領域、101;障害管理手段、103、113、130;アイドル状態検出手段、104、114、131;非アイドル状態検出手段、132;OS121用領域、135;待ちキュー、136,137;待ち。