JP3250729B2 - プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体 - Google Patents

プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体

Info

Publication number
JP3250729B2
JP3250729B2 JP01490799A JP1490799A JP3250729B2 JP 3250729 B2 JP3250729 B2 JP 3250729B2 JP 01490799 A JP01490799 A JP 01490799A JP 1490799 A JP1490799 A JP 1490799A JP 3250729 B2 JP3250729 B2 JP 3250729B2
Authority
JP
Japan
Prior art keywords
thread
state
code
computer
flag
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP01490799A
Other languages
English (en)
Other versions
JP2000215072A (ja
Inventor
和也 小山
悟 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP01490799A priority Critical patent/JP3250729B2/ja
Priority to US09/489,032 priority patent/US6769121B1/en
Publication of JP2000215072A publication Critical patent/JP2000215072A/ja
Application granted granted Critical
Publication of JP3250729B2 publication Critical patent/JP3250729B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ネットワークによ
って結合された複数の計算機(以下、適宜プログラム実
行装置という)において、実行中のプロセスを実行状態
を保存したまま他の計算機に移動させることが可能なプ
ログラム実行装置及びそのプロセス移動方法並びにプロ
セス移動制御プログラムを格納した記憶媒体に関する。
【0002】
【従来の技術】従来、ネットワークによって結合された
複数の計算機にまたがった処理を行う分散システムを構
築する場合、個々の計算機毎にソフトウェアモジュール
を作成し、ソフトウェアモジュールとソフトウェアモジ
ュールとの間で、計算機間における通信を行う形で実現
していた。このため、プログラマは、システム本来の処
理以外にモジュール間の通信機構を設計し作成する必要
があったため、システムの実現が困難であった。
【0003】これに対して、近年、このような分散シス
テムを容易に構築するための技術として、実行中のプロ
セスが幾つかの計算機の上を渡り歩くことにより、一つ
のプログラム、一つのモジュールで複数計算機上での処
理を実現する、プロセス移動の技術が提案されている。
この種の従来技術として、例えば特開平7−18217
4号公報に開示されたTelescriptは、オブジ
ェクトとプログラム実行状態であるスレッドを、エージ
ェントと呼ばれる単位で計算機間をプロセス移動させる
ことを可能にしている。そして、プログラム中に「g
o」と言う命令を記述することにより、命令「go」が
呼ばれた時点でプロセス移動を行うことが可能となって
いる。
【0004】プログラムは、全てハードウェアに依存し
ない専用言語で記述され、エンジンと呼ばれるインタプ
リタ上で実行される。プロセスの移動は、当該専用言語
で記述されたプログラムとインタプリタでの実行状態と
を移動先の計算機上のインタプリタに転送し、そこで転
送されたプログラムと実行状態とに基づいて移動前のプ
ロセスを再現することにより実現されている。ただし、
同公報に開示された技術において、移動する個々のエー
ジェントはシングルスレッドであり、複数のスレッドを
持ったプロセスを移動させることはできない。
【0005】また、分散システムを構築する他の技術と
して、複数のプロセッサが単一のアドレス空間を共有す
るシステムにおいて、スレッドのスタックを所定のプロ
セッサから他のプロセッサへ移動させる技術がある。こ
の種の従来技術として、例えば特開平9−146904
号公報には、所定のプロセッサ上で動作していたスレッ
ドを、メモリアドレスのオフセットを変更するのみで他
のプロセッサ固有のメモリ領域上に移動させる技術が開
示されている。しかし、同公報に開示されたシステム
は、単一アドレス空間内での一つのスレッドスタックの
移動を実現しており、アドレス空間自体の移動を実現す
るものではない。また、複数のスレッドを同時に移動さ
せるものでもない。
【0006】近年、計算機の動作において、通信やウィ
ンドウ操作を同時に行う場合や、複数の処理を並行して
行う場合等、マルチスレッドでプログラムを記述する必
要のある場合が多くなっている。このため、ネットワー
クによって結合された複数の計算機上で動作するソフト
ウェアを容易に開発するためのプログラム言語の実行環
境が求められている。しかしながら、上記のように、従
来のプロセス移動技術は、そのようなマルチスレッドプ
ログラム自身を移動させることができず、並列性を持っ
た複雑な移動プログラムの記述が困難であった。
【0007】
【発明が解決しようとする課題】上述したように、分散
システムを構築するために用いられる従来のプロセス移
動技術は、移動対象がシングルスレッドであり、マルチ
スレッドで動作するプロセスを、全てのスレッドをまと
めて移動させることができないという欠点があった。
【0008】特開平7−182174号公報に記載され
た技術は、実行環境であるエンジン自身はマルチスレッ
ドで動作するが、移動単位となるエージェントはシング
ルスレッドのみであった。
【0009】また、特開平9−146904号公報に記
載された技術は、分散システム上では動作するのはマル
チスレッドであるが、移動対象となるのは個々のスレッ
ドであった。また、アドレス空間上の情報まで含めたマ
ルチスレッドのプロセスとしての移動は考えられていな
かった。
【0010】これら従来の技術において、マルチスレッ
ドプロセスの移動を試みると、例えば、プロセス移動命
令を発したスレッドがプロセスのシリアライズを行って
いる間に他のスレッドがプロセスの状態を書き換えてし
まい、その結果、シリアライズされたデータに矛盾が発
生したり、プロセス移動命令を発したスレッドが他のス
レッドを外部から強制的にサスペンド等させることによ
りプロセス内のスレッドスタックやオブジェクトが矛盾
を含んだ状態で停止したり、あるいは元々サスペンドし
ていたスレッドかプロセス移動のためにサスペンドされ
たスレッドか判別できなくなるため移動先でどのスレッ
ドをサスペンドすべきか分からなくなったりするといっ
た事態が発生し、正常に動作させることができなかっ
た。
【0011】また、上記従来のプロセス移動技術は、移
動するプロセスを記述するプログラムコードが、実行
中、常に移動可能な単一のコードを想定していた。すな
わち、例えば、特開平7−182174号公報に記載さ
れた技術は、計算機に依存しない言語で記述したプログ
ラム(コード)をインタプリタ上で動作させていた。ま
た、特開平9−146904号公報に記載された技術
は、実プロセッサのコード、あるいは仮想プロセッサの
コードをインタプリタ上で動作させていた。
【0012】しかしながら、インタプリタ上で動作する
プログラムコードは、実プロセッサのネイティブコード
に比べて実行速度が劣るという欠点があった。
【0013】また、計算機やオペレーティングシステム
などに強く依存した処理を行おうとする場合、インタプ
リタのみでは記述しきれない場合もあった。
【0014】これに対し、実プロセッサのネイティブコ
ードは、プロセス移動できる対象が同一のプロッサ環境
のみに限定されてしまうため、広範囲な移動を実現でき
なかった。
【0015】また、インタプリタではセキュリティ対策
として、実行時に様々なチェックを行うことができる
が、ネイティブコードでは、このようなセキュリティの
ためのチェックを行うことは極めて困難である。
【0016】本発明は、上記従来の欠点を解決し、マル
チスレッドで動作するプロセスのプロセス移動を実現す
ることにより、プログラムの並列実行を行う複雑なシス
テムや、計算機に依存したプログラムコードと計算機に
依存しないプログラムコードの混在するシステムなどを
分散環境上で動作させる場合に、そのような分散システ
ムの構築を容易にするプログラム実行装置及びそのプロ
セス移動方法並びにプロセス移動制御プログラムを格納
した記憶媒体を提供することを目的とする。
【0017】
【課題を解決するための手段】上記の目的を達成する本
発明は、ネットワークにて他の計算機と接続され、実行
中のプロセスを実行状態を保存したまま前記他の計算機
に移動させることが可能なプログラム実行装置におい
て、プロセス毎に設けられたプロセスの実行状態を表す
フラグと、スレッド毎の状態を表すテーブルと、スレッ
ドの実行状態に応じて前記フラグ及び前記テーブルの値
を設定するスレッド管理手段と、プロセス移動命令を実
行する際に前記フラグ及び前記テーブルの値を参照し
て、プロセス移動が可能な場合にのみ前記フラグを移動
実行中を表す値に設定すると共に、プロセス内で実行中
のスレッドにおいて前記フラグをチェックし、前記フラ
グがプロセスの移動実行中を示す値であれば該スレッド
の実行を中断し、プロセス内の全てのスレッドが停止状
態になった場合にプロセス移動のための処理を実行する
プロセス管理手段とを備えることを特徴とする。
【0018】請求項2の本発明のプログラム実行装置
は、前記プロセス管理手段が、実行すべきプログラムコ
ードにおける、計算機に依存せずインタプリタ上で実行
される計算機非依存コードと、計算機に依存しCPUに
よって直接実行される計算機依存コードとを識別し、ス
レッドが前記計算機依存コードを実行中である場合に、
該スレッドを移動不可能状態とすることを特徴とする。
【0019】請求項3の本発明のプログラム実行装置
は、前記スレッド管理手段が、サスペンド、スリープ及
び同期待ち状態を含む一時停止の状態に関する情報をス
レッドスタック上に保存し、他の計算機から受け取った
スレッドスタック上の前記一時停止の状態に関する情報
を用いて、サスペンド、スリープまたは同期待ち状態を
含む一時停止の状態を復元することを特徴とする。
【0020】請求項4の本発明のプログラム実行装置
は、前記スレッド管理手段が、前記フラグ及び前記テー
ブルを操作する状態管理手段と、スレッドのスケジュー
リング、スレッド間の同期及び排他制御を行うスケジュ
ーリング手段とからなり、前記スケジューリング手段
を、オペレーティングシステムのスレッド機能を用いて
実現することを特徴とする。
【0021】請求項5の本発明のプログラム実行装置
は、前記プロセス管理手段が、プログラムコードに埋め
込まれた移動可能、不可能を宣言するコードを検出して
判別し、スレッドが移動不可能を宣言するコードを含む
前記プログラムコードを実行中である場合に、該スレッ
ドを移動不可能状態とすることを特徴とする。
【0022】また、上記の目的を達成する他の本発明
は、ネットワークにて他の計算機と接続されたプログラ
ム実行装置における、実行中のプロセスを実行状態を保
存したまま前記他の計算機に移動させるプロセス移動方
法において、プロセス移動命令を実行する際に、スレッ
ドの状態を調べてプロセス移動が可能な場合にのみプロ
セス毎に設けられたプロセスの実行状態を表すフラグを
移動実行中を表す値に設定するステップを含むと共に、
プロセス内で実行中のスレッドにおいて、前記フラグを
チェックするステップと、前記フラグがプロセスの移動
実行中を示す値である場合に、該スレッドの実行を中断
するステップと、プロセス内の全てのスレッドが停止状
態になった場合に、プロセス移動のための処理を実行す
るステップとを含むことを特徴とする。
【0023】請求項7の本発明のプロセス移動方法は、
前記フラグ設定ステップにおいて、実行すべきプログラ
ムコードにおける、計算機に依存せずインタプリタ上で
実行される計算機非依存コードと、計算機に依存しCP
Uによって直接実行される計算機依存コードとを識別
し、スレッドが前記計算機依存コードを実行中である場
合に、該スレッドを移動不可能状態と判断することを特
徴とする。
【0024】請求項8の本発明のプロセス移動方法は、
前記スレッド実行中断ステップにおいて、サスペンド、
スリープ及び同期待ち状態を含む一時停止の状態に関す
る情報をスレッドスタック上に保存することを特徴とす
る。
【0025】請求項9の本発明のプロセス移動方法は、
前記フラグチェックステップにおいて、定期的に前記フ
ラグの値をチェックすることを特徴とする。
【0026】請求項10の本発明のプロセス移動方法
は、前記フラグ設定ステップにおいて、プログラムコー
ドに埋め込まれた移動可能、不可能を宣言するコードを
検出して判別し、スレッドが移動不可能を宣言するコー
ドを含む前記プログラムコードを実行中である場合に、
該スレッドを移動不可能状態と判断することを特徴とす
る。
【0027】また、上記の目的を達成するさらに他の本
発明は、ネットワークにて他の計算機と接続されたプロ
グラム実行装置を制御して、実行中のプロセスを実行状
態を保存したまま前記他の計算機に移動させるプロセス
移動制御プログラムを格納した記憶媒体において、プロ
セス移動命令を実行する際に、スレッドの状態を調べて
プロセス移動が可能な場合にのみプロセス毎に設けられ
たプロセスの実行状態を表すフラグを移動実行中を表す
値に設定するステップを含むと共に、プロセス内で実行
中のスレッドにおいて、前記フラグをチェックするステ
ップと、前記フラグがプロセスの移動実行中を示す値で
ある場合に、該スレッドの実行を中断するステップと、
プロセス内の全てのスレッドが停止状態になった場合
に、プロセス移動のための処理を実行するステップとを
含むことを特徴とする。
【0028】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を参照して詳細に説明する。
【0029】本発明のプログラム実行装置は、マルチス
レッドで動作するプロセスのプロセス移動を実現するこ
とにより、並列性を持った分散システムの記述を容易に
する。加えて、スレッドの実行状態としてプロセス移動
可能、不可能を管理し、計算機に依存したプログラムコ
ードの実行を移動不可能状態として管理することによ
り、計算機に依存したプログラムコードと計算機に依存
しないプログラムコードの混在するシステムにおけるプ
ロセス移動を可能にする。
【0030】図1は、本発明の概念を説明するためのプ
ログラム実行装置の概略的な構成を示すブロック図であ
る。図1に示すプログラム実行装置は、プロセス管理部
101とスレッド管理部102とを備え、プログラム中
でプロセスやスレッドに関する操作を行う場合に、これ
らの管理部101、102を呼び出す。そして、プロセ
ス114を管理する情報として、プロセスの状態を表す
プロセス状態フラグ111、禁止状態数を示す移動禁止
カウンタ112、個々のスレッドの状態を表すスレッド
状態テーブル113を用意し、プロセス管理部101及
びスレッド管理部102によって管理する。
【0031】プロセス状態フラグ111が示すプロセス
114の状態としては、「移動発生中」、「移動禁止
中」、「通常実行中」の状態を設ける。プロセス114
は、普段は「通常実行中」の状態を取るが、プロセスに
含まれるいずれかのスレッドが移動禁止状態になった場
合は「移動禁止中」の状態となる。また、いずれかのス
レッドがプロセス移動を実行しようとした場合は「移動
発生中」の状態となる。
【0032】スレッド状態テーブル103が管理する個
々のスレッドの状態としては、「通常実行状態」、「一
時停止状態」、「待機状態」の状態を設ける。「通常実
行状態」は、さらに「移動可能状態」と「移動不可能状
態」に分けられる。スレッドは、通常は「通常実行中」
の状態を取るが、サスペンド、スリープ、同期待ちなど
長時間停止する場合「一時停止状態」の状態を取る。ま
た、他のスレッドがプロセス移動命令を発し、これに対
してスレッドが安全に一時停止した場合は「待機状態」
となる。
【0033】図2は、スレッド状態テーブルに保存され
る、個々のスレッドの状態の遷移を示す図である。図2
に示すように、プロセスに含まれるスレッドが移動可能
なプログラムを実行している場合、スレッドは「移動可
能状態(201)」である。
【0034】スレッドが実行するプログラムが移動でき
ない状態になる場合、例えばスレッドが移動不可能な機
種依存コードを実行する場合、当該スレッドは、プロセ
スの移動禁止カウンタ112の値を1増やし、加えてプ
ロセスの状態プロセス状態フラグ111を「移動不可能
状態(202)」にする。また、当該スレッドの実行す
るプログラムが移動できない状態から移動できる状態に
復帰した場合、例えばスレッドが移動不可能な機種依存
コードの実行を終了した場合、当該スレッドは、プロセ
スの移動禁止カウンタ112の値を1減らす。そして、
カウンタ値が0になったら、プロセスの状態プロセス状
態フラグ111を「移動禁止中」から「通常実行中」に
戻して、自身のスレッドの状態も「移動可能状態(20
1)」に戻す。
【0035】図3に、プロセス移動実行の処理の流れを
示す。図3を参照すると、まず、プロセス移動を行おう
とするスレッドが、移動処理を開始する前にフラグの状
態をチェックする(ステップ301、302)。フラグ
の状態が「通常実行中」であれば、フラグの状態を「移
動発生中」に設定し(ステップ303)、他のスレッド
が待機状態になるのを待つ(ステップ304)。
【0036】ステップ301の判断において、フラグの
状態が「移動発生中」であった場合、スレッドは、当該
移動処理が終了するまで処理の実行を待ち(ステップ3
06)、当該移動処理が終了した後に再度フラグチェッ
クを試みる(ステップ301、302)。
【0037】また、ステップ302の判断において、フ
ラグが「移動禁止中」であった場合、スレッドは、当該
移動禁止状態が解除されるまで処理の実行を待ち(ステ
ップ307)、当該移動禁止状態が解除された後に再度
フラグチェックを試みる(ステップ301、302)。
【0038】通常実行中の各スレッドは、プログラムコ
ードを実行しながら、定期的にプロセス状態フラグ11
1をチェックする。そして、プロセス状態フラグ111
の内容が「移動発生中」である場合以外は、動作を継続
する(ステップ301)。チェック時にプロセス状態フ
ラグ111が「移動発生中」であった場合、各スレッド
は、自身のスレッドの状態を「通知済み」にすると共
に、移動を行っているスレッドに対して自身が停止した
ことを通知し、実行を停止して待機状態203に入る。
【0039】プロセス移動を行うスレッドは、自分以外
の全てのスレッドの状態が「待機状態」になると、移動
のための準備が整ったとみなし、実際のプロセス移動処
理に移行する(ステップ305)。プロセス移動処理で
は、移動対象であるプロセス114の内容を転送するこ
とにより、プロセスの移動を行う。
【0040】一方、サスペンド、スリープ、他のスレッ
ドとの同期待ちなどによりスレッドの実行が一時停止状
態になる場合、当該スレッドは、一時停止状態に入る前
に自身の状態を「一時停止状態(204)」に設定して
おく。プロセス移動を行うスレッドが他のスレッドの状
態を調べる時、「一時停止状態」のスレッドは「通知済
み」と同様に見なし、当該スレッドが待機状態(20
3)になるのを待たない。
【0041】これに対し、一時停止状態(204)にあ
ったスレッドが実行を再開する場合、まず、プロセス状
態フラグ111をチェックし、「移動発生中」以外であ
ればスレッドの状態を「通常実行中(201)」に戻し
て動作を再開する。「移動発生中」であった場合は、ス
レッドの状態を「待機状態(203)」に設定して実行
を中断する。
【0042】待機状態になったスレッドは、移動処理が
終了すると移動可能状態(201)に戻り、実行を継続
する。ただし、プロセス移動によって移動元のスレッド
が削除されるべき場合は、別途移動処理内からスレッド
に対して削除命令が送られ、実行再開と同時にスレッド
は実行を終了する。
【0043】以上の動作により、プロセス内の全てのス
レッドが移動可能である場合のみプロセス移動が行われ
るよう、プロセス移動の発生タイミングを管理すること
ができる。また、サスペンド、スリープ、他のスレッド
との同期待ちなどでスレッドの実行が一時停止状態にあ
っても、これを移動させることが可能となる。また、移
動させる場合は、移動処理を行うスレッドのみが動作
し、他のスレッドは安全な状態で停止しているため、プ
ロセス移動のためにプロセス内部の情報を転送している
際中に他のスレッドがプロセス内部の情報を書き換えて
しまい、結果として転送したプロセス内の情報に矛盾が
発生してしまう、といった事態を避けて、安全に移動処
理を行うことができる。
【0044】図4は、本発明の一実施形態によるプログ
ラム実行装置の構成を示すブロック図である。図4を参
照すると、本実施形態のプログラム実行装置400は、
上述したプロセス管理部401及びスレッド管理部40
2を備えると共に、オブジェクト管理部403と、プロ
セスシリアライズ部404と、通信部405と、計算機
非依存プログラムコードであるバイトコード管理部40
6と、計算機依存プログラムコードであるネイティブコ
ード管理部407と、バイトコードインタプリタ408
とを備える。なお、図4には、本実施形態における特徴
的な構成のみを記載し、他の一般的な構成については記
載を省略してある。
【0045】また、本実施形態の各構成要素は、プログ
ラム実行装置である計算機システム(例えば、パーソナ
ルコンピュータやワークステーション)におけるプログ
ラム制御されたCPUとRAMその他の内部メモリとで
実現される。CPUを制御するコンピュータプログラム
は、磁気ディスクや光ディスク、半導体メモリその他の
一般的な記憶媒体に格納して提供され、計算機システム
の内部メモリにロードされて、CPUを制御し、後述す
る各構成要素の機能を実行する。
【0046】本実施例によって実行するプログラムは、
計算機に依存しないバイトコード451と計算機に依存
するネイティブコード452とを混在させて記述されて
いるものとする。バイトコード451は、バイトコード
管理部406に読み込まれ、バイトコードインタプリタ
408によって実行される。ネイティブコードは、プロ
グラム実行装置外部でCPUによって直接実行される。
【0047】また、プログラム実行装置400上で動作
するプロセス420は、オブジェクト421とスレッド
スタック422を持つ。
【0048】さらに、プログラム実行装置400には、
プロセス毎に固有のプロセス管理領域410が用意され
る。プロセス管理領域410は、プロセス状態フラグ4
11、スレッド状態テーブル413、移動禁止カウンタ
412を持つ。
【0049】図4において、プログラム実行装置430
は、ネットワークを介してプログラム実行装置400と
接続された他の動作中のプログラム実行装置であり、プ
ログラム実行装置400と同じ構成を持つ。
【0050】プログラムの実行は、バイトコード451
のバイトコードインタプリタ408による実行あるいは
ネイティブコード452の直接実行によって、プロセス
420内のオブジェクト421やスレッドスタック42
2を操作することによって行われる。また、バイトコー
ド451とネイティブコード452とは、実行中に互い
に相手を呼び出すことが可能である。また、バイトコー
ド451とネイティブコード452の両コードとも、ス
レッド管理部402を呼び出してスレッド間の同期処理
やサスペンド、スリープと言ったスレッド制御処理を行
ったり、新しいスレッドの生成や削除を行ったりするこ
とが可能である。
【0051】また、バイトコード451は、プロセス管
理部401を呼び出してプロセス移動処理を行うことが
可能である。一方、ネイティブコード452が実行中
は、プロセス移動ができないと見なされる。そして、ネ
イティブコード452が呼び出される際には、プロセス
管理部401に対して移動禁止カウンタを1増加させる
ように指示される。プロセス管理部401は、当該指示
に応じて、移動禁止カウンタ412を1増加させる。ま
た、移動禁止カウンタ412の値が0以外であれば、プ
ロセス状態フラグ411を「移動禁止中」に設定する。
【0052】この設定は、ネイティブコード452が実
行中にバイトコード451を呼び出した場合でも解除さ
れない。そして、ネイティブコード452の実行が終了
した時に、プロセス管理部401に対してカウンタを1
減少させるよう指示が出される。プロセス管理部401
は、移動禁止カウンタ412を1減少させる。カウンタ
の値が0なった場合は、プロセス状態フラグ411を
「通常実行中」に戻す。
【0053】プロセス中のあるスレッドがバイトコード
実行中にプロセス移動命令を見つけた場合、バイトコー
ドインタプリタ408は、プロセス管理部401のプロ
セス移動命令を呼び出す。プロセス移動命令は、まず呼
び出したスレッド自身が現在移動を禁止していないかど
うかを調べ、禁止していれば移動失敗を返す。
【0054】一方、スレッドが移動を禁止していない場
合、プロセス管理部401はプロセス状態フラグ411
を移動中に設定するように試みる。この時点でプロセス
状態フラグ411が「通常実行中」でなければ、プロセ
ス管理部401は移動要求元のスレッドの実行を停止さ
せたまま、プロセス状態フラグ411が「通常実行中」
に戻るのを待つ。プロセス状態フラグ411が「通常実
行中」である場合、プロセス管理部401は、プロセス
状態フラグ411を「移動発生中」に設定し、プロセス
420内に存在する全てのスレッドのスレッド状態テー
ブル上106の状態を調べ、これらの状態が全て「待機
状態」あるいは「一時停止状態」になるのを待つ。
【0055】バイトコードインタプリタ408は、バイ
トコード451実行中、定期的にプロセス管理部401
を呼び出し、プロセス状態フラグ411をチェックす
る。プロセス状態フラグ411が「移動発生中」以外の
場合は、呼び出しは何もせずに返る。
【0056】一方プロセス状態フラグ411が「移動発
生中」であった場合、プロセス管理部401は呼び出し
元スレッドのスレッド状態を「待機状態」に設定すると
共に、呼び出し元スレッドを一時停止させる。加えて、
もしプロセス移動呼び出し元以外の全てのスレッドの状
態が「待機状態」もしくは「一時停止状態」になった場
合、プロセス移動を呼び出しているスレッドの実行を再
開させ、移動処理を実行させる。
【0057】プロセス移動呼び出し元を除くプロセス内
の全てのスレッドが停止すると、プロセス管理部401
はプロセス移動処理を継続する。具体的には、プロセス
シリアライズ部404を用いてプロセス内の全てのオブ
ジェクト421とスレッドスタック422をシリアライ
ズし、これを通信部405を通して他のプログラム実行
装置430へ転送する。
【0058】受信したプログラム実行装置430では、
プロセス管理機構431が新規に空きのプロセス440
を生成し、その中にプロセスシリアライズ機構432を
用いて受信したオブジェクトとスレッドスタックとを再
現し、当該プロセスに含まれる全てのスレッドの実行を
再開する。
【0059】移動元のプロセス管理部401は、プロセ
ス移動が成功した場合、移動した全てのスレッドにスレ
ッド終了命令を発した後に、プロセス内の全てのスレッ
ド状態テーブル413の内容を「通常実行状態」に戻
し、停止していたスレッドの実行を再開させる。また、
プロセス移動が失敗した場合は、そのまま直ちにプロセ
ス内の全てのスレッド状態テーブル413の内容を「通
常実行状態」に戻し、停止していたスレッドの実行を再
開させる。スレッドが停止命令を受けていた場合は、再
開直後に自スレッドを終了させる。
【0060】図5は、スレッドが一時停止状態になる場
合の動作を示すフローチャートである。スレッドがサス
ペンド、スリープまたは他のスレッドとの同期待ちを行
う場合、バイトコードインタプリタ408やネイティブ
コード452は、スレッド管理部402のこれらの機能
を呼び出す。
【0061】図5を参照すると、スレッド管理部402
は、まず、対象となるスレッドのスレッド状態106を
「一時停止中」に設定した後(ステップ501)、実際
にスレッドをサスペンド、スリープまたは同期待ち状態
にする(ステップ502)。これらの停止状態は、スレ
ッドスタック422内にも保存され、もし一時停止中に
プロセス移動が発生した場合、プロセスシリアライズ部
404を用いて、移動先のプログラム実行装置において
一時停止状態が再現できるようにしておく。一時停止中
にプロセス移動が発生し、移動に成功して停止中のスレ
ッドに対して終了命令が発せられた場合、その時点で一
時停止は解除され、スレッドは実行再開と同時に終了す
る。
【0062】次に、レジュームされる、スリープから覚
める、同期が取れるなどで一時停止状態が解除された場
合(ステップ503)、スレッド管理部402は、ま
ず、プロセス状態フラグ411をチェックする(ステッ
プ504)。
【0063】ここで、プロセス状態フラグ411が「移
動実行中」であった場合、スレッド管理部402は、ス
レッド状態テーブル413の内容を「待機中」に変更し
(ステップ507)、移動処理終了まで実行を停止させ
たままにしておく(ステップ508)。
【0064】一方、プロセス状態フラグ411が「移動
実行中」以外であった場合、スレッド管理部402は、
スレッドの状態106を「通常実行状態」に戻し(ステ
ップ505)、当該実行動作を継続させる(ステップ5
06)。
【0065】次に、具体的なプロセスの動作例について
説明する。ここでは、計算機の負荷によって数値計算の
実行場所を自動的に変えていくプロセスをマルチスレッ
ドで記述した例について述べる。
【0066】図6は、本動作例で用いるプロセスの構成
を示す図である。図6を参照すると、プロセス600
は、3つのスレッド611、612、613と2つのオ
ブジェクト601、602とを持つ。オブジェクト60
1は、CPU負荷やメモリ使用量など、計算機の状態を
保持する計算機オブジェクトであり、オブジェクト60
2は、数値計算の任意の段階の計算結果を保持する計算
結果オブジェクトである。スレッド611は、1秒おき
にシステムのCPU負荷をチェックするスレッドであ
り、1秒間のスリープと、オペレーティングシステムへ
のCPU負荷問い合わせ処理と結果の計算機オブジェク
トへの反映を繰り返す。スレッド612は、1秒おきに
システムのメモリ使用量をチェックするスレッドであ
り、1秒間のスリープと、オペレーティングシステムへ
のメモリ使用量問い合わせ処理と結果の計算機オブジェ
クトへの反映を繰り返す。スレッド613は、適当な数
値計算処理を行うスレッドであり、計算結果オブジェク
トの内容を用いて幾つかの計算関数を繰り返し呼び出
し、その結果をまた計算結果オブジェクトに反映する、
という処理を繰り返す。
【0067】計算機オブジェクトへCPU負荷やメモリ
使用量データを反映する際、これらの値が一定値以上に
なると、他の負荷が低い計算機を目指して、プロセス移
動命令が発せられる。
【0068】オペレーティングシステムへのメモリ使用
量とCPU負荷の問い合わせ処理は、それぞれネイティ
ブコードとして記述される。また、数値計算処理の関数
の特に計算量が多い部分は、高速化のためネイティブコ
ードとして記述される。それ以外の処理は、全てバイト
コードとして記述される。
【0069】また、計算機オブジェクトの情報更新処理
は、排他制御され、同時に処理が行えるのは1スレッド
とする。
【0070】プロセス移動命令の実行は、スレッド61
1、612いずれかによって実行されることになるが、
これを呼び出す時の他の2つのスレッドの状態は、スレ
ッドスケジューラのスケジューリング次第で任意に定ま
る。
【0071】CPU負荷とメモリ使用量を調べるスレッ
ド611、612は、バイトコード及びネイティブコー
ドの双方の実行を含み、また計算機オブジェクトの操作
に関して互いに排他制御されることから、同時に操作し
ようとした場合、片方が同期待ち状態になる。また、数
値計算スレッド613は、計算機依存コード及び計算機
非依存コードの双方の実行を含んでいる。これらの条件
から、それぞれのスレッド611、612、613の取
り得る状態は図7の通りとなる。
【0072】各スレッド611、612、613は、ネ
イティブコードの呼出し時のみ移動不可能状態になる
が、呼出しが終了すれば直ちに移動可能状態に戻る。ま
た、2つのチェックスレッド611、612は、同時に
計算機オブジェクトにアクセスした時に片方が一時停止
状態になるが、他方がアクセスを終了すれば移動可能状
態に戻る。また、2つのチェックスレッド611、61
2は、スリープ状態になっている時は一時停止状態にな
るが、目覚めればやはり移動可能状態に戻る。さらに、
2つのチェックスレッド611、612は、移動可能状
態で実行中に任意のタイミングでプロセス移動命令を発
する。また、3つのスレッド611、612、613
は、排他制御の同期待ちを除いて、完全に独立並列に動
作する。よって、あるスレッドがプロセス移動命令を発
しようとした時、他のスレッドがどの状態にあるのかは
事前に予測できない。
【0073】以上の前提の下、図8を参照して本動作例
を説明する。図8は、本実施形態により図6に示したプ
ロセスを実行する場合の具体的な構成を示すブロック図
である。
【0074】プログラム実行装置400上には、プロセ
ス管理部401により管理されたプロセス910が存在
し、その中には、オブジェクト管理部403により管理
された計算機オブジェクト601及び計算結果オブジェ
クト602と、スレッド管理部402により管理された
CPU負荷チェックスレッド611のスレッドスタック
811、メモリ使用量チェックスレッド612のスレッ
ドスタック812及び数値計算スレッド613のスレッ
ドスタック813とが存在している。プログラムコード
としては、バイトコード管理部406に管理され、バイ
トコードインタプリタ408によって実行されるバイト
コード821と、ネイティブコード管理部407により
管理されるネイティブコード822が存在している。
【0075】バイトコードインタプリタ408は、バイ
トコード821を実行し、各スレッドスタックやオブジ
ェクトの内容を更新していくと同時に、ネイティブコー
ド管理部407を通してネイティブコード822を呼び
出す。例えば、CPU負荷チェックスレッド611を実
行する場合、バイトコードインタプリタ408は、ま
ず、CPU負荷チェックコードを呼び出す。CPU負荷
チェックコードはネイティブコードなので、バイトコー
ドインタプリタ408は、プロセス管理部401を呼び
出し、移動禁止カウンタ412を1増加させる。これに
より、移動禁止カウンタ412の値が0でなくなるの
で、同時にプロセス状態フラグ411も「移動禁止中」
になる。
【0076】CPU負荷チェックコードが実行を終了す
ると、実行がバイトコードインタプリタ408に戻り、
バイトコードインタプリタ408は、プロセス管理部4
01を呼び出して、移動禁止カウンタ412の値を1減
少させる。この時、他の2つのスレッド612、613
がメモリ使用量チェックコードや数値計算コードを実行
中でなければ、移動禁止カウンタ412は0に戻るの
で、プロセス状態フラグ411も「通常実行中」に戻さ
れる。
【0077】その後、バイトコードインタプリタ408
は、排他制御のためにスレッド管理部402を呼び出
し、計算機オブジェクト601の操作権を獲得した後、
CPU負荷チェックコードの実行結果を計算機オブジェ
クト601に反映し、再度スレッド管理部402を呼び
出して計算機オブジェクト601の操作権を開放する。
そして、スレッド管理部402を呼び出し、スレッドを
1秒間スリープさせる。
【0078】CPU負荷チェックスレッド611の動作
においては、以上の動作を繰り返し実行する。
【0079】メモリ使用量チェックスレッド612の動
作も、呼び出すネイティブコードがメモリ使用量チェッ
クコードであること以外は、上述したCPU負荷チェッ
クスレッド611の動作とほぼ同様である。
【0080】数値計算スレッド613の動作では、バイ
トコードインタプリタ408は、数値計算のためのバイ
トコードを実行し、必要な時にはネイティブコードを呼
び出す。いずれの実行でも適時計算結果オブジェクト6
02の内容が参照及び更新されていく。ネイティブコー
ドの数値計算コードを呼び出す時には、他のスレッド6
11、612の場合と同様に、移動禁止カウンタ412
の値が1増加され、プロセス状態フラグ411も「移動
禁止中」になる。
【0081】CPU負荷チェックスレッド611または
メモリ使用量チェックスレッド612が実行するバイト
コードは、計算機オブジェクトにチェック結果を反映し
た時に計算機の負荷が高いと判断すると、プロセス移動
命令を実行する。例として、CPU負荷チェックスレッ
ド611がチェック結果を反映した時に負荷が高いと判
断されたとする。
【0082】この時、バイトコードインタプリタ408
は、プロセス管理部401のプロセス移動機能を呼び出
す。プロセス管理部401は、プロセス状態フラグ41
1をチェックし、現在のプロセスの状態を調べる。そし
て、メモリ使用量チェックコードと数値計算コードのい
ずれかあるいは両方が実行中であれば、プロセス状態フ
ラグ411は「移動禁止中」となっているので、プロセ
ス移動処理を開始することはできない。この場合、これ
らのコードが実行終了するのを待ち、プロセス状態フラ
グ411が「通常実行中」になると同時に移動処理に入
る。
【0083】もし、プロセス状態フラグ411が「通常
実行中」であれば、プロセス管理部401は、プロセス
状態フラグ411を「移動発生中」に設定する。この
時、数値計算スレッドは必ず「移動可能状態」と「移動
不可能状態」のいずれかであり、かつ移動禁止カウンタ
412の値が0である。したがって、プロセス状態フラ
グ411が「移動発生中」に設定された時、数値計算ス
レッド613は、バイトコードインタプリタ408にて
バイトコードを実行中である。
【0084】バイトコードインタプリタ408では、定
期的にプロセス状態フラグ411がチェックされるた
め、数値計算スレッド613は、いずれスレッド状態を
「待機中」にして、一時停止状態になる。一方、メモリ
使用量チェックスレッド611は、「移動可能状態」以
外にも、1分間のスリープ、もしくは計算機オブジェク
トの操作に関する排他制御によって「一時停止状態」と
なっている可能性もある。移動可能状態であった場合
は、数値計算スレッド613と同様に、バイトコードイ
ンタプリタ408にてバイトコードを実行中であるの
で、いずれはプロセス状態フラグ411をチェックして
「待機中」になる。いずれの場合であっても、フラグが
「移動実行中」になると、いずれはプロセス内の自分以
外の他の全てのスレッドが「待機状態」あるいは「一時
停止状態」になる。移動命令を呼び出したCPU負荷チ
ェックスレッド611の状態は、通常実行中のままであ
るが、これは現在プロセス移動機能を呼び出して停止し
ていることが明らかであるため、この時点でプロセス内
の全てのスレッドが停止したことになる。
【0085】この後、プロセス管理部401は、プロセ
スシリアライズ部404を用いて、プロセス内の2つの
オブジェクト601、602と3つのスレッドスタック
611、612、613の状態を全てシリアライズし、
通信部405を通して移動命令で指定された他の計算機
に移動させる。
【0086】移動が成功した場合、プロセス管理部40
1は、3つのスレッド611、612、613にスレッ
ド削除命令を出して動作を停止させると共に、オブジェ
クト601、602を全て削除して、プロセスを完全に
プログラム実行装置400上から取り除き、移動を成立
させる。
【0087】移動先のプログラム実行装置は、受け取っ
たデータに基づいてプロセスのオブジェクトとスレッド
スタックを再構築し、実行を再開する。これにより、C
PUチェックスレッド611はプロセス移動命令の実行
終了時点から、数値計算スレッド613は「待機状態」
になった時点から、メモリ使用量チェックスレッド61
2は「待機状態」になった時点あるいはスリープや同期
待ちの状態から、それぞれ実行を再開する。以上の動作
によって、3つのスレッド611、612、613が独
立並列に動作しているプロセスの安全な移動が実現され
る。
【0088】以上好ましい実施形態をあげて本発明を説
明したが、本発明は必ずしも上記実施形態に限定される
ものではない。
【0089】例えば、上記実施形態ではオブジェクト指
向言語での実現について述べたが、言語はオブジェクト
指向ではなく手続き型言語や関数型言語でも良い。この
場合、オブジェクト群がヒープ領域に変わる。この場合
のプログラム実行装置の構成を図9に示す。
【0090】図9を参照すると、プログラム実行装置9
00は、プロセス管理部401及びスレッド管理部40
2を備えると共に、プロセスシリアライズ部404と、
通信部405と、計算機非依存プログラムコードである
バイトコード管理部406と、計算機依存プログラムコ
ードであるネイティブコード管理部407と、バイトコ
ードインタプリタ408とを備える。すなわち、図4に
示した実施形態と比べて、オブジェクト管理部403が
存在しない構成となっている。また、プロセス920に
は、オブジェクト421の代わりに、ヒープ領域921
が存在する。
【0091】なお、図9に示すプログラム実行装置の個
々の構成要素は、図4に示した実施形態における対応す
る各構成要素と同様であるため、同一の符号を付して説
明を省略する。
【0092】当該プログラム実行装置の動作は、バイト
コードインタプリタ408によるバイトコード451の
実行や、ネイティブコード452の実行がオブジェクト
ではなく直接ヒープを操作すること以外は、上記実施形
態の動作と同様である。
【0093】また、上記実施形態では、スレッド管理部
402が全てプログラム実行装置内に含まれたが、スレ
ッド管理部402をスレッドスケジューリングなどを行
う機能と、プロセス管理領域の状態変更を行う機能とに
分け、スレッドスケジューリングの機能はオペレーティ
ングシステムが持つスレッド機能を利用することとして
も良い。この場合、オペレーティングシステムがマルチ
CPUへのスレッド配分をサポートしたものであれば、
そのマルチCPUへの負荷分散機能を利用したままマル
チスレッドのプロセス移動機能を利用することができ
る。この場合のプログラム実行装置の構成を図10に示
す。
【0094】図10を参照すると、プログラム実行装置
1000は、プロセス管理部401及び状態管理部10
01を備えると共に、オブジェクト管理部403と、プ
ロセスシリアライズ部404と、通信部405と、計算
機非依存プログラムコードであるバイトコード管理部4
06と、計算機依存プログラムコードであるネイティブ
コード管理部407と、バイトコードインタプリタ40
8とを備える。また、オペレーティングシステムにおい
て、スケジューリング部1002を備える。ここで、状
態管理部1001及びスケジューリング部1002が図
4に示した実施形態のスレッド管理部402に相当す
る。そして、状態管理部1001が必要に応じてスケジ
ューリング部1002の必要な機能を呼び出す。
【0095】なお、図10に示すプログラム実行装置の
個々の構成要素は、図4に示した実施形態における対応
する各構成要素と同様であるため、同一の符号を付して
説明を省略する。
【0096】さらにまた、上記実施形態では、スレッド
の移動可否を決定するのに、計算機に依存するコードを
実行しているか否かで判断したが、ユーザプログラマが
プログラムコード内に移動可能、不可能を宣言するコー
ドを埋め込むことによって決定するようにしても良い。
【0097】この場合、ユーザプログラマは回数やタイ
ミング等を正しく宣言を行うよう注意を払う必要がある
が、より細かくプロセス移動の可能、不可能のタイミン
グを制御することができる。この場合のプログラム実行
装置の構成を図11に示す。
【0098】図11を参照すると、プログラム実行装置
1100は、プロセス管理部401及びスレッド管理部
402を備えると共に、オブジェクト管理部403と、
プロセスシリアライズ部404と、通信部405と、計
算機非依存プログラムコードであるバイトコード管理部
406と、計算機依存プログラムコードであるネイティ
ブコード管理部407と、バイトコードインタプリタ4
08とを備える。そして、バイトコード管理部406の
管理するバイトコード1101が、スレッドが移動可能
状態か移動不可能状態かを直接宣言する命令を保持す
る。この命令が呼ばれるとバイトコードインタプリタ4
08は、スレッド管理部402のスレッド状態変更機能
を呼び出す。
【0099】なお、図11に示すプログラム実行装置の
個々の構成要素は、図4に示した実施形態における対応
する各構成要素と同様であるため、同一の符号を付して
説明を省略する。
【0100】さらにまた、上記実施形態では、スレッド
が定期的にフラグをチェックするとしたが、これをスレ
ッドスケジューラによるスレッドの切替えのタイミング
で行っても良い。フラグをチェックするタイミングは、
オブジェクトの状態やスレッドスタックの値に矛盾が無
く、また所定の時点で必ず実行されることが保証されれ
ば、いつでも良い。
【0101】さらにまた、上記実施形態では、移動可能
プログラムコードをインタプリタ上で実行していたが、
定期的にフラグをチェックする機構を持ったネイティブ
コードで実行することとしても良い。ただし、この場合
はスレッドスタックの実行状態が計算機に依存してしま
うため、これを計算機に依存しないに変換して転送する
専用のスレッドスタックのシリアライズ機能が必要とな
る。この場合のプログラム実行装置の構成を図12に示
す。
【0102】図12を参照すると、プログラム実行装置
1200は、プロセス管理部401及びスレッド管理部
402を備えると共に、オブジェクト管理部403と、
プロセスシリアライズ部404と、通信部405と、ネ
イティブコード管理部407と、ネイティブコードを実
行するスレッドスタックをシリアライズするネイティブ
スタックシリアライズ部1201とを備える。
【0103】図12のプログラム実行装置は、ネイティ
ブコード実行時もプロセス移動可能であるとみなし、ネ
イティブコード呼出時にスレッドを移動不可能状態にし
ない。その代わりに、ネイティブコード1202は、実
行中に、定期的にスレッド管理部402を呼び出し、プ
ロセス状態フラグ411の状態をチェックする。また、
プロセス移動時、プロセスシリアライズ部404は、ス
レッドスタックのシリアライズのために、ネイティブス
タックシリアライズ部1201を呼び出す。
【0104】なお、図12に示すプログラム実行装置の
個々の構成要素は、図4に示した実施形態における対応
する各構成要素と同様であるため、同一の符号を付して
説明を省略する。
【0105】
【発明の効果】以上説明したように、本発明のプログラ
ム実行装置及びそのプロセス移動方法並びにプロセス移
動制御プログラムを格納した記憶媒体によれば、各スレ
ッドの状態をプロセス管理領域内に保持しておくスレッ
ド管理部を設けたこと及びプロセス状態を表すフラグの
定期的チェックを行うことによって、実行中の他のスレ
ッドを安全に停止させ、マルチスレッドで動作中のプロ
セスを矛盾が発生しないようにシリアライズして移動先
に転送することが可能になるため、マルチスレッドで動
作するプロセスのプロセス移動が可能となるという効果
がある。
【0106】また、本発明は、プロセス管理領域が移動
禁止か否かを判定するフラグを持ち、プロセス管理部が
プロセス移動を開始する際に、フラグの内容が禁止中を
示していれば当該禁止が解除されるまで移動処理を開始
しないことにより、各スレッドの動作において、移動で
きるタイミングと移動できないタイミングを指定可能で
ある。このため、異なる計算機間のプロセス移動システ
ムにおいて、移動可能な計算機に依存しないコードと移
動不可能な計算機に依存するコードとが混在する場合
や、実行場所である計算機のデバイスなどに依存した処
理の安全な実行が可能となるという効果がある。
【0107】この場合、既存の数値計算プログラム自身
は修正すること無く、別個のスレッドを追加するのみ
で、計算機負荷に応じて移動して回るプロセスを実現可
能である。
【図面の簡単な説明】
【図1】 本発明の概念を説明するためのプログラム実
行装置の概略的な構成を示すブロック図である。
【図2】 スレッド状態テーブルに保存される、個々の
スレッドの状態遷移を示す図である。
【図3】 プロセス移動実行の処理の流れを示すフロー
チャートである。
【図4】 本発明の一実施形態によるプログラム実行装
置の構成を示すブロック図である。
【図5】 本実施形態において、スレッドが一時停止状
態になる場合の動作を示すフローチャートである。
【図6】 本実施形態の動作において用いられるプロセ
スの構成例を示す図である。
【図7】 図6に示すプロセスの各スレッドの状態遷移
を示す図である。
【図8】 本実施形態により図6に示したプロセスを実
行する場合の具体的な構成を示すブロック図である。
【図9】 本発明の他の実施形態の構成を示すブロック
図である。
【図10】 本発明のさらに他の実施形態の構成を示す
ブロック図である。
【図11】 本発明のさらに他の実施形態の構成を示す
ブロック図である。
【図12】 本発明のさらに他の実施形態の構成を示す
ブロック図である。
【符号の説明】
100、400 プログラム実行装置 101、401 プロセス管理部 102、402 スレッド管理部 111、411 プロセス状態フラグ 112、412 移動禁止カウンタ 113、413 スレッド状態テーブル 114、420 プロセス 403 オブジェクト管理部 404 プロセスシリアライズ部 405 通信部 406 バイトコード管理部 407 ネイティブコード管理部 408 バイトコードインタプリタ 410 プロセス管理領域 421 オブジェクト 422 スレッドスタック 451 バイトコード 452 ネイティブコード
フロントページの続き (56)参考文献 特開 昭62−67641(JP,A) 特開 平7−73051(JP,A) 特開 平4−157534(JP,A) 特開 平1−250145(JP,A) 特開 平4−367942(JP,A) 情報処理学会研究報告、Vol.98、 No.33(98−OS−78)、社団法人情 報処理学会・発行(1998年)、pp.39 〜46(特許庁CSDB文献番号:CSN T199800624006) 情報処理学会研究報告、Vol.92、 No.91(92−DPS−58)、社団法人 情報処理学会・発行(1992年)、pp. 173〜180(特許庁CSDB文献番号:C SNT200000122020) 情報処理学会研究報告、Vol.93、 No.68(93−OS−61)、社団法人情 報処理学会・発行(1993年)、pp.17 〜24(特許庁CSDB文献番号:CSN T200000002003) (58)調査した分野(Int.Cl.7,DB名) G06F 9/46 G06F 15/16 G06F 9/44 535 JICSTファイル(JOIS) CSDB(日本国特許庁)

Claims (15)

    (57)【特許請求の範囲】
  1. 【請求項1】 ネットワークにて他の計算機と接続さ
    れ、実行中のプロセスを実行状態を保存したまま前記他
    の計算機に移動させることが可能なプログラム実行装置
    において、 プロセス毎に設けられたプロセスの実行状態を表すフラ
    グと、 スレッド毎の状態を表すテーブルと、 スレッドの実行状態に応じて前記フラグ及び前記テーブ
    ルの値を設定するスレッド管理手段と、 プロセス移動命令を実行する際に前記フラグ及び前記テ
    ーブルの値を参照して、プロセス移動が可能な場合にの
    み前記フラグを移動実行中を表す値に設定すると共に、
    プロセス内で実行中のスレッドにおいて前記フラグをチ
    ェックし、前記フラグがプロセスの移動実行中を示す値
    であれば該スレッドの実行を中断し、プロセス内の全て
    のスレッドが停止状態になった場合にプロセス移動のた
    めの処理を実行するプロセス管理手段とを備えることを
    特徴とするプログラム実行装置。
  2. 【請求項2】 前記プロセス管理手段が、 実行すべきプログラムコードにおける、計算機に依存せ
    ずインタプリタ上で実行される計算機非依存コードと、
    計算機に依存しCPUによって直接実行される計算機依
    存コードとを識別し、 スレッドが前記計算機依存コードを実行中である場合
    に、該スレッドを移動不可能状態とすることを特徴とす
    る請求項1に記載のプログラム実行装置。
  3. 【請求項3】 前記スレッド管理手段が、 サスペンド、スリープ及び同期待ち状態を含む一時停止
    の状態に関する情報をスレッドスタック上に保存し、 他の計算機から受け取ったスレッドスタック上の前記一
    時停止の状態に関する情報を用いて、サスペンド、スリ
    ープまたは同期待ち状態を含む一時停止の状態を復元す
    ることを特徴とする請求項1または請求項2に記載のプ
    ログラム実行装置。
  4. 【請求項4】 前記スレッド管理手段が、 前記フラグ及び前記テーブルを操作する状態管理手段
    と、 スレッドのスケジューリング、スレッド間の同期及び排
    他制御を行うスケジューリング手段とからなり、 前記スケジューリング手段を、オペレーティングシステ
    ムのスレッド機能を用いて実現することを特徴とする請
    求項1に記載のプログラム実行装置。
  5. 【請求項5】 前記プロセス管理手段が、 プログラムコードに埋め込まれた移動可能、不可能を宣
    言するコードを検出して判別し、 スレッドが移動不可能を宣言するコードを含む前記プロ
    グラムコードを実行中である場合に、該スレッドを移動
    不可能状態とすることを特徴とする請求項1に記載のプ
    ログラム実行装置。
  6. 【請求項6】 ネットワークにて他の計算機と接続され
    たプログラム実行装置における、実行中のプロセスを実
    行状態を保存したまま前記他の計算機に移動させるプロ
    セス移動方法において、 プロセス移動命令を実行する際に、スレッドの状態を調
    べてプロセス移動が可能な場合にのみプロセス毎に設け
    られたプロセスの実行状態を表すフラグを移動実行中を
    表す値に設定するステップを含むと共に、 プロセス内で実行中のスレッドにおいて、前記フラグを
    チェックするステップと、 前記フラグがプロセスの移動実行中を示す値である場合
    に、該スレッドの実行を中断するステップと、 プロセス内の全てのスレッドが停止状態になった場合
    に、プロセス移動のための処理を実行するステップとを
    含むことを特徴とするプロセス移動方法。
  7. 【請求項7】 前記フラグ設定ステップにおいて、 実行すべきプログラムコードにおける、計算機に依存せ
    ずインタプリタ上で実行される計算機非依存コードと、
    計算機に依存しCPUによって直接実行される計算機依
    存コードとを識別し、 スレッドが前記計算機依存コードを実行中である場合
    に、該スレッドを移動不可能状態と判断することを特徴
    とする請求項6に記載のプロセス移動方法。
  8. 【請求項8】 前記スレッド実行中断ステップにおい
    て、 サスペンド、スリープ及び同期待ち状態を含む一時停止
    の状態に関する情報をスレッドスタック上に保存するこ
    とを特徴とする請求項6または請求項7に記載のプロセ
    ス移動方法。
  9. 【請求項9】 前記フラグチェックステップにおいて、
    定期的に前記フラグの値をチェックすることを特徴とす
    る請求項6に記載のプロセス移動方法。
  10. 【請求項10】 前記フラグ設定ステップにおいて、 プログラムコードに埋め込まれた移動可能、不可能を宣
    言するコードを検出して判別し、 スレッドが移動不可能を宣言するコードを含む前記プロ
    グラムコードを実行中である場合に、該スレッドを移動
    不可能状態と判断することを特徴とする請求項6に記載
    のプロセス移動方法。
  11. 【請求項11】 ネットワークにて他の計算機と接続さ
    れたプログラム実行装置を制御して、実行中のプロセス
    を実行状態を保存したまま前記他の計算機に移動させる
    プロセス移動制御プログラムを格納した記憶媒体におい
    て、 プロセス移動命令を実行する際に、スレッドの状態を調
    べてプロセス移動が可能な場合にのみプロセス毎に設け
    られたプロセスの実行状態を表すフラグを移動実行中を
    表す値に設定するステップを含むと共に、 プロセス内で実行中のスレッドにおいて、前記フラグを
    チェックするステップと、 前記フラグがプロセスの移動実行中を示す値である場合
    に、該スレッドの実行を中断するステップと、 プロセス内の全てのスレッドが停止状態になった場合
    に、プロセス移動のための処理を実行するステップとを
    含むことを特徴とするプロセス移動制御プログラムを格
    納した記憶媒体。
  12. 【請求項12】 前記フラグ設定ステップにおいて、 実行すべきプログラムコードにおける、計算機に依存せ
    ずインタプリタ上で実行される計算機非依存コードと、
    計算機に依存しCPUによって直接実行される計算機依
    存コードとを識別し、 スレッドが前記計算機依存コードを実行中である場合
    に、該スレッドを移動不可能状態と判断することを特徴
    とする請求項11に記載のプロセス移動制御プログラム
    を格納した記憶媒体。
  13. 【請求項13】 前記スレッド実行中断ステップにおい
    て、 サスペンド、スリープ及び同期待ち状態を含む一時停止
    の状態に関する情報をスレッドスタック上に保存するこ
    とを特徴とする請求項11または請求項12に記載のプ
    ロセス移動制御プログラムを格納した記憶媒体。
  14. 【請求項14】 前記フラグチェックステップにおい
    て、定期的に前記フラグの値をチェックすることを特徴
    とする請求項11に記載のプロセス移動制御プログラム
    を格納した記憶媒体。
  15. 【請求項15】 前記フラグ設定ステップにおいて、 プログラムコードに埋め込まれた移動可能、不可能を宣
    言するコードを検出して判別し、 スレッドが移動不可能を宣言するコードを含む前記プロ
    グラムコードを実行中である場合に、該スレッドを移動
    不可能状態と判断することを特徴とする請求項11に記
    載のプロセス移動制御プログラムを格納した記憶媒体。
JP01490799A 1999-01-22 1999-01-22 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体 Expired - Fee Related JP3250729B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP01490799A JP3250729B2 (ja) 1999-01-22 1999-01-22 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体
US09/489,032 US6769121B1 (en) 1999-01-22 2000-01-21 Program execution device and process migrating method thereof and storage medium which stores process migration control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01490799A JP3250729B2 (ja) 1999-01-22 1999-01-22 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体

Publications (2)

Publication Number Publication Date
JP2000215072A JP2000215072A (ja) 2000-08-04
JP3250729B2 true JP3250729B2 (ja) 2002-01-28

Family

ID=11874066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01490799A Expired - Fee Related JP3250729B2 (ja) 1999-01-22 1999-01-22 プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体

Country Status (2)

Country Link
US (1) US6769121B1 (ja)
JP (1) JP3250729B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101400286B1 (ko) 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7137115B2 (en) * 2000-01-25 2006-11-14 Fujitsu Limited Method for controlling multithreading
US7406424B2 (en) * 2001-08-29 2008-07-29 Hewlett-Packard Development Company, L.P. Migration of a workflow system to changed process definitions
US7107589B1 (en) * 2001-09-28 2006-09-12 Siebel Systems, Inc. Infrastructure for the automation of the assembly of schema maintenance scripts
US8103715B1 (en) * 2002-06-11 2012-01-24 Cisco Technology, Inc. Approach for managing mobile agents in networks
EP1815332A4 (en) * 2004-09-07 2009-07-15 Starent Networks Corp PROCESS CHECKPOINTING AND MIGRATION IN DATA PROCESSING SYSTEMS
US20060136886A1 (en) * 2004-12-16 2006-06-22 Bret Patterson Process and implementation for interrupting locked threads
ATE403327T1 (de) * 2005-04-19 2008-08-15 Sap Ag System und verfahren zum vermitteln in einem netzwerk
US8316220B2 (en) * 2005-09-27 2012-11-20 Sony Computer Entertainment Inc. Operating processors over a network
US9367321B2 (en) * 2007-03-14 2016-06-14 Xmos Limited Processor instruction set for controlling an event source to generate events used to schedule threads
US8185722B2 (en) * 2007-03-14 2012-05-22 XMOS Ltd. Processor instruction set for controlling threads to respond to events
US8838817B1 (en) * 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8564616B1 (en) 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8498890B2 (en) * 2009-09-18 2013-07-30 International Business Machines Corporation Planning and orchestrating workflow instance migration
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
WO2012029111A1 (ja) * 2010-08-30 2012-03-08 富士通株式会社 マルチコアプロセッサシステム、同期制御システム、同期制御装置、情報生成方法、および情報生成プログラム
CN106325819B (zh) * 2015-06-17 2019-08-02 华为技术有限公司 计算机指令处理方法、协处理器和系统
JP7193732B2 (ja) * 2019-04-08 2022-12-21 富士通株式会社 管理装置、情報処理システムおよび管理プログラム

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6267641A (ja) 1985-09-20 1987-03-27 Toshiba Corp プログラム終了方式
US5517618A (en) * 1992-02-10 1996-05-14 Matsushita Electric Industrial Co., Ltd. Mobile migration communications control device
US5603031A (en) 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5892944A (en) * 1993-07-20 1999-04-06 Kabushiki Kaisha Toshiba Program execution and operation right management system suitable for single virtual memory scheme
JPH0773051A (ja) 1993-09-06 1995-03-17 Toshiba Corp スレッド実行順序決定方法
JPH07282272A (ja) * 1994-04-13 1995-10-27 Hitachi Ltd 描画処理システム
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
CA2154089A1 (en) * 1994-07-22 1996-01-23 Gerald W. Weare Remote subscriber migration
JP3639366B2 (ja) 1995-11-29 2005-04-20 富士通株式会社 アドレス空間共有システム
JP3628782B2 (ja) 1995-11-29 2005-03-16 富士通株式会社 並列分散処理システム
JP3193880B2 (ja) * 1996-12-11 2001-07-30 株式会社日立製作所 データ移行方法
US6269390B1 (en) * 1996-12-17 2001-07-31 Ncr Corporation Affinity scheduling of data within multi-processor computer systems
US5918248A (en) * 1996-12-30 1999-06-29 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US6256675B1 (en) * 1997-05-06 2001-07-03 At&T Corp. System and method for allocating requests for objects and managing replicas of objects on a network
US5893912A (en) * 1997-08-13 1999-04-13 International Business Machines Corporation Thread context manager for relational databases, method and computer program product for implementing thread context management for relational databases
US6260068B1 (en) * 1998-06-10 2001-07-10 Compaq Computer Corporation Method and apparatus for migrating resources in a multi-processor computer system
US5999963A (en) * 1997-11-07 1999-12-07 Lucent Technologies, Inc. Move-to-rear list scheduling
US6457064B1 (en) * 1998-04-27 2002-09-24 Sun Microsystems, Inc. Method and apparatus for detecting input directed to a thread in a multi-threaded process
US6442663B1 (en) * 1998-06-19 2002-08-27 Board Of Supervisors Of Louisiana University And Agricultural And Mechanical College Data collection and restoration for homogeneous or heterogeneous process migration
US6173442B1 (en) * 1999-02-05 2001-01-09 Sun Microsystems, Inc. Busy-wait-free synchronization

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
情報処理学会研究報告、Vol.92、No.91(92−DPS−58)、社団法人情報処理学会・発行(1992年)、pp.173〜180(特許庁CSDB文献番号:CSNT200000122020)
情報処理学会研究報告、Vol.93、No.68(93−OS−61)、社団法人情報処理学会・発行(1993年)、pp.17〜24(特許庁CSDB文献番号:CSNT200000002003)
情報処理学会研究報告、Vol.98、No.33(98−OS−78)、社団法人情報処理学会・発行(1998年)、pp.39〜46(特許庁CSDB文献番号:CSNT199800624006)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101400286B1 (ko) 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치

Also Published As

Publication number Publication date
JP2000215072A (ja) 2000-08-04
US6769121B1 (en) 2004-07-27

Similar Documents

Publication Publication Date Title
JP3250729B2 (ja) プログラム実行装置及びそのプロセス移動方法並びにプロセス移動制御プログラムを格納した記憶媒体
US10592276B2 (en) Reducing resource consumption by blocking a function associated with an asynchronous procedure call
US7325148B2 (en) Power supply management system in parallel processing system by OS for single processors and power supply management program therefor
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
US8443377B2 (en) Parallel processing system running an OS for single processors and method thereof
US7516323B2 (en) Security management system in parallel processing system by OS for single processors
US7526673B2 (en) Parallel processing system by OS for single processors and parallel processing program
US9021243B2 (en) Method for increasing free memory amount of main memory and computer therefore
US20010034751A1 (en) Real-time OS simulator
US5896141A (en) System and method for virtual device access in a computer system
JPH0969017A (ja) コンピュータ・システムの電力管理方法及び装置
US8499143B2 (en) Method for shortening the boot time of a computer system
KR101901587B1 (ko) 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치
JPH04137046A (ja) 電子計算機のオペレーティングシステム
EP0518624B1 (en) Apparatus and method for suspending and resuming software applications on a computer
US6014681A (en) Method for saving a document using a background save thread
US20020178208A1 (en) Priority inversion in computer system supporting multiple processes
WO2006069484A1 (en) Methods and apparatuses to maintain multiple execution contexts
US7032099B1 (en) Parallel processor, parallel processing method, and storing medium
US20040098722A1 (en) System, method, and computer program product for operating-system task management
JP2002297556A (ja) マルチプロセッサシステム,マルチプロセッサ制御方法,マルチプロセッサ制御プログラムおよび同プログラムを記録したコンピュータ読取可能な記録媒体
Itoh et al. Concurrent object-oriented device driver programming in apertos operating system
JP3547011B2 (ja) ウィンドウシステム環境において時間的に厳しいプロセスを実行する方法および装置
CN114443255A (zh) 一种线程调用方法和装置
JP2000105708A (ja) タスク管理方法およびマルチタスクos

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071116

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081116

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081116

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091116

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091116

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101116

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees