(57)【特許請求の範囲】
【請求項１】
１つ以上のＣＰＵを有する情報処理装置であって、
前記１つ以上のＣＰＵの処理負荷状態値を検知するＣＰＵ負荷状態検知手段と、
他の情報処理装置のＣＰＵの処理負荷状態値を当該他の情報処理装置から獲得する他ＣＰＵ負荷状態獲得手段と、
前記ＣＰＵ負荷状態検知手段によって検知された処理負荷状態値が第１のしきい値より高ければ、前記他ＣＰＵ負荷状態獲得手段によって獲得された他の情報処理装置のＣＰＵの処理負荷状態値に基づいて、他の情報処理装置を選択する情報処理装置選択手段と、
前記情報処理装置選択手段によって選択された情報処理装置にＣＰＵの貸出しを要求するＣＰＵ貸出し要求手段と、
前記ＣＰＵ貸出し要求手段のＣＰＵ貸出し要求に基づいて貸し出されたＣＰＵが、
ｉ）自装置が現在実行中のプロセスをＲｅａｄｙキューに入れ、
ｉｉ）実記憶モードに切り替えることで自装置のＯＳが管理するメモリ領域をアクセス可能とし、
ｉｉｉ）自装置のＯＳが貸し出し処理用に用意したエントリにジャンプすることで処理を開始し、
ｉｖ）自装置のＯＳが管理するページテーブルの値を設定し、仮想記憶モードに切り替える
ことで、前記他の情報処理装置のＣＰＵを自装置のＯＳの直接管理のもとで動作させつつ、所定のプロセスの実行を許可して実行させるようにする外部ＣＰＵ実行許可手段と、
前記ＣＰＵ負荷状態検知手段によって検知された処理負荷状態値が第２のしきい値より低く、かつ他の情報処理装置より貸し出されたＣＰＵがあれば、該ＣＰＵで実行予定のプロセスを他のＣＰＵに移管し、当該移管後の前記貸し出されたＣＰＵを当該他の情報処理装置のＯＳの管理下に戻す返還手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記情報処理装置の有するＣＰＵと、前記他の情報処理装置の有するＣＰＵとは、同じプログラムコードを解釈し、実行できることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
複数のＣＰＵを有する情報処理装置であって、
他の情報処理装置からのＣＰＵ貸出し要求に基づき、前記複数のＣＰＵから貸し出し可能なＣＰＵを選択する選択手段と、
前記選択手段で選択された貸し出し可能なＣＰＵで現在実行中のプロセス、または実行が予定されているプロセスを、前記複数のＣＰＵの中の他のＣＰＵに移管するプロセス移管手段と、
前記プロセス移管手段による移管後の前記選択された貸し出し可能なＣＰＵが、
ｉ）前記他の情報処理装置が現在実行中のプロセスをＲｅａｄｙキューに入れ、
ｉｉ）実記憶モードに切り替えることで前記他の情報処理装置のＯＳが管理するメモリ領域をアクセス可能とし、
ｉｉｉ）前記他の情報処理装置のＯＳが貸し出し処理用に用意したエントリにジャンプすることで処理を開始し、
ｉｖ）前記他の情報処理装置のＯＳが管理するページテーブルの値を設定し、仮想記憶モードに切り替える
ことで、該ＣＰＵを前記他の情報処理装置のＯＳの直接の管理下に移管させ、当該他の情報処理装置の実行可能状態のプロセスを実行させる他プロセス実行手段と
を備えることを特徴とする情報処理装置。
【請求項４】
前記他プロセス実行手段は、前記選択手段で選択された貸し出し可能なＣＰＵでのプロセス実行を、前記他の情報処理装置の所定のＣＰＵでの所定のプロセスの実行とパラレルに行うことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
それぞれが１つ以上のＣＰＵを有する複数の計算機を用いたシステムにおける各計算機で実行される情報処理方法であって、
自計算機のＣＰＵの処理負荷状態値を検知するＣＰＵ負荷状態検知工程と、
前記複数の計算機において前記自計算機以外の他の計算機のＣＰＵの処理負荷状態値を当該他の計算機から獲得する他計算機ＣＰＵ負荷状態獲得工程と、
前記ＣＰＵ負荷状態検知工程によって検知された処理負荷状態値が第１のしきい値より高ければ、前記他計算機ＣＰＵ負荷状態獲得工程によって獲得された処理負荷状態値が最も低い他の計算機を選択する他計算機選択工程と、
前記他計算機選択工程によって選択された他の計算機にＣＰＵの貸出しを要求するＣＰＵ貸出し要求工程と、
前記ＣＰＵ貸出し要求工程のＣＰＵの貸出し要求に基づき、前記他の計算機の有するＣＰＵから貸し出すＣＰＵを選択する貸し出しＣＰＵ選択工程と、
前記貸し出しＣＰＵ選択工程で選択されたＣＰＵが、
ｉ）自計算機が現在実行中のプロセスをＲｅａｄｙキューに入れ、
ｉｉ）実記憶モードに切り替えることで自計算機のＯＳが管理するメモリ領域をアクセス可能とし、
ｉｉｉ）自計算機のＯＳが貸し出し処理用に用意したエントリにジャンプすることで処理を開始し、
ｉｖ）自計算機のＯＳが管理するページテーブルの値を設定し、仮想記憶モードに切り替える
ことで、該ＣＰＵを自計算機のＯＳの管理のもとで動作させつつ、該ＣＰＵに所定のプロセスを実行させることを許可する外部ＣＰＵ実行許可工程と、
前記外部ＣＰＵ実行許可工程で前記所定のプロセスの実行を許可されたＣＰＵに、前記自計算機の実行可能状態のプロセスを実行させる他プロセス実行工程と、
前記ＣＰＵ負荷状態検知工程によって検知された処理負荷状態値が第２のしきい値より低く、かつ他の計算機より貸し出されたＣＰＵがあれば、該ＣＰＵで実行予定のプロセスを他のＣＰＵに移管し、当該移管後の前記貸し出されたＣＰＵを当該他の計算機のＯＳの管理下に戻す返還工程と
を備えることを特徴とする情報処理方法。
【請求項６】
前記各計算機のＣＰＵは、同じプログラムコードを解釈し、実行することを特徴とする請求項５に記載の情報処理方法。
【請求項７】
前記貸し出しＣＰＵ選択工程はさらに、前記ＣＰＵ貸出し要求工程のＣＰＵの貸出し要求に基づいて、貸し出すＣＰＵを選択した際、選択されたＣＰＵが現在実行中のプロセス、または実行が予定されているプロセスを持つ場合、他のＣＰＵに当該プロセスを移管するプロセス移管工程を備えることを特徴とする請求項５に記載の情報処理方法。
【請求項８】
複数のＣＰＵを有する計算機における情報処理方法であって、
他の計算機からのＣＰＵ貸出し要求に基づき、前記複数のＣＰＵから貸し出し可能なＣＰＵを選択する選択工程と、
前記選択工程で選択された貸し出し可能なＣＰＵで現在実行中のプロセス、または実行が予定されているプロセスを、前記複数のＣＰＵの中の他のＣＰＵに移管するプロセス移管工程と、
前記プロセス移管工程による移管後の前記選択された貸し出し可能なＣＰＵが、
ｉ）前記他の計算機が現在実行中のプロセスをＲｅａｄｙキューに入れ、
ｉｉ）実記憶モードに切り替えることで前記他の計算機のＯＳが管理するメモリ領域をアクセス可能とし、
ｉｉｉ）前記他の計算機のＯＳが貸し出し処理用に用意したエントリにジャンプすることで処理を開始し、
ｉｖ）前記他の計算機のＯＳが管理するページテーブルの値を設定し、仮想記憶モードに切り替える
ことで、該ＣＰＵを前記他の計算機のＯＳの直接の管理下に移管させ、当該他の計算機の所定の実行可能状態のプロセスを実行させる他プロセス実行工程と
を備えることを特徴とする記載の情報処理方法。
【請求項９】
前記他プロセス実行工程は、前記選択工程で選択された貸し出し可能なＣＰＵでのプロセス実行を、前記他の計算機の所定のＣＰＵでの所定のプロセスの実行とパラレルに行うことを特徴とする請求項８に記載の情報処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、情報処理方法とその装置、特に、複数台の計算機が高速な通信回線で結合され、各計算機に配置されたメモリ（またはその一部）が全体で単一のメモリ空間を構成し、例えば、システム全体でＮＵＭＡ（Non Uniform Memory Access）型のマルチプロセッサシステムのような形態で動作可能な情報処理方法とその装置に関する。
【０００２】
【従来の技術】
従来、ＬＡＮなどの低速な通信回線で結ばれた計算機システムの場合、自計算機上でプログラムがプロセスとして大量に実行され、プロセッサが混んでくると、プロセスマイグレーション機能を持つＯＳの場合は、実行中のプロセスを通信回線で結ばれた他の計算機上に移動することにより、他の計算機上のプロセッサを有効利用することができる。
【０００３】
【発明が解決しようとする課題】
しかしながら、プロセスマイグレーションの場合、プロセスの移動、再実行のためには、プロセスの実行に必要なメモリ内容（テキストやデータやスタック）そしてＯＳ内部のプロセス管理テーブルなどを、移動先の計算機上のメモリに転送しなければならず、大きなオーバヘッドとなる。
【０００４】
また、プロセスの移動とそのプロセス再実行のためには、以下に示すいくつかの制限を受ける場合がある。即ち、
１  プロセス生成時にしかその移動できない。
２  移動後のプロセスとはプロセスの親子関係が切れる。
３  移動後のプロセスは、新たに子プロセスを生成できない。
【０００５】
などの制限を受ける。これは、ＯＳ内部のプロセス管理情報が、移動先ＯＳと移動元ＯＳで一貫性を保つのが非常に難しいためである。
本発明は上記従来例に鑑みてなされたもので、最小限のオーバヘッドで、またプロセスの生成、実行、管理において、不自由な制限を受けることなく、通信回線に結ばれた他の計算機上のプロセッサの資源を有効利用できる情報処理方法と装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、本発明の情報処理装置は以下の構成を備える。即ち、
１つ以上のＣＰＵを有する情報処理装置であって、
前記１つ以上のＣＰＵの処理負荷状態値を検知するＣＰＵ負荷状態検知手段と、
他の情報処理装置のＣＰＵの処理負荷状態値を当該他の情報処理装置から獲得する他ＣＰＵ負荷状態獲得手段と、
前記ＣＰＵ負荷状態検知手段によって検知された処理負荷状態値が第１のしきい値より高ければ、前記他ＣＰＵ負荷状態獲得手段によって獲得された他の情報処理装置のＣＰＵの処理負荷状態値に基づいて、他の情報処理装置を選択する情報処理装置選択手段と、
前記情報処理装置選択手段によって選択された情報処理装置にＣＰＵの貸出しを要求するＣＰＵ貸出し要求手段と、
前記ＣＰＵ貸出し要求手段のＣＰＵ貸出し要求に基づいて貸し出されたＣＰＵが、
ｉ）自装置が現在実行中のプロセスをＲｅａｄｙキューに入れ、
ｉｉ）実記憶モードに切り替えることで自装置のＯＳが管理するメモリ領域をアクセス可能とし、
ｉｉｉ）自装置のＯＳが貸し出し処理用に用意したエントリにジャンプすることで処理を開始し、
ｉｖ）自装置のＯＳが管理するページテーブルの値を設定し、仮想記憶モードに切り替える
ことで、前記他の情報処理装置のＣＰＵを自装置のＯＳの直接管理のもとで動作させつつ、所定のプロセスの実行を許可して実行させるようにする外部ＣＰＵ実行許可手段と、
前記ＣＰＵ負荷状態検知手段によって検知された処理負荷状態値が第２のしきい値より低く、かつ他の情報処理装置より貸し出されたＣＰＵがあれば、該ＣＰＵで実行予定のプロセスを他のＣＰＵに移管し、当該移管後の前記貸し出されたＣＰＵを当該他の情報処理装置のＯＳの管理下に戻す返還手段とを備える。
【０００７】
【作用】
以上の構成において、１つ以上のＣＰＵを有する情報処理装置であって、ＣＰＵ負荷状態検知手段が、前記１つ以上のＣＰＵの処理負荷状態値を検知し、他ＣＰＵ負荷状態獲得手段が、他の情報処理装置のＣＰＵの処理負荷状態値を当該他の情報処理装置から獲得し、情報処理装置選択手段が、前記ＣＰＵ負荷状態検知手段によって検知された処理負荷状態値が第１のしきい値より高ければ、前記他ＣＰＵ負荷状態獲得手段によって獲得された他の情報処理装置のＣＰＵの処理負荷状態値に基づいて、他の情報処理装置を選択し、ＣＰＵ貸出し要求手段が、前記情報処理装置選択手段によって選択された情報処理装置にＣＰＵの貸出しを要求し、外部ＣＰＵ実行許可手段が、前記ＣＰＵ貸出し要求手段のＣＰＵ貸出し要求に基づいて貸し出されたＣＰＵが、ｉ）自装置が現在実行中のプロセスをＲｅａｄｙキューに入れ、ｉｉ）実記憶モードに切り替えることで自装置のＯＳが管理するメモリ領域をアクセス可能とし、ｉｉｉ）自装置のＯＳが貸し出し処理用に用意したエントリにジャンプすることで処理を開始し、ｉｖ）自装置のＯＳが管理するページテーブルの値を設定し、仮想記憶モードに切り替えることで、前記他の情報処理装置のＣＰＵを自装置のＯＳの直接管理のもとで動作させつつ、所定のプロセスの実行を許可して実行させるようにし、返還手段が、前記ＣＰＵ負荷状態検知手段によって検知された処理負荷状態値が第２のしきい値より低く、かつ他の情報処理装置より貸し出されたＣＰＵがあれば、該ＣＰＵで実行予定のプロセスを他のＣＰＵに移管し、当該移管後の前記貸し出されたＣＰＵを当該他の情報処理装置のＯＳの管理下に戻す。
【０００８】
【実施例】
本発明の実施例に関連する技術的背景を、以下に簡単に述べる。近年、光ケーブルなど、信頼性もあり高速で、計算機の内部バスにある程度近い性能を持つ通信媒体の登場で、物理メモリを直接他の計算機から使用するような構成も可能となりつつある。これにより、各計算機に配置されたメモリを（またはその一部を）全体で単一のメモリ空間として、どの計算機からでも直接アクセス可能にすることができるようなシステムが提案されてきている。
【０００９】
このようなシステムの場合、上記のようなプロセスマイグレーションのように、プロセスを移動することによって、他の計算機上のプロセッサを利用するのではなく、他の計算機上のプロセッサを直接自計算機上のＯＳの管理下に移動することで、自計算機上のプロセッサと同様の形態で、つまり自計算機のプロセッサが増えたと同じ環境で利用できる可能性が出てきた。
【００１０】
このような状況を鑑み、本発明に係る実施例の情報処理装置は、以下のような構成を備える。即ち、計算機の管理下にあるプロセッサの負荷状態を検知するプロセッサ負荷検知部と、通信回線で結ばれた他の計算機の負荷情報を収集する他計算機情報収集部と、プロセッサの貸出し元となる計算機を選定する貸出し元計算機選定部と、貸出し元計算機選定部により選定された計算機に対して、貸出し元計算機選定部により決定された数のプロセッサの貸出しを要求するプロセッサ貸出し要求部と、その要求に従った数のプロセッサを貸し出すプロセッサ貸出し部と、貸し出されたプロセッサを受け取り、計算機の管理下におくプロセッサ受け取り部と、借りていたプロセッサを貸出し元計算機に返還するプロセッサ返還部を備える。
【００１１】
以下、添付図面にしたがって本発明に係る実施例を詳細に説明する。
【００１２】
図１は、本発明の情報処理システム構成の概略を示すものであり、１０１は光ネットワークなどの高速な通信回線、２０１，３０１，４０１は通信回線１０１で結ばれた計算機である。２０２，３０２，３０３，４０２は計算機２０１，３０１，４０１に各々備えられたＭＭＵ（Memory Management Unit）内蔵プロセッサ、２１０，４１０は計算機２０１，４０１に備えられたユーザインターフェイスとしてのディスプレイ＆キーボード、２２０，３２０は計算機２０１，３０１に備えられたハードディスク装置などの２次記憶装置である。
【００１３】
尚、ディスプレイ＆キーボードや２次記憶装置は、計算機に装備されていてもされていなくてもよい。例えば、ディスプレイ＆キーボードが装備されていない計算機３０１は、サーバマシンまたはプロセッサプールとして利用できる。
【００１４】
２３０，３３０，４３０は、全体でひとつの単一なメモリ空間を構成する物理メモリ、２４０，３４０，４４０は各計算機用のローカルメモリである。
【００１５】
尚、このローカルメモリは、主にＯＳなどの処理のために必要となるが、物理メモリ２３０，３３０，４３０の一部でも代用可能であるため、なくてもよい。
【００１６】
各プロセッサ２０２、３０２、３０３、４０２は、物理メモリ２３０，３３０，４３０をアクセス可能である。
【００１７】
２５０，３５０，４５０は、計算機２０１，３０１，４０１上で動作するそれぞれのＯＳである。これらのＯＳ（オペレーテイングシステム）は、ほぼ同等の機能を持ち、各計算機２０１、３０１、４０１上でそれぞれ動作し、互いに協調的に働くような構成をとる。これにより、各計算機の独立性を保つことができ、システム全体の柔軟性も上がる。
【００１８】
図５は、本実施例での主要な各ＯＳ（例えば、ＯＳ２５０）の要素処理部の概要を示したものであり、プロセッサ負荷検知部、他計算機情報収集部、貸し出し元計算機選定部、プロセッサ貸し出し要求部等を備える。
【００１９】
尚、各ＯＳは各計算機上のローカルメモリ２４０，３４０，４４０上で動作しても、物理メモリ２３０，３３０，４３０上で動作してもよい。ただし、ＯＳのデータ領域の一部は、各ＯＳが管理するプロセッサの負荷情報などを交換可能にするため、物理メモリ２３０，３３０，４３０上に配置しておく。２６０，３６０，４６０がこれら情報交換領域である。また、１０２、３０２、４０２は、各計算機上で動作するＯＳ間での非同期な通信を行なうための計算機間割込み処理線である。
【００２０】
図２，３，４に本発明に係る一実施例の処理の流れを示す。図２は、プロセッサの貸出しを要求する計算機上のプロセッサの処理の流れを示し、図３は、貸出しを要求された計算機上のプロセッサで、かつ貸し出される対象となったプロセッサの貸し出し処理の流れを示し、図４は、図３の処理を終え貸し出されたプロセッサが返還されるときの処理の流れを示す。
【００２１】
尚、このフローチャートに対応する実行プログラムは、予め、各ＯＳ２５０，３５０，４５０に組み込まれており、各計算機のＣＰＵで実行される。
【００２２】
以下、これらの流れにそって、計算機２０１上のプロセッサ２０２が計算機３０１に貸出しを要求し、計算機３０１上のプロセッサ３０３が貸し出された場合を例に説明する。
【００２３】
図１のようなシステムにおいて、プロセッサ２０２が実行するＯＳ２５０は、立ち上げ時には、自計算機のプロセッサ（プロセッサ２０２）のみを管理し、タイムスライスなどのスケジューリング方法を用いて、実行可能状態のプロセスにプロセッサを割り当て実行させる（ステップＳ１）。
【００２４】
次に、ステップＳ２で、ＯＳ２５０内のプロセッサ負荷検知部（図５）により、自計算機管理下のプロセッサの負荷状態を検知して、ステップＳ１１で、負荷が高い状態か低い状態か、または普通の状態であるかを判定する。負荷状態は、そのとき実行可能状態（Ready 状態と呼ばれる）にあるプロセス数と、プロセッサ数との割合で調べることができる。この割合があるしきい値を越えたら、例えば実行可能プロセス数がプロセッサ数の４倍を越えたら、高負荷状態にあると判定し、またもう一つのしきい値より小さかったら、例えば実行可能プロセス数がプロセッサ数の同値以下になったら、低負荷状態にあると判定でき、その２つのしきい値の間だったらどちらでもないと判定できる。実行可能状態のプロセスが増え、プロセッサの利用率が上がり、高負荷状態と判定されると、ステップＳ３に進む。また、どちらでもない状態と判定されると、ステップＳ２に戻る。低負荷状態と判定された場合については後で述べる。
【００２５】
このプロセッサの負荷検知処理は、例えば１０ｍＳｅｃに１回といったように経験的に決められた間隔で、定期的に実行されるようにする。
【００２６】
ステップＳ３では、ＯＳ２５０の他計算機情報収集部（図５）により、通信回線で結ばれた他の計算機のプロセッサ負荷情報を収集する。この情報収集は、情報交換領域２６０，３６０，４６０と計算機間割込みライン１０２、１０３、１０４とを利用したＯＳ間のデータ交換により実現できる。尚、この時、通信回線で結ばれたすべての計算機の情報を収集しても、またいくつか選んで収集しても構わない。また、一台の計算機から情報収集するのにかかる時間を考慮して収集台数を制限してもよい。さらに、このときの収集対象となる計算機は、ランダムに、あるいはラウンドロビン的に自動的に計算機が選んでも、ユーザがあらかじめ設定しておいても構わない。
【００２７】
ステップＳ４では、ＯＳ２５０の貸出し元計算機選定部（図５）により、プロセッサを借りる計算機を選定する。この選定方法としては、自計算機よりも負荷が軽く、かつ最も負荷の軽い計算機を選ぶ。また、例えば、少なくとも自計算機より２倍以上負荷が軽いものを選択するといった選定方法でもよい。また、このステップでは、借りるプロセッサの数を決定する。この決定方法は例えば、上記の選択方法で選ばれた計算機の負荷が自計算機の負荷を越えない最大のプロセッサ数を借りるプロセッサ数として決定する。例えば、選ばれた計算機の負荷値が２（例えば、プロセス数８／プロセッサ数４）で、自計算機の負荷値が８（例えば、プロセス数１６／プロセッサ数２）だったとすると、借りるプロセッサ数は２となる。
【００２８】
上記の例では、一つの計算機を選んでそれから複数のプロセッサを借りる例を挙げたが、複数の計算機を選んで、それらからそれぞれプロセッサを借りるようにしてもよい。
【００２９】
もし、貸出し元計算機が選ばれなかったら、つまり自計算機より負荷の軽い計算機がなかったような場合には、ＯＳ２５０のプロセッサ負荷検知部の高負荷判定用のしきい値を以前の値より高めに設定し直して（ステップＳ７）、ステップＳ２に戻る。
【００３０】
尚、このように高めに設定し直したが、再びステップＳ０３に進んだ時に、他の計算機の負荷が前に調べた時より軽くなっているかどうかチェックして、そのしきい値を元の値に戻すようにしてもよい。このような場合は、他計算機情報収集部に、前に収集した各計算機の負荷情報を保持しておく機構を持たせることで容易に実現できる。
【００３１】
次に、ステップＳ４で、計算機３０１が貸出し元計算機として選ばれ、１つのプロセッサを借りることが決定した場合を例として説明を進める。
【００３２】
ステップＳ５では、ＯＳ２５０のプロセッサ貸出し要求部（図５）により、貸出し元計算機選定部で選ばれた計算機（例えば、計算機３０１）に対して、決定したプロセッサ数（例えば、１つ）の貸出しを要求する。これは、自計算機上のＯＳ２５０から貸出し元計算機上のＯＳ（例えば、ＯＳ３５０）への要求となるわけだが、これも情報交換領域２６０，３６０，４６０と計算機間割込みライン１０２、１０３、１０４とを利用したＯＳ間の通信により実現できる。
【００３３】
一方、貸し出し要求を受けた貸出し元計算機の処理を、図２のフローチャートを参照して以下説明する。
【００３４】
図３を参照して、要求を受けた貸出し元計算機上のＯＳ（この場合、ＯＳ３５０）を実行するプロセッサ（ここでは、プロセッサ３０２またはプロセッサ３０３のどちらでも構わないが、プロセッサ３０３だった場合を一例とする）は、ステップＳ１０１で、プロセッサ貸出し部により要求された数だけのプロセッサを貸し出す処理を開始する。この貸出しは以下のように行う。
【００３５】
まず、ステップＳ１０２で、要求を受けたＯＳ３５０を実行するプロセッサ３０３は、貸し出すプロセッサを選ぶ。例えば、マルチプロセッサシステムの構成方法が、シンメトリな方式で、かつスケジューリング方式も全プロセッサの負荷を均等に割り振るような方式であれば、どのプロセッサを選択しても同じなのでランダムに選んで構わない。ここで、シンメトリとは、保有するプロセッサの構成が同一であるという意味である。
【００３６】
尚、ここで、マルチプロセッサシステムの構成方法がマスタースレーブ方式であったとすると、マスタープロセッサを貸し出すわけにはいかないのでスレーブプロセッサの中から選択することになる。
【００３７】
以下、例えば、プロセッサ３０３が貸し出すプロセッサとして選ばれた場合を一例として以下説明を進める。
【００３８】
次に、ステップＳ１０３では、プロセッサ３０３で動作中のプロセスと、動作予定だったプロセスを他のプロセッサに移管する。この例の場合、現在この処理を行なっているプロセッサ自体が貸出し対象のプロセッサであるため、プロセッサ３０３は、現在ＯＳ３５０を実行しており、プロセスが動作中ということはない。しかし、もしプロセッサ３０２が貸出しプロセッサとして選ばれたとすると、、そのときプロセッサ３０２がプロセスを実行中の可能性がある。そこで、動作中のプロセスと、動作予定だったプロセスを他のプロセッサに移管する方法を以下説明する。
【００３９】
通常、実行可能状態（Ready 状態）にあり、実行のためにプロセッサ割り当てを待っているプロセスは、Ready キューと呼ばれるキューにつながれて管理される。現行のシステムの場合、このReady キューは、プロセスの実行優先順位ごとに複数のキューを用意する方式（UNIXなど）や、プロセスの実行優先順位の高い順にソートして１つのReady キューにキューイングする方式などがある。そして、スケジューリング方式がタイムスライス方式の場合には、現在プロセッサが割り当てられ実行中のプロセス（Running 状態と呼ばれる）のタイムクォンタムが切れたり、またイベント待ち状態（Suspend 状態と呼ばれる）に入ると、プロセッサは実行プロセスの切り替えを行なう。今まで実行中だったプロセスをReady キューに戻したり（タイムクォンタムが切れた場合など）、イベント待ち状態にするためSuspend キューに入れ、代りにReady キューの中から１つプロセスを取り出し、そのプロセスをRunning 状態にして実行させる。Ready キューの中からの選択は、優先順位の高いものから順に選んでいくのが一般的である。
【００４０】
マルチプロセッサシステムの場合、このReady キューの使い方にいくつかの方式がある。各プロセッサごとにそれぞれ固有のReady キューを持ち、各プロセッサは自分のReady キューからのみ実行プロセッサを選択していく方法、また、複数あるプロセッサが共有して使用するReady キューを１つ用意し（優先順位ごとにキューを持つ方式の場合には優先順位の数だけ用意）、各プロセッサは共有しているReady キューから実行プロセスを選択していく方式などが考えられる。
【００４１】
プロセッサごとに固有のReady キューを持つ方式の場合のプロセスの移管は、まず、移管元プロセッサで実行中のプロセスの実行を中断して移管先プロセッサのReady キューに入れ、そして移管元プロセッサのReady キューにキューイングされているすべてのプロセスをキューからはずし、移管先プロセッサのReady キューにつなぎかえることで実現できる。Ready キューを共有する方式の場合は、移管元プロセッサで実行中のプロセスの実行を中断して共有のReady キューに入れることでプロセスの移管を実現できる。
【００４２】
すべてのプロセスの移管が終了し、プロセッサ３０３がアイドル状態になったら、プロセッサ３０３をＯＳ３５０の管理下からＯＳ２５０の管理下に、管理元の移動処理を行なう。
【００４３】
まず、プロセッサ３０３は、ＯＳ２５０のプログラムコードを実行できるようにするために、ステップＳ１０４で、ＯＳ２５０の管理する物理メモリ領域をアクセス可能とさせる。これを実現するために、プロセッサ３０３は、自分の実行モードを仮想記憶モードから実記憶モードに切り替える。これにより、移動先のＯＳ２５０の管理するメモリ領域をアクセスできるようになる。
【００４４】
そして、ステップＳ１０５で、ＯＳ２５０がプロセッサの貸し出し処理用にあらかじめ用意したエントリにジャンプする。
【００４５】
ジャンプ処理を終えて、ＯＳ２５０のプログラムコードを実行し始めたプロセッサ３０３は、次にステップＳ１０６で、不図示のページテーブルのベースレジスタに、ＯＳ２５０が管理するページテーブルの値を設定し、仮想記憶モードに切り替え、ＯＳ２５０の仮想記憶空間で動作可能にする。
【００４６】
次に、ステップＳ１０７では、不図示の例外ベクタテーブルのベースレジスタも、同様にＯＳ２５０が管理する不図示の例外ベクタテーブルの位置に設定する。ベースレジスタ設定により例外ベクタテーブルの再配置が不可能なプロセッサの場合には、テーブルのジャンプアドレスを書き換えることにより、同様の処理が可能である。
【００４７】
以上の処理により、プロセッサ３０３はＯＳ２５０の管理下に移動したことになり、ステップＳ１０８で、プロセッサ３０３が計算機３０１から借りたプロセッサであることをＯＳ２５０内部に記録する。そして、ステップＳ１０９で、通常のＯＳ２５０の管理下のプロセッサ２０２とまったく同様に、ＯＳ２５０上の実行可能状態のプロセスを割り当て、そのプロセスを実行していく。以上で、プロセッサの貸し出し処理が終了となる。
【００４８】
このようにして、プロセッサを他の計算機から借りることにより負荷を軽くして動作を続けるが、そのうち、いくつかの動作中のプロセスが終了し、負荷がより軽くなる場合がある。つまり，ステップＳ２で、プロセッサ負荷検知部により、負荷があるしきい値よりも低くなったことが検知され、低負荷状態になったことが判定されると、ステップＳ６に進む。この判定は、負荷値が１（プロセッサ数と実行可能状態のプロセッサ数が同じ）より小さくなったかどうかで判定する。
【００４９】
また、本例のように、プロセッサ３０３を借りた後は、図２の処理は、プロセッサ２０２が実行しても、プロセッサ３０３が実行してもかまわない。本例の場合は、プロセッサ２０２が実行した場合を例としているが、もし、プロセッサ３０３が図２の処理を実行してステップＳ１，Ｓ２，Ｓ６と進んだ場合には、そのまま図４のステップＳ２０１にすすみプロセッサの返還処理を開始する。本例の場合は、プロセッサ２０２がステップＳ１，Ｓ２，Ｓ６とすすみ、プロセッサ３０３に要求を行い、プロセッサ３０３に返還処理（ステップＳ２０１）を開始させる。この要求は、割り込みのような手段であってもいいし、プロセッサ３０３のプロセス切り替えのタイミングなどを利用したポーリングによって行ってもよい。
【００５０】
ステップＳ２０１に進むと、プロセッサ返還部により、自プロセッサ（プロセッサ３０３）を元の計算機に返還する。プロセッサ返還処理は、プロセッサ貸し出し処理と同様の処理で実現できる。まず、ステップＳ２０２で、プロセッサ３０３で実行予定だったプロセスを全て他のプロセッサに移管する。全てのプロセスの移管が終了して、プロセッサ３０３がアイドル状態になると、次に、プロセッサ３０３をＯＳ２５０の管理下からＯＳ３５０の管理下に管理元の移動処理を行うため、ステップＳ２０３で、実行モードを仮想記憶モードから実記憶モードに切り替え、ステップＳ２０４で、ＯＳ３５０がプロセッサ返還処理用にあらかじめ用意したエントリにジャンプする。ジャンプ処理を終えて、ＯＳ３５０のプログラムコードを実行し始めたプロセッサ３０３は、次にステップＳ２０５でページテーブルのベースレジスタに、ＯＳ３５０が管理するページテーブルの値を設定し、仮想記憶モードに切り替え、ＯＳ３５０の仮想記憶空間で動作可能にする。次にステップＳ２０６で、例外ベクタテーブルのペースレジスタも、同様にＯＳ３５０が管理する例外ベクタテーブルの位置に設定する。
【００５１】
以上の処理により、プロセッサ３０３は、ＯＳ３５０の管理下に戻ったことになり、ステップＳ２０７で、貸し出す前と同様に、ＯＳ３５０上の実行可能状態のプロセスを割り当て、そのプロセスを実行していく。以上で、プロセッサの返還処理が終了となる。
【００５２】
尚、本発明は、複数の機器から構成されるシステムに適用しても１つの機器から成る装置に適用しても良い。また、本発明は、システム或は装置にプログラムを供給することによって達成される場合にも適用できることはいうまでもない。
【００５３】
以上説明したように、本実施例によれば、自計算機の管理するプロセッサの負荷状態を検知し、もし高負荷状態であることがわかると、通信回線で結ばれた他の計算機の負荷状態を調べ、低負荷状態の計算機を選び借りるプロセッサ数を決定し、その数だけプロセッサを貸出し元計算機の管理下から貸出し先計算機の管理下に移動することを可能とする。
【００５４】
これにより、最小限のオーバヘッドで、またプロセスの生成、実行、管理において、まったく余計な制限を受けることなく、通信回線に結ばれた他の計算機上のプロセッサの有効利用を可能とする情報処理装置を得ることができる。
【００５５】
【発明の効果】
以上説明したように本発明によれば、最小限のオーバヘッドで、またプロセスの生成、実行、管理において、不自由な制限を受けることなく、通信回線で結ばれた複数の計算機において、各計算機上のプロセッサの資源を有効利用することができる。
【図面の簡単な説明】
【図１】本実施例の情報処理装置の構成図である。
【図２】プロセッサの貸し出しを要求する情報処理装置上のプロセッサの処理の流れ図である。
【図３】プロセッサを貸し出しする情報処理装置上のピロセッサの処理の流れ図である。
【図４】貸し出されたプロセッサの返還処理の流れ図である。
【図５】本実施例での主要な各ＯＳの要素処理部の概要を示す図である。
【符号の説明】
１０１  高速な通信回線
１０２、１０３、１０４  ＣＰＵ間割込みライン
２０１，３０１，４０１  通信回線１０１で結ばれた複数台の計算機
２０２，３０２，３０３，４０２  各計算機に１つ以上備えられたＭＭＵ内蔵プロセッサ
２１０，４１０  ディスプレイ＆キーボード
２２０，３２０  ハードディスク装置などの２次記憶装置
２３０，３３０，４３０  全体で単一なメモリ空間をなす物理メモリ
２４０，３４０，４４０  各計算機上のローカルメモリ
２５０，３５０，４５０  各計算機上で動作するＯＳ
２６０，３６０  ４６０  情報交換領域
【図１】
0003862293.tif 000002
【図２】
0003862293.tif 000003
【図３】
0003862293.tif 000004
【図４】
0003862293.tif 000005
【図５】
0003862293.tif 000006