(57)【特許請求の範囲】
【請求項１】
プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、
プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段
を具備し、
前記メモリ容量設定手段は、前記記憶手段におけるエントリ数が少なくなるようにし、かつフラグメント化されるメモリ容量が小さくなるように、静的なデータのメモリ領域の連続したメモリ容量を決定し、その後に、プロセスの実行時に動的に割り当てられる動的なデータのメモリ領域の連続したメモリ容量を決定し、複数のプロセス間で用いられる共有メモリのメモリ容量を決定する
ことを特徴とする情報処理装置。
【請求項２】
前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、プロセスの実行時に動的に割り当てられる動的メモリ又は複数のプロセス間で用いられる共有メモリのメモリ容量を必要としたときに、該動的メモリ又は該共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、前記動的メモリ又は前記共有メモリとして確保したメモリ容量が不足した場合に、該プロセスから要求のあった動的メモリ又は共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記メモリ容量設定手段は、前記仮想アドレス又は前記物理アドレスが前記決定したメモリ容量では設定できない場合に、再度該メモリ容量を決定する
ことを特徴とする請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
コンピュータを、
プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、
プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段
として機能させ、
前記メモリ容量設定手段は、前記記憶手段におけるエントリ数が少なくなるようにし、かつフラグメント化されるメモリ容量が小さくなるように、静的なデータのメモリ領域の連続したメモリ容量を決定し、その後に、プロセスの実行時に動的に割り当てられる動的なデータのメモリ領域の連続したメモリ容量を決定し、複数のプロセス間で用いられる共有メモリのメモリ容量を決定する
ことを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
コンピュータが実装している主メモリ（実メモリ）よりも大きな容量のメモリ空間を利用できるようにするための技術として、仮想記憶がある。仮想記憶上に読み込んだプログラムを実行する際には、仮想記憶のアドレス（仮想アドレス）を主メモリのアドレス（実アドレス）に変換する必要がある。
【０００３】
これに関連する技術として、例えば、特許文献１には、可変長ページを用いてフォールトの発生を抑制し、プログラムの実行速度を向上させることを課題とし、ユーザープログラムが参照した仮想アドレスがＴＬＢにないとき、ＴＬＢ不在ページ検出手段が起動され、ＴＬＢ不在ページ検出手段はＴＬＢ不在ページ置き換え手段を起動し、ＴＬＢ不在ページ置き換え手段はページ配置参照手段を起動し、ページ配置参照手段によりページ配置記憶部からユーザープログラムが参照した仮想アドレスに対応するページ情報が取得され、ＴＬＢに格納され、これにより、ユーザープログラムは、前記仮想アドレスへの参照が可能となり、また、ユーザープログラムは、必要に応じて、ページ分割手段、ページ結合手段に指令してページの分割及び結合を行うことが開示されている。
【０００４】
また、例えば、特許文献２には、可変ページサイズを実装し得る改善されたシステムを提供することを課題とし、複数のページテーブルエントリを含むページテーブルであって、その各々は、対応する仮想アドレスページに対するメモリページサイズ情報を含むページテーブルと、対応するメモリページサイズ情報を含む複数のページテーブルエントリの情報をキャッシュするように適応されたＴＬＢと、メモリ管理ソフトウェアであって、該ソフトウェアは、隣接するページテーブルエントリを、より大きなメモリページサイズの１つ以上のページテーブルエントリに統合するために、ページテーブルにおける変更に応答し、統合された隣接するページテーブルエントリに対応する、ＴＬＢのエントリをさらにアップデートするメモリ管理ソフトウェアとを備える、処理システムが開示されている。
【０００５】
また、例えば、特許文献３には、ＴＬＢミス発生回数を低減し、プロセスの実行速度とリアルタイム性を向上させることを課題とし、論理ページ番号と物理ページ番号の対応からなるアドレス変換情報を記憶するＴＬＢを有したコンピュータにおいて、前記ＴＬＢ上に記憶されていない論理アドレスの参照を行ってＴＬＢミスが発生した場合、ＴＬＢミスを発生させたプロセスの優先順位に基づいて、ＴＬＢに設定するアドレス変換情報の数を変動させるＴＬＢエントリ設定手段を有することが開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２７６４０４号公報
【特許文献２】特開２００９−０２０８８１号公報
【特許文献３】特開平１１−２３８０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制するようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段を具備し、前記メモリ容量設定手段は、前記記憶手段におけるエントリ数が少なくなるようにし、かつフラグメント化されるメモリ容量が小さくなるように、静的なデータのメモリ領域の連続したメモリ容量を決定し、その後に、プロセスの実行時に動的に割り当てられる動的なデータのメモリ領域の連続したメモリ容量を決定し、複数のプロセス間で用いられる共有メモリのメモリ容量を決定することを特徴とする情報処理装置である。
【００１０】
請求項２の発明は、前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、プロセスの実行時に動的に割り当てられる動的メモリ又は複数のプロセス間で用いられる共有メモリのメモリ容量を必要としたときに、該動的メモリ又は該共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定することを特徴とする請求項１に記載の情報処理装置である。
【００１１】
請求項３の発明は、前記メモリ容量設定手段は、プロセスを実行可能な状態にした後であって、前記動的メモリ又は前記共有メモリとして確保したメモリ容量が不足した場合に、該プロセスから要求のあった動的メモリ又は共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定することを特徴とする請求項１に記載の情報処理装置である。
【００１２】
請求項４の発明は、前記メモリ容量設定手段は、前記仮想アドレス又は前記物理アドレスが前記決定したメモリ容量では設定できない場合に、再度該メモリ容量を決定することを特徴とする請求項１から３のいずれか一項に記載の情報処理装置である。
【００１３】
請求項５の発明は、コンピュータを、プロセスを一意に識別するプロセス識別子と、該プロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、該仮想アドレスに対応する物理アドレスと、該プロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶手段と、プロセスを実行可能な状態にするときに、該プロセスが必要とするメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、コンピュータにおける中央処理装置によるメモリ容量に関する制限に基づいて決定したメモリ容量を前記記憶手段内の該プロセスに対応するメモリ容量として設定するメモリ容量設定手段として機能させ、前記メモリ容量設定手段は、前記記憶手段におけるエントリ数が少なくなるようにし、かつフラグメント化されるメモリ容量が小さくなるように、静的なデータのメモリ領域の連続したメモリ容量を決定し、その後に、プロセスの実行時に動的に割り当てられる動的なデータのメモリ領域の連続したメモリ容量を決定し、複数のプロセス間で用いられる共有メモリのメモリ容量を決定することを特徴とする情報処理プログラムである。
【発明の効果】
【００１４】
請求項１記載の情報処理装置によれば、プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。そして、動的メモリ又は共有メモリについても、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
【００１６】
請求項２記載の情報処理装置によれば、プロセスを実行可能な状態にした後であっても、動的メモリ又は共有メモリについて、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
【００１７】
請求項３記載の情報処理装置によれば、予め確保した動的メモリ又は共有メモリのメモリ容量が不足した場合に、その動的メモリ又は共有メモリについて、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
【００１８】
請求項４記載の情報処理装置によれば、仮想アドレス又は物理アドレスが設定できなくなってしまう状態を抑制することができる。
【００１９】
請求項５記載の情報処理プログラムによれば、プロセスを実行可能な状態にするときに、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。そして、動的メモリ又は共有メモリについても、そのプロセスの仮想空間とその物理アドレスを対応させる場合において、予め定められた固定の分割単位によって対応させることを抑制することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態を実現させるハードウェアの構成例についての概念的なモジュール構成図である。
【図２】本実施の形態の構成例についての概念的なモジュール構成図である。
【図３】メモリにおける物理空間と仮想空間との関連例を示す説明図である。
【図４】ＴＬＢのデータ構成例を示す説明図である。
【図５】ＴＬＢミス例外の処理例を示す説明図である。
【図６】ＴＬＢミス例外の処理におけるＴＬＢの変化例を示す説明図である。
【図７】本実施の形態による処理例を示すフローチャートである。
【図８】本実施の形態による処理例を示すフローチャートである。
【図９】本実施の形態による処理例を示すフローチャートである。
【図１０】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２１】
まず、本実施の形態を説明する前に、その前提又は本実施の形態を利用することとなる仮想記憶について説明する。なお、この説明は、本実施の形態の理解を容易にすることを目的とするものである。
仮想記憶とは、コンピュータシステムの利用者（プロセス）にとって利用可能な主記憶装置とみなしうる記憶空間であって、仮想アドレスが実アドレスへ写像される。
プロセスを用いたマルチプロセスシステムでは、プロセスごとに独立した仮想メモリ空間を生成する。この仮想メモリ空間は、物理的に存在する物理メモリ空間と対応が取られ、プロセスとして動作するアプリケーションは仮想メモリ空間のアドレスのみを使用して動作する。なお、プロセスとは、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から見たプログラムの実行単位をいう。つまり、ＯＳは、プロセス単位でプログラムの実行を制御する。
【００２２】
この仮想記憶方式は、以下のことを実現するために用いられる。
（１）それぞれのプロセスは異なるメモリ空間に存在するため、誤って他のプロセスに干渉することを防ぐことができる。また、不正にデータをアクセスしたり、書き換えたりできなくなるため安全性が確保できる。
（２）アプリケーションの開発者は、実際の物理メモリ量やアドレスを意識しないで開発することができる。
【００２３】
一方、プロセス毎に割り当てた仮想空間と対応する物理空間の変換を行う必要がある。プロセスが仮想アドレスに対してアクセスを行うと、何らかの方法でアクセス先のアドレスを物理アドレスに変換しなければならない。また、変換を行うための仮想アドレスと物理アドレスのマッピングテーブルを物理メモリ上で管理する必要がある。このアドレス変換処理とマッピングテーブルの管理はＣＰＵかＯＳ又はその両方で実装されるＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）が行う必要がある。
【００２４】
一般的には、メモリ変換を効率的に行うためのＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）がＣＰＵに用意されている。ＴＬＢには仮想アドレスと物理アドレスのマッピング情報が格納されているので、仮想アドレスに対するアクセスが発生するとＣＰＵはＴＬＢの中を検索し物理アドレスへと変換する。
【００２５】
しかし、ＴＬＢの物理的な大きさやコスト制約が存在するためすべてのマッピング情報を格納することはできない（例えば、ＰｏｗｅｒＰＣ（登録商標）  ４４０のＴＬＢは６４個分のエントリである）。そのため、検索したい仮想アドレスがＴＬＢに存在しない可能性もある。検索した仮想アドレスがＴＬＢに存在しない場合、ＣＰＵは例外（ＴＬＢ  Ｍｉｓｓ例外）を発生させ、ＯＳに対してＴＬＢを更新するように促す。ＯＳはＴＬＢ  Ｍｉｓｓ例外処理の中で、物理メモリ上で管理しているマッピングテーブルから要求された仮想アドレスに対応する物理アドレスを検索しＴＬＢを更新する。例外処理から復帰すると、再度ＴＬＢを用いたアドレス変換が行われ、仮想アドレスは物理アドレスへと変換される（図５、図６参照）。
【００２６】
歴史的な経緯から多くのＯＳはマッピング情報をページと呼ばれる単位（４ＫＢ）ごとに管理している。もし仮に２ＧＢ分の仮想空間に対して連続アクセスを行った場合、最低でも  （２×１０２４×１０２４×１０２４）  ÷  （４×１０２４）  ＝  ５２４２８８回分のＴＬＢ  Ｍｉｓｓ例外が発生する。ＴＬＢ  Ｍｉｓｓ例外処理はＯＳによるソフトウェア処理のため、５２４２８８回分のオーバーヘッドが生じる。また、実行するプログラム自体も仮想アドレス上で動作するため、プログラム実行のためのアドレス変換処理による追加オーバーヘッドも発生する。これらオーバーヘッドは、直接アプリケーションのパフォーマンスに影響する。
【００２７】
このオーバーヘッドを低減させるためには、単純にページのサイズを大きくすればよい。ページ単位を１ＭＢにすれば、ＴＬＢ  Ｍｉｓｓ例外の発生を  （２×１０２４×１０２４×１０２４）  ÷  （１×１０２４×１０２４）  ＝  ２０４８回まで低減することができる。しかし、ページサイズを大きくするとメモリ管理の単位が大きくなるためメモリ空間がフラグメント化されたり、使用できない無駄な領域が増えたりする。そのためメモリ量に制限のある組込みシステムでは採用しにくい。また、ほとんどのＯＳがページ単位を４ＫＢにしていることから、ページ単位が４ＫＢであることを前提に作られているソフトウェアも多数存在する。ページ単位を大幅に変更することはシステム全体に影響があるため品質保証の点でリスクが高い。
【００２８】
また別の改善方法としてＣＰＵのＴＬＢを効率的に使う方法もある。例えば、ＴＬＢが仮想アドレスと物理アドレスのマッピング情報以外に、そのマッピング領域のサイズ指定をサポートしている場合、連続した領域のマッピング情報をまとめてひとつのＴＬＢに登録することができる。通常、１ページ分のマッピング情報は１つのＴＬＢに割り当てられる。仮にＴＬＢエントリが６４個しかない場合、最大で６４ページ分（４ＫＢ×６４＝２５６ＫＢ）しかＴＬＢに登録することができない。しかし、もしＴＬＢに対してより大きなサイズを設定できる場合、連続する領域のページを複数まとめて１つのＴＬＢに登録することでより大きな領域をマップすることができる。仮に２５６ページ分の領域が連続していれば、１つのＴＬＢで１ＭＢ分の空間をマップすることができ、ＴＬＢを節約すると共にＴＬＢ  Ｍｉｓｓ例外の発生を抑えることができる。
【００２９】
しかし、この手法には制約がある。まずＴＬＢのサイズ指定はＣＰＵのメモリサイズに関する制限により設定できる値が限定されている。例えば、ＰｏｗｅｒＰＣ（登録商標）  ４４０の場合は、１ＫＢ、４ＫＢ、１６ＫＢ、６４ＫＢ、２５６ＫＢ、１ＭＢ、１６ＭＢ、２５６ＭＢ、１ＧＢから選択できるようになっている。
また、領域の仮想アドレスと物理アドレスは指定したサイズでアライメントされている必要もある。さらにマップする領域は連続領域でなければいけない。そのため、この方法は予めメモリマップが静的に決まっているシステムでないと採用が難しく、メモリマップが動的に非連続領域に対して生成されるプロセスでは効果を保証することができない。特に決定論的（ｄｅｔｅｒｍｉｎｉｓｔｉｃ）性能を求められる組込みシステムでマルチプロセス化を行った場合、この手法では性能の予測を保証することができない。
【００３０】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するの意である。また、モジュールは機能にほぼ一対一に対応しているが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。また、管理という用語を用いるが、これは文脈に応じて、制御する、マネジメントする、制御又はマネジメントするためのデータを記憶するの意で用い、その役割又は動作をさす。
【００３１】
以下、ＯＳとして、組み込み系のＯＳ、より具体的にはページング処理（実行に必要なプログラムやデータが主記憶装置上に存在しない場合に、主記憶装置上に存在するプログラムやデータと、補助記憶装置上にある必要なプログラムやデータの入れ替えを行う処理）を行っていないＯＳを主に例示して説明する。
本実施の形態である情報処理装置は、動的にメモリ空間を生成するマルチプロセス環境において、ＴＬＢを用いたＭＭＵに関するものであって、ハードウェアの構成例は、図１に示すように、ＣＰＵ１１０、物理メモリ１２０、Ｉ／Ｏ空間１３０、ＲＯＭ１４０を有しており、これらは、バス１９０を介して接続されている。
【００３２】
メモリ空間として、０ｘ８＿００００＿００００から０ｘ８＿１ＦＦＦ＿ＦＦＦＦまでに物理メモリ１２０、０ｘ２＿Ｅ０００＿００００から０ｘ２＿Ｅ０１Ｆ＿ＦＦＦＦまでにＩ／Ｏ空間１３０、０ｘ７＿Ｆ０００＿００００から０ｘ７＿ＦＦＦＦ＿ＦＦＦＦまでにＲＯＭ１４０を割り当てている。なお、「０ｘ」は以下に続く数値が１６進数の表記であることを表しており、１６進数の４桁ごとに「＿」を挿入している。
【００３３】
ＣＰＵ１１０は、キャッシュ１１２、ＴＬＢ１１４、ＭＭＵ１１６を有している。
キャッシュ１１２は、ＣＰＵ１１０と物理メモリ１２０等との間でデータの転送効率を向上させるために用いられる。
ＴＬＢ１１４は、プロセスを一意に識別するプロセス識別子と、そのプロセスにおいて利用可能なメモリ空間のアドレスである仮想アドレスと、その仮想アドレスに対応する物理アドレスと、そのプロセスに割り当てる連続したメモリ容量を対応付けて記憶する記憶装置である。例えば、図４に例示するＴＬＢ４００を記憶する。
【００３４】
図４は、ＴＬＢ４００のデータ構成例を示す説明図である。ここでは、エントリ数として６４個の場合の例を示す。
ＴＬＢ４００は、エントリ番号欄４０２、仮想アドレス欄４０４、物理アドレス欄４０６、プロセスＩＤ欄４０８、サイズ欄４１０、属性欄４１２を有している。
【００３５】
エントリ番号欄４０２は、そのＴＬＢ４００内で一意にエントリを識別するエントリ番号を記憶する。
仮想アドレス欄４０４は、プロセスにおける仮想アドレスを記憶する。
物理アドレス欄４０６は、その仮想アドレスに対応する物理メモリ１２０等のアドレスを記憶する。例えば、図４に示すように、エントリ番号０、６０等は物理メモリ１２０に割り当てられ、エントリ番号１、２はＩ／Ｏ空間１３０に割り当てられる。
プロセスＩＤ欄４０８は、そのＴＬＢ４００を利用しているＯＳ下で、一意にプロセスを識別するプロセスＩＤを記憶し、そのプロセスは仮想アドレス欄４０４で記憶されている仮想アドレスを用いて動作する。
サイズ欄４１０は、その仮想アドレスが物理アドレスに割り当てられるサイズを記憶する。つまり、仮想アドレス欄４０４、物理アドレス欄４０６に記憶されている仮想アドレスと物理アドレスを先頭アドレスとしてそのサイズ分の連続領域が割り当てられる。
【００３６】
属性欄４１２は、その割り当てたメモリに関する属性を記憶する。例えば、具体的には、キャッシュ１１２が利用されるか否か、そのメモリに対してのスーパーバイザーのアクセス権（読み込み（Ｒ）、書き込み（Ｗ）、実行（Ｅ））、そのメモリに対してのユーザーのアクセス権（読み込み（Ｒ）、書き込み（Ｗ）、実行（Ｅ））等を記憶する。例えば、図４に示すように、エントリ番号０はキャッシュ１１２が利用され、スーパーバイザーのアクセス権はＲ／Ｗ／Ｅがあるが、ユーザーのアクセス権はないことを示しており、エントリ番号１、２はキャッシュ１１２を利用しないで、スーパーバイザーのアクセス権はＲ／Ｗ／Ｅがあるが、ユーザーのアクセス権はないことを示しており、エントリ番号６０はキャッシュ１１２が利用され、スーパーバイザーのアクセス権はＲ／Ｗ／Ｅがあり、ユーザーのアクセス権もＲ／Ｗ／Ｅがあることを示している。なお、図４の例では、プロセスＩＤが０であるプロセスはスーパーバイザーモードで動作しているプロセスであり、プロセスＩＤが１、２であるプロセスはユーザーモードで動作しているプロセスである。
【００３７】
ＭＭＵ１１６は、仮想アドレスから物理アドレスへのアドレス変換処理とＴＬＢ１１４の管理を行う。なお、以下に説明するＭＭＵ１１６による処理は、ＭＭＵ１１６だけでなく、ＣＰＵ１１０（ＯＳ）とともに行うようにしてもよいし、ＣＰＵ１１０（ＯＳ）が行うようにしてもよい。
プロセスを実行可能な状態にするときに、そのプロセスが必要とするメモリ容量、物理メモリ１２０上で未使用の連続した領域のメモリ容量、ＣＰＵ１１０によるメモリ容量に関する制限に基づいて決定したメモリ容量をＴＬＢ１１４内のそのプロセスに対応するメモリ容量として設定する。なお、この文では、「メモリ容量」として４種類のものが出現するが、それぞれ次のような意味を有するものである。（１）「そのプロセスが必要とする『メモリ容量』」とは、そのプロセスが使用するメモリ領域のことであり、具体例として、後述するｔｅｘｔ／ｂｓｓ／ｄａｔａ領域等が該当する。（２）「物理メモリ１２０上で未使用の連続した領域の『メモリ容量』」とは、本システムにおける物理メモリ１２０の連続空き容量のことである。（３）「ＣＰＵ１１０による『メモリ容量』に関する制限」とは、ＴＬＢ１１４に設定できるメモリサイズのことである。（４）「ＴＬＢ１１４内のそのプロセスに対応する『メモリ容量』」とは、実際にＴＬＢ１１４に設定するメモリサイズ（サイズ欄４１０）のことであり、「決定した『メモリ容量』」を設定する。また、「ＴＬＢ１１４内のそのプロセスに対応するメモリ容量として設定する」のは、ＴＬＢ１１４の１エントリにおけるメモリ容量のことである。
【００３８】
ＭＭＵ１１６が用いるプロセスが必要とするメモリ容量として、そのプロセスの実行時に動的に割り当てられる動的メモリのメモリ容量又は複数のプロセス間で用いられる共有メモリのメモリ容量を含んでいるようにしてもよい。つまり、プロセス実行前に予め定められたデータ容量である静的なデータだけでなく、プロセス実行時に必要とするデータ容量が変化する動的データ、共有メモリにも、プロセスを実行可能な状態にするときに対応するものである。例えば、そのプロセスのプログラムの設計者が、プログラム内に動的データ、共有メモリとして予め定められた必要とするメモリ容量を設定しており、ＭＭＵ１１６がその設定を解析して、プロセスを実行可能な状態にするときに、ＴＬＢ１１４に物理アドレスを設定するようにしてもよい。
【００３９】
ＭＭＵ１１６は、プロセスを実行可能な状態にした後であって、プロセスの実行時に動的メモリ又は共有メモリのメモリ容量を必要としたときに、その動的メモリ又はその共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、ＣＰＵ１１０によるメモリ容量に関する制限に基づいて決定したメモリ容量をＴＬＢ１１４内のそのプロセスに対応するメモリ容量として設定するようにしてもよい。つまり、プロセスが実行されている最中に、新たに動的メモリ又はその共有メモリが必要となった場合に対応するものである。
【００４０】
ＭＭＵ１１６は、プロセスを実行可能な状態にした後であって、プロセスを実行可能な状態にするときに動的メモリ又は共有メモリとして確保したメモリのメモリ容量が不足した場合に、そのプロセスから要求のあった動的メモリ又は共有メモリのメモリ容量、物理メモリ上で未使用の連続した領域のメモリ容量、ＣＰＵ１１０によるメモリ容量に関する制限に基づいて決定したメモリ容量をＴＬＢ１１４内のそのプロセスに対応するメモリ容量として設定するようにしてもよい。つまり、前述の動的データ、共有メモリにも、プロセスを実行可能な状態にするときに対応する場合にあって、その設定されたメモリ容量では不足してしまった場合（例えば、プログラムの設計者が、必要とする最低限のメモリ容量を設定しておき、実際にはそれ以上にメモリ容量が必要とされた場合）に対応するものである。
【００４１】
ＭＭＵ１１６は、仮想アドレス又は物理アドレスが決定したメモリ容量では設定できない場合に、再度そのメモリ容量を決定するようにしてもよい。つまり、ＴＬＢ１１４に一旦メモリ容量を設定した後に、物理アドレス又は仮想アドレスを設定しようとしたときに、そのメモリ容量では物理アドレス又は仮想アドレスを設定できない場合に対応するものである。
【００４２】
図２は、本実施の形態の構成例についての概念的なモジュール構成図である。
ＯＳ２００は、カーネル２１０を有しており、そのカーネル２１０は、ローダ２２０、ＭＭＵ２３０、ＴＬＢハンドラ２４０を有している。
ローダ２２０は、ユーザーによる操作又は他のプロセスからの指示に応じて、プロセスを実行可能な状態にする。つまりプロセスを起動することであり、例えば、Ｃ言語等では、プログラム内のｍａｉｎ（）関数を実行することに該当する。このときに、プロセスで利用する仮想アドレスと物理アドレスとの対応を取る必要がある。そのために、ＭＭＵ２３０にＴＬＢ１１４の設定を行わせる。なお、図２の例は、プロセス１  ２９０、プロセス２  ２９５を起動した後の状態を示している。
ＭＭＵ２３０は、ローダ２２０からの指示に基づいて、ＴＬＢ１１４の設定をＴＬＢハンドラ２４０に行わせ、ＴＬＢ１１４に基づいて、プロセス実行におけるアドレス変換を行う。また、プロセス１  ２９０、プロセス２  ２９５の実行中に、動的メモリ又は共有メモリが必要となったときに、ＴＬＢ１１４の設定をＴＬＢハンドラ２４０に行わせる。
ＴＬＢハンドラ２４０は、ＭＭＵ２３０からの指示に基づいて、ＴＬＢ１１４の設定を行う。
【００４３】
図３は、メモリにおける物理空間と仮想空間との関連例を示す説明図である。これらは、図４に例示したＴＬＢ４００によって対応付けられている。
プロセス１仮想空間３７０は、ｔｅｘｔ／ｂｓｓ／ｄａｔａ領域３７２、ヒープ領域３７４を有している。
ｔｅｘｔ／ｂｓｓ／ｄａｔａ領域３７２は、静的なデータの領域であり、物理メモリ３００の確保物理領域３０４に割り付けられている。なお、ｔｅｘｔ領域はプログラムコード領域、ｂｓｓ（Ｂｌｏｃｋ  Ｓｔａｒｔｉｎｇ  ｗｉｔｈ  Ｓｙｍｂｏｌ）領域は初期値のないグローバル変数用の領域、ｄａｔａ領域は初期化が必要なデータの領域である。
ヒープ領域３７４は、動的なデータの領域であり、物理メモリ３００の確保物理領域３０６に割り付けられている。
【００４４】
プロセス２仮想空間３８０は、ｔｅｘｔ／ｂｓｓ／ｄａｔａ領域３８２、共有メモリ領域３８４、ヒープ領域３８６を有している。プロセス２仮想空間３８０は、他のプロセスとの通信を行うために、プロセス１仮想空間３７０と異なり、共有メモリ領域３８４を有している。これらは、物理メモリ３００のそれぞれ確保物理領域３０８、確保物理領域３１０、確保物理領域３１２に割り付けられている。
【００４５】
カーネル仮想空間３６０は、カーネルのｔｅｘｔ／ｂｓｓ／ｄａｔａ領域及びヒープ領域３６２、共有メモリ領域３６４、Ｉ／Ｏアクセス３６６、ＲＯＭ３６８を有している。
カーネルのｔｅｘｔ／ｂｓｓ／ｄａｔａ領域及びヒープ領域３６２、共有メモリ領域３６４は、物理メモリ３００のそれぞれ確保物理領域３０２、確保物理領域３１０に割り付けられている。Ｉ／Ｏアクセス３６６はＩ／Ｏ空間３４０に、ＲＯＭ３６８はＲＯＭ３５０に割り付けられている。
【００４６】
図５は、ＴＬＢミス例外の処理例を示す説明図である。前述したように、ＴＬＢ１１４に設定されていない仮想アドレスにアクセスしようとした場合の処理である。
ステップＳ５０２では、ユーザーモード５２０で、プロセス１がＴＬＢ１１４に存在しない０ｘ４０００＿４０００にアクセスする。
ステップＳ５０４では、ＴＬＢミス例外が発生する。つまり、割り込みが発生し、ユーザーモード５２０からスーパーバイザーモード５１０へと制御が移る。
【００４７】
ステップＳ５０６では、ＴＬＢハンドラ２４０がＴＬＢ１１４の中で一番古いエントリを消し、ＴＬＢミス例外が発生した論理アドレスに対応する物理アドレスの情報をＴＬＢ１１４に追加する。この後、割り込みから復帰して、スーパーバイザーモード５１０からユーザーモード５２０へと制御が移る。なお、エントリが古いか否かを判断するために、ＴＬＢ４００に利用時間、設定時間を記憶する欄を設けてもよい。
図６は、ＴＬＢミス例外の処理におけるＴＬＢ４００の変化例を示す説明図である。ＴＬＢ４００内で、一番古いエントリはエントリ番号６３であるので、それを新エントリ６１０（プロセスＩＤ１における仮想アドレス０ｘ４０００＿４０００と、これに対応する物理アドレス０ｘ８＿１００４＿４０００の設定等）に置き換える。なお、ＭＭＵ２３０は、ＴＬＢ４００に新エントリ６１０等のプロセスを実行可能な状態にするときに設定されたエントリを含めたページテーブルを主記憶内に記憶させておき、ＴＬＢミス例外処理が発生したときに、ＴＬＢ４００とページテーブルの一部を入れ替える。
ステップＳ５０８では、ユーザーモード５２０で、プロセス１が再度０ｘ４０００＿４０００にアクセスすると、ＴＬＢのエントリが書き換わっているので正常にアクセスが可能となる。つまり、エントリ番号６３に仮想アドレス０ｘ４０００＿４０００があるので、これに基づいて、プロセス１は処理を再開する。
【００４８】
図７から図９は、本実施の形態による処理例を示すフローチャートである。なお、本処理例は、プロセスを実行可能な状態にするときに行われるものである。
ステップＳ７０２では、ローダ２２０が、プロセスＩＤを作成する。つまり、プロセスを実行可能な状態にするために、プログラムの実行オブジェクトを実行させた場合のプロセスを一意に識別するプロセスＩＤを作成する。
ステップＳ７０４では、プロセスの空のページテーブルを作成する。ＴＬＢ４００を作成するために、主記憶上にＴＬＢ４００と同じ構造のページテーブルを作成する。ただし、エントリ数はＴＬＢ４００よりも多く、その数は限定しなくてもよい。
ステップＳ７０６では、空のプロセス用仮想論理空間を作成する。ＴＬＢ４００を作成するために、主記憶上に仮想論理空間を管理するためのテーブル（例えば、プロセスＩＤとそのプロセスに割り当てたメモリアドレスの対応）を作成する。
【００４９】
ステップＳ７０８では、ロードする実行オブジェクト（ＥＬＦ（Ｅｘｃｕｔｉｖｅ  Ｌｉｎｋｅｄ  Ｆｉｌｅ）イメージ等）を解釈する。例えば、図３に例示したｔｅｘｔ／ｂｓｓ／ｄａｔａ領域３７２等を実行オブジェクトから取り出す。つまり、ここで、静的なデータであるｔｅｘｔ、ｂｓｓ、ｄａｔａ領域の必要サイズを確定する。これは、そのプロセスが必要とするメモリサイズの一部（ヒープ領域、共有メモリが必要なければ、必要メモリサイズそのもの）となる。
【００５０】
ステップＳ７１０では、ＴＬＢ４００に設定するサイズ（サイズ欄４１０）を決定する。つまり、そのプロセスに必要な静的なデータのメモリ領域の連続したメモリサイズを決定する。そのために、使用するＴＬＢ４００のエントリ数が少なくなるように（つまり、確保すべき連続するメモリサイズを大きくするように）、かつフラグメント化されるサイズが小さくなるようにメモリサイズを決定する。ここで、フラグメント化されるサイズが小さくなるようにするメモリサイズは、物理メモリ上で未使用の連続した領域のメモリサイズと、ＣＰＵ１１０によるメモリサイズに関する制限に基づいて決定したメモリサイズである。さらに、メモリを節約するように（プロセスの必要メモリサイズよりも必要以上に大きなメモリサイズとならないようにすること）してもよい。
また、ステップＳ７１４又はステップＳ７１８で処理が戻った場合は、前回決定したメモリサイズよりも少なくなる方向でメモリサイズを変更する。
【００５１】
ステップＳ７１２では、ＥＬＦイメージ等をロードするための物理空間をステップＳ７１０で決定したメモリサイズのアライメントに合わせて連続領域に確保する。ここで、アライメントに合わせた連続領域を確保できない場合も生じ得る。ステップＳ７１０では、物理空間の未使用領域のサイズに基づいて決定しているが、アライメントに合わせたものであるか否かまでは判断材料としていないためである。
ステップＳ７１４では、確保できたか否かを判断する。確保できた場合はステップＳ７１６へ進み、それ以外の場合はステップＳ７１０からの処理を繰り返す。
【００５２】
ステップＳ７１６では、ＥＬＦイメージ等をロードするための論理空間をステップＳ７１０で決定したサイズのアライメントに合わせて連続領域に確保する。ここで、アライメントに合わせた連続領域を確保できない場合も生じ得る。ステップＳ７１０では、論理空間の未使用領域のサイズがあるか否か、アライメントに合わせたものであるか否かまでは判断材料としていないためである。また、１つの仮想論理空間を複数のプロセスが利用する場合（つまり、その仮想論理空間で複数のプロセスが配置される場合）は、他のプロセス又は自プロセスで既に確保された仮想空間内のメモリと重複しないように確保する。なお、プロセスごとに仮想空間を設定するＯＳであるならば、他のプロセスとの重複はありえないので、自プロセスで既に確保された仮想空間内のメモリと重複しないように確保すればよい。
ステップＳ７１８では、確保できたか否かを判断する。確保できた場合はステップＳ７２０へ進み、それ以外の場合はステップＳ７１０からの処理を繰り返す。
【００５３】
ステップＳ７２０では、ステップＳ７１２とステップＳ７１６でそれぞれ確保した物理領域と論理領域を、ステップＳ７０４とステップＳ７０６でそれぞれ作成したページテーブルと仮想論理空間に登録する。
なお、ステップＳ７１０からステップＳ７２０までの処理を、従来通りの技術で行うと、固定サイズでＥＬＦイメージをロードするための物理空間の確保と仮想論理空間の確保をし、ステップＳ７０４とステップＳ７０６でそれぞれ作成したページテーブルと仮想論理空間に登録することになる。このようにした場合、予め定められた固定のメモリ容量が設定されてしまい、確保される物理空間は連続領域ではないこととなり、物理空間と仮想論理空間のアドレスがＴＬＢ４００に設定できるサイズのアライメントになっていない。つまり、ＴＬＢ４００に設定するサイズはページ単位になってしまい、ＴＬＢミス例外の処理が多く発生する場合がある。
【００５４】
ステップＳ７２２では、実行オブジェクトの仮アドレスと、ステップＳ７１６で確保した論理領域のアドレスのオフセットを計算する。つまり、コンパイラが仮決めしたＥＬＦイメージ等の仮想アドレスとステップＳ７１６で確保した仮想アドレスのオフセット（差分）を算出する。
ステップＳ７２４では、ステップＳ７２２で計算したオフセットを足しながらＥＬＦイメージ等を論理アドレスへと展開（配置）する。
ステップＳ７２６では、ステップＳ７１６で確保した領域のｔｅｘｔ／ｂｓｓ／ｄａｔａそれぞれのメモリ属性を設定する。つまり、ＴＬＢ４００の属性欄４１２（キャッシュ１１２が利用されるか否か、スーパーバイザーのアクセス権、ユーザーのアクセス権等）を設定する。
【００５５】
ステップＳ７２８では、対象のヒープ領域に対し、ＴＬＢ４００に設定するサイズを決定する。ステップＳ７１０に対応する処理である。なお、そのプロセスにおいて、ヒープ領域が不要である場合はステップＳ７４４へ進む。
ステップＳ７３０では、ヒープ領域のための物理空間をステップＳ７２８で決定したサイズのアライメントに合わせて連続領域に確保する。ステップＳ７１２に対応する処理である。
ステップＳ７３２では、確保できたか否かを判断する。確保できた場合はステップＳ７３４へ進み、それ以外の場合はステップＳ７２８からの処理を繰り返す。ステップＳ７１４に対応する処理である。
【００５６】
ステップＳ７３４では、ヒープ領域のための論理空間をステップＳ７２８で決定したサイズのアライメントに合わせて連続領域に確保する。ステップＳ７１６に対応する処理である。
ステップＳ７３６では、確保できたか否かを判断する。確保できた場合はステップＳ７３８へ進み、それ以外の場合はステップＳ７２８からの処理を繰り返す。ステップＳ７１８に対応する処理である。
ステップＳ７３８では、ステップＳ７３０とステップＳ７３４でそれぞれ確保した物理領域と論理領域を、ステップＳ７０４とステップＳ７０６でそれぞれ作成したページテーブルと仮想論理空間に登録する。ステップＳ７２０に対応する処理である。
【００５７】
ステップＳ７４０では、ステップＳ７３４で確保した領域のメモリ属性を設定する。ステップＳ７２６に対応する処理である。
ステップＳ７４２では、プロセスのメモリ管理プールにステップＳ７３４で確保した領域を登録する。なお、ここでのメモリ管理プールは予め定められたサイズのヒープ領域の空きを管理している。
【００５８】
ステップＳ７４４では、対象の共有メモリ領域に対し、ＴＬＢに設定するサイズを決定する。ステップＳ７２８に対応する処理である。
ステップＳ７４６では、共有メモリ領域のための物理空間をステップＳ７４４で決定したサイズのアライメントに合わせて連続領域に確保する。ステップＳ７３０に対応する処理である。
ステップＳ７４８では、確保できたか否かを判断する。確保できた場合はステップＳ７５０へ進み、それ以外の場合はステップＳ７４４からの処理を繰り返す。ステップＳ７３２に対応する処理である。
【００５９】
ステップＳ７５０では、共有メモリ領域のための論理空間をステップＳ７４４で決定したサイズのアライメントに合わせて連続領域に確保する。ステップＳ７３４に対応する処理である。
ステップＳ７５２では、確保できたか否かを判断する。確保できた場合は、ステップＳ７５４へ進み、それ以外の場合はステップＳ７４４からの処理を繰り返す。ステップＳ７３６に対応する処理である。
ステップＳ７５４では、ステップＳ７４６とステップＳ７５０でそれぞれ確保した物理領域と論理領域を、ステップＳ７０４とステップＳ７０６でそれぞれ作成したページテーブルと仮想論理空間に登録する。ステップＳ７３８に対応する処理である。
ステップＳ７５６では、ステップＳ７５０で確保した領域のメモリ属性を設定する。ステップＳ７４０に対応する処理である。
ステップＳ７５８では、プロセスメモリ管理プールにステップＳ７５０で確保した領域を登録する。ステップＳ７４２に対応する処理である。
【００６０】
ステップＳ７９９では、プロセスの生成を完了する。そして、ｍａｉｎ（）関数を実行すべく、ｍａｉｎ（）関数のオブジェクトが格納されているメモリにジャンプする。なお、この後、ＴＬＢミス例外の処理が発生することとなり、本フローチャートでページテーブル内に設定されたエントリがＴＬＢ４００内に挿入又は入れ替わる。
【００６１】
図１０を参照して、本実施の形態を組み込んだ例えば画像処理システムのハードウェア構成例について説明する。図１０に示す構成は、スキャナ等のデータ読み取り部１０１７と、プリンタなどのデータ出力部１０１８を備えたハードウェア構成例を示している。
【００６２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１は、前述の実施の形態において説明したローダ２２０、ＭＭＵ２３０、ＴＬＢハンドラ２４０等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【００６３】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００２は、ＣＰＵ１００１が使用するプログラムや演算パラメータ等を格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００３は、本実施の形態における物理メモリとなるものであり、ＣＰＵ１００１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはＣＰＵバスなどから構成されるホストバス１００４により相互に接続されている。
【００６４】
ホストバス１００４は、ブリッジ１００５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バスなどの外部バス１００６に接続されている。
【００６５】
キーボード１００８、マウス等のポインティングデバイス１００９は、操作者により操作される入力デバイスである。ディスプレイ１０１０は、液晶表示装置又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などがあり、各種情報をテキストやイメージ情報として表示する。
【００６６】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０１１は、ハードディスクを内蔵し、ハードディスクを駆動し、ＣＰＵ１００１によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、読み取った画像データなどが格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【００６７】
ドライブ１０１２は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体１０１３に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース１００７、外部バス１００６、ブリッジ１００５、及びホストバス１００４を介して接続されているＲＡＭ１００３に供給する。リムーバブル記録媒体１０１３も、ハードディスクと同様のデータ記録領域として利用可能である。
【００６８】
接続ポート１０１４は、外部接続機器１０１５を接続するポートであり、ＵＳＢ、ＩＥＥＥ１３９４等の接続部を持つ。接続ポート１０１４は、インタフェース１００７、及び外部バス１００６、ブリッジ１００５、ホストバス１００４等を介してＣＰＵ１００１等に接続されている。通信部１０１６は、ネットワークに接続され、外部とのデータ通信処理を実行する。データ読み取り部１０１７は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部１０１８は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【００６９】
なお、図１０に示す画像処理システムのハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図１０に示す構成に限らず、本実施の形態を実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよい。また、画像処理システムの例として複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などがあり、画像処理システム以外に家電、自動車、エレベーター等に利用してもよい。
【００７０】
前述の実施の形態においては、組み込み系のＯＳでの利用を例示したが、汎用コンピュータ用のＯＳ（より具体的には、ページング処理を採用しているＯＳ）に採用してもよい。
なお、図７から図９はプロセスを実行可能な状態にするときに行われる処理例を示したが、プロセスを実行した後であって、プロセスの動的メモリ、共有メモリのメモリ容量を必要としたときに（つまり、必要とするまでメモリを確保することはしないで、メモリ確保を遅らせる）、それぞれステップＳ７２８からステップＳ７４２までの処理、ステップＳ７４４からステップＳ７５８までの処理を行うようにしてもよい。また、プロセスを実行した後であって、プロセスを実行したときに予め確保した動的メモリ、共有メモリでは足りなくなったときに、それぞれステップＳ７２８からステップＳ７４２までの処理、ステップＳ７４４からステップＳ７５８までの処理を行うようにしてもよい。これは、より具体的には、そのプログラム内でｍａｌｌｏｃ（）関数等が呼び出された場合に行われるものである。
【００７１】
また、本実施の形態における処理は、プロセス（例えば、プロセスＩＤ、プロセス名、プロセス生成時のオプション等）に応じて、実施するか否かを決定してもよい。つまり、本実施の形態における処理を行わない場合は、従来通りの技術による処理を行う。
また、割り当てる領域のサイズは物理空間の空き容量に応じて決定するようにしてもよい。
【００７２】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ（登録商標））、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００７３】
１１０…ＣＰＵ
１１２…キャッシュ
１１４…ＴＬＢ
１１６…ＭＭＵ
１２０…物理メモリ
１３０…Ｉ／Ｏ空間
１４０…ＲＯＭ
１９０…バス
２００…ＯＳ
２１０…カーネル
２２０…ローダ
２３０…ＭＭＵ
２４０…ＴＬＢハンドラ
２９０…プロセス１
２９５…プロセス２
【図１】
0005531476.tif 000002
【図２】
0005531476.tif 000003
【図３】
0005531476.tif 000004
【図４】
0005531476.tif 000005
【図５】
0005531476.tif 000006
【図６】
0005531476.tif 000007
【図７】
0005531476.tif 000008
【図８】
0005531476.tif 000009
【図９】
0005531476.tif 000010
【図１０】
0005531476.tif 000011