(57)【特許請求の範囲】
【請求項１】
メモリの物理アドレスを複数の論理アドレスへ対応付けるメモリ管理装置であって、
複数の論理アドレス空間と複数のモジュールとの対応関係を示す第１の定義に基づいて、複数の論理アドレス空間のそれぞれにモジュールを配置する配置手段と、
複数のモジュールの物理アドレスを示すモジュール情報に基づいて、前記配置手段によりモジュールが配置された論理アドレス空間の論理アドレスへ物理アドレスを対応付けるマッピング手段と、
タスクの切り換え指示に応答して、前記マッピング手段により対応付けられた前記複数の論理アドレス空間の切り換えを行う論理アドレス空間切り換え手段とを備えたことを特徴とするメモリ管理装置。
【請求項２】
前記第１の定義は、前記複数の論理アドレス空間にそれぞれ所属するセクションを定義する空間定義と、各セクションに所属する一または複数のモジュールを定義するセクション定義とを含むことを特徴とする請求項１記載のメモリ管理装置。
【請求項３】
前記論理アドレス空間切り換え手段は、前記複数の論理アドレス空間のそれぞれに複数のタスクのいずれかを対応付ける第２の定義に基づいて、前記複数の論理アドレス空間の切り換えを行うことを特徴とする請求項１または２記載のメモリ管理装置。
【請求項４】
前記マッピング手段の対応付けに応じて論理アドレスと物理アドレスとの間のアドレス変換を行うアドレス変換手段と、
周辺装置からのメモリアクセス要求を受け付ける要求受付手段と、
前記要求受付手段がメモリアクセス要求を受け付けた場合、前記アドレス変換手段によって物理アドレスと論理アドレスとの間のアドレス変換が可能な状態のときには、前記アドレス変換手段を用いて論理アドレスに基づくメモリアクセスを行い、前記アドレス変換手段によるアドレス変換が不可能な状態のときには、物理アドレスに基づくメモリアクセスを行うメモリアクセス手段とをさらに備えたことを特徴とする請求項１〜３のいずれかに記載のメモリ管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチタスクシステムで用いられるメモリ管理装置に関するものである。
【０００２】
【従来の技術】
近年、読み出し専用メモリ（ＲＯＭ）にプログラムコードを配置した、いわゆる組み込み型マイクロコンピュータ制御システムにおいて、対象システムの複雑化に伴いプログラムサイズが増大しており、マルチタスクシステムを構成することが通例となっている。マルチタスクシステムにおいて、あるタスクが他のタスクで用いられる記憶情報を破壊するようなバグを持っている場合、バグの追求は非常に困難なため、解決に膨大な時間を要する。
【０００３】
最近の機器組み込み用マイクロプロセッサには、実行段階で機能する保護機構が搭載されつつある。そこで、上記のような問題を解決するため、そのような保護機構を利用して、バグが発生しうるプログラムを非特権モードで動作させ、バグが発生しえないプログラムを特権モードで動作させることによってマルチタスクシステムの誤動作を防止する方法が考えられる。
【０００４】
しかし、この方法では各プログラムを特権モードおよび非特権モードのいずれで動作させるかを決定することが困難である。また、同じモードで動作するプログラム同士は互いに破壊することができるため、完全に問題を解決することはできない。
【０００５】
また、ワークステーションやパーソナルコンピュータ等のコンピュータの分野では、メモリ管理装置（ＭＭＵ）を利用して各タスクを別の論理アドレス空間で動作させ、タスク間でメモリに直接アクセスできないようにすることによってこの問題を解決しているものがある。最近の機器組み込み用マイクロプロセッサの中にはメモリ管理装置を搭載しているものもあるため、このようなマイクロプロセッサでは、上記の問題を解決するためにコンピュータと同じようにタスク間でメモリに直接アクセスできないように構成することが考えられる。
【０００６】
しかし、組み込み型マイクロコンピュータ制御システムでは、多くのタスクがコードやデータを共有して密接に協調して動作するため、機器組み込み用マイクロプロセッサにおいては、別々の論理アドレス空間にタスクを分割することは非常に困難である。
【０００７】
ただし、同じ問題はコンピュータの分野にも存在し、従来のメモリ管理装置においては、タスク間で直接アクセス可能な共有メモリを実現している。
【０００８】
図９は例えば特開平７−９３２１０号公報に記載されている共有メモリ管理方式を用いて共有メモリを実現するための従来のメモリ管理装置の一構成例を示すブロック図である。
【０００９】
図９に示すメモリ管理装置８００は、メモリ領域情報８０１および空間情報８０２を保持している。メモリ領域情報８０１には、メモリ領域を識別するためのメモリ領域識別子とそのメモリ領域識別子が示すメモリ領域のメモリサイズ等のメモリ領域に関する情報とがメモリ領域ごとに記述されている。空間情報８０２には、論理アドレス空間を識別するための空間識別子とその空間識別子が示す論理アドレス空間に属するメモリ領域とが論理アドレス空間ごとに記述されている。
【００１０】
このメモリ管理装置８００は、アドレス変換表８０３、マッピング手段８０４およびアドレス変換表切り換え手段８０５を備える。マッピング手段８０４は、アドレス変換表８０３を作成することによってメモリ領域を論理アドレス空間にマッピングする。アドレス変換表８０３は、各論理アドレス空間ごとに設けられ、物理アドレスと論理アドレスとの間の変換を行う際に物理アドレスと論理アドレスとの対応関係を指示する。アドレス変換表切り換え手段８０５は、タスクを切り換える時にアドレス変換表８０３を切り換えることによって論理アドレス空間を切り換える。
【００１１】
図９に示す従来のメモリ管理装置８００においては、タスクが発行する共有メモリのマッピング要求に応じてマッピング手段８０４が起動される。マッピング手段８０４は、マッピングすべき共有メモリについてメモリ領域情報８０１を参照し、マッピングすべき論理アドレス空間について空間情報８０２を参照し、そしてアドレス変換表８０３を作成することによって、共有メモリのメモリ領域を論理アドレス空間にマッピングする。さらに、別のタスクで共有メモリのマッピング要求が発行された場合にも、図９のメモリ管理装置８００は、同様の処理を行う。このように、複数のタスク間で共有可能なメモリ領域を論理アドレス空間にマッピングすることによって、アドレス変換表切り換え手段８０５が論理アドレス空間を切り換えてもメモリ領域を共有することが可能となる。
【００１２】
【発明が解決しようとする課題】
しかしながら、上記のように構成された従来のメモリ管理装置８００においては、タスクからの要求によって確保して共有しているメモリ領域では、各タスクが動的に確保してアクセスするバッファメモリやデータ構造に関してタスク間で共有できるのみであるため、プログラムで直接記述したコードやデータについては共有することができず、問題の解決にはならない。
【００１３】
本発明の目的は、プログラムを変更することなく必要なモジュールのみ必要なタスク間で共有させ、それ以外はタスク間でメモリに直接アクセスできず、メモリに記憶されているタスクの内容が破壊されるのを防止して信頼性の高いシステムを容易に構築することができるメモリ管理装置を提供することである。
【００１４】
【課題を解決するための手段】
（１）第１の発明
第１の発明に係るメモリ管理装置は、メモリの物理アドレスを複数の論理アドレスへ対応付けるメモリ管理装置であって、複数の論理アドレス空間を複数のモジュールとの対応関係を示す第１の定義に基づいて、複数の論理アドレス空間のそれぞれにモジュールを配置する配置手段と、複数のモジュールの物理アドレスを示すモジュール情報に基づいて、配置手段によりモジュールが配置された論理アドレス空間の論理アドレスへ物理アドレスを対応付けるマッピング手段と、タスクの切り換え指示に応答して、マッピング手段により対応付けられた複数の論理アドレス空間の切り換えを行う論理アドレス空間切り換え手段とを備えたものである。
【００１５】
本発明に係るメモリ管理装置においては、配置手段により第１の定義に基づいて複数の論理アドレス空間のそれぞれにモジュールが配置され、配置された論理アドレス空間の論理アドレスへ物理アドレスがモジュール情報に基づいてマッピング手段により対応付けられる。そのため、切り換え手段によりタスクの切り換え指示に応答して論理アドレス空間の切り換えが行われれば、切り換え前後の論理アドレス空間とモジュールとの対応関係がそれぞれ第１の定義に示されているように定まる。したがって、異なるタスクにおいて必要とされる同一のモジュールが第１の定義により異なるタスクに共通に対応することが示されていればその同一のモジュールは共有することができる。しかし、共有されるモジュール以外のモジュールは、異なるタスクの一方にのみ対応することが第１の定義で示されているので共有されない。それにより、必要なモジュール以外は異なるタスク間でメモリに直接アクセスすることを禁止し、必要なモジュールのみ異なるタスク間で共有させることができる。
【００１６】
（２）第２の発明
第２の発明に係るメモリ管理装置は、第１の発明に係るメモリ管理装置の構成において、第１の定義は、複数の論理アドレス空間にそれぞれ所属するセクションを定義する空間定義と、各セクションに所属する一または複数のモジュールを定義するセクション定義とを含むものである。
【００１７】
この場合、論理アドレス空間でのモジュールの配置は、配置手段によりモジュールの集合を示すセクション単位で決定される。そのため、モジュールが属するセクションごとにモジュールの取り扱い規定を別々に設けることができ、同じ機能を持ちながら異なる取り扱い規定としなければならないモジュールを、取り扱い規定の異同に係わらず、複数のタスク間で共有することができるようになる。
【００１８】
（３）第３の発明
第３の発明に係るメモリ管理装置は、第１または第２の発明に係るメモリ管理装置の構成において、論理アドレス空間切り換え手段は、複数の論理アドレス空間のそれぞれに複数のタスクのいずれかを対応付ける第２の定義に基づいて、複数の論理アドレス空間の切り換えを行うものである。
【００１９】
この場合、論理アドレス空間切り換え手段により、論理アドレス空間とモジュールとの対応関係を規定しない第２の定義に基づきタスクの切り換え指示に応じた論理アドレス空間の切り換えが行われる。そのため、タスク切り換え時にタスクの切り換え前後で論理アドレス空間が同じ場合には、論理アドレス空間の切り換えを行わないようにすることができる。すなわち、異なるタスク間で同一の論理アドレス空間全体を共有することができる。
【００２０】
（４）第４の発明
第４の発明に係るメモリ管理装置は、第１〜第３のいずれかの発明に係るメモリ管理装置の構成において、対応付けに応じて論理アドレスと物理アドレスとの間のアドレス変換を行うアドレス変換手段と、周辺装置からのメモリアクセス要求を受け付ける要求受付手段と、要求受付手段がメモリアクセス要求を受け付けた場合、アドレス変換手段によって物理アドレスと論理アドレスとの間のアドレス変換が可能な状態のときには、アドレス変換手段を用いて論理アドレスに基づくメモリアクセスを行い、アドレス変換手段によるアドレス変換が不可能な状態のときには、物理アドレスに基づくメモリアクセスを行うメモリアクセス手段とをさらに備えたものである。
【００２１】
この場合、デバッガからのメモリアクセス要求を要求受付手段が受け付けた場合、メモリアクセス手段によりアドレス変換手段のアドレス変換が可能なときには論理アドレスに基づくメモリアクセスが行われ、不可能なときには物理アドレスに基づくメモリアクセスが行われる。そのため、アドレス変換手段の状態によらずメモリアクセスを行うことができ、例えばアドレス変換手段のマッピングが終了していないためアドレス変換手段が動作することができなくても周辺装置からのメモリアクセス要求に対し矛盾なく対応することができる。
【００２２】
【発明の実施の形態】
（実施の形態１）
以下、本発明の実施の形態１におけるメモリ管理装置について説明する。図１は、実施の形態１におけるメモリ管理装置の一構成例を示すブロック図である。
【００２３】
図１のメモリ管理装置１００は、複数のモジュール情報１０１、複数のセクション定義１０２および複数の空間定義１０３を保持している。
【００２４】
モジュール情報１０１は、モジュールを識別するためのモジュール識別子と、そのモジュール識別子が示すモジュールのコードやデータのサイズ等のプログラムに関する情報とをモジュールごとに記述している。
【００２５】
また、セクション定義１０２は、セクションを識別するためのセクション識別子と、そのセクション識別子が示すセクションに所属する１つまたは複数のモジュールを識別するためのモジュール識別子とをセクションごとに定義する。
【００２６】
さらに、空間定義１０３は、論理アドレス空間を識別するための空間識別子と、その空間識別子が示す論理アドレス空間に所属する１つまたは複数のセクションを識別するためのセクション識別子と、その空間識別子が示す論理アドレス空間に切り換えるタスクを識別するタスク識別子とを論理アドレス空間ごとに定義する。
【００２７】
メモリ管理装置１００は、配置手段１０４、複数のアドレス変換表１０５、マッピング手段１０６およびアドレス変換表切り換え手段１０７を備える。
【００２８】
配置手段１０４は、モジュール情報１０１とセクション定義１０２と空間定義１０３とに基づき、複数の論理アドレス空間のそれぞれに所属するセクションを読み取り、複数の論理アドレス空間のそれぞれのセクションについてモジュールの配置を決定する。すなわち、配置手段１０４は、複数の論理アドレス空間のそれぞれにおいてモジュールの配置を決定する。
【００２９】
マッピング手段１０６は、アドレス変換表１０５を作成することによって、論理アドレス空間ごとに配置されているモジュールについて論理アドレスと物理アドレスとの対応関係を決定するためのマッピングを行う。
【００３０】
複数のアドレス変換表１０５のそれぞれは、複数の論理アドレス空間の中の１つと一対一に対応しており、そのためそれぞれ複数のタスクの中の１つと一対に一に対応しており、対応する論理アドレス空間（タスク）における論理アドレスと物理アドレスとの対応関係を示している。
【００３１】
アドレス変換表切り換え手段１０７は、タスクの切り換え指示に応じて、アドレス変換表１０５を切り換える。アドレス変換表１０５が論理アドレス空間と一対一に対応していることからアドレス変換表１０５の切り換えは論理アドレス空間の切り換えを意味する。
【００３２】
なお、配置手段１０４、マッピング手段１０６およびアドレス変換表切り換え手段１０７は、ＣＰＵ（中央演算処理装置）がＲＯＭ（リードオンリメモリ）等の記憶装置に記憶されたプログラムをＲＡＭ（ランダムアクセスメモリ）等のメモリ上で実行することにより実現される。また、モジュール情報１０１、セクション定義１０２および空間定義１０３は、ファイルとしてＲＯＭ、ハードディスク装置等の記憶装置に予め記憶される。さらに、アドレス変換表１０５は、マッピング手段１０６により作成された後、ＲＡＭ、ハードディスク装置等の記憶装置に格納される。
【００３３】
図２は、メモリ管理装置１００が保持しているモジュール情報１０１、セクション定義１０２および空間定義１０３の一例を示す概念図である。図３は、メモリ管理装置１００が行ったマッピングの一例を示す概念図である。
【００３４】
図２のモジュール情報１０１には、「モジュール１」、「モジュール２」および「モジュール３」というモジュールをそれぞれ示すモジュール識別子２１１〜２１３と、各モジュール識別子２１１〜２１３が示すモジュールのコードアドレス、コードサイズ、データアドレスおよびデータサイズとが記述されている。
【００３５】
セクション定義１０２には、「セクション１」、「セクション２」および「セクション３」というセクションをそれぞれ示すセクション識別子２２１〜２２３と、各セクション識別子２２１〜２２３が示すセクションにそれぞれ属する「モジュール１」、「モジュール２」および「モジュール３」というモジュールをそれぞれ示すモジュール識別子２１１〜２１３とが定義されている。
【００３６】
空間定義１０３には、「空間１」および「空間２」という論理アドレス空間をそれぞれ示す空間識別子２３１，２３２と、各空間識別子２３１，２３２が示す論理アドレス空間に属する「セクション１」、「セクション２」および「セクション３」というセクションをそれぞれ示すセクション識別子２２１〜２２３と、各空間識別子２３１，２３２が示す論理アドレス空間が属する「タスク１」および「タスク２」というタスクをそれぞれ示すタスク識別子２４１，２４２とが定義されている。
【００３７】
図２に示すモジュール情報１０１とセクション定義１０２と空間定義１０３とを用いて、空間識別子２３１，２３２で示される「空間１」および「空間２」という論理アドレス空間について、それぞれ表１および表２に示すアドレス変換表を作成することによって、図３に示すマッピングを行う。
【００３８】
【表１】
0004331325.tif 000002
【００３９】
【表２】
0004331325.tif 000003
【００４０】
なお、図３においては、２つの論理アドレス空間ＬＡ，ＬＢと物理アドレス空間ＰＳとの対応関係が示されている。本例では、論理アドレス空間ＬＡが「空間１」に相当し、論理アドレス空間ＬＢが「空間２」に相当する。
【００４１】
図３に示すマッピングを行うために、メモリ管理装置１００はシステム初期化時に、マッピング手段１０６を起動する。起動されたマッピング手段１０６は、さらに配置手段１０４を起動する。
【００４２】
配置手段１０４は、空間定義１０３を参照し、空間識別子２３１により示される「空間１」という論理アドレス空間にセクション識別子２２１により示される「セクション１」が所属することを読み取る。
【００４３】
次に配置手段１０４は、セクション定義１０２を参照し、セクション識別子２２１により示される「セクション１」にモジュール識別子２１１により示される「モジュール１」が所属することを読み取る。
【００４４】
さらに、配置手段１０４は、モジュール情報１０１を参照し、モジュール識別子２１１により示される「モジュール１」のコードアドレス、コードサイズ、データアドレスおよびデータサイズを読み取る。そして、配置手段１０４は、モジュール識別子２１１により示される「モジュール１」のコードアドレスおよびデータアドレスを、空間識別子２３１により示される「空間１」という論理アドレス空間上に配置する。それにより、「モジュール１」が「空間１」に配置される。
【００４５】
次に、配置手段１０４は、空間識別子２３１により示される「空間１」という論理アドレス空間にセクション識別子２２２により示される「セクション２」が所属することを読み取り、「セクション１」の場合と同様に、空間定義１０３とセクション定義１０２とモジュール情報１０１に基づき、モジュール識別子２１２により示される「モジュール２」のコードアドレスとデータアドレスとを空間識別子２３１により示される「空間１」という論理アドレス空間上に配置する。それにより、「モジュール２」が「空間１」に配置される。
【００４６】
同様に、配置手段１０４は、空間定義１０３を参照し、空間識別子２３２により示される「空間２」という論理アドレス空間にセクション識別子２２２により示される「セクション２」が所属することを読み取り、空間定義１０３とセクション定義１０２とモジュール情報１０１に基づき、モジュール識別子２１２に示される「モジュール２」のコードアドレスとデータアドレスとを空間識別子２３２により示される「空間２」という論理アドレス空間上に配置する。それにより、「モジュール２」が「空間２」に配置される。
【００４７】
また、配置手段１０４は、空間定義１０３を参照し、空間識別子２３２により示される「空間２」という論理アドレス空間にセクション識別子２２３により示される「セクション３」が所属することを読み取り、空間定義１０３とセクション定義１０２とモジュール情報１０１に基づき、モジュール識別子２１３により示される「モジュール３」のコードアドレスとデータアドレスとを空間識別子２３２により示される「空間２」という論理アドレス空間上に配置する。それにより、「モジュール３」が「空間２」に配置される。
【００４８】
マッピング手段１０６は、空間識別子２３１により示される「空間１」という論理アドレス空間において、配置手段１０４によってコードアドレスおよびデータアドレスが配置された論理アドレスに物理アドレスを対応させ、表１に示すアドレス変換表１０５を作成する。
【００４９】
次に、マッピング手段１０６は、空間識別子２３２により示される「空間２」という論理アドレス空間において、配置手段１０４によってコードおよびデータが配置された論理アドレスに物理アドレスを対応させ、表２に示すアドレス変換表１０５を作成する。
【００５０】
上記の場合、「空間１」および「空間２」の両方にモジュール識別子２１２により示される「モジュール２」が所属しているので、配置手段１０４は、論理アドレス空間ＬＡの論理アドレス「０ｘ１１００００００」および「０ｘ２１００００００」に「モジュール２」のコードアドレスおよびデータアドレスをそれぞれ配置する。それにより、マッピング手段１０６は、物理アドレス「０ｘ８０００１０００」を論理アドレス空間ＬＡの論理アドレス「０ｘ１１００００００」および論理アドレス空間ＬＢの論理アドレス「０ｘ１１００００００」へマッピングする。
【００５１】
同様に、マッピング手段１０６は、物理アドレス「０ｘ９０００１０００」を論理アドレス空間ＬＡの論理アドレス「０ｘ２１００００００」および論理アドレス空間ＬＢの論理アドレス「０ｘ２１００００００」へマッピングする。
【００５２】
このように、図３の論理アドレス空間ＬＡ，ＬＢと物理アドレス空間ＰＳとの対応関係が決定される。
【００５３】
マッピング手段１０６は、これらアドレス変換表１０５を作成する際に、空間定義１０３を参照してタスクと論理アドレス空間との関連づけを行っている。アドレス変換表切り換え手段１０７は、表１が「タスク１」に対応し、表２が「タスク２」に対応するという情報を保持している。
【００５４】
システム初期化終了後、アドレス変換表切り換え手段１０７は、タスクの切り換え指示に応じて、表１および表２に示したようなアドレス変換表１０５の切り換えを行う。
【００５５】
例えば、タスク識別子２４１により示される「タスク１」を行った後に、タスク識別子２４２により示される「タスク２」を行う場合、アドレス変換表切り換え手段１０７は、アドレス変換表１０５を、空間識別子２３１により示される「空間１」という論理アドレス空間に対応した表１から空間識別子２３２により示される「空間２」という論理アドレス空間に対応した表２へと切り換える。つまり、アドレス変換表切り換え手段１０７は、アドレス変換表１０５を切り換えることによって、「空間１」から「空間２」への切り換えを行っている。
【００５６】
本実施の形態のメモリ管理装置１００によれば、配置手段１０４およびマッピング手段１０６によって、「空間１」および「空間２」という異なる論理アドレス空間に所属する同一の「モジュール２」が同一の物理アドレスに割り付けられるように、論理アドレス空間ごとにマッピングが行われる。それにより、タスクの切り換えに応じてアドレス変換表切り換え手段１０７が「空間１」および「空間２」の切り換えを行っても「モジュール２」を共通に使用することができる。つまり、メモリ管理装置１００では、タスク識別子２４１により示される「タスク１」およびタスク識別子２４２により示される「タスク２」のような互いに異なる２つのタスクが同一の「モジュール２」を共有することができる。
【００５７】
なお、図２では、「モジュール１」〜「モジュール３」と「セクション１」〜「セクション３」とが一対一で対応する場合について説明したが、図４に示すようにセクション識別子２２４により示される１つの「セクション４」にモジュール識別子２１１，２１２により示される複数の「モジュール１」および「モジュール２」が対応し、セクション識別子２２５により示される１つの「セクション５」にモジュール識別子２１２，２１３により示される複数の「モジュール２」および「モジュール３」が対応し、セクション識別子２２６により示される「セクション６」にモジュール識別子２１４により示される「モジュール４」が対応するように構成することができる。
【００５８】
例えば「セクション４」を特権モードで取り扱われるモジュールの集合と定義し、別の「セクション５」を非特権モードで取り扱われるモジュールの集合と定義することにより、「セクション４」および「セクション５」で「モジュール２」の取り扱い規定を別々に設けることができる。それにより、同じ機能を持ちながら異なる取り扱い規定としなければならないモジュールを、空間識別子２３３，２３４によりぞれぞれ示される「空間３」および「空間４」という論理アドレス空間において、タスク識別子２４３，２４４により示される「タスク３」および「タスク４」の間で共有することができる。
【００５９】
本実施の形態では、アドレス変換表１０５およびアドレス変換表切り換え手段１０７は論理アドレス空間切り換え手段に相当し、セクション定義１０２および空間定義１０３が第１の定義に相当する。
【００６０】
（実施の形態２）
図５は本発明の実施の形態２におけるメモリ管理装置の一構成例を示すブロック図である。
【００６１】
図５に示すメモリ管理装置４００は、複数のアドレス変換表４０５、配置手段４０４、マッピング手段４０６およびアドレス変換表切り換え手段４０７を備える。
【００６２】
図５のメモリ管理装置４００は、図１のメモリ管理装置１００と同様に複数のモジュール情報１０１と複数のセクション定義１０２と複数の空間定義４０３とを保持している。
【００６３】
図５に示すメモリ管理装置４００は、図１に示すメモリ管理装置２００と異なり、複数のタスク定義４０８をさらに保持している。メモリ管理装置４００は、タスク定義４０８を保持しているので、アドレス変換表切り換え手段４０７の機能がメモリ管理装置１００のアドレス変換表切り換え手段１０７と相違する。また、タスク定義４０８の有無に伴い空間定義４０３の内容が空間定義１０３の内容と相違する。それら空間定義１０３，４０３の内容の相違に伴い、メモリ管理装置１００とメモリ管理装置４００との間で、配置手段４０４およびマッピング手段４０６の機能ならびにアドレス変換表４０５の内容が配置手段１０４およびマッピング手段１０６の機能ならびにアドレス変換表１０５の内容と相違する。
【００６４】
タスク定義４０８は、タスクごとに、タスクに所属する論理アドレス空間を識別するための空間識別子を定義する。そのため、空間定義４０３は、メモリ管理装置１００の空間定義１０３とは異なり、空間識別子が示す論理アドレス空間が所属するタスクを識別するタスク識別子を定義せず、空間識別子とその空間識別子が示す論理アドレス空間に所属するセクションを識別するためのセクション識別子とを定義する。
【００６５】
アドレス変換表４０５は、モジュール情報１０１、セクション定義１０２および空間定義４０３に基づき作成される。複数のアドレス変換表４０５は、それぞれ複数の論理アドレス空間の中の１つと一対一に対応しており、対応する論理アドレス空間における論理アドレスと物理アドレスとの対応関係を示している。
【００６６】
配置手段４０４およびマッピング手段４０６はこのアドレス変換表４０５を作成する。その際、配置手段４０４は、モジュール情報１０１とセクション定義１０２と空間定義４０３とに基づき、複数の論理アドレス空間のそれぞれに所属するセクションを読み取り、複数の論理アドレス空間のそれぞれのセクションについてモジュールの配置を決定する。マッピング手段４０６は、アドレス変換表４０５を作成することによって、各論理アドレス空間における論理アドレスと物理アドレスとの対応関係を決定するためのマッピングを行う。
【００６７】
アドレス変換表切り換え手段４０７は、タスクの切り換え指示に応じて、タスク定義４０８に基づき、アドレス変換表４０５を切り換える。
【００６８】
図６は、メモリ管理装置４００が保持しているモジュール情報１０１、セクション定義１０２、空間定義４０３およびタスク定義４０８の一例を示す概念図である。
【００６９】
図６のモジュール情報１０１およびセクション定義１０２の構成は、それぞれ図２の同一符号のものと同様である。
【００７０】
図６に示す空間定義４０３には、「空間１」および「空間２」という論理アドレス空間をそれぞれ示す空間識別子５３１，５３２と、各空間識別子５３１，５３２が示す論理アドレス空間に所属する「セクション１」、「セクション２」および「セクション３」というセクションをそれぞれ示すセクション識別子２２１〜２２３とが定義されている。
【００７１】
タスク定義４０８には、３つの「タスク１」、「タスク２」および「タスク３」というタスクを識別するためのタスク識別子５４１〜５４３と、各タスク識別子５４１〜５４３がそれぞれ示すタスクに所属する「空間１」および「空間２」という論理アドレス空間を識別するための空間識別子５３１，５３２とが定義されている。
【００７２】
メモリ管理装置４００においては、図６に示すモジュール情報１０１、セクション定義１０２および空間定義４０３を用いて空間識別子５３１，５３２でそれぞれ示される「空間１」および「空間２」という論理アドレス空間について、実施の形態１のメモリ管理装置１００と同様に、表１および表２に示すアドレス変換表を作成することによって、マッピングを行う。
【００７３】
図３に示すマッピングを行うためにメモリ管理装置４００はシステム初期化時に、マッピング手段４０６を起動する。起動されたマッピング手段４０６は、さらに配置手段４０４を起動する。
【００７４】
配置手段４０４は、空間定義４０３を参照し、空間識別子５３１で示される「空間１」という論理アドレス空間にセクション識別子２２１で示される「セクション１」が所属することを読み取る。
【００７５】
次に配置手段４０４は、セクション定義１０２を参照し、セクション識別子２２１で示される「セクション１」にモジュール識別子２１１で示される「モジュール１」が所属することを読み取る。さらに、配置手段４０４は、モジュール情報１０１を参照し、モジュール識別子２２１で示される「モジュール１」のコードアドレス、コードサイズ、データアドレスおよびデータサイズを読み取る。
【００７６】
そして、配置手段４０４は、モジュール識別子２２１で示される「モジュール１」のコードアドレスとデータアドレスとを、空間識別子５３１で示される「空間１」という論理アドレス空間上に配置する。それにより、「空間１」に「モジュール１」が配置される。
【００７７】
次に、配置手段４０４は、空間識別子５３１で示される「空間１」という論理アドレス空間にセクション識別子２２２で示される「セクション２」が所属することを読み取り、「セクション１」の場合と同様に、空間定義４０３とセクション定義１０２とモジュール情報１０１の定義と記述に基づき、モジュール識別子２１２で示される「モジュール２」のコードアドレスとデータアドレスとを空間識別子５３１で示される「空間１」という論理アドレス空間上に配置する。それにより、「空間１」に「モジュール２」が配置される。
【００７８】
同様に、配置手段４０４は、空間定義４０３を参照し、空間識別子５３２で示される「空間２」という論理アドレス空間にセクション識別子２２２で示される「セクション２」が所属することを読み取り、空間定義４０３とセクション定義１０２とモジュール情報１０１とに基づき、モジュール識別子２１２で示される「モジュール２」のコードアドレスとデータアドレスとを空間識別子５３２で示される「空間２」という論理アドレス空間上に配置する。それにより、「空間２」に「モジュール２」が配置される。
【００７９】
また、配置手段４０４は、空間定義４０３を参照し、空間識別子５３２で示される「空間２」という論理アドレス空間にセクション識別子２２３で示される「セクション３」が所属することを読み取り、空間定義４０３とセクション定義１０２とモジュール情報１０１に基づき、モジュール識別子２１３で示される「モジュール３」のコードアドレスとデータアドレスとを空間識別子５３２で示される「空間２」という論理アドレス空間上に配置する。それにより、「空間２」に「モジュール３」が配置される。
【００８０】
マッピング手段４０６は、空間識別子５３１で示される「空間１」という論理アドレス空間において、配置手段４０４によってコードアドレスおよびデータアドレスが配置された論理アドレスに物理アドレスを対応させ、表１に示すアドレス変換表１０５を作成する。
【００８１】
次に、マッピング手段４０６は、空間識別子５３２で示される「空間２」という論理アドレス空間において、配置手段４０４によってコードアドレスおよびデータアドレスが配置された論理アドレスに物理アドレスを対応させ、表２に示すアドレス変換表１０５を作成する。
【００８２】
上記の場合、「空間１」および「空間２」の両方にモジュール識別子２１２で示される「モジュール２」が所属しているので、配置手段４０４は、論理アドレス空間ＬＡの論理アドレス「０ｘ１１００００００」および論理アドレス空間ＬＢの論理アドレス「０ｘ２１００００００」に「モジュール２」のコードおよびデータをそれぞれ配置する。それにより、マッピング手段４０６は、物理アドレス「０ｘ８０００１０００」を空間識別子５３１で示される「空間１」という論理アドレス空間の論理アドレス「０ｘ１１００００００」および空間識別子５３２で示される「空間２」という論理アドレス空間の論理アドレス「０ｘ１１００００００」へマッピングする。
【００８３】
同様に、マッピング手段４０６は、物理アドレス「０ｘ９００００１０００」を「空間１」という論理アドレス空間の論理アドレス「０ｘ２１０００００００」および「空間２」という論理アドレス空間の論理アドレス「０ｘ２１００００００」へマッピングする。
【００８４】
このように、図３の論理アドレス空間ＬＡ，ＬＢと物理アドレス空間ＰＳとの対応関係と同じように、空間識別子５３２で示される「空間２」という論理アドレス空間ＬＡ，ＬＢと物理アドレス空間ＰＳとの対応関係が決定される。
【００８５】
システム初期化終了後、アドレス変換表切り換え手段４０７は、タスクの切り換え指示に応じて表１および表２に示したようなアドレス変換表４０５の切り換えを行う。その際、アドレス変換表４０５がタスクと論理アドレス空間との関係を規定していないので、アドレス変換表切り換え手段４０７は、タスク定義４０８を参照する。
【００８６】
例えばタスク識別子５４１で示される「タスク１」を実行した後に、タスク識別子５４３で示される「タスク３」を実行する場合、タスク定義４０８によって「タスク１」が空間識別子５３１で示される「空間１」という論理アドレス空間に関連づけられているとともに「タスク３」が空間識別子５４３で示される「空間２」という論理アドレス空間に関連づけられているので、アドレス変換表切り換え手段４０７は、空間識別子５３１で示される「空間１」に対応した表１から空間識別子５３２で示される「空間２」に対応した表２へと切り換える。
【００８７】
一方、タスク識別子５４１で示される「タスク１」を実行した後にタスク識別子５４２で示される「タスク２」を実行する場合、タスク定義４０８によって「タスク１」が「空間１」に関連づけられているとともに「タスク２」が「空間１」に関連づけられているので、タスク識別子５４１，５４２でそれぞれ示される「タスク１」および「タスク２」が空間識別子５３１で示される「空間１」という同じ論理アドレス空間を用いるため、アドレス変換表切り換え手段４０７はアドレス変換表４０５の切り換えを行わない。
【００８８】
本実施の形態のメモリ管理装置４００は、以上のように構成されており、実施の形態１のメモリ管理装置１００と同様の効果を奏する。
【００８９】
さらに、本実施の形態のメモリ管理装置４００によれば、タスク識別子５４１〜５４３でそれぞれ示される「タスク１」〜「タスク３」と空間識別子５３１，５３２でそれぞれ示される論理アドレス空間の関連のみを示しかつ論理アドレス空間とモジュール識別子２１１〜２１３で示される「モジュール１」〜「モジュール３」との対応関係を定義しないタスク定義４０８に基づき、アドレス変換表切り換え手段４０７がタスクの切り換え指示に応じた論理アドレス空間の切り換えを行う。
【００９０】
それにより、タスクの切り換え前後で論理アドレス空間が同じ場合には、アドレス変換表４０５の切り換えを行わないことによって、論理アドレス空間の切り換えを行わないようにすることができる。つまり、メモリ管理装置４００は、異なるタスク識別子５４１，５４２で示される「タスク１」および「タスク２」の間で空間識別子５３１で示される「空間１」という論理アドレス空間５３１の全体を共有することができる。
【００９１】
本実施の形態では、配置手段４０４およびマッピング手段４０６が配置・マッピング手段に相当し、アドレス変換表４０５およびアドレス変換表切り換え手段４０７が論理アドレス空間切り換え手段に相当し、タスク定義４０８が第２の定義に相当する。
【００９２】
（実施の形態３）
図７は本発明の実施の形態３におけるメモリ管理装置の一構成例を示すブロック図である。
【００９３】
図７に示すメモリ管理装置６００が図５に示すメモリ管理装置４００と異なるのは、要求受付手段６０９とメモリアクセス手段６１０とをさらに備えている点である。図７において図５と同一または相当する部分に同一符号を付している。
【００９４】
メモリ管理装置６００の要求受付手段６０９は、デバッガからの要求を受け付ける。メモリアクセス手段６１０は、要求受付手段６０９がメモリアクセス要求を受け付けたときに、アドレス変換動作の状態に応じてメモリアクセスを実行する。
【００９５】
図７のメモリ管理装置６００におけるアドレス変換表４０５の作成とアドレス変換表４０５の切り換えは、図５のメモリ管理装置４００と同様に実行される。
【００９６】
メモリ管理装置６００の要求受付手段６０９は、デバッグ時に、例えばブレークポイント設定等のメモリリード／ライト処理をデバッガが行う場合に、デバッガからのアクセス要求を受け付ける。メモリアクセス要求を受け付けた要求受付手段６０９はメモリアクセス手段６１０を起動する。メモリアクセス手段６１０は、アドレス変換表４０５を用いたアドレス変換が可能なときには、アドレス変換表４０５を用いて論理アドレスを物理アドレスに変換してメモリアクセスを行う。
【００９７】
一方、メモリアクセス手段６１０は、例えばシステム初期化が終了していない等の理由によりアドレス変換表４０５を用いたアドレス変換が不可能な状態のときにはアドレス変換表４０５を用いずに、直接に物理アドレスに基づくメモリアクセスを行う。
【００９８】
本実施の形態のメモリ管理装置６００によれば、アドレス変換表４０５の状態によらずメモリアクセスを行うことができ、例えばシステム初期化が終了していないためにアドレス変換表４０５を用いて動作することができなくてもデバッガからのメモリアクセス要求に対し矛盾なく対応することができる。
【００９９】
本実施の形態では、アドレス変換表４０５がアドレス変換手段に相当する。
なお、実施の形態３の説明においては、要求受付手段６０９がデバッガからの要求を受け付ける場合について説明したが、要求受付手段６０９が受け付けるメモリアクセス要求はデバッガからの要求に限られるものではなく、メモリ管理装置６００の周辺装置からのメモリアクセス要求であればよい。
【０１００】
また、実施の形態３のメモリ管理装置６００は実施の形態２のメモリ管理装置４００に要求受付手段６０９とメモリアクセス手段６１０とをさらに備えて構成したが、図８に示すメモリ管理装置７００のように、実施の形態１のメモリ管理装置１００に要求受付手段６０９とメモリアクセス手段６１０とをさらに備えて構成することもできる。なお、図８において図１と同一または相当する部分に同一符号を付している。
【０１０１】
なお、実施の形態１〜３のメモリ管理装置１００，４００，６００，７００においては、配置手段１０４，４０４によって、共有するモジュールを異なる論理アドレス空間における同一論理アドレスに配置して同一のモジュールの論理アドレスを同一の物理アドレスに割り付けているが、共有するモジュールを異なる論理アドレス空間における異なる論理アドレスに配置して同一のモジュールの論理アドレスを同一の物理アドレスに割り付けるようにしてもよい。
【０１０２】
また、実施の形態１〜３においては、モジュール情報１０１にプログラムのコードおよびデータのみに関する情報が記述されている場合について示したがスタックや初期値を有するデータ等の情報が記述されていてもよく、これらの情報をマッピングすることができる。
【０１０３】
【発明の効果】
本発明に係るメモリ管理装置によれば、必要なモジュール以外は異なるタスク間でメモリに直接アクセスすることを禁止し、必要なモジュールのみ異なるタスク間で共有させることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１によるメモリ管理装置の一構成例を示すブロック図
【図２】図１のメモリ管理装置が保持するモジュール情報とセクション定義と空間定義の一例を示す概念図
【図３】図１のメモリ管理装置が行うマッピングの一例を示す概念図
【図４】図１のメモリ管理装置が保持するモジュール情報とセクション定義と空間定義の他の例を示す概念図
【図５】本発明の実施の形態２によるメモリ管理装置の一構成例を示すブロック図
【図６】図５のメモリ管理装置が保持するモジュール情報とセクション定義と空間定義とタスク定義の一例を示す概念図
【図７】本発明の実施の形態３によるメモリ管理装置の一構成例を示すブロック図
【図８】本発明の実施の形態３によるメモリ管理装置の他の構成例を示すブロック図
【図９】従来のメモリ管理装置の一構成例を示すブロック図
【符号の説明】
１００，４００，６００，７００  メモリ管理装置
１０１，１０１ａ  モジュール情報
１０２，１０２ａ  セクション定義
１０３，１０３ａ，４０３，４０３ａ  空間定義
１０４，４０４  配置手段
１０５，４０５  アドレス変換表
１０６，４０６  マッピング手段
１０７，４０７  アドレス変換表切り換え手段
４０８  タスク定義
６０９  要求受付手段
６１０  メモリアクセス手段
【図１】
0004331325.tif 000004
【図２】
0004331325.tif 000005
【図３】
0004331325.tif 000006
【図４】
0004331325.tif 000007
【図５】
0004331325.tif 000008
【図６】
0004331325.tif 000009
【図７】
0004331325.tif 000010
【図８】
0004331325.tif 000011
【図９】
0004331325.tif 000012