(57)【特許請求の範囲】
【請求項１】
アプリケーションを実行する複数のプロセッサと、
前記複数のプロセッサに共有されるメモリと、を備え、
各プロセッサは、
前記アプリケーションを実行するアプリケーション実行手段と、
前記メモリに、固定長のサブブロックサイズを有する複数のサブブロックを含むメモリブロック管理領域を設定し、
各サブブロックに、前記サブブロックに対する排他制御権が設定される排他制御権用メモリブロックと、次にアクセスされるサブブロックの開始アドレスに対する第１オフセットを記憶する第１オフセット用メモリブロックと、前記アプリケーション実行手段に割り当てられる割当用メモリブロックと、前記割当用メモリブロックのうち、前記アプリケーション実行手段に未だ割り当てられていない割当用メモリブロックの開始アドレスに対する第２オフセットを記憶する第２オフセット用メモリブロックと、を設定する初期化手段と、
前記初期化手段によって設定された前記サブブロック内の前記割当用メモリブロックのアクセス権を前記アプリケーション実行手段に割り当てるアクセス権割当手段とを有する、
ことを特徴とする固定長メモリブロック管理装置。
【請求項２】
前記アプリケーション実行手段は、前記アクセス権が解放されるメモリブロックの開始アドレスを指定し、
前記プロセッサは、前記指定されたアドレスに従ってサブブロックを特定し、前記サブブロックの排他制御権を獲得し、前記メモリブロックのアクセス権を解放するアクセス権解放手段を更に有する、請求項１に記載の固定長メモリブロック管理装置。
【請求項３】
前記アプリケーション実行手段は、前記サブブロックサイズと、サブブロック数とを指定し、
前記初期化手段は、前記指定されたサブブロックサイズを整数倍した値を開始アドレスに設定し、前記開始アドレスから前記指定されたサブブロック数分の領域を、前記メモリブロック管理領域として、前記メモリに設定する、請求項１または２に記載の固定長メモリブロック管理装置。
【請求項４】
前記初期化手段は、前記メモリブロック管理領域を、前記指定されたサブブロック数で分割することによって、前記複数のサブブロックを設定する、請求項３に記載の固定長メモリブロック管理装置。
【請求項５】
アプリケーションを実行する複数のプロセッサと、前記複数のプロセッサに共有されるメモリとを備える、マルチプロセッサシステムの固定長メモリブロック管理装置の制御方法であって、
前記メモリに、固定長のサブブロックサイズを有する複数のサブブロックを含むメモリブロック管理領域を設定し、
各サブブロックに、前記サブブロックに対する排他制御権が設定される排他制御権用メモリブロックと、次にアクセスされるサブブロックの開始アドレスに対する第１オフセットを記憶する第１オフセット用メモリブロックと、前記アプリケーション実行手段に割り当てられる割当用メモリブロックと、前記割当用メモリブロックのうち、前記アプリケーション実行手段に未だ割り当てられていない割当用メモリブロックの開始アドレスに対する第２オフセットを記憶する第２オフセット用メモリブロックと、を設定し、
前記サブブロック内の前記割当用メモリブロックのアクセス権を前記アプリケーションに割り当てる、ことを特徴とする固定長メモリブロック管理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、固定長メモリブロック管理装置及び固定長メモリブロック管理装置の制御方法に関し、特に、マルチプロセッサを備える固定長メモリブロック管理装置及び固定長メモリブロック管理装置の制御方法に関する。
【背景技術】
【０００２】
近年、複数のプロセッサとメモリから構成されるマルチプロセッサアーキテクチャを採用するマルチプロセッサシステムが知られている。
【０００３】
マルチプロセッサアーキテクチャでは、テストアンドセット命令を用いた排他制御用のメモリ領域として１バイト程度の小さなメモリブロックを動的に割り当てる必要がある。
【０００４】
従来のマルチプロセッサシステムでは、割り当てられるメモリブロックを固定長とし、メモリブロック管理領域として「排他制御用のメモリ領域」と「未使用領域の先頭へのポインタ」の組及び「次の未使用領域へのポインタ」と「アプリケーションに割り当てられるメモリ領域の実態」の組を設定し、アプリケーションに割り当てられる固定長のメモリブロックを未使用領域のポインタと接続するリンクリストによって管理される。
【０００５】
しかし、このようなマルチプロセッサシステムでは、アプリケーションに割り当てられるメモリブロック毎にメモリブロック管理領域が設定されるので、１バイト程度の小さなメモリブロックに記憶できないメモリアドレスがメモリ領域に設定され、メモリの使用効率が低下するという問題がある。
【０００６】
これに対して、特許文献１の固定長メモリブロック管理方法が知られている。特許文献１のメモリブロック管理方法は、ビットマップによって管理する。
【０００７】
しかし、特許文献１の固定長メモリブロック管理方法では、ビットマップを用いて空き領域の探索が行われるので、メモリブロック割当処理に時間を要し、マルチプロセッサシステムの処理効率が低下するという問題がある。
【０００８】
一方、従来のマルチプロセッサシステムでは、複数のプロセッサが同時にメモリブロックにアクセスすることを防ぐために、各プロセッサは、メモリブロック管理領域の排他的なアクセス権（以下、「ロック」という）を獲得する。
【０００９】
しかし、このようなマルチプロセッサシステムでは、メモリブロック管理領域全体に対してロックを獲得するので、一方のプロセッサによってロックが獲得された場合には、他方のプロセッサはロックが解除されるまで待機し、マルチプロセッサシステムの処理効率が低下するという問題がある。
【００１０】
また、このようなマルチプロセッサシステムでは、メモリブロック管理領域を動的に確保するときにメモリブロック管理領域の開始アドレスが確定せず、メモリブロックを解放するときにもメモリブロック管理領域を設定する必要があるので、アプリケーション側の設定項目が増加し、アプリケーションの負荷が増加するという問題がある。
【特許文献１】特開平８−２２１３１７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、アプリケーションの負荷を増加させることなく、メモリの使用効率及びマルチプロセッサシステムの処理効率を向上させることである。
【課題を解決するための手段】
【００１２】
本発明の第１態様によれば、
アプリケーションを実行する複数のプロセッサと、
前記複数のプロセッサに共有され、アプリケーションプログラム、初期化プログラム及びアクセス権割当プログラムを記憶するメモリと、を備え、
前記各プロセッサは、
前記アプリケーションプログラムを起動することによって前記アプリケーションを実行するアプリケーション実行手段と、
前記初期化プログラムを起動することによって、前記メモリに複数のサブブロックを含むメモリブロック管理領域を設定する初期化手段と、
前記アクセス権割当プログラムを起動することによって、前記初期化手段によって設定されたサブブロックのメモリブロックのアクセス権を前記アプリケーション実行手段に割り当てるアクセス権割当手段と、を有することを特徴とする固定長メモリブロック管理装置
が提供される。
【００１３】
本発明の第２態様によれば、
アプリケーションを実行する複数のプロセッサと、前記複数のプロセッサに共有されるメモリを備えるマルチプロセッサシステムの固定長メモリブロック管理装置の制御方法であって、
前記メモリに複数のサブブロックを含むメモリブロック管理領域を設定し、
前記複数のサブブロックうちの所定のサブブロックの排他制御権を獲得し、
当該サブブロックのメモリブロックのアクセス権を前記アプリケーションに割り当てることを特徴とする固定長メモリブロック管理装置の制御方法
が提供される。
【発明の効果】
【００１４】
本発明によれば、アプリケーションの負荷を増加させることなく、メモリの使用効率及びマルチプロセッサシステムの処理効率を向上させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施例について図面を参照して説明する。なお、以下の実施例は、本発明の実施の一形態であって、本発明の範囲を限定するものではない。
【実施例１】
【００１６】
はじめに、本発明の実施例１について説明する。
【００１７】
はじめに、本発明の実施例１に係る固定長メモリブロック管理装置１００の構成について説明する。
【００１８】
図１は、本発明の実施例１に係る固定長メモリブロック管理装置１００の構成を示すブロック図である。
【００１９】
本発明の実施例１に係る固定長メモリブロック管理装置１００は、複数のプロセッサ１０１及びメモリ１０２を備えている。
【００２０】
各プロセッサ１０１は、メモリ１０２に記憶されたアプリケーションプログラム１０２Ａを起動することによってアプリケーション実行手段１０１Ａを実現し、初期化プログラム１０２Ｂを起動することによって初期化手段１０１Ｂを実現し、アクセス権割当プログラム１０２Ｃを起動することによってアクセス権割当手段１０１Ｃを実現し、アクセス権解放プログラム１０２Ｄを起動することによってアクセス権解放手段１０１Ｄを実現する。  各プロセッサ１０１は、固有のプロセッサ識別情報Ｐ０〜Ｐｘを有する。
【００２１】
アプリケーション実行手段１０１Ａは、アプリケーションプログラム１０２Ａに従って、所定の処理を行うためのアプリケーションを実行する。
【００２２】
初期化手段１０１Ｂは、初期化プログラム１０２Ｂに従って、メモリ１０２に複数のサブブロックを含むメモリブロック管理領域を設定するための初期化処理を行う。
【００２３】
アクセス権割当手段１０１Ｃは、アクセス権割当プログラム１０２Ｃに従って、メモリブロックのアクセス権をアプリケーション実行手段１０１Ａに割り当てるアクセス権割当処理を行う。
【００２４】
アクセス権解放手段１０１Ｄは、アクセス権解放プログラム１０２Ｄに従って、アプリケーション実行手段１０１Ａによって指定されたメモリブロックのアクセス権を解放するアクセス権解放処理を行う。
【００２５】
メモリ１０２は、各プロセッサ１０１によって共有されている。メモリ１０２は、アプリケーションプログラム１０２Ａ、初期化プログラム１０２Ｂ、アクセス権割当プログラム１０２Ｃ及びアクセス権解放プログラム１０２Ｄを記憶する。メモリ１０２は、各プロセッサ１０１のワーキングメモリとしても機能する。
【００２６】
図２は、本発明の実施例１に係るメモリ１０２に設定されるメモリブロック管理領域の構造を示す概略図である。
【００２７】
メモリブロック管理領域は、連続したメモリ領域に設定された複数のサブブロック１〜ｎを含む。例えば、各サブブロックの容量（以下、「サブブロックサイズ」という）は２５６バイトである。
【００２８】
各サブブロック１〜ｎは、アプリケーション実行手段１０１Ａによって指定されたサブブロックサイズの整数倍の値を開始アドレスとする。各サブブロック１〜ｎは、排他制御権用メモリブロック、第１オフセット用メモリブロック、第２オフセット用メモリブロック及び複数の割当用メモリブロック１〜ｍを有する。例えば、各メモリブロックの容量（以下、「メモリブロックサイズ」という）は１バイトである。
【００２９】
排他制御権用メモリブロックは、排他制御権が設定されているか否かを示す値が設定されるメモリブロックである。サブブロック１の排他制御権用メモリブロックに排他制御権が与えられていることを示す値（例えば、“１”）が設定されているときには、各プロセッサ１０１の各手段１０１Ａ〜Ｄの何れかにサブブロックの排他制御権が与えられる。排他制御権が設定されている間は、排他制御権を獲得したプロセッサ１０１の各手段１０１Ａ〜Ｄの何れか１つのアクセスのみが許可される。
【００３０】
第１オフセット用メモリブロックは、次のサブブロックの開始アドレスに対するオフセット（以下、「第１オフセット」という）が設定されるメモリブロックである。
【００３１】
第２オフセット用メモリブロックは、アプリケーション実行手段１０１Ａにアクセス権が割り当てられていないメモリブロックの開始アドレスに対するオフセット（以下、「第２オフセット」という）が設定されるメモリブロックである。
【００３２】
割当用メモリブロック１〜ｍは、アクセス権が割り当てられたアプリケーション実行手段１０１Ａによってアクセスされるメモリブロックである。
【００３３】
次に、本発明の実施例１に係る固定長メモリブロック管理装置１００の動作について説明する。なお、本発明の実施例１では、固定長メモリブロック管理装置１００が３つのプロセッサ１０１（Ｐ０〜Ｐ２）を備え、サブブロックサイズが２５６バイトであり、メモリブロックサイズが１バイトである場合について例示する。
【００３４】
図３は、本発明の実施例１に係る初期化処理の処理手順を示すフローチャートである。
【００３５】
本発明の実施例１に係る初期化処理は、アプリケーション実行手段１０１Ａによってサブブロック数及びサブブロックサイズが指定された後に、初期化手段１０１Ｂによって行われる処理である。以下、アプリケーション実行手段１０１Ａによってサブブロック数３が指定された場合について例示する。
【００３６】
はじめに、初期化手段１０１Ｂは、アプリケーション実行手段１０１Ａによって指定されたサブブロックサイズを整数倍し、当該整数倍された値を開始アドレスに設定し、当該開始アドレスからアプリケーション実行手段１０１Ａによって指定されたサブブロック数分の領域（以下、「メモリブロック管理領域」という）をメモリ１０２に設定する（Ｓ３０１）。本発明の実施例１では、図４に示されるように、サブブロックサイズ２５６の整数倍（例えば、“０ｘＸＸＸＸ００００”）が開始アドレスに設定され、当該開始アドレスから２５６×３＝７６８バイトの領域がメモリ管理領域に設定される。
【００３７】
次に、初期化手段１０１Ｂは、Ｓ３０１において設定されたメモリブロック管理領域をアプリケーション実行手段１０１Ａによって指定されたサブブロック数で分割することによって複数のサブブロック１〜ｎを設定する（Ｓ３０２）。このとき、初期化手段１０１Ｂは、各サブブロック１〜ｎに固有のサブブロック識別情報Ｓ１〜Ｓｎを設定する。また、各サブブロック１〜ｎ（Ｓ１〜Ｓｎ）には、次にアクセスされるサブブロックの開始アドレスに対する第１オフセットを記憶する第１オフセット用メモリブロック、アプリケーション実行手段１０１Ａに割り当てられていないメモリブロックの開始アドレスに対する第２オフセットを記憶する第２オフセット用メモリブロック及びアプリケーション実行手段１０１Ａに割り当てられる割当用メモリブロック１〜ｍが設定される。本発明の実施例１では、図４に示されるように、サブブロック１〜３に分割され、各サブブロック１〜３（Ｓ１〜Ｓ３）が設定される。
【００３８】
次に、初期化手段１０１Ｂは、初期化サブブロックを設定する（Ｓ３０３）。本発明の実施例１では、図４に示されるように、先頭のサブブロック１が初期化サブブロックに設定される。
【００３９】
次に、初期化手段１０１Ｂは、Ｓ３０３において設定された初期化サブブロックの第１オフセット用メモリブロックに、次にアクセスされるサブブロックの開始アドレスに対するサブブロックサイズ単位の第１オフセットを設定する（Ｓ３０４）。本発明の実施例１では、図４に示されるように、サブブロック１の第１オフセット用メモリブロックにサブブロック３（Ｓ３）の開始アドレスに対する第１オフセット“２”が設定される。
【００４０】
次に、初期化手段１０１Ｂは、初期化サブブロックの全ての割当用メモリブロック１〜ｍに、初期化サブブロックの先頭アドレスから次のメモリブロックの開始アドレスに対するメモリブロックサイズ単位のオフセットを設定する（Ｓ３０５）。このとき、初期化サブブロックの終端の割当用メモリブロックｍには“ＮＵＬＬ”が設定される。本発明の実施例１では、サブブロック１の割当用メモリブロック１〜２５２に値“４”〜“２５５”が設定され、サブブロック１の割当用メモリブロック２５３に値“ＮＵＬＬ”が設定される。
【００４１】
次に、初期化手段１０１Ｂは、初期化サブブロックの第２オフセット用メモリブロックに、初期化サブブロックの開始アドレスからアクセス権が割り当てられていない割当用メモリブロック（以下、「未割当メモリブロック」という）のうち先頭の未割当メモリブロックの開始アドレスに対するオフセット（以下、「第２オフセット」という）を設定する（Ｓ３０６）。本発明の実施例１では、図４に示されるように、サブブロック１（Ｓ１）の第２オフセット用メモリブロックに値“３”が設定される。
【００４２】
次に、全てのサブブロックの初期化が終了していない場合には（Ｓ３０７−ＮＯ）、初期化手段１０１Ｂは、次にアクセスされるサブブロックを初期化サブブロックに設定する（Ｓ３０８）。本発明の実施例１では、図４に示されるように、サブブロック３（Ｓ３）が初期化ブロックに設定される。
【００４３】
次に、初期化手段１０１Ｂは、Ｓ３０８において設定された初期化サブブロックの第１オフセット用メモリブロックにサブブロックサイズを単位とする第１オフセットを設定し、Ｓ３０５へ進む（Ｓ３０９）。本発明の実施例１では、図４に示されるように、サブブロック３の第１オフセット用メモリブロックに直前のサブブロック２（Ｓ２）の開始アドレスに対する第１オフセット“−１”が設定される。
【００４４】
一方、全てのサブブロックの初期化が終了した場合には（Ｓ３０７−ＹＥＳ）、メモリブロック管理領域の開始アドレスをアプリケーション実行手段１０１Ａに出力する（Ｓ３１０）。本発明の実施例１では、サブブロック３（Ｓ３）に続いてサブブロック２（Ｓ２）の初期化が終了した場合には、図４に示されるように、アドレス“０ｘＸＸＸＸ００００”が出力される。
【００４５】
本発明の実施例１に係る初期化処理は、Ｓ３１０の後に終了する。
【００４６】
図５は、本発明の実施例１に係るアクセス権割当処理の処理手順を示すフローチャートである。
【００４７】
本発明の実施例１に係るアクセス権割当処理は、初期化処理が行われた後に、アクセス権割当手段１０１Ｃによって行われる処理である。本発明の実施例１では、識別情報Ｐ１を有するプロセッサ１０１（Ｐ１）がアクセス権割当手段１０１Ｃを実現する場合について例示する。
【００４８】
はじめに、アクセス権割当手段１０１Ｃは、メモリ管理領域のサブブロック数を算出する（Ｓ５０１）。本発明の実施例１では、先頭のサブブロック１の第１オフセット用メモリブロックの値“２”に１を加算するサブブロック数３を算出する。
【００４９】
次に、アクセス権割当手段１０１Ｃは、アプリケーションプログラム１０２Ａを起動したプロセッサ１０１の識別情報を獲得する（Ｓ５０２）。本発明の実施例１では、識別情報Ｐ１が獲得される。
【００５０】
次に、Ｓ５０２において獲得されたプロセッサ識別情報の数字部分をＳ５０１において算出されたサブブロック数で割ったときの余り（ａ）を算出する（Ｓ５０３）。本発明の実施例１では、ａ＝１／３＝１が算出される。
【００５１】
次に、サブブロック識別情報にＳ５０３において算出されたａに対応するサブブロックａ（Ｓａ）をアプリケーション実行手段１０１Ａによって最初にアクセスされるサブブロック（以下、「割当サブブロック」という）に設定する（Ｓ５０４）。本発明の実施例１では、サブブロック１（Ｓ１）が割当サブブロックに設定される。
【００５２】
次に、アクセス権割当手段１０１Ｃは、割当サブブロックの排他制御権を獲得する（Ｓ５０５）。このとき、アクセス権割当手段１０１Ｃは、割当サブブロックの排他制御権用メモリブロックに排他制御権が与えられていることを示す値（例えば、“１”）を設定する。本発明の実施例１では、図６（Ａ）に示されるように、サブブロック１（Ｓ１）の排他制御権用メモリブロックに値“１”が設定される。
【００５３】
次に、アクセス権割当手段１０１Ｃは、割当サブブロックの第２オフセット用メモリブロックに設定された第２オフセットを読み出す（Ｓ５０６）。
【００５４】
ここで、本発明の実施例１では、サブブロック１（Ｓ１）の全ての割当用メモリブロック（割当用メモリブロック１〜２５３）が割当済のときに、図６（Ｂ）に示されるように、サブブロック１（Ｓ１）の第２オフセット用メモリブロックの値“ＮＵＬＬ”が読み出される。
【００５５】
すなわち、Ｓ５０６において読み出された第２オフセットがＮＵＬＬであるので（Ｓ５０７−ＹＥＳ）、アクセス権割当手段１０１Ｃは、Ｓ５０５において獲得された割当サブブロックの排他制御権を解放する（Ｓ５０８）。このとき、アクセス権割当手段１０１Ｃは、割当サブブロックの排他制御権用メモリブロックに設定された値を削除する。
【００５６】
次に、アクセス権割当手段１０１Ｃは、割当サブブロックの第１オフセット用メモリブロックに設定された第１オフセットを読み出す（Ｓ５０９）。本発明の実施例１では、図６（Ｂ）に示されるように、サブブロック１（Ｓ１）の第１オフセット用メモリブロックの値“２”が読み出される。
【００５７】
次に、アクセス権割当手段１０１Ｃは、次にアクセスされるサブブロックの開始アドレスを算出する（Ｓ５１０）。本発明の実施例１では、サブブロック３（Ｓ３）の開始アドレス“０ｘＸＸＸＸ０２００”が算出される。
【００５８】
次に、アクセス権割当手段１０１Ｃは、Ｓ５１０において開始アドレスが算出されたサブブロックを割当サブブロックに設定し、Ｓ５０５へ進む（Ｓ５１１）。本発明の実施例１では、サブブロック３（Ｓ３）が割当サブブロックに設定される。
【００５９】
一方、本発明の実施例１では、サブブロック１（Ｓ１）の割当用メモリブロック（割当用メモリブロック１〜２５３）の割当用メモリブロック１が未割当のとき、図６（Ａ）に示されるように、Ｓ５０６でサブブロック１（Ｓ１）の第２オフセット用メモリブロックの値“３”が読み出される。
【００６０】
すなわち、Ｓ５０６において読み出された第２オフセットがＮＵＬＬでないので（Ｓ５０７−ＮＯ）、アクセス権割当手段１０１Ｃは、割当サブブロックに設定されたサブブロックの開始アドレス及びＳ５０６において読み出された第２オフセット用メモリブロックの値を用いて先頭の未割当メモリブロックの開始アドレスを算出する（Ｓ５１２）。本発明の実施例１では、図６（Ａ）に示されるように、サブブロック１（Ｓ１）の開始アドレス“０ｘＸＸＸＸ００００”とサブブロック１（Ｓ１）の第２オフセット用メモリブロックの値“３”を加算し、アドレス“０ｘＸＸＸＸ０００３”が算出される。
【００６１】
次に、アクセス権割当手段１０１Ｃは、Ｓ５１２において算出された開始アドレスが示す未割当メモリブロックの値を獲得する（Ｓ５１３）。本発明の実施例１では、図６（Ａ）に示されるように、アドレス“０ｘＸＸＸＸ０００３”を開始アドレスとする割当用メモリブロック１の値“４”が獲得される。
【００６２】
次に、アクセス権割当手段１０１Ｃは、Ｓ５１３において獲得された未割当メモリブロックの値を割当サブブロックの第２オフセット用メモリブロックに設定する（Ｓ５１４）。本発明の実施例１では、図６（Ａ）に示されるように、サブブロック１（Ｓ１）の第２オフセット用メモリブロックに値“４”が設定される。
【００６３】
次に、アクセス権割当手段１０１Ｃは、Ｓ５０５において獲得された割当サブブロックの排他制御権を解放する（Ｓ５０８）。このとき、アクセス権割当手段１０１Ｃは、割当サブブロックの排他制御権用メモリブロックに設定された値を削除する。
【００６４】
次に、アクセス権割当手段１０１Ｃは、Ｓ５１２において算出された開始アドレスをアプリケーション実行手段１０１Ａに出力する（Ｓ５１６）。本発明の実施例１では、図６（Ａ）に示されるように、アドレス“０ｘＸＸＸＸ０００３”が出力される。
【００６５】
本発明の実施例１に係るアクセス権割当処理は、Ｓ５１６の後に終了する。
【００６６】
なお、本発明の実施例１に係るアクセス権割当処理は、複数のプロセッサ１０１（Ｐ０〜Ｐｘ）によって並行に行われても良い。
【００６７】
図７は、本発明の実施例１に係るアクセス権解放処理の処理手順を示すフローチャートである。
【００６８】
本発明の実施例１に係るアクセス権解放処理は、アプリケーションの実行が終了した後に、アクセス権解放手段１０１Ｄによって行われる処理である。なお、アプリケーション実行手段１０１Ａは、アプリケーションの実行を終了するときに、アクセス権が解放されるメモリブロック（以下、「解放メモリブロック」という）の開始アドレスを指定する。なお、本発明の実施例１では、解放メモリブロックがサブブロック１（Ｓ１）の割当用メモリブロック１である場合について例示する。
【００６９】
はじめに、アクセス権解放手段１０１Ｄは、解放メモリブロックの開始アドレスをサブブロックサイズで割ったときの余り（ｂ）を算出する（Ｓ７０１）。本発明の実施例１では、図８に示されるように、ｂ＝０ｘＸＸＸＸ０００３ｍｏｄ２５６＝３が算出される。
【００７０】
次に、アクセス権解放手段１０１Ｄは、解放メモリブロックの開始アドレスとＳ７０１において算出されたｂとの差（ｃ）を算出する（Ｓ７０２）。本発明の実施例１では、図８に示されるように、ｃ＝０ｘＸＸＸＸ０００３−３＝０ｘＸＸＸＸ００００が算出される。
【００７１】
アクセス権解放手段１０１Ｄは、Ｓ７０２において算出されたｃを開始アドレスとするサブブロックを解放サブブロックとして特定する（Ｓ７０３）。本発明の実施例４では、図８に示されるように、サブブロック１（Ｓ１）が解放サブブロックに特定される。
【００７２】
次に、アクセス権解放手段１０１Ｄは、Ｓ７０３において特定された解放サブブロックの排他制御権を獲得する（Ｓ７０４）。このとき、アクセス権解放手段１０１Ｄは、解放サブブロックの排他制御権用メモリブロックに排他制御権が与えられていることを示す値（例えば、“１”）を設定する。本発明の実施例１では、図８に示されるように、サブブロック１（Ｓ１）の排他制御権用メモリブロックに値“１”が設定される。
【００７３】
次に、アクセス権解放手段１０１Ｄは、解放サブブロックの第２オフセット用メモリブロックに設定された第２オフセットを読み出す（Ｓ７０５）。本発明の実施例１では、図８に示されるように、サブブロック１（Ｓ１）の第２オフセット用メモリブロックの値“４”が読み出される。
【００７４】
次に、アクセス権解放手段１０１Ｄは、Ｓ７０３において読み出された第２オフセットを解放メモリブロックに設定する（Ｓ７０６）。本発明の実施例１では、図８に示されるように、サブブロック１（Ｓ１）の割当用メモリブロック１に値“４”が設定される。
【００７５】
次に、アクセス権解放手段１０１Ｄは、解放サブブロックの開始アドレスから解放メモリブロックの開始アドレスに対するオフセットを算出し、当該算出されたオフセットを第２オフセット用メモリブロックに設定する（Ｓ７０７）。本発明の実施例１では、図８に示されるように、サブブロック１（Ｓ１）の第２オフセット用メモリブロックに値“３”が設定される。
【００７６】
次に、アクセス権解放手段１０１Ｄは、Ｓ７０４において獲得された排他制御権を解放する（Ｓ７０８）。このとき、アクセス権解放手段１０１Ｄは、解放サブブロックの排他制御権用メモリブロックに設定された値を削除する。
【００７７】
本発明の実施例１に係るアクセス権解放処理は、Ｓ７０８の後に終了する。
【００７８】
なお、本発明の実施例１に係るアクセス権解放処理は、複数のプロセッサ１０１（Ｐ０〜Ｐｘ）によって並行に行われても良い。
【００７９】
本発明の実施例１によれば、プロセッサ識別情報に基づいて割当メモリブロックが特定されることによって各プロセッサ１０１のアクセスが分散されるので、排他制御権が設定されている間の待ち時間が短縮され、アプリケーションの負荷を増加させることなく、メモリの使用効率及びマルチプロセッサシステムの処理効率を向上させることができる。
【００８０】
また、本発明の実施例１によれば、次にアクセスされる未割当メモリブロックの開始アドレスに対するオフセットが未割当メモリブロックに設定されるので、メモリの使用効率を向上させることができる。
【００８１】
また、本発明の実施例１によれば、次にアクセスされる割当メモリブロックがサブブロックの開始アドレスからのオフセットによって示されるので、メモリブロックサイズの大きさに関わらず、管理することができる。
【００８２】
また、本発明の実施例１によれば、同一のメモリ管理領域へのアクセスが同時に発生した場合であっても、アクセスされるサブブロックが異なる場合には排他制御権が設定されている間の待ち時間が発生しないので、マルチプロセッサシステムの処理効率を向上させることができる。
【００８３】
また、本発明の実施例１によれば、サブブロックの開始アドレスがサブブロックサイズの整数倍の値であるので、アクセス権解放処理におけるアプリケーション実行手段１０１の指定項目を低減することができ、ひいては、メモリの使用効率を向上させることができる。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施例１に係る固定長メモリブロック管理装置１００の構成を示すブロック図である。
【図２】本発明の実施例１に係るメモリ１０２に設定されるメモリブロック管理領域の構造を示す概略図である。
【図３】本発明の実施例１に係る初期化処理の処理手順を示すフローチャートである。
【図４】本発明の実施例１に係る初期化処理におけるメモリブロック管理領域の構造を示す概略図である。
【図５】本発明の実施例１に係るアクセス権割当処理の処理手順を示すフローチャートである。
【図６】本発明の実施例１に係るアクセス権割当処理におけるメモリブロック管理領域の構造を示す概略図である。
【図７】本発明の実施例１に係るアクセス権解放処理の処理手順を示すフローチャートである。
【図８】本発明の実施例１に係るアクセス権解放処理におけるメモリブロック管理領域の構造を示す概略図である。
【符号の説明】
【００８５】
１００  固定長メモリブロック管理装置
１０１〜１０Ｚ  プロセッサ
１０１Ａ  アプリケーション実行手段
１０１Ｂ  初期化手段
１０１Ｃ  アクセス権割当手段
１０１Ｄ  アクセス権解放手段
１０２  メモリ
１０２Ａ  アプリケーションプログラム
１０２Ｂ  初期化プログラム
１０２Ｃ  アクセス権割当プログラム
１０２Ｄ  アクセス権解放プログラム
【図１】
0005270924.tif 000002
【図２】
0005270924.tif 000003
【図３】
0005270924.tif 000004
【図４】
0005270924.tif 000005
【図５】
0005270924.tif 000006
【図６】
0005270924.tif 000007
【図７】
0005270924.tif 000008
【図８】
0005270924.tif 000009