(57)【要約】【課題】ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択して使用権を与えるＣＰＵ演算資源割当実行部とともに使用されるにも関わらず、優先度の高い処理をスレッドにより優先的に実行できるようにする。【解決手段】優先度申告スレッド管理部１は、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し（Ｓ３）、開始通知内の優先度と最高の優先度を比較し（Ｓ５）、後者が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する（Ｓ７）。前者が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信する（Ｓ９）。開始通知内の優先度と最高の優先度が等しい場合、ステップＳ７、Ｓ９を終えた場合、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる（Ｓ１３）。【選択図】図２
2010015291.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置であって、
スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルと、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信する処理抑制指示送信手段と、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶する手段と、当該レコードを削除する手段と、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信する処理抑制解除指示送信手段とを備える優先度申告スレッド管理部と、
前記複数のスレッドを動作させる複数スレッド実行部であって、各スレッドは、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記使用権を他のスレッドに譲渡するものである、前記複数スレッド実行部とを備えることを特徴とする処理優先度申告スレッド協調動作装置。
【請求項２】
処理抑制指示が送信されてから処理抑制解除指示が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする請求項１記載の処理優先度申告スレッド協調動作装置。
【請求項３】
ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置であって、
スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルと、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信する処理抑制指示送信手段と、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶する手段と、当該レコードを削除する手段と、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信する処理抑制解除指示送信手段とを備える優先度申告スレッド管理部と、
前記複数のスレッドを動作させる複数スレッド実行部であって、各スレッドは、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されるものである、前記複数スレッド実行部とを備えることを特徴とする処理優先度申告スレッド協調動作装置。
【請求項４】
ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置であって、
スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルと、スレッドから開始通知を受信したとき、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコードを削除する手段と、スレッドから抑制状態とする必要性の有無に関する問い合わせである抑制要否問合を受信したら、処理実行中スレッド管理テーブルに優先度がない場合は、抑制状態とする必要性がないことを示す応答を行い、優先度がある場合は、最高の優先度を読み出し、当該抑制要否問合内に含まれた当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含むレコード内の優先度と最高の優先度とを比較し、両者が互いに等しい場合、抑制状態とする必要性がないことを示す応答を行う一方、後者の優先度の方が高い場合、抑制状態とする必要性があることを示す応答を行う手段とを備える優先度申告スレッド管理部と、
前記複数のスレッドを動作させる複数スレッド実行部であって、各スレッドは、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、前記使用権が与えられる度に当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含む抑制要否問合を前記優先度申告スレッド管理部に送信し、抑制状態とする必要性があることを示す応答が送信されてから、抑制状態とする必要性がないことを示す応答が送信されるまで、前記使用権を他のスレッドに譲渡するものである、前記複数スレッド実行部とを備えることを特徴とする処理優先度申告スレッド協調動作装置。
【請求項５】
抑制状態とする必要性があることを示す応答が送信されてから抑制状態とする必要性がないことを示す応答が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする請求項４記載の処理優先度申告スレッド協調動作装置。
【請求項６】
ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置が行う処理優先度申告スレッド協調動作方法であって、
前記処理優先度申告スレッド協調動作装置の優先度申告スレッド管理部は、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルを備え、
前記処理優先度申告スレッド協調動作方法は、
前記優先度申告スレッド管理部が、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信し、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶し、当該レコードを削除し、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信し、
前記処理優先度申告スレッド協調動作装置の複数スレッド実行部により動作する各スレッドが、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記使用権を他のスレッドに譲渡することを特徴とする処理優先度申告スレッド協調動作方法。
【請求項７】
処理抑制指示が送信されてから処理抑制解除指示が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする請求項６記載の処理優先度申告スレッド協調動作方法。
【請求項８】
ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置が行う処理優先度申告スレッド協調動作方法であって、
前記処理優先度申告スレッド協調動作装置の優先度申告スレッド管理部は、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルを備え、
前記処理優先度申告スレッド協調動作方法は、
前記優先度申告スレッド管理部が、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信し、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶し、当該レコードを削除し、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信し、
前記処理優先度申告スレッド協調動作装置の複数スレッド実行部により動作する各スレッドが、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする処理優先度申告スレッド協調動作方法。
【請求項９】
ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置が行う処理優先度申告スレッド協調動作方法であって、
前記処理優先度申告スレッド協調動作装置の優先度申告スレッド管理部は、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルを備え、
前記処理優先度申告スレッド協調動作方法は、
前記優先度申告スレッド管理部が、スレッドから開始通知を受信したとき、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコードを削除し、スレッドから抑制状態とする必要性の有無に関する問い合わせである抑制要否問合を受信したら、処理実行中スレッド管理テーブルに優先度がない場合は、抑制状態とする必要性がないことを示す応答を行い、優先度がある場合は、最高の優先度を読み出し、当該抑制要否問合内に含まれた当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含むレコード内の優先度と最高の優先度とを比較し、両者が互いに等しい場合、抑制状態とする必要性がないことを示す応答を行う一方、後者の優先度の方が高い場合、抑制状態とする必要性があることを示す応答を行い、
前記処理優先度申告スレッド協調動作装置の複数スレッド実行部により動作する各スレッドが、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、前記使用権が与えられる度に当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含む抑制要否問合を前記優先度申告スレッド管理部に送信し、抑制状態とする必要性があることを示す応答が送信されてから、抑制状態とする必要性がないことを示す応答が送信されるまで、前記使用権を他のスレッドに譲渡することを特徴とする処理優先度申告スレッド協調動作方法。
【請求項１０】
抑制状態とする必要性があることを示す応答が送信されてから抑制状態とする必要性がないことを示す応答が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする請求項９記載の処理優先度申告スレッド協調動作方法。
【請求項１１】
請求項６ないし１０のいずれかに記載の処理優先度申告スレッド協調動作方法を処理優先度申告スレッド協調動作装置に実行させるためのコンピュータプログラム。
【請求項１２】
請求項１１記載のコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択して使用権を与えるＣＰＵ演算資源割当実行部とともに使用されるにも関わらず、優先度の高い処理をスレッドにより優先的に実行させることができる処理優先度申告スレッド協調動作装置および処理優先度申告スレッド協調動作方法に関するものである。
【背景技術】
【０００２】
従来のスレッド協調動作装置の一例が、非特許文献１の６ページ目に記載されている。  この装置では、スレッドに優先度が設定されるが、スレッド自体は、ＣＰＵの演算資源への割り当てスケジューリングには関与しない。
【０００３】
図１０は、従来のスレッド協調動作装置の構成を示すブロック図である。
【０００４】
複数スレッド実行部２Ｋは、複数のスレッドを動作させるものである。スレッドは、自身のプロパティに自身が実行する処理の優先度を設定し、ＣＰＵ演算資源割当実行部３ＫにＣＰＵの演算資源の使用権を要求する。
【０００５】
ＣＰＵ演算資源割当実行部３Ｋは、最高の優先度に対応する１つのスレッド選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間（単位処理時間という）においてＣＰＵの演算資源の使用権（単に使用権という）を当該スレッドに与える動作とを繰り返すようになっている。
【０００６】
使用権を与えられたスレッドは、使用権を行使しつまり当該資源を使用して処理を行うようになっている。これにより、当該スレッドによる処理つまり優先度が高い処理が優先的に実行されるようになっている。
【０００７】
この出願の発明に関連する先行技術文献情報としては次のものがある。  
【非特許文献１】科学技術振興機構、戦略的想像研究推進事業  発展研究、平成１４年度終了報告書の『超高性能並列分散アーキテクチャに関する研究』
【発明の開示】
【発明が解決しようとする課題】
【０００８】
スレッド協調動作装置の多くは、オペレーティングシステム（ＯＳ）やミドルウェアにより提供される。
【０００９】
例えば、Ｊａｖａ（登録商標）においては、スレッドのプロパティに優先度を設定するＡＰＩは用意されているが、優先度に応じた使用権が与えられて処理が実行されるか否かは、ＪＶＭベンダ側の実装に委ねられていて、Ｊａｖａ（登録商標）言語の仕様には定めがない。これは、組み込み系などの装置において、簡素さを求める装置上で稼働するＪＶＭを実装する際、優先度に応じて処理を実行するのが負担だからである。現状、Ｗｉｎｄｏｗｓ（登録商標）  ＯＳ用のＪＶＭは、優先度を反映して、処理の実行のスケジューリングがされる一方、Ｌｉｎｕｘ  ＯＳ上のＪＶＭでは、優先度は無視され、公平な実行のスケジューリングがされる。
【００１０】
スレッドが同一ベンダで作成されるなら、優先度の高い処理を行うスレッドを他のスレッドが邪魔しないようにできる。しかし、特にＯＳＧｉフレームワークのように、関連のないベンダにより開発されたバンドルソフトウェアが、同一のＪａｖａ（登録商標）で動作する場合、あるベンダによるバンドルソフトウェアが扱うスレッドには特に優先度「高」のスレッドがなく、通常の優先度のスレッドが、ＣＰＵの演算資源をフルに使用しようとしても、他のベンダによるバンドルソフトウェアが扱うスレッドに優先度が「高」である場合、前記通常の優先度の動作により、他ベンダの優先度「高」のスレッドの動作が阻害されてしまう。バンドルソフトウェアの組み合わせは、その開発時には予測しえないため、他のベンダによるバンドルソフトウェアが扱う優先度「高」のスレッドの動作を阻害しないようにするには、自ベンダのバンドルソフトウェア内には、優先度「高」の処理がなくても、他のベンダのバンドルソフトウェア内には優先度「高」の処理が存在する可能性を考慮し、例えば、Thread.yieldを頻繁に実行し、使用権を譲渡するように実装する必要がある。
【００１１】
これは、優先度「高」のスレッドが実際に存在するなら、スレッドの処理が優先され、有効だが、存在しない場合、スレッド同士が使用権を譲渡しあう動作に陥り、処理の効率が低下してしまう。使用権を譲り合うことにより、スレッドの処理の切り替わりが頻繁になると、効率低下は著しい。
【００１２】
したがって、このような実装は嫌われる傾向にあり、他のベンダによるスレッドの動作を阻害してでも、自ベンダによるスレッドがＣＰＵの演算資源をフルに使用するような実装がなされる。
【００１３】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択して使用権を与えるＣＰＵ演算資源割当実行部とともに使用されるにも関わらず、優先度の高い処理をスレッドにより優先的に実行させることができる処理優先度申告スレッド協調動作装置および処理優先度申告スレッド協調動作方法を提供することにある。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために、第１の本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置であって、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルと、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信する処理抑制指示送信手段と、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶する手段と、当該レコードを削除する手段と、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信する処理抑制解除指示送信手段とを備える優先度申告スレッド管理部と、前記複数のスレッドを動作させる複数スレッド実行部であって、各スレッドは、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記使用権を他のスレッドに譲渡するものである、前記複数スレッド実行部とを備えることを特徴とする処理優先度申告スレッド協調動作装置をもって解決手段とする。
【００１５】
第２の本発明は、第１の本発明において、処理抑制指示が送信されてから処理抑制解除指示が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする処理優先度申告スレッド協調動作装置をもって解決手段とする。
【００１６】
第３の本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置であって、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルと、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信する処理抑制指示送信手段と、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶する手段と、当該レコードを削除する手段と、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信する処理抑制解除指示送信手段とを備える優先度申告スレッド管理部と、前記複数のスレッドを動作させる複数スレッド実行部であって、各スレッドは、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されるものである、前記複数スレッド実行部とを備えることを特徴とする処理優先度申告スレッド協調動作装置をもって解決手段とする。
【００１７】
第４の本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置であって、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルと、スレッドから開始通知を受信したとき、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコードを削除する手段と、スレッドから抑制状態とする必要性の有無に関する問い合わせである抑制要否問合を受信したら、処理実行中スレッド管理テーブルに優先度がない場合は、抑制状態とする必要性がないことを示す応答を行い、優先度がある場合は、最高の優先度を読み出し、当該抑制要否問合内に含まれた当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含むレコード内の優先度と最高の優先度とを比較し、両者が互いに等しい場合、抑制状態とする必要性がないことを示す応答を行う一方、後者の優先度の方が高い場合、抑制状態とする必要性があることを示す応答を行う手段とを備える優先度申告スレッド管理部と、前記複数のスレッドを動作させる複数スレッド実行部であって、各スレッドは、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、前記使用権が与えられる度に当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含む抑制要否問合を前記優先度申告スレッド管理部に送信し、抑制状態とする必要性があることを示す応答が送信されてから、抑制状態とする必要性がないことを示す応答が送信されるまで、前記使用権を他のスレッドに譲渡するものである、前記複数スレッド実行部とを備えることを特徴とする処理優先度申告スレッド協調動作装置をもって解決手段とする。
【００１８】
第５の本発明は、第４の本発明において、抑制状態とする必要性があることを示す応答が送信されてから抑制状態とする必要性がないことを示す応答が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする処理優先度申告スレッド協調動作装置をもって解決手段とする。
【００１９】
第６の本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置が行う処理優先度申告スレッド協調動作方法であって、前記処理優先度申告スレッド協調動作装置の優先度申告スレッド管理部は、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルを備え、前記処理優先度申告スレッド協調動作方法は、前記優先度申告スレッド管理部が、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信し、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶し、当該レコードを削除し、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信し、前記処理優先度申告スレッド協調動作装置の複数スレッド実行部により動作する各スレッドが、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記使用権を他のスレッドに譲渡することを特徴とする処理優先度申告スレッド協調動作方法をもって解決手段とする。
【００２０】
第７の本発明は、第６の本発明において、処理抑制指示が送信されてから処理抑制解除指示が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする処理優先度申告スレッド協調動作方法をもって解決手段とする。
【００２１】
第８の本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置が行う処理優先度申告スレッド協調動作方法であって、前記処理優先度申告スレッド協調動作装置の優先度申告スレッド管理部は、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルを備え、前記処理優先度申告スレッド協調動作方法は、前記優先度申告スレッド管理部が、スレッドから開始通知を受信したとき、処理実行中スレッド管理テーブルから最高の優先度を読み出し、開始通知内の優先度と最高の優先度とを比較し、最高の優先度の方が高い場合、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する一方、開始通知内の優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信し、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコード内の優先度である終了通知スレッド優先度を読み出し記憶し、当該レコードを削除し、処理実行中スレッド管理テーブルから最高の優先度を読み出し、終了通知スレッド優先度と最高の優先度とを比較し、終了通知スレッド優先度の方が高い場合、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信し、前記処理優先度申告スレッド協調動作装置の複数スレッド実行部により動作する各スレッドが、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、処理抑制指示が送信されてから処理抑制解除指示が送信されるまで、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする処理優先度申告スレッド協調動作方法をもって解決手段とする。
【００２２】
第９の本発明は、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間である単位処理時間において当該使用権を当該スレッドに与える動作とを繰り返すＣＰＵ演算資源割当実行部とともに使用される処理優先度申告スレッド協調動作装置が行う処理優先度申告スレッド協調動作方法であって、前記処理優先度申告スレッド協調動作装置の優先度申告スレッド管理部は、スレッドを示すスレッド識別子と優先度を含むレコードが記憶される処理実行中スレッド管理テーブルを備え、前記処理優先度申告スレッド協調動作方法は、前記優先度申告スレッド管理部が、スレッドから開始通知を受信したとき、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させる手段と、スレッドから終了通知を受信したとき、終了通知内のスレッド識別子を含むレコードを削除し、スレッドから抑制状態とする必要性の有無に関する問い合わせである抑制要否問合を受信したら、処理実行中スレッド管理テーブルに優先度がない場合は、抑制状態とする必要性がないことを示す応答を行い、優先度がある場合は、最高の優先度を読み出し、当該抑制要否問合内に含まれた当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含むレコード内の優先度と最高の優先度とを比較し、両者が互いに等しい場合、抑制状態とする必要性がないことを示す応答を行う一方、後者の優先度の方が高い場合、抑制状態とする必要性があることを示す応答を行い、前記処理優先度申告スレッド協調動作装置の複数スレッド実行部により動作する各スレッドが、処理開始に先立ち、当該スレッドのスレッド識別子と当該処理の優先度を含む開始通知を前記優先度申告スレッド管理部に送信し、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を前記優先度申告スレッド管理部に送信し、前記使用権が与えられる度に当該スレッドによる処理の優先度または当該スレッドのスレッド識別子を含む抑制要否問合を前記優先度申告スレッド管理部に送信し、抑制状態とする必要性があることを示す応答が送信されてから、抑制状態とする必要性がないことを示す応答が送信されるまで、前記使用権を他のスレッドに譲渡することを特徴とする処理優先度申告スレッド協調動作方法をもって解決手段とする。
【００２３】
第１０の本発明は、第９の本発明において、抑制状態とする必要性があることを示す応答が送信されてから抑制状態とする必要性がないことを示す応答が送信されるまでの時間帯の一部をなす時間帯において、スレッドは、前記ＣＰＵ演算資源割当実行部による選択の候補から除外されることを特徴とする処理優先度申告スレッド協調動作方法をもって解決手段とする。
【００２４】
第１１の本発明は、第６ないし１０のいずれかの本発明に係る処理優先度申告スレッド協調動作方法を処理優先度申告スレッド協調動作装置に実行させるためのコンピュータプログラムをもって解決手段とする。
【００２５】
第１２の本発明は、第１１の本発明に係るコンピュータプログラムが記録されたコンピュータ読み取り可能な記録媒体をもって解決手段とする。
【発明の効果】
【００２６】
本発明によれば、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択して使用権を与えるＣＰＵ演算資源割当実行部とともに使用されるにも関わらず、優先度の高い処理をスレッドにより優先的に実行させることができる。その結果、使用権の譲り合いによる効率低下を防止することができる。
【発明を実施するための最良の形態】
【００２７】
以下、本発明の実施の形態に係る処理優先度申告スレッド協調動作装置および処理優先度申告スレッド協調動作方法を図面を参照して説明する。
【００２８】
［第１の実施の形態］
図１は、第１の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【００２９】
処理優先度申告スレッド協調動作装置は、図示しないＣＰＵを備えたコンピュータ内に構成され、優先度申告スレッド管理部１および複数スレッド実行部２を備え、ＣＰＵ演算資源割当実行部３とともに使用される。
【００３０】
複数スレッド実行部２は、複数のスレッドを動作させるものである。
【００３１】
スレッドは、ＣＰＵの演算資源（ＣＰＵ演算資源または略して資源という）を使用して処理を実行するものである。スレッドは、自身のプロパティに自身が実行する処理の優先度を設定し、ＣＰＵ演算資源割当実行部３にＣＰＵの演算資源の使用権を要求するようになっている。
【００３２】
また、スレッドは、処理開始に先立ち、当該スレッドを示すスレッド識別子と当該処理の優先度を含む開始通知を優先度申告スレッド管理部１に送信するようになっている。スレッドは、処理終了したら、当該スレッドのスレッド識別子を含む終了通知を優先度申告スレッド管理部１に送信するようになっている。
【００３３】
優先度申告スレッド管理部１は、開始通知や終了通知に基づいて、スレッドに対し、処理抑制指示や処理抑制解除指示を送信するようになっている。優先度申告スレッド管理部１は、処理抑制指示や処理抑制解除指示を送信すべきタイミングとどのスレッドに送信すべきかを判断するために使用する処理実行中スレッド管理テーブル（図示せず）を備えている。処理実行中スレッド管理テーブルは、スレッド識別子と優先度を含むレコードが記憶されるものであり、レコードは、開始通知や終了通知に基づいて、処理実行中スレッド管理テーブルに記憶され、または、処理実行中スレッド管理テーブルから削除される。
【００３４】
スレッドは、当該スレッドにより参照可能な処理抑制フラグをＯＮまたはＯＦＦにでき、処理抑制フラグは当初はＯＦＦになっている。処理抑制フラグがＯＦＦの状態を通常状態といい、処理抑制フラグがＯＮの状態を抑制状態という。通常状態とは、処理の進行が抑制されていない状態であり、抑制状態とは、処理の進行が抑制されている状態である。スレッドは、処理抑制指示が送信されたら、処理抑制フラグをＯＮにし、一方、処理抑制解除指示が送信されたら、処理抑制フラグをＯＦＦにする。スレッドは、処理開始したら、ＣＰＵ演算資源の使用権（詳しくは後述する）が与えられる度に処理抑制フラグを参照して、通常状態か抑制状態かを判断する。スレッドは、通常状態と判断したら、使用権を行使しつまり当該資源を当該スレッド自身が使用して処理を行うようになっている。これにより、当該スレッドによる処理の優先度が高い場合には、その処理が優先的に実行されるようになっている。一方、スレッドは、抑制状態と判断したら、使用権を他のスレッドに譲渡する（例えば、Ｊａｖａ（登録商標）言語におけるThread.yieldをコールする）。スレッドは、単位処理時間が満了していなくても使用権を譲渡するので、当該スレッドに対しては、ＣＰＵの演算資源の割り当てが打ち切られることとなる。
【００３５】
こうして、当該スレッドによる処理の優先度が低い場合には、その他の処理が優先的に実行されるようになっている。つまり、譲渡されたスレッドは、使用権を行使しつまり当該資源を使用して処理を行うようになっている。これにより、当該スレッドによる処理つまり優先度が比較的に高い処理が優先的に実行されるようになっている。
【００３６】
ＣＰＵ演算資源割当実行部３は、使用権を要求しているスレッドの１つを無作為に選択する動作と、該選択時から予め定められた時間の長さが経過するまでの時間（単位処理時間という）においてＣＰＵ演算資源の使用権（ＣＰＵ演算資源を使用できる権利であり、単に使用権という）を当該スレッドに与える動作とを繰り返すようになっている。
【００３７】
単位処理時間は、例えば、スレッドの切り替えが特に大きな負担にならず効率的でかつ複数のスレッドが見かけ上において並行して処理を実行しているとみなせる程度の長さを有する時間であり、他の実施の形態においも同様である。
【００３８】
ＣＰＵ演算資源割当実行部３は、使用権を与えるが、使用権の譲渡、行使には関与せず、よって上記の譲渡、譲渡先のスレッドによる行使が可能となる。
【００３９】
なお、抑制状態のスレッドは、使用権を行使して単位処理時間の一部の時間において処理を行ってから、使用権を譲渡し、譲渡されたスレッドが、当該単位処理時間の残りの時間において処理を行うようにしてもよい。これにより、優先度の低い処理を少しずつでも実行させることができ、また、譲渡するまでの時間の長さを調整することで、優先度の低い処理の実行の速度を調整することができる。
【００４０】
図２は、優先度申告スレッド管理部１が開始通知を受信したときの動作を説明するためのフローチャートである。
【００４１】
まず、優先度申告スレッド管理部１は、ステップＳ３において、処理実行中スレッド管理テーブルから最高の優先度を読み出す。
【００４２】
続いて、優先度申告スレッド管理部１は、ステップＳ５において、開始通知内の優先度と最高の優先度とを比較する。
【００４３】
優先度申告スレッド管理部１は、最高の優先度の方が高い場合、ステップＳ７において、開始通知内のスレッド識別子に対応するスレッドに処理抑制指示を送信する。ステップＳ７は、本発明の処理抑制指示送信手段に対応するものである。
【００４４】
優先度申告スレッド管理部１は、開始通知内の優先度の方が高い場合、ステップＳ９において、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制指示を送信する。
【００４５】
優先度申告スレッド管理部１は、開始通知内の優先度と最高の優先度が互いに等しい場合、または、ステップＳ７、Ｓ９を終えると、ステップＳ１３において、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、制御を終える。
【００４６】
なお、図示しないが、優先度申告スレッド管理部１は、処理実行中スレッド管理テーブルにレコードがない場合は、ステップＳ１３において、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、処理を終える。
【００４７】
また、図示しないが、優先度申告スレッド管理部１は、開始通知の返り値として、処理抑制指示を送信してもよい。
【００４８】
図３は、優先度申告スレッド管理部１が終了通知を受信したときの動作を説明するためのフローチャートである。
【００４９】
まず、優先度申告スレッド管理部１は、ステップＳ２３において、終了通知内のスレッド識別子を含むレコード内の優先度を読み出し記憶する（以下、「終了通知スレッド優先度」という。
【００５０】
次に、優先度申告スレッド管理部１は、ステップＳ２５において、当該レコードを削除する。
【００５１】
次に、優先度申告スレッド管理部１は、ステップＳ２７において、処理実行中スレッド管理テーブルから最高の優先度を読み出す。
【００５２】
次に、優先度申告スレッド管理部１は、ステップＳ２９において、終了通知スレッド優先度と最高の優先度とを比較する。
【００５３】
優先度申告スレッド管理部１は、終了通知スレッド優先度の方が高い場合、ステップＳ３１において、最高の優先度を含むレコード内のスレッド識別子に対応するスレッドに処理抑制解除指示を送信する。ステップＳ３１は、本発明の処理抑制解除指示送信手段に対応するものである。
【００５４】
優先度申告スレッド管理部１は、最高の優先度の方が高い場合また両者が互いに等しい場合、または、ステップＳ３１の終了をもって、制御を終える。
【００５５】
なお、最高の優先度の方が高い場合とは、つまり、優先度の高い処理よりも優先度の低い処理の方が先に終了した場合である。例えば、上記のように、優先度の低い処理を行うスレッドが使用権を譲渡する前において処理を実行する場合、かかる事態となる可能性がある。この場合、使用権の譲渡は不要なので、直ちに制御が終わることとなる。
【００５６】
図４は、先に優先度の低いスレッドの処理が開始され、後から優先度の高いスレッドの処理が開始される場合のシーケンスの一例を示す図である。なお、処理実行中スレッド管理テーブルには、レコードが記憶されていないこととし、また、スレッド識別子は数字で表し、優先度は高低のいずれかになりえることとする。また、優先度は、高中低の３段階としたり、数字で表してもよく、他の実施の形態でも同様である。
【００５７】
ステップＤ１において、スレッド識別子「１」のスレッドから、優先度「低」とスレッド識別子「１」を含む開始通知が送信される。当該スレッドは、処理を通常状態で実行し始める。
【００５８】
次に、ステップＤ３において、開始通知内の優先度「低」とスレッド識別子「１」を含むレコードが処理実行中スレッド管理テーブルに記憶される。
【００５９】
次に、ステップＤ５において、スレッド識別子「２」のスレッドから、優先度「高」とスレッド識別子「２」を含む開始通知が送信される。当該スレッドは、処理を通常状態で実行し始める。
【００６０】
次に、ステップＤ７において、開始通知内の優先度「高」の方が高いので、最高の優先度「低」を含むレコード内のスレッド識別子「１」に対応するスレッドに処理抑制指示が送信される。
【００６１】
処理抑制指示を送信されたスレッド識別子「１」に対応するスレッドは、ステップＥ１において、通常状態で実行していた処理を抑制状態に変えて実行する。
【００６２】
次に、ステップＤ９において、開始通知内のスレッド識別子「２」と優先度「高」を含むレコードが処理実行中スレッド管理テーブルに記憶される。
【００６３】
次に、ステップＤ１１において、処理を終えたスレッド識別子「２」のスレッドからスレッド識別子「２」を含む終了通知が送信される。
【００６４】
次に、ステップＤ１３において、終了通知内のスレッド識別子「２」を含むレコード内の優先度「高」（終了通知スレッド優先度「高」）が読み出され記憶され、レコードが削除される。削除により、最高の優先度は「低」となる。
【００６５】
次に、ステップＤ１５において、終了通知スレッド優先度「高」の方が高いので、最高の優先度「低」を含むレコード内のスレッド識別子「１」に対応するスレッドに処理抑制解除指示が送信される。
【００６６】
処理抑制解除指示を送信されたスレッドは、ステップＥ２において、抑制状態で実行していた処理を通常状態に変えて実行する。
【００６７】
次に、ステップＤ１７において、処理を終えたスレッド識別子「１」のスレッドからスレッド識別子「１」を含む終了通知が送信される。
【００６８】
次に、ステップＤ１９において、終了通知内のスレッド識別子「２」を含むレコードが削除される。
【００６９】
なお、処理実行中スレッド管理テーブルにレコードがなくなったので、処理抑制解除指示の送信は不要である。
【００７０】
図５は、先に優先度の高いスレッドの処理が開始され、後から優先度の低いスレッドの処理が開始される場合のシーケンスの一例を示す図である。なお、図４の説明と同様に、処理実行中スレッド管理テーブルには、レコードが記憶されていないこととし、また、スレッド識別子は数字で表し、優先度は高低のいずれかになりえることとする。
【００７１】
ステップＤ２１において、スレッド識別子「１」のスレッドから、優先度「高」とスレッド識別子「１」を含む開始通知が送信される。当該スレッドは、処理を通常状態で実行し始める。
【００７２】
次に、ステップＤ２３において、開始通知内の優先度「高」とスレッド識別子「１」を含むレコードが処理実行中スレッド管理テーブルに記憶される。
【００７３】
次に、ステップＤ２５において、スレッド識別子「２」のスレッドから、優先度「低」とスレッド識別子「２」を含む開始通知が送信される。当該スレッドは、処理を通常状態で実行し始める。
【００７４】
次に、ステップＤ２７において、最高の優先度「高」の方が高いので、開始通知内のスレッド識別子「２」に対応するスレッドに処理抑制指示が送信される。
【００７５】
処理抑制指示を送信されたスレッド識別子「２」に対応するスレッドは、ステップＥ２１において、通常状態で実行していた処理を抑制状態に変えて実行する。
【００７６】
次に、ステップＤ２９において、開始通知内のスレッド識別子「２」と優先度「低」を含むレコードが処理実行中スレッド管理テーブルに記憶される。
【００７７】
次に、ステップＤ３１において、処理を終えたスレッド識別子「１」のスレッドからスレッド識別子「１」を含む終了通知が送信される。
【００７８】
次に、ステップＤ３３において、終了通知内のスレッド識別子「１」を含むレコード内の優先度「高」（終了通知スレッド優先度「高」）が読み出され記憶され、レコードが削除される。削除により、最高の優先度は「低」となる。
【００７９】
次に、ステップＤ３５において、終了通知スレッド優先度「高」の方が高いので、最高の優先度「低」を含むレコード内のスレッド識別子「２」に対応するスレッドに処理抑制解除指示が送信される。
【００８０】
処理抑制解除指示を送信されたスレッドは、ステップＥ２２において、抑制状態で実行していた処理を通常状態に変えて実行する。
【００８１】
次に、ステップＤ３７において、処理を終えたスレッド識別子「２」のスレッドからスレッド識別子「２」を含む終了通知が送信される。
【００８２】
次に、ステップＤ３９において、終了通知内のスレッド識別子「２」を含むレコードが削除される。
【００８３】
なお、処理実行中スレッド管理テーブルにレコードがなくなったので、処理抑制解除指示の送信は不要である。
【００８４】
したがって、第１の実施の形態に係る処理優先度申告スレッド協調動作装置によれば、ＣＰＵの演算資源の使用権を要求している複数のスレッドの１つを無作為に選択して使用権を与えるＣＰＵ演算資源割当実行部とともに使用されるにも関わらず、優先度の高い処理の実行を阻害せず、当該処理をスレッドにより優先的に実行させることができる。その結果、使用権の譲り合いによる効率低下を防止することができる。
【００８５】
また、第１の実施の形態によれば、特にＯＳＧｉのような、複数の独立したベンダにより開発されたバンドルソフトウェアが同一環境に相乗りして動作する場合において、各バンドルソフトウェアが、「他のベンダのスレッドも含めて自スレッドよりも高い優先度を設定されたスレッドによる処理がなされているか否か」を判断する手段をベンダ向けに用意することになり、各ベンダは、他に高い優先度のスレッドが存在している間は、自スレッドにＣＰＵ演算資源が割り当てられても、直ちに他のスレッドに使用権を譲渡するように動作し、処理中の高い優先度のスレッドが他に存在しないならば、通常通り、ＣＰＵ演算資源が割り当てられたら、単位処理時間の全てでＣＰＵ演算資源を使い切るように動作するスレッドを生成するバンドルを、予めＯＳＧｉフレームワーク上に、どのような他ベンダのバンドルが動作するかの事前知識なしに、容易に開発実装することができる効果をもたらす。
【００８６】
［第２の実施の形態］
図６は、第２の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【００８７】
処理優先度申告スレッド協調動作装置は、図示しないＣＰＵを備えたコンピュータ内に構成され、優先度申告スレッド管理部１および複数スレッド実行部２Ａを備え、ＣＰＵ演算資源割当実行部３とともに使用される。
【００８８】
優先度申告スレッド管理部１、ＣＰＵ演算資源割当実行部３については、第１の実施の形態のものと同様であり、重複説明を省略する。
【００８９】
複数スレッド実行部２Ａと第１の実施の形態における複数スレッド実行部２との相違点は、複数スレッド実行部２Ａでは、抑制状態におけるスレッドが、使用権を譲渡するとともに、抑制状態である時間帯の一部をなす時間帯（例えば、１秒程度の長さの時間帯）において、スリープする（例えば、Ｊａｖａ（登録商標）言語におけるThread.sleepをコールする）ようになっていることである。
【００９０】
ＣＰＵ演算資源割当実行部３は、第１の実施の形態では説明しなかったが、スリープしているスレッドは選択の候補から除外するので、スリープしているスレッドには、使用権が与えられず、よって、当該スレッド以外のスレッドによる処理つまり優先度の高い処理が優先的に実行させることができる。
【００９１】
なお、スレッドは、抑制状態である時間帯の全部においてスリープするのでなく、時間帯の一部においてスリープすることで、その一部の時間帯に限り候補から除外されるので、残りの時間帯において選択されれば、処理を実行することができる。
【００９２】
したがって、第２の実施の形態に係る処理優先度申告スレッド協調動作装置によれば、スレッドは、スリープしている間は、ＣＰＵ演算資源割当実行部による選択の候補から除外され、これにより、最高の優先度の処理を行うスレッドが選択されやすくなり、その結果、当該処理がより効率的に実行される効果をもたらす。なお、低い優先度の処理の実行速度は低下するが、それが許容される場合において有用である。
【００９３】
なお、第２の実施の形態では、第１の実施の形態と同様の効果も勿論得られるが、冗長となるので、その重複説明を省略する。
【００９４】
［第３の実施の形態］
図７は、第３の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【００９５】
処理優先度申告スレッド協調動作装置は、図示しないＣＰＵを備えたコンピュータ内に構成され、優先度申告スレッド管理部１および複数スレッド実行部２Ｂを備え、ＣＰＵ演算資源割当実行部３とともに使用される。
【００９６】
優先度申告スレッド管理部１、ＣＰＵ演算資源割当実行部３については、第１の実施の形態等のものと同様であり、重複説明を省略する。
【００９７】
複数スレッド実行部２Ｂと第１の実施の形態等における複数スレッド実行部２等との相違点は、複数スレッド実行部２Ｂでは、抑制状態におけるスレッドが、抑制状態である時間帯の全部において、待機状態となる（例えば、Ｊａｖａ（登録商標）言語におけるThread.waitをコールする）ようになっていることである。
【００９８】
ＣＰＵ演算資源割当実行部３は、これまで説明しなかったが、待機状態のスレッドは選択の候補から除外するので、待機状態のスレッドには、使用権が与えられず、よって、当該スレッド以外のスレッドによる処理つまり優先度の高い処理が優先的に実行させることができる。
【００９９】
なお、スレッドは、抑制状態である時間帯の全部において待機状態となるので、処理を実行することができず、その結果、優先度の高い処理を一層優先的に実行させることができる。
【０１００】
したがって、第３の実施の形態に係る処理優先度申告スレッド協調動作装置によれば、抑制状態のスレッドは、処理の実行を停止し、自身の処理の優先度より高い優先度の処理が完了するまで待機し、その間は、ＣＰＵ演算資源割当実行部による選択の候補から除外され、これにより、最高の優先度の処理を行うスレッドが選択されやすくなり、その結果、当該処理がより効率的に実行される効果をもたらす。
【０１０１】
なお、第３の実施の形態では、第１の実施の形態と同様の効果も勿論得られるが、冗長となるので、その重複説明を省略する。
【０１０２】
［第４の実施の形態］
図８は、第４の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【０１０３】
処理優先度申告スレッド協調動作装置は、図示しないＣＰＵを備えたコンピュータ内に構成され、優先度申告スレッド管理部１Ａおよび複数スレッド実行部２Ｃを備え、ＣＰＵ演算資源割当実行部３とともに使用される。
【０１０４】
ＣＰＵ演算資源割当実行部３については、第１の実施の形態等のものと同様であり、重複説明を省略する。
【０１０５】
優先度申告スレッド管理部１Ａと第１の実施の形態等における優先度申告スレッド管理部１との相違点は、以下の通りである。第１の相違点は、優先度申告スレッド管理部１Ａは、開始通知を受信したとき、直ちに、ステップＳ１３（図２を参照）において、開始通知内のスレッド識別子と優先度を含むレコードを処理実行中スレッド管理テーブルに記憶させ、制御が終わる点である。第２の相違点は、優先度申告スレッド管理部１Ａは、終了通知を受信したとき、直ちに、終了通知内のスレッド識別子を含むレコードを削除する点である。第３の相違点は、優先度申告スレッド管理部１Ａは、スレッドから抑制状態とする必要性の有無に関する問い合わせ（以下、「抑制要否問合」という）を受信したら、優先度（を含むレコード）がない場合は、抑制状態とする必要性がないことを示す応答を行い、優先度（を含むレコード）がある場合は、最高の優先度を読み出し、当該抑制要否問合内には、当該スレッドによる処理の優先度または当該スレッドのスレッド識別子が含まれているので、当該優先度または当該スレッド識別子を含むレコード内の優先度と最高の優先度とを比較し、両者が互いに等しい場合、抑制状態とする必要性がないことを示す応答を行う一方、後者のつまり最高の優先度の方が高い場合、抑制状態とする必要性があることを示す応答を行う点である。
【０１０６】
なお、優先度申告スレッド管理部１Ａは、開始通知や終了通知が送信されて、処理実行中スレッド管理テーブルを更新した際に、最高の優先度を求めておき、抑制要否問合に際しては、この求めておいた最高の優先度を使用することで、抑制要否問合後において最高の優先度を求める時間が不要となり、応答を迅速に実行することができるようになる。
【０１０７】
また、以下のような工夫をしてもよい。すなわち、処理実行中スレッド管理テーブルと並行して、優先度毎に実行中のスレッド数をカウンタで管理し、更新時に対応優先度のカウンタをインクリメントまたはデクリメントし、こうして、優先度毎に実行中のスレッド数を管理すると、スレッド数が０より大きいカウンタの中で最高の優先度を得ることで、処理実行中スレッド管理テーブルの更新時に、最高の優先度をより迅速に求めることができる。
【０１０８】
複数スレッド実行部２Ｃと第１の実施の形態等における複数スレッド実行部２等との相違点は、複数スレッド実行部２Ｃでは、スレッドは、上記の抑制要否問合を、使用権が与えられる度に優先度申告スレッド管理部１Ａに送信し、当該抑制要否問合に対する応答が抑制状態とする必要性があることを示すものである場合は、自身を抑制状態とするとともに、抑制状態においては、第１の実施の形態と同様に、使用権を譲渡する一方、当該応答が抑制状態とする必要性がないことを示すものである場合は、自身を通常状態とする点である。
【０１０９】
したがって、第４の実施の形態に係る処理優先度申告スレッド協調動作装置によれば、スレッドは、使用権が与えられたときに抑制要否問合を送信するので、優先度申告スレッド管理部では、開始通知および終了通知が送信されたときにすべき内容が少なく、当該送信時のための実装を簡素化することができる。
【０１１０】
なお、第４の実施の形態では、第１の実施の形態と同様の効果も勿論得られるが、冗長となるので、その重複説明を省略する。
【０１１１】
［第５の実施の形態］
図９は、第５の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【０１１２】
処理優先度申告スレッド協調動作装置は、図示しないＣＰＵを備えたコンピュータ内に構成され、優先度申告スレッド管理部１Ａおよび複数スレッド実行部２Ｄを備え、ＣＰＵ演算資源割当実行部３とともに使用される。
【０１１３】
優先度申告スレッド管理部１Ａについては、第４の実施の形態のものと同様であり、ＣＰＵ演算資源割当実行部３については、第１の実施の形態等のものと同様であり、重複説明を省略する。
【０１１４】
複数スレッド実行部２Ｄと第４の実施の形態における複数スレッド実行部２Ｃとの相違点は、複数スレッド実行部２Ｄは、抑制状態においては、第２の実施の形態の複数スレッド実行部２Ａと同様に、使用権を譲渡するとともに、抑制状態である時間帯の一部をなす時間帯において、スリープするようになっていることである。
【０１１５】
したがって、第５の実施の形態に係る処理優先度申告スレッド協調動作装置によれば、スレッドは、スリープしている間は、ＣＰＵ演算資源割当実行部による選択の候補から除外され、これにより、第２の実施の形態の効果と同様の効果が得られる。また、第１の実施の形態と同様の効果も得られる。また、第４の実施の形態と同様に、優先度申告スレッド管理部の構成を簡素化することができる。
【０１１６】
なお、第４の実施の形態および第５の実施の形態では、スレッドは、自身の状態を変化または維持すべく抑制要否問合を送信したが、他のスレッドの状態を変化または維持すべく抑制要否問合を送信し、その応答に応じて当該他のスレッドの状態を変化または維持させてもよい。他のスレッドは、抑制要否問合の送信をせず、処理に専念できる。
【０１１７】
他のスレッドを抑制状態にするには、当該スレッドの処理抑制フラグをＯＮにし、例えば、これにより、当該スレッドを待機状態とすればよい。一方、他のスレッドを通常状態にするには、例えば、待機解除（例えば、Ｊａｖａ（登録商標）言語におけるThread.notify）をコールすればよい。
【０１１８】
また、各実施の形態に係る処理優先度申告スレッド協調動作装置が行う方法つまり処理優先度申告スレッド協調動作方法を処理優先度申告スレッド協調動作装置に実行させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に格納し、陳列などして流通させたり、当該コンピュータプログラムをインターネットなどの通信網を介して伝送させてもよい。
【図面の簡単な説明】
【０１１９】
【図１】第１の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【図２】優先度申告スレッド管理部１が開始通知を受信したときの動作を説明するためのフローチャートである。
【図３】優先度申告スレッド管理部１が終了通知を受信したときの動作を説明するためのフローチャートである。
【図４】先に優先度の低いスレッドの処理が開始され、後から優先度の高いスレッドの処理が開始される場合のシーケンスの一例を示す図である。
【図５】先に優先度の高いスレッドの処理が開始され、後から優先度の低いスレッドの処理が開始される開示される場合のシーケンスの一例を示す図である。
【図６】第２の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【図７】第３の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【図８】第４の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【図９】第５の実施の形態に係る処理優先度申告スレッド協調動作装置の構成を示すブロック図である。
【図１０】従来のスレッド協調動作装置の構成を示すブロック図である。
【符号の説明】
【０１２０】
１、１Ａ…優先度申告スレッド管理部
２、２Ａ、２Ｂ、２Ｃ、２Ｄ…複数スレッド実行部
３…ＣＰＵ演算資源割当実行部
【図１】
2010015291.tif 000003
【図２】
2010015291.tif 000004
【図３】
2010015291.tif 000005
【図４】
2010015291.tif 000006
【図５】
2010015291.tif 000007
【図６】
2010015291.tif 000008
【図７】
2010015291.tif 000009
【図８】
2010015291.tif 000010
【図９】
2010015291.tif 000011
【図１０】
2010015291.tif 000012