説明

分散処理システム

【課題】プロセスマイグレーションが可能な分散処理システムにおいて、外部装置を利用するタスク(プロセス)を移送する際に、該タスクの動作を保証することのできる技術を提供する。
【解決手段】 各々に外部装置が接続された複数のコンピュータから構成され、あるコン
ピュータ上で実行中のタスクを他のコンピュータへ移送し、移送先のコンピュータで前記タスクの実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクを移送する場合は、移送後のコンピュータに接続されている外部装置を利用して該タスクの処理を継続する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、実行状態のタスクを他のコンピュータへ移送して該タスクの処理を継続可能な分散処理システムに関する。
【背景技術】
【0002】
従来、複数のコンピュータ(情報処理装置)をネットワークを介して接続し、全体として1つのシステムとして機能するような分散処理システムが実用化されている。このような分散処理システムでは、各コンピュータにかかる負荷ができるだけ均等になるように処理(タスク)を分散して割り当てる負荷分散処理が可能となる。また、多数のコンピュータを接続して仮想的な高性能なコンピュータシステムとするグリッドコンピューティングシステムでは、演算処理などを並列に実行可能なタスクに分割して、それぞれのタスクを個々のコンピュータにおいて実行させている。
【0003】
このように、分散処理システムにおいては、タスクをシステム内のいずれかのコンピュータに割り当てて実行している。このようにして実行されるタスクは、割り当てられたコンピュータにおいて、タスクの先頭の処理から行われている。
【0004】
近年、あるコンピュータにおいて実行中のタスク(プロセス)が持つ実行状態(実行コンテキスト)を他のコンピュータ上に移送し、移送先のコンピュータ上で途中の実行状態から処理を継続することのできるプロセスマイグレーションという技術が実用化されつつある。プロセスの実行コンテキストとは、具体的には、プロセスが使用しているメモリ空間上のデータ(プログラムコードも含む)と、CPU(中央演算処理装置)の状態であるレジスタの値と、プロセスが使用しているファイルの情報等を含むデータである。
【0005】
初期のプロセスマイグレーション技術では、実行コンテキストを記憶装置等に記憶して、他のコンピュータでその実行コンテキストを読み込んでマイグレーションを行っていたが、近年リアルタイムにプロセスを移送することが可能となっている。したがって、特定のコンピュータに負荷が集中している場合に、負荷の軽いコンピュータに処理を移送することで、負荷分散を実現することができる。また、一部のコンピュータの稼働を停止してメンテナンスを行う場合や、コンピュータの異常が検知され故障する可能性がある場合などに、そのコンピュータ上で実行中のタスクを他のコンピュータに移送することで、他のコンピュータによって処理を継続させることができるので耐故障性能が向上することになる。
【特許文献1】特開2004−78465号公報
【特許文献2】特開2004−258984号公報
【特許文献3】特開2006−244481号公報
【非特許文献1】松本尚 他、「汎用超並列オペレーティングシステムカーネルSSS−CORE」、第17回技術発表会論文集、情報処理振興事業協会、pp.175−188、1998年10月、インターネット<URL:http://www.ssscore.org/ssscore/index-j.html>
【発明の開示】
【発明が解決しようとする課題】
【0006】
動的に負荷分散を行ったり、メンテナンスするマシンを停止させる場合には、実行中のプロセスの実行を中断し、移送先のマシンで実行を継続できる必要がある。したがって、上述したプロセスマイグレーションの技術が必須となる。しかしながら、このようなプロセスマイグレーションでは、実行コンテキストの完全なコピーとその復元が必要となる。
ここで、コンピュータ上の各種のリソースに対する要求に関しては、固有のデバイスハンドルやディスクリプタ(記述子)といった形式でデバイス資源にバインドされているため移動が困難である。すなわち、単にCPUを用いた演算処理(および結果のメモリやファイルへの格納)を行うプロセスであれば移送先のマシン上で全ての処理が実行されるが、移送されるタスクが外部装置を利用するものである場合、プロセスの移送後も外部装置に対する出力は移送前のマシンに接続された外部装置に対する出力となってしまったり、外部装置に対する出力が行えなくなってしまったりしてしまう。
【0007】
このように、プロセスの移送後も移送前のマシンに接続された外部装置を利用してしまっては、負荷分散の実現や、故障が予想されるマシンを停止して実行中のプログラムを他のマシンで実行するという耐故障性の保証ができなくなってしまうという問題がある。また、外部装置に対する出力が行えなくなってしまうことも問題である。
【0008】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、実行中のタスクを他のコンピュータへ移送して実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクの移送する際にも、該タスクの動作を保証することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、本発明に係る分散処理システムは以下の構成を取る。すなわち、本発明に係る分散処理システムは、各々に外部装置が接続された複数のコンピュータから構成され、あるコンピュータ上で実行中のタスク(プロセス)を他のコンピュータへ移送して、移送先のコンピュータで前記タスクの実行を継続可能な分散処理システムであり、外部装置を利用するタスクを移送する場合には、移送先のコンピュータは、該コンピュータに接続されている外部装置を利用して該タスクの処理を継続することを特徴とする。
【0010】
このような構成によれば、タスクが移送された後は、移送後のコンピュータに接続された外部装置を利用して処理が実行され、移送前のコンピュータに接続されている外部装置は利用しなくなる。したがって、移送前のコンピュータを停止させても、あるいは、移送前のコンピュータが故障しても、移送されたタスクの実行に影響を与えることがない。したがって、動的にシステムをメンテナンスする際やコンピュータの故障が予想される場合などに、停止するあるいは故障が予測されるコンピュータ上のタスクを他のコンピュータに移送することによって、このタスクの動作を保証することができる。
【0011】
また、本発明に係る分散処理システムは、システム全体で仮想デバイスドライバを共有し、各コンピュータは、該コンピュータに接続された前記外部装置を制御するデバイスドライバと、前記仮想デバイスドライバと前記デバイスドライバとを関連付け、該コンピュータで実行されているタスクによる前記仮想デバイスドライバへの出力を該コンピュータのデバイスドライバへ出力するインタフェース部とを有することが好ましい。
【0012】
このような構成によれば、タスクは仮想デバイスドライバに対して制御を行うだけで、各コンピュータ上のインタフェース部がタスクが実行されているコンピュータに接続されている外部装置に対して制御信号を出力するため、タスクが移送された先のコンピュータに接続されている外部装置を利用した処理を行うことができる。
【0013】
なお、上記の外部装置としては、音声を再生する音響装置や、映像を再生する映像装置などが好適に適用される。
【0014】
また、タスクの移送の際に、移送前のコンピュータのデバイスドライバにバッファされた出力データを、移送先のコンピュータのデバイスドライバに送信することが好ましい。
【0015】
このような構成によれば、タスクがデバイスドライバに出力したが、バッファされただけで外部装置上で処理が行われていない制御についても、移送先のコンピュータに接続された外部装置上で処理することができる。
【発明の効果】
【0016】
本発明によれば、実行中のタスクを他のコンピュータへ移送して実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクを移送する際にも、該タスクの動作を保証することができる。
【発明を実施するための最良の形態】
【0017】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0018】
<システム構成>
本実施形態に係る分散処理システムは、複数のコンピュータがネットワークを介して接続されており、各コンピュータ間で実行状態にあるタスクを動的に移送可能な分散処理システムである。各コンピュータは、CPU、主記憶装置、補助記憶装置、ネットワークインタフェースを有している。また、スピーカやディスプレイなどの外部装置を有しており、実行中のプログラムがデバイスドライバを介してこの外部装置を制御可能である。
【0019】
図1は、本実施形態に係る分散処理システムの概要構成を示す図である。図1では、3台のノード1〜3から分散処理システムが構成されているが、ノードの数は何台であっても構わない。各ノード1〜3上では、OS10−1,10−2,10−3(以下、区別する必要がない場合は単にOS10ということもある。他の構成要素についても同様。)が実行されており、各ノードにおける負荷状況やリソースの利用状況などを相互に通知しあい全体として1つのシステムとして機能するように構成されている。本実施形態に係る分散処理システムでは、システム全体で共有された仮想的なメモリ空間である仮想メモリ空間4を有する。仮想メモリ空間4は、実際には各ノードの実メモリ11−1,11−2,11−3に対応している。各ノードが仮想メモリ空間4上のメモリにアクセスする場合、対応する実メモリが他のノード上の実メモリである場合、OS10がネットワークを介して他ノードのメモリにアクセスするため、実行中のプログラム(の作成者)はアクセスするメモリが他ノード上に存在することを意識する必要がない。
【0020】
また、本実施形態に係る分散処理システムは、システム全体で共通の仮想デバイスドライバ5を有している。本実施形態に係る分散処理システムを構成する各ノード1〜3は、それぞれ、同一種類の外部装置13−1,13−2,13−3を有している。外部装置13としては、スピーカ(音響装置)やディスプレイ(映像装置)を例として挙げることができるが、その他のどのような装置であっても構わない。仮想デバイスドライバ5は、タスクを実行しているノードに接続された外部装置13への制御を行うものである。したがって、プログラム(の作成者)はどのノードに移送されたかを意識することなく仮想デバイスドライバ5へアクセスすることで、プログラムが存在するノードに接続された外部装置13への出力を行うことができる。なお、各ノードのOS10は、ノード毎に固有の外部装置に関する情報(IRQやI/Oポートなど)を管理しており、仮想デバイスドライバ5と実際のデバイスドライバ12とを対応づける処理を行う。
【0021】
<プロセス移送>
次に、本実施形態に係る分散処理システムにおけるプロセス移送(プロセスマイグレーション)について説明する。図2は、プロセス移送を説明する図である。図2は、ノード1でタスクAおよびタスクBが実行されており、ノード2でタスクCおよびタスクDが実行されている状態で、タスクBがノード1からノード2に移送される状況を示している。
タスクA〜Dは仮想メモリ空間4上に配置されているが、現実には、タスクA,Bはノード1の実メモリ11−1に格納され、タスクC,Dはノード2の実メモリ11−2に格納されている。なお、各タスクは、タスク毎に0番地から始まるプロセス空間を使用しており、タスクの実態が具体的な実アドレス11のどのアドレスに格納されているかに関係なく実行することができる。
【0022】
ここで、ノード1からノード2にタスクBを移送する場合には、タスクBを仮想メモリ空間4上において移動する。仮想メモリ空間4上でのタスクBの移動によって、タスクBのメモリイメージは、現実にはノード1の実メモリ11−1からノード2の実メモリ11−2に移動される(正確には、ノード2の実メモリ上に移動するように仮想メモリ空間で移動する)。なお、上述したようにタスクのイメージは各タスクのプロセス空間内における相対アドレスで規定されており、移動後もその論理アドレスに変更はない。したがって、タスクBがノード2に移送された後も、ノード2において実行状態が復元され、移送されたときの状態から実行を再開することが可能である。
【0023】
<デバイス制御>
次に、本実施形態に係る分散処理システムにおけるデバイス制御について説明する。図3は、デバイス制御のモデルを示す図である。アプリケーション31は、本実施形態に係る分散処理システムで共有されている仮想的なデバイスに対応する仮想デバイスドライバ32(図1参照)に対して制御データを出力する。仮想デバイスドライバ32は、デバイスの種類(例えば、音響装置や映像装置など)ごとにそれぞれ存在しており、音響装置に対して出力する場合には音響装置に対応する仮想デバイスドライバ32に対して制御データを出力することで音声データの再生が実現できる。
【0024】
そして、仮想的なデバイスと各ノードが有する現実の外部装置とを対応づけるために、各ノードのOSはインタフェース部33が仮想デバイスドライバ32に対する制御データの出力を各ノードの制御装置に固有の形式に変換してデバイスドライバ34に出力する。そして、デバイスドライバ34は、この制御データに基づいて外部装置35の制御を行う。
【0025】
このように、仮想デバイスドライバ32を導入し、アプリケーション31は仮想デバイスドライバ32を用いて外部装置を制御するようにしたことにより、アプリケーション31が他のノードに移送された場合でも、移送先のノードの外部装置を利用してプログラムの実行を継続することが可能となる。すなわち、アプリケーション31は制御するデバイスの実体を意識することなく仮想デバイスを制御するプログラムとして記述され、アプリケーション31を実行しているOSのインタフェース部33が仮想デバイスと自ノードに接続された実際のデバイスドライバとの対応付けを行う。したがって、アプリケーション31はつねに実行中のノードに接続された外部装置を利用することができる。また、プロセスが他のノードに移送されたときもノード毎のIRQやI/Oポートなどの差違はインタフェース部33で吸収できるため、外部装置を利用した処理を継続することができる。
【0026】
図4は、本実施形態におけるアプリケーションが外部装置を利用する際の処理の流れを示すフローチャートである。まず、アプリケーションプログラム31が仮想デバイスドライバ32を制御するために制御データを出力する(S10)。そして、アプリケーション31を実行しているノードのOSのインタフェース部33が、仮想デバイスドライバ32に対応する自ノードのデバイスドライバ34へ制御データを変換して転送する(S11)。そして、デバイスドライバ34は、この制御データに基づいて外部装置を制御する(S12)。
【0027】
次に、本実施形態に係る分散処理システムにおいて外部装置を利用するタスクが移送さ
れる際のデバイス制御について説明する。図5は、外部装置を利用するタスクBがノード1からノード2に移送される状況を示す図である。タスクBが仮想メモリ空間4内で移動されることにより、そのメモリイメージの実体がノード1の実メモリからノード2の実メモリに移動され、タスクBがノード1からノード2に移送される。タスクBが外部デバイスを利用する場合は、タスクBはシステム全体で共通の仮想デバイスドライバ5に対して制御データを出力する。そして、タスクBがノード1で実行されている場合はノード1のOSがノード1のデバイスドライバ12−1へ制御データを出力し、タスクBがノード2で実行されている場合はノード2のOSがノード2のデバイスドライバ12−2へ制御データを出力する。
【0028】
なお、デバイスドライバ12ー1,12−2は、それぞれ、制御データを蓄積するバッファ12a−1,12a−2を有する。この場合、タスクBをノード1からノード2に移送する際に、ノード1のバッファ12a−1に蓄積されている出力データを、ノード2のバッファ12a−2に移動しても良い。このような構成とすることで、タスクの移送が実行されるとともに移送元の外部装置への出力が停止し、移送先の外部装置に対してその後の出力が実行されることとなる。もっとも、バッファ12a内のデータの移動は行わず、既にバッファされているデータについては移送元のノードで出力し、移送後に出力されたデータのみを移送先のノードで出力する構成としても構わない。
【0029】
<本実施形態の効果>
本実施形態に係る分散処理システムは、システム全体で共有の仮想デバイスドライバを利用し、各ノードにおいて仮想デバイスと現実のデバイスとを対応づける構成を採用したことにより、外部デバイスを利用するタスクがノード間で移送される場合に、そのタスクは移送に拘わらず常にタスクを実行しているノードが有する外部装置を利用することとなる。したがって、移送後のタスクは移送元のノードの動作に拘わらず処理を継続することができる。つまりホームノード依存性を排除することができる。このため、分散処理システムを構成するノードをメンテナンス等のために停止する場合であっても、停止するノードで実行中のタスクを他のノードへ移送して処理を継続することが可能となる。また、各ノードが自ノードに故障が発生する可能性を検知する健康診断手段を有する構成とし、故障の発生が予想される場合には自ノードで実行中のタスクを他のノードに移送することで、システム内でのタスクの実行が保証され、耐故障性能が向上する。
【0030】
<適用例1>
本発明に係る分散処理システムは様々な用途に適用可能であるが、以下にいくつかの具体的な適用例を説明する。
【0031】
図6は、本発明に係る分散処理システムを車載システムに適用した際の構成を示す図である。車両60内には、車載LAN62を介して複数のコンピュータ61a〜cが接続されており、上述した分散処理システムを構成している。ここで、各コンピュータ61a〜cはサウンドカードを有しており、コンピュータ上で音楽再生プログラムなどが実行されて、デバイスドライバを介して音声データが音声信号としてサウンドカードから出力される。各コンピュータのサウンドカードから出力される音声信号は、音声ケーブルによってミキサ63に入力される。ミキサ63では、各コンピュータ61a〜cから出力される音声が合成されて、スピーカ64から音声が再生される。
【0032】
なお、本適用例ではスピーカ64自体はシステムで1つであるが、コンピュータ61a〜cにとっては、搭載されているサウンドカードが利用している外部装置に相当する。
【0033】
このような構成によれば、車載システムにおいて音声再生を行う場合に、音声再生プログラムをコンピュータ間で移送した場合であっても、常にスピーカ64から音声が出力さ
れるので、利用者はプログラムの移送を意識することなく音声再生を行うことができる。
【0034】
なお、音声再生プログラムを移送したときに移送元のコンピュータに依存せずに処理を実行できる。したがって、各コンピュータにおける故障の発生を予測する予測手段を設け、システム内のあるコンピュータの故障が予測された場合に、そのコンピュータで実行中のプログラムを他のコンピュータに移送することで、耐故障性能を向上させることができる。
【0035】
<適用例2>
図7は、本発明に係る分散処理システムを車載システムに適用した際の別の構成を示す図である。基本的に上述した図6の適用例1と同様であるが、本例では、各コンピュータ71a〜cには、ビデオカードを介してディスプレイ74に対して映像を出力する。各コンピュータ71a〜cから出力される映像信号は、映像ケーブルを介してセレクタ73に入力され、セレクタ73に入力されている映像のうちいずれかの映像を選択してディスプレイ74に出力される。本適用例においても上記の適用例1と同様の効果が得られる。
【0036】
なお、外部装置としてスピーカ(サウンドカード)およびディスプレイ(ビデオカード)を例に挙げたが、その他どのような外部装置を利用しても構わない。また、ここでの適用例では、音声信号や映像信号がミキサ63やセレクタ73によって集約される形態を示したが、各コンピュータにスピーカやディスプレイが接続されている形態であっても構わないことはいうまでもない。
【図面の簡単な説明】
【0037】
【図1】本実施形態に係る分散処理システムの概要構成を示す図である。
【図2】本実施形態に係る分散処理システムにおけるプロセス移送を説明する図である。
【図3】本実施形態に係る分散処理システムにおけるデバイス制御モデルを示す図である。
【図4】本実施形態に係る分散処理システムにおいて外部装置を利用する際の処理の流れを示すフローチャートである。
【図5】本実施形態に係る分散処理システムにおいて外部装置を利用するタスクが移送される際の動作を説明する図である。
【図6】音響装置を外部装置として利用する車載の分散処理システムの構成を示す図である。
【図7】映像装置を外部装置として利用する車載の分散処理システムの構成を示す図である。
【符号の説明】
【0038】
1,2,3 ノード
4 仮想メモリ空間
5 仮想デバイスドライバ
11−1,11−2,11−3 実メモリ
12−1,12−2,12−3 デバイスドライバ
13−1,13−2,13−3 外部装置

