(57)【要約】【課題】  例えば情報処理装置の外部からプログラムをダウンロードする処理と、ダウンロードされたプログラムを実行する処理のように、メモリの割当てに関して競合する可能性が高くない２つのタスク間で、効率的にメモリ割当てを管理する。【解決手段】  情報処理装置１の演算制御装置１０において動作する特定記憶領域管理部１５は、オペレーティングシステム１１から移管を受けて、メモリ２０に設けられた特定記憶領域２１に属するメモリ区画のタスクＡ１２又はタスクＢ１３への割当てを管理する。タスクＡ１２に対しては特定記憶領域２１の先頭番地から昇順で、タスクＢ１３に対しては同じく末尾番地から降順で区画を割当て、その間に維持される空き区画の位置をタスクＡ１２のメモリ使用状況に応じて変化させることにより、タスクＢ１３に対して割当て可能なメモリ区画のサイズを制御する。【選択図】  図１
2005208785.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置による処理において起動された第１のタスクが、前記情報処理装置が有するメモリのうち連続する番地から構成された一の領域の管理を前記情報処理装置において実行する管理タスクに対して、前記一の領域の先頭番地から昇順かつ連続的にサイズを指定して前記一の領域に属するメモリ区画の割当てを要求し、
前記情報処理装置による処理において起動された第２のタスクが、前記管理タスクに対して、サイズを指定して前記一の領域に属するメモリ区画の割当てを要求し、
前記管理タスクは、前記第１のタスク又は前記第２のタスクから要求されたサイズのメモリ区画がないと判断したとき、前記第１のタスクに対してガーベジコレクションの実行を指示し、
前記ガーベジコレクションの実行の結果に基づいて前記第１のタスクに割当て済みのメモリ区画を削減し、
前記第１のタスクから要求されたサイズのメモリ区画があると判断したとき、前記第１のタスクの要求にしたがってメモリ区画を割当て、
前記第２のタスクの要求に対して、前記一の領域の末尾番地から降順に要求されたサイズのメモリ区画があると判断したとき、前記第２のタスクの要求にしたがって降順にメモリ区画を割当て、
前記第１のタスクによるガーベジコレクション実行の後に、前記第１のタスク又は前記第2のタスクから要求されたサイズのメモリ区画がないと判断したとき、前記第１のタスク又は前記第２のタスクに対して割当てができない旨を通知し、
前記第２のタスクから前記割り当てたのと逆の順序でメモリ区画の開放を通知されたとき、前記開放を通知されたメモリ区画を開放する
ことを特徴とするメモリ管理方法。
【請求項２】
前記第１のタスクはインタプリタ、Ｊａｖａ（Ｒ）仮想マシン又はバイトコードで記述されたＪａｖａ（Ｒ）プログラムの実行であることを特徴とする請求項１に記載のメモリ管理方法。
【請求項３】
前記第２のタスクはＪａｖａ（Ｒ）プログラムをダウンロード又は起動するプログラムの実行であることを特徴とする請求項１に記載のメモリ管理方法。
【請求項４】
メモリと、
前記メモリのうち連続する番地から構成された一の領域を管理する管理タスク並びに前記管理タスクに対して前記一の領域の先頭番地から昇順かつ連続的にサイズを指定して前記一の領域に属するメモリ区画の割当てを要求する第１のタスク及び前記管理タスクに対してサイズを指定して前記一の領域に属するメモリ区画の割当てを要求する第２のタスクを実行する手段とを備え、
前記管理タスクは、前記第１のタスク又は前記第２のタスクから要求されたサイズのメモリ区画がないと判断したとき、前記第１のタスクに対してガーベジコレクションの実行を指示し、
前記ガーベジコレクションの実行の結果に基づいて前記第１のタスクに割当て済みのメモリ区画を削減し、
前記第１のタスクから要求されたサイズのメモリ区画があると判断したとき、前記第１のタスクの要求にしたがってメモリ区画を割当て、
前記第２のタスクの要求に対して、前記一の領域の末尾番地から降順に要求されたサイズのメモリ区画があると判断したとき、前記第２のタスクの要求にしたがって降順にメモリ区画を割当て、
前記第１のタスクによるガーベジコレクション実行の後に、前記第１のタスク又は前記第2のタスクから要求されたサイズのメモリ区画がないと判断したとき、前記第１のタスク又は前記第２のタスクに対して割当てができない旨を通知し、
前記第２のタスクから前記割り当てたのと逆の順序でメモリ区画の開放を通知されたとき、前記開放を通知されたメモリ区画を開放する
ことを特徴とする情報処理装置。
【請求項５】
前記第１のタスクはインタプリタ、Ｊａｖａ（Ｒ）仮想マシン又はバイトコードで記述されたＪａｖａ（Ｒ）プログラムの実行であることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記第２のタスクはＪａｖａ（Ｒ）プログラムをダウンロード又は起動するプログラムの実行であることを特徴とする請求項４に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ管理方法及び情報処理装置に係り、特にマルチタスク処理における各タスクへのメモリ割当てを制御するメモリ管理方法及び当該方法を実施する情報処理装置に関する。
【背景技術】
【０００２】
コンピュータが同時に複数のタスクを処理するいわゆるマルチタスク処理においては、メモリをはじめとするコンピュータのリソースを各タスクに適切に配分して割り当てることが重要であり、従来から多数の文献が著されている（例えば、非特許文献１又は非特許文献２参照。）。
【０００３】
一方で近年、Ｊａｖａ（Ｒ）に代表されるように実行環境の相違を問わないプログラミング言語が普及してきた（例えば、非特許文献３参照。）。これらのプログラミング言語で記述されたプログラムは、ネットワークに接続された多様な種類のコンピュータのオペレーティング・システム（ＯＳ）上に形成される実行環境において共通にその機能を果たす点に特徴がある。例えばＪａｖａ（Ｒ）の場合には、ソフトウェアで仮想的に作られたコンピュータであるＪａｖａ（Ｒ）仮想マシン（Ｊａｖａ（Ｒ）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、以下Ｊａｖａ（Ｒ）ＶＭという。）が、ネットワークに接続されたコンピュータ上にインタプリタ（実行環境の一種）として形成される。Ｊａｖａ（Ｒ）言語で記述されたＪａｖａ（Ｒ）プログラムは、制御プログラムによってサーバからネットワークを介して当該コンピュータにダウンロードされ、かつ、起動された後、Ｊａｖａ（Ｒ）ＶＭ上で実行される。
【０００４】
この例に見るように、例えばＪａｖａ（Ｒ）プログラムをダウンロード又は起動する制御プログラムとＪａｖａ（Ｒ）ＶＭとは、動作する時間帯が異なるという特徴があり、この特徴に着目したリソース（特にメモリ）割当ての効率化が可能であると考えられる。しかし、従来のマルチタスクに対するメモリ割当ての技術はこのようなケースを想定したものではなく、上記の特徴を生かした効率化を実現することはできないという問題があった。
【非特許文献１】Ｐ．Ｂ．Ｈａｎｓｅｎ、田中他訳「オペレーティング・システムの原理」、昭和５１年６月、近代科学社、東京（第１８８、１８９、２０３ページ、図５．２、図５．１２）
【非特許文献２】前川守「オペレーティング・システム」、昭和４７年１月、日本評論社、東京（第２１８乃至２２０ページ、図５．１７、図５．１８）
【非特許文献３】（社）電子情報通信学会編「エンサイクロペディア電子情報通信ハンドブック」、平成１０年１１月、オーム社、東京（第１０７５ページ）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のマルチタスクに対するメモリ割当ての技術は必ずしも実行環境を問わないプログラミング技術に適合したものではなく、例えばネットワークを通じたダウンロード等の制御動作とダウンロードされたプログラムの実行の時間差に着目した割当ての効率化を実現することができないという問題があった。
【０００６】
本発明は上記問題を解決するためになされたもので、実行環境を問わないプログラミング技術に適合したマルチタスクに対するメモリ割当ての効率化を実現することのできるメモリ管理方法及び当該方法を実施する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明のメモリ管理方法は、情報処理装置による処理において起動された第１のタスクが、前記情報処理装置が有するメモリのうち連続する番地から構成された一の領域の管理を前記情報処理装置において実行する管理タスクに対して、前記一の領域の先頭番地から昇順かつ連続的にサイズを指定して前記一の領域に属するメモリ区画の割当てを要求し、前記情報処理装置による処理において起動された第２のタスクが、前記管理タスクに対して、サイズを指定して前記一の領域に属するメモリ区画の割当てを要求し、前記管理タスクは、前記第１のタスク又は前記第２のタスクから要求されたサイズのメモリ区画が可能でないと判断したとき、前記第１のタスクに対してガーベジコレクションの実行を指示し、前記ガーベジコレクションの実行の結果に基づいて前記第１のタスクに割当て済みのメモリ区画を削減し、前記第１のタスクから要求されたサイズのメモリ区画があると判断したとき、前記第１のタスクの要求にしたがってメモリ区画を割当て、前記第２のタスクの要求に対して、前記一の領域の末尾番地から降順に要求されたサイズのメモリ区画があると判断したとき、前記第２のタスクの要求及び前記降順の番地の指定にしたがって降順にメモリ区画を割当て、前記第１のタスクによるガーベジコレクション実行の後に、前記第１のタスク又は前記第2のタスクから要求されたサイズのメモリ区画がないと判断したとき、前記第１のタスク又は前記第２のタスクに対して割当てができない旨を通知し、前記第２のタスクから前記割り当てたのと逆の順序でメモリ区画の開放を通知されたとき、前記開放を通知されたメモリ区画を開放することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、一方のタスクが使用するメモリサイズに応じて他方のタスクへのメモリ割当てを加減することができるので、例えばプログラムのダウンロードの制御とダウンロードされたプログラムに基づくタスク処理のように２つのタスクの動作する時間帯が異なるような場合に、効率的にメモリを割り当てることができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して本発明の実施例を説明する。
【実施例１】
【００１０】
以下、図１乃至図４を参照して、本発明の実施例１を説明する。図１は、本発明の実施例１に係る情報処理装置の構成を表す図である。図中の１は情報処理装置であり、演算制御装置１０とメモリ２０とを備えている。演算制御装置１０及びメモリ２０をリソースとして用いて、オペレーティングシステム（以下ＯＳという。）１１による処理が実行される。また、ＯＳ１１はアプリケーション等の実行の単位であるタスクＡ１２、タスクＢ１３及びそれら以外のタスク（図１においては、タスクＮ１４として一般的に表す。）を生成し、その実行を管理する。１５は、後述するメモリ２０の内部の特定記憶領域２１からタスクＡ１２及びタスクＢ１３へのメモリ区画の割当てを管理する特定記憶領域管理部である。特定記憶領域管理部１５は演算制御装置１０において実行されるタスクの一つであり、ＯＳ１１に含めて構成してもＯＳ１１とは別個に構成してもよい。
【００１１】
タスクＡ１２及びタスクＢ１３は、それぞれどのような種類のタスクであってもよいが、以下では一例として、タスクＡがＪａｖａ（Ｒ）ＶＭの実行、タスクＢが情報処理装置１の外部からのＪａｖａ（Ｒ）プログラムのダウンロードの制御であるものとする。
【００１２】
一方、図中の２０は情報処理装置１が備えるメモリである。メモリ２０の内部には、Ｊａｖａ（Ｒ）ＶＭを実行するタスクＡ１２及びＪａｖａ（Ｒ）プログラムのダウンロード制御であるタスクＢ１３のために割り当てられる特定記憶領域２１が設けられている。この特定記憶領域２１は、連続する番地から構成された一の領域であって、ＯＳ１１によりメモリ２０の内部に設けられるものである。
【００１３】
次に図２及び図３を参照して、タスクＡ１２及びタスクＢ１３に対する特定記憶領域２１に属するメモリ区画の割当ての一例について説明する。図２は、特定記憶領域２１に属するメモリ区画の割当て方法を表す図である。この図では、説明の便宜上特定記憶領域２１の先頭番地を“１”とする。
【００１４】
特定記憶領域２１の先頭番地“１”に始まり番地“ａ”で終わる区画“Ｐ”は、タスクＡ１２に割り当てられている。番地“ａ＋１” に始まり番地“ｂ”で終わる区画“Ｑ”も、タスクＡ１２に割り当てられている。番地“ｂ＋１” に始まり番地“ｃ”で終わる区画“Ｒ”は、タスクＡ１２にもタスクＢ１３にも割り当てられていない空き区画である。番地“ｃ＋１” に始まり番地“ｄ”で終わる区画“Ｓ”は、タスクＢ１３に割り当てられている。また、番地“ｄ＋１” に始まり番地“ｅ”で終わる区画“Ｔ”も、タスクＢ１３に割り当てられている。図３は、これらの区画、タスク及び番地の関係を表の形にして、特定記憶領域管理部１５が保持しているものである。
【００１５】
タスクＡ１２に対する区画“Ｐ”及び“Ｑ”の割当ての時間的な先後関係は、区画“Ｐ”の割当てが先で、区画“Ｑ”の割当てが後である。一方、タスクＢ１３に対する区画“Ｓ”及び“Ｔ”の割当ての時間的な先後関係は、区画“Ｔ”の割当てが先で、区画“Ｓ”の割当てが後である。
【００１６】
タスクＡ１２は特定記憶領域管理部１５に対して、特定記憶領域２１の先頭番地から順に（昇順で）かつ隙間のないようにサイズを指定して特定記憶領域２１に属する区画の割当てを要求する。特定記憶領域管理部１５は要求されたサイズの空き区画があると判断したとき、当該要求に基づいて区画の割当てを行う。したがって、タスクＡ１２からの最初の要求に対して先頭番地“１”から始まり番地“ａ”で終わる区画“Ｐ”をまず割り当て、次の要求に対して番地“ａ＋１”で始まり番地“ｂ”で終わる区画“Ｑ”を割り当てる。
【００１７】
特定記憶領域管理部１５は、一方タスクＢ１３から特定記憶領域２１に属する区画のサイズを指定した割当て要求を受けて要求されたサイズの空き区画があるとき、特定記憶領域２１の末尾番地から順に（降順で）区画の割り当てを行う。したがって、タスクＢ１３からの最初の要求に対して末尾番地が“ｅ”であり先頭番地が“ｄ＋１”である区画“Ｔ”をまず割り当て、次の要求に対して末尾番地が“ｄ”であり先頭番地が“ｃ＋１”である区画“Ｓ”を割り当てる。
【００１８】
なお、タスクＢ１３は、割り当てられた区画が不要になったときは割当ての順序とは逆の順序でそれらの区画を開放する旨を特定記憶領域管理部１５に通知し、特定記憶領域管理部１５がその通知された区画を開放する。
【００１９】
このように、タスクＡ１２に対しては特定記憶領域２１の先頭番地から昇順で隙間なく区画を割り当てると共に、タスクＢ１３に対しては末尾番地から降順で区画を割り当て、空きの区間“Ｒ”が残るようにすれば、区画の割り当てに関するタスクＡ１２とタスクＢ１３間の競合を起こさない。この実施例においては、タスクＡ１２がＪａｖａ（Ｒ）ＶＭの実行でありタスクＢ１３がＪａｐａプログラムダウンロードの制御であるから、同一の時刻に両タスクが必要とするメモリのサイズが共に大である可能性が低い。
【００２０】
そうすると、タスクＢ１３であるＪａｐａプログラムのダウンロードを実行中には区画“Ｓ”及び“Ｔ”のようにタスクＢ１３が必要とする区画のサイズは相対的に大きく、他方タスクＡ１２が使用する区画“Ｐ”や“Ｑ”等のサイズは相対的に小さくて済む。したがって、空きの区間“Ｒ”が維持され、両タスク間の競合を避けられる可能性を高くすることができる。
【００２１】
逆に、タスクＡ１２であるＪａｖａ（Ｒ）ＶＭの実行中には区画“Ｐ”や“Ｑ”の必要とするサイズが相対的に大きくなるが、区画“Ｓ”や“Ｔ”の要求するサイズは相対的に小さくて済む。したがってこの場合にも、両タスク間の競合を避けられる可能性を高くすることができる。
【００２２】
次に図４を参照して、本発明の実施例１に係るメモリ管理方法について説明する。図４は、当該メモリ管理方法のフローチャートである。なお前提として、ＯＳ１１によりタスクＡ１２及びタスクＢ１３が起動された状態にあるものとする。
【００２３】
処理を開始する（図４の“ＳＴＡＲＴ”）と、ＯＳ１１がメモリ２０の内部に特定記憶領域２１を設定し、特定記憶領域管理部１５にその管理を移す（ステップＳ１）。この状態で、特定記憶領域管理部１５はタスクＡ１２から特定記憶領域２１に属する区画の割当て要求、又はタスクB１３から同じく区画の割当て若しくは開放の要求を受信する（ステップＳ２）。タスクＡ１２又はタスクＢ１３からどのような指定を伴う区画割当て要求がされるかについては、上述した通りである。特定記憶領域管理部１５は、受信した要求が区画割当てに関するものか区画開放に関するものかを判断し（ステップＳ３）、割当て要求である場合（ステップＳ３の「割当て」）、特定記憶領域２１の空き区画（図２の場合の区画“Ｒ”に相当。）のサイズが割当てに十分であるかどうかを判断する（ステップＳ４）。
【００２４】
その結果空き区画のサイズが十分でないと判断したとき（ステップＳ４の“ＮＯ”）は、特定記憶領域管理部１５はタスクＡ１２に対して、公知の方法によるガーベジコレクションの実行を指示する（ステップＳ５）。タスクＡはガーベジコレクションを実行した後不要になったメモリ区画を特定記憶領域管理部１５に通知し、特定記憶領域管理部１５は当該区画をタスクＡに対する割当て区画から削減する。特定記憶領域管理部１５は、続いて特定記憶領域２１の空き区画のサイズが十分であるかどうかを判断する（ステップＳ６）。
【００２５】
ガーベジコレクションを実行しても、なお割当て可能な空きが十分でないと判断したとき（ステップＳ６の“ＮＯ”）、特定記憶領域管理部１５は区画の割当てを要求したタスクＡ１２又はタスクＢ１３に対して、「（割当て可能な）空き区画なし」を意味する通知を行う（ステップＳ７）。
【００２６】
一方、特定記憶領域管理部１５は、ガーベジコレクションの前又は後において割当て可能な空きが十分であると判断したとき（ステップＳ４又はステップＳ６の“ＹＥＳ”）は、区画の割当てを要求したタスクＡ１２又はタスクＢ１３に対して、要求に基づき区画の割当てを行う（ステップＳ８）。
【００２７】
特定記憶領域管理部１５は、この状態で再びステップＳ２の前に戻り、タスクＡ１２又はタスクＢ１３からの区画割当て要求を待つ。なお、特定記憶領域管理部１５がタスクＢ１３からメモリ区画の開放の要求を受信したとき（ステップＳ３の「開放」）は、当該不要になったメモリ区画を開放し（ステップＳ９）、ステップＳ２の前に戻る。その後の処理の終了は、任意のステップにおいてＯＳ１１からの制御により行われる。
【００２８】
以上の説明において、タスクＡはＪａｖａ（Ｒ）ＶＭであるものとしたが、この他バイトコードで記述されたＪａｖａ（Ｒ）プログラムの実行であっても差し支えない。また、タスクＢはＪａｖａ（Ｒ）プログラムのダウンロード制御であるものとしたが、この他Ｊａｖａ（Ｒ）プログラムを起動するプログラムの実行であってもよい。
【００２９】
本発明の実施例１によれば、特定記憶領域２１の空き区画をタスクＡ１２の利用状況に応じて柔軟に確保することにより、タスクＡとの競合の可能性が低いタスクＢに対して効率的に空き区画を割り当てることができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施例１に係る情報処理装置のブロック図。
【図２】本発明の実施例１に係るメモリ区画の割当て方法を表す図。
【図３】本発明の実施例１に係るメモリ区画ごとの割当て先タスク等を表す図。
【図４】本発明の実施例１に係るメモリ管理方法のフローチャート。
【符号の説明】
【００３１】
１  情報処理装置
１０  演算制御装置
１１  オペレーティングシステム
１２  タスクＡ
１３  タスクＢ
１４  タスクＮ
１５  特定記憶領域管理部
２０  メモリ
２１  特定記憶領域
【図１】
2005208785.tif 000003
【図２】
2005208785.tif 000004
【図３】
2005208785.tif 000005
【図４】
2005208785.tif 000006