(57)【特許請求の範囲】
【請求項１】
メモリを備える情報処理装置によって複数の情報処理を実行するに際して使用する前記メモリに、所定サイズの記憶領域を確保するメモリ管理装置であって、
前記情報処理のうち、前記メモリにおけるフラグメンテーションを発生させる情報処理であるフラグメンテーション発生処理を特定するための第１の特定情報、および、当該フラグメンテーション発生処理を実行する際に使用する前記記憶領域を特定するための記憶領域情報を記憶する第１の情報テーブルと、
前記特定情報に基づいて、前記情報処理装置によって実行する情報処理がフラグメンテーション発生処理であるか否かを判定し、該情報処理がフラグメンテーション発生処理である場合には、前記記憶領域情報を出力する判定手段と、
該判定手段から出力された前記記憶領域情報に基づいて、前記記憶領域を確保する領域確保手段とを備えるメモリ管理装置。
【請求項２】
前記記憶領域情報は、前記記憶領域のアドレスを示す情報を含むことを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
前記情報処理装置によって実行された情報処理を特定するための第２の特定情報を記憶する第２の情報テーブルと、
前記第２の特定情報に基づいて、前記第１の情報テーブルに未記録のフラグメンテーション発生処理を検出する情報管理部を更に備え、
該情報管理部は、前記第１の情報テーブルに未記録のフラグメンテーション発生処理を検出した際、当該フラグメンテーション発生処理を特定するための情報、および、当該フラグメンテーション発生処理を実行する際に使用する前記記憶領域を特定するための情報を前記第１の特定情報および前記記憶領域情報として前記第１の情報テーブルに記憶させることを特徴とする請求項１または２に記載のメモリ管理装置。
【請求項４】
前記情報管理部は、前記第１の情報テーブルに登録された記憶領域情報に対応する前記記憶領域が所定の時間未使用である場合、当該記憶領域情報および該記憶領域情報に対応する第１の特定情報を前記第１の情報テーブルから削除することを特徴とする請求項３に記載のメモリ管理装置。
【請求項５】
請求項１ないし４のいずれかに記載のメモリ管理装置と、
前記領域確保手段によって確保された記憶領域を使用して前記情報処理を行なう情報処理部とを備える情報処理装置。
【請求項６】
メモリを備える情報処理装置によって複数の情報処理を実行する際に使用する、前記メモリにおける所定サイズの記憶領域を確保するメモリ管理方法であって、
前記情報処理のうち、前記メモリにおけるフラグメンテーションを発生させる情報処理であるフラグメンテーション発生処理を特定するための第１の特定情報、および、当該フラグメンテーション発生処理を実行する際に使用する前記記憶領域を特定するための記憶領域情報を第１の情報テーブルに記憶させ、
前記特定情報に基づいて、前記情報処理装置によって行なう情報処理がフラグメンテーション発生処理であるか否かを判定し、
前記判定の結果、前記情報処理がフラグメンテーション発生処理である場合には、前記記憶領域情報に基づいて、前記記憶領域を確保することを含むメモリ管理方法。
【請求項７】
前記第１の情報テーブルを複数備えることが可能であり、前記第１の情報テーブルが複数ある場合に何れを選択すべきかを特定するための第３の情報テーブルを保持し、当該第３の情報テーブルに基づいて第１の情報テーブルを選択することを特徴とする請求項１乃至４のいずれかに記載のメモリ管理装置。
【請求項８】
前記第３の情報テーブルは、前記第１の情報テーブルを特定する第３の特定情報、及び当該第１の情報テーブルを使用した場合のフラグメンテーション領域の合計サイズを示すサイズ情報から構成され、当該サイズが最小である前記第１の情報テーブルが選択されることを特徴とする請求項７に記載のメモリ管理装置。
【請求項９】
前記情報処理装置によって実行された情報処理を特定するための第２の特定情報を記憶する第２の情報テーブルと、前記第２の特定情報に基づいて、前記選択された第１の情報テーブルに未記録のフラグメンテーション発生処理を検出する情報管理部を更に備え、当該情報管理部は、前記選択された第１の情報テーブルに未記録のフラグメンテーション発生処理を検出する度に、その時点でのフラグメンテーション領域の合計サイズを算出し、当該算出された値と前記第３の情報テーブルに記録されている、前記選択された第１の情報テーブルに対応したサイズ情報とを比較し、当該記録されているサイズ情報を前記算出された値が超えた場合には、当該第３の情報テーブルに記録されているサイズ情報を前記算出された値で更新すると共に、前記選択された第１の情報テーブルを複製し、前記未記録のフラグメンテーション発生処理を特定するための情報、及び当該未記録のフラグメンテーション発生処理を実行する際に使用する前記記憶領域を特定するための情報を前記第１の特定情報および前記記憶領域情報として、当該複製された第１の情報テーブルに記憶させ、当該複製された第１の情報テーブルを特定する前記第３の特定情報を前記第３の情報テーブルに登録することを特徴とする請求項７または８に記載のメモリ管理装置。
【請求項１０】
前記情報管理部は、第３の情報テーブルに前記複製された第１の情報テーブルを特定する第３の特定情報を登録する際に、当該複製された第１の情報テーブルとすでに備えている第１の情報テーブル全てとを比較し、同一のテーブルが存在した場合には当該第３の情報テーブルに登録しないことを特徴とする請求項９に記載のメモリ管理装置。
【請求項１１】
前記情報処理装置が実行するアプリケーションに応じて前記第３の情報テーブルを選択することを特徴とする請求項７乃至１０のいずれかに記載のメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、情報処理装置等に設けるメモリの管理を行なうメモリ管理装置に関し、特に、前記装置において複数の情報処理（以下、プロセスともいう）を行なう際、当該複数のプロセスによって前記メモリを共用する場合における当該メモリの管理を行なうメモリ管理装置に関する。
【背景技術】
【０００２】
従来のメモリ管理方法は、前記プロセスに対応するメモリ確保要求に対し、決められたサイズ（Ｓｔ）より小さいサイズの確保要求についてはメモリ確保用空き領域からなる連続したメモリ空間の低アドレスから高アドレスの方向へ空き領域をサーチして確保し、Ｓｔに等しいか、当該Ｓｔよりも大きいサイズの確保要求については前記連続したメモリ空間の高アドレスから低アドレス方向へ空き領域をサーチして確保する（例えば、特許文献１）。
【０００３】
【特許文献１】特開２０００−０４７９３３
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前記メモリにおいてフラグメンテ−ションが発生するか否かは、プロセスの種類に依存する場合もある。例えば、当該プロセスを実行するに際して使用するメモリの記憶領域が決められたサイズ（前記特許文献１においてはＳｔ）よりも小さいサイズであっても、当該プロセスの実行頻度が極端に小さい場合や、当該プロセスに対応する記憶領域のサイズが他のプロセスにおいて使用される記憶領域のサイズよりも極端に小さいまたは極端に大きい場合には、前記サイズに関係なくフラグメンテーションが発生し得る。したがって、上述のような場合に、前記特許文献１に記載のメモリ管理方法のように、確保要求されたサイズのみに基づいてメモリにおける使用領域を決定しても依然としてフラグメンテーションが発生してしまう。
【０００５】
そこで、本発明は、上述のような課題を解決するためになされたものであって、フラグメンテ−ションの発生要因とプロセスの種類とが依存関係にある場合であっても、フラグメンテーションの発生を抑制することができるメモリ管理装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るメモリ管理装置は、メモリを備える情報処理装置によって複数の情報処理を実行するに際して使用する前記メモリに、所定サイズの記憶領域を確保するメモリ管理装置であって、前記情報処理のうち、前記メモリにおけるフラグメンテーションを発生させる情報処理であるフラグメンテーション発生処理を特定するための第１の特定情報、および、当該フラグメンテーション発生処理を実行する際に使用する前記記憶領域を特定するための記憶領域情報を記憶する第１の情報テーブルと、前記特定情報に基づいて、前記情報処理装置によって実行する情報処理がフラグメンテーション発生処理であるか否かを判定し、該情報処理がフラグメンテーション発生処理である場合には、前記記憶領域情報を出力する判定手段と、該判定手段から出力された前記記憶領域情報に基づいて、前記記憶領域を確保する領域確保手段とを備える。
【発明の効果】
【０００７】
本発明に係るメモリ管理方法によれば、フラグメンテ−ションの発生要因とプロセスの種類とが依存関係にある場合であっても、フラグメンテーションの発生を抑制することができる。
【発明を実施するための最良の形態】
【０００８】
実施の形態１．
図１は、実施の形態１におけるメモリ管理装置１１を説明するための説明図である。図１において、プロセス１は、当該プロセス１を実行する際に必要な、メモリ（図示せず）の記憶領域（以下、メモリブロックともいう）を確保するようにメモリ管理部１１に要求する。なお、以下の説明においては、プロセス１からメモリ管理部１１に対する「メモリブロックを確保する旨の要求」を確保要求ともいい、当該確保要求によって確保される前記メモリブロックのサイズを確保サイズともいう。メモリ管理部１１は、当該確保要求に応じて前記メモリの使用状態を解析し、確保要求を満たすメモリブロックを確保する。そして、確保したメモリブロック（以下、確保ブロックともいう）を特定するための情報（以下、記憶領域情報ともいう）をプロセス１に返却する。
【０００９】
プロセス１は、メモリ管理部１１から返却された前記記憶領域情報によって特定される確保ブロックを使用して、当該プロセス１を実行する。そして、プロセス１に関する処理が終了した後に、メモリ管理部１１に対して当該確保ブロックを解放する旨の要求（以下、解放要求ともいう）を行なう。そうすると、メモリ管理部１１は、確保ブロックを解放する。すなわち、プロセス１に関する処理が終了した後に解放するメモリブロックを他のプロセスにおいて使用可能な領域として扱う。
【００１０】
なお、上述のように、前記プロセスとは、図示しない情報処理装置において行なう情報処理をいう。例えば、当該情報処理装置において、ＭＰＥＧ（Moving Picture Expert Group）−２  ＴＳ（Transport Stream）に含まれる映像を再生する場合、当該ＴＳに含まれるＮＩＴ（Network Information Table）、ＰＡＴ（Program Association Table）、ＰＭＴ（Program Map Table）等の複数種類の情報を抽出する必要がある。ここで、前記ＴＳに、第１の種類の情報（例えば、前記ＮＩＴ）がｍ個（ｍは整数）含まれ、第２の種類の情報（例えば、前記ＰＭＴ）がｎ個（ｎは整数）含まれる場合、実施の形態１においては、第１の種類の情報を抽出すること、または第２の種類の情報を抽出することをそれぞれプロセスという。すなわち、上述の場合、当該情報処理装置において、第１の種類の情報を抽出する処理はｍ回行なわれ、第２の種類の情報を抽出する処理はｎ回行なわれることになるが、本実施の形態においては、当該ｍ回またはｎ回の抽出処理それぞれをプロセスというのではなく、「第１の種類の情報を抽出すること」または「第２の種類の情報を抽出すること」をそれぞれ１つのプロセスとして扱う。
【００１１】
以下、プロセス１からメモリ管理部１１に要求があった場合における当該メモリ管理部１１における処理について説明する。図１において、前記プロセス１からの要求は、要求判定部２によって受信される。要求判定部２はプロセス１からの要求が確保要求であるか解放要求であるかを判定する。また、記憶部３１に格納されているフラグメンテーション発生プロセス判定テーブル（詳細は後述）を参照して、当該プロセス１がフラグメンテーションを発生させるプロセスか否かを判定する。なお、以下の説明においては、フラグメンテーションを発生させるプロセスをフラグメンテーション発生プロセスともいう。
【００１２】
図２は、フラグメンテーション発生プロセス判定テーブル（以下、判定テーブルともいう）を説明するための説明図である。図２に示すように、前記テーブルには、（１）フラグメンテーションを発生するプロセスの名称等、当該プロセスを特定するための情報（Ｐ１，Ｐ２・・・ＰＮ（Ｎは整数））（以下、プロセス特定情報ともいう）、（２）フラグメンテーション発生プロセスに対応して確保される前記メモリブロックのアドレスを特定するための情報（ａ１，ａ２・・・ａＮ（Ｎは整数））（以下、割り当てアドレスともいう）、および、（３）当該プロセスを実行するために確保することが必要なメモリブロックのサイズ（Ｓ１，Ｓ２・・・ＳＮ（Ｎは整数））（以下、割り当てサイズともいう）が予め記憶される。したがって、当該判定テーブルに記憶されたプロセス特定情報によってフラグメンテーション発生プロセスが特定され、前記割り当てアドレスおよび前記割り当てサイズによって前記メモリブロックが特定される。なお、以下の説明においては、記憶部３１に記憶された上記（１）ないし（３）の情報をテーブル情報ともいう。
【００１３】
前記判定テーブルに記憶するプロセスは、本実施の形態１におけるメモリ管理装置を適用する情報処理装置の仕様等に応じて任意に決定する。例えば、当該情報処理装置において予め実験またはシミュレーションを行なって、フラグメンテーションを発生させるプロセスを特定し、当該プロセスを前記テーブルに記憶させればよい。また、前記割り当てサイズは、上述のようにして特定したプロセスに応じて決定すればよい。更に、前記アドレス（すなわち、フラグメンテーションを発生させるプロセスに対応するメモリブロックを設けるメモリにおける位置）は、前記情報処理装置の仕様等に応じて任意に決定すればよい。
【００１４】
なお、前記プロセスは、同一のプロセスであっても、他のプロセスとの関係で、当該プロセスを行なうタイミング、または当該プロセスの内容（機能）に応じて、フラグメンテーションを発生させる場合と発生させない場合が生じ得る。そこで、このような場合においては、当該プロセスに副番を付す等を行なってテーブルに記憶させればよい。具体的に説明すると、例えば、上述したＴＳの場合において、第１の種類の情報の抽出を第１のタイミングｔ１または第２のタイミングｔ２で行なう場合にはフラグメンテーションが発生するが、その他のタイミングで行なった場合には、フラグメンテーションが発生しないのであれば、前記第１のタイミングｔ１で行なう場合のプロセスを「Ｐ１−１」とし、前記第２のタイミングｔ２で行なう場合のプロセスを「Ｐ１−２」とするというように、副番（「−（ハイフン）」に続く番号）を付して前記テーブルに記憶すればよい。
【００１５】
要求判定部２は、プロセス１からの要求が確保要求であって、当該プロセス１がフラグメンテーション発生プロセスでない場合、確保サイズをメモリ確保サイズ解析部４に出力する。一方、プロセス１からの要求が確保要求であって、当該プロセス１がフラグメンテーション発生プロセスである場合、当該要求判定部２は、記憶部３１に記憶された当該プロセス１に対応するテーブル情報をメモリ確保サイズ解析部４に出力する。
【００１６】
メモリ確保サイズ解析部４は、要求判定部２から、フラグメンテーション発生プロセス情報が入力されずに確保サイズが入力された場合（すなわち、当該確保要求が、フラグメンテーションを発生させるプロセスに対応する確保要求ではない場合）、当該確保サイズを所定のサイズに変換して、フリーメモリブロック検索部５に出力する。なお、前記所定のサイズは、以下のようにして設定する。例えば、メモリ確保サイズ解析部４からフリーメモリブロック検索部５との間のバスのビット幅にあわせて前記所定のサイズを設定する。具体的に説明すると、メモリ確保サイズ解析部４に入力された確保サイズが１１ｂｙｔｅｓであって、前記ビット幅が４ｂｙｔｅｓである場合、当該メモリ確保サイズ解析部４は、入力された１１ｂｙｔｅｓの確保サイズを１２ｂｙｔｅｓに変換する。このような変換を行なうことで前記バスのビット幅を最大限活用し、メモリ確保サイズ解析部４からフリーメモリブロック検索部５への情報の転送を高速化することができる。
【００１７】
一方、要求判定部２から、テーブル情報が入力された場合（すなわち、当該確保要求が、フラグメンテーションを発生させるプロセスに対応する要求である場合）、メモリ確保サイズ解析部４は、前記テーブル情報をメモリブロック領域確保部７に出力する。
【００１８】
フリーメモリブロック検索部５は、記憶部３１に設けるフリーメモリブロックテーブル（詳細は後述）に基づいて、メモリ確保サイズ解析部４から入力された確保サイズを確保可能なメモリブロック（すなわち、未使用のメモリブロック。以下、フリーメモリブロックともいう）を検索する。そして、前記確保サイズを確保可能なメモリブロックを検索することができた場合には、当該メモリブロックの先頭アドレスおよびサイズ（以下、フリーメモリブロック検索部５によって検索されたメモリブロックの先頭アドレスおよびサイズをフリーメモリブロック情報ともいう）をメモリブロックメモリブロック領域確保部７に出力する。一方、メモリブロック検索部５において前記確保サイズを確保可能なメモリブロックを検索することができなかった場合、メモリ管理装置１１における処理を終了する。
【００１９】
前記フリーメモリブロック検索部５におけるメモリブロックの検索について具体的に説明する。図３は、前記フリーメモリブロックテーブルを説明するための説明図である。また、図３（ａ）は、ある時点におけるメモリ３００の使用状態を模式的に示した模式図であり、図３（ｂ）は、前記図３（ａ）の状態において前記フリーメモリブロックテーブルに記憶された情報を模式的に示した模式図である。
【００２０】
図３（ａ）においてａ１〜ａ８は、各メモリブロックの先頭アドレスであり、Ｓ１〜Ｓ８は各メモリブロックｂ１〜ｂ８のサイズ（記憶容量）である。また、図３において、白色で示したメモリブロック（ｂ１、ｂ３、ｂ５、ｂ７）は未使用のメモリブロックであり、灰色で示したメモリブロック（ｂ２、ｂ４、ｂ６、ｂ８）は、あるプロセスにおいて使用されているメモリブロックである。
【００２１】
図３（ａ）の状態において、フリーメモリブロックテーブルには、当該メモリ３００において未使用の状態のメモリブロックの先頭アドレスおよびサイズ（すなわち、フリーメモリブロック情報）が記憶される。すなわち、図３（ｂ）に示すように、当該フリーメモリブロックテーブルにはメモリブロックｂ１、ｂ３、ｂ５、ｂ７の先頭アドレスａ１、ａ３、ａ５、ａ７およびサイズＳ１、Ｓ３、Ｓ５、Ｓ７が記憶される。したがって、前記フリーメモリブロック検索部５は当該フリーメモリブロックテーブルを参照することによってフリーメモリブロックを検索することができる。
【００２２】
具体的には、以下のようにフリーメモリブロックの検索を行なう。すなわち、当該フリーメモリブロック検索部５は、フリーメモリブロックテーブルを参照した結果、メモリに当該要求サイズと等しいサイズのフリーメモリブロックがある場合には、当該フリーメモリブロックに対応する前記フリーメモリブロック情報をメモリブロック領域確保部７およびフリーメモリブロック管理部６１に出力する。
【００２３】
また、フリーメモリブロック検索部５は、フリーメモリブロックテーブルを参照した結果、メモリに当該要求サイズと等しいサイズのフリーメモリブロックがない場合には、当該要求サイズよりも大きいサイズのフリーメモリブロックを検索する。そして、当該要求サイズよりも大きいサイズのフリーメモリブロックがある場合には、当該メモリブロックに対応する先頭アドレスおよび確保サイズをメモリブロック領域確保部７およびフリーメモリブロック管理部６１に出力する。更に、当該フリーメモリブロック検索部５は、前記フリーメモリブロックにおいて要求サイズに対して過剰なサイズ（以下、過剰サイズともいう）をフリーメモリブロック管理部６１に出力する。以上に説明したフリーメモリブロック検索部５の処理によって、前記確保要求が、フラグメンテーションを発生させるプロセスに対応する確保要求ではない場合におけるメモリブロックの検索が行なわれる。
【００２４】
フリーメモリブロック管理部６１は、フリーメモリブロック検索部５におけるフリーメモリブロックの検索の結果に応じて、記憶部３１に設けるフリーメモリブロックテーブルの管理（更新）を行なう。
【００２５】
メモリブロック領域確保部７は、メモリ確保サイズ解析部４またはフリーメモリブロック検索部５から入力された情報に基づいて、メモリブロックを確保する。すなわち、前記確保要求に対応するプロセス以外のプロセスにおいて当該フリーメモリブロックを使用できない状態にする。そして、確保された当該メモリブロックのアドレスを示す情報（以下、確保アドレス情報ともいう。）をメモリブロック情報返却部８に出力する。メモリブロック情報返却部８は、メモリブロック領域確保部７から入力された前記アドレス情報をプロセス１に返却する。以上に説明した各部の動作により、プロセス１の実行に必要なメモリブロックの確保が行なわれる。
【００２６】
ここで、フリーメモリブロック管理部６１におけるフリーメモリブロックテーブルの管理について説明する。図４は、プロセスの実行に使用するメモリ３００の使用態様を説明するための説明図である。また、図５は、記憶部３１に設けるフリーメモリブロックテーブルを説明するための説明図である。例えば、前記情報処理装置の電源投入後、種々のプロセスが実行された結果、メモリ３００に、図４（ａ）に示すような８つのメモリブロック（ｂ１〜ｂ８）がメモリ上に形成されたとする。
【００２７】
なお、図４において、ａ１〜ａ８は、各メモリブロックの先頭アドレスであり、Ｓ１〜Ｓ８は各メモリブロックのサイズ（記憶容量）である。また、図４において、白色で示したメモリブロックは未使用のメモリブロックであり、灰色で示したメモリブロックは、あるプロセスにおいて使用されているメモリブロックである。なお、前記電源投入直後においては、メモリが未使用であるため当該メモリ全体が１つのメモリブロックとなる。
【００２８】
図４（ａ）のようにメモリ上にメモリブロックが形成された場合、記憶部３１のフリーメモリブロックテーブルには、図４（ａ）のように各メモリブロックの先頭アドレスおよびサイズが登録される。具体的には、メモリ上に形成されたメモリブロックのうち、未使用のメモリブロックの先頭アドレスおよびサイズが登録される。したがって、図４（ａ）においては、ｂ１，ｂ３，ｂ５およびｂ７の先頭アドレス（ａ１，ａ３，ａ５，ａ７）およびサイズ（Ｓ１，Ｓ３，Ｓ５，Ｓ７）が登録されている。
【００２９】
図４（ａ）の状態において、他のプロセスを実行するためのメモリブロックを確保する場合、前記フリーメモリブロック検索部５は、図５（ａ）に示したフリーメモリブロックテーブルを参照して当該次のプロセスに使用するメモリブロックを検索する。ここで、図４（ａ）の状態において、当該検索の結果、当該他のプロセスに対応する確保サイズと一致するサイズを有するフリーメモリブロックがメモリブロックｂ３である場合、フリーメモリブロック検索部５は、メモリブロックｂ３の先頭アドレスａ３およびサイズＳ３をメモリブロック領域確保部７に出力する。その結果、図４（ｂ）に示すように、メモリブロックｂ３が確保される（使用中となる）。そうすると、フリーメモリブロック管理部６１は、使用状態となったメモリブロックｂ３に関する情報をフリーメモリブロックテーブルから削除する（図４（ｂ））。
【００３０】
次に、図４（ｂ）の状態において、更に他のプロセスを実行するためのメモリブロックを確保する場合、前記フリーメモリブロック検索部５は、図５（ｂ）に示したフリーメモリブロックテーブルを参照して当該他のプロセスに使用するメモリブロックを検索する。当該他のプロセスに対応する確保サイズをＳｎとした場合に、Ｓ１＜Ｓ５＜Ｓｎ＜Ｓ７であった場合、当該フリーメモリブロック検索部５は、メモリブロックｂ７の先頭アドレスａ７およびサイズＳｎをメモリブロック領域確保部７に出力する。また、過剰サイズを算出し（図４（ｃ）におけるＳ９（＝Ｓ７−Ｓｎ））、当該過剰サイズをフリーメモリブロック管理部６１に出力する。
【００３１】
そうすると、フリーメモリブロック管理部６１は、一部使用状態となったメモリブロックｂ７に関する情報をフリーメモリブロックテーブルから削除する。また、新たに形成されたフリーメモリブロックｂ９の先頭アドレスａ９およびサイズＳ９をフリーメモリブロックテーブルに登録する（図５（ｃ））。
【００３２】
なお、図４または図５に示した先頭アドレスは、メモリにおける絶対アドレス（メモリの最小のアドレス値からのオフセット値）とすれば良い。また、図５においては、フリーメモリブロック管理部６１によるフリーメモリブロックテーブルの更新を説明するに際し、当該フリーメモリブロックテーブルにおいて情報が未登録の領域のうち最上段の列に、新たに登録する先頭アドレス等の情報を登録する場合（図５（ｃ）参照）について説明したが、先頭アドレス等を新たに登録するに際して使用するフリーメモリブロックテーブルの領域は任意に設定することができる。
【００３３】
一方、当該プロセス１が終了した後におけるメモリブロックの解放は以下のようにして行なう。すなわち、要求判定部２は、プロセス１からの要求が解放要求であって、当該プロセス１がフラグメンテーション発生プロセスでない場合、解放されるメモリブロックの情報（先頭アドレスおよびサイズ）をメモリ解放サイズ解析部９に出力する。なお、以下の説明においては、解放されるメモリブロックの情報（先頭アドレスおよびサイズ）を解放ブロック情報ともいう。
【００３４】
一方、プロセス１からの要求が解放要求であって、当該プロセス１がフラグメンテーション発生プロセスである場合、当該要求判定部２は、記憶部３１に記憶された当該プロセスに対応するテーブル情報をメモリ解放サイズ解析部９に出力する。
【００３５】
メモリ解放サイズ解析部９は、要求判定部２から、解放ブロック情報が入力された場合（すなわち、当該解放要求が、フラグメンテーションを発生させるプロセスに対応する解放要求ではない場合）、当該解放ブロック情報をフリーメモリブロック登録部１０に出力する。一方、要求判定部２から、テーブル情報が入力された場合（すなわち、当該解放要求が、フラグメンテーションを発生させるプロセスに対応する要求である場合）、メモリ解放サイズ解析部９は、当該テーブル情報をメモリブロック領域解放部１２に出力する。
【００３６】
フリーメモリブロック登録部１０は、メモリ解放サイズ解析部９から入力された解放ブロック情報をフリーメモリブロック管理部６１およびメモリブロック領域解放部１２に出力する。そうすると、当該フリーメモリブロック管理部６１は、当該解放ブロック情報に含まれる、メモリブロックの先頭アドレスおよびサイズをフリーメモリブロックテーブルに登録する。
【００３７】
なお、この際、例えば、図４（ａ）の状態でメモリブロックｂ４を解放する場合、フリーメモリブロックがｂ３、ｂ４、ｂ５と連続することになる。このような場合、フリーメモリブロック管理部６１は、これら３つのフリーメモリブロックを１つのフリーメモリブロックとしてフリーメモリブロックテーブルに登録する。すなわち、図５（ａ）に示したフリーメモリブロックテーブルにおける、フリーメモリブロックｂ５の情報（ａ５，Ｓ５）を削除し、フリーメモリブロックｂ３の情報（ａ３，Ｓ３）の欄を（ａ３，Ｓ３＋Ｓ４＋Ｓ５）に更新する。
【００３８】
メモリブロック領域解放部１２は、メモリ解放サイズ解析部９から入力されたテーブル情報、または、フリーメモリブロック登録部１０から入力された解放ブロック情報によって、解放するメモリブロックの位置を特定し、当該メモリブロックを解放する。そして、当該メモリブロックの解放が終了した旨の情報（以下、解放終了情報ともいう。）をメモリブロック情報返却部８に出力する。要求メモリブロック返却部８は、メモリブロック領域解放部１２から入力された前記解放終了情報をプロセス１に返却する。以上に説明した各部の動作により、メモリブロックの解放が行なわれるとともに、プロセス１の処理も終了する。
【００３９】
なお、前記判定テーブルに登録するテーブル情報に対応するメモリブロックのメモリ上の位置は任意に設定することができる。図６は、テーブル情報に対応するメモリブロックのメモリ上の位置を説明するための説明図である。当該メモリブロックは、例えば、図６（ａ）のようにメモリにおいて最大のアドレス値側から設けても良いし、図６（ｂ）のように当該メモリにおいて最小のアドレス値側から設けても良い。また、図６（ｃ）のように、テーブル情報に対応するメモリブロックをメモリの中間に設けても良い。
【００４０】
図６（ａ）または（ｂ）のように、最大のアドレス値側もしくは最小のアドレス値側にまとめて配置することで、フラグメンテーション発生プロセスにおいて使用するメモリブロックと、その他のプロセスにおいて使用するメモリブロックとがメモリ上で混在して配置することがなくなるので、フラグメンテーションの発生を確実に抑えることができる。
【００４１】
また、図６（ａ）のような場合、例えば、上述のＭＰＥＧ−２  ＴＳの場合においては、当該メモリブロックを設ける領域から見て低アドレス側（または高アドレス側）のメモリブロックをオーディオ信号処理のプロセスに使用し、高アドレス側（または低アドレス側）のメモリブロックをビデオ信号処理のプロセスに使用するというようにプロセスの種類毎にメモリブロックの使用領域を分けてもよい。
【００４２】
図７は、実施の形態１におけるメモリ管理装置１１の動作を説明するためのフローチャートである。プロセス１において、メモリブロックの確保が必要になった際、またはメモリブロックの解放を行なう際に、当該プロセス１から要求判定部２に要求が入力されると、メモリ管理装置１１によるメモリ管理処理が開始される（ＳＴＡＲＴ）。要求判定部２は、入力された要求が確保要求か解放要求であるかを判定する（Ｓ１）。当該判定の結果、前記要求が確保要求である場合（Ｓ１：Ｙｅｓ）、要求判定部２は、記憶部３１に設ける判定テーブルを参照して、当該確保要求に対応するプロセスがフラグメンテーション発生プロセスであるか否かを判定する（Ｓ２）。
【００４３】
要求判定部２は、判定の結果、前記確保要求に対応するプロセスがフラグメンテーション発生プロセスである場合（Ｓ２：Ｙｅｓ）、当該プロセスに対応するテーブル情報を記憶部３１から読み出してメモリ確保サイズ解析部４に出力する。そうすると、当該テーブル情報は、メモリ確保サイズ解析部４から、メモリブロック領域確保部７に入力される。メモリブロック領域確保部７は、当該テーブル情報に対応するメモリブロックを確保した後（Ｓ３）、確保した当該メモリブロックに対応する確保アドレス情報をメモリブロック情報返却部８に出力する。そして、メモリブロック情報返却部８は、入力された確保アドレス情報をプロセス１に出力する（Ｓ４）。そして、プロセス１が前記確保アドレス情報を認識するとフラグメンテーション発生プロセスに対応する確保要求に関する処理が終了する（ＥＮＤ）。
【００４４】
一方、前記Ｓ１における判定の結果、当該要求が解放要求である場合（Ｓ１：Ｎｏ）、要求判定部２は、記憶部３１に設ける判定テーブルを参照して、当該要求に対応するプロセスがフラグメンテーション発生プロセスであるか否かを判定する（Ｓ５）。当該Ｓ５における判定の結果、前記解放要求に対応するプロセスがフラグメンテーション発生プロセスである場合（Ｓ５：Ｙｅｓ）、当該プロセスに対応するテーブル情報を記憶部３１から読み出してメモリ解放サイズ解析部９に出力する。メモリ解放サイズ解析部９は、入力されたテーブル情報をメモリブロック領域解放部１２に出力する。
【００４５】
また、当該Ｓ５における判定の結果、前記解放要求に対応するプロセスがフラグメンテーション発生プロセスでない場合（Ｓ５：Ｎｏ）、要求判定部２は、当該プロセスによって使用されたメモリブロックの先頭アドレスおよびサイズをメモリ解放サイズ解析部９に出力する。メモリ解放サイズ解析部９に入力された先頭アドレスおよびサイズは、フリーメモリブロック登録部１０を介してフリーメモリブロック管理部６１およびメモリブロック領域解放部１２に入力される。フリーメモリブロック管理部６は、入力された先頭アドレスおよびサイズをフリーメモリブロックテーブルに登録することでフリーメモリブロックテーブルを更新する（Ｓ７）。また、解放によりフリーメモリブロックが連続した場合には、当該連続した複数のフリーメモリブロックを１つのフリーメモリブロックとして登録することでフリーメモリブロックテーブルを更新する。
【００４６】
メモリブロック領域解放部１２は、テーブル情報がメモリ解放サイズ解析部９から入力された場合、または、解放されるメモリブロックの先頭アドレスおよびサイズがフリーメモリブロック登録部１０から入力された場合、解放すべきメモリブロックを解放し、解放終了情報をメモリブロック情報返却部８に出力する（Ｓ８）。メモリブロック情報返却部８は、メモリブロック領域解放部１２から入力された前記解放終了情報をプロセス１に出力する（Ｓ８）。そして、プロセス１が前記解放終了情報を認識すると解放処理が終了する（ＥＮＤ）。
【００４７】
次に、前記Ｓ２における判定の結果、前記確保要求に対応するプロセスがフラグメンテーション発生プロセスでない場合（Ｓ２：Ｎｏ）、要求判定部２は、確保サイズをメモリ確保サイズ解析部４に出力する。メモリ確保サイズ解析部４は、必要に応じて、入力された確保サイズを所定のサイズに変換してフリーメモリブロック検索部５に出力する。そうすると、フリーメモリブロック検索部５は、記憶部３１に設けるフリーメモリブロックテーブルを参照して、入力された確保サイズと一致するフリーメモリブロックがあるか否かを判定する（Ｓ９）。
【００４８】
前記Ｓ９における判定の結果、入力された確保サイズと一致するフリーメモリブロックがある場合（Ｓ９：Ｙｅｓ）、フリーメモリブロック検索部５は、当該フリーメモリブロックのフリーメモリブロック情報をフリーメモリブロック管理部６およびメモリブロック領域確保部７に出力する（Ｓ１０）。一方、前記Ｓ９における判定の結果、入力された確保サイズと一致するフリーメモリブロックがない場合（Ｓ９：Ｎｏ）、フリーメモリブロック検索部５は、前記確保サイズよりも大きいサイズのフリーメモリブロックがあるか否かを判定する（Ｓ１１）。
【００４９】
前記Ｓ１１における判定の結果、前記確保サイズよりも大きいサイズのフリーメモリブロックがある場合（Ｓ１１：Ｙｅｓ）、フリーメモリブロック検索部５は、当該フリーメモリブロックの先頭アドレスおよび前記確保サイズをメモリブロック領域確保部７に出力する（Ｓ１２）。また、フリーメモリブロック検索部５は、過剰ブロックのサイズおよび先頭アドレスをフリーメモリブロック管理部６に出力する。フリーメモリブロック管理部６は、フリーメモリブロック検索部５からの入力に応じてフリーメモリブロックテーブルを更新する（Ｓ１３）。一方、前記Ｓ１１における判定の結果、前記確保サイズよりも大きいサイズのフリーメモリブロックがない場合（Ｓ１１：Ｎｏ）には、処理を終了する。なお、発明者のシミュレーションおよび実験によれば、実施の形態１におけるメモリ管理装置１１では、Ｓ１１の判定においてＮｏとなるような結果はなかった。したがって、Ｓ１１の判定においてＮｏとなる場合に処理を終了することとするのは、不測の事態のための安全措置である。
【００５０】
メモリブロック領域確保部７は、フリーメモリブロック検索部５から入力された先頭アドレスおよび前記確保サイズに対応するメモリブロックを確保するとともに（Ｓ１４）、フリーメモリブロック情報をメモリブロック情報返却部８に出力する。そして、メモリブロック情報返却部８は、入力されたフリーメモリブロック情報をプロセス１に出力する（Ｓ１５）。そして、プロセス１が前記フリーメモリブロック情報を認識するとフラグメンテーション発生プロセス以外のプロセスに対応する確保要求に関する処理が終了する（ＥＮＤ）。
【００５１】
以上の説明のように、実施の形態１におけるメモリ管理装置１１においては、フラグメンテーション発生プロセスに関する情報を予め特定して判定テーブルに格納する。したがって、実施の形態１におけるメモリ管理装置１１によれば、フラグメンテ−ションの発生要因とプロセスの種類とが依存関係にある場合であっても、フラグメンテーションの発生を抑制することができる。
【００５２】
なお、以上の説明においては、記憶部３１の判定テーブルに記憶されたテーブル情報を前記要求判定部２からメモリ確保サイズ解析部４に出力する場合について説明したが、当該要求判定部２から前記割り当てアドレスのみを出力するようにしてもよい。また、同様に、フリーメモリブロック検索部５から出力されるフリーメモリブロック情報は、当該フリーメモリブロック検索部５によって検索されたメモリブロックの先頭アドレスのみを含むようにしてもよい。
【００５３】
実施の形態２．
図８は、実施の形態２におけるメモリ管理装置２１の構成を示すブロック図である。なお、図８において、実施の形態１のメモリ管理装置１１と同様の構成については同一の符号を付記し、説明を省略する。メモリ管理装置２１における記憶部３２には、フリーメモリブロックテーブルが設けられる。また、フリーメモリ管理部６２は、当該フリーメモリブロックテーブルの管理（更新）を行なうとともに、フリーメモリブロックテーブルに記憶された情報に基づいて、判定テーブルに未登録のフラグメンテーション発生プロセスを特定する。そして、新たなフラグメンテーション発生プロセスを特定した場合には、当該フラグメンテーション発生プロセステーブルを判定テーブルに追加する。
【００５４】
図９は、フラグメンテーション発生プロセスを特定するまでにおけるフリーメモリ管理部６２によるフリーメモリブロックテーブルの更新を説明するための説明図である。また、図１０は、フリーメモリ管理部６２におけるフラグメンテーション発生プロセスの特定方法を説明するための説明図である。なお、図１０においては、使用（確保）されているメモリブロックを灰色で示し、フリーメモリブロックを白色で示した。
【００５５】
また、図１０において、「ｂ」は各メモリブロックを示し、「ａ」は各メモリブロックの先頭アドレスを示す。また、「Ｓ」は各メモリブロックのサイズを示す。また、「ａ」、「ｂ」または「Ｓ」に付されたＡ、Ｂ、Ｃ等の符号は各メモリブロックを使用するプロセスとの対応を示す。すなわち、図１０において、先頭アドレスが「ａＡ」で、サイズが「ＳＡ」のメモリブロックｂＡはプロセスＰＡによって使用されるメモリブロックであることを示す。
【００５６】
例えば、前記情報処理装置の電源投入後、プロセスＰＡ，ＰＢ，ＰＣが実行された結果、メモリ３００に、図１０（ａ）に示すような４つのメモリブロック（ｂＡ，ｂＢ，ｂＣおよびｂｅｍｐ）が形成されたとする。そうすると、フリーメモリブロックテーブルの先頭アドレス領域Ｉａには「ａｅｍｐ」が登録され、サイズ領域ＩＳには「Ｓｅｍｐ」が登録される（図９（ａ））。図１０（ａ）の状態において、メモリブロックｂＢを使用していたプロセスＰＢが終了すると、当該メモリブロックｂＢは解放される（図１０（ｂ））。
【００５７】
そして、フリーメモリブロックテーブルのプロセス情報領域ＩＰには当該メモリブロックｂＢを使用していたプロセスを示す情報（図１０においてはプロセス名（ＰＢ）とした）が登録される。また、登録時間領域Ｉｔには、当該メモリブロックｂＢが解放された後にフリーメモリブロックテーブルに登録された時刻を示す情報が登録される。さらに、先頭アドレス領域Ｉａには、解放されたメモリブロックｂＢの先頭アドレスが登録される。さらにまた、サイズ領域ＩＳには、解放されたメモリブロックｂＢのサイズが登録される。そのため、図９（ｂ）に示したフリーメモリブロックテーブルにおいては、プロセス情報領域ＩＰに「ＰＢ」、解放時間領域Ｉｔに「ｔＢ」、先頭アドレス領域Ｉａに「ａＢ」、サイズ領域ＩＳに「ＳＢ」がそれぞれ登録されている。
【００５８】
図１０（ｂ）の状態において、新たなプロセス（以下、第１の新プロセスともいう）に対する確保要求が生じた場合であって、当該確保要求に対応する確保サイズがメモリブロックｂＢのサイズよりも小さいサイズである場合、当該フリーメモリブロックｂＢの一部が当該第１の新プロセスのために確保される。そうすると、フリーメモリブロックテーブルに登録された情報が更新される。
【００５９】
具体的に説明すると、前記第１の新プロセスをプロセスＰＤとした場合、図１０（ｃ）に示すように、フリーメモリブロックｂＢの中にサイズＳＤのメモリブロックｂＤが確保される。そうすると、図９（ｂ）に示したフリーメモリブロックテーブルに登録された情報が図９（ｃ）に示すフリーメモリブロックテーブルのように更新される。すなわち、登録時間領域Ｉｔに登録される情報が、当該メモリブロックｂＢがフリーメモリブロックテーブルに登録された時刻を示す情報ｔＢから、フリーメモリブロックｂ’Ｂが形成された時刻を示す情報ｔ’Ｂに更新される。また、先頭アドレス領域Ｉａの情報がメモリブロックｂ’Ｂの先頭アドレスを示す情報ａ’Ｂに更新され、サイズ領域ＩＳの情報がメモリブロックｂ’Ｂのサイズを示す情報Ｓ’Ｂに更新される。
【００６０】
さらに、図１０（ｃ）の状態において、新たなプロセス（以下、第２の新プロセスともいう）に対する確保要求が生じた場合であって、当該確保要求に対応する確保サイズがメモリブロックｂ’Ｂのサイズよりも小さいサイズである場合、当該フリーメモリブロックｂ’Ｂの一部が当該第２の新プロセスのために確保される。そうすると、フリーメモリブロックテーブルに登録された情報が更新される。
【００６１】
すなわち、例えば、前記第２の新プロセスをプロセスＰＥとした場合、図１０（ｄ）に示すように、フリーメモリブロックｂ’ＢにサイズＳＥのメモリブロックｂＥが確保される。そうすると、図９（ｃ）に示したフリーメモリブロックテーブルに登録された情報が図９（ｄ）に示すフリーメモリブロックテーブルのように更新される。すなわち、登録時間領域Ｉｔに登録される情報が、当該メモリブロックｂ’Ｂがフリーメモリブロックテーブルに登録された時刻を示す情報ｔ’Ｂから、フリーメモリブロックｂ’’Ｂが形成された時刻を示す情報ｔ’’Ｂに更新される。また、先頭アドレス領域Ｉａの情報がメモリブロックｂ’’Ｂの先頭アドレスを示す情報ａ’’Ｂに更新され、サイズ領域ＩＳの情報がメモリブロックＰ’’Ｂのサイズを示す情報Ｓ’’Ｂ（図示せず）に更新される。
【００６２】
図１０（ｄ）の状態以降、更に新たなプロセス（以下、第３の新プロセスともいう）に対する確保要求が生じた場合であって、当該確保要求に対応する確保サイズがメモリブロックＰ’’Ｂのサイズよりも大きいサイズである場合、フリーメモリブロックｂｅｍｐの一部が当該第３の新プロセスのために確保される。そうすると、フリーメモリブロックテーブルに登録された情報が更新される。
【００６３】
具体的に説明すると、前記第３の新プロセスをプロセスＰＦとした場合、図１０（ｅ）に示すように、フリーメモリブロックｂｅｍｐの中にサイズＳＦのメモリブロックｂＦが確保される。そうすると、図９（ｄ）に示したフリーメモリブロックテーブルに登録された情報が図９（ｅ）に示すフリーメモリブロックテーブルのように更新される。すなわち、フリーメモリブロックｂｅｍｐの先頭アドレスを示す情報およびサイズを示す情報が、それぞれ、ａ’ｅｍｐ、Ｓ’ｅｍｐに更新される。
【００６４】
図１０（ｅ）の状態以降、新たなプロセスに対する確保要求が生じた場合であって、当該確保要求に対応する確保サイズがメモリブロックＰ’’Ｂのサイズよりも大きいサイズである場合、当該フリーメモリブロックＰ’’Ｂが使用されない状態が続いてしまう。すなわち、フラグメンテーションが発生する。そうすると、フリーメモリブロック管理部６２は、当該フラグメンテーションが発生した領域を最後に使用していたプロセスＰＢをフラグメンテーション発生プロセスとして記憶部３２に設ける判定テーブルに登録する。具体的に説明すると、当該フリーメモリブロック管理部６２は、プロセスＰＢがフリーメモリブロックのプロセス情報領域ＩＰに登録された後、所定の時間を経過した場合に、当該プロセスをフラグメンテーション発生プロセスとして特定し、前記判定テーブルに登録する。なお、前記所定の時間は、当該メモリ管理部２１の仕様等に応じて任意に設定すればよく、当該所定の時間を測定するためにはフリーメモリブロック管理部６２にタイマ等の計時手段を設ければよい。
【００６５】
なお、当該判定テーブルへのフラグメンテーション発生プロセルの登録の際、フリーメモリブロック管理部６２はメモリ３００においてプロセスＰＢを実行するために使用するメモリブロックを設定し、当該設定したメモリブロックのアドレスを割り当てアドレスとして判定テーブルに登録する、また、当該プロセスＰＢに対応する確保サイズを割り当てサイズとして前記判定テーブルに登録する。そうすると、メモリ３００には、プロセスＰＢを実行するために必要なメモリブロックが予め確保される。
【００６６】
なお、以上に説明した図９および図１０においては、プロセスＰＢがフリーメモリブロックのプロセス情報領域ＩＰに登録された後、所定の時間を経過した場合に、当該プロセスをフラグメンテーション発生プロセスとして特定する場合について説明したが、例えば、あるプロセスに対応する解放時間、先頭アドレスまたはサイズが更新された時点からの時間が所定の時間を経過した場合に、当該プロセスをフラグメンテーション発生プロセスとして特定するようにしてもよい。
【００６７】
図１１は、図９および図１０において説明したプロセスＰＢを判定テーブルに登録した後、再度、プロセスＰＢを実行した場合におけるメモリ３００の使用状態を説明するための説明図である。例えば、プロセスＰＢを判定テーブルに登録した後に、プロセスＰＡ、ＰＢ、およびＰＣの３つのプロセスが実行されたとする。そうすると、プロセスＰＡおよびＰＣについてはメモリ３００の低アドレス側から順に確保されたメモリブロックｂＡおよびｂＣを使用して実行される。一方、プロセスＰＢについては、メモリ３００の高アドレス側に予め確保されたメモリブロックｂｒＢを使用して実行される（図１１（ａ））。なお、図１１においては、プロセスＰＢの実行に際して使用されるメモリブロックｂｒＢが当該メモリ３００の高アドレス側に予め確保される場合について示したが、当該予め確保するメモリブロックは、図６において説明したように任意に設定すればよい。
【００６８】
図１１（ａ）の状態において、当該プロセスＰＢが終了すると、メモリブロックｂｒＢが解放される。以降、図９において説明した順序でプロセスＰＤ、ＰＥ、ＰＦが実行されると、メモリブロックＰＣに隣接する領域にプロセスＰＤ、ＰＥ、ＰＦの実行に必要なメモリブロックが順次確保され、当該プロセスＰＤ、ＰＥ、ＰＦが実行される（図１０（ｃ）〜（ｅ））。
【００６９】
しかしながら、プロセスＰＢを判定テーブルに登録した後には、予め確保されたメモリブロックｂｒＢによって当該プロセスＰＢが実行されるため、メモリブロックｂｒＢが解放された際に、図１０（ｂ）に示すような未使用のメモリブロック（フリーメモリブロック）が形成されることがない。そのため、図１０（ｅ）の状態のようにフラグメンテーションが発生しない（図１１（ｅ））。
【００７０】
以上の説明のように、実施の形態２におけるメモリ管理装置１１によれば、フラグメンテ−ションの発生要因とプロセスの種類とが依存関係にある場合であっても、フラグメンテーションの発生を抑制することができる。
【００７１】
また、前記判定テーブルに登録されていないフラグメンテーション発生プロセスを特定して、当該プロセスによるフラグメンテーションの発生を抑制することができる。したがって、例えば、前記判定テーブルに、最初、何も登録しない場合には、当該情報処理装置によって種々のプロセスを実行することによってフラグメンテーション発生プロセスの特定および判定テーブルへの登録を自動的に行なうことができるため、フラグメンテーション発生プロセスを特定するための作業を予め行なう必要がない。よって、煩雑な実験またはシミュレーションを行なう手間を省くことができる。したがって、フラグメンテーションの発生を抑制することが可能なメモリ管理を容易に構築することができる。
【００７２】
また、予め実験等を行なった結果に基づいてフラグメンテーション発生プロセスを前記判定テーブルに予め登録する場合においても、全てのフラグメンテーション発生プロセスを特定することは困難な場合もある。したがって、仮に全てのフラグメンテーション発生プロセスを特定することができなかった場合には予想外のフラグメンテーションが発生する可能性がある。しかしながら、実施の形態２におけるメモリ管理装置によれば、予想外のフラグメンテーションが発生した場合においても、当該フラグメンテーション発生プロセスを判定テーブルに登録した後は、当該プロセスによるフラグメンテーションの発生を完全に抑えることができる。
【００７３】
なお、フラグメンテーション発生プロセスには、１度限り実行される場合や、一定期間経過後に実行されることが無くなる場合もあり得る。そのような場合に、実施の形態２におけるメモリ管理装置によって、上述のようなフラグメンテーション発生プロセスを判定テーブルにフラグメンテーション発生プロセスを登録すると、当該フラグメンテーション発生プロセスが実行されなくなった以降も当該フラグメンテーション発生プロセスのためのメモリブロックがメモリに確保された状態となる。
【００７４】
その結果、未使用状態であるにもかかわらず、他のプロセスによって使用することができない領域がメモリ上に存在することになる。そうすると、メモリを有効に使用することができなくなる。最悪の場合、他のプロセスに必要なメモリブロックの確保ができなくなり、前記情報処理装置における処理が停止してしまう。そこで、判定テーブルに一旦登録したフラグメンテーション発生プロセスを削除するようにしてもよい。
【００７５】
具体的には、前記フリーメモリブロック管理部６２によって、前記判定テーブルに登録されたフラグメンテーション発生プロセスを監視する。また、図示しないタイマまたはカウンタ等の計時手段により、当該フラグメンテーション発生プロセスが判定テーブルに登録された時点から所定の時間を経過したか否かを判定する。そして、当該判定の結果、当該フラグメンテーション発生プロセスが判定テーブルに登録された時点から所定の時間が経過している場合には、判定テーブルから当該フラグメンテーション発生プロセスを削除する。なお、前記所定の時間は、当該メモリ管理部２１の仕様等に応じて任意に設定すればよい。
【００７６】
以上の説明のように、フリーメモリブロック管理部６２を構成することによって、メモリを更に有効に使用することができる。また、他のプロセスに必要なメモリブロックの確保ができなくなり、前記情報処理装置における処理が停止してしまうというような事態を回避することができる。
【００７７】
ここで、前記情報処理装置の一例について説明する。図１２は、当該情報処理装置１１００の構成を示すブロック図である。なお、図１１において、実施の形態１または２において説明した構成と同一の構成については同一の符号を付記し、説明を省略する。図１２においてプログラムメモリ１１１０には、メモリ管理プログラム１１１１およびプロセスプログラム１１１２が記憶されている。なお、メモリ管理プログラム１１１１は、実施の形態１または２において説明したメモリ管理を行なうためのプログラムである。また、プロセスプログラム１１１２は当該情報処理装置１１００において行なう処理の内容が記述されたプログラムであり、種々のプロセス（モジュール）によって構成されている。
【００７８】
ＣＰＵ１１２０は、前記プログラムメモリ１１１０に記憶された前記プロセスプログラム１１１２を読み出してプロセスを実行し、当該情報処理装置１１００の目的とする処理（例えば、実施の形態１において説明したＭＰＥＧ−２  ＴＳからの情報の抽出）を情報処理部１１３０に実行させるための信号を生成して当該情報処理部１１３０に出力する。
【００７９】
また、ＣＰＵ１１２０は、メモリ管理プログラム１１１１をプログラムメモリ１１１０から読み出して、メモリ管理処理部１１２１を構築する。具体的には、当該メモリ管理プログラム１１１１を実行することによって、実施の形態１または２において説明したメモリ管理装置のうちの記憶部３を除く部分から構成されるメモリ管理処理部１１２１を構築する。また、メモリ管理処理部１１２１は、実施の形態１または２において説明したような処理によってメモリ３００におけるメモリブロックの確保または解放を行なう。そうすると、情報処理部１１３０は、メモリ管理装置１１（メモリ管理処理部１１２１）によって確保されたメモリブロックを使用してＣＰＵ１１２０から入力された信号に対応する処理を行なう。
【００８０】
実施の形態３．
実施の形態２においては、新たなフラグメンテーション発生プロセスを特定し、唯一存在する判定テーブルを更新する方法について詳述した。ここで、当該更新された判定テーブルを用いて新たに情報処理装置を稼動させた場合、実施の形態２で示したような所望の動作がなされること、つまりフラグメンテーションが発生しないことが理想ではあるが、実際は判定テーブルの内容に関わらずフラグメンテーションが発生する可能性はあり、場合によっては判定テーブルを更新したことで、更新される前の判定テーブルを用いた場合よりフラグメンテーションの発生量が増大してしまう可能性もある。このような場合においても実施の形態２では、状況を改善すべく自立的に判定テーブルの更新処理を続けていくわけだが、更新前の判定テーブルに戻したいという要求には応えられなかった。本実施例においては上記の要求を満たすための実施の形態について詳述する。
【００８１】
図１３は、実施の形態３におけるメモリ管理部１３１の構成を示すブロック図である。なお、図１３において、実施の形態２のメモリ管理装置２１と同様の構成については同一の符号を付記し説明を省略する。メモリ管理部１３１における記憶部３３には、フラグメンテーション発生プロセス判定テーブル（以下、判定テーブルと称す）を複数格納可能で、さらに前記判定テーブルが複数あった場合に、メモリ管理部１３１が最適な判定テーブルを選択するための情報を含む「判定テーブルリスト」が格納されている点、及び要求判定部２３が当該情報処理装置起動後初めてメモリ確保または解放要求を受けた際に記憶部３３に格納されている前記「判定テーブルリスト」を参照することで、最適な判定テーブルを選択する点が実施の形態２と異なる。また、フリーメモリブロック管理部６３は、実施の形態２で示したフリーメモリブロックテーブルの管理（更新）を行うとともに、当該フリーメモリブロックテーブルに記憶された情報に基づいて、選択している判定テーブルに未登録のフラグメンテーション発生プロセスを実施の形態２と同様に特定するが、新たなフラグメンテーション発生プロセスを特定した場合には、当該フラグメンテーション発生プロセスを含む新規の判定テーブルを複製し、必要に応じて記憶部３３に格納、及び前記「判定テーブルリスト」を更新する点が実施の形態２と異なる。以下では、当該メモリ管理部１３１が、情報処理装置起動時に最適な判定テーブルを選択する方法、及びメモリ管理部１３１が新規の判定テーブルを記憶部３３に格納するまでのフロー、及び「判定テーブルリスト」を更新する方法について詳述する。
【００８２】
図１４（ａ）〜（ｃ）に示したのは、それぞれフラグメンテーション発生プロセス判定テーブルの例であり、図２と同様に（１）フラグメンテーションを発生するプロセスの名称等、当該プロセスを特定するための情報（Ｐ０１，Ｐ０２，Ｐ０３，Ｐ０４，Ｐ１１，Ｐ１２，Ｐ１３，Ｐ１４，Ｐ１５，Ｐ２１，Ｐ２２，Ｐ２３）（以下、プロセス特定情報ともいう）、（２）フラグメンテーション発生プロセスに対応して確保される前記メモリブロックのアドレスを特定するための情報（ａ０１，ａ０２，ａ０３，ａ０４，ａ１１，ａ１２，ａ１３，ａ１４，ａ１５，ａ２１，ａ２２，ａ２３）（以下、割り当てアドレスともいう）、および、（３）当該プロセスを実行するために確保することが必要なメモリブロックのサイズ（Ｓ０１，Ｓ０２，Ｓ０３，Ｓ０４，Ｓ１１，Ｓ１２，Ｓ１３，Ｓ１４，Ｓ１５，Ｓ２１，Ｓ２２，Ｓ２３）（以下、割り当てサイズともいう）が予め記憶される。
【００８３】
図１５（ａ）〜（ｃ）に示したのは、メモリ管理部１３１が前記図１４に示した３つの判定テーブルをそれぞれ選択した場合に、十分時間が経過した後のメモリの使用状態を説明するための説明図である。ここで、図１５において、「ｂ」は各メモリブロックを示し、「ａ」は各メモリブロックの先頭アドレスを示す。また、「Ｓ」は各メモリブロックのサイズを示す。また、「ａ」、「ｂ」または「Ｓ」に付された「０１」、「０２」等の符号は各メモリブロックを使用するプロセスとの対応を示す。すなわち、図１５（ａ）において、先頭アドレスが「ａ０１」で、サイズが「Ｓ０１」のメモリブロックｂ０１はプロセスＰ０１によって使用されるメモリブロックであることを示す。
【００８４】
また図１６（ａ）〜（ｃ）に示したのは、メモリ管理部１３１が前記図１４に示した３つの判定テーブルをそれぞれ選択した場合に、十分時間が経過した後のフリーメモリブロック管理テーブルの状態を説明するための説明図である。
【００８５】
さて、図１５（ａ）においては、前記情報処理装置が起動後、プロセスＰ０１，Ｐ０２，Ｐ０３，Ｐ０４を含む複数のプロセスが実行され、十分時間が経過した結果、メモリには、高アドレス側に「判定テーブル０」に従って固定領域に確保された４つのメモリブロック（ｂ０１，ｂ０２，ｂ０３，ｂ０４）と、低アドレス側にはブロック名等は図示しないが複数のメモリブロックが確保されている。一方、フリーメモリブロックとしては、フラグメンテーション発生領域であるメモリブロック（ｂ０Ｆ１，ｂ０Ｆ２）、及び、フラグメンテーション発生領域でないメモリブロック（ｂ０ｅｍｐ）が存在し、この時のフリーメモリブロック管理テーブルの状態が図１６（ａ）に図示される。ここで、「Ｆ」と付されたメモリブロックは、フラグメンテーション発生領域であることを示している。図１５（ｂ）、図１５（ｃ）、及び図１６（ｂ）、図１６（ｃ）、についても同様である。また、各判定テーブル選択時に発生したフラグメンテーション領域であるメモリブロック（ｂ０Ｆ１，ｂ０Ｆ２，ｂ１Ｆ１，ｂ１Ｆ２，ｂ１Ｆ３，ｂ２Ｆ１，ｂ２Ｆ２，ｂ２Ｆ３，ｂ２Ｆ４）のサイズ（Ｓ０Ｆ１，Ｓ０Ｆ２，Ｓ１Ｆ１，Ｓ１Ｆ２，Ｓ１Ｆ３，Ｓ２Ｆ１，Ｓ２Ｆ２，Ｓ２Ｆ３，Ｓ２Ｆ４）は、ここでは簡単のため全て同じ「ＳＸ」とする。つまり、フラグメンテーション領域の合計サイズは、「判定テーブル０」を選択した時が一番小さく（Ｓ０Ｆ１＋Ｓ０Ｆ２＝２ＳＸ）、次いで「判定テーブル１」を選択した場合の（Ｓ１Ｆ１＋Ｓ１Ｆ２＋Ｓ１Ｆ３＝３ＳＸ）、一番大きいのが「判定テーブル２」を選択した場合の（Ｓ２Ｆ１＋Ｓ２Ｆ２＋Ｓ２Ｆ３＋Ｓ２Ｆ４＝４ＳＸ）となる。
【００８６】
さて前記に示した３つの判定テーブルが記憶部３３に格納されている場合、「判定テーブル０」を選択するのが、メモリを有効利用する観点で最適であるわけだが、前記要求判定部２３が、情報処理装置起動後初めてメモリ確保または解放要求を受けた時に、最適な判定テーブルを選択するには、図１７に示すような情報テーブル（前記「判定テーブルリスト」）を用意し参照させれば良い。図１７は、各判定テーブルの名称等、当該判定テーブルを特定するための情報と、各判定テーブルを選択した場合に発生したフラグメンテーション発生領域の合計サイズの最大値を示すサイズ情報が示してある。つまり、要求判定部２３は当該「判定テーブルリスト」において、サイズ情報が最も小さい判定テーブルを選択すれば良い。
【００８７】
図１８は、実施の形態３におけるメモリ管理部１３１の動作を説明するためのフローチャートである。ここで、本実施例において特徴的な処理は点線枠で囲んである。電源投入により情報処理装置が起動し、初めてのメモリ確保または解放要求を受けたことで、メモリ管理部１３１によるメモリ管理処理が開始される（ＳＴＡＲＴ）。要求判定部２３は、記憶部３３に保持している前記「判定テーブルリスト」を参照し、フラグメンテーション合計サイズが最も小さい判定テーブルを選択する（Ｓ１０１）。
【００８８】
メモリ管理部１３１は最適な判定テーブルを選択後、実施の形態２で示したフラグメンテーション発生プロセスの同定処理を行う（Ｓ１０２）。実施の形態２においては、フラグメンテーション発生プロセスを特定した場合、唯一の存在であった判定テーブルを更新するようにしたが、本実施の形態においては、フラグメンテーションが発生した場合（Ｓ１０３：ＹＥＳ）、まずは現在選択中の判定テーブルを複製する（以降、複製された判定テーブルを“仮判定テーブル”と称す）（Ｓ１０４）とともに、仮判定テーブルに前記新規フラグメンテーション発生プロセスを追加する（Ｓ１０５）。
【００８９】
ここでメモリ管理部１３１は、新規フラグメンテーション発生プロセスを前記仮判定テーブルに登録する度に、現在のフラグメンテーション合計サイズを算出する（以降、算出された値を“算出値”と称す）（Ｓ１０６）。さらに、前記「判定テーブルリスト」を参照し、現在選択している判定テーブルに対応するフラグメンテーション合計サイズ（以降、“登録値”と称す）を前記“算出値”と比較する（Ｓ１０７）。
【００９０】
“算出値”が“登録値”を超えた場合（Ｓ１０８：ＹＥＳ）は、「判定テーブルリスト」の“登録値”を“算出値”で更新する（Ｓ１０９）。一方、“算出値”が登録値を超えない場合（Ｓ１０８：ＮＯ）は、「判定テーブルリスト」の更新は行わずにステップＳ１１０に進む。
【００９１】
ステップＳ１１０においては、ステップＳ１０５にて更新された仮判定テーブルと、すでに記憶部３３に格納されている全ての判定テーブルとが比較され、同一テーブルが存在しないか否かが確認される。ここで、同一テーブルが存在しない場合（Ｓ１１０：ＮＯ）は、当該仮判定テーブルを新規判定テーブルとして記憶部３３に格納し、さらに前記「判定テーブルリスト」に当該新規判定テーブルの情報を登録する（Ｓ１１１）。この際、新規判定テーブルに対応するフラグメンテーション合計サイズ（登録値）は「０」とする。これは、新規の判定テーブルが登録された時点では、当該テーブルを選択した際のフラグメンテーション発生量は未知であることに加え、情報管理装置が起動時に当該新規登録された判定テーブルが前記要求判定部２３によって選択されるようにするためである。なお、ステップＳ１１１の後、及びステップＳ１１０において既に同一の判定テーブルが登録されていると判断された場合（Ｓ１１０：ＹＥＳ）は、引き続きステップＳ１１２においてフラグメンテーション発生プロセス同定処理を継続する。
【００９２】
なお、上述のステップＳ１１０において、記憶部３３に登録されている判定テーブルが存在しなかった場合にも同一テーブルは存在しないと判断される（Ｓ１１０：ＮＯ）。
【００９３】
ここでメモリ管理部１３１において、さらにフラグメンテーション発生プロセスが同定された場合（Ｓ１１３：ＹＥＳ）、当該新規フラグメンテーション発生プロセスは、前記ステップＳ１０５にて更新された仮判定テーブルに追加登録される（Ｓ１０５）。以降ステップＳ１０５からステップＳ１１３の処理は繰り返され、判定テーブルリスト及び仮判定テーブルは適宜更新される。
【００９４】
以上の説明のように、実施の形態３におけるメモリ管理部１３１によれば、フラグメンテ−ションの発生要因とプロセスの種類とが依存関係にある場合であっても、フラグメンテーションの発生を抑制することができる。
【００９５】
また、前記判定テーブルが記憶部に複数格納されている場合でも、何れの判定テーブルを選択すべきかの情報を持つテーブルも同時に格納されているため、当該テーブルを参照することで、その時点において最適な判定テーブルを選択でき、フラグメンテーション抑制効果の高いメモリ管理が行える。
【００９６】
また、前記判定テーブルを記憶部に複数格納できるため、新規のフラグメンテーション発生プロセスが同定された場合、その時点で選択していた判定テーブルを残しつつ、当該新規のフラグメンテーション発生プロセスを含む判定テーブルを新たに生成、及び記憶部への格納が可能となる。これにより、その後当該新規に生成された判定テーブルが選択されたが、それまでの判定テーブルを用いるよりもフラグメンテーションの発生量が増大してしまった場合であっても、上述のようなメモリ管理を行うことで、それ以降の起動時に更新前に選択していた判定テーブルを選択することも可能となる。
【００９７】
また、前記判定テーブルに登録されていないフラグメンテーション発生プロセスを特定して、当該プロセスによるフラグメンテーションの発生を抑制することができる。例えば、前記判定テーブルが最初、１つも記憶部に登録されていなかった場合には、当該情報処理装置によって種々のプロセスを実行することによってフラグメンテーション発生プロセスの特定および判定テーブルの登録を自動的に行うことができるためフラグメンテーション発生プロセスを特定するための作業を予め行う必要がない。よって、煩雑な実験またはシミュレーションを行う手間を省くことができる。したがって、フラグメンテーションの発生を抑制することが可能なメモリ管理を容易に構築することができる。
【００９８】
また、予め実験等を行った結果に基づいてフラグメンテーション発生プロセスを前記判定テーブルに予め登録する場合においても、全てのフラグメンテーション発生プロセスを特定することは困難な場合もある。したがって、仮に全てのフラグメンテーション発生プロセスを特定することができなかった場合には予想外のフラグメンテーションが発生する可能性がある。しかしながら、実施の形態３におけるメモリ管理装置によれば、予想外のフラグメンテーションが発生した場合においても、当該フラグメンテーション発生プロセスを含む新規判定テーブルを記憶部に格納できるため、当該プロセスによるフラグメンテーションの発生を完全に抑えることができる。
【００９９】
また、フラグメンテーション発生プロセスが同定される度に、フラグメンテーション発生領域の合計サイズを算出する機能を有しているため、各判定テーブルのフラグメンテーション抑制効果を数値として表すことができ、さらに前記「判定テーブルリスト」に記録されている値との比較を行うことで適宜「判定テーブルリスト」を更新する機能を有しているため、メモリ管理の信頼性はより高まっていく。
【０１００】
また、新規の判定テーブルを記憶部に格納する際には、既に格納されている判定テーブルと同一のものが存在しないかを確認した上で格納するため、無駄に判定テーブルを格納するような不具合を抑制できる。
【０１０１】
実施の形態４．
実施の形態３においては、前記情報処理装置では、例えばＭＰＥＧ（Moving Picture Expert Group）−２  ＴＳ（Transport Stream）に含まれる映像・音声の再生等を行うことを想定していたが、当該情報処理装置がＭＰＥＧ−２ＴＳ以外の規格の映像・音声の再生を行うことも考えられる。このような場合、規格の種類によって当該情報処理装置の行う処理も異なってくるため、それに伴いメモリの確保・解放処理の態様も異なり、ひいてはフラグメンテーションを発生させるプロセスも大きく異なってくる可能性もある。しかし、実施の形態３におけるメモリ管理装置においては、情報処理装置が稼動中に要求判定部が選択する判定テーブルを動的に切り換えることを想定していなかったため、情報処理装置が稼動中に処理内容が大きく変わる、例えば前記のように規格の異なる映像・音声の再生を行うような場合に、フラグメンテーションが大きく発生してしまう可能性もある。本実施例においては上記の課題を解決するための実施の形態について詳述する。
【０１０２】
図１９は、実施の形態４におけるメモリ管理装置１４１の構成を示すブロック図である。なお、図１９において、実施の形態３のメモリ管理部１３１と同様の構成については同一の符号を付記し説明を省略する。メモリ管理装置１４１における要求判定部２４では、選択する判定テーブルを当該情報処理装置で実行されるアプリケーションに応じて動的に切り換える機能を持つこと、また記憶部３４では当該情報処理装置で実行されるアプリケーションの種類に応じた「判定テーブルリスト」、及び「判定テーブル」が格納される点が実施の形態３と異なる。
【０１０３】
なお、ここで言うアプリケーションとは、複数の情報処理を行う実行プログラムのことを意味している。
【０１０４】
ここで、図２０を用いて記憶部３４に格納されている「判定テーブルリスト」について具体的に説明する。例えば当該情報処理装置においては、２種類のアプリケーション（アプリＡ及びアプリＢ）が実行可能で、それぞれ処理内容が大きく異なるため、フラグメンテーションを発生させるプロセスも異なってくるとする。この時、記憶部３４はアプリケーションに応じた判定テーブルが格納されているとする。判定テーブルリストＡを見ると、記憶部３４には３つの判定テーブル（判定テーブルＡ０、判定テーブルＡ１、判定テーブルＡ２）が格納されており、各判定テーブルを選択した際のフラグメンテーション発生量が（２Ｓｘ、１３Ｓｘ、８Ｓｘ）であることが分かる。つまり、アプリＡを実行する際、要求判定部２４は「判定テーブルＡ０」を選択すれば良いし、同様にアプリＢを実行する際は「判定テーブルＢ２」を選択すれば良い。
【０１０５】
上記のように本実施の形態に係る記憶部３４には、当該情報処理装置が実行可能なアプリケーションの種類だけ「判定テーブルリスト」が存在する。
【０１０６】
また、要求判定部２４では、プロセス特定情報（プロセスの名称等）から何れのアプリケーションに対応した判定テーブルに切り換えるべきかの判断を行って、判定テーブルの切り換え処理を行っても良いし、アプリケーション切換時に切換後のアプリケーションから当該アプリケーションに対応した判定テーブルの選択指示を出させても良い。
【０１０７】
以上の説明のように、実施の形態４におけるメモリ管理装置１４１によれば、実行するアプリケーションに応じた「判定テーブルリスト」を記憶部に保持するため、実行するアプリケーションに応じた最適な「判定テーブル」を選択することが可能となる。また、当該情報処理装置が稼動中であった場合も、アプリケーションが切り換わった際に動的に判定テーブルを切り換えることが可能であるため、情報処理装置が稼動中にアプリケーションが切り換わったことで、急にフラグメンテーションが増大することがなくなり、当該情報処理装置が扱うアプリケーションの数が増大した場合でも効果的にフラグメンテーションの発生を抑制できる。
【図面の簡単な説明】
【０１０８】
【図１】実施の形態１におけるメモリ管理装置を説明するための説明図である。
【図２】フラグメンテーション発生プロセス判定テーブルを説明するための説明図である。
【図３】前記フリーメモリブロックテーブルを説明するための説明図である。
【図４】プロセスの実行に使用するメモリの使用態様を説明するための説明図である。
【図５】記憶部３に設けるフリーメモリブロックテーブルを説明するための説明図である。
【図６】テーブル情報に対応するメモリブロックのメモリ上の位置を説明するための説明図である。
【図７】実施の形態１におけるメモリ管理装置１１の動作を説明するためのフローチャートである。
【図８】実施の形態２におけるメモリ管理装置２１の構成を示すブロック図である。
【図９】フラグメンテーション発生プロセスを特定するまでにおけるフリーメモリ管理部６２によるフリーメモリブロックテーブルの更新を説明するための説明図である。
【図１０】フリーメモリ管理部６２におけるフラグメンテーション発生プロセスの特定方法を説明するための説明図である。
【図１１】図１０は、プロセスＰＢを判定テーブルに登録した後、再度、プロセスＰＢを実行した場合におけるメモリ９００の使用状態を説明するための説明図である。
【図１２】情報処理装置１１００の構成を示すブロック図である。
【図１３】実施の形態３におけるメモリ管理部１３１の構成を示すブロック図である。
【図１４】記憶部３３に格納されている複数のフラグメンテーション発生プロセス判定テーブルを説明するための説明図である。
【図１５】メモリ管理部１３１が図１４に示した３つの判定テーブルをそれぞれ選択した場合に、十分時間が経過した後のメモリの使用状態を説明するための説明図である。
【図１６】メモリ管理部１３１が図１４に示した３つの判定テーブルをそれぞれ選択した場合に、十分時間が経過した後のフリーメモリブロック管理テーブルの状態を説明するための説明図である。
【図１７】メモリ管理部１３１が図１４に示した３つの判定テーブルのうち何れを選択するかを決定する際に参照する判定テーブルリストを説明するための説明図である。
【図１８】実施の形態３におけるメモリ管理部１３１の動作を説明するためのフローチャートである。
【図１９】実施の形態４におけるメモリ管理装置１４１の構成を示すブロック図である。
【図２０】実施の形態４におけるメモリ管理装置１４１が記憶部３４に格納している２種類の判定テーブルリストを説明するための説明図である。
【符号の説明】
【０１０９】
１  プロセス、２  要求判定部、３１，３２  記憶部、４  メモリ確保サイズ解析部、５  フリーメモリブロック検索部、６１，６２  フリーメモリブロック管理部、７  メモリブロック領域確保部、８  メモリブロック情報返却部、９  メモリ解放サイズ解析部、１０  フリーメモリブロック登録部、１１，２１  メモリ管理装置、２３  ２４  要求判定部、３３  ３４  記憶部、６３  フリーメモリブロック管理部、７  メモリブロック領域確保部、１３１  １４１  メモリ管理装置。
【図１】
0004631871.tif 000002
【図２】
0004631871.tif 000003
【図３】
0004631871.tif 000004
【図４】
0004631871.tif 000005
【図５】
0004631871.tif 000006
【図６】
0004631871.tif 000007
【図７】
0004631871.tif 000008
【図８】
0004631871.tif 000009
【図９】
0004631871.tif 000010
【図１０】
0004631871.tif 000011
【図１１】
0004631871.tif 000012
【図１２】
0004631871.tif 000013
【図１３】
0004631871.tif 000014
【図１４】
0004631871.tif 000015
【図１５】
0004631871.tif 000016
【図１６】
0004631871.tif 000017
【図１７】
0004631871.tif 000018
【図１８】
0004631871.tif 000019
【図１９】
0004631871.tif 000020
【図２０】
0004631871.tif 000021