トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 プログラム処理装置
【発明者】 【氏名】宮下 欣也

【要約】 【課題】ソースプログラムを逐次読み込み、コンパイルと実行を並行して行うに際して、ハードウエアの使用状況を監視及び制御し、ソースプログラムの円滑な実行が可能となるプログラム処理装置を提供する。

【解決手段】コンピュータシステム3が、自己内のハードウエアの負荷状態を監視及び制御する負荷監視制御装置5を備える構成とする。
【特許請求の範囲】
【請求項1】 複数のコンポーネントから構成されるソースプログラムをマシンコードに変換して実行するに際し、前記ソースプログラムに含まれる関数位置まで該ソースプログラムをコンパイル、実行した後、この関数の属する前記コンポーネント及びこの関数に依存している前記コンポーネントを取得し、この関数の実行に必要な部分をコンパイル、リンクして再実行するコンピュータシステムと、このコンピュータシステムとバスを介して接続され、前記ソースプログラムに含まれる関数の属するコンポーネント及びこの関数に依存しているコンポーネントを格納し、前記コンピュータシステムの要求により関数の属するコンポーネント及びこの関数に依存しているコンポーネントを前記コンピュータシステムに与えるデータベースとを有するプログラム処理装置であって、前記コンピュータシステムが、自己内のハードウエアの負荷状態を監視及び制御する負荷監視制御装置を備えることを特徴とするプログラム処理装置。
【請求項2】 請求項1記載のプログラム処理装置において、前記負荷監視制御装置が、前記コンピュータシステムの前記ハードウエアが過負荷状態にあると判断した場合に、前記コンピュータシステムからの前記データベースへの前記関数の属するコンポーネント及びこの関数に依存しているコンポーネントの要求を停止させることを特徴とするプログラム処理装置。
【請求項3】 請求項1又は2記載のプログラム処理装置において、前記負荷監視制御装置が、前記コンピュータシステム内の前記ハードウエアの負荷履歴を保存する手段と、前記関数の受け取り時刻と前記負荷履歴とから負荷の大きい関数を推定する推定手段と、前記ハードウエアの負荷状態と前記負荷の大きい関数の存在から過負荷状態となることを予測する判定手段と、この判断手段からの情報を受けて前記コンピュータシステムからの前記データベースへの前記関数の属するコンポーネント及びこの関数に依存しているコンポーネントの要求を停止させる負荷制御手段とを備えることを特徴とするプログラム処理装置。
【請求項4】 請求項2記載のプログラム処理装置において、前記負荷監視制御装置が、前記コンピュータシステムの前記ハードウエアが過負荷状態にあると判断した場合に、前記データベースから受け取って未処理の前記コンポーネントを破棄し、該破棄したコンポーネントの再要求信号を作成して保存することを特徴とするプログラム処理装置。
【請求項5】 請求項1〜4いずれかに記載のプログラム処理装置において、前記コンピュータシステムが、複数の異なるソースプログラムを並行してマシンコードに変換することを特徴とするプログラム処理装置。
【請求項6】 請求項1〜5いずれかに記載のプログラム処理装置において、前記コンピュータシステムが、ソースプログラム毎にそのソースプログラムのコンポーネント間の依存関係を管理し、該依存関係の変更を前記コンピュータシステム上のみで保存するコンポーネント依存関係情報テーブルを備え、前記ソースプログラの全てを実行した後、前記データベースに対してコンポーネント依存関係情報テーブルを反映させることができることを特徴とするプログラム処理装置。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、プログラム処理装置に関し、特に、ソースプログラムを逐次読み込み、コンパイルと実行をほぼ同時に並行して行うプログラム処理装置に関する。
【0002】
【従来の技術】従来より、ソースプログラムの実行処理方法において、ソースプログラム実行前にソースプログラムの全ソースプログラムをコンパイル、リンクし実行するコンパイラと、ソースプログラムをインタプリタしながら実行するインタプリタとが良く知られている。
【0003】これに対し、最近では、これらのコンパイラとインタプリタの中間の方法が提案されている(例えば、特開平9−282174号公報)。この方法は、ソースプログラムの実行に必要となったソースコードを逐次読み込み、コンパイルと実行をほぼ同時に並行して行う。
【0004】
【発明が解決しようとする課題】しかしながら、特開平9−282174号公報に開示された発明によれば、実行コードが増加して実行ファイルのサイズが過剰となったり、負荷そのものが大きくなるため、ソースプログラムを処理するコンピュータシステムのハードウエアに大きな負荷がかかる結果、処理が停止するおそれがあり、ソースプログラム処理が円滑にできないおそれがある。
【0005】本発明は、上記事情に鑑みてなされたものであり、ソースプログラムを逐次読み込み、コンパイルと実行を並行して行うに際して、ハードウエアの使用状況を監視及び制御し、ソースプログラムの円滑な実行が可能となるプログラム処理装置を提供することを目的とする。
【0006】
【課題を解決するための手段】上記目的を達成するため、請求項1記載のプログラム処理装置は、複数のコンポーネントから構成されるソースプログラムをマシンコードに変換して実行するに際し、前記ソースプログラムに含まれる関数の位置まで該ソースプログラムをコンパイル、実行した後、この関数の属する前記コンポーネント及びこの関数に依存している前記コンポーネントを取得し、この関数の実行に必要な部分をコンパイル、リンクして再実行するコンピュータシステムと、このコンピュータシステムとバスを介して接続され、前記ソースプログラムに含まれる関数の属するコンポーネント及びこの関数に依存しているコンポーネントを格納し、前記コンピュータシステムの要求により関数の属するコンポーネント及びこの関数に依存しているコンポーネントを前記コンピュータシステムに与えるデータベースとを有するプログラム処理装置であって、前記コンピュータシステムが、自己内のハードウエアの負荷状態を監視及び制御する負荷監視制御装置を備える構成としてある。
【0007】このような構成の発明によれば、ソースプログラムを逐次読み込み、コンパイルと実行を並行して行うに際して、プログラム処理を行うコンピュータシステムが、自己内のハードウエアの負荷状態を監視及び制御する負荷監視制御装置を備えるため、ソースプログラムの円滑な実行が可能となる。
【0008】請求項2記載のプログラム処理装置は、請求項1記載のプログラム処理装置において、前記負荷監視制御装置が、前記コンピュータシステムの前記ハードウエアが過負荷状態にあると判断した場合に、前記コンピュータシステムからの前記データベースへの前記関数の属するコンポーネント及びこの関数に依存しているコンポーネントの要求を停止させる構成としてある。
【0009】このような構成の発明によれば、負荷監視制御装置がプログラム処理装置を構成するデータベースに対するコンポーネント要求を停止するため、プログラム処理を行うコンピュータシステムのハードウエアの負荷を減らし、ソースプログラムの円滑な実行が可能となる。
【0010】請求項3記載のプログラム処理装置は、請求項1又は2記載のプログラム処理装置において、前記負荷監視制御装置が、前記コンピュータシステム内の前記ハードウエアの負荷履歴を保存する手段と、前記関数の受け取り時刻と前記負荷履歴とから負荷の大きい関数を推定する推定手段と、前記ハードウエアの負荷状態と前記負荷の大きい関数の存在から過負荷状態となることを予測する判定手段と、この判断手段からの情報を受けて前記コンピュータシステムからの前記データベースへの前記関数の属するコンポーネント及びこの関数に依存しているコンポーネントの要求を停止させる負荷制御手段とを備える構成としてある。
【0011】このような構成の発明によれば、予め負荷の大きな関数を推定しておき、受け取った関数と推定した負荷の大きな関数とが一致し、かつその関数によりハードウエアの負荷が所定より大きくなることを予め予測することができるため、コンピュータシステムが判断してハードウエアの使用状況に応じた処理をすることができる。
【0012】請求項4記載のプログラム処理装置は、請求項2記載のプログラム処理装置において、前記負荷監視制御装置が、前記コンピュータシステムの前記ハードウエアが過負荷状態にあると判断した場合に、前記データベースから受け取って未処理の前記コンポーネントを破棄し、該破棄したコンポーネントの再要求信号を作成して保存する構成としてある。
【0013】このような構成の発明によれば、コンピュータシステムのハードウエアの負荷を軽減してソースプログラムの円滑な実行が可能となる。
【0014】請求項5記載のプログラム処理装置は、請求項1〜4いずれかに記載のプログラム処理装置において、前記コンピュータシステムが、複数の異なるソースプログラムを並行してマシンコードに変換する構成としてある。
【0015】このような構成の発明によれば、ソースプログラムを逐次読み込み、コンパイルと実行を並行して行うプログラム処理では、関数をデータベースに問い合わせる度に、実行を一旦中断する必要があるが、この場合でも、複数のプログラム処理を並行して行うことで、一つのプログラムの処理が中断している間に他のプログラムを処理できるので、全体の処理速度が向上する。
【0016】請求項6記載のプログラム処理装置は、請求項1〜5いずれかに記載のプログラム処理装置において、前記コンピュータシステムが、ソースプログラム毎にそのソースプログラムのコンポーネント間の依存関係を管理し、該依存関係の変更を前記コンピュータシステム上のみで保存するコンポーネント依存関係情報テーブルを備え、前記ソースプログラの全てを実行した後、前記データベースに対してコンポーネント依存関係情報テーブルを反映させることができる構成としてある。
【0017】このような構成の発明によれば、プログラム処理の実行が終わったときにコンピュータシステムに記録されたコンポーネント依存性をデータベースに反映させることができるので、逐次データベースのコンポーネント依存性を変更する場合に比べて、ハードウエアの負荷が少なくて済む。
【0018】
【発明の実施の形態】以下、本発明のプログラム処理装置の一実施形態について、図面を参照しながら説明する。図1及び図2は、本発明の実施形態にかかるプログラム処理装置を示す構成図である。このプログラム処理装置1は、異なる複数のソースプログラム(図面ではprog1,prog2,prog3)を並行処理するコンピュータシステムであるサーバ2と、ソースプログラムに含まれる関数のコンポーネント(図面ではA,B,C,D,E,・・)を供給するデータベース3とがバス4によって接続されたネットワークである。
【0019】サーバ2は、図示していないが、ソースコードをオブジェクトコードに変換するコンパイルと、変換されたオブジェクトコードを連結して実行可能なマシンコードを作るリンカとを有する。また、データベース3に関数を問い合わせる関数問い合わせフレームを格納する関数問い合わせキューとデータベース3から転送されたデータベース転送データフレームを格納するデータベース転送データキューとを備える。サーバ2は、ソースプログラム毎に関数とその関数が所属するコンポーネント及びその関数に依存しているコンポーネントの関係を格納するコンポーネント依存関係情報テーブル10を有し、ソースプログラム毎に管理している。また、このコンポーネント依存関係情報テーブルを検索するコンポーネント検索機能を有する。更に、データベース3から取得したコンポーネントを格納する記憶手段11を有する。
【0020】サーバ2が実行するソースプログラムは、全てデータベース3に格納されている関数を含んでいる。サーバ2は、ソースプログラムを関数の位置までコンパイル、実行し、ここで一時処理を中断し、その関数をサーバ2内のコンポーネント依存関係情報テーブル10に問い合わせ、関数がここに記述されている場合は、関数の属するコンポーネントから関数の実行に必要な分だけコンパイル、リンクを行い、実行を再開する。コンポーネント依存関係情報テーブル10に関数が記述されていなかったときは、その関数をデータベース3に問い合わせる。
【0021】データベース3は、サーバ2によって登録可能なコンポーネント依存関係情報テーブルをプログラム毎に有し、一つのデータ依存関係を選択する。この場合、前回実行に必要としたコンポーネント依存テーブルをプログラムインデックスによってユーザが指定することができ、また、これをデータベースに登録、削除できるようになっている。なお、プログラム実行時に登録可能なコンポーネントをもたない(つまり、コンポーネントと関数のデータのみ)とき、プログラムを実行すると、サーバとデータベースとの問い合わせ回数が大きいので、予め1つの依存関係を用意して、問い合わせ回数を減少させることが好ましい。サーバ2からの関数の問い合わせに対して、選択した依存関係に基づいてこの関数の属するコンポーネント及びこの時点でこの関数に依存しているコンポーネントをサーバに転送する。サーバ2は、データベース3から渡された1つ又は複数のコンポーネントの関数に必要な部分についてコンパイル、リンクして実行を再開する。
【0022】なお、データベース3は、図2に示すように、全体のデータの転送量を下げるために、転送されたコンポーネントには転送済みマークSが付けられ、それ以外のコンポーネントのみが転送可能になっている。サーバ2のコンポーネント検索機能が故障した場合、実行する毎に同一のコンポーネントがデータベースに対して要求されデータ転送を行う結果、ディスクへの負荷がかかるようになるが、データ転送の回数を制限することで、過負荷を防止している。
【0023】図3に、サーバ2上のコンポーネント依存関係情報テーブルの具体的な例を示す。図3に示すように、コンポーネント依存関係情報テーブルは、関数インデックス、関数名、その関数が所属するコンポーネント及びこの関数に依存しているコンポーネントが関係づけられている。関数インデックスはデータベースに記憶される関数の数が多くなると、対象となる関数を検索する必要が生じた場合に必要となり、データベースによって与えられる。
【0024】サーバ2は、データベース3から転送されたコンポーネントを記憶手段11に保存すると共に、実行時に変更された関数に対するコンポーネント間の依存関係についてはコンポーネント依存関係情報テーブル10に保存する。
【0025】データベース3からコンポーネントが次々と転送され、ソースプログラムを順次コンパイルするため、マシンコードが大きくなり、その分の処理も増加することから、本発明においては、サーバ2のハードウエア資源を監視し、制御する負荷監視制御装置5をサーバ2に設けている。負荷監視制御装置5は、データベース3から転送されてくる関数の属するコンポーネント情報の獲得を行うと共に、コンパイル、リンク、実行に関するサーバ2のハードウエアの使用量の測定を行い、これらを解析して関数をデータベースへ問い合わせるかどうか、更にはデータベースからコンポーネントを含むデータの転送を受けるかどうかを決定し、ハードウエアの負荷を軽減するように制御する。
【0026】図6は、負荷監視制御装置5の構成を示すブロック図である。負荷監視制御装置5は、サーバのハードウエア21に対して、ディスクの使用量を計測するディスク使用量計測手段51、メモリの使用量を計測するメモリ使用量計測手段52、CPUの使用率を計測するCPU使用率計測手段53を介して監視アプリケーション54と接続され、監視アプリケーション54によって、ハードウエア内21の資源の使用量が一定時間毎に監視される。監視アプリケーション54の情報は負荷検知処理部6に送られる。また、データベース3から転送されてきた関数についての情報は、サーバ2のハードウエア21からデータベース転送データ解析部55に渡される。
【0027】データベース転送データ解析部55は、必要な情報を抽出した後、関数に関する情報を負荷検知処理部6へ渡す。負荷検知処理部6は、受け取ったデータベースから転送されたデータの適当な部分とサーバのハードウエア資源消費情報を合成してデータを作成し、このデータから判断して、データベースへの関数の問い合わせを行うかどうか、又はデータベースからのコンポーネントの受け取りを行うかどうかを決定する。
【0028】図7は、負荷検知処理部6の構成を示すブロック図である。負荷検知処理部6は、負荷情報保存部61と負荷判断部62と負荷制御部63とから構成されている。
【0029】図8は、負荷情報保存部61の構成を示すブロック図である。負荷情報保存部61は、サーバのハードウエア資源の消費状況を監視する監視アプリケーション54から報告されたデータを保存する負荷履歴保存部611と、データベース転送データ解析部55から渡された転送データから関数名やその関数が属するコンポーネントを抽出したデータを保存するデータベース送信記録保存部612と、これらの負荷履歴保存部611から送られてくる負荷履歴データとデータベース送信記録保存部612から送られてくる編集データとを合成する負荷データ合成部613とから構成される。
【0030】図9は、図7に示した負荷判断部62の構成を示すブロック図である。この負荷判断部62は、負荷情報保存部61で作られたコールされる関数と負荷の関係を示す合成データから、負荷が上昇した原因を割り出す負荷原因推定手段621と、この推定結果を負荷原因関数リストとして記憶する負荷原因記憶手段613と、サーバのデータベースに対するアクセスを制御するかどうかを判断する負荷制御判定手段623から構成される。
【0031】図10は、負荷制御部63の構成を示すブロック図である。この負荷制御部63は、負荷判断部62で負荷制御が必要であるときに出されるフラグを発見する負荷制御感知手段631と、サーバ2のデータベース3に対するアクセスを実際に制御する負荷制御実行手段632とから構成される。負荷制御実行手段632は、負荷原因記憶手段622に記憶されている負荷原因関数リストを参照して過負荷になることを予想するか、あるいは過負荷のフラグが出されていることを受けて、関数をデータベースに問い合わせるための関数問い合わせキューにエントリされている関数問い合わせフレーム、及びデータベース転送データキューに返されるデータベース転送データフレームを制御する。
【0032】以上に示した本実施形態のプログラム処理装置の動作について説明する。図1に示したサーバ2は、異なる複数のユーザプログラムに対して、コンパイルと実行を並行して行う。
【0033】これらのユーザプログラムは、複数のコンポーネントから構成され、これらのコンポーネントには関数が含まれる。サーバ2がソースプログラム実行命令時にこれらの関数に出会うと、まず、サーバ2内にあるソースプログラム毎に管理されているコンポーネント依存関係情報テーブル10を調べる。コンポーネント依存関係情報テーブル10に関数が存在しなければ、関数問い合わせデータフレームによって、関数問い合わせキューからデータベース3に関数を問い合わせる。データベース3側では、プログラムインデックスからユーザが指定したコンポーネント依存関係情報テーブルがこの関数の属するコンポーネント、及びこの時点でこの関数について依存関係にあるコンポーネントを調べ、データベース転送フレームによってこれをサーバ2に転送する。サーバ2は、データベース転送データキューからこれを取得する。
【0034】サーバ2が関数の属するコンポーネントを獲得すると、この関数が実行に必要とされる分のソースコードをコンパイルして、それまでに処理されたユーザプログラムのオブジェクトプログラムとリンクを行った後、再実行する。
【0035】例えば、図4に示すように、ユーザプログラムprog1をコンパイルして関数func1に出会うと、データベースへ問い合わせ、データベースのコンポーネント依存関係情報テーブルが所属コンポーネントAと関数func1に依存しているコンポーネントがB及びCをサーバに転送し、サーバはこれらのコンポーネントA,B,Cを取得し、必要な部分をコンパイル、リンクし、再実行する。その後、その関数についてのコンポーネント依存関係情報テーブルを新規作成又は更新する。
【0036】特に、サーバ2は、実行中に前回に行った処理と比較して関数に依存するコンポーネントに変更を生じた場合には、サーバ上にこのコンポーネントが存在している場合はこれを使用し、存在しない場合はデータベース3にこのコンポーネントを要求する。
【0037】例えば、図5に示すように、関数func2()が前回コールされたとき依存するコンポーネントとしてA、Cを有していたが、その後、何らかの理由によってこの関数の依存関係に変化が生じていたとする。関数func2()が最初にコールされたとき、サーバ2上のコンポーネント依存関係情報テーブルに基づいて依存コンポーネントA、Cからコンパイル、リンクを試みるが、実行に必要なコンポーネントが発見できないことになる。そこで、データベース3に関数を問い合わせると、データベース3は、コンポーネントAとコンポーネントXが実行に必要なコンポーネントであるという情報と、コンポーネントXをサーバに転送する。サーバ2はこれらを受け取った後、関数をコンパイル、リンクして実行し、更にコンポーネント依存関係情報テーブルを更新する。以上はコンポーネントXがサーバ2上に存在していない場合であるが、サーバ2上に存在している場合は、コンポーネントXを転送する必要はない。
【0038】本実施形態においては、サーバ2が管理している各コンポーネント間の依存関係は、プログラム実行中は、サーバ2上のコンポーネント依存関係情報テーブル10のみを変更して、データベース上のコンポーネント依存関係情報テーブル10は変更せず、プログラム終了後に、ユーザがデータベース3に対してこれを反映させることが可能になっている。
【0039】すなわち、プログラム終了後に、処理の過程で追加、修正を施された依存関係に対して、これを表示してユーザ側からこれらの依存関係の変更を許可するかどうかを選択できる手段が設けられている。
【0040】これらの依存関係の変更は全てプログラムを実行したサーバ2上で一時的に保存されており、依存関係の変更を許可した場合は、変更された依存関係に更新した後、これを保存する。許可しない場合は、この依存関係の変更を削除して変更以前の依存関係に戻す。これらの依存関係の変更についての許可、不許可はユーザ(サーバ)の側からデフォルト値で設定することも可能である。依存関係の変更を許可した場合は、サーバがデータベースに対してこの変更を通知する。データベースは、サーバから通知された依存関係の変更を受けて、排他処理により依存関係を更新する。これによって、これ以降に実行されるソースプログラムにおける関数の問い合わせは、この依存関係が基準となって行われる。
【0041】本発明では、このような2つ以上のソースプログラムを並行処理するプログラム処理装置における問題点、すなわち、実行コードが増加して実行ファイルのサイズが過剰となったり、負荷そのものが大きくなりすぎると処理が停止し、ソースプログラム処理が円滑に進められないおそれがある問題を解決するため、サーバ2に負荷監視制御装置5を設けている。以下、負荷監視制御装置によってサーバのハードウエアの負荷を判断する方法とデータベースへの問い合わせを制限する過程について説明する。
【0042】監視アプリケーション54は、ディスク使用量計測手段51、メモリ使用率計測手段52、CPU使用率計測手段53によって、一定時間毎にサーバのハードウエア資源5を監視している。この情報を受けた負荷検知処理部6の負荷履歴保存部611はその時の情報に基づいて、図11に示すような表を管理する。この表は、図11に示すように、例えばある時刻のCPU使用率、メモリ使用率、ディスク使用率が記録され、負荷履歴保存部611に負荷履歴リストとして管理される。
【0043】一方、データベース3から転送されてくるデータに関しては、次のように処理する。サーバ2のハードウエア21は、データベース3から転送されてきたコンポーネント情報をデータベース転送データ解析部55に渡し、データベース転送データ解析部55は、この情報を図12に示すように編集する。編集された転送データ表は、例えば、サーバが受信した時刻に転送されてきた関数名、その関数の所属するコンポーネント名、その関数に依存するコンポーネント名が記述され、データベース送信記録保持部612に保存する。
【0044】負荷データ合成部613は、図13に示すように、データベース送信記録保持部612からの編集済み転送データ表を、負荷履歴保存部611からの編集した時刻に最も近い負荷履歴リストの負荷履歴に対して合成する。このようにして作成されたデータは負荷判断部62に送られる。
【0045】負荷判断部62では、負荷原因推定手段621が、負荷データ合成部613で合成された編集済み転送データが連結された負荷履歴リストを走査し、監視アプリケーションで設定した負荷の限界増加割合に近い箇所を発見し、その原因を表現するフラグ、例えば、メモリ負荷急増のフラグを立てると共に、これから所定時間前までに負荷履歴リストに連結している転送データ表を探索する。
【0046】例えば、図14に示すように、メモリ使用率が急上昇したときの転送データ表を探索し、原因となった関数を推定する。もし、特徴的な関数が存在しない場合は、一定時間前までに実行していた複数の関数を負荷の大きい関数と見なすという手段を用いる。負荷の原因となった関数が特定できる場合は、負荷原因関数リストに登録する。負荷原因推定手段621は、負荷原因記憶手段622に負荷原因関数リストを登録する。この負荷原因関数リストの要素は、図15に示すように、例えばCPU使用率、メモリ使用率、ディスク使用率のいずれかを一定以上の割合で上昇させる関数名と、その関数のインデックス、関数が属するコンポーネント名、ハードウエアの負荷原因である。
【0047】また、負荷判断部62は、監視アプリケーション54から直接ディスク使用率、メモリ使用率、CPU使用率の情報を一定時間毎に取得し、これらのハードウエア資源のうちいずれかが過剰に使用されているかどうかの判断を行う。過剰に使用されていると判断したとき、負荷過剰フラグを立てる。
【0048】負荷制御部63の負荷制御感知手段631は、負荷過剰フラグが立っていることを確認して、負荷制御実行手段632に対して負荷過剰フラグが立っていることを知らせる。負荷制御実行手段632は、負荷過剰フラグが立っている情報が通知されている間は、全てのデータベース3への問い合わせを保留させる。また、図16に示すように、データベースからのデータ転送があった場合はこれを取り出してコンポーネントは削除して無効にし、再度この関数の関数問い合わせフレームを作成した後、これを関数問い合わせキューの先頭に付ける。後続がある場合はその順番で先頭から順次関数問い合わせフレームを挿入していく。これにより、サーバ2のハードウエア21の負荷が大きいときは、負荷を軽減させるように制御できる。ハードウエア21の負荷が少なくなったときは、負荷過剰フラグが解除され、関数問い合わせキューから挿入した関数問い合わせフレームをデータベース3に送り、データベース3から関数の取得を開始する。
【0049】また、本実施形態では、負荷過剰フラグが立っていない場合でも、負荷判断部62は、一定時間毎に負荷原因記憶手段622に管理されている負荷原因関数リストをプローブし、負荷原因関数リストの関数名(又は関数インデックス)とデータベース3に対する問い合わせキュー又は受信キューに記録されている関数名が一致しているかどうかをチェックしている。一致している場合は、現在の負荷の状況にこれらが原因となる処理による負荷分の上昇分を加算して、負荷過剰フラグが立つ領域に及ぶと判定した場合、準負荷制御フラグを立てる。
【0050】負荷制御実行手段632は、図17(a)に示すように、これらの関数の問い合わせを保留するためにこの関数問い合わせフレームを関数問い合わせキューの最後尾に移動させる。この関数問い合わせフレームしかない場合は、このフレームの転送を準負荷制御フラグが解除されるまで保留する。
【0051】また、図17(b)に示すように、データベースからの転送があった場合は、コンポーネントは削除してこのデータ部分を無効にし、更に関数の関数問い合わせフレームを作成し、問い合わせキューの最後尾にこのフレームを挿入する。これにより、サーバのハードウエアの過剰負荷を未然に防止して、ソースプログラム処理を円滑に行うことができる。
【0052】この実施形態のプログラム処理装置によれば、サーバは、異なる複数のユーザプログラムに対して、コンパイルと実行を並行して行う。これにより、関数の問い合わせの時間にも他のソースプログラムの処理が可能であり、全体の処理時間が短縮する。本実施例ではサーバのみを例示しているが、現実にはクライアントサーバ方式が一般的であり、この場合、複数のクライアントが同時にそれぞれプログラムを実行することになる。
【0053】ソースプログラムに存在する関数をデータベースに問い合わせた結果、その関数の属するコンポーネント及びその関数について依存関係にあるコンポーネントを全てサーバがロードした後、これをコンパイル、リンクして実行し、そのときに生じうるコンポーネント同士の依存関係の変更をサーバ上のみで行い、ソースプログラム終了後、この修正された依存関係をデータベースに反映するのかの判断をユーザに任せることができるので、柔軟なプログラミング環境の構築が可能である。
【0054】また、サーバ上で実行されるユーザソースプログラム単位でコンポーネント依存関係を管理するコンポーネント依存関係情報テーブルを設けているので、変更されたコンポーネントの依存関係が実行中の他のソースプログラムに影響することはない。
【0055】また、データベース上のコンポーネントは、依存関係がしばらくの間変化していなければ、複数のユーザがこれらのコンポーネントを共有して使用できる。
【0056】また、ソースプログラムを必要としたその後のソースプログラムの実行について一貫性が保たれるという利用も可能である。
【0057】更に、サーバ上の複数のソースプログラムの処理によってサーバのハードウエア資源がかなりの規模で消費されている場合に、データベースへの関数の問い合わせを保留したりデータベースからのコンポーネントを含むデータ転送を無効にしてもう一度データ転送を行わせることができる負荷監視制御装置を設けたことにより、サーバ上の負荷を軽減し、ソースプログラム処理の停止を未然に防止して複数の異なるソースプログラム処理を円滑に進めることができる。
【0058】なお、ユーザが誤って実行時に必要なコンポーネントを削除した場合、上述した実施形態では、転送済みマークが付けられたコンポーネントはサーバに転送されないことになる。そのため、プログラムの実行開始、終了はサーバがデータベースに対してフレームを送るようにして、プログラムの実行が開始されたことをデータベースに認識させる必要がある。これにより、サーバが該当するコンポーネントがサーバ上にないことを検知して、データベースからコンポーネントを転送させることが可能となる。
【0059】本実施形態では、サーバ、データベースがそれぞれ一つの場合で説明しているが、複数のサーバ、複数のデータベースであってもよい。
【0060】また、本実施形態では、サーバが複数のソースプログラムを処理するとしたが、これらのソースプログラムは、クライアントのエディタによって記述され、サーバが実行処理を行ったものでもよい。
【0061】
【発明の効果】本発明のプログラム処理装置によれば、ソースコードを逐次読み込み、コンパイルと実行をほぼ同時に並行して行うソースプログラムの実行処理に際し、ソースプログラムの実行処理を円滑化することができる。
【出願人】 【識別番号】000004237
【氏名又は名称】日本電気株式会社
【出願日】 平成10年(1998)5月8日
【代理人】 【弁理士】
【氏名又は名称】渡辺 喜平
【公開番号】 特開平11−327917
【公開日】 平成11年(1999)11月30日
【出願番号】 特願平10−126535