(57)【要約】【課題】処理実行単位の優先度の総段階数がそれぞれ異なる複数のコンピュータ間で、コンピュータ毎に異なる値で表される優先度を正確に伝搬することができる優先度管理方法及びそれを用いた分散処理システムを提供する。【解決手段】処理実行単位の優先度の総段階数がそれぞれ異なる第１及び第２のコンピュータを含む複数のコンピュータがネットワークに接続された分散処理システムは、第１のコンピュータが、該第１のコンピュータ個別の第１の優先度の該第１のコンピュータが有する優先度の総段階数に対する相対値を、前記複数のコンピュータに共通する優先度に変換するための総段階数を分母とする、分数形式の共通優先度に変換し、得られた共通優先度を含むメッセージを第２のコンピュータへ送信し、第２のコンピュータが前記メッセージを受信すると、該メッセージに含まれる共通優先度を記憶手段に記憶し、該共通優先度を、該第２のコンピュータ個別の第２の優先度に変換する。【選択図】図１
2006323767.tif 000002
【特許請求の範囲】
【請求項１】
処理実行単位の優先度の総段階数がそれぞれ異なる第１及び第２のコンピュータを含む複数のコンピュータがネットワークに接続された分散処理システムにおいて、
前記第１のコンピュータは、
該第１のコンピュータ個別の第１の優先度の該第１のコンピュータが有する優先度の総段階数に対する相対値を、前記複数のコンピュータに共通する優先度に変換するための総段階数を分母とする、分数形式の共通優先度に変換する第１の変換手段と、
前記変換手段で得られた共通優先度を含むメッセージを前記第２のコンピュータへ送信する第１の送信手段とを具備し、
前記第２のコンピュータは、
前記メッセージを受信する受信手段と、
前記メッセージに含まれる前記共通優先度を記憶する記憶手段と、
前記共通優先度を、該第２のコンピュータ個別の総段階数に対する相対値を表す第２の優先度に変換する第２の変換手段とを具備したことを特徴とする分散処理システム。
【請求項２】
前記第２の変換手段は、前記第２のコンピュータが有する優先度の総段階数を分母とする、前記第２の優先度に最も近似する分数の分子を求めることを特徴とする請求項１記載の分散処理システム。
【請求項３】
前記第２のコンピュータは、
前記記憶手段に記憶された前記共通優先度を含むメッセージを前記ネットワークを介して他のコンピュータへ送信する第２の送信手段をさらに具備したことを特徴とする請求項１記載の分散処理システム。
【請求項４】
前記分散処理システムは、アプリケーションを複数のオブジェクトに分割し、各オブジェクトを前記複数のコンピュータに配置して、該複数のコンピュータを連携動作させることにより、該アプリケーションの分散処理を行うことを特徴とする請求項１記載の分散処理システムにおいて。
【請求項５】
前記第１のコンピュータは、前記複数のオブジェクトのうちの第１のオブジェクトを有し、前記第１のオブジェクトの処理実行単位を前記第１の優先度で実行する第１の実行手段をさらに具備し、
前記第２のコンピュータは、前記複数のオブジェクトのうちの第２のオブジェクトを有し、前記第２のオブジェクトの処理実行単位を前記第２の優先度で実行する第２の実行手段をさらに具備したことを特徴とする請求項４記載の分散処理システム。
【請求項６】
前記第２のコンピュータは、
前記第２の実行手段で前記処理実行単位を実行することにより発生した前記複数のオブジェクトのうちの第３のオブジェクトの実行要求を受けて、前記記憶手段に記憶された前記共通優先度を含むメッセージを前記ネットワークへ送信する第２の送信手段をさらに具備したことを特徴とする請求項５記載の分散処理システム。
【請求項７】
処理実行単位の優先度の総段階数がそれぞれ異なる第１及び第２のコンピュータを含む複数のコンピュータがネットワークに接続された分散処理システムにおける優先度管理方法において、
前記第１のコンピュータが、
該第１のコンピュータ個別の第１の優先度の該第１のコンピュータが有する優先度の総段階数に対する相対値を、前記複数のコンピュータに共通する優先度に変換するための総段階数を分母とする、分数形式の優先度に変換する第１の変換ステップと、
前記第１の変換ステップで得られた分数形式の優先度を含むメッセージを前記第２のコンピュータへ送信する第１の送信ステップと、
前記第２のコンピュータが、
前記メッセージを受信する受信ステップと、
前記メッセージに含まれる前記分数形式の優先度を記憶手段に記憶するステップと、
前記分数形式の優先度を、該第２のコンピュータ個別の総段階数に対する相対値を表す第２の優先度に変換する第２の変換ステップと、
を有することを特徴とする優先度管理方法。
【請求項８】
前記第２の変換ステップは、前記第２のコンピュータが有する優先度の総段階数を分母とする、前記分数形式の優先度に最も近似する分数の分子を求めることを特徴とする請求項７記載の優先度管理方法。
【請求項９】
前記第２のコンピュータが、
前記記憶手段に記憶された前記分数形式の優先度を含むメッセージを前記ネットワークへ送信する第２の送信ステップをさらに有することを特徴とする請求項７記載の優先度管理方法。
【請求項１０】
アプリケーションを複数のオブジェクトに分割し、各オブジェクトを前記複数のコンピュータに配置して、該複数のコンピュータをネットワークを介して連携動作させることにより、該アプリケーションの分散処理を行う分散オブジェクトシステムにおいて使用されるコンピュータであって、
前記複数のオブジェクトのうちの割り当てられたオブジェクトの処理実行単位を、当該コンピュータに固有の総段階数に対する相対値で示される相対優先度で実行する実行手段と、
前記相対優先度を、前記複数のコンピュータに共通するように、共通総段階数を分母とする分子および分母を持つ分数形式の共通優先度に変換する第１変換手段と、
前記処理実行単位を前記相対優先度で実行することを他のコンピュータへ通知するために、前記共通優先度を含むメッセージを作成する手段と、
他のコンピュータとの間でメッセージを送受する送受信手段と、
他のコンピュータから受信したメッセージに共通優先度が含まれる場合には、これを抽出して記憶する記憶手段と、
前記記憶手段の共通優先度から、当該コンピュータ個別の総段階数に対する相対値を表す相対優先度を求める第２変換手段と、
を備えたことを特徴とするコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散オブジェクト技術に関する。
【背景技術】
【０００２】
分散オブジェクトシステムにおいて、サーバに存在するオブジェクトをクライアントがアクセスするための手段として、ＣＯＲＢＡ（登録商標）、ＤＣＯＭ（登録商標）、Ｊａｖａ（登録商標）  ＲＭＩなどの技術が知られている。特に、ＣＯＲＢＡ（登録商標）は、異なるプラットフォームや開発言語を含む分散オブジェクト環境において、クライアント−サーバ間のリモート呼出しを容易に実現するための手段として、広く用いられている。
【０００３】
また、ＣＯＲＢＡ（登録商標）規格に対して優先度概念を導入し、リアルタイム・システムに必要とされる処理時間予測可能性を確保することを目的としてＣＯＲＢＡ（登録商標）の拡張機能として定義されているＲｅａｌ−Ｔｉｍｅ  ＣＯＲＢＡ（登録商標：以下ＲＴ−ＣＯＲＢＡ（登録商標）と称する）が策定され、利用されている。
【０００４】
処理優先度の概念を持つ分散オブジェクトシステムで従来用いられてきた技術である、優先度の伝播方式について、以下にその概要と問題点を述べる。
【０００５】
リアルタイム分散オブジェクトシステムにおいて、クライアントからサーバへリクエストを実行する時の優先度の設定方法として、
ａ）クライアントからサーバへ優先度を伝播する方法
ｂ）サーバ側で優先度を設定する方法
がある。
【０００６】
上記ａ）に示す方法では、１）クライアント側で優先度を設定し、２）サーバへリクエストを送信したときにその優先度も伝播し、３）サーバ側では、伝播されてきた優先度で動作する、という仕組みになる。クライアントからサーバへ優先度を伝播させる方法としては、リクエスト送信時に、リクエストの引数に加えて、クライアントの優先度情報を送信し、サーバ側でこれらを受け取るという手段がある。
【０００７】
また、上記ｂ）に示す方法では、クライアント側から優先度は伝播せず、サーバ側であらかじめ設定した優先度が有効となる。
【０００８】
上記ａ）の優先度設定方法として、例えば特開平１１−３１２０９３では、分散オブジェクトシステムにおいて、処理要求メッセージに優先度を設定する手段と、その優先度に応じて応答処理をスケジュールする手段を保持し、かつ、任意の処理要求メッセージから派生する処理要求メッセージに対し、元の処理要求メッセージから算出した優先度を設定することで、分散オブジェクトシステムで実行する個々のオブジェクトに対して、優先度を付与する手段を提供している。
【０００９】
上記ａ）の優先度設定方法において、分散オブジェクトシステムを構成する機器全てで同一のＯＳを使用する場合は、設定された優先度の値を優先度情報としてそのまま伝播させればよい。
【００１０】
しかしながら、それ以外の場合、即ちシステムを構成する機器で複数のＯＳが使用される場合は、各々のＯＳで優先度の表記方法が異なるため、ある一つの優先度値が持つ意味は、ＯＳによってそれぞれ異なる。このため、クライアント側の優先度の値を、クライアントと異なるＯＳ上のサーバオブジェクトに対してそのまま伝播させることはできない。
【００１１】
このような異なるプラットフォーム間において優先度情報を伝播させる手段として、例えばプラットフォームから独立した抽象的な優先度を定義し、それぞれのＯＳの優先度表記の違いを吸収させる方法がある。本方法を用いて、優先度情報を含むリクエストの送信を行う手順を以下に説明する。
【００１２】
まず、クライアントからのリクエスト送信時に、クライアントが持つＯＳ優先度の値を、クライアントで定めた優先度値変換規則に従って、プラットフォームから独立した優先度の値に変換し、このプラットフォームから独立した優先度の値を、優先度情報として送信する。
【００１３】
次に、リクエストを受け取ったサーバでは、サーバで定めた優先度変換規則に従って、プラットフォームから独立した優先度の値を、サーバのＯＳ優先度の値に変換し、変換後のＯＳ優先度で、サーバ上の当該オブジェクトのメソッドを実行する。
【００１４】
以上の手順を踏むことで、異なるプラットフォームに対しても優先度情報を伝播させることが可能となる。以降では、このプラットフォームから独立した優先度と、ＯＳの優先度との優先度変換規則を、優先度割り当てマップと呼ぶこととする。
【００１５】
前述のＲＴ−ＣＯＲＢＡ（登録商標）では、上記のプラットフォームから独立した優先度を、ＣＯＲＢＡ（登録商標）優先度と呼ぶ、「０」から「３２７６７」までの「３２７６８」段階の整数値で表現する。一般にＯＳが持つ優先度の段階数は数十段階から数百段階程度であり、ＣＯＲＢＡ（登録商標）優先度は、あるＯＳから他のＯＳへの優先度の伝播を仲介するのに十分な段階数を有している。
【００１６】
しかしながら、ＣＯＲＢＡ（登録商標）優先度による優先度表現は、その段階数の多さから、ＣＯＲＢＡ（登録商標）優先度の値がネットワーク全体の中でどのような意味を持つのか、といった位置付けが却って分かり辛くなり、分散オブジェクトシステムの開発者が、システム設計時に、ＯＳの優先度とＣＯＲＢＡ（登録商標）優先度をどのように関連付ければ適当であるかを判断することは容易ではない。
【００１７】
また、ＲＴ−ＣＯＲＢＡ（登録商標）では、異なるプラットフォーム間で優先度を伝播させる場合に、リクエストを受け取るホストはＣＯＲＢＡ（登録商標）優先度を優先度マップに従って一度ホスト上のＯＳの優先度に変換し、このホストからリクエストを送信するときに、当該ホスト上のＯＳの優先度を優先度マップに従って再びＣＯＲＢＡ（登録商標）優先度に変換して送信する。このとき、使用する優先度マップによっては、ホスト上のＯＳの優先度に変換される前のＣＯＲＢＡ（登録商標）優先度の値と、当該ホスト上のＯＳの優先度をＣＯＲＢＡ（登録商標）優先度に変換した値とが同一とならないことがあり、その結果、当初の想定と異なる優先度が伝播し、リクエストのターゲットオブジェクトは、開発者が意図しない振る舞いを行う可能性がある。
【００１８】
上記問題を解決するために、本発明では、分散アプリケーションが生成するオブジェクトの優先度を、分散アプリケーションがネットワーク全体に渡って使用する優先度の段階数を分母とする分数形式で管理する。優先度を、アプリケーションで実際に使用する優先度の段階数に基づく形で表現することで、分散オブジェクトシステムの設計者は、ネットワーク全体における優先度の位置付けをより直感的に理解でき、設計作業を従来よりも容易に行うことができるようになる。
【００１９】
また、優先度情報が縮退する従来の優先度伝播方式について、本発明では、分散オブジェクトの分数形式の優先度値を、スレッドが備えるローカルな記憶領域に格納し、分散オブジェクトに対するリクエストの実行時に、スレッドが保持する分数形式の優先度をそのまま伝播させることで、分数形式の優先度の分母に対してＯＳの優先度段階数が少なく、分数形式からＯＳ優先度への変換処理によって優先度情報が縮退した場合でも、元の優先度情報を損なうことなく優先度を伝播させることができる。
【００２０】
特開平１１−３１２０９３号公報においても、処理要求メッセージに対する応答処理を実行する間、処理要求メッセージに設定された優先度を、そのメッセージを処理するオブジェクト資源の現在の優先度として記憶し、さらにオブジェクト資源の現在の優先度を、そのオブジェクト資源から発行する処理要求メッセージの優先度として設定するが、分散オブジェクトシステムが複数のプラットフォームで構成される場合における前記問題への対応は考慮されていない。本発明によれば、前記問題を解決することが可能である。
【特許文献１】特開平１１−３１２０９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
以上説明したように、アプリケーションを複数のオブジェクトに分割し、各オブジェクトを、ネットワークに接続されたプラットフォームの異なる（従って、処理実行単位に対する優先度の総段階数が異なる）複数のコンピュータに配置して、複数のコンピュータを連携動作させることにより、該アプリケーションの分散処理を行う場合、ＯＳ毎に異なる値で表される優先度と、複数のコンピュータに共通する優先度の値との対応関係が明確でないため、コンピュータ間で優先度を正確に伝搬することができないという問題点があった。
【００２２】
そこで、本発明は、上記問題点に鑑み、処理実行単位の優先度の総段階数がそれぞれ異なる複数のコンピュータ間で、コンピュータ毎に異なる値で表される優先度を正確に伝搬することができる優先度管理方法及びそれを用いた分散処理システムを提供することを目的とする。
【課題を解決するための手段】
【００２３】
処理実行単位の優先度の総段階数がそれぞれ異なる第１及び第２のコンピュータを含む複数のコンピュータがネットワークに接続された分散処理システムは、第１のコンピュータが、該第１のコンピュータ個別の第１の優先度の該第１のコンピュータが有する優先度の総段階数に対する相対値を、前記複数のコンピュータに共通する優先度に変換するための総段階数を分母とする、分数形式の共通優先度に変換し、得られた共通優先度を含むメッセージを第２のコンピュータへ送信し、第２のコンピュータが前記メッセージを受信すると、該メッセージに含まれる共通優先度を記憶手段に記憶し、該共通優先度を、該第２のコンピュータ個別の総段階数に対する相対値を表す第２の優先度に変換する。
【００２４】
第２のコンピュータは、該記憶手段に記憶された該共通優先度を含むメッセージを該ネットワークを介して他のコンピュータへ送信する。
【発明の効果】
【００２５】
本発明によれば、処理実行単位の優先度の総段階数がそれぞれ異なる複数のコンピュータ間で、コンピュータ毎に異なる値で表される優先度を正確に伝搬することができる。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施形態について図面を参照して説明する。
【００２７】
図１は、本実施形態に係る分散オブジェクトシステムの概略構成例を示したものである。
【００２８】
ここでは、あるアプリケーションを複数のソフトウェア部品（ここでは分散オブジェクト、あるいは単にオブジェクトと呼ぶ）に分割し、各オブジェクトをネットワーク上のプラットフォーム（例えば、オペレーティングシステム（ＯＳ））がそれぞれ異なる複数のコンピュータに配置して、該複数のコンピュータを連携動作させることにより、該アプリケーションの分散処理を行う分散オブジェクトシステムについて説明する。
【００２９】
図１では、あるアプリケーションの２つの分散オブジェクト１０５、１１１が、クライアント装置１０１とサーバ装置１０７にそれぞれ配置されている場合を示している。
【００３０】
図１の分散オブジェクトシステムのクライアント装置１０１では、分散オブジェクト１０５のスレッドなどの各処理実行単位に対する実行の優先度を定めるための優先度の総段階数がａ段階であるオペレーティングシステム（ＯＳ）を有し、これをここでは「ＯＳ−Ａ」１０２と呼ぶ。クライアント装置１０１は、この「ＯＳ−Ａ」１０２と、「ＯＳ−Ａ」１０２上で分散オブジェクト間のリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲＢ（登録商標）：Object Request Broker：以下、ＯＲ処理部）１０３と、「ＯＳ−Ａ」上での処理実行単位に対する優先度（以降、これを個別優先度と称する）と、ネットワーク上の複数のコンピュータで共通に使用する優先度（以降、これを共通優先度と称する）との間の優先度変換規則を規定する優先度割り当てマップ１０４と、ＯＲ処理部１０３によって生成される、分散オブジェクト１０５の処理実行単位であるスレッド１０６を実行する分散オブジェクト実行部１２１を有する。分散オブジェクト実行部１２１は、スレッド１０６を実行する際に利用する、スレッド１１２の固有記憶領域（Ｔｈｒｅａｄ  Ｓｐｅｃｉｆｉｃ  Ｓｔｏｒａｇｅ：ＴＳＳ）を有する。
【００３１】
サーバ装置１０７では、分散オブジェクト１１１のスレッドなどの各処理実行単位に対する実行の優先度を定めるための優先度の総段階数がｂ段階であるオペレーティングシステム（ＯＳ）を有し、これをここでは「ＯＳ−Ｂ」１０８と呼ぶ。サーバ装置１０７は、この「ＯＳ−Ｂ」１０８と、「ＯＳ−Ｂ」１０８上で分散オブジェクト間のリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲ処理部）１０９と、「ＯＳ−Ｂ」上での処理実行単位に対する優先度（個別優先度）と共通優先度との間の優先度変換規則を規定する優先度割り当てマップ１１０と、ＯＲ処理部１０９によって生成される、分散オブジェクト１１１の処理実行単位であるスレッド１１２を実行する分散オブジェクト実行部１２２を有する。分散オブジェクト実行部１２２は、スレッド１１２を実行する際に利用する、スレッド１１２の固有記憶領域（ＴＳＳ）を有する。
【００３２】
クライアント装置１０１及びサーバ装置１０７では、それぞれのコンピュータ（ＯＳ）に固有の優先度の総段階数に対する相対優先度である個別優先度（固有優先度）に従って、各処理実行単位を実行する。ネットワーク上でクライアント装置１０１からサーバ装置１０７へ、サーバ装置１０７から他のコンピュータへと伝搬される、ある処理実行単位の優先度は、この個別優先度をネットワーク上の複数のコンピュータに共通するように、予め定められた共通総段階数を分母とする分子および分母を持つ分数形式の共通優先度（共有優先度）である。
【００３３】
クライアント装置１０１及びサーバ装置１０７は、メモリやハードディスクなどの記憶手段、ＣＰＵなどの演算手段及びネットワークを介して互いに通信を行うための通信手段などを有するコンピュータであり、記憶手段には、分散オブジェクトやＯＳなどのプログラム、ＯＲ処理部の機能を実現するためのプログラム、優先度割り当てマップなどが記憶されている。また、記憶手段には、これらプログラムを演算手段により実行する際に利用されるワークエリアや、上記ＴＳＳなどが設けられている。
【００３４】
クライアント装置１０１やサーバ装置１０７の分散オブジェクト実行部やオブジェクトリクエスト処理部（ＯＲ処理部）などの各機能部は、記憶手段に記憶されたこれら各機能部に対応するプログラムを演算手段で実行することにより実現される。
【００３５】
図４は、図１の分散オブジェクト１０５が分散オブジェクト１１１にリクエストを送信する際のクライアント装置１０１の処理動作を説明するためのフローチャートである。
【００３６】
ネットワーク上の複数のコンピュータ（ここでは、例えば、クライアント装置１０１，サーバ装置１０７）が連携動作して分散処理される１つのアプリケーションに対し、各コンピュータに配置される分散オブジェクトのスレッドに対するネットワーク上の複数のコンピュータで共通の優先度（共通優先度）を定めるための優先度の総段階数ｑが１つ定められている。
【００３７】
各コンピュータ上のオブジェクトを含むアプリケーションに定められている優先度の総段階数ｑ、当該オブジェクトの処理実行単位であるスレッドの当該ＯＳ上での優先度は、オブジェクト実行部１２１により、当該コンピュータのＯＳへ登録される。
【００３８】
リクエストを送信する側のクライアント装置１０１のＯＲ処理部１０３は、まず、分散オブジェクト１０５の実行スレッド１０６の記憶領域（ＴＳＳ）を参照し、ＴＳＳから共通優先度の優先度分母の値を取得する（ステップＳ１０１）。ＴＳＳに共通優先度が格納されていない場合はこの優先度分母は「０」である（ステップＳ１０２）。この場合は、ステップＳ１０３へ進み、ＯＲ処理部１０３は、「ＯＳ−Ａ」から受け取った共通優先度の総段階数ｑ、スレッド１０６の「ＯＳ−Ａ」上での優先度及び「ＯＳ−Ａ」における優先度の総段階数ｐを基に、優先度割り当てマップ１０４によって、スレッド１０６の個別優先度を共通優先度に変換し（ステップＳ１０３）、得られた共通優先度の優先度分母、優先度分子の値をスレッド１０６のＴＳＳに格納する（ステップＳ１０４）。
【００３９】
次に、ＯＲ処理部１０３は、リクエスト先のターゲットオブジェクト名、メソッド名、引数などの情報と、共通優先度の優先度分母、優先度分子の値を含む要求パラメータなどをマーシャリング（ＯＳ（「ＯＳ−Ａ」１０２）個別のデータ形式をネットワーク上の各コンピュータに設けられた分散オブジェクト環境（ＯＲ処理部）で共通のデータ形式へ変換）し（ステップＳ１０５）、上記要求パラメータを含むリクエストメッセージを送信する（ステップＳ１０６）。
【００４０】
図５は、図１のサーバ装置１０７がリクエストメッセージを受信する際の処理動作を説明するためのフローチャートである。サーバ装置１０７のＯＲ処理部１０９は、分散オブジェクト１１１に対応するスレッド１１２を生成し（ステップＳ１１１）、リクエストメッセージを受信するまで待機する（ステップＳ１１２）。リクエストメッセージを受信すると（ステップＳ１１２、ステップＳ１１３）、当該リクエストメッセージに含まれる要求パラメータなどのアンマーシャリング（ネットワーク上の各コンピュータに設けられた分散オブジェクト環境（ＯＲ処理部）で共通のデータ形式をＯＳ（「ＯＳ−Ｂ」１０８）個別のデータ形式へ変換）を行い（ステップＳ１１４）、当該要求パラメータに含まれる共通優先度をスレッド１１２のＴＳＳに格納する（ステップＳ１１５）。
【００４１】
次に、ＯＲ処理部１０９は、優先度割り当てマップ１１０を用いて、共通優先度を、ＯＳ−Ｂ上での個別優先度に変換し（ステップＳ１１６）、変換後の個別優先度をスレッド１１２に適用する（ステップＳ１１７）。すなわち、当該個別優先度をスレッド１１２に割り当てる（設定する）。
【００４２】
サーバ装置１０７の「ＯＳ−Ｂ」１０８では、スレッド１１２を含む複数の処理実行単位を、各処理実行単位の優先度（個別優先度）に基づき演算手段に実行させる。すなわち、分散オブジェクト実行部１２２が、ターゲットオブジェクトである分散オブジェクト１１１の当該メソッド１１２（スレッド１１２）を実行すると（ステップＳ１１８）、スレッド１１２は再び待機状態に戻る（ステップＳ１１２）。
【００４３】
図６は、図１の優先度割り当てマップ１０４，１１０の構成例を示したものである。
【００４４】
前述したように、ネットワーク上の複数のコンピュータが連携動作して分散処理される１つのアプリケーションに対し、各コンピュータに配置される分散オブジェクトのスレッドに対する実行の優先度を定めるための優先度の総段階数ｑが１つ定められている。このｑが、当該アプリケーションに対応するネットワーク上での共通優先度の優先度分母となる。
【００４５】
図６に示すように、各アプリケーションに対応する共通優先度は、当該アプリケーションに定められた優先度の総段階数ｑを分母とする分数形式で表記される。共通優先度は、低い順から１／ｑ、２／ｑ、３／ｑ、…、ｑ／ｑとなる。
【００４６】
ここで、ＯＲ処理部１０３，１０９における個別優先度から共通優先度へ／共有優先度から個別優先度への優先度変換処理の一例を説明する。
【００４７】
優先度の総段階数がｐであるようなＯＳ上のある処理実行単位に対する個別優先度が、優先度の低い順からｕ番目であるとする。この変換対象の個別優先度ｕを、優先度の総段階数がｑである共通優先度に変換する場合、変換対象の個別優先度ｕは、
ｕ／ｐ≦ｖ／ｑ                            …（１）
を満たすｖの最小値がｖ’であるとき、共通優先度ｖ’／ｑに変換する。
【００４８】
共通優先度がｖ／ｑである場合、この共通優先度を、優先度の総段階数がｐであるようなＯＳ上における個別優先度に変換する場合、変換対象の共通優先度ｖ／ｑは、
（２ｖ−１）／（２ｑ）≦ｕ／ｐ            …（２）
を満たすｕの最小値がｕ’であるとき、優先度の低い順からｕ’番目の個別優先度に変換する。
【００４９】
このように、例えばクライアント装置１０１で個別優先度ｕを共通優先度へ変換する場合には、個別優先度ｕのクライアント装置１０１が有する優先度の総段階数ａに対する相対値ｕ／ａを、総段階数ｑを分母とする、ｕ／ａに最も近似する分数形式の共通優先度
ｖ´／ｑに変換する。
【００５０】
また、例えば、サーバ装置１０７で共通優先度ｖ´／ｑを個別優先度へ変換する場合には、サーバ装置１０７が有する総段階数ｂを分母とする、ｖ´／ｑに最も近似する分数
ｕ´／ｂの分子ｕ´を個別優先度として求める。
【００５１】
優先度割り当てマップの構成方法及び優先度変換処理は、上記の場合に限るものではないが、優先度変換処理において、変換前と変換後とで優先度の逆転が発生することを防ぐために、優先度割り当てマップは、以下の条件１）、条件２）を満たす必要がある。
【００５２】
条件１）共通優先度Ｐｃａ及びＰｃａを個別優先度に変換した値Ｐｏａ、共通優先度Ｐｃｂ及びＰｃｂを個別優先度に変換した値Ｐｏｂについて、共通優先度がＰｃａ＞Ｐｃｂならば、個別優先度はＰｏａ≧Ｐｏｂである。
【００５３】
条件２）個別優先度Ｐｏｃ及びＰｏｃを共通優先度に変換した値Ｐｃｃ、個別優先度Ｐｏｄ及びＰｏｄを共通優先度に変換した値Ｐｃｄについて、個別優先度がＰｏｃ＞Ｐｏｄならば、共通優先度はＰｃｃ≧Ｐｃｄである。
【００５４】
個別優先度と共通優先度との間の変換処理は、上記２つの条件を満たすようなものであれば、例えば、以下に示すような方法であってもよい。
【００５５】
個別優先度から共通優先度へ／共有優先度から個別優先度への優先度変換処理の他の例を説明する。
【００５６】
優先度の総段階数がｐであるようなＯＳ上のある処理実行単位に対する個別優先度が、優先度の低い順からｕ番目であるとする。この変換対象の個別優先度ｕを、優先度の総段階数がｑである共通優先度に変換する場合、変換対象の個別優先度ｕは、
ｕ／ｐ≧ｖ／ｑ                            …（３）
を満たすｖの最大値がｖ’であるとき、共通優先度ｖ’／ｑに変換する。
【００５７】
共通優先度がｖ／ｑである場合、この共通優先度を、優先度の総段階数がｐであるようなＯＳ上における個別優先度に変換する場合、変換対象の共通優先度ｖ／ｑは、
（２ｖ−１）／（２ｑ）≧ｕ／ｐ            …（４）
を満たすｕの最大値がｕ’であるとき、優先度の低い順からｕ’番目の個別優先度に変換する。
【００５８】
個別優先度から共通優先度へ／共通優先度から個別優先度への優先度変換処理は、上記のように計算によって算出する場合に限らない。例えば、アプリケーション毎及びＯＳ毎に、上記（１）式及び（２）式、あるいは上記（３）式及び（４）式などを用いて、上記２つの条件を満たすような、当該ＯＳに対応する個別優先度と当該アプリケーションに対応する共通優先度との間の対応関係を示すテーブルを予め作成しておき、これを、図１の優先度割り当てマップ１０４，１１０としてもよい。
【００５９】
この場合、クライアント装置１０１は、アプリケーション毎に、「ＯＳ−Ａ」１０２に対応する個別優先度と、当該アプリケーションに対応する共通優先度との間の対応関係を示すテーブルを優先度割り当てマップ１０４としてもち、サーバ装置１０７は、アプリケーション毎に、「ＯＳ−Ｂ」１０８に対応する個別優先度と、当該アプリケーションに対応する共通優先度との間の対応関係を示すテーブルを優先度割り当てマップ１１０としてもつ。
【００６０】
ＯＲ処理部１０３は、図４のステップＳ１０３において、優先度割り当てマップ１０４を参照して、スレッド１０６の個別優先度に対応する共通優先度を得る。そして、ステップＳ１０４では、得られた共通優先度の優先度分母及び優先度分子をスレッド１０６のＴＳＳに格納する。
【００６１】
また、ＯＲ処理部１０９は、図５のステップＳ１１６において、優先度割り当てマップ１１０を参照して、要求パラメータに含まれる共通優先度に対応する個別優先度を得る。そして、ステップＳ１１７では、得られた個別優先度をスレッド１１２に適用する。
【００６２】
このように、例えばクライアント装置１０１で個別優先度ｕを共通優先度へ変換する場合には、個別優先度ｕのクライアント装置１０１が有する優先度の総段階数ａに対する相対値ｕ／ａを、総段階数ｑを分母とする、ｕ／ａに最も近似する分数形式の共通優先度
ｖ´／ｑに変換する。
【００６３】
また、例えば、サーバ装置１０７で共通優先度ｖ´／ｑを個別優先度へ変換する場合には、サーバ装置１０７が有する総段階数ｂを分母とする、ｖ´／ｑに最も近似する分数
ｕ´／ｂの分子ｕ´を個別優先度として求める。
【００６４】
ネットワーク上で伝搬される共通優先度を、ネットワーク全体で共通の優先度の総段階数を分母とする分数形式で相対的に表現することで、処理実行単位に対する実行の優先度を定めるための優先度の総段階数がＯＳ毎に異なる場合にも、各ＯＳ上での個別優先度が、ネットワーク全体の共通優先度でみた場合にどのような位置づけにあるのかが明確となり、その結果、各ＯＳ上での個別優先度とネットワーク全体で使用する共通優先度との対応が明確となり、優先度の総段階数がそれぞれ異なり、ＯＳ毎に異なる値で表される優先度をコンピュータ間で正確に伝搬することができる。
【００６５】
また、共通優先度と各ＯＳ上の個別優先度の値の対応が直感的に理解できるため、分散オブジェクトシステムの設計開発をより容易に行うことができる効果も得られる。
【００６６】
ここで、図２を参照して、従来の分散オブジェクトシステムにおいて、例えばＲＴ−ＣＯＲＢＡ（登録商標）を使用して、クライアントからサーバに対してリクエストを送信する場合の動作を説明する。
【００６７】
図２は、クライアント２０１から第１のサーバ２０７の第１のオブジェクト２１３へリクエストを送信し、第１のサーバ２０７において当該リクエスト内の処理を実行することにより、第１のサーバ２０７とは別の第２のサーバ２１５の第２のオブジェクト２２１へリクエストを送信する場合の処理手順を示すものである。
【００６８】
図２では、あるアプリケーションの２つの分散オブジェクト２１３、２２１が、ネットワーク上の第１のサーバ２０７と第２のサーバ２１５にそれぞれ配置されている場合を示している。ここでは、第１のサーバ２０７に配置されている分散オブジェクトを第１のオブジェクト２１３、第２のサーバ２１５に配置されている分散オブジェクトを第２のオブジェクト２２１と呼ぶ。
【００６９】
図２において、クライアント２０１は、「１」から「５０」までの５０段階の優先度を有するＯＳである「ＯＳ−Ａ」２０２と、「ＯＳ−Ａ」２０２上で分散オブジェクトのリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲＢ（登録商標）：Object Request Broker：以下、ＯＲ処理部）２０３と、「ＯＳ−Ａ」２０２上での処理実行単位の優先度（個別優先度）とネットワーク上の共通優先度との間の変換規則を規定する優先度割り当てマップ２０４と、クライアントプログラム２０５の処理実行単位である実行スレッド２０６を実行して、クライアントプログラム２０５を実行するクライアントプログラム実行部２３１を有する。
【００７０】
第１のサーバ２０７は、「−３」から「３」までの７段階の優先度を有するＯＳである「ＯＳ−Ｂ」２０８と、「ＯＳ−Ｂ」２０８上で分散オブジェクトのリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲ処理部）２０９と、「ＯＳ−Ｂ」２０８上での処理実行単位の優先度（個別優先度）とネットワーク上の共通優先度との間の変換規則を規定する優先度割り当てマップ２１０と、サーバプログラム実行部２１２と、第１のオブジェクト２１３の処理実行単位である実行スレッド２１４を実行して、第１のオブジェクト２１３を実行する第１のオブジェクト実行部２３２を有する。
【００７１】
第２のサーバ２１５は、「−２０」から「３９」までの６０段階の優先度を有するＯＳである「ＯＳ−Ｃ」２１６と、「ＯＳ−Ｃ」２１６上で分散オブジェクトのリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲ処理部）２１７と、「ＯＳ−Ｃ」２１６上での処理実行単位の優先度（個別優先度）とネットワーク上の共通優先度との間の変換規則を規定する優先度割り当てマップ２１８と、サーバプログラム実行部２２０と、第２のオブジェクト２２１の処理実行単位である実行スレッド２２２を実行して、第２のオブジェクト２２１を実行する第２のオブジェクト実行部２３３を有する。
【００７２】
優先度割り当てマップ２０４、２１０、２１８に示された、各ＯＳに対応する個別優先度を共通優先度へ変換する変換規則を定める関数を図７に示し、共通優先度を各ＯＳに対応する個別優先度へ変換する変換規則を定める関数を図８に示す。
【００７３】
ＯＲ処理部２０３，２０９，２１７は、図７、図８に示すような関数を用いて、各ＯＳに対応する個別優先度を共通優先度へ変換し、共通優先度を各ＯＳに対応する個別優先度へ変換する。
【００７４】
図７の「ｔｏ＿ＣＯＭＭＯＮ」関数は、第１引数に指定した個別優先度の値を、共通優先度へ変換し、変換後の共通優先度の値へのポインタを第２引数に格納して、変換が正常に行われたかを論理値で返す関数である。
【００７５】
図８の「ｔｏ＿ｎａｔｉｖｅ」関数は、第１引数に指定した共通優先度の値を、個別優先度へ変換し、変換後の個別優先度の値へのポインタを第２引数に格納して、変換が正常に行われたかを論理値で返す関数である。
【００７６】
図２において、クライアント２０１で「ＯＳ−Ａ」２０２上での個別優先度「４５」で動作するクライアントプログラム２０５から、第１のオブジェクト２１３へリクエストを送信する場合の従来の処理の流れは、以下の通りである。
【００７７】
１）クライアントプログラム実行部２３１が、クライアント２０１のＯＲ処理部２０３に要求パラメータを含むリクエスト送信要求を発行する。
【００７８】
２）ＯＲ処理部２０３が、リクエスト送信要求を受け取ると、優先度割り当てマップ２０４によって（例えば、図７に示すような関数を用いて）、（「ＯＳ−Ａ」２０２から受け取った）個別優先度「４５」を共通優先度「２９４９０」に変換する。
【００７９】
３）ＲＢ２０３が、リクエスト先のターゲットオブジェクト名、メソッド名、引数、共通優先度などを含む要求パラメータなどをマーシャリングした後、リクエスト先の第１のオブジェクト２１３が存在する第１のサーバ２０７に対してリクエストメッセージ２２３を送信する。
【００８０】
４）第１のサーバ２０７のＯＲ処理部２０８が、リクエストメッセージを受信し、アンマーシャリングを行う。
【００８１】
５）ＯＲ処理部２０９が、共通優先度「２９４９０」を、優先度割り当てマップ２１０によって（例えば、図８に示すような関数を用いて）、「ＯＳ−Ｂ」上での個別優先度「２」に変換する。
【００８２】
６）変換後の個別優先度「２」で、第１のオブジェクト実行部２３２が第１のオブジェクト２１３のメソッド（スレッド２１４）を実行し、この処理の中で、第２のオブジェクト２２１のメソッドを呼び出す。
【００８３】
７）第１のオブジェクト実行部２３２が、第２のオブジェクト２２１へのリクエスト送信要求を発行する。
【００８４】
８）ＯＲ処理部２０９が、リクエスト送信要求を受け取ると、優先度割り当てマップ２１０によって（例えば、図７に示すような関数を用いて）、個別優先度「２」を、共通優先度「２５２７７」に変換する。
【００８５】
９）第１のサーバ２０７のＯＲ処理部２０９が、リクエスト先のターゲットオブジェクト名、メソッド名、引数、共通優先度などを含む要求パラメータなどをマーシャリングした後、リクエスト先の第２のオブジェクト２２１が存在する第２のサーバ２１５に対してリクエストメッセージを送信する。
【００８６】
１０）第２のサーバのＯＲ処理部２１７が、リクエストメッセージを受信し、アンマーシャリングを行う。
【００８７】
１１）ＯＲ処理部２１７が、共通優先度「２５２７７」を、優先度割り当てマップ２１８によって「ＯＳ−Ｃ」上での個別優先度「２５」に変換する。
【００８８】
１２）変換後の個別優先度「２５」で、第２のオブジェクト実行部２３３が第２のオブジェクト２２１のメソッド（スレッド２２２）を実行する。
【００８９】
上記１）から１２）の一連の手順の中において、クライアント２０１から第１のサーバ２０７を経て、第２のサーバ２１５へリクエストメッセージを送信した場合に、第１のサーバ２０７では、クライアント２０１から受け取った共通優先度を第１のサーバ２０７上での個別優先度に変換し、この変換後の個別優先度を再び共通優先度に変換して第２のサーバ２１５へ送信している。この場合、第１のサーバ２０７のＯＳ−Ｂ上での優先度の総段階数が、クライアント２０１、第２のサーバ２１５よりも少ないために、優先度の縮退が発生する可能性がある。即ち、クライアント２０１から第２のサーバ２１５へ直接リクエストメッセージを送信した場合に、第２のサーバ２１５が受信するリクエストメッセージ内の共通優先度の値と、クライアント２０１から第１のサーバ２０７を経て、第２のサーバ２１５へリクエストメッセージを送信した場合に、第２のサーバ２１５が受信するリクエストメッセージ内の共通優先度の値とが異なる可能性がある。
【００９０】
図２では、「ＯＳ−Ａ」上で個別優先度「４５」で動作するクライアントプログラム２０５から、第２のオブジェクト２２１へ直接リクエストメッセージを送信した場合、第２のサーバのＯＲ処理部２１７が受信するリクエストメッセージ内の共通優先度は「２９４９０」で、優先度割り当てマップ２１８によって「ＯＳ−Ｃ」上の個別優先度「２８」に変換される。一方、上記１）から１２）の手順のように、途中、個別優先度の総段階数が他と比較して少ない第１のサーバ２０７を介する場合、第２のサーバ２１５のＯＲ処理部２１７が受信するリクエストメッセージ内の共通優先度は「２５２７７」で、優先度割り当てマップ２１８によって変換して得られる「ＯＳ−Ｃ」の個別優先度は「２５」となる。このように、クライアント２０１からみれば同じ個別優先度「４５」のリクエストメッセージであるのにも関わらず、第２のサーバ２１５が直接リクエストメッセージを受け取った場合と第１のサーバ２０７を経由してリクエストメッセージを受け取った場合とでは、第２のサーバ２１５上での個別優先度の値が異なる。この結果、分散オブジェクトシステムが、想定と異なる振る舞いを行う可能性があるのである。
【００９１】
次に、図３を参照して、本実施形態に係る分散オブジェクトシステムにおいて、クライアントからサーバに対してリクエストを送信する場合の動作を説明する。
【００９２】
図３は、図２と同様、クライアント３１９から第１のサーバ３２０の第１のオブジェクト３１０へリクエストを送信し、第１のサーバ３２０において当該リクエスト内の処理を実行することにより、第１のサーバ３２０とは別の第２のサーバ３２１の第２のオブジェクト３１７へリクエストを送信する場合の処理手順を示すものである。
【００９３】
図３では、あるアプリケーションの２つの分散オブジェクト３１０、３１７が、ネットワーク上の第１のサーバ３２０と第２のサーバ３２１にそれぞれ配置されている場合を示している。ここでは、第１のサーバ３２０に配置されている分散オブジェクトを第１のオブジェクト３１０、第２のサーバ３２１に配置されている分散オブジェクトを第２のオブジェクト３１７と呼ぶ。
【００９４】
図３において、クライアント３１９は、「１」から「５０」までの５０段階の優先度を有するＯＳである「ＯＳ−Ａ」２０２と、「ＯＳ−Ａ」２０２上で分散オブジェクトのリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲ処理部）３０４と、「ＯＳ−Ａ」２０２上での処理実行単位の優先度（個別優先度）とネットワーク上の共通優先度との間の変換規則を規定する優先度割り当てマップ３０２と、クライアントプログラム３０１の処理実行単位である実行スレッド３０３を実行するクライアントプログラム実行部３３１を有する。クライアントプログラム実行部３３１は、スレッド３０３を実行する際に利用する記憶手段、すなわち、スレッド３０３の固有記憶領域（ＴＳＳ）を有する。
【００９５】
第１のサーバ３２０は、「−３」から「３」までの７段階の優先度を有するＯＳである「ＯＳ−Ｂ」２０８と、「ＯＳ−Ｂ」２０８上で分散オブジェクトのリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲ処理部）３０６と、「ＯＳ−Ｂ」３０６上での処理実行単位の優先度（個別優先度）とネットワーク上の共通優先度との間の変換規則を規定する優先度割り当てマップ３０７と、サーバプログラム実行部３０９と、第１のオブジェクト３１０の処理実行単位である実行スレッド３１１を実行する第１のオブジェクト実行部３３２を有する。第１のオブジェクト実行部３３２は、スレッド３１１を実行する際に利用する記憶手段、すなわち、スレッド３１１の固有記憶領域（ＴＳＳ）を有する。
【００９６】
第２のサーバ３２１は、「−２０」から「３９」までの６０段階の優先度を有するＯＳである「ＯＳ−Ｃ」２１６と、「ＯＳ−Ｃ」２１６上で分散オブジェクトのリクエスト送受信を仲介する機能を有するオブジェクトリクエスト処理部（ＯＲ処理部）３１３と、「ＯＳ−Ｃ」２１６上での処理実行単位の優先度（個別優先度）とネットワーク上の共通優先度との間の変換規則を規定する優先度割り当てマップ３１４と、サーバプログラム実行部３１６と、第２のオブジェクト３１７の処理実行単位である実行スレッド３１８を実行する第２のオブジェクト実行部３３３を有する。第２のオブジェクト実行部３３３は、スレッド３１８を実行する際に利用する記憶手段、すなわち、スレッド３１８の固有記憶領域（ＴＳＳ）を有する。
【００９７】
図１と同様に、クライアント３１９、第１及び第２のサーバ装置３２０、３２１は、メモリやハードディスクなどの記憶手段、ＣＰＵなどの演算手段及びネットワークを介して互いに通信を行うための通信手段などを有するコンピュータであり、記憶手段には、分散オブジェクトやＯＳなどのプログラム、ＯＲ処理部の機能を実現するためのプログラム、優先度割り当てマップなどが記憶されている。また、記憶手段には、これらプログラムを演算手段により実行する際に利用されるワークエリアや、上記ＴＳＳなどが設けられている。
【００９８】
クライアント３１９のクライアントプログラム実行部３３１、第１及び第２のサーバ装置３２０、３２１の第１及び第２のオブジェクト実行部３３２，３３３、オブジェクトリクエスト処理部（ＯＲ処理部）３０４、３０６，３１３などの各機能部は、記憶手段に記憶されたこれら各機能部に対応するプログラムを演算手段で実行することにより実現される。
【００９９】
図２と同様に、クライアント３１９の「ＯＳ−Ａ」がもつ優先度の総段階数は「１」から「５０」までの５０段階、第１のサーバ３２０の「ＯＳ−Ｂ」がもつ優先度の総段階数は「−３」から「３」までの７段階、第２のサーバ３２１の「ＯＳ−Ｃ」がもつ優先度の総段階数は「−２０」から「３９」の６０段階である。クライアント３１９において「ＯＳ−Ａ」上で個別優先度「４５」で動作するクライアントプログラム３０１から、第１のオブジェクト３１０へリクエストを送信する場合の処理の流れは、以下の通りである。
【０１００】
１´）クライアントプログラム実行部３３１が、クライアント３１９のＯＲ処理部３０４に要求パラメータを含むリクエスト送信要求を発行する。
【０１０１】
２´）ＯＲ処理部３０４が、リクエスト送信要求を受け取ると、ＯＲ処理部３０４は、スレッド３０３のＴＳＳを参照し、ＴＳＳから共通優先度の優先度分母の値を取得する。ＴＳＳに共通優先度が格納されていない場合はこの優先度分母は「０」である。この場合は、ＯＲ処理部３０４は、優先度割り当てマップ３０２によって、（「ＯＳ−Ａ」２０２から受け取った）個別優先度「４５」を共通優先度「７／８」に変換する。得られた共通優先度の優先度分母、優先度分子の値をスレッド３０３のＴＳＳに格納する。
【０１０２】
３´）ＲＢ３０４が、リクエスト先のターゲットオブジェクト名、メソッド名、引数、分数形式の共通優先度「７／８」などを含む要求パラメータなどをマーシャリングした後、リクエスト先の第１のオブジェクト３１０が存在する第１のサーバ３２０に対してリクエストメッセージ３０５を送信する。
【０１０３】
４´）第１のサーバ３２０のＯＲ処理部３０６が、リクエストメッセージを受信し、アンマーシャリングを行う。
【０１０４】
５´）ＯＲ処理部３０６が、スレッド３１１のＴＳＳに、４´）で得られた共通優先度の優先度分母「８」、優先度分子「７」を格納し、共通優先度「７／８」を、優先度割り当てマップ３０７によって「ＯＳ−Ｂ」上でのＯＳ優先度「２」に変換する。
【０１０５】
６´）変換後の個別優先度「２」で、第１のオブジェクト実行部３３２が第１のオブジェクト３１０のメソッド（スレッド３１１）を実行し、この処理の中で、第２のオブジェクト２２１のメソッドを呼び出す。
【０１０６】
７´）第１のオブジェクト実行部３３２が、第２のオブジェクト３１７へのリクエスト送信要求を発行する。
【０１０７】
８´）ＯＲ処理部３０６が、リクエスト送信要求を受け取ると、ＯＲ処理部３０６は、スレッド３１１のＴＳＳを参照し、ＴＳＳから共通優先度の優先度分母の値を取得する。ここでは、上記５´）でスレッド３１１のＴＳＳに格納された、共通優先度「７／８」を取得する。
【０１０８】
９´）第１のサーバ３２０のＯＲ処理部３０６が、リクエスト先のターゲットオブジェクト名、メソッド名、引数、分数形式の共通優先度「７／８」などを含む要求パラメータなどをマーシャリングした後、リクエスト先の第２のオブジェクト３１７が存在する第２のサーバ３２１に対してリクエストメッセージ３１２を送信する。
【０１０９】
１０´）第２のサーバ３２１のＯＲ処理部３１３が、リクエストメッセージを受信し、アンマーシャリングを行う。
【０１１０】
１１´）ＯＲ処理部３１３が、スレッド３１８のＴＳＳに、１０´）で得られた共通優先度の優先度分母「８」、優先度分子「７」を格納し、共通優先度「７／８」を、優先度割り当てマップ３１４によって「ＯＳ−Ｃ」上でのＯＳ優先度「２８」に変換する。
【０１１１】
１２´）変換後の個別優先度「２８」で、第２のオブジェクト実行部３３３が第２のオブジェクト３１７のメソッド（スレッド３１８）を実行する。
【０１１２】
上記１´）から１２´）の一連の手順において、従来の１）から１２）と異なる点は、第１のサーバでリクエストを受信した際に、スレッドのＴＳＳに受け取った共通優先度を格納し、第１のサーバ上のオブジェクトから二次的にリクエストが発生し、ネットワーク上の他のコンピュータ、すなわち、第２のサーバ上のオブジェクトにリクエストを送信する場合には、（従来の上記８）に示すように、第１のサーバ上の優先度割り当てマップによる、個別優先度から共通優先度への優先度変換は行わず）スレッドのＴＳＳに格納されている共通優先度の値を送信する点にある。
【０１１３】
図３に示した上記１´）から１２´）の手順によれば、二次的に派生したリクエストが続く場合においても、最初にクライアントから送信されたリクエストの共通優先度が、変更されることなくホスト間を伝播するため、従来技術例のように各ＯＳに対応する個別優先度と共通優先度間の優先度変換を繰り返す過程で、優先度の縮退が発生することがなくなる。この結果、常に開発者が意図した優先度で分散オブジェクトが動作することが保証され、アプリケーションの動作の追跡が容易となる。
【０１１４】
以上説明したように、上記実施形態によれば、処理実行単位の優先度の総段階数がそれぞれ異なる第１及び第２のコンピュータを含む複数のコンピュータがネットワークに接続された分散処理システムは、第１のコンピュータ（例えば、クライアント装置１０１のＯＲ処理部１０３）が、該第１のコンピュータ個別の優先度ｕの該第１のコンピュータが有する優先度の総段階数ａに対する相対値ｕ／ａを、該複数のコンピュータに共通する優先度に変換するための総段階数ｑを分母とする、分数形式の共通優先度ｖ´／ｑに変換し、得られた共通優先度を含むメッセージを第２のコンピュータ（例えば、サーバ装置１０７）へ送信する。第２のコンピュータ（例えば、サーバ装置１０７のＯＲ処理部１０９）が該メッセージを受信すると、該メッセージに含まれる共通優先度を記憶手段（例えば、スレッドのＴＳＳ）に記憶する。そして、該第２のコンピュータが有する優先度の総段階数ｂを分母とする、該共通優先度に最も近似する分数の分子ｕ´を求めて、これを該第２のコンピュータ個別の優先度ｕ´とする。
【０１１５】
また、該第２のコンピュータが、処理実行単位（スレッド１１２）を第２のコンピュータ個別の優先度ｕ´で実行することにより発生した他のコンピュータ上のオブジェクトの実行要求を受けて、上記記憶手段に記憶された共通優先度ｖ´／ｑを含むメッセージをネットワークへ送信する。
【０１１６】
上記実施形態によれば、ネットワークに接続されたコンピュータ毎に異なる値で表される優先度をコンピュータ間で正確に伝搬することができる。
【０１１７】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１８】
【図１】本発明の実施形態に係る分散オブジェクトシステムの要部を示した図。
【図２】従来の分散オブジェクトシステムにおいて、クライアントからサーバに対してリクエストを送信する場合の動作を説明するための図。
【図３】本実施形態に係る分散オブジェクトシステムにおいて、クライアントからサーバに対してリクエストを送信する場合の動作を説明するための図。
【図４】クライアントの動作を説明するためのフローチャート。
【図５】サーバの動作を説明するためのフローチャート。
【図６】優先度割り当てマップの一例を示した図。
【図７】従来の分散オブジェクトシステムにおける優先度割り当てマップの一例であって、個別優先度から共通優先度への変換規則を定める関数を示した図。
【図８】従来の分散オブジェクトシステムにおける優先度割り当てマップの一例であって、共通優先度から個別優先度への変換規則を定める関数を示した図。
【符号の説明】
【０１１９】
１０１…クライアント装置、１０２…ＯＳ−Ａ、１０３、１０９…オブジェクトリクエスト処理部（ＯＲ処理部）、１０４、１１０…優先度割り当てマップ、１０８…ＯＳ−Ｂ、１０５、１１１…分散オブジェクト、１０６、１１２…スレッド、１２１、１２２…分散オブジェクト実行部。
【図１】
2006323767.tif 000003
【図２】
2006323767.tif 000004
【図３】
2006323767.tif 000005
【図４】
2006323767.tif 000006
【図５】
2006323767.tif 000007
【図６】
2006323767.tif 000008
【図７】
2006323767.tif 000009
【図８】
2006323767.tif 000010