(57)【要約】【課題】アプリケーションを安定して動作させることができるプロセス管理プログラムおよびプロセス管理装置を提供する。【解決手段】プロセス管理プログラムは、ＯＳ６上においてアプリケーションを実行中にバックグラウンドで動作することにより、プロセス管理装置１０としての機能をコンピュータ１に実現させる。プロセス管理装置１０は、実行中のプロセスの使用時間、メモリ使用量やメモリ占有率など、実行中のプロセスの状態を示す状態情報をＯＳ６から取得する状態取得部１１と、状態情報の履歴をログ情報として記録するログ取得部１２と、制御部１３とを有する。制御部１３は、プロセスのメモリ使用量が予め設定されている規定値に達した場合に、アプリケーションの動作を妨げないように状態情報およびログ情報に基づいて選択されるプロセスを停止するためのプロセス停止信号を出力する。【選択図】図１
2011186739.tif 000002
【特許請求の範囲】
【請求項１】
マルチタスクのオペレーティングシステム上においてアプリケーションプログラムを実行中にバックグラウンドで動作するプログラムであって、前記オペレーティングシステムから実行中のプロセスの状態を示す状態情報を取得する状態取得部と、前記状態情報の履歴をログ情報として記録するログ取得部と、プロセスのメモリ使用量が予め設定されている規定値に達した場合に、前記アプリケーションプログラムの動作を妨げないように前記状態情報および前記ログ情報に基づいて選択されるプロセスを停止するためのプロセス停止信号を出力する制御部とをコンピュータに実現させることを特徴とするプロセス管理プログラム。
【請求項２】
前記制御部は、プロセスのメモリ使用量が前記規定値に達した場合に、前記プロセス停止信号により選択された停止候補のプロセスを示す確認メッセージを提示するとともに、停止候補中から選択されたプロセスを停止させるユーザモードと、プロセスのメモリ使用量が前記規定値に達した場合に、前記プロセス停止信号により選択されたプロセスを自動的に停止する自動モードとの２つの動作モードを切替可能であることを特徴とする請求項１記載のプロセス管理プログラム。
【請求項３】
前記ログ取得部は、前記オペレーティングシステムの起動時からタイマを始動し、ユーザ情報と前記オペレーティングシステム起動後に開始したプロセスの開始時間と終了時間とを前記ログ情報として記録することを特徴とする請求項１または請求項２に記載のプロセス管理プログラム。
【請求項４】
前記ログ取得部は、前記オペレーティングシステムの起動時からタイマを始動し、ユーザ情報と前記オペレーティングシステム起動後に開始したプロセスのメモリ使用量およびメモリ占有率の時間変化とを前記ログ情報として記録することを特徴とする請求項１ないし請求項３のいずれか１項に記載のプロセス管理プログラム。
【請求項５】
前記ログ取得部は、プロセスのメモリ使用量が前記規定値に達した時点における各プロセスのメモリ使用量を前記ログ情報として記録することを特徴とする請求項１記載のプロセス管理プログラム。
【請求項６】
前記ログ取得部は、複数のユーザに対応するようにそれぞれユーザごとに対応付けられた複数の前記ログ情報を記録することを特徴とする請求項１ないし請求項５のいずれか１項に記載のプロセス管理プログラム。
【請求項７】
前記ログ取得部は、前記ログ情報を更新する頻度が変更可能であることを特徴とする請求項１ないし請求項６のいずれか１項に記載のプロセス管理プログラム。
【請求項８】
マルチタスクのオペレーティングシステム上においてアプリケーションプログラムを実行中のコンピュータに接続され、前記オペレーティングシステムから実行中のプロセスの状態を示す状態情報を取得する状態取得部と、前記状態情報の履歴をログ情報として記録するログ取得部と、プロセスのメモリ使用量が予め設定されている規定値に達した場合に、前記アプリケーションプログラムの動作を妨げないように前記状態情報および前記ログ情報に基づいて選択されるプロセスを停止するためのプロセス停止信号を出力する制御部とを備えることを特徴とするプロセス管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステム上で実行中のプロセスを管理するプロセス管理プログラムおよびプロセス管理装置に関するものである。
【背景技術】
【０００２】
従来から、汎用のオペレーティングシステム（以下、「ＯＳ」という）でアプリケーションを起動する際、ＯＳがメモリの管理および制御をすることにより複数のアプリケーションや複数のプロセスを同時に実行可能とするマルチタスクの技術が知られている。なお、ここでいうアプリケーションはアプリケーションプログラムを意味している。
【０００３】
ところで、ファクトリオートメーション（以下、「ＦＡ」という）のような検査現場において実行するアプリケーションは各種検査に特有のものであり、ユーザによっては全く必要ない機能（タスク）が含まれている場合でも全ての機能が実行されることがある。そのため、メモリ管理をＯＳ任せで行っていると、アプリケーションの動作が遅くなったりフリーズしたりして、アプリケーションの動作が不安定になることがある。
【０００４】
また、ＦＡに限らず、アプリケーションが起動・終了を繰り返していると、本来必要のないデータ（所謂「ごみ」）がメモリ上に残り、限られたメモリ領域を無駄に使用し、利用可能なメモリ領域が減少するメモリリーク現象を引き起こすことがある。このようなメモリリーク現象が生じた場合にも、アプリケーションの動作は不安定になる。
【０００５】
上述のようにアプリケーションの動作が不安定になった場合、一般的には、ＣＰＵ（中央演算処理装置）任せでプロセスの処理を行うか、実行中のタスクを管理するツールを起動してユーザが不要なタスクを終了させることにより対応する（たとえば特許文献１参照）。あるいは、コストはかかるがメモリを余分に搭載しておくことにより対応することも考えられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２８５８７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したようなアプリケーションの動作が不安定になる現象は、家庭でパーソナルコンピュータを使用する場合や、ユーザが常時コンピュータを監視できるような状況下では、さほど大きな問題とはならない。しかし、たとえばＦＡのようにリアルタイム性や常時稼働が重要視される設備においては、上述したような動作が不安定になる現象は大きな問題となり得る。
【０００８】
すなわち、ＦＡにおいては、検査途中でリアルタイム性が損なわれると、その検査のタクトタイムに間に合わなかったり、検査装置を止める必要が生じたりするという事態が起こり得る。場合によっては、十分な検査が実行されずに次の工程に移行してしまうという不具合も生じ得る。
【０００９】
本発明は上記事由に鑑みて為されたものであって、アプリケーションを安定して動作させることができるプロセス管理プログラムおよびプロセス管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために第１の発明のプロセス管理プログラムでは、マルチタスクのオペレーティングシステム上においてアプリケーションプログラムを実行中にバックグラウンドで動作するプログラムであって、前記オペレーティングシステムから実行中のプロセスの状態を示す状態情報を取得する状態取得部と、前記状態情報の履歴をログ情報として記録するログ取得部と、プロセスのメモリ使用量が予め設定されている規定値に達した場合に、前記アプリケーションプログラムの動作を妨げないように前記状態情報および前記ログ情報に基づいて選択されるプロセスを停止するためのプロセス停止信号を出力する制御部とをコンピュータに実現させることを特徴とする。
【００１１】
第２の発明のプロセス管理プログラムは、第１の発明において、前記制御部は、プロセスのメモリ使用量が前記規定値に達した場合に、前記プロセス停止信号により選択された停止候補のプロセスを示す確認メッセージを提示するとともに、停止候補中から選択されたプロセスを停止させるユーザモードと、プロセスのメモリ使用量が前記規定値に達した場合に、前記プロセス停止信号により選択されたプロセスを自動的に停止する自動モードとの２つの動作モードを切替可能であることを特徴とする。
【００１２】
第３の発明のプロセス管理プログラムは、第１または第２の発明において、前記ログ取得部は、前記オペレーティングシステムの起動時からタイマを始動し、ユーザ情報と前記オペレーティングシステム起動後に開始したプロセスの開始時間と終了時間とを前記ログ情報として記録することを特徴とする。
【００１３】
第４の発明のプロセス管理プログラムは、第１ないし第３のいずれかの発明において、前記ログ取得部は、前記オペレーティングシステムの起動時からタイマを始動し、ユーザ情報と前記オペレーティングシステム起動後に開始したプロセスのメモリ使用量およびメモリ占有率の時間変化とを前記ログ情報として記録することを特徴とする。
【００１４】
第５の発明のプロセス管理プログラムは、第１の発明において、前記ログ取得部は、プロセスのメモリ使用量が前記規定値に達した時点における各プロセスのメモリ使用量を前記ログ情報として記録することを特徴とする。
【００１５】
第６の発明のプロセス管理プログラムは、第１ないし第５のいずれかの発明において、前記ログ取得部は、複数のユーザに対応するようにそれぞれユーザごとに対応付けられた複数の前記ログ情報を記録することを特徴とする。
【００１６】
第７の発明のプロセス管理プログラムは、第１ないし第６のいずれかの発明において、前記ログ取得部は、前記ログ情報を更新する頻度が変更可能であることを特徴とする。
【００１７】
第８の発明のプロセス管理装置では、マルチタスクのオペレーティングシステム上においてアプリケーションプログラムを実行中のコンピュータに接続され、前記オペレーティングシステムから実行中のプロセスの状態を示す状態情報を取得する状態取得部と、前記状態情報の履歴をログ情報として記録するログ取得部と、プロセスのメモリ使用量が予め設定されている規定値に達した場合に、前記アプリケーションプログラムの動作を妨げないように前記状態情報および前記ログ情報に基づいて選択されるプロセスを停止するためのプロセス停止信号を出力する制御部とを備えることを特徴とする。
【発明の効果】
【００１８】
本発明は、アプリケーションを安定して動作させることができるという利点がある。
【図面の簡単な説明】
【００１９】
【図１】実施形態の構成を示す概略ブロック図である。
【図２】同上の動作を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下の実施形態では、ＣＰＵ（中央演算処理装置）が実行する処理の単位をプロセスとし、このプロセスという語にはタスクやジョブの意味も含むものとする。
【００２１】
本実施形態のプロセス管理プログラムは、図１に示すように表示部３および入力部４を含むユーザインタフェース２を備えた汎用のコンピュータ１に実行されるものである。
【００２２】
コンピュータ１は、基本入出力システム（ＢＩＯＳ）５が付随した汎用のオペレーティングシステム（以下、「ＯＳ」という）６が搭載されており、このＯＳ６上で複数のアプリケーション７１〜７Ｘを同時に実行可能に構成される。ここでいうアプリケーションはアプリケーションプログラムを意味している。すなわち、ＯＳ６は複数のプロセスを同時（擬似的同時でもよい）に実行可能なマルチタスクのＯＳとする。なお、本実施形態では、ファクトリオートメーション（以下、「ＦＡ」という）のような検査現場で使用されるＷｉｎｄｏｗｓ  ＣＥ（登録商標）などの組み込み機器向けのＯＳを用いるものとするが、この種のＯＳに限るものではない。
【００２３】
ＯＳ６は、アプリケーション起動と同時にタイマを起動し、タイマを参照しながら実行待ち状態にあるプロセスに対して短時間ずつ実行権限を与えることにより、複数のアプリケーション７１〜７Ｘを同時に実行可能とする。
【００２４】
プロセス管理プログラムは、ＯＳ６上においてアプリケーション７１〜７Ｘを実行中にバックグラウンドで動作するツール（プログラム）であって、プロセス管理装置１０としての機能をコンピュータ１に実現させるものである。
【００２５】
プロセス管理装置１０は、プロセスの使用時間、各プロセスのメモリ使用量やメモリ占有率など、実行中のプロセスの状態を示す情報を状態情報としてＯＳ６から取得する状態取得部１１を有する。さらにプロセス管理装置１０は、状態取得部１１で取得した状態情報の履歴をログ情報として記録するログ取得部１２と、アプリケーション７１〜７Ｘの動作が遅くなったりフリーズしたりすることを防止するためのプロセス制御処理を行う制御部１３とを有する。
【００２６】
状態取得部１１は、アプリケーション７１〜７Ｘが実行される度に上述したような状態情報を取得する。ログ取得部１２は、ＯＳ６の起動時から始動するタイマを利用して、ＯＳ６起動後に開始したプロセスの開始時間と終了時間、並びにＯＳ６起動後に開始したプロセスのメモリ使用量およびメモリ占有率の時間変化をログ情報として記録する。本実施形態では、コンピュータ１が複数のユーザに使用されることを前提とし、ログ取得部１２はＯＳ６からユーザを識別するためのユーザＩＤ（ユーザ情報）を取得して、ユーザＩＤごとにログ情報を記録するものとする。
【００２７】
制御部１３は、プロセスのメモリ使用量が予め設定されている規定値に達した場合に、アプリケーションの動作を妨げないように状態情報およびログ情報に基づいて選択されるプロセスを停止するためのプロセス停止信号を出力し、プロセス制御処理を行う。
【００２８】
ログ取得部１２では、ログ情報を更新することにより、各プロセスの過去の使用履歴（使用頻度など）を学習している。すなわち、ログ情報には、たとえば使用頻度の高いプロセスや実行時間の長いプロセス、メモリ占有率の高いプロセスなどの情報が反映されることになる。ログ情報は、メモリ（図示せず）内のログ記憶領域に格納され、状態取得部１１が新たな状態情報を取得する度に新たな状態情報を反映するように更新される。要するに、ログ取得部１２は、どのような状況でどのプロセスを停止させることが望ましいかという情報をログ情報として定め、学習を繰り返すことによりプロセス制御処理において停止させるプロセスを判定する判定基準を生成する。
【００２９】
本実施形態では、ログ取得部１２は状態取得部１１が状態情報を取得する度に毎回、状態情報に基づいてログ情報を更新するものとするが、この構成に限らず、ログ情報の更新の頻度を適宜変更可能な構成としてもよい。たとえば、ログ取得部１２は、状態情報を取得する度にログ情報の更新を行うか、状態情報を規定回数取得する度にログ情報の更新を行うか、若しくは１回のみログ情報の更新を行うかを、ユーザによって選択可能な構成とすることができる。ログ取得部１２は、このようにログ情報の更新頻度を変更可能とすることにより、保存しておくログ情報のサイズを変更可能となる。
【００３０】
学習に使用されるアルゴリズムはいくつかあるが、プロセス管理装置１０の運用開始直後は最適な閾値や比較するデータが存在しないため、強化学習アルゴリズムを用い、ログ情報を蓄積することによってよく使用されるプロセスの優先度を高くする。ある程度ログ情報が蓄積された場合や、比較対象の情報ファイルが存在する場合は、ＳＯＭ（自己組織化マップ）アルゴリズムを使うなど、状況に応じて使用するアルゴリズムを変更することによって、より精度の高いプロセス制御処理が可能となる。いずれのアルゴリズムでも、与えられる状態情報が多いほど精度がよくなるので、プロセス管理装置１０は学習を繰り返すほどにプロセス制御処理の精度が向上する。
【００３１】
ところで、制御部１３の動作モードには、停止するプロセスをユーザが決定するユーザモードと、プロセスを自動的に停止する自動モードとの２つのモードがある。いずれの動作モードにおいても、制御部１３は、プロセスのメモリ使用量が規定値を超えないようにプロセスを管理する。
【００３２】
ユーザモードでは、制御部１３は、メモリ使用量が規定値に達すると、第１プロセス停止信号をＯＳ６に出力する。第１プロセス停止信号を受けたＯＳ６は、ユーザに対する確認メッセージをユーザインタフェース２の表示部３に表示することにより、停止するプロセスをユーザに選択させ、入力部４を用いてユーザが選択したプロセスを停止する。表示部３に表示される確認メッセージは、停止させることによってアプリケーションの動作が遅くなったりフリーズしたりすることを防止するために必要な作業用メモリの空きを生じるプロセスを、停止候補として少なくとも１つ提示するものとする。このとき停止候補として提示されるプロセスは、現在実行中のプロセスの状態情報とログ取得部１２が記録したログ情報とに基づいて決定される。なお、停止候補として提示されるプロセスを、ユーザが予め指定しておくことも考えられる。
【００３３】
自動モードでは、制御部１３は、メモリ使用量が規定値に達すると、状態情報をログ情報に照らし合わせることにより停止しても問題のないプロセスを少なくとも１つ選択し、選択したプロセスを指定する第２プロセス停止信号をＯＳ６に出力する。第２プロセス停止信号を受けたＯＳ６は、第２プロセス停止信号で指定されたプロセスを自動的に停止させる。このとき停止させるプロセスは、少なくとも、アプリケーションの動作が遅くなったりフリーズしたりすることを防止するために必要なメモリの空きを生じるプロセスとする。
【００３４】
このように、制御部１３は、実行中のプロセスの中から停止させるプロセスを現在の状態情報とログ取得部１２が記録したログ情報とに基づいて選択し、選択されたプロセスを手動または自動で停止させる。ログ情報には各プロセスの過去の使用履歴が反映されているので、結果的に、実際のユーザによるプロセスの使用状況に応じて、停止させるプロセスを決定することが可能である。なお、優先度の高いプロセスを予め登録しておくことにより、登録済みのプロセスについてはプロセス制御処理において停止させることがないような構成とすることも考えられる。この場合、優先度の高いプロセスはたとえば初期設定時にユーザにより登録されるものとする。
【００３５】
制御部１３の動作モードは、ＯＳ６起動後のユーザの操作により任意に切り替えることができるものとする。ユーザモードでは、停止させるプロセスを最終的にユーザが判断するため、制御部１３は、ユーザにとって不必要なプロセスを適切に終了させることができる。一方、自動モードでは、ユーザが常時コンピュータ１を監視できないような状況下でも、アプリケーションの動作を安定させるために必要なプロセスの終了処理を自動的に行うことができる。
【００３６】
さらに、制御部１３は、いずれかのプロセスを強制的に終了させた後で、実行中のプロセスが終了するなどしてメモリに十分な空きを生じた場合、強制的に終了させたプロセスを自動的に再開させる処理を行う構成としてもよい。すなわち、強制的に終了させたプロセスを再開させてもメモリ使用量が規定値に達しない程度にメモリ使用量が低下した場合、制御部１３は、強制的に終了させたプロセスを自動的に再開させる。これにより、メモリ使用量が低下したままの状態が継続することを回避し、メモリを有効に利用してプロセスを実行できるという利点がある。
【００３７】
なお、メモリ使用量と比較される規定値は、実行される検査の内容やプロセス管理プログラムをインストールするコンピュータ１の仕様等に合わせて適宜変更されるものとする。さらに、この規定値は、ユーザがコンピュータ１上で任意に設定および変更できるものとしてもよい。
【００３８】
次に、プロセス管理プログラムを実行することによりプログラム管理装置１０としての機能を実現したコンピュータ１の動作について、図２のフローチャートを参照して説明する。
【００３９】
ＯＳ６が起動すると（Ｓ１）、プロセス管理プログラムが起動し（Ｓ２）、プロセス管理装置１０は、まず現在コンピュータ１を使用しているユーザのユーザＩＤをＯＳ６から取得する（Ｓ３）。さらに、プロセス管理装置１０は、初期設定の読み出しを行って（Ｓ４）、プロセス制御処理のトリガとなるメモリ使用量の規定値や、ログ情報の更新頻度や、プロセス制御処理の対象から外す（停止させない）プロセスなどを設定する。
【００４０】
それから、プロセス管理装置１０は、制御部１３をユーザモードと自動モードとのいずれの動作モードで動作させるかの設定を行い（Ｓ５）、さらにログ取得部１２の学習に使用するアルゴリズム等も決定して、タイマカウントを開始する（Ｓ６）。
【００４１】
その後、プロセス管理装置１０は、新規のプロセスが発生していないかをチェックする（Ｓ７）。新規のプロセスが発生していなければ（Ｓ７：Ｎｏ）、続いて、プロセス管理装置１０は終了したプロセスの有無をチェックする（Ｓ８）。終了したプロセスがなければ（Ｓ８：Ｎｏ）、プロセス管理装置１０は新規のプロセスの有無をチェックする処理（Ｓ７）に戻り、同様の処理を繰り返す。プロセス管理装置１０は、タイマのカウント値を確認することによって終了したプロセスの有無を判断し、プロセスの使用時間が経過した時点でこのプロセスは終了したものと判断する。なお、プロセスが終了したときに次のプロセスを開始するタイミングを示すイベントフラグが発生する場合には、イベントフラグが立っているか否かでプロセスの終了を判断してもよい。
【００４２】
新規のプロセスがある（Ｓ７：Ｙｅｓ）、または終了したプロセスがあれば（Ｓ８：Ｙｅｓ）、プロセス管理装置１０は、プロセス制御処理により停止中のプロセスがあるか否かを確認し、停止中のプロセスがあればそのプロセスを再開（再起動）する（Ｓ９）。それから、プロセス管理装置１０は、実行中のプロセス、さらにメモリ使用量等の状態情報をＯＳ６から取得して（Ｓ１０）、取得した状態情報に基づいてログ情報を更新し（Ｓ１１）、メモリ使用量の判定を行う（Ｓ１２）。
【００４３】
ここで、メモリ使用量が規定値に達している場合（Ｓ１２：Ｎｏ）、プロセス管理装置１０は、プロセス制御処理に移行し、状態情報およびログ情報に基づいていずれかのプロセスを停止させる（Ｓ１３）。一方、プロセス管理装置１０は、メモリ使用量が設定値に達していなければ（Ｓ１２：Ｙｅｓ）、新規のプロセスの有無をチェックする処理（Ｓ７）に戻る。
【００４４】
以上説明した構成のプロセス管理装置１０によれば、メモリ使用量が規定値に達するような場合に、制御部１３がいずれかのプロセスを強制的に停止させてメモリ領域の空きを作るため、アプリケーションＡ１〜ＡＸの動作を安定して動作させることができる。したがって、アプリケーションＡ１〜ＡＸの動作が遅くなったり、フリーズしたりするといった現象を回避することができる。その結果、ＦＡのようにリアルタイム性や常時稼働が重要視される設備においても、信頼性の高い安定した動作を保障できるという利点がある。
【００４５】
しかも、プロセス制御処理に用いるログ情報は、状態取得部１１が状態情報を取得する度にログ取得部１２が更新するものであるから、ユーザによるプロセスの使用履歴に適応したプロセス制御処理が可能である。要するに、プロセスの優先度はユーザによって様々であるが、実際の使用履歴に合わせて更新されたログ情報を使用することにより、ユーザにとって優先度の低いプロセスを適切に終了させることが可能になる。
【００４６】
また、制御部１３がプロセスをユーザに終了させるユーザモードと、プロセスを自動的に終了する自動モードとの２つのモードで動作可能であるから、状況に応じて動作モードを切り替えることにより最適なプロセス制御を実現できる。すなわち、ユーザが常時コンピュータ１を監視できる状況下ではユーザモードとし、ユーザが常時コンピュータ１を監視できないような状況下では自動モードとすることで、いずれの状況でも迅速な措置をとることが可能となる。
【００４７】
さらにまた、ログ取得部１２は、プロセスの開始時間と終了時間、並びにプロセスのメモリ使用量およびメモリ占有率の時間変化をログ情報として記録しており、このログ情報に基づいてプロセス制御処理が行われる。したがって、プロセス制御処理において、頻繁に使用されるプロセスや、メモリ使用量が少なくアプリケーションＡ１〜ＡＸの動作を不安定にする原因となり得ないようなプロセスが、誤って停止されてしまうことを回避できる。
【００４８】
また、ログ取得部１２は、実行中のプロセスのメモリ使用量が規定値に達した時点における各プロセスのメモリ使用量についても、ログ情報として記録する構成であってもよい。これにより、ログ取得部１２は、プロセスのメモリ使用量が規定値に達した異常時における各プロセスの状況をログ情報として残すことができるので、その後のプロセス制御処理の精度が向上する。
【００４９】
なお、上記実施形態では、コンピュータ１にプロセス管理プログラムを実行させることによりプロセス管理装置１０としての機能を実現する例を示したが、この例に限らず、ハードウェアにてプロセス管理装置１０を構成するようにしてもよい。
【符号の説明】
【００５０】
１  コンピュータ
６  ＯＳ（オペレーティングシステム）
１０  プロセス管理装置
１１  状態取得部
１２  ログ取得部
１３  制御部
【図１】
2011186739.tif 000003
【図２】
2011186739.tif 000004