JP2009258962A - プログラム変換方法、及び装置 - Google Patents
プログラム変換方法、及び装置 Download PDFInfo
- Publication number
- JP2009258962A JP2009258962A JP2008106709A JP2008106709A JP2009258962A JP 2009258962 A JP2009258962 A JP 2009258962A JP 2008106709 A JP2008106709 A JP 2008106709A JP 2008106709 A JP2008106709 A JP 2008106709A JP 2009258962 A JP2009258962 A JP 2009258962A
- Authority
- JP
- Japan
- Prior art keywords
- program
- processing
- location
- message
- basic block
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【課題】並行処理を行う機能を有するプログラムを並行処理の機能を損なうことなく逐次処理を行う機能を有するプログラムに変換できるプログラム変換の技術を提供する。
【解決手段】プログラム変換処理部5は、基本ブロックのリストを基本ブロック保持部13から、メッセージ対応情報をオブジェクト情報保持部3から読み出す。メッセージ対応情報は、メッセージIDをメソッド呼び出しステートメントに対応付けるためのものである。読み出したメッセージ対応情報に基づき、基本ブロックを指示文に従って順次実行されるような基本ブロックに変換する。変換処理を行うことにより得られた基本ブロックのリストを、基本ブロック保持部13に出力する。これにより、基本ブロック保持部13に保持される基本ブロックのリストが更新されることになる。
【選択図】図2
【解決手段】プログラム変換処理部5は、基本ブロックのリストを基本ブロック保持部13から、メッセージ対応情報をオブジェクト情報保持部3から読み出す。メッセージ対応情報は、メッセージIDをメソッド呼び出しステートメントに対応付けるためのものである。読み出したメッセージ対応情報に基づき、基本ブロックを指示文に従って順次実行されるような基本ブロックに変換する。変換処理を行うことにより得られた基本ブロックのリストを、基本ブロック保持部13に出力する。これにより、基本ブロック保持部13に保持される基本ブロックのリストが更新されることになる。
【選択図】図2
Description
本発明は、第1のオブジェクトと第2のオブジェクトとが個別に処理を実行する並行処理が可能なプログラムを、上記第1のオブジェクトによる処理の終了に引続いて上記第2のオブジェクトによる処理を実行する逐次処理が可能なプログラムに変換する方法、及び装置に関する。
従来、2以上のプログラムを並列に動作させるための並行処理システムにおいて、プログラマが通信方式や呼び出し方式を指定しなくても、最適な通信方式や最適な呼び出し方式を実行することができ、効率良い並行処理を行えるようにすることを目的とした提案がなされている。該提案には、オブジェクト(プログラムが記述したプログラムモジュールの1種で、オブジェクト指向プログラムのこと。後述する実行プログラム中に含まれる。)間でのメッセ−ジ通信に際し、メッセージ受信側オブジェクトと、メッセージ送信側オブジェクトとを同期させて実行するか、又は非同期で実行するかを決定する手法が開示されている(例えば特許文献1参照)。また、所謂マルチプロセス(複数のプロセスを適宜切り換えながら並行して実行することができる、OSの機能のこと。)環境下において、オブジェクト指向の概念における同期メッセージ通信、及び非同期メッセージ通信を容易に実現できるようにすることを目的とした提案もなされている。該提案には、メッセージに含まれる通信方式情報に基づき、メッセージ送信側オブジェクトとメッセージ受信側オブジェクトとの間で同期通信を行うか非同期通信を行うかを決定するためのメッセージ通信フレームワークについて開示されている(例えば特許文献2参照)。
オブジェクト指向によるプログラミングにおいては、プログラミングの対象になるシステムが、データ(例えば、C言語では、構造体と呼ばれる変数の集合体のこと。)、及び手続き(例えば、C言語では、関数と呼ばれるプログラムモジュールで記述される。)を内包するオブジェクトの集合と見做されて記述される。プログラム(通常の記述によるソースプログラムを、汎用のコンパイルで変換した実行プログラムのこと。以下同じ)は、該プログラムに対応するプロセス(メモリ上の1つのプログラムに1つだけ対応するもので、タスクと呼ばれる。)により実行される。しかし、概念上では、1つのプログラムの実行は、(該1つのプログラムに含まれる)オブジェクト同士の間で行われるメッセージの送/受信により実行される。該メッセージの送/受信においては、メッセージ受信側オブジェクトは、メッセージ送信側オブジェクトと同期して実行されるか、或いは、非同期で実行される。
受信側オブジェクトが上記メッセージに基づく処理を行って生成した情報を、送信側オブジェクトが必要とする場合には、送信側オブジェクトと、受信側オブジェクトとが同期して実行される。この場合には、送信側オブジェクトは、上記メッセージを送信した後、受信側オブジェクトが上記情報の生成を完了するのを待つことになる。一方、上記情報を、送信側オブジェクトが必要としない場合には、送信側オブジェクトと、受信側オブジェクトとは非同期で実行される。この場合には、送信側オブジェクトは、上記メッセージを送信した後においても、送信側オブジェクト自身が実行すべき処理を継続することになる。(なお、オブジェクトの実行とは、スレッドがオブジェクトの関数(即ち、手続き)を実行することである。スレッドについては、後述する。)
実装上では、オブジェクト同士の間で行われるメッセージの送/受信は、受信側オブジェクトと、送信側オブジェクトとが同期して実行される場合には、手続き呼び出しによって実現されるのが一般的である。一方、非同期で実行される場合には、OS(Operating System)や、ミドルウェア等を備えるメッセージ通信機構によって実現されるのが一般的である。送信側オブジェクトと、受信側オブジェクトとを同期して実行するか、非同期で実行するかにより、オブジェクト同士の間のメッセージ送/受信を実現するための技術的な手法が異なる場合がある。この技術的な手法の相違が、プログラムの実行効率に影響を及ぼすので、上記各々のオブジェクトを同期して実行するか、非同期で実行するかの決定を適切に行うための技術的工夫や、或いは、上記決定が容易に行えるようにする技術的工夫が、検討されている。
実装上では、オブジェクト同士の間で行われるメッセージの送/受信は、受信側オブジェクトと、送信側オブジェクトとが同期して実行される場合には、手続き呼び出しによって実現されるのが一般的である。一方、非同期で実行される場合には、OS(Operating System)や、ミドルウェア等を備えるメッセージ通信機構によって実現されるのが一般的である。送信側オブジェクトと、受信側オブジェクトとを同期して実行するか、非同期で実行するかにより、オブジェクト同士の間のメッセージ送/受信を実現するための技術的な手法が異なる場合がある。この技術的な手法の相違が、プログラムの実行効率に影響を及ぼすので、上記各々のオブジェクトを同期して実行するか、非同期で実行するかの決定を適切に行うための技術的工夫や、或いは、上記決定が容易に行えるようにする技術的工夫が、検討されている。
ところで、同一のプログラム内における1つ以上のオブジェクトの集合に対し、夫々のオブジェクトにスレッド(資源をあまり消費しない軽量プロセスのこと。以下同じ)を割り当てて、該割り当てられたスレッドを跨ぐオブジェクト同士の間での機能の呼び出しを、メッセージ通信により非同期で行うシステムがある。該システムでは、ハードウェアやOS等のオブジェクトの実行環境が備える通信処理の性能差のために、プログラムの移植(或るプラットホームに適合するプログラムを、別のプラットホームに適合するように修正した上で、該別のプラットホームへ提供すること。)が困難になる場合がある。
例えば、オブジェクト同士の間で行われるメッセージ通信に起因して発生するコンテクストスイッチ(マルチタスクOSにおいて、あるプログラムから別のプログラムに(又はマルチスレッド環境下では、或るスレッドから別のスレッドに)処理を切り替えること。)のオーバーヘッドは、上記実行環境によって異なるので、同一の(実行)プログラムであってもメッセージ通信処理の実行性能が相違する。この実行性能の相違が原因となり、(実行)プログラムを移植するに際して、移植元(元のプラットホーム)におけるメッセージ送/受信手続を、該移植先(別のプラットホーム)の実行環境が備えるメッセージ送/受信手続と同等の機能を有するように単純に置換しただけでは、該(実行)プログラムがたとえ該移植先の実行環境が備える機能要件を満たしたとしても、実行性能や応答性等の非機能要件を満たせない場合がある。
このように、メッセージ通信の実行環境が備える機能が十分であったとしても、非機能面での(実行)プログラムの移植性が確保できるとは限らない。例えば、組み込みシステムのような利用可能なプロセッサ資源の限られた実行環境下では、(実行)プログラムの実行性能の低下により、想定された時間内に処理が完了しなくなる虞がある。(実行)プログラムの移植先の実行環境におけるメッセージ通信のオーバーヘッドが大きい場合、メッセージ通信によるオブジェクト同士の間での通信回数を減らす作業が必要になる。
例えば、異なるスレッドが割り当てられたオブジェクト同士の間においては、図1(a)に示すように、オブジェクト4に対し、オブジェクト2が実行開始を指示するメッセージ6を送信する場合、該オブジェクト2を実行するスレッド8とは別のスレッド10により、オブジェクト4が実行される。この図1(a)で示したオブジェクト2、4の実行態様が、非同期(即ち、並行処理)によるオブジェクト(2、4)の実行である。これを、図1(b)で示すように、スレッド8が、手続き呼び出し12によってオブジェクト4を実行するように変更することになる。このように、通信先(送信先)オブジェクト4の処理を、通信元(送信元)オブジェクト2から手続き呼び出しするようプログラムを書き換え、呼び出し元のオブジェクト2と呼び出し先のオブジェクト4との間で実行コンテクストを共有するようにすれば、メッセージ通信におけるオブジェクト(2、4)同士の間での通信回数を減らすことが可能になる。この図1(b)で示したオブジェクト2、4の実行態様が、同期(即ち、逐次処理)によるオブジェクト(2、4)の実行である。
しかし、上記のような(実行)プログラムの書き換えを実行すると、書き換え後の(実行)プログラムの動作が、元の(実行)プログラムの設計時における動作と相違することになり、上記オブジェクト同士の間の通信回数を減らすことが可能になる反面、上記オブジェクト同士の間で並行処理(非同期処理)が可能であるという情報が失われてしまうという問題が生じる。
特許文献1に開示される技術では、メッセージ送信処理の呼び出し形式に基づき、メッセージ通信を行おうとするオブジェクト同士の間において、オブジェクトの実行を同期(逐次処理)とするか、非同期(並行処理)とするかを選択するようになっている。しかし、呼び出し形式に基づいて上記選択が行われることを前提として作成された(実行)プログラムでなければ、上記のような(実行)プログラムの置き換えが可能かどうか判断するのは困難である。
また、特許文献2に開示される技術では、メッセージ通信に適用される通信方式情報に基づき、メッセージ通信を行おうとするオブジェクト同士の間において、オブジェクトの実行を同期(逐次処理)とするか、非同期(並行処理)とするかを選択するようになっている。このような選択の手法を採用することによって、送信側オブジェクトが受信側オブジェクトに対し、メッセージを送信した後に、受信側オブジェクトでの該メッセージに対する処理が完了するのを待つかどうか(待つ場合は同期(逐次処理)、待たない場合は非同期(並行処理))を容易に決定することができる。しかし、この手法は、メッセージ通信の仕組みそのものであり、メッセージ送信のステートメントを、手続き呼び出しのステートメントに変換するという目的を達成することができない。
従って本発明の目的は、並行処理を行う機能を有するプログラムを、該並行処理の機能を損なうことなく逐次処理を行う機能を有するプログラムに変換することが可能なプログラム変換の技術を提供することにある。
また、本発明の別の目的は、メッセージ通信処理におけるオーバーヘッドが無視できないほど処理時間が短い処理に係わるプログラムを優先的に変換対象にすることが可能なプログラム変換の技術を提供することにある。
また、本発明の別の目的は、変換処理が施された後のプログラムの実行順序を、変換処理が施される前のプログラムの実行順序と同一に保持した状態でプログラムの変換処理を行うことが可能なプログラム変換の技術を提供することにある。
また、本発明の別の目的は、同一のプログラムが複数のスレッドにおいて同時に実行されることを想定していない場合でも、該プログラムに対して変換処理を行うことが可能なプログラム変換の技術を提供することにある。
更に、本発明の別の目的は、優先度ベースのスケジューリングを行うシステムにおいて、プログラムに付加された優先度をOSによるスケジューリングに反映させることが可能なプログラム変換の技術を提供することにある。
本発明の第1の観点に従うプログラム変換装置は、第1のオブジェクトと第2のオブジェクトとが個別に処理を実行する並行処理が可能なプログラムを、上記第1のオブジェクトによる処理の終了に引続いて上記第2のオブジェクトによる処理を実行する逐次処理が可能なプログラムに変換するものであって、上記プログラムの実行に際して上記第1のオブジェクトと上記第2のオブジェクトとの間で行われるメッセージ通信において、上記第1のオブジェクトから上記第2のオブジェクトに送信される並行処理開始の要求メッセージ、及び予め上記プログラムに挿入された、逐次処理が可能な箇所に係わる情報を保持する保持部と、上記保持部に保持される上記逐次処理が可能な箇所に係わる情報により特定される上記プログラム中の箇所を、上記第2のオブジェクトによる逐次処理が可能な箇所かどうか識別する識別部と、上記識別部が上記情報により特定される上記プログラム中の箇所を、上記第2のオブジェクトによる逐次処理が可能な箇所として識別した場合に、上記保持部に保持される上記並行処理開始の要求メッセージを、上記逐次処理開始の要求メッセージに変更するメッセージ変更処理部と、少なくとも上記メッセージ変更処理部により変更された後のメッセージを、上記識別部により識別されたプログラムにおける上記箇所内の適宜な位置に含ませることにより、上記プログラムを上記逐次処理が可能なプログラムに変換する変換処理部と、を備える。
本発明の第1の観点に係る好適な実施形態では、上記並行処理が可能なプログラムの動的実行ステップ数の推定値と、上記逐次処理が可能な箇所として識別された上記プログラムの箇所の動的実行ステップ数の推定値と、を算出する動的実行ステップ数算出部と、上記動的実行ステップ数算出部により算出された上記動的実行ステップ数の推定値に基づき、評価指標を算出する評価指標算出部と、を更に備え、上記評価指標算出部により算出された評価指標に基づき、上記変換を実行するかどうか判断するようにしている。
上記とは別の実施形態では、上記並行処理が可能なプログラム、及び上記逐次処理が可能な箇所として識別された上記プログラムの箇所に予め付加された優先度を示す情報に基づき、上記箇所内における上記並行処理開始の要求メッセージを挿入するための適宜な位置を決定するようにしている。
また、上記とは別の実施形態では、上記プログラムの上記箇所内における上記並行処理開始の要求メッセージの挿入位置を挟む位置に、上記並行処理が可能なプログラムを実行する可能性のあるスレッド同士による逐次処理を夫々挿入するようにしている。
更に、上記とは別の実施形態では、上記プログラムの上記箇所内における上記並行処理開始の要求メッセージの挿入位置を挟む位置に、上記プログラム、及び上記逐次処理が可能な箇所として識別された上記プログラムの箇所に付加された優先度を示す情報に基づき、実行優先度を変更する処理を挿入するようにしている。
本発明の第2の観点に従うプログラム変換方法は、第1のオブジェクトと第2のオブジェクトとが個別に処理を実行する並行処理が可能なプログラムを、上記第1のオブジェクトによる処理の終了に引続いて上記第2のオブジェクトによる処理を実行する逐次処理が可能なプログラムに変換する装置において、上記プログラムの実行に際して上記第1のオブジェクトと上記第2のオブジェクトとの間で行われるメッセージ通信において、上記第1のオブジェクトから上記第2のオブジェクトに送信される並行処理開始の要求メッセージ、及び予め上記プログラムに挿入された、逐次処理が可能な箇所に係わる情報を保持する第1のステップと、上記第1のステップにおいて保持される上記逐次処理が可能な箇所に係わる情報により特定される上記プログラム中の箇所を、上記第2のオブジェクトによる逐次処理が可能な箇所かどうか識別する第2のステップと、上記第2のステップにおいて上記情報により特定される上記プログラム中の箇所を、上記第2のオブジェクトによる逐次処理が可能な箇所として識別した場合に、上記第1のステップにおいて保持される上記並行処理開始の要求メッセージを、上記逐次処理開始の要求メッセージに変更する第3のステップと、少なくとも上記第3のステップにおいて変更された後のメッセージを、上記第2のステップにおいて識別されたプログラムにおける上記箇所内の適宜な位置に含ませることにより、上記プログラムを上記逐次処理が可能なプログラムに変換する第4のステップと、を備える。
本発明によれば、並行処理を行う機能を有するプログラムを、該並行処理の機能を損なうことなく逐次処理を行う機能を有するプログラムに変換することが可能なプログラム変換の技術を提供することができる。
また、本発明によれば、メッセージ通信処理におけるオーバーヘッドが無視できないほど処理時間が短い処理に係わるプログラムを優先的に変換対象にすることが可能なプログラム変換の技術を提供することができる。
また、本発明によれば、変換処理が施された後のプログラムの実行順序を、変換処理が施される前のプログラムの実行順序と同一に保持した状態でプログラムの変換処理を行うことが可能なプログラム変換の技術を提供することができる。
また、本発明によれば、同一のプログラムが複数のスレッドにおいて同時に実行されることを想定していない場合でも、該プログラムに対して変換処理を行うことが可能なプログラム変換の技術を提供することができる。
更に、本発明によれば、優先度ベースのスケジューリングを行うシステムにおいて、プログラムに付加された優先度をOSによるスケジューリングに反映させることが可能なプログラム変換の技術を提供することができる。
以下、本発明の実施の形態を、図面により詳細に説明する。
図2は、本発明の一実施形態に係るプログラム変換システムの全体構成を示す機能ブロック図である。
上記プログラム変換システムは、例えば、パーソナルコンピュータ等の情報処理装置がハードウェアとして用いられ、図2に示すように、プログラム変換装置100と、記憶装置200と、で構成される。プログラム変換装置100の機能は、例えば、上記情報処理装置に内蔵されるCPU、若しくはMPU等の演算処理部上において実現される。即ち、プログラム変換装置100は、ソースプログラム入力処理部1、オブジェクト情報保持部3、プログラム変換処理部5、字句解析処理部7、構文解析処理部9、基本ブロック抽出処理部11、基本ブロック保持部13、及びソースプログラム出力処理部15の各々の機能ブロックにより実現される機能を備える。上記各々の機能ブロックにより実現される諸機能のうち、ソースプログラム入力処理部1、字句解析処理部7、構文解析処理部9、及び基本ブロック抽出処理部11により夫々実現される機能は、コンパイラ(ソースコードをオブジェクトコードに変換するためのソフトウェア)が実行する処理機能である。
他方、記憶装置200は、例えば、上記情報処理装置に内蔵される、指示文が挿入されたソースプログラム)、プログラム変換装置100により変換された指示文を含まないソースプログラム、及びオブジェクトのメタ情報等を格納するものである。ここで、指示文には、該ソースプログラムにおける変換処理を所望する箇所が、変換可能かどうかを示す内容が含まれている。記憶装置200の機能は、RAMやHDD(ハードディスク装置)等のメモリ上において実現される。上記ソースプログラムは、例えば、プログラムモジュール単位で分割された(複数の)ファイルとして記憶装置200に格納されており、上記ソースプログラムは、複数のプログラムモジュールから構成される。1つのプログラムモジュールには、複数のオブジェクトが属しており、また、該1つのプログラムモジュールには、上記各々のオブジェクトの持つ処理を記述したプログラムが含まれている。また、各々のプログラムモジュールには、これら各々のプログラムモジュールに属するオブジェクトを実行するためのスレッドが、少なくとも1つ割り当てられている。そして、異なるプログラムモジュールに属するオブジェクト同士の間で、処理の呼び出しを行う際には、呼び出し元のオブジェクト(既述のメッセージ送信側オブジェクトに対応)から呼び出し先のオブジェクト(既述のメッセージ受信側オブジェクトに対応)へメッセージが送信される。
プログラム変換装置100において、ソースプログラム入力処理部1は、記憶装置200から、該記憶装置200に格納されているソースプログラムを読み出すと共に、該読み出したソースプログラムを、字句解析処理部7に出力する。字句解析処理部7は、ソースプログラム入力処理部1から入力した上記ソースプログラムに対し、字句解析処理を行うと共に、該字句解析処理の結果を、構文解析処理部9に通知する。構文解析処理部9は、字句解析処理部7から通知された該ソースプログラムに係わる字句解析処理の結果に基づき、該ソースプログラムに対し、構文解析処理を行う。そして、該構文解析処理の結果得られる、該ソースプログラムに係わる構文木を、基本ブロック抽出処理部11に出力する。
基本ブロック抽出処理部11は、構文解析処理部9から出力された該ソースプログラムに係わる構文木に対し、フロー解析処理を行って該構文木から(該ソースプログラムの最小単位である)基本ブロック(即ち、最小単位のプログラムのこと。以下同じ)を抽出する。基本ブロック抽出処理部11は、抽出した(該ソースプログラムの)構文木に係わる基本ブロックのリストを、基本ブロック保持部13に格納する。基本ブロック保持部13は、基本ブロック抽出処理部11から出力された(該ソースプログラムの)構文木に係わる基本ブロックのリスト(即ち、該ソースプログラムを表現するための基本ブロックのリスト)を保持する。オブジェクト情報保持部3は、記憶装置200から、該記憶装置200に記憶されているオブジェクトの配置情報、該オブジェクトに割り当てられたスレッド(マルチスレッド対応OSにおいて、CPUに実行時間を割り当てる単位のこと。換言すれば、1つのプログラムの処理を実行するプロセスを、並行に複数の流れで処理する場合の、各処理の流れのことである。)の識別情報、及びメッセージ対応情報等のオブジェクトに関するメタ情報を読み出し、それらを保持する。
プログラム変換処理部5は、上述した基本ブロックのリストを、基本ブロック保持部13から読み出すと共に、オブジェクト情報保持部3が保持するメッセージ対応情報を、オブジェクト情報保持部3から読み出す。該メッセージ対応情報は、メッセージIDをメソッド呼び出しステートメントに対応付けるためのものである。プログラム変換処理部5は、該読み出したメッセージ対応情報に基づき、上記基本ブロック(即ち、ソースプログラムにおける並行して実行される箇所の或る一部分)を、上記指示文(即ち、上記指示文を含むソースプログラムの該指示文)に従って順次実行されるような(ソースプログラムの)基本ブロックに変換する。プログラム変換処理部5は、上述した変換処理を行うことにより得られた(ソースプログラムにおける)基本ブロックのリストを、基本ブロック保持部13に出力する。これにより、基本ブロック保持部13に保持される基本ブロックのリストが更新されることになる。
ソースプログラム出力処理部15は、プログラム変換処理部5により更新された後の基本ブロックのリストを、基本ブロック保持部13から読み出す。そして、該読み出した基本ブロックのリストに基づき、ソースプログラムを再現するための所定の処理を実行する。ソースプログラム出力処理部15は、上記再現したソースプログラムを、記憶装置200へ出力する。
図3は、本発明の一実施形態に係るプログラム変換システムの処理対象になり得るソースプログラムの構成の一例を示す説明図である。図3で示した構成は、図2で示したプログラム変換装置100(のソースプログラム入力処理部1)が、記憶装置200から読み込んだソースプログラムに係わるものである。
図3において、上記ソースプログラム17は、第1のプログラム19、第2のプログラム21、第3のプログラム23、第4のプログラム25、第5のプログラム27、及び第6のプログラム29の各プログラムを含む。上記各々のプログラム(19乃至29)のうち、♯pragma開始指示の記載がある第2のプログラム21、SendMessage(オブジェクトID、メッセージID、パラメータ)の記載がある第3のプログラム23、及び♯pragma終了指示の記載がある第5のプログラム27は、何れのソースプログラムにも必須不可欠のプログラムである。上記第2のプログラム(♯pragma 開始指示)21、第3のプログラム(SendMessage(オブジェクトID,メッセージID,パラメータ))23、及び第5のプログラム(♯pragma 終了指示)27は、何れも、後に(図6で)詳述するメッセージ対応情報のテンプレートに基づいて適宜書き換えられる。これに対して、“ステートメント;”の記載がある第1のプログラム19、第4のプログラム25、及び第6のプログラム29は、必ずしも全てのソースプログラムに含まれるものではない、任意のプログラム(プログラマ等により任意に作成されるプログラム)である。従って、ソースプログラムによっては、上記第1、第4、及び第6のプログラム(19、25、29)の全部又は一部を含まないものも存在し得る。
第3のプログラム23において、SendMessageを構成するオブジェクトIDは、(メッセージの)送信先を指定するための情報である。同じくSendMessageを構成するメッセージIDは、送信先(メッセージの送信元であるオブジェクト)からオブジェクトIDにより指定された送信先(メッセージの送信先であるオブジェクト)に対して送信するメッセージの種類を特定するための情報である。また、SendMessageとは、該送信元、及び該送信先を指定するための情報と、該送信元から該送信先へ送信するメッセージの種類に係わる情報との組み合わせを持った呼び出しのステートメントのことである。
上記構成を有するソースプログラム17が、図2で示した記憶装置200に格納されており、該ソースプログラム17が、同じく図2で示したソースプログラム入力処理部1により記憶装置200から読み出されて、プログラム変換装置100に入力されることになる。
図4は、図2に示した基本ブロック抽出処理部11により、図3で示したソースプログラム17から抽出された、プログラム変換処理部5による変換処理が施される前の基本ブロックのリストの一例を示す説明図である。
図4において、上記基本ブロックのリスト31は、第1の基本ブロック33、開始指示文に係わる第2の基本ブロック35、メッセージ送信ステートメントに係わる第3の基本ブロック37、第4の基本ブロック39、終了指示文に係わる第5の基本ブロック41、及び第6の基本ブロック43を含む。開始指示文に係わる第2の基本ブロック35は、直後のメッセージ通信ステートメントを、手続き呼び出しに変換する機能と、並行した処理動作が可能な区間(即ち、オブジェクト同士の間における、既述のような非同期処理が可能な箇所)の開始を指示する機能と、を有する。メッセージ送信ステートメントに係わる第3の基本ブロック37は、呼び出し先(送信先)のプログラム、即ち、ソースプログラム17とは別のソースプログラムを指定するためのものであり、呼び出し元(送信元)のプログラムでは、該呼び出し元(送信元)のプログラムと並行処理が可能に設定されている。終了指示文に係わる第5の基本ブロック41は、上記のような並行した処理動作が可能な区間の終了を指示する機能を有する。なお、第1の基本ブロック33、第4の基本ブロック39、及び第6の基本ブロック43は、何れも異なる任意の基本ブロック(プログラマ等により任意に作成されるプログラム)である。
図5は、図2に示したプログラム変換処理部5により、図4で示した基本ブロックのリスト31が変換処理されることによって得られる基本ブロックのリストの一例を示す説明図である。
図5において、上記(変換処理が施された後の)基本ブロックのリスト45は、第1の基本ブロック33、手続き呼び出しステートメントに係わる第2の基本ブロック47、第3の基本ブロック39、及び第4の基本ブロック43を含む。手続き呼び出しステートメントに係わる第2の基本ブロック47は、プログラム変換処理部5が、図4で示した第3の基本ブロック37のメッセージ送信ステートメントを、手続き呼び出しステートメントに変換することにより得られたものである。なお、第1の基本ブロック33は、図4で示した第1の基本ブロック33と、第3の基本ブロック39は、図4で示した第4の基本ブロック39と、第4の基本ブロック43は、図4で示した第6の基本ブロック43と、夫々同一であるので、何れも同一符号を付してそれらの詳細な説明を省略する。
プログラム変換処理部5(図2で示した)において、図4で示した第3の基本ブロック37のメッセージ送信ステートメントが、図5で示した第2の基本ブロック47の手続き呼び出しステートメントに変換される処理動作の詳細については、オブジェクトを実現する機構によって相違する。しかし、上記変換処理は、図3で示したソースプログラム17に含まれるSendMessage(第3のプログラム23)のメッセージIDを特定し、上記メッセージ送信ステートメントに対応する手続き呼び出しステートメント(のプログラム)に置換する処理を実行することで、実現可能である。
なお、手続き呼び出しステートメント(第2の基本ブロック47)の、基本ブロックのリスト43における配置位置は、図5で示した基本ブロックのリスト45における第1の基本ブロック33と、第3の基本ブロック43との間の任意の箇所でよい。図5に示した例では、手続き呼び出しステートメントが、図示のように、第2の基本ブロック47として基本ブロックのリスト45中に配置されているが、例えば、該手続き呼び出しステートメントに係わる基本ブロック47を、第3の基本ブロックとして上記リスト45中に配置するようにしてもよい。
図6は、図2に記載のプログラム変換処理システムに適用されるメッセージ対応情報が登録されたテーブルの一例を示す説明図である。
上記メッセージ対応情報は、図3で示したSendMessage中のメッセージIDを、メソッド呼び出しステートメントに対応付けるためのもので、図6に示すように、メッセージIDを表すシンボル、及び手続き呼び出しのプログラムのテンプレート(雛形)を含む。そのため、上記メッセージ対応情報が登録されるテーブルには、図示のように、複数のメッセージID登録領域53と、各々のメッセージID登録領域53毎に対応付けられて設定されている複数のテンプレート登録領域55と、が備えられる。図6に示した例では、メッセージID53aとしてOPERATION 1を有するメッセージ対応情報は、テンプレート55aとして、operation1(%1,%3)を有し、また、メッセージID53bとしてOPERATION 2を有する、上記とは別のメッセージ対応情報は、テンプレート55bとして、operation2(%1,%3)を有する。
(図2で示した)プログラム変換処理部5が、図4で示した基本ブロックのリスト31の変換処理を実行する場合、図3で示したソースプログラム17における第3のプログラム23のSendMessage中のパラメータを、図6で示したテーブルにおけるテンプレート登録領域55中のテンプレートに当てはめる処理を行うことになる。例えば、SendMessage(object,OPERATION1,param);というメッセージ送信処理を呼び出すためのステートメントに対しては、テンプレート55aを適用してoperation1(object,param);という手続き呼び出しを行うためのステートメントを対応させることになる。ここで、テンプレート登録領域55中の%nという表記は、プログラム変換処理部5が基本ブロックのリスト31に対し変換処理を施すに際し、(図3で示した)第3のプログラム23中のパラメータを、第n番目のパラメータに置換すべきことを意味している。
上述したメッセージIDの特定は、図3で示したSendMessage(第3のプログラム23)中のパラメータが、定数で与えられている場合には、該定数を読み出すことにより行うことができる。一方、上記パラメータが、変数で与えられている場合には、例えば、データフローを解析して、どのような定数が与えられる可能性があるかを調査することになる。
図7は、図2に記載のプログラム変換処理システムに適用されるオブジェクト配置情報が登録されたテーブルの一例を示す説明図である。オブジェクトの配置情報は、既述のように、(図2で示した)オブジェクト情報保持部3により記憶装置200から読み出されたもので、オブジェクト情報保持部3に保持されている。
上記オブジェクト配置情報は、図7に示すように、プログラムモジュール(即ち、オブジェクトのこと。以下同じ)の名称、及び該プログラムモジュールの名称により示されるプログラムモジュールが配置されているプロセスの名称を含む。そのため、上記オブジェクト配置情報が登録されるテーブルには、図示のように、複数のプログラムモジュール名称登録領域57と、各々のプログラムモジュール名称登録領域57毎に対応付けられて設定されている複数のプロセス名称登録領域59と、が備えられる。図7に示した例では、プログラムモジュール名称57aとしてModule 1を有するオブジェクト配置情報は、プロセス名称59aとしてProcess1を有する。また、プログラムモジュール名称57bとしてModule 2を有する、上記とは別のオブジェクト配置情報は、プロセス名称59bとしてProcess1を有する。更に、プログラムモジュール名称57cとしてModule3を有する、更に上記とは別のオブジェクト配置情報は、プロセス名称59cとしてProcess2を有する。
図7で示したテーブルの上記領域57に登録される複数のプログラムモジュール名称中から、メッセージ送信ステートメント(図3で示したSendMessage)が属するソースプログラムに含まれるプログラムモジュールを示すプログラムモジュール名称が、プログラム変換処理部5により検索される。同じく、上記領域57に登録される複数のプログラムモジュール名称中から、メッセージ送信先オブジェクト(即ち、プログラムモジュール)を示すプログラムモジュール名称がプログラム変換処理部5により検索される。そして、夫々検索されたプログラムモジュール名称から、図7で示したテーブルの上記領域59に登録される複数のプロセス名称を参照することによって、プログラム変換処理部5により夫々のプログラムモジュールが配置されるプロセスを示すプロセス名称が検索されることになる。換言すれば、上記プログラムモジュール同士が、同一のプロセスに配置されているかどうかが検索されるわけである。
例えば、メッセージ送信元オブジェクト(即ち、プログラムモジュール)を示すプログラムモジュール名称が、Module1であり、メッセージ送信先オブジェクト(即ち、プログラムモジュール)を示すプログラムモジュール名称が、Module3であったとする。この場合、図7のテーブルを参照して明らかなように、Module1(プログラムモジュール名称57a)に対応するプロセスはProcess1(プロセス名称59a)で示されるプロセスであり、Module3(プログラムモジュール名称57c)に対応するプロセスはProcess2(プロセス名称59a)で示されるプロセスである。よって、この場合は、メッセ−ジ送信元オブジェクトが配置されているプロセスと、メッセージ送信先オブジェクトが配置されているプロセスとは一致していないため、メッセージ送信ステートメントを、手続き呼び出しステートメントに置換することはできない。
図8は、図2に記載のプログラム変換装置100が、ソースプログラムを別のソースプログラムに変換する処理を実行するに際しての、該プログラム変換装置100を構成する各部の処理動作を示すフローチャートである。プログラム変換装置100は、変換対象になるソースプログラムが指定され、変換処理動作の開始が指示されることにより、以下に説明する処理動作を実行する。
図8において、まず、ソースプログラム入力処理部1が、記憶装置200より、プログラム変換処理の対象になるソースプログラムをプログラム変換装置100に読み込むための処理を実行する(ステップS71)。ステップS71において、記憶装置200より読み込まれたソースプログラムは、字句解析処理部7により字句解析の処理が施された後(ステップS72)、構文解析処理部9により構文解析の処理が施される(ステップS73)。ステップS73において、構文解析の処理が施されると、次に上記ソースプログラムは、基本ブロック抽出処理部11により上記ソースプログラムから基本ブロックを抽出するための処理が施され、該処理により上記ソースプログラムから抽出された基本ブロックのリストが生成される。そして、該リストが、基本ブロック抽出処理部11により、基本ブロック保持部13に書き込まれる(ステップS74)。
ステップS74で示した処理動作が終了すると、プログラム変換処理部5が、上記リストを、基本ブロック保持部13から読み出すと共に、メッセージ対応情報を、オブジェクト情報保持部3から読み出す。そして、メッセージ対応情報に基づき、既述のように、上記リスト中の基本ブロックを、上述したソースプログラム中の指示文に従って順次実行されるような(ソースプログラムの)基本ブロック(換言すれば、逐次処理(所謂非同期処理)を行うソースプログラムの基本ブロック)に変換し、該基本ブロックのリストを、基本ブロック保持部13に出力する(ステップS75)。ステップS75で示した処理動作が終了すると、ソースプログラム出力処理部15が、基本ブロック保持部13から読み出した基本ブロックのリストに基づき、ソースプログラムを再現するための処理を実行し、上記再現したソースプログラムを、記憶装置200へ出力する(ステップS76)。
図9は、図8に記載のフローチャートのサブルーチンを示すフローチャートである。図8で示した、プロフラム変換処理部5が実行するプログラム変換処理の動作は、図9においてステップS81乃至ステップS84で示す各々の処理動作を含む。
即ち、プログラム変換処理部5は、図9において、まず、基本ブロック抽出処理部11により基本ブロック保持部13に書き込まれた基本ブロックのリストを、読み出す。そして、該読み出した基本ブロックのリストに含まれる全ての基本ブロックについて、それらの基本ブロックを構成する要素が存在しているかどうかチェックする処理を実行する。ここで、基本ブロックを構成する要素とは、既述のように、ソースプログラムにおける変換処理を所望する箇所(例えば、図3では、ソースプログラム17の一部分である第2のプログラム21と第5のプログラム27とによって挟まれた箇所:即ち、第3のプログラム23と第4のプログラム25)が、変換可能かどうかを示す内容が含まれている指示文のことである(ステップS81)。該チェックの結果、全ての基本ブロックに指示文が存在しない場合(つまり、該基本ブロックのリストが空である場合)(ステップS81でYES)には、図9に示す一連の処理動作を終了させる。ここで、全ての基本ブロックに指示文が存在しない場合とは、当初から全ての基本ブロックに指示文が含まれていない場合か、若しくは、何れかの基本ブロックに含まれていた指示文に係わる処理動作が、全て完了した場合の何れかである。
上記チェックの結果、基本ブロックの幾つかに(未処理の)指示文が含まれていれば(ステップS81でNO)、プログラム変換処理部5は、上記基本ブロックの何れかより、未処理の指示文を1つ抽出し(ステップS83)、(ソースプログラムにおける変換処理を所望する箇所が、)変換可能かどうかチェックする。このチェックは、メッセージ送信元側のオブジェクトと、メッセージ送信先側のオブジェクトとが、同一のプロセスに配置されているかどうか確認することにより行われる。送信元のオブジェクトが配置されているプロセスと、送信先のオブジェクトが配置されているプロセスとが異なる場合には、メッセージ送信ステートメントを、手続き呼び出しステートメントに置換することはできない(ステップS83)。該チェックの結果、変換が可能でないと判断した場合には(ステップS83でNO)、ステップS81で示した処理動作に復帰する。一方、該チェックの結果、変換が可能であると判断すれば(ステップS83でYES)、次の通信方式変換処理を実行し(ステップS84)、該処理動作が終了すると、ステップS81で示した処理動作に復帰する。なお、通信方式変換処理の詳細については、既に説明したので、ここでの詳細な説明は省略する。
図10は、本発明の他の実施形態に係るプログラム変換システムの全体構成を示す機能ブロック図である。
図10に示すように、本実施形態に係るプログラム変換装置300は、図2に記載のプログラム変換装置100が備える各部に加えて、更に、実行ステップ数算出処理部91、評価指標算出処理部93、及び評価指標保持部95を備える点で、図2に記載のプログラム変換装置100と構成が相違する。その他の構成については、図2に記載のものと同一であるので、図10において、図2に記載の各部と同一物については、同一符号を付してそれらの詳細な説明を省略する。
図10において、実行ステップ数算出処理部91は、処理対象になっている指示文を有する基本ブロックを、基本ブロック保持部13に保持されている基本ブロックのリストから読み出す。そして、該読み出した基本ブロック内に存在する指示文について、動的実行ステップ数を算出すると共に、該算出の結果得られた動的実行ステップ数を、評価指標算出処理部93に通知する。評価指標算出処理部93は、実行ステップ数算出処理部91から通知される上記動的実行ステップ数の算出結果を入力する。これと共に、処理対象になっている指示文を有する基本ブロックを、基本ブロック保持部13に保持されている基本ブロックのリストから読み出す。そして、上記入力した基本ブロックの指示文毎に、上記入力した動的実行ステップ数(の算出結果)に基づき評価指標を算出すると共に、該算出した評価指標と、上記指示文毎の動的実行ステップ数とを、評価指標保持部95に出力する。
評価指標保持部95は、評価指標算出処理部93から出力される上記基本ブロックの指示文毎の評価指標と、上記指示文毎の動的実行ステップ数とを保持すると共に、プログラム変換処理部5からの読み出し要求に応じて、上記評価指標、上記動的ステップ数をプログラム変換処理部5へ出力する。
プログラム変換処理部5は、オブジェクト情報保持部3が保持するオブジェクト配置情報を、オブジェクト情報保持部3から、上述した評価指標、及び上記動的ステップ数を、評価指標保持部95から、夫々読み出す。そして、各々の指示文が含まれる基本ブロックに対し、変換処理を実行するかどうかを、上記評価指標に基づきチェックする。該チェックの結果、変換処理を実行すべきであると判断した指示文が存在する場合には、プログラム変換処理部5は、該指示文が含まれる基本ブロックのリストを、基本ブロック保持部13から読み出し、送信元のオブジェクトと、送信先のオブジェクトとの間で並行処理(所謂非同期処理)が実行可能なプログラムの箇所(例えば、図3の例では、第3のプログラム23と、第4のプログラム25)を、該指示文に従って順次実行されるように(所謂逐次処理:同期処理が可能なように)変換処理を実行する。そして、該変換処理が施された後の基本ブロックのリストを、基本ブロック保持部13に格納する。
図11は、図10に記載のプログラム変換装置が、ソースプログラムを別のソースプログラムに変換する処理を実行するに際しての、該プログラム変換装置を構成する各部の処理動作を示すフローチャートである。
図11に示すフローチャートと、図8で示したフローチャートとは、図11に示すフローチャートがステップS105で示すステップを含む点において相違する。その他のステップについては、図11に示すものと、図8で示したものとは処理内容が略同一である。即ち、図11のステップS101は、図8のステップS71と、図11のステップS102は、図8のステップS72と、図11のステップS103は、図8のステップS73と、夫々処理内容が略同一である。また、図11のステップS104は、図8のステップS74と、図11のステップS106は、図8のステップS75と、図11のステップS107は、図8のステップS76と、夫々処理内容が略同一である。
図11において、ステップS105では、評価指標算出処理部93が、上述したように、基本ブロック内に存在する指示文に係わる動的実行ステップ数の算出結果(実行ステップ数算出処理部91から通知される)に基づき、評価指標を算出する。そして、該算出した評価指標と、指示文毎の動的実行ステップ数とを、評価指標保持部95に出力する処理を実行する。次のステップS106で実行される処理動作は、図8のステップS75で示したプログラム変換処理における処理動作と基本的に同一である。しかし、ステップS106では、プログラム変換処理部5が、オブジェクト情報保持部3からのオブジェクト配置情報に加えて、更に、評価指標保持部95からの評価指標に基づき、上記基本ブロックのリストの変換処理を行うかどうか判断する点において、図8のステップS75で示したプログラム変換処理における処理動作と相違する。即ち、プログラム変換処理部5は、評価指標保持部95から読み出した評価指標に基づき、変換処理を実行すべきであると判断した指示文が存在する場合には、該指示文が含まれる基本ブロックのリストに対し変換処理を施す。そして、該変換処理後の基本ブロックのリストを、基本ブロック保持部13に格納する処理を実行する。プログラム変換処理部5が、上記基本ブロックのリストに対し変換処理を実行すべきであると判断するのは、例えば、上記評価指標が、予め決められた(評価指標の)基準値以下である場合が挙げられる。或いは、上記とは異なり、最も評価指標の低い指示文から順に、予め決められた数に達するまで、該当する指示文の基本ブロックについて変換処理を実行するようにしても差し支えない。
図12は、図11に記載のフローチャートのサブルーチンを示すフローチャートである。
図12に示すフローチャートは、図9のステップS83で示す処理動作に代えて、ステップS113で示す処理動作を実行する点、及び図9で示す処理動作に代えて、ステップS114で示す処理動作を実行する点において、図9で示したフローチャートと相違する。上記以外のステップについては、図12に示すものと、図9で示したものとは処理内容が略同一である。即ち、図12のステップS111は、図9のステップS81と、図12のステップS112は、図9のステップS82と、夫々処理内容が略同一である。
図12において、ステップS113では、実行ステップ数算出処理部91が、指示文で囲まれたプログラム(例えば、図4の例では、開始指示文35と終了指示文41とによって挟まれたメッセージ送信ステートメント37と基本ブロック39のこと。)と、要求された非同期処理を行うプログラムとの2つのプログラムから、実行に要する動的ステップ数の推定値を算出する。動的ステップ数の推定値の算出処理は、任意の手法を用いて行って差し支えない。該任意の手法には、例えば、最悪実行時間を求める手法が含まれる。次に、ステップS114では、評価指標算出処理部93が、ステップS113で算出された動的ステップ数の推定値に基づき、プログラム変換処理部5が基本ブロックノリストを変換するかどうかを判断するための評価指標を算出し、該算出した評価指標を評価指標保持部95に格納する。上記評価指標としては、例えば、ステップS113で算出された2つの値の最小値が挙げられる。
なお、上述した本発明の他の実施形態に係る変形例として、プログラム変換処理部5において、呼び出し先(送信先)オブジェクトに割り当てられたスレッドの優先度を考慮して、手続き呼び出しステートメントを挿入する手法も想到し得る。この場合、プログラム変換処理部5は、呼び出し元(送信元)オブジェクトに割り当てられたスレッドと、呼び出し先(送信先)オブジェクトに割り当てられたスレッドとの優先度(どちらを優先的に処理するか)を比較する。そして、呼び出し先(送信先)オブジェクトに割り当てられたスレッドの優先度の方が高い場合には、プログラムにおける指示文で囲まれた箇所の先頭に手続き呼び出しステートメントを挿入することになる(図5で示した例では、手続き呼び出しステートメント47の挿入位置が相当する。)。これとは逆に、呼び出し元(送信元)オブジェクトに割り当てられたスレッドの優先度の方が高い場合には、プログラム変換処理部5は、プログラムにおける上記指示文で囲まれた箇所の最後に手続き呼び出しステートメントを挿入することになる。
プログラム変換処理部5は、スレッドの優先度や走行状態(処理状態)等を考慮して、手続き呼び出しステートメントの前後の位置に、処理を挿入すると共に、呼び出し先(送信先)オブジェクトに割り当てられたスレッドとの間で、処理が排他的に行われるよう、同期をとる処理をも挿入する。また、プログラム変換処理部5は、動的に優先度を変更できる場合には、呼び出し先(送信先)オブジェクトに付加された優先度と同一の優先度を設定する処理を、手続き呼び出しステートメントの実行前の位置に、元の優先度を設定する処理を手続き呼び出しステートメントの実行後の位置に、夫々挿入することになる。
以上、本発明の好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
1 ソースプログラム入力処理部
3 オブジェクト情報保持部
5 プログラム変換処理部
7 字句解析処理部
9 構文解析処理部
11 基本ブロック抽出処理部
13 基本ブロック保持部
15 ソースプログラム出力処理部
91 実行ステップ数算出処理部
93 評価指標算出処理部
95 評価指標保持部
100、300 プログラム変換装置
200 記憶装置
3 オブジェクト情報保持部
5 プログラム変換処理部
7 字句解析処理部
9 構文解析処理部
11 基本ブロック抽出処理部
13 基本ブロック保持部
15 ソースプログラム出力処理部
91 実行ステップ数算出処理部
93 評価指標算出処理部
95 評価指標保持部
100、300 プログラム変換装置
200 記憶装置
Claims (6)
- 第1のオブジェクトと第2のオブジェクトとが個別に処理を実行する並行処理が可能なプログラムを、前記第1のオブジェクトによる処理の終了に引続いて前記第2のオブジェクトによる処理を実行する逐次処理が可能なプログラムに変換する装置であって、
前記プログラムの実行に際して前記第1のオブジェクトと前記第2のオブジェクトとの間で行われるメッセージ通信において、前記第1のオブジェクトから前記第2のオブジェクトに送信される並行処理開始の要求メッセージ、及び予め前記プログラムに挿入されている、逐次処理が可能な箇所に係わる情報を保持する保持部と、
前記保持部に保持される前記逐次処理が可能な箇所に係わる情報により特定される前記プログラム中の箇所を、前記第2のオブジェクトによる逐次処理が可能な箇所かどうか識別する識別部と、
前記識別部が前記情報により特定される前記プログラム中の箇所を、前記第2のオブジェクトによる逐次処理が可能な箇所として識別した場合に、前記保持部に保持される前記並行処理開始の要求メッセージを、前記逐次処理開始の要求メッセージに変更するメッセージ変更処理部と、
少なくとも前記メッセージ変更処理部により変更された後のメッセージを、前記識別部により識別されたプログラムにおける前記箇所内の適宜な位置に含ませることにより、前記プログラムを前記逐次処理が可能なプログラムに変換する変換処理部と、
を備えるプログラム変換装置。 - 請求項1記載のプログラム変換装置において、
前記並行処理が可能なプログラムの動的実行ステップ数の推定値と、前記逐次処理が可能な箇所として識別された前記プログラムの箇所の動的実行ステップ数の推定値と、を算出する動的実行ステップ数算出部と、
前記動的実行ステップ数算出部により算出された前記動的実行ステップ数の推定値に基づき、評価指標を算出する評価指標算出部と、
を更に備え、
前記評価指標算出部により算出された評価指標に基づき、前記変換を実行するかどうか判断するようにしたプログラム変換装置。 - 請求項1記載のプログラム変換装置において、
前記並行処理が可能なプログラム、及び前記逐次処理が可能な箇所として識別された前記プログラムの箇所に予め付加された優先度を示す情報に基づき、前記箇所内における前記並行処理開始の要求メッセージを挿入するための適宜な位置を決定するようにしたプログラム変換装置。 - 請求項3記載のプログラム変換装置において、
前記プログラムの前記箇所内における前記並行処理開始の要求メッセージの挿入位置を挟む位置に、前記並行処理が可能なプログラムを実行する可能性のあるスレッド同士による逐次処理を夫々挿入するようにしたプログラム変換装置。 - 請求項3記載のプログラム変換装置において、
前記プログラムの前記箇所内における前記並行処理開始の要求メッセージの挿入位置を挟む位置に、前記プログラム、及び前記逐次処理が可能な箇所として識別された前記プログラムの箇所に付加された優先度を示す情報に基づき、実行優先度を変更する処理を挿入するようにしたプログラム変換装置。 - 第1のオブジェクトと第2のオブジェクトとが個別に処理を実行する並行処理が可能なプログラムを、前記第1のオブジェクトによる処理の終了に引続いて前記第2のオブジェクトによる処理を実行する逐次処理が可能なプログラムに変換する装置において、
前記プログラムの実行に際して前記第1のオブジェクトと前記第2のオブジェクトとの間で行われるメッセージ通信において、前記第1のオブジェクトから前記第2のオブジェクトに送信される並行処理開始の要求メッセージ、及び予め前記プログラムに挿入された、逐次処理が可能な箇所に係わる情報を保持する第1のステップと、
前記第1のステップにおいて保持される前記逐次処理が可能な箇所に係わる情報により特定される前記プログラム中の箇所を、前記第2のオブジェクトによる逐次処理が可能な箇所かどうか識別する第2のステップと、
前記第2のステップにおいて前記情報により特定される前記プログラム中の箇所を、前記第2のオブジェクトによる逐次処理が可能な箇所として識別した場合に、前記第1のステップにおいて保持される前記並行処理開始の要求メッセージを、前記逐次処理開始の要求メッセージに変更する第3のステップと、
少なくとも前記第3のステップにおいて変更された後のメッセージを、前記第2のステップにおいて識別されたプログラムにおける前記箇所内の適宜な位置に含ませることにより、前記プログラムを前記逐次処理が可能なプログラムに変換する第4のステップと、
を備えるプログラム変換方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008106709A JP2009258962A (ja) | 2008-04-16 | 2008-04-16 | プログラム変換方法、及び装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008106709A JP2009258962A (ja) | 2008-04-16 | 2008-04-16 | プログラム変換方法、及び装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009258962A true JP2009258962A (ja) | 2009-11-05 |
Family
ID=41386306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008106709A Pending JP2009258962A (ja) | 2008-04-16 | 2008-04-16 | プログラム変換方法、及び装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009258962A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10540156B2 (en) | 2016-06-21 | 2020-01-21 | Denso Corporation | Parallelization method, parallelization tool, and in-vehicle device |
-
2008
- 2008-04-16 JP JP2008106709A patent/JP2009258962A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10540156B2 (en) | 2016-06-21 | 2020-01-21 | Denso Corporation | Parallelization method, parallelization tool, and in-vehicle device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101085330B1 (ko) | 컴파일 방법 및 컴파일러 | |
JP4957729B2 (ja) | プログラム並列化方法、プログラム並列化装置及びプログラム | |
CN111736954B (zh) | 多智能合约虚拟机实现方法、多智能合约虚拟机及系统 | |
US20130218299A1 (en) | MCP Scheduling For Parallelization Of LAD/FBD Control Program In Multi-Core PLC | |
JP2015207318A (ja) | 逐次コンピュータプログラムコードを並列処理する方法及びシステム | |
JP2010009495A (ja) | 情報処理装置、プログラム処理方法及びコンピュータプログラム | |
US7739696B2 (en) | Message translation systems and methods | |
CN111930359B (zh) | 一种异构嵌入式系统上进行算法开发的系统及方法 | |
WO2012051844A1 (zh) | 智能网平台、业务执行方法和分析业务异常的方法 | |
US7228527B1 (en) | Method and system for structuring a procedure | |
Fredriksson et al. | Seamless distributed computing from the geometry of interaction | |
EP4204960B1 (en) | Thread-local return structure for asynchronous state machine | |
Edwards et al. | Automated analysis and code generation for domain-specific models | |
US7712079B2 (en) | Program editing apparatus, program editing method, and program for splitting a program file | |
JPH08263299A (ja) | プログラム変換方法 | |
JP5041990B2 (ja) | ソフトウェア部品抽出支援装置 | |
JP2009258962A (ja) | プログラム変換方法、及び装置 | |
JP2008250838A (ja) | ソフトウェア生成装置、方法、およびプログラム | |
JP2010049439A (ja) | ソフトウェアモデルを用いたシステム構築方法およびモデリング装置 | |
CN114127681B (zh) | 用于实现数据流ai应用的自主加速的方法和装置 | |
CN116431320B (zh) | 一种动态双模式张量管理设计方案 | |
Ribeiro et al. | COFIE: a regex-like interaction and control flow description | |
JP2019179383A (ja) | Api処理方法、端末、api処理プログラム | |
JP2007122187A (ja) | プログラム・コード生成装置 | |
JP2009169862A (ja) | プログラム変換装置、方法、プログラムおよび記録媒体 |