(57)【要約】【課題】ハイブリッドＯＳにおいて、リアルタイムＯＳのリアルタイム性を失うことなく、メモリの有効利用を可能とすると共に、メモリの利用効率を向上させる。【解決手段】メモリ管理マネージャ１１０は、ハードウェアであるＭＭＵを制御するプログラムで、メモリ管理例外の例外・割り込み時にメモリ管理例外処理を行い、また、リアルタイムＯＳからのメモリ確保・解放リクエスト１１１の入力時にＭＭＵ管理下でリアルタイムＯＳ論理空間１０１の割り付け・削除を行う。汎用ＯＳカーネル論理空間１０２と、汎用ＯＳプロセス論理空間１０３とは、リアルタイムＯＳ論理空間１０１の一つのリアルタイムＯＳタスク１０９として取り扱われる。このメモリ管理装置１００はリアルタイムＯＳのメモリ管理を、ＭＭＵで管理されている汎用ＯＳの管理下のメモリを利用可能にすることで、汎用ＯＳが管理し、スケジューリングはリアルタイムＯＳが管理する。【選択図】図１
2011257973.tif 000002
【特許請求の範囲】
【請求項１】
スケジューリングの管理手段を有する、メモリ管理装置をサポートしない１つ以上の第１のオペレーティングシステムをベースオペレーティングシステムとして、前記第１のオペレーティングシステムと共に動作すると共に、前記メモリ管理装置を利用してメモリ管理を行う１つ以上の第２のオペレーティングシステムのブート後に、前記第２のオペレーティングシステムが前記第１のオペレーティングシステムの論理空間を作成する第１のステップと、
前記第２のオペレーティングシステムが、作成した前記第１のオペレーティングシステムの論理空間の物理的なメモリエリアを確保する第２のステップと、
前記第２のステップで確保された前記物理的なメモリエリアに、前記第１のオペレーティングシステムをブートして、前記メモリ管理装置を作動させてから制御を前記第１のオペレーティングシステムに渡す第３のステップと、
前記第３のステップで制御が渡された前記第１のオペレーティングシステムが、自身を初期化後に前記第２のオペレーティングシステムを前記第１のオペレーティングシステムの一つのタスクとして登録する第４のステップと、
前記第１のオペレーティングシステムがスケジューラをスタートする第５のステップと、
一次割り込み処理手段により、割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、前記メモリ管理例外のときは前記第２のオペレーティングシステムに前記メモリ管理例外の処理をさせ、前記その他の割り込み・例外のときには前記第１のオペレーティングシステムに前記その他の割り込み・例外の処理をさせるように振り分ける第６のステップと、
前記第１のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を前記第２のオペレーティングシステムに供給して、前記第２のオペレーティングシステムにより前記メモリ管理装置の管理下でメモリの確保・解放の処理を行わせる第７のステップと、
を含むことを特徴とするメモリ管理方法。
【請求項２】
前記第２のステップは、前記メモリ管理装置により前記第１のオペレーティングシステムのメモリエリアを作成する際、前記第１のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする請求項１記載のメモリ管理方法。
【請求項３】
スケジューリングの管理手段を有する、メモリ管理装置をサポートしない１つ以上の第１のオペレーティングシステムと、
前記第１のオペレーティングシステムをベースオペレーティングシステムとし、前記第１のオペレーティングシステムの一つのタスクとして実装されて前記第１のオペレーティングシステムと共に動作すると共に、前記メモリ管理装置を利用して自身と前記第１のオペレーティングシステムのメモリ管理をそれぞれ行う１つ以上の第２のオペレーティングシステムと、
割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、前記メモリ管理例外のときは前記第２のオペレーティングシステムに前記メモリ管理例外の処理をさせ、前記その他の割り込み・例外のときには前記第１のオペレーティングシステムに前記その他の割り込み・例外の処理をさせるように振り分ける一次割り込み処理手段と、
前記第１のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を前記第２のオペレーティングシステムに供給して、前記第２のオペレーティングシステムにより前記メモリ管理装置の管理下でメモリの確保・解放の処理を行わせるメモリ確保・解放要求処理手段と、
を有することを特徴とするメモリ管理装置。
【請求項４】
前記第２のオペレーティングシステムは、前記メモリ管理装置により前記第１のオペレーティングシステムのメモリエリアを作成する際、前記第１のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする請求項３記載のメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリ管理方法及びメモリ管理装置に係り、特に一台のコンピュータ上でリアルタイムＯＳ（オペレーティングシステム）と汎用ＯＳとが動作するハイブリッドＯＳを持つシステムにおける、各ＯＳによるメモリ管理方法及びメモリ管理装置に関する。
【背景技術】
【０００２】
近年、一台のコンピュータ上で複数のオペレーティングシステム（ＯＳ）が動作するハイブリッドＯＳが各分野で利用されるようになってきている。ハイブリッドＯＳの中でも、リアルタイムＯＳと汎用ＯＳとが動作するシステムでは、リアルタイムＯＳのリアルタイム性を生かしつつ、汎用ＯＳが持つ豊富なリソースが利用可能となり、ロボット制御や通信端末等、機器制御分野で広く利用されるようになってきている。
【０００３】
このハイブリッドＯＳシステムでは、リアルタイムＯＳをベースＯＳとし、汎用ＯＳをリアルタイムＯＳの１つのタスクとして実装することにより、リアルタイム性の確保を目指しているものが多い。このハイブリッドＯＳシステムでは、汎用ＯＳはリアルタイムＯＳの制御下にあるリアルタイムタスクの一つとして実行される。
【０００４】
しかし、このハイブリッドＯＳシステムでは、汎用ＯＳの制御下で実行されるプロセスがリアルタイムタスクと協調して動作するためにリアルタイムタスクの有する高い優先度を継承させる場合に、協調して動作するプロセス以外のプロセスも高い優先度で実行されることに起因してリアルタイムタスクの実行が妨げられることがある。
【０００５】
そこで、特許文献１記載のタスク管理装置では、汎用ＯＳの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外の他のタスクが、協調動作をオペレーティングシステムタスクに要求して待ち状態になる際に、待ち状態にある他のタスクの優先度よりも高いか否かを判定し、待ち状態にある他のタスクの優先度よりも高いと判定したときに、オペレーティングシステムタスク及び待ち状態になる他のタスクと協調して動作するプロセスに、待ち状態になるタスクの優先度を継承させることで、リアルタイムタスクと協調して汎用ＯＳの制御下で動作するプロセス以外の他のプロセスが高い優先度で実行されることを防ぐようにしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２３４６５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１記載のタスク管理装置では、メモリ管理に関しては、一般的にハイブリッドＯＳのブート（起動）時に、リアルタイムＯＳが使用するメモリと汎用ＯＳが使用するメモリとが完全に切り分けられ、メモリの有効利用ができない。このことについて、図８と共に説明する。
【０００８】
図８は、ハイブリッドＯＳにおける実行中のメモリマップの一例を示す。同図において、ハイブリッドＯＳのブート（起動）時に、汎用ＯＳが管理するメモリエリア８０１と、リアルタイムＯＳが管理するメモリエリア８０３とが完全に切り分けられている。また、汎用ＯＳが管理するメモリエリア８０１は、主記憶であり、ここにはページ単位のメモリ空きエリア８０２が存在するものとする。一方、リアルタイムＯＳが管理するメモリ８０３は、主記憶の一部とＩ／Ｏ（入出力）エリアとからなる。また、リアルタイムＯＳが管理するメモリ８０３のうち、ブート時フリーメモリプール８０４は既に全て利用されているものとする。
【０００９】
このとき、リアルタイムＯＳでメモリ確保の要求が発生した場合、リアルタイムＯＳが管理するメモリエリア８０３には利用されていないメモリエリアが存在するにもかかわらず要求は失敗で終わり、メモリの有効利用ができない。
【００１０】
また、従来のメモリ管理方法では、例えば、汎用ＯＳはＭＭＵ（Memory Management Unit；記憶管理装置）を利用したメモリ管理を行うのに対し、リアルタイムＯＳのメモリ管理ではＭＭＵを用いないため、メモリの確保と解放を繰り返していくとメモリフラグメンテーション（断片化）が起き、メモリ利用効率が大きく低下する。このことについて、図９と共に説明する。
【００１１】
図９は、従来のメモリ管理方法による、リアルタイムＯＳ実行時のフラグメンテーションを示す。同図において、リアルタイムＯＳが管理するメモリエリア９００は、ブート時に割り付けられるブート時割り付けメモリ９０１と、ブート時フリーメモリプール９０２とからなる。リアルタイムＯＳは、実行時に発生するメモリ確保・解放要求を処理する。そのメモリ確保要求は、ブート時フリーメモリプール９０２より割り付けられる。ここで、メモリ確保とメモリ解放とが繰り返されると、ブート時フリーメモリプール９０２のメモリ空きエリア９０３はフラグメンテーションが発生し、利用効率が大きく低下する。
【００１２】
本発明は以上の点に鑑みなされたもので、ＭＭＵを有するアーキテクチャ上でリアルタイムＯＳと汎用ＯＳの両方が動作するハイブリッドＯＳにおいて、ＭＭＵをサポートしていないリアルタイムＯＳのメモリ管理を、ＭＭＵで管理されている汎用ＯＳの管理下のメモリを利用可能にすることで、リアルタイムＯＳのリアルタイム性を失うことなく、メモリの有効利用を可能とすると共に、メモリの利用効率を向上させるメモリ管理方法及びメモリ管理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記の目的を達成するため、本発明のメモリ管理方法は、スケジューリングの管理手段を有する、メモリ管理装置をサポートしない１つ以上の第１のオペレーティングシステムをベースオペレーティングシステムとして、第１のオペレーティングシステムと共に動作すると共に、メモリ管理装置を利用してメモリ管理を行う１つ以上の第２のオペレーティングシステムのブート後に、第２のオペレーティングシステムが第１のオペレーティングシステムの論理空間を作成する第１のステップと、第２のオペレーティングシステムが、作成した第１のオペレーティングシステムの論理空間の物理的なメモリエリアを確保する第２のステップと、第２のステップで確保された物理的なメモリエリアに、第１のオペレーティングシステムをブートして、メモリ管理装置を作動させてから制御を第１のオペレーティングシステムに渡す第３のステップと、第３のステップで制御が渡された第１のオペレーティングシステムが、自身を初期化後に第２のオペレーティングシステムを第１のオペレーティングシステムの一つのタスクとして登録する第４のステップと、第１のオペレーティングシステムがスケジューラをスタートする第５のステップと、一次割り込み処理手段により、割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、メモリ管理例外のときは第２のオペレーティングシステムにメモリ管理例外の処理をさせ、その他の割り込み・例外のときには第１のオペレーティングシステムにその他の割り込み・例外の処理をさせるように振り分ける第６のステップと、第１のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を第２のオペレーティングシステムに供給して、第２のオペレーティングシステムによりメモリ管理装置の管理下でメモリの確保・解放の処理を行わせる第７のステップと、を含むことを特徴とする。
【００１４】
また、上記の目的を達成するため、本発明のメモリ管理方法は、上記の第２のステップは、メモリ管理装置により第１のオペレーティングシステムのメモリエリアを作成する際、第１のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする。
【００１５】
また、上記の目的を達成するため、本発明のメモリ管理装置は、スケジューリングの管理手段を有する、メモリ管理装置をサポートしない１つ以上の第１のオペレーティングシステムと、第１のオペレーティングシステムをベースオペレーティングシステムとし、第１のオペレーティングシステムの一つのタスクとして実装されて第１のオペレーティングシステムと共に動作すると共に、メモリ管理装置を利用して自身と第１のオペレーティングシステムのメモリ管理をそれぞれ行う１つ以上の第２のオペレーティングシステムと、割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、メモリ管理例外のときは第２のオペレーティングシステムにメモリ管理例外の処理をさせ、その他の割り込み・例外のときには第１のオペレーティングシステムにその他の割り込み・例外の処理をさせるように振り分ける一次割り込み処理手段と、第１のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を第２のオペレーティングシステムに供給して、第２のオペレーティングシステムによりメモリ管理装置の管理下でメモリの確保・解放の処理を行わせるメモリ確保・解放要求処理手段と、を有することを特徴とする。
【００１６】
また、上記の目的を達成するため、本発明のメモリ管理装置は、上記の第２のオペレーティングシステムは、メモリ管理装置により第１のオペレーティングシステムのメモリエリアを作成する際、第１のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、スケジューリングは第１のオペレーティングシステムが管理し、メモリ管理は第２のオペレーティングシステムが管理することで、第１のオペレーティングシステムであるリアルタイムＯＳのメモリ管理を、ＭＭＵで管理されている第２のオペレーティングシステムである汎用ＯＳの管理下のメモリを利用可能にすることで、リアルタイムＯＳのリアルタイム性を失うことなく、メモリの有効利用ができる。
【００１８】
また、本発明によれば、メモリ確保・解放要求は汎用ＯＳカーネル論理空間のメモリ管理マネージャで処理され、メモリはＭＭＵ管理下のページ単位となるため、フラグメンテーションは発生せず、また、不連続な空きページエリアも、連続した論理空間として割り付けることが可能になるため、メモリの利用効率を大幅に向上することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明のメモリ管理装置の一実施の形態の構成を示す図である。
【図２】一般的なハイブリッドＯＳの一例の構成を示す図である。
【図３】従来のメモリ管理方法によるメモリマップと、本発明のメモリ管理方法及びメモリ管理装置によるメモリマップとを示す図である。
【図４】本発明のメモリ管理方法及びメモリ管理装置の一実施の形態を説明する図である。
【図５】本発明のメモリ管理方法の一実施の形態のブート時の動作説明用フローチャートである。
【図６】本発明のメモリ管理方法の一実施の形態の割り込み・例外処理時の動作説明用フローチャートである。
【図７】本発明のメモリ管理方法の一実施の形態のメモリ確保・解放時の動作説明用フローチャートである。
【図８】従来のメモリ管理方法によるハイブリッドＯＳ実行中のメモリマップの一例を示す図である。
【図９】従来のメモリ管理方法によるリアルタイムＯＳ実行時のフラグメンテーションの一例を示す図である。
【発明を実施するための形態】
【００２０】
次に、本発明の実施の形態について図面を参照して説明する。
【００２１】
図１は、本発明になるメモリ管理装置の一実施の形態の構成を示す。同図に示すように、メモリ管理装置１００は、ハイブリッドＯＳシステム論理的なメモリ空間として、リアルタイムＯＳ論理空間１０１、汎用ＯＳカーネル論理空間１０２、汎用ＯＳプロセス論理空間１０３から構成されている。また、ハードウェア割り込み、例外処理の一次処理を行い、割り込みがメモリ管理例外であるかどうかの判断を行う一次割り込み処理マネージャ１０４を有する。一次割り込み処理マネージャ１０４は、メモリ管理例外は汎用ＯＳカーネルに処理させ、その他の割り込み・例外はリアルタイムＯＳカーネル１０５に処理させるように振り分ける。一次割り込み処理マネージャ１０４は、本発明の一次割り込み処理手段を構成する。
【００２２】
リアルタイムＯＳ論理空間１０１は、リアルタイムＯＳカーネル１０５がベースＯＳとなり、リアルタイムＯＳタスク１０７がリアルタイムＯＳスケジューラ１０８のスケジューリング管理下におかれた構成である。また、リアルタイムＯＳ論理空間１０１には、リアルタイムＯＳカーネル１０５は、メモリ管理例外以外の例外・割り込み時にリアルタイム処理の割り込み・例外処理を行うためにリアルタイムＯＳ割り込みハンドラ１０６が設けられている。リアルタイムＯＳ論理空間１０１は、ＭＭＵ（Memory Management Unit；記憶管理装置）をサポートしないリアルタイムＯＳのメモリ空間である。
【００２３】
一方、汎用ＯＳカーネル論理空間１０２内には、メモリ管理マネージャ１１０が設けられている。メモリ管理マネージャ１１０は、ハードウェアであるＭＭＵを制御するプログラムで、メモリ管理例外の例外・割り込み時にメモリ管理例外処理を行い、また、リアルタイムＯＳからのメモリ確保・解放リクエスト１１１の入力時にＭＭＵ管理下でリアルタイムＯＳ論理空間１０１の割り付け・削除を行う。メモリ管理マネージャ１１０の上記のリアルタイムＯＳ論理空間１０１の割り付け・削除機能は、本発明のメモリ確保・開放要求処理手段を構成する。
【００２４】
汎用ＯＳカーネル論理空間１０２と、汎用ＯＳプロセス論理空間１０３とはリアルタイムＯＳタスク１０９を構成している。従って、このリアルタイムＯＳタスク１０９は、リアルタイムＯＳタスク１０７のような通常のネイティブタスクとは異なる構成であるが、リアルタイムＯＳカーネル１０５から見たときには、リアルタイムＯＳタスク１０７と同じリアルタイムＯＳタスクである。すなわち、汎用ＯＳカーネル論理空間１０２と、汎用ＯＳプロセス論理空間１０３とは、リアルタイムＯＳ論理空間１０１の一つのタスクとして取り扱われる。リアルタイムＯＳタスク１０９のメモリ空間は、ＭＭＵをサポートする汎用ＯＳのメモリ空間である。スケジューリング機能に関しては、本実施の形態ではリアルタイムＯＳカーネル１０５が管理する。
【００２５】
ここで、一般的なハイブリッドＯＳの構成について、図２及び図３を用いて説明する。図２は、一般的なハイブリッドＯＳの一例の構成を示す図であり、図３は、従来のメモリ管理方法によるメモリマップと、本発明のメモリ管理方法及びメモリ管理装置によるメモリマップとを示す図である。
【００２６】
図２に示すように、一般的なハイブリッドＯＳ２００は、リアルタイムＯＳカーネル２０１がベースＯＳとなり、リアルタイムＯＳタスク２０２と、汎用ＯＳカーネル２０４及び汎用ＯＳプロセス２０５がリアルタイムＯＳタスク２０３としてリアルタイムＯＳカーネル２０１のスケジューリング管理下に置かれている。
【００２７】
このときのメモリマップは図３（Ａ）に示すように、リアルタイムＯＳが管理するメモリエリア３０１と汎用ＯＳが管理するメモリエリア３０２とからなり、汎用ＯＳが管理するメモリエリア３０２は主記憶３０５にあるのに対し、リアルタイムＯＳが管理するメモリエリア３０１はＩ／Ｏエリア３０３と主記憶の一部３０４にある。すなわち、主記憶がリアルタイムＯＳが管理する主記憶部分３０４と汎用ＯＳが管理する主記憶部分３０５とに完全に切り分けられている。一般的にはブート時それぞれのＯＳが管理する主記憶部分３０４及び３０５を切り分け、各ＯＳをブートする。
【００２８】
また、リアルタイムＯＳ実行時は、ＭＭＵなどによるメモリ管理は行われておらず、すべて実メモリで管理される。リアルタイムＯＳタスクやリアルタイムＯＳカーネルがメモリ確保要求を出した場合、リアルタイムＯＳは管理下のメモリエリア３０１からメモリを割り当てる。そのため、図８と共に説明したように、上記の場合に汎用ＯＳが管理するメモリエリア３０２に空きメモリ（図８の８０２）が存在していても利用できない。また、ＭＭＵを用いていないため、メモリの確保と解放を繰り返していくと、図９と共に説明したようにメモリのフラグメンテーションが発生し、メモリの利用効率が著しく低下する。
【００２９】
そこで、本実施の形態では、上記の課題を解決するために、ＭＭＵをサポートしていないリアルタイムＯＳのメモリ管理を、ＭＭＵで管理されている汎用ＯＳの管理下のメモリを利用可能にすることで、リアルタイムＯＳのリアルタイム性を失うことなく、メモリの有効利用を可能とすると共に、メモリの利用効率を向上させる。この概要について、図１及び図３を用いて説明する。
【００３０】
本実施の形態での実行単位としてのタスクは、一般的なハイブリッドＯＳと同様に、実装されている。しかし、本実施の形態ではリアルタイムＯＳ及び汎用ＯＳの実行時は、ＭＭＵによるメモリ管理が行われており、図１に示すように、論理的なメモリ空間は、リアルタイムＯＳ論理空間１０１、汎用ＯＳカーネル論理空間１０２、及び汎用ＯＳプロセス論理空間１０３から構成されている。
【００３１】
また、本実施の形態ではメモリマップは、図３（Ｂ）に示すように、汎用ＯＳとリアルタイムＯＳが管理するメモリエリア３０６として主記憶３０８を共用し、汎用ＯＳとリアルタイムＯＳで動的に管理する。また、Ｉ／Ｏエリア３０９に関しては、リアルタイムＯＳが管理するメモリエリア３０７とし、リアルタイムＯＳが管理する。
【００３２】
次に、本実施の形態のメモリ管理の詳細について、図４を用いて説明する。図４は、本発明になるメモリ管理方法の一実施の形態を説明する図を示す。
【００３３】
図４において、汎用ＯＳプロセス論理空間４０１（図１の汎用ＯＳプロセス論理空間１０３に相当）は、汎用ＯＳカーネルによって、プログラム、データ、スタック等のセグメントにより構成されたセグメント管理テーブル４０３が割り付けられる。セグメント管理テーブル４０３の各セグメントは、ページ管理テーブル４０５により物理アドレスとの対応がとられており、実際のメモリエリア４０７（図３（Ｂ）の汎用ＯＳとリアルタイムＯＳが管理するメモリエリア３０６に相当）内のどのページを参照しているか示されている。
【００３４】
一方、リアルタイムＯＳ論理空間４０２（図１のリアルタイムＯＳ論理空間１０１に相当）は、リアルタイムＯＳのカーネル、各タスク及びＩ／Ｏエリアが割り付けられ、更にそれぞれについてカーネル、タスク・フリーエリア、Ｉ／Ｏエリアなどのセグメントにより構成されるセグメント管理テーブル４０４が割り付けられる。
【００３５】
セグメント管理テーブル４０４の各セグメントは、ページ管理テーブル４０６により物理アドレスとの対応がとられており、実際のメモリエリア４０７内のどのページを参照しているか、あるいはメモリエリア４０８（図３（Ｂ）のリアルタイムＯＳが管理するメモリエリア３０７のＩ／Ｏエリアに相当）内のどのページを参照しているか示されている。
【００３６】
このリアルタイムＯＳ論理空間４０２に対するメモリ管理は、メモリに必ず論理空間に対応する物理空間が存在することで、ページ違反などのメモリ例外が起きないようなメモリ管理構成となっている点で汎用ＯＳプロセス論理空間４０１に対するメモリ管理と相違する。
【００３７】
次に、本実施の形態におけるメモリ管理方法の動作について説明する。
【００３８】
最初にブート時の動作について図５等と共に説明する。図５は、本発明になるメモリ管理方法の一実施の形態のブート時の動作説明用フローチャートを示す。
【００３９】
まず、ブートローダが汎用ＯＳカーネル２０４をブートする(ステップＳ１０１)。汎用ＯＳカーネル２０４は、図１に１０２で示したようにその論理空間にメモリ管理マネージャ１１０を含んでおり、上記のブートにより汎用ＯＳカーネル２０４はメモリ管理マネージャにより自身の初期化を行う(ステップＳ１０２)。この初期化により、汎用ＯＳカーネル論理空間１０２内のメモリ管理マネージャ１１０は、物理メモリに対応するページ管理テーブル４０５を作成し、フリーリストに登録する。
【００４０】
次に、汎用ＯＳカーネル２０４がリアルタイムＯＳ論理空間１０１（４０２）を作成する(ステップＳ１０３)。具体的には汎用ＯＳカーネル２０４は、リアルタイムＯＳ論理空間４０２のカーネル、タスク・フリーエリア、Ｉ／Ｏエリアの各セグメントからなるセグメント管理テーブル４０４を作成し、更に、そのセグメント管理テーブル４０４内の各セグメントに対応するページ管理テーブル４０６を作成する。
【００４１】
次に、汎用ＯＳカーネル論理空間１０２にロードされてくる汎用ＯＳカーネルプログラムが、先に作成したページフリーリストより、リアルタイムＯＳ論理空間１０１（４０２）に必要とする物理的なメモリエリア４０７、４０８を確保し（ステップＳ１０４）、ページ管理テーブルにそのメモリエリアの物理アドレスを登録する。このとき、リアルタイムＯＳが必要とするリアルタイムＯＳ論理空間１０１（４０２）は実際の物理メモリであるメモリエリア４０７にすべて割り付けられたものとなる。
【００４２】
すなわち、ステップＳ１０３及びＳ１０４により、汎用ＯＳのメモリ管理マネージャ１１０によりリアルタイムＯＳ論理空間１０１（４０２）のメモリエリアを作成する際、リアルタイムＯＳ論理空間１０１（４０２）に対応するメモリページをアクセス可能な実空間のメモリエリア４０７でのみ構成することにより、リアルタイムＯＳ実行時のメモリ例外発生をなくすようにしている。
【００４３】
また、割り込み処理に関しては、図１の一次割り込み処理マネージャ１０４が全ての割り込みを処理するよう、割り込みベクトルなどの設定を行う。割り込み処理マネージャ１０４は汎用ＯＳの一部としてロードされ、システムアーキテクチャに合わせ、割り込み処理の実行が可能な空間に配置される。
【００４４】
続いて、汎用ＯＳカーネルプログラムは、確保したリアルタイムＯＳ論理空間１０１（４０２）のメモリエリア４０７、４０８にリアルタイムＯＳをブートした後(ステップＳ１０５)、ＭＭＵの機能を作動させる(ステップＳ１０６)。その後、汎用ＯＳカーネルプログラムは、リアルタイムＯＳへ制御を渡す(ステップＳ１０７)。これにより、リアルタイムＯＳは用意されたリアルタイムＯＳ論理空間１０１（４０２）にてプログラムの実行を開始する。
【００４５】
すなわち、リアルタイムＯＳ論理空間１０１（４０２）にロードされているプログラムであるリアルタイムＯＳカーネル１０５は、まず自身の初期化を行い、汎用ＯＳ（汎用ＯＳカーネル論理空間１０２及び汎用ＯＳプロセス論理空間１０３）を自身の１タスク（すなわち、リアルタイムＯＳタスク１０９，２０３）として登録し(ステップＳ１０８)。続いて、リアルタイムＯＳカーネル１０５は、リアルタイムＯＳスケジューラ１０８をスタートさせる(ステップＳ１０９)。
【００４６】
リアルタイムＯＳスケジューラ１０８がスタートすると、リアルタイムＯＳタスク１０９（２０３）に制御が渡り、これにより汎用ＯＳカーネル論理空間１０２の汎用ＯＳカーネル２０４は決められた手順にのっとり、初期化プロセス等の汎用ＯＳプロセス２０５を生成し実行する。
【００４７】
次に、本実施の形態の割り込み・例外処理の動作について図６等と共に説明する。図６は、本発明になるメモリ管理方法の一実施の形態の割り込み・例外処理時の動作説明用フローチャートを示す。
【００４８】
割り込み・例外が発生すると、登録された割り込みベクトルなどに従って、まず、一次割り込み処理マネージャ１０４に処理が渡る。これにより、一次割り込み処理マネージャ１０４は、システムアーキテクチャに必要な共通の割り込み処理を行う(ステップＳ２０１)。次に、一次割り込み処理マネージャ１０４は、割り込みがメモリ管理例外かどうかの判断を行う(ステップＳ２０２)。
【００４９】
メモリ管理例外であれば（ステップＳ２０２のｙｅｓ）、一次割り込み処理マネージャ１０４は、汎用ＯＳのメモリ管理例外処理を呼び出し(ステップＳ２０３)、汎用ＯＳカーネル内にあるメモリ管理マネージャ１１０がメモリ管理例外処理を行う(ステップＳ２０４)。ここでのメモリ管理例外処理は、ページ違反など許可のない処理への対応や、汎用ＯＳサイドのデマンド・ページングシステムによる、汎用ＯＳプロセス１０３のメモリ確保などの処理である。リアルタイムＯＳ実行時は、ブート初期化時に全ての論理空間が物理空間に割り当てられているため、基本的にはメモリ管理例外は発生しない。
【００５０】
メモリ管理例外でない場合は(ステップＳ２０２のＮｏ)、一次割り込み処理マネージャ１０４は、リアルタイムＯＳの割り込み・例外処理を呼び出す（ステップＳ２０５）。このリアルタイムＯＳの割り込み・例外処理の呼び出しにより、割り込みハンドラ１０６に制御が渡る。ステップＳ２０４又はＳ２０５の処理の後、最後に一次割り込み処理マネージャ１０４は、共通の割り込み終了処理を行い(ステップＳ２０６)、割り込みを終了する。
【００５１】
最後に、本実施の形態のリアルタイムＯＳの実行中のメモリ確保・解放動作について図７等と共に説明する。図７は、本発明になるメモリ管理方法の一実施の形態のメモリ確保・解放時の動作説明用フローチャートを示す。
【００５２】
リアルタイムＯＳ（すなわち、リアルタイムＯＳタスク２０３やリアルタイムＯＳカーネル２０４）がメモリの確保・解放要求を発生すると(ステップＳ３０１)、リアルタイムＯＳカーネル２０３がメモリ確保・解放要求リクエストを生成し(ステップＳ３０２)、汎用ＯＳカーネル論理空間１０２のメモリ管理マネージャ１１０にメモリ確保・解放リクエスト１１１を転送する(ステップＳ３０３)。この転送には、リアルタイムＯＳカーネル１０５と汎用ＯＳカーネル１０２の共通メモリなどが使われる。
【００５３】
メモリ管理マネージャ１１０は、メモリ確保・解放要求リクエストに基づき、リアルタイムＯＳ論理空間１０１（４０２）の割り付け、削除を行う(ステップＳ３０４)。次に、メモリ管理マネージャ１１０は、メモリ確保・解放要求リクエストがメモリ確保要求かどうかの判断を行う(ステップＳ３０５)。削除の場合は(ステップＳ３０５の「削除」)、メモリ管理マネージャ１１０は、使用していたページ管理テーブル４０６の無効化と、対応するメモリエリア４０７をフリーメモリリストに追加する(ステップＳ３０６)。
【００５４】
一方、メモリ確保要求の場合は(ステップＳ３０５の「確保」)、メモリ管理マネージャ１１０は、管理している主記憶のフリーメモリリストに、メモリ確保要求された物理メモリ量の空きがあるか否かにより、メモリの確保が可能か否かの判断を行う(ステップＳ３０７)。フリーメモリリストに空きがなく、メモリの確保が不可能な場合は（ステップＳ３０７のＮｏ)、エラー終了処理を行い終了する(ステップＳ３０９)。
【００５５】
一方、フリーメモリリストに空きがありメモリ確保可能な場合は（ステップＳ３０７のｙｅｓ)、メモリ管理マネージャ１１０は、物理メモリをリアルタイムＯＳ論理空間１０１に割り付ける(ステップＳ３０８)。具体的には、対応セグメントのページ管理テーブル４０６を作成し、確保した物理アドレスをメモリエリア４０７に書き込み、処理を終了する。
【００５６】
以上説明した本実施の形態のメモリ管理方法及びメモリ管理装置によれば、リアルタイムＯＳをベースシステムとし、汎用ＯＳがリアルタイムＯＳの一つのタスクとして実装されてリアルタイムＯＳと汎用ＯＳとが共に動作するハイブリッドＯＳにおいて、リアルタイムＯＳタスク２０３やリアルタイムＯＳカーネル２０４からメモリ確保要求があった場合、汎用ＯＳカーネル論理空間１０２のメモリ管理マネージャ１１０がメモリの確保が可能か否かの判断を行い、空きエリアがある場合にリアルタイムＯＳ論理空間１０１に割り付けるようにしたため、メモリの有効利用が可能になる。すなわち、本実施の形態では、リアルタイムＯＳのメモリ管理を、ＭＭＵで管理されている汎用ＯＳの管理下のメモリを利用可能にすることで、図３（Ｂ）に示したように、汎用ＯＳとリアルタイムＯＳが管理するメモリエリア３０６として物理メモリである主記憶３０８を共用し、必要に応じてメモリの確保・解放が可能となるため、メモリの有効利用ができる。
【００５７】
また、本実施の形態のメモリ管理方法によれば、メモリ確保・解放要求は汎用ＯＳカーネル論理空間１０２のメモリ管理マネージャ１１０で処理され、メモリはＭＭＵ管理下のページ単位となるため、図９に示したようなフラグメンテーションは発生しない。また、不連続な空きページエリアも、連続した論理空間として割り付けることが可能になるため、メモリの利用効率を大幅に向上することができる。
【００５８】
更に、本実施形態では、リアルタイムＯＳ論理空間１０１には常に物理メモリが割り当てられているため、メモリ管理例外処理などによるリアルタイム性の低下も防ぐことができる。
【００５９】
なお、本発明は上記の実施の形態に限定されるものではなく、例えば、上記の実施の形態ではＭＭＵを持つアーキテクチャ上で、ＭＭＵをサポートしない一つのリアルタイムＯＳ（リアルタイムＯＳカーネル及びリアルタイムＯＳタスク）と、ＭＭＵをサポートする一つの汎用ＯＳ（汎用ＯＳカーネル及び汎用ＯＳプロセス）とが同時に動作可能なハイブリッドＯＳに適用するものとして説明したが、一つ以上のリアルタイムＯＳと一つ以上の汎用ＯＳとが同時に動作可能なハイブリッドＯＳであれば、本発明を適用することができる。
【００６０】
また、本発明は、図５〜図７に示したフローチャートの各ステップの処理をコンピュータにより動作させるメモリ管理プログラムも包含するものである。この場合、メモリ管理プログラムは、記録されている記録媒体からコンピュータにロードしてもよいし、通信ネットワークを介して配信されてコンピュータにロードしてもよい。
【符号の説明】
【００６１】
１００  メモリ管理装置
１０１、４０２  リアルタイムＯＳ論理空間
１０２  汎用ＯＳカーネル論理空間
１０３、４０１  汎用ＯＳプロセス論理空間
１０４  一次割り込み処理マネージャ
１０５、２０１  リアルタイムＯＳカーネル
１０６  リアルタイムＯＳ割り込みハンドラ
１０７、２０２  リアルタイムＯＳタスク
１０８  リアルタイムＯＳスケジューラ
１０９、２０３  リアルタイムＯＳタスク
１１０  メモリ管理マネージャ
１１１  メモリ確保・解放リクエスト
２００  一般的なハイブリッドＯＳ
２０４  汎用ＯＳカーネル
２０５  汎用ＯＳプロセス
３０１、３０７  リアルタイムＯＳが管理するメモリエリア
３０２  汎用ＯＳが管理するメモリエリア
３０６  汎用ＯＳとリアルタイムＯＳとが管理するメモリエリア
４０３、４０４  セグメント管理テーブル
４０５、４０６  ページ管理テーブル
４０７  メモリエリア（汎用ＯＳとリアルタイムＯＳとが管理するメモリエリア）
４０８  メモリエリア（Ｉ／Ｏエリア）
【図１】
2011257973.tif 000003
【図２】
2011257973.tif 000004
【図３】
2011257973.tif 000005
【図４】
2011257973.tif 000006
【図５】
2011257973.tif 000007
【図６】
2011257973.tif 000008
【図７】
2011257973.tif 000009
【図８】
2011257973.tif 000010
【図９】
2011257973.tif 000011