(57)【要約】【課題】ノンストップで稼動してプログラムを実行するノンストッププログラムシステムおよびそのメモリ断片化回避方法を提供。【解決手段】ノンストッププログラムシステム10は、複数のプログラム面30および32が、同じ内容であるが独立したものであるプログラム34および38と、変数領域36および40とを備えるもので、０面30の動作状態をACT状態にしてこの０面30を走行面にしてプログラムを実行するとき、１面32の動作状態をHOT_SBY状態にしてこの１面32における変数領域40を走行面30における変数領域36のメモリ内容と同期させ、さらに、この走行面の切り替えを行うとき、HOT_SBY状態であった１面32の動作状態をACT状態にしてこの１面32を走行面にしてプログラムを実行することにより、走行面の切り替えを速やかにスムーズに行うことができる。【選択図】図１
2009093311.tif 000002
【特許請求の範囲】
【請求項１】
ノンストップで稼動してプログラムを実行するノンストッププログラムシステムにおいて、該システムは、
該システムの機能を実現する前記プログラムと、該プログラムの動作に係る変数を格納する変数領域とを備えた複数のプログラム面を含み、
前記複数のプログラム面のそれぞれにおける複数の前記プログラムは、同じ内容であるがそれぞれ独立したプログラムであり、
さらに、該システムは、前記複数のプログラム面のうち、前記プログラムを実行する一のプログラム面を示す走行面と、前記複数のプログラム面のそれぞれの動作状態とを制御する全体制御手段を含み、
該全体制御手段は、前記複数のプログラム面のうち、一方のプログラム面の動作状態をACT状態にし、該一方のプログラム面を走行面にして該走行面のプログラムを実行し、また、他方のプログラム面の動作状態をHOT_SBY状態にし、該他方のプログラム面における前記変数領域を前記走行面における前記変数領域のメモリ内容と同期させ、
該システムは、前記走行面の切り替えを行うとき、HOT_SBY状態であった前記他方のプログラム面の動作状態をACT状態にし、該他方のプログラム面を走行面にして該走行面のプログラムを実行することを特徴とするノンストッププログラムシステム。
【請求項２】
請求項１に記載のノンストッププログラムシステムにおいて、該システムは、所定の周期で割り込みを発生して前記走行面の切り替えを指示する周期起動制御手段を含むことを特徴とするノンストッププログラムシステム。
【請求項３】
請求項１に記載のノンストッププログラムシステムにおいて、該システムは、前記走行面の切り替えを行うとき、ACT状態であった前記一方のプログラム面の動作状態をSBY状態にし、SBY状態である前記一方のプログラム面における前記変数領域のデフラグを実施してから、前記一方のプログラム面の動作状態をHOT_SBY状態にし、該一方のプログラム面における前記変数領域を前記走行面における前記変数領域のメモリ内容と同期させることを特徴とするノンストッププログラムシステム。
【請求項４】
ノンストップで稼動してプログラムを実行する場合に発生するメモリ断片化を回避するメモリ断片化回避方法において、該方法は、
前記プログラムと、該プログラムの動作に係る変数を格納する変数領域とを備えた複数のプログラム面であって、該複数のプログラム面のそれぞれにおける複数の前記プログラムとして、同じ内容であるがそれぞれ独立したプログラムを備えた前記複数のプログラム面を使用し、
該複数のプログラム面のうち、前記プログラムを実行する一のプログラム面を示す走行面と、前記複数のプログラム面のそれぞれの動作状態とを制御して、前記複数のプログラム面のうち、一方のプログラム面の動作状態をACT状態にし、該一方のプログラム面を走行面にして該走行面のプログラムを実行し、また、他方のプログラム面の動作状態をHOT_SBY状態にし、該他方のプログラム面における前記変数領域を前記走行面における前記変数領域のメモリ内容と同期させ、
さらに、該方法は、前記走行面の切り替えを行うとき、HOT_SBY状態であった前記他方のプログラム面の動作状態をACT状態にし、該他方のプログラム面を走行面にして該走行面のプログラムを実行することを特徴とするメモリ断片化回避方法。
【請求項５】
請求項４に記載のメモリ断片化回避方法において、該方法は、所定の周期で割り込みを発生して前記走行面の切り替えを指示することを特徴とするメモリ断片化回避方法。
【請求項６】
請求項４に記載のメモリ断片化回避方法において、該方法は、前記走行面の切り替えを行うとき、ACT状態であった前記一方のプログラム面の動作状態をSBY状態にし、SBY状態である前記一方のプログラム面における前記変数領域のデフラグを実施してから、前記一方のプログラム面の動作状態をHOT_SBY状態にし、該一方のプログラム面における前記変数領域を前記走行面における前記変数領域のメモリ内容と同期させることを特徴とするメモリ断片化回避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ノンストップで稼動してプログラムを実行するノンストッププログラムシステムおよびそのメモリ断片化回避方法に関するものである。
【背景技術】
【０００２】
従来から、ノンストッププログラムシステムは、ノンストップで稼動してプログラムを実行して、停止することなく処理を続行するもので、たとえば特許文献１に記載するようにそのプログラム実行時に発生するメモリリークを解放するアプリケーション切替制御方式が知られている。
【０００３】
この方式では、プログラム起動制御ソフトウエアが、ソフトウエア管理部に索引情報およびソフトウエア世代識別情報を設定して複数のプログラムの起動制御を一括管理し、時間監視ソフトウエアからの通知によって周期的に古いプログラムを新しいプログラムに入れ替えて、古いプログラムが抱えていたかもしれないメモリリークを、アプリケーションが提供するサービス自体を停止することなく自動復旧することができる。
【特許文献１】特開2002-259142号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のノンストッププログラムシステムでは、プログラム実行時にメモリハントやメモリフリーを繰り返すことによって生じるメモリ断片化を解消することはできない。
【０００５】
プログラムは、メモリを有効活用するために記憶領域が必要になったときに動的にメモリをハントし、必要がなくなったときにメモリをフリーするが、その動作が繰り返し行われると、メモリにおける連続的な領域が確保されず、その確保領域が不連続になることがある。このようなメモリを用いたプログラム実行時にメモリリークが発生すると、メモリにおいて使用可能な領域が断片的に配されるためにプログラムの実行が継続できなくなる。
【０００６】
このようなメモリ断片化は、メモリの至る所に発生する。メモリ断片化された領域は、メモリ全体から見ると少ないが、確実に使用できない領域が増加する傾向にある。これにより、メモリハントできる領域が少なくなり、またメモリハントする領域が不連続に確保されることになるので、ノンストッププログラムシステムにおいて、システム停止や処理速度低下などの重大な影響を与えることになる。
【０００７】
本発明は、このような従来技術の欠点を解消し、メモリ断片化のために生じる使用できないメモリ領域の発生や処理速度の低下を回避するノンストッププログラムシステムおよびそのメモリ断片化回避方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は上述の課題を解決するために、ノンストップで稼動してプログラムを実行するノンストッププログラムシステムは、このシステムの機能を実現するこのプログラムと、このプログラムの動作に係る変数を格納する変数領域とを備えた複数のプログラム面を含み、これらの複数のプログラム面のそれぞれにおける複数のプログラムは、同じ内容であるがそれぞれ独立したプログラムであり、さらに、このシステムは、これらの複数のプログラム面のうち、このプログラムを実行する一のプログラム面を示す走行面と、これらの複数のプログラム面のそれぞれの動作状態とを制御する全体制御手段を含み、この全体制御手段は、これらの複数のプログラム面のうち、一方のプログラム面の動作状態をACT状態にし、この一方のプログラム面を走行面にしてこの走行面のプログラムを実行し、また、他方のプログラム面の動作状態をHOT_SBY状態にし、この他方のプログラム面におけるこの変数領域をこの走行面におけるこの変数領域のメモリ内容と同期させ、このシステムは、この走行面の切り替えを行うとき、HOT_SBY状態であったこの他方のプログラム面の動作状態をACT状態にし、この他方のプログラム面を走行面にしてこの走行面のプログラムを実行することを特徴とする。
【０００９】
また、ノンストップで稼動してプログラムを実行する場合に発生するメモリ断片化を回避するメモリ断片化回避方法は、このプログラムと、このプログラムの動作に係る変数を格納する変数領域とを備えた複数のプログラム面であって、これらの複数のプログラム面のそれぞれにおける複数のプログラムとして、同じ内容であるがそれぞれ独立したプログラムを備えたこれらの複数のプログラム面を使用し、これらの複数のプログラム面のうち、このプログラムを実行する一のプログラム面を示す走行面と、これらの複数のプログラム面のそれぞれの動作状態とを制御して、これらの複数のプログラム面のうち、一方のプログラム面の動作状態をACT状態にし、この一方のプログラム面を走行面にしてこの走行面のプログラムを実行し、また、他方のプログラム面の動作状態をHOT_SBY状態にし、この他方のプログラム面におけるこの変数領域をこの走行面におけるこの変数領域のメモリ内容と同期させ、さらに、この方法は、この走行面の切り替えを行うとき、HOT_SBY状態であったこの他方のプログラム面の動作状態をACT状態にし、この他方のプログラム面を走行面にしてこの走行面のプログラムを実行することを特徴とする。
【発明の効果】
【００１０】
本発明のノンストッププログラムシステムは、複数のプログラム面のいずれかを走行面とするもので、各プログラム面はプログラムおよび変数領域を備え、これらのプログラムとして同じ内容であるが独立したものを使用し、また、全体制御部が、走行面と複数のプログラム面の各動作状態とを制御して、複数のプログラム面のうち、０面の動作状態をACT状態にし、この０面を走行面にしてこの走行面のプログラムを実行し、また、１面の動作状態をHOT_SBY状態にし、この１面におけるこの変数領域をこの走行面におけるこの変数領域のメモリ内容と同期させ、さらに、この走行面の切り替えを行うとき、HOT_SBY状態であった１面の動作状態をACT状態にし、この１面を走行面にしてこの走行面のプログラムを実行することにより、変数値の共有化を図り、動作を停止することなく走行面の切り替えを速やかにスムーズに行うことができる。
【００１１】
また、本発明のノンストッププログラムシステムは、周期起動制御部が所定の周期で割り込みを発生して走行面の切り替えを指示し、走行面の切り替えを行うとき、ACT状態であった０面の動作状態をSBY状態にし、SBY状態である０面における変数領域のデフラグを実施してから、０面の動作状態をHOT_SBY状態にし、０面における変数領域を走行面における変数領域のメモリ内容と同期させることにより、システムの動作中にメモリのデフラグを実行することができ、システムを停止することなくメモリの断片化を整埋できる。
【００１２】
したがって、本発明によれば、メモリ障害の原因の一つを防ぐことができるので、ノンストップで稼動してプログラムを実行するシステムにおいて、効果的に適用することができる。
【発明を実施するための最良の形態】
【００１３】
次に添付図面を参照して、本発明によるノンストッププログラムシステムの実施例を詳細に説明する。たとえば、本発明のシステム10は、図１に示すように、本システム10が円滑に動作するように制御する制御ソフトウエア12、および本システムの機能を実現するプログラムを有するアプリケーションソフトウエア14を含んで構成され、制御ソフトウエア12がアプリケーションソフトウエア14のプログラム実行を制御してそのアプリケーションのメモリ断片化を回避するものである。なお、本発明の理解に直接関係のない部分は、図示を省略し、冗長な説明を避ける。
【００１４】
制御ソフトウエア12は、本システム10の全体を制御する全体制御部20、アプリケーションソフトウエア14におけるプログラム面のうち走行している面、すなわち走行面の切り替えを制御する周期起動制御部22および、非走行面の変数領域のデフラグを制御するデフラグ制御部24を含み、この全体制御部20は、走行面を管理する走行面管理部26および各プログラム面の動作状態を管理する状態管理部28を含んで構成される。
【００１５】
また、アプリケーションソフトウエア14は、少なくとも２つ以上のプログラム面30および32を有し、これらのプログラム面30および32は、それぞれプログラム34および38と、変数領域36および40を含んで構成される。
【００１６】
本システム10では、プログラム34および38の動作状態として、動作中、すなわち走行中であることを示すACT状態、ACT状態のプログラム面と変数領域の内容のみを同期させる、すなわちミラーリング動作中であることを示すHOT_SBY状態、およびプログラムの待機中、すなわち非走行中であることを示すSBY状態のいずれかが、各プログラム面30および32に対して設定される。
【００１７】
全体制御部20は、本システム10の全体の動作を制御するもので、本実施例ではとくに、アプリケーションソフトウエア14の走行面、ならびに各プログラム面30および32の動作状態を監視して、アプリケーションソフトウエア14に対して、変数領域36および40のメモリ同期指示108を通知し、走行面または各プログラム面の動作状態の切り替え指示110を通知し、さらにデフラグ制御部24に対してデフラグ制御指示104を通知する。デフラグ制御指示104を受けたデフラグ制御部24は、アプリケーションソフトウエア14に対してデフラグ実施112を行う。
【００１８】
また、全体制御部20における走行面管理部26は、アプリケーションソフトウエア14における２つ以上のプログラム面30および32のうち、いずれが走行中であるかの情報を保持し、状態管理部28は、走行面管理部26で管理する走行面に対応して、これらのプログラム面30および32の動作状態を示す情報を保持する。
【００１９】
本実施例の全体制御部20は、周期起動制御部22からの割り込み102に応じて、いずれのプログラム面が走行面であるかを走行面管理部26によって確認して両プログラム面30および32に対して走行面の切り替え指示110をし、ACT状態のプログラム面に対してはSBY状態への切り替え指示110をし、HOT_SBY状態のプログラム面に対してはACT状態への切り替え指示110をする。
【００２０】
また、全体制御部20は、デフラグ制御部24からのデフラグ終了112に応じて、デフラグ実施をしたプログラム面に対して動作状態の切り替え指示110をし、SBY状態のプログラム面に対してHOT_SBY状態への切り替え指示をする。
【００２１】
さらに、全体制御部20は、プログラム面30および32の動作状態を状態管理部28によって確認して、所定のプログラム面がHOT_SBY状態であれば、アプリケーションソフトウエア14に対してメモリ同期指示108を通知して、その所定のプログラム面の変数領域のメモリ内容を他方のプログラム面の変数領域のメモリ内容に同期させる。
【００２２】
また、全体制御部20は、プログラム面30および32の動作状態を状態管理部28によって確認して、所定のプログラム面がSBY状態であれば、デフラグ制御部24に対してデフラグ制御指示104を通知して、その所定のプログラム面の変数領域のデフラグを実施させる。
【００２３】
周期起動制御部22は、所定の周期ごとに割り込み102を発生して全体制御部20に供給し、これによってプログラム面30および32の走行面を切り替えさせる。
【００２４】
デフラグ制御部24は、全体制御部20からのデフラグ制御指示104に応じて、この指示104が示すプログラム面の変数領域に対してデフラグを実行して、メモリハントやメモリフリーによるメモリの断片化を解消する。また、デフラグ制御部24は、そのデフラグ実行が終了すると、全体制御部20に対してデフラグ終了106を通知する。
【００２５】
アプリケーションソフトウエア14は、メモリエリアをプログラム面ごとに分けて構成され、本実施例では２つのプログラム面30および32を有し、以下ではプログラム面30を０面、プログラム面32を１面と称する。このアプリケーションソフトウエア14は、プログラム面30または32のいずれかを走行面とし、この走行面におけるプログラムを実行プログラムとして動作させる。
【００２６】
本実施例のアプリケーションソフトウエア14は、制御ソフトウエア12の全体制御部20から走行面の切り替え指示110を受けると、プログラム面30および32の走行面を切り替え、ACT状態であったプログラム面をSBY状態にし、HOT_SBY状態であったプログラム面をACT状態にする。
【００２７】
また、アプリケーションソフトウエア14は、制御ソフトウエア12の全体制御部20から所定のプログラム面の動作状態の切り替え指示110を受けると、SBY状態であったプログラム面をHOT_SBY状態にする。
【００２８】
プログラム34および38は、本システムの機能を実現するプログラムであり、両プログラム34および38は同一のプログラムである。
【００２９】
変数領域36および40は、プログラムの動作に要する変数などを記憶するメモリであり、それぞれ独立したメモリ領域である。本実施例では、変数領域36はプログラム34が占有して使用する領域でプログラム34の動作に係る変数だけを記憶し、変数領域40はプログラム38が占有して使用する領域でプログラム38の動作に係る変数だけを記憶するものである。すなわち、プログラム34は、領域40にアクセスすることはできず、またプログラム38は、領域36にアクセスすることはできない。
【００３０】
本実施例において、アプリケーションソフトウエア14がアプリケーションソフトウエア14の全体制御部20からメモリ同期指示108を受けると、HOT_SBY状態のプログラム面の変数領域は、そのメモリ内容をACT状態のプログラム面の変数領域のものとミラーリング構成により有機的に同期させて同じ内容の変数を保持する。
【００３１】
次に、本実施例の本システム10によりメモリ断片化を回避する動作例を図２のシーケンスチャートおよび図３のフローチャートを参照しながら説明する。また、この場合に時刻とともに変化する各プログラム面の動作状態を図４の状態遷移図に表す。
【００３２】
本実施例では、まず、本システム10が起動すると、全体制御部20がアプリケーションソフトウエア14における一方のプログラム面、たとえば０面30をACT状態にし、他方のプログラム面、たとえば１面32をHOT_SBY状態にする（S252）。
【００３３】
全体制御部20では、アプリケーションソフトウエア14に対してプログラム走行監視202を実行して、現行の走行面、ならびに各プログラム面30および32の動作状態を確認して、走行面管理部26ならびに状態管理部28に格納する。このとき、時刻t302では、０面30がACT状態であり、１面32がHOT_SBY状態であることを確認できる。
【００３４】
また、このとき、全体制御部20では、一方のプログラム面32がHOT_SBY状態であるので、アプリケーション14に対してメモリ同期指示204（108）を通知し、HOT_SBY状態の変数領域40のメモリ内容を、ACT状態の変数領域36と同期させる。このメモリ同期は、周期起動制御部22から割り込み206（102）があるまで行われる。
【００３５】
次に、ステップS254では、周期起動制御部22で割り込み102が発生したか否かが判定され、発生した場合にはステップS256に進み、それ以外の場合には、ステップS252に戻る。
【００３６】
本実施例では、周期起動制御部22における所定の周期が経過すると、この制御部22で割り込み206（102）が発生して全体制御部20に送られて、ステップS256に進む。
【００３７】
ステップS256では、全体制御部20において、割り込み102に応じて走行面の切り替え指示208（110）がアプリケーション14に送られ、走行面、ならびに各プログラム面30および32の動作状態が切り替わる。本実施例では、ACT状態の０面30がSBY状態に切り替えられ、HOT_SBY状態の１面32がACT状態に切り替えられて、さらにこの１面32が走行面となる（t304）。
【００３８】
このとき、HOT_SBY状態であった１面32の変数領域40が、メモリ同期処理によって、ACT状態であった０面30の変数領域36と同一の内容を保持しているので、走行面の切り替えは、速やかにスムーズに実行することができる。
【００３９】
次に、ステップS258に進み、全体制御部20にて、SBY状態のプログラム面に対するデフラグ指示210（104）がデフラグ制御部24に送られ、デフラグ制御部24ではこのデフラグ指示210（104）に応じて、アプリケーション14におけるSBY状態のプログラム面、すなわち０面30に対してデフラグ実施212（112）が行われ、０面30の変数領域36におけるメモリ断片化が解消される。
【００４０】
また、全体制御部20では、デフラグ制御部24のデフラグ実施212（112）が終了したか否かが判定され（S260）、終了した場合にはステップS262に進み、それ以外の場合にはステップS258に戻る。
【００４１】
本実施例では、このデフラグ実施212（112）が終了すると、デフラグ制御部24において、全体制御部20に対してデフラグ終了214（106）が通知され、ステップS262に進む。
【００４２】
このステップS262では、全体制御部20において、デフラグ実施112が終了したプログラム面、すなわち０面30に対する動作状態の切り替え指示216（110）がアプリケーション14に送られ、０面30の動作状態がSBY状態からHOT_SBY状態に切り替えられる（t306）。
【００４３】
その後、全体制御部20では、上記と同様にしてアプリケーション14に対してプログラム走行監視218を実行して、現行の走行面および各プログラム面の動作状態を確認して走行面管理部26および状態管理部28に格納する。このとき、時刻t306では、０面30がHOT_SBY状態であり、１面32がACT状態であることを確認できる。
【００４４】
このとき、０面30がHOT_SBY状態であるので、全体制御部20では、アプリケーション14に対してメモリ同期指示220（108）を通知し、HOT_SBY状態の変数領域36のメモリ内容を、ACT状態の変数領域40と同期させる。
【００４５】
次に、ステップS264に進み、ステップS254と同様にして、周期起動制御部22で割り込み102が発生したか否かが判定され、本実施例では、この制御部22において所定の周期が経過して割り込み222（102）が発生して全体制御部20に送られて、ステップS266に進む。
【００４６】
ステップS266では、ステップS256と同様にして、全体制御部20において、割り込み222（102）に応じて走行面の切り替え指示224（110）がアプリケーション14に送られて、本実施例のアプリケーション14では、ACT状態の１面32がSBY状態に切り替えられ、HOT_SBY状態の０面30がACT状態に切り替えられて、さらにこの０面30が走行面となる（t308）。
【００４７】
次に、ステップS268に進み、ステップS258と同様にして、デフラグ指示226（104）が全体制御部20からデフラグ制御部24に送られ、デフラグ制御部24ではこの指示104に応じて、アプリケーション14におけるSBY状態の１面32に対してデフラグ実施228（112）が行われ、１面32の変数領域40におけるメモリ断片化が解消される。
【００４８】
また、全体制御部20では、ステップS260と同様にして、デフラグ制御部24のデフラグ実施112が終了したか否かが判定され（S270）、このデフラグ実施228（112）が終了すると、デフラグ制御部24から全体制御部20に対してデフラグ終了230（106）が通知され、ステップS272に進む。
【００４９】
ステップS272では、ステップS262と同様にして、デフラグ実施112が終了した１面32に対する動作状態の切り替え指示232（110）が全体制御部20からアプリケーション14に送られ、１面32の動作状態がSBY状態からHOT_SBY状態に切り替えられる（t310）。
【００５０】
本システム10では、その後、ステップS252に戻って上記の処理が繰り返されてプログラム面30および32を交互に切り替えて、プログラム34および38が順次実行される。本システム10は、このようにして停止することなく処理を続行しつつ、変数領域36および40のメモリ断片化を効率よく解消することができる。
【００５１】
本発明のノンストッププログラムシステムは、たとえば医療機器や人工衛星、または無人ロケットなどの、電源の入れ直しや再起動をすることが困難な自立式稼動システム、すなわちノンストッププログラムを必要とするいかなるシステムにも適用することができ、そのプログラムの実行により生じるメモリ断片化を効率よく解消することができる。
【図面の簡単な説明】
【００５２】
【図１】本発明に係るノンストッププログラムシステムの一実施例を示すブロック図である。
【図２】図１に示す実施例のノンストッププログラムシステムにおける動作手順を説明するシーケンスチャートである。
【図３】図１に示す実施例のノンストッププログラムシステムにおける動作手順を説明するフローチャートである。
【図４】図１に示す実施例のシステムのアプリケーションソフトウエアにおける各プログラム面の動作状態を示す状態遷移図である。
【符号の説明】
【００５３】
10  ノンストッププログラムシステム
12  制御ソフトウエア
14  アプリケーションソフトウエア
20  全体制御部
22  周期起動制御部
24  デフラグ制御部
26  走行面管理部
28  状態管理部
30、32  プログラム面
34、38  プログラム
36、40  変数領域
【図１】
2009093311.tif 000003
【図２】
2009093311.tif 000004
【図３】
2009093311.tif 000005
【図４】
2009093311.tif 000006