(57)【要約】【課題】  構築されたシステムの割込み応答性を低下させずに、システム間のタスク優先度の逆転現象を未然に防止するコンピュータシステム及びそのオペレーション方法を提供する。【解決手段】  異なるハードウエア資源を夫々管理する複数のオペレーティングシステムの優先度及びシステム状態を管理する管理テーブル記憶装置と、管理テーブル記憶装置にアクセスし、優先度及びシステム状態に基づき、オペレーティングシステムの実行を調停プロセスを経由して切替え、割込処理又は例外処理、並びにタスク処理の何れか１つを動作させるＣＰＵと、を備える。【選択図】        図１
2005173643.tif 000002
【特許請求の範囲】
【請求項１】
異なるハードウエア資源を夫々管理する複数のオペレーティングシステムの優先度及びシステム状態を管理する管理テーブル記憶装置と、
前記管理テーブル記憶装置にアクセスし、前記優先度及びシステム状態に基づき、前記オペレーティングシステムの実行を調停プロセスを経由して切替え、割込処理又は例外処理、並びにタスク処理の何れか１つを動作させる中央処理装置と、
を備えることを特徴とするコンピュータシステム。
【請求項２】
前記管理テーブル記憶装置は、前記中央処理装置に対するオペレーティングシステムの起動処理と、例外処理と、割込処理と、実行システムの起動及び停止処理とを数値又はポインタにより管理する第1の管理テーブルと、
前記中央処理装置に対する前記オペレーティングシステムの現優先度と、通常優先度と、割込処理優先度と、前記システム状態と、を数値又はポインタで管理する第２の管理テーブルと、
前記中央処理装置に対する割込要因と、その割込要因処理を実行する前記オペレーティングシステムを管理する第３の管理テーブルと、
を含むことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記オペレーティングシステムに夫々対応させて前記ハードウエア資源を特定するコンテキスト情報を記憶するシステムメモリを備え、前記調停プロセスが、前記コンテキスト情報に基づき、対応する前記オペレーティングシステムを前記中央処理装置上で起動させた後に停止させることを特徴とする請求項１または請求項２に記載のコンピュータシステム。
【請求項４】
１つの中央処理装置が複数のオペレーティングシステムをシステムメモリに常駐記憶させるブート処理と、
前記中央処理装置が前記オペレーティングシステムの例外処理又は割込処理をハードウェアブロック上で検出し、管理テーブル記憶装置に記憶した前記オペレーティングシステムのシステム優先度又は割込要因に基づいて、前記オペレーティングシステムの起動処理と停止処理を実行する調停プロセス処理と、
を備えることを特徴とするコンピュータシステムのオペレーティング方法。
【請求項５】
前記調停プロセス処理は、自己診断指令を自動生成し、前記オペレーティングシステム毎に前記中央処理装置に対する夫々異なる優先度を設定し、前記オペレーティングシステムから要求された多重割込み処理の実行結果から得た着信メッセージの着信順番に基づき、前記オペレーティングシステムの優先度と整合するか否かを前記中央処理装置で判定することを特徴とする請求項４に記載のコンピュータシステムのオペレーティング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの中央処理装置（以下、「ＣＰＵ」と略記する）上で異なるオペレーティングシステムを動作させるコンピュータシステムに関するものである。
【背景技術】
【０００２】
１つのプラットホーム（例えば、ＣＰＵと周辺機器とそれらを制御するためのソフトウエア）の構成要素であるドライバソフトウェアを他のプラットホームに流用することは、アプリケーションプログラムインターフェース（ＡＰＩ）やソフトウェア構成の相違から困難であった。
【０００３】
一般に、システムを構成するソフトウェアアプリケーションは高機能なものほど階層構造を採り、その階層構造の下層部はよりハードウェア資産に依存するコードから構成され、上位ほどハードウェアとの関連が少なくなる。
【０００４】
従って、アプリケーションの上位層は比較的流用性の高い部品であるが、その動作はそのプラットホーム上で規定されたＡＰＩやオペレーティングシステム（以下、「ＯＳ」と略記する）のサービス仕様に依存しており、他のプラットホームに対する再利用性は、決して高いものではない。
【０００５】
システム規模が増大すると、全てのアプリケーションを独自に開発することは開発費や開発期間を膨大に消費する。上位アプリケーションはハードウェア資源からの独立性が高いが、プラットホームへの依存性が強い。よって、外部からアプリケーションやソフトウェア部品の調達を行う場合、プラットホームの違いが大きな課題となる。
【０００６】
一般に、ハードウェア資源に近い下層ソフトウェアは既存のソフトウェア資産を活用し、上位アプリケーションは外部から調達して、１つのＣＰＵ上に異なるオペレーティングシステムを動作させるコンピュータが存在していた。
【０００７】
また、基本動作が異なる複数のＯＳを１つのＣＰＵ上で動作させるコンピュータは、一方のＯＳを他方の動作原理の異なるＯＳのタスクとして動作させるエミュレーション技術を用いたコンピュータが存在していた。
【０００８】
これら従来技術は、２つのＯＳが全く同じハードウエアのプロパティ（資産）で動作することを前提にしているため、例えば、６４ビットのＣＰＵが３２ビットのアプリケーションを動作させる互換モード技術と同等と考えることができる。
【０００９】
さらに、実装する第一のＯＳに絶対的な優先度を付与し、この優先度が第二のＯＳの担う割り込み処理にも優先して適応されるコンピュータが存在していた（例えば、特許文献１参照。）。
【特許文献１】特開２００１−２１６１７２号公報（段落番号００３０、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００１０】
１つのCPU上に複数のシステムが動作する場合、そのシステム間の相対的な優先は、それらシステムが担う処理の内容に応じて決定されるべきである。しかしながら、１つのＣＰＵ上で動作する複数のシステムの中で３２ビットのシステムと、６４ビットのシステムが動作する場合、それらのコンテキストの違いから、必然的に６４ビットシステムの１つが背景技術に述べられたような「第一のＯＳ」となり、３２ビットシステムはその「第一のＯＳ」上で動作する一プロセスにならざるを得ない。つまり、処理の内容ではなく、コンテキストの性質がシステム優先度に影響してしまうという課題が存在していた。
【００１１】
また、第一のＯＳに絶対的な優先度を付与すると、割り込み要因の優先度は無視され、第二以下のシステムの優先度が逆転するという課題も存在する。例えば、低い優先度の割り込み要因が、高い優先度の割り込み要因より優先して処理される逆転現象を未然に防止するという課題も存在していた。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明の第１の特徴は、例えば、異なるハードウエア資源を夫々管理する複数のオペレーティングシステムの優先度及びシステム状態を管理する管理テーブル記憶装置と、管理テーブル記憶装置にアクセスし、優先度及びシステム状態に基づき、オペレーティングシステムの実行を調停プロセスを経由して切替え、割込処理又は例外処理、並びにタスク処理の何れか１つを動作させる中央処理装置と、を備えるコンピュータシステムであることを要旨とする。
【００１３】
本発明の第２の特徴は、例えば、１つの中央処理装置が複数のオペレーティングシステムをシステムメモリに常駐記憶させるブート処理と、中央処理装置がオペレーティングシステムの例外処理又は割込処理をハードウェアブロック上で検出し、管理テーブル記憶装置に記憶したオペレーティングシステムのシステム優先度又は割込要因に基づいて、オペレーティングシステムの起動処理と停止処理を実行する調停プロセス処理と、を備えるコンピュータシステムのオペレーティング方法であることを要旨とする。
【発明の効果】
【００１４】
本発明のコンピュータシステム及びそのオペレーティング方法によれば、構築されたシステムの割込み応答性を低下させずに、システム間のタスク優先度の逆転現象を未然に防止するという、格別な効果を奏する。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施形態を図示例と共に説明する。図１から図１４は、発明の実施形態であって、各図中に同一または類似の符号を付した部分は同一物または相当物を表わし、重複した説明は省略するものとする。
【００１６】
（第1の実施の形態）
図１は、本発明の第１の実施形態としてのコンピュータシステムの模式的なブロック図である。コンピュータシステムは、ソフトウエアブロックを構成するシステムメモリ１とレジスタやバッファや読出専用メモリＲＯＭ１９（以下、単に「ＲＯＭ」と略記する）や中央処理装置８（以下、単に「ＣＰＵ」と略記する）を含むハードウェアブロック２で構成する。
【００１７】
システムメモリ１には、ＯＳ１上で動作する第１の実行システム３と、ＯＳ１とは基本動作が異なるＯＳ２上で動作する第２の実行システム３ａと、第１及び第２の実行システムのＣＰＵ８での実行権を調停処理する調停プロセス１５とを実装させている。
【００１８】
実装とは、ＨＤＤ１４へシステムソフトとしてのＯＳ１やＯＳ２を記憶させること、タスク１６ａから１６ｆや、ＡＰＩ４、カーネル５、割込処理６ａをハードディスクドライブ１４（以下、単に「ＨＤＤ」と略記する）へ記憶させることを意味するが、コンピュータシステムによりＨＤＤ１４に代えてＲＯＭ１９へ固定記憶することを実装という。
【００１９】
ハードウェアブロック２は、異なるハードウエア資源２０として、ＣＰＵ８と、このＣＰＵ８と協働する仮想レジスタ９、管理テーブル記憶装置１８、リングバッファ１０、ＲＯＭ１９を備える。
【００２０】
ハードウェアブロック２は、入出力ポート１１（Ｉ／Ｏ）や、キーボード１２や、ディスプレイ１３や、ＨＤＤ１４のような周辺機器と相互に通信する。
【００２１】
管理テーブル記憶装置１８は、第1のシステム管理テーブル２３と、第２のシステム管理テーブル３１と、第３のシステム管理テーブル３８を記憶し、ＣＰＵ８に対するオペレーティングシステムとしてのＯＳ１及びＯＳ２の実行権を管理することができる。
【００２２】
第1のシステム管理テーブル２３は、ＣＰＵ８に対するＯＳ１及びＯＳ２の起動処理と、例外処理７、７ａと、割込処理６ａ、６ｂ、６ｃ、６ｄと、第１の実行システム３又は第２の実行システム３ａの起動及び停止処理とを数値又はポインタにより管理するように管理テーブル記憶装置１８に記憶されている。
【００２３】
第２の管理テーブル３１は、ＣＰＵ８に対するオペレーティングシステムとしてのＯＳ１及びＯＳ２の現優先度と、通常優先度と、割込処理優先度と、システム状態と、を数値又はポインタで管理するように管理テーブル記憶装置１８に記憶されている。
【００２４】
第３の管理テーブル３８は、ＣＰＵ８に対する割込要因と、その割込要因処理を実行するオペレーティングシステムとしてのＯＳ１又はＯＳ２を管理するように管理テーブル記憶装置１８に記憶されている。
【００２５】
第１の実行システム３は、メモリ管理やタスク管理のようなＯＳの基本機能を実現するカーネル５や、アプリケーションに対しサービスを提供するＡＰＩ４をシステムメモリ１に記憶させ、このカーネル５上に割込処理６ａ、６ｂと、ＣＰＵ例外処理７（ＣＰＵ例外のフックルーチンやその処理の実体を含む、例えば、整数オーバーフロー例外やアドレスエラー例外である。ただし、例外の種別やその処理内容はＣＰＵ毎に異なる場合がある）、タスク１６ａ、１６ｂ、６ｃ（或いはスレッドと称する場合もある）がシステムメモリ１に記憶されている。
【００２６】
また、カーネル５の上で動作するアプリケーションプログラム（タスク１６ａ、１６ｂ、１６ｃ、割込処理６ｂ、例外処理７）の各コンテキスト２２を第１の実行システム３と対応付けてシステムメモリ１に記憶してもよい。このコンテキスト２２は、第１の実行システム３の実行環境（例えば、バス情報、メモリ情報、ハードウエア資源２０の情報）と、第1の実行システム３を構成するアプリケーションソフトウェア（タスク１６ａ、１６ｂ、１６ｃ、割込処理６ｂ、例外処理７）の実行状態や内部状態を記憶する。
【００２７】
同様に第２の実行システム３ａも、カーネル５ａや、アプリケーションに対しサービスを提供するＡＰＩ４ａをシステムメモリ１に記憶させ、このカーネル５ａ上に割込処理６ｃ、６ｄと、ＣＰＵ例外処理７ａ、タスク１６ｄ、１６ｅ、６ｆがシステムメモリ１に記憶されている。
【００２８】
また、カーネル５ａの上で動作するアプリケーションプログラム（タスク１６ｄ、１６ｅ、１６ｆ、割込処理６ｃ、例外処理７ａ）の各コンテキスト２２ａを第２の実行システム３ａと対応付けてシステムメモリ１に記憶してもよい。このコンテキスト２２ａは、第２の実行システム３ａの実行環境（例えば、バス情報、メモリ情報、ハードウエア資源２０の情報）と、第２の実行システム３ａを構成するアプリケーションソフトウェア（タスク１６ｄ、１６ｅ、１６ｆ、割込処理６ｃ、例外処理７ａ）の実行状態や内部状態を記憶する。
【００２９】
図１のブロック図及び図２のフローチャートを参照して、ＯＳの動作について説明をする。例えば、ＣＰＵ８は、電源投入「ＯＮ」によるコールドリセットに応答し、調停プロセス１５の起動に必要なハードウエア（例えば、システムコントローラ、ＳＤＲＡＭコントローラ）を初期化し、調停プロセス１５を起動させる。
【００３０】
次に、調停プロセス１５は、ＣＰＵ例外発生をフックしＣＰＵ例外要因判定を実行してコールドリセット例外か否かを判定する。判定結果が是（ＹＥＳ）であればすべてのシステムをＨＤＤ１４又はＲＯＭ１９からシステムメモリ１にロードし起動処理を実行するブート処理ステップ７１（以下、ステップを「ＳＴ」と略記する）を実行する。
【００３１】
なお、コールドリセット例外の判定結果が否（ＮＯ）の場合は、非マスク割込ＮＭＩ例外（Non Maskable Interruption）であるか否かを判定し、ＮＭＩ例外であればすべてのシステムを終了させる。
【００３２】
調停プロセス１５は、システムメモリ１にブートされたＯＳ１で処理される割込処理６ａ、６ｂ及びＣＰＵ例外処理７が発生したか否かを例外・割込処理判定処理ＳＴ７２で判定し、割込処理又は例外処理が発生したと判定（ＹＥＳ）したときは、処理を割込例外判定処理ＳＴ７３へ分岐させる。
【００３３】
調停プロセス１５は、割込例外判定処理ＳＴ７３で割込例外か否かを判定する。判定結果が是（ＹＥＳ）のときは、割込要因参照処理ＳＴ７４へ分岐し割込管理テーブルを参照してから、割込振分処理ＳＴ７５へ移行し割込み振分け処理を実行した後に、調停プロセス１５に実行権を渡す処理ＳＴ７８へ移行する。
【００３４】
一方、割込例外でない場合は、処理をシステムＩＤ参照処理ＳＴ７６へ分岐させ、実行中のシステムの例外管理テーブルを参照し、処理の振分けを実行してから、調停プロセス１５に実行権を渡す処理ＳＴ７８へ移行する。
【００３５】
処理ＳＴ７８は、振分けられる先が、例外発生元システムの例外処理へ遷移す処理、調停プロセス１５内のサービスを実行した後に例外発生元に復帰する処理、調停プロセス１５内のサービスを実行した後（例えば、システム状態を変更した後）に、システム管理テーブルから検索した切替先システムに切りかえる処理、割込要因を判定し処理を担うシステムの割込処理に切替える処理の中から、発生した例外や割込みの種類に基づいて調停プロセス１５をＣＰＵ８上で動作させる。
【００３６】
ＣＰＵ８は、実行中のシステムＩＤ及び発生した例外、割込要因に基づき、その処理を決定する。また、その処理決定過程において、システム毎に規定される例外管理テーブルや割り込み管理テーブルを参照するように構成されている。
【００３７】
調停プロセス１５は、発生した割込例外の要因を判定し、その割込処理を担うシステムに対し、検出した割込処理を振り分ける。この意味において、割込処理６ａ、６ｂはその処理を担うシステムが異なるが、調停プロセス１５側からは振分け先のシステム間に優劣が生じない。
【００３８】
割込要因の優先度に該当するレベルの設定が割込コントローラ上で可能である場合において、その割込要因毎のレベルは、その処理を担うシステムの性質には依存しない。
【００３９】
言い換えれば、割込要因のレベル、つまり、割込処理の優先度はすべてのシステムを通じて決定されものでなければならない。
【００４０】
一方、調停プロセス１５は、タスク（或いはスレッド）の処理においてＯＳ１上に構築されたシステム間の優先度に従いＣＰＵ８を介してタスクを実行させる。例えば、システム間の優先度に基づき、ＣＰＵ８上で動作する各システムの切替え処理を実行する。
【００４１】
また、タスク１６ａの優先度は、システムの状態に応じて変更可能であり、システムの優先度を変更する調停プロセス１５により、割込処理を直接引き継いだ他のタスク１６ｂ（或いはスレッド）を優先的にＣＰＵ８上で処理する。
【００４２】
さらに、ＯＳ２もＯＳ１と同様に、処理される割込処理６ｃ、６ｄ及びＣＰＵ例外処理７ａに関して、システムの優先度を変更する調停プロセス１５により、ＣＰＵ８上で処理する優先度を管理する。
【００４３】
ＣＰＵ８は、カーネル５により設定されたＯＳ１のハードウエア資源であるキーボード１２、ディスプレイ１３、及びＨＤＤ１４からの割込要求をハードウェアブロック２、調停バス１５ｅ、調停プロセス１５、ＯＳ１側の調停バス１５ａを経由して割込要求を管理する。
【００４４】
ＣＰＵ８は、カーネル５を通して受信した割込要求を、ＯＳ１側の調停バス１５ｂを経由して調停プロセス１５へ割込処理６ａを通知する。ＣＰＵ８は調停プロセス１５を動作させ、管理テーブル記憶装置１８にアクセスし、割込処理６ａを調停バス１５ｆを経由してハードウェアブロック２内部のハードウエア資源を管理する。
【００４５】
また、ＯＳ２もＯＳ１と同様に、ＣＰＵ８が調停プロセス１５を動作させ、内部のカーネル５ａで設定したＯＳ２のハードウエア資源である入出力ポート１１（Ｉ／Ｏ）とハードウェアブロック２、調停バス１５ｅ、ＯＳ２側の調停バス１５ｄ、調停バス１５ｃを経由してハードウエア資源を管理する。
【００４６】
ＣＰＵ８は、独立してハードウエア資源を管理するＯＳ１及びＯＳ２を協調させるメッセージ情報１７ａ、メッセージ情報１７ｂを実行システムの間で交換させて基本動作が異なるＯＳの切換え処理を実行する。
【００４７】
例えば、第２の実行システム３ａがＣＰＵ８上でＯＳ２を動作させている期間では、キーボード１２、ディスプレイ１３、及びＨＤＤ１４の制御をＯＳ１からのメッセージ情報１７ａに基づいて利用することができる。
【００４８】
同様に、第１の実行システム３がＣＰＵ８上でＯＳ１を動作させている期間では、入出力ポート１１の制御をＯＳ２からのメッセージ情報１７ｂに基づいて利用することができる。
【００４９】
調停プロセス１５は、タスク（或いはスレッド）の処理において、ＣＰＵ８上での実行権を得るべきシステムを調停プロセス１５が管理するシステム管理テーブル２３から検索する。
【００５０】
システム管理テーブル２３において、現優先度が最も高く、かつ、実行可能を示す「ready」なシステムを特定し、特定されたシステムのシステム管理テーブル２３にて管理されるその状態をアクティブ「active」に変更する。
【００５１】
引き続き、特定されたシステムにＣＰＵ８上での実行権を渡すことにより、ＣＰＵ８上での実行権を得たシステム上のタスク或いはスレッドの処理を行う。
【００５２】
例えば、ＯＳ１がＣＰＵ８上での実行権を得た場合、ＯＳ１上に存在するタスク１６ａ、１６ｂ、１６ｃはシステムＯＳ１を構成するカーネル５のスケジューリングにより、実行されるタスクが決定される。なお、ＯＳ１におけるタスクのスケジューリング機構に対し、調停プロセス１５は関与しない。
【００５３】
ＯＳ１上において、各タスクの優先度は一般的に変更可能である。いまＯＳ１上において、何らかのイベント処理（例えば、割込処理）からタスク１６ｂの優先度がタスク１６ａの優先度よりも高くする。
【００５４】
ＯＳ１がＣＰＵ８の実行権を持つ場合、割込処理を引継いだタスク１６ｂはタスク１６ａよりも先に処理されることになる。
【００５５】
しかしながら、タスク１６ｂに付与された優先度はＯＳ１で有効であり、ＯＳ２の優先度がＯＳ１の優先度よりも高い場合、割込処理を引継いだＯＳ１上のタスク１６ｂは割込処理とは関係の無いタスク１６ｄよりもその処理が遅れることになる。
【００５６】
この処理優先度逆転の問題を回避するために、第１の実施形態では、マルチＯＳ環境ではシステムの優先度変更の手段を備えるように構成する。
【００５７】
第１の実施形態では、割込みのフックと復帰処理を調停プロセス１５に実装する。殆どの割込処理は、調停プロセス１５によりフックされ、ネストのインクリメントやコンテキスト切替えを行う入り口処理を経て各実行システムにその処理が振り分けられる。
【００５８】
調停プロセス１５は、割込みのフックから、その処理の振分け、更に振分け先の実行システムにおける割込処理と続く処理過程に要する時間を無視できない。処理過程の間に割込要求自体が変化する可能性があるためである。
【００５９】
調停プロセス１５は、割込み要求と割込処理をすべき実行システムにおける割込処理との不整合を避けるために、割込管理に関する情報（例えば、割込コントローラ及び割込みに関係するＣＰＵ８のレジスタ）を割込みのフック時点で実行システム間の共有メモリに構築した仮想レジスタ９に保存する。
【００６０】
各実行システムは、割込処理の中で仮想レジスタ９を参照する。また、調停プロセス１５は仮想レジスタ９を割込処理におけるコンテキストの一部として管理する。
【００６１】
各実行システムは、特定の割込処理が終了した際に、必ず調停プロセス１５に復帰する。その後、調停プロセス１５が割込みの出口処理（ネストのデクリメントとコンテキスト切り替え）を行い、割り込み発生元に復帰する。
【００６２】
（第２の実施の形態）
図３は、本発明の第２の実施形態の調停プロセス１５によるシステムの選択と切替えを示す構成図である。
【００６３】
ＣＰＵ８（図１参照）は、調停プロセス１５を動作させ、ＣＰＵ８上の実行権を異なるＯＳの間で切換処理を実行する。例えば、システム毎にユニークなシステムＩＤ（例えば、或る数値に対応するシンボル「Ａ」、「Ｂ」）を付与し、各システムＩＤ２４、２５に対応したシステムの優先度を管理する。
【００６４】
図下部に示したシステム管理テーブル２３は、管理テーブル記憶装置１８（図１参照）に記憶させ、システムＩＤ列にシステムＩＤ２４を「Ａ」、システムＩＤ２５を「Ｂ」、システムＩＤ２６を「Ｎｅｇｏ」で示す管理情報と、各システムＩＤに対応した複数の優先度と、システム状態を管理することができる。
【００６５】
ここで、優先度は、「１」や「１７」といった整数値を用いて設定することができ、第２の実施形態では数値が低いほど優先度が高くなるように設定されている。
【００６６】
システムＩＤ２４「Ａ」に対応させて、現時点の「現優先度」を数値「９」、初期値の「通常優先度」を数値「９」、割込処理時の「割り込み処理時優先度」を数値「２」に設定し、現時点の第１の実行システム３が実行状態であることを示す「active」２４ａにより管理する。
【００６７】
また、「idle」２４ａは、実行可能なタスクが実行システムシステム内に存在しない状態を示し、「ready」は、実行可能なタスクが1つ以上実行システム内に存在する状態を示し、「active」は、タスクを実行するためのＣＰＵ８上での実行権が実行システムに与えられた状態を示す。
【００６８】
システムＩＤ２５「Ｂ」に対応させて、現時点の「現優先度」を数値「１５」、初期値の「通常優先度」を数値「１５」、割込処理時の「割り込み処理時優先度」を数値「３」に設定し、現時点の第２のシステム３ａが待機状態であることを示す「idle」２５ａにより管理する。
【００６９】
システムＩＤ２６「Ｎｅｇｏ」と対応させて、調停プロセス１５を管理する。
【００７０】
第１の実行システム３は、システムＩＤ２４「Ａ」で管理され、例えば、ＣＰＵ８上で動作する調停プロセス１５が、第１の実行システム３と第２の実行システム３ａとを識別するように管理できる。
【００７１】
また、第１の実行システム３は、タスク１６ａ（或いはスレッド）、スケジューラ２１、割込処理６ａ、ＣＰＵ例外処理７、第１の実行システム３を構成するアプリケーションソフトウエアの実行状態や内部状態を記憶するコンテキスト２２で構成する。
【００７２】
ここで、第２の実施形態に用いる「タスク」も「スレッド」も共に、プロセスの最小単位でありカーネル５（図１参照）のスケジューラにより管理される。また、「割込処理」は、下位のプログラムの単位でありハードウエア資源２０の中の例えば、Ｉ／Ｏ１１又はキーボード１２からの割込みの管理及びハードウエア資源２０の管理に用いる。
【００７３】
さらに、第２の実施形態に用いる「ＣＰＵ例外処理」は、ソフトウエアプログラムの実行に伴い発生するＣＰＵ例外を処理し、システムの実行に対し致命的なＣＰＵ例外を処理する。
【００７４】
例えば、システムコール例外、ＴＬＢリファイル例外は、ソフトウエアプログラムの実行に伴い発生する例外であり、バスエラー例外は致命的な例外である。
【００７５】
ただし、ＣＰＵ例外は、システム毎に意味合いが相違する場合があり、或るシステムにとってアドレスエラー例外がシステムを停止しなければならない致命的な例外であっても、他のシステムではシステムコール例外と同程度の例外として扱われる場合がある。
【００７６】
第２の実施形態では、各実行システム用にＣＰＵ例外管理テーブルを用意し、調停プロセス１５がＣＰＵ例外をフックした段階で、実行中のシステムＩＤを確認し、実行中のシステムに対応する例外管理テーブルを参照し、発生したＣＰＵ例外要因に対応した処理をＣＰＵ８上で実行するように構成している。
【００７７】
第２の実行システム３ａは、システムＩＤ２５「Ｂ」で管理され、例えば、ＣＰＵ８上で動作する調停プロセス１５が、第２の実行システム３ａと第１の実行システム３とを識別するように管理できる。
【００７８】
第２の実行システム３ａは、タスク１６ｄ（或いはスレッド）、スケジューラ２１ａ、割込処理６ｃ、ＣＰＵ例外処理７ａ、第２の実行システム３ａ特有のハードウエア資源２０としてのディスプレイ１３、ＨＤＤ１４やプロパティを特定するコンテキスト２２ａの情報で構成する。
【００７９】
調停プロセス１５は、ＣＰＵ８上で実行する実行システム３又は３ａの何れか１つの実行権を決定する。
【００８０】
例えば、調停プロセス１５が管理テーブル記憶装置１８に記憶したシステム管理テーブル２３を参照し、現優先度が最も高いシステムを選択する。
【００８１】
例示した優先度は、数値が小さいほど優先度が高く設定しているが、本発明は、数値が小さいシステムが高い優先度に限定されず、数値が大きいほど優先度が高くなるシステムとして構成することもできる。
【００８２】
システムＩＤ２４「Ａ」の第１の実行システム３が現優先度「９」を示し、第２のシステム３ａに対応するシステムＩＤ２５の優先度「１５」より高く、システムＩＤ２４のシステム状態が「active」２４ａで示す実行可能状態であることを示している。
【００８３】
ＣＰＵ８上で動作する調停プロセス１５は、各実行システム３、３ａのコンテキスト２２、２２ａを管理する。実行システムのシステム切替時に対応するコンテキストの復帰処理を行う。
【００８４】
マルチＯＳ環境下では、各実行システム３、３ａが所謂「idle」状態を実装してはいけない。例えば、ＣＰＵ８の実行権を得ていた第２の実行システム３ａ内において実行可能なタスク（或いはスレッド）１６ｄが無くなった場合、第２のシステム３ａは速やかにＣＰＵ８の実行権を調停プロセス１５に返却する。
【００８５】
この返却条件は、第２の実施形態の必要条件である。「idle」状態の代わりに調停プロセス１５への遷移処理を実装する必要がある。これは後述するＣＰＵ例外を利用する方法がコンピュータシステムにとって安全である。
【００８６】
ＣＰＵ例外処理や割込処理以外の処理において、調停プロセス１５は、各実行システム３、３ａをそれらの優先度に従って実行してゆく。各実行システム３、３ａは実行すべきタスクやスレッドが無くなると、調停プロセス１５への遷移処理を実行し、調停プロセス１５に対しシステム切替えを促すように構成する。
【００８７】
実行権を持ち続けるタスクやスレッドを実装しないのが第２の実施形態の必要条件である。仮にそのようなタスクやスレッドを実装した実行システムを第２の実施形態の適用対象とする場合は、そのタスク若しくはスレッドを実装したシステムを最低優先度のシステムとして扱うことになる。
【００８８】
第１の実行システム３のスケジューラ２１は、第１の実行システム３内のタスク（あるいはスレッド）１６ａのスケジューリングを行い、第２の実行システム３ａのスケジューラ２１ａは、第２の実行システム３ａ内のタスク（あるいはスレッド）１６ｄのスケジューリングを行う。
【００８９】
調停プロセス１５は、実行システムの切替えを行い、実行システムのコンテキストの処理も行うソフトウエアプログラムである。すべての実行システム３、３ａがシステム管理テーブル２３上で「idle」２５ａであれば、調停プロセス１５がＣＰＵ８の実行権を持つように制御している。
【００９０】
各実行システム３、３ａに課せられる制約条件の１は、各実行システム３、３ａにおいて「idle」のシステム状態（例えば、何の処理もせずにＣＰＵ８の実行権を握りつづける状態）を実装しない、若しくは、「idle」状態に遷移しないように制御する。
【００９１】
例えば、第２の実行システム３ａは、実行可能なタスクが無くなった時点で、ＣＰＵ８上での実行権を手放し、第１の実行システム３へのシステム切替えを調停プロセス１５に促すように構成する。
【００９２】
また、他の制約条件として、一般の割込処理からスケジューラを起動しないように構成することもできる。
【００９３】
（第３の実施の形態）
図４は、本発明の第３の実施形態の調停プロセス１５による実行システムの遷移処理２８を示す構成図である。各実行システム３、３ｂの中にの遷移処理２８を設けたコンピュータシステムを例示する。
【００９４】
遷移処理２８は、調停プロセス１５の各実行システムに対するサービスとして実装する。サービスのリクエストにはＣＰＵ例外を用いる。ＣＰＵ例外を用いれば、ＣＰＵ８の機構を使ってサービス要求元である遷移処理２８から調停プロセス１５への切替えが安全かつ容易に行うことができる。
【００９５】
ただし、本発明は、遷移処理２８のサービスを呼び出すにあたり、それぞれの実行システムが同一のＣＰＵ例外を使用することに限定されず、実行システム毎に例外管理テーブルを夫々用意し、各実行システムに対応した遷移処理を実行してもよい。
【００９６】
第３の実施形態では、システムＩＤ２４「Ａ」の第１の実行システム３に対応付けて、スケジューラ２１ａ、タスク１６ａ、１６ｂ、遷移処理２８、割込処理６ｃ、ＣＰＵ例外処理７、コンテキスト２２をシステムメモリ１（図１参照）に記憶させ、システムＩＤ２７「Ｃ」が付与された第３の実行システム３ｂに対応させて、タスク１６ｇ（或いはスレッド）、スケジューラ２１ｂ、割込処理６ｅ、ＣＰＵ例外処理７ｂ、コンテキスト２２ｂをシステムメモリ１に記憶させている。
【００９７】
システム管理テーブル２３は、新たに第３の実行システムとしてのシステムＩＤ２７「Ｃ」のテーブルが追加されている。より具体的には、システムＩＤ２７「Ｃ」の現優先度は「１６」、通常優先度は「１６」、割込み処理時優先度は「５」に設定され、システム状態は準備完了を示す「ready」２７ａである。
【００９８】
システム管理テーブル２３の状態変更は、各実行システム３、３ｂからの申請に基づきシステム状態の内容を変更する。例えば、第１の実行システム３の遷移処理２８を使用してＣＰＵ例外を発生させ、第１の実行システム３から調停プロセス１５に対しサービス（例えば、状態変更サービス）の要求を行う。
【００９９】
調停プロセス１５は、第１の実行システム３の申請に応答し、第１の実行システム３内に実行可能なタスク１６ａ、１６ｂがない状態であれば、第１の実行システム３のシステム状態を「active」２４ａから「idle」２４ｂに変更する。
【０１００】
また、第３の実行システム３ｂのタスク１６ａ、１６ｂが起動すると「idle」から「ready」２７ａに変更して、第３の実行システム３ｂにＣＰＵ８の実行権を渡すためにシステム状態を「ready」２７ａから「active」２７ｂに変更する。
【０１０１】
図４に示す第１の実行システム３がＣＰＵ８上の実行権を得ていて、タスク１６ａが処理を終了し、タスク１６ｂも処理を終了すると、第１の実行システム３のレディキュー上には遷移処理６ｃを行うタスクしか存在しなくなる。
【０１０２】
遷移処理６ｃを行うタスクは、最低の優先度で実行される。遷移処理のタスクが実行されるということは、より高い優先度のタスクが他に存在しない状態である。例えば、システムＩＤ２４「Ａ」の状態を「active」２４ａから「idle」２４ｂに変更する条件である。
【０１０３】
引き続き、調停プロセス１５は、遷移処理６ｃを行い、システム管理テーブル２３のシステム状態を書換えてから、調停プロセス１５がシステム管理テーブル２３から検索する実行システムは「idle」でない実行システムであって、現優先度が一番高い実行システムである。例えば、第３の実行システム３ｂが「active」２７ｂであり、他の実行システムが「idle」２４ｂ、「idle」２５ａの状態が該当する。
【０１０４】
（第４の実施の形態）
図５は、本発明の第４の実施形態によるＣＰＵ例外処理を示す構成図である。第１の実行システム３の構成要素は、第３の実施形態と同一であり重複する説明を省略する。また、第３の実行システム３ｂのシステム状態は準備完了状態を示す「ready」２７ａである。
【０１０５】
調停プロセス１５は、調停プロセス１５の管理下にある第１の実行システム３に実行権を与える際、システム管理テーブル内のシステムＩＤ２４「Ａ」に対応するシステム状態列に「実行中のシステム」として「active」２４ａを記録する。
【０１０６】
第１の実行システム３を示すシステムＩＤは、ＣＰＵ例外処理や割込処理において参照される。ＣＰＵ例外が発生した場合、ＣＰＵ例外を発生させたのは「実行中のシステム」であり、システムＩＤ２４に基づき実行中の実行システム３を特定することができる。
【０１０７】
また、調停プロセス１５は、実行システムの切替処理においてもシステムＩＤとシステムＩＤに対応するシステム状態を参照する。調停プロセス１５は特殊なシステムＩＤ２６「Ｎｅｇｏ」を持つプロセスであり、調停プロセス１５の管理下にある他の実行システム３、３ａ、３ｂと調停プロセス１５とを明確に区別することができる。
【０１０８】
なお、調停プロセス１５は、他の実行システムのシステムＩＤと異なり、自身のシステムＩＤを認識している。
【０１０９】
（第５の実施の形態）
図６は、本発明の第５の実施形態によるシステムの診断フローチャートである。第５の実施形態では、複数の実行システムが１つのＣＰＵ８上に実装して、１つの実行システムで発生した問題が他の実行システムの動作に影響を及ぼさないように、システム全体の安定動作を確保するコンピュータシステムを提供する。
【０１１０】
システムの診断は、実行システムから送信されるメッセージの受信順番をあらかじめ予測し、予測した順番と実際に受信したメッセージの順番を比較することで実施する。
【０１１１】
システムの診断は、調停プロセス１５がイベント待ち状態で開始する。例えば、すべての実行システムが「idle」状態に遷移した段階で開始処理ＳＴ５０を実行する。
【０１１２】
処理ＳＴ５１は、コンピュータシステムが診断モードであるか否かを判定し、判定結果が否（ＮＯ）のときは、診断の対象システム選定処理ＳＴ５５に分岐し、判定結果が是（ＹＥＳ）の場合は、受信メッセージの順序判定処理ＳＴ５２へ分岐する。
【０１１３】
順序判定処理ＳＴ５２は、受信メッセージの順序が予測順序と相違（ＮＯ）した場合、対象システム停止処理ＳＴ５３へ分岐させて、受信順序が異なる実行システムを停止させ、診断処理を終了させる。
【０１１４】
順序判定処理ＳＴ５２で受信メッセージの順序が予測順序と合致（ＹＥＳ）した場合は、診断モードクリア処理ＳＴ５４を実行し、診断モードを初期化してから、処理を対象システム選定処理ＳＴ５５へ移行させる。
【０１１５】
対象システム選定処理ＳＴ５５は、診断処理の対象となる実行システムを選択する。例えば、システムＡとしての第１の実行システム３、及びシステムＢとしての第２の実行システム３ａの２つを選択する。なお、診断処理の実行時間を短縮するため２つの実行システムを選択したが、本発明はこの構成に限定されず、３つの実行システム３、３ａ、３ｂを同時に選択してもよい。
【０１１６】
次に、診断モード設定処理ＳＴ５６へ移行し、第１の実行システム３の「現優先度」の値を「割込み処理時優先度」の「２」に変更し、第２の実行システム３ａの「現優先度」の値を「通常優先度」の「１５」に設定する。
【０１１７】
すなわち、一方の実行システムの現優先度が他方の実行システムの現優先度より高く設定し受信順序が予測順序と一致させるように構成する。また、各実行システム３、３ａのシステム状態を「idle」に設定する。
【０１１８】
調停プロセス１５は、複数の割込要因設定処理ＳＴ５７に移行し、診断に用いる割込み要求を複数同時に立てる。例えば、割込み禁止区間を設定し、割込禁止区間において複数の割込要求を個別に設定し、割込禁止区間を解除するシーケンスや、１本のレジスタ設定で複数の割込要求が設定できる手段を利用する。
【０１１９】
レジスタの設定は、例えば、ＭＩＰＳ仕様のプロセッサであれば、ソフトウエア割込み（Software Interrupt）がＣＰＵ８の「Cause」レジスタに要因ビットが２つ用意され、１回の書込みで２本のソフトウエア割込要求を設定することができる。
【０１２０】
割込発生処理ＳＴ５８は、割込要因設定処理ＳＴ５７によって割込要因が設定された各実行システム３、３ａから割込が発生し、調停プロセスによる割り込み処理の振り分け処理を実行する。
【０１２１】
受信メッセージ記録処理ＳＴ５９は、各実行システム３、３ａによる割込処理、各実行システム３、３ａ内でタスク起動、各実行システム３、３ａのメッセージ送信タスクから調停プロセス１５に対しＣＰＵ例外を用いて送信されたメッセージを受信メッセージとして記録する。
【０１２２】
さらに、各実行システム３、３ａのタスクが処理を終了し、各実行システム３、３ａとも「idle」状態へ遷移した段階で診断処理が終了する。
【０１２３】
診断モードでは、通常のシステム動作とほぼ同じ動作をさせた上で、その結果をメッセージの受信順位で確認するので、診断対象の実行システムが「idle」から「ready」そして「active」に経時的変化をするように構成している。
【０１２４】
（第６の実施の形態）
図７は、本発明の第６の実施形態の調停プロセス１５の待機状態処理を示す構成図である。システムＩＤ２７の「Ｃ」で識別する第３の実行システム３ｂの構成要素は、第３の実施形態と略同一であるが、遷移処理２８ｂを実装した点が相違する。
【０１２５】
調停プロセス１５の管理下にある各実行システムは、各実行システムに与えられたシステムＩＤを認識する必要がなく、また調停プロセス１５が自身のシステムＩＤ２６の「Ｎｅｇｏ」を「実行中」のシステムとして、システム状態を「−」２６ａのブランクとして記憶している。
【０１２６】
調停プロセス１５は、待機状態へ遷移する段階で、管理テーブル記憶装置１８（図１参照）に記憶したシステム管理テーブル２３に、調停プロセス１５のシステムＩＤ２６の「Ｎｅｇｏ」に対応するシステム状態列に管理データ「wait」２６ｂを登録する。
【０１２７】
ＣＰＵ８は、システム管理テーブル２３のシステム状態列に記録した「active」２７ａに従って第３の実行システム３ｂを実行中である。この状態で遷移処理２８ｂを実行し、調停プロセス１５を動作させ「調停プロセスへの切り替え処理」を実行する。
【０１２８】
第３の実行システム３ｂは、遷移処理２８ｂを実行し、システム管理テーブル２３のシステムＩＤ２７の「Ｃ」に対応するシステム状態列を「active」２７ａから「idle」２７ｂへ変更申請し、第３の実行システム３ｂを待機状態へ遷移させる。
【０１２９】
調停プロセス１５は、他の実行システム（システムＩＤ「Ａ」、「Ｂ」で識別するシステム）のシステム状態を確認し、他の実行システムがすべて「idle」の待機状態であることを条件に、調停プロセス１５のシステム状態を「−」２６ａから「wait」２６ｂへ変更して、他の実行システムからのイベント待ち状態である「アイドル状態」３０に遷移させる。
【０１３０】
このように、調停プロセス１５は、１つのＣＰＵ８上に複数の実行システムをシステムメモリ１（図１参照）に常駐させてシステムの実行権を切り替えながら、マルチＯＳのコンピュータシステムを構成している。
【０１３１】
ＣＰＵ８上で動作する調停プロセス１５は、イベントが発生した実行システムがシステムの切替処理が完了しＣＰＵ８の実行権を得た段階で、実行システム内でタスクやスレッドのスケジューリングが発生しても、調停プロセス１５にＣＰＵ８の実行権が遷移するまで、一切タスク、スレッド、スケジューリングに関与或いは影響を与えない。
【０１３２】
しかしながら、例えば、割込処理により調停プロセス１５へＣＰＵ８の実行権が与えられた後に、各実行システム内でスケジューリングを行い、タスク、スレッドを実行するすることは、マルチＯＳを実装する上での禁止事項になる。何故ならば、ＣＰＵ８の実行権が他の実行システムに移転されていないからである。
【０１３３】
ただし、調停プロセス１５は、一部のハードウエア割込みのような優先度が最上位の割込処理がハードウェアブロック２（図１参照）で発生した場合は、そのハードウエア割込みを管理する実行システムの割込処理を優先させて処理することもできる。
【０１３４】
第６の実施形態で用いるシステムＩＤは、各実行システムにユニークに与えられるＩＤであり、そのシンボル又は数値は各実行システムの特性とは無関係である。従って、システムＩＤの管理ために、メモリマネジメントシステム（ＭＭＵ）のようなハードウェア機能を追加する必要がない為、システムを簡略化させることができる。
【０１３５】
一方、システムＩＤを所謂プロセスＩＤと一致させてもよい。この場合、システムＩＤは１つの実行システムにおいて、一意の値ではなく特定の範囲を採ることになる。ただし、実行システム間で同一の値をシステムＩＤ（ここではプロセスＩＤと同義）として採用することは原則的にマルチＯＳでは禁止される。
【０１３６】
調停プロセス１５は、実行システムの切替処理に際して、コンテキスト２２ｂの退避や復元処理を行う。このコンテキスト２２ｂは、例えばスケジューラ２１ｂがスレッドやタスク１６ｇ（図３参照）の切替処理で行うコンテキストよりも多くの情報を含んでいるが、実行システムの切替処理の条件に応じてコンテキスト２２ｂの情報量が異なるので切替遅延時間の増大を抑止することができる場合がある。
【０１３７】
（第７の実施の形態）
図８は、本発明の第７の実施形態による例外振分処理の構成図である。システムＩＤ「Ａ」で識別する第１の実行システム３の構成要素は、第３及び第４の実施形態と同一であり、重複する説明を省略する。
【０１３８】
第７の実施形態の例外処理には、ＣＰＵ８の外部からの割込処理と、例えば、第１の実行システム３によるタスク１６ａの実行に伴うＣＰＵ例外処理７の２種類を用意する。
【０１３９】
複数の実行システムが１つのＣＰＵ８上で動作する場合において、ＣＰＵ８上で動作する調停プロセス１５は、発生した例外処理をハードウェアブロック２でフックし、どの実行システムに例外処理を担わせるかを決定する。
【０１４０】
各実行システムは、調停プロセス１５が付与したシステムＩＤにより識別され、調停プロセス１５は、実行中の実行システムを識別するために、システム切り替え時に実行権を引き継ぐ実行システムについて、システム状態をシステム管理テーブル２３のシステム状態列にシステムＩＤに対応付けて記録する。
【０１４１】
調停プロセス１５は、タスク１６ａで発生したＣＰＵ例外処理をハードウェアブロック２を介してＣＰＵ例外処理（図中の「ＴＬＢ例外」）のフックを行い、ＣＰＵの例外要因の判定を実行する。
【０１４２】
例えば、ハードウェアブロック２に設けたＣＰＵ８がミップス・テクノロジーズ社から提供されるＭＩＰＳ仕様のプロセッサであれば、ＣＰＵ例外処理のフックは仮想アドレス上に配置されたフックルーチンにより実行する。
【０１４３】
また、調停プロセス１５が、ＣＰＵの例外要因の判定を実行し、「ＣＰ０」レジスタの「Cause」レジスタの内容を読み出すことにより例外要因判定を実行することができる。
【０１４４】
さらに、調停プロセス１５は、ＣＰＵ８上で実行中の実行システムのシステムＩＤと発生したＣＰＵ例外処理の種類から、その例外処理を判定することができる。第７の実施形態では、３種類の例外処理を例示する。
【０１４５】
図左側に示すシステムＡ例外処理管理テーブル３１は、管理テーブル記憶装置１８（図１参照）に記憶させ、例外コード列とエントリ（Ｅｎｔｒｙ）列が設けられ、例外コード列に例外処理の種類を示すシンボルが記述されている。例えば、第１行目に「ＩＮＴ」、第２行目に「ＴＬＢＬ」、第３行目に「ＴＬＢＳ」のアドレスに対応するシンボルが記述されている。
【０１４６】
例外コードに対付けてエントリ列には、例えば、第１行目に「ＩＮＴ＿Ｅｎｔｒｙ」、第２行目に「ＴＬＢＬ＿Ｅｎｔｒｙ」、第３行目に「ＴＬＢＳ＿Ｅｎｔｒｙ」のアドレスに対応するシンボルが記述されている。
【０１４７】
第１の実行システム３の例外処理は、「ＴＬＢ」リフィル例外のように、実行システム３の実行上必然的に発生するＣＰＵ例外処理である。
【０１４８】
調停プロセス１５は、管理テーブル記憶装置１８を参照し、システム状態が「active」２４ａの実行システムを発見して、実行中のシステムＩＤ２４「Ａ」に基づき、例外発生元である第１の実行システム３を特定する。
【０１４９】
調停プロセス１５は、第１の実行システムに対応するシステムＡ例外処理管理テーブル３１を参照し、システムＡとしての第１の実行システム３のＴＬＢＬ例外処理に移行するアドレスを読み出す。
【０１５０】
第７の実施形態では、例外コード「ＴＬＢＬ」に対応するエントリ「ＴＬＢＬ＿Ｅｎｔｒｙ」がシステムＡのＴＬＢＬ例外処理アドレスに対応するシンボル２９である。
【０１５１】
調停プロセス１５は、第１の実行システム３内部のＣＰＵ例外処理７に対して例外の振分をシステムＡのＴＬＢＬ＿Ｅｎｔｒｙに基づき認識し、第１の実行システム３に例外処理を実行させる。
【０１５２】
また、第１の実行システム３は、ＣＰＵ例外処理７を実行し、第１の実行システム３のコンテキスト２２の復帰も第１の実行システム３が処理する。
【０１５３】
（第８の実施の形態）
図９は、本発明の第８の実施形態のＣＰＵ例外処理を利用した調停プロセスへの通信処理を示す構成図である。第１の実行システム３、システム管理テーブル２３は、第７の実施形態と同一であり、重複する説明を省略する。
【０１５４】
第８の実施形態では、第１の実行システム３がタスク１６ａを実行し、調停プロセス１５にサービスの要求を行い、調停プロセス１５が例外のフック及び例外要因判定を実行してから、ＣＰＵ８の実行権を第１の実行システム３のタスク１６ａに復帰させるように制御する。
【０１５５】
調停プロセス１５は、第１の実行システム３のタスク１６ａで発生したＣＰＵ例外処理を「Ｔｒａｐ」の例外サービスの要求としてフックを行い、ＣＰＵの例外要因の判定を実行する。
【０１５６】
調停プロセス１５は、ＣＰＵ８上で実行中の実行システム３のシステムＩＤと発生したＣＰＵ例外処理の種類から、その例外処理を判定することができる。第８の実施形態では、４番目の例外処理を例示する。
【０１５７】
管理テーブル記憶装置１８に記憶されたシステムＡ例外処理管理テーブル３１には、上述した第７の実施形態と同一のシンボルとエントリが記述され、例外コード「Ｔｒａｐ」とエントリ（Ｅｎｔｒｙ）「サービス処理」で構成するアドレスに対応するポインタ３３が記述されている。
【０１５８】
調停プロセス１５は、システム管理テーブル２３を参照し、システム状態が「active」２４ａの実行システムを発見し、実行中のシステムＩＤ２４「Ａ」に基づき、例外発生元である第１の実行システム３を特定する。
【０１５９】
調停プロセス１５は、第１の実行システムに対応するシステムＡ例外処理管理テーブル３１を参照し、第１の実行システム３（システムＡ）のＴｒａｐ例外処理へ移行するポインタを読み出す。第８の実施形態では、例外コード「Ｔｒａｐ」に対応するエントリ「サービス処理」のポインタ３３が調停プロセス１５内部のサービス処理３２を指定している。
【０１６０】
このように、第８の実施形態では、第１の実行システム３から調停プロセス１５へのイベント通知及びメッセージ通知手段としてＣＰＵ例外処理を用いることができる。また、ＣＰＵ例外処理は、第１の実行システム３のタスク１６ａの実行で発生させる。
【０１６１】
ＣＰＵ例外処理は、各実行システム３、３ａ、３ｂ毎に独自の仕様に基づいて構成することができる。すなわち、各実行システム３、３ａ、３ｂは独自のＯＳ仕様に基づき構築されており、同一目的に利用できるＣＰＵの例外要因を各実行システムで予め共通化させることは迂遠且つ面倒であり無駄だからである。
【０１６２】
一方、調停プロセス１５は、実行システム３、３ａ、３ｂ毎に例外管理テーブルを設けて、各実行システムからのイベント発行及びメッセージ通信手段として使用されるＣＰＵの例外要因が異なったとしても、「active」２４ａで示す実行中のシステムＩＤ「Ａ」に基づいて、ＣＰＵ例外処理をイベント通知及びメッセージ通知として認識することができる。
【０１６３】
なお、ＣＰＵ例外処理は、第１の実行システム３のコンテキスト２２上で特権プロセスとして実行される。
【０１６４】
（第９の実施の形態）
図１０は、本発明の第９の実施形態の致命的な例外のフック処理を示す構成図である。コンピュータシステムを、ハードウェアブロック２、第１の実行システム３、調停プロセス１５、システム管理テーブル２３、システムＡ例外処理管理テーブル３１を用いて例示する。
【０１６５】
ただし、本発明はこれら構成に限定するものではなく、他の実行システム３ａ、３ｂや他のシステム「Ｂ」、「Ｃ」の例外処理管理テーブルを用いて構成できることは勿論である。
【０１６６】
第９の実施形態では、調停プロセス１５に再起動処理３５を設け、システムＡ例外処理管理テーブル３１に例外コード「ＤＢＥ」、エントリ「再起動処理」のポインタ３４を新たに設け、第１の実行システム３に停止処理３６及び起動処理３７を新たに設けた点で、上述した第１乃至第８の実施形態と構成が相違する。
【０１６７】
第９の実施形態は、バスエラーのようなコンピュータシステムにとって致命的なＣＰＵ例外処理を調停プロセス１５が管理する。なお、調停プロセス１５が、バスエラーをフックし、例外要因を判定する。
【０１６８】
調停プロセス１５は、システム管理テーブル２３を参照し、バスエラーを発生させた実行システムが「active」２４ａのシステムＩＤ「Ａ」２４であることを検出してから、システムＡ例外処理管理テーブル３１を参照する。
【０１６９】
調停プロセス１５は、フックした例外処理「バスエラー」を示す例外コード「ＤＢＥ」を検索しエントリ「再起動処理」のポインタ３４を読み出す。すなわち、システムＡのバスエラー例外処理へ移行するためのポインタ３４を読出し、システムＡである第１の実行システム３の再起動処理３５を始動させる。
【０１７０】
調停プロセス１５は、再起動処理３５を実行し、第１の実行システム３の停止処理３６に対して再起動命令を送信し、第１の実行システム３を停止させ、第１の実行システム３内部の起動処理３７により第１の実行システム３を再起動させる。
【０１７１】
致命的な例外処理を実現するために、調停プロセス１５は、実装する実行システムの数に相当する例外管理テーブルを管理テーブル記憶装置１８（図１参照）に生成し、例外管理テーブルにＣＰＵの例外要因に対応する処理を記述する。
【０１７２】
具体的には、例外処理を担うルーチンへのポインタ３４が格納されていればよい。ポインタ３４のアドレスは、コンピュータシステムの設計時に決定されることから、静的に定義する。
【０１７３】
一方、各実行システムは、システムメモリ１（図１参照）上に起動した後に、それぞれが割り込みを含む例外処理の準備完了を示す「ready」を調停プロセス１５に対して通知する。
【０１７４】
調停プロセス１５は、「ready」の通知が無い限り、ＣＰＵ例外処理を各実行システムに委ねることはない。仮に、「ready」の通知が到着する前に発生した実行システム上におけるＣＰＵ例外処理は、例えば、メッセージやイベントの通知を除き致命的な例外として処理を実行する。
【０１７５】
調停プロセス１５は、調停ルーチンに対するイベント若しくはメッセージの通信手段としてＣＰＵ例外処理が用いられる場合、初期化処理を実行し各例外管理テーブルの特定要因においては調停プロセス１５が各例外管理テーブルのポインタを書き込む。
【０１７６】
また、ＣＰＵ８は、実行システムの異常と直接的に関係するＣＰＵの例外要因の特定を、調停プロセス１５による例外処理により特定する。ただし、本発明は、この例外処理に限定するものではなく、マルチＯＳを実装する際にコンピュータシステムの思想に合致した処理を組み込むこともできる。
【０１７７】
例えば、調停プロセス１５は、診断処理と診断結果に基づき、問題を発生させた実行システムの停止と再起動処理を調停プロセス１５から指令するように構成することもできる。
【０１７８】
調停プロセス１５は、第１の実行システム３に対応つけて、初期化処理を含む起動処理３７と、第１の実行システム３が処理を担う割込要因の禁止処理を含む停止処理３６を備え、停止処理３６のエントリーポイントを静的に調停プロセス１５が参照するシステムＡ例外処理管理テーブル３１に登録する。
【０１７９】
調停プロセス１５は、システムメモリ１（図１参照）上で起動した後に、第１の実行システム３の起動処理３７を実行するが、起動後の調停プロセス１５が予め登録されている第１の実行システム３の起動処理３７を呼び出して実行する。
【０１８０】
調停プロセス１５は、コンピュータシステムの診断プログラムに基づき、異常検出とその異常を発生した第１の実行システム３又は不図示の他の実行システムを特定した後に、異常と特定した実行システムの停止処理（例えば、停止処理３６）を呼び出し実行してから、起動処理３７を呼び出して第１の実行システム３の再起動を行うことができる。
【０１８１】
（第１０の実施の形態）
図１１は、本発明の第１０の実施形態の割込処理の振分を示す構成図である。例えば、ハードウェアブロック２、第１の実行システム３、調停プロセス１５、任意のｎ番目の実行システム３ｎ、割込み要因管理テーブル３８、リングバッファ１０、仮想レジスタ４２で構成するコンピュータシステムを例示する。
【０１８２】
割込み要因管理テーブル３８は、割込要因番号列とエントリ（Ｅｎｔｒｙ）列で構成し、「００」、「０１」、「Ｍ」のような数値又は符号を割込要因番号列に記述する。また、例外コードに対応するエントリを「System  B」、「System  Ａ」、「System  Ｎ」のように記述する。
【０１８３】
システムＩＤ「Ｎｅｇｏ」で識別する調停プロセス１５は、新たに割込み振分け処理３９を備え、この割込み振分け処理３９の中に入口処理４０と出口処理４１を設けている。なお、ｎ番目の実行システム３ｎは、第１の実行システム３と同等の構成であり、重複する説明を省略する。
【０１８４】
調停プロセス１５は、すべての割込処理をフックし、その後の処理を決定する。一方、各実行システム３、３ｎは、ＣＰＵ例外処理も割込処理も調停プロセス１５に委ねるように構成する。
【０１８５】
調停プロセス１５は、フックした事象が第１の実行システム３のタスク１６ａで発生した割込要因であると判定した場合、割込みに関係する情報、例えば、ＣＰＵ例外処理に関係する不図示のレジスタ及び複数の割込要求を管理する割込みコントローラの各レジスタからシステムの状態情報を読出し、各実行システム３、３ｎが共有する仮想レジスタ４２に書込む。
【０１８６】
調停プロセス１５は、割込処理中に別の割込みが発生するような複数の割込みにおいて、調停プロセス１５が割込まれた処理のコンテキストを適切に調停プロセス１５が管理する割込処理専用のスタックへ保存し、割込みの多重度（ネスト）をもってスタックの管理を行う。
【０１８７】
調停プロセス１５は、割込処理をフックしたときの入口処理４０において、割込みのネスト値（例えば、初期値は「０」が設定される）を増分する。このとき、増分される前のネスト値が「０」であった場合は、割込処理をフックする以前に実行されていたプロセスは割込み処理ではないことを示している。
【０１８８】
ただし、調停プロセス１５は、管理データに登録されている「実行中」のシステムが調停プロセス１５であった場合、すべてのシステムが「idle」状態にあるときには、コンテキストの退避処理を省略することができる。
【０１８９】
各実行システムは、それぞれ独自のコンテキスト格納領域を有する。これはシステム切替時に利用され、割込処理においてもコンテキスト格納領域を利用する場合がある。
【０１９０】
調停プロセス１５は、タスクを実行中の実行システムに対し割込例外が発生した場合、コンテキスト格納領域を利用する。調停プロセス１５は、割込み振分け処理の入口において、割込みネストが「０」であり、システム状態が「active」である実行システムを特定した場合、その実行システムの持つコンテキスト退避領域（例えば、図示したコンテキスト２２ｎ）に必要なコンテキストの退避処理を行う。
【０１９１】
調停プロセス１５は、割込処理の特定を行い、１つの割込み要因が１つの実行システムに対応して処理する。ただし、連続して割込処理が要求されたカスケード状態では、カスケードされた個別の要因が１つの実行システムに対応して処理する。
【０１９２】
第１０の実施形態では、ＣＰＵ８の実行権を握る調停プロセス１５が、割込み要因管理テーブル３８を参照し、割込要因番号（例えば、「００」、「０１」、「Ｍ」）毎に割込処理がどの実行システムに対応して記憶されているかをエントリで管理する。
【０１９３】
管理テーブル記憶装置１８（図１参照）に記憶される割込み要因管理テーブル３８は、一旦定義したら書換えない静的な登録方法、実行システム３、３ｎがダイナミックに書換える登録方法、ＣＰＵ例外処理を利用した実行システム３、３ｎから調停プロセス１５へメッセージ通知により調停プロセスが設定する登録方法の中から適宜選択することができる。
【０１９４】
第１０の実施形態では、第１の実行システム３から調停プロセス１５へメッセージ通知をすることにより調停プロセス１５が管理テーブルを設定する登録方法が望ましい。
【０１９５】
調停プロセス１５は、割込要因を特定し、割込要因番号から割込み要因管理テーブル３８の該当箇所を参照し、処理を担う実行システムを決定する。例えば、割込要因番号「００」でシステムＩＤ「Ｂ」の実行システム３ａを決定する。また、割込要因番号「０１」でシステムＩＤ「Ａ」の実行システム３を決定する。さらに、割込要因番号「Ｍ」でシステムＩＤ「Ｎ」の実行システム３ｎを決定する。
【０１９６】
調停プロセス１５は、割込要因を特定し例外コード「Ｍ」に対応付けられたエントリ「システムＮ」のアドレスに対応するシンボル４３に基づき、ｎ番目の実行システム３ｎに割込処理６ｎを実行させる。
【０１９７】
ｎ番目の実行システム３ｎは、仮想レジスタ４２を参照して、割込処理６ｎを終了した後に、調停プロセス１５の出口処理４１へ復帰できるようにシーケンスを制御する。
【０１９８】
ここで、調停プロセス１５に入口処理４０と出口処理４１を設けたのは、割込処理のポリシーが異なる実行システム３ｎへの割込み振り分け処理３９が安全に実行されると共に、入口処理４０及び出口処理４１を設けることにより、例えば、実行システム３と実行システム３ｎとの間で発生する多重割込み処理を統一的に管理するためである。
【０１９９】
ＣＰＵ８の実行権を握る調停プロセス１５は、割込み要因を判定してから、例外コード「Ｍ」に基づき、発生した割込みをｎ番目の実行システム３ｎで処理し、ＣＰＵ８の実行権を調停プロセス１５へ復帰させる機能を有する。
【０２００】
また、調停プロセス１５は、割込み情報を各システムが共有する仮想レジスタ４２に書込む機能と、安全に多重割り込み処理を実現するための入口処理４０及び出口処理４１を有する割込み処理の振り分け処理３９を実行する。
【０２０１】
ＣＰＵ例外は、一般にはブロック（発生させないこと）出来ないが、割込みについてはブロックすることができる。スケジューラ２１の遅延起動にはブロックできないＣＰＵ例外ではなく、ブロック可能な割込例外を使い、スケジューラ起動のタイミングを制御する。
【０２０２】
割込処理からのスケジューラ２１、２１ａの起動は、マルチＯＳ環境での禁止事項である。マルチＯＳ環境においては、割込みや例外処理からのスケジューリング要求をリングバッファ１０、１０ｎに格納し、スケジューラ２１、２１ａの起動が可能な条件で特定の割込みを発生させ、リングバッファ１０又は１０ａに格納された順にスケジューラ２１、２１ａの起動を行う。
【０２０３】
例外処理や割り込み処理から直接スケジューラ２１，２１ｎを起動することはできないが、特定の割り込みについてはスケジューラ２１、２１ａの起動を許可し、割り込みサービスルーチンＩＳＲにスケジューラ２１、２１ａの遅延起動機能を実装する。
【０２０４】
唯一スケジューラ２１、２１ａの起動に利用できる割り込みとは、「ソフトウェアからの設定でブロックと解除ができる最低の優先度を有する割り込み要因」という条件を満たさなければならない。
【０２０５】
割込処理や例外処理からリングバッファ１０、１０ａにスケジューラ２１、２１ａの起動要求を格納する割込処理ルーチンもしくは例外処理ルーチンは、このスケジューラ起用用に利用される割込要因を設定する。
【０２０６】
ただし、割込みは対象の実行システムがタスクを実行する状況でのみ、つまり、システム管理テーブル上で「active」であって、実際にその実行システムのタスク（もしくはスレッド）がＣＰＵ８の実行権を得ている場合のみ割込みができる。
【０２０７】
割込処理や例外処理中において、例外はブロックされなけばならない。このように構成すると、スケジューラ起動要求が遅延されている実行システムがタスクを実行できる状況において、必ずスケジューラ遅延起動処理用の割り込みが発生する。
【０２０８】
割込処理６ｃは、スケジューラ２１を起動させるため、他の割込処理とは扱いが異なる。割込処理６ｃが、ＣＰＵ例外処理に近い処理であると言える。
【０２０９】
割込処理６ｃは、スケジューラ起動要求を格納したリングバッファ１０から起動要求を読み出すが、例えば、リングバッファ１０が空であり、何のスケジューラ起動要求もリングバッファ１０から読み出せなかった場合には、スケジューラ起動要求用の割込要因を解除する。
【０２１０】
スケジューラ起動要求がリングバッファ１０から読出された場合においては、スケジューラ起動要求用の割込要因を設定したまま、スケジューラ２１に遷移する。このように、割込処理ルーチンは他の割り込み処理ルーチンとは異なり、調停プロセス１５における割込出口処理４１に復帰しない。
【０２１１】
また、割込入口処理４０においては、他の割込処理で行うコンテキスト処理やネスト管理も行わない。
【０２１２】
なお、ｎ番目の実行システム３ｎに設けられた割込処理６ｎは、リングバッファ１０ｎにアクセスし、第１の実行システム３側の割込処理６ｃと同等の処理を実行する。
【０２１３】
第１０の実施形態のスケジューリング機構を第１の実行システム３及びｎ番目の実行システム３ｎを用いて説明する。第１の実行システム３は、カーネル５（図１参照）を備え、ＣＰＵ８が、カーネル５を通してタスク１６ａ、タスク１６ｂ実行の管理を行っている。
【０２１４】
第１の実行システム３は、調停プロセス１５の管理下にあり、システムＩＤ「Ａ」と優先度が調停プロセス１５により付与される。第１の実行システム３のスケジューリングは、実行システムの切替えや例外処理の振り分けを調停プロセス１５が制御する。
【０２１５】
調停プロセス１５の制御から逸脱する処理を第１の実行システムに許可すると、コンピュータシステム全体の動作が不安定（例えば、ハングアップや、フリーズ現象）となるので、第１の実行システム３が調停プロセス１５の介在なしにスケジューラ２１の実行が許可される処理は、実行中のプロセスがタスク１６ａ、タスク１６ｂのコンテキスト２２に該当する場合である。
【０２１６】
また、第１の実行システム３は、第１の実行システム３に予め用意されたスケジューラ２１の起動用の割込処理６Ｃを調停プロセス１５の介在なしに実行してもよい。
【０２１７】
調停プロセス１５は、ソフトウェアによって制御可能な割込処理６Ｃを実行して、第１の実行システム３のスケジューリングを制御する。ここで、「ソフトウェアによって制御可能」とは、ソフトウェアにより例外処理７の要因の有効及び無効化が可能であり、例外処理７の発生を禁止及び許可できることを意味している。
【０２１８】
ソフトウェアによって制御可能な割込み機能は、例えば、第１の実行システム３を利用するものであれば、割込処理６ｃ、ＣＰＵ例外処理７を利用して実現することができ、ｎ番目の実行システム３ｎを利用するものであれば、割込処理６ｎ、ＣＰＵ例外処理７ｎを利用して実現することができる。
【０２１９】
なお、第１０の実施の形態では、割込処理６ｃ、６ｎを用いてスケジューリング関連の説明をするが、上述したようにＣＰＵ例外処理７、７ｎを用いてスケジューリング処理を実行できるのは勿論である。
【０２２０】
第１の実行システム３は、割り当てられたソフトウェアによって制御可能な割込処理６Ｃを第１の実行システム３に対するスケジューリング要求のシグナルとして利用する。
【０２２１】
一方、割込み要因により発生しうる割込処理６Ｃの禁止及び許可を調停プロセス１５が管理して行う場合がある。調停プロセス１５は、第１の実行システム３のＣＰＵ８に対する実行権の切替えを処理を行うが、その際、コンテキスト２２の退避及び復帰処理をも管理する。
【０２２２】
調停プロセス１５は、コンテキスト２２の切替え処理において、切替え先のｎ番目の実行システム３ｎが採用するソフトウェアによって制御可能な割込処理６Ｃを許可するように設定する。
【０２２３】
切り替え先のｎ番目の実行システム３ｎがスケジューリング要求を設定していれば、調停プロセス１５によるシステム切替え処理をした後に切替え先のタスク１６ｍ、タスク１６ｎのコンテキスト２２ｎ上でスケジューリング要求に該当する割込処理６ｎが発生する。
【０２２４】
また、スケジューリング要求は、調停プロセス１５を経由して切替え先のｎ番目の実行システム３ｎに割込処理６ｎとして通知される。この割込処理６ｎは、切替え先のｎ番目の実行システム３ｎのスケジューラ起動のためのシグナルである。例えば、ｎ番目の実行システム３ｎの処理に割込処理６を用いる場合、割込みは調停プロセス１５のネストの管理から開放された処理として取り扱う。
【０２２５】
スケジューリング要求は、スケジューラ起動のために割込処理６ｎから切替え先のｎ番目の実行システム３ｎが直接スケジューラを起動することができるように構成されている。
【０２２６】
ただし、調停プロセス１５は、通常のＣＰＵ例外処理や割込処理の振り分けに際し、スケジューリング要求のシグナルに対応するＣＰＵ例外処理７ｎや割込処理６ｎは、調停プロセス１５に従って禁止する。
【０２２７】
調停プロセス１５は、システム切替えに伴うコンテキスト２２、２２ｎの切替え処理において、切替え元の第１の実行システム３用のスケジューリング要求のシグナルに対応するＣＰＵ例外処理７ｎを禁止する。
【０２２８】
第１の実行システム３のスケジューラ起動専用のＣＰＵ例外処理７は、１回の実行システムの切替え処理に伴い、何回のスケジューリング起動が必要であるかは、対象とするコンピュータシステムに実装されるカーネル５やカーネルのサービス或いはスケジューラの仕様に依存する。
【０２２９】
第１０の実施形態のスケジューラ起動は、コンピュータシステムの内部状態が変化しスケジューリングが必要となった場合に、第１にカーネル５（図１参照）が管理する「レディキュー」の操作を含んでいるときは、１回の実行システムの切替えに当たり1回のスケジューリング起動が実行される。
【０２３０】
第２に、コンピュータシステムの内部状態が変化し、カーネル５が管理する「レディキュー」の操作を含まないときは、1回の実行システムの切替えに当たり複数回のスケジューリング起動が発生する場合がある。この場合、スケジューリング要求を要求順にファストイン・ファストアウトするバッファ手段を実装するとよい。
【０２３１】
例えば、調停プロセス１５は、第１の実行システム３の割込処理６Ｃを、カーネル５が管理する「レディキュー」の操作が必要になった段階で、スケジューリング要求をリングバッファ１０内に到着順に従い登録し、スケジューリング要求のシグナルに対応する割込処理６Ｃをリングバッファ１０内に設定する。
【０２３２】
リングバッファ１０内には、実行システムの切替え処理より以前に複数のスケジューリング要求が蓄積される場合がある。
【０２３３】
ＣＰＵ８は、スケジューラ起動用の割込処理６Ｃを実行し、リングバッファ１０からスケジューリング要求のデータを読み出した後に、スケジューラの起動を実行するが、リングバッファ１０内のスケジューリング要求がなくなるまで、スケジューリング要求に対応する割込要因やＣＰＵの例外要因を保存する。
【０２３４】
（第１１の実施の形態）
図１２は、本発明の第１１の実施形態のシステムの診断処理を示す構成図である。複数の実行システムが１つのＣＰＵ８上に実装された状況では、１つのＣＰＵ８上に１つの実行システムが構築される場合に比べ、システムの複雑さが増大し、１つの実行システムで発生した問題が他の実行システムの動作に影響を及ぼす場合がある。
【０２３５】
コンピュータシステム全体の安定動作を確保するためには、実行システム内で発生した問題を検出し、且つ特定すること、及び問題を発生させた実行システムを停止させ、再起動を実行させる必要がある。
【０２３６】
第１１の実施形態では、実行システムの診断をＣＰＵ例外処理や割込処理を監視して問題を発生させた実行システムを特定することもできるが、他の手段として、第２の実行システム３ａ、第３の実行システム３ｂと調停プロセス１５との間で送受信されるメッセージを用いて第２の実行システム３ａ、第３の実行システム３ｂの動作確認を遂行することによりコンピュータシステムの診断を実施する。
【０２３７】
メッセージによるシステム動作確認は、ソフトウェア制御が可能な割込処理６ｃ、６ｅ若しくはＣＰＵ例外処理７ａ、７ｂ（以下、割込処理６ｃ、６ｅを用いて説明する）を用いて、調停プロセス１５が第２の実行システム３ａ、第３の実行システム３ｂに対しメッセージを送信する。
【０２３８】
第２の実行システム３ａ、第３の実行システム３ｂは、割込処理６ｃ、６ｅで起動されるタスクからなる調停プロセス１５からのメッセージに対する応答プログラムを設け、調停プロセス１５からのメッセージにより起動されたタスクが調停プロセス１５に対し返信メッセージを送信する。
【０２３９】
なお、メッセージの送信方法は、ソフトウェア制御が可能な割込処理６ｃ、６ｅを用いて実行し、メッセージは予め定めた情報を用いる。
【０２４０】
実行システムの診断は、ＣＰＵ８が、第２の実行システム３ａ、第３の実行システム３ｂのカーネル（図１のカーネル５、５ａに相当する手段）が関与する割込処理６ｃ、６ｅ、スケジューラ、調停プロセス１５、第２の実行システム３ａ、第３の実行システム３ｂの通信機能を正常に動作しているか否かを確認する処理である。
【０２４１】
また、ＣＰＵ８は、システム管理テーブル２３内のシステム状態が「idle」２５ｄ、２７ｄに遷移したタイミングを監視し、第２の実行システム３ａ、第３の実行システム３ｂのシステム状態を把握する。
【０２４２】
さらに、ＣＰＵ８は、メッセージを受信したはずの実行システムに何らかの異常があると判断し、その実行システムの停止及び再起動処理の状態を監視する。
【０２４３】
ここで、所謂「ウォッチドック」を用わないのは、メッセージの返信を行うタスクが実際にＣＰＵ８の実行権を得るまでの時間が、コンピュータシステムの構成に依存するためである。
【０２４４】
つまり、メッセージの送信に利用される割込処理６ｃ、６ｅは、各割込処理が起動されるまでの最長時間を実行システム毎に規定できるが、返信を行うタスク実行までの遅延時間がより高い優先度の実行システムの内部状態に強く影響を受けるためである。
【０２４５】
図１２の構成図を参照して第１１の実施形態の診断処理を説明する。図示した構成図は、第２の実行システム３ａの診断処理を示している。また、第３の実行システム３ｂ、調停プロセス１５、システム管理テーブル２３は、上述した第２乃至第４の実施形態と同等の構成要素で構成しているので重複する説明を省略する。
【０２４６】
初めに、第２の実行システム３ａ及び第３の実行システム３ｂは、実行可能なタスクが内部に存在せず、「idle」２５ａ、２７ａで示す待機状態として管理されている。ＣＰＵ８は、診断過程において、調停プロセスを動作させ、第２の実行システム３ａの優先度「１５」をより高い優先度「３」に変更する。
【０２４７】
次に、ＣＰＵ８は、調停プロセス１５から各割込処理６ｃ、６ｅに対して割込処理を実行するように第２の実行システム３ａ及び第３の実行システム３ｂに対しメッセージを送信する。各割込処理６ｃ、６ｅから第２の実行システム３ａ、第３の実行システム３ｂにおいてタスクが起動され、夫々スケジューリング処理要求がハードウェアブロック２を経由して調停プロセス１５に送信される。
【０２４８】
第２の実行システム３ａの優先度「３」２５ｅが第３の実行システム３ｂの優先度「１６」より高く設定しており、第２の実行システム３ａ、第３の実行システム３ｂで起動されたタスクの順番は予め定められている。
【０２４９】
例えば、ＣＰＵ８は、実行システムの優先度に従い、調停プロセス１５がスケジューリング処理要求に応答し第２の実行システム３ａのシステム状態を「idle」２５ａから「ready」２５ｂに変更し、システムＩＤ「Ｂ」が付与された第２の実行システム３ａへ通信割込みを実行する。
【０２５０】
引き続き、ＣＰＵ８は、第２の実行システム３ａのタスクが実行された段階でシステム状態を「ready」２５ｂから「active」２５ｃに変更すると共に、ＣＰＵ８上でタスクを実行させる。
【０２５１】
また、ＣＰＵ８上で動作する調停プロセス１５は、タスクの実行が完了した段階で第２の実行システム３ａからタスク完了のメッセージを受信し、システムＩＤ「Ｂ」のシステム状態を「active」２５ｃから「idle」２５ｄへ変更する。
【０２５２】
次に、ＣＰＵ８は、実行システムの優先度に従い、調停プロセス１５がスケジューリング処理要求に応答し第３の実行システム３ｂのシステム状態を「idle」２７ａから「ready」２７ｂに変更し、システムＩＤ「Ｃ」が付与された第３の実行システム３ｂへ通信割込みを実行する。
【０２５３】
ＣＰＵ８は、第３の実行システム３ｂのタスクが実行された段階でシステム状態を「ready」２７ｂから「active」２７ｃに変更すると共に、ＣＰＵ８上でタスクを実行させる。
【０２５４】
また、ＣＰＵ８上で動作する調停プロセス１５は、タスクの実行が完了した段階で第３の実行システム３ｂからタスク完了のメッセージを受信し、システムＩＤ「C」のシステム状態を「active」２７ｃから「idle」２７ｄへ変更する。
【０２５５】
このように、第２の実行システム３ａのタスク処理完了後に、第３の実行システム３ｂのタスクがＣＰＵ８上で実行されるという経時的な関係が設定されている。
【０２５６】
したがって、ＣＰＵ８は、第２の実行システム３ａが先に調停プロセス１５へメッセージを返信した後に、第３の実行システム３ｂが調停プロセス１５へメッセージを返信する。第２の実行システム３ａ及び第３の実行システム３ｂは共に、内部に実行可能なタスクがなくなると、調停プロセス１５にＣＰＵ８の実行権が移るように構成されている。
【０２５７】
ＣＰＵ８上で動作する調停プロセス１５は、各タスクから受信したメッセージの経時的な順番から実行システムが正常か否かを診断する。例えば、調停プロセス１５が優先度の高い第２の実行システム３ａのメッセージに続いて、第３の実行システム３ｂのメッセージを受信すれば、第２の実行システム３ａは正常であると判定する。
【０２５８】
一方、ＣＰＵ８上で動作する調停プロセス１５は、優先度の低い第３の実行システム３ｂのメッセージに続いて、第２の実行システム３ａのメッセージを受信すれば、第２の実行システム３ａは異常状態であると判定する。この判定結果に基づき、調停プロセス１５は、第２の実行システム３ａに対して停止処理３６と起動処理３７（図９参照）を実行するようメッセージを送信する。
【０２５９】
（第１２の実施の形態）
図１３及び図１４は、本発明の第１２の実施形態のシステムの優先度変更処理を示す構成図である。ハードウェアブロック２に接続された調停プロセス１５及びｎ番目の実行システム３ｎと、調停プロセス１５から参照されるシステムＮ例外処理管理テーブル３１ａ及びシステム管理テーブル２３を備えるコンピュータシステムとして例示する。
【０２６０】
ＣＰＵ８は、調停プロセス１５のサービス処理６５、割み振分け処理３９を実行し、仮想レジスタ４２を参照する。また、割込み振分け処理３９には、入口処理４０及び出口処理４１を設けている。
【０２６１】
ｎ番目の実行システム３ｎは、他の実行システムと区別するシステムＩＤ「Ｎ」６４が付与されいる。システム管理テーブル２３にシステムＩＤ「Ｎ」６４に対応付けてシステムの現優先度「１６」、通常優先度「１６」、割り込み処理時優先度「５」、及びシステム状態列に「ｒｅａｄｙ」で示す準備完了状態が夫々記述され管理されている。
【０２６２】
なお、他のシステムＩＤ「Ａ」、「Ｂ」、「Ｎｅｇｏ」に対応つけて管理されている実行システム３、３ａや調停プロセス１５については第２乃至第４実施形態と同等であるので重複する説明を省略する。
【０２６３】
ＣＰＵ８上で動作する調停プロセス１５は、ｎ番目の実行システム３ｎに対応するシステムＮ例外処理管理テーブル３１ａを参照し、システムＮとしてのｎ番目の実行システム３ｎのＴｒａｐ例外処理に移行するポインタ６３を読み出す。第１２の実施形態では、例外コード「Ｔｒａｐ」に対応するエントリ「サービス処理」がポインタ６３である。
【０２６４】
ＣＰＵ８は、割込処理６ｎとして、割込み要因の特定と、割込み要因に対応する割込みサービスルーチン（以下、「ＩＳＲ」を称する）を実行することにより割込み処理を実行する。なお、ＩＳＲはタスク処理に比して短時間で終了する処理として実装するとよい。
【０２６５】
例えば、ＣＰＵ８は、ＩＳＲから処理を引き継ぐタスク１６ｍ又はタスク１６ｎを起動し、割込処理を短縮することが好ましい。すなわち、ＩＳＲの実行速度はコンピュータシステムの割込み応答性を高めるために設計上考慮すべき事項である。
【０２６６】
図１３の構成図を参照して、優先度変更処理を説明する。第ｎ番目の実行システム３ｎは、仮想レジスタ４２を参照し、発生した割込み要因を判定し、ｎ番目の実行システム３ｎの割込処理６ｎを実行させて、その割込み要因に該当するＩＳＲを起動させる。
【０２６７】
次に、割込処理６ｎを引き継ぐ割込処理タスク６０を起動させる。この割込処理タスク６０は、ｎ番目の実行システム３ｎの通常優先度「１６」より比較的高い優先度「１０」で実行するように設定することが望ましい。
【０２６８】
実行システム３ｎの優先度を上げることにより、割込処理タスク６０の優先度を実行システム間において相対的に高く設定する。
【０２６９】
このためにタスク６０を起動させたＩＳＲからＣＰＵ例外を用い、調停プロセス１５に対しシステム優先度変更のためのサービスを要求する。図中の「Ｔｒａｐ」例外を使用している。調停プロセス１５は、発生した「Ｔｒａｐ」例外をフックし、その例外コード、実行中のシステムＩＤ、そして実行中の実行システムに対応するシステムＮ例外管理テーブル３１ａを参照する。
【０２７０】
調停プロセス１５は、システムＮ例外処理がサービス処理６５であることをポインタ６３から判定し、サービス処理６５を起動させる。このサービス処理６５はシステム管理テーブル２３内部に記述されたシステムＩＤ２６「Ｎ」に対応する現優先度を変更処理６４ａするサービスである。
【０２７１】
調停プロセス１５は、サービス処理６５により、ｎ番目の実行システム３ｎの現優先度「１６」を割り込み処理時優先度の「５」に変更処理６４ａする。優先度変更のための調停プロセス１５のサービス処理６５は、それをコール（ｃａｌｌ）したＩＳＲのコンテキスト上で実行され、その処理終了後ＩＳＲに復帰する。
【０２７２】
ＩＳＲは、それが起動した割込処理タスク６０の実行完了後に実行システム３ｎを元の優先度に戻す処理を担う優先度監視タスク６１を起動させ、処理を終了する。
【０２７３】
優先度監視タスク６１は、割込処理６ｎを引き継ぐ割込処理タスク６０の優先度「５」と通常優先度「１６」との間の値（例えば、「１０」）を有する優先度でＣＰＵ８により制御される。従って、割込処理タスク６０が完了した段階で通常優先度「１６」より高い優先度「１０」の優先度監視タスク６１がＣＰＵ８の実行権を獲得することができる。
【０２７４】
また、優先度監視タスク６０によるシステム優先度の通常優先度への変更は、ＩＳＲからシステム優先度を割込処理優先度に上げた場合と同じようにＣＰＵ例外を用い、調停プロセス１５にリクエストが伝達される。
【０２７５】
図１４の構成図を参照して優先度の変更処理を説明する。割込処理タスク６０が終了しレディキューから外れると、優先度監視タスク６１がレディキュー上で最も高い優先度を有するタスクとなり、ＣＰＵ８の実行権を得る。
【０２７６】
また、実行システム３ｎは、優先度監視タスク６１をコンテキスト２２上で実行し、調停プロセス１５に発生した「Ｔｒａｐ」例外をフックさせ、例外コード「Ｔｒａｐ」に対応するエントリ「サービス処理」を示すポインタ６３を読出すため、システムＮ例外処理管理テーブル３１ａを参照させる。
【０２７７】
調停プロセス１５は、システムＮ例外処理がサービス処理６５であることをポインタ６３から判定し、サービス処理６５を起動させる。
【０２７８】
調停プロセス１５は、サービス処理６５を実行し、ｎ番目の実行システム３ｎの現優先度「５」を通常優先度の「１６」に変更処理６４ｂして、ｎ番目の実行システム３ｎを通常優先度で実行させる。
【０２７９】
以上の如く、本発明のマルチＯＳ環境のコンピュータシステムは、複数の実行システム３、３ａ、３ｂ、３ｃ、３ｎをＣＰＵ８上で切り替えて実行することができるが、各実行システム側は「ｉｄｌｅ」で示す待機状態の実装が禁止されている。
【０２８０】
一部の例外を除き、原則としてすべての実行システム３、３ａ、３ｂ、３ｃ、３ｎが実行可能なタスクやスレッドを有しない状態（例えば、システム状態が「ｉｄｌｅ」）では、調停プロセス１５が唯一「ｗａｉｔ」で示すアイドリング状態を保持し、コンピュータシステムを待機状態に維持させることができる。
【０２８１】
したがって、調停プロセス１５がＣＰＵ８の実行権を持ち続ける場合がある。メッセージによる実行システムの動作確認（例えば、診断処理）は、この調停プロセス１５に実装された「ｗａｉｔ」で示すアイドリング状態で継続的に実行するとコンピュータシステムの安定性及び経済性を向上させることができる。
【０２８２】
調停プロセス１５は、診断処理を実行する際に、診断処理の実行状況と診断対象を管理するデータベースを管理するように構成する。診断処理の実行状況は数ビット列の情報量で管理することができ、診断対象は行列のマトリクス構造のテーブル情報で管理するとよい。
【０２８３】
診断処理の実行状況を表す管理データは、調停プロセス１５内部の割込み振分け処理３９（図１０参照）において参照される情報である。すなわち、実行システムの診断中に外部割込みが発生した場合、コンピュータシステム本来の処理を実行するために必要なデータである。
【０２８４】
メッセージ送信用に用いられる割込処理は、診断専用の割込源を用いる割込処理であって、通常のシステム動作においては利用されない割込処理である。
【０２８５】
通常の割込み発生では、調停プロセス１５の割込み振分け処理３９が、診断処理の実行状況を示す管理データを参照し、管理データが診断処理実行中を示すものであれば、管理データを通常データに変更し、さらに調停プロセス１５内部の診断処理中断処理を呼び出し、診断処理中断プロセスが完了した段階で、割込み振分け処理を継続し、通常の割込処理を実行することができる。
【０２８６】
診断対象を管理するテーブルは、例えば、マトリクス構造で左列にシステムＩＤを記述する欄と、中列に高優先度システムを記述する欄と、右列に低優先度システムを記述する欄を設けることで実施することができる。
【０２８７】
左列の上段から下段の順にシステムＩＤ「Ａ」、「Ｂ」、「Ｃ」、「−」、「−」、「Ｎ」、「０ｘｆｆｆｆ」を記述する。「０ｘｆｆｆｆ」は、システムＩＤの終端を示すエンドオブファイルである。
【０２８８】
また、中列の上段から下段の順に「０」、「１」、「０」、「０」、「０」、「０」、「０」の数値を記述する。「０」は通常優先度を維持する処理、「１」は高優先度に変更する処理である。
【０２８９】
さらに、右列の上段から下段の順に「０」、「０」、「１」、「０」、「０」、「０」、「０」の数値を記述する。「０」は通常優先度を維持する処理、「１」は通常優先度より低い優先度に変更する処理である。
【０２９０】
実行システムの診断処理は、ＣＰＵ８が調停プロセス１５を実行し、優先度の高い実行システムと優先度の低い実行システムから夫々メッセージを受信する。このメッセージの着信順と実行システムの優先度が整合する状態を検出した段階で、コンピュータシステム全体が正常に動作していると判定することができる。
【０２９１】
調停プロセス１５による診断処理は、ＣＰＵ８が診断対象を決定し、診断対象のシステムの優先度を設定する。システムＩＤ「Ａ」から「Ｎ」で識別する実行システムを実装した場合、調停プロセス１５の診断機能は、ＣＰＵ８により優先度を高く設定する高優先度システムと優先度を低く設定する低優先度システムと、通常優先度を維持する３つの種類を組み合わせて実行システムの診断を実行することができる。
【０２９２】
本発明の実施形態によれば、既存のソフトウェア資産を活用しながら、基本動作が異なるＯＳで実行されるアプリケーションプログラムを容易にコンピュータシステムに導入することができる。
【０２９３】
また、割込処理をシステム毎に分離し、導入する新規ＯＳ用の割込処理を含むデバイスドライバの開発費用や開発期間を削減できる。
【０２９４】
なお、本発明の各実施形態に記載された、作用及び効果は、本発明から生じる最も好適な作用及び効果を列挙したに過ぎず、本発明による作用及び効果は、本発明の実施の形態に記載されたものに限定されるものではない。
【図面の簡単な説明】
【０２９５】
【図１】第１の実施形態としてのコンピュータシステムの模式的なブロック図。
【図２】第１の実施形態としてのコンピュータシステムの処理のフローチャート。
【図３】第２の実施形態の調停プロセスによるシステムの選択と切替え処理を示す構成図。
【図４】第３の実施形態の調停プロセスによる実行システムの遷移処理を示す構成図。
【図５】第４の実施形態の調停プロセスによるＣＰＵ例外処理を示す構成図。
【図６】第５の実施形態の調停プロセスによるシステムの診断処理を示す構成図。
【図７】第６の実施形態の調停プロセスの待機状態を示す構成図。
【図８】第７の実施形態の調停プロセスによる例外振分処理を示す構成図。
【図９】第８の実施形態のＣＰＵ例外処理を利用した調停プロセスへの通信処理を示す構成図。
【図１０】第９の実施形態の致命的な例外のフック処理を示す構成図。
【図１１】第１０の実施形態の割込処理の振分処理を示す構成図。
【図１２】第１１の実施形態のシステムの診断処理を示す構成図。
【図１３】第１２の実施形態のシステムの優先度変更処理を示す構成図。
【図１４】第１２の実施形態のシステムの優先度変更処理を示す構成図。
【符号の説明】
【０２９６】
１     システムメモリ
２     ハードウェアブロック
３、３ａ、３ｂ、３ｎ   実行システム
５、５ａ       カーネル
６ａ、６ｃ、６ｎ       割込処理
７、７ａ、７ｂ、７ｎ   例外処理
８     ＣＰＵ
９     仮想レジスタ
１０   リングバッファ
１１   入出力ポート
１２   キーボード
１３   ディスプレイ
１５   調停プロセス
１６ａ、１６ｂ、１６ｄ、１６ｇ、１６ｍ、１６ｎ        タスク
１８   管理テーブル記憶装置
２１、２１ａ、２１ｂ   スケジューラ
２２   コンテキスト
２３   システム管理テーブル
３１   例外処理管理テーブル
３１ａ 例外処理管理テーブル
３２   サービス処理
３６   停止処理
３７   起動処理
３８   割込要因管理テーブル
４０   入口処理
４１   出口処理
４２   仮想レジスタ
６０   割込処理タスク
６１   優先度監視タスク
６５   サービス処理
６６   優先度変更要求処理
【図１】
2005173643.tif 000003
【図２】
2005173643.tif 000004
【図３】
2005173643.tif 000005
【図４】
2005173643.tif 000006
【図５】
2005173643.tif 000007
【図６】
2005173643.tif 000008
【図７】
2005173643.tif 000009
【図８】
2005173643.tif 000010
【図９】
2005173643.tif 000011
【図１０】
2005173643.tif 000012
【図１１】
2005173643.tif 000013
【図１２】
2005173643.tif 000014
【図１３】
2005173643.tif 000015
【図１４】
2005173643.tif 000016