【特許請求の範囲】
【請求項1】
各々に外部装置が接続された複数のコンピュータから構成され、あるコンピュータ上で実行中のタスクを他のコンピュータへ移送し、移送先のコンピュータで前記タスクの実行を継続可能な分散処理システムにおいて、
外部装置を利用するタスクが移送された場合は、移送先のコンピュータは該コンピュータに接続されている外部装置を利用して前記タスクの実行を継続する
ことを特徴とする分散処理システム。
【請求項2】
システム全体で仮想デバイスドライバを共有し、
各コンピュータは、
該コンピュータに接続された前記外部装置を制御するデバイスドライバと、
前記仮想デバイスドライバと前記デバイスドライバとを関連付け、該コンピュータで実行されているタスクによる前記仮想デバイスドライバへの出力を該コンピュータのデバイスドライバへ出力するインタフェース部と、
を有することを特徴とする請求項1に記載の分散処理システム。
【請求項3】
前記外部装置は、音声を再生する音響装置であることを特徴とする請求項1または2に記載の分散処理システム。
【請求項4】
前記外部装置は、映像を再生する映像装置であることを特徴とする請求項1または2に記載の分散処理システム。
【請求項5】
タスクの移送の際に、移送元のコンピュータのデバイスドライバにバッファされた出力データを、移送先のコンピュータのデバイスドライバへ送信することを特徴とする請求項1〜4のいずれかに記載の分散処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2008−97358(P2008−97358A)
【公開日】平成20年4月24日(2008.4.24)
【国際特許分類】
【出願番号】特願2006−278966(P2006−278966)
【出願日】平成18年10月12日(2006.10.12)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)