JP3349547B2 - スケジューリングシステム - Google Patents

スケジューリングシステム

Info

Publication number
JP3349547B2
JP3349547B2 JP10841793A JP10841793A JP3349547B2 JP 3349547 B2 JP3349547 B2 JP 3349547B2 JP 10841793 A JP10841793 A JP 10841793A JP 10841793 A JP10841793 A JP 10841793A JP 3349547 B2 JP3349547 B2 JP 3349547B2
Authority
JP
Japan
Prior art keywords
priority
thread
virtual processor
effective
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP10841793A
Other languages
English (en)
Other versions
JPH06324888A (ja
Inventor
邦彦 恒冨
孝典 横山
伸一朗 山口
智明 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP10841793A priority Critical patent/JP3349547B2/ja
Publication of JPH06324888A publication Critical patent/JPH06324888A/ja
Application granted granted Critical
Publication of JP3349547B2 publication Critical patent/JP3349547B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数の仮想プロセッサ
が、並列オブジェクト指向言語によって記述されたプロ
グラムを並行または並列処理する計算機システム等に適
用される、オブジェクト実行のスケジューリングを行う
スケジューリング装置に関する。
【0002】
【従来の技術】並列オブジェクト指向言語によって記述
されたプログラムは、並行処理可能な複数のオブジェク
ト群を有して構成される。
【0003】オブジェクト群は、各種の処理内容を有し
ており、各々の処理内容に対して要求される応答時間が
異なる。
【0004】そこで、複数のオブジェクト群が同時に存
在する場合には、要求される応答時間内に応答すること
が厳しいオブジェクト群が、応答時間内にその処理が間
に合うように、優先的に実行する機能を有するスケジュ
ーリング手段が必要である。
【0005】また、オブジェクト群は、少なくとも1以
上のオブジェクトを有して構成される。
【0006】かかるオブジェクトは、例えばオブジェク
ト間の通信手段を使用して、他のオブジェクトに処理を
要求することがある。したがって、1つのオブジェクト
群の実行ために、オブジェクトの切り替えが頻繁に発生
するため、かかる切り替え処理が高速に行われなければ
ならない。
【0007】上記目的を達成するため、従来では、オブ
ジェクト群を実行するスレッドの優先順位を、オブジェ
クト群の応答時間の厳しさに応じて設定するスケジュー
リング方法が採用されている。
【0008】ここで、「スレッド」とは、各々、プロセ
ッサが備えるレジスタの内容とスタックとを少なくとも
保有している、いわゆる仮想プロセッサのことをいう。
各スレッドは、与えられたプログラムを他のスレッドと
共有する。したがって、複数のスレッドは、複数のオブ
ジェクト群を並行実行処理することが可能となる。
【0009】スレッドは、その優先順位にしたがって実
プロセッサを割り当てられるため、高い優先順位を有す
るスレッドが実行するオブジェクト群が、優先的に実行
される。かかる方法には、オブジェクト群へのスレッド
の割り当て方の違いにより、次の2方法が考えられる。
【0010】第1の方法は、スレッド独立方法である。
【0011】本方法は、オブジェクト群を構成するオブ
ジェクトごとにスレッドを割り当てる方法である。応答
時間の厳しいオブジェクト群の全てのスレッドは、予め
静的に優先順位を高く設定しておき、優先的に実プロセ
ッサを割り当てる。
【0012】しかし、本方法においては、オブジェクト
が切り替わるごとにスレッドが切り替わる。 また、ス
レッド切り替え処理は、プロセッサのレジスタ内容をす
べて、例えば主記憶内に保存し、別のスレッドのレジス
タ内容を読み込むため、一般に低速で行われる。
【0013】第2の方法は、スレッド連続方法である。
【0014】本方法は、1つのオブジェクト群に対し
て、1つのスレッドを割り当てるものである。
【0015】応答時間の厳しいプログラムを処理するス
レッドは、予め静的に優先順位を高く設定し、優先的に
プロセッサが割り当てられるようにしておく。
【0016】オブジェクトがオブジェクト間の通信手段
を使用して、他のオブジェクトに処理を要求する場合、
同一スレッドが、いわゆる「関数呼び出し」を行って、
オブジェクトを切り替えて、そのオブジェクトの手続き
を実行する。
【0017】したがって、オブジェクト切り替えに際
し、スレッドの切り替えが不要なので、オブジェクトの
切り替えが高速に行われる。
【0018】スレッド独立方法は、例えば、カーネギー
メロン大学のアートシステム(ARTS)、また、スレッド連
続方法は、例えば、クラウドシステム(Clouds)において
使用されている。
【0019】その詳細については、例えば「コンピュー
タソフトウエアVol.9 No.3 May 1992」に記載されてい
る。
【0020】なお、上記2方法のうち、オブジェクト切
り替え処理が高速に行えるという理由から、現在では、
スレッド連続方法の採用が主流となっている。
【0021】
【発明が解決しようとする課題】ところで、上記スレッ
ド連続方法は、オブジェクト群全体を1つの固定された
優先順位を有するスレッドにて実行するため、オブジェ
クト群全体での応答時間は満たされるものの、オブジェ
クト群を構成する個々のオブジェクトの応答時間は満た
されないという問題が発生する。
【0022】オブジェクト指向プログラミングにおいて
は、オブジェクトごとの処理に分割して、プログラミン
グを行う。
【0023】また、プログラムに要求される応答時間と
は別に、個々のオブジェクトの応答時間が、オブジェク
トの性質によって決められる。
【0024】したがって、応答時間の厳しくないオブジ
ェクト群が、応答時間の厳しいオブジェクトを含む場合
がある。
【0025】応答時間の厳しいオブジェクトとして、例
えば、画面描画処理オブジェクトが考えられる。スレッ
ド連続方法では、応答時間の厳しくないオブジェクト群
を、低い優先順位のスレッドが実行するため、描画処理
が他の高い優先順位のスレッドに中断され、とぎれとぎ
れに描画処理(例えば、マンマシーン・インターフェイ
スにおける表示画像への所定のコマンドの表示処理等)
が行われる事態が生ずる。
【0026】そこで、本発明は、かかる点に鑑み、スレ
ッド連続方法において、各々のオブジェクトの応答時間
に合わせたオブジェクト優先順位を設定し、スレッドの
優先順位を、実行中のオブジェクトのオブジェクト優先
順位にしたがって変動させることにより、応答時間の厳
しくないオブジェクト群中のオブジェクトであっても、
応答制限時間の厳しいオブジェクトを優先的に実行させ
るスケジューリング手段を提供することを目的とする。
【0027】
【課題を解決するための手段】上記目的を達成するた
め、以下の手段が考えられる。
【0028】並列オブジェクト指向プログラムを構成す
る複数のオブジェクト群を、複数の仮想プロセッサが、
並行または並列処理する計算機システムにおける、仮想
プロセッサのスケジューリングを行うスケジューリング
システムであって、前記各オブジェクト群を構成する各
オブジェクトに対して、予め定めた優先順位を記憶する
オブジェクト優先順位記憶手段と、前記オブジェクト優
先順位記憶手段の内容を参照して、仮想プロセッサが次
に実行すべきオブジェクトの優先順位を判定するオブジ
ェクト優先順位判定手段と、前記仮想プロセッサに予め
定められている優先順位と、前記オブジェクト優先順位
判定手段により得られたオブジェクトの優先順位とか
ら、予め定められた関係にもとづいて優先順位を決定す
る手段と、該決定された優先順位を実効優先順位として
記憶する実効優先順位記憶手段と、前記実効優先順位記
憶手段に記憶された実効優先順位を参照し、予め定めら
れた規則にしたがって、次に実行する仮想プロセッサを
決定する仮想プロセッサ管理手段とを備える手段であ
る。
【0029】
【作用】オブジェクト優先順位記憶手段は、例えば、各
オブジェクトを実行するスレッドの優先順位がどれだけ
上がるかを示す値である「優先順位上昇数」を記憶す
る。
【0030】かかるオブジェクト優先順位記憶手段の記
憶内容にもとづいて、実効スレッド優先順位を再計算す
るスレッドの、オブジェクトにおける優先順位上昇数
(オブジェクト優先順位)を、オブジェクト優先順位判
定手段が決定する。
【0031】スレッド管理手段は、例えば、スレッドの
優先順位とオブジェクト優先順位を加えた値を、実効ス
レッド優先順位とし、スレッドごとに対応して存在する
スレッド優先順位にもとづき、次に実行するスレッドを
決定する。
【0032】上記構成によれば、オブジェクト群が制限
時間の厳しくない処理であり、その結果、当該オブジェ
クト群が低い優先順位のスレッドによって実行される場
合でも、これに含まれる、特定のオブジェクトが、制限
時間の厳しい処理であれば、プログラマーが、オブジェ
クト優先順位記憶手段に、予め優先順位を高く設定して
記憶しておくことにより、当該オブジェクト処理中だけ
は、スレッドの実行の中断を回避することが可能とな
る。
【0033】また、オブジェクトごとに優先順位を設定
することができるため、オブジェクトの性質に合わせ、
きめ細かに、オブジェクトの処理が可能となる。
【0034】さらに、オブジェクトの優先順位が変動し
ない場合には、オブジェクトの切り替えに際し、スレッ
ドの切り替え、再スケジューリングが不要である。した
がって、従来のスレッド連続方法と同様に、オブジェク
トの切り替えは、高速に行われることになる。
【0035】
【実施例】以下、本発明にかかる実施例について、図1
から14を参照して詳細に説明する。
【0036】図1は、スレッドが並列オブジェクト指向
言語により記述されたプログラムが実行される様子を示
す図である。
【0037】図2は、図1におけるスレッドの優先順位
および状態遷移の変動を示すタイムチャート図である。
【0038】図3は、本発明にかかるスケジューリング
装置の一実施例である。
【0039】図4は、図3のスケジューリング装置を計
算機上に実現した構成を示す構成図である。
【0040】図5は、スレッドの状態遷移図、図6は、
スケジューリング装置を構成するスレッド管理部300
内に配置されたスレッド情報記憶部305の構成図、図
7は、スケジューリング装置を構成するスレッド管理部
300内に配置された優先順位記憶部303の構成図、
図8は、スケジューリング装置を構成するオブジェクト
アドレス情報記憶部320の構成図、図9は、スケジュ
ーリング装置を構成するオブジェクト優先順位記憶部3
40の構成図、図10から14は、本発明にかかる実施
例における動作を示すフローチャートである。 さて、
図1において、プログラム100は、オブジェクト1、
オブジェクト2、オブジェクト3、オブジェクト4を有
して構成される。
【0041】オブジェクト1から4は、ライブラリとし
て予め用意された、メッセージをオブジェクト間で通信
する機能を有するメッセージ通信関数を使用して、互い
に他のオブジェクトを起動する。メッセージ通信関数に
おける、メッセージを送信する機能を有するメッセージ
送信関数は、メッセージ関数「call」およびメッセージ
関数「send」がある。
【0042】「call」は、受信側のオブジェクトが結果
を返すまで、送信側オブジェクトの実行を中断させる機
能を有するメッセージ送信関数である。
【0043】「send」は、送信側オブジェクトが、受信
側オブジェクトによる処理の結果を待たずに、実行を継
続させる機能を有するメッセージ送信関数である。。
【0044】「call」を使用して、相手オブジェクトに
メッセージを送信するため、逐次的に処理される一連の
オブジェクトを、「オブジェクト群」と称する。また。
オブジェクト群は、互いに並列実行が可能である。
【0045】本実施例においては、オブジェクト2とオ
ブジェクト3は、オブジェクト群110を構成し、オブ
ジェクト2が、「call」150により、オブジェクト3
を起動する。
【0046】また、オブジェクト4は、オブジェクト群
120を構成する。
【0047】オブジェクト1は、プログラム100の実
行開始直後に実行される。オブジェクト1は、オブジェ
クト2とオブジェクト4に、「send」130、140を
呼び出して実行し、オブジェクト群110、オブジェク
ト群120の順番で処理を開始させる。
【0048】さて、オブジェクトは、スレッドにより実
行される。
【0049】オブジェクト群の処理開始時には、スレッ
ド10が、オブジェクト1に割り当てられている。送信
側オブジェクトが「send」を呼び出して実行したときの
み、受信側オブジェクトを含むオブジェクト群に対し、
新たにスレッドが割り当てられる。
【0050】プログラム100では、スレッド20がオ
ブジェクト群110、スレッド30がオブジェクト群1
20に割り当てられる。また、スレッドを新たに割り当
てる場合、オブジェクト群の制限時間に合わせてスレッ
ドの優先順位を設定する。
【0051】なお、本実施例において、優先順位は、そ
の値が高ければ高いほど、優先度の高いことを意味する
ものとする。
【0052】次に、図5に、スレッドの状態遷移図を示
す。
【0053】スレッドは、図5に示すように、「実行状
態」510、「実行可能状態」520、「待機状態」5
30の3つの状態を遷移する。
【0054】「実行状態」とは、プロセッサを割り当て
られたスレッドが、オブジェクト内に存在する手続きを
実行している状態である。
【0055】「実行可能状態」とは、オブジェクトを実
行する環境が整ったスレッドが、プロセッサの割り当て
を待っている状態である。「待機状態」とは、イベント
等の特定の事象が起きるの待ち、実行を一時中断してプ
ロセッサを解放している状態である。
【0056】プログラム実行開始時は、最初に処理され
るべきオブジェクトを実行するスレッド以外は、全ての
スレッドが待機状態となっている。
【0057】「call」の呼び出しにより、スレッドが新
たにオブジェクト群に割り当てられる時、あるいは、ス
レッドを待機状態にしている要因が解決された場合、例
えば、待機状態を実行可能状態にする「wakeupルーチ
ン」により、スレッドは、待機状態から実行可能状態に
移る(図5、531)。
【0058】実行可能状態のスレッドがプロセッサを割
り当てられると、521に示すように実行状態に移る。
実行状態のスレッドは、プロセッサを他のスレッドに明
け渡すと511のように実行可能状態になる。
【0059】実行状態にあるスレッドが、所定時間プロ
セッサを放棄する「sleepルーチン」による処理を行う
場合、あるいは、スレッドがオブジェクト群の処理を終
了した場合には、512のように、当該スレッドは、実
行状態から待機状態へとに戻る。
【0060】なお、本実施例においては、主として仮想
プロセッサとしてスレッドを考慮しているが、かかる仮
想プロセッサは、いわゆるライトウエイトプロセスでも
よい。
【0061】図3は、本発明にかかる実施例であるスケ
ジューリング装置の構成の一例を示したものである。
【0062】図3において、310は、オブジェクトの
メッセージ通信処理、オブジェクトの管理等を行うオブ
ジェクトディスパッチャ、320は、オブジェクトのメ
モリ上のアドレスを記憶するオブジェクトアドレス情報
記憶部、330は、新たに実行するオブジェクトの優先
順位を、オブジェクト優先順位記憶部340の記憶内容
に基づいて判定するオブジェクト優先順位判定部、34
0は、オブジェクトごとのスレッドの優先順位の上昇数
を記憶するオブジェクト優先順位記憶部である。
【0063】さらに、305は、スレッドの情報を格納
するスレッド情報記憶部、301は、スレッドが状態遷
移する時に、状態情報およびレジスタの内容を当該スレ
ッドのスレッド情報記憶部に保存するスレッド状態操作
管理部、302は、オブジェクトの優先順位と当該オブ
ジェクトを実行するスレッドの優先順位から、実効スレ
ッド優先順位を計算し決定するスレッド優先順位決定
部、303は、上記スレッド優先順位決定部302で決
定した実効スレッド優先順位を記憶する優先順位記憶
部、304は、優先順位記憶部303内の優先順位情報
と、スレッド情報記憶部305内のスレッド状態情報に
より、スレッドに割り当てるプロセッサのスケジューリ
ングを行い、スレッド切り替え処理を行うスレッドディ
スパッチャである。
【0064】300は、スレッドを管理するスレッド管
理部であり、上記スレッド状態操作管理部301、スレ
ッド優先順位決定部302、優先順位記憶部303、ス
レッドディスパッチャ304、およびスレッド情報記憶
部305を有して構成されている。
【0065】1、4は、プログラム100を構成するオ
ブジェクト、3011、3041は、オブジェクトの内
部データ、3012、3013、3042、3043
は、オブジェクトが提供する手続きである。
【0066】なお、「点線」の矢印は、データの流れを
示し、「実線」の矢印は、制御の流れを示す。 スレッ
ド管理部300以外は、オブジェクト群に割り当てられ
たスレッドが、いわゆるコンテキストの切り替えなしに
実行する。
【0067】スレッド管理部300は、スレッドの切り
替え処理を行うためにコンテキストの切り換えが必要で
ある。具体的には、スレッドのコンテキストをスレッド
情報記憶部305に保存し、スレッド管理部300のコ
ンテキストにより実行する。
【0068】以下、図3のスケジューリング装置の動作
を説明する。
【0069】まず、スレッドは、プログラム実行開始時
に、オブジェクト1の手続きを実行する。
【0070】手続き中で、他のオブジエクトへ、「cal
l」、「send」を呼び出し、実行する場合、または、オ
ブジェクトの処理が終了した場合には、当該スレッド
は、オブジェクトディスパッチャのライブラリを呼び出
し、実行する。
【0071】図10は、オブジェクトディスパッチャ3
10の動作を示すフローチャートである。
【0072】これにより、オブジェクトディスパッチャ
310の動作を説明する。
【0073】まず、オブジェクトデスパッチャ310に
要求された処理が何かを判定する(ステップ1001)。
【0074】要求された処理が、call命令およびsend命
令による処理である場合、受信側オブジェクトが生成さ
れているか否かを判定し(ステップ1006)、生成さ
れていなければ、受信側オブジェクトを生成する(ステ
ップ1002)。
【0075】その後、受信側オブジェクトの優先順位を
調べるため、送信側、受信側オブジェクトのオブジェク
ト名および通信関数の種類(send、callのいずれである
か等)を引き数として、オブジェクト優先順位判定部3
30に制御を移す(ステップ1003)。
【0076】「call」を使用した場合、送信側オブジェ
クト、受信側オブジェクト、オブジェクトディスパッチ
ャ310、オブジェクト優先順位判定部330を、同一
スレッドが一連の関数呼び出しとして実行する。
【0077】したがって、受信側オブジェクトの処理を
終了したスレッドは、ステップ1003における処理の
直後に戻ってくる。
【0078】この時、受信側オブジェクトの優先順位に
より、実効スレッド優先順位が変動していれば、元に戻
す必要がある。
【0079】そこで、ステップ1003における送信側
オブジェクト名と受信側オブジェクト名を入れ換えて引
数とし、オブジェクト優先順位判定部330に制御を移
す(ステップ1005)。 ステップ1001において、
要求された処理が、オブジェクト処理の終了あるいはオ
ブジェクト処理の中断であれば、当該オブジェクトを実
行しているスレッドを待機状態にするため、スレッド
名、sleep要求を引数としてスレッド状態操作管理
部301に制御を移す(ステップ1004)。
【0080】なお、ステップ1002において、受信側
オブジェクトが存在するか否かは、オブジェクトアドレ
ス情報記憶部320の記憶内容にもとづいて判断する。
【0081】次に、図8に、オブジェクトアドレス情報
記憶部320の構成図の一例を示す。
【0082】オブジェクト名およびオブジェクトの手続
き名801と、当該オブジェクトが配置されたアドレス
802がテーブル状に記憶されている。
【0083】オブジェクトはその生成時に、オブジェク
トアドレス情報記憶部320のエントリにオブジェクト
名および手続き名が書き込まれ、メモリ上にオブジェク
トの内容がマッピングされる。また、マッピングアドレ
スが802に書き込まれる。
【0084】実行しようとするオブジェクトが生成され
ていない場合、オブジェクト名のエントリに当該オブジ
ェクトの名前が存在しないことになる。
【0085】図11に、オブジェクト優先順位判定部3
30の動作を示す。
【0086】まず、オブジェクト優先順位判定部330
は、オブジェクトディスパッチャ310から、送信側オ
ブジェクトと受信側オブジェクトの、オブジェクト名お
よび通信関数の種類(send、callのいずれであるか等)を
引き数として得る(ステップ1101)。
【0087】次に、オブジェクト優先順位記憶部340
の記憶内容から、送信側オブジェクト、受信側オブジェ
クトの優先順位を得る(ステップ1102)。
【0088】次に、通信関数の種類を判定し(ステップ
1103)、通信関数が「send」であれば、オブジェク
ト優先順位、wakeup要求を引数として、スレッド
状態操作管理部301に制御を移す(ステップ110
5)。
【0089】ステップ1103において、通信関数が
「call」であれば送信側オブジェクト、受信側オブジェ
クトの優先順位を比較し、スレッドの優先順位の変動が
あるか否かを調べる(ステップ1104)。
【0090】ステップ1104において、優先順位の比
較結果が異なれば、当該スレッドの優先順位を変更して
再スケジューリング(次に実行するスレッドを決定しな
おすこと)するため、オブジェクト優先順位、実効スレ
ッド優先順位の変更要求を引数としてスレッド状態操作
管理部301に制御を移す(ステップ1107)。
【0091】ステップ1104において、送信側オブジ
ェクトと、受信側オブジェクトの優先順位が同一であれ
ば、当該スレッドの優先順位の変更の必要はないので、
当該スレッドはオブジェクトディスパッチャに制御を移
し、受信側オブジェクトの指定された手続きから処理を
開始する(ステップ1106)。
【0092】図9に、ステップ1102で使用するオブ
ジェクト優先順位記憶部340の構成例を示す。
【0093】オブジェクト優先順位記憶部340は、オ
ブジェクト名901と各オブジェクトの優先順位902
を有している。オブジェクト名901と優先順位902
は、オブジェクトが生成される時に、オブジェクトディ
スパッチャ310により記入される。
【0094】なお、オブジェクトの優先順位902の内
容は、プログラム中のオブジェクトの定義部分中に、プ
ログラマが記述すればよい。
【0095】図12に、スレッド状態操作管理部301
の動作を示す。
【0096】まず、スレッド状態操作管理部301は、
スレッドの切り替えに備え、現在のスレッドのコンテキ
ストをスレッド情報記憶部305に格納する(ステップ
1201)。
【0097】次に、スレッド状態操作管理部301への
要求は何であるかを判定する(ステップ1202)。
【0098】ステップ1202において、要求処理が
「wakeupルーチン処理」である場合、wakeupするスレッ
ドのスレッド情報記憶部305におけるスレッドの状態
を、待機状態から実行可能状態にする(ステップ120
4)。
【0099】その後、wakeupされるスレッドが実行する
オブジェクトを、wakeupルーチンが指定しているか否か
を判定する(ステップ1205)。
【0100】実行するオブジェクト名、およびその処理
の優先順位が指定されているのは、wakeupスレッドが、
受信側オブジェクトに新たに割り当てられる場合であ
る。
【0101】ステップ1205において、オブジェクト
が指定されている場合、新たに実行するオブジェクトの
手続きのアドレスを、スレッド情報記憶部305の当該
スレッドの領域に設けられているプログラムカウンタに
書き込む(ステップ1207)。
【0102】これにより、当該スレッドがディスパッチ
ングされたときに、当該スレッドは指定されたオブジェ
クトから処理を開始できる。
【0103】また、指定された優先順位を、スレッド情
報記憶部305の当該スレッドの領域内の優先順位に書
き込む(ステップ1207)。
【0104】ステップ1207における処理の後、スレ
ッド名、実行するオブジェクトの優先順位を引数にし
て、スレッド優先順位決定部302に制御を移す(ステ
ップ1208)。
【0105】ステップ1205において、オブジェクト
が指定されていない場合、スレッドディスパッチャに制
御を移す(ステップ1206)。
【0106】ステップ1202において、要求処理がsl
eepルーチン処理である場合、指定されたスレッドのス
レッド情報記憶部305内におけるスレッドの状態を待
機状態にする(ステップ1203)。
【0107】その後、スレッドディスパッチャに制御を
移す(ステップ1206)。ステップ1202において、
要求処理が実効スレッド優先順位の変更のための処理で
ある場合、実行状態にあるスレッドのスレッド情報記憶
部305内におけるスレッドの状態を、実行可能状態に
する(ステップ1209)。
【0108】実効スレッド優先順位の変更は、例えばse
nd、call命令によってスレッドの優先順位がオブジェク
トの優先順位によって変更される場合に、オブジェクト
優先順位判定部330から要求が出される。
【0109】ステップ1209の処理の後に、スレッド
名、実行するオブジェクトの優先順位を引数にして、ス
レッド優先順位決定部302に制御を移す(ステップ1
210)。
【0110】図6に、ステップ1201、ステップ12
03、ステップ1204、およびステップ1207にお
ける処理にてアクセスされる、スレッド情報記憶部30
5の構成を示す。
【0111】スレッド情報記憶部305の内容は、スレ
ッド名601、コンテキストの一部であるレジスタ60
2、603等、スレッドの優先順位604、スレッドの
状態605を有して構成される。
【0112】図13に、スレッド優先順位決定部302
の動作を示す。
【0113】まず、スレッド状態操作管理部301か
ら、引数により指定されたスレッドのスレッド優先順位
を、スレッド情報記憶部305から読み込む(ステップ
1301)。
【0114】ステップ1301における処理で得られた
スレッド優先順位に、スレッド状態操作管理部301か
ら、引数によって与えられたオブジェクトの優先順位を
加え、実効スレッド優先順位とする計算を行う(ステッ
プ1302)。
【0115】なお、後述するスレッドディスパッチャ3
04によるスケジューリングは、スレッドの優先順位で
はなく、この実効スレッド優先順位に基づいて行われ
る。
【0116】ステップ1302における処理の後、スレ
ッド名と実効スレッド優先順位を、優先順位記憶部30
3内に設けられているキューの適当な場所に記録する
(ステップ1303)。
【0117】最後に、スレッドディスパッチャに制御を
移す(ステップ1304)。
【0118】図7に優先順位記憶部303に構成される
キューの構成図を示す。
【0119】優先順位記憶部303内のキューでは、ス
レッド名701と実効スレッド優先順位702を記憶し
たテーブルが、ポインタ703により連結されている。
【0120】連結の順番は、実効スレッド優先順位の高
い順番になっており、ステップ1303においても、順
番の高さにしたがって、新しいテーブルを連結してい
く。
【0121】図14は、スレッドディスパッチャ304
の動作を示す。
【0122】まず、優先順位記憶部303内のキューの
先頭からスレッド名(TRD)を得る(ステップ140
1)。
【0123】次に、ステップ1401で得られたスレッ
ド(スレッド名(TRD)のスレッド)の状態(STA
TE)を、スレッド情報記憶部305から得る(ステッ
プ1402)。
【0124】次に、スレッドの状態(STATE)を判
定し(ステップ1403)、スレッドが待機状態であれ
ば、優先順位記憶部303内のキューの、次のテーブル
からスレッド名を新たに得て、ステップ1402に戻る
(ステップ1403)。
【0125】ステップ1403において、スレッドの状
態が実行可能状態であれば、スレッド情報記憶部305
のうち、現在選択されているスレッド名に対応する領域
から、コンテキストを実プロセッサに回復し、当該スレ
ッドにもとづく処理を開始する(ステップ1405)。
【0126】図4は、図3のスケジューリング装置を計
算機上に実現した構成例を示す図である。
【0127】本構成例において、計算機は、プロセッサ
410、大容量記憶装置であるディスク420、および
記憶装置であるメモリ430を有して構成され、さら
に、表示装置であるディスプレイ440、ロケータであ
るマウス450、および入力装置であるキーボードが接
続されている。
【0128】図4に示すように、図3におけるスレッド
管理部300、オブジェクトディスパッチャ310、オ
ブジェクト優先順位判定部330、オブジェクトアドレ
ス情報記憶部320、オブジェクト優先順位記憶部34
0は、計算機400内のメモリにより実現され、オブジ
ェクト1、2、3、4を有するプログラム100は、計
算機400内のメモリ上に記憶され、プロセッサ410
により、プログラム100が実行される。
【0129】本実施例においては、プロセッサ410を
1つ設けた構成であるが、複数のプロセッサを備え、ス
レッドの並列処理を行うことも可能である。
【0130】図2は、本発明にかかるスケジューリング
装置が、どの様に図1に示すプログラムに作用するかを
示している。
【0131】図2を参照して、本発明の具体的動作を説
明する。
【0132】211、212は、スレッド10の実効ス
レッド優先順位の時間変化を、221、222、22
3、224、225、226、227は、スレッド20
の実効スレッド優先順位の時間変化を、231、23
2、233、234、235、236、237は、スレ
ッド30の実効スレッド優先順位の時間変化を示す。
【0133】実線にて示した211、223、224、
226、233、236は、当該スレッドが実行状態で
あることを示す。
【0134】斜線の点線にて示した212、221、2
27、231、234、237は、当該スレッドが待機
状態であることを示す。
【0135】点線にて示した222、225、232、
235は、当該スレッドが実行可能状態であることを示
す。
【0136】図4に示す実施例においては、プロセッサ
は1つであるので、同一時刻には、スレッドのいずれか
1つのみが実行状態になりうる。
【0137】実効スレッド優先順位は、その値が大きい
ほど優先度が高いものとする。
【0138】オブジェクト1、オブジェクト群110、
オブジェクト群120において、オブジェクト1、オブ
ジェクト群120、オブジェクト群110の順に、制限
時間が厳しいとする。
【0139】したがって、それぞれを実行するスレッド
10、スレッド20、スレッド30のスレッド優先順位
を、それぞれ「100」、「80」、「90」とする。
【0140】また、図9に示すようにオブジェクト3が
制限時間の厳しいオブジェクトであり、その優先順位
は、「+30」である。また、他のオブジェクトの優先
順位は、「0」である。
【0141】プログラム開始時には、スレッド10がオ
ブジェクト1を実効スレッド優先順位「100」で実行
しており、一方、スレッド20、30は待機状態にあ
る。
【0142】オブジェクト1において、オブジェクト4
に対して「send」130を呼び出し、実行させると、ス
レッド30が実行可能状態になり、オブジェクト4に割
り当てられる。
【0143】同様にオブジェクト2に対して「send」1
40を呼び出し、実行させると、スレッド20が実行可
能状態になりオブジェクト2に割り当てられる。
【0144】この時の実効スレッド優先順位は、前述の
通りスレッド20が「80」、スレッド30が「90」
である。
【0145】スレッド10が、オブジェクト1の終了に
ともなって待機状態になると、スレッドディスパッチャ
304により、スレッド30が選択され、オブジェクト
4の実行を開始する。
【0146】オブジェクト4に、所定時間処理を中断す
る命令であるsleep命令160が存在すると、スレッド
30は待機状態となる。
【0147】その後、スレッドディスパッチャ304に
より、スレッド20が選択され、オブジェクト2の実行
を開始する。
【0148】オブジェクト2では、オブジェクト3に対
するcall命令を実行するものとする。
【0149】オブジェクト3は、オブジェクトの優先順
位が「+30」であることが、オブジェクト優先順位判
定部330により判定され、スレッド優先順位決定部3
02が、スレッド20の実効スレッド優先順位を「3
0」だけ上昇させた結果、スレッド20の優先順位は、
「110」に上昇する。
【0150】ここではオブジェクトの優先順位を加算す
る処理にしてあるが、減算等の他の演算でも良いことは
言うまでもない。
【0151】オブジェクト4におけるsleep命令により
指定した時間が経過すると、スレッド30が実行可能状
態になる。しかし、スレッド20がオブジェクト3を実
行している間はスレッド20の実効スレッド優先順位が
高くなっているので、スレッド20からプロセッサの占
有権を移転させることはできない。
【0152】オブジェクト3の処理が終了すると、スレ
ッド20の実効スレッド優先順位が「80」へと戻る。
【0153】ここで、スレッドディスパッチャ304
は、スレッドの切り替え処理を行い、スレッド30を実
行状態にする。
【0154】上記実施例においては、図4に示すよう
に、単一プロセッサシステムにおけるスケジューリング
について述べたが、マルチプロセッサシステム、複数の
計算機をネットワークで結合して構成した分散処理シス
テム等においても、オブジェクトを並列実行する際に、
本発明にかかるスケジューリング装置の適用が可能であ
ることは言うまでもない。
【0155】また、オブジェクト間の通信関数にsend、
callの区別がない場合や、オブジェクト間の通信がメッ
セージ通信ではなく、関数呼び出しである場合において
も、同様に、本スケジューリング装置の適用が可能であ
る。
【0156】上記実施例で示したように、オブジェクト
群が制限時間の厳しくない処理であり、その結果、当該
オブジェクト群が、低い優先順位のスレッドで実行され
る場合でも、これに含まれる特定のオブジェクトが、中
断してはならない処理であれば、プログラマがオブジェ
クト優先順位記憶部330に格納される優先順位を予め
高く設定しておき、オブジェクト処理中の該処理の中断
を回避することができる。
【0157】また、オブジェクトごとに優先順位を設定
することができるので、オブジェクトの性質に合わせ、
きめ細かな実行順序の制御が可能である。
【0158】オブジェクトの優先順位が変動しない場合
には、オブジェクトの切り替えに際し、スレッドの切り
替えや、再スケジューリングが不要である。したがっ
て、従来のスレッド連続方法と同様に、オブジェクトの
切り替え処理は、高速に行える。
【0159】さらに、オブジェクトを構成する「手続
き」を記述する際、オブジェクトがどのような優先順位
のオブジェクト群に組み込まれるかを配慮してプログラ
ミングを行う必要もない。 また、ユーザのプログラム
中に優先順位を上昇させる命令自体を記述する必要がな
く、優先順位情報を持たせるだけでよい。このため、オ
ブジェクトの汎用性が高くなる。
【0160】
【発明の効果】オブジェクトを呼び出し実行するスレッ
ドが、低い優先順位であっても、当該オブジェクトが中
断されてはならないような処理であれば、当該オブジェ
クトの優先順位を、予め高く設定しておくことにより、
オブジェクト処理中のスレッドの切替え処理を回避する
ことが可能になる。
【図面の簡単な説明】
【図1】スレッドが並列オブジェクト指向言語により記
述されたプログラムを実行する様子を示す説明図であ
る。
【図2】スレッドの優先順位と状態遷移の変化を示すタ
イムチャート図である。
【図3】スケジューリング装置の実施例の構成図であ
る。
【図4】スケジューリング装置を計算機上に実現した構
成図の一例である。
【図5】スレッドの状態遷移図である。
【図6】スレッド情報記憶部の構成図である。
【図7】優先順位記憶部の構成図である。
【図8】オブジェクトアドレス情報記憶部の構成図であ
る。
【図9】オブジェクト優先順位記憶部の構成図である。
【図10】本発明にかかる実施例の動作を示すフローチ
ャートである。
【図11】本発明にかかる実施例の動作を示すフローチ
ャートである。
【図12】本発明にかかる実施例の動作を示すフローチ
ャートである。
【図13】本発明にかかる実施例の動作を示すフローチ
ャートである。
【図14】本発明にかかる実施例の動作を示すフローチ
ャートである。
【符号の説明】
1…オブジェクト、2…オブジェクト、3…オブジェク
ト、4…オブジェクト、10…スレッド、20…スレッ
ド、30…スレッド、100…プログラム、110…オ
ブジェクト群、120…オブジェクト群、130…sen
d、140…send、150…call、16…sleep命令、1
70…wakeup命令、211…スレッドの状態遷移と優先
順位、212…スレッドの状態遷移と優先順位、221
…スレッドの状態遷移と優先順位、222…スレッドの
状態遷移と優先順位、223…スレッドの状態遷移と優
先順位、224…スレッドの状態遷移と優先順位、22
5…スレッドの状態遷移と優先順位、226…スレッド
の状態遷移と優先順位、227…スレッドの状態遷移と
優先順位、231…スレッドの状態遷移と優先順位、2
32…スレッドの状態遷移と優先順位、233…スレッ
ドの状態遷移と優先順位、234…スレッドの状態遷移
と優先順位、235…スレッドの状態遷移と優先順位、
236…スレッドの状態遷移と優先順位、237…スレ
ッドの状態遷移と優先順位、300…スレッド管理部、
301…スレッド状態操作管理部、302…スレッド優
先順位決定部、303…優先順位記憶部、304…スレ
ッドディスパッチャ、305…スレッド情報記憶部、3
10…オブジェクトディスパッチャ、320…オブジェ
クトアドレス情報記憶部、330…オブジェクト優先順
位判定部、340…オブジェクト優先順位記憶部、40
0…計算機、410…プロセッサ、420…ディスク、
430…メモリ、440…ディスプレイ、450…マウ
ス、460…キーボード、510…実行状態、520…
実行可能状態、530…待機状態、601…スレッド
名、602…レジスタ、603…レジスタ、604…優
先順位、605…スレッド状態、701…スレッド名、
702…優先順位、801…オブジェクト名、802…
アドレス、803…ポインタ、901…オブジェクト
名、902…優先順位
───────────────────────────────────────────────────── フロントページの続き (72)発明者 山口 伸一朗 茨城県日立市大みか町七丁目1番1号 株式会社 日立製作所 日立研究所内 (72)発明者 中村 智明 茨城県日立市大みか町五丁目2番1号 株式会社 日立製作所 大みか工場内 (56)参考文献 特開 平4−160639(JP,A) 特開 平4−350728(JP,A) 特開 平1−205344(JP,A) 特開 平4−100156(JP,A) 特開 昭64−26234(JP,A) 横手靖彦,“オブジェクト指向分散オ ペレーティングシステム”,コンピュー タソフトウェア,日本ソフトウェア科学 会,1992年5月15日,第9巻,第3号, p.206−207 (58)調査した分野(Int.Cl.7,DB名) G06F 9/46,9/44

Claims (5)

    (57)【特許請求の範囲】
  1. 【請求項1】並列オブジェクト指向プログラムを構成す
    る複数のオブジェクト群を、複数の仮想プロセッサが、
    並行または並列処理する計算機システムにおける、仮想
    プロセッサのスケジューリングを行うスケジューリング
    システムであって、 前記各オブジェクト群を構成する各オブジェクトに対し
    て、予め定めた優先順位を記憶するオブジェクト優先順
    位記憶手段と、 前記オブジェクト優先順位記憶手段の内容を参照して、
    仮想プロセッサが次に実行すべきオブジェクトの優先順
    位を判定するオブジェクト優先順位判定手段と、 前記仮想プロセッサに予め定められている仮想プロセッ
    優先順位と、前記オブジェクト優先順位判定手段によ
    り得られたオブジェクトのオブジェクト優先順位とか
    ら、予め定められた関係にもとづいて、前記仮想プロセ
    ッサが前記オブジェクトを実行する直前に実効優先順位
    を決定する手段と、該決定された実効優先順位を記憶す
    る実効優先順位記憶手段と、 前記実効優先順位記憶手段に記憶された実効優先順位を
    参照し、予め定められた規則にしたがって、次に実行す
    る仮想プロセッサを決定する仮想プロセッサ管理手段と
    を備えることを特徴とするスケジューリングシステム。
  2. 【請求項2】並列オブジェクト指向言語で作成されたプ
    ログラムを構成する複数のオブジェクト群を、複数の仮
    想プロセッサが、並行または並列処理する計算機システ
    ムであって、受信側オブジェクトが有する関数を、送信
    側オブジェクトが割り当てられた仮想プロセッサが呼び
    出し実行せしめ、受信側オブジェクトが実行結果を返す
    まで、送信側オブジェクトの実行を中止するオブジェク
    ト間同期通信手段を具備し、仮想プロセッサのスケジュ
    ーリングを行うスケジューリングシステムにおいて、 前記各オブジェクト群を構成する各オブジェクトに対し
    て、予め定めた優先順位を記憶するオブジェクト優先順
    位記憶手段と、 前記オブジェクト優先順位記憶手段の内容を参照して、
    仮想プロセッサが次に実行すべきオブジェクトの優先順
    位を判定するオブジェクト優先順位判定手段と、 前記仮想プロセッサに予め定められている仮想プロセッ
    優先順位と、前記オブジェクト優先順位判定手段によ
    り得られたオブジェクトのオブジェクト優先順位とか
    ら、予め定められた関係にもとづいて、前記仮想プロセ
    ッサが前記オブジェクトを実行する直前に実効優先順位
    を決定する手段と、該決定された実効優先順位を記憶す
    る実効優先順位記憶手段と、 前記実効優先順位記憶手段に記憶された実効優先順位を
    参照し、予め定められた規則にしたがって、次に実行す
    る仮想プロセッサを決定する仮想プロセッサ管理手段と
    を備えることを特徴とするスケジューリングシステム。
  3. 【請求項3】請求項1または2において、前記予め定め
    られた関係は、前記仮想プロセッサに予め定められてい
    仮想プロセッサ優先順位と前記オブジェクト優先順位
    判定手段により得られたオブジェクトのオブジェクト
    先順位を加算し、前記実効優先順位を決定するものであ
    ることを特徴とするスケジューリングシステム。
  4. 【請求項4】請求項3において、前記予め定められた規
    則は、実効優先順位の値の最も大きな仮想プロセッサ
    を、次に実行する仮想プロセッサとすることを特徴とす
    るスケジューリングシステム。
  5. 【請求項5】請求項1、2、3および4いずれかにおい
    て、前記仮想プロセッサは、実プロセッサのレジスタの
    値を格納する手段とスタックとを少なくとも備えて構成
    されるスレッドであることを特徴とするスケジューリン
    グシステム。
JP10841793A 1993-05-10 1993-05-10 スケジューリングシステム Expired - Fee Related JP3349547B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10841793A JP3349547B2 (ja) 1993-05-10 1993-05-10 スケジューリングシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10841793A JP3349547B2 (ja) 1993-05-10 1993-05-10 スケジューリングシステム

Publications (2)

Publication Number Publication Date
JPH06324888A JPH06324888A (ja) 1994-11-25
JP3349547B2 true JP3349547B2 (ja) 2002-11-25

Family

ID=14484240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10841793A Expired - Fee Related JP3349547B2 (ja) 1993-05-10 1993-05-10 スケジューリングシステム

Country Status (1)

Country Link
JP (1) JP3349547B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE9404294D0 (sv) * 1994-12-09 1994-12-09 Ellemtel Utvecklings Ab sätt och anordning vid telekommunikation
JP4072271B2 (ja) * 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
JP5109250B2 (ja) * 2005-11-08 2012-12-26 横河電機株式会社 分散システム
JP5033343B2 (ja) * 2006-03-28 2012-09-26 株式会社野村総合研究所 ジョブ管理装置およびジョブ管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
横手靖彦,"オブジェクト指向分散オペレーティングシステム",コンピュータソフトウェア,日本ソフトウェア科学会,1992年5月15日,第9巻,第3号,p.206−207

Also Published As

Publication number Publication date
JPH06324888A (ja) 1994-11-25

Similar Documents

Publication Publication Date Title
US6732138B1 (en) Method and system for accessing system resources of a data processing system utilizing a kernel-only thread within a user process
US5448732A (en) Multiprocessor system and process synchronization method therefor
US5748468A (en) Prioritized co-processor resource manager and method
JP3659062B2 (ja) 計算機システム
US4553202A (en) User controlled dialog resource switching in a multi-tasking word processor
US5333319A (en) Virtual storage data processor with enhanced dispatching priority allocation of CPU resources
JP4072271B2 (ja) 複数のオペレーティングシステムを実行する計算機
EP0543512B1 (en) Multiprocessor system
EP0205945B1 (en) Process transparent multi storage mode data transfer and buffer control
US7200695B2 (en) Method, system, and program for processing packets utilizing descriptors
CN109997112B (zh) 数据处理
Molano et al. Real-time filesystems. Guaranteeing timing constraints for disk accesses in RT-Mach
EP0362105A2 (en) Method for processing program threads of a distributed application program by a host computer and an intelligent work station in an SNA LU 6.2 network environment
US5029077A (en) System and method for controlling physical resources allocated to a virtual terminal
JPH08212086A (ja) オフィスマシンのオペレーティングシステム及び方法
JP5909566B2 (ja) 計算機システム及びその制御方法
JPH08502841A (ja) 分散適用業務処理ネットワーク
EP3039540A1 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US7962926B2 (en) Method, system, and program storage device for generating a retry message when a thread in a real-time application is unavailable to process a request to utilize the real-time application
US8291426B2 (en) Memory allocators corresponding to processor resources
CN111045786B (zh) 一种云环境下的基于镜像分层技术的容器创建***及方法
JP3349547B2 (ja) スケジューリングシステム
CN108958903A (zh) 嵌入式多核中央处理器任务调度方法与装置
JPH07129518A (ja) 計算機システム
KR100651722B1 (ko) 실시간 성능 지원을 위한 리눅스 커널의 구성 방법 및실시간 성능 테스트 방법

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees