説明

メモリ管理方法及びメモリ管理装置

【課題】ハイブリッドOSにおいて、リアルタイムOSのリアルタイム性を失うことなく、メモリの有効利用を可能とすると共に、メモリの利用効率を向上させる。
【解決手段】メモリ管理マネージャ110は、ハードウェアであるMMUを制御するプログラムで、メモリ管理例外の例外・割り込み時にメモリ管理例外処理を行い、また、リアルタイムOSからのメモリ確保・解放リクエスト111の入力時にMMU管理下でリアルタイムOS論理空間101の割り付け・削除を行う。汎用OSカーネル論理空間102と、汎用OSプロセス論理空間103とは、リアルタイムOS論理空間101の一つのリアルタイムOSタスク109として取り扱われる。このメモリ管理装置100はリアルタイムOSのメモリ管理を、MMUで管理されている汎用OSの管理下のメモリを利用可能にすることで、汎用OSが管理し、スケジューリングはリアルタイムOSが管理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はメモリ管理方法及びメモリ管理装置に係り、特に一台のコンピュータ上でリアルタイムOS(オペレーティングシステム)と汎用OSとが動作するハイブリッドOSを持つシステムにおける、各OSによるメモリ管理方法及びメモリ管理装置に関する。
【背景技術】
【0002】
近年、一台のコンピュータ上で複数のオペレーティングシステム(OS)が動作するハイブリッドOSが各分野で利用されるようになってきている。ハイブリッドOSの中でも、リアルタイムOSと汎用OSとが動作するシステムでは、リアルタイムOSのリアルタイム性を生かしつつ、汎用OSが持つ豊富なリソースが利用可能となり、ロボット制御や通信端末等、機器制御分野で広く利用されるようになってきている。
【0003】
このハイブリッドOSシステムでは、リアルタイムOSをベースOSとし、汎用OSをリアルタイムOSの1つのタスクとして実装することにより、リアルタイム性の確保を目指しているものが多い。このハイブリッドOSシステムでは、汎用OSはリアルタイムOSの制御下にあるリアルタイムタスクの一つとして実行される。
【0004】
しかし、このハイブリッドOSシステムでは、汎用OSの制御下で実行されるプロセスがリアルタイムタスクと協調して動作するためにリアルタイムタスクの有する高い優先度を継承させる場合に、協調して動作するプロセス以外のプロセスも高い優先度で実行されることに起因してリアルタイムタスクの実行が妨げられることがある。
【0005】
そこで、特許文献1記載のタスク管理装置では、汎用OSの制御下で実行されるプロセスと協調して動作するオペレーティングシステムタスク以外の他のタスクが、協調動作をオペレーティングシステムタスクに要求して待ち状態になる際に、待ち状態にある他のタスクの優先度よりも高いか否かを判定し、待ち状態にある他のタスクの優先度よりも高いと判定したときに、オペレーティングシステムタスク及び待ち状態になる他のタスクと協調して動作するプロセスに、待ち状態になるタスクの優先度を継承させることで、リアルタイムタスクと協調して汎用OSの制御下で動作するプロセス以外の他のプロセスが高い優先度で実行されることを防ぐようにしている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−234658号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1記載のタスク管理装置では、メモリ管理に関しては、一般的にハイブリッドOSのブート(起動)時に、リアルタイムOSが使用するメモリと汎用OSが使用するメモリとが完全に切り分けられ、メモリの有効利用ができない。このことについて、図8と共に説明する。
【0008】
図8は、ハイブリッドOSにおける実行中のメモリマップの一例を示す。同図において、ハイブリッドOSのブート(起動)時に、汎用OSが管理するメモリエリア801と、リアルタイムOSが管理するメモリエリア803とが完全に切り分けられている。また、汎用OSが管理するメモリエリア801は、主記憶であり、ここにはページ単位のメモリ空きエリア802が存在するものとする。一方、リアルタイムOSが管理するメモリ803は、主記憶の一部とI/O(入出力)エリアとからなる。また、リアルタイムOSが管理するメモリ803のうち、ブート時フリーメモリプール804は既に全て利用されているものとする。
【0009】
このとき、リアルタイムOSでメモリ確保の要求が発生した場合、リアルタイムOSが管理するメモリエリア803には利用されていないメモリエリアが存在するにもかかわらず要求は失敗で終わり、メモリの有効利用ができない。
【0010】
また、従来のメモリ管理方法では、例えば、汎用OSはMMU(Memory Management Unit;記憶管理装置)を利用したメモリ管理を行うのに対し、リアルタイムOSのメモリ管理ではMMUを用いないため、メモリの確保と解放を繰り返していくとメモリフラグメンテーション(断片化)が起き、メモリ利用効率が大きく低下する。このことについて、図9と共に説明する。
【0011】
図9は、従来のメモリ管理方法による、リアルタイムOS実行時のフラグメンテーションを示す。同図において、リアルタイムOSが管理するメモリエリア900は、ブート時に割り付けられるブート時割り付けメモリ901と、ブート時フリーメモリプール902とからなる。リアルタイムOSは、実行時に発生するメモリ確保・解放要求を処理する。そのメモリ確保要求は、ブート時フリーメモリプール902より割り付けられる。ここで、メモリ確保とメモリ解放とが繰り返されると、ブート時フリーメモリプール902のメモリ空きエリア903はフラグメンテーションが発生し、利用効率が大きく低下する。
【0012】
本発明は以上の点に鑑みなされたもので、MMUを有するアーキテクチャ上でリアルタイムOSと汎用OSの両方が動作するハイブリッドOSにおいて、MMUをサポートしていないリアルタイムOSのメモリ管理を、MMUで管理されている汎用OSの管理下のメモリを利用可能にすることで、リアルタイムOSのリアルタイム性を失うことなく、メモリの有効利用を可能とすると共に、メモリの利用効率を向上させるメモリ管理方法及びメモリ管理装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記の目的を達成するため、本発明のメモリ管理方法は、スケジューリングの管理手段を有する、メモリ管理装置をサポートしない1つ以上の第1のオペレーティングシステムをベースオペレーティングシステムとして、第1のオペレーティングシステムと共に動作すると共に、メモリ管理装置を利用してメモリ管理を行う1つ以上の第2のオペレーティングシステムのブート後に、第2のオペレーティングシステムが第1のオペレーティングシステムの論理空間を作成する第1のステップと、第2のオペレーティングシステムが、作成した第1のオペレーティングシステムの論理空間の物理的なメモリエリアを確保する第2のステップと、第2のステップで確保された物理的なメモリエリアに、第1のオペレーティングシステムをブートして、メモリ管理装置を作動させてから制御を第1のオペレーティングシステムに渡す第3のステップと、第3のステップで制御が渡された第1のオペレーティングシステムが、自身を初期化後に第2のオペレーティングシステムを第1のオペレーティングシステムの一つのタスクとして登録する第4のステップと、第1のオペレーティングシステムがスケジューラをスタートする第5のステップと、一次割り込み処理手段により、割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、メモリ管理例外のときは第2のオペレーティングシステムにメモリ管理例外の処理をさせ、その他の割り込み・例外のときには第1のオペレーティングシステムにその他の割り込み・例外の処理をさせるように振り分ける第6のステップと、第1のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を第2のオペレーティングシステムに供給して、第2のオペレーティングシステムによりメモリ管理装置の管理下でメモリの確保・解放の処理を行わせる第7のステップと、を含むことを特徴とする。
【0014】
また、上記の目的を達成するため、本発明のメモリ管理方法は、上記の第2のステップは、メモリ管理装置により第1のオペレーティングシステムのメモリエリアを作成する際、第1のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする。
【0015】
また、上記の目的を達成するため、本発明のメモリ管理装置は、スケジューリングの管理手段を有する、メモリ管理装置をサポートしない1つ以上の第1のオペレーティングシステムと、第1のオペレーティングシステムをベースオペレーティングシステムとし、第1のオペレーティングシステムの一つのタスクとして実装されて第1のオペレーティングシステムと共に動作すると共に、メモリ管理装置を利用して自身と第1のオペレーティングシステムのメモリ管理をそれぞれ行う1つ以上の第2のオペレーティングシステムと、割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、メモリ管理例外のときは第2のオペレーティングシステムにメモリ管理例外の処理をさせ、その他の割り込み・例外のときには第1のオペレーティングシステムにその他の割り込み・例外の処理をさせるように振り分ける一次割り込み処理手段と、第1のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を第2のオペレーティングシステムに供給して、第2のオペレーティングシステムによりメモリ管理装置の管理下でメモリの確保・解放の処理を行わせるメモリ確保・解放要求処理手段と、を有することを特徴とする。
【0016】
また、上記の目的を達成するため、本発明のメモリ管理装置は、上記の第2のオペレーティングシステムは、メモリ管理装置により第1のオペレーティングシステムのメモリエリアを作成する際、第1のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする。
【発明の効果】
【0017】
本発明によれば、スケジューリングは第1のオペレーティングシステムが管理し、メモリ管理は第2のオペレーティングシステムが管理することで、第1のオペレーティングシステムであるリアルタイムOSのメモリ管理を、MMUで管理されている第2のオペレーティングシステムである汎用OSの管理下のメモリを利用可能にすることで、リアルタイムOSのリアルタイム性を失うことなく、メモリの有効利用ができる。
【0018】
また、本発明によれば、メモリ確保・解放要求は汎用OSカーネル論理空間のメモリ管理マネージャで処理され、メモリはMMU管理下のページ単位となるため、フラグメンテーションは発生せず、また、不連続な空きページエリアも、連続した論理空間として割り付けることが可能になるため、メモリの利用効率を大幅に向上することができる。
【図面の簡単な説明】
【0019】
【図1】本発明のメモリ管理装置の一実施の形態の構成を示す図である。
【図2】一般的なハイブリッドOSの一例の構成を示す図である。
【図3】従来のメモリ管理方法によるメモリマップと、本発明のメモリ管理方法及びメモリ管理装置によるメモリマップとを示す図である。
【図4】本発明のメモリ管理方法及びメモリ管理装置の一実施の形態を説明する図である。
【図5】本発明のメモリ管理方法の一実施の形態のブート時の動作説明用フローチャートである。
【図6】本発明のメモリ管理方法の一実施の形態の割り込み・例外処理時の動作説明用フローチャートである。
【図7】本発明のメモリ管理方法の一実施の形態のメモリ確保・解放時の動作説明用フローチャートである。
【図8】従来のメモリ管理方法によるハイブリッドOS実行中のメモリマップの一例を示す図である。
【図9】従来のメモリ管理方法によるリアルタイムOS実行時のフラグメンテーションの一例を示す図である。
【発明を実施するための形態】
【0020】
次に、本発明の実施の形態について図面を参照して説明する。
【0021】
図1は、本発明になるメモリ管理装置の一実施の形態の構成を示す。同図に示すように、メモリ管理装置100は、ハイブリッドOSシステム論理的なメモリ空間として、リアルタイムOS論理空間101、汎用OSカーネル論理空間102、汎用OSプロセス論理空間103から構成されている。また、ハードウェア割り込み、例外処理の一次処理を行い、割り込みがメモリ管理例外であるかどうかの判断を行う一次割り込み処理マネージャ104を有する。一次割り込み処理マネージャ104は、メモリ管理例外は汎用OSカーネルに処理させ、その他の割り込み・例外はリアルタイムOSカーネル105に処理させるように振り分ける。一次割り込み処理マネージャ104は、本発明の一次割り込み処理手段を構成する。
【0022】
リアルタイムOS論理空間101は、リアルタイムOSカーネル105がベースOSとなり、リアルタイムOSタスク107がリアルタイムOSスケジューラ108のスケジューリング管理下におかれた構成である。また、リアルタイムOS論理空間101には、リアルタイムOSカーネル105は、メモリ管理例外以外の例外・割り込み時にリアルタイム処理の割り込み・例外処理を行うためにリアルタイムOS割り込みハンドラ106が設けられている。リアルタイムOS論理空間101は、MMU(Memory Management Unit;記憶管理装置)をサポートしないリアルタイムOSのメモリ空間である。
【0023】
一方、汎用OSカーネル論理空間102内には、メモリ管理マネージャ110が設けられている。メモリ管理マネージャ110は、ハードウェアであるMMUを制御するプログラムで、メモリ管理例外の例外・割り込み時にメモリ管理例外処理を行い、また、リアルタイムOSからのメモリ確保・解放リクエスト111の入力時にMMU管理下でリアルタイムOS論理空間101の割り付け・削除を行う。メモリ管理マネージャ110の上記のリアルタイムOS論理空間101の割り付け・削除機能は、本発明のメモリ確保・開放要求処理手段を構成する。
【0024】
汎用OSカーネル論理空間102と、汎用OSプロセス論理空間103とはリアルタイムOSタスク109を構成している。従って、このリアルタイムOSタスク109は、リアルタイムOSタスク107のような通常のネイティブタスクとは異なる構成であるが、リアルタイムOSカーネル105から見たときには、リアルタイムOSタスク107と同じリアルタイムOSタスクである。すなわち、汎用OSカーネル論理空間102と、汎用OSプロセス論理空間103とは、リアルタイムOS論理空間101の一つのタスクとして取り扱われる。リアルタイムOSタスク109のメモリ空間は、MMUをサポートする汎用OSのメモリ空間である。スケジューリング機能に関しては、本実施の形態ではリアルタイムOSカーネル105が管理する。
【0025】
ここで、一般的なハイブリッドOSの構成について、図2及び図3を用いて説明する。図2は、一般的なハイブリッドOSの一例の構成を示す図であり、図3は、従来のメモリ管理方法によるメモリマップと、本発明のメモリ管理方法及びメモリ管理装置によるメモリマップとを示す図である。
【0026】
図2に示すように、一般的なハイブリッドOS200は、リアルタイムOSカーネル201がベースOSとなり、リアルタイムOSタスク202と、汎用OSカーネル204及び汎用OSプロセス205がリアルタイムOSタスク203としてリアルタイムOSカーネル201のスケジューリング管理下に置かれている。
【0027】
このときのメモリマップは図3(A)に示すように、リアルタイムOSが管理するメモリエリア301と汎用OSが管理するメモリエリア302とからなり、汎用OSが管理するメモリエリア302は主記憶305にあるのに対し、リアルタイムOSが管理するメモリエリア301はI/Oエリア303と主記憶の一部304にある。すなわち、主記憶がリアルタイムOSが管理する主記憶部分304と汎用OSが管理する主記憶部分305とに完全に切り分けられている。一般的にはブート時それぞれのOSが管理する主記憶部分304及び305を切り分け、各OSをブートする。
【0028】
また、リアルタイムOS実行時は、MMUなどによるメモリ管理は行われておらず、すべて実メモリで管理される。リアルタイムOSタスクやリアルタイムOSカーネルがメモリ確保要求を出した場合、リアルタイムOSは管理下のメモリエリア301からメモリを割り当てる。そのため、図8と共に説明したように、上記の場合に汎用OSが管理するメモリエリア302に空きメモリ(図8の802)が存在していても利用できない。また、MMUを用いていないため、メモリの確保と解放を繰り返していくと、図9と共に説明したようにメモリのフラグメンテーションが発生し、メモリの利用効率が著しく低下する。
【0029】
そこで、本実施の形態では、上記の課題を解決するために、MMUをサポートしていないリアルタイムOSのメモリ管理を、MMUで管理されている汎用OSの管理下のメモリを利用可能にすることで、リアルタイムOSのリアルタイム性を失うことなく、メモリの有効利用を可能とすると共に、メモリの利用効率を向上させる。この概要について、図1及び図3を用いて説明する。
【0030】
本実施の形態での実行単位としてのタスクは、一般的なハイブリッドOSと同様に、実装されている。しかし、本実施の形態ではリアルタイムOS及び汎用OSの実行時は、MMUによるメモリ管理が行われており、図1に示すように、論理的なメモリ空間は、リアルタイムOS論理空間101、汎用OSカーネル論理空間102、及び汎用OSプロセス論理空間103から構成されている。
【0031】
また、本実施の形態ではメモリマップは、図3(B)に示すように、汎用OSとリアルタイムOSが管理するメモリエリア306として主記憶308を共用し、汎用OSとリアルタイムOSで動的に管理する。また、I/Oエリア309に関しては、リアルタイムOSが管理するメモリエリア307とし、リアルタイムOSが管理する。
【0032】
次に、本実施の形態のメモリ管理の詳細について、図4を用いて説明する。図4は、本発明になるメモリ管理方法の一実施の形態を説明する図を示す。
【0033】
図4において、汎用OSプロセス論理空間401(図1の汎用OSプロセス論理空間103に相当)は、汎用OSカーネルによって、プログラム、データ、スタック等のセグメントにより構成されたセグメント管理テーブル403が割り付けられる。セグメント管理テーブル403の各セグメントは、ページ管理テーブル405により物理アドレスとの対応がとられており、実際のメモリエリア407(図3(B)の汎用OSとリアルタイムOSが管理するメモリエリア306に相当)内のどのページを参照しているか示されている。
【0034】
一方、リアルタイムOS論理空間402(図1のリアルタイムOS論理空間101に相当)は、リアルタイムOSのカーネル、各タスク及びI/Oエリアが割り付けられ、更にそれぞれについてカーネル、タスク・フリーエリア、I/Oエリアなどのセグメントにより構成されるセグメント管理テーブル404が割り付けられる。
【0035】
セグメント管理テーブル404の各セグメントは、ページ管理テーブル406により物理アドレスとの対応がとられており、実際のメモリエリア407内のどのページを参照しているか、あるいはメモリエリア408(図3(B)のリアルタイムOSが管理するメモリエリア307のI/Oエリアに相当)内のどのページを参照しているか示されている。
【0036】
このリアルタイムOS論理空間402に対するメモリ管理は、メモリに必ず論理空間に対応する物理空間が存在することで、ページ違反などのメモリ例外が起きないようなメモリ管理構成となっている点で汎用OSプロセス論理空間401に対するメモリ管理と相違する。
【0037】
次に、本実施の形態におけるメモリ管理方法の動作について説明する。
【0038】
最初にブート時の動作について図5等と共に説明する。図5は、本発明になるメモリ管理方法の一実施の形態のブート時の動作説明用フローチャートを示す。
【0039】
まず、ブートローダが汎用OSカーネル204をブートする(ステップS101)。汎用OSカーネル204は、図1に102で示したようにその論理空間にメモリ管理マネージャ110を含んでおり、上記のブートにより汎用OSカーネル204はメモリ管理マネージャにより自身の初期化を行う(ステップS102)。この初期化により、汎用OSカーネル論理空間102内のメモリ管理マネージャ110は、物理メモリに対応するページ管理テーブル405を作成し、フリーリストに登録する。
【0040】
次に、汎用OSカーネル204がリアルタイムOS論理空間101(402)を作成する(ステップS103)。具体的には汎用OSカーネル204は、リアルタイムOS論理空間402のカーネル、タスク・フリーエリア、I/Oエリアの各セグメントからなるセグメント管理テーブル404を作成し、更に、そのセグメント管理テーブル404内の各セグメントに対応するページ管理テーブル406を作成する。
【0041】
次に、汎用OSカーネル論理空間102にロードされてくる汎用OSカーネルプログラムが、先に作成したページフリーリストより、リアルタイムOS論理空間101(402)に必要とする物理的なメモリエリア407、408を確保し(ステップS104)、ページ管理テーブルにそのメモリエリアの物理アドレスを登録する。このとき、リアルタイムOSが必要とするリアルタイムOS論理空間101(402)は実際の物理メモリであるメモリエリア407にすべて割り付けられたものとなる。
【0042】
すなわち、ステップS103及びS104により、汎用OSのメモリ管理マネージャ110によりリアルタイムOS論理空間101(402)のメモリエリアを作成する際、リアルタイムOS論理空間101(402)に対応するメモリページをアクセス可能な実空間のメモリエリア407でのみ構成することにより、リアルタイムOS実行時のメモリ例外発生をなくすようにしている。
【0043】
また、割り込み処理に関しては、図1の一次割り込み処理マネージャ104が全ての割り込みを処理するよう、割り込みベクトルなどの設定を行う。割り込み処理マネージャ104は汎用OSの一部としてロードされ、システムアーキテクチャに合わせ、割り込み処理の実行が可能な空間に配置される。
【0044】
続いて、汎用OSカーネルプログラムは、確保したリアルタイムOS論理空間101(402)のメモリエリア407、408にリアルタイムOSをブートした後(ステップS105)、MMUの機能を作動させる(ステップS106)。その後、汎用OSカーネルプログラムは、リアルタイムOSへ制御を渡す(ステップS107)。これにより、リアルタイムOSは用意されたリアルタイムOS論理空間101(402)にてプログラムの実行を開始する。
【0045】
すなわち、リアルタイムOS論理空間101(402)にロードされているプログラムであるリアルタイムOSカーネル105は、まず自身の初期化を行い、汎用OS(汎用OSカーネル論理空間102及び汎用OSプロセス論理空間103)を自身の1タスク(すなわち、リアルタイムOSタスク109,203)として登録し(ステップS108)。続いて、リアルタイムOSカーネル105は、リアルタイムOSスケジューラ108をスタートさせる(ステップS109)。
【0046】
リアルタイムOSスケジューラ108がスタートすると、リアルタイムOSタスク109(203)に制御が渡り、これにより汎用OSカーネル論理空間102の汎用OSカーネル204は決められた手順にのっとり、初期化プロセス等の汎用OSプロセス205を生成し実行する。
【0047】
次に、本実施の形態の割り込み・例外処理の動作について図6等と共に説明する。図6は、本発明になるメモリ管理方法の一実施の形態の割り込み・例外処理時の動作説明用フローチャートを示す。
【0048】
割り込み・例外が発生すると、登録された割り込みベクトルなどに従って、まず、一次割り込み処理マネージャ104に処理が渡る。これにより、一次割り込み処理マネージャ104は、システムアーキテクチャに必要な共通の割り込み処理を行う(ステップS201)。次に、一次割り込み処理マネージャ104は、割り込みがメモリ管理例外かどうかの判断を行う(ステップS202)。
【0049】
メモリ管理例外であれば(ステップS202のyes)、一次割り込み処理マネージャ104は、汎用OSのメモリ管理例外処理を呼び出し(ステップS203)、汎用OSカーネル内にあるメモリ管理マネージャ110がメモリ管理例外処理を行う(ステップS204)。ここでのメモリ管理例外処理は、ページ違反など許可のない処理への対応や、汎用OSサイドのデマンド・ページングシステムによる、汎用OSプロセス103のメモリ確保などの処理である。リアルタイムOS実行時は、ブート初期化時に全ての論理空間が物理空間に割り当てられているため、基本的にはメモリ管理例外は発生しない。
【0050】
メモリ管理例外でない場合は(ステップS202のNo)、一次割り込み処理マネージャ104は、リアルタイムOSの割り込み・例外処理を呼び出す(ステップS205)。このリアルタイムOSの割り込み・例外処理の呼び出しにより、割り込みハンドラ106に制御が渡る。ステップS204又はS205の処理の後、最後に一次割り込み処理マネージャ104は、共通の割り込み終了処理を行い(ステップS206)、割り込みを終了する。
【0051】
最後に、本実施の形態のリアルタイムOSの実行中のメモリ確保・解放動作について図7等と共に説明する。図7は、本発明になるメモリ管理方法の一実施の形態のメモリ確保・解放時の動作説明用フローチャートを示す。
【0052】
リアルタイムOS(すなわち、リアルタイムOSタスク203やリアルタイムOSカーネル204)がメモリの確保・解放要求を発生すると(ステップS301)、リアルタイムOSカーネル203がメモリ確保・解放要求リクエストを生成し(ステップS302)、汎用OSカーネル論理空間102のメモリ管理マネージャ110にメモリ確保・解放リクエスト111を転送する(ステップS303)。この転送には、リアルタイムOSカーネル105と汎用OSカーネル102の共通メモリなどが使われる。
【0053】
メモリ管理マネージャ110は、メモリ確保・解放要求リクエストに基づき、リアルタイムOS論理空間101(402)の割り付け、削除を行う(ステップS304)。次に、メモリ管理マネージャ110は、メモリ確保・解放要求リクエストがメモリ確保要求かどうかの判断を行う(ステップS305)。削除の場合は(ステップS305の「削除」)、メモリ管理マネージャ110は、使用していたページ管理テーブル406の無効化と、対応するメモリエリア407をフリーメモリリストに追加する(ステップS306)。
【0054】
一方、メモリ確保要求の場合は(ステップS305の「確保」)、メモリ管理マネージャ110は、管理している主記憶のフリーメモリリストに、メモリ確保要求された物理メモリ量の空きがあるか否かにより、メモリの確保が可能か否かの判断を行う(ステップS307)。フリーメモリリストに空きがなく、メモリの確保が不可能な場合は(ステップS307のNo)、エラー終了処理を行い終了する(ステップS309)。
【0055】
一方、フリーメモリリストに空きがありメモリ確保可能な場合は(ステップS307のyes)、メモリ管理マネージャ110は、物理メモリをリアルタイムOS論理空間101に割り付ける(ステップS308)。具体的には、対応セグメントのページ管理テーブル406を作成し、確保した物理アドレスをメモリエリア407に書き込み、処理を終了する。
【0056】
以上説明した本実施の形態のメモリ管理方法及びメモリ管理装置によれば、リアルタイムOSをベースシステムとし、汎用OSがリアルタイムOSの一つのタスクとして実装されてリアルタイムOSと汎用OSとが共に動作するハイブリッドOSにおいて、リアルタイムOSタスク203やリアルタイムOSカーネル204からメモリ確保要求があった場合、汎用OSカーネル論理空間102のメモリ管理マネージャ110がメモリの確保が可能か否かの判断を行い、空きエリアがある場合にリアルタイムOS論理空間101に割り付けるようにしたため、メモリの有効利用が可能になる。すなわち、本実施の形態では、リアルタイムOSのメモリ管理を、MMUで管理されている汎用OSの管理下のメモリを利用可能にすることで、図3(B)に示したように、汎用OSとリアルタイムOSが管理するメモリエリア306として物理メモリである主記憶308を共用し、必要に応じてメモリの確保・解放が可能となるため、メモリの有効利用ができる。
【0057】
また、本実施の形態のメモリ管理方法によれば、メモリ確保・解放要求は汎用OSカーネル論理空間102のメモリ管理マネージャ110で処理され、メモリはMMU管理下のページ単位となるため、図9に示したようなフラグメンテーションは発生しない。また、不連続な空きページエリアも、連続した論理空間として割り付けることが可能になるため、メモリの利用効率を大幅に向上することができる。
【0058】
更に、本実施形態では、リアルタイムOS論理空間101には常に物理メモリが割り当てられているため、メモリ管理例外処理などによるリアルタイム性の低下も防ぐことができる。
【0059】
なお、本発明は上記の実施の形態に限定されるものではなく、例えば、上記の実施の形態ではMMUを持つアーキテクチャ上で、MMUをサポートしない一つのリアルタイムOS(リアルタイムOSカーネル及びリアルタイムOSタスク)と、MMUをサポートする一つの汎用OS(汎用OSカーネル及び汎用OSプロセス)とが同時に動作可能なハイブリッドOSに適用するものとして説明したが、一つ以上のリアルタイムOSと一つ以上の汎用OSとが同時に動作可能なハイブリッドOSであれば、本発明を適用することができる。
【0060】
また、本発明は、図5〜図7に示したフローチャートの各ステップの処理をコンピュータにより動作させるメモリ管理プログラムも包含するものである。この場合、メモリ管理プログラムは、記録されている記録媒体からコンピュータにロードしてもよいし、通信ネットワークを介して配信されてコンピュータにロードしてもよい。
【符号の説明】
【0061】
100 メモリ管理装置
101、402 リアルタイムOS論理空間
102 汎用OSカーネル論理空間
103、401 汎用OSプロセス論理空間
104 一次割り込み処理マネージャ
105、201 リアルタイムOSカーネル
106 リアルタイムOS割り込みハンドラ
107、202 リアルタイムOSタスク
108 リアルタイムOSスケジューラ
109、203 リアルタイムOSタスク
110 メモリ管理マネージャ
111 メモリ確保・解放リクエスト
200 一般的なハイブリッドOS
204 汎用OSカーネル
205 汎用OSプロセス
301、307 リアルタイムOSが管理するメモリエリア
302 汎用OSが管理するメモリエリア
306 汎用OSとリアルタイムOSとが管理するメモリエリア
403、404 セグメント管理テーブル
405、406 ページ管理テーブル
407 メモリエリア(汎用OSとリアルタイムOSとが管理するメモリエリア)
408 メモリエリア(I/Oエリア)

