他の計算機と同じタスクを処理する計算機であって、前記他の計算機と同期をとってタスクを処理する同期プロセッサと、前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、当該同期プロセッサ及び当該非同期プロセッサにタスクを割り当てるディスパッチャを有しており、前記ディスパッチャは、タスクが前記他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは前記同期プロセッサに、前記他の計算機との同期が不要な非同期タスクは前記非同期プロセッサに割り当てる計算機。請求項1記載の計算機であって、更に、前記同期プロセッサに割り当てられたタスクの状態を管理する同期タスク管理テーブルと、前記非同期プロセッサに割り当てられたタスクの状態を管理する非同期タスク管理テーブルとを有しており、前記計算機と前記他の計算機は前記同期タスク管理テーブルの内容を、タスク制御用共有メモリ区画を介して相互に通信して交換しており、前記ディスパッチャは、前記計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、前記計算機の前記同期タスク管理テーブルに登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる計算機。請求項2記載の計算機であって、前記ディスパッチャは、前記非同期タスク管理テーブルに登録されている複数の非同期タスクの内の一を選択して、前記非同期プロセッサに実行させる計算機。請求項3記載の計算機であって、前記ディスパッチャは、前記同期プロセッサが実行している実行中同期タスクを、他のタスクに切り替える切替ポイントを検出した場合に、前記実行中同期タスクの状態を待機中に変更し、前記計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、前記計算機の前記同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる計算機。請求項4記載の計算機であって、前記ディスパッチャは、当該計算機の前記同期タスク管理テーブルと、前記他の計算機の前記同期タスク管理テーブルの双方に、実行可能タスクとして登録されている同期タスクを選択して、前記同期プロセッサに実行させる計算機。請求項5記載の計算機であって、前記ディスパッチャは、前記同期プロセッサが実行している実行中同期タスクを非同期プロセッサに割り当てる切替ポイントを検出した場合に、前記実行中同期タスクを前記同期タスク管理テーブルから削除して、前記非同期タスク管理テーブルに当該同期タスクを実行可能タスクとして登録する計算機。請求項6記載の計算機であって、前記ディスパッチャは、前記同期プロセッサから前記非同期プロセッサへ割当を変更した前記同期タスクを再び前記同期プロセッサに割り当てる場合に、当該同期タスクを前記非同期タスク管理テーブルから削除して、前記同期タスク管理テーブルに実行可能タスクとして登録し、前記他の計算機との間で前記同期タスク管理テーブルの内容を交換して、前記計算機の前記同期タスク管理テーブルの内容と前記他の計算機の前記同期タスク管理テーブルの内容とに基づいて、前記計算機の前記同期タスク管理テーブルに実行可能タスクとして登録されている複数の同期タスクの内の一を選択して前記同期プロセッサに実行させる計算機。請求項7記載の計算機であって、前記切替ポイントは、前記実行中同期タスクが呼び出した、オペレーションシステムへのシステムコールである計算機。請求項7記載の計算機であって、前記切替ポイントは、前記実行中同期タスクが呼び出した、他のタスクから値を取得、もしくは埋め込みをするための命令である計算機。請求項7記載の計算機であって、前記非同期タスク管理テーブルは、複数の同期タスクを当該非同期タスク管理テーブルに割り当てられる順番に管理しており、前記ディスパッチャは、前記順番に基づいて前記非同期プロセッサに実行させる同期タスクを選択する計算機。請求項7記載の計算機であって、前記他の計算機から前記切替ポイントを検知した旨の通知を所定の時間内に受信しない場合に、当該他の計算機に同期が外れている旨の通知を送信する計算機。請求項3記載の計算機であって、前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクについて前記ディスパッチャは、当該タスクの起動を指示した親タスクが割り当てられているプロセッサの種別に基づいて、当該親タスクが同期プロセッサに割り当てられている場合には当該タスクを同期プロセッサに、当該親タスクが非同期プロセッサに割り当てられている場合には非同期プロセッサに当該タスクを割り当てる計算機。請求項12記載の計算機であって、更に記憶装置を有しており、前記記憶装置は、前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクについて、当該同期プロセッサおよび当該非同期プロセッサ各々について、当該タスクの実行契機を判断するために用いられる閾値を格納しており、前記同期プロセッサ用の前記閾値は、前記非同期プロセッサ用の前記閾値とは異なる値に設定されている計算機。請求項13記載の計算機であって、前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクとは、当該計算機が有するメモリの回収タスクである計算機。請求項14記載の計算機であって、前記メモリの回収タスクの実行契機を判断するために用いられる閾値は、メモリの空き容量についての閾値であり、前記同期プロセッサ用の閾値の方が前記非同期プロセッサ用の閾値より小さく設定されている計算機。他の計算機と同じタスクを処理する計算機であって、前記他の計算機と同期をとってタスクを処理する同期プロセッサと、前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、当該同期プロセッサ及び当該非同期プロセッサにタスクを割り当てるディスパッチャを有しており、前記ディスパッチャによって前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクには、当該同期プロセッサおよび当該非同期プロセッサ各々について、当該タスクの実行契機を判断するために用いられる閾値が設定されており、前記同期プロセッサ用の前記閾値は、前記非同期プロセッサ用の前記閾値とは異なる値に設定されており、前記同期プロセッサは前記同期プロセッサ用の前記閾値に基づいて、前記タスクの実行契機を判断し、前記非同期プロセッサは前記非同期プロセッサ用の前記閾値に基づいて、前記タスクの実行契機を判断する計算機。請求項16記載の計算機であって、前記同期プロセッサ又は前記非同期プロセッサのいずれにも実行され得るタスクとは、当該計算機が有するメモリの回収タスクである計算機。請求項17記載の計算機であって、前記メモリの回収タスクの実行契機を判断するために用いられる閾値は、メモリの空き容量についての閾値であり、前記同期プロセッサ用の閾値の方が前記非同期プロセッサ用の閾値より小さく設定されている計算機。他の計算機と同じタスクを処理する計算機の制御方法であって、前記計算機が、前記他の計算機と同期をとってタスクを処理する同期プロセッサと、前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、当該同期プロセッサ及び当該非同期プロセッサにタスクを割り当てるディスパッチャを有しており、前記ディスパッチャは、タスクが前記他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは前記同期プロセッサに、前記他の計算機との同期が不要な非同期タスクは前記非同期プロセッサに割り当てる計算機制御方法。他の計算機と同じタスクを処理する計算機であって、前記他の計算機と同期をとってタスクを処理する同期プロセッサと、前記他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、当該同期プロセッサ及び当該非同期プロセッサにタスクを割り当てるディスパッチャを有している計算機に、前記ディスパッチャが、タスクが前記他の計算機と同期をとって処理すべきタスクか否かを判断し、当該判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは前記同期プロセッサに、前記他の計算機との同期が不要な非同期タスクは前記非同期プロセッサに割り当てる処理を実行させる、計算機制御プログラム。これまで専用ハードウェアによって各計算機が接続されていた従来のフォールトトレラントシステムの構成では、各計算機において同一時刻に同一のプログラムを実行することは可能であった。一方、近年ではネットワークの高速化、及び計算機の汎用化に伴い、専用ハードウェアではなく、一般的なネットワークを利用して複数計算機を接続する技術が発達するとともに、計算機システムが処理する情報量の拡大に伴い、各処理ステップを複数のタスクとして分解し、マルチタスク実行可能OSが複数のタスクを切り換えながら実行するニーズがある。しかしながら、マルチタスクを実行可能なOSが搭載されたマルチプロセッサを有する計算機において、他の計算機と同期をとるべき同期タスクと、他の計算機との同期が必要ない非同期タスクとを、どのようにマルチプロセッサに実行させるかについては、考えられてこなかった。本発明は上記のような課題に鑑みてなされたものであり、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期を必要とする同期タスクと、タスク同期を必要としない非同期タスクのプロセッサへの割当についての技術を提供する。計算機は、他の計算機と同期をとってタスクを処理する同期プロセッサと、他の計算機と同期をとらずにタスクを処理する非同期プロセッサと、同期プロセッサ及び非同期プロセッサにタスクを割り当てるディスパッチャとを有する。ディスパッチャは、タスクが他の計算機と同期をとって処理すべきタスクか否かを判断し、判断結果に基づいて、前記他の計算機と同期をとりながら処理すべき同期タスクは同期プロセッサに、他の計算機との同期が不要な非同期タスクは非同期プロセッサに割り当てる。その他本願が開示する課題やその解決方法については、発明の実施形態の欄及び図面により明らかにされる。本発明によれば、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期を実現することができる。---システム構成---以下に実施形態について図面を用いて詳細に説明する。図1は、本実施形態の計算機システム10の構成図である。図2は計算機100A内の構成を詳細に示す図である。計算機システム10は、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムであって、計算機間でのタスク同期を行い、フォールトトレラントシステムを構成するコンピュータシステムである。計算機システム10は、少なくとも2台の計算機100Aと計算機100Bがネットワーク400および500によって接続されている。計算機100Aと計算機100Bは同一の構成を有しており、以下では、詳細な構造については計算機100Aについてのみ説明する。計算機100Aは、2つのプロセッサ180A180A-1および180A-2、タイマー170A、通信インターフェース150Aおよび160A、ならびにメモリ110Aを備え、これらはバス190Aにて接続されている。本実施形態では、プロセッサ180A-1は、計算機100Bとの間でタスクを同期するタスク同期用として用い、プロセッサ180A-2は、計算機100Bとは独立して動作するタスク非同期用として用いるものとする。なお、タスク非同期用のプロセッサ180A-2の用途が一般的である。メモリ110Aは、2つのタスクプログラム120120Aおよび120B、オペレーティングシステム140A、ならびに、計算機100Bとの間でのタスク同期に必要な情報を送受するためのタスク制御用共有メモリ区画130Aなどを備えている。なお、タスクプログラム120には、オペレーティングシステムを実現するために必要なシステムプログラムと、それ以外のユーザプログラムとを含む。本実施形態では、システムプログラムは不図示とし、ユーザプログラムのみをタスクプログラム120として図示することとする。オペレーティングシステム140Aは、複数のタスクを実行することのできるマルチタスク実行可能なオペレーティングシステムである。なお、オペレーティングシステム140Aは、プロセッサ180Aがメモリ110Aに記憶されているシステムプログラムを実行することにより実現される。すなわち、オペレーティングシステム140Aも、タスクが実行されることにより実現される。オペレーティングシステム140Aは、タスクプログラム120の実行に係る処理をタスクに分解し、各タスクをプロセッサ180A-1または180A-2に割り当てるディスパッチャ141A、タスク同期を行うためにタスク間メッセージを考慮したタスク同期を行うためのシグナル管理テーブル112Aタスク間メッセージ管理テーブル143A、プロセッサ180A-1および180A-2に割り当てたタスクに関する情報タスク制御ブロック;TaskControlBlockという。以下、TCBと表記する。を記憶する2つのタスク管理テーブル143143A-1および143A-2、同期計算機管理テーブル111Aを備える。タスク管理テーブル143A-1は、プロセッサ180A-1に割り当てられたタスクのTCBを記憶し、タスク管理テーブル143A-2は、プロセッサ180A-2に割り当てられたタスクのTCBを記憶する。オペレーティングシステム140Aは、計算機100A内のリソースを複数のタスクに割り当てるために、プリエンプションを行う技術を提供している。プリエンプションとは、実行中のタスクを一時的に打ち切り、他のタスクにリソースを使用させることである。後述するように、各タスクには優先度が設定可能となっており、オペレーティングシステム140Aは、優先度に応じて、タスクの実行順序を決定する。実行優先度の高いタスクが存在する場合は、実行優先度が低いタスクはプリエンプションにより実行権限を一時的に打ち切られる。オペレーティングシステム140Aは、タスクごとに定められる所定の時間タスクを実行した場合にも、そのタスクの実行を打ち切る。タスクプログラム120には、複数の命令が含まれる。図2には、タスクプログラム120Aの構成例が図示されている。タスクプログラム120Aには、制御命令列A120-1、システムコール120-2、および制御命令列B120-3が含まれている。ここでシステムコール120-2とは、タスクからオペレーティングシステム140Aに対する命令である。システムコール120-2としては、例えば、ディスクへのアクセス命令や、タイマー170Aからの時刻の取得命令などがある。オペレーティングシステム140Aは、タスクから呼び出されるシステムコールに応じて、例えば、ディスクへのアクセスや、タイマー170Aからの時刻の取得を行うなどの各種の処理を行う。近年計算機は、より高速に処理を実行するためにキャッシュ機能を提供している。プログラムが使用する情報がキャッシュにヒットする場合、計算機が保有するメモリから情報を取得する必要がないため、高速に動作することが可能となる。本実施形態の計算機システム10では、クロック同期などを行うことなく計算機100Aと計算機100Bとは独立に動作するため、例えば、計算機100Aにおいてキャッシュに情報が格納された場合にも計算機100Bではキャッシュに情報が格納されないという状況が発生し得る。しかし、このような状況においても、後述するように、計算機100A及び100Bがタスクをディスパッチする際に、同じタスクをディスパッチするように情報を交換することにより同期を行うことが可能となっている。プロセッサ180A-1は、プログラムカウンタ180A-1a、汎用レジスタ180A-1b、および制御レジスタ180A-1cを備えている。なお、プロセッサ180A-2も同様の構成である。プログラムカウンタ180A-1aは、プロセッサ180A-1が次に実行するべき命令が格納されているメモリ110A上のアドレスを指し示すレジスタである。プロセッサ180A-1がメモリ110Aから命令を読み込む度に、読み取った命令の分だけ値が増加する。汎用レジスタ180A-1bは、各種の値を記憶するレジスタである。汎用レジスタ180A-1bは、プロセッサ180A-1が行う演算処理などに用いられる。制御レジスタ180A-1cは、各種のフラグをリセットし、あるいはプロセッサ180A-1の動作モードを特定のモード例えば、低消費電力モードにするように指示するためのレジスタである。図3は、タスク管理テーブル143の構成例を示す図である。計算機100Aで実行されるタスクは、生成されてから消滅するまでの間、実行中の状態、実行可能であるがまだ実行されていない状態実行可能状態、条件成就や入力などを待機している状態待機状態の間でその状態が遷移する。タスク管理テーブル143には、実行可能状態であるタスクに係るTCB146が格納される実行可能タスクキュー144、待機状態であるタスクに係るTCB146が格納される待機状態タスクキュー145、および実行中のタスクのTCB146を格納する実行中タスク147が含まれる。一般的には実行可能タスクキュー144には、優先度の高い順にTCB146が格納され、先頭から順にタスクがディスパッチされることにより、優先度が高い順にタスクがディスパッチされるようになっている。TCB146には、ポインタ146-0が含まれる。実行可能タスクキュー144および待機状態タスクキュー145は、キューの先頭のTCB146を示すポインタを含み、実行可能タスクキュー144および待機状態タスクキュー145に格納されているTCB146のポインタ146-0には、キューにおける次のTCB146を示すポインタが格納される。キューの最後尾のTCB146のポインタ146-0にはnullが設定される。また、TCB146には、タスクID146-1、プログラムカウンタ146-2、汎用レジスタ146-3、制御レジスタ146-4、割り込み可否146-5、プリエンプトタイプ146-6が含まれる。タスクは、タスクID146-1により識別される。プログラムカウンタ146-2は、プロセッサ180A-1のプログラムカウンタ180A-1aに設定される値である。汎用レジスタ146-3は、プロセッサ180A-1の汎用レジスタ180A-1bに設定される値である。制御レジスタ146-4は、プロセッサ180A-1の制御レジスタ180A-1cに設定される値である。ディスパッチャ141Aは、プロセッサ180A-1において実行中のタスクの実行を打ち切って他のタスクに切り替える場合に、プログラムカウンタ180A-1a、汎用レジスタ180A-1b、および制御レジスタ180A-1cの内容をTCB146に設定して、タスクが実行可能状態である場合には実行可能タスクキュー144に追加し、タスクが待機状態である場合には、待機状態タスクキュー145に追加し、実行可能タスクキュー144から1つTCB146を読み出して、TCB146のプログラムカウンタ146-2、汎用レジスタ146-3、および制御レジスタ146-4の内容をプロセッサ180A-1に設定することにより、タスクの切り替えを行う。本実施形態では、ディスパッチャ141Aが、プロセッサ180Aのカウンタやレジスタの内容をTCB146に設定して実行中のタスクを打ち切ることをアンディスパッチといい、TCB146に基づいてプロセッサ180Aに新たなタスクを実行させることをディスパッチということとする。タスク制御用共有メモリ区画130は、各計算機100間で分散共有されるメモリである。タスク制御用共有メモリ区画130は、タスクの同期処理を行う頻度よりも高い頻度でOS140により計算機100間で内容の同期が行われているものとする。後述するように、タスク制御用共有メモリ区画130には、実行可能タスクキュー144に格納されているTCB146がコピーされる。これによりディスパッチャ141は、各計算機100における実行可能タスクキュー144に格納されているTCB146を交換することが可能になっている。同期計算機管理テーブル111は、同期をとろうとする計算機100を示す識別情報に対応付けて、当該計算機100と同期がとれているか否かを示すフラグやステータス情報を管理する。シグナル管理テーブル112には、タスク間通信のためにシグナルが発生するごとに、発生したシグナルに関する情報がキューとして登録される。以下、本実施形態における計算機制御方法の実際手順について図に基づき説明する。以下で説明する計算機制御方法に対応する各種動作は、計算機システム10を構成する各装置のRAMRandomAccessMemoryに読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。---非同期ディスパッチ---図4は、非同期用のプロセッサ180A-2に対して行われるディスパッチ待ち状態からディスパッチを説明する図である。なお、一般的なプロセッサに対するディスパッチの処理も、図4に示すようなものになる。ディスパッチャ141Aは、タスク管理テーブル143A-2の実行可能タスクキュー144より、先頭のTCB146Aを選定するS701。すなわち、ディスパッチャ141Aは、実行可能タスクキュー144のポインタが示すTCB146Aを選定する。ディスパッチャ141Aは、選定したTCB146Aより、プログラムカウンタ情報146-2の情報をプログラムカウンタ180A-2aに格納し、汎用レジスタ情報146-3の情報を汎用レジスタ180A-2bに格納し、制御レジスタの情報146-4を制御レジスタ180A-2cに格納するS702。ディスパッチャ141Aは、実行中タスク147のポインタが示すTCB146Eを待機状態タスクキュー145の最後尾に追加する。すなわち、ディスパッチャ141は、待機状態タスクキュー145のポインタが示すTCB146Cから、TCB146のポインタ146-0がnullになる最後尾のTCB146Dまで辿り、最後尾のTCB146Dのポインタ146-0にTCB146Eを示すポインタを設定し、TCB146Eのポインタ146-0にnullを設定する。ディスパッチャ141Aは、実行可能タスクキュー144の先頭から選定したTCB146Aを実行中タスク147として設定する。すなわち、ディスパッチャ141Aは、TCB146Aを示すポインタを実行中タスク147のポインタに設定するS703。また、ディスパッチャ141Aは、実行可能タスクキュー144のポインタに、TCB146Aの次に位置するTCB146Bを示すポインタを設定する。ディスパッチャ141Aは、プロセッサ180A-2に実行を指示するS704。このようにして、プロセッサ180A-2におけるタスクの切り替えが行われる。---非同期アンディスパッチ---図5は、非同期用プロセッサ180A-2に対して行われるアンディスパッチディスパッチから待ち状態を説明する図である。なお、一般的なプロセッサに対するアンディスパッチの処理も、図5に示すようなものになる。ディスパッチャ141Aは、プロセッサ180A-2に実行中断を指示しS705、プロセッサ180A-2の状態を、実行中タスク147のポインタが示すTCB146Aに退避する。すなわち、ディスパッチャ141Aは、プログラムカウンタ180A-2aの情報をプログラムカウンタ情報146-2に格納し、汎用レジスタ180A-2bの情報を汎用レジスタ情報146-3に格納し、制御レジスタ180A-2cの情報を制御レジスタ情報146-4に格納するS706。これにより、プロセッサ180A-2の状態がTCB146Aに退避され、アンディスパッチ処理が終了する。---同期ディスパッチ---図6は、ディスパッチャ141によるオペレーティングシステム140内での同期用のプロセッサ180A-1に対する同期ディスパッチを説明する図である。図6に示す処理は、オペレーティングシステム140内タスク同期制御待ち状態からディスパッチである。一般的なディスパッチとの違いはステップS714の前に同期処理が行われることである。なお、図6のS714は、図4のS702~S704に対応する。オペレーティングシステム140Aにおいてディスパッチャ141Aが起動されるとS710、ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1内の実行可能タスクキュー144以下、実行可能タスクキュー144Aという。の内容と、タスク管理テーブル143B-1内の実行可能タスクキュー144以下、実行可能タスクキュー144Bという。の内容とを通信インターフェース160および150を介して交換し、各同期計算機100Aと100Bの制御用共有メモリ区画130A、130Bに各々格納するS712。ディスパッチャ141Aは、実行可能タスクキュー144Aに登録されているTCB146と、実行可能タスクキュー144Bに登録されているTCB146との両方の情報を制御用共有メモリ区画130より取得し、優先度を含めて一致化しているかを確認し、次にプロセッサ180A-1に割り当てるべきタスクを選定する。S713。図7は、プロセッサ180A-1に割り当てるべきディスパッチするべきタスクが存在する場合のタスクの選定処理の一例を説明する図である。各計算機100において同一優先度の実行可能タスクキュー141に同時に複数のタスクが存在する場合を想定している。ディスパッチャ141Aは、実行可能タスクキュー144の内容をタスク制御用共有メモリ区画130Aに書き込む。上述したように、タスク制御用共有メモリ区画130Aは、他の計算機100と共有されているので、各計算機100の実行可能タスクキュー144の内容がタスク制御用共有メモリ区画130Aに書き込まれることになる。ディスパッチャ141Aは、同期計算機管理テーブル111Aを参照し、同期を取る計算機100以下、同期計算機ともいう。がn台であることを確認するS7131。ディスパッチャ141Aは、同期を取る計算機100のそれぞれからタスク制御用共有メモリ区画130Aに書き込まれているTCB146のタスクID146-1のうち、タスク制御用共有メモリ区画130Aにn個存在するものがあるか否かを判断するS7132。ディスパッチャ141Aは、n個存在するタスクIDのうち、識別子が最も若い同期計算機100の実行可能タスクキュー144の最も先頭に近いものに対応するタスクをディスパッチするタスクとして選定するS7133。ディスパッチャ141Aは、上記n個存在するタスクID146-1がない場合には、タスクID146-1がn個タスク制御用共有メモリ区画130Aに書き込まれるまで、所定のタイムアウト時間待機する。タイムアウト時間が経過しても、n個のタスクID146-1が書き込まれない場合には、いずれかの計算機100の同期が外れた事が考えられる。そこで、タイムアウト時間が経過した場合、ディスパッチャ141Aは、nを1つ減算しS7134、nが2より多い場合にはS7135:NO、n個のタスクID146-1がタスク制御用共有メモリ区画130Aに書き込まれているか否かを判断するS7136。ディスパッチャ141Aは、上記n個のタスクID146-1が存在する場合S7136:YES、当該タスクID146-1のうち識別子が最も若い計算機100の実行可能タスクキュー144の最も先頭に近いものを選択し、選択したタスクID146-1が実行可能タスクキュー144に含まれていない計算機100を、同期外れを起こした計算機100として、同期計算機管理テーブル111Aより除外するS7137。ディスパッチャ141Aは、S7133に進み、同期が外れた計算機100を除外した上で、上記選択したタスクIDに対応するタスクをディスパッチするタスクとして選定する。ディスパッチャ141Aは、n個のタスクID146-1がタスク制御用共有メモリ区画130Aに書き込まれていない場合にはS7136、S7134に戻り、さらにnを1減算する。nが2以下、すなわち同期している計算機100が2台以下となり、多数決が取れない場合、もしくは、nが1で同期する計算機100が1台しか存在しなくなった場合にはS7135:YES、ディスパッチャ141Aは、同期計算機100のうち識別子の最も若い計算機100を同期計算機管理テーブル111Aに残し、その他の計算機100を同期計算機管理テーブル111Aから除外するS7138。ディスパッチャ141Aは、S7133に進み、同期計算機管理テーブル111Aに残された計算機100の実行可能タスクキュー144の最も先頭のタスクID146-1に対応するタスクをディスパッチするタスクとして選定する。以上のようにして、同期計算機管理テーブル111を使用し、同期計算機情報を更新しながら多数決によりタスクの選定が行われる。図7の処理によりディスパッチすべきタスクが選定されると、ディスパッチャ141Aは、図4のS702~S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS714。以上のようにして、全ての計算機100において、実行可能タスクキュー144を交換した上で、全ての実行可能タスクキュー144に基づいてディスパッチすべきタスクを決定するので、全ての計算機100において同じタスクを次に割り当てるタスクに決定することができる。これにより、実行可能タスクキュー144に登録されているTCB146が計算機100によって異なる場合でも、全ての計算機100において同じタスクがディスパッチされるようにすることができる。よって、クロック同期等を行うことなく、タスクの同期を行うことができる。---同期アンディスパッチ---図8は、ディスパッチャ141によるオペレーティングシステム140内での同期用のプロセッサ180A-1に対するアンディスパッチを説明する図である。図8に示す処理は、オペレーティングシステム140内タスク同期制御実行状態から待ち状態である。ディスパッチャ141Aは、オペレーティングシステム140Aからタスク120Bを待機させる旨の指示を受けるとS715、プロセッサ180A-1が実行中であるタスク120Bの情報を回収するS716。すなわち、ディスパッチャ141Aは、図5のS705およびS706と同様に、プロセッサ180A-1に実行を中断するように指示し、プロセッサ180A-1のプログラムカウンタ180A-1a、汎用レジスタ180A-1bおよび制御レジスタ180A-1cの内容を、タスク管理テーブル143A-1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、TCB146Eを、タスク管理テーブル143A-1の待ち状態タスクキュー145に移動するS717。---同期アンディスパッチ---上記のように、ディスパッチおよびアンディスパッチのタイミング切替可能ポイントは、オペレーティングシステム140Aのディスパッチャ141Aが決定するが、タスクプログラム120がそのタイミングを指示するようにすることもできる。この場合、所定のシステムコールを呼び出すAPIApplicationProgramInterfaceを規定しておくようにする。以下、ディスパッチやアンディスパッチのタイミングを決定するためのAPIに規定されたシステムコールを切替システムコールという。また、図2のタスクプログラム120Aに含まれるシステムコール120-2は、切替システムコールであるものとする。図9は、切替システムコールが呼び出された場合のアンディスパッチを説明する図である。図9に示す処理は、ディスパッチャ141によるタスク内でのAPIを介したタスク同期制御実行状態から待ち状態である。システムコール120-2がアンディスパッチを指示する切替システムコールであり、タスクがシステムコール120-2を呼び出すとS720、ディスパッチャ141Aは、図8のS716、S717の処理を行う。---APIによる同期ディスパッチ---図10は、切替システムコールが呼び出された場合のディスパッチを説明する図である。図10に示す処理は、ディスパッチャ141によるタスク内でのAPIを介したタスク同期制御待ち状態から実行状態である。システムコール120-2がディスパッチを指示する切替システムコールであり、タスクが、切替先としてタスク120Aを指定してシステムコール120-2を呼び出した場合S730、ディスパッチャ141Aは、タスク管理テーブル143A-1内の待ち状態タスクキュー145に格納されている、タスク120Aに係るTCB146を、実行可能タスクキュー144に移動するS732。ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換するS733。ディスパッチャ141Aは、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS734。ディスパッチャ141Aは、図4のS702-S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS735。---同期非同期の切り替え---オペレーティングシステム140Aは、例えば、プログラムの起動時にユーザから指定されたオプションにより、当該プログラムの実行に係るタスクを他の計算機100と同期すべきか否かを決定することができる。ディスパッチャ141Aは、同期すべきタスクは同期用のプロセッサ180A-1に割り当て、非同期でよいタスクは非同期用のプロセッサ180A-2に割り当てる。オペレーティングシステム140Aは、タスクにおいて実行される処理に応じてタスクを同期すべきか否かを決定することもできる。例えば、タスクから同期を指示する所定のシステムコール以下、同期システムコールという。が呼び出された場合、ディスパッチャ141Aは、そのタスクを同期用のプロセッサ180A-1に割り当て、タスクから非同期を指示する所定のシステムコール以下、非同期システムコールという。が呼び出された場合には、そのタスクを非同期用のプロセッサ180A-2に割り当てるようにすることができる。図11は、断片化したメモリに連続領域のメモリ領域を確保する処理を行うタスクの一例を示す図である。すなわち、連続したメモリ領域が確保できるか否かが判断されS12001、連続したメモリ領域が確保できない場合にはS12001:NO、メモリの回収タスクが起動されS12002、連続したメモリ領域を確保できる場合にはS12001:YES、当該連続したメモリ領域を確保することになるS12003。各計算機100におけるメモリの使用状況等は異なることが多いので、図11のタスクが同期用のプロセッサ180A-1にディスパッチされてしまうと、同期を取ることが難しくなる場合がある。そこで、連続したメモリ領域の確保を行う処理など、各計算機100の状態に依存する処理以下、環境依存処理という。を行うタスクを同期用のプロセッサ180A-1に割り当てる場合には、図12に示すように、環境依存処理を行う前にタスクを非同期とし、環境依存処理の後に処理を行う場合にはタスクを同期するようにすることができる。すなわち、タスクが非同期システムコールを呼び出すとS12004、ディスパッチャ141Aは、当該タスクを同期用プロセッサ180A-1から非同期用プロセッサ180A-2に割り当てを変更することで、非同期に上記図11と同様にして連続したメモリ領域が確保されることになる。なお、プロセッサ180A間のタスクの割り当ての変更処理の詳細については後述する。次に、タスクが同期システムコールを呼び出すとS12005、ディスパッチャ141Aは、非同期用プロセッサ180A-2から同期用のプロセッサ180A-1に当該タスクの割り当てを変更し、これによりそれ以後のタスクは同期をとって実行されることになる。このように、タスクにおいて実行される処理に応じて同期及び非同期を切り替えるようにすることで、同期に適さない計算機100それぞれの資源や環境に応じた処理を行う場合には、非同期でタスクを実行し、それ以外の場合には同期させてタスクを実行するようにすることもできる。---同期タスクの非同期への変更---図13は、同期用のプロセッサ180A-1から非同期用のプロセッサ180A-2にタスクを割り当てるプロセッサを変更する、オペレーティングシステム140内における同期タスクの非同期化処理を説明する図である。図13に示す処理は、オペレーティングシステム140内タスク同期制御実行状態から別コアでの非同期実行状態である。オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを非同期にするように指示した場合S740、ディスパッチャ141Aは、同期用のプロセッサ180A-1が実行しているタスク120Bの情報を回収するS741。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A-1に実行を中断するように指示し、プロセッサ180A-1のプログラムカウンタ180A-1a、汎用レジスタ180A-1bおよび制御レジスタ180A-1cの内容を、タスク管理テーブル180A-1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A-1に対応するタスク管理テーブル143A-1からタスク120Bに対応するTCB146Eを削除しS742、非同期用のプロセッサ180A-2に対応するタスク管理テーブル143A-2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録するS743。これにより、ディスパッチャ141Aは、タスク管理テーブル143A-2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図4に示すディスパッチを行い、プロセッサ180A-2においてタスク120Bが実行されるS744。---非同期タスクの同期への変更---図14は、非同期用のプロセッサ180A-2から同期用のプロセッサ180A-1にタスクを割り当てるプロセッサを変更する処理を説明する図である。図14に示す処理は、オペレーティングシステム140内タスク同期制御別コアでの非同期実行状態から同期コアでのディスパッチである。オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを同期するように指示した場合S750、ディスパッチャ141Aは、プロセッサ180A-2が実行しているタスク120Bの情報を回収するS751。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A-2に実行を中断するように指示し、プロセッサ180A-2のプログラムカウンタ180A-2a、汎用レジスタ180A-2bおよび制御レジスタ180A-2cの内容を、タスク管理テーブル180A-2に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A-2に対応するタスク管理テーブル143A-2からタスク120Bに対応するTCB146Eを削除しS752、同期用のプロセッサ180A-1に対応するタスク管理テーブル143A-1の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録するS753。これにより、ディスパッチャ141Aは、図6のS712~714と同様に計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換しS754、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS755。これにより、ディスパッチャ141Aは、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図4に示すディスパッチを行い、プロセッサ180A-1においてタスク120Bが実行されるS756。---APIによるタスクの同期非同期の変更---タスクプログラム120がタスクの同期または非同期を指示するようにすることもできる。この場合、タスクの同期または非同期を指示するシステムコール以下、同期システムコールまたは非同期システムコールという。を呼び出すAPIを規定しておくようにする。図15はこの場合における、同期プロセッサと非同期プロセッサとの間でのタスクの移動によるタスク内での同期タスクの非同期化同期化処理を説明する図である。タスク120Bから非同期システムコールが呼び出された場合S760、ディスパッチャ141Aは、図13のS741~S744の処理を行う。また、タスク120Bから同期システムコールが呼び出された場合にはS770、ディスパッチャ141Aは、図14のS751~S756の処理を行う。これにより、タスクプログラムから任意に同期または非同期への変更を指定することが可能となる。---タイムアウト処理---図16は、例えば図6のS712などにおいて、計算機100Aと計算機100Bとの間で行うタスク管理テーブル143の交換がタイムアウトした場合の処理を説明する図である。図16に示す処理は、計算機100の同期外れ判定時間での判定による同期タスク待ちのタイムアウト処理である。ディスパッチャ141Aは、処理を開始した時刻を取得してS781、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換し、各同期計算機100A、100Bのタスク制御用共有メモリ区画130A、130Bに各々のTCB146を格納するS782。タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、計算機100Bから取得したタスク管理テーブル143B-1の実行可能タスクキュー144に格納されているTCB146とが一致していればS783:YES、図6のS713、S714と同様に、ディスパッチャ141Aは、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS785。ディスパッチャ141Aは、図4のS702~S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS786。一方、TCB146が一致しなければS783:NO、ディスパッチャ141Aは、上記S781で取得した時刻から現在時刻までの時間が所定の時間を越えたか否かにより、タイムアウトを起こしたか否かを判定するS784。タイムアウトを起こしていなければS784:NO、ディスパッチャ141Aは、S782からの処理を繰り返す。タイムアウトを起こしていればS784:YES、ディスパッチャ141Aは、実行可能タスクを多数決により決定するS787。すなわち、各計算機の実行可能タスクキュー144について、登録されているTCB146に基づいてタスクを選定していき、最も多く選定されたタスクを選定するようにする。最も多く選定されたタスクが複数存在する場合には、例えば、予め計算機の優先度を決めておき、優先度の高い計算機について選定されたタスクを優先して選定するようにする。ディスパッチャ141Aは、タスク制御用共有メモリ区画130Aを参照し、多数決により選定されなかった計算機100を特定し、特定した計算機100を示す識別情報に対応づけて、当該計算機100と同期がとれていない旨を示す情報を同期計算機管理テーブル111Aに登録するS788。ディスパッチャ141Aは、図4のS702~S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS789。---回数を考慮したタイムアウト処理---図17は、上述した図16のタイムアウト処理においてタイムアウトを起こした回数を考慮する処理を説明する図である。図17に示す処理は、計算機100の同期外れ判定回数での判定による同期タスク待ちのタイムアウト処理である。図17のS790~S797の処理は、図16のS781~S788と同様である。ディスパッチャ141Aは、S797の後、カウンタをインクリメントして、カウンタが所定の設定回数を超えたか否かを判定しS798、カウンタが設定回数を超えていなければS798:NO、観察実行とするS799。観察実行とは、例えば計算機識別子が多数決において高い優先度を持っていたとしても、優先度が最低として扱う方式である。つまり、図7のS7138において、識別子の若い計算機が観察実行状態であれば、S7138では識別子の年取った方が残る。カウンタが設定回数を超えていればS798:YES、計算機を再起動するS800。---Voter870を含むシステム構成---図18は、計算機システム10が、計算機100Aからの出力と計算機100Bからの出力とが一致することを検証するVoter870多数決機を含む構成を示す図である。Voter870は、計算機システム10を構成する複数の計算機100からの出力が一致していればそのまま出力し、異なる場合には、多数決により最も一致した数の多いものを出力する多数決処理を行う。Voter870は、メモリ810、プロセッサ820、通信インターフェース860を備えており、これらがバス830により接続されている。メモリ810は、オペレーティングシステム840を備え、オペレーティングシステム840は、同期計算機管理テーブル850を備えている。同期計算機管理テーブル850は計算機100が備える同期計算機管理テーブル111と同様の構成である。同期計算機管理テーブル850には、多数決処理に参加する計算機100が登録されており、オペレーティングシステム840は、同期計算機管理テーブル850に登録されている計算機100からの出力のみについて多数決処理を行う。以下、Voter870を備える計算機システム10における処理について説明する。---計算機100からVoter870への通知処理---図19は、Voter870における多数決処理に参加する計算機100を変更する処理を説明する図である。図19に示す処理は、同期計算機管理情報の送受信計算機100からVoter870であり、タスク同期外れした計算機100をVoter870へ通知し、出力結果の多数決に参加できないようにするものである。計算機100Aのディスパッチャ141Aは、上述した図16のS788や図17のS797において、多数決により選定されなかった計算機100をVoter870に通知しS841、Voter870のオペレーティングシステム840は、同期計算機管理テーブル850から、通知された計算機100を削除するS842。これにより、タイムアウトした計算機100はVoter870による多数決処理に参加しないようにすることができる。---Voter870から計算機100への通知処理---図20は、計算機100における多数決処理に参加する計算機100を変更する処理を説明する図である。図20に示す処理は、同期計算機管理情報の送受信Voter870から計算機100であり、Voter870において出力結果の多数決負けを起こした計算機100を他の計算機100に通知し、同期をとって同期計算機管理テーブル111から当該計算機100を除外するものである。Voter870のオペレーティングシステム840は、上記多数決処理において選定されなかった計算機100を、全ての計算機100に通知するS843。計算機100のディスパッチャ141は、Voter870から通知された計算機100を同期計算機管理テーブルから削除するS844。---ソフトウェアエラーの処理---図21は、ソフトウェアにエラーが生じた場合の処理を説明する図である。図21に示す処理は、オペレーティングシステム140内タスク同期制御待ち状態からディスパッチにおけるエラーハンドリング処理ソフトウェアエラーであり、一般的なディスパッチとの違いはS714の前に同期処理が発生することである。ディスパッチャ141AによりS711~S714の処理が行われた後、タスクにエラーが発生した場合S900、ディスパッチャ141Aは、タスクがエラーを出力していればS901:YES、エラー処理を行うプログラムを構成するタスクについてのTCB146を、実行可能タスクキュー144の先頭に移動しS902、エラーを出力していなければS901:NO、図6のS711と同様に実行可能状態にあるタスクを1つ選定するS903。ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A、146Bを通信インターフェース160および150を介して交換しS904、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS905。ディスパッチャ141は、図4のS702~S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS906。---ハードウェアエラーの処理---図22は、ハードウェアにエラーが生じた場合の処理を説明する図である。図22に示す処理は、オペレーティングシステム140内タスク同期制御待ち状態からディスパッチにおけるエラーハンドリング処理ハードウェアエラーであり、一般的なディスパッチとの違いはS714の前に同期処理が行われることである。ディスパッチャ141AによりS711~S714の処理が行われた後、ハードウェアにエラーが発生したことを、監視タスクやオペレーティングシステム140Aが検知した場合S910、ディスパッチャ141Aは、エラーが存在していればS911:YES、他の計算機100Bにエラーの内容を示すエラー情報の複製を送信しS912、エラー処理を行うプログラムを構成するタスクについてのTCB146を、実行可能タスクキュー144の先頭に移動するS913。エラーが存在しなければS911:NO、ディスパッチャ141Aは、図6のS711と同様に実行可能状態にあるタスクを1つ選定するS914。ディスパッチャ141Aは、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A-146Bを通信インターフェース160および150を介して交換しS915、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS916。ディスパッチャ141は、図4のS702-S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS917。---タスク間通信を考慮したタスク同期処理---図23は、計算機100において同期タスクが実行されている場合に、同期タスク間通信をプロセス間通信の有無を含めてタスクプログラムの同期を行う処理を説明する図である。オペレーティングシステム140Aがタスクからタスク間通信の相手先への通信の依頼を受けるとS920、オペレーティングシステム140Aは、タスク間通信の内容をタスク間メッセージ管理テーブル142Aシグナル管理テーブル112Aにキューとしてつないで管理しS921、計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A-146Bと、シグナル管理テーブル112A及び112Bとタスク間メッセージテーブル142A及び142Bに記憶されている情報とを通信インターフェース160および150を介して交換し、タスク制御用共有メモリ区画130A-130Bに各々格納するS923。ディスパッチャ141Aは、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146とが、同期タスクへの通信有無を含めて一致しているか否かを確認する。すなわち、ディスパッチャ141Aは、全ての実行可能キュー144A及び144Bに登録されている全てのTCB146について、タスクID146-1に対応する情報をシグナル管理テーブル112A又は112Bに登録されている場合、タスクID146-1に対応する情報をシグナル管理テーブル112A及び112Bのそれぞれから取得し、取得した情報の内容が一致していなければ、当該TCB146を実行可能キュー144Aから削除して待機状態タスクキュー145に追加するS924。ディスパッチャ141Aは、上記図7の処理と同様にして、次にプロセッサ180A-1に割り当てるべきタスクを選定するS925。ディスパッチャ141Aは、図4のS702-S704と同様に、選定したタスクのTCB146の内容をプロセッサ180A-1に設定して、プロセッサ180A-1に選定したタスクを実行させるS926。ディスパッチャ141Aは、ディスパッチしたタスクに係るTCB146のタスクID146-1に対応する情報がシグナル管理テーブル112Aに登録されている場合には、通信内容をタスク通信の相手先に通達するS927。このようにして、次に実行するタスクを決定する際に、シグナル管理テーブル145に登録されているタスク間通信の内容が計算機100Aと計算機100Bとの間で一致することを確認することにより、タスク間通信が行われている場合でも、タスク間通信の内容に影響を与えることなく、計算機100Aと計算機100Bとの間でディスパッチの同期を行うことが可能となる。以上説明したように、例えばリアルタイムタスク等、優先度の高いプロセスの実行を行うためにプリエンプションを実行している場合に、現行のマルチタスク実行可能なオペレーティングシステムでは、タイマーに基づいた判断によりプリエンプションを行うため、プリエンプションが行われたタスク処理の進捗が計算機間で変わり、各計算機間での同期が取れなくなるところ、本実施形態によれば、複数の計算機100の間でタスク管理テーブル143を交換し、複数のタスク管理テーブル143に基づいて次にディスパッチするタスクを決定することができる。すなわち、ある計算機100において実行可能となっているタスクであっても、他の計算機100において実行可能となっていなければ、ディスパッチの対象として選定されないようにすることができる。これにより、複数の計算機100の間でディスパッチするタスクの同期を取ることが可能となる。また、キャッシュに該当情報がヒットしたか否かにより、システムコール例:ハードディスクドライブへのデータ読み取り指示等が発行されたりされなかったりすることが考えられるが、この場合にも、従来のマルチタスク実行可能なオペレーティングシステムではタスク処理スピードの変化が生じて同期が取れなくなるところ、本実施形態によれば、全ての計算機100において実行可能となったタスクのみをディスパッチするようにすることができるので、タスク処理スピードが変化した場合であっても、複数の計算機100間でディスパッチの同期を取ることが可能となる。また、マルチコアやマルチプロセッサ環境において、本実施形態の計算機システム10によれば、タスク内の処理フローの一部においてタスクを割り当てるコアやプロセッサを変更することができる。また、本実施形態の計算機システム10によれば、タスクの同期をとる処理と、タスクの同期を外して非同期に処理する方式とを交互に制御し、その制御の境目で複数コアを移動させることができる。また、本実施形態の計算機システム10によれば、タスクが同期を外れるために他のコアへ移動するためのAPIやシステムコールをタスクに提供することができる。また、本実施形態の計算機システム10によれば、他のコアへ移動し同期が外れたタスクが、再び同期を取るために元のコアへ戻ってくるためのAPIやシステムコールをタスクに提供することができる。また、本実施形態の計算機システム10によれば、他計算機との同期を意識して、障害等が発生した場合に、他の計算機にエラーを通知して、エラー処理を行うことができる。したがって、高信頼システムを実現できる。また、本実施形態の計算機システム10によれば、Voterによる精査の結果を受け、タスク同期の制御にフィードバックすることができる。なお、これまで示した計算機システム10をなす計算機100A、100Bにおける各機能部、Voter870における各機能部等はハードウェアとして実現してもよいし、各装置におけるメモリやHDDHardDiskDriveなどの適宜な記憶部に格納したプログラムとして実現するとしてもよい。この場合、各装置のCPUなど制御部がプログラム実行に合わせて記憶部より該当プログラムを読み出して、これを実行することとなる。また、本実施形態の計算機100Aは、2つのプロセッサ180A-1および180A-2を備えるものとしたが、3つ以上のプロセッサを備えるようにしてもよい。また、計算機100Aは、複数のコアを有する1つのプロセッサのみを備えるようにしてもよい。この場合、オペレーティングシステム140Aは、各コアについてTCBを管理し、タスクのディスパッチを行うものとする。また、本実施形態では、実行可能タスクキュー144には優先度の高い順にTCB146が格納されているものとしたが、TCB146に優先度を記憶するようにして、実行可能タスクキュー144には、キュー以外の形態で、順番を問わずにTCB146を管理するようにしてもよい。この場合、ディスパッチャ141Aは、図4のS701において、実行可能タスクキュー144に格納されているTCB146のうち、優先度の最も高いものを選択するようにする。また、本実施形態では、Voter870による多数決処理は、出力が一致する計算機100を複数のグループに分けた場合に、所属する計算機100の数が同じであるグループが複数存在する状態あいこ状態を考慮していなかったが、あいこ状態を考慮するようにしてもよい。図24は、あいこ状態を考慮する場合のVoter870による多数決処理を説明する図である。この場合、各計算機100には、重複しない番号計算機Noを割り当てておくものとする。また、図24の処理では、計算機100から出力される内容を重複なく抽出して比較対象値とし、各計算機100からの出力をその比較対象値に対する投票として、多数決処理を説明する。Voter870は、次に投票数の多い比較対象値を選びS8701、選んだ比較対象値に対する投票数と同じ投票数の他の比較対象値が存在する場合あいこ状態にはS8702:YES、計算機Noが最も小さい計算機100が投票した比較対象値を出力するようにしS8703、あいこ状態でない場合にはS8702:NO、選んだ比較対象値を出力するS8704。これにより、あいこ状態を考慮した多数決処理により、出力を決定することができる。なお、計算機No以外にも、例えば、計算機100に優先度を割り当てておき、優先度に応じて、Voter870が出力を選択するようにしてもよい。以上の実施形態によって、マルチプロセッサ環境を有する複数の計算機をネットワークで接続した計算機システムにおいて、計算機間でのタスク同期が可能となる。即ち、一般的なネットワークを利用して複数計算機を接続する方式において、従来のマルチタスク動作可能なOSは、タスクスケジュールの中で他の計算機の挙動を意識するように作られてはいなかった。したがって、従来技術では、例えば、プリエンプションが行われたタスク処理の進捗が計算機間で異なってしまう状況や、キャッシュに該当情報がヒットしたか否かにより、計算機によってシステムコール例:ハードディスクドライブへのデータ読み取り指示等が発行されたりされなかったりという違いが生じる状況などに対処することが出来ていない。これにより、タスク開始や終了のタイミングを各計算機間で合わせることができず、ひいては計算機間での同期は取れなくなってしまっていた。つまり従来技術における構成や処理内容を、一般的なネットワークにて複数計算機を接続する方式に単に適用したとしても、フォールトトレラントシステムに求められる要求をそもそも満たせなくなっていた。本実施例ではこのような従来技術の課題を解決し、各々がマルチプロセッサを有する複数の計算機間でのタスク同期が可能となる。次に他の実施形態について説明する。本実施形態では、実施例1において、複数の同期タスクについて一部の処理が同期用プロセッサから非同期用プロセッサに割り当てが変更され、一時的に非同期用プロセッサにて実行されることになった場合を想定している。この時、これら複数の同期タスクについて複数計算機間での同期を一時的にとることができなくなる。そこで、各計算機において非同期用プロセッサで実行される同期タスクの実行順序を管理し、非同期用プロセッサに同期タスクが割り当てられた順序に従って、同期タスクが非同期用プロセッサで実行されるよう制御する方法を説明する。尚、本実施例において特に説明しない限り、システムの構成、処理方法は実施例1と同様である。--非同期実行用プロセッサでの同期タスクのディスパッチ--まず、本実施形態では、図3に示すタスク管理テーブル143に代えて図25に示すタスク管理テーブル143-2が使用される。図25に示すタスク管理テーブル143-2は、図3に加え同期タスク順序管理キュー148があり、同期実行用プロセッサから同期タスクが非同期実行用プロセッサへ割当変更された順序で当該同期タスクのTCBへのリンク194がつながっている。各リンク194は、同期用プロセッサのタスク管理テーブル143から非同期プロセッサ用のタスク管理テーブル143に移し変えられ、実行可能タスクキュー144につなげられた同期タスクのTCBへのポインタを少なくとも保持している。更に図25には図示していないが、各TCB146にはタスクの種類146-7が追加されている。このタスクの種類146-7はタスクが同期タスクであるか非同期タスクであるかを示す情報が格納されている。更に本実施例では図4に示す一般的タスク非同期ディスパッチ処理に代えて図26に示す一般的タスク非同期ディスパッチ処理が実行される。図26に示す処理には、図4に示す処理に更にS705~S707が追加されており、図26に示す処理を実行すると、非同期用のプロセッサ180A-2に対して、同期タスクの実行順序を管理しつつディスパッチを実行することができる。ディスパッチャ141Aは、タスク管理テーブル143-2の実行可能タスクキュー144より、先頭のTCB146を選定するS701。すなわち、ディスパッチャ141Aは、実行可能タスクキュー144のポインタが示すTCB146Aを選定する。ディスパッチャ141Aは、実行可能タスクキュー先頭のTCB146が同期タスクか確認するS705。この確認は、TCB146のタスクの種類146-7を確認することによって行われる。このTCB146が非同期タスクであればS702を実行する。TCB146が同期タスクであればS705:YES、ディスパッチャ141Aは、実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一か確認するS706。すなわち、この確認により同期タスクが非同期実行用プロセッサで処理される順番を制御することができる。もし、実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一であればS706:YES、S702を実行する。実行可能タスクキュー先頭のTCB146が同期タスク順序管理キュー148の先頭のタスクと同一でない場合はS705:NO、実行順序待機中なので実行可能タスクキューの先頭のTCBを、実行可能タスクキューの最後尾に繋ぎ直すS707。繋ぎなおした後に、再びS701に戻る。S705またはS706にて実行可能タスクが選定されると、ディスパッチャ141Aは、選定したTCB146Aより、プログラムカウンタ情報146-2の情報をプログラムカウンタ180A-2aに格納し、汎用レジスタ情報146-3の情報を汎用レジスタ180A-2bに格納し、制御レジスタの情報146-4を制御レジスタ180A-2cに格納するS702。ディスパッチャ141Aは、実行中タスク147のポインタが示すTCB146Eを待機状態タスクキュー145の最後尾に追加する。すなわち、ディスパッチャ141Aは、待機状態タスクキュー145のポインタが示すTCB146Cから、TCB146のポインタ146-0がnullになる最後尾のTCB146Dまで辿り、最後尾のTCB146Dのポインタ146-0にTCB146Eを示すポインタを設定し、TCB146Eのポインタ146-0にnullを設定する。ディスパッチャ141Aは、実行可能タスクキュー144の先頭から選定したTCB146Aを実行中タスク147として設定する。すなわち、ディスパッチャ141Aは、TCB146Aを示すポインタを実行中タスク147のポインタに設定するS703。また、ディスパッチャ141Aは、実行可能タスクキュー144のポインタに、TCB146Aの次に位置するTCB146Bを示すポインタを設定する。ディスパッチャ141Aは、プロセッサ180A-2に実行を指示するS704。この処理ステップにより、複数の同期タスクが非同期実行用プロセッサにて実行され、複数計算機間での同期を一時的にとらない場合においても、計算機内での実行順序を規定することができる。---同期タスクの非同期への変更---更に本実施形態では、図13に示す処理に代えて図27に示す処理を用いて、同期用のプロセッサ180A-1から非同期用のプロセッサ180A-2にタスクを割り当てるプロセッサを変更する。図27においては図13におけるS744に変えてS745が実行される結果、同期タスクの実行をシリアライズするための登録処理が行われる。オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを非同期にするように指示した場合S740、ディスパッチャ141Aは、同期用のプロセッサ180A-1が実行しているタスク120Bの情報を回収するS741。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A-1に実行を中断するように指示し、プロセッサ180A-1のプログラムカウンタ180A-1a、汎用レジスタ180A-1bおよび制御レジスタ180A-1cの内容を、タスク管理テーブル180A-1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A-1に対応するタスク管理テーブル143A-1からタスク120Bに対応するTCB146Eを削除しS742、非同期用のプロセッサ180A-2に対応するタスク管理テーブル143A-2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録するS743。非同期実行用プロセッサ180A-2用タスク管理テーブル内の同期タスク順序管理キュー148の最後尾にタスク120Bへのリンク149を登録するS745。これにより、ディスパッチャ141Aは、タスク管理テーブル143A-2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A-2においてタスク120Bが実行される。---非同期タスクの同期への変更---更に本実施形態では、図14に示す処理に代えて図28に示す処理を用いて、非同期用のプロセッサ180A-2から同期用のプロセッサ180A-1にタスクを割り当てるプロセッサを変更する。図28においては、図14の処理に更にS757が追加されることによって、同期タスクのシリアライズが行われる。オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを同期するように指示した場合S750、ディスパッチャ141Aは、プロセッサ180A-2が実行しているタスク120Bの情報を回収するS751。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A-2に実行を中断するように指示し、プロセッサ180A-2のプログラムカウンタ180A-2a、汎用レジスタ180A-2bおよび制御レジスタ180A-2cの内容を、タスク管理テーブル180A-2に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A-2に対応するタスク管理テーブル143A-2からタスク120Bに対応するTCB146Eを削除しS752、非同期実行用プロセッサ180A-2用タスク管理テーブル内の同期タスク順序管理キュー148からタスク120Bへのリンクを削除するS752。その後、同期用のプロセッサ180A-1に対応するタスク管理テーブル143A-1の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録するS753。これにより、ディスパッチャ141Aは、図6のS712~714と同様に計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A-146Bを通信インターフェース160および150を介して交換しS754、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS755。これにより、ディスパッチャ141Aは、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A-1においてタスク120Bが実行されるS756。更に他の実施形態を示す。本実施形態は、実施例1又は実施例2において、メモリ回収タスクの同期用プロセッサによる実行を抑制するための構成を示す。尚、本実施例において特に説明しない限り、システムの構成、処理は実施例1または実施例2と同様である。---プロセッサ毎メモリ回収機能を含むシステム構成---本実施形態は、図1に示すシステム構成に代えて図29に示すシステム構成を有する。図29に示すシステムは、図1のシステムに加えて、メモリ回収タスクプログラム120Cを有し、またオペレーティングシステム140A内にプロセッサ毎メモリ回収閾値管理テーブル113を含む。---プロセッサ毎メモリ回収機能の処理---図30は、メモリ取得時にメモリ取得前にフォアグラウンドで行われるメモリ回収処理とバックグラウンドにて行われるメモリ回収処理における、メモリ回収タスクの処理の一例である。この処理はメモリ回収タスクプログラム120Cが実行されることによって行われる。メモリ回収タスクはタスク管理テーブル143よりメモリ回収タスクを実行するCPUを検知するS121。すなわち、プロセッサ毎に設定されているメモリ回収閾値を取得するため、まずはメモリ回収タスクを実行する可能性のあるプロセッサの識別を行う。次に検知されたプロセッサ毎に、当該プロセッサについてのメモリ回収閾値以下に現在のメモリ空き容量が達し、メモリを圧迫しているかを確認するS122。メモリ空き容量がメモリ回収閾値以下に達していた場合、当該プロセッサにメモリ回収を実行させるS123。非同期用プロセッサは同期用プロセッサよりも高い頻度でメモリ回収タスクが稼動する様に、非同期用プロセッサのメモリ回収閾値は同期用プロセッサのメモリ回収閾値より厳しく大きくしてある。この結果、図11や図12に示した様な同期タスクがメモリ取得の一環でフォアグラウンドにてメモリ回収タスクを動作させることを、抑止することができる。尚、メモリ回収タスクは一例である。その他のタスクについても、同期用プロセッサと非同期用プロセッサとでタスクの実行契機の判断基準となる閾値を異なる値にしておくことによって、同期用プロセッサではなく非同期用プロセッサに当該タスクをなるべく実行させ、あるいは逆に非同期用プロセッサではなく同期用プロセッサに当該タスクをなるべく実行させるよう構成することができる。更に他の実施形態を示す。本実施形態は、実施例1乃至実施例3において、タスクを同期用プロセッサ又は非同期用プロセッサに割り当てる際の処理の一例を示す。尚、本実施例において特に説明しない限り、システムの構成、処理は実施例1乃至実施例3と同様である。---システム構成------同期および非同期タスクの定義テーブルの配置---図31に示すシステムは、図29に示すシステムに加えて、記録媒体600および同期タスク非同期タスク定義テーブル610を含む。同期タスク非同期タスク定義テーブル610は、図31に示す記録媒体600の他、外部の記録媒体に置くことも可能である。---本実施形態の同期タスクおよび非同期タスクの定義テーブルの内容---図32は、計算機100Aの同期タスク非同期タスク定義テーブル610の内容の一例である。同期タスク非同期タスク定義テーブル610には、タスク名610-1と、実行時のタスクID610-2、タスクの種別610-3、同期用プロセッサ項目610-4、および非同期用プロセッサ項目610-5が格納されている。タスクの種別には、同期非同期同期非同期があっる。同期はタスクを同期タスクとして起動する場合、非同期はタスクを非同期タスクとして起動する場合、同期非同期はタスクを同期タスクとしてでも非同期タスクとしてでも起動可能な場合をあらわす。同期プロセッサ項目610-4は、タスクの種別610-3が同期又は同期非同期の場合に当該タスクを実行する同期用プロセッサを指定する情報である。非同期プロセッサ項目610-5は、タスクの種別が同期である場合には当該同期タスクが一時的な非同期処理を行う場合にその非同期処理を実行するべき非同期用プロセッサを指定する情報であり、タスクの種別が非同期または同期非同期である場合に当該タスクを実行すべき非同期用プロセッサを指定する情報である。本実施例では2つのプロセッサを有する計算機での例を示すが、2つ以上のプロセッサを有する計算機であっても同期タスク非同期タスク定義テーブル610は利用可能である。---タスクを管理するTCBの内容---図31に示すシステムが有するタスク管理テーブル143は、図3に示すタスク管理テーブルとは異なる構成を有する。具体的にはタスク管理テーブル143内のTCB146の構成が異なる。そこで図33にTCB146の構成の一例を示す。図33に示すTCB146は、図3に示すTCBに加え、同期タスクや非同期タスクなどタスクの種類を示すタスクの種類146-7、同期タスクを実行する同期用プロセッサを指定する同期実行時プロセッサ識別子146-8、同期タスクの中で一時的に非同期処理を行う場合にその非同期処理を実行する非同期用プロセッサ、もしくは非同期タスクを実行する非同期用プロセッサを指定する非同期実行時プロセッサ識別子146-9の項目を有する。---同期タスクの非同期への変更---図34は、同期用のプロセッサ180A-1から非同期用のプロセッサ180A-2にタスクを割り当てるプロセッサを変更する際、非同期用プロセッサを定義情報から判定し非同期処理を行う方法を説明する図である。オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを非同期にするように指示した場合S740、ディスパッチャ141Aは、同期用のプロセッサ180A-1が実行しているタスク120Bの情報を回収するS741。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A-1に実行を中断するように指示し、プロセッサ180A-1のプログラムカウンタ180A-1a、汎用レジスタ180A-1bおよび制御レジスタ180A-1cの内容を、タスク管理テーブル180A-1に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A-1に対応するタスク管理テーブル143A-1からタスク120Bに対応するTCB146Eを削除するS742。ディスパッチャ141Aは、タスク120BのTCB146Eの非同期実行時プロセッサ識別子146-9より、タスク120Bが実行される非同期用プロセッサ識別子を取得する。すなわち、非同期用プロセッサ180A-2であるという情報を取得するS1000。非同期用のプロセッサ180A-2に対応するタスク管理テーブル143A-2の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録するS743。非同期実行用プロセッサ180A-2用タスク管理テーブル内の同期タスク順序管理キュー148の最後尾にタスク120Bへのリンクを登録するS745。これにより、ディスパッチャ141Aは、タスク管理テーブル143A-2の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A-2においてタスク120Bが実行される。---非同期タスクの同期への変更---図35は、非同期用のプロセッサ180A-2から同期用のプロセッサ180A-1にタスクを割り当てるプロセッサを変更する際のシリアライズ完了処理を説明する図である。オペレーティングシステム140Aが、ディスパッチャ141Aにタスク120Bを同期するように指示した場合S750、ディスパッチャ141Aは、プロセッサ180A-2が実行しているタスク120Bの情報を回収するS751。すなわち、ディスパッチャ141Aは、図5のS705、S706と同様に、プロセッサ180A-2に実行を中断するように指示し、プロセッサ180A-2のプログラムカウンタ180A-2a、汎用レジスタ180A-2bおよび制御レジスタ180A-2cの内容を、タスク管理テーブル180A-2に含まれる実行中タスク147のポインタが示すTCB146Eに設定する。ディスパッチャ141Aは、プロセッサ180A-2に対応するタスク管理テーブル143A-2からタスク120Bに対応するTCB146Eを削除しS752、非同期実行用プロセッサ180A-2用タスク管理テーブル内の同期タスク順序管理キュー148からタスク120Bへのリンクを削除するS756。ディスパッチャ141Aは、タスク120BのTCB146Eの同期実行プロセッサ識別子146-8より、タスク120Bが実行される同期用プロセッサ識別子を取得する。すなわち、180Aー1であるという情報を取得するS1001。その後、同期用のプロセッサ180A-1に対応するタスク管理テーブル143A-1の実行可能タスクキュー144に、タスク120BについてのTCB146Eを登録するS753。これにより、ディスパッチャ141Aは、図6のS712~714と同様に計算機100Bのディスパッチャ141Bとの間で、タスク管理テーブル143A-1およびタスク管理テーブル143B-1内の実行可能タスクキュー144に格納されているTCB146A-146Bを通信インターフェース160および150を介して交換しS754、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されているTCB146と、タスク管理テーブル143B-1の実行可能タスクキュー144に登録されているTCB146との両方に基づいて、次にプロセッサ180A-1に割り当てるべきタスクを選定するS755。これにより、ディスパッチャ141Aは、タスク管理テーブル143A-1の実行可能タスクキュー144に登録されたTCB146Eに基づいて、図26に示すディスパッチを行い、プロセッサ180A-1においてタスク120Bが実行される。---タスクの起動処理---図36は、同期タスク非同期タスク、またはメモリ回収タスクのように必要に応じて同期タスクからも非同期タスクからも起動されるタスクの起動プロセスを説明する図である。図36に示す処理をディスパッチャ141によって実行される。タスクが起動される場合、ディスパッチャ141は記録媒体600内の同期タスク非同期タスク管理テーブル610より、起動を指定されたタスク名610-1を選出するS1002。該当したタスク名610-1の行からタスクの種類610-3を参照し、該当タスクの種類が同期か、非同期か、または同期非同期両方かを判定する。同期タスクと判断された場合、当該タスクを610-4に示されるプロセッサで実行するために、メモリ確保などの起動処理を実行するS1006。更に、該当タスク用TCB146を生成し、TCB146内のタスクの種類146-7に該当する同期タスク非同期タスク定義テーブル610のタスクの種類610-3の情報を書き込み、TCB146内の同期実行時プロセッサ識別子146-8に該当する同期タスク非同期タスク定義テーブル610の同期プロセッサ610-4を書き込み、TCB146内の非同期実行時プロセッサ識別子146-9に該当する同期タスク非同期タスク定義テーブル610の非同期プロセッサ610-9の情報を書き込むS1007。ディスパッチャ141は当該タスクのTCB146を同期実行時プロセッサ識別子146-8にて示されるプロセッサのタスク管理テーブル143A-1へ登録するS1008ステップS1003で非同期タスクと判断された場合S1003:YES、当該タスクを610-5に示されるプロセッサで実行するために、メモリ確保などの起動処理を実行するS1010。該当タスク用TCB146を生成し、TCB146内のタスクの種類146-7に該当する同期タスク非同期タスク定義テーブル610のタスクの種類610-3の情報を書き込み、TCB146内の同期実行時プロセッサ識別子146-8に該当する同期タスク非同期タスク定義テーブル610の同期プロセッサ610-4を書き込み、TCB146内の非同期実行時プロセッサ識別子146-9に該当する同期タスク非同期タスク定義テーブル610の非同期プロセッサ610-5の情報を書き込むS1007。ディスパッチャ141は当該タスクのTCB146を146-9にて示されるプロセッサのタスク管理テーブル143A-2へ登録するS1011。ステップS1003で同期非同期タスクと判断された場合、該当タスクの起動を指示した親タスクの実行プロセッサ識別子が、同期タスク非同期タスク管理テーブル610の同期プロセッサ610-4に含まれるか確認するS1004。同期プロセッサ610-4に含まれる場合はS1006へ進みS1004:YES、同期タスクとしての起動ステップを踏む。同期プロセッサ610-4に該当しない場合はS1004:NO、該当タスクの起動を指示した親タスクの実行プロセッサ識別子が同期タスク非同期タスク管理テーブル610の非同期プロセッサ610-5に含まれるか確認するS1005。非同期プロセッサ610-5に含まれる場合はS1010に進みS1005:YES、非同期タスクとしての起動ステップを踏む。その他該当タスクの起動を指示した親タスクの実行プロセッサ識別子が同期タスク非同期タスク管理テーブル610の非同期プロセッサ610-5に含まれない場合は想定外の起動指示としてタスクの起動を中止し起動を終了するS1005:NO。以上、本発明について、その実施の形態に基づき具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば発明の実施形態を、以下のようにとらえることもできる。1複数のタスクを時分割で実行する計算機であって、他の計算機と通信可能に接続され、前記タスクを実行するタスク処理部と、前記各タスクについて、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する管理テーブルと、前記他の計算機から前記管理テーブルを取得する管理テーブル取得部と、前記タスク処理部が実行しているタスクである実行中タスクを、他のタスクである切替タスクに切り替えるべきタイミングである切替可能ポイントを検出する切替可能ポイント検出部と、前記切替可能ポイントが検出された場合に、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに含まれる前記タスク制御ブロックとに基づいて前記切替タスクを決定し、前記タスク処理部が実行するタスクを前記切替タスクに切り替えるディスパッチャと、を備える計算機。21に記載の計算機であって、前記複数の計算機のそれぞれにおいて、前記切替可能ポイントが検出されたか否かを示す切替情報を交換する切替情報交換部を備え、前記ディスパッチャは、前記切替情報に基づいて前記各計算機が前記切替可能ポイントを検出したか否かを判定し、所定数の前記計算機が前記切替可能ポイントを検出している場合に、前記切替タスクを決定する計算機。31に記載の計算機であって、前記切替可能ポイント検出部は、前記実行中タスクが所定の命令を呼び出したか否かにより、前記切替可能ポイントを検出する計算機。43に記載の計算機であって、前記所定の命令は、前記実行中タスク以外のタスクから値を取得する命令であること、を特徴とする計算機。53に記載の計算機であって、前記所定の命令は、ユーザプログラムからオペレーティングシステムに対するシステムコールであること、を特徴とする計算機。63に記載の計算機であって、前記実行中タスクに含まれる条件分岐、前記条件分岐において用いられる変数に値を設定する命令を特定する条件分岐特定部を備え、前記所定の命令は、前記条件分岐において用いられる変数に値を設定する命令であること、を特徴とする計算機。71に記載の計算機であって、前記管理テーブルには、前記実行中タスクに係る前記タスク制御ブロックを格納する第1の格納領域と、実行可能な状態にある前記タスクに係る前記タスク制御ブロックを格納する第2の格納領域と、待ち状態にある前記タスクに係る前記タスク制御ブロックを格納する第3の格納領域とが含まれ、前記ディスパッチャは、当該計算機が備える前記管理テーブルに含まれる前記第2の格納領域と、前記他の計算機から取得した前記管理テーブルに含まれる前記第2の格納領域との両方に格納されている前記タスク制御ブロックに対応する前記タスクを前記切替タスクとして決定すること、を特徴とする計算機。87に記載の計算機であって、前記タスク制御ブロックには前記タスクの優先度が設定され、前記ディスパッチャは、当該計算機が備える前記管理テーブルに含まれる前記第2の格納領域と、前記他の計算機から取得した前記管理テーブルに含まれる前記第2の格納領域との両方に格納されている前記タスク制御ブロックが複数存在する場合、前記タスク制御ブロックの前記優先度に応じて前記切替タスクを決定すること、を特徴とする計算機。93に記載の計算機であって、前記タスクを特定する情報に対応付けて、前記切替可能ポイントを検出するための前記命令を記憶する命令記憶部を備え、前記切替可能ポイント検出部は、前記実行中タスクに対応する前記命令を前記命令記憶部から読み出し、前記読み出した命令を前記実行中タスクが呼び出すか否かにより、前記切替可能ポイントを検出すること、を特徴とする計算機。103に記載の計算機であって、前記所定の命令は、所定のAPIとして定義されている関数の呼び出しであること、を特徴とする計算機。111に記載の計算機であって、オペレーティングシステムが動作し、前記オペレーティングシステムはユーザプログラムを実行し、前記切替可能ポイント検出部は、前記実行中タスクが前記ユーザプログラムに係るタスクである場合に、前記実行中タスクに応じて、前記実行中タスクに含まれている所定の命令の実行前の時点、または、前記所定の命令の実行後の時点のいずれかを前記切替可能ポイントとして決定すること、を特徴とする計算機。121に記載の計算機であって、タスク間通信を行うタスクを特定する情報に対応付けて、前記タスク間通信の通信状態を示す情報を記憶するシグナル管理テーブルと、前記他の計算機から前記シグナル管理テーブルを取得するシグナル管理テーブル取得部と、を備え、前記ディスパッチャは、前記切替タスクを決定する際に、当該計算機が備える前記シグナル管理テーブルに記憶されている前記通信状態を示す情報と、前記他の計算機から取得した前記シグナル管理テーブルに含まれる前記通信状態を示す情報とが一致するタスクを決定すること、を特徴とする計算機。131に記載の計算機であって、第1および第2の前記タスク処理部を有し、前記ディスパッチャは、前記第1のタスク処理部について前記切替タスクを決定する場合には、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに記憶されている前記タスク制御ブロックとに基づいて、前記切替タスクを決定し、前記第2のタスク処理部について前記切替タスクを決定する場合には、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックのみに基づいて、前記切替タスクを決定すること、を特徴とする計算機。1413に記載の計算機であって、前記タスクの処理に応じて、前記タスクを前記第1および第2のタスク処理部のいずれかに割り当てるタスク割当部を備えること、を特徴とする計算機。1514に記載の計算機であって、前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングを指定する命令である切替可能シグナルを呼び出した場合に、前記ディスパッチャは、前記第1のタスクを他の第2のタスクに切り替え、前記タスク割当部は、前記第1のタスクを前記第2のタスク処理部に割り当てること、を特徴とする計算機。162に記載の計算機であって、前記ディスパッチャは、所定時間内に前記所定数の前記計算機が前記切替可能ポイントを検出したか否かを判定し、前記所定時間内に前記切替可能ポイントを検出していない他の前記計算機に対して、同期が外れた旨を通知する同期外通知部を備えること、を特徴とする計算機。1716に記載の計算機であって、前記他の計算機と通信可能に接続される多数決機に通信可能に接続され、前記同期外通知部はさらに、前記所定時間内に前記切替可能ポイントを検出していない前記他の計算機である同期外計算機を指定して、前記同期外計算機の同期が外れた旨を示す同期外通知を前記多数決機に送信し、前記多数決機は、前記同期外通知を受信する同期外通知受信部と、前記同期外通知に指定された前記同期外計算機以外の前記計算機による演算結果を比較して、同一になった数の最も多い前記演算結果を出力する多数決出力部と、を特徴とする計算機。181に記載の計算機であって、前記他の計算機と通信可能に接続される多数決機と通信可能に接続され、前記多数決機は、前記計算機による演算結果を比較して、同一になった数の最も多い前記演算結果である多数決結果を出力する多数決出力部と、前記多数決結果と異なる前記演算結果を出力した前記計算機を前記各計算機に通知するエラー通知部とを備え、前記ディスパッチャは、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記多数決結果と異なる前記演算結果を出力した前記計算機以外の前記計算機から取得した前記管理テーブルに記憶されている前記タスク制御ブロックとに基づいて、前記切替タスクを決定すること、を特徴とする計算機。191に記載の計算機であって、計算機個別のエラーが発生したとき、エラー情報を計算機間で通信し、計算機間で同期をとってエラー処理を行うこと、を特徴とする計算機。201に記載の計算機であって、タスクにおいてプログラムエラーが発生したとき、ディスパッチャが当該エラーを同期して処理すること、を特徴とする計算機。21複数のタスクを時分割で実行する計算機の制御方法であって、他の前記計算機と通信可能に接続され、前記タスクを実行するタスク処理部と、前記各タスクについて、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する管理テーブルとを備える計算機が、前記タスク処理部が実行しているタスクである実行中タスクを、他のタスクである切替タスクに切り替えるべきタイミングである切替可能ポイントを検出し、前記他の計算機から前記管理テーブルを取得し、前記切替可能ポイントが検出された場合に、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに含まれる前記タスク制御ブロックとに基づいて前記切替タスクを決定し、前記タスク処理部が実行するタスクを前記切替タスクに切り替えること、を特徴とする計算機の制御方法。22複数のタスクを時分割で実行するためのプログラムであって、他の前記計算機と通信可能に接続され、前記タスクを実行するタスク処理部と、前記各タスクについて、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する管理テーブルとを備える計算機に、前記タスク処理部が実行しているタスクである実行中タスクを、他のタスクである切替タスクに切り替えるべきタイミングである切替可能ポイントを検出するステップと、前記他の計算機から前記管理テーブルを取得するステップと、前記切替可能ポイントが検出された場合に、当該計算機が備える前記管理テーブルに記憶されている前記タスク制御ブロックと、前記他の計算機から取得した前記管理テーブルに含まれる前記タスク制御ブロックとに基づいて、前記切替タスクを決定するステップと、前記タスク処理部が実行するタスクを前記切替タスクに切り替えるステップと、を実行させるためのプログラム。2315に記載の計算機であって、前記タスクの状態を示す情報であるタスク制御ブロックを記憶する前記管理テーブルには、前記実行中タスクに係る前記タスク制御ブロックを格納する第1の格納領域と、実行可能な状態にある前記タスクに係る前記タスク制御ブロックを格納する第2の格納領域と、待ち状態にある前記タスクに係る前記タスク制御ブロックを格納する第3の格納領域と、前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングの順序を格納する第4の格納領域と、を備える計算機。2423に記載の計算機であって、前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングを指定する命令である切替可能シグナルを呼び出した場合に、前記ディスパッチャは、前記第1のタスクを他の第2のタスクに切り替え、前記第1のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第1のタスク処理部から前記第2のタスク処理部に変更するタイミングの順序を格納する第4の格納領域に追加登録し、前記タスク割当部は、前記第4の格納領域にて実行順序が訪れたときのみ前記第1のタスクを前記第2のタスク処理部に割り当てること、を特徴とする計算機。2523に記載の計算機であって、前記第2のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第2のタスク処理部から前記第1のタスク処理部に変更するタイミングを指定する命令である切替可能シグナルを呼び出した場合に、前記ディスパッチャは、前記第4の格納領域から当該タスクの前記順序情報を削除し、前記第2のタスク処理部に割り当てられている第1のタスクが、当該タスクの割り当てを前記第2のタスク処理部から前記第1のタスク処理部に割り当てること、を特徴とする計算機。2615に記載の計算機であって、前記第1のタスク処理部と第2のタスク処理部で実行するメモリ回収タスクと、前記メモリ回収タスクが起動するメモリ空き容量状況の閾値を格納するタスク処理部毎メモリ回収閾値管理格納部と、を有する特徴とする計算機。2726に記載の計算機であって、前記タスク処理部毎メモリ回収閾値管理処理部に、前記同期タスクが実行される処理部のメモリ回収閾値よりも他のタスク処理部でのメモリ回収閾値が先に閾値条件に合致する閾値有し、同期タスク実行処理部より先に他のタスク処理部にてメモリ回収を実行すること、を特徴とする計算機。