JP3553991B2 - プログラム制御方法 - Google Patents
プログラム制御方法 Download PDFInfo
- Publication number
- JP3553991B2 JP3553991B2 JP12617093A JP12617093A JP3553991B2 JP 3553991 B2 JP3553991 B2 JP 3553991B2 JP 12617093 A JP12617093 A JP 12617093A JP 12617093 A JP12617093 A JP 12617093A JP 3553991 B2 JP3553991 B2 JP 3553991B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- data
- program code
- processing
- processes
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【産業上の利用分野】
本発明は、複数のプログラムが協調して処理をおこなっていく処理形態のプログラム制御方式に関するものである。
【0002】
とくに、サーバ・クライアントシステムとして実現されたデータベースシステムのように、サーバからの要求をクライアントに実行させたり、クライアントに新しい機能を提供したりする機構を要求されるシステムの実現に関するプログラム制御方式である。
【0003】
【従来の技術】
近年、DTPシステムやDrawing tool(絵描きプログラム)などの複雑なアプリケーションプログラムが開発されていく過程において、”プログラミングの複雑化”,”プログラムの肥大”,”状況に応じた処理の切り替えが難しい”等の問題が提起されてきた。
従来、これらの問題の解決のために、以下のような方法が提案され利用されている。
・オブジェクト指向データベースシステム(例えば、The ObjectStore Database System,CACM vol.No.10,pp.50−63,(Oct.1991)に記述されたオブジェクト指向データベースシステム)
オブジェクト指向システムの考え方をデータベースシステムに適用したシステムである。複雑な構造をもつデータを、複数のプログラム間で共有する場合に要求される機構(例:データの永続化,並行アクセス制御,バージョン管理)を提供する。オブジェクト指向データベースシステムによって、データ共有を実現するために発生するプログラミングの複雑化を緩和することが可能となる。
・dynamic loading/linking(例えば、An Approach to Genuine Dynamic Linking CSE−90−25 ,8−1990,Div computer science university of california)
【0004】
ある機能を、プログラムの作成時にそのプログラムに組み込んでしまうかわりに、プログラムの実行時に組み込む機構である。
通常、プログラムの作成時におこなわれるモジュール組み込み手続き(loadingおよびlinking)をプログラムから呼びだすことができる関数として組み込んでしまうことにより実現される。
プログラムの肥大の回避と状況に応じて処理内容を切り替える機構として使用されている。
・共有ライブラリ(例えば、Unix SystemVに付属するライブラリ)複数のプログラムで共通に使用される可能性のあるモジュールを1つないし数個のファイルにまとめたものをライブラリと呼ぶが、特に各プログラムが実行時にそのファイル内の手続きを呼び出し、実行することができるようになっているものを共有ライブラリと呼ぶ。
プログラムの肥大を解消する方法として使用されている。
【0005】
【発明が解決しようとしている課題】
しかしながら、近年グループウェアなどのように、複数のプログラムが非常に複雑な構造をもつデータやそのデータの構造に依存したプログラムコードを共有し、協調して処理をおこなっていくような、さらに複雑な共有形態を要求するアプリケーションが作成されるようになるに従い、以下のような問題が発生している。
a. Change notification問題
たとえば、複数のウィンドウ・アプリケーションがデータを共有している場合、共有されているデータの状態を表示に常に反映させるには、あるアプリケーションが共有されたデータを変更する度に、他のアプリケーションにその旨を通知してやらなければならない。
b. 所有者問題
データ管理アプリケーション、特にデータに対するの更新やアクセス制御を要求される場合、何らかの規約に基づく動作をアプリケーションに”強制”しなければならない場合が発生する。
c. 蒸発問題
共有データを参照するアプリケーション内では、複数のアプリケーションで共有され各アプリケーションの終了後も永続的に保存されるデータと、各アプリケーション固有でアプリケーションの終了と共に消滅してしまう一時的なデータが混在することになる。
この様な状況において、永続的データに一時的なデータに対する参照情報が含まれている場合、アプリケーションの終了と共に一時的なデータが消滅してしまうため、永続的データはその時点で意味のないデータを保持していることになる。多くの場合この意味のないデータは、不正な値として解釈されアプリケーションに悪影響を及ぼすことになる。
ところが、前記従来例では、複数のプログラムが、非常に複雑な構造をもつデータやそのデータの構造に依存したプログラムコードを共有し、その状態を実行時に動的に変化させていくことによって発生する、これらの問題を解決することができない。
なぜならば、オブジェクト指向データベースシステムが提供するのは、永続化されたデータの集中管理機構であり、Change notification問題や所有者問題のような複雑な分散化データ管理の問題の解決や、蒸発問題のように永続化されていないデータの管理をおこなうことができない。
さらに、共有ライブラリが提供する機能はプログラムの作成時に決定可能なプログラムコードの共有をサポートするための機構であり、上記の問題のように、実行時の状況によって動的に変化する問題に対応することができない。
また、dynamic loading/linkingの場合は動的なプログラムコードの追加・実行をおこなうことができるが、そのプログラムコードの共有を管理する機構を提供することができない。このため複数のプログラムによる協調処理という基盤そのものをdynamic loading/linkingでは実現することができない。
【0006】
【課題を解決するための手段】
上記課題を解決するために、本発明のプログラム制御方法は、それぞれ異なる第1のプログラムを実行する複数の第1のプロセスと第2のプログラムを実行する第2のプロセスとが協調して処理を行なうシステムにおいて、前記複数の第1のプロセスが前記第2のプロセスに対してプログラムコード及びデータの追加を要求し、前記第2のプロセスが複数の前記第1のプロセスよりの追加の要求を受け取ると、要求された追加を許可する1つの前記第1のプロセスを選択して、当該選択したプロセスに許可を通知するとともに、他の前記第1のプロセスに対して認証拒否を通知し、前記第1のプロセスが、前記第2のプロセスより許可の通知を受けると、前記第2のプロセスに対して前記プログラムコード及びデータの追加を実行することを特徴とする。
【0007】
これによって、プログラムの実行時に動的に変化していく状況を監視し、かつ必要な場合には積極的に状況を変化させ、複雑な協調作業に伴う前述の問題に対処することが可能となる。
【0008】
また本発明は、
データおよびプログラムコードを組み込まれ実行される側が、その処理に許可をあたえるための認証手段と、
複数のプロセスからのデータおよびプログラムコードの追加・実行要求の衝突を解決する手段と、
データおよびプログラムコードの追加・実行の結果、1つのプロセス内に存在することになる複数の手続き間の並行制御手段を設けることにより、
強制された動作が正当なものであり、かつ現状に最も適したものにすることである。
【0009】
【実施例】
ここでは、本発明の第1の実施例としての、マルチメディアデータ検索システムについて説明する。
【0010】
ここで述べるマルチメディアデータ検索システムとは、データベース等で管理されている画像、音声、文書等のマルチメディアデータを検索・表示するアプリケーションのことである。
以下、このマルチメディアデータ検索システムについて図2,図3,および図4を用いて説明する。
まず図2は、本実施例のシステム構成を表したものである。
同図において、
201はマルチメディアデータ検索システムの利用者がコマンドやデータを入力するための入力装置で、キーボード,マウス,スキャナ等である。
【0011】
202は入力装置201からの入力に基づいて後述する図面に示されたフロ−チャ−トの手順を記憶し、それに基づいて本実施例の処理を実行する処理部のCPUである。
【0012】
203はCPU202等の処理によって検索されたマルチメディアデータを表示するための出力装置で、CRTディスプレイやプリンタなどである。
【0013】
204は本実施例においてマルチメディアデータの検索と取り出されたデータの処理機能を利用者に提供するマルチメディアデータ処理プログラムである。
【0014】
205はマルチメディアデータ処理プログラム204およびその実行に必要なデータを一時的に記憶するための主記憶である。
【0015】
201から203および205は計算機バス206で結合され、ワークステーション207を構成する。本実施例のマルチメディアデータ検索システムはワークステーション207上で動作する。本実施例では、ワークステーション207同等なものが複数存在してもよい。この場合、各ワークステーション上でマルチメディアデータ処理プログラム204同じプログラムが動作し、複数の利用者に同時にサービスを提供することができる。
【0016】
208は、マルチメディアデータを記憶し管理するためのデータベースシステムであり、マルチメディアデータ検索システムにマルチメディアデータの検索などのサービスを提供する。
主に、マルチメディアデータを記憶・保存するハードディスク等の2次記憶装置209と、マルチメディアデータ処理プログラム204からの要求に従ってマルチメディアデータの検索・管理をおこなうデータベース処理プログラム210とで構成されており、ワークステーション207上、あるいは別の同様な構造をもつコンピュータ上で動作する。
【0017】
本実施例において、本発明の中心であるデータおよびプログラムコードの共有機能はデータベースシステム208内のデータベース処理プログラム210によって提供されている。
211は、データベースシステム208とマルチメディアデータ処理プログラム204を結合し、システム間でのデータ交換を可能にする手段を示している。
この結合は通常、コンピュータネットワークおよびその上で実現されたプロセス間通信機能によって実現される。
【0018】
つぎに図3は、図2のシステム構成上で動作するマルチメディアデータ処理プログラム204およびデータベース処理プログラム210の処理をあらわす概念図である。以降の説明は主にこの図と後で述べる図4にもとづいて行う。
同図において、
301は図2におけるワークステーション207上で動作しているマルチメディアデータ検索システムであり、302は図3上でのデータベースシステム208をあらわすものである。
また、303はマルチメディアデータ検索システム301とデータベースシステム302の間で共有されるマルチメディアデータを保持するための共有メモリである。
マルチメディアデータ検索システム301内部の304は出力装置203の1つとして使用されるCRTディスプレイであり、マルチメディアデータ検索システムの利用者による検索コマンド等の結果がここに表示される。
305はマルチメディアデータ処理プログラム204がワークステーション207上で動作している時の形態をあらわすマルチメディアデータ処理プロセスであり、306はデータベース処理プログラム210をあらわすデータベース処理プロセスである。
307は2次記憶装置207に相当するハードディスクである。
のこる308,309,310,311は、あるマルチメディアデータのさまざまな形態を表現している。
すなわち、308はそのマルチメディアデータのハードディスク307上でのデータ形式であり、309と310はそのデータの共有メモリ303上でのデータ形式をあらわす。それぞれマルチメディアデータを処理するプログラムコードとマルチメディアデータそのものである。
また、311はCRTディスプレイ304上でのビットマップデータ形式を表現しており、マルチメディアデータ検索システムの利用者が要求した検索結果の表示に相当している。
【0019】
これらのデータ形式間の変換はマルチメディアデータ処理プロセス305およびデータベース処理プロセス306によっておこなわれる。
例えば、利用者からの検索結果としてハードディスク307上のデータ308がCRTディスプレイ304に表示されるといった処理の場合、データ308はまずデータベース処理プロセス306によって共有メモリ上でのデータ形式309と310に変換され、共有メモリ303に書き込まれる。ここでは、他のデータへの参照データを共有メモリ上でのポインタにおきかえる(この処理をswizzlingと呼ぶ。)等の変換がおこなわれる。
次にプログラムコード309はマルチメディアデータ処理プロセス305に組み込まれ、実行される。プログラムコード209の処理により、マルチメディアデータ310はCRTディスプレイ上でのデータ形式311に変換され表示される。
【0020】
ここで、このプログラム間でのデータおよびプログラムコードの組み込みを以降、”Injection”と呼び、その実現機構を”Injection機構”と呼ぶことにする。
【0021】
図1a,1bは、このInjection機構の動作イメージをあらわしており、図1aにおいて、プログラムB101がプログラムA102にデータと実行可能なプログラムコード103を付加(ないし置換)している。
【0022】
また、図1bは図1aの処理結果をあらわし、プログラムB101’はプログラムコード103を付加されたあとのプログラムB101をあらわしている。プログラムコード103’は、プログラムB101’付加されたプログラムコード103をあらわしている。
プログラムB101’上でプログラムコード103’が動作することにより、プログラムA102が意図した動作を強制することが可能となる。
本実施例では、この”意図した動作”がデータ308をCRTディスプレイ304上に表示させることに相当する。
【0023】
本実施例において、このInjection機構は以下のようにして実現されている。まず、プロセス間の要求伝達は、UNIX等のオペレーティングシステムが提供するプロセス間通信機構(socketなど)によっておこなわれる。データおよびプログラムコードの共有あるいは追加・変更手段の実現にためには、データ共有の基本機構として共有メモリシステムを使用し、共有メモリ上にバイナリデータとしておかれたプログラムコードをdynamic loading/linking機構を用いて動作中のプロセスに組み込む。
あるいは、そのプログラムコードが他の共有データのみに依存している場合なら、dynamicloading/linkingの機構は特に必要なく、単にプログラムコードとそれが参照するデータを共有メモリ上に書き込むだけでよい。
共有したデータとプログラムコードの実行は、最近のオペレーティングシステムでサポートされるようになってきたthreadやlight weight process生成機構など、新たな処理の流れ(これをactivityと呼ぶ)を生成することができる機構を使用して実現することができる。ただし通常、新しいactivityの生成は同一プログラム内に存在している他のactivityのみに許されていることが多い。この場合、別のプログラムからactivityの生成を可能にする、プログラム間のインタフェースを規定する必要がある。
また、データおよびプログラムコードの追加・実行要求の認証の実現は、共有メモリ上に存在するが、まだリンクされていないデータおよびプログラムコードを読み出し、その内容を調べることにより、データの正当性を確認することで可能である。
具体な判定方法としては、オブジェクト指向言語におけるクラス継承の機構を利用し、そのデータが特定のクラスのサブクラスのインスタンスとなっているか否かをチェックし、そのサブクラスのインスタンスのみ認証されるという方式が考えられる。
ただし、本実施例においては、マルチメディアデータ処理プロセス305そのものが重要なデータを保持せず、データのほとんどがデータベース処理プロセス306によって管理されているため、Injectionは無条件で認証される。Injectionにおける認証の実施については、後で述べるの実施例で説明する。
データおよびプログラムコードの追加・実行要求の衝突を解決する手段としては、各要求に優先順位を付け、最も優先順位が高いものを採用するといった戦略が可能である。
本実施例では、あとで述べるように、要求の衝突は発生しないようになっている。
衝突の解決する手段の実施についても、後で述べるの実施例で説明する。
最後に、1つのプロセス内に存在することになる複数の手続き間の並行制御手段としては、従来のオブジェクト指向データベースでデータの共有に用いられている、ロックにもとづく変更アクセス制御機構を、従来のようなプロセス単位ではなく、プロセス内に同時に複数存在しうるactivityを単位として適用する。このときactivity間で優先順位づけを行い、特定のactivityを優先的に実行させる機構が必要となる。本実施例では、Injectされるプログラムコード309はかならず、マルチメディアデータ処理プロセス205の主手続きより高い優先度をもち、優先的に実行される。
【0024】
さて、上記構成に基づいた本実施例の動作を図4a,4b,4cのフローチャートを用いて説明する。各フローチャートはそれぞれ、マルチメディアデータ処理プロセス305の主手続き、データベース処理プロセス306内のInjection機構、およびプログラムコード309のInjectionの前におこなわれるInjection認証手続きの処理の流れをあらわしている。これらのフローチャートは見かけ上独立しているが、あるフローチャートのonestepが他のフローチャートの処理を開始させるというかたちで、互いに関連しあっている。また、これらの処理の流れはひとつのプロセス内に同時に複数存在しうる。
【0025】
本実施例の説明では便宜上、データベース処理プロセス306がマルチメディアデータ処理プロセス305より先に起動されている事を仮定する。また、データベース処理プロセス306は1つだけ起動されており、2つ以上のInjectionが同時に発生することはないものとする。
(S4b01) マルチメディアデータ処理プロセス305は、その起動後にInjectionが受け入れ可能である事を宣言する。
(S4a01) データベース処理プロセス306は、マルチメディアデータ処理プロセス305のInjection受け入れ可能宣言を検知し、(例えばInjection受け入れ先リストなどにマルチメディアデータ処理プログラム305を登録し)憶する。
その後で、マルチメディアデータ検索システムの利用者によってマルチメディアデータの検索が要求されると(S4b02)、
(S4b03) マルチメディアデータ処理プロセス305はデータベース処理プロセス306に対し、利用者によって指示されたデータ308の検索を要求する。この時点で、マルチメディアデータ処理プロセス305の処理は利用者からの入力受付状態にもどり、次のコマンド等を受けつける(S4b04)。
以降の処理は主にデータベース処理プロセス306によって実行される。
(S4a02) データ308の検索要求がデータベース処理プロセス306に通知されると、
(S4a03) 検索要求に付加されている情報をもとに、要求されたデータ308をハードディスク307から取り出す。
(S4a04) データベース処理プロセス306はマルチメディアデータ処理プログラム305に対し取り出したデータ308のInjectionの認証要求を発行する。
認証要求にはInjectionの発生とInjectに関する情報が含まれている。
マルチメディアデータ処理プログラム305内の認証手続きは、Injectionの認証要求を検知し(S4c01)、
(S4c02) Injectionの認証が可能か否かを判断し、データベース処理プログラム306に結果を通知する(S4c03)。
通知された結果、
(S4a05) Injectionの認証を受けることができなかった場合はInjectionは実行されず、マルチメディアデータ処理プロセス305にエラーが送られる。このエラーは、CRTディスプレイ304に表示されシステムの利用者に通知される(S4a06)。
(S4a07) Injectionが許可された場合は、必要なデータ308はプログラムコード309とマルチメディアデータ310に変換され、共有メモリ303上に置かれる。
【0026】
ただし、プログラムコード309はデータ308と先に参照されたデータ間で共用されている場合がある。このような場合、プログラムコード309がすでに共有メモリ303上に存在することになるので、マルチメディアデータ310みが共有メモリ303上に置かれる。ただし、プログラムコード309とマルチメディアデータ310の(マルチメディアデータ310はプログラムコード309によって処理されるという)関係は保存される。
さらに、プログラムコード309はマルチメディアデータ処理プログラム204に動的にリンクされる。
このとき、プログラムコード309が前の処理によってすでにリンクされていた場合はリンクはおこなわれない。
この時点で、マルチメディアデータ処理プロセス305も共有メモリ303を介してデータを処理するための準備が完了する。
(S4b08) マルチメディアデータ処理プログラム204内にリンクされ、マルチメディアデータ処理プロセス305に組み込まれたプログラムコード309にactivityを与え、実行する。
プログラムコード309はCRTディスプレイ304へのデータの表示等の処理を行う。
データベース処理プロセス306自身の処理はこの時点で完了し、次の要求発生を待つことになる(S4a02)。
最後に、プログラムコード309の実行が終了し、利用者によって入力されたコマンドの処理が完了する。
以上のようなInjectionの実現により、本実施例では以下のような効果を得ることができる。
1. マルチメディアデータのブラウジング(表示)機構をInjectionを使用して後から組み込む事により、マルチメディアデータ処理プログラム204を一切変更することなく、新しいタイプのデータの取り込み,データフォーマットの変更への対応,データの表示等の処理の効率化をおこなうことができる。
2. プログラムコード309がマルチメディアデータ処理プロセス305の主手続きから切り離され、主手続きとは別のactivityが与えられることにより、マルチプロセッサ環境での実行スピードの改善を期待することができる。
【0027】
(その他の実施例)
以下、本発明の第2の実施例であるプログラムコード共有システムについて図5,図6,および図7を用いて説明する。
ここで述べるプログラムコード共有システムとは、あるプログラムの一部(手続き)をデータベース等で管理してそのプログラム自身から切り離す事により、プログラムコードの共有やプログラムの拡張・修正を容易にする事を目的としたソフトェアシステムのことである。
まず図5は、本実施例におけるシステム構成をあらわしたものであり、先に述べたマルチメディアデータ検索システムとほぼ同じ構成である。
同図において、
501および501’はそれぞれ、本実施例上で動作するアプリケーションプログラムの利用者が、コマンドやデータを入力
するための入力装置で、キーボード、マウスなどである。
502および502’はそれぞれ、入力装置501,501’からの入力にもとづいてアプリケーションプログラムの処理を実行するCPUである。ここでは、CPU502とCPU502’が異なる命令セットを持っている場合を想定している。
503および503’はそれぞれ、CPU502,CPU502’等の処理によって検索されたマルチメディアデータを表示するための出力装置で、CRTディスプレイやプリンタなどである。
504および504’は、本実施例上で動作するアプリケーションプログラム505,505’およびその処理に必要なデータを一時的に記憶するための記憶装置である。506,506’はそれぞれ、501から504および501’から504’までの構成要素を結合する計算機バスであり、これらはワークステーション507,507’を構成する。アプリケーションプログラム505,505’はそれぞれワークステーション507,507’上で動作している。
508は、実行可能なプログラムコードを記憶し管理するためのプログラム管理データベースである。プログラム管理データベース508はワークステーション507ないし507’上あるいは、別の同様な構造をもつコンピュータ上で動作する。
【0028】
本実施例においては、本発明の骨子であるデータとプログラムコードの共有機構は、プログラム管理データベース508とアプリケーションプログラム505,505’にリンクされたインタフェースライブラリ(後述)によって提供される。
【0029】
また、本実施例においては、プログラム管理データベース508と同様なプログラム管理データベースが同時に複数存在してよい。ただしこの場合も、あるプログラムコードが複数の異なるプログラム管理データベースによって管理されることは禁止する。
最後の509,509’はそれぞれ、プログラム管理データベース508とアプリケーションプログラム505,505’を結合し、プログラムコードの共有を可能にする手段である”Injection機構”をあらわす。コンピュータネットワークおよびその上で実現されたプロセス間通信機構を利用して実現することが可能である。
【0030】
つぎに図6は、図5のシステム上で動作するアプリケーションプログラム505およびプログラム管理データベース508の間でおこなわれる処理をあらわしたものである。以降の説明は主にこの図にもとづいて行う。アプリケーションプログラム505’とプログラム管理データベース508間でも同様な処理がおこなわれる。
同図において、
601は図5における、アプリケーションプログラム505が実行する処理を表現するアプリケーションプロセスである。その内部に存在する602はアプリケーションプロセス601の主手続きである。また、603はアプリケーションプロセス601からプログラム管理データベースへのインタフェースおよびInjection処理における認証手続き等の機構を提供するライブラリである。
604は図6においてプログラム管理データベース505をあらわし、プログラムコードを記憶・保存するハードディスク605とプログラムコードの検索・管理をおこない、本実施例においてInjection処理を担うコード管理プロセス 606によって構成される。
607は前の実施例と同様に、プログラム管理データベース604が、アプリケーションプロセス601に提供するプログラムコードを保持する共有メモリである。
また、608,609はそれぞれ、あるアプリケーションプロセス601に付加されるプログラムコードの、ハードディスク605上および共有メモリ607上でのデータ形式を表現している。
本実施例では、データ608からプログラムコード609への変換は、アプリケーションプロセス601へのリンクによっておこなわれる手続き呼びだし等の参照先解決が主なものである。このため、本実施例においては、参照関係が各アプリケーションプログラムに依存するようなプログラムコードでは、ハードディスク上のデータから2つ以上のプログラムコードイメージが共有メモリ上に生成される場合が発生する。
このようにして、アプリケーションプロセス601にリンクされたプログラムコード609は、主手続き602から呼びだされ、実行される。
本実施例においても、Injection機構は先に述べた実施例と同様にして実現されるが、
Injection実行時における認証処理が異なっている。
本実施例では、最も現在の状況に適したプログラムコードに認証が与えられる。すなわち、プログラムコードの性格をあらわす実行スピードとメモリ消費量のオーダの2つのパラメタを適当な評価関数にあたえた結果によって、現在の状況に適しているか否かを評価する。
もちろん、すべてのプログラムコードは、プログラム管理データベースに記憶された時に、プログラムコードの性格をあらわすこれらのパラメタが与えられる。また、Injectされるプログラムコードにこれらのパラメタで優劣がつけられない場合に対処するため、プログラム管理データベース間での優先順位が決まっており、その優先順位に従ってInjectionが認証されるプログラムコードが決定される。プログラム管理データベース間での優先順位を決定するパラメタとしては、ネットワーク上での遠近を使用し、最もネットワーク上で近いところにあるプログラムコードが認証される。
さて、上記構成に基づいた本実施例の動作を図7a,7b,7cのフローチャートを用いて説明する。
各フローチャートはそれぞれ、主手続き602,コード管理プロセス606,およびサポートライブラリインタフェース603内のInjection認証手続きの処理の流れをあらわしている。各フローチャートは見かけ上独立しているが、あるフローチャートのonestepが、他のフローチャートの処理を開始させるというかたちで、互いに関連している。
また、これらの処理の流れは、プロセス内に同時に複数存在することができる。本実施例においても、コード管理プロセス606がアプリケーションプロセス601より先に起動されているとして説明する。
(S7b01) アプリケーションプロセス601はその起動後にInjectionが受け入れ可能である事を宣言する。ただし、この処理は、サポートライブラリ603によって自動的に実行される。
(S7a01) コード管理プロセス604は、アプリケーションプロセス601のInjection受け入れ可能宣言を検知し、Injection受け入れ先リストにアプリケーションプロセス601を登録する。
(S7a02) コード管理プロセス604は、逆にアプリケーションプロセス601に対してacknowledgeメッセージをかえす。
(S7b02) アプリケーションプロセス601は、コード管理プロセス604のacknowledgeメッセージを検知し、Injection候補リストにコード管理プロセス604を登録しておく。
その後の処理で、アプリケーションプロセス601内でのある手続き呼び出しが実行されると(S7b03)、
(S7a03) この手続き呼び出しはInjection開始イベント701として、コード管理プロセス606に検知される。この時点で、アプリケーションプロセス601の処理は一時的に中断される。
(S7a04) コード管理プロセス606はイベント701を検知すると、イベント701に付加されている情報をもとに(この情報は、主手続き602による手続き呼び出しに関するものであり、要求される手続きを一意に決定するために必要な手続き名,ID番号等を含んでいる。)、必要なプログラムコード608をハードディスク605から取り出す。取り出された、プログラムコード608はそのまま共有メモリ607上に書き込まれる。
この処理において、ハードディスク605中には、同じ入力に対して同じ結果をかえす等価なプログラムコードが複数存在しうる。たとえば、さまざまな種類のCPUに対応するために、各CPU用のバイナリが管理していたり、同一の意味をもつが、実行効率が異なるインプリメントがいくつか存在するような場合である。
この様な場合においても、イベント701に付加されている情報をもとに、要求されるコードを一意に決定できるものとする。
(S7a05) コード管理プロセス606はアプリケーションプロセス601に対し取り出したプログラムコード608のInjection認証要求を発行する。
認証要求にはInjectionの発生とInjectされるプログラムコードに関する情報(あるいはInjectされるプログラムコード608自身)が含まれている。この情報は、Injectionの可・不可の判定や、複数のInjection要求の衝突が発生した場合の調整に使用される。
また、この時点でコード処理プロセス604における601に対する処理は認証が終了するまで中断される。ただし、他のアプリケーションプロセスに対するInjection処理には影響しない。
(S7c01) サポートライブラリ603内の認証手続きは、Injection認証要求を検知する。本実施例においてはさらに、Injectionの対象となるプログラムコードを提供することのできるすべてのプログラム管理データベースからの認証要求を集める。(Injectionの対象となるプログラムコードを提供できないプログラム管理データベースからも、その旨を通知する”空認証要求”が発行されるものとする。)
(S7c02) 各Injection要求のなかからの認証を許すものを1つだけ選択する。
(S7c03) 選ばれたプログラム管理データベースに認証がおこなわれたことを通知し、他のプログラム管理データベースには認証が拒否されたことを通知する。ここではプログラム管理データベース602が認証されたとして説明を続ける。
すべての要求が認証できない場合は、サポートライブラリ603が例外処理をおこなう。
(S7a06,S6a07) プログラムコード608はアプリケーションプログラム601に動的にリンクされ、共有メモリ上でのプログラムコードイメージ609に変換される。
(S7a07) プログラムコード609がアプリケーションプログラム601にInjectされたことを通知する。
(S7b04) アプリケーションプログラム601は中断されていた手続き呼び出しを再開し、Injectされたプログラムコード609が実行される。
以上のようなInjectionの利用により、本実施例では以下のような効果を得ることが出来る。
1. 複数のコード管理プログラムから提供されたコードから最適なものをアプリケーションプログラムが選択出来るため、一定時間内に処理の終了を要求される,使用メモリの大きさが制限されている,エラー時に大がかりな例外処理をおこなう必要がある
など、状況によって変化する要求を満たす事が可能となる。
2. コード管理プログラムとアプリケーションプログラムの間のやりとりは、ライブラリインタフェース603によって自動的に実現されるので、アプリケーションプログラム作成者には負担がほとんどなく、またコード管理プログラム側の変更がアプリケーションプログラムにおよぼす影響を最小限に押さえることができる。
また、本実施例のバリエーションとして、実行可能コードではなくプログラムソースをコード管理プログラムで管理する事も考えられる。この場合、必要な時にコンパイルないし解釈実行することにより、さまざまなCPUに対応することが可能である。
【0031】
【発明の効果】
以上説明したように、本発明によれば、複数のプロセスが協調して処理を行なうシステムにおいて、各プロセスのプログラムを複雑化させることなく、各プロセスに適切な処理を実行させることができるという効果がある。
【図面の簡単な説明】
【図1】本発明におけるInjection機構の概念図、
【図2】本発明の実施例1であるマルチメディアデータ検索システムのシステム構成図、
【図3】マルチメディアデータ検索システムにおけるInjection処理を説明するための概略図、
【図4】マルチメディアデータ検索システムにおけるInjection処理説明するためのフローチャート
【図5】本発明の実施例2であるプログラムコード共有システムのシステム構成図、
【図6】プログラムコード共有システムにおけるInjection処理を説明するための概略図、
【図7】プログラムコード共有システムにおけるInjection処理説明するためのフローチャートである。
【符号の説明】
101 Injectionの対象となっているプログラムB
101’ Injection終了後のプログラムB
102 Injection処理をおこなうプログラムA
103 プログラムBに注入されるデータ
103’ プログラムBに注入されたデータ
Claims (8)
- それぞれ異なる第1のプログラムを実行する複数の第1のプロセスと第2のプログラムを実行する第2のプロセスとが協調して処理を行なうシステムにおいて、
前記複数の第1のプロセスが前記第2のプロセスに対してプログラムコード及びデータの追加を要求し、
前記第2のプロセスが複数の前記第1のプロセスよりの追加の要求を受け取ると、要求された追加を許可する1つの前記第1のプロセスを選択して、当該選択したプロセスに許可を通知するとともに、他の前記第1のプロセスに対して認証拒否を通知し、
前記第1のプロセスが、前記第2のプロセスより許可の通知を受けると、前記第2のプロセスに対して前記プログラムコード及びデータの追加を実行することを特徴とするプログラム制御方法。 - 前記第1及び第2のプロセスが、追加された前記プログラムコード及びデータを共有メモリを用いて共有することを特徴とする請求項1に記載のプログラム制御方法。
- 前記第2のプロセスが、複数の前記第1のプロセスのそれぞれが追加を要求するプログラムコードのパラメータを評価して、認証許可を通知する1つの前記第1のプロセスを決定することを特徴とする請求項1に記載のプログラム制御方法。
- 前記第1のプロセスが前記第2のプロセスに対して、追加された前記プログラムコードを実行させることにより、所定の動作を強制することを特徴とする請求項1に記載のプログラム制御方法。
- 前記プログラムコード及びデータの追加にともなって、前記第1及び第2のプロセス間で行なわれる処理のプロトコルが規定されていることを特徴とする請求項1に記載のプログラム制御方法。
- 前記第2のプロセスが複数のプログラムコードの並行実行を制御可能であることを特徴とする請求項1に記載のプログラム制御方法。
- 前記第1のプロセスから前記第2のプロセスに対する前記プログラムコード及びデータの追加が随時実行可能であることを特徴とする請求項1に記載のプログラム制御方法。
- 前記第1及び第2のプロセスが、ネットワークを介して接続された異なる計算機上でそれぞれ実行されることを特徴とする請求項1に記載のプログラム制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12617093A JP3553991B2 (ja) | 1993-05-27 | 1993-05-27 | プログラム制御方法 |
US08/812,080 US5894573A (en) | 1993-05-27 | 1997-03-06 | Program controlling method having transfer of code and data among programs and apparatus therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP12617093A JP3553991B2 (ja) | 1993-05-27 | 1993-05-27 | プログラム制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06337794A JPH06337794A (ja) | 1994-12-06 |
JP3553991B2 true JP3553991B2 (ja) | 2004-08-11 |
Family
ID=14928420
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP12617093A Expired - Fee Related JP3553991B2 (ja) | 1993-05-27 | 1993-05-27 | プログラム制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5894573A (ja) |
JP (1) | JP3553991B2 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08153076A (ja) * | 1994-11-30 | 1996-06-11 | Canon Inc | 協調作業支援方法及びその装置 |
DE19732011A1 (de) * | 1997-07-25 | 1999-01-28 | Abb Patent Gmbh | Verfahren zum ortstransparenten Austausch von Prozeßdaten |
JP3254434B2 (ja) * | 1999-04-13 | 2002-02-04 | 三菱電機株式会社 | データ通信装置 |
US6742141B1 (en) | 1999-05-10 | 2004-05-25 | Handsfree Networks, Inc. | System for automated problem detection, diagnosis, and resolution in a software driven system |
AU4833600A (en) * | 1999-05-10 | 2000-11-21 | Handsfree Networks, Inc. | System for automated problem detection, diagnosis, and resolution in a software driven system |
US7003781B1 (en) * | 2000-05-05 | 2006-02-21 | Bristol Technology Inc. | Method and apparatus for correlation of events in a distributed multi-system computing environment |
US20020034964A1 (en) * | 2000-09-05 | 2002-03-21 | Yuichi Bannai | Personal information terminal equipped with enlarging optical system |
US7113168B2 (en) | 2000-09-12 | 2006-09-26 | Canon Kabushiki Kaisha | Compact information terminal apparatus, method for controlling such apparatus and medium |
JP2002140221A (ja) * | 2000-11-02 | 2002-05-17 | Canon Inc | 情報処理装置、情報処理方法、及び、記憶媒体 |
US20020053000A1 (en) * | 2000-11-02 | 2002-05-02 | Masanori Wakai | Information processing apparatus and method, and computer readable memory |
JP2002140193A (ja) * | 2000-11-02 | 2002-05-17 | Canon Inc | 情報処理装置及びその方法、コンピュータ可読メモリ |
US20040019672A1 (en) | 2002-04-10 | 2004-01-29 | Saumitra Das | Method and system for managing computer systems |
US7849362B2 (en) * | 2005-12-09 | 2010-12-07 | International Business Machines Corporation | Method and system of coherent design verification of inter-cluster interactions |
JP5173475B2 (ja) * | 2008-02-19 | 2013-04-03 | キヤノン株式会社 | リモートコントローラ装置、その制御方法及びプログラム |
JP2018051799A (ja) | 2016-09-26 | 2018-04-05 | 富士ゼロックス株式会社 | 画像形成装置及びプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4814971A (en) * | 1985-09-11 | 1989-03-21 | Texas Instruments Incorporated | Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state |
US5247678A (en) * | 1989-10-12 | 1993-09-21 | Texas Instruments Incorporated | Load time linker for software used with a multiprocessor system |
US5426747A (en) * | 1991-03-22 | 1995-06-20 | Object Design, Inc. | Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system |
US5359721A (en) * | 1991-12-18 | 1994-10-25 | Sun Microsystems, Inc. | Non-supervisor mode cross address space dynamic linking |
US5475840A (en) * | 1993-04-13 | 1995-12-12 | Sun Microsystems, Inc. | High performance dynamic linking through caching |
-
1993
- 1993-05-27 JP JP12617093A patent/JP3553991B2/ja not_active Expired - Fee Related
-
1997
- 1997-03-06 US US08/812,080 patent/US5894573A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5894573A (en) | 1999-04-13 |
JPH06337794A (ja) | 1994-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3553991B2 (ja) | プログラム制御方法 | |
US5539909A (en) | Negotiation method for calling procedures located within other objects without knowledge of their calling syntax | |
US7000220B1 (en) | Networked software development environment allowing simultaneous clients with combined run mode and design mode | |
EP0472279B1 (en) | Apparatus for implementing data bases to provide object-oriented invocation of applications | |
US5341478A (en) | Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment | |
US5440744A (en) | Methods and apparatus for implementing server functions in a distributed heterogeneous environment | |
EP0474339B1 (en) | Methods and apparatus for providing a client interface to an object-oriented invocation of an application | |
US5748959A (en) | Method of conducting asynchronous distributed collective operations | |
US6026428A (en) | Object oriented thread context manager, method and computer program product for object oriented thread context management | |
US5872971A (en) | Data processing systems and methods providing interoperability between data processing resources | |
JPH06314227A (ja) | バージョン化オブジェクトに対するロッキング機構 | |
US6189007B1 (en) | Method and apparatus for conducting a high performance locking facility in a loosely coupled environment | |
JPH11252209A (ja) | ネットワーク管理システム | |
JPH0683634A (ja) | 障害検出方法 | |
WO1997014091A1 (en) | Object-oriented method maintenance mechanism that does not require cessation of the computer system | |
US6253274B1 (en) | Apparatus for a high performance locking facility | |
US7689999B2 (en) | Sharing dynamically changing resources in software systems | |
US20030009601A1 (en) | Program execution method in an environment of a plurality of computers | |
EP0767434A2 (en) | System and method for adding object services to a binary class in an object oriented system | |
JP3586943B2 (ja) | プログラムロード装置と方法 | |
CN116339920B (zh) | 基于云平台的信息处理方法、装置、设备及介质 | |
JP4071678B2 (ja) | バッチアプリケーション実行制御方法,バッチアプリケーション実行制御装置およびバッチアプリケーション実行制御プログラム | |
CN116980437A (zh) | 一种深度学习异构计算系统 | |
JP2005071158A (ja) | ファイル排他制御方法 | |
JPH113231A (ja) | ソフトウェア処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040127 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040329 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20040420 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040506 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090514 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100514 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100514 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110514 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120514 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120514 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130514 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |