(57)【要約】【課題】処理の状況に応じて各ＯＳにかかる負荷を調整することによって高い処理効率を得るマルチプロセッサを提供する。【解決手段】  複数のオペレーティングシステム（ＯＳ）が分担して複数の単位プロセッサを動作させるマルチプロセッサにおいて、ＯＳ−Ａ、ＯＳ−Ｂが、自ＯＳにかかる負荷をレディキュー３０３の待機状態のタスクによって判定し、自ＯＳにかかる負荷が大きいと判断された場合、複数のＯＳ間で管理する単位プロセッサの数を調整し、自ＯＳにかかる負荷を調整する。【選択図】図２
2007188212.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステムと、複数の前記オペレーティングシステムが分担して動作させる複数の単位プロセッサを備えるマルチプロセッサであって、
前記複数のオペレーティングシステムの各々にかかる負荷を判定する負荷判定手段と、
前記負荷判定手段によって少なくとも一のオペレーティングシステムにかかる負荷が大きいと判断された場合、複数のオペレーティングシステムのうち少なくとも一部のオペレーティングシステムの各々にかかる負荷を調整する負荷調整手段と、
を備えることを特徴とするマルチプロセッサ。
【請求項２】
前記負荷判定手段は、複数のオペレーティングシステムのうちの１つにかかる負荷についてのみ大きいか否か判定し、前記負荷調整手段は、前記負荷判定手段による判定の結果に基づいて該オペレーティングシステムに対する他のオペレーティングシステムによる負荷の調整の要求に対応することを特徴とする請求項１に記載のマルチプロセッサ。
【請求項３】
前記負荷判定手段は、一のオペレーティングシステムが担当して実行する処理の数によって一のオペレーティングシステムにかかる負荷を判定することを特徴とする請求項１または２に記載のマルチプロセッサ。
【請求項４】
一のオペレーティングシステムが担当して実行する処理をタスクとして管理するスケジュール手段を備え、前記負荷判定手段は、前記スケジュール手段によって管理されるタスクを単位にして一のオペレーティングシステムにかかる負荷を判断することを特徴とする請求項３に記載のマルチプロセッサ。
【請求項５】
前記負荷調整手段は、複数のオペレーティングシステムのうち少なくとも一部のオペレーティングシステムの各々が担当して動作させる単位プロセッサの数を調整することによってオペレーティングシステムの各々にかかる負荷を調整することを特徴とする請求項１から４のいずれか１項に記載のマルチプロセッサ。
【請求項６】
複数のオペレーティングシステムと、複数の前記オペレーティングシステムが分担して動作させる複数の単位プロセッサを備えるマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムであって、
前記複数のオペレーティングシステムの各々おいて、該オペレーティングシステムにかかる負荷を判定する負荷判定ステップと、
前記負荷判定ステップにおいてオペレーティングシステムにかかる負荷が大きいと判断された場合、他のオペレーティングシステムとの間で該オペレーティングシステムが担当する単位プロセッサの数を調整する負荷調整ステップと、
を含むことを特徴とするマルチプロセッサの制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のプロセッサを組合わせて構成されるマルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムに係り、特に複数のプロセッサを複数のＯＳを使って動作させるマルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
特定の用途に用いられるソフトウェアとハードウェアとを組合わせた構成は、組み込みシステムと呼ばれている。近年では、組込みシステムにマルチ形式のプロセッサであるマルチプロセッサやマルチスレッドプロセッサが採用されることも多い。マルチ形式のプロセッサ（以降マルチプロセッサと記す）の採用は、装置の低クロック化や応答性の向上に有利である。また、特に携帯型の装置では、消費電力を低減することにも有利であるためマルチプロセッサの採用の要請が強い。
【０００３】
ところで、新たに開発したソフトウェアが正常に動作するか否かの判断に時間及びコストがかかる。このため、ソフトウェアの分野では、使用した結果実績のあるプロセッサのソフトウェアが流用可能であるならば、これを流用することが望ましいとされている。したがって、組込みシステムをマルチプロセッサ化する場合、先に使用されていたシングルプロセッサのソフトウェアを流用する要求がある。
【０００４】
シングルプロセッサのソフトウェアをマルチプロセッサに流用する従来技術として、例えば、特許文献１がある。特許文献１の発明は、μＩＴＲＯＮ（登録商標）をベースにしたシングルプロセッサ用のオペレーティングシステム（ＯＳ：Operating System）をマルチプロセッサに移植するものである。
ただし、特許文献１の発明は、マルチプロセッサのシステムをＳＭＰ（Symmetric Multi Processor）型のみのプロセッサで構築すると、シングルプロセッサの資産であるアプリケーションの移植作業の作業量が膨大になるという欠点がある。また、既に開発済みのアプリケーションを複数動作させる場合、マルチプロセッサ向けに統合作業を行うよりも、複数のＯＳを動作させて対応することが考えられる。
【特許文献１】特開平８−２９７５８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
マルチプロセッサにおいて複数のＯＳを使用する場合、複数のＯＳの各々が複数のプロセッサを分担して制御することになる。各ＯＳが制御するプロセッサ及び数は、ＯＳが起動した時点でＯＳに認識され、以降再起動するまで変化しない。
しかしながら、マルチプロセッサでは、各プロセッサに割り当てられる処理量が常に均等であるとは限らない。このため、複数ＯＳを使用するマルチプロセッサにあっては、１つのＯＳに処理が集中した場合、このＯＳの処理が滞ってマルチプロセッサ全体の稼動に影響がでるおそれがある。
【０００６】
本発明は、このような点に鑑みてなされたものであり、複数のプロセッサを複数のＯＳが各々分担して制御する場合、処理の状況に応じて各ＯＳにかかる負荷を調整することができ、処理効率の高いマルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
以上の課題を解決するため、本発明のマルチプロセッサは、複数のオペレーティングシステムと、複数の前記オペレーティングシステムが分担して動作させる複数の単位プロセッサを備えるマルチプロセッサであって、前記複数のオペレーティングシステムの各々にかかる負荷を判定する負荷判定手段と、前記負荷判定手段によって少なくとも一のオペレーティングシステムにかかる負荷が大きいと判断された場合、複数のオペレーティングシステムのうち少なくとも一部のオペレーティングシステムの各々にかかる負荷を調整する負荷調整手段と、を備えることを特徴とする。
【０００８】
このような発明によれば、複数のオペレーティングシステムと、複数の前記オペレーティングシステムが分担して動作させる複数の単位プロセッサを備えるマルチプロセッサにおいて、複数のオペレーティングシステムの各々にかかる負荷を判定し、少なくとも一のオペレーティングシステムにかかる負荷が大きい場合、複数のオペレーティングシステムのうち少なくとも一部のオペレーティングシステムの各々にかかる負荷を調整し、このオペレーティングシステムの負荷を軽減することができる。
このため、本発明は、処理の状況に応じて各ＯＳにかかる負荷を調整することができ、処理効率の高いマルチプロセッサを提供することができる。
【０００９】
また、本発明のマルチプロセッサは、前記負荷判定手段が、複数のオペレーティングシステムのうちの１つにかかる負荷についてのみ大きいか否か判定し、前記負荷調整手段は、前記負荷判定手段による判定の結果に基づいて該オペレーティングシステムに対する他のオペレーティングシステムによる負荷の調整の要求に対応することを特徴とする。
このような構成によれば、本実施形態は、負荷判定手段が、各ＯＳにおいてこのＯＳの負荷の判定及び調整を実行することによって複数のＯＳ間で負荷の調整を行うことができる。このため、複数のＯＳ間における負荷の判定及び調整を比較的簡易に行うことができる。
【００１０】
また、本発明のマルチプロセッサは、前記負荷判定手段が、一のオペレーティングシステムが担当して実行する処理の数によって一のオペレーティングシステムにかかる負荷を判定することを特徴とする。
このような発明によれば、各オペレーティングシステムにかかる負荷を比較的簡易に、かつ正確に判定することができる。
【００１１】
また、本発明のマルチプロセッサは、一のオペレーティングシステムが担当して実行する処理をタスクとして管理するスケジュール手段を備え、前記負荷判定手段は、前記スケジュール手段によって管理されるタスクを単位にして一のオペレーティングシステムにかかる負荷を判断することを特徴とする。
このような発明によれば、オペレーティングシステムにかかる負荷を処理の種別によらず正確にかつ簡易に判定することができる。
【００１２】
また、本発明のマルチプロセッサは、前記負荷調整手段が、複数のオペレーティングシステムのうち少なくとも一部のオペレーティングシステムの各々が担当して動作させる単位プロセッサの数を調整することによってオペレーティングシステムの各々にかかる負荷を調整することを特徴とする。
【００１３】
このような発明によれば、オペレーティングシステムが処理をするのに使用できる単位プロセッサの数を増減するという比較的簡単な方法によってオペレーティングシステムの負荷を調整することができる。このため、本発明は、比較的簡易な制御でありながら確実にマルチプロセッサ上で動作する複数のオペレーティングシステムの負荷を調整することができる。
【００１４】
また、本発明のマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムは、複数のオペレーティングシステムと、複数の前記オペレーティングシステムが分担して動作させる複数の単位プロセッサを備えるマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムであって、前記複数のオペレーティングシステムの各々おいて、該オペレーティングシステムにかかる負荷を判定する負荷判定ステップと、前記負荷判定ステップにおいてオペレーティングシステムにかかる負荷が大きいと判断された場合、他のオペレーティングシステムとの間で該オペレーティングシステムが担当する単位プロセッサの数を調整する負荷調整ステップと、を含むことを特徴とする。
【００１５】
このような発明によれば、複数のオペレーティングシステムと、複数の前記オペレーティングシステムが分担して動作させる複数の単位プロセッサを備えるマルチプロセッサにおいて、複数のオペレーティングシステムの各々において、該オペレーティングシステムかかる負荷を判定し、オペレーティングシステ間でオペレーティングシステムの各々にかかる負荷を調整し、このオペレーティングシステムの負荷を軽減することができる。
【００１６】
このため、本発明は、処理の状況に応じて各ＯＳにかかる負荷を調整することによって高い処理効率を得るマルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１７】
以下、図を参照して本発明に係るマルチプロセッサ及びマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムの一実施の形態を説明する。
図１は、本発明の一実施形態のマルチプロセッサの構成を説明するための図である。本実施形態のマルチプロセッサは、複数のプロセッサ（プロセッサを構成するプロセッサであるため単位プロセッサと記す）Ｐ０、Ｐ１、Ｐ２、Ｐ３と、メモリ１０３とを備えている。メモリ１０３は、単位プロセッサＰ０〜Ｐ３を動作させる複数のＯＳ（オペレーティングシステム：Operating System）Ａ、Ｂを保存している。また、メモリ１０３の少なくとも一部は、単位プロセッサＰ０〜Ｐ３によって共有される共有メモリ１０１である。
【００１８】
図２ないし４は、本実施形態のマルチプロセッサの構成及びＯＳの負荷調整の動作を説明するための図である。特に図２は、本実施形態のマルチプロセッサの負荷調整の開始動作を示し、図３は負荷調整の完了、図４は完了した負荷調整を再度調整前の状態に戻す動作を示している。
図２に示したように、本実施形態のマルチプロセッサは、複数のＯＳ−Ａ及びＯＳ−Ｂと、複数のＯＳ−Ａ、Ｂが分担して動作させる複数の単位プロセッサＰ０〜Ｐ３を備えている。図２に示した例では、ＯＳ−Ａが単位プロセッサＰ０、単位プロセッサＰ１を担当して動作させ（以下管理すると記す）、ＯＳ−Ｂが単位プロセッサＰ２、単位プロセッサＰ３を管理している。
【００１９】
また、ＯＳ−Ａ、ＯＳ−Ｂは、いずれも担当するプロセッサで処理されるタスクのスケジュールを管理するためのＯＳ管理テーブル２０３を備えている。ＯＳ管理テーブル２０３は、タスクを実行の順序にしたがって記録するレディキュー２０４を作成する。レディキュー２０４におけるタスクの実行順序は、タスクの切替え等の発生によって変更され得る。レディキュー２０４におけるタスクの実行順序の変更を再スケジューリングとも記す。
【００２０】
スケジューラ２０１ａ、２０１ｂは、レディキュー２０４に基づいてタスクの実行順序を制御するプログラムであって、本実施形態ではレディキュー２０４にあるタスクの数から自ＯＳにかかる負荷を判定する構成としても機能するものとする。負荷の判定は、１つのＯＳが管理するプログラムの処理の数によって行われる。本実施形態では、処理の数をタスクと呼ばれるプログラムの処理単位を単位にして定義する。
【００２１】
ＯＳ−Ａ、ＯＳ−Ｂは、自ＯＳのスケジューラ２０１ａ、２０１ｂに基づいて一のＯＳ（自ＯＳである）にかかる負荷が大きいと判断された場合、複数のＯＳのうち少なくとも一部のＯＳの各々にかかる負荷を調整する。本実施形態は、複数のＯＳのうち少なくとも一部のオペレーティングシステムの各々が担当して動作させる単位プロセッサの数を加減して調整することにより負荷の調整を実行する。なお、各ＯＳが現在管理している単位プロセッサの数は、ＯＳ管理テーブル２０３のプロセッサ数記録部２０５に保存されている。
【００２２】
以上の構成において、ＯＳ−Ａ、ＯＳ−Ｂは、複数のＯＳの各々にかかる負荷を判定する負荷判定手段として機能する。また、ＯＳ−Ａ、ＯＳ−Ｂは、自ＯＳにかかる負荷を調整する負荷調整手段として機能する。なお、本実施形態は、ＯＳ−Ａ、ＯＳ−Ｂが、１つのＯＳにかかる負荷についてのみ大きいか否か判定し、判定の結果に基づいて自ＯＳに対する他のオペレーティングシステムによる負荷の調整の要求に対応する。
このような構成によれば、本実施形態は、各ＯＳが自ＯＳの負荷の判定及び調整を実行することができる。このため、複数のＯＳ間における負荷の判定及び調整を比較的簡易に行うことができる。
【００２３】
以上述べた構成は、以下のように動作する。すなわち、マルチプロセッサが起動することにより、マルチプロセッサに保存されているＯＳ−Ａ、ＯＳ−Ｂがそれぞれ起動する。ＯＳ−Ａ、ＯＳ−Ｂは、起動直後に初期化され、このときに自ＯＳが動作を担当すべき単位プロセッサの数を取得する。取得された単位プロセッサの数は、各ＯＳのＯＳ管理テーブル２０３において管理される。
【００２４】
マルチプロセッサの動作中、スケジューラ２０１は、レディキュー２０４として実行が予定されているタスクの数に基づいて自ＯＳにかかる負荷の高低を判定する。この判定は、例えば、レディキュー２０４で実行が予定されているタスクの数が所定の数より多いか否かによって実現できる。
所定のタスク数は、予めＯＳ管理テーブル２０３に設定しておくものであってもよいし、ＯＳ−Ａ、ＯＳ−Ｂが初期化されるたびに設定されるものであってもよい。また、初期化の際、所定のタスク数を、ＯＳ−Ａ、ＯＳ−Ｂが初期化時に管理している単位プロセッサの数によって変化することも考えられる。
【００２５】
例えば、ＯＳ−Ｂにおいてレディキュー２０４に記録されたタスクが所定の数になった場合、スケジューラ２０１ｂがＯＳ−Ｂにかかる負荷が大きくなったと判断する。このような場合、スケジューラ２０１ｂは、ＯＳ−Ａに対してＯＳ−Ａが使用できる単位プロセッサの増加を要求する。
単位プロセッサ増加の要求は、例えば、ＯＳ−Ｂが単位プロセッサを要求すること、ＯＳ−Ｂが現在使用している単位プロセッサの数、自ＯＳの識別情報等を共有メモリ１０１に書き込むことによって実現することができる。ＯＳ−Ａは、共用メモリ１０１を参照し、ＯＳ−Ｂが単位プロセッサの増加を要求していることを認識できる。
【００２６】
ＯＳ−Ａは、ＯＳ−Ｂの要求を受付けるか否か判定する（この判定を受付判定とも記す）。受付判定は、例えば、ＯＳ−Ａの負荷をＯＳ−Ａのレディキュー２０４のタスク数等から判断することによって実現することができる。そして、ＯＳ−Ｂの負荷と比べ、ＯＳ−Ａにかかる負荷が軽いと判断した場合にのみ要求を受付けるようにしてもよい。
受付判定において、ＯＳ−ＡがＯＳ−Ｂの要求を受付けると判定した場合（Ａ）、図３に示すように、スケジューラ２０１ａは、ＯＳ−Ａが管理しているプロセッサ数記録部２０５に記録されているプロセッサ数を１つ減じる。そして、減じた単位プロセッサがスリープあるいはコンテキストスイッチしたタイミングでさらにタスクを割り当てないようＯＳ−Ａがスケジューリングする。
【００２７】
なお、受付判定において、ＯＳ−Ａは、自ＯＳにかかる負荷が大きい（ＯＳ−Ａにおいてレディキューのタスクが所定の数以上）と判定した場合にはＯＳ−Ｂの単位プロセッサの要求に応じない。このような本実施形態は、各ＯＳが個別に自ＯＳにのみかかる負荷を判定する。そして、判定の結果に基づいて自ＯＳに対する他のＯＳによる負荷の調整の要求に対応することにより複数のＯＳ間で負荷を調整することができる。
【００２８】
また、ＯＳ−Ｂは、プロセッサ数記録部２０５に記録されているプロセッサ数を１つ増加する。そして、増加した単位プロセッサに対し、レディキュー２０４に記録されているタスクを割り当てるようスケジューリングしなおす。以上の処理により、ＯＳ−ＡからＯＳ−Ｂへの単位プロセッサの移動が完了する。
さらに、本実施形態のマルチプロセッサは、ＯＳにかかる負荷が軽くなった場合、いったん増加させた単位プロセッサを移動前に管理されていたＯＳに戻すこともできる。ＯＳの負荷が軽くなったか否かの判断は、例えば、次のようにして実行することができる。
【００２９】
すなわち、本実施形態では、ＯＳ−Ｂにおいて、スケジューラ２０１ｂがレディキュー２０４において単位プロセッサの割当を待つ状態（待機状態）のタスクがない状態が継続した時間を計時する。そして、計時された時間が所定の時間に達した場合、ＯＳ−Ｂにかかる負荷が軽減されたと判断する。さらに、本実施形態では、ＯＳ−Ｂが起動時に管理していた単位プロセッサの数と現在管理している単位プロセッサの数とを比較する。
【００３０】
比較の結果、現在管理されている単位プロセッサの数が起動時に管理していた単位プロセッサの数よりも多い場合には、本実施形態では、ＯＳ−ＢがＯＳ−Ａに要求した単位プロセッサをＯＳ−Ａに返すものとする。
また、ＯＳ−Ｂにかかる負荷の軽減、単位プロセッサの返却は、レディキュー２０４のタスクの数が所定の数より少なくなった場合に行ってもよい。この場合、所定のタスク数は、予めＯＳ管理テーブル２０３に設定しておくものであってもよいし、ＯＳ−Ａ、ＯＳ−Ｂが初期化されるたびに設定されるものであってもよい。また、初期化の際、所定のタスク数を、ＯＳ−Ａ、ＯＳ−Ｂが初期化時に管理している単位プロセッサの数によって変化することも考えられる。
【００３１】
例えば、ＯＳ−Ｂにおいてレディキュー２０４に記録されたタスクが所定の数以下になった場合、スケジューラ２０１ｂがＯＳ−Ｂにかかる負荷が軽くなったと判断する。このような場合、スケジューラ２０１ｂは、ＯＳ−Ａに対してＯＳ−Ａに要求した単位プロセッサを返却することを通知する。
単位プロセッサ返却の通知は、例えば、ＯＳ−Ｂが単位プロセッサを返却すること、ＯＳ−Ｂが現在使用している単位プロセッサの数、自ＯＳの識別情報等を共有メモリ１０１に書き込むことによって実現することができる。ＯＳ−Ａは、共用メモリ１０１を参照し、ＯＳ−Ｂから単位プロセッサの返却通知があったことを認識できる。
【００３２】
ＯＳ−Ａは、受付判定において、ＯＳ−ＡがＯＳ−Ｂの単位プロセッサ返却を受付けると判定した場合、図４に示すように、スケジューラ２０１ｂは、ＯＳ−Ａに増加を要求して現在自ＯＳが管理している単位プロセッサに対し、この単位プロセッサがスリープあるいはコンテキストスイッチしたタイミングでさらにタスクを割り当てないようスケジューリングする。またＯＳ−Ａは、プロセッサ数記録部２０５に記録されているプロセッサ数を１つ減じる。
【００３３】
一方、ＯＳ−Ａは、プロセッサ数記録部２０５に記録されているプロセッサ数を１つ増加する。そして、増加した単位プロセッサに対し、レディキュー２０４に記録されているタスクを割り当てるようスケジューリングしなおす。以上の処理により、ＯＳ−ＢからＯＳ−Ａへの単位プロセッサの返却が完了する。
【００３４】
図５及び図６は、以上述べた本実施形態のマルチプロセッサで実行される制御方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。ＯＳ（ＯＳ−ＡまたはＯＳ−Ｂのいずれであってもよい）は、起動時に初期化され（Ｓ５０１）、実行状態になってイベントの発生に備えて待機する（Ｓ５０２）。なお、図５のフローチャートでいうイベントは、ＯＳ内部の要求を抽象化した概念である。
【００３５】
ＯＳは、イベント発生すると、発生したイベントの内容を判定する（Ｓ５０３）。そして、この判定の結果得られたイベントの内容に応じて動作する。先ず、発生したイベントがプロセッサの追加を通知するものであった場合（Ｓ５０４：Ｙｅｓ）、ＯＳは、プロセッサ数記録部２０５に保存されている単位プロセッサの数を１つ加算する（Ｓ５０５）。そして、スケジューラにスケジューリングを要求する（Ｓ５０６）。なお、スケジューリングの要求は、定期的にも実行されている。
【００３６】
また、ＯＳは、イベントがスケジューリング要求であると判定した場合（Ｓ５０７：Ｙｅｓ）、レディキュー２０４にあるタスクを取り出して自ＯＳが管理している複数の単位プロセッサの各々に割り当てる（Ｓ５０８）。次に、単位プロセッサの切り離し（一のＯＳによって管理されていた単位プロセッサをこのＯＳによる管理対象から除外する）の要求が通知されたか、または単位プロセッサの切り離しを要求する処理の実行中であるかを判断する（Ｓ５０９）。ステップＳ５０９の判断において、切り離し要求、切り離し要求の処理の実行中のいずれかであった場合（Ｓ５０９：Ｙｅｓ）、要求に沿って単位プロセッサを切り離す。そして、単位プロセッサを切り離したことを、切り離しを要求したＯＳに通知する（Ｓ５１０）。
【００３７】
また、発生したイベントが、レディキュー２０４に所定の数（Ｘ個）以上の待機状態のタスクがあることを示すものである場合（Ｓ５１１：Ｙｅｓ）、ＯＳは、他のＯＳに単位プロセッサを要求する（Ｓ５１２）。
また、ＯＳは、図６に示したように、レディキュー２０４において待機しているタスクがない状態が継続しているか否か判断する（Ｓ６０１）。そして、自ＯＳが現在管理している単位プロセッサの数が起動時に管理していた単位プロセッサの数より多いか否か判断する（Ｓ６０２）。判断の結果、現在管理している単位プロセッサの数の方が多い場合（Ｓ６０２：Ｙｅｓ）、自ＯＳが管理している単位プロセッサを切り離し、この単位プロセッサを要求したＯＳに移動（返却）する（Ｓ６０３）。
【００３８】
なお、本実施形態では、ステップＳ６０２において、ＯＳによって管理されている単位プロセッサの増加がないと判断された場合（Ｓ６０２：Ｎｏ）、単位プロセッサの返却は行わないものとする。
さらに、ＯＳは、単位プロセッサの切り離し、または単位プロセッサの要求のイベントが発生したか否か判断する（Ｓ６０４）。ＯＳは、切り離し要求、単位プロセッサの要求いずれがなされた場合にも、自ＯＳの負荷が軽いか否か判断する（Ｓ６０５）。ステップＳ６０５の判断は、例えば、レディキュー２０４おける待機状態のタスクの数等によって実現できる。ステップＳ６０５において、自ＯＳの負荷が軽くないと判断された場合（Ｓ６０５：Ｎｏ）、ＯＳは再び実行状態に戻る。
【００３９】
このような動作により、本実施形態は、単位プロセッサが要求された場合であっても、ＯＳは、自ＯＳにかかる負荷が大きい場合には他のＯＳに単位プロセッサを提供することはない。また、ＯＳは、自ＯＳにかかる負荷が大きい場合に単位プロセッサを返却することがない。
ステップＳ６０５において、負荷が軽いと判断された場合、ＯＳは、プロセッサ数記録部２０５に保存されている単位プロセッサの数を１つ減じる（Ｓ６０６）。そして、スケジューラに対してスケジューリングを要求する（Ｓ６０７）。
なお、以上の動作において、各イベントの発生の判断においてイベントが発生していないと判断された場合（Ｓ５０４，Ｓ５０７，Ｓ５０９，Ｓ５１１，Ｓ６０２，Ｓ６０４：Ｎｏ）、再度実行状態に戻ってイベントの判定を繰り返す。
【００４０】
以上述べた本実施形態によれば、複数のＯＳが分担して単位プロセッサＰ０〜Ｐ３を動作させるマルチプロセッサにおいて、複数のＯＳの各々において、このＯＳかかる負荷を判定し、判定の結果から、ＯＳ間でＯＳの各々にかかる負荷を調整することができる。
このため、本発明は、処理の状況に応じて各ＯＳにかかる負荷を調整することができ、負荷の大きいＯＳにはより多くの単位プロセッサを割り当てて処理効率の高いマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムを提供することができる。
【００４１】
なお、図５、図６のフローチャートで示した本実施形態のマルチプロセッサの制御方法をコンピュータに実行させるプログラム（本実施形態ではＯＳ）は、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク（ＦＤ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態のマルチプロセッサの制御方法をコンピュータに実行させるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【００４２】
さらに、以上述べた本実施形態のマルチプロセッサの制御方法をコンピュータに実行させるためのプログラムは、コンピュータで読み取り可能なＲＯＭ、フラッシュメモリ、メモリカード、ＵＳＢ接続型フラッシュメモリ等のメモリデバイスに記録されて提供してもよい。
【図面の簡単な説明】
【００４３】
【図１】本発明の一実施形態のマルチプロセッサの構成を説明するための図である。
【図２】本発明の一実施形態のマルチプロセッサの負荷調整の開始動作を説明するための図である。
【図３】本発明の一実施形態のマルチプロセッサの負荷調整の完了動作を説明するための図である。
【図４】本発明の一実施形態のマルチプロセッサにおいて完了した負荷調整を再度調整前の状態に戻す動作を説明するための図である。
【図５】本発明の一実施形態のマルチプロセッサで実行される制御方法をコンピュータに実行させるためのプログラムを説明するためのフローチャートである。
【図６】本発明の一実施形態のマルチプロセッサで実行される制御方法をコンピュータに実行させるためのプログラムを説明するための他のフローチャートである。
【符号の説明】
【００４４】
１０１  共用メモリ、１０３  メモリ、２０１ａ、２０１ｂ  スケジューラ、２０３  ＯＳ管理テーブル、２０４  レディキュー、２０５  プロセッサ数記録部、Ｐ０，Ｐ１，Ｐ２，Ｐ３  単位プロセッサ
【図１】
2007188212.tif 000003
【図２】
2007188212.tif 000004
【図３】
2007188212.tif 000005
【図４】
2007188212.tif 000006
【図５】
2007188212.tif 000007
【図６】
2007188212.tif 000008