(57)【特許請求の範囲】
【請求項１】
複数の計算機がネットワーク接続される計算機システムにおけるマルチプログラミングＯＳを実装した各計算機が、
前記ネットワークを介して、同一プログラムの実行を識別するプログラム識別情報を、任意の時間範囲にて交換する情報交換処理部と、
前記プログラム識別情報の一致あるいは不一致の状態を判定する判定部と、
次に動作させるプログラムを選択して実行する選択実行部と
を備え、
前記情報交換処理部は、複数の計算機にその同一プログラムを同時に実行させるように、動作プログラムがＣＰＵを明け渡すタスクスイッチング時に、プログラム識別情報を交換することを特徴とする計算機システム。
【請求項２】
前記情報交換処理部は、任意の時間経過後にプログラムを動作させる際に、プログラム識別情報を交換することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記情報交換処理部は、任意のシステムコールを実行する際に、プログラム識別情報を交換することを特徴とする請求項１に記載の計算機システム。
【請求項４】
前記選択実行部は、次に動作させるプログラムを任意に選択する際に、少なくとも２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ、２つ以上の計算機において一番早く実行可能待ちとなったタスクを実行させることを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記選択実行部は、次に動作させるプログラムを任意に選択する際に、少なくとも２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ、２つ以上の計算機において実行可能待ちとなったタスクのうち一番優先レベルが高いタスクを実行させることを特徴とする請求項１に記載の計算機システム。
【請求項６】
複数の計算機がネットワーク接続される計算機システムにおけるマルチプログラミングＯＳを実装する各計算機の処理が、
前記ネットワークを介して、同一プログラムの実行を識別するプログラム識別情報を、情報交換処理部が任意の時間範囲にて交換する情報交換処理ステップと、
前記プログラム識別情報の一致あるいは不一致の状態を判定部が判定する判定ステップと、
選択実行部が、次に動作させるプログラムを選択して実行する選択実行ステップと
を含み、
前記情報交換処理部は、複数の計算機にその同一プログラムを同時に実行させるように、動作プログラムがＣＰＵを明け渡すタスクスイッチング時に、プログラム識別情報を交換することを特徴とする計算機制御方法。
【請求項７】
前記情報交換処理部は、任意の時間経過後にプログラムを動作させる際に、プログラム識別情報を交換することを特徴とする請求項６に記載の計算機制御方法。
【請求項８】
前記情報交換処理部は、任意のシステムコールを実行する際に、プログラム識別情報を交換することを特徴とする請求項６に記載の計算機制御方法。
【請求項９】
前記選択実行部は、次に動作させるプログラムを任意に選択する際に、少なくとも２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ、２つ以上の計算機において一番早く実行可能待ちとなったタスクを実行させることを特徴とする請求項６に記載の計算機制御方法。
【請求項１０】
前記選択実行部は、次に動作させるプログラムを任意に選択する際に、少なくとも２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ、２つ以上の計算機において実行可能待ちとなったタスクのうち一番優先レベルが高いタスクを実行させることを特徴とする請求項６に記載の計算機制御方法。
【請求項１１】
複数の計算機がネットワーク接続され、各計算機がマルチプログラミングＯＳを実装する計算機システムにおける各計算機に、
前記ネットワークを介して、同一プログラムの実行を識別するプログラム識別情報を、情報交換処理部が任意の時間範囲にて交換する情報交換処理機能と、
前記プログラム識別情報の一致あるいは不一致の状態を判定部が判定する判定機能と、
選択実行部が、次に動作させるプログラムを選択して実行する選択実行機能と、を実行させるとともに、
前記情報交換処理部は、更に、複数の計算機にその同一プログラムを同時に実行させるように、動作プログラムがＣＰＵを明け渡すタスクスイッチング時に、プログラム識別情報を交換する機能を
実行させるための計算機制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークに接続される複数の計算機がマルチプログラミングＯＳ（Operating System）を実装する計算機システム、計算機制御方法及び計算機制御プログラムに関する。
【背景技術】
【０００２】
従来より、計算機システムにおいてシステムの稼動時間を長時間化するために、計算機を多重化する技術が存在している。この技術は、例えば、デュアルシステムなどにより、ハードウェアの障害に対しても、システム内の処理を継続することができるものである。
【０００３】
これに対し、システムの停止時間を最小化するための計算機としてフォールト・トレラント・コンピュータ（Fault tolerant computer）がある。この技術は、ハードウェアを多重化し、同一プログラムを複数のＣＰＵで動作させて、結果を照合し、ＣＰＵの障害時に処理の継続を行うものである。例えば、本出願人は分散配置に適したフォ−ルトトレラントシステムの構成を提案している（特許文献１参照）。
【０００４】
例えば、ＣＰＵ（Central Processing Unit）やメモリ、Ｉ／Ｏ（Input/Output）バス、Ｉ／Ｏカードを多重化、つまり２個用意する。そして、メモリ、Ｉ／Ｏバス、Ｉ／Ｏカードの診断等による障害検知時に、障害が発生した方を切り離すことにより、ハードウェア障害による計算機の停止を回避することができる。
【特許文献１】特開平８−３１４７４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上述したフォールト・トレラント・コンピュータである計算機を製作するには、専用のハードウェアを製作する必要があり、製作コストの負担が大きいものとなる。例えば、ＣＰＵ上の命令結果の付き合わせを実現するためには、これに対応する個別のユニットが必要になる。
【０００６】
これに対し、近年、プロセッサの高速化やマルチコア化、ネットワークの高速化が進み、複数の計算機を高速ネットワークで接続して１つの計算機システムとして構成することが可能となっている。このシステムにより、フォールト・トレラント・コンピュータに匹敵する稼働率を実現する環境が整いつつある。
【０００７】
そこで、専用のハードウェア機器を作成せずに汎用の複数の計算機をネットワーク接続したシステム構成において、オペレーティングシステムから上位のアプリケーションに対して高稼動な計算機システムを実現するソフトウェア技術を提示することが要求されている。
【０００８】
本発明は、複数の計算機を高速なネットワークで接続したシステム構成において、同一時点で同一プログラムを実行させることでオペレーティングシステムより上位のソフトウェア階層に高稼動な計算機システムを実現させるものである。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明の計算機システムは、複数の計算機がネットワーク接続される計算機システムにおけるマルチプログラミングＯＳを実装した各計算機が、ネットワークを介して、同一プログラムの実行を識別するプログラム識別情報を、任意の時間範囲にて交換する情報交換処理部と、プログラム識別情報の一致あるいは不一致の状態を判定する判定部と、次に動作させるプログラムを選択して実行する選択実行部とを備える。そして、情報交換処理部は、複数の計算機にその同一プログラムを同時に実行させるように、動作プログラムがＣＰＵを明け渡すタスクスイッチング時に、プログラム識別情報を交換する。
【００１０】
本発明の計算機制御方法は、複数の計算機がネットワーク接続される計算機システムにおけるマルチプログラミングＯＳを実装する各計算機の処理が、ネットワークを介して、同一プログラムの実行を識別するプログラム識別情報を、情報交換処理部が任意の時間範囲にて交換する情報交換処理ステップと、プログラム識別情報の一致あるいは不一致の状態を判定部が判定する判定ステップと、選択実行部が、次に動作させるプログラムを選択して実行する選択実行ステップとを含む。そして、情報交換処理部は、複数の計算機にその同一プログラムを同時に実行させるように、動作プログラムがＣＰＵを明け渡すタスクスイッチング時に、プログラム識別情報を交換するようにしている。
【００１１】
本発明の計算機制御プログラムは、複数の計算機がネットワーク接続され、各計算機がマルチプログラミングＯＳを実装する計算機システムにおける各計算機に、ネットワークを介して、同一プログラムの実行を識別するプログラム識別情報を、情報交換処理部が任意の時間範囲にて交換する情報交換処理機能と、プログラム識別情報の一致あるいは不一致の状態を判定部が判定する判定機能と、選択実行部が、次に動作させるプログラムを選択して実行する選択実行機能とを実行させるとともに、情報交換処理部は、更に、複数の計算機にその同一プログラムを同時に実行させるように、動作プログラムがＣＰＵを明け渡すタスクスイッチング時に、プログラム識別情報を交換する機能を各計算機に実行させる。
【００１２】
これにより、本発明は、複数計算機においてネットワークを介して同一プログラムの実行を識別する情報を、例えば、タスクスイッチング時、タイマ起動のプログラム実行時又は特定のシステムコール実行時に任意の時間の範囲にて交換する。
そして、本発明は、プログラム識別情報の一致あるいは不一致の状態を判定することで、次に動作させるプログラムを選択し、複数の計算機にて任意経過時間後に同期してプログラムを選択・実行し、又は複数の計算機にて任意のシステムコールを同期して実行する。
【発明の効果】
【００１３】
本発明により、同一時点で同一プログラムを実行させることにより、オペレーティングシステムから上位のアプリケーションに対して高稼動な計算機システムを実現するソフトウェア技術を提供することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
図１に、本発明のＯＳ（オペレーティングシステム）内のタスク同期構成の説明図を示す。本発明の機能を実現する構成要素は、ＯＳ１０１内に存在する。ＯＳ１０１は、マルチプログラミング機能を有するオペレーティングシステムであるが、マルチプロセッサ用途、シングルプロセッサ用途を限定するものではない。
ただし、本発明においては、マルチプロセッサシステムにおいて、プログラム（タスク）の同期動作を任意のプロセッサ内のコアプロセッサに限定するなどの指定が可能である。ＣＰＵの中に複数のプロセッサが存在し、プロセッサの中に複数のコアが存在する。
【００１５】
本ＯＳ１０１は、複数の計算機、又は計算機ブレードにおいて動作する。
マルチプログミング機能を有するＯＳ１０１においては、複数プログラムの実行を可能とするために実行中のプログラムをタスク（プロセスとも言う）という単位で管理する。プログラムが実行されるとＯＳ１０１内のタスク生成処理１０２がタスクを生成し、タスクＡ，Ｂ，Ｃ単位に固有の情報をタスクコントロールブロック（ＴＣＢ）１０４に記憶する。
【００１６】
すなわち、タスクＡはＴＣＢ１０４のタスク制御テーブル１０３ａに記憶され、タスクＢはＴＣＢ１０４のタスク制御テーブル１０３ｂに記憶され、タスクＣはＴＣＢ１０４のタスク制御テーブル１０３ｃに記憶される。
一般的に、タスクＡ，Ｂ，Ｃは、動作時に優先レベルＸ、Ｘ、Ｙを有し、優先レベルＸ、Ｘ、Ｙの高低によりタスクＡ，Ｂ，Ｃの実行順序をＯＳ１０１が決定する。ＣＰＵの１つのコアにて動作するタスクＡ，Ｂ，Ｃは、同一時間においては１つである。このため、複数タスクＡ，Ｂ，Ｃが起動されている状態において、実行可能であるが他のタスクＡ，Ｂ，ＣによりＣＰＵのコアを占有されている場合に、ＣＰＵのコアの空きを待つタスクＡ，Ｂ，Ｃを実行待ちキュー１０５で管理する。
【００１７】
実行待ちキュー１０５は、ＣＰＵのコア単位に存在する。すなわち、タスクＡ，Ｂは、実行待ちキュー１０５の優先レベルＸの実行待ち処理として順次保持され、タスクＣは、実行待ちキュー１０５の優先レベルＹの実行待ち処理として保持される。
同期待ちキュー１０６は、本ＯＳ１０１を使用して複数の計算機において同一時に同一のタスクを実行させる場合に、同期待ち処理のタスクを管理する。すなわち、同一時にタスクが実行可能な状態でない場合において、全計算機において同一時に同一のタスクを実行可能な状態になるまでタスクを保持する。
【００１８】
プロセッサ状態情報１０７は、計算機におけるＣＰＵ内のプロセッサ１ａ，１ｂ，１ｃ，１ｄに対してコア単位のスケジューリング方法を記憶するテーブルである。
同期システムコール設定テーブル１０８は、ＯＳ１０１が提供する機能であるシステムコール実行時に複数計算機において同一タスクが同時に本システムコール処理を実行するために使用するテーブルである。
実行コア割当てテーブル１０９は、プロセスグループ単位にＣＰＵの実行コアを指定するテーブルである。
【００１９】
ＣＰＵタスク同期状態情報１１０は、計算機内のＣＰＵのコア単位に同一タスクが同時に実行されていることを示す状態を記憶するテーブルである。
タイムアウト設定テーブル１１１は、ＣＰＵのコア単位に同一タスクを動作させる場合において同一タスクが動作可能となることを待ち合わす時間を記憶するテーブルである。
同期論理設定テーブル１１２は、複数計算機にて同時に同一タスクを実行する場合に全計算機において、同一タスクが任意の時間内に実行可能とならない場合に、次に実行させるタスクを選択する方法を記憶するテーブルである。
【００２０】
タスク同期ＣＰＵ間交換情報１１３は、タスクを同時に動作させる計算機において、次の動作対象タスク等の情報を交換するメモリ領域である。この領域は、ＣＰＵ情報交換ドライバ１２１により更新される。
実行待ち処理１１４及びタスク選択処理１１５は、タスク同期処理１１６により複数計算機において同時に同一タスクを実行させる処理である。すなわち、実行中タスクが動作しているＣＰＵのコアを他のタスクに明け渡す場合において、他の実行可能タスクを選択し、同時に同一タスクを実行させる。
【００２１】
割込み処理１１７、タイマ割込み処理１１８及び同期待ち合わせ処理１１９は、タイマ起動タスクを複数計算機においてタイマ割込みのズレを補正して同一時に実行させるための処理である。すなわち、タイマ割込みからタイマ割込み処理が起動され、任意の時間経過後に実行されるタイマ起動タスクを複数計算機においてタイマ割込みのズレを補正して同一時に実行させる。
同期システムコール実行処理１２０は、任意のシステムコール実行時に複数計算機にて同一タスクを同一時に実行させることに使用する。この処理は、ＯＳ１０１が提供するシステムコール処理から実行される処理である。
【００２２】
図２に、本発明の前提となるシステム構成と本発明のシステム構成を示す。図２Ａにおいて、前提となる計算機２０１の構成機器を示す。図２Ａに示す計算機２０１においてＣＰＵの故障やメモリの故障が発生した場合においてもプログラムの実行を保証するために、以下のように構成している。
すなわち、ＣＰＵ２０２、２０３、メモリ２０６、２０７、命令比較機能２０５、２０８は２台構成としている。各部は、バス２０４で接続される。まず、メモリ２０６、２０７内のデータを一致させ、ＣＰＵ２０２、２０３において同一プログラムカウンタ値を比較、設定する。そして、ＣＰＵ２０２、２０３の実行する命令や演算結果（レジスタの値、メモリに出力した値）が同一であるかどうかを、命令比較機能２０５、２０８によって比較する。
【００２３】
前提となる計算機のフォールトトレラント方式は、複数ＣＰＵを二重化バスで接続して同一タスクを実行し、実行結果（命令の出力）を照合する。ここで、不一致となった場合に予備のＣＰＵで実行させ、結果を比較し、出力する。この技術は、ハードウェア機構による機械語命令と出力を比較する比較回路より、実行されるものである。
【００２４】
図２Ｂの計算機２１０は、本発明のＯＳを動作させる計算機である。
第１〜４のサーバ２１１〜２１４は、ＣＰＵ２１１−１〜２１４−１、ＢＣ（バスコントローラ）２１１−２〜２１４−２、メモリ２１１−３〜２１４−３、ＮＩＣ（ネットワークインターフェースコントローラ）２１１−４〜２１４−４を有している。
また、出力比較機２１６は、ＣＰＵ２１６−１、ＢＣ２１６−２、メモリ２１６−３、ＮＩＣ２１６−４、２１６−５を有している。
【００２５】
第１〜４のサーバ２１１〜２１４のメモリ２１１−３〜２１４−３に図１に示したＯＳ１０１を搭載し、ＣＰＵ２１１−１〜２１４−１上で実行させる。これにより、第１〜４のサーバ２１１〜２１４においてＣＰＵ２１１−１〜２１４−１の補助記憶装置内に存在する同一のタスクの実行モジュールを同一時に実行させる。
第１〜４のサーバ２１１〜２１４で実行されるネットワーク送信データについては、例えば出力比較機２１６において、第１〜４のサーバ２１１〜２１４からの送信データを受信して比較照合し、計算機２１０の外部のネットワーク２１７に出力する。
【００２６】
外部のネットワーク２１７から受信するデータについては、出力比較機２１６で受信し、出力比較機２１６が第１〜４のサーバ２１１〜２１４にブロードキャストし、第１〜４のサーバ２１１〜２１４の同一タスクが同一データを受信し、処理を行う。
図１に示したＯＳ１０１を計算機２１０にて動作させることにより、第１〜４のサーバ２１１〜２１４の４台の装置のうち２台が故障したとしても残りの２台のサーバで同一タスクを動作し、出力比較機２１６において外部出力データの比較が可能となる。また、第１〜４のサーバ２１１〜２１４の４台のうち３台が故障したとしても残りの１台においてタスクの実行を継続することが可能となる。
【００２７】
図３に本発明におけるデータ構造を示す。
図３ＡはＴＣＢ、図３Ｂは実行待ちキュー、図３Ｃは同期待ちキュー、図３Ｄはプロセッサ状態情報、図３Ｅは同期システムコール設定テーブル、図３Ｆは実行コア割当てテーブル、図３ＧはＣＰＵタスク同期状態情報、図３Ｈはタイムアウト設定テーブル、図３Ｉは同期論理設定テーブルである。
図３Ａに示すタスクコントロールブロック（ＴＣＢ）１０４は、実行中のプログラム単位にタスク個別の情報を記憶するものである。ＴＣＢ１０４は、タスクを識別する識別ＩＤ３０１、タスクの動作優先レベル３０２、タスクのスケジュール方法を示す識別子を格納するスケジューリング方法３０３の情報を有する。
【００２８】
また、ＴＣＢ１０４は、タスクが実行可能であるが、他タスクにＣＰＵコアを占有されているため実行待ちを管理する実行待ちキューＩＤ３０４、実行ＣＰＵのプロセッサ番号３０５、コアＩＤ３０６、複数タスクのグループを示すプロセスグループ番号３０７、タスクの状態情報３０８の情報を有する。
ＣＰＵコアの空きを待つタスクを図３Ｂに示す実行待ちキュー１０５で管理する。実行待ちキュー１０５は、ＣＰＵコア単位に存在する。
【００２９】
図３Ｂに示す実行待ちキューＩＤ３０９は、実行待ちキューを識別する番号であり、ＣＰＵコアと１対１に対応する。図３Ｂに示す実行待ちキュー１０５は、タスク動作の優先レベル単位にＴＣＢ１０４のアドレスを記録する領域を所有し、実行待ち状態のタスクのＴＣＢ１０４を優先レベル単位に記録する。
【００３０】
図３Ｃに示す同期待ちキュー１０６は、本ＯＳ１０１を使用して複数の計算機において同一時に同一のタスクを実行させる場合において、タスクを管理する実行待ちキューである。すなわち、同一時にタスクが実行可能な状態でない場合において、複数の計算機において同一時に同一のタスクを実行可能状態になるまでタスクを管理する。
同期待ちキューＩＤ３１０は、同期待ちキューを識別する番号であり、ＣＰＵコアと１対１に対応する。図３Ｃに示す同期待ちキュー１０６は、タスク動作の優先レベル単位にＴＣＢ１０４のアドレスを記録する領域を所有し、実行待ち状態ではあるが、全計算機において同一タスクが実行待ち状態ではないタスクのＴＣＢ１０４を優先レベル単位に記録する。
【００３１】
図３Ｄに示すプロセッサ状態情報テーブル１０７は、計算機におけるＣＰＵ内コア単位のスケジューリング方法を記憶するテーブルである。プロセッサ状態情報１０７は、計算機又はブレードコンピュータのブレードに対応するＣＰＵボードＩＤ３１１、計算機又はブレードコンピュータに複数ＣＰＵが実装されている場合の１つのＣＰＵと対応するプロセッサＩＤ３１２を有する。また、プロセッサ状態情報テーブル１０７は、１ＣＰＵ内の１ＣＰＵコアと対応するコアＩＤ３１３、スケジューリング方法に対応した値を示すスケジューリングＩＤ３１４の情報を有する。
【００３２】
図３Ｅに示す同期システムコール設定テーブル１０８は、ＯＳが提供する機能であるシステムコール実行時に複数計算機において同一タスクが同時に本システムコール処理を実行するために使用する。
同期システムコール設定テーブル１０８は、システムコールを特定するためのシステムコールＩＤ３１５、本システムコールが特定のコアでのみ全計算機の処理実行を同期させるために使用するＣＰＵプロセッサＩＤ３１６、コアＩＤ３１７の情報を有する。
また、同期システムコール設定テーブル１０８は、特定のプロセスグループのみ本システムコールの全計算機の処理実行を同期させるために使用するプロセスグループＩＤ３１８の情報を有する。
また、同期システムコール設定テーブル１０８は、特定のスケジューリング方法のみ本システムコールの全計算機の処理実行を同期させるために使用するスケジューリングＩＤ３１９の情報を有する。
【００３３】
図３Ｆに示す実行コア割当てテーブル１０９は、プロセスグループ単位にＣＰＵ、実行コアを指定するテーブルである。実行コア割当てテーブル１０９は、プロセスグループＩＤ３２０、プロセッサＩＤ３２１、コアＩＤ３２２の情報を有する。
図３Ｇに示すＣＰＵタスク同期状態情報テーブル１１０は、計算機内のＣＰＵコア単位に同一タスクが同時に実行されていることを示す状態を記憶するテーブルである。ＣＰＵタスク同期状態情報１１０は、計算機、ブレードコンピュータのブレードに対応するＣＰＵボードＩＤ３２３、プロセッサＩＤ３２４、コアＩＤ３２５、同期維持あるいは同期離脱等の同期状態３２６、同期回数を示す同期カウンタ３１９の情報を有する。
【００３４】
図３Ｈに示すタイムアウト設定テーブル１１１は、ＣＰＵコア単位に同一タスクを動作させる場合において同一タスクが動作可能となることを待ち合わせる時間を記憶するテーブルである。
タイムアウト設定テーブル１１１は、プロセスグループ単位に待ち合わせ時間を指定するためにプロセスグループＩＤ３２８、プロセッサＩＤ３２９、コアＩＤ３３０、タイムアウト時間３３１、同期比率３３２、タイムアウト回数３３３の情報を有する。
同期比率３３２は、１秒内の同期待ち時間の最大比率を示すものである。タイムアウト回数３３３は、タイムアウトが連続で発生した場合に異常とみなす回数を指定する。累積時間３３４は、１秒内の同期待ち時間の累積時間を示す。この時間が１秒内において同期比率を超えた場合にタイムアウト回数をタイムアウト回数３３３で指定した回数待たずにタイムアウトとするなどの判定に使用する。
【００３５】
図３Ｉに示す同期論理設定テーブル１１２は、複数計算機にて同時に同一タスクを実行する場合に全計算機において、同一タスクが任意の時間内に実行可能とならない場合に次に実行させるタスクを選択する方法を記憶するテーブルである。
同期論理設定テーブル１１２は、同期論理を識別するＩＤ３３５、スケジュール判定情報３３６、再同期判定情報３３７の情報を有する。スケジュール判定情報３３６は、複数計算機にて同一タスクが実行可能状態であるか、否かの状態種別によって次に動作させるタスクを決定する方法を示すものである。例えば、スケジュール判定情報３３６は、次のような条件に対応させて設定することができる。
【００３６】
第１に、全計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機内で一番早く実行可能待ちとなったタスクを実行させる。
第２に、全計算機、又は２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機、又は２つ以上の計算機において一番早く実行可能待ちとなったタスクを実行させる。
第３に、全計算機においてタイムアウト時間内に同一タスクが実行可能状態となった場合にのみ計算機内で一番早く実行可能待ちとなったタスクを実行させる。
【００３７】
第４に、全計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機内で実行可能待ちとなったタスクのうち一番優先レベルが高いタスクを実行させる。
第５に、全計算機、又は２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機、又は２つ以上の計算機において実行可能待ちとなったタスクのうち一番優先レベルが高いタスクを実行させる。
第６に、全計算機内で一番早く実行可能待ちとなったタスクのうち優先レベルが一番高いタスクを実行させる。
【００３８】
図４にタスク同期ＣＰＵ間交換情報１１３の構成を示す。タスク同期ＣＰＵ間交換情報１１３は、タスクを同時に動作させる計算機において、次の動作対象タスク等の情報を交換するメモリ領域である。この領域は、図１に示したＣＰＵ情報交換ドライバのＣＰＵ情報交換処理１２１により更新される。
ぞれぞれの計算機において、図４に示すタスク同期ＣＰＵ間交換情報１１３は、各計算機に対応するように第１〜第４のＣＰＵボードの更新エリア１１３−１〜１１３−４が設けられている。各計算機は、図２の構成においては、第１〜第４のサーバ２１１〜２１４が対応する。
【００３９】
第１〜第４のＣＰＵボードの更新エリア１１３−１〜１１３−４は、タスクスイッチ同期データ４０１、タイマ実行タスク同期データ４０２及びシステムコール同期データ４０３により構成される。タスクスイッチ同期データ４０１は、シーケンス番号４０４、同期状態情報４０５、同期対象タスク識別情報４０６、チェックサム値４０７、データ種別情報４０８、シーケンス番号４０９により構成される。
タイマ実行タスク同期データ４０２及びシステムコール同期データ４０３の領域内も、タスクスイッチ同期データ４０１と同様に、シーケンス番号４０４〜シーケンス番号４０９の情報が存在する構成となる。
【００４０】
タスクスイッチ同期データ４０１は、以下の情報を有する。すなわち、図１に示したタスク選択処理１１５が、次にＣＰＵコア上で動作させるタスクを実行待ちキュー１０５を検索して選択し、そのタスクの情報を同一時に同一タスクを動作させる他の計算機へ送信する情報である。
タイマ実行タスク同期データ４０２は、以下の情報を有する。すなわち、図１に示したタイマ割込みから実行されるタイマ割込み処理１１８において、任意の時間経過後に実行されるタイマ起動タスクを複数計算機においてタイマ割込みのズレを補正して同一時に実行させる。このために任意の待ち時間が経過し、実行可能状態となったタスクに関する情報を同一時に同一タスクを動作させる他の計算機へ送信するための情報である。
【００４１】
システムコール同期データ４０３は、以下の情報を有する。すなわち、図１に示した同期システムコール実行処理１２０において、任意のシステムコール実行時に複数計算機にて同一タスクを同一時に実行させる。このために同期対象のシステムコールを実行したタスクに関する情報を同一時に同一タスクを動作させる他の計算機へ送信するための情報である。
第１〜第４のＣＰＵボードの更新エリア１１３−１〜１１３−４において、自計算機に対応するエリアは、図１に示したＣＰＵ情報交換ドライバ１２１の送信情報により更新される。第１〜第４のＣＰＵボードの更新エリア１１３−１〜１１３−４において、他計算機に対応するエリアは、ＣＰＵ情報交換ドライバ１２１の受信情報により更新される。
【００４２】
シーケンス番号４０４、４０９は、送信情報を識別する番号であり、異なる情報を送信する度にシーケンス番号をインクリメントする。同期状態情報４０５は、このＣＰＵコアにおける同期状態（同期維持、同期離脱）を格納する領域である。同期対象タスク識別情報４０６は、任意のケース分の実行待ちタスクの識別情報を格納する領域である。
データ種別情報４０８は、タスクスイッチ同期データ４０１、タイマ実行タスク同期データ４０２、システムコール同期データ４０３のデータ種別を識別するための情報である。チェックサム値４０７は、タスクスイッチ同期データ４０１〜システムコール同期データ４０３の領域内データのサム値を格納する。
【００４３】
図５にタスク状態遷移図及びタスク生成処理図を示す。図５Ａはタスク（プロセス）状態遷移図５０１、図５Ｂはタスク生成処理を示すフローチャートである。まず、図５Ａに示すタスク（プロセス）状態遷移図５０１において、タスクは、無存在状態（ステップＳ１）から、タスク生成処理１０２により生成され、プロセス生成状態（ステップＳ２）を経てプロセス実行可能状態（ステップＳ３）に遷移する。
タスクは、プロセス実行可能状態（ステップＳ３）から、タスク選択処理１１５により図１に示した実行待ちキュー１０５で保持され、ＣＰＵコア上で次に実行されるタスクが選択され、プロセス実行状態（ステップＳ４）となる。
【００４４】
プロセス実行状態（ステップＳ４）から、実行待ち処理１１４によりＣＰＵコア上で動作中のタスクが実行中タスクよりも優先レベルが高いタスクにＣＰＵコアを明け渡す場合には、実行中タスクの状態は、プロセス実行可能状態（ステップＳ３）となる。
また、ＣＰＵコア上で動作中のタスクが任意の資源が獲得されない場合や、任意の時間、実行時間間隔を空けてから実行する場合には、タスクは、ＣＰＵコアを明け渡し、プロセス休止解除状態（ステップＳ５）となる。
【００４５】
プロセス休止状態（ステップＳ５）となる場合には、休止処理５０１−１が実行され、また、タスクは休止解除処理５０１−２により、プロセス休止状態（ステップＳ５）からプロセス実行可能状態（ステップＳ３）となる。図１に示したタイマ割込み処理１１８は、任意の時間プロセス休止状態（ステップＳ５）となったタスクに対し、休止解除処理５０１−２を実行してプロセス実行可能状態（ステップＳ３）とする処理である。
【００４６】
次に、図５Ｂに示すタスク生成処理１０２について説明する。まず、図１に示したＯＳ１０１は、タスクのためにタスク制御テーブルを確保する（ステップＳ５０２）。次に、ＯＳ１０１は、タスクに対するタスク識別ＩＤを割当てる（ステップＳ５０３）。また、ＯＳ１０１は、プログラム実行オブジェクトより命令、データ、スタック部をメモリに割当てる（ステップＳ５０４）。このメモリは、図２に示した第１〜第４のサーバ２１１〜２１４のメモリ２１１−３〜２１４−３である。
【００４７】
そして、ＯＳ１０１は、タスク状態をプロセス生成状態とする（ステップＳ５０５）。これは、図５Ａに示したプロセス生成状態（ステップＳ２）である。次に、ＯＳ１０１は、実行オブジェクトをメモリへコピーし（ステップＳ５０６）、タスク状態をプロセス生成状態とする（ステップＳ５０７）。そして、ＯＳ１０１は、実行待ちキューにＴＣＢ情報を接続する（ステップＳ５０８）。すなわち、図１に示した実行待ちキュー１０５にＴＣＢ情報１０４を格納する。
【００４８】
図６は、実行待ち処理及びタスク選択処理を示すフローチャートである。図６Ａは実行待ち処理１１４、図６Ｂはタスク選択処理１１５である。
図６Ａに示す実行待ち処理１１４において、ＯＳ１０１は、前の動作タスクのタスク制御テーブルより実行待ちキューＩＤを取得し（ステップＳ６０１）、実行待ちキューＩＤの実行待ちキューより次の動作タスクを選択する（ステップＳ６０２）。
【００４９】
次に、実行させるタスクがあるか否かを判断する（ステップＳ６０３）。
判断ステップＳ６０３で、実行させるタスクが存在する場合には、ＯＳ１０１は、優先レベルが低い実行中タスクを実行待ちキューに接続する（ステップＳ６０４）。この処理を、キューイング処理という。判断ステップＳ６０３で、実行させるタスクが存在しない場合は、処理を終了する。この場合、ＯＳ１０１は、アイドルタスクやアイドル処理を実行する。
【００５０】
次に、ＯＳ１０１は、実行中のタスク状態をプロセス実行可能状態に設定する（ステップＳ６０５）。そして、ＯＳ１０１は、図１に示したタスク選択処理１１５を実行する（ステップＳ６０６）。ここで、ＯＳ１０１は、タスク選択処理が選択したタスクを実行待ちキューからプロセッサへ割当てる実行待ちタスクを取り外す（ステップＳ６０７）。この処理をデキューイング処理という。そして、ＯＳ１０１は、当該プロセッサのプロセッサ状態情報のプロセッサ実行状態、実行タスクＩＤに次の実行タスク情報を記録し、待ちタスクを実行させる（ステップＳ６０８）。この処理をプロセッサ処理という。
【００５１】
続いて、図６Ｂに示すタスク選択処理１１５について説明する。まず、ＯＳ１０１は、前の動作タスクのタスク制御テーブルより実行待ちキューＩＤを取得する（ステップＳ６０９）。次に、ＯＳ１０１は、実行待ちキューＩＤの実行待ちキューより次の動作タスクを選択する（ステップＳ６１０）。ＯＳ１０１は、次の動作タスクのスケジューリングＩＤを取得する（ステップＳ６１１）。
ここで、ＯＳ１０１は、実行待ちキューＩＤの動作対象コアＩＤ，プロセッサＩＤ，  ＣＰＵボードＩＤを取得する（ステップＳ６１２）。次に、ＯＳ１０１は、コアＩＤに対するスケジュールＩＤが次の動作タスクのスケジューリングＩＤと等しく、スケジュールＩＤは、タスク同期であるか否かを判断する（ステップＳ６１３）。
【００５２】
判断ステップＳ６１３で、タスク同期である場合には、ＯＳ１０１は、図１に示したタスク同期処理１１６を実行する（ステップＳ６１４）。そして、ＯＳ１０１は、タスク同期処理が決定した次の実行タスク識別ＩＤをタスク選択処理により呼び出し元へ返す（ステップＳ６１５）。判断ステップＳ６１３で、タスク同期でない場合は、処理を終了する。
【００５３】
図７に、タスク同期処理１１６のフローチャートを示す。図７に示すタスク同期処理１１６では、ＯＳ１０１は、タスクスイッチ同期データを下記手順にて生成する（ステップＳ７０１）。
まず、第１に、前回送信のシーケンス番号に１を加算し、今回送信のシーケンス番号を生成し、データの先頭に格納する。
第２に、同期状態情報に現在の自ブレード内、コアの同期状態を格納する。
第３に、同期対象タスク情報にＴＣＢ内識別ＩＤを格納する。次に動作させるタスクの識別ＩＤのみでなく、実行待ちキューに接続されている実行待ちタスクの起動順から任意のタスク数のＴＣＢ内識別ＩＤを格納する。
【００５４】
第４に、データ識別情報にタスクスイッチ同期データの識別情報を格納する。
第５に、前回送信のシーケンス番号に１を加算し、今回送信のシーケンス番号を生成する。
第６に、タスクスイッチ同期データ全体のサム値を格納する。
次に、ＯＳ１０１は、タスクスイッチ同期データの転送要求をＣＰＵ情報交換ドライバに発行する（ステップＳ７０２）。ＯＳ１０１は、他ＣＰＵボードのタスクスイッチ同期データのＣＰＵ情報交換ドライバを介した更新を同データ内シーケンス番号の更新を判定して待つ（ステップＳ７０３）。
【００５５】
ここで、ＯＳ１０１は、タイムアウト設定テーブル内タイムアウト時間内に他ＣＰＵボードのタスクスイッチ同期データが更新されたか否かを判断する（ステップＳ７０４）。
判断ステップＳ７０４で、タスクスイッチ同期データが未更新の場合には、本処理を終了する。
【００５６】
判断ステップＳ７０４で、タスクスイッチ同期データが更新された場合には、ＯＳ１０１は、次に動作させるタスク識別ＩＤが全ＣＰＵボードにおいて同一かを判定し、ＹＥＳの場合は、次の動作対象タスク識別ＩＤを一致したタスク識別ＩＤとする（ステップＳ７０５）。
ステップＳ７０５の判定にてＮＯの場合には、ＯＳ１０１は、プロセッサ状態情報内スケジューリングＩＤに対応する同期論理ＩＤを同期論理設定テーブルより検索し、スケジュール判定情報をもとに次動作対象タスク識別ＩＤを決定する（ステップＳ７０６）。
【００５７】
図８に割込み処理１１７、タイマ割込み処理１１８及び同期待ち合わせ処理１１９のフローチャートを示す。図８Ａは割込み処理１１７、図８Ｂはタイマ割込み処理１１８、図８Ｃはタスク同期処理１１９である。
図８Ａに示す割込み処理１１７では、ＯＳ１０１は、割込み種別を読み出し（ステップＳ８０１）、次に、割込み種別を判定し、割込み種別毎の割込み処理を実行する（ステップＳ８０２）。
【００５８】
図８Ｂに示すタイマ割込み処理１１８は、図８Ａに示した割込み処理１１７において割込み種別がタイマ割込みの場合に実行される処理である。図８Ｂに示すタイマ割込み処理１１８では、ＯＳ１０１は、前回割込み処理からのタイマの経過時間を算出する（ステップＳ８０３）。ＯＳ１０１は、タイマ管理テーブルを参照し、待ち時間が経過したタスクの識別ＩＤを検索する（ステップＳ８０４）。
【００５９】
ＯＳ１０１は、タイムアップしたタスクのスケジューリングＩＤを取得し、同期対象か、否かを判定する（ステップＳ８０５）。同期対象でないときは処理を終了する。ＯＳ１０１は、タイムアップしたタスクの動作対象コアＩＤ，プロセッサＩＤ，ＣＰＵボードＩＤを取得する（ステップＳ８０６）。
【００６０】
コアＩＤに対するスケジュールＩＤが次動作タスクのスケジューリングＩＤと等しく、スケジュールＩＤは、タスク同期である場合か否かを判断する（ステップＳ８０７）。判断ステップＳ８０７で、タスク同期である場合には、ＯＳ１０１は、図１に示した同期待ち合わせ処理１１９を実行する（ステップＳ８０８）。
判断ステップＳ８０７で、タスク同期でない場合、又はステップＳ８０８の後にステップＳ８０９に移行する。
【００６１】
すなわち、同期待ちキューにタイムアップタスクのタスク識別ＩＤが登録されている場合に、ＯＳ１０１は、他ＣＰＵボードのタスクスイッチ同期データの更新を同データ内シーケンス番号の更新を確認する。そして、同期待ちキューに接続されているタスクと同一タスクが全ＣＰＵボードにてタイムアップした場合に、ＯＳ１０１は、同期待ちキューからはずし、実行待ちキューに登録する（ステップＳ８０９）。
【００６２】
図８Ｃに示す同期待ち合わせ処理１１９では、ＯＳ１０１は、遅延実行タスク同期データを下記手順にて生成する（ステップＳ８１０）。この処理は、図７のステップＳ７０１に示した第１〜第６の処理から一定時間経過後に実行されるため、連続番号で示す。
まず、第７に、前回送信のシーケンス番号に１を加算し、今回送信のシーケンス番号を生成し、データの先頭に格納する。
第８に、同期状態情報に現在の自ブレード内、コアの同期状態を格納する。
第９に、同期対象タスク情報にタイムアップしたタスクのＴＣＢ内識別ＩＤを格納する。
第１０に、データ識別情報に遅延実行タスク同期データの識別情報を格納する。
第１１に、前回送信のシーケンス番号に１を加算し、今回送信のシーケンス番号を生成する。
第１２に、タスクスイッチ同期データ全体のサム値を格納する。
【００６３】
次に、ＯＳ１０１は、遅延実行タスク同期データの転送要求をＣＰＵ情報交換ドライバに発行する（ステップＳ８１１）。ＯＳ１０１は、他のＣＰＵボードのタスクスイッチ同期データのＣＰＵ情報交換ドライバを介した更新を同データ内シーケンス番号の更新として確認する（ステップＳ８１２）。
そして、ＯＳ１０１は、遅延実行タスク同期データのタスク識別ＩＤが全ＣＰＵボードにおいて同一かを判定し、ＹＥＳの場合は、実行待ちキューにタイムアップタスクのタスク識別ＩＤを登録する。ＮＯの場合は、同期待ちキューにタイムアップタスクのタスク識別ＩＤを登録する（ステップＳ８１３）。
【００６４】
図９に同期システムコール実行処理１２０のフローチャートを示す。図９に示す同期システムコール実行処理１２０において、ＯＳ１０１は、本処理の呼び出し引数であるシステムコールＩＤ，  同期ポイントが同期システムコール設定テーブルに登録されているかを確認する（ステップＳ９０１）。
次に、ＯＳ１０１は、タスクの動作対象コアＩＤ，プロセッサＩＤ，ＣＰＵボードＩＤを取得し、同期システムコール設定テーブルと比較する（ステップＳ９０２）。そして、ＯＳ１０１は、コアＩＤに対するスケジュールＩＤが次動作タスクのスケジューリングＩＤと等しく、スケジュールＩＤは、タスク同期であるか否かを判断する（ステップＳ９０３）。判断ステップＳ９０３で、タスク同期である場合には、ＯＳ１０１は、図１に示した同期待ち合わせ処理１１９を実行する（ステップＳ９０４）。
【００６５】
そして、ＯＳ１０１は、同期待ちキューにタイムアップタスクのタスク識別ＩＤが登録されている場合に他ＣＰＵボードのタスクスイッチ同期データの更新を同データ内シーケンス番号の更新を確認する。そして、同期待ちキューに接続されているタスクと同一タスクが全ＣＰＵボードにてタイムアップした場合に同期待ちキューからはずし、実行待ちキューに登録する（ステップＳ９０５）。
【００６６】
図１０は、ＣＰＵ情報交換処理１２１の処理フローを示すフローチャートである。図１０ＡはＣＰＵ情報交換処理（送信部）、図１０ＢはＣＰＵ情報交換処理（受信部）である。図１０Ａに示すＣＰＵ情報交換処理（１２１）の送信部においては、ＯＳ１０１は、送信パラメータよりＣＰＵボードＮＯ．を取得し、タスク同期ＣＰＵ間交換情報の更新対象ＣＰＵボードＮＯ．の情報位置を特定する（ステップＳ１００１）。
次に、ＯＳ１０１は、特定したＣＰＵボードＮＯ．に対応したタスク同期ＣＰＵ間交換情報を更新する（ステップＳ１００２）。そして、ＯＳ１０１は、ＣＰＵ間交換情報交換ドライバ間の通信ヘッダに送信元ＣＰＵボードＮＯ．及び送信先ＣＰＵボードＮＯ．等の情報を格納し、送信先ＣＰＵボードＮＯ．に対し、データをブロードキャストする（ステップＳ１００３）。
【００６７】
図１０Ｂに示すＣＰＵ情報交換処理（１２１）の受信部においては、ＯＳ１０１は、ＣＰＵ間交換情報交換ドライバ間の通信ヘッダを参照し、送信元ＣＰＵボードＮＯ．及びタスク同期ＣＰＵ間交換情報の更新対象ＣＰＵボードＮＯ．の情報位置を特定する（ステップＳ１００４）。そして、ＯＳ１０１は、特定したＣＰＵボードＮＯ．に対応したタスク同期ＣＰＵ間交換情報を更新する（ステップＳ１００５）。
【００６８】
図１１に、タスクスイッチ同期データ及び動作チャートを示す。図１１Ａは第１〜第４のＣＰＵボードのタスクスイッチ同期データＡ−１、Ａ−２〜Ａ−５を示し、図１１Ｂは第１〜第４のＣＰＵボードに対応する計算機で動作するタスクのタイムチャートＢ１〜４を示す。タスクスイッチ同期データＡ−１、Ａ−２〜Ａ−５は、図４に示したタスクスイッチ同期データ４０１に対応する。
図１１Ａにおいて、Ａ−１に示す同期対象タスク同期データに格納されているタスク識別情報が、Ａ−２〜Ａ−５に示す第１〜第４のＣＰＵボードに対応する計算機において、識別ＩＤ：３００１０、３０００５の順でタスクが実行可能状態となり実行待ちキューに接続されたことを示す。
このデータを第１〜第４のＣＰＵボードに対応する計算機においてネットワークを介して交換した場合、図１に示したＯＳ１０１内タスク選択処理１１５、タスク同期処理１１６によりタスク動作は、図１１Ｂに示すタイムチャートとなる。
【００６９】
図１１Ｂに示すタイムチャートでは、タスク識別ＩＤ：３０００４のタスクが動作中であり、この処理を中断して次の実行タスクがＯＳ１０１に選択されるまでの動作を示している。Ｔａ期間でタスク識別ＩＤ  ３０００４が動作し、Ｔｂ期間でＯＳ処理（タスク選択処理、タスク同期処理等）が実行され、Ｔｃ期間でＯＳ１０１はタスクスイッチ同期データを待ち合わせをする。そして、任意の時間内にタスクスイッチ同期データが更新され、ＯＳ１０１はタスク同期処理により次にＣＰＵコアで実行させるタスクを選択し、Ｔｄ期間でタスク識別ＩＤ  ３００１０が動作することを示している。第１〜第４のＣＰＵボードのタスクのタイムチャートＢ−１〜Ｂ−４は同様となる。
【００７０】
図１２にタイマ同期データ及び動作チャートを示す。図１２Ａは第１〜第４のＣＰＵボードのタイマ同期タスク同期データＡ−１、Ａ−２〜Ａ−５を示し、図１２Ｂは第１〜第４のＣＰＵボードに対応する計算機で動作するタスクのタイムチャートＢ−１〜４を示す。タイマ同期タスク同期データＡ−１、Ａ−２〜Ａ−５は、図４に示したタイマ同期タスク同期データ４０２に対応する。
【００７１】
図１２Ａにおいて、Ａ−１に示すタイマ同期タスク同期データに格納されているタスク識別情報が、Ａ−２〜Ａ−５に示す第１〜第４のＣＰＵボードに対応する計算機において、識別ＩＤ：３００１０のタスクが任意の時間経過後にタイムアップのため、実行可能状態となったことを示す。
このデータを第１〜第４のＣＰＵボードに対応する計算機においてネットワークを介して交換した場合、図１に示したＯＳ１０１内タイマ割込み処理１１８、同期待ち合わせ処理１１９によりタスク動作は、図１２Ｂに示すタイムチャートとなる。
【００７２】
図１２Ｂに示すタイムチャートでは、タスク識別ＩＤ：３０００４のタスクが動作中であり、この処理を中断して次の実行タスクがＯＳ１０１に選択されるまでの動作を示している。Ｔａ期間でタスク識別ＩＤ：３０００４が動作し、Ｔｂ期間でＯＳ処理（割込み処理、タイマ割込み処理、同期待ち合わせ処理等）が実行され、Ｔｃ期間でタイマ同期タスク同期データを待ち合わせをする。そして、任意の時間内にタイマ同期タスク同期データが更新され、同期待ち合わせ処理により全計算機においてタイマ起動タスク（識別ＩＤ：３００１０）が実行可能状態のため、実行待ちキュー１０５に登録される。
【００７３】
そして、Ｔｄ期間でＯＳ処理（タスク選択処理、タスク同期処理等）が実行され、Ｔｅ期間でタスクスイッチ同期データを待ち合わせし、任意の時間内にタスクスイッチ同期データが更新される。その後、ＯＳ１０１はタスク同期処理により次にＣＰＵコアで実行させるタスクを選択し、Ｔｆ期間でタスク識別ＩＤ  ３００１０が動作することを示している。Ｔｅ期間においては、図１１と同様のタスクスイッチデータがＣＰＵボード１〜４に対応する計算機間で交換されたことを前提としている。第１〜第４のＣＰＵボードのタスクのタイムチャートＢ−１〜Ｂ−４は同様となる。
【００７４】
図１３にシステムコール同期データ及び動作チャートを示す。図１３Ａは第１〜第４のＣＰＵボードのシステムコール同期データＡ−１、Ａ−２〜Ａ−５を示し、図１３Ｂは第１〜第４のＣＰＵボードに対応する計算機で動作するタスクのタイムチャートＢ−１〜４を示す。システムコール同期データＡ−１、Ａ−２〜Ａ−５は、図４に示したシステムコール同期データ４０３に対応する。
【００７５】
図１３Ａにおいて、Ａ−１に示すシステムコール同期データに格納されているタスク識別情報が、Ａ−２〜Ａ−５に示す第１〜第４のＣＰＵボードに対応する計算機において、識別ＩＤ：３０００４のタスクがシステムコールＩＤ：１０のシステムコールを実行する。そして、このシステムコールが図１に示した同期システムコール設定テーブル１０８に設定されており、システムコール実行時に同期システムコール実行処理から記録されたことを示す。
【００７６】
このデータを第１〜第４のＣＰＵボードに対応する計算機においてネットワークを介して交換した場合、図１に示した同期システムコール実行処理１２０、同期待ち合わせ処理１１９によりタスク動作は、図１３Ｂに示すタイムチャートとなる。
図１３Ｂに示すタイムチャートでは、タスク識別ＩＤ：３０００４のタスクが動作中であり、システムコールＩＤ：１０のシステムコールを実行し、第１〜第４のＣＰＵボードに対応する計算機において、同期してシステムコールＩＤ：１０のシステムコールが実行されることを示している。
【００７７】
Ｔａ期間でタスク識別ＩＤ：３０００４が動作し、Ｔｂ期間でＯＳ処理（システムコール同期処理、同期待ち合わせ処理等）が実行され、Ｔｃ期間でＯＳ１０１はシステムコール同期データを待ち合わせをする。そして、任意の時間内にシステムコール同期データが更新され、同期待ち合わせ処理により全計算機において識別ＩＤ：３０００４のタスクのシステムコール同期データの一致が確認される。そして、Ｔｄ期間でシステムコールＩＤ：１０のシステムコールが実行され、Ｔｅ期間でタスク識別ＩＤ：３０００４が動作することを示している。
【００７８】
図１４は、タスクスイッチ同期データ、タスク識別ＩＤの動作レベル及びスケジュール判定情報による次動作タスクＩＤを示す図である。図１４Ａは第１〜第４のＣＰＵボードのタスクスイッチ同期データ４０１、図１４Ｂはタスクスイッチ同期データ内のタスク識別ＩＤの動作レベル、図１４Ｃは図１に示した同期論理テーブル１１２内のスケジュール判定情報に従い、タスク選択処理１１５が次に動作させるタスクＩＤを選択した例を示す。
図１に示した同期論理テーブル１１２内のスケジュール判定情報は、下記の第１〜第６に基づいて設定される。
第１に、全計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機内で一番早く実行可能待ちとなったタスクを実行させる。
第２に、全計算機、又は２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機、又は２つ以上の計算機において一番早く実行可能待ちとなったタスクを実行させる。
【００７９】
第３に、全計算機においてタイムアウト時間内に同一タスクが実行可能状態となった場合にのみ計算機内で一番早く実行可能待ちとなったタスクを実行させる。
第４に、全計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機内で実行可能待ちとなったタスクのうち一番優先レベルが高いタスクを実行させる。
第５に、全計算機、又は２つ以上の計算機においてタイムアウト時間内に同一タスクが同一順序に実行可能状態となった場合にのみ全計算機、又は２つ以上の計算機において実行可能待ちとなったタスクのうち一番優先レベルが高いタスクを実行させる。
第６に、全計算機内で一番早く実行可能待ちとなったタスクのうち優先レベルが一番高いタスクを実行させる。
【００８０】
なお、上述した本実施の形態例に限らず、本発明の要旨を逸脱しない限り、適宜変更しうることは言うまでもない。
【図面の簡単な説明】
【００８１】
【図１】本発明のＯＳ（オペレーティングシステム）内のタスク同期構成の説明図である。
【図２】本発明の前提となるシステム構成と本発明のシステム構成を示す図であり、図２Ａは前提となるシステム構成、図２Ｂはシステム構成である。
【図３】本発明におけるデータ構造を示す図であり、図３ＡはＴＣＢ、図３Ｂは実行待ちキュー、図３Ｃは同期待ちキュー、図３Ｄはプロセッサ状態情報、図３Ｅは同期システムコール設定テーブル、図３Ｆは実行コア割当てテーブル、図３ＧはＣＰＵタスク同期状態情報、図３Ｈはタイムアウト設定テーブル、図３Ｉは同期論理設定テーブルである。
【図４】タスク同期ＣＰＵ間交換情報１１３の構成を示す図である。
【図５】タスク状態遷移図及びタスク生成処理図を示す図であり、図５Ａはタスク（プロセス）状態遷移図、図５Ｂはタスク生成処理を示すフローチャートである。
【図６】実行待ち処理及びタスク選択処理を示すフローチャートであり、図６Ａは実行待ち処理、図６Ｂはタスク選択処理である。
【図７】タスク同期処理を示すフローチャートである。
【図８】割込み処理、タイマ割込み処理及びタスク同期処理のフローチャートを示し、図８Ａは割込み処理、図８Ｂはタイマ割込み処理、図８Ｃはタスク同期処理である。
【図９】同期システムコール実行処理を示すフローチャートである。
【図１０】ＣＰＵ情報交換処理を示すフローチャートであり、図１０ＡはＣＰＵ情報交換処理（送信部）、図１０ＢはＣＰＵ情報交換処理（受信部）である。
【図１１】タスクスイッチ同期データ及び動作チャートを示し、図１１Ａは第１〜第４のＣＰＵボードのタスクスイッチ同期データＡ−１、Ａ−２〜Ａ−５を示し、図１１Ｂは第１〜第４のＣＰＵボードに対応する計算機で動作するタスクのタイムチャートＢ−１〜Ｂ−４を示す。
【図１２】タイマ同期データ及び動作チャートを示し、図１２Ａは第１〜第４のＣＰＵボードのタイマ同期タスク同期データＡ−１、Ａ−２〜Ａ−５を示し、図１２Ｂは第１〜第４のＣＰＵボードに対応する計算機で動作するタスクのタイムチャートＢ−１〜Ｂ−４を示す。
【図１３】システムコール同期データ及び動作チャートを示し、図１３Ａは第１〜第４のＣＰＵボードのシステムコール同期データＡ−１、Ａ−２〜Ａ−５を示し、図１３Ｂは第１〜第４のＣＰＵボードに対応する計算機で動作するタスクのタイムチャートＢ−１〜Ｂ−４を示す。
【図１４】タスクスイッチ同期データ、タスク識別ＩＤの動作レベル及びスケジュール判定情報による次動作タスクＩＤを示し、図１４Ａはタスクスイッチ同期データ、図１４Ｂはタスク識別ＩＤの動作レベル、図１４Ｃはスケジュール判定情報による次動作タスクＩＤを示す。
【符号の説明】
【００８２】
１０１…オペレーティング・システム、１０２…タスク生成処理、１０３…タスク、１０４…タスク制御ブロック（ＴＣＢ）、１０５…実行待ちキュー、１０６…同期待ちキュー、１０７…プロセッサ状態情報、１０８…同期システムコール設定テーブル、１０９…実行コア割当テーブル、１１０…ＣＰＵタスク同期状態情報、１１１…タイムアウト設定テーブル、１１２…同期論理設定テーブル、１１３…タスク同期ＣＰＵ間交換情報、１１４…実行待ち処理、１１５…タスク選択処理、１１６…タスク同期処理、１１７…割込み処理、１１８…タイマ割込み処理、１１９…同期待ち合わせ処理、１２０…同期システムコール実行処理、１２１…ＣＰＵ情報交換処理
【図１】
0005176230.tif 000002
【図２】
0005176230.tif 000003
【図３】
0005176230.tif 000004
【図４】
0005176230.tif 000005
【図５】
0005176230.tif 000006
【図６】
0005176230.tif 000007
【図７】
0005176230.tif 000008
【図８】
0005176230.tif 000009
【図９】
0005176230.tif 000010
【図１０】
0005176230.tif 000011
【図１１】
0005176230.tif 000012
【図１２】
0005176230.tif 000013
【図１３】
0005176230.tif 000014
【図１４】
0005176230.tif 000015