(57)【要約】【課題】メモリ管理プログラムによるメモリ領域の割り当てに関して、アプリケーションプログラムとメモリとのミスマッチを防止できるようにする。【解決手段】メモリ管理プログラムによるメモリ管理方法であって、アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法。【選択図】図３
2007328628.tif 000002
【特許請求の範囲】
【請求項１】
メモリ管理プログラムによるメモリ管理方法であって、
アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、
前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法。
【請求項２】
各メモリの各未使用領域に、アドレスの増加方向に隣接する未使用領域へのリンク情報と、アドレスの減少方向に隣接する未使用領域へのリンク情報とを格納しておき、
メモリ領域を確保する未使用領域を、メモリ領域を確保するメモリの先頭の未使用領域からアドレスの増加方向に探索していく場合には、アドレスの増加方向に隣接する未使用領域へのリンク情報を利用して探索を実行し、
メモリ領域を確保する未使用領域を、メモリ領域を確保するメモリの末尾の未使用領域からアドレスの減少方向に探索していく場合には、アドレスの減少方向に隣接する未使用領域へのリンク情報を利用して探索を実行する請求項１に記載のメモリ管理方法。
【請求項３】
各メモリについて、そのメモリの先頭の未使用領域へのポインタと、そのメモリの末尾の未使用領域へのポインタとを管理しておき、
メモリ領域を確保する未使用領域を、メモリ領域を確保するメモリの先頭の未使用領域からアドレスの増加方向に探索していく場合には、そのメモリの先頭の未使用領域へのポインタを利用して探索を開始し、
メモリ領域を確保する未使用領域を、メモリ領域を確保するメモリの末尾の未使用領域からアドレスの減少方向に探索していく場合には、そのメモリの末尾の未使用領域へのポインタを利用して探索を開始する請求項２に記載のメモリ管理方法。
【請求項４】
メモリ管理プログラムであって、
アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、
前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法、をコンピュータに実行させるメモリ管理プログラム。
【請求項５】
メモリ管理プログラムが実装された情報処理装置であって、
アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、
前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法、をコンピュータに実行させるメモリ管理プログラム、が実装された情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理方法、メモリ管理プログラム、及び情報処理装置に関する。
【背景技術】
【０００２】
ＰＣやＩＴ機器等の情報処理装置には通常、メモリ管理機構が存在する。情報処理装置のメモリ管理機構は、ハードウェア的に実現される場合もあれば、ソフトウェア的に実現される場合もある（特許文献１、特許文献２、非特許文献１、非特許文献２）。近年の情報処理装置には、ＯＳの一部として、メモリを管理するためのメモリ管理プログラムが実装されている事が多い。メモリ管理プログラムによるメモリ領域の割り当てにより、複数のアプリケーションプログラムが共通のメモリを効率的に共用できるようになる。
【０００３】
しかしながら、従来のメモリ管理プログラムによるメモリ領域の割り当てでは、アプリケーションプログラムとメモリのミスマッチが起こる事があった。例えば、混載ＤＲＡＭ等の近接メモリが必要なアプリケーションプログラムに、外付けＤＲＡＭ等の遠隔メモリのメモリ領域が割り当てられたり、逆に、外付けＳＲＡＭ等の遠隔メモリで十分なアプリケーションプログラムに、混載ＳＲＡＭ等の近接メモリのメモリ領域が割り当てられたりすることがあった。
【特許文献１】特開２０００−３５９１５号公報
【特許文献２】特開２００２−５５８７５号公報
【非特許文献１】米国特許６６８４３１４号公報
【非特許文献２】米国特許６５３０００７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、メモリ管理プログラムによるメモリ領域の割り当てに関して、アプリケーションプログラムとメモリとのミスマッチを防止できるようにすることを課題とする。
【課題を解決するための手段】
【０００５】
本発明は、メモリ管理プログラムによるメモリ管理方法であって、アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法に係る。
【０００６】
本発明は、メモリ管理プログラムであって、アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法、をコンピュータに実行させるメモリ管理プログラムに係る。
【０００７】
本発明は、メモリ管理プログラムが実装された情報処理装置であって、アプリケーションプログラムから当該メモリ管理プログラムにメモリ領域の確保を要求する領域確保要求であって、メモリ領域を確保するメモリをアプリケーションプログラムが指定できるような領域確保要求、に応じてメモリ領域を確保し、前記領域確保要求に応じて確保されたメモリ領域を前記アプリケーションプログラムに割り当てるメモリ管理方法、をコンピュータに実行させるメモリ管理プログラム、が実装された情報処理装置に係る。
【発明の効果】
【０００８】
本発明によれば、メモリ管理プログラムによるメモリ領域の割り当てに関して、アプリケーションプログラムとメモリとのミスマッチを防止できるようになる。
【発明を実施するための最良の形態】
【０００９】
（第１実施例）
図１は、情報処理装置１０１のシステム構成図である。図１の情報処理装置１０１は、ＣＰＵ１１１と、第１メモリ１１２と、第２メモリ１１３と、ＨＤＤ１１４とを具備している。ＣＰＵ１１１は、種々の情報処理を実行するためのプロセッサである。第１メモリ１１２は、ＣＰＵ１１１と同じチップに搭載されている混載ＤＲＡＭである。第２メモリ１１３は、ＣＰＵ１１１と異なるチップに搭載されている外付けＤＲＡＭである。ＨＤＤ１１４は、種々の情報を記憶するためのストレージである。図１の情報処理装置１０１には、メモリ管理プログラム１２１と、複数のアプリケーションプログラム１２２とが装備されている。これらのプログラムは、ＨＤＤ１１４内に格納されており、ＣＰＵ１１１上で動作する。
【００１０】
図２は、第１実施例のメモリ管理について説明するためのデータ構造図である。
【００１１】
メモリ管理プログラム１２１は、各メモリの管理情報をメモリ管理情報テーブル２０１に管理する。メモリ管理情報テーブル２０１には、第１メモリ１１２の管理情報２１１と第２メモリ１１３の管理情報２２１とが管理される。各メモリの管理情報は、そのメモリを識別するためのＩＤ情報と、そのメモリの先頭の未使用領域（アドレスが最小の未使用領域）へのポインタ（先頭領域ポインタ）等により構成される。第１メモリ１１２の管理情報２１１は、第１メモリ１１２のＩＤ情報２１２と、第１メモリ１１２の先頭領域ポインタ２１３等からなる。第２メモリ１１３の管理情報２２１は、第２メモリ１１３のＩＤ情報２２２と、第２メモリ１１３の先頭領域ポインタ２２３等からなる。
【００１２】
使用中のメモリには、使用領域（使用中のメモリ領域）３０１と、未使用領域（使用中ではないメモリ領域）３０２とが存在する。メモリ管理プログラム１２１は、各メモリの各未使用領域３０２に、アドレスの増加方向に隣接する未使用領域へのリンク情報（増加方向リンク情報）３１１と、その未使用領域のサイズ３２１とを格納する。各未使用領域３０２は、増加方向リンク情報３１１の格納領域と、サイズ３２１の格納領域と、残りの領域３３１からなる。図２には、第１メモリ１１２の使用領域３０１と未使用領域３０２とが図示されており、図中の下方向がアドレスの増加方向となっており、図中の上方向がアドレスの減少方向となっている。
【００１３】
図３は、第１実施例のメモリ管理について説明するためのフローチャート図である。
【００１４】
アプリケーションプログラム１２２がメモリを必要とする場合、当該アプリケーションプログラム１２２からメモリ管理プログラム１２１に、メモリ領域の確保を要求する領域確保要求が送信される（ステップＳ１０１）。当該領域確保要求では、確保するメモリ領域のサイズと、メモリ領域を確保するメモリとを指定することができる。即ち、どのメモリからどのようなサイズのメモリ領域を確保するかを、領域確保要求を送信するアプリケーションプログラム１２２が指定できるのである。
【００１５】
メモリ管理プログラム１２１は、上記領域確保要求を受信すると、領域確保要求で指定されたメモリを、メモリ管理情報テーブル２０１から検索する（ステップＳ１１１）。当該検索では、各メモリのＩＤ情報（２１２，２２２）を利用して、各メモリが識別される。次に、メモリ管理プログラム１２１は、領域確保要求で指定されたサイズのメモリ領域を確保できる未使用領域を、検索されたメモリから探索する（ステップＳ１１２）。当該探索は、当該メモリの先頭領域ポインタ（２１３，２２３）を利用して、当該メモリの先頭の未使用領域から開始され、当該メモリの各未使用領域の増加方向リンク情報（３１１）を利用して、アドレスの増加方向に進行していく。
【００１６】
メモリ管理プログラム１２１は、ある未使用領域３０２から指定サイズ分のメモリ領域を確保できると判断した場合（ステップＳ１１３）、その未使用領域３０２の先頭アドレスを起点とする指定サイズ分のメモリ領域を確保し（ステップＳ１２１）、当該メモリ領域を上記アプリケーションプログラム１２２に割り当てる（ステップＳ１２２）。この際、当該未使用領域３０２のサイズが指定サイズよりも大きい場合には、当該未使用領域３０２は指定サイズ分だけ小さくなって残存するので、当該未使用領域３０２のサイズ３２１の値が指定サイズ分だけ小さい値に変更される。一方、当該未使用領域３０２のサイズが指定サイズと等しい場合には、当該未使用領域３０２は消滅するので、当該未使用領域３０２の１つ前の未使用領域３０２の増加方向リンク情報３１１が、当該未使用領域３０２から当該未使用領域３０２の１つ後の未使用領域３０２に変更される。次に、メモリ管理プログラム１２１から上記アプリケーションプログラム１２２に、割り当てられたメモリ領域の先頭アドレスが通知される（ステップＳ１２３）。
【００１７】
他方、メモリ管理プログラム１２１は、どの未使用領域３０２からも指定サイズ分のメモリ領域を確保できないと判断した場合（ステップＳ１１４）、上記アプリケーションプログラム１２２にエラーを通知する（ステップＳ１２４）。
【００１８】
このように、第１実施例では、メモリ領域の確保を要求する領域確保要求にて、メモリ領域を確保するメモリを指定することができる。即ち、どのメモリからメモリ領域を確保するかを、領域確保要求を送信するアプリケーションプログラム１２２が指定できるのである。例えば、近接メモリが必要なアプリケーションプログラム１２２が、混載ＤＲＡＭである第１メモリ１１２を指定したり、遠隔メモリで十分なアプリケーションプログラム１２２が、外付けＤＲＡＭである第２メモリ１１３を指定したりすることができる。このようにして、第１実施例では、メモリ管理プログラム１２１によるメモリ領域の割り当てに関して、アプリケーションプログラム１２２とメモリとのミスマッチを防止できるようになっている。
【００１９】
なお、第１実施例におけるメモリ指定は、「第１メモリを指定」「第２メモリを指定」のようにメモリ毎に行う事にしてもよいし、「第１グループのメモリを指定」「第２グループのメモリを指定」のようにメモリのグループ毎に行う事にしてもよい。例えば、情報処理装置１０１に複数の混載ＤＲＡＭと複数の外付けＤＲＡＭとが実装されている場合、混載ＤＲＡＭと外付けＤＲＡＭとでグループ分けする事が考えられる。メモリのグループ分けは、「混載か外付けか」「ＤＲＡＭかＳＲＡＭか」「旧型か新型か」のように、メモリ（物理メモリ）の属性（物理属性）に基づいて行う事が望ましい。アプリケーションプログラム１２２にとっては、使用するメモリの属性が重要であるからである。グループ毎のメモリ指定は、「ＩＤ＝１のグループのメモリを指定」「ＩＤ＝２のグループのメモリを指定」のようにグループのＩＤで行う事にしてもよいし、「混載ＤＲＡＭを指定」「外付けＤＲＡＭを指定」のようにメモリの属性で行う事にしてもよい。メモリ管理プログラム１２１は、あるグループからどのメモリを選択するか（混載ＤＲＡＭグループからどの混載ＤＲＡＭを選択するか、外付けＤＲＡＭグループからどの混載ＤＲＡＭを選択するか等）を、一定の規則に基づいて決定する（各メモリのＩＤ番号順等）ようにしてもよいし、ランダムに決定するようにしてよい。
【００２０】
また、第１実施例の領域確保要求におけるメモリ指定は、「必須要件」（指定しなければならない）としても「任意要件」（指定しても指定しなくてもよい）としてもよい。メモリ指定を任意要件とする場合、メモリ指定のない領域確保要求を受信したメモリ管理プログラム１２１は、第１メモリ１１２と第２メモリ１１３のどちらからメモリ領域を確保してもよいことにしてもよい（図４）。この場合には例えば、先ず第１メモリ１１２が探索対象となり、次に第２メモリ１１３が探索対象となるようにしてもよい。この場合、ステップＳ１１２，Ｓ１１３，Ｓ１１４の（ループ）探索処理が、第１メモリ１１２と第２メモリ１１３について実行される。更には、第１メモリ１１２と第２メモリ１１３にまたがってメモリ領域を確保してもよいことにしてもよい。
【００２１】
ステップＳ１２４について補足する。指定メモリから指定サイズ分のメモリ領域が確保されなかった場合には、ここではエラーが通知される（ステップＳ１２４）が、代わりに非指定メモリから指定サイズ分のメモリが確保されるようにしてもよい。この場合、ステップＳ１１２，Ｓ１１３，Ｓ１１４の（ループ）探索処理が、指定メモリと非指定メモリについて実行される。非指定メモリからメモリを確保するか否かについては、アプリケーションプログラム１２２が領域確保要求にて指定できるようにしてよい。
【００２２】
（第２実施例）
第２実施例は、第１実施例の変形実施例である。よって、第２実施例については、第１実施例との相違点を中心に説明する。図１のシステム構成図は、第１実施例と第２実施例とで共通である。
【００２３】
図５は、第２実施例のメモリ管理について説明するためのデータ構造図である。
【００２４】
使用中のメモリには、使用領域（使用中のメモリ領域）３０１と、未使用領域（使用中ではないメモリ領域）３０２とが存在する。メモリ管理プログラム１２１は、各メモリの各未使用領域３０２に、アドレスの増加方向に隣接する未使用領域へのリンク情報（増加方向リンク情報）３１１と、アドレスの減少方向に隣接する未使用領域へのリンク情報（減少方向リンク情報）３１２と、その未使用領域のサイズ３２１とを格納する。各未使用領域３０２は、増加方向リンク情報３１１の格納領域と、減少方向リンク情報３１２の格納領域と、サイズ３２１の格納領域と、残りの領域３３１からなる。図５には、第１メモリ１１２の使用領域３０１と未使用領域３０２とが図示されており、図中の下方向がアドレスの増加方向となっており、図中の上方向がアドレスの減少方向となっている。
【００２５】
図６は、第２実施例のメモリ管理について説明するためのフローチャート図である。
【００２６】
アプリケーションプログラム１２２がメモリを必要とする場合、当該アプリケーションプログラム１２２からメモリ管理プログラム１２１に、メモリ領域の確保を要求する領域確保要求が送信される（ステップＳ１０１）。当該領域確保要求では、確保するメモリ領域のサイズと、メモリ領域を確保するメモリと、未使用領域を探索していく方向（アドレスの増加方向か減少方向か）とを指定することができる。即ち、どのメモリからどのようなサイズのメモリ領域をどのような方向に探索して確保するかを、領域確保要求を送信するアプリケーションプログラム１２２が指定できるのである。
【００２７】
メモリ管理プログラム１２１は、上記領域確保要求を受信すると、領域確保要求で指定されたメモリを、メモリ管理情報テーブル２０１から検索する（ステップＳ１１１）。当該検索では、各メモリのＩＤ情報（２１２，２２２）を利用して、各メモリが識別される。次に、メモリ管理プログラム１２１は、領域確保要求で指定されたサイズのメモリ領域を確保できる未使用領域を、検索されたメモリから探索する（ステップＳ１１２，ステップＳ２１２）。領域確保要求で指定された探索方向がアドレス増加方向である場合（ステップＳ３１１）、当該探索は、当該メモリの先頭領域ポインタ（２１３，２２３）を利用して、当該メモリの先頭の未使用領域から開始され、当該メモリの各未使用領域の増加方向リンク情報（３１１）を利用して、アドレスの増加方向に進行していく（ステップＳ１１２）。領域確保要求で指定された探索方向がアドレス減少方向である場合（ステップＳ３１１）、当該探索は、当該メモリの先頭領域ポインタ（２１３，２２３）と当該メモリの各未使用領域の増加方向リンク情報（３１１）とを利用して、当該メモリの末尾の未使用領域から開始され、当該メモリの各未使用領域の減少方向リンク情報（３１２）を利用して、アドレスの減少方向に進行していく（ステップＳ２１２）。後者の場合、先頭領域ポインタは、メモリの先頭の未使用領域を探すのに利用され、増加方向リンク情報は、メモリの先頭の未使用領域からメモリの末尾の未使用領域へと辿っていく（ステップＳ３１２）のに利用される。
【００２８】
ステップＳ１１３乃至Ｓ１２４については説明済なので、以下、ステップＳ２１３乃至Ｓ２２４について説明する。
【００２９】
メモリ管理プログラム１２１は、ある未使用領域３０２から指定サイズ分のメモリ領域を確保できると判断した場合（ステップＳ２１３）、その未使用領域３０２の末尾アドレスを終点とする指定サイズ分のメモリ領域を確保し（ステップＳ２２１）、当該メモリ領域を上記アプリケーションプログラム１２２に割り当てる（ステップＳ２２２）。この際、当該未使用領域３０２のサイズが指定サイズよりも大きい場合には、当該未使用領域３０２は指定サイズ分だけ小さくなって残存するので、当該未使用領域３０２のサイズ３２１の値が指定サイズ分だけ小さい値に変更される。一方、当該未使用領域３０２のサイズが指定サイズと等しい場合には、当該未使用領域３０２は消滅するので、当該未使用領域３０２の１つ前の未使用領域３０２の増加方向リンク情報３１１が、当該未使用領域３０２から当該未使用領域３０２の１つ後の未使用領域３０２に変更されて、当該未使用領域３０２の１つ後の未使用領域３０２の減少方向リンク情報３１２が、当該未使用領域３０２から当該未使用領域３０２の１つ前の未使用領域３０２に変更される（ステップＳ１２１及びＳ１２２でも同様である）。次に、メモリ管理プログラム１２１から上記アプリケーションプログラム１２２に、割り当てられたメモリ領域の先頭アドレスが通知される（ステップＳ２２３）。
【００３０】
他方、メモリ管理プログラム１２１は、どの未使用領域３０２からも指定サイズ分のメモリ領域を確保できないと判断した場合（ステップＳ２１４）、上記アプリケーションプログラム１２２にエラーを通知する（ステップＳ２２４）。
【００３１】
このように、第１実施例と第２実施例では、未使用領域３０２に格納されるリンク情報の種類が相違する。第１実施例では、リンク情報として増加方向リンク情報３１１のみが格納されるのに対して、第２実施例では、リンク情報として増加方向リンク情報３１１と減少方向リンク情報３１２とが格納される。即ち、第１実施例では、未使用領域のリンクリストが「単方向リンクリスト構造」となっているのに対して、第２実施例では、未使用領域のリンクリストが「双方向リンクリスト構造」となっている。
【００３２】
よって、第２実施例では、メモリ領域を確保する未使用領域を、アドレスの増加方向に探索していくこともできるし、アドレスの減少方向に探索していくこともできる。これにより、第２実施例では、メモリ領域のフラグメンテーション（分断化）を防止することができる。
【００３３】
その具体例を図７に示す。図７では、アドレスの並び順は、第１メモリ１１２が前方で第２メモリ１１３が後方となっている。第１メモリ１１２での未使用領域の探索方向は、アドレスの増加方向であり、未使用領域Ａからメモリ領域を確保できる場合には、未使用領域Ａの先頭アドレスａを起点Ｘ１とするメモリ領域Ｘが確保される。第２メモリ１１３での未使用領域の探索方向は、アドレスの減少方向であり、未使用領域Ｂからメモリ領域を確保できる場合には、未使用領域Ｂの末尾アドレスｂを終点Ｙ２とするメモリ領域Ｙが確保される。これにより、メモリ領域Ｘとメモリ領域Ｙの確保が、フラグメンテーションの原因となることが防止される。
【００３４】
なお、未使用領域の探索方向は、アプリケーションプログラム１２２が指定できるようにしても、アプリケーションプログラム１２２が指定できないようにしてもよい。
【００３５】
（第３実施例）
第３実施例は、第２実施例の変形実施例である。よって、第３実施例については、第２実施例との相違点を中心に説明する。図１のシステム構成図は、第２実施例と第３実施例とで共通である。
【００３６】
図８は、第３実施例のメモリ管理について説明するためのデータ構造図である。
【００３７】
メモリ管理プログラム１２１は、各メモリの管理情報をメモリ管理情報テーブル２０１に管理する。メモリ管理情報テーブル２０１には、第１メモリ１１２の管理情報２１１と第２メモリ１１３の管理情報２２１とが管理される。各メモリの管理情報は、そのメモリを識別するためのＩＤ情報と、そのメモリの先頭の未使用領域（アドレスが最小の未使用領域）へのポインタ（先頭領域ポインタ）と、そのメモリの末尾の未使用領域（アドレスが最大の未使用領域）へのポインタ（末尾領域ポインタ）等により構成される。第１メモリ１１２の管理情報２１１は、第１メモリ１１２のＩＤ情報２１２と、第１メモリ１１２の先頭領域ポインタ２１３と、第１メモリ１１２の末尾領域ポインタ２１４等からなる。第２メモリ１１３の管理情報２２１は、第２メモリ１１３のＩＤ情報２２２と、第２メモリ１１３の先頭領域ポインタ２２３と、第２メモリ１１３の末尾領域ポインタ２２４等からなる。
【００３８】
図９は、第３実施例のメモリ管理について説明するためのフローチャート図である。
【００３９】
アプリケーションプログラム１２２がメモリを必要とする場合、当該アプリケーションプログラム１２２からメモリ管理プログラム１２１に、メモリ領域の確保を要求する領域確保要求が送信される（ステップＳ１０１）。当該領域確保要求では、確保するメモリ領域のサイズと、メモリ領域を確保するメモリと、未使用領域を探索していく方向（アドレスの増加方向か減少方向か）とを指定することができる。即ち、どのメモリからどのようなサイズのメモリ領域をどのような方向に探索して確保するかを、領域確保要求を送信するアプリケーションプログラム１２２が指定できるのである。
【００４０】
メモリ管理プログラム１２１は、上記領域確保要求を受信すると、領域確保要求で指定されたメモリを、メモリ管理情報テーブル２０１から検索する（ステップＳ１１１）。当該検索では、各メモリのＩＤ情報（２１２，２２２）を利用して、各メモリが識別される。次に、メモリ管理プログラム１２１は、領域確保要求で指定されたサイズのメモリ領域を確保できる未使用領域を、検索されたメモリから探索する（ステップＳ１１２，ステップＳ２１２）。領域確保要求で指定された探索方向がアドレス増加方向である場合（ステップＳ３１１）、当該探索は、当該メモリの先頭領域ポインタ（２１３，２２３）を利用して、当該メモリの先頭の未使用領域から開始され、当該メモリの各未使用領域の増加方向リンク情報（３１１）を利用して、アドレスの増加方向に進行していく（ステップＳ１１２）。領域確保要求で指定された探索方向がアドレス減少方向である場合（ステップＳ３１１）、当該探索は、当該メモリの末尾領域ポインタ（２１４，２２４）を利用して、当該メモリの末尾の未使用領域から開始され、当該メモリの各未使用領域の減少方向リンク情報（３１２）を利用して、アドレスの減少方向に進行していく（ステップＳ２１２）。ステップＳ３１２が存在しないことに留意されたい。
【００４１】
ステップＳ１１３乃至Ｓ１２４については、第１実施例で説明の通りである。ステップＳ２１３乃至Ｓ２２４については、第２実施例で説明の通りである。
【００４２】
このように、第２実施例と第３実施例では、メモリ管理情報テーブルに管理されるポインタの種類が相違する。第２実施例では、ポインタとして先頭領域ポインタのみが管理されるのに対して、第３実施例では、ポインタとして先頭領域ポインタと末尾領域ポインタとが管理される。
【００４３】
よって、第３実施例では、メモリの先頭の未使用領域を探す際には、そのメモリの先頭領域ポインタを利用することができるし、メモリの末尾の未使用領域を探す際には、そのメモリの末尾領域ポインタを利用することができる。従って、第３実施例では、メモリの末尾の未使用領域を探す際に、メモリの先頭の未使用領域からメモリの末尾の未使用領域へと辿っていく必要はない。これにより、第３実施例では、メモリの末尾の未使用領域に到達するための処理時間が短縮される。即ち、第３実施例では、未使用領域の探索方向がアドレスの減少方向である場合の処理時間のオーバーヘッドが抑制される。
【図面の簡単な説明】
【００４４】
【図１】情報処理装置のシステム構成図である。
【図２】第１実施例のメモリ管理について説明するためのデータ構造図である。
【図３】第１実施例のメモリ管理について説明するためのフローチャート図である。
【図４】メモリ空間の使用方法について説明するための図である。
【図５】第２実施例のメモリ管理について説明するためのデータ構造図である。
【図６】第２実施例のメモリ管理について説明するためのフローチャート図である。
【図７】メモリ空間の使用方法について説明するための図である。
【図８】第３実施例のメモリ管理について説明するためのデータ構造図である。
【図９】第３実施例のメモリ管理について説明するためのフローチャート図である。
【符号の説明】
【００４５】
１０１  情報処理装置
１１１  ＣＰＵ
１１２  第１メモリ
１１３  第２メモリ
１１４  ＨＤＤ
１２１  メモリ管理プログラム
１２２  アプリケーションプログラム
２０１  メモリ管理情報テーブル
２１１  第１メモリの管理情報
２１２  第１メモリのＩＤ情報
２１３  第１メモリの先頭領域ポインタ
２１４  第１メモリの末尾領域ポインタ
２２１  第２メモリの管理情報
２２２  第２メモリのＩＤ情報
２２３  第２メモリの先頭領域ポインタ
２２４  第２メモリの末尾領域ポインタ
３０１  使用領域
３０２  未使用領域
３１１  増加方向リンク情報（の格納領域）
３１２  減少方向リンク情報（の格納領域）
３２１  サイズ（の格納領域）
３３１  残りの領域
【図１】
2007328628.tif 000003
【図２】
2007328628.tif 000004
【図３】
2007328628.tif 000005
【図４】
2007328628.tif 000006
【図５】
2007328628.tif 000007
【図６】
2007328628.tif 000008
【図７】
2007328628.tif 000009
【図８】
2007328628.tif 000010
【図９】
2007328628.tif 000011