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