(57)【要約】【課題】  メモリ管理、アクセス手法の異なるＯＳ間でもオーバーヘッドを低減してプロセス移動を容易、迅速に行うことを可能とした計算機システムを提供する。【解決手段】  ＯＳ−Ａ３１がＣＰＵコア１１と１２上で、ＯＳ−Ｂ３２がＣＰＵコア１３と１４上でそれぞれ稼働している計算機システムにおいて、ＯＳ−Ａ３１のプロセス６１をＯＳ−Ｂ３２のプロセス６２へと移動させる際に、いずれのＯＳにも依存しないデータが格納される共有領域２３上の領域２５に割り当てられているＰｓ１についてはその物理的位置を維持して、ＯＳ−Ｂ３２のメモリ領域表およびページテーブル５２をＯＳ−Ａ３１のメモリ領域表に応じて生成することにより、プロセスの移動を行う。【選択図】  図１０
2010250722.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムが同時に動作する計算機システムにおいて、
当該計算機のメモリは、各オペレーティングシステムに占有されて当該オペレーティングシステムに依存するデータを保持する固有領域と、複数のオペレーティングシステムで共有されてオペレーティングシステムに依存しないデータを保持する共有領域と、を備えており、前記複数のオペレーティングシステム上の各プロセスは物理メモリと論理メモリの対応テーブルを参照して物理領域にアクセスするものであり、該共有領域を共有しているオペレーティングシステム間でプロセス移動を行う場合は、当該共有領域上のデータの物理アドレス位置を維持して、移動元の対応テーブルに基づいて移動先の対応テーブルを作成することを特徴とする計算機システム。
【請求項２】
移動するプロセスが当該固有領域上のデータを用いる場合は、プロセス移動前のオペレーティングシステムの固有領域からプロセス移動後のオペレーティングシステムの固有領域へとデータを変換することを特徴とする請求項１記載の計算機システム。
【請求項３】
前記対応テーブル中に使用しているメモリが固有領域か共有領域を識別する情報が記載されていることを特徴とする請求項２記載の計算機システム。
【請求項４】
前記計算機システムは、複数のプロセッサを有しており、各オペレーティングシステムは、異なるプロセッサ上で動作していることを特徴とする請求項１〜３のいずれかに記載の計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のオペレーティングシステム（ＯＳ：operating system）を同時に稼働させることが可能な計算機システムに関し、特に、ＯＳ間でのプロセス移動に関する。
【背景技術】
【０００２】
計算機システム上に仮想計算機を設け、複数のＯＳを同時に動作させる計算機システムが知られている。特許文献１に開示されている技術はこうした計算機システムの一例であって、それぞれのＯＳ上で動作するプロセス間で共有メモリを構築することを可能にするものである。具体的には、個々のＯＳは仮想メモリ空間を有し、メモリ空間変換テーブルを参照して物理メモリ空間へとアクセスするものであって、各ＯＳのメモリ空間変換テーブルを制御プログラムが直接変更することにより、各ＯＳの一方のプロセスが提供した物理メモリ空間上の共有メモリ空間を両方のＯＳのプロセスで共有できるようにするものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１５７１３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、複数のＯＳを使用している場合に、ＯＳ間の負荷を分散するなどの目的であるＯＳで稼働中のプロセスを他のＯＳへと移動させ、そのまま処理を継続させるプロセスマイグレーションと呼ばれる技術が知られている。この場合、プロセスが利用する全てのメモリ内容を移動前のＯＳから移動後のＯＳへと引き継ぐ必要がある。メモリ管理、アクセス手法の異なるＯＳ間でプロセスを移動するような場合には、従来、全てのメモリの内容を移動前のＯＳが管理するメモリ領域から移動後のＯＳが管理するメモリ領域へと複写しており、この移動処理自体に時間を要し、オーバーヘッドが大きくなっていた。
【０００５】
そこで本発明は、メモリ管理、アクセス手法の異なるＯＳ間でもオーバーヘッドを低減してプロセス移動を容易、迅速に行うことを可能とした計算機システムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本発明に係る計算機システムは、複数のＯＳが同時に動作する計算機システムにおいて、当該計算機のメモリは、各ＯＳに占有されて当該ＯＳに依存するデータを保持する固有領域と、複数のＯＳで共有されて共有されるＯＳに依存しないデータを保持する共有領域と、を備えており、これら複数のＯＳ上の各プロセスは物理メモリと論理メモリの対応テーブルを参照して物理領域にアクセスするものであり、該共有領域を共有しているＯＳ間でプロセス移動を行う場合は、当該共有領域上のデータの物理アドレス位置を維持して、移動元の対応テーブルに基づいて移動先の対応テーブルを作成することを特徴とする。
【０００７】
移動するプロセスが当該固有領域上のデータを用いる場合は、プロセス移動前のＯＳの固有領域からプロセス移動後のＯＳの固有領域へとデータを変換する。この場合、対応テーブル中に使用しているメモリが固有領域か共有領域を識別する情報が記載されているとよい。
【０００８】
この計算機システムは、複数のプロセッサを有しており、各ＯＳは、異なるプロセッサ上で動作している。ここで、複数のプロセッサを有するとは、複数のＣＰＵを有する場合のほか、１つのＣＰＵに複数のプロセッサコアを有している場合も含まれる。もちろん、複数のＣＰＵのいずれかまたは全部が複数のプロセッサコアを有している場合も含まれる。
【発明の効果】
【０００９】
本発明によれば、各プロセスはＯＳに依存しないデータを共有領域に保持しておき、プロセス移動を行う場合に、共有領域に保持していたデータについてはメモリ上での移動を行わないので、プロセス移動時のオーバーヘッドを低減することができる。
【００１０】
プロセスがＯＳに依存するデータを使用する場合には、当該データは、ＯＳが占有する固有領域に保持され、プロセス移動の際に移動先のＯＳにあわせて変換されてその固有領域上に移転するので、ＯＳに依存するデータを使用するプロセスについてもプロセス移動を確実に行うことができる。このとき、対応テーブル中に使用されているメモリが固有領域か共有領域かを識別する情報が記載されていると、この情報を基にして変換を要するか否かを識別することができる。
【００１１】
計算機システムが複数のプロセッサを有する場合には、各ＯＳを異なるプロセッサ上で稼働させると効率的である。この場合にも、上記プロセス移動を用いることで各ＯＳの負荷を分散させ、計算機システム全体の効率的な運用を図ることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明に係る計算機システムにおけるプロセス生成処理を示すフローチャートである。
【図２】本発明に係る計算機システムのプロセス開始前の状態を示すブロック図である。
【図３】図２の時点に対応するプロセス表を示す図である。
【図４】本発明に係る計算機システムのプロセス生成時のシステム状態を示す図である。
【図５】図４の時点に対応するプロセス表およびメモリ領域表を示す図である。
【図６】本発明に係る計算機システムにおけるプロセス移動処理を示すフローチャートである。
【図７】図６に示されるメモリ領域移動処理を示すフローチャートである。
【図８】図７の処理における共有領域を対応づけている際のシステム状態を示す図である。
【図９】図８の時点に対応するプロセス表およびメモリ領域表を示す図である。
【図１０】図７の処理におけるページテーブル作成時のシステム状態を示す図である。
【図１１】図１０の時点に対応するプロセス表およびメモリ領域表を示す図である。
【図１２】本発明に係る計算機システムのプロセス移動完了後のシステム状態を示す図である。
【図１３】図１２の時点に対応するプロセス表およびメモリ領域表を示す図である
【図１４】本発明に係る計算機システムにおけるプロセス終了処理を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の好適な実施の形態について詳細に説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の参照番号を附し、重複する説明は省略する。
【００１４】
最初に、本発明に係る計算機システムにおけるプロセス生成処理について説明する。図１は、その処理を示すフローチャートであり、図２、図３は、それぞれプロセス開始前の状態とプロセス表を示しており、図４、図５は、それぞれプロセス生成時のシステム状態と、プロセスおよびメモリ領域表を示している。
【００１５】
ここでは、図２に示されるように、４つのプロセッサであるＣＰＵコア１１〜１４を有するシステム上で、ＯＳ−Ａ３１と、ＯＳ−Ｂ３２とを同時に稼働させる場合を例に説明する。ＯＳ−Ａ３１は、ＣＰＵコア１１と１２を占有するとともに、物理メモリ上の固有領域２１を占有し、共有領域２３をＯＳ−Ｂ３２と共有している。一方、ＯＳ−Ｂ３２は、ＣＰＵコア１３と１４を占有するとともに、物理メモリ２０上の固有領域２２を占有し、共有領域２３をＯＳ−Ａ３１と共有している。この計算機システムにおいて、ＯＳ−Ａ３１上で新しいプロセス６１を作動させる。ここで、各固有領域２１、２２には、それぞれ対応するＯＳ−Ａ３１、ＯＳ−Ｂ３２に依存するデータが格納され、共有領域２３には、いずれのＯＳにも依存しないデータが格納される。
【００１６】
計算機システムは、図３に示されるように、稼働しているＯＳを管理するためのＯＳ表１００を有しており、このＯＳ表１００には、ＯＳ名称（ＯＳを識別するためのものであり、稼働している個々のＯＳに一意に与えられる符号等である。）と、個々のＯＳに対して作成されるプロセス表へのリンクが記載されている（行１０１および１０２）。各ＯＳのプロセス表１１０、１２０には、当該ＯＳで稼働中のプロセスを識別するためのプロセスＩＤと、各プロセス中で使用されているメモリを管理するためのメモリ領域表へのリンクが記載される。
【００１７】
新たなプロセスを開始する場合は、最初に、新しいプロセスに物理メモリ、および、論理メモリが割り当てられる（ステップＳ１）。具体的には、図４に示されるように、物理メモリ２０には、Ｐａ１が固有領域２１上の領域２４に、Ｐｓ１が共有領域２３上の領域２５に割り当てられ、論理メモリ４０には、Ｌａ１が固有領域４０２上に、Ｌｓ１が共有領域４０１上にそれぞれ割り当てられる。
【００１８】
次に、割り当てられた物理メモリ・論理メモリの対応関係を記録した「メモリ領域表」を作成する（ステップＳ２）。図５に示されるようにメモリ領域表１３０は、メモリＩＤと、領域の種別、論理メモリと物理メモリとの対応を規定したものであり、この表内には、Ｌｓ１とＰｓ１との対応を記載した行１３ｍと、Ｌａ１とＰａ１との対応を記載した行１３ｎが含まれる。
【００１９】
次に、ＯＳ−Ａ３１のプロセス表１１０内の領域１１１にこのプロセスのプロセスＩＤとメモリ領域表へのリンクを記載する（ステップＳ３）。そして、その他必要なプロセス生成の残りの処理を実行し（ステップＳ４）処理を終了する。
【００２０】
メモリ管理ユニット(ＭＭＵ：Memory Management Unit)７１がメモリ領域表１３０に基づいて作成されたページテーブル５１を参照して論理メモリと物理メモリ間での変換を行うことにより、プロセス６１は、論理メモリ４０へアクセスすることで、物理メモリ２０へのアクセスを行うことができる。
【００２１】
次に、本計算機システムによるプロセス移動処理について説明する。図６は、このプロセス移動処理を示すフローチャートであり、図７は、そのうちのメモリ領域移動処理を示すフローチャートである。図８、図９は、共有領域を対応づけている際のシステム状態、プロセス表およびメモリ領域表をそれぞれ示す図であり、図１０、図１１は、ページテーブル作成時のシステム状態、プロセス表およびメモリ領域表をそれぞれ示す図であり、図１２、図１３は、プロセス移動完了後のシステム状態、プロセス表およびメモリ領域表を示す図である。図１４は、プロセス終了処理を示すフローチャートである。
【００２２】
ここでは、ＯＳ−Ａ３１のプロセス６１からＯＳ−Ｂ３２のプロセス６２へとプロセスを移動させる場合の処理を例に説明する。ＯＳ−Ａ３１のプロセス６１は、上述した処理によりプロセスが開始されている。プロセス移動処理においては、最初に、移動先であるＯＳ−Ｂ３２のプロセス６１のメモリ領域表１４０を空白で作成し、ＯＳ−Ｂ３２のプロセス表１２０の行１２１へと登録する（ステップＳ１１）。次にメモリ領域の移動処理を行う（ステップＳ１２）。
【００２３】
この移動処理は、最初に移動元であるＯＳ−Ａ３１のプロセス６１のメモリ領域表１３０内の列ごとに処理を行う。最初に、当該領域の種類を判定する（ステップＳ２１）。この判別は、メモリ領域表１３０内に領域の種類を識別する情報が含まれているのでこれをもとに行えばよい。領域の種類が「共有」であると判定した場合（例えば、行１３ｍを処理している場合）は、ステップＳ２２へと移行して、移動先であるＯＳ−Ｂ３２のプロセス６１のメモリ領域表の同一行１４ｍの領域種類を「共有」に設定し、次に、この行の論理メモリと物理メモリの対応情報欄に移動元と同じ物理メモリＰｓ１に論理メモリ４１上の共有領域４１１に割り当てられる論理メモリＬｓ１が対応するよう対応情報を記載する（ステップＳ２３）。つまり、移動元のメモリ領域表１３０の当該欄と実質的に同じ内容となるよう情報を記載する（図８、図９参照）。
【００２４】
一方、ステップＳ２１で領域の種類が「固有」であると判定した場合（例えば、行１３ｎを処理している場合）は、ステップＳ２４へと移行して、移動先であるＯＳ−Ｂ３２のプロセス６１のメモリ領域表の同一行１４ｎの領域種類を「固有」に設定し、次に、物理メモリ２０中の自己（ＯＳ−Ｂ３２）の固有領域２２上の領域２６に物理メモリＰｂ１を割り当て（ステップＳ２５）、行１４ｎの論理メモリと物理メモリの対応情報欄にこの物理メモリＰｂ１と、論理メモリ４１上の固有領域４１２上の論理メモリＬｂ１とが対応するよう対応情報を記載する（ステップＳ２６）。そして、ＯＳ−Ａ３１の固有領域２１の領域２４に記載されているＰａ１の内容をＯＳ−Ｂ３２の固有領域２２の領域２６に変換することで、Ｐｂ１の内容をＰａ１の内容と合致させる（図１０、図１１参照）。ここでいう内容の合致とは、プロセス６１から見たＰａ１の内容とプロセス６２から見たＰｂ１の内容とが合致していることであり、Ｐａ１とＰｂ１に記録されている情報がビット単位で合致することを意味するものではない。
【００２５】
メモリ領域の移動が完了したら、ステップＳ１３へと移行し、ＯＳ−Ｂ３２のプロセス６２のメモリ領域表１４０からプロセス６２のページテーブル５２を作成する（ステップＳ１３）。そして、移動元であるＯＳ−Ａ３１のプロセス６１を消去する（ステップＳ１４）。具体的には、プロセス表１１０からメモリ領域表１３０へのリンクを抹消し（ステップＳ３１）、プロセス表１１０を解放して（ステップＳ３２）、その他プロセス終了に必要な処理を行う（ステップＳ３３）。この処理は、当該プロセスにのみ依存する処理の終了等が挙げられる。続いて、プロセス移動の残りの処理が行われ（ステップＳ１５）、移動処理が完了する（図１１、図１２参照）。
【００２６】
プロセス移動後は、ＭＭＵ７２がメモリ領域表１４０に基づいて作成されたページテーブル５２を参照して論理メモリと物理メモリ間での変換を行うことにより、プロセス６２は、論理メモリ４１へアクセスすることで、物理メモリ２０へのアクセスを行うことができ、プロセス６１からプロセス６２への処理の継続性を維持することができる。
【００２７】
本発明によれば、ＯＳに依存しない情報については、物理メモリ２０の共有領域２３内に格納し、これを維持したままＯＳ間でプロセスの移動を行うことができるので、ＯＳ間でのプロセス移動に伴うオーバーヘッドを低減することができる。このため、ＯＳ間でのプロセス移動を積極的に活用することができる。したがって、ＯＳの負荷分散やＯＳの障害検出時や更新時におけるプロセスレベルでのサービス維持等を行うことが容易になる。
【００２８】
以上の説明では、物理メモリ２０中の共有領域と、各ＯＳが占有する領域をそれぞれ１つずつ配置したが、これらを複数設けてもよい。例えば、プロセスが使用するメモリをスタック、ヒープ、共有ライブラリなどの用途ごとに区分して、それらをそれぞれ異なるメモリ領域にしてもよい。
【符号の説明】
【００２９】
１１〜１４…ＣＰＵコア、２０…物理メモリ、２１、２２…固有領域、２３…共有領域、２４〜２６…領域、３１…ＯＳ−Ａ、３２…ＯＳ−Ｂ、４０、４１…論理メモリ、５１、５２…ページテーブル、６１、６２…プロセス、１００…ＯＳ表、１１０、１２０…プロセス表、１３０、１４０…メモリ領域表、４０１、４１１…共有領域、４０２、４１２…固有領域、Ｌａ１、Ｌｂ１、Ｌｓ１…論理メモリ、Ｐａ１、Ｐｂ１、Ｐｓ１…物理メモリ。
【図１】
2010250722.tif 000003
【図２】
2010250722.tif 000004
【図３】
2010250722.tif 000005
【図４】
2010250722.tif 000006
【図５】
2010250722.tif 000007
【図６】
2010250722.tif 000008
【図７】
2010250722.tif 000009
【図８】
2010250722.tif 000010
【図９】
2010250722.tif 000011
【図１０】
2010250722.tif 000012
【図１１】
2010250722.tif 000013
【図１２】
2010250722.tif 000014
【図１３】
2010250722.tif 000015
【図１４】
2010250722.tif 000016