(57)【特許請求の範囲】
【請求項１】
プログラムの作業領域として用いられるメモリーと、
第１のモードと第２のモードとの切り替えが可能とされ、
前記第１のモード時、前記メモリーに常駐する常駐プログラムを検出し、
当該常駐プログラムの識別情報を常駐プログラム情報として保存し、
前記第２のモード時、前記作業領域の確保を要求した要求元プログラムが前記常駐プログラムであるか否かを、当該要求元プログラムの識別情報と前記常駐プログラム情報とを比較して判断し、
前記常駐プログラムとして判断された１以上の前記要求元プログラムの各々の前記作業領域を前記メモリーに連続的に確保する制御部と
を備えた情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記制御部は、
前記常駐プログラムの前記作業領域の確保を、前記メモリーの最高位アドレスおよび最低位アドレスのうち、いずれか一方を開始点として開始し、
前記常駐プログラム以外の前記作業領域の確保を、前記メモリーの最高位アドレスおよび最低位アドレスのうち、前記開始点と反対側を開始点として開始する
情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置であって、
前記制御部は、
前記第１のモードでは、
前記情報処理装置の起動後、ユーザーによる明示的な指示によっては前記プログラムを起動せず、特定の期間、前記制御部の負荷の変動率が予め定められた値以下である状態において起動しているプログラムを、前記常駐プログラムとして検出する
情報処理装置。
【請求項４】
請求項１または２に記載の情報処理装置であって、
前記制御部は、
前記第１のモードでは、
前記情報処理装置の起動後、ユーザーによる明示的な指示によっては前記プログラムを起動せず、特定の期間、前記制御部の負荷が予め定められた値以下である状態において起動しているプログラムを、前記常駐プログラムとして検出する
情報処理装置。
【請求項５】
請求項１または２に記載の情報処理装置であって、
前記制御部は、
前記第１のモードでは、
前記常駐プログラムを自動的に起動するための設定ファイルに基づいて、前記常駐プログラムを検出する
情報処理装置。
【請求項６】
第１のモードと第２のモードとの切り替えが可能とされる制御部が、
前記第１のモード時、プログラムの作業領域として用いられるメモリーに常駐する常駐プログラムを検出し、当該常駐プログラムの識別情報を常駐プログラム情報として保存し、
前記第２のモード時、前記作業領域の確保を要求した要求元プログラムが前記常駐プログラムであるか否かを、当該要求元プログラムの識別情報と前記常駐プログラム情報とを比較して判断し、前記常駐プログラムとして判断された１以上の前記要求元プログラムの各々の前記作業領域を前記メモリーに連続的に確保する
メモリー管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリー上へデータを配置する情報処理装置およびメモリー管理方法に関する。
【背景技術】
【０００２】
従来より、効率的なメモリーの管理方法が求められてきた。例えば、空きメモリーの断片化を最小限に抑えるために、特許文献１に開示されたデータベース演算処理装置では、メモリーに格納するデータを、実際の処理データとその処理のために必要なパラメーターの２種類に分類している。
【０００３】
そして、これらのデータがメモリー上で混在しないように、一方を高位アドレスから配置し、もう一方を低位アドレスから配置するようにしている。こうすることにより、メモリー上での特性（確保されている期間など）が異なるデータ用のメモリー領域を分けることによりメモリーの断片化を低減させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−３２４４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１において開示されたデータベース演算処理装置は、データベース内の、実際の処理データおよび処理に必要なパラメーターという限定されたデータに対して、ソートなど限定された処理を行うものであり、汎用性が無かった。
【０００６】
また、メモリーを使用する一般的な情報処理装置において汎用性を持たせてメモリーの断片化を低減させるという効果を得る為には、メモリーを使用するプログラムのソースコードを改変する手間がかかってしまうという問題があった。逆に言うならば、改変するソースコードを入手できなければ、特許文献１の技術に汎用性を持たせることは出来なかった。
【０００７】
以上のような事情に鑑み、本発明の目的は、汎用性のあるメモリー管理を手間無く行うことが出来る情報処理装置およびメモリー管理方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明の一形態に係る情報処理装置は、プログラムの作業領域として用いられるメモリーと、第１のモードと第２のモードとの切り替えが可能とされ、前記第１のモード時、前記メモリーに常駐する常駐プログラムを検出し、当該常駐プログラムの識別情報を常駐プログラム情報として保存し、前記第２のモード時、前記作業領域の確保を要求した要求元プログラムが前記常駐プログラムであるか否かを、当該要求元プログラムの識別情報と前記常駐プログラム情報とを比較して判断し、前記常駐プログラムとして判断された１以上の前記要求元プログラムの各々の前記作業領域を前記メモリーに連続的に確保する制御部とを備える。
【０００９】
上記目的を達成するため、本発明の一形態に係る情報処理装置では、前記制御部は、前記常駐プログラムの前記作業領域の確保を、前記メモリーの最高位アドレスおよび最低位アドレスのうち、いずれか一方を開始点として開始し、前記常駐プログラム以外の前記作業領域の確保を、前記メモリーの最高位アドレスおよび最低位アドレスのうち、前記開始点と反対側を開始点として開始する構成でもよい。
【００１０】
上記目的を達成するため、本発明の一形態に係る情報処理装置では、前記制御部は、前記第１のモードでは、前記情報処理装置の起動後、ユーザーによる明示的な指示によっては前記プログラムを起動せず、特定の期間、前記制御部の負荷の変動率が予め定められた値以下である状態において起動しているプログラムを、前記常駐プログラムとして検出する構成でもよい。
【００１１】
上記目的を達成するため、本発明の一形態に係る情報処理装置では、前記制御部は、前記第１のモードでは、前記情報処理装置の起動後、ユーザーによる明示的な指示によっては前記プログラムを起動せず、特定の期間、前記制御部の負荷が予め定められた値以下である状態において起動しているプログラムを、前記常駐プログラムとして検出する構成でもよい。
【００１２】
上記目的を達成するため、本発明の一形態に係る情報処理装置では、前記制御部は、前記第１のモードでは、前記常駐プログラムを自動的に起動するための設定ファイルに基づいて、前記常駐プログラムを検出する構成でもよい。
【００１３】
上記目的を達成するため、本発明の一形態に係るメモリー管理方法では、第１のモードと第２のモードとの切り替えが可能とされる制御部が、前記第１のモード時、プログラムの作業領域として用いられるメモリーに常駐する常駐プログラムを検出し、当該常駐プログラムの識別情報を常駐プログラム情報として保存し、前記第２のモード時、前記作業領域の確保を要求した要求元プログラムが前記常駐プログラムであるか否かを、当該要求元プログラムの識別情報と前記常駐プログラム情報とを比較して判断し、前記常駐プログラムとして判断された１以上の前記要求元プログラムの各々の前記作業領域を前記メモリーに連続的に確保する。
【発明の効果】
【００１４】
以上のように、本発明によれば、汎用性のあるメモリー管理を手間無く行うことが出来る。
【図面の簡単な説明】
【００１５】
【図１】情報処理装置１０として、一般的なコンピューターを用いた場合のブロック図である。
【図２】作業領域が、常駐プログラムのもの（Ｒ１、Ｒ２、Ｒ３）と非常駐プログラムのもの（Ｎ１、Ｎ２）とで、大きく高位アドレス側と低位アドレス側とに分けられてＲＡＭ１３上に配置された状態を示す図である。
【図３】図２の状態から、さらに常駐プログラム用の作業領域Ｒ４を確保した状態を示す図である。
【図４】常駐プログラム検出モードにおける処理の流れを説明するためのフローチャートである。
【図５】通常モードにおける処理の流れを説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００１７】
［概要］
まず、本実施形態の概要について説明する。本実施形態では、情報処理装置として、主に一般的なコンピューター、特にＰＣ（Personal Computer）を想定している。
【００１８】
本実施形態にかかる情報処理装置は、情報処理装置上で実行されるプログラムを常駐プログラムと非常駐プログラムの２種類に分類し、それぞれの種類ごとに、プログラムが要求する作業領域をメモリー上に確保する場所を分けることにより、メモリーの断片化を低減させるものである。
【００１９】
常駐プログラムではメモリー上に確保された作業領域が情報処理装置の起動から終了までの長期間に亘り使用されるのに対し、非常駐プログラムでは、ユーザーによりそのプログラムが明示的に起動されてから終了されるまでの短時間のみメモリー上に確保された作業領域が使用される。
【００２０】
すなわち、常駐プログラムと非常駐プログラムでは、メモリー上に確保される作業領域が長時間使用されるか、短時間使用されるかの違いがある。本実施形態では、この違いに着目し、常駐プログラムと非常駐プログラムとで、作業領域をメモリー上の異なる領域に確保することで、長時間使用される作業領域の間に短時間で解放される作業領域が挟まれることによる断片化を低減するようにしている。
【００２１】
なお、本実施形態では、非常駐プログラムは、ユーザーなどによりプログラムが終了する際、メモリー上に確保し使用していた作業領域を開放することを前提としている。
【００２２】
本実施形態の情報処理装置では、まず常駐プログラム検出モード（第１のモード）において常駐プログラムを検出し、常駐プログラムのリスト（常駐プログラム情報）を作成する。そして、常駐プログラム検出モードを終了後、情報処理装置を通常モード（第２のモード）に変更する。
【００２３】
通常モードでは、情報処理装置は作成されたリストに従い、常駐プログラムがメモリー上に確保する作業領域と、非常駐プログラムがメモリー上に確保する作業領域を分けることにより、メモリー上の作業領域の断片化を低減させながら、様々なプログラムを実行する。
【００２４】
なお、常駐プログラム検出モードから通常モードへの移行は、ユーザーからの明示的な指示により情報処理装置のモード設定を変更後、情報処理装置を再起動することにより行われてもよい。
【００２５】
以上、本実施形態の概要について説明した。
【００２６】
［常駐プログラムについて］
ここでは常駐プログラムについて説明する。
【００２７】
常駐プログラムとは、情報処理装置が稼働している間、常に実行されているプログラムのことであり、ユーザーが明示的に指示を与えて起動させなくても自動的に起動されるものである。
【００２８】
例えば、ＯＳ（Operating System）としてウィンドウズ（登録商標）が稼働するＰＣ（Personal Computer）であれば、表示画面のＧＵＩ（Graphical User Interface）の一部として表示されるタスクトレイに一部の常駐プログラムのアイコンが表示される。
【００２９】
常駐プログラムの例としては、アンチウイルスソフトウェアやネットワーク経由でメッセージを遣り取りするためのメッセンジャーなどが挙げられる。
【００３０】
以上、常駐プログラムについて説明した。
【００３１】
［常駐プログラムの検出方法について］
ここでは、本実施形態の情報処理装置が行う、常駐プログラムの検出方法について幾つかの具体例を説明する。
【００３２】
（方法１）
ＣＰＵ負荷の変動率から判断する。情報処理装置を起動し、ユーザーから明示的にプログラムを起動する指示は与えず、放置する。そして、一定期間、プログラムが実行されるＣＰＵの負荷の変動率を監視し、その期間における変動率が所定の値以下に保たれたとき、情報処理装置の稼働状態が安定したと判断する。そして、その時点で稼働しているプログラムが常駐プログラムであると判定する。
【００３３】
（方法２）
ＣＰＵ負荷から判断する。情報処理装置を起動し、ユーザーから明示的にプログラムを起動する指示は与えず、放置する。そして、一定期間、プログラムが実行されるＣＰＵの負荷を監視し、その期間における負荷が所定の値以下に保たれたとき、情報処理装置の稼働状態が安定したと判断する。そして、その時点で稼働しているプログラムが常駐プログラムであると判定する。
【００３４】
（方法３）
情報処理装置のＯＳの設定から判断する。情報処理装置の起動時に自動的に起動されるように設定されたプログラムの一覧を、ＯＳの自動起動設定ファイルから取得する。
【００３５】
以上、本実施形態の情報処理装置が行う、常駐プログラムの検出方法について幾つかの具体例を説明した。
【００３６】
［情報処理装置１０の構成］
次に、情報処理装置１０の構成について説明する。図１は、情報処理装置１０として、一般的なコンピューターを用いた場合のブロック図である。
【００３７】
同図に示すように、情報処理装置１０は、ＣＰＵ（Central Processing Unit）１１（制御部）、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３（メモリー）、操作入力部１４、ネットワークインターフェイス部１５、表示部１６、および記憶部１７を有し、これら各ブロックがバス１８を介して接続されている。なお、特に断らない限り、本実施形態の説明でメモリーという場合、ＲＡＭ１３のことを指している。
【００３８】
ＲＯＭ１２は、各種の処理を実行するためのファームウェア等の複数のプログラムやデータを固定的に記憶する。ＲＡＭ１３は、ＣＰＵ１１の作業用領域として用いられ、ＯＳ（Operating System）、実行中の各種アプリケーション、処理中の各種データを一時的に保持する。
【００３９】
記憶部１７は、例えばＨＤＤ（Hard Disk Drive）や、フラッシュメモリー、その他の不揮発性メモリーである。記憶部１７には、ＯＳや各種アプリケーション、各種データに加え、後述する常駐プログラム情報１７ａが記憶される。
【００４０】
ネットワークインターフェイス部１５は、他のシステムと情報のやりとりを行う為のネットワークと結ばれており、他のシステムと情報の遣り取りをしたりする。
【００４１】
ＣＰＵ１１は、ＲＯＭ１２や記憶部１７に記憶された複数のプログラムのうち、操作入力部１４から与えられる命令に対応するプログラムをＲＡＭ１３に展開し、この展開されたプログラムにしたがって、表示部１６及び記憶部１７を適宜制御する。
【００４２】
また、ＣＰＵ１１は、情報処理装置１０が常駐プログラム検出モードにあるとき、常駐プログラムを検出し、検出結果を常駐プログラムの識別子の一覧として、記憶部１７へ常駐プログラム情報として格納する。なお、ここでいう識別子とは、プログラム名やプログラムＩＤなどのことである。
【００４３】
操作入力部１４は、例えばマウス等のポインティングデバイス、キーボード、タッチパネル、その他の操作装置である。
【００４４】
表示部１６は、例えば液晶ディスプレイ、ＥＬ（Electro-Luminescence）ディスプレイ、プラズマディスプレイ、ＣＲＴ（Cathode Ray Tube）ディスプレイ等である。表示部１６は、情報処理装置１０に内蔵されていてもよいし、外部接続されていてもよい。
【００４５】
以上、情報処理装置１０の構成について説明した。
【００４６】
［ＲＡＭ１３上での作業領域を分ける方法について］
ここでは、プログラムからの作業領域確保要求に応じてＲＡＭ１３上に確保される作業領域を、常駐プログラムと非常駐プログラムとで分ける方法について簡単に説明する。
【００４７】
なお、本実施形態でいう作業領域とは、プログラムを実行するために必要な命令コードや処理に必要なデータなどが置かれる領域のことである。
【００４８】
本発明では、どのような方法によりＲＡＭ１３上の作業領域を分けてもよいが、本実施形態では特許文献１において開示された技術を応用して作業領域を分ける方法について説明する。
【００４９】
まず、図２において、作業領域が、常駐プログラムのもの（Ｒ１、Ｒ２、Ｒ３）と非常駐プログラムのもの（Ｎ１、Ｎ２）とで、大きく高位アドレス側と低位アドレス側とに分けられてＲＡＭ１３上に配置された状態を示す。
【００５０】
この図では、ＲＡＭ１３のメモリーアドレスの最も高位のアドレス（一方の開始点）から常駐プログラムの作業領域Ｒ１、Ｒ２、およびＲ３が配置され、メモリーアドレスの最も低位のアドレス（反対側の開始点）から非常駐プログラムの作業領域Ｎ１およびＮ２が配置されている。
【００５１】
そして、作業領域として確保されていない空き領域Ｆ１、Ｆ２、Ｆ３、Ｆ４、およびＦ５があり、それらの位置は、高位アドレスから順に空き領域の位置を表す空き領域鎖ＲＣ１およびＲＣ２と、低位アドレスから順に空き領域の位置を表す空き領域鎖ＮＣ１およびＮＣ２により表されている。
【００５２】
空き領域Ｆ３は、高位アドレスから確保された作業領域と低位アドレスから確保された作業領域の中間に位置しており、空き領域鎖ＲＣ２およびＮＣ２の両方から指し示された位置にある。
【００５３】
次に、図２の状態から、さらに常駐プログラム用の作業領域Ｒ４を確保した状態を図３に示す。
【００５４】
この図では、図２に示した空き領域Ｆ３の高位アドレス側に、常駐プログラム用の作業領域Ｒ４が確保されている。そして、空き領域Ｆ３を指し示す空き領域鎖ＲＣ２およびＮＣ２に代わり、空き領域鎖ＲＣ２'およびＮＣ２'が、新しい空き領域であるＦ３'を指し示す状態になっている。
【００５５】
なお、上述したように、ＲＡＭ１３を２種類に分けて使用する場合は、ＲＡＭ１３のアドレスの両側（最高位アドレスと最低位アドレス）から作業領域を確保していくと、ＲＡＭ１３内を効率的に利用することが出来る。
【００５６】
しかし、これに限らず、ＲＡＭ１３を３種類以上に分けて使用することも可能である。３種類以上に分ける場合とは、例えば、作業領域が使用される期間を、常駐プログラム用と非常駐プログラム用の２種類に分ける代わりに、期間の長さに応じて３種類以上に分けるような場合である。
【００５７】
以上、プログラムからの作業領域確保要求に応じてＲＡＭ１３上に確保される作業領域を、常駐プログラムと非常駐プログラムとで分ける方法について簡単に説明した。
【００５８】
［処理の流れについて］
ここでは、本実施形態にかかる情報処理装置１０における処理の流れについて説明する。説明は、常駐プログラム検出モードと通常モードに分けて行う。
【００５９】
最初に、常駐プログラム検出モードにおける処理の流れを説明する。図４は、常駐プログラム検出モードにおける処理の流れを説明するためのフローチャートである。
【００６０】
まず、情報処理装置１０が常駐プログラム検出モードにて起動される（ステップＳ１０）。起動は、ユーザーによる指示により行われてもよいし、タイマーなどにより自動的に行われてもよい。
【００６１】
次に、ＣＰＵ１１が、情報処理装置１０が安定した状態になった後、常駐プログラムの検出を行う。そして、検出した全ての常駐プログラムの識別情報を常駐プログラム情報１７ａとして取得する（ステップＳ１１）。なお、常駐プログラムの検出方法は、上述したとおりである。
【００６２】
最後に、ＣＰＵ１１が、前ステップで取得した常駐プログラム情報１７ａを記憶部１７に保存する（ステップＳ１２）。
【００６３】
以上が常駐プログラム検出モードにおける処理の流れである。
【００６４】
次に、通常モードにおける処理の流れを説明する。図５は、通常モードにおける処理の流れを説明するためのフローチャートである。
【００６５】
まず、ＣＰＵ１１が、記憶部１７から常駐プログラム情報１７ａを取得する（ステップＳ２０）。
【００６６】
次に、あるプログラムが作業領域を要求してきたとする。
【００６７】
次に、ＣＰＵ１１が、作業領域を要求した要求元のプログラムは常駐プログラムであるか否かを、常駐プログラム情報１７ａと要求元のプログラムの識別情報とを比較することにより判断する（ステップＳ２１）。
【００６８】
要求元プログラムが常駐プログラムである場合（ステップＳ２１のＹ）、ＣＰＵ１１は、メモリー空間の最高位アドレスから空き領域鎖ＲＣ１、ＲＣ２を辿って、空き領域（空きメモリー）をサーチする（ステップＳ２２）。
【００６９】
要求元プログラムが常駐プログラムではない場合（ステップＳ２１のＮ）、ＣＰＵ１１は、メモリー空間の最低位アドレスから空き領域鎖ＮＣ１、ＮＣ２を辿って、空き領域（空きメモリー）をサーチする（ステップＳ２３）。
【００７０】
最後に、ＣＰＵ１１は、サーチ結果として得られた空き領域に、必要なサイズの作業領域を確保する（ステップＳ２４）。
【００７１】
以上が通常モードにおける処理の流れである。
【００７２】
以上、本実施形態にかかる情報処理装置１０における処理の流れについて説明した。
【００７３】
［補足事項］
その他、本技術は、上述の実施形態にのみ限定されるものではなく、本技術の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【符号の説明】
【００７４】
１０  …  情報処理装置
１１  …  ＣＰＵ
１２  …  ＲＯＭ
１３  …  ＲＡＭ
１４  …  操作入力部
１５  …  ネットワークインターフェイス部
１６  …  表示部
１７  …  記憶部
１７ａ…  常駐プログラム情報
１８  …  バス
【図１】
0005977778.tif 000002
【図２】
0005977778.tif 000003
【図３】
0005977778.tif 000004
【図４】
0005977778.tif 000005
【図５】
0005977778.tif 000006