(57)【要約】【課題】主記憶装置に格納されていない仮想ブロックがアクセスされた時点において、アクセスされた仮想ブロックについては割り当てる物理ブロックを決定する処理とその物理ブロックを初期化する処理とを行い、その仮想ブロックを含む複数の仮想ブロックについては割り当てる物理ブロックを決定する処理だけを行えるようにする。【解決手段】主記憶部31に格納されていない仮想ブロックがアクセスされると、メモリ割り当て部14は、マッピングテーブル部12を参照して上記仮想ブロックに割り当てる物理ブロックが決定されているか否かを調べ、決定されていない場合は、アクセス対象の仮想ブロックを含む複数の仮想ブロックについて、その仮想ブロックに割り当てる物理ブロックを決定し、その情報をマッピングテーブル部12に登録する。そして、物理ブロックの初期化処理は、アクセス対象の仮想ブロックに割り当てた物理ブロックについてのみ行なう。【選択図】図１
2010257173.tif 000002
【特許請求の範囲】
【請求項１】
物理ブロック単位で分割された主記憶装置と、
前記主記憶装置に格納されていない仮想ブロックがアクセスされた際、メモリアクセス例外を発生するメモリマネージメントユニットと、
メモリアクセス例外が発生した際、アクセス対象の仮想ブロックに割り当てる物理ブロックが決定されていない場合は、前記アクセス対象の仮想ブロックを含む複数の仮想ブロックそれぞれについてその仮想ブロックに割り当てる物理ブロックを決定すると共に、該決定した複数の物理ブロックの内の、前記アクセス対象の仮想ブロックに割り当てることを決定した物理ブロックのみを初期化するメモリ割り当て部とを備えたことを特徴とするメモリ管理システム。
【請求項２】
請求項１記載のメモリ管理システムにおいて、
前記メモリ割り当て部は、前記アクセス対象の仮想ブロックに割り当てる物理ブロックが既に決定されている場合は、該決定されている物理ブロックを初期化することを特徴とするメモリ管理システム。
【請求項３】
請求項１記載のメモリ管理システムにおいて、
転送手段を備え、
前記メモリ割り当て部は、前記転送手段に、外部記憶装置に格納されている、前記アクセス対象の仮想ブロックに関連するデータを前記初期化する物理ブロックに転送する第１のデータ転送処理を行なわせることにより、前記物理ブロックを初期化することを特徴とするメモリ管理システム。
【請求項４】
請求項３記載のメモリ管理システムにおいて、
前記複数の仮想ブロックの内の前記アクセス対象の仮想ブロック以外の仮想ブロックは、前記アクセス対象の仮想ブロックに引き続く連続した複数の仮想ブロックであり、
前記複数の物理ブロックの内の前記アクセス対象の仮想ブロックに割り当てた物理ブロック以外の物理ブロックは、前記アクセス対象の仮想ブロックに割り当てられた物理ブロック以外の連続した複数の物理ブロックであり、
前記メモリ割り当て部は、前記第１のデータ転送処理が完了した後、前記転送手段に、前記外部記憶装置に格納されている、前記アクセス対象の仮想ブロックに引き続く連続した複数の仮想ブロックに関連するデータを、前記アクセス対象の仮想ブロックに割り当てられた物理ブロック以外の連続した複数の物理ブロックへ転送する第２のデータ転送処理を行なわせることにより、物理ブロックの初期化を行なうことを特徴とするメモリ管理システム。
【請求項５】
請求項３記載のメモリ管理システムにおいて、
前記複数の仮想ブロックの内の前記アクセス対象の仮想ブロック以外の仮想ブロックは、前記アクセス対象の仮想ブロックと同一プログラムの仮想ブロックであって、前記外部記憶装置上の連続する複数のブロックに格納されている複数の仮想ブロックであり、
前記複数の物理ブロックの内の前記アクセス対象の仮想ブロックに割り当てた物理ブロック以外の物理ブロックは、前記アクセス対象の仮想ブロックに割り当てられた物理ブロック以外の連続した複数の物理ブロックであり、
前記メモリ割り当て部は、前記第１のデータ転送処理が完了した後、前記転送手段に、前記アクセス対象の仮想ブロックと同一プログラムの仮想ブロックであって、前記外部記憶装置上の連続する複数のブロックに格納されている仮想ブロックに関連するデータを、前記アクセス対象の仮想ブロックに割り当てられた物理ブロック以外の連続した複数の物理ブロックへ転送する第２のデータ転送処理を行なわせることにより、物理ブロックの初期化を行なうことを特徴とするメモリ管理システム。
【請求項６】
請求項３記載のメモリ管理システムであって、
前記複数の仮想ブロックの内の前記アクセス対象の仮想ブロック以外の仮想ブロックは、前記外部記憶装置上の連続する複数のブロックに格納されている複数の仮想ブロックであり、
前記複数の物理ブロックの内の前記アクセス対象の仮想ブロックに割り当てた物理ブロック以外の物理ブロックは、前記アクセス対象の仮想ブロックに割り当てられた物理ブロック以外の連続した複数の物理ブロックであり、
前記メモリ割り当て部は、前記第１のデータ転送処理が完了した後、前記転送手段に、前記外部記憶装置上の連続する複数のブロックに格納されている仮想ブロックに関連するデータを、前記アクセス対象の仮想ブロックに割り当てられた物理ブロック以外の連続した複数の物理ブロックへ転送する第２のデータ転送処理を行なわせることにより、物理ブロックの初期化を行なうことを特徴とするメモリ管理システム。
【請求項７】
請求項６記載のメモリ管理システムにおいて、
仮想ブロックを示す情報および該仮想ブロックを格納している物理ブロックを示す情報とを含んだキャッシュ情報が格納されるキャッシュ情報部を備え、且つ、
前記メモリ割り当て部は、メモリアクセス例外が発生した場合であっても該メモリアクセス例外を発生させた仮想ブロックを示す情報を含んだキャッシュ情報が前記キャッシュ情報部に格納されている場合は、前記メモリアクセス例外を発生した仮想ブロックがアクセスされても前記メモリマネージメントユニットがメモリアクセス例外を発生しないようにする処理だけを行い、前記第２の転送処理によって前記アクセス対象の仮想ブロックとは異なるプログラムの仮想ブロックに関連するデータが転送された場合は、前記仮想ブロックを示す情報および前記仮想ブロックが格納されている物理ブロックを示す情報を含んだキャッシュ情報を前記キャッシュ情報部に登録することを特徴とするメモリ管理システム。
【請求項８】
請求項７記載のメモリ管理システムにおいて、
プログラム毎のマッピングテーブルであって、そのプログラムの仮想ブロックアドレスに関連付けて、物理ブロックアドレスと、該物理ブロックアドレスの初期化が済んでいるか否かを示す初期化済み情報とが登録されるマッピングテーブルを備え、且つ、
前記メモリマネージメントユニットは、初期化済み情報が初期化が済んでいないことを示している仮想ブロックに対するアクセスがあった際、メモリアクセス例外を発生し、
前記メモリ割り当て部は、初期化処理が完了した物理ブロックと関連する初期化済み情報を初期化済みに変更すると共に、前記メモリマネージメントユニットが前記メモリアクセス例外を発生した仮想ブロックがアクセスされたてもメモリアクセス例外を発生しないようにするための処理として、前記メモリアクセス例外を発生させたプログラム用のマッピングテーブルの割り当て済み情報の内の、前記メモリアクセス例外を発生させた仮想ブロックの初期化済み情報を初期化済みを示すものに変更することを特徴とするメモリ管理システム。
【請求項９】
請求項１乃至５の何れか１項に記載のメモリ管理システムにおいて、
仮想ブロックアドレスに関連付けて、物理ブロックアドレスと、該物理ブロックアドレスの物理ブロックが初期化が済んでいるか否かを示す初期化済み情報とが登録されるマッピングテーブルを備え、
前記メモリマネージメントユニットは、初期化済み情報が初期化が済んでいないことを示している仮想ブロックに対するアクセスがあった際、メモリアクセス例外を発生し、
前記メモリ割り当て部は、初期化処理が完了した物理ブロックと関連する初期化済み情報を初期化済みを示すものに変更することを特徴とするメモリ管理システム。
【請求項１０】
請求項９記載のメモリ管理システムにおいて、
前記初期化済み情報は、関連する仮想ブロックの保護属性を示す保護属性情報であり、前記仮想ブロックに割り当てる物理ブロックの初期化が完了していない場合は、その旨を示す特定の値となっており、
前記メモリマネージメントユニットは、保護属性情報が前記特定の値となっている仮想ブロックに対するアクセスがあった際、メモリアクセス例外を発生し、
前記メモリ割り当て部は、初期化処理が済んだ物理ブロックと関連する仮想ブロックの保護属性情報を、前記仮想ブロックの保護属性を示すものに変更することを特徴とするメモリ管理システム。
【請求項１１】
物理ブロック単位で分割された主記憶装置と、前記主記憶装置に格納されていない仮想ブロックがアクセスされた際、メモリアクセス例外を発生するメモリマネージメントユニットとを備えたコンピュータが、
メモリアクセス例外が発生した際、アクセス対象の仮想ブロックに割り当てる物理ブロックが決定されていない場合は、前記アクセス対象の仮想ブロックを含む複数の仮想ブロックそれぞれについてその仮想ブロックに割り当てる物理ブロックを決定すると共に、該決定した複数の物理ブロックの内の、前記アクセス対象の仮想ブロックに割り当てることを決定した物理ブロックのみを初期化することを特徴とするメモリ管理方法。
【請求項１２】
請求項１１記載のメモリ管理方法において、
前記コンピュータが、前記アクセス対象の仮想ブロックに割り当てる物理ブロックが既に決定されている場合は、該決定されている物理ブロックを初期化することを特徴とするメモリ管理方法。
【請求項１３】
物理ブロック単位で分割された主記憶装置と、前記主記憶装置に格納されていない仮想ブロックがアクセスされた際、メモリアクセス例外を発生するメモリマネージメントユニットとを備えたコンピュータを、
メモリアクセス例外が発生した際、アクセス対象の仮想ブロックに割り当てる物理ブロックが決定されていない場合は、前記アクセス対象の仮想ブロックを含む複数の仮想ブロックそれぞれについてその仮想ブロックに割り当てる物理ブロックを決定すると共に、該決定した複数の物理ブロックの内の、前記アクセス対象の仮想ブロックに割り当てることを決定した物理ブロックのみを初期化するメモリ割り当て部として機能させるためのプログラム。
【請求項１４】
請求項１３記載のプログラムにおいて、
前記メモリ割り当て部は、前記アクセス対象の仮想ブロックに割り当てる物理ブロックが既に決定されている場合は、該決定されている物理ブロックを初期化することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デマンドページングを利用したメモリ管理技術に関する。
【背景技術】
【０００２】
コンピュータシステムでプログラムを実行する場合、プログラムやデータは主記憶装置に格納される。しかし、プログラムのサイズが主記憶装置のサイズよりも大きい場合は、プログラム全体を主記憶装置に格納することはできない。そこで、プログラムを複数の仮想ブロックに分割し、必要に応じて主記憶装置に格納するという仮想記憶方式が利用される。仮想記憶方式としては、単一仮想記憶方式と多重仮想方式とが知られている。単一仮想方式は、コンピュータシステム全体で１つの仮想記憶域が存在し、その仮想記憶域を区画に分けて使用する方式である。また、多重仮想方式は、プログラム毎に独立の仮想記憶域を割り当てる方式である。多重仮想記憶方式では、メモリアクセスの際に保護の属性を確認することによってプログラム相互間で記憶保護を保つようにしている。
【０００３】
メモリアクセスの際にプログラム中で用いられるアドレスは、仮想アドレス（又は仮想メモリアドレス）と呼ばれる。プログラムからの要求に従って実際のハードウェアメモリにアクセスが行なわれるときには、プログラムが指定した仮想アドレスから、実際に搭載されているメモリの固定的な物理アドレス（又は物理メモリアドレス）に変換される。このアドレス変換作業は、ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）と呼ばれるハードウェアによって高速に行なわれている。
【０００４】
仮想アドレスは、仮想ブロックを示す仮想ブロックアドレス（又は仮想メモリブロックアドレス）とブロック内オフセットとに分けられる。同様に物理アドレスも物理ブロックを示す物理ブロックアドレス（又は物理メモリブロックアドレス）とブロック内オフセットとに分けられる。ＭＭＵは、仮想アドレスを物理アドレスに変換する際、変換用のテーブルを用いて仮想ブロックアドレスを物理ブロックアドレスに変換し、この物理ブロックアドレスに仮想アドレスのブロック内オフセットを連結することにより物理アドレスを生成する。仮想記憶方式においては、上記したようにして、仮想アドレスから物理アドレスへの変換が行なわれる。
【０００５】
また、仮想記憶方式においては、仮想ブロックに物理ブロックを割り当てる方式として、割り当て時期の異なる、デマンドページングとプリページングとが知られている。デマンドページングは、仮想ブロックに物理ブロックを割り当てることが必要になったタイミングで、仮想ブロックに物理ブロックを割り当てる方式である。プリページングは、割り当てることが必要となる前に予め仮想ブロックに物理ブロックを割り当てておく方式である。プリページングは、コンパイラでのプログラム解析が困難であるので、通常は、デマンドページングが用いられる。
【０００６】
デマンドページングを用いると、プログラム実行の過程で使用しない物理ブロックの割り当てを必要なときまで遅らせることが可能になる。デマンドページングを用いた一般的な割り当て方式は、次のようなものである。プログラムが主記憶装置に格納されていない仮想ブロックをアクセスすると、メモリアクセス例外が発生してオペレーティングシステム（ＯＳ）に制御が移る。これにより、ＯＳが上記アクセスされた仮想ブロックに割り当てる物理ブロックを決定し、この物理ブロックを初期化する。その後、プログラムに制御を戻し、プログラムによるメモリアクセスを再開させる。なお、物理ブロックに対する初期化処理としては、例えば、“０”でクリアする処理（ゼロクリア）や、ファイルから必要なデータを物理ブロックに読み出す処理などがある。
【０００７】
一方、主記憶装置に格納されていない仮想ブロックがアクセスされた際、その仮想ブロックを含む複数の仮想ブロックを対象にして物理ブロックの割り当て処理を行なう技術も知られている（例えば、特許文献１、２参照）。
【０００８】
特許文献１に記載されている技術では、ページ（仮想ブロックに相当）毎にそのページに関連する関連ページを示す情報を格納した関連ページ情報テーブルを用意しておく。そして、主記憶装置に格納されていないページがアクセスされた際には、関連ページ情報テーブルを参照して上記アクセスされたページと関連する関連ページを求め、その後、アクセスされたページおよび上記関連ページに実メモリを割り当てる。即ち、アクセスされたページに割り当てる物理ブロックおよび関連ページに割り当てる物理ブロックを決定し、上記各物理ブロックを初期化する。
【０００９】
また、特許文献２に記載されている技術では、ページ（仮想ブロックに相当）毎にそのページの次に参照されたページを示す情報を履歴保持部に記録しておく。そして、ページフォールトが発生した際には、履歴保持部を参照して先読みするページ群を決定し、ページフォールトを発生させたページおよび上記ページ群を二次記憶装置から主記憶装置へ転送する。即ち、ページフォールトを発生させたページに割り当てる物理ブロックおよび先読みするページ群に割り当てる物理ブロックを決定し、上記各物理ブロックを初期化する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平３−１３２８４２
【特許文献２】特開平８−１６１２３０
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１、２に記載されている技術は、主記憶装置に格納されていない仮想ブロックがアクセスされた際、その仮想ブロックを含む複数の仮想ブロックそれぞれに割り当てる物理ブロックを決定し、各物理ブロックを初期化するようにしているため、プログラムに制御が戻り、プログラムによるメモリアクセスが再開されるまでに要する時間が長くなってしまうという問題がある。特に、初期化する物理ブロックのブロック数が多い場合は、メモリアクセスが再開されるまでに要する時間が非常に長くなってしまう。
【００１２】
一方、主記憶装置に格納されていない仮想ブロックがアクセスされた際に、その仮想ブロックだけに物理ブロックを割り当てる一般的な割り当て方式によれば、特許文献１、２に記載されている技術のように、プログラムによるメモリアクセスが再開されるまでに要する時間が長くなってしまうことはない。しかし、このような一般的な割り当て方式では、主記憶装置に格納されていない仮想ブロックがアクセスされる毎に、その仮想ブロックに割り当てる物理ブロックを決定する処理と、決定した物理ブロックを初期化する処理とを行なうことが必要になる。
【００１３】
［発明の目的］
本発明の目的は、仮想ブロックに割り当てる物理ブロックを決定する処理とその物理ブロックを初期化する処理とを分離し、主記憶装置に格納されていない仮想ブロックがアクセスされた時点において、そのアクセスされた仮想ブロックについては割り当てる物理ブロックを決定する処理とその物理ブロックを初期化する処理とを連続して行い、その仮想ブロックに関連する他の１以上の仮想ブロックについてはそれらの仮想ブロックに割り当てる物理ブロックを決定する処理だけを行なうことができるメモリ管理システムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明にかかる第１のメモリ管理システムは、
物理ブロック単位で分割された主記憶装置と、
前記主記憶装置に格納されていない仮想ブロックがアクセスされた際、メモリアクセス例外を発生するメモリマネージメントユニットと、
メモリアクセス例外が発生した際、アクセス対象の仮想ブロックに割り当てる物理ブロックが決定されていない場合は、前記アクセス対象の仮想ブロックを含む複数の仮想ブロックそれぞれについてその仮想ブロックに割り当てる物理ブロックを決定すると共に、該決定した複数の物理ブロックの内の、前記アクセス対象の仮想ブロックに割り当てることを決定した物理ブロックのみを初期化するメモリ割り当て部とを備えている。
【００１５】
本発明にかかる第１のメモリ管理方法は、
物理ブロック単位で分割された主記憶装置と、前記主記憶装置に格納されていない仮想ブロックがアクセスされた際、メモリアクセス例外を発生するメモリマネージメントユニットとを備えたコンピュータが、
メモリアクセス例外が発生した際、アクセス対象の仮想ブロックに割り当てる物理ブロックが決定されていない場合は、前記アクセス対象の仮想ブロックを含む複数の仮想ブロックそれぞれについてその仮想ブロックに割り当てる物理ブロックを決定すると共に、該決定した複数の物理ブロックの内の、前記アクセス対象の仮想ブロックに割り当てることを決定した物理ブロックのみを初期化する。
【００１６】
本発明にかかる第１のプログラムは、
物理ブロック単位で分割された主記憶装置と、前記主記憶装置に格納されていない仮想ブロックがアクセスされた際、メモリアクセス例外を発生するメモリマネージメントユニットとを備えたコンピュータを、
メモリアクセス例外が発生した際、アクセス対象の仮想ブロックに割り当てる物理ブロックが決定されていない場合は、前記アクセス対象の仮想ブロックを含む複数の仮想ブロックそれぞれについてその仮想ブロックに割り当てる物理ブロックを決定すると共に、該決定した複数の物理ブロックの内の、前記アクセス対象の仮想ブロックに割り当てることを決定した物理ブロックのみを初期化するメモリ割り当て部として機能させる。
【発明の効果】
【００１７】
本発明によれば、主記憶装置に格納されていない仮想ブロックがアクセスされた時点において、そのアクセスされた仮想ブロックについては割り当てる物理ブロックを決定する処理とその物理ブロックを初期化する処理とを連続して行い、その仮想ブロックに関連する他の１以上の仮想ブロックについてはそれらの仮想ブロックに割り当てる物理ブロックを決定する処理だけを行なうことができるメモリ管理システムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明にかかるメモリ管理システムの第１の実施の形態の構成例を示すブロック図である。
【図２】プログラム実行開始時に行なわれる前処理の一例を示すフローチャートである。
【図３】メモリアクセス例外が発生した際の処理例を示すフローチャートである。
【図４】保護属性テーブルのエントリの構成例を示す図である。
【図５】マッピングテーブルのエントリの構成例を示す図である。
【図６】第１の実施の形態の実施例の構成例を示すブロック図である。
【図７】主記憶装置２００の物理ブロックアドレスの割り当て例を示す図である。
【図８】保護属性テーブルの内容例を示す図である。
【図９】未使用メモリリストの一例を示す図である。
【図１０】マッピングテーブルの初期状態を示す図である。
【図１１】仮想ブロックアドレス「０ｘ１０００」に対するメモリアクセスが行なわれた後のマッピングテーブルの内容を示した図である。
【図１２】仮想ブロックアドレス「０ｘ１００２」に対するメモリアクセスが行なわれた後のマッピングテーブルの内容を示した図である。
【図１３】本発明にかかるメモリ管理システムの第２の実施の形態の構成例を示すブロック図である。
【図１４】ファイル位置情報部１５の内容例を示す図である。
【図１５】第２の実施の形態におけるメモリアクセス例外処理の処理例を示すフローチャートである。
【図１６】本発明にかかるメモリ管理システムの第３の実施の形態の構成例を示すブロック図である。
【図１７】キャッシュ情報部１６の内容例を示す図である。
【図１８】第３の実施の形態におけるメモリアクセス例外処理の処理例を示すフローチャートである。
【図１９】ファイル位置情報部１５の内容例を示す図である。
【発明を実施するための形態】
【００１９】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２０】
［第１の実施の形態］
図１を参照すると、本発明の第１の実施の形態は、プログラム制御により動作するデータ処理装置１と、外部記憶装置２と、主記憶装置３とによって構成される。
【００２１】
外部記憶装置２は、少なくともファイルシステム部２１から構成される。ファイルシステム部２１はプログラムや共有ライブラリ、また、プログラムで使用するデータなどのファイルを格納している。ファイルシステム部２１を構成する例としてはＨＤＤ（ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）などが挙げられる。
【００２２】
主記憶装置３は、少なくとも主記憶部３１によって構成される。主記憶部３１を構成する記憶素子はランダムアクセス可能なものならなんでもよく、ＤＲＡＭやＳＲＡＭなどが主に使われる。
【００２３】
データ処理装置１は少なくともマッピング情報部１１と、マッピングテーブル部１２と、未使用メモリ管理部１３と、メモリ割り当て部１４とによって構成される。
【００２４】
マッピング情報部１１は、データ処理装置１で実行されるプログラム（実行プログラム）毎のテーブル（保護属性テーブル；図示せず）を保持しており、この保護属性テーブルを利用して、プログラムの各仮想ブロックについての本来の保護属性を管理している。図４は保護属性テーブルの１エントリを示したものであり、開始ブロックアドレス、終了ブロックアドレス、および、保護属性によって構成されている。保護属性テーブルのエントリにはこれらの他に、その他の制御のための属性が含まれていてもよい。
【００２５】
開始ブロックアドレスは、プログラムが割り当てられている仮想記憶域上で、保護属性が同一の仮想ブロックが連続している領域の開始位置を仮想ブロックアドレスで表現したものである。終了ブロックアドレスは、プログラムが割り当てられている仮想記憶域上で、保護属性が同一の仮想ブロックが連続している領域の終了位置を仮想ブロックアドレスで表現したものである。
【００２６】
保護属性には、読み出し専用の保護属性と、読み書き可能の保護属性とがあり、何れの保護属性が設定されるかは、開始ブロックアドレスと終了ブロックアドレスとで特定される仮想ブロックの本来の保護属性によって決定される。また、読み出し専用の保護属性と読み書き可能の保護属性とは独立して他の保護属性などがあってもよい。
【００２７】
なお、マッピング情報部１１が保持している保護属性テーブルは、メモリ割り当て部１４によって確保（生成）されたものである。即ち、メモリ割り当て部１４は、プログラム実行前の前処理において、当該プログラム用の保護属性テーブルを確保し、当該プログラムのファイル自体や必要としている共有ライブラリやコンパイル時に生成されたプログラムのヘッダ部などの情報をもとに、保護属性テーブルに開始ブロックアドレス、終了ブロックアドレス、および、保護属性を設定する。
【００２８】
マッピングテーブル部１２は、実行プログラム毎のマッピングテーブルを保持している。図５はマッピングテーブルの１エントリを示したものであり、仮想ブロックアドレスと物理ブロックアドレスと保護属性とによって構成されている。マッピングテーブルのエントリにはこれらの他に、その他の制御のための属性が含まれていてもよい。
【００２９】
仮想ブロックアドレスには、プログラムに割り当てられている仮想アドレスのブロック番号が設定される。全てのプログラムが同じ大きさの仮想アドレス空間（仮想記憶域）を持つことができるため、例えば３２ビットの仮想アドレス空間で、ブロックサイズが４０９６バイトの場合は、全てのプログラムが１，０４８，５７６エントリ相当の情報を保持する。
【００３０】
物理ブロックアドレスには、メモリ割り当て部１４によって割り当てられた物理ブロックのブロック番号が設定される。
【００３１】
保護属性には、本実施の形態の場合、読み出し専用あるいは読み書き可能が設定される。メモリアクセスのたびに、図示を省略したＭＭＵによってメモリアクセスの種類（読み出しや書き込みなど）と、アクセス先の仮想メモリブロックの保護属性とが比較され、メモリアクセスが正当か否かが確認される。もしメモリアクセスが保護属性を違反していた場合は、ＭＭＵがメモリアクセス例外を発生して、例えば、ＯＳに制御を移す。また、保護属性がＮＵＬＬの場合は、メモリアクセスの種類がなんであれ、メモリアクセス例外が発生する。
【００３２】
ここで正当なメモリアクセスというのは、例えば、読み出し専用の保護属性に対しては読み出しアクセス、読み書き可能の保護属性に対しては読み出しアクセスか書き込みアクセス、であることをいう。
【００３３】
なお、マッピングテーブル部１２が保持しているマッピングテーブルは、メモリ割り当て部１４が確保（生成）したものである。即ち、メモリ割り当て部１４は、プログラム実行前の前処理において、上記プログラム用のマッピングテーブルをマッピングテーブル部１２上に確保し、その全てのエントリについて、物理ブロックアドレスおよび保護属性を「０」および「ＮＵＬＬ」で初期化する。
【００３４】
未使用メモリ管理部１３は、プログラムやＯＳに割り当てられていない物理ブロックをリニアリストなどの既存の方法によって管理している。また、プログラムの実行が終了し、そのプログラムのみが使用していた物理ブロックが解放された場合、その物理ブロックは未使用メモリ管理部１３に戻され、再び、未使用メモリ管理部１３の管理対象となる。また、メモリ割り当て部１４から物理ブロックが要求された場合、管理している物理ブロックの中から要求内容に合った物理ブロックを選択し、その物理ブロックアドレスをメモリ割り当て部１４に返却する。
【００３５】
メモリ割り当て部１４は、メモリアクセス例外が発生すると、例外処理として未使用メモリ管理部１３に対して連続した複数の物理ブロックを要求する。この要求に応答して未使用メモリ管理部１３から連続した複数の物理ブロックの物理ブロックアドレスが返却されると、その内の１つ（例えば、最も小さなもの）を、マッピングテーブルのエントリの内のメモリアクセス例外を発生させた仮想ブロック（例外発生仮想ブロック）に対応するエントリに設定し、このエントリに引き続くエントリに、残りの物理ブロックアドレスを小さいものから順に設定する。その後、上記複数の物理ブロックの内の例外発生仮想ブロックに割り当てた物理ブロックだけを初期化し、更に、マッピングテーブルのエントリの内の、例外発生仮想ブロックに対応するエントリに、本来の保護属性を設定する。なお、未使用メモリ管理部１３に対する要求は、予め定められている規則に従って作成するものとする。
【００３６】
次に、図２のフローチャートを参照してプログラムの実行開始前に行なう前処理について説明する。
【００３７】
プログラム実行開始に先立って、メモリ割り当て部１４は、前処理として、当該プログラムのためのマッピングテーブルをマッピングテーブル部１２上に確保し、その全てエントリに対して、物理ブロックアドレスおよび保護属性を「０」および「ＮＵＬＬ」で初期化する（ステップＳ２００）。
【００３８】
更に、メモリ割り当て部１４は、マッピング情報部１１上に当該プログラム用の保護属性テーブルを確保し、開始プログラムアドレス、終了ブロックアドレス、および、保護属性を設定する。また、計算などのためにメモリを動的に確保する処理を行なった際にも、実際に物理ブロックが割り当てられる前に仮想アドレス上で領域を確保してその領域の保護属性を保護属性テーブルに設定する（ステップＳ２０１）。
【００３９】
これらの前処理が終わった後、プログラムの本来の実行が開始される（ステップＳ２０２）。
【００４０】
プログラムの実行中に、ある仮想ブロックに対して初回のアクセスが行なわれると、デマンドページングの場合、アクセスした仮想ブロックの保護属性はＮＵＬＬなので、メモリアクセス例外が発生し、その例外処理が行なわれる。また、プログラムのバグなどによってアクセスしてはいけない領域へのメモリアクセスが発生したり、また、アクセス権限が間違っていたり（読み出し専用領域に対して書き込みを行なおうとするなど）する場合にも例外処理が呼び出されるが、この場合の例外処理（エラー処理）は本発明の範疇外である。
【００４１】
次に、図３のフローチャートを参照してメモリアクセス例外が発生した際に行なわれる例外処理について説明する。
【００４２】
メモリアクセス例外が発生すると、メモリ割り当て部１４は、マッピング情報部１１に保持されている保護属性テーブルの内の、メモリアクセス例外を発生させたプログラム（例外発生プログラム）用の保護属性テーブルを参照し、例外発生仮想ブロックの本来の保護属性を得る（ステップＳ３００）。
【００４３】
次に、メモリ割り当て部１４は、マッピングテーブル部１２に保持されているマッピングテーブルの内の、例外発生プログラム用のマッピングテーブルを参照し、例外発生仮想ブロックの物理ブロックアドレスと保護属性の情報を得る（ステップＳ３０１）。
【００４４】
物理ブロックアドレスが「０」だった場合、即ち例外発生仮想ブロックに割り当てる物理ブロックが決定されていない場合（ステップＳ３０１でＹｅｓ）は、メモリアクセスの種類と保護属性とを検証（比較）して、正当なメモリアクセスかどうかを判断する（ステップＳ３０２）。
【００４５】
メモリアクセスが正当でなかった場合（ステップＳ３０２でＮｏ）はエラーとなり、メモリ割り当て部１４はプログラムを終了させるなどのエラー処理を行なう。
【００４６】
メモリアクセスが正当であった場合（ステップＳ３０２でＹｅｓ）、未使用メモリ管理部１３から仮想ブロックに割り当てる物理ブロックの物理ブロックアドレスを取得する（ステップＳ３０３）。このとき、メモリアクセス例外が発生した仮想ブロック用の１つの物理メモリブロックだけでなく、連続した複数の物理ブロックの物理ブロックアドレスを未使用メモリ管理部１３から取得する。
【００４７】
取得するサイズに関しては設定で決められるものとする。設定の例としては、システムで決められた所定のブロック数（例えば、４ブロックなど）、未使用メモリ管理部１３で管理している連続の最大長、例外発生仮想ブロックを含む領域の最後までのサイズなどがある。例外発生仮想ブロックを含む領域の最後までのサイズは、例えば、マッピング情報部１１に保持されている保護属性テーブルの内の、例外発生プログラムに対応した保護属性テーブルに設定された、上記例外発生仮想ブロックを含む領域の終了ブロックアドレスと上記例外発生仮想ブロックの仮想ブロックアドレスとから計算することができる。また、例えば、取得する物理ブロックアドレスのサイズを、システム起動時にはシステムで決められた所定のブロック数とし、システムで決められたブロック数分の物理ブロックアドレスが取得できなくなったら、取得するサイズを未使用メモリ管理部１３で管理している連続の最大長、あるいは、例外発生仮想ブロックを含む領域の最後までのサイズに変更するようにしても良い。
【００４８】
連続した複数の物理ブロックアドレスを取得したメモリ割り当て部１４は、マッピングテーブル部１２に保持されているマッピングテーブルの内の、例外発生プログラムに対応したマッピングテーブルに、上記取得した複数の物理ブロックアドレスを設定する（ステップＳ３０４）。具体的には、取得した複数の物理ブロックアドレスの内の最も小さなものを、マッピングテーブル上の例外発生仮想ブロックに対応するエントリに設定し、このエントリに引き続く連続したエントリに、残りの物理ブロックアドレスを小さいものから順に設定する。
【００４９】
次に、メモリ割り当て部１４は、取得した複数の物理ブロックアドレスによって特定される複数の物理ブロックの内の、例外発生仮想ブロックに割り当てる物理ブロックについてのみ初期化処理を行い、残りの物理ブロックについては初期化処理を行なわない（ステップＳ３０５）。例えば、例外発生仮想ブロックが共有ライブラリの実行関数部分（テキスト領域）だった場合は、その共有ライブラリのファイルから実行関数部分を物理ブロックに読み出す処理が行なわれる。また、もし、当該仮想ブロックが計算に使われる領域だった場合は、ゼロクリアする処理が行なわれる。
【００５０】
更に、マッピングテーブルのエントリの内の、例外発生仮想ブロックに対応するエントリに、先ほどステップＳ３００で得たマッピング情報部１１からの保護属性を設定する（ステップＳ３０６）。従って、ステップＳ３０４で物理ブロックアドレスを設定した複数のエントリの内、例外発生仮想ブロックに対応するエントリ以外のエントリでは、保護属性はＮＵＬＬのままである。
【００５１】
このようにすることによって、メモリアクセス例外で実行される初期化の処理時間は１ブロック分だけと短くてすみ、実行中のプログラムに対して素早く制御を戻すことが可能となる。
【００５２】
物理ブロックに対する初期化処理が終了したら、制御を実行プログラムに戻し、実行プログラムは先ほどメモリアクセス例外を引き起こしたのと同じ仮想アドレスでメモリアクセスを再実行する。このとき、先ほどメモリアクセス例外を発生させた仮想ブロックの保護属性は最早ＮＵＬＬではなくて、本来の保護属性に変更されているため、仮想アドレスから物理アドレスへの変換が行なわれて（ステップＳ３０７）、メモリアクセスが成功する。
【００５３】
ステップＳ３０１において物理ブロックアドレスが「０」でなかった場合（ステップＳ３０１でＮｏ）は、当該メモリブロックに対して適切な初期化処理を実行し（ステップ３０５）、マッピング情報部１１から得られた本来の保護属性をマッピングテーブルの当該エントリに設定した後（ステップＳ３０６）、プログラムに制御が戻り、メモリアクセスが再実行されて、今度はマッピングテーブルの該当エントリがＮＵＬＬではないため、仮想アドレスから物理アドレスへの変換が行なわれて（ステップＳ３０７）、メモリアクセスが成功する。
【００５４】
［第１の実施の形態の効果］
本実施の形態によれば、仮想ブロックに割り当てる物理ブロックを決定する処理とその物理ブロックを初期化する処理とを分離し、主記憶装置に格納されていない仮想ブロックがアクセスされた時点において、そのアクセスされた仮想ブロックについては割り当てる物理ブロックを決定する処理とその物理ブロックを初期化する処理とを連続して行い、その仮想ブロックに関連する他の１以上の仮想ブロックについてはそれらの仮想ブロックに割り当てる物理ブロックを決定する処理だけを行なうことができる。このため、或る仮想ブロックへの初回のメモリアクセスが発生した際にその仮想ブロックに関連する他の１以上の仮想ブロックについて物理ブロックの決定とその物理ブロックの初期化とを行なう特許文献１、２の技術に比べて、ページフォールト時の例外処理時間の極端な増大を防止することができる。また、その仮想ブロックに関連する他の１以上の仮想ブロックがその後にアクセスされた際には、物理ブロックの決定処理を省くことができ、その分、ページフォール時の例外処理時間を短縮することができる。
【００５５】
また、本実施の形態では、仮想ブロックの保護属性を示す情報を利用して、上記仮想ブロックに関連する物理ブロックの初期化が済んでいるか否かを表示するようにしているので、物理ブロックの初期化が済んでいるか否かを示す情報を新たに設ける場合に比較して、メモリの使用量を少なくすることができる。
【００５６】
［第１の実施の形態の実施例］
次に、本実施の形態について一実施例を挙げて、より詳細に説明する。
【００５７】
図６は、コンピュータ１００により本実施の形態のメモリ管理システムを実現する場合の実施例を示している。不揮発性記憶部２１０及び揮発性記憶部２２０で構成される主記憶装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３００にデータバスを通じて接続されており、外部記憶装置４００も接続されている。ＣＰＵ３００にはＭＭＵ３１０が搭載されている。不揮発性記憶部２１０にはＯＳ２１１及びプログラム（図示せず）が予め記憶されている。また、メモリ割り当て部２１２および未使用メモリ管理部２１３はＯＳ２１１の一機能である。
【００５８】
ただし、ＯＳ２１１及びプログラムの記憶場所はこの形態に限られない。不揮発性記憶部２１０が無く、ＯＳ２１１及びプログラムが外部記憶装置４００に記憶されており、コンピュータ１００の実行時に必要に応じて外部記憶装置４００から揮発性記憶部２２０に読み出されて実行される形態であってもよい。更に、外部記憶装置４００が無く、コンピュータ１００に接続されたネットワークを経由してＯＳ２１１及びプログラムを必要に応じて主記憶装置２００に読み出して実行する形態であってもよい。
【００５９】
揮発性記憶部２２０には、主記憶部２２１、マッピングテーブル部２２３、マッピング情報部２２２が確保されている。
【００６０】
図７に主記憶装置２００の物理ブロックアドレスの割り当て例を示す。図７に示されたように、不揮発性記憶部２１０には物理ブロックアドレス０ｘ１１〜０ｘ１９が割り当てられている。また、揮発性記憶部２２０には物理ブロックアドレス０ｘ２００〜０ｘ１ｆｆｆが割り当てられている。図７では本実施例を簡単に説明するためにサイズを極めて小さくしており、実際には沢山の物理ブロックアドレスが割り当てられる。
【００６１】
図８に、マッピング情報部２２２上に確保された実行プログラム用の保護属性テーブルの例を示す。図８によると、このプログラムは、仮想ブロックアドレス０ｘ１０００〜０ｘ１００４が読み出し専用領域であり、ファイル／ｌｉｂ／ｌｉｂｃ．ｓｏと関連付けられており、０ｘ１００５〜０ｘ１００６が読み書き可能領域で、ファイル／ｌｉｂ／ｌｉｂｍ．ｓｏと関連付けられている。図８では本実施例を簡単に説明するためにサイズを極めて小さくしており、実際には多くの領域がある。
【００６２】
図９は未使用メモリ管理部２１３が保持している未使用物理ブロックのリストを示したものである。図９では本実施例を簡単に説明するためにサイズを極めて小さくしており、実際には多くの未使用物理ブロックが存在する。また、本実施例では、連続物理ブロックは４ブロック割り当てる設定となっているものとする。
【００６３】
以下、図１０〜図１２を参照しながら、メモリアクセス例外の処理の流れを説明する。今、次のような一連のメモリアクセスが行なわれたとする。
【００６４】
１）  仮想アドレス０ｘ１００００１００への初回の読み出しアクセス
２）  仮想アドレス０ｘ１００００１００への２回目の読み出しアクセス
３）  仮想アドレス０ｘ１００２０２００への初回のメモリアクセス
【００６５】
図１０はプログラム実行中のマッピングテーブル（マッピングテーブル部２２３内に存在する）のある状態（初期状態）を示したものである。この状態では、全ての物理ブロックアドレスが０であり、保護属性はＮＵＬＬである。
【００６６】
今、
１）  仮想メモリアドレス０ｘ１００００１００に対して初回の読み出しメモリアクセス
が発生したとする。なお、仮想メモリアドレスの下位４桁がブロック内オフセットを示しているとする。
【００６７】
ＭＭＵ３１０はマッピングテーブルを参照して仮想ブロックアドレスを物理ブロックアドレスに変換するが、マッピングテーブルの仮想ブロックアドレス０ｘ１０００のエントリは保護属性がＮＵＬＬなため、メモリアクセス例外が発生してＯＳ２１１に制御が移る。
【００６８】
ＯＳ２１１に含まれるメモリ割り当て部２１２は、まず、図８に示した保護属性テーブルから仮想ブロックアドレス０ｘ１０００を含む領域に関する情報を検索し、「読み出し専用領域（Ｒ属性）、関連ファイル／ｌｉｂ／ｌｉｂｃ．ｓｏ」を得る。
【００６９】
次に、図１０に示すマッピングテーブルの仮想ブロックアドレス０ｘ１０００のエントリを検索し、「物理ブロックアドレス０ｘ０、保護属性ＮＵＬＬ」というエントリを得る。
【００７０】
物理ブロックアドレスが０なので（図３のステップＳ３０１でＹｅｓ）、正当なメモリアクセスかどうかを判定する。図８の保護属性テーブルから得られた仮想ブロックアドレス０ｘ１０００の保護属性は、読み出し専用（Ｒ）であり、この領域への読み出しメモリアクセスは許可されているため、正当なメモリアクセスと判断される（ステップＳ３０２でＹｅｓ）。
【００７１】
正当なメモリアクセスと判断されたため、未使用メモリ管理部２１３から未使用物理ブロックの物理ブロックアドレスを取得する（ステップＳ３０３）。今回、物理ブロックアドレス０ｘ２００〜０ｘ２０３の４物理ブロック分のアドレスが得られたものとする。
【００７２】
メモリ割り当て部２１２は、図１１に示すように、マッピングテーブルの仮想ブロックアドレス０ｘ１０００〜０ｘ１００３のエントリに、物理ブロックアドレス０ｘ２００〜０ｘ２０３を設定する（ステップＳ３０４）。
【００７３】
次に、図８に示した保護属性テーブルの情報により仮想ブロックアドレス０ｘ１０００の領域はファイル／ｌｉｂ／ｌｉｂｃ．ｓｏと関連付られていることが分かるので、当該ファイルの必要部分を、物理ブロックアドレス０ｘ２００の物理ブロックに読み出す初期化を行なう（ステップＳ３０５）。
【００７４】
更に、マッピングテーブルの仮想ブロックアドレス０ｘ１０００のエントリの保護属性をＮＵＬＬからＲ（読み出し専用）に変更する。以上で、メモリアクセス例外の処理が終了し、プログラムに制御が戻る。
【００７５】
制御が戻ったプログラムは仮想アドレス０ｘ１００００１００へのメモリアクセスを再実行するが、このときにはもうマッピングテーブルの仮想ブロックアドレス０ｘ１０００のエントリの保護属性は、図１１に示すようにＲになっており、また、読み出し属性に対して読み出しメモリアクセスなのでメモリアクセス例外は発生せず、仮想ブロックアドレスはＭＭＵ３１０で物理ブロックアドレス０ｘ２００に変換されて、主記憶部２２１の物理メモリアドレス０ｘ２０００１００へのメモリアクセスが実行される。
【００７６】
このように、ある仮想ブロックに対して初回のメモリアクセスが発生した際には、連続した物理メモリブロックを割り当てるが、その初期化時間は１ブロック分のみなので、全体の例外処理時間が短くて済む。
【００７７】
また、
２）  仮想アドレス０ｘ１００００１００に２度目の読み出しアクセス
が発生しても、そのときは図１１に示すように、マッピングテーブルの保護属性がＲなので、上記と同じ理由によりメモリアクセス例外は発生せずにＭＭＵ３１０による物理ブロックアドレスへの変換が行なわれて、主記憶部２２１の物理アドレス０ｘ２０００１００へのメモリアクセスが実行される。また、このことは仮想ブロックアドレス０ｘ１０００内のその他のアドレスに関しても同じである。
【００７８】
このように、ある仮想メモリブロックに対して２回目のメモリアクセスが発生した際には、物理ブロックは割り当てられているのでメモリアクセス例外は発生しないでメモリアクセスが実行される。
【００７９】
次に、
３）  仮想メモリアドレス０ｘ１００２０２００への初回のメモリアクセス
が発生した際の動作を説明する。
【００８０】
ＭＭＵ３１０が図１１に示したマッピングテーブルを参照すると、マッピングテーブルの仮想ブロックアドレス０ｘ１００２のエントリは保護属性がＮＵＬＬなため、メモリアクセス例外が発生してＯＳ２１１に制御が移る。
【００８１】
ＯＳ２１１に含まれるメモリ割り当て部２１２は、まず、図８に示す保護属性テーブルから仮想ブロックアドレス０ｘ１００２を含む領域に関する情報を検索し、「読み出し専用領域（Ｒ属性）、関連ファイル／ｌｉｂ／ｌｉｂｃ．ｓｏ」を得る（ステップＳ３００）。
【００８２】
そして、図１１に示すマッピングテーブルの仮想ブロックアドレス０ｘ１００２のエントリを検索し、「物理ブロックアドレス０ｘ２０２、保護属性ＮＵＬＬ」というエントリを得る。
【００８３】
物理ブロックアドレスが０ではないので（ステップＳ３０１でＮｏ）、ステップＳ３０５の処理が行なわれる。この例の場合は、図８に示した保護属性テーブルの情報により仮想ブロックアドレス０ｘ１００２の領域もファイル／ｌｉｂ／ｌｉｂｃ．ｓｏと関連付られていることが分かるため、物理ブロックアドレス０ｘ２０２の物理ブロックに対して当該ファイルの必要部分を読み出す初期化を行なう。
【００８４】
更に、マッピングテーブルの仮想ブロックアドレス０ｘ１００２のエントリの保護属性をＮＵＬＬから、先ほど保護属性テーブルから得られたＲ（読み出し専用）に変更する。以上で、メモリアクセス例外の処理が終了し、プログラムに実行が戻る。
【００８５】
これにより、仮想アドレス０ｘ１００２０２００へのメモリアクセスが再実行され、このときにはもうマッピングテーブルの当該エントリの保護属性は図１２に示すようにＲになっているのでメモリアクセス例外は発生せず、仮想ブロックアドレスはＭＭＵ３１０で物理ブロックアドレス０ｘ２０２に変換されて、主記憶部２２１の物理アドレス０ｘ２０２０２００へのメモリアクセスが実行される。
【００８６】
また、仮想アドレス０ｘ１００２０２００に２度目の読み出しアクセスが発生しても、そのときは図１２に示すようにマッピングテーブルの保護属性がＲであり、かつ、読み出し属性に対して読み出しメモリアクセスなのでメモリメモリアクセス例外は発生せずにＭＭＵ３１０による物理アドレスへの変換が行なわれて、主記憶部２２１の物理アドレス０ｘ２０００２００へのメモリアクセスが実行される。また、このことは仮想ブロックアドレス０ｘ１００２内のその他のアドレスに関しても同じである。
【００８７】
このように、ある仮想ブロックに対して初回のメモリアクセスが発生した際であっても、既に物理メモリブロックが割り当てられているメモリブロックに対しては初期化処理とマッピングテーブルへの設定をするのみで済む。
【００８８】
［第２の実施の形態］
次に、本発明の第２の実施の形態について説明する。本実施の形態は、マッピング情報部でファイルと関連付けられている仮想ブロックのメモリアクセス例外において、初期化処理つまりファイルからの読み出し処理を「読み出し要求」と「データ転送処理」との２つに分け、更に、メモリアクセス例外を起こした仮想ブロックに対する処理とそれ以外の仮想ブロックに対する処理との２つに分けて処理することを特徴とする。
【００８９】
図１３を参照すると、本実施の形態にかかるメモリ管理システムは、データ処理装置１の代わりにデータ処理装置１ａを備えている点、および、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ４を備えている点で、図１に示した第１の実施の形態と相違している。
【００９０】
データ処理装置１ａは、メモリ割り当て部１４の代わりにメモリ割り当て部１４ａを備えている点、および、ファイル位置情報部１５を備えている点がデータ処理装置１と相違している。
【００９１】
ファイル位置情報部１５には、ファイルシステム部２１上の各ブロックに、どのファイルの何番目のブロックが格納されているのかを示すファイル位置情報が格納されている。図１４を参照すると、ファイル位置情報部１５に格納されているファイル位置情報は、ブロック番号と、ファイル名と、ファイル内ブロック番号とから構成されている。ブロック番号は、ファイルシステム部２１上のブロックのブロック番号を示す。ファイル名は、対応するブロックに格納されているファイルのファイル名を示す。ファイル内ブロック番号は、ファイルの何番目のブロックなのかを示す。例えば、図１４における第１レコードは、ファイルシステム部２１上のブロック番号０のブロックには、ファイル名／ｌｉｂ／ｌｉｂｃ．ｓｏのファイルの第１番目のブロックが格納されていることを示している。
【００９２】
メモリ割り当て部１４ａは、メモリアクセス例外が発生した際、ＤＭＡコントローラ４に、アクセス例外を発生させた仮想ブロックに関するデータを、ファイルシステム部２１から初期化の対象となる複数の物理ブロックの内の最もアドレスが小さいものに転送する第１の転送処理を行なわせる。更に、メモリ割り当て部１４ａは、第１のデータ転送処理が完了した後、ＤＭＡコントローラ４に、例外発生仮想ブロックに引き続く連続した複数の仮想ブロックに関連するデータを、ファイルシステム部２１から例外発生仮想ブロックに割り当てられた物理ブロックに引き続く連続した複数の物理ブロックへ転送する第２のデータ転送処理を行なわせる。
【００９３】
以下、本実施の形態の動作について説明する。図１５は、メモリアクセス例外が発生した際に実行される例外処理の一例を示すフローチャートであり、図３と同一処理を行なうステップは、同一のステップ番号を付している。ここでは、図３との相違点について主に説明する。
【００９４】
メモリ割り当て部１４ａは、連続した複数個（例えば、Ｎ個とする）の物理ブロックアドレスをマッピングテーブル上の連続したエントリに設定したら（ステップＳ３０４）、例外発生仮想ブロックに割り当てる物理ブロックを初期化するために、ＤＭＡコントローラ４に対して第１の読み出し要求を出力する（ステップＳ４００）。この第１の読み出し要求（転送要求）には、転送元を示す情報としてメモリアクセス例外を発生させた例外発生仮想ブロックが格納されているファイルシステム部２１上のブロックのブロック番号（例えば、Ｂとする）を含み、転送先を示す情報として、上記連続した複数の物理ブロックアドレスの内の最も小さい物理ブロックアドレス（例えば、Ａとする）を含み、転送サイズとして１ブロックを含む。ここで、例外発生仮想ブロックが格納されているファイルシステム部２１上のブロックのブロック番号は、マッピング情報部１１に保持されている実行プログラム用の保護属性テーブルと、ファイル位置情報部１５とから求めることができる。即ち、保護属性テーブルから例外発生仮想ブロックと関連するファイルのファイル名とファイル内ブロック番号とを求め、それらをキーにしてファイル位置情報部１５を検索することにより、例外発生仮想ブロックを格納しているファイルシステム部２１上のブロックのブロック番号を求めることができる。
【００９５】
その後、メモリ割り当て部１４ａは、例外発生仮想ブロック以外の仮想ブロックに割り当てる物理ブロックを初期化するため、ＤＭＡコントローラ４に対して第２の読み出し要求を出力する（ステップＳ４０１）。ここで、ステップＳ４０１の処理について詳しく説明する。先ず、ファイル位置情報部１５を参照して、例外発生仮想ブロックの次の仮想ブロック（第２番目の仮想ブロック）から今回物理ブロックの割り当て対象にしている最後の仮想ブロック（第Ｎ番目の仮想ブロック）までの各仮想ブロックそれぞれについて、その仮想ブロックが存在するファイルシステム部２１上のブロック番号を求める。そして、最も小さいブロック番号を含む、ブロック番号の連続部分に対する読み出し要求を作成し、作成した読み出し要求をＤＭＡコントローラ４に対して出力する。
【００９６】
今、例えば、２番目の仮想ブロックから第Ｎ番目の仮想ブロックまでの各仮想ブロックがファイルシステム部２１上の連続したブロック番号のブロックに格納され、第２番目の仮想ブロックがファイルシステム部２１上のブロック番号（Ｂ＋１）のブロックに格納されていたとすると、転送元を示す情報としてブロック番号（Ｂ＋１）を含み、転送先を示す情報として第１の読み出し要求中の物理ブロックアドレスＡに１を加えた物理ブロックアドレス（Ａ＋１）を含み、転送サイズとして（Ｎ−１）ブロックを含んだ読み出し要求が１つだけ作成されることになる。また、例えば、第２番目と第３番目の仮想ブロックがファイルシステム部２１上の連続したブロック番号Ｂ＋１、Ｂ＋２のブロックに格納され、第４番目（第Ｎ番目）の仮想ブロックが第３番目の仮想ブロックとは不連続のブロック番号（Ｂ＋１０）のブロックに格納されていたとすると、転送元、転送先、サイズを示す情報として、（Ｂ＋１）、（Ａ＋１）、２ブロックを含む読み出し要求を作成することになる。
【００９７】
ＤＭＡコントローラ４は、上記した第１および第２の読み出し要求が順次入力されると、先ず、第１の読み出し要求に従って、ファイルシステム部２１のブロック番号Ｂのブロックに格納されている１ブロック分のデータを、主記憶部３１の物理ブロックアドレスＡに転送する（ステップＳ４０２）。
【００９８】
第１の読み出し要求に従った第１のデータ転送処理が完了すると、メモリ割り当て部１４ａは、マッピングテーブル上の例外発生仮想ブロックに対応するエントリに、ステップＳ３００で入手した本来の保護属性で設定する（ステップＳ４０３）。
【００９９】
以上で例外処理を終了し、プログラムに制御が移る。制御が戻された実行プログラムは先ほどメモリアクセス例外を引き起こしたのと同じ仮想アドレスでメモリアクセスを再実行する。
【０１００】
このとき、先ほどメモリアクセス例外を発生させた例外発生仮想ブロックの保護モードは最早ＮＵＬＬではなくて本来の保護属性に変更されているため、仮想アドレスから物理アドレスへの変換が行なわれて（ステップＳ４０４）メモリアクセスが成功し、プログラムの実行が再開される（ステップＳ４０５）。
【０１０１】
ＤＭＡコントローラ４は、第１のデータ転送処理が完了すると、第２の読み出し要求に従った第２のデータ転送処理を開始する（ステップＳ４０６）。そして、第２のデータ転送処理が完了すると、プログラムの実行は中断され、メモリ割り当て部１４ａに制御が移る。これにより、メモリ割り当て部１４ａは、上記プログラム用のマッピングテーブルのエントリの内の、第２のデータ転送処理によって初期化された物理ブロックが割り当てられた仮想ブロックに対応するエントリに、ステップＳ３００で取得した本来の保護属性を設定する（ステップＳ４０７）。その後、メモリ割り当て部１４ａからプログラムへ制御が戻され、プログラムの実行が再開される。
【０１０２】
第２のデータ転送処理が完了した後に、第２のデータ転送処理によって初期化された物理ブロックが割り当てられた仮想ブロックへのメモリアクセスが発生した場合は、既にステップＳ４０７で保護属性が本来の属性に変更されているので、メモリアクセス例外は発生せずにメモリアクセスが実行される。
【０１０３】
第２のデータ転送処理が完了する前に当該仮想ブロックへのメモリアクセスが発生した場合もメモリアクセス例外が発生し、物理ブロックアドレスが０でないため（ステップＳ３０１でＮｏ）、ステップＳ４０６の第２のデータ転送処理が完了するまでプログラムの実行は中断され、第２のデータ転送処理の完了後に保護モードの設定が行なわれて（ステップＳ４０７）プログラムに制御が戻り、メモリアクセスが再実行される。
【０１０４】
このように、第１の読み出し要求と第１のデータ転送処理は、例外が発生した仮想ブロックの１ブロック分だけの処理であり、第１のデータ転送処理が終了した時点で例外処理が終了してプログラムに制御が戻るため、全ブロックを対象とした従来のデータ転送処理時間と比べて例外処理時間が短く済む。
【０１０５】
また、第１の読み出し要求と第２の読み出し要求は同時に発行されるが、第２のデータ転送処理はプログラムの実行とは別に非同期に処理が行なわれ、しかも連続した物理ブロックに対するデータ転送処理なので、データ転送効率を向上させることができる。このとき、データ転送処理（ＤＭＡ）は、ＣＰＵを介せず、プログラム実行と同時並行して行なわれるためにプログラム実行への影響を最小限に抑えることもできる。また、本実施の形態では、ＤＭＡコントローラ４を利用して物理ブロックの初期化を行なったが、ＤＭＡコントローラ以外の転送手段を利用して物理ブロックの初期化を行なうようにしてもよい。例えば、プログラムを実行するＣＰＵとは別のＣＰＵを転送手段として利用するようにしてもよい。
【０１０６】
上記の説明はＣＰＵを１つだけ搭載した計算機システムの例で説明したが、ＣＰＵを複数搭載するいわゆるマルチプロセッサの計算機システムの場合、第２のデータ転送処理後のメモリ割り当て部の後処理は、プログラム実行とは別のＣＰＵで処理することも可能なため、この場合はプログラム実行を中断すること無く後処理を実行することができる。
【０１０７】
また、第２の実施の形態の変形例として、次のような構成を採用することもできる。第２の実施の形態では、第２のデータ転送処理においては、例外発生仮想ブロックに引き続く連続した複数の仮想ブロックに関連するデータを、連続した複数の物理ブロックに転送するようにしたが、例外発生仮想ブロックと同一プログラムの仮想ブロックであって、ファイルシステム部２１上の連続する複数のブロックに格納されている複数の仮想ブロックに関連するデータを、連続した複数の物理ブロックに転送するようにしてもよい。なお、このようにする場合には、ステップＳ３０４において、ファイル位置情報部１５を参照して、例外発生仮想ブロックと同一のプログラムの仮想ブロックのデータを格納しているファイルシステム部２１上のブロックであって、連続した複数個のブロックを探し出す必要がある。探し出す個数は、未使用メモリ管理部１３から取得した物理ブロックアドレスの数（例えば４個）から１を引いた数（３個）となる。また、上記したようなブロックは、例えば、例外発生仮想ブロックに関連するデータが格納されているブロックの次のブロックから探し始める。また、ステップＳ４０１では、転送元を示す情報として、上記探し出した複数個のブロックのブロック番号の内、最も小さなものを指定する。
【０１０８】
［第２の実施の形態の効果］
本実施の形態は、初期化処理つまりファイルからの読み出し処理を「読み出し要求」と「データ転送処理」との２つに分け、更に、例外を起こした仮想ブロックに対する処理とそれ以外の仮想ブロックに対する処理との２つに分けて処理するようにし、データ転送処理をＤＭＡコントローラ４（転送手段）を用いて行なうようにしているので、例外発生仮想ブロックについての初期化処理が完了した後、直ちにプログラムに制御を戻すことが可能になるという効果を得ることができる。また、プログラムに制御が戻った後も、転送手段によって例外発生仮想ブロック以外の仮想ブロックに関する転送処理（第２のデータ転送処理）が行なわれるので、プログラムの実行を妨げずにデータ転送（初期化処理）を行なうことができる。また、連続した物理ブロックに対するデータ転送なので、データ転送効率を向上させることもできる。また、変形例のように、ファイルシステム部２１上の連続したブロックの情報を連続した物理ブロックに転送するようにすることにより、更に、データ転送効率を向上させることが可能なる。
【０１０９】
[第３の実施の形態]
第２の実施の形態の変形例では、例外発生仮想ブロックと同一のプログラムの仮想ブロックであって、ファイルシステム部２１上で連続するブロックに格納されている仮想ブロックを、連続した物理ブロックへ転送するようにしたが、本実施の形態は、例外発生仮想ブロックと同一のプログラムの仮想ブロックであるか否かにかかわらず、ファイルシステム部２１上の例外発生仮想ブロックに関連するデータが格納されているブロックに引き続く複数の連続したブロックに格納されているデータを連続した物理ブロックに転送するようにしたことを特徴とする。
【０１１０】
図１６を参照すると、本実施の形態にかかるメモリ管理システムは、データ処理装置１ａの代わりにデータ処理装置１ｂを備えている点が図１３に示した第２の実施の形態と相違している。
【０１１１】
データ処理装置１ｂは、メモリ割り当て部１４ａの代わりにメモリ割り当て部１４ｂを備えている点、および、キャッシュ情報部１６を備えている点でデータ処理装置１ａと相違している。
【０１１２】
キャッシュ情報部１６には、マッピングテーブル上では主記憶部３１上に存在しないことになっているが（保護属性がＮＵＬＬとなっているが）、実際には主記憶部３１上に存在する仮想ブロックに関するキャッシュ情報（その仮想ブロックが存在する物理ブロックアドレスと、その仮想ブロックに関連するファイル名およびファイル内ブロック番号）が登録されている。なお、ファイル名およびファイル内ブロック番号により、どの仮想ブロックであるかを特定することができる。
【０１１３】
図１７はキャッシュ情報部１６の一例を示した図であり、物理ブロックアドレスに関連付けて、ファイル名、ファイル内ブロック番号、および、有効ビットが登録されている。有効ビットは、そのエントリが有効であるか否かを示すものであり、本実施の形態では、「１」が有効、「０」が無効を示すものとする。ファイル名は、関連する物理ブロックアドレスに格納されているファイルのファイル名を示す。ファイル内ブロック番号は、ファイルの何番目のブロックなのかを示す。
【０１１４】
メモリ割り当て部１４ｂは、メモリアクセス例外が発生した際の例外処理において、マッピングテーブルに基づいて例外発生仮想ブロックに割り当てる物理ブロックが決定されていないと判定した場合は、上記例外発生仮想ブロックと関連するファイルのファイル名およびファイル内ブロック番号が登録されているキャッシュ情報部１６のエントリを検索し、検索できた場合には、そのエントリに設定されている物理ブロックアドレスを、マッピングテーブル上の上記例外発生仮想ブロックと対応するエントリに設定し、更に、当該エントリに上記例外発生仮想ブロック本来の保護属性を設定する。また、メモリ割り当て部１４ｂは、例外発生プログラム以外のプログラムに関連する仮想ブロックに物理ブロックを割り当てた場合は、その仮想ブロックのキャッシュ情報をキャッシュ情報部１６に格納する
【０１１５】
次に、図１８のフローチャートを参照して本実施の形態の動作について説明する。なお、図１８において図１５と同一処理を行なうステップは、同一のステップ番号を付している。
【０１１６】
本実施の形態で追加されたステップＳ５００の処理は、ステップＳ３０１において、マッピングテーブルの例外発生仮想ブロック用のエントリに登録されている物理ブロック番号が「０」であると判断され（例外発生仮想ブロックに割り当てる物理ブロックが決定されていないと判断され）、且つ、ステップＳ３０２において、メモリアクセスが正当なものであると判断された場合に実行される。
【０１１７】
ステップＳ５００では、メモリ割り当て部１４ｂは、キャッシュ情報部１６に例外発生仮想ブロックと関連するファイルのファイル名およびファイル内ブロック番号が登録されているエントリがあるか否かを調べる。具体的には、先ず、マッピング情報部１１に保持されている保護属性テーブルを参照して、例外発生仮想ブロックに関連するファイルのファイル名を求めると共に、例外発生仮想ブロックが上記ファイルの何番目のブロックであるのかを示すファイル内ブロック番号を算出する。今、例えば、例外発生仮想ブロックの仮想ブロックアドレスが０ｘ１０００、保護属性テーブルの内容が図８に示すものであるとすると、ファイル名「／ｌｉｂ／ｌｉｂｃ．ｓｏ」、ファイル内ブロック番号「１」が得られる。その後、メモリ割り当て部１４ｂは、キャッシュ情報部１６を検索し、ファイル名およびファイル内ブロック番号が「／ｌｉｂ／ｌｉｂｃ．ｓｏ」、「１」となっているエントリが存在するか否かを調べる。
【０１１８】
そして、そのようなエントリが存在しない場合、即ち例外発生仮想ブロックが主記憶部３１上に存在しない場合（ステップＳ５００がＮｏ）は、メモリ割り当て部１４ｂは、未使用メモリ管理部１３から連続した複数の物理ブロックアドレスを取得する（ステップＳ３０３）。今、例えば、０ｘ１０〜０ｘ１３の４個の連続した物理アドレスを取得したとする。
【０１１９】
その後、メモリ割り当て部１４ｂは、第２の実施の形態と同様に、ＤＭＡコントローラ４に対して第１の読み出し要求を出力する（ステップＳ４００）。今、例えば、メモリアクセス例外を発生させた仮想ブロックアドレスが０ｘ１０００で、メモリアクセス例外を発生させたプログラム用の保護属性テーブルの内容が図８に示すもので、ファイル位置情報部１５の内容が図１９に示すものであるとすると、保護属性テーブルを参照することにより、メモリアクセス例外を発生させた仮想ブロックに関連するファイルのファイル名およびファイル内ブロック番号が「／ｌｉｂ／ｌｉｂｃ．ｓｏ」「１」であることが分かり、更に、ファイル位置情報部１５を参照することにより、ファイル「／ｌｉｂ／ｌｉｂｃ．ｓｏ」の第１ブロック目はファイルシステム部２１のブロック番号「１００」のブロック上に存在することが分かるので、転送元、転送先、サイズを示す情報としてブロック番号「１００」、物理ブロックアドレス「０ｘ１０」、サイズ「１ブロック」を含む第１の読み出し要求をＤＭＡコントローラ４に対して出力することになる。即ち、「ファイルシステム部２１の第１００ブロック目から１ブロック分のデータを物理ブロックアドレス０ｘ１０に読み込むこと」を要求する読み出し要求をＤＭＡコントローラ４に対して出力することになる。
【０１２０】
その後、メモリ割り当て部１４ｂは、「ファイルシステム部２１の１０１ブロック目から３ブロック分のデータを物理ブロックアドレス０ｘ１１〜０ｘ１３へ読み込むこと」を要求する第２の読み出し要求をＤＭＡコントローラ４へ出力する（ステップＳ５０１）。ＤＭＡコントローラ４は、メモリ割り当て部１４ｂから順次入力される第１、第２の読み出し要求に従った第１、第２のデータ転送処理を行なう（ステップＳ４０２、Ｓ４０６）。
【０１２１】
そして、第１のデータ転送処理（ステップＳ４０２）が完了すると、メモリ割り当て部１４ｂは、マッピングテーブル上の例外発生仮想ブロックアドレスに対応するエントリに、例外発生仮想ブロックに割り当てた物理ブロックの物理ブロックアドレス０ｘ１０を設定すると共に、ステップＳ３００で取得した本来の保護属性「Ｒ」を設定する（ステップＳ５０２）。以上で例外処理が終了し、プログラムに制御が戻り、第２の実施の形態で説明したステップＳ４０４、Ｓ４０５と同様の処理が行なわれる。
【０１２２】
また、第２のデータ転送処理（ステップＳ４０６）が完了すると、メモリ割り当て部１４ｂは、物理ブロックを割り当てた例外発生仮想ブロック以外の仮想ブロックであって、メモリアクセス例外を発生させたプログラムの仮想ブロックについては、当該プログラム用のマッピングテーブルに、物理ブロックアドレスおよび本来の保護属性を設定し、そうでない仮想ブロックについては、キャッシュ情報部１６にその仮想ブロックに関するキャッシュ情報（その仮想ブロックに関連するファイルのファイル名およびファイル内ブロック番号と、その仮想ブロックに割り当てた物理ブロックの物理ブロックアドレス）を登録する（ステップＳ５０３）。
【０１２３】
ここで、ステップＳ５０３で行なう処理について詳しく説明する。メモリ割り当て部１４ｂは、第２のデータ転送処理において転送元とした、ファイルシステム部２１上のブロック番号１０１〜１０３のブロックそれぞれについて次のような処理を行なう。
【０１２４】
先ず、図１９に示したファイル位置情報部１５から、ブロック番号１０１のブロックに格納されているファイルのファイル名「／ｌｉｂ／ｌｉｂｍ．ｓｏ」およびファイル内ブロック番号「１」を入力する。次に、上記ファイル名「／ｌｉｂ／ｌｉｂｍ．ｓｏ」が図８に示した保護属性テーブルに登録されているか否かを調べる。ここで、登録されている場合は、上記ファイルの第１番目のブロックは、メモリアクセス例外を発生させたプログラムに関連するものなので、上記プログラム用のマッピングテーブルに物理アドレスおよび本来の保護属性を設定する。これに対して登録されていない場合は、上記ファイルの第１番目のブロックは、メモリアクセス例外を発生させたプログラムに関連するものでないので、キャッシュ情報部１６にキャッシュ情報を登録する。この例の場合、ファイル名「／ｌｉｂ／ｌｉｂｍ．ｓｏ」は、保護属性テーブルに登録されているので、マッピングテーブルに対する設定処理を行なう。具体的には、ファイル名「／ｌｉｂ／ｌｉｂｍ．ｓｏ」に対応付けられている開始ブロックアドレス「０ｘ１００５」から上記ファイルの第１ブロック目は仮想ブロックアドレス「０ｘ１００５」にマッピングすれば良いことが分かるので、マッピングテーブル上の仮想ブロックアドレス「０ｘ１００５」に対応するエントリに物理ブロックアドレス「０ｘ１１」（ステップＳ３１３で取得した４個の物理ブロックアドレスの内の２番目に小さいもの）および保護属性「ＲＷ」を設定する。
【０１２５】
次に、メモリ割り当て部１４ｂは、ブロック番号１０２のブロックを対象にして上記した処理を行なう。図１９に示したファイル位置情報部１５を参照することにより、上記ブロックには、ファイル名「／ｌｉｂ／ｌｉｂｃ．ｓｏ」のファイルの第２ブロック目が格納されていることが分かり、また、図８に示した保護属性テーブルを参照することにより、上記ファイルの第２ブロックは、仮想ブロックアドレス「０ｘ１００１」にマッピングすれば良いことが分かるので、マッピングテーブル上の仮想ブロックアドレス「０ｘ１００１」に対応するエントリに、物理ブロックアドレス「０ｘ１２」および保護属性「Ｒ］を設定する。
【０１２６】
そして、最後に、メモリ割り当て部１４ｂは、ブロック番号１０３のブロックを対象にして上記した処理を行なう。図１９に示したファイル位置情報部１５を参照することにより、上記ブロックには、ファイル名「／ｌｉｂ／ｌｉｂｚ．ｓｏ」のファイルの第１ブロック目が格納されていることが分かる。しかし、上記ファイル名は図８に示した保護属性テーブルに登録されていないので、メモリ割り当て部１４は、図１７に示すように、キャッシュ情報部１６上の物理アドレス０ｘ１３に対応したエントリに、ファイル名「／ｌｉｂ／ｌｉｂｚ．ｓｏ」、ファイル内ブロック番号「１」、有効ビット「１」を登録することになる。以上がステップＳ５０３で行なう処理の詳細である。
【０１２７】
次に、ステップＳ５００がＹｅｓとなった場合、即ち例外発生仮想ブロックが主記憶部３１上に存在する場合の動作について説明する。今、例えば、例外発生仮想ブロックに関連するファイルのファイル名が「／ｌｉｂ／ｌｉｂｚ．ｓｏ」、ファイル内ブロック番号が「１」であり、キャッシュ情報部１６の内容が図１７に示すものであるとする。この場合、上記ファイル名およびファイル内ブロック番号が設定され、且つ、有効ビットが「１」のエントリ（物理ブロックアドレスが「０ｘ１３」のエントリ）がキャッシュ情報部１６上に存在するので、ステップＳ５００の判断結果はＹｅｓとなる。このことは、メモリアクセス例外を発生させたプログラムに関連するファイルは、物理ブロックアドレス「０ｘ１３」に格納されているが、上記プログラム用のマッピングテーブルには、そのことが反映されていないことを意味している。
【０１２８】
そこで、メモリ割り当て部１４ｂは、上記プログラム用の保護属性テーブルを参照し、上記ファイルの第１番目のブロックに対応する仮想ブロックアドレスを求め、更に、上記プログラム用のマッピングテーブルのエントリの内の、上記仮想ブロックアドレスに対応するエントリに、実際にファイルが格納されている物理ブロックアドレス「０ｘ１３」を設定する。（ステップＳ５０４）。次に、メモリ割り当て部１４ｂは、マッピングテーブルの上記エントリに、ステップＳ３００で取得した本来の保護属性を設定すると共に、キャッシュ情報部１６の該当するエントリの有効ビットを「０」に変更する（ステップＳ５０５）。その後、例外発生プログラムの実行が再開される。
【０１２９】
なお、上述した実施の形態では、ステップＳ３０３で取得する物理ブロックの個数を一定数に固定にした。一般的には、論理的に１つのファイルは、ファイルシステム部２１上の連続したブロックに格納されるので、初期化する物理ブロックの個数を一定数に固定にしても、例外発生仮想ブロックと同一プログラムの仮想ブロックに上記一定数の物理ブロックが割り当てられる。しかし、論理的に１つのファイルにファイルシステム部２１上の不連続のブロックが割り当てられる場合もあり得る。このような場合に、ステップＳ３０３で取得する物理ブロックの個数を一定数に固定してしまうと、例外発生仮想ブロックとは異なるプログラムの仮想ブロックに多くの物理ブロックが割り当てられ、例外発生仮想ブロックと同一プログラムの仮想ブロックには少数の物理ブロックしか割り当てられないという事態が発生することがある。即ち、アクセスされる可能性が高い例外発生仮想ブロックと同じプログラムの仮想ブロックには少数の物理ブロックしか割り当てられず、アクセスされる可能性が低い例外発生仮想ブロックとは異なるプログラムの仮想ブロックには多くの物理ブロックが割り当てられるという事態が発生することがある。そこで、このような事態の発生を防ぐため、一定数の物理ブロックが例外発生仮想ブロックと同一プログラムの仮想ブロックに割り当てられるように、ステップＳ３０３で取得する物理ブロックの個数を可変にするようにしてもよい。このようにすることにより、アクセスされる可能性の高い仮想ブロックに物理ブロックを割り当てることが可能になる。しかし、このようにする場合には、ステップＳ３０３において、ファイル位置情報部１５を参照して、例外発生仮想ブロックのデータが格納されているブロックに引き続くブロックに格納されているデータが、例外発生仮想ブロックと同一プログラムの仮想ブロックか否かを調べる必要があるため、処理は複雑になる。
【０１３０】
［第３の実施の形態の効果］
本実施の形態では、ファイルシステム部２１上のブロックの内の、例外発生仮想ブロックに関連するデータが格納されているブロックに引き続く複数のブロックに格納されているデータをＤＭＡコントローラ４（転送手段）を利用して、連続した複数の物理ブロックに転送するようにしているので、物理ブロックの初期化のためのデータ転送効率を極めて高いものとすることができる。また、例外発生仮想ブロックとは異なるプログラムの仮想ブロックに物理ブロックを割り当てた場合は、その仮想ブロックに関するキャッシュ情報をキャッシュ情報部１６に登録しておくので、後で、その仮想ブロックがアクセスされた場合には、物理ブロックの初期化を行なわずに、その物理ブロックを利用したメモリアクセスを行なうことが可能になる。
【産業上の利用可能性】
【０１３１】
本発明によれば、複数の物理メモリブロックを割り当てた場合でも メモリアクセス例外の処理時間が短いメモリ管理方法といった用途に適用 できる。また、割り当てる物理メモリブロックは連続しているので、 効率の良いデータ転送を実現するメモリ管理方法といった用途に適用できる。 
【符号の説明】
【０１３２】
１、１ａ、１ｂ…データ処理装置
１１…マッピング情報部
１２…マッピングテーブル部
１３…未使用メモリ管理部
１４、１４ａ、１４ｂ…メモリ割り当て部
１５…ファイル位置情報部
１６…キャッシュ情報部
２…外部記憶装置
２１…ファイルシステム部
３…主記憶装置
３１…主記憶部
４…ＤＭＡコントローラ
１００…コンピュータ
２００…主記憶装置
２１０…不揮発性記憶部
２１１…ＯＳ
２１２…メモリ割り当て部
２１３…未使用メモリ管理部
２２０…揮発性記憶部
２２１…主記憶部
２２２…マッピング情報部
２２３…マッピングテーブル部
３００…ＣＰＵ
３１０…ＭＭＵ
４００…外部記憶装置
【図１】
2010257173.tif 000003
【図２】
2010257173.tif 000004
【図３】
2010257173.tif 000005
【図４】
2010257173.tif 000006
【図５】
2010257173.tif 000007
【図６】
2010257173.tif 000008
【図７】
2010257173.tif 000009
【図８】
2010257173.tif 000010
【図９】
2010257173.tif 000011
【図１０】
2010257173.tif 000012
【図１１】
2010257173.tif 000013
【図１２】
2010257173.tif 000014
【図１３】
2010257173.tif 000015
【図１４】
2010257173.tif 000016
【図１５】
2010257173.tif 000017
【図１６】
2010257173.tif 000018
【図１７】
2010257173.tif 000019
【図１８】
2010257173.tif 000020
【図１９】
2010257173.tif 000021