【特許請求の範囲】
【請求項1】
スケジューリングの管理手段を有する、メモリ管理装置をサポートしない1つ以上の第1のオペレーティングシステムをベースオペレーティングシステムとして、前記第1のオペレーティングシステムと共に動作すると共に、前記メモリ管理装置を利用してメモリ管理を行う1つ以上の第2のオペレーティングシステムのブート後に、前記第2のオペレーティングシステムが前記第1のオペレーティングシステムの論理空間を作成する第1のステップと、
前記第2のオペレーティングシステムが、作成した前記第1のオペレーティングシステムの論理空間の物理的なメモリエリアを確保する第2のステップと、
前記第2のステップで確保された前記物理的なメモリエリアに、前記第1のオペレーティングシステムをブートして、前記メモリ管理装置を作動させてから制御を前記第1のオペレーティングシステムに渡す第3のステップと、
前記第3のステップで制御が渡された前記第1のオペレーティングシステムが、自身を初期化後に前記第2のオペレーティングシステムを前記第1のオペレーティングシステムの一つのタスクとして登録する第4のステップと、
前記第1のオペレーティングシステムがスケジューラをスタートする第5のステップと、
一次割り込み処理手段により、割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、前記メモリ管理例外のときは前記第2のオペレーティングシステムに前記メモリ管理例外の処理をさせ、前記その他の割り込み・例外のときには前記第1のオペレーティングシステムに前記その他の割り込み・例外の処理をさせるように振り分ける第6のステップと、
前記第1のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を前記第2のオペレーティングシステムに供給して、前記第2のオペレーティングシステムにより前記メモリ管理装置の管理下でメモリの確保・解放の処理を行わせる第7のステップと、
を含むことを特徴とするメモリ管理方法。
【請求項2】
前記第2のステップは、前記メモリ管理装置により前記第1のオペレーティングシステムのメモリエリアを作成する際、前記第1のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする請求項1記載のメモリ管理方法。
【請求項3】
スケジューリングの管理手段を有する、メモリ管理装置をサポートしない1つ以上の第1のオペレーティングシステムと、
前記第1のオペレーティングシステムをベースオペレーティングシステムとし、前記第1のオペレーティングシステムの一つのタスクとして実装されて前記第1のオペレーティングシステムと共に動作すると共に、前記メモリ管理装置を利用して自身と前記第1のオペレーティングシステムのメモリ管理をそれぞれ行う1つ以上の第2のオペレーティングシステムと、
割り込みがメモリ管理例外かその他の割り込み・例外かを判断し、前記メモリ管理例外のときは前記第2のオペレーティングシステムに前記メモリ管理例外の処理をさせ、前記その他の割り込み・例外のときには前記第1のオペレーティングシステムに前記その他の割り込み・例外の処理をさせるように振り分ける一次割り込み処理手段と、
前記第1のオペレーティングシステムにおいてメモリの確保・解放要求が発生した場合、そのメモリの確保・解放要求を前記第2のオペレーティングシステムに供給して、前記第2のオペレーティングシステムにより前記メモリ管理装置の管理下でメモリの確保・解放の処理を行わせるメモリ確保・解放要求処理手段と、
を有することを特徴とするメモリ管理装置。
【請求項4】
前記第2のオペレーティングシステムは、前記メモリ管理装置により前記第1のオペレーティングシステムのメモリエリアを作成する際、前記第1のオペレーティングシステムの論理空間に対応するメモリページをアクセス可能な実空間のメモリエリアでのみ構成することを特徴とする請求項3記載のメモリ管理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate