JP4962026B2 - プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム - Google Patents

プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム Download PDF

Info

Publication number
JP4962026B2
JP4962026B2 JP2007021403A JP2007021403A JP4962026B2 JP 4962026 B2 JP4962026 B2 JP 4962026B2 JP 2007021403 A JP2007021403 A JP 2007021403A JP 2007021403 A JP2007021403 A JP 2007021403A JP 4962026 B2 JP4962026 B2 JP 4962026B2
Authority
JP
Japan
Prior art keywords
function
control
controlled
library
user
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.)
Active
Application number
JP2007021403A
Other languages
English (en)
Other versions
JP2008186383A (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 JP2007021403A priority Critical patent/JP4962026B2/ja
Publication of JP2008186383A publication Critical patent/JP2008186383A/ja
Application granted granted Critical
Publication of JP4962026B2 publication Critical patent/JP4962026B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、OS(オペレーティングシステム)がプロセスを管理する計算機における、プロセス管理機能をもつユーザレベルプロセス制御装置、方法及びそのプログラムに関し、特にオペレーティングシステムを修正することなく、ユーザレベルの制御プロセスが、ユーザレベルの被制御プロセスを制御するユーザレベルのプロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラムに関する。
従来、複数のプログラムが動作する計算システムでは、プログラムはプロセスまたはスレッド(以下、単プロセスと記載した場合は、プロセスまたはスレッドを指すものとする)と呼ばれる実行単位で表される。当該複数のプログラムが動作する計算システムでは、適切にプロセスの動作を制御することが求められている。
例えば、リアルタイム処理を行っているプロセスがある場合、当該プロセスが優先的にCPUを利用するように制御することで、リアルタイムに処理を行うべきとの制約を満たすことができるようになる。また、他にもプロセス制御の方法としては各プロセスに対してのメモリ使用量の制御や利用可能なネットワーク帯域の制御などを行うことが挙げられる。
一般に、上記のような複数のプロセスが動く計算システムでは、OS(オペレーティングシステム)がプロセスを制御する。そのため、利用しているOSが持っているプロセス制御機能が、計算システム上で動作させるプロセス集合に対して必要なプロセス制御を行うことができない場合は充分に必要な性能を得ることができない。
例えば、OSのプロセス制御機能のひとつである、プロセスのCPUへの割り当てを決定するスケジューラが、特別なプロセス管理を行わず、全てのプロセスを均等にCPUへ割り当てるという制御を行う場合は、リアルタイム処理を行っているプロセスに十分なCPU利用時間を与えることができないという問題が生じる。
そのような場合の解決手段として、まずOSそのものを変更する方法が考えられる。そして具体的には、(1)要求性能を満たすようなプロセス制御が可能な、別のOSを用いる方法と、(2)現在利用しているOSを修正して機能拡張する方法、が考えられる。
ここで、上記(1)の例の実現のためにはリアルタイム処理に適したリアルタイムOSを導入することが挙げられる。しかし、一般にOSが異なる場合は、プログラムの互換性はないため、OSを変更して使用を継続するためにはプログラムを変更後のOSに対応できるように修正しなければならないという問題がある。
一方、(2)の方法については、OSの修正には専用の知識が必要であるという問題がある。更にそれに加えて、商用OSなどはソースコードの入手が不可能である場合が多い。
また、たとえソースコードの入手が可能であってもOSの修正を行った場合は、メーカサポートの対象外になるなどのサポート体制の問題などで、やはり変更を行うこと自体が困難である。
このようにOSの変更が困難な場合の解決手段として、ユーザレベルプロセス制御がある。ユーザレベルプロセス制御では、OS上で動作するユーザレベルのプロセスが制御プロセスとなり、その他のプロセスに対して制御を行う。この場合にはOSの変更は必要ない。
この場合、一般にOSはプロセス毎に属性を設定し、その属性に従ってプロセス制御を行う。また、OSはプロセスの属性をユーザレベルから変更するためのAPIを提供している。したがって、ユーザレベルの制御プロセスは、そのAPIを用いて被制御プロセスの属性を変更することによって、プロセス制御を行う。
特許文献1では、上述のようなプロセスの属性情報を用いてプロセス制御を行う技術について開示されている。
一方、特許文献2では、ユーザレベルのプロセス制御に関する技術が開示されている。同文献では、なかでもユーザレベルの制御プロセスによって、被制御プロセスのCPUへのスケジューリングを制御するユーザレベルプロセススケジューラについて述べられている。
特許文献2では、制御プロセスであるユーザレベルプロセススケジューラが、制御対象として登録されている複数の被制御プロセスに対して、そのプロセスの属性である優先度や実行可能/停止状態を変更する。ここで、例として当該OSのプロセススケジューラが、CPUを最高優先度のプロセスに対し優先的に割り当てるという動作をする場合を考える。
このようなCPUを特定の被制御プロセスに対し優先的に割り当てたいときは、そのプロセスの優先度を最高にし、それ以外の被制御プロセスの優先度を下げることによって、OSのプロセススケジューラが、当該最高優先度のプロセスをCPUに割り当てるように制御する。
特開平10−021099号公報 特開平9−54699号公報
上記のような、従来のユーザレベルプロセス制御の第一の問題点は、被制御プロセスが新たに子プロセスを生成した場合に、制御プロセスが当該生成された子プロセスを制御できないことである。
その理由は、制御プロセスは被制御プロセスが子プロセスを生成したことを知る機能を有していないためである。すなわち、プロセスの生成はOSが行い、生成されたプロセスのIDは親プロセスに直接通知される。つまり、OSや親プロセス以外のプロセスとは無関係に子プロセスの生成が行われる。
よって、制御プロセスは、被制御プロセスと親子関係がない以上、子プロセスが生成されたことを知る機能を持つような特別な場合をのぞき、子プロセスが生成されたことを知ることができない。そのため、制御プロセスは当該新たに生成された子プロセスに対してプロセス制御を行うための属性変更ができない。
そのため、プログラムが親プロセスとその子孫のプロセスからなる複数のプロセスから構成される場合であっても、制御プロセスは親プロセスしか制御できないことになる。したがって、制御プロセスは、プログラムの一部しか制御をすることができず、そのプログラムが全体として十分な性能で動くように制御できないという問題がある。
この点、特許文献2で述べられている上記問題点の従来の解決例では、生成された子プロセスを制御対象に加えるためには、子プロセス自身が制御プロセスに対し被制御プロセスとしての加入要求を行うという解決手段がとられている。よって、当該方式を採用するためには、子プロセスとなるプログラムが制御プロセスに対し被制御プロセスとしての加入要求を行うように、予めプログラムを変更する必要がある。
もっとも、当該プログラム変更に際しては、制御プロセスのソースコードが必ずしも入手可能でないことや、たとえ、ソースコードが入手できたとしても、変更には相応のコストを要する。よって、当該従来例のように被制御プロセスを変更することなく、子プロセスの生成を知ることが課題であるといえる。
次に、第二の問題点は制御プロセスが、被制御プロセスの消滅を知ることができないために、制御対象から当該消滅した被制御プロセスを除外できないことである。その理由は上記のように、制御プロセスが、被制御プロセスの消滅を知る機能を持たないためである。
このため、被制御プロセスがすでに消滅した場合であっても、制御プロセスは存在しない被制御プロセスに対しても制御を行い続けることとなり、システム全体の性能が劣化するという問題がある。
以上より、本発明は、被制御プロセスによる子プロセスの生成及び被制御プロセスの消滅を、制御プロセスが知ることを第一の目的とする。更に、プロセス制御の対象とする必要がある全てのプロセスに対して、制御プロセスが属性変更を行うことができるユーザレベルプロセス制御機構を提供することを第二の目的とする。
発明の第の観点によれば、ユーザレベルの制御プロセスによりプロセス制御を行うユーザレベルプロセス制御装置が行うユーザレベルプロセス制御方法において、前記ユーザレベルプロセス制御装置は、第1のシステムコールに応じて子プロセスの生成を行う生成機能と、第2のシステムコールに応じて被制御プロセスを消滅させる消滅機能とを備えたOSと、ダイナミックリンカと、前記生成機能の実行を前記第1のシステムコールの発行により前記OSに依頼するための第1の関数と、前記消滅機能の実行を前記第2のシステムコールの発行により前記OSに依頼するための第2の関数とを有するシステムライブラリと、前記第1の関数と同名の関数であって、且つ、前記生成機能の実行を前記第1の関数を呼び出すことによって依頼する機能及び前記生成を前記制御プロセスに通知する生成通知機能を備えた第3の関数と、前記第2の関数と同名の関数であって、且つ、前記消滅機能の実行を前記第2の関数を呼び出すことによって依頼する機能及び前記消滅を前記制御プロセスに通知する消滅通知機能を備えた第4の関数とを有するカスタムライブラリを有し、前記制御プロセスの実行時に、前記ダイナミックリンカにより、前記システムライブラリと前記カスタムライブラリとを前記被制御プロセスにリンクすると共に、関数を検索する順番の上位として前記カスタムライブラリを指定するとを特徴とする、ユーザレベルプロセス制御方法が提供される。
また、本発明の第2の観点によれば、ユーザレベルの制御プロセスによりプロセス制御を行うユーザレベルプロセス制御装置が行うユーザレベルプロセス制御方法において、前記ユーザレベルプロセス制御装置は、第1のシステムコールに応じて子プロセスの生成を行う生成機能と、第2のシステムコールに応じて被制御プロセスを消滅させる消滅機能とを備えたOSと、 ダイナミックリンカと、前記生成機能の実行を前記第1のシステムコールの発行により前記OSに依頼するための第1の関数と、前記消滅機能の実行を前記第2のシステムコールの発行により前記OSに依頼するための第2の関数とを有するシステムライブラリと、前記第1の関数と同名の関数であって、且つ、前記生成機能の実行を、前記第1のシステムコールを発行することによって直接前記OSに依頼する機能及び前記生成を前記制御プロセスに通知する生成通知機能を備えた第3の関数と、前記第2の関数と同名の関数であって、且つ、前記消滅機能の実行を、前記第2のシステムコールを発行することによって直接前記OSに依頼する機能及び前記消滅を前記制御プロセスに通知する消滅通知機能を備えた第4の関数とを有するカスタムライブラリと、を有し、前記制御プロセスの実行時に、前記ダイナミックリンカにより、前記システムライブラリと前記カスタムライブラリとを前記被制御プロセスにリンクすると共に、関数を検索する順番の上位として前記カスタムライブラリを指定する、ことを特徴とする、ユーザレベルプロセス制御方法が提供される。
更に、本発明の第3の観点によれば、上記本発明の第1の観点又は上記本発明の第2の観点により提供される前記ダイナミックリンカ、前記システムライブラリ及び前記カスタムライブラリを含むプログラムが提供される。
本発明によれば、ユーザレベルプロセス制御システムにおいて、制御プロセスが制御対象とする必要のあるプロセスを正確に把握することにより、プロセスが子プロセスを生成したり、プロセスが消滅したりする場合にも、プロセスを適切に制御することが可能になる。
発明を実施するための最良の形態について図面を参照して詳細に説明する。
まず、本発明の概略を、図1を用いて説明する。制御プロセス110はプロセス管理機能部111を備え、制御プロセスのプロセス管理機能は、被制御プロセス120による子プロセス生成時と被制御プロセスの消滅時に通知を受け取ることを特徴とする。
制御プロセスのプロセス管理機能部111は、子プロセス生成の通知210を受けると、子プロセスを被制御プロセス表112に追加し、被制御プロセス表を正確な状態に更新する。
また、プロセス管理機能部111は、被制御プロセスの消滅の通知220を受けると、被制御プロセス表112から当該プロセスを削除する。これにより不要なプロセスを被制御プロセス表から除外し、被制御プロセス表を正確な状態に更新する。
上記より、被制御プロセスが生成または消滅する場合も、被制御プロセス表が正確な状態に保たれているため、制御プロセスの属性変更機能112は、必要な全てのプロセスに対して、OS130のプロセステーブル131に記録されている属性を変更することができる。
OS130のプロセス制御機能部132は、プロセステーブル中の属性を参照してプロセス制御を行う。
図2は本発明の実施形態の基本的構成を示す図面である。当該実施の形態は、制御プロセス110、被制御プロセス120、OS130、プロセス生成検出部310、プロセス消滅検出部320を備える。制御プロセス110は、プロセスの属性変更機能部112と被制御プロセス表113及びプロセス管理機能部111を備える。
本実施の形態は、制御プロセス110のプロセス管理機能部111が、ユーザレベルのプロセス生成検出部310とプロセス消滅検出部320を利用することを特徴とする。
まず、OS130は、プロセスの情報を保持するプロセステーブル131と、プロセス制御機能部132を有する。OS130のプロセス制御機能部132はプロセステーブル131に記録されているプロセスの属性にしたがって、プロセス制御を行う。
次に、制御プロセス110の属性変更機能部112は、OS130の提供するAPIを用いてプロセステーブル131に記録されている被制御プロセス120の属性を変更する。制御プロセス110の被制御プロセス表113は、制御プロセスが制御対象としているプロセスを記録する。
また、新たに子プロセス生成があった場合には、検出制御プロセス110のプロセス管理機能部111は、プロセス生成検出部310を利用して、被制御プロセス120の子プロセス生成を検出し、検出された子プロセスを被制御プロセス表113に追加する。更に、被制御プロセスの消滅があった場合には、制御プロセス110のプロセス管理機能部111は、プロセス消滅検出部320を利用し、被制御プロセス120の消滅を検出し、被制御プロセス表113から削除する。
プロセス生成検出部310は、ユーザレベルにあり、プロセスの子プロセス生成を検出し、生成を監視している制御プロセス110に通知する機能を有する。プロセス消滅検出部320はユーザレベルにあり、上記生成の場合と同様に、プロセスの消滅を検出し、消滅を監視している制御プロセス110に通知する機能を有する。
次に、本実施の形態の動作に付いて図3乃至図5を用いて詳細に説明する。なお、説明では便宜のために簡略化し、被制御プロセスとしてひとつのプロセスのみを表示している。
図3は、制御プロセス110が被制御プロセスA120に対して制御を行う動作を示している。
ここで、動作としては以下の通りである。まず、制御プロセスが、プロセスA120に対して制御を行うためにプロセステーブル131中のプロセスA120の属性の変更を示している(S10)。次にOS130のプロセス制御機能部132がプロセステーブル131に記録されているプロセスA120の属性を読み出すことを表している(S11)。更に、OS130のプロセス制御機能部132が、属性にしたがって、プロセスA120を制御することを表している(S12)。
図4は、制御プロセスがユーザレベルのプロセス生成検出部310を利用して、被制御プロセスA120による子プロセスB122の生成を検出する場合の動作を示している。まず、プロセスA120が子プロセスB122を作成する(S20)。それにつきプロセス生成検出部310がプロセスB122の生成の検出する(S21)。
そして、プロセス生成検出部310は制御プロセス110へ子プロセスの生成を通知する(S22)。次に、通知を受けた制御プロセス110のプロセス管理機能部111は、今回新たに生成されたプロセスB122を被制御プロセス表113に登録する(S23)。
この際、制御プロセス110の属性変更機能部112は、プロセスB122が制御対象であることを把握し、OS130のプロセステーブル131の属性を変更する(S24)。
図5は、制御プロセス110がユーザレベルのプロセス消滅検出部320を利用して、被制御プロセスB122の消滅を検出する動作を示している。まず、プロセス消滅検出部320がプロセスB122の消滅を検出する(S30)。次に、プロセス消滅検出部320が制御プロセス110にプロセスB122の消滅を通知する(S31)。制御プロセス110のプロセス管理機能部111は、被制御プロセス表113からプロセスB122を削除する(S32)。
[実施形態]
次に、具体的な実施形態を用いて、本発明を実施するための最良の形態の動作について説明する。本発明の第1の実施形態の構成を図6に示す。なお、ここで以下に述べる実施形態は、本発明の第1の実施形態に対応するものであるが、図6では制御プロセスの属性変更機能は省略してある。
本実施形態は、被制御プロセス120による子プロセスの生成の際や被制御プロセスの終了の際に呼び出されるライブラリ関数がダイナミックリンクされている場合に用いられるものである。
また、本実施形態は、ユーザレベルのプロセス生成検出部及びプロセス消滅検出部として、ダイナミックリンカ及び当該ダイナミックリンカに備えられるダイナミックリンクライブラリを利用することを特徴とするものである。
プロセスが子プロセスを生成する場合やプロセスの終了を行う場合は、OSにそれらの処理を依頼するためのシステムコールを行う。この点、一般的にはプロセスが直接システムコールを行うのではなく、システムライブラリ中の専用の関数を呼び出して、当該ライブラリ関数内でシステムコールが実行される。
したがって、子プロセス生成やプロセス終了時に呼び出されるライブラリ関数が、制御プロセスへの通知機能を持つ場合であれば、子プロセスの生成やプロセスの終了を検出して、更にそれを制御プロセスへ通知をするということまでもが可能となる。
ライブラリ関数がダイナミックリンクされている場合は、ダイナミックリンカがプロセスの実行時にリンクを解決する。図6のシステムライブラリ420は、システムにもともと備わっているライブラリを示している。ここで、当該システムライブラリ420中の関数は、制御プロセスへの通知機能を持っていない。
一方、図6のカスタムライブラリ430は、システムライブラリ420の関数と同じ関数名ではあるが、プロセス生成や消滅といった本来の機能に加えて、制御プロセスへの通知機能を持つ関数をも含むライブラリである。
ダイナミックリンカ410によって、被制御プロセス120から呼び出されるライブラリ関数として、システムライブラリ420中の関数ではなく、カスタムライブラリ430中の関数がリンクされる。つまり、システムライブラリ420中の関数ではなく、カスタムライブラリ430中の関数が呼ばれることとなる。
これにより、カスタムライブラリ430中の関数が子プロセス生成や被制御プロセスの消滅の検出を行い、さらに、当該生成や消滅の事実を、制御プロセス110へ通知することとなる。
ここで、ダイナミックリンカ410によってリンクされる関数を、システムライブラリ420中の関数でなく、カスタムライブラリ430中の関数とする当該置き換え作業は、ダイナミックリンカ410が、ライブラリ関数を検索する順番の上位として、カスタムライブラリ430を指定することによって行うことができる。
また、Linux(登録商標)で広く利用されているGnu(Gnu is Not Unix(登録商標))のダイナミックリンカの場合では、当該置き換え作業は、環境変数を用いて被制御プロセスのみに置き換えを適用することが可能である。
さらに、ダイナミックリンカの設定ファイルを変更することで、ダイナミックリンクされている全プロセスに対して置き換えをすることも可能である。
なお、前記子プロセス生成や被制御プロセスの消滅の検出を行った際の、カスタムライブラリ430中の関数から制御プロセス110への通知には、OSが提供するプロセス間通信機能が利用できる。
次に、図7を用いて被制御プロセス120が子プロセスを生成する場合の動作について説明する。まず、被制御プロセス120が子プロセス生成関数forkを呼び出す(S40)。次に、ダイナミックリンカ410がカスタムライブラリ430中のfork関数を呼び出す(S41)。
カスタムライブラリ430中のfork関数は、システムライブラリ420中のfork関数を呼び出す(S42)。
システムライブラリ420中のfork関数がシステムコールを発行することで、OS130が子プロセスの生成を行う(S43)
カスタムライブラリ430中のfork関数は、生成された子プロセスのプロセスIDを取得し、プロセス間通信を用いて制御プロセス110のプロセス管理機能部111に通知する(S44)。そして、制御プロセス110は、子プロセスを被制御プロセス表113に追加する(S45)。
上記(S40)〜(S45)の手順により制御プロセス110は、新たにプロセスの生成があったことを把握することができ、以後は当該新たに生成されたプロセスを制御の対象として被制御プロセス表に追加することが可能となる。
次に、被制御プロセス120が消滅する場合の動作を説明する。
まず、被制御プロセスがプロセス終了関数exitを呼び出す(S40)。
次に、ダイナミックリンカ41がカスタムライブラリ430中のexit関数を呼び出す(S41)。続いて、カスタムライブラリ430中のexit関数は、システムライブラリ420中のexit関数を呼び出す(S42)。
システムライブラリ420中のexit関数がシステムコールを発行することで、OS130が被制御プロセスの消滅処理を行うことにより当該被制御プロセスが消滅する(S43)。
カスタムライブラリ430中のexit関数は、プロセス間通信を用いて制御プロセス110のプロセス管理機能部111に、前記被制御プロセスの消滅があったことを通知する(S44)。
制御プロセス110は、通知された前記消滅したプロセスを被制御プロセス表113から削除する(S45)。
以上の手順により制御プロセス110は、新たにプロセスの消滅があったことを把握することができる。
なお、実施形態1の別形態として、カスタムライブラリが直接システムコールを行うことによりOS130を呼び出して、プロセスの生成や、プロセスの消滅をOSに実行させる構成をとるのも良い。また、実施形態1のさらなる別形態として、カスタムライブラリ430を使わず、システムライブラリ420中の関数に制御プロセスへの通知機能を持たせても良い。
上記第1の実施形態は、カスタムライブラリ430の作成を行うことと、環境変数の設定やダイナミックリンカの設定ファイルの変更を行うのみで実現できるため、被制御プロセスの自体の修正やOSに特別な機能の追加をするなどといった作業が不要であるという効果がある。
また、ダイナミックリンクされている如何なる関数にも適用できるため、forkやexit以外の関数や呼び出しであっても検出をして、制御プロセスに通知を行うことができるという効果もある。
次に、本発明の実施形態の変形例に付いて図8を参照して説明する。本実施の形態は、OS130がプロセス生成検出部310とプロセス消滅検出部320を有し、制御プロセス110がそれらを利用することを特徴とする。なお、本実施の形態の動作は、上記に示した実施の形態と同様である。
次に、本発明のさらなる変形例を実施するための形態に付いて図9を参照して説明する。図9に示す実施の形態では、制御プロセス110自身がプロセス生成検出部310とプロセス消滅検出部320を有することを特徴とする。本実施の形態の動作も、上記に示した実施の形態と同様である。
なお、図2、図8及び図9に示す実施の形態は、それぞれユーザレベル、OS内、制御プロセス内の何れかの部分の、同じ部分にプロセス生成検出部310とプロセス消滅検出部320が存在している。
この点、本発明の更に異なる実施の形態として、プロセス生成検出部310とプロセス消滅検出部320のそれぞれが異なる場所に存在しても良い。
以上に加え、本発明の異なる実施の形態として、被制御プロセス110のプロセス管理機能部111が、プロセス生成通知またはプロセス消滅通知のいずれかのみを利用する構成をとっても良い。
また、本発明の他の実施の形態として、制御プロセス110のプロセス管理機能部111が、複数のプロセス生成検出部310を利用する構成をとっても良い。さらに、本発明の異なる実施の形態として、制御プロセス110のプロセス管理機能部111が、複数のプロセス消滅検出部320を利用する構成をとっても良い。
加えて、本発明の異なる実施の形態として、複数の制御プロセス110が存在する構成をとっても良い。また、本発明の実施の形態として、制御プロセスのプロセス管理機能が、プロセスの生成と消滅以外のプロセスの状態変化(例えばスリープ)を検出し、ユーザレベルプロセス制御に利用する構成をとっても良い。
次に、本発明の第2の実施形態を図10を用いて示す。第2の実施形態は、上述した本発明の第1の実施の形態に対応するものである。
本実施形態は、ユーザレベルのプロセス生成検出部及び消滅検出部として、スタティックリンクライブラリを用いることを特徴とする。基本構成として、第1の実施形態と同様に、システムライブラリ420中のプロセス生成や消滅の関数と同名の関数を持つカスタムライブラリ430を用いる点は同様である。
第1の実施形態との相違点は、被制御プロセスが子プロセスを生成する際や被制御プロセスが消滅する際に、システムライブラリ420の関数ではなく、カスタムライブラリ430中の関数を呼び出すことを、カスタムライブラリ430を被制御プロセス120にスタティックリンクすることによって実現している点である。
なお、図10では、カスタムライブラリ430、システムライブラリ420の両方がスタティックリンクされる構成が図示されているが、本実施形態の別形態としてカスタムライブラリ430のみをスタティックリンクする構成をとっても良い。本実施形態の動作も実施形態1の動作と同様である。当該第2の実施形態の利点は、被制御プロセスがスタティックリンクを用いている構成の場合にも本発明を利用できるという点である。
次に、本発明の第3の実施形態の構成を図11に示す。第3の実施形態も、本発明の第1の実施の形態に対応するものである。本実施形態は、プロセス生成の検出または、プロセス消滅の検出を行うにあたって、OS130のプロセストレース機能134を用いることを特徴とする。
ここで、OS130のプロセストレース機能134は、トレース対象のプロセスがシステムコールを行った際に、トレース対象プロセスをいったん停止させ、監視しているプロセスに通知を行う機能を提供する。例えば、Linux(登録商標)はこのようなプロセストレース機能を備えている。
本実施形態では、まず制御プロセス110のプロセス管理機能部111が、プロセスのトレースを行うことを指示するシステムコール(例えばLinux(登録商標)のptrACeシステムコール)を呼び出して、制御プロセス110が被制御プロセス120をトレースすることができるように、OS130に指示を出す
このときに、プロセス生成に関わるシステムコール(例えばforkやClone)や消滅に関わるシステムコール(例えばexit)をトレースするように設定する。
その後、制御プロセス110はwaitシステムコールを実行して、OS130のプロセストレース機能134から通知がくるのを待つ。
続いて、図12を用いて被制御プロセスが子プロセスを作成する場合の動作手順を示す。手順としては、以下の手順となる。被制御プロセス120が子プロセスの生成のためのシステムコールを発行する(S50)。
予めなされていた設定にしたがって、OS130のプロセストレース機能が呼ばれる(S51)。
次にOS130のプロセストレース機能134は、被制御プロセス120を停止する(S52)。さらに、OS130のプロセストレース機能134は、制御プロセス110に被制御プロセス120から前記子プロセスの生成のためのシステムコールの発行があった旨の通知を行う(S53)。制御プロセス110は、前記通知を受け取るとwaitシステムコールから復帰し、被制御プロセス表113に当該新たに生成された子プロセスを追加する(S54)。
制御プロセス110は、被制御プロセス120の再開ためのシステムコールを実行する(S55)。
その後、OS130が被制御プロセス120を再開させる(S56)。
また、上記構成のもとで被制御プロセス120が消滅する場合の動作は、以下の手順となる。
被制御プロセス120が子プロセスの消滅のためのシステムコールを発行する(S50)。予めなされていた設定にしたがって、OS130のプロセストレース機能が呼ばれる(S51)。
OS130のプロセストレース機能134は、被制御プロセス120を停止する(S52)。OS130のプロセストレース機能134は、制御プロセス110に被制御プロセス120が前記子プロセスの消滅のためのシステムコールの発行があった旨の通知を行う(S53)。制御プロセス110は、前記通知を受け取るとwaitシステムコールから復帰し、被制御プロセス表113より、当該消滅される子プロセスを削除する(S54)。
制御プロセス110は、被制御プロセス120の再開ためのシステムコールを実行する(S55)。
その後、OS130が被制御プロセス120を再開させる(S56)、との手順となる。
第3の実施形態は、前記した実施形態1または2と異なり、被制御プロセスのリンクの方式によらずに用いることができるという効果がある。更に、通知のためのカスタムライブラリを作成する必要がないという効果もある。また、OSのトレース機能は、被制御プロセスを一度停止してから制御プロセスに通知を行うため、制御プロセスへの通知が行われる前に被制御プロセスが動作を開始してしまうということがないという効果もある。
次に、本発明の第4の実施形態の構成を図13に示す。第4の実施形態は、本発明の第3の実施の形態に対応するものである。本実施形態では、制御プロセスが、OS130のプロセステーブルを検索するプロセステーブル検索機能114を持つことで、制御プロセス110自身が、プロセス生成検出機能及びプロセス消滅検出機能を備えていることを特徴とする。
プロセステーブル検索機能114は、OS130の提供するAPIを用いて、OS130のプロセステーブル131にアクセスして、存在するプロセスに関する情報を調べる機能を持つ。プロセステーブル131にアクセスするためのAPIとしては、例としてLinux(登録商標)の持つproCファイルシステムが挙げられる。
次に、図14を用いて、被制御プロセスが子プロセスの生成を行った際の、第4の実施形態の動作について説明する。
まず、被制御プロセス120が子プロセス生成のためのシステムコールをOS130に対して実行する(S60)。OS130は当該システムコールを受けて、子プロセスを生成し、プロセステーブル131に、新しいプロセスのID及びそのプロセスの親プロセスのIDを追加する(S61)。
制御プロセス110のプロセス管理機能部111が、プロセステーブル検索機能114を呼び出し、現在の被制御プロセス120を親プロセスとする新しいプロセスが存在するかを検索する(S62)。
次に、制御プロセス110のプロセステーブル検索機能114は、プロセステーブル131にアクセスして、現在の被制御プロセス120を親プロセスとする前記新しい子プロセスを検索して発見する(S63)。
その後、制御プロセス110のプロセス管理機能部111は、プロセステーブル検索機能114の検索結果を受け取り、子プロセスが生成されたことを検出する(S64)。
そして、プロセス管理機能部111は、前記新しい子プロセスを新たな制御対象として、被制御プロセス表113に登録する(S65)。
上記の手順に従うことにより、被制御プロセスが子プロセスの生成を行ったことを制御プロセス110は、把握できる。
また、同様の手順をとることにより子プロセスの生成があった場合のみならず、プロセスの消滅があった場合も、被制御プロセスが当該プロセス消滅の事実を把握できる。
以上説明した、当該第4の実施形態は、上記のようにプロセステーブルを利用することにより、ダイナミックリンカに通知機能を付加することが困難な場合や、プログラムのスタティックリンク時にカスタムライブラリをリンクすることが不可能な場合、OSがプロセストレース機能を備えていない場合といった、実施形態1乃至3のいずれも実施できない場合であっても本発明を利用できるという効果がある。
次に、本発明を実行した場合の実行結果の具体例ついて図15を用いて説明する。なお、本発明は、制御プロセスが、被制御プロセスを親プロセスとする子プロセスの管理機能を持つことを特徴とし、制御プロセスが行うプロセス制御の具体的な内容には無関係であるが、本発明の効果をわかり易く示すために、本実施形態ではプロセスのCPUへ割り当て制御(ユーザレベルプロセススケジュリング)に用いて説明する。
本具体例では、ユーザレベルプロセススケジューリングのための属性変更手段として、シグナルによるプロセスの実行/停止状態属性の変更が利用される。本具体例では、被制御プロセスとして三つのプロセスがあるものとする。
プロセスA510は音楽再生を行うリアルタイム処理プロセスで、周期的な動作している。この周期動作が乱れると音飛びが発生しユーザに不快感を与えてしまう。つまり、リアルタイムに処理することが要求されるプロセスである。
次に、プロセスB520は電子メール表示プロセスで、音楽再生中に電子メールを受信し電子メール表示プログラムを起動した場合を想定している。電子メール表示プロセスは多少動作が遅れてもユーザに影響を与えない非リアルタイム処理プロセスである。
一方、プロセスC530はプロセスB520が生成した子プロセスで、メールに添付された画像を表示するプロセスである。これも非リアルタイム処理プロセスである。
ここで、当該図15は、図の凸部分がCPUを利用していることを示しており、図の左から右に向かって時間が進むことを表している。なお、この図は、それぞれのプロセスが理想的な動作をした場合についての、それぞれのプロセスのCPU利用を示している。また、制御プロセスの実行時間は短いため図では省略している。
図15(a)は個々のプロセスが単独で動いた場合のCPU利用を示している、また、図15(b)はユーザレベルプロセス制御を行わないで三つのプロセスを同時に動かした場合である。OSのプロセススケジューラは、上記のようなプロセス毎の特徴を知らないため、必ずしも望ましいスケジューリングが行われるとは限らない。
この例ではOSのプロセススケジューリングによりプロセスB520、C530が優先してCPUを利用している場合を示している。この場合、前記の様にリアルタイム処理プロセスであるか否かなどのプロセス毎の特徴は考慮されていないため、プロセスA51の周期動作が乱れ、音飛びが発生している状態となる。
このような不適切な状態を避けるためには、各プロセスが適切にCPUを利用するように制御する必要がある。
図15(c)はプロセス管理機能を持たないユーザレベルプロセス制御を用いた場合である。したがって、親プロセスであるプロセスBのみに対してCPU利用時間制御が行われている。
本実施形態では、プロセスA510の実行タイミングに合わせて、制御プロセスからプロセスB520にシグナルを送り実行停止状態に変えることにより、プロセスA510の実行を妨げないように制御し、音飛びを防ぐことができる。しかし、子プロセスであるプロセスC530はユーザレベルプロセス制御機構の管理下にないため、プロセスC53に対してはCPU利用時間制御が行われず、プロセスA510の動作を妨げることとなる。よって、完全にはプロセスA510の実行タイミングに合わせたプロセス制御を行うことはできないため、結果として完全に音飛びを防止することはできない。
さらに、図15(d)はプロセス管理機能をも備えたユーザレベルプロセス制御機構の場合のCPU利用を示している。(d)ではプロセスC530もCPU利用時間を制御されている。このためリアルタイム処理プロセスであるプロセスA510は優先的にCPUが割り当てられ、正常に周期動作している。これにより、上記の音飛びの問題は防止されている。
このように、プロセス管理機能を備えたユーザレベルプロセス制御を用いることによって、OSや個々のプロセスを改造することなく、被制御プロセスが子プロセスを生成した場合も、リアルタイム性を維持するようにプロセス制御が行われることが可能となる。
なお、上記では、ユーザレベルプロセス制御の実現手段を属性及び属性変更として述べているが、これは、あくまでユーザレベルプロセス制御の実現手段の一例である。よって、当然のことながら前記実現手段にとらわれず、OSがプロセス制御に利用し、ユーザレベルから変更可能な他の手段を用いても良い。よって上記で言う属性及び属性変更はその他のユーザレベルプロセス制御の実現手段をも総称しているものとする。
本発明は、複数のアプリケションプログラムがOSの管理下で動くコンピュータシステムで、各アプリケションプログラムを適切に動作させる用途に利用できる。
本発明の概要を説明するための図面である。 本発明の第1の実施の形態の構成を説明するための図面である。 本発明の第1の実施の形態におけるプロセス制御の動作を説明するための図面である。 本発明の第1の実施の形態における、被制御プロセスによる子プロセス生成時の動作を説明するための図面である。 本発明の第1の実施の形態における、被制御プロセスの消滅時の動作を説明するための図面である。 本発明の第1の実施形態の構成を説明するための図面である。 本発明の第1の実施形態における、被制御プロセスによる子プロセス生成時の動作を説明するための図面である。 本発明の第1の実施形態の変形例の構成を説明するための図面である。 本発明の第1の実施形態の変形例の構成を説明するための図面である。 本発明の第2の実施形態の構成を説明するための図面である。 本発明の第3の実施形態の構成を説明するための図面である。 本発明の第3の実施形態における、被制御プロセスによる子プロセス生成時の動作を説明するための図面である。 本発明の第4の実施形態の構成を説明するための図面である。 本発明の第4の実施形態における、被制御プロセスによる子プロセス生成時の動作を説明するための図面である。 本発明を実行した場合の実行結果について、具体的な効果を説明するための図面である。
符号の説明
110 制御プロセス
111 プロセス管理機能部
112 属性変更機能部
113 被制御プロセス表
114 プロセステーブル検索機能
120 被制御プロセス
121 被制御プロセスA
122 被制御プロセスB
130 オペレーティングシステム
131 プロセステーブル
132 プロセス制御機能
133 プロセス生成/消滅機能
134 プロセストレース機能
210 プロセス生成通知
220 プロセス消滅通知
310 プロセス生成検出部
320 プロセス終了検出部
410 ダイナミックリンカ
420 システムライブラリ
430 カスタムライブラリ
510 プロセスA
520 プロセスB
530 プロセスC

Claims (3)

  1. ユーザレベルの制御プロセスによりプロセス制御を行うユーザレベルプロセス制御装置が行うユーザレベルプロセス制御方法において、
    前記ユーザレベルプロセス制御装置は、
    1のシステムコールに応じて子プロセスの生成を行う生成機能と、第2のシステムコールに応じて被制御プロセスを消滅させる消滅機能とを備えたOSと、
    ダイナミックリンカと、
    前記生成機能の実行を前記第1のシステムコールの発行により前記OSに依頼するための第1の関数と、前記消滅機能の実行を前記第2のシステムコールの発行により前記OSに依頼するための第2の関数とを有するシステムライブラリと、
    前記第1の関数と同名の関数であって、且つ、前記生成機能の実行を前記第1の関数を呼び出すことによって依頼する機能及び前記生成を前記制御プロセスに通知する生成通知機能を備えた第3の関数と、前記第2の関数と同名の関数であって、且つ、前記消滅機能の実行を前記第2の関数を呼び出すことによって依頼する機能及び前記消滅を前記制御プロセスに通知する消滅通知機能を備えた第4の関数とを有するカスタムライブラリ
    を有し、
    前記制御プロセスの実行時に、前記ダイナミックリンカにより、前記システムライブラリと前記カスタムライブラリとを前記被制御プロセスにリンクすると共に、関数を検索する順番の上位として前記カスタムライブラリを指定する
    とを特徴とする、ユーザレベルプロセス制御方法。
  2. ユーザレベルの制御プロセスによりプロセス制御を行うユーザレベルプロセス制御装置が行うユーザレベルプロセス制御方法において、
    前記ユーザレベルプロセス制御装置は、
    第1のシステムコールに応じて子プロセスの生成を行う生成機能と、第2のシステムコールに応じて被制御プロセスを消滅させる消滅機能とを備えたOSと、
    ダイナミックリンカと、
    前記生成機能の実行を前記第1のシステムコールの発行により前記OSに依頼するための第1の関数と、前記消滅機能の実行を前記第2のシステムコールの発行により前記OSに依頼するための第2の関数とを有するシステムライブラリと
    記第1の関数と同名の関数であって、且つ、前記生成機能の実行を、前記第1のシステムコールを発行することによって直接前記OSに依頼する機能及び前記生成を前記制御プロセスに通知する生成通知機能を備えた第3の関数と、前記第2の関数と同名の関数であって、且つ、前記消滅機能の実行を、前記第2のシステムコールを発行することによって直接前記OSに依頼する機能及び前記消滅を前記制御プロセスに通知する消滅通知機能を備えた第4の関数とを有するカスタムライブラリ
    を有し、
    前記制御プロセスの実行時に、前記ダイナミックリンカにより、前記システムライブラリと前記カスタムライブラリとを前記被制御プロセスにリンクすると共に、関数を検索する順番の上位として前記カスタムライブラリを指定する
    とを特徴とする、ユーザレベルプロセス制御方法。
  3. 請求項1又は2に記載の前記ダイナミックリンカ、前記システムライブラリ及び前記カスタムライブラリを含むプログラム。
JP2007021403A 2007-01-31 2007-01-31 プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム Active JP4962026B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007021403A JP4962026B2 (ja) 2007-01-31 2007-01-31 プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007021403A JP4962026B2 (ja) 2007-01-31 2007-01-31 プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム

Publications (2)

Publication Number Publication Date
JP2008186383A JP2008186383A (ja) 2008-08-14
JP4962026B2 true JP4962026B2 (ja) 2012-06-27

Family

ID=39729356

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007021403A Active JP4962026B2 (ja) 2007-01-31 2007-01-31 プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム

Country Status (1)

Country Link
JP (1) JP4962026B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5659780B2 (ja) * 2010-12-22 2015-01-28 日本電気株式会社 コンピュータ、コア割り当て方法およびプログラム
JP6497234B2 (ja) * 2015-06-19 2019-04-10 富士通株式会社 制御プログラム、制御方法、及び、情報処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0954699A (ja) * 1995-08-11 1997-02-25 Fujitsu Ltd 計算機のプロセススケジューラ
JPH1115677A (ja) * 1997-06-25 1999-01-22 Nec Software Ltd プロセス制御装置
JP2005250711A (ja) * 2004-03-03 2005-09-15 Nec Corp ストール監視システム、データ処理装置及びそれらに用いるストール監視方法
JP4913353B2 (ja) * 2005-03-25 2012-04-11 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置及びソフトウェア動作監視装置

Also Published As

Publication number Publication date
JP2008186383A (ja) 2008-08-14

Similar Documents

Publication Publication Date Title
JP3339482B2 (ja) 分散デバッグ装置及びデバッグ方法並びに制御プログラムを記録した記録媒体
US20010034751A1 (en) Real-time OS simulator
JP2015049550A (ja) 制御プログラム、制御方法および制御装置
KR20020087388A (ko) 연산처리시스템 및 연산처리 제어방법, 업무관리시스템 및업무관리방법과 기억매체
JP2010055211A (ja) 複数のサービス構成要素に対応するアクションの実行を管理するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
US10565045B2 (en) Modularized collaborative performance issue diagnostic system
JP2011164971A (ja) Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム
JP2008217786A (ja) コンピューティング環境内のメモリ管理方法、メモリ管理システム及びコンピュータ・プログラム
US8332069B2 (en) Fault tolerance method and apparatus for robot software component
JP2009244999A (ja) 仮想マシン管理プログラム及び管理サーバ装置
JP2015114895A (ja) 管理装置、その方法及びプログラム
JP5519458B2 (ja) プラント監視制御システムおよび表示画面管理方法
JP4962026B2 (ja) プロセス管理機能をもつユーザレベルプロセス制御装置、その方法及びそのプログラム
CN110569104A (zh) 深度学习***中任务训练的管理方法和计算机存储介质
JP6555981B2 (ja) 情報処理装置及びその制御方法
JP6303486B2 (ja) 情報処理システム、監視方法、及び、プログラム
JP2006059340A (ja) 実時間処理ソフトウェア制御装置及び方法
CN110497406B (zh) 一种设备分组的方法、装置、设备及介质
US20060184945A1 (en) Suspending scenario generation method, server device, and program therefor
JP6751231B2 (ja) ジョブスケジューラ試験プログラム、ジョブスケジューラ試験方法及び並列処理装置
JP2013097328A (ja) 画像表示装置、画像表示方法およびプログラム
JP2010224812A (ja) ジョブ管理システムおよび方法
JPWO2021117186A1 (ja) データ処理実行装置、データ処理実行方法及びデータ処理実行プログラム
JP2005149332A (ja) ワークフロー管理システム及びそのプログラム
JP2007193744A (ja) 情報処理装置、プログラム、およびスケジューリング方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080618

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091214

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100908

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100908

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110203

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110404

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110531

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110830

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110905

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120213

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: 20120228

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120312

R150 Certificate of patent or registration of utility model

Ref document number: 4962026

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150406

Year of fee payment: 3