本発明は、コンピュータの分野に関し、特にコンピュータの分野におけるコンピュータシステムのメモリを管理する方法、メモリ管理ユニット及びコンピュータシステムに関する。
中程度のサーバ又はハイエンドサーバは、ある程度のフレキシビリティを有することが要求され、デバイスのホットスワップ機能は、フレキシビリティの重要な部分である。すなわち、サーバは、キャパシティの拡張とフォルト隔離の課題を達成するため、コンピュータシステムをインタラプトさせることなくデバイスの動的な追加又は削除を実現し、これにより、コンピュータシステムの信頼性、サービス可用性又はエネルギーの節約の要求を満たす。
ホットスワップデバイスは、一般に、例えば、プロセッサ、メモリ又は入出力(IO)周辺デバイスなどを含み、ここで、メモリは、コンピュータシステムの重要なリソースの1つであるため、ホットスワップの最重要な構成部分の1つである。メモリホットプラギング(memory hot−plugging)は、コンピュータシステムをインタラプトさせることなく追加されるメモリデバイスであり、メモリホットドローイング(memory hot−drawing)は、コンピュータシステムをインタラプトさせることなく追加されるメモリデバイスである。メモリホットドローイングは、ターゲットメモリにおいて占有されるメモリをマイグレート及びリカバすることを必要とする。しかしながら、コンピュータシステムには、カーネルにより占有される物理ページとユーザプロセスによりロックされる物理ページとを含むマイグレート不可なページが存在する。
アプリケーションプロセスでは、カーネルにより占有される物理ページはカーネルによるメモリの適用処理においてコンピュータシステムによりマイグレート不可なページとしてマーク付けされるため、コンピュータシステムは、ターゲットメモリをオフラインに取得する目的を達成するため、特定エリア(マイグレート不可なメモリエリア)から物理メモリを割り当てる。ユーザプロセスがメモリに適用されると、メモリは、共通のマイグレート可能なメモリに属するが、ユーザプロセスがメモリをロックすることを指定した後、メモリは、ターゲットメモリをオフラインに取得する際の障害になるマイグレート不可なページとしてマーク付けされる。ユーザプロセスによりロックされたメモリがオフラインに取得可能であるか否かは、メモリのホットスワップを実現する際のキーファクタの1つである。
ユーザプロセスによりロックされるメモリがオフラインに取得することが困難であるという問題のため、繰り返しの試行中にメモリがユーザプロセスによりアンロックされるという予想のため、メモリをマイグレートするために試行が繰り返し行われる。しかしながら、繰り返しの試行を介したマイグレート方法は、ユーザプロセスによりロックされたメモリのアンロックがメモリをマイグレートするための試行によって全く影響を受けないため、メモリがオフラインに取得されることを保証することができず、これら2つの間の必要な関係は存在しない。従って、メモリをオフラインに取得する試行のプロセスにおいて、ユーザプロセスによりロックされるメモリは、永続的にロック状態に維持される可能性がある。
従って、ユーザプロセスによりロックされるメモリをオフラインに取得するため、コンピュータシステムのメモリを管理するのに適した手段が必要とされ、これにより、メモリのホットスワップを実現する。
本発明の実施例は、ユーザプロセスによりロックされたメモリをオフラインに取得し、これによりメモリのホットスワップを実現するコンピュータシステムのメモリを管理する方法、メモリ管理ユニット及びコンピュータシステムを提供する。
一態様では、本発明の実施例は、コンピュータシステムのメモリを管理する方法であって、ユーザプロセスにより送信された割当てリクエストであって、前記ユーザプロセスについて前記コンピュータシステムのメモリの割当てを要求するのに利用される前記割当てリクエストを受信するステップと、前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当てるステップと、前記メモリについてオフラインフラグを設定するステップであって、前記オフラインフラグは前記メモリについてオフラインモードを示す、前記設定するステップと、前記ユーザプロセスにより送信されたロッキングリクエストであって、前記メモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するステップと、前記メモリのオフラインフラグと前記ロッキングリクエストとに従って前記メモリをロックするステップと、前記メモリのオフラインフラグに従って前記メモリをオフラインに取得するステップとを有する方法を提供する。
他の態様では、本発明の実施例は、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュールと、前記第1受信モジュールにより受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュールと、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュールと、前記メモリのオフラインフラグと前記第2受信モジュールにより受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュールと、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュールとを有するメモリ管理ユニットを提供する。
さらなる他の態様では、本発明の実施例は、少なくとも1つのメモリと、本発明の実施例によるメモリ管理ユニットとを有するコンピュータシステムを提供する。メモリ管理ユニットは、少なくとも1つのメモリを管理するよう構成される。メモリ管理ユニットは、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュールと、前記第1受信モジュールにより受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュールと、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュールと、前記メモリのオフラインフラグと前記第2受信モジュールにより受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュールと、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュールとを有する。
上記技術的手段に基づき、本発明の実施例によるコンピュータシステムを管理する方法、メモリ管理ユニット及びコンピュータシステムにおいて、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得し、これにより、メモリのホットスワップを実現し、システムリソースの浪費を回避することが可能である。
本発明の実施例による技術的手段をより明確に説明するため、実施例を示す添付した図面が以下において概略的に紹介される。以下の説明における添付した図面は、本発明の一部の実施例であり、当業者は、創作的な努力なく添付した図面から他の図面を導出してもよい。
図1は、本発明の実施例によるコンピュータシステムのメモリを管理する方法の概略的なフローチャートである。
図2は、本発明の他の実施例によるコンピュータシステムのメモリを管理する方法の概略的なフローチャートである。
図3は、本発明のさらなる他の実施例によるコンピュータシステムのメモリを管理する方法の概略的なフローチャートである。
図4は、本発明の実施例によるメモリのオフラインモードを変更する方法の概略的なフローチャートである。
図5は、本発明の実施例によるメモリをロックする方法の概略的なフローチャートである。
図6は、本発明の実施例によるロックされたメモリをオフラインに取得する方法の概略的なフローチャートである。
図7は、本発明の実施例によるメモリをアンロックする方法の概略的なフローチャートである。
図8は、本発明の実施例によるメモリ管理ユニットの概略的なブロック図である。
図9は、本発明の他の実施例によるメモリ管理ユニットの概略的なブロック図である。
図10は、本発明のさらなる他の実施例によるメモリ管理ユニットの概略的なブロック図である。
図11は、本発明の実施例によるロッキングモジュールの概略的なブロック図である。
図12は、本発明の実施例によるオフラインモジュールの概略的なブロック図である。
図13は、本発明の実施例による判定モジュールの概略的なブロック図である。
図14は、本発明の実施例によるコンピュータシステムの概略的なブロック図である。
本発明の実施例による技術的手段は、本発明の実施例において添付した図面を参照して以下で明確に説明される。開示される実施例は本発明の実施例の全てでなく一部であることは明らかである。創作的な努力なく本発明の実施例に基づき当業者により取得される他のすべての実施例は、本発明の保護範囲内に属する。
本発明の実施例による技術的手段は、パーソナルコンピュータ(PC)、大規模コンピュータシステム又は各種スーパーコンピュータを含む各種コンピュータシステムに適用可能であることに留意すべきである。本発明の実施例では、少なくとも1つのメモリを含むコンピュータシステムが、説明のための具体例として取り上げられるが、本発明の実施例はこれに限定されるものでない。
図1は、本発明の実施例によるコンピュータシステムのメモリを管理する方法100の概略的なフローチャートである。図1に示されるように、方法100は以下を含む。
S110:ユーザプロセスに対するコンピュータシステムのメモリの割当てを要求するのに利用されるユーザプロセスにより送信される割り当て要求を受信する。
S120:割り当て要求に従ってユーザプロセスに対してメモリを割り当て、メモリのオフラインモードを示すのに利用されるオフラインフラグをメモリについて設定する。
S130:メモリがロックされることを要求するのに利用されるユーザプロセスにより送信されるロッキングリクエストを受信する。
S140:メモリのオフラインフラグとロッキングリクエストに従ってメモリをロックする。
S150:メモリのオフラインフラグに従ってメモリをオフラインに取得する。
ユーザプロセスにより送信され、コンピュータシステムのメモリの割当てを要求するのに利用される割り当てリクエストを受信した後、コンピュータシステムのカーネル、オペレーティングシステム又はメモリ管理ユニットは、ユーザプロセスに対してメモリを割り当て、メモリのオフラインモードを示すためのオフラインフラグをメモリについて設定し、ユーザプロセスにより送信され、メモリをロックすることを要求するのに利用されるリクエストの受信後、カーネル又はオペレーティングシステムは、ユーザプロセスのロックリクエストとメモリのオフラインフラグとに従ってメモリをロックし、ロックされたメモリをオフラインに取得することが要求されると、メモリのオフラインフラグに従ってメモリをオフラインに取得してもよい。
従って、本発明の実施例によるコンピュータシステムのメモリを管理する方法において、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定すると、カーネルは、ユーザプロセスによるロックされるメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、メモリのホットスワップを実現し、システムリソースの浪費を回避することが可能である。
本発明の実施例では、オフラインモード又はオフラインポリシーは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードの少なくとも1つを含むものであってもよい。任意的には、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードを含む。
デフォルトモードでは、ユーザプロセスは、デフォルトモードを介しメモリがオフラインに取得されることを指定し、ユーザプロセスがオフラインポリシーを指定しないとき、当該モードがまた利用されてもよい。マイグレートモードでは、メモリがロックされる前、メモリは、マイグレート不可エリアにマイグレートされる必要があり、その後にロックされる。通知モードでは、カーネルがメモリをオフラインに取得することが要求される前に、カーネルは、メモリをアンロックするためユーザプロセスをトリガする。強制アンロックモードでは、カーネルは、メモリをオフラインに取得することが要求されると、メモリを強制的にアンロックし、その後にメモリをオフラインに取得してもよい。本発明の実施例の4つのオフラインモードの名称及び概略は、本発明の実施例の理解を容易にするため単に与えられたものであり、本発明の実施例はこれに限定されるものでないことに留意すべきである。さらに、4つのオフラインモードの具体的な意味は、本発明の実施例において説明される具体的な処理を参照して理解されるべきである。
本発明の実施例では、ユーザプロセスは、要求に従って適用されるメモリのオフラインモードを変更する。すなわち、ユーザプロセスは、メモリのオフラインモードを設定する。従って、図2に示されるように、本発明の実施例によるコンピュータシステムのメモリを管理する方法100はさらに以下を含むものであってもよい。
S160:メモリについてユーザプロセスにより設定されるオフラインモードを示すモード情報を含み、ユーザプロセスにより送信される変更リクエストを受信する。
S170:モード情報に従ってユーザプロセスにより設定されたオフラインモードを示すようにメモリのオフラインフラグを変更する。
すなわち、ユーザプロセスがメモリについて適用された後、ユーザプロセスは、要求に従って適用されたメモリについてオフラインモードを設定し、モード情報に従ってカーネルがユーザプロセスにより設定されたオフラインモードを示すようにメモリのオフラインフラグを変更するように、モード情報を含む変更リクエストをカーネルに送信してもよい。
本発明の実施例では、カーネルがユーザプロセスにより送信されるロッキングリクエストを受信した後、カーネルは、メモリのオフラインフラグに従ってメモリのオフラインモードを決定し、メモリのオフラインモードがデフォルトモードである場合、カーネルは、所望されるようにメモリのオフラインモードをリセットしてもよい。すなわち、図2に示されるように、本発明の実施例による方法100はさらに以下を含むものであってもよい。
S180:メモリのオフラインモードがデフォルトモードである場合、コンピュータシステムの要求に従ってメモリのオフラインモードを再判定し、再判定されたオフラインモードを示すようにメモリのオフラインフラグを変更する。
任意的には、コンピュータシステムがシステム動作パフォーマンスを要求する場合、カーネルは、メモリのオフラインモードがデフォルトモードであると判定し、コンピュータシステムがホットスワップパフォーマンスを要求する場合、カーネルは、メモリのオフラインモードがマイグレートモードであると判定する。
本発明の実施例による方法はカーネル、オペレーティングシステム又はメモリ管理ユニットにより実行可能であることに留意すべきである。説明の簡単化のため、カーネルは以下において実行本体として利用されるが、本発明の実施例はこれに限定されるものでない。
具体的には、ステップS110において、ユーザプロセスは、ユーザプロセスの要求に従ってメモリの割当てを要求するため割当要求をカーネルに送信してもよい。
ステップS120において、カーネルは、割り当て要求に従ってユーザプロセスに対してメモリを割り当て、メモリに対して当該メモリのオフラインモードを示すのに利用されるオフラインフラグを設定する。任意的には、カーネルは、割り当てられたメモリについてデフォルトモードを示すオフラインフラグを設定する。例えば、カーネルは、メモリについてオフラインフラグPG_flagを追加し、当該オフラインフラグにDEFAULTの値を割り当て、すなわち、PG_flag=DEFAULTである。明らかに、カーネルはまたメモリに他のオフラインモードを設定してもよく、本発明の実施例はこれに限定されるものでない。
任意的には、ユーザプロセスは、カーネルにより提供されたインタフェースを介し適用されたメモリについてオフラインモード又はオフラインポリシーを設定又は形成してもよい。具体的には、ステップS160において、ユーザプロセスは、ユーザプロセスの要求に従って、メモリについてユーザプロセスにより設定されたオフラインモードを示すモード情報を含むメモリのオフラインモードを変更するための変更リクエストをカーネルに送信してもよい。例えば、変更リクエストは、DEFAULT、MIGRATE、NOTIFY及びUNLOCKなどの値に割り当てられるBEHAVIORパラメータを含むものであってもよく、それぞれは、ユーザプロセスがメモリのオフラインモードをデフォルトモード、マイグレートモード、通知モード及び強制アンロックモードとなるよう設定することを示す。
ステップS170において、カーネルは、モード情報に従ってメモリのオフラインモードを変更する。具体的には、カーネルは、変更リクエストにおいて送信されるBEHAVIORパラメータに従って、ユーザプロセスにより設定されたオフラインモードを示すようにメモリのオフラインフラグを変更してもよい。
具体的には、例えば、オフラインモードが変更されることが要求されるメモリAについて、カーネルは、変更リクエストに含まれるBEHAVIORパラメータを解析してもよい。BEHAVIOR==DEFAULTである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードをデフォルトモードとなるよう設定すると判定してもよい。このとき、カーネルは、メモリAのオフラインフラグPG_flagを変更してもよく、すなわち、オフラインフラグをDEFAULTの値に割り当て、PG_flag=DEFAULTとしてもよい。BEHAVIOR==MIGRATEである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードをマイグレートモードとなるよう設定していると判定してもよく、このとき、カーネルは、メモリAのオフラインフラグをMIGRATEの値に割り当て、すなわち、PG_flag=MIGRATEとしてもよい。同様に、BEHAVIOR==NOTIFYである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードを通知モードになるよう設定していると判定し、このとき、カーネルはメモリAのオフラインフラグをNOTIFYの値に割り当て、PG_flag=NOTIFYとしてもよい。BEHAVIOR==UNLOCKである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードが強制アンロックモードになるよう設定していると判定し、このとき、カーネルは、メモリAのオフラインフラグをUNLOCKの値に割り当て、すなわち、PG_flag=UNLOCKとしてもよい。
ステップS130において、ユーザプロセスは、ユーザプロセスの要求に従ってコンピュータシステムのメモリをロックするようカーネルに要求してもよい。
ステップS140において、カーネルがユーザプロセスにより送信されたロッキングリクエストを受信した後、カーネルは、ロックされるよう要求されたメモリのオフラインモードを判定する必要があり、具体的なオフラインモードとロッキングリクエストとに従ってメモリをロックする。
具体的には、カーネルは、メモリのオフラインフラグを解析することによって、メモリのオフラインモードを判定してもよい。例えば、メモリのオフラインフラグがPG_flag=DEFAULTであるとカーネルが判定した場合、メモリのオフラインモードはデフォルトモードである。同様に、メモリのオフラインフラグPG_flagがMIGRATE、NOTIFY又はUNLOCKであるとカーネルが判定した場合、メモリのオフラインモードはマイグレートモード、通知モード又は強制アンロックモードであるとカーネルは判定してもよい。
任意的には、メモリのオフラインフラグがデフォルトモード、通知モード又は強制アンロックモードを示す場合、メモリはロックされる。メモリのオフラインモードがマイグレートモードを示す場合、メモリはマイグレートされ、メモリがマイグレートに成功した場合、マイグレートされたメモリはロックされ、マイグレートモードを示すオフラインフラグがマイグレートされたメモリについて設定される。メモリがマイグレートに不成功であった場合、メモリはロックされ、メモリのオフラインフラグは、デフォルトモードを示すよう変更される。
任意的には、メモリのオフラインモードがデフォルトモードであるとカーネルが判定した場合、カーネルは、当該メモリについてより適切なオフラインモードを再判定するようにしてもよい。すなわち、ステップS180において、カーネルは、コンピュータシステムの要求に従ってメモリのオフラインモードを再判定し、再判定されたオフラインモードを示すようにメモリのオフラインフラグを変更する。
ステップS150において、カーネルがユーザプロセスによりロックされたメモリをオフラインに取得する必要がある場合、カーネルは、メモリのオフラインフラグを解析することによって、メモリのオフラインモードを判定し、オフラインモードに従ってメモリをオフラインに取得するようにしてもよい。
任意的には、メモリのオフラインフラグがデフォルトモード又はマイグレートモードを示す場合、メモリはアンロックとなるよう待機され、メモリがアンロックになった後にマイグレートされる。メモリのオフラインフラグが通知モードを示す場合、ユーザプロセスはメモリをアンロックするようトリガされ、メモリがアンロックされた後にメモリはマイグレートされ、メモリがマイグレートされた後にマイグレートされたメモリをロックするようユーザプロセスはトリガされる。メモリのオフラインフラグが強制アンロックモードを示す場合、メモリはアンロックされ、メモリがアンロックされた後にマイグレートされ、マイグレートされたメモリに対して、強制アンロックモードを示すオフラインフラグが設定される。
従って、本発明の実施例によるコンピュータシステムのメモリを管理する方法では、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定して、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、メモリのホットスワップを実現し、システムリソースの浪費を回避することができる。
本発明の実施例では、任意的には、図3に示されるように、ユーザプロセスがロックされたメモリをアンロックするため適用される場合、本発明の実施例による方法100はさらに以下を含む。
S190:メモリがアンロックされることを要求するのに利用されるユーザプロセスにより送信されるアンロッキングリクエストを受信する。
S195:アンロッキングリクエストに従って、メモリのオフラインフラグがマイグレートモードを示す場合、メモリをユーザプロセスが実行されているノードに再マイグレートする。
すなわち、ユーザプロセスがロックされたメモリのアンロックをアクティブに要求するプロセスでは、メモリのオフラインモードがマイグレートモードであることをメモリのオフラインフラグが示す場合、ロックされたメモリがアンロックされる前に、カーネルは、ユーザプロセスが実行されるノードにロックされたメモリを再マイグレートするため、ローカルメモリに適用されてもよい。デフォルトモード、通知モード又は強制アンロックモードであるオフラインモードによるロックされたメモリについて、カーネルは、ユーザプロセスの適用に従ってロックされたメモリを直接アンロックしてもよい。例えば、この場合、MIGRATEオフラインフラグのロックされたメモリについて、アンロックされる前に、メモリは、ユーザプロセスが実行されているノードに再マイグレートされ、システムパフォーマンスをさらに向上させることができる。
上記のステップのシーケンス番号は実行順序を意味しておらず、ステップの実行順序はファンクション及び内部ロジックに従って決定されるべきであり、本発明の実施例の実現処理を何れかの方法に限定することを意図していないことに留意すべきである。
従って、本発明の実施例によるコンピュータシステムのメモリを管理する方法では、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定して、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、メモリのホットスワップを実現し、システムパフォーマンスを向上させ、システムリソースの浪費を回避することができる。
図4〜7に示される特定の実施例を参照して、本発明の実施例によるメモリのオフラインモードを変更する方法、メモリをロックする方法、ロックされたメモリをオフラインに取得する方法、及びメモリをアンロックする方法が、以下で詳細に説明される。
図4に示されるように、本発明の実施例によるメモリのオフラインモードを設定する方法200は以下を含む。
S201:ユーザプロセスは、当該ユーザプロセスの要求に従ってメモリAについて適用される。
S202:カーネルは、ユーザプロセスにより送信される割り当てリクエストに従ってユーザプロセスについてメモリを割り当て、メモリのオフラインモードを示すのに利用されるオフラインフラグを当該メモリについて設定する。任意的には、カーネルは、メモリのオフラインフラグPG_flagをデフォルトモードDEFAULTとなるよう設定し、すなわち、PG_flag=DEFAULTである。
任意的には、ユーザプロセスがメモリAに適用され、メモリAを取得した後、ユーザプロセスは、カーネルにより提供されるインタフェースを介しメモリAのオフラインモードを設定してもよく、ここで、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードを含む。
S203:ユーザプロセスは、メモリのオフラインモードを変更するため適用される変更リクエストをカーネルに送信する。ここで、変更リクエストは、メモリについてユーザプロセスにより設定されるオフラインモードを示すためのモード情報を含み、モード情報は、例えば、BEHAVIORパラメータである。
S204:カーネルは、ユーザプロセスにより提供されるBEHAVIORパラメータなどのモード情報を解析することによって、メモリAについてユーザプロセスにより設定されるオフラインモードを判定する。
メモリAについてユーザプロセスにより設定されたオフラインモードがデフォルトモードである場合、プロセスはステップS205に移行し、メモリAについてユーザプロセスにより設定されるオフラインモードがデフォルトモードでない場合、プロセスはステップS206、S207又はS208に移行する。具体的には、メモリAについてユーザプロセスにより設定されるオフラインモードがマイグレートモードである場合、プロセスはステップS206に移行し、メモリAについてユーザプロセスにより設定されるオフラインモードが通知モードである場合、プロセスはステップS207に移行し、メモリAについてユーザプロセスにより設定されるオフラインモードが強制アンロックモードである場合、プロセスはステップS208に移行する。
S205:カーネルは、メモリのオフラインフラグにDEFAULTの値を割り当て、すなわち、PG_flag=DEFAULTである。このとき、デフォルトモードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAのオフラインフラグを設定するプロセスは終了する。
S206:カーネルは、メモリAのオフラインフラグに値を割り当て、すなわち、PG_flag=MIGRATEである。このとき、マイグレートモードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAについてオフラインモードを設定するプロセスは終了する。
S207:カーネルは、メモリAのオフラインフラグにNOTIFYの値を割り当て、すなわち、PG_flag=NOTIFYである。このとき、通知モードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAのオフラインモードを設定するプロセスは終了する。
S208:カーネルは、メモリAのオフラインフラグにUNLOCKの値を割り当て、すなわち、PG_flag=UNLOCKである。このとき、強制アンロックモードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAのオフラインモードを設定するプロセスは終了する。
上記のステップのシーケンス番号は実行順序を意味するものでなく、ステップの実行順序はファンクションと内部ロジックとに従って判定されるべきであり、本発明の実施例の実現プロセスを何れかの方法により限定することを意図していないことに留意すべきである。
従って、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定し、カーネルは、メモリをロックし、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得できる。
図5は、本発明の実施例によるメモリをロックする方法300の概略的なフローチャートである。図5に示されるように、方法300は以下を含む。
S301:ユーザプロセスは、要求に従ってメモリAをロックすることをカーネルに要求する。
S302:カーネルは、メモリAのオフラインフラグPG_flagを解析することによって、メモリAについてオフラインモードを判定する。
メモリAのオフラインモードがデフォルトモードである、すなわち、PG_flag==DEFAULTであるとカーネルが判定した場合、プロセスはステップS303に移行し、メモリAのオフラインモードがデフォルトモードでない、すなわち、PG_flag!=DEFAULTであるとカーネルが判定した場合、プロセスはステップS305、S309又はS310に移行する。具体的には、メモリAのオフラインモードがマイグレートモードである、すなわち、PG_flag==MIGRATEであるとカーネルが判定した場合、プロセスはステップS305に移行し、メモリAのオフラインモードが通知モードである、すなわち、PG_flag==NOTIFYであるとカーネルが判定した場合、プロセスはステップS309に移行し、メモリAのオフラインモードが強制アンロックモードである、すなわち、PG_flag==UNLOCKであるとカーネルが判定した場合、プロセスはステップS310に移行する。
S303:カーネルは、コンピュータシステムのコンフィギュレーション又は要求を判定する。コンピュータシステムがシステム動作パフォーマンスを要求しているとカーネルが判定した場合、プロセスはステップS304に移行し、コンピュータシステムがホットスワップパフォーマンスを要求した場合、プロセスはステップS305に移行する。
S304:メモリAのオフラインモードがデフォルトモードである場合、カーネルは、メモリAをロックし、メモリのオフラインフラグにDEFAULTの値を割り当て、すなわち、PG_flag=DEFAULTとする。このとき、デフォルトモードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
S305:メモリAのオフラインモードがマイグレートモードである場合、カーネルは、マイグレート不可エリアであり、一般にプライマリノードに限定されるシステムの指定されたエリアにおいて、メモリBに再適用する。
S306:カーネルは、メモリAをメモリBにマイグレートし、メモリAをリリースする。
S307:カーネルは、メモリAがマイグレートに成功したか判定する。メモリAがマイグレートに成功した場合、プロセスはステップS308に移行し、そうでない場合、プロセスはステップS304に移行する。
S308:カーネルは、メモリBをロックし、メモリBについてオフラインフラグPG_flagを設定し、オフラインフラグにMIGRATEの値を割り当て、PG_flag=MIGRATEである。このとき、マイグレートモードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
S309:メモリAのオフラインモードが通知モードである場合、カーネルはメモリAをロックする。このとき、通知モードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
S310:メモリAのオフラインモードが強制アンロックモードである場合、カーネルはメモリAをロックする。このとき、強制アンロックモードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
上記のステップのシーケンス番号は実行順序を意味せず、ステップの実行順序はファンクションと内部ロジックとに従って決定されるべきであり、本発明の実施例の実現プロセスを何れかの方法により限定することを意図していないことに留意すべきである。
図6は、本発明の実施例によるロックされたメモリをオフラインに取得する方法400の概略的なフローチャートである。図6に示されるように、方法400は以下を含む。
S401:カーネルは、要求に従ってメモリAをオフラインに取得することを決定する。
S402:カーネルは、メモリAのオフラインフラグPG_flagを解析することによって、メモリAについて設定されたオフラインモードを判定する。
メモリAのオフラインモードがデフォルトモードである、すなわち、PG_flag==DEFAULTであるとカーネルが判定した場合、プロセスはステップS403に移行し、メモリAのオフラインモードがデフォルトモードでない、すなわち、PG_flag!=DEFAULTであるとカーネルが判定した場合、プロセスはステップS403、S406又はS408に移行する。具体的には、メモリAのオフラインモードがマイグレートモードであるすなわち、PG_flag==MIGRATEであるとカーネルが判定した場合、プロセスはステップS403に移行し、メモリAのオフラインモードが通知モードである、すなわち、PG_flag==NOTIFYであるとカーネルが判定した場合、プロセスはステップS406に移行し、メモリAのオフラインモードが強制アンロックモードである、すなわち、PG_flag==UNLOCKであるとカーネルが判定した場合、プロセスはステップS408に移行する。
S403:メモリAのオフラインモードがデフォルトモード又はマイグレートモードである場合、カーネルは、メモリAがユーザプロセスによりアンロックされることを待機する。
S404:カーネルは、メモリAがユーザプロセスによりアンロックされているかチェックする。メモリAがアンロックされている場合、プロセスはステップS405に移行し、そうでない場合、プロセスはステップS403に移行し、すなわち、カーネルはメモリAがアンロックされることを待機し続ける。
S405:メモリAがユーザプロセスによりアンロックされている場合、カーネルは、メモリAをマイグレートする。メモリAのマイグレートはメモリAを他のメモリにマイグレートすることであることに留意すべきである。マイグレート後の新たなメモリについて、カーネルは、PG_flag=DEFAULTとなるように新たなメモリのオフラインフラグを設定してもよい。このとき、デフォルトモード又はマイグレートモードであるオフラインモードのメモリAについて、メモリAをオフラインに取得するプロセスは終了する。
S406:メモリAのオフラインモードが通知モードである場合、カーネルは、メモリをアンロックするためユーザプロセスをトリガし、メモリAがユーザプロセスによりアンロックされた後にメモリAをマイグレートする。すなわち、メモリAのオフラインモードが通知モードである場合、プロセスは、ステップS406からステップS404、S405及びS407に移行する。
S407:メモリAがマイグレートした後、カーネルは、マイグレート後の新たなメモリをロックするため、ユーザプロセスをトリガする。マイグレート後の新たなメモリについて、カーネルは、PG_flag=NOTIFYとなるように新たなメモリのオフラインフラグを設定してもよい。このとき、通知モードであるオフラインモードのメモリAについて、メモリAをオフラインに取得するプロセスは終了する。
S408:メモリAのオフラインモードが強制アンロックモードである場合、カーネルはメモリAをアンロックする。
S409:カーネルは、メモリAがアンロックに成功したかチェックする。メモリAがアンロックされた場合、プロセスはステップS410に移行し、そうでない場合、プロセスはステップS408に移行し、すなわち、カーネルは、メモリAをアンロックし続ける。
S410:メモリAがアンロックされた後、カーネルはメモリAをマイグレートし、例えば、メモリAをメモリBにマイグレートする。
S411:カーネルは、新たなメモリBをロックし、新たなメモリBのオフラインモードが強制アンロックモードであることを特定するため、新たなメモリBについてオフラインフラグを設定し、、すなわち、オフラインフラグに割り当てられた値がUNLOCKであり、PG_flag=UNLOCKである。このとき、強制アンロックモードであるオフラインモードのメモリAについて、メモリAをオフラインに取得するプロセスは終了する。
図7は、本発明の実施例によるメモリをアンロックする方法500の概略的なフローチャートである。図7に示されるように、方法500は以下を含む。
S501:ユーザプロセスは、ロックされたメモリAをアンロックするようカーネルに要求する。
S502:カーネルは、メモリAのオフラインフラグを解析することによって、メモリAのオフラインモードを判定する。
メモリAのオフラインモードがデフォルトモードである、すなわち、PG_flag==DEFAULTであるとカーネルが判定した場合、プロセスはステップS504に移行し、メモリAのオフラインモードがデフォルトモードでない、すなわち、PG_flag!=DEFAULTであるとカーネルが判定した場合、プロセスはステップS503又はS504に移行する。具体的には、メモリAのオフラインモードがマイグレートモードである、すなわち、PG_flag==MIGRATEであるとカーネルが判定した場合、プロセスはステップS503及びS504に移行し、メモリAのオフラインモードが通知モードである、すなわち、PG_flag==NOTIFYである、又は強制アンロックモードである、すなわち、PG_flag==UNLOCKであると判定した場合、プロセスはステップS504に直接移行する。
S503:カーネルは、システムパフォーマンスをさらに向上させるため、ユーザプロセスが実行されているノードにメモリAを再マイグレートする。
S504:カーネルはメモリAをアンロックする。このとき、ユーザプロセスによるロックされたメモリAをアンロックするプロセスは終了する。
上記のステップのシーケンス番号は実行順序を意味せず、ステップの実行順序はファンクションと内部ロジックとに従って決定されるべきであり、本発明の実施例の実現プロセスを何れかの方法により限定することを意図していないことが留意されるべきである。
従って、本発明の実施例によるコンピュータシステムのメモリをマイグレートする方法では、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定して、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得でき、システムパフォーマンスを向上させ、システムリソースの浪費を回避することができる。
図1A〜7を参照して、本発明の実施例によるコンピュータシステムのメモリを管理する方法が詳細に説明され、本発明の実施例によるメモリ管理ユニットとコンピュータシステムとが、以下で図8〜14を参照して詳細に説明される。
図8は、本発明の実施例によるメモリ管理ユニット700の概略的なブロック図である。図8に示されるように、メモリ管理ユニット700は、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュール710と、前記第1受信モジュール710により受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュール720と、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュール730と、前記メモリのオフラインフラグと前記第2受信モジュール730により受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュール740と、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュール750と有する。
本発明の実施例によるメモリ管理ユニットでは、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、システムパフォーマンスを向上させ、システムリソースの浪費を回避することが可能である。
本発明の実施例では、任意的には、オフラインモード又はオフラインポリシーは、DEFAULTモード、MIGRATEモード、NOTIFYモード及び強制UNLOCKモードの少なくとも1つを有してもよい。任意的には、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードを有する。
本発明の実施例では、任意的には、図9に示されるように、メモリ管理ユニット700はさらに、モード情報を有し、前記ユーザプロセスにより送信された変更リクエストを受信するよう構成される第3受信モジュール760であって、前記モード情報は前記メモリについてユーザプロセスにより設定されたオフラインモードを示す、前記第3受信モジュール760と、前記第3受信モジュール760により受信されるモード情報に従って前記ユーザプロセスにより設定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される変更モジュール770とをさらに有する。
本発明の実施例では、任意的には、図9に示されるように、メモリ管理ユニット700はさらに、前記メモリのオフラインモードがデフォルトモードである場合、前記コンピュータシステムの要求に従って前記メモリについて前記オフラインモードを再判定し、前記再判定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される判定モジュール700をさらに有する。
任意的には、図10に示されるように、メモリ管理ユニット700はさらに、前記ユーザプロセスにより送信されるアンロッキングリクエストを受信するよう構成される第4受信モジュール790であって、前記アンロッキングリクエストは前記メモリがアンロックされることを要求するのに利用される、前記第4受信モジュール790と、前記メモリのオフラインフラグが前記マイグレートモードを示すとき、前記ユーザプロセスが前記第4受信モジュールにより受信されるアンロッキングリクエストに従って実行されるノードに前記メモリを再マイグレートするよう構成される再マイグレートモジュール795とをさらに有する。
本発明の実施例では、図11に示されるように、本発明の実施例による前記ロッキングモジュール740は、前記メモリのオフラインフラグが前記デフォルトモード、前記通知モード又は前記強制アンロックモードを示すとき、前記メモリをロックするよう構成される第1ロッキングサブモジュール741と、前記メモリのオフラインフラグが前記マイグレートモードであることを示すとき、前記メモリをマイグレートし、前記メモリがマイグレートに成功したとき、マイグレートされたメモリをロックし、前記マイグレートされたメモリについて、前記メモリがマイグレートに成功したとき、前記マイグレートモードを示すオフラインフラグを設定し、前記メモリがマイグレートに不成功であったとき、前記メモリをロックし、前記メモリがマイグレートに不成功であったとき、前記デフォルトモードを示すように前記メモリのオフラインフラグを変更するよう構成される第2ロッキングサブモジュール742とを有する。
任意的には、図12に示されるように、前記オフラインモジュール750は、前記メモリのオフラインフラグが前記デフォルトモード又は前記マイグレートモードを示すとき、前記メモリがアンロックされることを待機し、前記メモリがアンロックされた後に前記メモリをマイグレートするよう構成される第1オフラインサブモジュール751と、前記メモリのオフラインフラグが前記通知モードを示すとき、前記メモリをアンロックするよう前記ユーザプロセスをトリガし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記メモリがマイグレートされた後に前記マイグレートされたメモリをロックするため前記ユーザプロセスをトリガするよう構成される第2オフラインサブモジュール752と、前記メモリのオフラインフラグが前記強制アンロックモードを示すとき、前記メモリをアンロックし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記マイグレートされたメモリをロックし、前記マイグレートされたメモリについて前記強制アンロックモードを示すオフラインフラグを設定するよう構成される第3オフラインサブモジュール753とを有する。
任意的には、図13に示されるように、前記判定モジュール750は、前記コンピュータシステムがシステム動作パフォーマンスを要求するとき、前記メモリのオフラインモードが前記デフォルトモードであると判定するよう構成される第1判定サブモジュール781と、前記コンピュータシステムがホットスワップパフォーマンスを要求するとき、前記メモリのオフラインモードが前記マイグレートモードであると判定するよう構成される第2判定サブモジュール782とを有する。
本発明の実施例によるメモリ管理ユニット700は、本発明の実施例による方法におけるカーネル又はオペレーティングシステムに対応してもよく、メモリ管理ユニット700の各モジュールの上記及び他の処理及び/又は機能はそれぞれ、簡単化のため、ここでは再度詳細には説明されない図1A〜7の方法100〜500の対応するステップを実現するため提供される。
本発明の実施例によるメモリ管理ユニットでは、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、システムパフォーマンスを向上させ、システムリソースの浪費を回避することが可能である。
図14は、本発明の実施例によるコンピュータシステム800の概略的なブロック図である。図14に示されるように、コンピュータシステムは、少なくとも1つのメモリ810と、本発明の実施例によるメモリ管理ユニット820とを有し、メモリ管理ユニット820は、少なくとも1つのメモリ810を管理するよう構成され、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュールと、前記第1受信モジュール710により受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュールと、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュールと、前記メモリのオフラインフラグと前記第2受信モジュールにより受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュールと、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュールと有してもよい。
本発明の実施例では、任意的には、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードの少なくとも1つを有する。任意的には、メモリ管理ユニット820はさらに、モード情報を有し、前記ユーザプロセスにより送信された変更リクエストを受信するよう構成される第3受信モジュールであって、前記モード情報は前記メモリについてユーザプロセスにより設定されたオフラインモードを示す、前記第3受信モジュールと、前記第3受信モジュールにより受信されるモード情報に従って前記ユーザプロセスにより設定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される変更モジュールとをさらに有する。
任意的には、メモリ管理ユニット820はさらに、前記メモリのオフラインモードがデフォルトモードである場合、前記コンピュータシステムの要求に従って前記メモリについて前記オフラインモードを再判定し、前記再判定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される判定モジュールをさらに有する。
任意的には、メモリ管理ユニット820はさらに、前記ユーザプロセスにより送信されるアンロッキングリクエストを受信するよう構成される第4受信モジュールであって、前記アンロッキングリクエストは前記メモリがアンロックされることを要求するのに利用される、前記第4受信モジュールと、前記メモリのオフラインフラグが前記マイグレートモードを示すとき、前記ユーザプロセスが前記第4受信モジュールにより受信されるアンロッキングリクエストに従って実行されるノードに前記メモリを再マイグレートするよう構成される再マイグレートモジュールとをさらに有する。
本発明の実施例では、任意的には、前記ロッキングモジュールは、前記メモリのオフラインフラグが前記デフォルトモード、前記通知モード又は前記強制アンロックモードを示すとき、前記メモリをロックするよう構成される第1ロッキングサブモジュールと、前記メモリのオフラインフラグが前記マイグレートモードであることを示すとき、前記メモリをマイグレートし、前記メモリがマイグレートに成功したとき、マイグレートされたメモリをロックし、前記マイグレートされたメモリについて、前記メモリがマイグレートに成功したとき、前記マイグレートモードを示すオフラインフラグを設定し、前記メモリがマイグレートに不成功であったとき、前記メモリをロックし、前記メモリがマイグレートに不成功であったとき、前記デフォルトモードを示すように前記メモリのオフラインフラグを変更するよう構成される第2ロッキングサブモジュールとを有する。
本発明の実施例では、任意的には、前記オフラインモジュールは、前記メモリのオフラインフラグが前記デフォルトモード又は前記マイグレートモードを示すとき、前記メモリがアンロックされることを待機し、前記メモリがアンロックされた後に前記メモリをマイグレートするよう構成される第1オフラインサブモジュールと、前記メモリのオフラインフラグが前記通知モードを示すとき、前記メモリをアンロックするよう前記ユーザプロセスをトリガし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記メモリがマイグレートされた後に前記マイグレートされたメモリをロックするため前記ユーザプロセスをトリガするよう構成される第2オフラインサブモジュールと、前記メモリのオフラインフラグが前記強制アンロックモードを示すとき、前記メモリをアンロックし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記マイグレートされたメモリをロックし、前記マイグレートされたメモリについて前記強制アンロックモードを示すオフラインフラグを設定するよう構成される第3オフラインサブモジュールとを有する。
本発明の実施例によるメモリ管理ユニット820は、本発明の実施例による装置におけるメモリ管理ユニット700に対応してもよく、メモリ管理ユニット820の各モジュールの上記及び他の処理及び/又は機能はそれぞれ、簡単化のため、ここでは再度詳細には説明されない図1A〜7の方法100〜500の対応するステップを実現するため提供される。
本発明の実施例によるコンピュータシステムでは、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得し、これにより、メモリのホットスワップを実現し、システムパフォーマンスを向上させ、システムリソースの浪費を回避することが可能である。
本発明の実施例のロックされたメモリは、ユーザプロセスにより適用されるロックされたメモリに限定されずものでなく、他の目的のためのロックされたメモリがまた、本発明の実施例による手段を利用することによってオフラインに取得されてもよいことに留意すべきである。さらに、ロックされたメモリのオフラインポリシーのマイグレートポリシーは、ユーザプロセスにより形成され、カーネルにより実行される手段に限定されるものでなく、マイグレートポリシーは、ユーザプロセスが特別なメモリエリアに移動させるために適用されるメモリを指定し、これにより、マイグレートすることなくメモリをオフラインに取得する要求を実現してもよい。
当業者は、ここに開示された実施例に関して説明された具体例のユニット及びアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア又はこれら2つの組み合わせにより実現可能であることを理解してもよい。ハードウェアとソフトウェアとの間の互換性を明確に説明するため、各具体例の構成及びステップは、上記説明における機能に従って概略的に説明された。これらの機能がハードウェア又はソフトウェアにより実行されるかは、技術的手段の特定の適用及び設計制約条件に依存する。当業者は、異なる方法を利用して、特定の各適用について説明された機能を実現してもよいが、実現形態は本発明の範囲を超えるとみなされるべきでない。
便宜上及び簡単な説明のため、上記システム、装置及びユニットの詳細な動作プロセスのため、方法の実施例における対応するプロセスが参照され、詳細はここでは再度説明されないことが、当業者に明確に理解できる。
本出願において提供される複数の実施例において、開示されたシステム、装置及び方法は他の方法により実現可能であることが理解されるべきである。例えば、開示された装置の実施例は単なる一例である。例えば、ユニットの分割は、単なる論理的な機能的分割であり、実際の実現形態では他の分割であってもよい。例えば、複数のユニット又はコンポーネントは、他のシステムに合成又は統合されてもよく、あるいは、いくつかの特徴は無視又は実行されなくてもよい。さらに、図示又は説明された結合、直接的な結合又は通信接続は、いくつかのインタフェース、装置又はユニットの間の間接的な結合又は通信接続を介し実現されてもよく、又は電気的、機械的又は他の形式によるものであってもよい。
別々のコンポーネントとして説明されるユニットは、物理的に分離されてもよいし、又はそうでなくてもよい。ユニットして示されるコンポーネントは、物理的ユニットであってもよいし、そうでなくてもよく、すなわち、統合されるか、又は複数のネットワークユニットに分散されてもよい。これらのユニットの一部又は全てが、実際の要求に従って実施例の手段の課題を実現するため選択されてもよい。
さらに、本発明の実施例における機能ユニットは、処理モジュールに統合されてもよいし、又はそれぞれが別々の物理ユニットであってもよく、あるいは、ユニットの2以上が1つのユニットに統合される。統合されたユニットは、ハードウェア又はソフトウェア機能ユニットを介し実現されてもよい。
ソフトウェア機能ユニットの形態により実現され、独立した製品として販売又は利用される場合、統合されたユニットはまた、コンピュータ可読記憶媒体に格納されてもよい。このような理解に基づき、本発明の技術的手段、従来技術に貢献する部分又は技術的手段の全て若しくは一部は、ソフトウェアプロダクトの形態により実質的に実現されてもよい。コンピュータソフトウェアプロダクトは、記憶媒体に格納され、コンピュータ装置(パーソナルコンピュータ、サーバ又はネットワーク装置など)に本発明の実施例において説明される方法のステップの全て又は一部を実行するよう指示するための複数の命令を有する。記憶媒体は、USBフラッシュドライブ、モバイルハードディスク、ROM(Read−Only Memory)、RAM(Random Access Memory)、磁気ディスク若しくは光ディスクなど、プログラムコードを格納可能な各種媒体を含む。
上記説明は、本発明の単なる特定の実施例であるが、本発明の保護範囲はこれに限定されるものでない。何れか等価な改良又は置換が、本発明の技術的範囲内であると当業者に容易にみなされる。従って、本発明の保護範囲は、添付した請求項に従う。
本発明は、コンピュータの分野に関し、特にコンピュータの分野におけるコンピュータシステムのメモリを管理する方法、メモリ管理ユニット及びコンピュータシステムに関する。
中程度のサーバ又はハイエンドサーバは、ある程度のフレキシビリティを有することが要求され、デバイスのホットスワップ機能は、フレキシビリティの重要な部分である。すなわち、サーバは、キャパシティの拡張とフォルト隔離の課題を達成するため、コンピュータシステムをインタラプトさせることなくデバイスの動的な追加又は削除を実現し、これにより、コンピュータシステムの信頼性、サービス可用性又はエネルギーの節約の要求を満たす。
ホットスワップデバイスは、一般に、例えば、プロセッサ、メモリ又は入出力(IO)周辺デバイスなどを含み、ここで、メモリは、コンピュータシステムの重要なリソースの1つであるため、ホットスワップの最重要な構成部分の1つである。メモリホットプラギング(memory hot−plugging)は、コンピュータシステムをインタラプトさせることなく追加されるメモリデバイスであり、メモリホットドローイング(memory hot−drawing)は、コンピュータシステムをインタラプトさせることなく追加されるメモリデバイスである。メモリホットドローイングは、ターゲットメモリにおいて占有されるメモリをマイグレート及びリカバすることを必要とする。しかしながら、コンピュータシステムには、カーネルにより占有される物理ページとユーザプロセスによりロックされる物理ページとを含むマイグレート不可なページが存在する。
アプリケーションプロセスでは、カーネルにより占有される物理ページはカーネルによるメモリの適用処理においてコンピュータシステムによりマイグレート不可なページとしてマーク付けされるため、コンピュータシステムは、ターゲットメモリをオフラインに取得する目的を達成するため、特定エリア(マイグレート不可なメモリエリア)から物理メモリを割り当てる。ユーザプロセスがメモリに適用されると、メモリは、共通のマイグレート可能なメモリに属するが、ユーザプロセスがメモリをロックすることを指定した後、メモリは、ターゲットメモリをオフラインに取得する際の障害になるマイグレート不可なページとしてマーク付けされる。ユーザプロセスによりロックされたメモリがオフラインに取得可能であるか否かは、メモリのホットスワップを実現する際のキーファクタの1つである。
ユーザプロセスによりロックされるメモリがオフラインに取得することが困難であるという問題のため、繰り返しの試行中にメモリがユーザプロセスによりアンロックされるという予想のため、メモリをマイグレートするために試行が繰り返し行われる。しかしながら、繰り返しの試行を介したマイグレート方法は、ユーザプロセスによりロックされたメモリのアンロックがメモリをマイグレートするための試行によって全く影響を受けないため、メモリがオフラインに取得されることを保証することができず、これら2つの間の必要な関係は存在しない。従って、メモリをオフラインに取得する試行のプロセスにおいて、ユーザプロセスによりロックされるメモリは、永続的にロック状態に維持される可能性がある。
従って、ユーザプロセスによりロックされるメモリをオフラインに取得するため、コンピュータシステムのメモリを管理するのに適した手段が必要とされ、これにより、メモリのホットスワップを実現する。
本発明の実施例は、ユーザプロセスによりロックされたメモリをオフラインに取得し、これによりメモリのホットスワップを実現するコンピュータシステムのメモリを管理する方法、メモリ管理ユニット及びコンピュータシステムを提供する。
一態様では、本発明の実施例は、コンピュータシステムのメモリを管理する方法であって、ユーザプロセスにより送信された割当てリクエストであって、前記ユーザプロセスについて前記コンピュータシステムのメモリの割当てを要求するのに利用される前記割当てリクエストを受信するステップと、前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当てるステップと、前記メモリについてオフラインフラグを設定するステップであって、前記オフラインフラグは前記メモリについてオフラインモードを示す、前記設定するステップと、前記ユーザプロセスにより送信されたロッキングリクエストであって、前記メモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するステップと、前記メモリのオフラインフラグと前記ロッキングリクエストとに従って前記メモリをロックするステップと、前記メモリのオフラインフラグに従って前記メモリをオフラインに取得するステップとを有する方法を提供する。
他の態様では、本発明の実施例は、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュールと、前記第1受信モジュールにより受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュールと、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュールと、前記メモリのオフラインフラグと前記第2受信モジュールにより受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュールと、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュールとを有するメモリ管理ユニットを提供する。
さらなる他の態様では、本発明の実施例は、少なくとも1つのメモリと、本発明の実施例によるメモリ管理ユニットとを有するコンピュータシステムを提供する。メモリ管理ユニットは、少なくとも1つのメモリを管理するよう構成される。メモリ管理ユニットは、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュールと、前記第1受信モジュールにより受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュールと、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュールと、前記メモリのオフラインフラグと前記第2受信モジュールにより受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュールと、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュールとを有する。
上記技術的手段に基づき、本発明の実施例によるコンピュータシステムを管理する方法、メモリ管理ユニット及びコンピュータシステムにおいて、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得し、これにより、メモリのホットスワップを実現し、システムリソースの浪費を回避することが可能である。
本発明の実施例による技術的手段をより明確に説明するため、実施例を示す添付した図面が以下において概略的に紹介される。以下の説明における添付した図面は、本発明の一部の実施例であり、当業者は、創作的な努力なく添付した図面から他の図面を導出してもよい。
図1Aは、本発明の実施例によるコンピュータシステムのメモリを管理する方法の概略的なフローチャートである。
図1Bは、本発明の他の実施例によるコンピュータシステムのメモリを管理する方法の概略的なフローチャートである。
図1Cは、本発明のさらなる他の実施例によるコンピュータシステムのメモリを管理する方法の概略的なフローチャートである。
図2は、本発明の実施例によるメモリのオフラインモードを変更する方法の概略的なフローチャートである。
図3は、本発明の実施例によるメモリをロックする方法の概略的なフローチャートである。
図4は、本発明の実施例によるロックされたメモリをオフラインに取得する方法の概略的なフローチャートである。
図5は、本発明の実施例によるメモリをアンロックする方法の概略的なフローチャートである。
図6は、本発明の実施例によるメモリ管理ユニットの概略的なブロック図である。
図7は、本発明の他の実施例によるメモリ管理ユニットの概略的なブロック図である。
図8は、本発明のさらなる他の実施例によるメモリ管理ユニットの概略的なブロック図である。
図9は、本発明の実施例によるロッキングモジュールの概略的なブロック図である。
図10は、本発明の実施例によるオフラインモジュールの概略的なブロック図である。
図11は、本発明の実施例による判定モジュールの概略的なブロック図である。
図12は、本発明の実施例によるコンピュータシステムの概略的なブロック図である。
本発明の実施例による技術的手段は、本発明の実施例において添付した図面を参照して以下で明確に説明される。開示される実施例は本発明の実施例の全てでなく一部であることは明らかである。創作的な努力なく本発明の実施例に基づき当業者により取得される他のすべての実施例は、本発明の保護範囲内に属する。
本発明の実施例による技術的手段は、パーソナルコンピュータ(PC)、大規模コンピュータシステム又は各種スーパーコンピュータを含む各種コンピュータシステムに適用可能であることに留意すべきである。本発明の実施例では、少なくとも1つのメモリを含むコンピュータシステムが、説明のための具体例として取り上げられるが、本発明の実施例はこれに限定されるものでない。
図1Aは、本発明の実施例によるコンピュータシステムのメモリを管理する方法100の概略的なフローチャートである。図1Aに示されるように、方法100は以下を含む。
S110:ユーザプロセスに対するコンピュータシステムのメモリの割当てを要求するのに利用されるユーザプロセスにより送信される割り当て要求を受信する。
S120:割り当て要求に従ってユーザプロセスに対してメモリを割り当て、メモリのオフラインモードを示すのに利用されるオフラインフラグをメモリについて設定する。
S130:メモリがロックされることを要求するのに利用されるユーザプロセスにより送信されるロッキングリクエストを受信する。
S140:メモリのオフラインフラグとロッキングリクエストに従ってメモリをロックする。
S150:メモリのオフラインフラグに従ってメモリをオフラインに取得する。
ユーザプロセスにより送信され、コンピュータシステムのメモリの割当てを要求するのに利用される割り当てリクエストを受信した後、コンピュータシステムのカーネル、オペレーティングシステム又はメモリ管理ユニットは、ユーザプロセスに対してメモリを割り当て、メモリのオフラインモードを示すためのオフラインフラグをメモリについて設定し、ユーザプロセスにより送信され、メモリをロックすることを要求するのに利用されるリクエストの受信後、カーネル又はオペレーティングシステムは、ユーザプロセスのロックリクエストとメモリのオフラインフラグとに従ってメモリをロックし、ロックされたメモリをオフラインに取得することが要求されると、メモリのオフラインフラグに従ってメモリをオフラインに取得してもよい。
従って、本発明の実施例によるコンピュータシステムのメモリを管理する方法において、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定すると、カーネルは、ユーザプロセスによるロックされるメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、メモリのホットスワップを実現し、システムリソースの浪費を回避することが可能である。
本発明の実施例では、オフラインモード又はオフラインポリシーは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードの少なくとも1つを含むものであってもよい。任意的には、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードを含む。
デフォルトモードでは、ユーザプロセスは、デフォルトモードを介しメモリがオフラインに取得されることを指定し、ユーザプロセスがオフラインポリシーを指定しないとき、当該モードがまた利用されてもよい。マイグレートモードでは、メモリがロックされる前、メモリは、マイグレート不可エリアにマイグレートされる必要があり、その後にロックされる。通知モードでは、カーネルがメモリをオフラインに取得することが要求される前に、カーネルは、メモリをアンロックするためユーザプロセスをトリガする。強制アンロックモードでは、カーネルは、メモリをオフラインに取得することが要求されると、メモリを強制的にアンロックし、その後にメモリをオフラインに取得してもよい。本発明の実施例の4つのオフラインモードの名称及び概略は、本発明の実施例の理解を容易にするため単に与えられたものであり、本発明の実施例はこれに限定されるものでないことに留意すべきである。さらに、4つのオフラインモードの具体的な意味は、本発明の実施例において説明される具体的な処理を参照して理解されるべきである。
本発明の実施例では、ユーザプロセスは、要求に従って適用されるメモリのオフラインモードを変更する。すなわち、ユーザプロセスは、メモリのオフラインモードを設定する。従って、図1Bに示されるように、本発明の実施例によるコンピュータシステムのメモリを管理する方法100はさらに以下を含むものであってもよい。
S160:メモリについてユーザプロセスにより設定されるオフラインモードを示すモード情報を含み、ユーザプロセスにより送信される変更リクエストを受信する。
S170:モード情報に従ってユーザプロセスにより設定されたオフラインモードを示すようにメモリのオフラインフラグを変更する。
すなわち、ユーザプロセスがメモリについて適用された後、ユーザプロセスは、要求に従って適用されたメモリについてオフラインモードを設定し、モード情報に従ってカーネルがユーザプロセスにより設定されたオフラインモードを示すようにメモリのオフラインフラグを変更するように、モード情報を含む変更リクエストをカーネルに送信してもよい。
本発明の実施例では、カーネルがユーザプロセスにより送信されるロッキングリクエストを受信した後、カーネルは、メモリのオフラインフラグに従ってメモリのオフラインモードを決定し、メモリのオフラインモードがデフォルトモードである場合、カーネルは、所望されるようにメモリのオフラインモードをリセットしてもよい。すなわち、図1Bに示されるように、本発明の実施例による方法100はさらに以下を含むものであってもよい。
S180:メモリのオフラインモードがデフォルトモードである場合、コンピュータシステムの要求に従ってメモリのオフラインモードを再判定し、再判定されたオフラインモードを示すようにメモリのオフラインフラグを変更する。
任意的には、コンピュータシステムがシステム動作パフォーマンスを要求する場合、カーネルは、メモリのオフラインモードがデフォルトモードであると判定し、コンピュータシステムがホットスワップパフォーマンスを要求する場合、カーネルは、メモリのオフラインモードがマイグレートモードであると判定する。
本発明の実施例による方法はカーネル、オペレーティングシステム又はメモリ管理ユニットにより実行可能であることに留意すべきである。説明の簡単化のため、カーネルは以下において実行本体として利用されるが、本発明の実施例はこれに限定されるものでない。
具体的には、ステップS110において、ユーザプロセスは、ユーザプロセスの要求に従ってメモリの割当てを要求するため割当要求をカーネルに送信してもよい。
ステップS120において、カーネルは、割り当て要求に従ってユーザプロセスに対してメモリを割り当て、メモリに対して当該メモリのオフラインモードを示すのに利用されるオフラインフラグを設定する。任意的には、カーネルは、割り当てられたメモリについてデフォルトモードを示すオフラインフラグを設定する。例えば、カーネルは、メモリについてオフラインフラグPG_flagを追加し、当該オフラインフラグにDEFAULTの値を割り当て、すなわち、PG_flag=DEFAULTである。明らかに、カーネルはまたメモリに他のオフラインモードを設定してもよく、本発明の実施例はこれに限定されるものでない。
任意的には、ユーザプロセスは、カーネルにより提供されたインタフェースを介し適用されたメモリについてオフラインモード又はオフラインポリシーを設定又は形成してもよい。具体的には、ステップS160において、ユーザプロセスは、ユーザプロセスの要求に従って、メモリについてユーザプロセスにより設定されたオフラインモードを示すモード情報を含むメモリのオフラインモードを変更するための変更リクエストをカーネルに送信してもよい。例えば、変更リクエストは、DEFAULT、MIGRATE、NOTIFY及びUNLOCKなどの値に割り当てられるBEHAVIORパラメータを含むものであってもよく、それぞれは、ユーザプロセスがメモリのオフラインモードをデフォルトモード、マイグレートモード、通知モード及び強制アンロックモードとなるよう設定することを示す。
ステップS170において、カーネルは、モード情報に従ってメモリのオフラインモードを変更する。具体的には、カーネルは、変更リクエストにおいて送信されるBEHAVIORパラメータに従って、ユーザプロセスにより設定されたオフラインモードを示すようにメモリのオフラインフラグを変更してもよい。
具体的には、例えば、オフラインモードが変更されることが要求されるメモリAについて、カーネルは、変更リクエストに含まれるBEHAVIORパラメータを解析してもよい。BEHAVIOR==DEFAULTである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードをデフォルトモードとなるよう設定すると判定してもよい。このとき、カーネルは、メモリAのオフラインフラグPG_flagを変更してもよく、すなわち、オフラインフラグをDEFAULTの値に割り当て、PG_flag=DEFAULTとしてもよい。BEHAVIOR==MIGRATEである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードをマイグレートモードとなるよう設定していると判定してもよく、このとき、カーネルは、メモリAのオフラインフラグをMIGRATEの値に割り当て、すなわち、PG_flag=MIGRATEとしてもよい。同様に、BEHAVIOR==NOTIFYである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードを通知モードになるよう設定していると判定し、このとき、カーネルはメモリAのオフラインフラグをNOTIFYの値に割り当て、PG_flag=NOTIFYとしてもよい。BEHAVIOR==UNLOCKである場合、カーネルは、ユーザプロセスがメモリAのオフラインモードが強制アンロックモードになるよう設定していると判定し、このとき、カーネルは、メモリAのオフラインフラグをUNLOCKの値に割り当て、すなわち、PG_flag=UNLOCKとしてもよい。
ステップS130において、ユーザプロセスは、ユーザプロセスの要求に従ってコンピュータシステムのメモリをロックするようカーネルに要求してもよい。
ステップS140において、カーネルがユーザプロセスにより送信されたロッキングリクエストを受信した後、カーネルは、ロックされるよう要求されたメモリのオフラインモードを判定する必要があり、具体的なオフラインモードとロッキングリクエストとに従ってメモリをロックする。
具体的には、カーネルは、メモリのオフラインフラグを解析することによって、メモリのオフラインモードを判定してもよい。例えば、メモリのオフラインフラグがPG_flag=DEFAULTであるとカーネルが判定した場合、メモリのオフラインモードはデフォルトモードである。同様に、メモリのオフラインフラグPG_flagがMIGRATE、NOTIFY又はUNLOCKであるとカーネルが判定した場合、メモリのオフラインモードはマイグレートモード、通知モード又は強制アンロックモードであるとカーネルは判定してもよい。
任意的には、メモリのオフラインフラグがデフォルトモード、通知モード又は強制アンロックモードを示す場合、メモリはロックされる。メモリのオフラインモードがマイグレートモードを示す場合、メモリはマイグレートされ、メモリがマイグレートに成功した場合、マイグレートされたメモリはロックされ、マイグレートモードを示すオフラインフラグがマイグレートされたメモリについて設定される。メモリがマイグレートに不成功であった場合、メモリはロックされ、メモリのオフラインフラグは、デフォルトモードを示すよう変更される。
任意的には、メモリのオフラインモードがデフォルトモードであるとカーネルが判定した場合、カーネルは、当該メモリについてより適切なオフラインモードを再判定するようにしてもよい。すなわち、ステップS180において、カーネルは、コンピュータシステムの要求に従ってメモリのオフラインモードを再判定し、再判定されたオフラインモードを示すようにメモリのオフラインフラグを変更する。
ステップS150において、カーネルがユーザプロセスによりロックされたメモリをオフラインに取得する必要がある場合、カーネルは、メモリのオフラインフラグを解析することによって、メモリのオフラインモードを判定し、オフラインモードに従ってメモリをオフラインに取得するようにしてもよい。
任意的には、メモリのオフラインフラグがデフォルトモード又はマイグレートモードを示す場合、メモリはアンロックとなるよう待機され、メモリがアンロックになった後にマイグレートされる。メモリのオフラインフラグが通知モードを示す場合、ユーザプロセスはメモリをアンロックするようトリガされ、メモリがアンロックされた後にメモリはマイグレートされ、メモリがマイグレートされた後にマイグレートされたメモリをロックするようユーザプロセスはトリガされる。メモリのオフラインフラグが強制アンロックモードを示す場合、メモリはアンロックされ、メモリがアンロックされた後にマイグレートされ、マイグレートされたメモリに対して、強制アンロックモードを示すオフラインフラグが設定される。
従って、本発明の実施例によるコンピュータシステムのメモリを管理する方法では、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定して、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、メモリのホットスワップを実現し、システムリソースの浪費を回避することができる。
本発明の実施例では、任意的には、図1Cに示されるように、ユーザプロセスがロックされたメモリをアンロックするため適用される場合、本発明の実施例による方法100はさらに以下を含む。
S190:メモリがアンロックされることを要求するのに利用されるユーザプロセスにより送信されるアンロッキングリクエストを受信する。
S195:アンロッキングリクエストに従って、メモリのオフラインフラグがマイグレートモードを示す場合、メモリをユーザプロセスが実行されているノードに再マイグレートする。
すなわち、ユーザプロセスがロックされたメモリのアンロックをアクティブに要求するプロセスでは、メモリのオフラインモードがマイグレートモードであることをメモリのオフラインフラグが示す場合、ロックされたメモリがアンロックされる前に、カーネルは、ユーザプロセスが実行されるノードにロックされたメモリを再マイグレートするため、ローカルメモリに適用されてもよい。デフォルトモード、通知モード又は強制アンロックモードであるオフラインモードによるロックされたメモリについて、カーネルは、ユーザプロセスの適用に従ってロックされたメモリを直接アンロックしてもよい。例えば、この場合、MIGRATEオフラインフラグのロックされたメモリについて、アンロックされる前に、メモリは、ユーザプロセスが実行されているノードに再マイグレートされ、システムパフォーマンスをさらに向上させることができる。
上記のステップのシーケンス番号は実行順序を意味しておらず、ステップの実行順序はファンクション及び内部ロジックに従って決定されるべきであり、本発明の実施例の実現処理を何れかの方法に限定することを意図していないことに留意すべきである。
従って、本発明の実施例によるコンピュータシステムのメモリを管理する方法では、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定して、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、メモリのホットスワップを実現し、システムパフォーマンスを向上させ、システムリソースの浪費を回避することができる。
図2〜5に示される特定の実施例を参照して、本発明の実施例によるメモリのオフラインモードを変更する方法、メモリをロックする方法、ロックされたメモリをオフラインに取得する方法、及びメモリをアンロックする方法が、以下で詳細に説明される。
図2に示されるように、本発明の実施例によるメモリのオフラインモードを設定する方法200は以下を含む。
S201:ユーザプロセスは、当該ユーザプロセスの要求に従ってメモリAについて適用される。
S202:カーネルは、ユーザプロセスにより送信される割り当てリクエストに従ってユーザプロセスについてメモリを割り当て、メモリのオフラインモードを示すのに利用されるオフラインフラグを当該メモリについて設定する。任意的には、カーネルは、メモリのオフラインフラグPG_flagをデフォルトモードDEFAULTとなるよう設定し、すなわち、PG_flag=DEFAULTである。
任意的には、ユーザプロセスがメモリAに適用され、メモリAを取得した後、ユーザプロセスは、カーネルにより提供されるインタフェースを介しメモリAのオフラインモードを設定してもよく、ここで、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードを含む。
S203:ユーザプロセスは、メモリのオフラインモードを変更するため適用される変更リクエストをカーネルに送信する。ここで、変更リクエストは、メモリについてユーザプロセスにより設定されるオフラインモードを示すためのモード情報を含み、モード情報は、例えば、BEHAVIORパラメータである。
S204:カーネルは、ユーザプロセスにより提供されるBEHAVIORパラメータなどのモード情報を解析することによって、メモリAについてユーザプロセスにより設定されるオフラインモードを判定する。
メモリAについてユーザプロセスにより設定されたオフラインモードがデフォルトモードである場合、プロセスはステップS205に移行し、メモリAについてユーザプロセスにより設定されるオフラインモードがデフォルトモードでない場合、プロセスはステップS206、S207又はS208に移行する。具体的には、メモリAについてユーザプロセスにより設定されるオフラインモードがマイグレートモードである場合、プロセスはステップS206に移行し、メモリAについてユーザプロセスにより設定されるオフラインモードが通知モードである場合、プロセスはステップS207に移行し、メモリAについてユーザプロセスにより設定されるオフラインモードが強制アンロックモードである場合、プロセスはステップS208に移行する。
S205:カーネルは、メモリのオフラインフラグにDEFAULTの値を割り当て、すなわち、PG_flag=DEFAULTである。このとき、デフォルトモードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAのオフラインフラグを設定するプロセスは終了する。
S206:カーネルは、メモリAのオフラインフラグに値を割り当て、すなわち、PG_flag=MIGRATEである。このとき、マイグレートモードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAについてオフラインモードを設定するプロセスは終了する。
S207:カーネルは、メモリAのオフラインフラグにNOTIFYの値を割り当て、すなわち、PG_flag=NOTIFYである。このとき、通知モードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAのオフラインモードを設定するプロセスは終了する。
S208:カーネルは、メモリAのオフラインフラグにUNLOCKの値を割り当て、すなわち、PG_flag=UNLOCKである。このとき、強制アンロックモードであるユーザプロセスにより設定されるオフラインモードのメモリAについて、メモリAのオフラインモードを設定するプロセスは終了する。
上記のステップのシーケンス番号は実行順序を意味するものでなく、ステップの実行順序はファンクションと内部ロジックとに従って判定されるべきであり、本発明の実施例の実現プロセスを何れかの方法により限定することを意図していないことに留意すべきである。
従って、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定し、カーネルは、メモリをロックし、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得できる。
図3は、本発明の実施例によるメモリをロックする方法300の概略的なフローチャートである。図3に示されるように、方法300は以下を含む。
S301:ユーザプロセスは、要求に従ってメモリAをロックすることをカーネルに要求する。
S302:カーネルは、メモリAのオフラインフラグPG_flagを解析することによって、メモリAについてオフラインモードを判定する。
メモリAのオフラインモードがデフォルトモードである、すなわち、PG_flag==DEFAULTであるとカーネルが判定した場合、プロセスはステップS303に移行し、メモリAのオフラインモードがデフォルトモードでない、すなわち、PG_flag!=DEFAULTであるとカーネルが判定した場合、プロセスはステップS305、S309又はS310に移行する。具体的には、メモリAのオフラインモードがマイグレートモードである、すなわち、PG_flag==MIGRATEであるとカーネルが判定した場合、プロセスはステップS305に移行し、メモリAのオフラインモードが通知モードである、すなわち、PG_flag==NOTIFYであるとカーネルが判定した場合、プロセスはステップS309に移行し、メモリAのオフラインモードが強制アンロックモードである、すなわち、PG_flag==UNLOCKであるとカーネルが判定した場合、プロセスはステップS310に移行する。
S303:カーネルは、コンピュータシステムのコンフィギュレーション又は要求を判定する。コンピュータシステムがシステム動作パフォーマンスを要求しているとカーネルが判定した場合、プロセスはステップS304に移行し、コンピュータシステムがホットスワップパフォーマンスを要求した場合、プロセスはステップS305に移行する。
S304:メモリAのオフラインモードがデフォルトモードである場合、カーネルは、メモリAをロックし、メモリのオフラインフラグにDEFAULTの値を割り当て、すなわち、PG_flag=DEFAULTとする。このとき、デフォルトモードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
S305:メモリAのオフラインモードがマイグレートモードである場合、カーネルは、マイグレート不可エリアであり、一般にプライマリノードに限定されるシステムの指定されたエリアにおいて、メモリBに再適用する。
S306:カーネルは、メモリAをメモリBにマイグレートし、メモリAをリリースする。
S307:カーネルは、メモリAがマイグレートに成功したか判定する。メモリAがマイグレートに成功した場合、プロセスはステップS308に移行し、そうでない場合、プロセスはステップS304に移行する。
S308:カーネルは、メモリBをロックし、メモリBについてオフラインフラグPG_flagを設定し、オフラインフラグにMIGRATEの値を割り当て、PG_flag=MIGRATEである。このとき、マイグレートモードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
S309:メモリAのオフラインモードが通知モードである場合、カーネルはメモリAをロックする。このとき、通知モードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
S310:メモリAのオフラインモードが強制アンロックモードである場合、カーネルはメモリAをロックする。このとき、強制アンロックモードであるオフラインモードのメモリAについて、メモリAをロックするプロセスは終了する。
上記のステップのシーケンス番号は実行順序を意味せず、ステップの実行順序はファンクションと内部ロジックとに従って決定されるべきであり、本発明の実施例の実現プロセスを何れかの方法により限定することを意図していないことに留意すべきである。
図4は、本発明の実施例によるロックされたメモリをオフラインに取得する方法400の概略的なフローチャートである。図4に示されるように、方法400は以下を含む。
S401:カーネルは、要求に従ってメモリAをオフラインに取得することを決定する。
S402:カーネルは、メモリAのオフラインフラグPG_flagを解析することによって、メモリAについて設定されたオフラインモードを判定する。
メモリAのオフラインモードがデフォルトモードである、すなわち、PG_flag==DEFAULTであるとカーネルが判定した場合、プロセスはステップS403に移行し、メモリAのオフラインモードがデフォルトモードでない、すなわち、PG_flag!=DEFAULTであるとカーネルが判定した場合、プロセスはステップS403、S406又はS408に移行する。具体的には、メモリAのオフラインモードがマイグレートモードであるすなわち、PG_flag==MIGRATEであるとカーネルが判定した場合、プロセスはステップS403に移行し、メモリAのオフラインモードが通知モードである、すなわち、PG_flag==NOTIFYであるとカーネルが判定した場合、プロセスはステップS406に移行し、メモリAのオフラインモードが強制アンロックモードである、すなわち、PG_flag==UNLOCKであるとカーネルが判定した場合、プロセスはステップS408に移行する。
S403:メモリAのオフラインモードがデフォルトモード又はマイグレートモードである場合、カーネルは、メモリAがユーザプロセスによりアンロックされることを待機する。
S404:カーネルは、メモリAがユーザプロセスによりアンロックされているかチェックする。メモリAがアンロックされている場合、プロセスはステップS405に移行し、そうでない場合、プロセスはステップS403に移行し、すなわち、カーネルはメモリAがアンロックされることを待機し続ける。
S405:メモリAがユーザプロセスによりアンロックされている場合、カーネルは、メモリAをマイグレートする。メモリAのマイグレートはメモリAを他のメモリにマイグレートすることであることに留意すべきである。マイグレート後の新たなメモリについて、カーネルは、PG_flag=DEFAULTとなるように新たなメモリのオフラインフラグを設定してもよい。このとき、デフォルトモード又はマイグレートモードであるオフラインモードのメモリAについて、メモリAをオフラインに取得するプロセスは終了する。
S406:メモリAのオフラインモードが通知モードである場合、カーネルは、メモリをアンロックするためユーザプロセスをトリガし、メモリAがユーザプロセスによりアンロックされた後にメモリAをマイグレートする。すなわち、メモリAのオフラインモードが通知モードである場合、プロセスは、ステップS406からステップS404、S405及びS407に移行する。
S407:メモリAがマイグレートした後、カーネルは、マイグレート後の新たなメモリをロックするため、ユーザプロセスをトリガする。マイグレート後の新たなメモリについて、カーネルは、PG_flag=NOTIFYとなるように新たなメモリのオフラインフラグを設定してもよい。このとき、通知モードであるオフラインモードのメモリAについて、メモリAをオフラインに取得するプロセスは終了する。
S408:メモリAのオフラインモードが強制アンロックモードである場合、カーネルはメモリAをアンロックする。
S409:カーネルは、メモリAがアンロックに成功したかチェックする。メモリAがアンロックされた場合、プロセスはステップS410に移行し、そうでない場合、プロセスはステップS408に移行し、すなわち、カーネルは、メモリAをアンロックし続ける。
S410:メモリAがアンロックされた後、カーネルはメモリAをマイグレートし、例えば、メモリAをメモリBにマイグレートする。
S411:カーネルは、新たなメモリBをロックし、新たなメモリBのオフラインモードが強制アンロックモードであることを特定するため、新たなメモリBについてオフラインフラグを設定し、、すなわち、オフラインフラグに割り当てられた値がUNLOCKであり、PG_flag=UNLOCKである。このとき、強制アンロックモードであるオフラインモードのメモリAについて、メモリAをオフラインに取得するプロセスは終了する。
図5は、本発明の実施例によるメモリをアンロックする方法500の概略的なフローチャートである。図5に示されるように、方法500は以下を含む。
S501:ユーザプロセスは、ロックされたメモリAをアンロックするようカーネルに要求する。
S502:カーネルは、メモリAのオフラインフラグを解析することによって、メモリAのオフラインモードを判定する。
メモリAのオフラインモードがデフォルトモードである、すなわち、PG_flag==DEFAULTであるとカーネルが判定した場合、プロセスはステップS504に移行し、メモリAのオフラインモードがデフォルトモードでない、すなわち、PG_flag!=DEFAULTであるとカーネルが判定した場合、プロセスはステップS503又はS504に移行する。具体的には、メモリAのオフラインモードがマイグレートモードである、すなわち、PG_flag==MIGRATEであるとカーネルが判定した場合、プロセスはステップS503及びS504に移行し、メモリAのオフラインモードが通知モードである、すなわち、PG_flag==NOTIFYである、又は強制アンロックモードである、すなわち、PG_flag==UNLOCKであると判定した場合、プロセスはステップS504に直接移行する。
S503:カーネルは、システムパフォーマンスをさらに向上させるため、ユーザプロセスが実行されているノードにメモリAを再マイグレートする。
S504:カーネルはメモリAをアンロックする。このとき、ユーザプロセスによるロックされたメモリAをアンロックするプロセスは終了する。
上記のステップのシーケンス番号は実行順序を意味せず、ステップの実行順序はファンクションと内部ロジックとに従って決定されるべきであり、本発明の実施例の実現プロセスを何れかの方法により限定することを意図していないことが留意されるべきである。
従って、本発明の実施例によるコンピュータシステムのメモリをマイグレートする方法では、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定して、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得でき、システムパフォーマンスを向上させ、システムリソースの浪費を回避することができる。
図1A〜5を参照して、本発明の実施例によるコンピュータシステムのメモリを管理する方法が詳細に説明され、本発明の実施例によるメモリ管理ユニットとコンピュータシステムとが、以下で図6〜12を参照して詳細に説明される。
図6は、本発明の実施例によるメモリ管理ユニット700の概略的なブロック図である。図6に示されるように、メモリ管理ユニット700は、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュール710と、前記第1受信モジュール710により受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュール720と、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュール730と、前記メモリのオフラインフラグと前記第2受信モジュール730により受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュール740と、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュール750と有する。
本発明の実施例によるメモリ管理ユニットでは、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、システムパフォーマンスを向上させ、システムリソースの浪費を回避することが可能である。
本発明の実施例では、任意的には、オフラインモード又はオフラインポリシーは、DEFAULTモード、MIGRATEモード、NOTIFYモード及び強制UNLOCKモードの少なくとも1つを有してもよい。任意的には、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードを有する。
本発明の実施例では、任意的には、図7に示されるように、メモリ管理ユニット700はさらに、モード情報を有し、前記ユーザプロセスにより送信された変更リクエストを受信するよう構成される第3受信モジュール760であって、前記モード情報は前記メモリについてユーザプロセスにより設定されたオフラインモードを示す、前記第3受信モジュール760と、前記第3受信モジュール760により受信されるモード情報に従って前記ユーザプロセスにより設定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される変更モジュール770とをさらに有する。
本発明の実施例では、任意的には、図7に示されるように、メモリ管理ユニット700はさらに、前記メモリのオフラインモードがデフォルトモードである場合、前記コンピュータシステムの要求に従って前記メモリについて前記オフラインモードを再判定し、前記再判定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される判定モジュール700をさらに有する。
任意的には、図8に示されるように、メモリ管理ユニット700はさらに、前記ユーザプロセスにより送信されるアンロッキングリクエストを受信するよう構成される第4受信モジュール790であって、前記アンロッキングリクエストは前記メモリがアンロックされることを要求するのに利用される、前記第4受信モジュール790と、前記メモリのオフラインフラグが前記マイグレートモードを示すとき、前記ユーザプロセスが前記第4受信モジュールにより受信されるアンロッキングリクエストに従って実行されるノードに前記メモリを再マイグレートするよう構成される再マイグレートモジュール795とをさらに有する。
本発明の実施例では、図9に示されるように、本発明の実施例による前記ロッキングモジュール740は、前記メモリのオフラインフラグが前記デフォルトモード、前記通知モード又は前記強制アンロックモードを示すとき、前記メモリをロックするよう構成される第1ロッキングサブモジュール741と、前記メモリのオフラインフラグが前記マイグレートモードであることを示すとき、前記メモリをマイグレートし、前記メモリがマイグレートに成功したとき、マイグレートされたメモリをロックし、前記マイグレートされたメモリについて、前記メモリがマイグレートに成功したとき、前記マイグレートモードを示すオフラインフラグを設定し、前記メモリがマイグレートに不成功であったとき、前記メモリをロックし、前記メモリがマイグレートに不成功であったとき、前記デフォルトモードを示すように前記メモリのオフラインフラグを変更するよう構成される第2ロッキングサブモジュール742とを有する。
任意的には、図10に示されるように、前記オフラインモジュール750は、前記メモリのオフラインフラグが前記デフォルトモード又は前記マイグレートモードを示すとき、前記メモリがアンロックされることを待機し、前記メモリがアンロックされた後に前記メモリをマイグレートするよう構成される第1オフラインサブモジュール751と、前記メモリのオフラインフラグが前記通知モードを示すとき、前記メモリをアンロックするよう前記ユーザプロセスをトリガし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記メモリがマイグレートされた後に前記マイグレートされたメモリをロックするため前記ユーザプロセスをトリガするよう構成される第2オフラインサブモジュール752と、前記メモリのオフラインフラグが前記強制アンロックモードを示すとき、前記メモリをアンロックし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記マイグレートされたメモリをロックし、前記マイグレートされたメモリについて前記強制アンロックモードを示すオフラインフラグを設定するよう構成される第3オフラインサブモジュール753とを有する。
任意的には、図11に示されるように、前記判定モジュール750は、前記コンピュータシステムがシステム動作パフォーマンスを要求するとき、前記メモリのオフラインモードが前記デフォルトモードであると判定するよう構成される第1判定サブモジュール781と、前記コンピュータシステムがホットスワップパフォーマンスを要求するとき、前記メモリのオフラインモードが前記マイグレートモードであると判定するよう構成される第2判定サブモジュール782とを有する。
本発明の実施例によるメモリ管理ユニット700は、本発明の実施例による方法におけるカーネル又はオペレーティングシステムに対応してもよく、メモリ管理ユニット700の各モジュールの上記及び他の処理及び/又は機能はそれぞれ、簡単化のため、ここでは再度詳細には説明されない図1A〜5の方法100〜500の対応するステップを実現するため提供される。
本発明の実施例によるメモリ管理ユニットでは、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得可能であり、これにより、システムパフォーマンスを向上させ、システムリソースの浪費を回避することが可能である。
図12は、本発明の実施例によるコンピュータシステム800の概略的なブロック図である。図12に示されるように、コンピュータシステムは、少なくとも1つのメモリ810と、本発明の実施例によるメモリ管理ユニット820とを有し、メモリ管理ユニット820は、少なくとも1つのメモリ810を管理するよう構成され、ユーザプロセスにより送信される割当てリクエストであって、前記ユーザプロセスについてコンピュータシステムのメモリの割り当てを要求するのに利用される前記割当てリクエストを受信するよう構成される第1受信モジュールと、前記第1受信モジュール710により受信される前記割当てリクエストに従って前記ユーザプロセスについて前記メモリを割り当て、前記メモリのオフラインモードを示すオフラインフラグを前記メモリについて設定するよう構成される割当てモジュールと、前記ユーザプロセスにより送信されるロッキングリクエストであって、前記コンピュータシステムのメモリがロックされることを要求するのに利用される前記ロッキングリクエストを受信するよう構成される第2受信モジュールと、前記メモリのオフラインフラグと前記第2受信モジュールにより受信されるロッキングリクエストとに従って前記メモリをロックするよう構成されるロッキングモジュールと、前記メモリのオフラインフラグに従って前記ロッキングモジュールによりロックされたメモリをオフラインに取得するよう構成されるオフラインモジュールと有してもよい。
本発明の実施例では、任意的には、オフラインモードは、デフォルトモード、マイグレートモード、通知モード及び強制アンロックモードの少なくとも1つを有する。任意的には、メモリ管理ユニット820はさらに、モード情報を有し、前記ユーザプロセスにより送信された変更リクエストを受信するよう構成される第3受信モジュールであって、前記モード情報は前記メモリについてユーザプロセスにより設定されたオフラインモードを示す、前記第3受信モジュールと、前記第3受信モジュールにより受信されるモード情報に従って前記ユーザプロセスにより設定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される変更モジュールとをさらに有する。
任意的には、メモリ管理ユニット820はさらに、前記メモリのオフラインモードがデフォルトモードである場合、前記コンピュータシステムの要求に従って前記メモリについて前記オフラインモードを再判定し、前記再判定されたオフラインモードを示すように前記メモリのオフラインフラグを変更するよう構成される判定モジュールをさらに有する。
任意的には、メモリ管理ユニット820はさらに、前記ユーザプロセスにより送信されるアンロッキングリクエストを受信するよう構成される第4受信モジュールであって、前記アンロッキングリクエストは前記メモリがアンロックされることを要求するのに利用される、前記第4受信モジュールと、前記メモリのオフラインフラグが前記マイグレートモードを示すとき、前記ユーザプロセスが前記第4受信モジュールにより受信されるアンロッキングリクエストに従って実行されるノードに前記メモリを再マイグレートするよう構成される再マイグレートモジュールとをさらに有する。
本発明の実施例では、任意的には、前記ロッキングモジュールは、前記メモリのオフラインフラグが前記デフォルトモード、前記通知モード又は前記強制アンロックモードを示すとき、前記メモリをロックするよう構成される第1ロッキングサブモジュールと、前記メモリのオフラインフラグが前記マイグレートモードであることを示すとき、前記メモリをマイグレートし、前記メモリがマイグレートに成功したとき、マイグレートされたメモリをロックし、前記マイグレートされたメモリについて、前記メモリがマイグレートに成功したとき、前記マイグレートモードを示すオフラインフラグを設定し、前記メモリがマイグレートに不成功であったとき、前記メモリをロックし、前記メモリがマイグレートに不成功であったとき、前記デフォルトモードを示すように前記メモリのオフラインフラグを変更するよう構成される第2ロッキングサブモジュールとを有する。
本発明の実施例では、任意的には、前記オフラインモジュールは、前記メモリのオフラインフラグが前記デフォルトモード又は前記マイグレートモードを示すとき、前記メモリがアンロックされることを待機し、前記メモリがアンロックされた後に前記メモリをマイグレートするよう構成される第1オフラインサブモジュールと、前記メモリのオフラインフラグが前記通知モードを示すとき、前記メモリをアンロックするよう前記ユーザプロセスをトリガし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記メモリがマイグレートされた後に前記マイグレートされたメモリをロックするため前記ユーザプロセスをトリガするよう構成される第2オフラインサブモジュールと、前記メモリのオフラインフラグが前記強制アンロックモードを示すとき、前記メモリをアンロックし、前記メモリがアンロックされた後に前記メモリをマイグレートし、前記マイグレートされたメモリをロックし、前記マイグレートされたメモリについて前記強制アンロックモードを示すオフラインフラグを設定するよう構成される第3オフラインサブモジュールとを有する。
本発明の実施例によるメモリ管理ユニット820は、本発明の実施例による装置におけるメモリ管理ユニット700に対応してもよく、メモリ管理ユニット820の各モジュールの上記及び他の処理及び/又は機能はそれぞれ、簡単化のため、ここでは再度詳細には説明されない図1A〜5の方法100〜500の対応するステップを実現するため提供される。
本発明の実施例によるコンピュータシステムでは、カーネルとユーザプロセスとの間のインタラクションを介し、メモリについてオフラインモードを設定することによって、カーネルは、ユーザプロセスによりロックされたメモリをオフラインに取得するため、メモリのオフラインモードに従ってメモリをオフラインに取得し、これにより、メモリのホットスワップを実現し、システムパフォーマンスを向上させ、システムリソースの浪費を回避することが可能である。
本発明の実施例のロックされたメモリは、ユーザプロセスにより適用されるロックされたメモリに限定されずものでなく、他の目的のためのロックされたメモリがまた、本発明の実施例による手段を利用することによってオフラインに取得されてもよいことに留意すべきである。さらに、ロックされたメモリのオフラインポリシーのマイグレートポリシーは、ユーザプロセスにより形成され、カーネルにより実行される手段に限定されるものでなく、マイグレートポリシーは、ユーザプロセスが特別なメモリエリアに移動させるために適用されるメモリを指定し、これにより、マイグレートすることなくメモリをオフラインに取得する要求を実現してもよい。
当業者は、ここに開示された実施例に関して説明された具体例のユニット及びアルゴリズムのステップが、電子ハードウェア、コンピュータソフトウェア又はこれら2つの組み合わせにより実現可能であることを理解してもよい。ハードウェアとソフトウェアとの間の互換性を明確に説明するため、各具体例の構成及びステップは、上記説明における機能に従って概略的に説明された。これらの機能がハードウェア又はソフトウェアにより実行されるかは、技術的手段の特定の適用及び設計制約条件に依存する。当業者は、異なる方法を利用して、特定の各適用について説明された機能を実現してもよいが、実現形態は本発明の範囲を超えるとみなされるべきでない。
便宜上及び簡単な説明のため、上記システム、装置及びユニットの詳細な動作プロセスのため、方法の実施例における対応するプロセスが参照され、詳細はここでは再度説明されないことが、当業者に明確に理解できる。
本出願において提供される複数の実施例において、開示されたシステム、装置及び方法は他の方法により実現可能であることが理解されるべきである。例えば、開示された装置の実施例は単なる一例である。例えば、ユニットの分割は、単なる論理的な機能的分割であり、実際の実現形態では他の分割であってもよい。例えば、複数のユニット又はコンポーネントは、他のシステムに合成又は統合されてもよく、あるいは、いくつかの特徴は無視又は実行されなくてもよい。さらに、図示又は説明された結合、直接的な結合又は通信接続は、いくつかのインタフェース、装置又はユニットの間の間接的な結合又は通信接続を介し実現されてもよく、又は電気的、機械的又は他の形式によるものであってもよい。
別々のコンポーネントとして説明されるユニットは、物理的に分離されてもよいし、又はそうでなくてもよい。ユニットして示されるコンポーネントは、物理的ユニットであってもよいし、そうでなくてもよく、すなわち、統合されるか、又は複数のネットワークユニットに分散されてもよい。これらのユニットの一部又は全てが、実際の要求に従って実施例の手段の課題を実現するため選択されてもよい。
さらに、本発明の実施例における機能ユニットは、処理モジュールに統合されてもよいし、又はそれぞれが別々の物理ユニットであってもよく、あるいは、ユニットの2以上が1つのユニットに統合される。統合されたユニットは、ハードウェア又はソフトウェア機能ユニットを介し実現されてもよい。
ソフトウェア機能ユニットの形態により実現され、独立した製品として販売又は利用される場合、統合されたユニットはまた、コンピュータ可読記憶媒体に格納されてもよい。このような理解に基づき、本発明の技術的手段、従来技術に貢献する部分又は技術的手段の全て若しくは一部は、ソフトウェアプロダクトの形態により実質的に実現されてもよい。コンピュータソフトウェアプロダクトは、記憶媒体に格納され、コンピュータ装置(パーソナルコンピュータ、サーバ又はネットワーク装置など)に本発明の実施例において説明される方法のステップの全て又は一部を実行するよう指示するための複数の命令を有する。記憶媒体は、USBフラッシュドライブ、モバイルハードディスク、ROM(Read−Only Memory)、RAM(Random Access Memory)、磁気ディスク若しくは光ディスクなど、プログラムコードを格納可能な各種媒体を含む。
上記説明は、本発明の単なる特定の実施例であるが、本発明の保護範囲はこれに限定されるものでない。何れか等価な改良又は置換が、本発明の技術的範囲内であると当業者に容易にみなされる。従って、本発明の保護範囲は、添付した請求項に従う。