(57)【要約】【課題】矛盾や遅滞なく、共通の周辺装置を複数の制御装置が制御する。【解決手段】担当判定部１２３は、複数の制御装置１００のなかから、担当装置を判定する。指示入力部１５１は、周辺装置に対する指示を入力する。他の制御装置１００が担当装置である場合、指示送信部１５２は、担当装置に対して、指示入力部１５１が入力した指示を送信する。自らの制御装置１００が担当装置である場合、指示受信部１５３は、他の制御装置１００が送信した指示を受信する。指示通知部１５４は、自らの制御装置１００が担当装置である場合、指示入力部１５１が入力した指示あるいは指示受信部１５３が受信した指示を、周辺装置に通知する。【選択図】図４
2011053727.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御装置に制御される周辺装置を制御する制御装置において、
データを処理する処理装置と、他の制御装置と通信する通信装置と、担当判定部と、指示入力部と、指示送信部と、指示受信部と、指示通知部とを有し、
上記担当判定部は、上記処理装置を用いて、上記複数の制御装置のなかから、上記周辺装置を制御する制御装置を判定し、
上記指示入力部は、上記処理装置を用いて、上記周辺装置に対する指示を入力し、
上記指示送信部は、上記担当判定部が判定した制御装置が他の制御装置である場合に、上記通信装置を用いて、上記担当判定部が判定した制御装置に対して、上記指示入力部が入力した指示を送信し、
上記指示受信部は、上記担当判定部が判定した制御装置が自らの制御装置である場合に、上記通信装置を用いて、他の制御装置が送信した指示を受信し、
上記指示通知部は、上記担当判定部が判定した制御装置が自らの制御装置であり、かつ、上記指示入力部が指示を入力した場合、上記処理装置を用いて、上記周辺装置に対して、上記指示入力部が入力した指示を通知し、上記担当判定部が判定した制御装置が自らの制御装置であり、かつ、上記指示受信部が指示を受信した場合、上記処理装置を用いて、上記周辺装置に対して、上記指示受信部が受信した指示を通知することを特徴とする制御装置。
【請求項２】
上記制御装置は、更に、負荷取得部を有し、
上記負荷取得部は、上記処理装置を用いて、上記複数の制御装置のうち少なくともいずれかの制御装置について、処理装置にどのくらいの負荷がかかっているかを表わす負荷状況を取得し、
上記担当判定部は、上記処理装置を用いて、上記負荷取得部が取得した負荷状況に基づいて、上記周辺装置を制御する制御装置を判定することを特徴とする請求項１に記載の制御装置。
【請求項３】
上記制御装置は、更に、交代判定部を有し、
上記交代判定部は、上記処理装置を用いて、上記負荷取得部が取得した負荷状況に基づいて、上記担当判定部が判定した制御装置の処理装置にかかっている負荷と所定の交代閾値負荷とを比較し、上記制御装置の処理装置に上記交代閾値負荷より大きい負荷がかかっている場合に、上記周辺装置を制御する制御装置を交代すると判定し、
上記担当判定部は、上記周辺装置を制御する制御装置を交代すると上記交代判定部が判定した場合に、上記処理装置を用いて、判定した制御装置と異なる制御装置を上記周辺装置を制御する制御装置と判定することを特徴とする請求項２に記載の制御装置。
【請求項４】
上記交代判定部は、上記担当判定部が判定した制御装置が自らの制御装置である場合に、上記処理装置を用いて、上記周辺装置を制御する制御装置を交代するか否かを判定することを特徴とする請求項３に記載の制御装置。
【請求項５】
上記制御装置は、更に、担当送信部と、担当受信部とを有し、
上記担当送信部は、上記通信装置を用いて、他の制御装置に対して、上記担当判定部が判定した制御装置を識別する識別データを送信し、
上記担当受信部は、上記通信装置を用いて、他の制御装置が送信した識別データを受信し、
上記担当判定部は、上記担当受信部が識別データを受信した場合に、上記処理装置を用いて、上記担当受信部が受信した識別データによって識別される制御装置を、上記周辺装置を制御する制御装置と判定することを特徴とする請求項１乃至請求項４のいずれかに記載の制御装置。
【請求項６】
上記制御装置は、更に、応答取得部と、応答送信部と、応答受信部と、応答出力部とを有し、
上記応答取得部は、上記処理装置を用いて、上記指示通知部が通知した指示に対する応答を上記周辺装置から取得し、
上記応答送信部は、上記指示受信部が指示を受信した場合に、上記通信装置を用いて、上記指示受信部が受信した指示を送信した他の制御装置に対して、上記応答取得部が取得した応答を送信し、
上記応答受信部は、上記担当判定部が判定した制御装置が他の制御装置である場合に、上記通信装置を用いて、上記指示送信部が送信した指示に対する応答として、上記担当判定部が判定した制御装置が送信した応答を受信し、
上記応答出力部は、上記担当判定部が判定した制御装置が自らの制御装置であり、かつ、上記指示入力部が指示を入力した場合に、上記処理装置を用いて、上記指示入力部が入力した指示に対する応答として、上記応答取得部が取得した応答を出力し、上記担当判定部が判定した制御装置が他の制御装置であり、かつ、上記応答受信部が応答を受信した場合に、上記処理装置を用いて、上記指示入力部が入力した指示に対する応答として、上記応答受信部が受信した応答を出力することを特徴とする請求項１乃至請求項５のいずれかに記載の制御装置。
【請求項７】
請求項１乃至請求項６のいずれかに記載の制御装置を複数有し、上記複数の制御装置に制御される周辺装置を有することを特徴とする制御システム。
【請求項８】
データを処理する処理装置と、他のコンピュータと通信する通信装置とを有するコンピュータが実行することにより、上記コンピュータが請求項１乃至請求項６のいずれかに記載の制御装置として機能することを特徴とするコンピュータプログラム。
【請求項９】
データを処理する処理装置と他の制御装置と通信する通信装置とを有する複数の制御装置が周辺装置を制御する制御方法において、
上記処理装置が、上記複数の制御装置のなかから、上記周辺装置を制御する制御装置を判定し、
上記処理装置が、上記周辺装置に対する指示を入力し、
判定した制御装置が他の制御装置である場合、上記通信装置が、判定した制御装置に対して、入力した指示を送信し、
判定した制御装置が自らの制御装置である場合、上記通信装置が、他の制御装置が送信した指示を受信し、
判定した制御装置が自らの制御装置であり、かつ、指示を入力または受信した場合、上記処理装置が、上記周辺装置に対して、入力または受信した指示を通知することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数の制御装置に制御される周辺装置を制御する制御装置に関する。
【背景技術】
【０００２】
複数のＣＰＵを用いて実現されたマルチＯＳシステムなど、共通の入出力デバイスなどの周辺装置を複数の制御装置が制御するシステムでは、各制御装置がバラバラに周辺装置を制御すると、指示に不整合が生じる場合がある。
【０００３】
これを防ぐため、周辺装置の制御を担当する制御装置をあらかじめ定めておく方式がある。
例えば、ホストＯＳをあらかじめ定めておき、ホストＯＳ以外のゲストＯＳは、ホストＯＳを介して、周辺装置を制御する。
あるいは、仮想マシン上でＯＳを動作させ、ＯＳは、仮想マシン上の仮想周辺装置を制御する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−２４６７７９号公報
【特許文献２】特開２００７−２２００８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
周辺装置の制御を担当する制御装置をあらかじめ定めておくと、その制御装置に大きい負荷がかかっている場合などに、周辺装置の制御に遅れが生じる。
この発明は、例えば上記のような課題を解決するためになされたものであり、周辺装置を制御する制御装置をあらかじめ定めることなく、周辺装置に対する指示に不整合が生じるのを防ぎ、特定の制御装置の負荷状況に左右されずに、周辺装置を制御することを目的とする。
【課題を解決するための手段】
【０００６】
この発明にかかる制御装置は、複数の制御装置に制御される周辺装置を制御する制御装置において、
データを処理する処理装置と、他の制御装置と通信する通信装置と、担当判定部と、指示入力部と、指示送信部と、指示受信部と、指示通知部とを有し、
上記担当判定部は、上記処理装置を用いて、上記複数の制御装置のなかから、上記周辺装置を制御する制御装置を判定し、
上記指示入力部は、上記処理装置を用いて、上記周辺装置に対する指示を入力し、
上記指示送信部は、上記担当判定部が判定した制御装置が他の制御装置である場合に、上記通信装置を用いて、上記担当判定部が判定した制御装置に対して、上記指示入力部が入力した指示を送信し、
上記指示受信部は、上記担当判定部が判定した制御装置が自らの制御装置である場合に、上記通信装置を用いて、他の制御装置が送信した指示を受信し、
上記指示通知部は、上記担当判定部が判定した制御装置が自らの制御装置であり、かつ、上記指示入力部が指示を入力した場合、上記処理装置を用いて、上記周辺装置に対して、上記指示入力部が入力した指示を通知し、上記担当判定部が判定した制御装置が自らの制御装置であり、かつ、上記指示受信部が指示を受信した場合、上記処理装置を用いて、上記周辺装置に対して、上記指示受信部が受信した指示を通知することを特徴とする。
【発明の効果】
【０００７】
この発明にかかる制御装置によれば、周辺装置の制御を担当する担当装置だけが周辺装置に指示を通知し、他の制御装置は、担当装置を介して、周辺装置に指示を通知するので、指示に不整合が生じるのを防ぐことができる。また、担当装置は、あらかじめ定めた制御装置ではなく、担当判定部が判定した制御装置なので、負荷の状況などにより、担当装置を変えることができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１におけるマルチＯＳシステム８００のハードウェア構成の一例を示すハードウェア構成図。
【図２】実施の形態１における共有メモリ８３０が記憶するデータの一例を示す図。
【図３】実施の形態１における制御装置１００においてＣＰＵ９１１が実行するプログラムの構成の一例を示す図。
【図４】実施の形態１における制御装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１における自アクセス管理処理Ｓ６１０及び他アクセス管理処理Ｓ６３０の流れの一例を示すフローチャート図。
【図６】実施の形態１における担当管理処理Ｓ６４０の流れの一例を示すフローチャート図。
【図７】実施の形態１における各制御装置１００にかかる負荷の時間推移の一例を示すグラフ図。
【図８】実施の形態３における担当管理処理Ｓ６４０の流れの一例を示すフローチャート図。
【発明を実施するための形態】
【０００９】
実施の形態１．
実施の形態１について、図１〜図７を用いて説明する。
【００１０】
図１は、この実施の形態におけるマルチＯＳシステム８００のハードウェア構成の一例を示すハードウェア構成図である。
マルチＯＳシステム８００は、複数の制御装置１００、共有バス８１０、入出力デバイス８２０、共有メモリ８３０を有する。
【００１１】
各制御装置１００は、処理装置９１１（以下「ＣＰＵ」と呼ぶ。）、固有メモリ９１２などを有する。ＣＰＵ９１１は、プログラムを実行して、データを処理する。固有メモリ９１２（記憶装置）は、例えば不揮発性メモリ（以下「ＲＯＭ」と呼ぶ。）や、揮発性メモリ（以下「ＲＡＭ」と呼ぶ。）であり、ＣＰＵ９１１が実行するプログラムや、ＣＰＵ９１１が処理するデータや、マルチＯＳシステム８００内で自らの制御装置１００を一意に識別するための識別データ（以下「ＩＤ」と呼ぶ。）などを記憶する。
共有バス８１０は、制御装置１００、入出力デバイス８２０、共有メモリ８３０の間を接続する。
【００１２】
入出力デバイス８２０（周辺装置）は、表示装置９０１、キーボード９０２、マウス９０３、スピーカー９０４などを有する。制御装置１００は、入出力デバイス８２０を制御することにより、外部にデータを出力したり、外部からデータを入力したりする。
後述するように、各制御装置１００は、入出力デバイス８２０を直接制御するのではなく、入出力デバイス８２０の制御を担当する制御装置１００（以下「担当装置」と呼ぶ。）を１つ定めて、担当装置だけが入出力デバイス８２０を直接制御する。他の制御装置１００は、担当装置を介して、入出力デバイス８２０を制御する。
【００１３】
共有メモリ８３０は、制御装置１００間の通信を実現するための記憶装置である。送信側の制御装置１００は、例えば、ＣＰＵ９１１が送信したいデータを共有メモリ８３０の所定の領域に書き込み、データを書き込んだことを示す割込信号を発生させる。受信側の制御装置１００は、例えば、割込信号により、受信すべきデータがあることを知り、ＣＰＵ９１１が共有メモリ８３０の所定の領域を読み出すことにより、データを受信する。
【００１４】
図２は、この実施の形態における共有メモリ８３０が記憶するデータの一例を示す図である。
共有メモリ８３０は、例えば、書込ＩＤ８３１、担当ＩＤ８３２、ＣＰＵ負荷８３３、指示コマンド８３４、応答メッセージ８３５を記憶する。
【００１５】
書込ＩＤ８３１（排他制御フラグ）は、共有メモリ８３０にデータを書き込んでいる制御装置１００のＩＤを表わすデータである。共有メモリ８３０にデータを書き込んでいる制御装置１００がいない場合、書込ＩＤ８３１は、制御装置１００のＩＤと区別できるデータにより、そのことを表わす。
共有メモリ８３０にデータを書き込みたい制御装置１００のＣＰＵ９１１は、まず、書込ＩＤ８３１を読み出す。書込ＩＤ８３１が共有メモリ８３０にデータ書き込んでいる制御装置１００がいないことを表わすデータである場合、ＣＰＵ９１１は、書込ＩＤ８３１に自らの制御装置１００のＩＤを書き込む。ＣＰＵ９１１は、再び書込ＩＤ８３１を読み出す。
書込ＩＤ８３１が自らの制御装置１００のＩＤでない場合、ＣＰＵ９１１は、最初に戻り、再び書込ＩＤ８３１を読み出す。
書込ＩＤ８３１が自らの制御装置１００のＩＤである場合、ＣＰＵ９１１は、共有メモリ８３０の所定の領域にデータを書き込む。
その後、ＣＰＵ９１１は、共有メモリ８３０にデータ書き込んでいる制御装置１００がいないことを表わすデータを書込ＩＤ８３１に書き込んで、他の制御装置１００が共有メモリ８３０にデータを書き込むことができるようにする。
【００１６】
担当ＩＤ８３２は、入出力デバイス８２０の制御を担当する担当装置のＩＤを表わすデータである。
ＣＰＵ負荷８３３は、各制御装置１００のＣＰＵ９１１の負荷状況を表わすデータである。負荷状況は、例えばＣＰＵ使用率など、ＣＰＵ９１１にどのくらいの負荷がかかっているかを表わす。
指示コマンド８３４は、各制御装置１００から入出力デバイス８２０に対する指示を表わすデータである。
応答メッセージ８３５は、各制御装置１００からの指示コマンド８３４に対する入出力デバイス８２０からの応答を表わすデータである。
【００１７】
なお、制御装置１００間の通信を実現する構成は、共有メモリ８３０を用いる構成に限らず、例えば通信制御装置（ＣＰＵ間通信制御ハードウェア）など他の構成であってもよい。これにより、排他制御が容易に行えるようになるとともに、ＣＰＵ間割込みも容易に実装することができる。
【００１８】
図３は、この実施の形態における制御装置１００においてＣＰＵ９１１が実行するプログラムの構成の一例を示す図である。
制御装置１００において、ＣＰＵ９１１は、オペレーティングシステム９２１（以下「ＯＳ」と呼ぶ。）、アプリケーションプログラム９２２（以下「ＡＰＰ」と呼ぶ。）、デバイスドライバ９３１、ＩＯアクセス管理プログラム９３２、ＣＰＵ間通信プログラム９４０、負荷監視プログラム９５１、ＩＯ担当管理プログラム９５２を実行する。
ＯＳ９２１は、制御装置１００ごとに異なる。これにより、マルチＯＳシステム８００において複数の異なるＯＳ９２１が動作する。なお、ＯＳ９２１と制御装置１００とは、一対一に対応する構成でなくてもよく、例えば、１つの制御装置１００において複数のＯＳ９２１が動作する構成であってもよいし、複数の制御装置１００において１つのＯＳ９２１が動作する構成であってもよい。
ＡＰＰ９２２は、ＯＳ９２１上で動作するプログラムである。
【００１９】
デバイスドライバ９３１は、ＡＰＰ９２２が入出力デバイス８２０を制御するためのドライバである。
ＩＯアクセス管理プログラム９３２は、ＡＰＰ９２２による入出力デバイス８２０の制御を管理する。自らの制御装置１００が担当装置である場合、ＩＯアクセス管理プログラム９３２は、ＡＰＰ９２２による入出力デバイス８２０への指示をデバイスドライバ９３１に通知し、デバイスドライバ９３１からの応答をＡＰＰ９２２に通知する。自らの制御装置１００が担当装置でない場合、ＩＯアクセス管理プログラム９３２は、ＡＰＰ９２２による入出力デバイス８２０への指示を担当装置に送信するためＣＰＵ間通信プログラム９４０に通知し、担当装置からの応答をＣＰＵ間通信プログラム９４０から取得して、ＡＰＰ９２２に通知する。また、自らの制御装置１００が担当装置であり、他の制御装置１００からの指示をＣＰＵ間通信プログラム９４０が受信した場合、ＩＯアクセス管理プログラム９３２は、他の制御装置１００からの指示をＣＰＵ間通信プログラム９４０から取得してデバイスドライバ９３１に通知し、デバイスドライバ９３１からの応答をＣＰＵ間通信プログラム９４０に通知する。
ＡＰＰ９２２から見て、ＩＯアクセス管理プログラム９３２は、デバイスドライバ９３１と同様のインターフェイスを有する。したがって、ＡＰＰ９２２から見ると、デバイスドライバ９３１とＩＯアクセス管理プログラム９３２とが一つの仮想デバイスドライバ９３０であると考えられる。すなわち、ＡＰＰ９２２側の処理を変更する必要はなく、既存のＡＰＰ９２２をそのまま利用できる。
【００２０】
ＣＰＵ間通信プログラム９４０は、制御装置１００間の通信をする。
負荷監視プログラム９５１は、制御装置１００のＣＰＵ９１１の負荷状況を監視し、定期的に負荷状況を出力する。
ＩＯ担当管理プログラム９５２は、どの制御装置１００が担当装置であるかを判定する。
【００２１】
図４は、この実施の形態における制御装置１００の機能ブロックの構成の一例を示すブロック構成図である。
制御装置１００の機能ブロックは、ＣＰＵ９１１がプログラムを実行することにより実現される。
ＣＰＵ９１１がＩＯ担当管理プログラム９５２を実行することにより実現される機能ブロック（以下「ＩＯ担当管理部」と呼ぶ。）は、負荷取得部１１０、負荷記憶部１１３、負荷送信部１１４、交代判定部１２１、担当受信部１２２、担当判定部１２３、担当送信部１２４を有する。
ＣＰＵ９１１がＩＯアクセス管理プログラム９３２を実行することにより実現される機能ブロック（以下「ＩＯアクセス管理部」と呼ぶ。）は、指示入力部１５１、指示送信部１５２、指示受信部１５３、指示通知部１５４、応答取得部１６１、応答送信部１６２、応答受信部１６３、応答出力部１６４を有する。
【００２２】
負荷取得部１１０は、ＣＰＵ９１１を用いて、各制御装置１００の負荷状況を取得する。負荷取得部１１０は、負荷入力部１１１、負荷受信部１１２を有する。
負荷入力部１１１は、ＣＰＵ９１１を用いて、負荷監視プログラム９５１が出力した自らの制御装置１００の負荷状況を取得する。負荷入力部１１１は、ＣＰＵ９１１を用いて、取得した負荷状況を出力する。
負荷受信部１１２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０が受信した他の制御装置１００の負荷状況を、ＣＰＵ間通信プログラム９４０から取得する。ＣＰＵ間通信プログラム９４０は、例えば共有メモリ８３０のＣＰＵ負荷８３３を読み出すことにより、他の制御装置１００の負荷状況を受信する。負荷受信部１１２は、ＣＰＵ９１１を用いて、取得した負荷状況を出力する。
【００２３】
負荷記憶部１１３は、ＣＰＵ９１１を用いて、負荷取得部１１０が出力した負荷状況を入力し、固有メモリ９１２を用いて、入力した負荷状況を記憶する。
負荷送信部１１４は、ＣＰＵ９１１を用いて、負荷記憶部１１３が記憶した負荷状況のうち、自らの制御装置１００の負荷状況を、ＣＰＵ間通信プログラム９４０に通知する。ＣＰＵ間通信プログラム９４０は、例えば共有メモリ８３０のＣＰＵ負荷８３３のうち自らの制御装置１００のための領域に、負荷送信部１１４から通知された負荷状況を書き込むことにより、自らの制御装置１００の負荷状況を送信する。
【００２４】
交代判定部１２１は、ＣＰＵ９１１を用いて、負荷記憶部１１３が記憶した負荷状況などを入力する。交代判定部１２１は、ＣＰＵ９１１を用いて、入力した負荷状況などに基づいて、担当装置を交代するか否かを判定する。交代判定部１２１は、判定した判定結果を出力する。
【００２５】
担当受信部１２２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０が受信した担当装置のＩＤを、ＣＰＵ間通信プログラム９４０から取得する。ＣＰＵ間通信プログラム９４０は、例えば共有メモリ８３０の担当ＩＤ８３２を読み出すことにより、担当装置のＩＤを受信する。担当受信部１２２は、ＣＰＵ９１１を用いて、取得した担当装置のＩＤを出力する。
【００２６】
担当判定部１２３は、ＣＰＵ９１１を用いて、交代判定部１２１が出力した判定結果を入力する。
担当装置を交代しないと交代判定部１２１が判定した場合、担当判定部１２３は、ＣＰＵ９１１を用いて、担当受信部１２２が出力した担当装置のＩＤを入力し、入力したＩＤによって識別される制御装置１００を担当装置と判定する。
担当装置を交代すると交代判定部１２１が判定した場合、担当判定部１２３は、ＣＰＵ９１１を用いて、負荷記憶部１１３が記憶した負荷状況などを入力し、入力した負荷状況などに基づいて、担当装置を判定する。担当判定部１２３は、原則として、負荷が小さい制御装置１００を担当装置と判定する。
担当判定部１２３は、固有メモリ９１２を用いて、判定した担当装置のＩＤを記憶する。
【００２７】
担当送信部１２４は、ＣＰＵ９１１を用いて、担当判定部１２３が記憶した担当装置のＩＤを入力してＣＰＵ間通信プログラム９４０に通知し、ＣＰＵ間通信プログラム９４０に送信させる。ＣＰＵ間通信プログラム９４０は、例えば共有メモリ８３０の担当ＩＤ８３２に、担当判定部１２３から通知された担当装置のＩＤを書き込むことにより、担当装置のＩＤを送信する。
【００２８】
指示入力部１５１は、ＣＰＵ９１１を用いて、ＡＰＰ９２２による入出力デバイス８２０への指示を取得する。指示入力部１５１は、ＣＰＵ９１１を用いて、取得した入出力デバイス８２０への指示を出力する。
指示送信部１５２は、担当判定部１２３が判定した担当装置が他の制御装置１００である場合、ＣＰＵ９１１を用いて、指示入力部１５１が出力した入出力デバイス８２０への指示を入力してＣＰＵ間通信プログラム９４０に通知し、ＣＰＵ間通信プログラム９４０に送信させる。ＣＰＵ間通信プログラム９４０は、例えば、共有メモリ８３０の指示コマンド８３４のうち自らの制御装置１００のための領域に、指示送信部１５２から通知された入出力デバイス８２０への指示を書き込むことにより、入出力デバイス８２０への指示を送信する。ＣＰＵ間通信プログラム９４０は、例えば担当装置への割込みを発生させることにより、入出力デバイス８２０への指示を送信したことを担当装置に通知する。
【００２９】
指示受信部１５３は、担当判定部１２３が判定した担当装置が自らの制御装置１００である場合、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０が受信した入出力デバイス８２０への指示と、その指示を送信した制御装置１００のＩＤとを取得する。ＣＰＵ間通信プログラム９４０は、例えば割込みなどにより他の制御装置１００が入出力デバイス８２０への指示を送信したことを認識し、共有メモリ８３０の指示コマンド８３４のうちその制御装置１００のための領域から入出力デバイス８２０への指示を読み出すことにより、入出力デバイス８２０への指示を受信する。指示受信部１５３は、ＣＰＵ９１１を用いて、取得した入出力デバイス８２０への指示と、その指示を送信した制御装置１００のＩＤとを出力する。
【００３０】
指示通知部１５４は、担当判定部１２３が判定した担当装置が自らの制御装置１００であり、かつ、指示入力部１５１が入出力デバイス８２０への指示を取得した場合、ＣＰＵ９１１を用いて、指示入力部１５１が出力した入出力デバイス８２０への指示を入力する。また、指示通知部１５４は、担当判定部１２３が判定した担当装置が自らの制御装置１００であり、かつ、指示受信部１５３が入出力デバイス８２０への指示を取得した場合、ＣＰＵ９１１を用いて、指示受信部１５３が取得した入出力デバイス８２０への指示を入力する。
指示通知部１５４は、ＣＰＵ９１１を用いて、入力した入出力デバイス８２０への指示をデバイスドライバ９３１に対して通知することにより、入出力デバイス８２０を制御する。
【００３１】
応答取得部１６１は、ＣＰＵ９１１を用いて、指示通知部１５４が通知した指示に対する入出力デバイス８２０からの応答を、デバイスドライバ９３１から取得する。応答取得部１６１は、ＣＰＵ９１１を用いて、取得した入出力デバイス８２０からの応答を出力する。
【００３２】
応答送信部１６２は、入出力デバイス８２０への指示を送信した制御装置１００のＩＤを指示受信部１５３が出力した場合に、ＣＰＵ９１１を用いて、指示受信部１５３が出力した制御装置１００のＩＤと、その指示に対する応答として、応答取得部１６１が出力した入出力デバイス８２０からの応答とを入力する。応答送信部１６２は、ＣＰＵ９１１を用いて、入力した制御装置１００のＩＤと入出力デバイス８２０からの応答とをＣＰＵ間通信プログラム９４０に通知して、ＣＰＵ間通信プログラム９４０に、入出力デバイス８２０からの応答を、そのＩＤによって識別される制御装置１００に対して送信させる。ＣＰＵ間通信プログラム９４０は、例えば共有メモリ８３０の応答メッセージ８３５のうち、応答送信部１６２から通知されたＩＤによって識別される制御装置１００のための領域に、応答送信部１６２から通知された入出力デバイス８２０からの応答を書き込むことにより、入出力デバイス８２０からの応答を送信する。ＣＰＵ間通信プログラム９４０は、例えばその制御装置１００への割込みを発生させることにより、入出力デバイス８２０からの応答を送信したことをその制御装置１００に通知する。
【００３３】
応答受信部１６３は、ＣＰＵ９１１を用いて、指示送信部１５２が送信した入出力デバイス８２０への指示に対する応答として、ＣＰＵ間通信プログラム９４０が受信した入出力デバイス８２０からの応答を取得する。ＣＰＵ間通信プログラム９４０は、例えば割込みなどにより担当装置が入出力デバイス８２０からの応答を送信したことを認識し、共有メモリ８３０の応答メッセージ８３５のうち自らの制御装置１００のための領域を読み出すことにより、入出力デバイス８２０からの応答を受信する。応答受信部１６３は、ＣＰＵ９１１を用いて、取得した入出力デバイス８２０からの応答を出力する。
【００３４】
応答出力部１６４は、担当判定部１２３が判定した担当装置が自らの制御装置１００である場合、ＣＰＵ９１１を用いて、応答取得部１６１が出力した入出力デバイス８２０からの応答を入力する。また、応答出力部１６４は、担当判定部１２３が判定した担当装置が他の制御装置１００である場合、ＣＰＵ９１１を用いて、応答受信部１６３が出力した入出力デバイス８２０からの応答を入力する。
応答出力部１６４は、ＣＰＵ９１１を用いて、入力した入出力デバイス８２０からの応答をＡＰＰ９２２に対して通知する。
【００３５】
図５は、この実施の形態における自アクセス管理処理Ｓ６１０及び他アクセス管理処理Ｓ６３０の流れの一例を示すフローチャート図である。
自アクセス管理処理Ｓ６１０において、ＩＯアクセス管理部は、自らの制御装置１００が実行しているＡＰＰ９２２による入出力デバイス８２０の制御を管理する。自アクセス管理処理Ｓ６１０は、指示入力工程Ｓ６１１、担当判定工程Ｓ６１２、指示通知工程Ｓ６１３、応答取得工程Ｓ６１４、指示送信工程Ｓ６２３、応答受信工程Ｓ６２４、応答出力工程Ｓ６２５を有する。
【００３６】
指示入力工程Ｓ６１１において、指示入力部１５１は、ＣＰＵ９１１を用いて、ＡＰＰ９２２から入出力デバイス８２０に対する指示を入力する。
担当判定工程Ｓ６１２において、担当判定部１２３は、ＣＰＵ９１１を用いて、あらかじめ判定して記憶しておいた担当装置のＩＤが、自らの制御装置１００のＩＤと一致するか否かを判定する。
担当装置のＩＤが自らの制御装置１００のＩＤと一致する場合、すなわち、担当装置が自らの制御装置１００である場合、指示通知工程Ｓ６１３へ進む。
担当装置のＩＤが自らの制御装置１００のＩＤと一致しない場合、すなわち、担当装置が他の制御装置１００である場合、指示送信工程Ｓ６２３へ進む。
【００３７】
指示通知工程Ｓ６１３において、指示通知部１５４は、ＣＰＵ９１１を用いて、指示入力部１５１が入力した入出力デバイス８２０に対する指示を、デバイスドライバ９３１を介して、入出力デバイス８２０に通知する。
応答取得工程Ｓ６１４において、応答取得部１６１は、ＣＰＵ９１１を用いて、指示通知工程Ｓ６１３で通知した入出力デバイス８２０に対する指示に対する応答を、デバイスドライバ９３１を介して、入出力デバイス８２０から取得する。その後、応答出力工程Ｓ６２５へ進む。
【００３８】
指示送信工程Ｓ６２３において、指示送信部１５２は、ＣＰＵ９１１を用いて、指示入力工程Ｓ６１１で指示入力部１５１が入力した入出力デバイス８２０に対する指示を、ＣＰＵ間通信プログラム９４０を介して、担当装置に対して送信する。
応答受信工程Ｓ６２４において、応答受信部１６３は、ＣＰＵ９１１を用いて、指示送信工程Ｓ６２３で送信した入出力デバイス８２０に対する指示に対する応答を、ＣＰＵ間通信プログラム９４０を介して、担当装置から受信する。
【００３９】
応答出力工程Ｓ６２５において、指示通知部１５４は、ＣＰＵ９１１を用いて、応答取得工程Ｓ６１４で応答取得部１６１が取得し、または、応答受信工程Ｓ６２４で応答受信部１６３が受信した入出力デバイス８２０からの応答を、ＡＰＰ９２２に対して出力する。その後、自アクセス管理処理Ｓ６１０を終了する。
【００４０】
他アクセス管理処理Ｓ６３０において、ＩＯアクセス管理部は、他の制御装置１００が実行しているＡＰＰ９２２による入出力デバイス８２０の制御を管理する。自らの制御装置が担当装置である場合、ＩＯアクセス管理部は、他アクセス管理処理Ｓ６３０を実行する。他アクセス管理処理Ｓ６３０は、指示受信工程Ｓ６３１、指示通知工程Ｓ６３３、応答取得工程Ｓ６３４、応答送信工程Ｓ６３５を有する。
【００４１】
指示受信工程Ｓ６３１において、指示受信部１５３は、ＣＰＵ９１１を用いて、他の制御装置１００が送信した入出力デバイス８２０に対する指示を、ＣＰＵ間通信プログラム９４０を介して、他の制御装置１００から受信する。
指示通知工程Ｓ６３３において、指示通知部１５４は、ＣＰＵ９１１を用いて、指示受信工程Ｓ６３１で指示受信部１５３が受信した入出力デバイス８２０に対する指示を、デバイスドライバ９３１を介して、入出力デバイス８２０に対して通知する。
応答取得工程Ｓ６３４において、応答取得部１６１は、ＣＰＵ９１１を用いて、指示通知工程Ｓ６３３で通知した入出力デバイス８２０に対する指示に対する応答を、デバイスドライバ９３１を介して、入出力デバイス８２０から取得する。
応答送信工程Ｓ６３５において、応答送信部１６２は、ＣＰＵ９１１を用いて、応答取得工程Ｓ６３４で取得した入出力デバイス８２０からの応答を、ＣＰＵ間通信プログラム９４０を介して、指示受信工程Ｓ６３１で受信した入出力デバイス８２０に対する指示を送信した他の制御装置１００に対して送信する。その後、他アクセス管理処理Ｓ６３０を終了する。
【００４２】
図６は、この実施の形態における担当管理処理Ｓ６４０の流れの一例を示すフローチャート図である。
担当管理処理Ｓ６４０において、ＩＯ担当管理部は、担当装置がどの制御装置１００であるかを管理する。担当管理処理Ｓ６４０は、定期的に繰り返し実行される。担当管理処理Ｓ６４０は、担当受信工程Ｓ６４１、担当負荷取得工程Ｓ６４２、担当負荷判定工程Ｓ６４３、他負荷取得工程Ｓ６４４、後継判定工程Ｓ６４５、担当送信工程Ｓ６５０、担当継続工程Ｓ６５１を有する。
【００４３】
担当受信工程Ｓ６４１において、担当受信部１２２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、現在の担当装置のＩＤを受信する。
交代判定部１２１は、ＣＰＵ９１１を用いて、担当受信部１２２が受信した現在の担当装置のＩＤと、自らの制御装置１００のＩＤとが一致するか否かを判定する。
現在の担当装置のＩＤが自らの制御装置１００のＩＤと一致する場合、すなわち、現在の担当装置が自らの制御装置１００である場合、担当負荷取得工程Ｓ６４２へ進む。
現在の担当装置のＩＤが自らの制御装置１００のＩＤと一致しない場合、すなわち、現在の担当装置が他の制御装置１００である場合、担当継続工程Ｓ６５１へ進む。
【００４４】
担当負荷取得工程Ｓ６４２において、負荷入力部１１１は、ＣＰＵ９１１を用いて、現在の担当装置である自らの制御装置１００の負荷状況を、負荷監視プログラム９５１から入力する。
担当負荷判定工程Ｓ６４３において、交代判定部１２１は、ＣＰＵ９１１を用いて、担当負荷取得工程Ｓ６４２で負荷入力部１１１が入力した負荷状況に基づいて、現在の担当装置である自らの制御装置１００に、所定の交代閾値負荷より大きい負荷がかかっているか否かを判定する。制御装置１００に大きな負荷がかかっている場合、入出力デバイス８２０の制御に遅延が生じる可能性がある。交代閾値負荷は、入出力デバイス８２０の制御に生じる遅延が、許容できる範囲を超える可能性に基づいて、あらかじめ設定し、固有メモリ９１２または共有メモリ８３０を用いて記憶しておく。
現在の担当装置である自らの制御装置１００に、交代閾値負荷より大きい負荷がかかっていると判定した場合、許容範囲を超える遅延が入出力デバイス８２０の制御に生じる可能性があるので、交代判定部１２１は、ＣＰＵ９１１を用いて、担当装置を交代すると判定し、他負荷取得工程Ｓ６４４へ進む。
現在の担当装置である自らの制御装置１００に、交代閾値負荷より小さい負荷しかかかっていないと判定した場合、担当継続工程Ｓ６５１へ進む。
【００４５】
他負荷取得工程Ｓ６４４において、負荷受信部１１２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、他の制御装置１００の負荷状況を受信する。
後継判定工程Ｓ６４５において、担当判定部１２３は、ＣＰＵ９１１を用いて、他負荷取得工程Ｓ６４４で負荷受信部１１２が受信した負荷状況に基づいて、他の制御装置１００のなかから、新たな担当装置を決定する。例えば、担当判定部１２３は、ＣＰＵ９１１を用いて、かかっている負荷が最も小さい制御装置１００を判定し、判定した制御装置１００を新たな担当装置に決定する。
担当送信工程Ｓ６５０において、担当送信部１２４は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、後継判定工程Ｓ６４５で担当判定部１２３が決定した新たな担当装置のＩＤを送信する。担当判定部１２３は、固有メモリ９１２を用いて、新たな担当装置のＩＤを記憶する。その後、担当管理処理Ｓ６４０を終了する。
【００４６】
担当継続工程Ｓ６５１において、交代判定部１２１は、ＣＰＵ９１１を用いて、担当装置を交代しないと判定する。担当判定部１２３は、固有メモリ９１２を用いて、担当受信工程Ｓ６４１で担当受信部１２２が受信した現在の担当装置のＩＤを記憶する。その後、担当管理処理Ｓ６４０を終了する。
【００４７】
なお、共有メモリ８３０を用いて、制御装置１００間の通信を実現する構成の場合、各制御装置１００の負荷送信部１１４が、定期的に、最新の負荷状況をあらかじめ送信して、共有メモリ８３０が記憶したＣＰＵ負荷８３３を更新しておき、他負荷取得工程Ｓ６４４において、負荷受信部１１２が、共有メモリ８３０が記憶したＣＰＵ負荷８３３を読み出すことにより、最新の負荷状況を受信する構成としてもよい。これにより、他負荷取得工程Ｓ６４４にかかる時間を短縮することができるので、速やかに担当装置を交代することができる。
【００４８】
あるいは、他負荷取得工程Ｓ６４４において、担当装置から他の制御装置１００に対して、負荷状況の送信を要求するメッセージを送信し、そのメッセージに対する応答として、他の制御装置１００の負荷送信部１１４が負荷状況を送信する構成としてもよい。定期的に最新の負荷状況をあらかじめ送信しておく構成の場合、制御装置１００に大きな負荷がかかっていると、更新が遅れ、最新の負荷状況でなくなっている可能性がある。これに対し、負荷状況の送信を要求するメッセージに対する応答として負荷状況を送信する構成であれば、大きな負荷がかかっている制御装置１００は応答が遅れ、あるいは応答しないので、所定の時間内に応答があった制御装置１００のなかから新たな担当装置を決定すればよい。
【００４９】
図７は、この実施の形態における各制御装置１００にかかる負荷の時間推移の一例を示すグラフ図である。
この例では、３つの制御装置１００があるものとする。横軸は時刻、縦軸は負荷を表わす。線７１１〜７１３は、それぞれ、制御装置Ａ、制御装置Ｂ、制御装置Ｃにかかっている負荷を表わす。ＬTは、交代閾値負荷を表わす。
【００５０】
最初に、制御装置Ａが担当装置であったものとする。
制御装置ＡのＩＯ担当管理部が、定期的に負荷を監視した結果、時刻ｔ１において、制御装置Ａの負荷が交代閾値負荷を超えたので、担当装置を交代することにする。
制御装置ＡのＩＯ担当管理部が、時刻ｔ１における制御装置Ｂの負荷と制御装置Ｃの負荷とを比較した結果、制御装置Ｂの負荷のほうが小さいので、制御装置Ｂを新たな担当装置と判定する。
その後、制御装置ＢのＩＯ担当管理部が、定期的に負荷を監視した結果、時刻ｔ２において、制御装置Ｂの負荷が交代閾値負荷を超えたので、担当装置を交代することにする。
制御装置ＢのＩＯ担当管理部が、時刻ｔ１における制御装置Ａの負荷と制御装置Ｃの負荷とを比較した結果、制御装置Ｃの負荷のほうが小さいので、制御装置Ｃを新たな担当装置と判定する。
【００５１】
このように、担当装置自身が、担当装置を交代するか否かを決定し、次の新たな担当装置を決定する。他の制御装置１００は、現在の担当装置の判断にしたがう。これにより、各制御装置１００による担当装置の判定に矛盾が生じるのを防ぐことができる。
【００５２】
この実施の形態における制御装置１００は、複数の制御装置に制御される周辺装置（入出力デバイス８２０）を制御する。
制御装置１００は、データを処理する処理装置（ＣＰＵ９１１）と、他の制御装置１００と通信する通信装置（ＣＰＵ９１１）と、担当判定部１２３と、指示入力部１５１と、指示送信部１５２と、指示受信部１５３と、指示通知部１５４とを有する。
上記担当判定部１２３は、上記処理装置を用いて、上記複数の制御装置１００のなかから、上記周辺装置を制御する制御装置１００（担当装置）を判定する。
上記指示入力部１５１は、上記処理装置を用いて、上記周辺装置に対する指示を入力する。
上記指示送信部１５２は、上記担当判定部１２３が判定した制御装置１００が他の制御装置１００である場合に、上記通信装置を用いて、上記担当判定部１２３が判定した制御装置１００に対して、上記指示入力部１５１が入力した指示を送信する。
上記指示受信部１５３は、上記担当判定部１２３が判定した制御装置１００が自らの制御装置１００である場合に、上記通信装置を用いて、他の制御装置１００が送信した指示を受信する。
上記指示通知部１５４は、上記担当判定部１２３が判定した制御装置１００が自らの制御装置１００であり、かつ、上記指示入力部１５１が指示を入力した場合、上記処理装置を用いて、上記周辺装置に対して、上記指示入力部１５１が入力した指示を通知し、上記担当判定部１２３が判定した制御装置１００が自らの制御装置１００であり、かつ、上記指示受信部１５３が指示を受信した場合、上記処理装置を用いて、上記周辺装置に対して、上記指示受信部１５３が受信した指示を通知する。
【００５３】
この実施の形態における制御装置１００によれば、担当装置だけが周辺装置に指示を通知し、他の制御装置１００は、担当装置を介して、周辺装置に指示を通知するので、指示に不整合が生じるのを防ぐことができる。また、担当装置は、あらかじめ定めた制御装置１００ではなく、担当判定部１２３が判定した制御装置１００なので、負荷の状況などにより、担当装置を変えることができる。
【００５４】
この実施の形態における制御装置１００は、更に、負荷取得部１１０を有する。
上記負荷取得部１１０は、上記処理装置を用いて、上記複数の制御装置１００のうち少なくともいずれかの制御装置１００について、処理装置にどのくらいの負荷がかかっているかを表わす負荷状況を取得する。
上記担当判定部１２３は、上記処理装置を用いて、上記負荷取得部１１０が取得した負荷状況に基づいて、上記周辺装置を制御する制御装置１００（担当装置）を判定する。
【００５５】
この実施の形態における制御装置１００によれば、担当判定部１２３が負荷状況に基づいて担当装置を判定するので、負荷の軽い制御装置１００を担当装置とすることができ、周辺装置に対する制御に遅延が生じるのを防ぐことができる。
【００５６】
この実施の形態における制御装置１００は、更に、交代判定部１２１を有する。
上記交代判定部１２１は、上記処理装置を用いて、上記負荷取得部１１０が取得した負荷状況に基づいて、上記担当判定部１２３が判定した制御装置１００の処理装置にかかっている負荷と所定の交代閾値負荷とを比較し、上記制御装置１００の処理装置に上記交代閾値負荷より大きい負荷がかかっている場合に、上記周辺装置を制御する制御装置１００を交代すると判定する。
上記担当判定部１２３は、上記周辺装置を制御する制御装置１００を交代すると上記交代判定部１２１が判定した場合に、上記処理装置を用いて、判定した制御装置１００と異なる制御装置１００を上記周辺装置を制御する制御装置１００と判定する。
【００５７】
この実施の形態における制御装置１００によれば、担当装置にかかる負荷が交代閾値負荷より大きい場合に、担当装置を交代するので、周辺装置に対する指示に遅延が生じるのを防ぐことができる。また、担当装置にかかる負荷が交代閾値負荷より小さければ担当装置を交代しないので、担当装置の交代によるオーバーヘッドの発生を極力抑えることができる。
【００５８】
この実施の形態における制御装置１００において、上記交代判定部１２１は、上記担当判定部１２３が判定した制御装置１００が自らの制御装置１００である場合に、上記処理装置を用いて、上記周辺装置を制御する制御装置１００を交代するか否かを判定する。
【００５９】
この実施の形態における制御装置１００によれば、担当装置自身が担当装置を交代するか否かを判定するので、他の制御装置１００による判断との間に不整合が生じるのを防ぐことができる。
【００６０】
この実施の形態における制御装置１００は、更に、担当送信部１２４と、担当受信部１２２とを有する。
上記担当送信部１２４は、上記通信装置を用いて、他の制御装置１００に対して、上記担当判定部１２３が判定した制御装置１００を識別する識別データ（ＩＤ）を送信する。
上記担当受信部１２２は、上記通信装置を用いて、他の制御装置１００が送信した識別データを受信する。
上記担当判定部１２３は、上記担当受信部１２２が識別データを受信した場合に、上記処理装置を用いて、上記担当受信部１２２が受信した識別データによって識別される制御装置１００を、上記周辺装置を制御する制御装置と判定する。
【００６１】
この実施の形態における制御装置１００によれば、担当装置を判定した制御装置１００が判定結果を送信し、他の制御装置１００は、その判定結果にしたがって担当装置を判定をするので、各制御装置１００の間で、担当装置の判定に不整合が生じるのを防ぐことができる。
【００６２】
この実施の形態における制御装置１００は、更に、応答取得部１６１と、応答送信部１６２と、応答受信部１６３と、応答出力部１６４とを有する。
上記応答取得部１６１は、上記処理装置を用いて、上記指示通知部１５４が通知した指示に対する応答を上記周辺装置から取得する。
上記応答送信部１６２は、上記指示受信部１５３が指示を受信した場合に、上記通信装置を用いて、上記指示受信部１５３が受信した指示を送信した他の制御装置１００に対して、上記応答取得部１６１が取得した応答を送信する。
上記応答受信部１６３は、上記担当判定部１２３が判定した制御装置１００が他の制御装置１００である場合に、上記通信装置を用いて、上記指示送信部１５２が送信した指示に対する応答として、上記担当判定部１２３が判定した制御装置１００が送信した応答を受信する。
上記応答出力部１６４は、上記指示入力部１５１が指示を入力し、上記応答取得部１６１が応答を取得した場合に、上記処理装置を用いて、上記指示入力部１５１が入力した指示に対する応答として、上記応答取得部１６１が取得した応答を出力し、上記応答受信部１６３が応答を受信した場合に、上記処理装置を用いて、上記指示入力部１５１が入力した指示に対する応答として、上記応答受信部１６３が受信した応答を出力する。
【００６３】
この実施の形態における制御装置１００によれば、周辺装置に対する指示を伝達したのと逆の経路を辿って、周辺装置からの応答を伝達するので、周辺装置に対する指示を入力した制御装置１００が、その指示に対する応答を出力することができる。
【００６４】
この実施の形態における制御システム（マルチＯＳシステム８００）は、上記制御装置１００を複数有し、上記複数の制御装置１００に制御される周辺装置（入出力デバイス８２０）を有する。
【００６５】
この実施の形態における制御システムによれば、担当装置だけが周辺装置に指示を通知し、他の制御装置１００は、担当装置を介して、周辺装置に指示を通知するので、指示に不整合が生じるのを防ぐことができる。また、担当装置は、あらかじめ定めた制御装置１００ではなく、担当判定部１２３が判定した制御装置１００なので、負荷の状況などにより、担当装置を変えることができる。
【００６６】
この実施の形態における制御装置１００は、データを処理する処理装置（ＣＰＵ９１１）と、他のコンピュータと通信する通信装置（ＣＰＵ９１１）とを有するコンピュータが、上記制御装置１００として機能するコンピュータプログラムを実行することにより、実現することができる。
【００６７】
この実施の形態におけるコンピュータプログラムによれば、担当装置だけが周辺装置に指示を通知し、他の制御装置１００は、担当装置を介して、周辺装置に指示を通知するので、指示に不整合が生じるのを防ぐことができるとともに、担当装置は、あらかじめ定めた制御装置１００ではなく、担当判定部１２３が判定した制御装置１００なので、負荷の状況などにより、担当装置を変えることができる制御装置１００を実現することができる。
【００６８】
この実施の形態における複数の制御装置１００が周辺装置（入出力デバイス８２０）を制御する制御方法は、以下の工程を有する。
上記処理装置が、上記複数の制御装置１００のなかから、上記周辺装置を制御する制御装置１００を判定する。
上記処理装置が、上記周辺装置に対する指示を入力する。
判定した制御装置１００が他の制御装置１００である場合、上記通信装置が、判定した制御装置１００に対して、入力した指示を送信する。
判定した制御装置１００が自らの制御装置１００である場合、上記通信装置が、他の制御装置１００が送信した指示を受信する。
判定した制御装置１００が自らの制御装置１００であり、かつ、指示を入力または受信した場合、上記処理装置が、上記周辺装置に対して、入力または受信した指示を通知する。
【００６９】
この実施の形態における制御方法によれば、担当装置だけが周辺装置に指示を通知し、他の制御装置１００は、担当装置を介して、周辺装置に指示を通知するので、指示に不整合が生じるのを防ぐことができる。また、担当装置は、あらかじめ定めた制御装置１００ではなく、処理装置が判定した制御装置１００なので、負荷の状況などにより、担当装置を変えることができる。
【００７０】
以上説明したマルチＯＳシステム８００は、複数個のＣＰＵ９１１（＃０〜＃ｎ）と、上記各ＣＰＵへ個別に接続されるローカルメモリ（固有メモリ９１２）と、上記ＣＰＵ＃０〜＃ｎが共通に接続されるシステムバス（共有バス８１０）と、ＣＰＵ＃０〜＃ｎが共通に使用するＩＯデバイス（入出力デバイス８２０）と、ＣＰＵ＃０〜＃ｎが共通に使用する共有メモリ８３０とを有する。
【００７１】
マルチＯＳシステム８００は、複数のＣＰＵ＃０〜＃ｎ、共有メモリ８３０及びＩＯデバイスが共通のシステムバスを介して接続され、各ＣＰＵ＃０〜＃ｎが共有メモリ８３０及びＩＯデバイスを共通に利用できる計算機システムにより構成される。また、各ＣＰＵ＃０〜＃ｎは、個別に接続されたローカルメモリを持つ。
【００７２】
上記計算機システムにおける１つのＣＰＵ９１１は、ＣＰＵ９１１で動作するＯＳ９２１（オペレーティングシステム）、共有ＩＯデバイスの制御を行うデバイスドライバ９３１、デバイスドライバ９３１の制御を行うＩＯアクセスマネージャ（ＩＯアクセス管理プログラム９３２）、共有ＩＯデバイスを使用して処理を行うＡＰＰ９２２（アプリケーションプログラム）、ＣＰＵ９１１の処理負荷状況を監視するシステム負荷監視部（負荷監視プログラム９５１）、ＣＰＵ間の情報伝達を行うＣＰＵ間通信部（ＣＰＵ間通信プログラム９４０）などのプログラムを実行する。システム上の各ＣＰＵは、同じソフトウェア構成を持つ。なお、各ＣＰＵのソフトウェア構成は、異なっていてもよい。
【００７３】
ＩＯデバイスに対するアクセスを担当するＣＰＵ９１１（担当装置）は、複数のＣＰＵ９１１のいずれか１つである。ＩＯアクセスを担当するＣＰＵ９１１は、他のＣＰＵ９１１からのＩＯデバイスへのアクセス要求を受け付け、代理実行する。
【００７４】
いずれかのＣＰＵ９１１で動作するＡＰＰ９２２がＩＯデバイスにアクセスする場合、ＩＯアクセスマネージャに対してアクセス要求を行う。
そのＣＰＵ９１１がＩＯデバイスに対してアクセスを担当するＣＰＵ９１１である場合、ＡＰＰ９２２から要求を受けたＩＯアクセスマネージャは、デバイスドライバ９３１を介してＩＯデバイスを操作する。
そのＣＰＵ９１１がアクセス担当外のＣＰＵ９１１である場合、ＩＯアクセスマネージャは、ＣＰＵ間通信部を介して、アクセス担当のＣＰＵ９１１のＩＯアクセスマネージャに要求を転送し、アクセス担当のＣＰＵ９１１のデバイスドライバ９３１を介してＩＯデバイスにアクセスする。
【００７５】
デバイスドライバ９３１は、ＩＯアクセスマネージャからの要求を受けＩＯデバイスへアクセスを行う。例えば、ＩＯアクセスが読み出し（ＲＥＡＤ）操作である場合、デバイスドライバ９３１は、ＩＯデバイスからデータを読み出し、読み出したデータ（ＲＥＡＤデータ）あるいは読み出し失敗の状態を返す。また、ＩＯアクセスが書き込み（ＷＲＩＴＥ）操作である場合、デバイスドライバ９３１は、ＩＯデバイスにデータを書き込み、処理の成功あるいは失敗を返す。
【００７６】
ＡＰＰ９２２からＩＯアクセスを行う場合、ＡＰＰ９２２は、ＩＯアクセスマネージャに対してアクセス要求を行う。この際、一般的なデバイスドライバへのアクセス手順（Ｏｐｅｎ／Ｃｌｏｓｅ／Ｒｅａｄ／Ｗｒｉｔｅ／ＩＯＣｏｎｔｒｏｌなど）でアクセスを行い、ＩＯアクセスマネージャが応答する。
【００７７】
共有メモリ８３０には、共有メモリ領域へのアクセス制限を行うための排他制御フラグ（書込ＩＤ８３１）、ＩＯアクセスを担当するＣＰＵ識別番号（ＩＤ）を保存するＩＯ担当ＣＰＵＩＤ（担当ＩＤ８３２）、各ＣＰＵ９１１から他のＣＰＵに対してＩＯアクセスを要求する際のＩＯ要求を保持するＩＯ要求レジスタ（指示コマンド８３４）、上記要求レジスタに対する応答を保存するＩＯ応答レジスタ（応答メッセージ８３５）、各ＣＰＵに対して他のＣＰＵから割り込みを発行する際に割り込み内容を伝達する割込みコマンドレジスタなどのデータが配置されている。なお、各ＣＰＵ９１１は固有の識別番号（ＩＤ）を持ち、ソフトウェアは、自身がどのＣＰＵ９１１で動作しているのかを判断することができる。
【００７８】
ＩＯアクセスマネージャは、自ＣＰＵ９１１のＩＤを読み出し自身のＣＰＵＩＤを保持しておく。
ＩＯアクセスマネージャは、他のＣＰＵ９１１からＩＯアクセス担当の切り替え要請があるか否かを確認する。要請がある場合、ＩＯアクセスマネージャは、自ＣＰＵＩＤをＩＯ担当ＣＰＵＩＤへ書き込む。
要請がない場合、ＩＯアクセスマネージャは、ＩＯアクセス要求があるか否かを確認する。ＩＯアクセス要求は、自ＣＰＵ９１１のＡＰＰ９２２あるいはＣＰＵ間通信部内のＣＰＵ間割込みハンドラで設定される他ＣＰＵ９１１からＩＯアクセス要求イベントにより伝えられる。ＩＯアクセス要求がない場合は、ＩＯアクセス担当の切り替え要請の確認に戻る。
【００７９】
ＩＯアクセス要求がある場合、ＩＯアクセスマネージャは、共有メモリ８３０にあるＩＯ担当ＣＰＵＩＤを読み出す。ＩＯアクセスマネージャは、読み出したＩＯ担当ＣＰＵＩＤと、読み出しておいた自ＣＰＵのＩＤとを比較する。
【００８０】
自ＣＰＵがＩＯアクセス担当の場合、ＩＯアクセスマネージャは、自ＣＰＵのデバイスドライバ９３１を介してＩＯデバイスにアクセスする。ＩＯアクセスマネージャは、ＩＯアクセス要求が自ＣＰＵ９１１内のＡＰＰ９２２からか、他ＣＰＵ９１１からかを判断する。自ＣＰＵ９１１内のＡＰＰ９２２からの要求であった場合、ＩＯアクセスマネージャは、応答及びデータをＡＰＰ９２２へ返す。ＩＯアクセス要求が他のＣＰＵ９１１からであった場合、ＩＯアクセスマネージャは、応答及びデータを共有メモリ８３０のＩＯ応答レジスタに設定し、共有メモリ８３０上のＣＰＵ９１１に対する割込みコマンドレジスタへ処理完了を表すコマンドを書き込み、要求元ＣＰＵ９１１へ割り込みを発行して、処理完了を伝達する。
【００８１】
ＩＯアクセス担当が自ＣＰＵでない場合、ＩＯアクセスマネージャは、ＩＯアクセスを担当するＣＰＵ９１１のＩＯ要求レジスタへ要求内容を書き込み、ＩＯ担当のＣＰＵ９１１に対する割込みコマンドレジスタにＩＯアクセス要求を表すコマンドを設定し、ＩＯ担当のＣＰＵ９１１に対して割り込みを発行して、ＩＯアクセス完了イベントを待つ。ＩＯアクセス完了イベント発生の後、ＩＯアクセスマネージャは、自ＣＰＵのＡＰＰ９２２に対してＩＯアクセス完了応答及びデータを返す。
【００８２】
なお、ＩＯ担当ＣＰＵの初期値は、例えば、システム初期化を実行するＣＰＵ９１１のＩＤとし、システム初期化を実行するＣＰＵ９１１が、システム初期化時に設定する。
【００８３】
システム負荷監視部（負荷監視プログラム９５１）は、自ＣＰＵのＩＤを取得し、ＣＰＵ９１１の内部レジスタあるいは一定期間中ＣＰＵ９１１のアイドル状態の割合などに基づいて、自ＣＰＵの負荷状況を取得する。
システム負荷監視部（ＩＯ担当管理プログラム９５２）は、ＩＯ担当ＣＰＵＩＤを読み出す。
【００８４】
担当ＣＰＵが自ＣＰＵであり、取得した負荷状況が或る閾値（交代閾値負荷）を超える場合、システム負荷監視部は、他のＣＰＵ全てにＩＯ担当の切り替えを要求する通知を行う。システム負荷監視部は、要求に対する各ＣＰＵからの応答を待って、次にＩＯアクセスを担当するＣＰＵを決定する。システム負荷監視部は、全ＣＰＵに対して次期ＩＯ担当ＣＰＵＩＤを通知する。システム負荷監視部は、自ＣＰＵのＩＯアクセスマネージャに対して担当ＣＰＵ切り替えをイベント通知する。
【００８５】
ＩＯアクセス担当ＣＰＵが他のＣＰＵであった場合、システム負荷監視部は、ＩＯ担当切り替え要求があるか否かを確認する。要求がある場合、システム負荷監視部は、観測した自ＣＰＵの負荷からＩＯアクセス担当の交代が可能か否かを判断する。
自ＣＰＵがＩＯアクセス担当として動作可能な場合、交代可能応答を要求元ＣＰＵへ伝達する。
ＩＯ担当切り替え要求に対して交代不可と判断した場合、システム負荷監視部は、交代不可応答を要求元ＣＰＵへ伝達する。
システム負荷監視部は、次期ＩＯ担当ＣＰＵの決定通知を待ち、次期ＩＯ担当ＣＰＵ切り替えイベントを設定する。
【００８６】
いずれの場合も、システム負荷監視部は、一定時間待機した後、ＣＰＵ負荷観測に戻って、以上の処理を繰り返す。
【００８７】
ＣＰＵ間通信部は、自ＣＰＵから他のＣＰＵへ割り込みを発行する動作と、他のＣＰＵから割り込みを受け、コマンド内容を自ＣＰＵ内モジュールへ伝達する。
【００８８】
自ＣＰＵから他のＣＰＵへ割り込みを発行する処理において、ＣＰＵ間通信部は、同ＣＰＵ内の各ソフトウェアモジュールから要求されるＣＰＵ間通信リクエストを待ち、要求があった場合には、要求された処理に対応するコマンドを割込み対象のＣＰＵの割込みコマンドレジスタへ登録して、対象のＣＰＵに対しＣＰＵ間割込みを発行する。
【００８９】
割込みを受ける動作において、ＣＰＵ間通信部のＣＰＵ間割込みハンドラが動作する。ＣＰＵ間割込みハンドラは、割り込みを受けるＣＰＵで起動され、ＣＰＵ割込みコマンドを読み出し、コマンド内容に従った各種イベントを設定する。各ソフトウェアモジュールは、設定されたイベントに対応する処理を行う。ＣＰＵ間割込みハンドラは、起動した後、自ＣＰＵ宛の割込みコマンドレジスタを読み出し、各コマンド内容に従ったイベント発行を割込みコマンド対応処理を行う。各イベント発行後、ＣＰＵ間割込みハンドラは、割込み処理終了処理を行い、ハンドラ動作を終了する。
【００９０】
割込みコマンド対応処理において、割り込みコマンドレジスタの内容がＩＯアクセス要求であった場合、ＣＰＵ間割込みハンドラは、ＩＯアクセス要求イベントを設定し、対応するＩＯアクセスマネージャが、ＩＯ要求確認のイベントを受ける。割り込みコマンドレジスタの内容がＩＯアクセス完了通知であった場合、ＣＰＵ間割込みハンドラは、ＩＯアクセス完了イベントを設定し、対応するＩＯアクセスマネージャが、ＩＯアクセス完了待ちのイベントを受ける。割り込みコマンドレジスタの内容がＣＰＵ交代要求通知であった場合、ＣＰＵ間割込みハンドラは、ＣＰＵ交代要求イベントを設定し、対応するシステム負荷監視部が、イベントを受ける。割り込みコマンドレジスタの内容がＣＰＵ交代不可応答であった場合、ＣＰＵ間割込みハンドラは、ＣＰＵ交代不可イベントを設定し、対応するシステム負荷監視部が、イベントを受ける。割り込みコマンドレジスタの内容がＣＰＵ交代可能応答であった場合、ＣＰＵ間割込みハンドラは、ＣＰＵ交代可能イベントを設定し、対応するシステム負荷監視部が、イベントを受ける。割り込みコマンドレジスタの内容がＣＰＵ交代要請であった場合、ＣＰＵ間割込みハンドラは、ＣＰＵ交代要請イベントを設定し、ＩＯアクセスマネージャが、イベントを受ける。
【００９１】
以上説明したマルチＯＳシステム８００及びＩＯ制御方式は、システム上の複数のＣＰＵ９１１が共同で使用するＩＯ（入出力デバイス８２０）へのアクセスを、システム上の一つのＣＰＵ９１１が担当、担当するＣＰＵ９１１の負荷が高い際にはＩＯアクセスを担当するＣＰＵ９１１を切り替えて動作する。
【００９２】
これにより、仮想マシン（以下「ＶＭ」と呼ぶ。）やホストＯＳを使用せずにマルチＯＳを構成し、マルチＯＳ環境における各ＯＳからのＩＯアクセスをシステム上の処理負荷の少ないＯＳが担当することができる。したがって、ＶＭやホストＯＳの処理負荷の影響によりＩＯデバイスへのアクセスに対する応答性能が低下することがなく、システム負荷に影響されないＩＯアクセス制御方式を提供することができる。
【００９３】
実施の形態２．
実施の形態２について、説明する。
なお、実施の形態１で説明したマルチＯＳシステム８００と共通する部分については、同一の符号を付し、説明を省略する。
【００９４】
この実施の形態におけるＩＯ担当管理部は、例えば、表示装置９０１を担当する担当装置、キーボード９０２を担当する担当装置など、入出力デバイス８２０（周辺装置）ごとに担当装置を判定する。異なる入出力デバイス８２０を担当する担当装置は、同じであってもよいし、異なっていてもよい。
【００９５】
これにより、周辺装置（入出力デバイス８２０）の制御を担当することによる負荷を分散することができる。
【００９６】
なお、関連性の強い入出力デバイス８２０をグループ化し、ＩＯ担当管理部は、グループごとに担当装置を判定する構成としてもよい。
【００９７】
以上説明したマルチＯＳシステム８００及びＩＯ制御方式は、システム上の複数のＣＰＵ９１１が共同で使用する関連する複数のＩＯ（入出力デバイス８２０）をまとめて扱い、まとめて扱うＩＯへのアクセスを、システム上の一つのＣＰＵ９１１が担当、担当するＣＰＵ９１１の負荷が高い際にはＩＯアクセスを担当するＣＰＵ９１１を切り替えて動作する。
【００９８】
これにより、関連性の強い周辺装置に対するアクセスの整合性を確保することができる。
【００９９】
実施の形態３．
実施の形態３について、図８を用いて説明する。
なお、実施の形態１で説明したマルチＯＳシステム８００と共通する部分については、同一の符号を付し、説明を省略する。
【０１００】
この実施の形態では、担当装置の負荷が大きくなった場合に、負荷の小さい制御装置１００が交代を申し出る構成について説明する。
【０１０１】
図８は、この実施の形態における担当管理処理Ｓ６４０の流れの一例を示すフローチャート図である。
担当管理処理Ｓ６４０は、担当受信工程Ｓ６４１、担当負荷取得工程Ｓ６４２、担当負荷判定工程Ｓ６４３、自負荷取得工程Ｓ６４６、交代判定工程Ｓ６４７、待機工程Ｓ６４８、担当受信工程Ｓ６４９、担当送信工程Ｓ６５０、担当継続工程Ｓ６５１を有する。
【０１０２】
担当受信工程Ｓ６４１において、担当受信部１２２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、現在の担当装置のＩＤを受信する。交代判定部１２１は、担当受信部１２２が受信した現在の担当装置のＩＤに基づいて、ＣＰＵ９１１を用いて、現在の担当装置が自らの制御装置１００であるか他の制御装置１００であるかを判定する。
現在の担当装置が自らの制御装置１００である場合、担当継続工程Ｓ６５１へ進む。
現在の担当装置が他の制御装置１００である場合、担当負荷取得工程Ｓ６４２へ進む。
【０１０３】
担当負荷取得工程Ｓ６４２において、負荷受信部１１２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、担当装置の負荷状況を受信する。
担当負荷判定工程Ｓ６４３において、交代判定部１２１は、担当負荷取得工程Ｓ６４２で負荷受信部１１２が受信した担当装置の負荷状況に基づいて、ＣＰＵ９１１を用いて、担当装置に所定の交代閾値負荷より大きい負荷がかかっているか否かを判定する。
担当装置に交代閾値負荷より小さい負荷しかかかっていない場合、担当継続工程Ｓ６５１へ進む。
担当装置に交代閾値負荷より大きい負荷がかかっている場合、自負荷取得工程Ｓ６４６へ進む。
【０１０４】
自負荷取得工程Ｓ６４６において、負荷入力部１１１は、ＣＰＵ９１１を用いて、負荷監視プログラム９５１が算出した自らの制御装置１００の負荷状況を入力する。
交代判定工程Ｓ６４７において、交代判定部１２１は、自負荷取得工程Ｓ６４６で負荷入力部１１１は入力した自らの制御装置１００の負荷状況に基づいて、ＣＰＵ９１１を用いて、自らの制御装置１００が交代して担当装置となることができるか否かを判定する。例えば、自らの制御装置１００にかかっている負荷が、担当装置にかかっている負荷よりも大きい場合、担当装置を交代する意味がないので、交代判定部１２１は、自らの制御装置１００が担当装置となることができないと判定する。
自らの制御装置１００が担当装置となることができない場合、担当継続工程Ｓ６５１へ進む。
自らの制御装置１００が担当装置となることができる場合、待機工程Ｓ６４８へ進む。
【０１０５】
待機工程Ｓ６４８において、交代判定部１２１は、ＣＰＵ９１１を用いて、自負荷取得工程Ｓ６４６で入力した自らの制御装置１００の負荷状況に基づいて、待ち時間を算出する。交代判定部１２１は、自らの制御装置１００にかかっている負荷が大きいほど長い待ち時間を算出する。交代判定部１２１は、ＣＰＵ９１１を用いて、算出した待ち時間の間、待機する。したがって、交代判定部１２１は、自らの制御装置１００にかかっている負荷が大きいほど長く待機する。
【０１０６】
担当受信工程Ｓ６４９において、担当受信部１２２は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、現在の担当装置のＩＤを再び受信する。待機工程Ｓ６４８で待機している間に、現在の担当装置が交代している可能性があるからである。交代判定部１２１は、担当受信部１２２が受信した現在の担当装置のＩＤに基づいて、ＣＰＵ９１１を用いて、担当受信工程Ｓ６４１から担当受信工程Ｓ６４９の間に、現在の担当装置が交代したか否かを判定する。
現在の担当装置が交代した場合、担当継続工程Ｓ６５１へ進む。
現在の担当装置が交代していない場合、担当送信工程Ｓ６５０へ進む。
【０１０７】
担当送信工程Ｓ６５０において、交代判定部１２１は、ＣＰＵ９１１を用いて、担当装置を交代して、自らの制御装置１００が担当装置になると判定する。担当送信部１２４は、ＣＰＵ９１１を用いて、ＣＰＵ間通信プログラム９４０を介して、自らの制御装置１００のＩＤを新たな担当装置のＩＤとして送信する。担当判定部１２３は、固有メモリ９１２を用いて、自らの制御装置１００のＩＤを新たな担当装置のＩＤとして記憶する。その後、担当管理処理Ｓ６４０を終了する。
【０１０８】
担当継続工程Ｓ６５１において、交代判定部１２１は、ＣＰＵ９１１を用いて、担当装置を交代しないと判定する。担当判定部１２３は、固有メモリ９１２を用いて、担当受信工程Ｓ６４１または担当受信工程Ｓ６４９で担当受信部１２２が受信した現在の担当装置のＩＤを記憶する。その後、担当管理処理Ｓ６４０を終了する。
【０１０９】
負荷の大きい制御装置１００ほど、現在の担当装置の負荷が交代閾値負荷より大きいと判定してからの待ち時間が長いので、その間に他の制御装置１００が担当装置を交代する可能性が高い。
逆に、負荷の小さい制御装置１００ほど、現在の担当装置の負荷が交代閾値負荷より大きいと判定してからの待ち時間が短いので、その間に他の制御装置１００が担当装置を交代する可能性が低く、自らが新たな担当装置になる可能性が高い。
各制御装置１００が担当管理処理Ｓ６４０を実行するタイミングは必ずしも同じではないので、最も負荷が小さい制御装置１００が新たな担当装置になるとは限らないが、確率的に妥当な制御装置１００が新たな担当装置になる。
【０１１０】
なお、最も負荷が小さい制御装置１００を新たな担当装置とするため、例えば、担当負荷判定工程Ｓ６４３で担当装置に交代閾値負荷より大きい負荷がかかっていると判定した場合に、その判定をした制御装置１００が他の制御装置１００に対して通知し、通知を受けた他の制御装置１００が、他負荷取得工程Ｓ６４４以降の工程を実行することにより、各制御装置１００が待機工程Ｓ６４８を開始するタイミングを揃える構成としてもよい。
【０１１１】
このように、現在の担当装置以外の制御装置１００が現在の担当装置の負荷状況を監視して、負荷が大きい場合に担当装置の交代を申し出る構成とすることにより、現在の担当装置にかかっている負荷が非常に大きい場合でも、遅延なく、新たな担当装置を決定し、担当装置を交代することができる。
【０１１２】
なお、共有メモリ８３０を用いて、制御装置１００間の通信を実現する構成の場合、現在の担当装置の負荷送信部１１４が、定期的に、最新の負荷状況をあらかじめ送信して、共有メモリ８３０が記憶したＣＰＵ負荷８３３を更新しておき、担当負荷取得工程Ｓ６４２において、他の制御装置１００の負荷受信部１１２が、共有メモリ８３０が記憶したＣＰＵ負荷８３３を読み出すことにより、現在の担当装置の最新の負荷状況を受信する構成としてもよい。これにより、担当負荷取得工程Ｓ６４２にかかる時間を短縮することができるので、速やかに担当装置を交代することができる。
【０１１３】
また、現在の担当装置の負荷が大きい場合、共有メモリ８３０が記憶したＣＰＵ負荷８３３の更新が遅れ、その結果として担当装置の交代が遅れるのを防ぐため、共有メモリ８３０が記憶したＣＰＵ負荷８３３が一定の期間更新されなかった場合、交代判定部１２１は、担当負荷判定工程Ｓ６４３で、担当装置に交代閾値負荷より大きい負荷がかかっていると判定する構成としてもよい。
例えば、現在の担当装置以外の制御装置１００の負荷受信部１１２が、現在の担当装置のＣＰＵ負荷８３３を読み出すたびに、共有メモリ８３０が記憶したＣＰＵ負荷８３３に所定の値を加算して、ＣＰＵ負荷８３３を増加させる。これにより、ＣＰＵ負荷８３３が一定の期間更新されないと、共有メモリ８３０が記憶したＣＰＵ負荷８３３が徐々に大きくなるので、交代判定部１２１は、担当負荷判定工程Ｓ６４３で、担当装置に交代閾値負荷より大きい負荷がかかっていると判定することになる。
あるいは、共有メモリ８３０に、ＣＰＵ負荷８３３を更新した更新時刻を記憶する記憶領域を設け、負荷送信部１１４がＣＰＵ負荷８３３を更新するとき更新時刻もともに更新し、負荷受信部１１２がＣＰＵ負荷８３３を読み出すとき更新時刻もともに読み出して、交代判定部１２１が、ＣＰＵ負荷８３３の最終更新からの経過時間を判定する構成としてもよい。
【符号の説明】
【０１１４】
１００  制御装置、１１０  負荷取得部、１１１  負荷入力部、１１２  負荷受信部、１１３  負荷記憶部、１１４  負荷送信部、１２１  交代判定部、１２２  担当受信部、１２３  担当判定部、１２４  担当送信部、１５１  指示入力部、１５２  指示送信部、１５３  指示受信部、１５４  指示通知部、１６１  応答取得部、１６２  応答送信部、１６３  応答受信部、１６４  応答出力部、８００  マルチＯＳシステム、８１０  共有バス、８２０  入出力デバイス、８３０  共有メモリ、８３１  書込ＩＤ、８３２  担当ＩＤ、８３３  ＣＰＵ負荷、８３４  指示コマンド、８３５  応答メッセージ、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  スピーカー、９１１  ＣＰＵ、９１２  固有メモリ、９２１  ＯＳ、９２２  ＡＰＰ、９３０  仮想デバイスドライバ、９３１  デバイスドライバ、９３２  ＩＯアクセス管理プログラム、９４０  ＣＰＵ間通信プログラム、９５１  負荷監視プログラム、９５２  ＩＯ担当管理プログラム。
【図１】
2011053727.tif 000003
【図２】
2011053727.tif 000004
【図３】
2011053727.tif 000005
【図４】
2011053727.tif 000006
【図５】
2011053727.tif 000007
【図６】
2011053727.tif 000008
【図７】
2011053727.tif 000009
【図８】
2011053727.tif 000010