JP3349547B2 - Scheduling system - Google Patents
Scheduling systemInfo
- 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
Links
Description
【0001】[0001]
【産業上の利用分野】本発明は、複数の仮想プロセッサ
が、並列オブジェクト指向言語によって記述されたプロ
グラムを並行または並列処理する計算機システム等に適
用される、オブジェクト実行のスケジューリングを行う
スケジューリング装置に関する。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a scheduling apparatus for scheduling object execution, which is applied to a computer system or the like in which a plurality of virtual processors processes a program described in a parallel object-oriented language in parallel or in parallel.
【0002】[0002]
【従来の技術】並列オブジェクト指向言語によって記述
されたプログラムは、並行処理可能な複数のオブジェク
ト群を有して構成される。2. Description of the Related Art A program described in a parallel object-oriented language includes a plurality of objects that can be processed in parallel.
【0003】オブジェクト群は、各種の処理内容を有し
ており、各々の処理内容に対して要求される応答時間が
異なる。The object group has various processing contents, and the response time required for each processing content is different.
【0004】そこで、複数のオブジェクト群が同時に存
在する場合には、要求される応答時間内に応答すること
が厳しいオブジェクト群が、応答時間内にその処理が間
に合うように、優先的に実行する機能を有するスケジュ
ーリング手段が必要である。Therefore, when a plurality of object groups are present at the same time, a function for executing an object group which is difficult to respond within a required response time preferentially so that its processing can be completed within the response time. Is required.
【0005】また、オブジェクト群は、少なくとも1以
上のオブジェクトを有して構成される。[0005] The object group is configured to have at least one or more objects.
【0006】かかるオブジェクトは、例えばオブジェク
ト間の通信手段を使用して、他のオブジェクトに処理を
要求することがある。したがって、1つのオブジェクト
群の実行ために、オブジェクトの切り替えが頻繁に発生
するため、かかる切り替え処理が高速に行われなければ
ならない。Such an object may request processing of another object using, for example, communication means between the objects. Therefore, switching of objects frequently occurs in order to execute one object group, and such switching processing must be performed at high speed.
【0007】上記目的を達成するため、従来では、オブ
ジェクト群を実行するスレッドの優先順位を、オブジェ
クト群の応答時間の厳しさに応じて設定するスケジュー
リング方法が採用されている。In order to achieve the above object, a scheduling method for setting priorities of threads for executing an object group according to the strictness of the response time of the object group has conventionally been adopted.
【0008】ここで、「スレッド」とは、各々、プロセ
ッサが備えるレジスタの内容とスタックとを少なくとも
保有している、いわゆる仮想プロセッサのことをいう。
各スレッドは、与えられたプログラムを他のスレッドと
共有する。したがって、複数のスレッドは、複数のオブ
ジェクト群を並行実行処理することが可能となる。[0008] Here, a "thread" refers to a so-called virtual processor that has at least the contents of registers and a stack included in the processor.
Each thread shares a given program with other threads. Therefore, a plurality of threads can execute a plurality of object groups in parallel.
【0009】スレッドは、その優先順位にしたがって実
プロセッサを割り当てられるため、高い優先順位を有す
るスレッドが実行するオブジェクト群が、優先的に実行
される。かかる方法には、オブジェクト群へのスレッド
の割り当て方の違いにより、次の2方法が考えられる。[0009] Since a thread is assigned a real processor according to its priority, a group of objects executed by a thread having a higher priority is executed preferentially. The following two methods are conceivable as such methods, depending on the difference in how threads are allocated to the object group.
【0010】第1の方法は、スレッド独立方法である。[0010] The first method is a thread-independent method.
【0011】本方法は、オブジェクト群を構成するオブ
ジェクトごとにスレッドを割り当てる方法である。応答
時間の厳しいオブジェクト群の全てのスレッドは、予め
静的に優先順位を高く設定しておき、優先的に実プロセ
ッサを割り当てる。This method is a method of allocating a thread to each object constituting an object group. All the threads of the object group having a strict response time statically set a high priority in advance, and preferentially assign a real processor.
【0012】しかし、本方法においては、オブジェクト
が切り替わるごとにスレッドが切り替わる。 また、ス
レッド切り替え処理は、プロセッサのレジスタ内容をす
べて、例えば主記憶内に保存し、別のスレッドのレジス
タ内容を読み込むため、一般に低速で行われる。However, in this method, the thread is switched each time the object is switched. In addition, the thread switching process is generally performed at a low speed because all the register contents of the processor are stored in, for example, the main memory, and the register contents of another thread are read.
【0013】第2の方法は、スレッド連続方法である。A second method is a thread continuous method.
【0014】本方法は、1つのオブジェクト群に対し
て、1つのスレッドを割り当てるものである。In this method, one thread is assigned to one object group.
【0015】応答時間の厳しいプログラムを処理するス
レッドは、予め静的に優先順位を高く設定し、優先的に
プロセッサが割り当てられるようにしておく。A thread for processing a program with a short response time statically sets a high priority in advance so that a processor is preferentially assigned.
【0016】オブジェクトがオブジェクト間の通信手段
を使用して、他のオブジェクトに処理を要求する場合、
同一スレッドが、いわゆる「関数呼び出し」を行って、
オブジェクトを切り替えて、そのオブジェクトの手続き
を実行する。When an object requests processing of another object using the communication means between the objects,
The same thread makes a so-called “function call”
Switch objects and execute the procedure for that object.
【0017】したがって、オブジェクト切り替えに際
し、スレッドの切り替えが不要なので、オブジェクトの
切り替えが高速に行われる。Therefore, when switching objects, it is not necessary to switch between threads, and the objects can be switched at high speed.
【0018】スレッド独立方法は、例えば、カーネギー
メロン大学のアートシステム(ARTS)、また、スレッド連
続方法は、例えば、クラウドシステム(Clouds)において
使用されている。The thread independent method is used, for example, in the Art System (ARTS) of Carnegie Mellon University, and the thread continuous method is used, for example, in the Cloud System (Clouds).
【0019】その詳細については、例えば「コンピュー
タソフトウエアVol.9 No.3 May 1992」に記載されてい
る。The details are described, for example, in "Computer Software Vol. 9 No. 3 May 1992".
【0020】なお、上記2方法のうち、オブジェクト切
り替え処理が高速に行えるという理由から、現在では、
スレッド連続方法の採用が主流となっている。Of the above two methods, the object switching process can be performed at high speed.
The adoption of the thread continuous method has become mainstream.
【0021】[0021]
【発明が解決しようとする課題】ところで、上記スレッ
ド連続方法は、オブジェクト群全体を1つの固定された
優先順位を有するスレッドにて実行するため、オブジェ
クト群全体での応答時間は満たされるものの、オブジェ
クト群を構成する個々のオブジェクトの応答時間は満た
されないという問題が発生する。In the above-described thread continuation method, the entire object group is executed by one thread having a fixed priority, so that the response time of the entire object group is satisfied, The problem arises that the response times of the individual objects constituting the group are not satisfied.
【0022】オブジェクト指向プログラミングにおいて
は、オブジェクトごとの処理に分割して、プログラミン
グを行う。In object-oriented programming, programming is performed by dividing the processing into object-by-object processing.
【0023】また、プログラムに要求される応答時間と
は別に、個々のオブジェクトの応答時間が、オブジェク
トの性質によって決められる。In addition to the response time required for the program, the response time of each object is determined by the properties of the object.
【0024】したがって、応答時間の厳しくないオブジ
ェクト群が、応答時間の厳しいオブジェクトを含む場合
がある。Therefore, an object group whose response time is not strict may include an object whose response time is strict.
【0025】応答時間の厳しいオブジェクトとして、例
えば、画面描画処理オブジェクトが考えられる。スレッ
ド連続方法では、応答時間の厳しくないオブジェクト群
を、低い優先順位のスレッドが実行するため、描画処理
が他の高い優先順位のスレッドに中断され、とぎれとぎ
れに描画処理(例えば、マンマシーン・インターフェイ
スにおける表示画像への所定のコマンドの表示処理等)
が行われる事態が生ずる。As an object having a strict response time, for example, a screen drawing processing object can be considered. In the thread continuation method, a low-priority thread executes an object group with a low response time, so that the drawing process is interrupted by another high-priority thread, and the drawing process is interrupted (for example, in a man-machine interface). Display processing of a predetermined command on a display image, etc.)
Occurs.
【0026】そこで、本発明は、かかる点に鑑み、スレ
ッド連続方法において、各々のオブジェクトの応答時間
に合わせたオブジェクト優先順位を設定し、スレッドの
優先順位を、実行中のオブジェクトのオブジェクト優先
順位にしたがって変動させることにより、応答時間の厳
しくないオブジェクト群中のオブジェクトであっても、
応答制限時間の厳しいオブジェクトを優先的に実行させ
るスケジューリング手段を提供することを目的とする。In view of the above, the present invention sets the object priority in accordance with the response time of each object in the thread continuation method, and sets the thread priority to the object priority of the object being executed. Therefore, by varying, even objects in an object group whose response time is not severe,
It is an object of the present invention to provide a scheduling means for preferentially executing an object having a strict response time limit.
【0027】[0027]
【課題を解決するための手段】上記目的を達成するた
め、以下の手段が考えられる。To achieve the above object, the following means are conceivable.
【0028】並列オブジェクト指向プログラムを構成す
る複数のオブジェクト群を、複数の仮想プロセッサが、
並行または並列処理する計算機システムにおける、仮想
プロセッサのスケジューリングを行うスケジューリング
システムであって、前記各オブジェクト群を構成する各
オブジェクトに対して、予め定めた優先順位を記憶する
オブジェクト優先順位記憶手段と、前記オブジェクト優
先順位記憶手段の内容を参照して、仮想プロセッサが次
に実行すべきオブジェクトの優先順位を判定するオブジ
ェクト優先順位判定手段と、前記仮想プロセッサに予め
定められている優先順位と、前記オブジェクト優先順位
判定手段により得られたオブジェクトの優先順位とか
ら、予め定められた関係にもとづいて優先順位を決定す
る手段と、該決定された優先順位を実効優先順位として
記憶する実効優先順位記憶手段と、前記実効優先順位記
憶手段に記憶された実効優先順位を参照し、予め定めら
れた規則にしたがって、次に実行する仮想プロセッサを
決定する仮想プロセッサ管理手段とを備える手段であ
る。A plurality of object groups constituting a parallel object-oriented program are divided into a plurality of virtual processors by
A scheduling system for scheduling a virtual processor in a computer system that performs parallel or parallel processing, comprising: an object priority storage unit configured to store a predetermined priority for each object constituting each of the object groups; Object priority determining means for determining the priority of the object to be executed next by the virtual processor with reference to the contents of the object priority storing means; a priority predetermined for the virtual processor; Means for determining a priority based on a predetermined relationship from the priority of the object obtained by the rank determining means, an effective priority storing means for storing the determined priority as an effective priority, Stored in the effective priority storage means Referring to effect priority, according to a predetermined rule, a means and a virtual processor managing means for determining a virtual processors to be executed next.
【0029】[0029]
【作用】オブジェクト優先順位記憶手段は、例えば、各
オブジェクトを実行するスレッドの優先順位がどれだけ
上がるかを示す値である「優先順位上昇数」を記憶す
る。The object priority storage means stores, for example, a "priority increase number" which is a value indicating how much the priority of the thread executing each object is raised.
【0030】かかるオブジェクト優先順位記憶手段の記
憶内容にもとづいて、実効スレッド優先順位を再計算す
るスレッドの、オブジェクトにおける優先順位上昇数
(オブジェクト優先順位)を、オブジェクト優先順位判
定手段が決定する。Based on the contents stored in the object priority storage unit, the object priority determination unit determines the number of priority increases (object priority) in the object of the thread for which the effective thread priority is recalculated.
【0031】スレッド管理手段は、例えば、スレッドの
優先順位とオブジェクト優先順位を加えた値を、実効ス
レッド優先順位とし、スレッドごとに対応して存在する
スレッド優先順位にもとづき、次に実行するスレッドを
決定する。The thread management means sets, for example, a value obtained by adding the thread priority and the object priority to the effective thread priority, and determines the next thread to be executed based on the thread priority corresponding to each thread. decide.
【0032】上記構成によれば、オブジェクト群が制限
時間の厳しくない処理であり、その結果、当該オブジェ
クト群が低い優先順位のスレッドによって実行される場
合でも、これに含まれる、特定のオブジェクトが、制限
時間の厳しい処理であれば、プログラマーが、オブジェ
クト優先順位記憶手段に、予め優先順位を高く設定して
記憶しておくことにより、当該オブジェクト処理中だけ
は、スレッドの実行の中断を回避することが可能とな
る。According to the above-described configuration, even when the object group is executed by a thread having a low priority, the specific object included in the object group is executed even if the object group is executed by a thread having a low priority. In the case of a process with a strict time limit, the programmer sets a high priority in advance in the object priority storage means and stores it, thereby avoiding interruption of thread execution only during the processing of the object. Becomes possible.
【0033】また、オブジェクトごとに優先順位を設定
することができるため、オブジェクトの性質に合わせ、
きめ細かに、オブジェクトの処理が可能となる。Further, since the priority order can be set for each object,
Processing of the object can be performed finely.
【0034】さらに、オブジェクトの優先順位が変動し
ない場合には、オブジェクトの切り替えに際し、スレッ
ドの切り替え、再スケジューリングが不要である。した
がって、従来のスレッド連続方法と同様に、オブジェク
トの切り替えは、高速に行われることになる。Further, when the priority of an object does not change, thread switching and rescheduling are not required at the time of object switching. Therefore, as in the conventional thread continuation method, the switching of objects is performed at high speed.
【0035】[0035]
【実施例】以下、本発明にかかる実施例について、図1
から14を参照して詳細に説明する。BRIEF DESCRIPTION OF THE DRAWINGS FIG.
This will be described in detail with reference to FIGS.
【0036】図1は、スレッドが並列オブジェクト指向
言語により記述されたプログラムが実行される様子を示
す図である。FIG. 1 is a diagram showing how a program in which threads are described in a parallel object-oriented language is executed.
【0037】図2は、図1におけるスレッドの優先順位
および状態遷移の変動を示すタイムチャート図である。FIG. 2 is a time chart showing the change of the thread priority and the state transition in FIG.
【0038】図3は、本発明にかかるスケジューリング
装置の一実施例である。FIG. 3 shows an embodiment of the scheduling device according to the present invention.
【0039】図4は、図3のスケジューリング装置を計
算機上に実現した構成を示す構成図である。FIG. 4 is a configuration diagram showing a configuration in which the scheduling device of FIG. 3 is realized on a computer.
【0040】図5は、スレッドの状態遷移図、図6は、
スケジューリング装置を構成するスレッド管理部300
内に配置されたスレッド情報記憶部305の構成図、図
7は、スケジューリング装置を構成するスレッド管理部
300内に配置された優先順位記憶部303の構成図、
図8は、スケジューリング装置を構成するオブジェクト
アドレス情報記憶部320の構成図、図9は、スケジュ
ーリング装置を構成するオブジェクト優先順位記憶部3
40の構成図、図10から14は、本発明にかかる実施
例における動作を示すフローチャートである。 さて、
図1において、プログラム100は、オブジェクト1、
オブジェクト2、オブジェクト3、オブジェクト4を有
して構成される。FIG. 5 is a state transition diagram of a thread, and FIG.
Thread management unit 300 constituting the scheduling device
FIG. 7 is a configuration diagram of a thread information storage unit 305 disposed in the thread management unit 300. FIG. 7 is a configuration diagram of a priority order storage unit 303 disposed in a thread management unit 300 constituting the scheduling device.
FIG. 8 is a configuration diagram of an object address information storage unit 320 that configures the scheduling device. FIG. 9 is an object priority storage unit 3 that configures the scheduling device.
10 to 14 are flow charts showing the operation in the embodiment according to the present invention. Now,
In FIG. 1, a program 100 includes an object 1,
It has an object 2, an object 3, and an object 4.
【0041】オブジェクト1から4は、ライブラリとし
て予め用意された、メッセージをオブジェクト間で通信
する機能を有するメッセージ通信関数を使用して、互い
に他のオブジェクトを起動する。メッセージ通信関数に
おける、メッセージを送信する機能を有するメッセージ
送信関数は、メッセージ関数「call」およびメッセージ
関数「send」がある。Each of the objects 1 to 4 activates another object using a message communication function which has a function of communicating a message between objects prepared in advance as a library. Among the message communication functions, a message transmission function having a function of transmitting a message includes a message function “call” and a message function “send”.
【0042】「call」は、受信側のオブジェクトが結果
を返すまで、送信側オブジェクトの実行を中断させる機
能を有するメッセージ送信関数である。"Call" is a message transmission function having a function of interrupting the execution of the transmitting object until the receiving object returns a result.
【0043】「send」は、送信側オブジェクトが、受信
側オブジェクトによる処理の結果を待たずに、実行を継
続させる機能を有するメッセージ送信関数である。。"Send" is a message transmission function having a function of causing the transmitting object to continue execution without waiting for the result of processing by the receiving object. .
【0044】「call」を使用して、相手オブジェクトに
メッセージを送信するため、逐次的に処理される一連の
オブジェクトを、「オブジェクト群」と称する。また。
オブジェクト群は、互いに並列実行が可能である。A series of objects that are sequentially processed to transmit a message to a partner object using “call” is referred to as an “object group”. Also.
Objects can be executed in parallel with each other.
【0045】本実施例においては、オブジェクト2とオ
ブジェクト3は、オブジェクト群110を構成し、オブ
ジェクト2が、「call」150により、オブジェクト3
を起動する。In the present embodiment, the object 2 and the object 3 form an object group 110, and the object 2
Start
【0046】また、オブジェクト4は、オブジェクト群
120を構成する。The object 4 forms an object group 120.
【0047】オブジェクト1は、プログラム100の実
行開始直後に実行される。オブジェクト1は、オブジェ
クト2とオブジェクト4に、「send」130、140を
呼び出して実行し、オブジェクト群110、オブジェク
ト群120の順番で処理を開始させる。The object 1 is executed immediately after the execution of the program 100 is started. The object 1 causes the object 2 and the object 4 to call and execute “send” 130 and 140, and start processing in the order of the object group 110 and the object group 120.
【0048】さて、オブジェクトは、スレッドにより実
行される。The object is executed by a thread.
【0049】オブジェクト群の処理開始時には、スレッ
ド10が、オブジェクト1に割り当てられている。送信
側オブジェクトが「send」を呼び出して実行したときの
み、受信側オブジェクトを含むオブジェクト群に対し、
新たにスレッドが割り当てられる。At the start of the processing of the object group, the thread 10 is assigned to the object 1. Only when the sending object calls and executes "send", the object group including the receiving object
A new thread is assigned.
【0050】プログラム100では、スレッド20がオ
ブジェクト群110、スレッド30がオブジェクト群1
20に割り当てられる。また、スレッドを新たに割り当
てる場合、オブジェクト群の制限時間に合わせてスレッ
ドの優先順位を設定する。In the program 100, the thread 20 is the object group 110, and the thread 30 is the object group 1
Assigned to 20. When a new thread is assigned, the priority of the thread is set according to the time limit of the object group.
【0051】なお、本実施例において、優先順位は、そ
の値が高ければ高いほど、優先度の高いことを意味する
ものとする。In the present embodiment, the higher the priority, the higher the priority.
【0052】次に、図5に、スレッドの状態遷移図を示
す。Next, FIG. 5 shows a state transition diagram of a thread.
【0053】スレッドは、図5に示すように、「実行状
態」510、「実行可能状態」520、「待機状態」5
30の3つの状態を遷移する。As shown in FIG. 5, the thread has an “executing state” 510, an “executable state” 520, and a “waiting state” 5
30 states are transited.
【0054】「実行状態」とは、プロセッサを割り当て
られたスレッドが、オブジェクト内に存在する手続きを
実行している状態である。The "execution state" is a state in which a thread to which a processor is assigned is executing a procedure existing in an object.
【0055】「実行可能状態」とは、オブジェクトを実
行する環境が整ったスレッドが、プロセッサの割り当て
を待っている状態である。「待機状態」とは、イベント
等の特定の事象が起きるの待ち、実行を一時中断してプ
ロセッサを解放している状態である。The "executable state" is a state in which a thread in which an environment for executing an object is prepared is waiting for a processor assignment. The “standby state” is a state in which a specific event such as an event occurs, execution is temporarily suspended, and the processor is released.
【0056】プログラム実行開始時は、最初に処理され
るべきオブジェクトを実行するスレッド以外は、全ての
スレッドが待機状態となっている。At the start of program execution, all threads are in a standby state except for the thread that executes the object to be processed first.
【0057】「call」の呼び出しにより、スレッドが新
たにオブジェクト群に割り当てられる時、あるいは、ス
レッドを待機状態にしている要因が解決された場合、例
えば、待機状態を実行可能状態にする「wakeupルーチ
ン」により、スレッドは、待機状態から実行可能状態に
移る(図5、531)。When a thread is newly assigned to an object group by calling “call”, or when a factor that puts a thread in a waiting state is resolved, for example, a “wakeup routine that puts the waiting state in an executable state” ", The thread shifts from the standby state to the executable state (FIGS. 5, 531).
【0058】実行可能状態のスレッドがプロセッサを割
り当てられると、521に示すように実行状態に移る。
実行状態のスレッドは、プロセッサを他のスレッドに明
け渡すと511のように実行可能状態になる。When a thread in the executable state is assigned a processor, it shifts to the execution state as indicated by 521.
When the thread in the execution state yields the processor to another thread, it becomes an executable state as indicated by 511.
【0059】実行状態にあるスレッドが、所定時間プロ
セッサを放棄する「sleepルーチン」による処理を行う
場合、あるいは、スレッドがオブジェクト群の処理を終
了した場合には、512のように、当該スレッドは、実
行状態から待機状態へとに戻る。When the thread in the execution state performs a process based on a “sleep routine” that relinquishes the processor for a predetermined time, or when the thread completes the process of the object group, the thread is set to 512 as shown in FIG. Return from the execution state to the standby state.
【0060】なお、本実施例においては、主として仮想
プロセッサとしてスレッドを考慮しているが、かかる仮
想プロセッサは、いわゆるライトウエイトプロセスでも
よい。Although the present embodiment mainly considers threads as virtual processors, such virtual processors may be so-called light weight processes.
【0061】図3は、本発明にかかる実施例であるスケ
ジューリング装置の構成の一例を示したものである。FIG. 3 shows an example of the configuration of a scheduling device according to an embodiment of the present invention.
【0062】図3において、310は、オブジェクトの
メッセージ通信処理、オブジェクトの管理等を行うオブ
ジェクトディスパッチャ、320は、オブジェクトのメ
モリ上のアドレスを記憶するオブジェクトアドレス情報
記憶部、330は、新たに実行するオブジェクトの優先
順位を、オブジェクト優先順位記憶部340の記憶内容
に基づいて判定するオブジェクト優先順位判定部、34
0は、オブジェクトごとのスレッドの優先順位の上昇数
を記憶するオブジェクト優先順位記憶部である。In FIG. 3, reference numeral 310 denotes an object dispatcher for performing message communication processing of an object, management of an object, and the like; 320, an object address information storage unit for storing an address of an object in a memory; and 330, a new execution. An object priority determining unit that determines the priority of the object based on the storage content of the object priority storing unit 340;
Reference numeral 0 denotes an object priority storage unit that stores the number of increases in the priority of the thread for each object.
【0063】さらに、305は、スレッドの情報を格納
するスレッド情報記憶部、301は、スレッドが状態遷
移する時に、状態情報およびレジスタの内容を当該スレ
ッドのスレッド情報記憶部に保存するスレッド状態操作
管理部、302は、オブジェクトの優先順位と当該オブ
ジェクトを実行するスレッドの優先順位から、実効スレ
ッド優先順位を計算し決定するスレッド優先順位決定
部、303は、上記スレッド優先順位決定部302で決
定した実効スレッド優先順位を記憶する優先順位記憶
部、304は、優先順位記憶部303内の優先順位情報
と、スレッド情報記憶部305内のスレッド状態情報に
より、スレッドに割り当てるプロセッサのスケジューリ
ングを行い、スレッド切り替え処理を行うスレッドディ
スパッチャである。Reference numeral 305 denotes a thread information storage unit for storing thread information; and 301, a thread state operation management unit for storing state information and register contents in the thread information storage unit of the thread when the thread makes a state transition. , A thread priority determining unit that calculates and determines an effective thread priority from the priority of the object and the priority of the thread that executes the object; A priority storage unit 304 for storing a thread priority performs scheduling of a processor to be assigned to a thread based on the priority information in the priority storage unit 303 and the thread state information in the thread information storage unit 305, and performs a thread switching process. Is a thread dispatcher that performs
【0064】300は、スレッドを管理するスレッド管
理部であり、上記スレッド状態操作管理部301、スレ
ッド優先順位決定部302、優先順位記憶部303、ス
レッドディスパッチャ304、およびスレッド情報記憶
部305を有して構成されている。Reference numeral 300 denotes a thread management unit for managing threads, which includes the thread state operation management unit 301, thread priority determination unit 302, priority storage unit 303, thread dispatcher 304, and thread information storage unit 305. It is configured.
【0065】1、4は、プログラム100を構成するオ
ブジェクト、3011、3041は、オブジェクトの内
部データ、3012、3013、3042、3043
は、オブジェクトが提供する手続きである。Reference numerals 1 and 4 denote objects constituting the program 100, reference numerals 3011 and 3041 denote internal data of the objects, and reference numerals 3012, 3013, 3042 and 3043.
Is a procedure provided by the object.
【0066】なお、「点線」の矢印は、データの流れを
示し、「実線」の矢印は、制御の流れを示す。 スレッ
ド管理部300以外は、オブジェクト群に割り当てられ
たスレッドが、いわゆるコンテキストの切り替えなしに
実行する。Note that the arrow of “dotted line” indicates the flow of data, and the arrow of “solid line” indicates the flow of control. Except for the thread management unit 300, the threads assigned to the object group execute without so-called context switching.
【0067】スレッド管理部300は、スレッドの切り
替え処理を行うためにコンテキストの切り換えが必要で
ある。具体的には、スレッドのコンテキストをスレッド
情報記憶部305に保存し、スレッド管理部300のコ
ンテキストにより実行する。The thread management unit 300 needs to switch contexts in order to perform thread switching processing. More specifically, the thread context is stored in the thread information storage unit 305 and executed by the thread management unit 300.
【0068】以下、図3のスケジューリング装置の動作
を説明する。The operation of the scheduling device shown in FIG. 3 will be described below.
【0069】まず、スレッドは、プログラム実行開始時
に、オブジェクト1の手続きを実行する。First, the thread executes the procedure of the object 1 at the start of the program execution.
【0070】手続き中で、他のオブジエクトへ、「cal
l」、「send」を呼び出し、実行する場合、または、オ
ブジェクトの処理が終了した場合には、当該スレッド
は、オブジェクトディスパッチャのライブラリを呼び出
し、実行する。During the procedure, "cal"
When “l” and “send” are called and executed, or when the processing of the object is completed, the thread calls and executes a library of the object dispatcher.
【0071】図10は、オブジェクトディスパッチャ3
10の動作を示すフローチャートである。FIG. 10 shows the object dispatcher 3
10 is a flowchart showing the operation of the tenth embodiment.
【0072】これにより、オブジェクトディスパッチャ
310の動作を説明する。The operation of the object dispatcher 310 will now be described.
【0073】まず、オブジェクトデスパッチャ310に
要求された処理が何かを判定する(ステップ1001)。First, it is determined what processing is requested of the object dispatcher 310 (step 1001).
【0074】要求された処理が、call命令およびsend命
令による処理である場合、受信側オブジェクトが生成さ
れているか否かを判定し(ステップ1006)、生成さ
れていなければ、受信側オブジェクトを生成する(ステ
ップ1002)。If the requested process is a process by a call command and a send command, it is determined whether or not a receiving object has been generated (step 1006). If not, a receiving object is generated. (Step 1002).
【0075】その後、受信側オブジェクトの優先順位を
調べるため、送信側、受信側オブジェクトのオブジェク
ト名および通信関数の種類(send、callのいずれである
か等)を引き数として、オブジェクト優先順位判定部3
30に制御を移す(ステップ1003)。Thereafter, in order to check the priority of the receiving object, the object priority determining unit uses the object names of the transmitting and receiving objects and the type of communication function (either send or call) as arguments. 3
The control is shifted to 30 (step 1003).
【0076】「call」を使用した場合、送信側オブジェ
クト、受信側オブジェクト、オブジェクトディスパッチ
ャ310、オブジェクト優先順位判定部330を、同一
スレッドが一連の関数呼び出しとして実行する。When "call" is used, the same thread executes the transmitting object, the receiving object, the object dispatcher 310, and the object priority determining unit 330 as a series of function calls.
【0077】したがって、受信側オブジェクトの処理を
終了したスレッドは、ステップ1003における処理の
直後に戻ってくる。Therefore, the thread that has completed the processing of the receiving object returns immediately after the processing in step 1003.
【0078】この時、受信側オブジェクトの優先順位に
より、実効スレッド優先順位が変動していれば、元に戻
す必要がある。At this time, if the effective thread priority has fluctuated due to the priority of the receiving object, it is necessary to restore the original thread priority.
【0079】そこで、ステップ1003における送信側
オブジェクト名と受信側オブジェクト名を入れ換えて引
数とし、オブジェクト優先順位判定部330に制御を移
す(ステップ1005)。 ステップ1001において、
要求された処理が、オブジェクト処理の終了あるいはオ
ブジェクト処理の中断であれば、当該オブジェクトを実
行しているスレッドを待機状態にするため、スレッド
名、sleep要求を引数としてスレッド状態操作管理
部301に制御を移す(ステップ1004)。Then, the transmission side object name and the reception side object name in step 1003 are replaced with each other as an argument, and control is transferred to the object priority determining section 330 (step 1005). In step 1001,
If the requested processing is termination of the object processing or interruption of the object processing, the thread state and the sleep request are controlled by the thread state operation management unit 301 using the thread name and the sleep request as arguments to put the thread executing the object in a standby state. Is transferred (step 1004).
【0080】なお、ステップ1002において、受信側
オブジェクトが存在するか否かは、オブジェクトアドレ
ス情報記憶部320の記憶内容にもとづいて判断する。In step 1002, whether or not the receiving side object exists is determined based on the contents stored in the object address information storage section 320.
【0081】次に、図8に、オブジェクトアドレス情報
記憶部320の構成図の一例を示す。Next, FIG. 8 shows an example of a configuration diagram of the object address information storage section 320.
【0082】オブジェクト名およびオブジェクトの手続
き名801と、当該オブジェクトが配置されたアドレス
802がテーブル状に記憶されている。An object name, an object procedure name 801 and an address 802 where the object is located are stored in a table.
【0083】オブジェクトはその生成時に、オブジェク
トアドレス情報記憶部320のエントリにオブジェクト
名および手続き名が書き込まれ、メモリ上にオブジェク
トの内容がマッピングされる。また、マッピングアドレ
スが802に書き込まれる。When the object is created, the object name and the procedure name are written in the entry of the object address information storage unit 320, and the contents of the object are mapped on the memory. Also, the mapping address is written in 802.
【0084】実行しようとするオブジェクトが生成され
ていない場合、オブジェクト名のエントリに当該オブジ
ェクトの名前が存在しないことになる。If the object to be executed has not been generated, the object name entry does not exist in the object name entry.
【0085】図11に、オブジェクト優先順位判定部3
30の動作を示す。FIG. 11 shows the object priority determining unit 3
30 shows the operation.
【0086】まず、オブジェクト優先順位判定部330
は、オブジェクトディスパッチャ310から、送信側オ
ブジェクトと受信側オブジェクトの、オブジェクト名お
よび通信関数の種類(send、callのいずれであるか等)を
引き数として得る(ステップ1101)。First, the object priority determining section 330
Obtains, from the object dispatcher 310, the object name and the type of communication function (whether send or call, etc.) of the transmitting object and the receiving object as arguments (step 1101).
【0087】次に、オブジェクト優先順位記憶部340
の記憶内容から、送信側オブジェクト、受信側オブジェ
クトの優先順位を得る(ステップ1102)。Next, the object priority storage section 340
, The priority of the transmitting object and the receiving object is obtained (step 1102).
【0088】次に、通信関数の種類を判定し(ステップ
1103)、通信関数が「send」であれば、オブジェク
ト優先順位、wakeup要求を引数として、スレッド
状態操作管理部301に制御を移す(ステップ110
5)。Next, the type of the communication function is determined (step 1103). If the communication function is “send”, the control is transferred to the thread state operation management unit 301 using the object priority and the wakeup request as arguments (step 1103). 110
5).
【0089】ステップ1103において、通信関数が
「call」であれば送信側オブジェクト、受信側オブジェ
クトの優先順位を比較し、スレッドの優先順位の変動が
あるか否かを調べる(ステップ1104)。In step 1103, if the communication function is "call", the priorities of the transmitting object and the receiving object are compared, and it is checked whether or not there is a change in the priority of the thread (step 1104).
【0090】ステップ1104において、優先順位の比
較結果が異なれば、当該スレッドの優先順位を変更して
再スケジューリング(次に実行するスレッドを決定しな
おすこと)するため、オブジェクト優先順位、実効スレ
ッド優先順位の変更要求を引数としてスレッド状態操作
管理部301に制御を移す(ステップ1107)。In step 1104, if the priority comparison results are different, the priority of the thread is changed and rescheduling is performed (the next thread to be executed is determined again). The control is transferred to the thread state operation management unit 301 with the change request of the request as an argument (step 1107).
【0091】ステップ1104において、送信側オブジ
ェクトと、受信側オブジェクトの優先順位が同一であれ
ば、当該スレッドの優先順位の変更の必要はないので、
当該スレッドはオブジェクトディスパッチャに制御を移
し、受信側オブジェクトの指定された手続きから処理を
開始する(ステップ1106)。At step 1104, if the priority of the transmitting object and the priority of the receiving object are the same, there is no need to change the priority of the thread.
The thread transfers control to the object dispatcher and starts processing from the procedure specified by the receiving object (step 1106).
【0092】図9に、ステップ1102で使用するオブ
ジェクト優先順位記憶部340の構成例を示す。FIG. 9 shows an example of the configuration of the object priority storage unit 340 used in step 1102.
【0093】オブジェクト優先順位記憶部340は、オ
ブジェクト名901と各オブジェクトの優先順位902
を有している。オブジェクト名901と優先順位902
は、オブジェクトが生成される時に、オブジェクトディ
スパッチャ310により記入される。The object priority storage section 340 stores the object name 901 and the priority 902 of each object.
have. Object name 901 and priority 902
Is filled in by the object dispatcher 310 when the object is created.
【0094】なお、オブジェクトの優先順位902の内
容は、プログラム中のオブジェクトの定義部分中に、プ
ログラマが記述すればよい。The contents of the priority order 902 of the object may be described by the programmer in the definition part of the object in the program.
【0095】図12に、スレッド状態操作管理部301
の動作を示す。FIG. 12 shows a thread state operation management section 301.
The operation of FIG.
【0096】まず、スレッド状態操作管理部301は、
スレッドの切り替えに備え、現在のスレッドのコンテキ
ストをスレッド情報記憶部305に格納する(ステップ
1201)。First, the thread state operation management section 301
The current thread context is stored in the thread information storage unit 305 in preparation for thread switching (step 1201).
【0097】次に、スレッド状態操作管理部301への
要求は何であるかを判定する(ステップ1202)。Next, it is determined what the request is to the thread state operation management unit 301 (step 1202).
【0098】ステップ1202において、要求処理が
「wakeupルーチン処理」である場合、wakeupするスレッ
ドのスレッド情報記憶部305におけるスレッドの状態
を、待機状態から実行可能状態にする(ステップ120
4)。In step 1202, if the request processing is the “wakeup routine processing”, the state of the thread to be woken up in the thread information storage unit 305 is changed from the standby state to the executable state (step 1202).
4).
【0099】その後、wakeupされるスレッドが実行する
オブジェクトを、wakeupルーチンが指定しているか否か
を判定する(ステップ1205)。Thereafter, it is determined whether or not the object to be executed by the wakeup thread is specified by the wakeup routine (step 1205).
【0100】実行するオブジェクト名、およびその処理
の優先順位が指定されているのは、wakeupスレッドが、
受信側オブジェクトに新たに割り当てられる場合であ
る。The object name to be executed and the priority of the processing are specified because the wakeup thread
This is a case where a new object is assigned to the receiving object.
【0101】ステップ1205において、オブジェクト
が指定されている場合、新たに実行するオブジェクトの
手続きのアドレスを、スレッド情報記憶部305の当該
スレッドの領域に設けられているプログラムカウンタに
書き込む(ステップ1207)。If an object is specified in step 1205, the address of the procedure of the object to be newly executed is written to the program counter provided in the thread area of the thread information storage unit 305 (step 1207).
【0102】これにより、当該スレッドがディスパッチ
ングされたときに、当該スレッドは指定されたオブジェ
クトから処理を開始できる。Thus, when the thread is dispatched, the thread can start processing from the specified object.
【0103】また、指定された優先順位を、スレッド情
報記憶部305の当該スレッドの領域内の優先順位に書
き込む(ステップ1207)。The specified priority is written in the thread information storage unit 305 as a priority within the area of the thread (step 1207).
【0104】ステップ1207における処理の後、スレ
ッド名、実行するオブジェクトの優先順位を引数にし
て、スレッド優先順位決定部302に制御を移す(ステ
ップ1208)。After the processing in step 1207, control is transferred to the thread priority determining unit 302 using the thread name and the priority of the object to be executed as arguments (step 1208).
【0105】ステップ1205において、オブジェクト
が指定されていない場合、スレッドディスパッチャに制
御を移す(ステップ1206)。If the object is not specified in step 1205, the control is transferred to the thread dispatcher (step 1206).
【0106】ステップ1202において、要求処理がsl
eepルーチン処理である場合、指定されたスレッドのス
レッド情報記憶部305内におけるスレッドの状態を待
機状態にする(ステップ1203)。At step 1202, the request processing is
In the case of the eep routine processing, the state of the thread in the thread information storage unit 305 of the designated thread is set to a standby state (step 1203).
【0107】その後、スレッドディスパッチャに制御を
移す(ステップ1206)。ステップ1202において、
要求処理が実効スレッド優先順位の変更のための処理で
ある場合、実行状態にあるスレッドのスレッド情報記憶
部305内におけるスレッドの状態を、実行可能状態に
する(ステップ1209)。Thereafter, control is transferred to the thread dispatcher (step 1206). In step 1202,
If the request process is a process for changing the effective thread priority, the thread state in the thread information storage unit 305 of the thread in the execution state is set to the executable state (step 1209).
【0108】実効スレッド優先順位の変更は、例えばse
nd、call命令によってスレッドの優先順位がオブジェク
トの優先順位によって変更される場合に、オブジェクト
優先順位判定部330から要求が出される。The change of the effective thread priority is performed by, for example,
When the priority of the thread is changed by the priority of the object by the nd and call instructions, a request is issued from the object priority determination unit 330.
【0109】ステップ1209の処理の後に、スレッド
名、実行するオブジェクトの優先順位を引数にして、ス
レッド優先順位決定部302に制御を移す(ステップ1
210)。After the processing of step 1209, control is transferred to the thread priority determining unit 302 using the thread name and the priority of the object to be executed as arguments (step 1).
210).
【0110】図6に、ステップ1201、ステップ12
03、ステップ1204、およびステップ1207にお
ける処理にてアクセスされる、スレッド情報記憶部30
5の構成を示す。FIG. 6 shows steps 1201 and 12
03, the thread information storage unit 30 accessed in the processing in steps 1204 and 1207.
5 shows a configuration.
【0111】スレッド情報記憶部305の内容は、スレ
ッド名601、コンテキストの一部であるレジスタ60
2、603等、スレッドの優先順位604、スレッドの
状態605を有して構成される。The contents of the thread information storage unit 305 include a thread name 601 and a register 60 which is a part of a context.
2, 603 and the like, and the thread priority 604 and the thread status 605.
【0112】図13に、スレッド優先順位決定部302
の動作を示す。FIG. 13 shows a thread priority determining unit 302.
The operation of FIG.
【0113】まず、スレッド状態操作管理部301か
ら、引数により指定されたスレッドのスレッド優先順位
を、スレッド情報記憶部305から読み込む(ステップ
1301)。First, the thread priority order of the thread designated by the argument is read from the thread information storage unit 305 from the thread state operation management unit 301 (step 1301).
【0114】ステップ1301における処理で得られた
スレッド優先順位に、スレッド状態操作管理部301か
ら、引数によって与えられたオブジェクトの優先順位を
加え、実効スレッド優先順位とする計算を行う(ステッ
プ1302)。The priority of the object given by the argument is added from the thread state operation management unit 301 to the thread priority obtained in the processing in step 1301, and a calculation is made as an effective thread priority (step 1302).
【0115】なお、後述するスレッドディスパッチャ3
04によるスケジューリングは、スレッドの優先順位で
はなく、この実効スレッド優先順位に基づいて行われ
る。Note that a thread dispatcher 3 to be described later is used.
The scheduling by 04 is performed based on the effective thread priority, not the thread priority.
【0116】ステップ1302における処理の後、スレ
ッド名と実効スレッド優先順位を、優先順位記憶部30
3内に設けられているキューの適当な場所に記録する
(ステップ1303)。After the processing in step 1302, the thread name and the effective thread priority are stored in the priority storage unit 30.
Record at an appropriate place in the queue provided in 3.
(Step 1303).
【0117】最後に、スレッドディスパッチャに制御を
移す(ステップ1304)。Finally, control is transferred to the thread dispatcher (step 1304).
【0118】図7に優先順位記憶部303に構成される
キューの構成図を示す。FIG. 7 shows a configuration diagram of a queue configured in the priority order storage unit 303.
【0119】優先順位記憶部303内のキューでは、ス
レッド名701と実効スレッド優先順位702を記憶し
たテーブルが、ポインタ703により連結されている。In the queue in the priority storage unit 303, a table storing a thread name 701 and an effective thread priority 702 is linked by a pointer 703.
【0120】連結の順番は、実効スレッド優先順位の高
い順番になっており、ステップ1303においても、順
番の高さにしたがって、新しいテーブルを連結してい
く。The order of connection is the order of the highest priority of the effective thread. In step 1303, new tables are connected according to the height of the order.
【0121】図14は、スレッドディスパッチャ304
の動作を示す。FIG. 14 shows the thread dispatcher 304.
The operation of FIG.
【0122】まず、優先順位記憶部303内のキューの
先頭からスレッド名(TRD)を得る(ステップ140
1)。First, a thread name (TRD) is obtained from the head of the queue in the priority order storage unit 303 (step 140).
1).
【0123】次に、ステップ1401で得られたスレッ
ド(スレッド名(TRD)のスレッド)の状態(STA
TE)を、スレッド情報記憶部305から得る(ステッ
プ1402)。Next, the state (STA) of the thread (thread of thread name (TRD)) obtained in step 1401
TE) is obtained from the thread information storage unit 305 (step 1402).
【0124】次に、スレッドの状態(STATE)を判
定し(ステップ1403)、スレッドが待機状態であれ
ば、優先順位記憶部303内のキューの、次のテーブル
からスレッド名を新たに得て、ステップ1402に戻る
(ステップ1403)。Next, the state of the thread (STATE) is determined (step 1403). If the thread is in the standby state, the thread name is newly obtained from the next table in the queue in the priority order storage unit 303, and Return to step 1402
(Step 1403).
【0125】ステップ1403において、スレッドの状
態が実行可能状態であれば、スレッド情報記憶部305
のうち、現在選択されているスレッド名に対応する領域
から、コンテキストを実プロセッサに回復し、当該スレ
ッドにもとづく処理を開始する(ステップ1405)。In step 1403, if the thread state is the executable state, the thread information storage unit 305
Among them, the context is recovered to the real processor from the area corresponding to the currently selected thread name, and the processing based on the thread is started (step 1405).
【0126】図4は、図3のスケジューリング装置を計
算機上に実現した構成例を示す図である。FIG. 4 is a diagram showing a configuration example in which the scheduling device of FIG. 3 is implemented on a computer.
【0127】本構成例において、計算機は、プロセッサ
410、大容量記憶装置であるディスク420、および
記憶装置であるメモリ430を有して構成され、さら
に、表示装置であるディスプレイ440、ロケータであ
るマウス450、および入力装置であるキーボードが接
続されている。In this configuration example, the computer includes a processor 410, a disk 420 as a mass storage device, and a memory 430 as a storage device, and further has a display 440 as a display device and a mouse as a locator. 450 and a keyboard as an input device are connected.
【0128】図4に示すように、図3におけるスレッド
管理部300、オブジェクトディスパッチャ310、オ
ブジェクト優先順位判定部330、オブジェクトアドレ
ス情報記憶部320、オブジェクト優先順位記憶部34
0は、計算機400内のメモリにより実現され、オブジ
ェクト1、2、3、4を有するプログラム100は、計
算機400内のメモリ上に記憶され、プロセッサ410
により、プログラム100が実行される。As shown in FIG. 4, the thread management unit 300, the object dispatcher 310, the object priority determination unit 330, the object address information storage unit 320, and the object priority storage unit 34 in FIG.
0 is realized by the memory in the computer 400, and the program 100 having the objects 1, 2, 3, and 4 is stored in the memory in the computer 400, and the processor 410
As a result, the program 100 is executed.
【0129】本実施例においては、プロセッサ410を
1つ設けた構成であるが、複数のプロセッサを備え、ス
レッドの並列処理を行うことも可能である。In this embodiment, one processor 410 is provided. However, a plurality of processors may be provided to perform parallel processing of threads.
【0130】図2は、本発明にかかるスケジューリング
装置が、どの様に図1に示すプログラムに作用するかを
示している。FIG. 2 shows how the scheduling device according to the present invention operates on the program shown in FIG.
【0131】図2を参照して、本発明の具体的動作を説
明する。With reference to FIG. 2, a specific operation of the present invention will be described.
【0132】211、212は、スレッド10の実効ス
レッド優先順位の時間変化を、221、222、22
3、224、225、226、227は、スレッド20
の実効スレッド優先順位の時間変化を、231、23
2、233、234、235、236、237は、スレ
ッド30の実効スレッド優先順位の時間変化を示す。Reference numerals 211 and 212 denote changes over time of the effective thread priority of the thread 10, respectively.
3, 224, 225, 226, and 227 are threads 20
Change of the effective thread priority of the
2, 233, 234, 235, 236, and 237 indicate a time change of the effective thread priority of the thread 30.
【0133】実線にて示した211、223、224、
226、233、236は、当該スレッドが実行状態で
あることを示す。211, 223, 224 shown by solid lines,
226, 233, and 236 indicate that the thread is in an execution state.
【0134】斜線の点線にて示した212、221、2
27、231、234、237は、当該スレッドが待機
状態であることを示す。212, 221, 2 indicated by hatched dotted lines
27, 231, 234, and 237 indicate that the thread is in a standby state.
【0135】点線にて示した222、225、232、
235は、当該スレッドが実行可能状態であることを示
す。222, 225 and 232 shown by dotted lines,
235 indicates that the thread is in an executable state.
【0136】図4に示す実施例においては、プロセッサ
は1つであるので、同一時刻には、スレッドのいずれか
1つのみが実行状態になりうる。In the embodiment shown in FIG. 4, since there is only one processor, only one of the threads can be in the execution state at the same time.
【0137】実効スレッド優先順位は、その値が大きい
ほど優先度が高いものとする。It is assumed that the larger the effective thread priority, the higher the priority.
【0138】オブジェクト1、オブジェクト群110、
オブジェクト群120において、オブジェクト1、オブ
ジェクト群120、オブジェクト群110の順に、制限
時間が厳しいとする。Object 1, object group 110,
In the object group 120, it is assumed that the time limit is strict in the order of the object 1, the object group 120, and the object group 110.
【0139】したがって、それぞれを実行するスレッド
10、スレッド20、スレッド30のスレッド優先順位
を、それぞれ「100」、「80」、「90」とする。Therefore, the thread priorities of the thread 10, thread 20, and thread 30 that execute each are set to "100", "80", and "90", respectively.
【0140】また、図9に示すようにオブジェクト3が
制限時間の厳しいオブジェクトであり、その優先順位
は、「+30」である。また、他のオブジェクトの優先
順位は、「0」である。As shown in FIG. 9, the object 3 is an object with a strict time limit, and its priority is "+30". The priority of the other objects is “0”.
【0141】プログラム開始時には、スレッド10がオ
ブジェクト1を実効スレッド優先順位「100」で実行
しており、一方、スレッド20、30は待機状態にあ
る。At the start of the program, the thread 10 is executing the object 1 with the effective thread priority “100”, while the threads 20 and 30 are in a standby state.
【0142】オブジェクト1において、オブジェクト4
に対して「send」130を呼び出し、実行させると、ス
レッド30が実行可能状態になり、オブジェクト4に割
り当てられる。In the object 1, the object 4
When “send” 130 is called and executed, the thread 30 becomes executable and is assigned to the object 4.
【0143】同様にオブジェクト2に対して「send」1
40を呼び出し、実行させると、スレッド20が実行可
能状態になりオブジェクト2に割り当てられる。Similarly, “send” 1 for object 2
When the thread 40 is called and executed, the thread 20 becomes executable and is assigned to the object 2.
【0144】この時の実効スレッド優先順位は、前述の
通りスレッド20が「80」、スレッド30が「90」
である。At this time, the priority of the effective thread is “80” for the thread 20 and “90” for the thread 30 as described above.
It is.
【0145】スレッド10が、オブジェクト1の終了に
ともなって待機状態になると、スレッドディスパッチャ
304により、スレッド30が選択され、オブジェクト
4の実行を開始する。When the thread 10 enters the standby state with the end of the object 1, the thread 30 is selected by the thread dispatcher 304, and the execution of the object 4 is started.
【0146】オブジェクト4に、所定時間処理を中断す
る命令であるsleep命令160が存在すると、スレッド
30は待機状態となる。When a sleep instruction 160, which is an instruction to interrupt the processing for a predetermined time, exists in the object 4, the thread 30 enters a standby state.
【0147】その後、スレッドディスパッチャ304に
より、スレッド20が選択され、オブジェクト2の実行
を開始する。After that, the thread 20 is selected by the thread dispatcher 304, and the execution of the object 2 is started.
【0148】オブジェクト2では、オブジェクト3に対
するcall命令を実行するものとする。In the object 2, it is assumed that a call instruction for the object 3 is executed.
【0149】オブジェクト3は、オブジェクトの優先順
位が「+30」であることが、オブジェクト優先順位判
定部330により判定され、スレッド優先順位決定部3
02が、スレッド20の実効スレッド優先順位を「3
0」だけ上昇させた結果、スレッド20の優先順位は、
「110」に上昇する。The priority of the object 3 is determined to be “+30” by the object priority determining unit 330, and the thread priority determining unit 3 determines that the priority of the object is “+30”.
02 sets the effective thread priority of the thread 20 to “3”.
As a result, the priority of the thread 20 becomes
It rises to "110".
【0150】ここではオブジェクトの優先順位を加算す
る処理にしてあるが、減算等の他の演算でも良いことは
言うまでもない。Although the process of adding the priority order of the objects has been described here, it goes without saying that other operations such as subtraction may be performed.
【0151】オブジェクト4におけるsleep命令により
指定した時間が経過すると、スレッド30が実行可能状
態になる。しかし、スレッド20がオブジェクト3を実
行している間はスレッド20の実効スレッド優先順位が
高くなっているので、スレッド20からプロセッサの占
有権を移転させることはできない。When the time specified by the sleep instruction in the object 4 elapses, the thread 30 becomes executable. However, since the effective thread priority of the thread 20 is high while the thread 20 is executing the object 3, it is not possible to transfer the occupation right of the processor from the thread 20.
【0152】オブジェクト3の処理が終了すると、スレ
ッド20の実効スレッド優先順位が「80」へと戻る。When the processing of the object 3 is completed, the effective thread priority of the thread 20 returns to “80”.
【0153】ここで、スレッドディスパッチャ304
は、スレッドの切り替え処理を行い、スレッド30を実
行状態にする。Here, the thread dispatcher 304
Performs the thread switching process, and sets the thread 30 to the execution state.
【0154】上記実施例においては、図4に示すよう
に、単一プロセッサシステムにおけるスケジューリング
について述べたが、マルチプロセッサシステム、複数の
計算機をネットワークで結合して構成した分散処理シス
テム等においても、オブジェクトを並列実行する際に、
本発明にかかるスケジューリング装置の適用が可能であ
ることは言うまでもない。In the above embodiment, as shown in FIG. 4, scheduling in a single processor system has been described. However, in a multiprocessor system, a distributed processing system in which a plurality of computers are connected by a network, etc. When executing in parallel,
It goes without saying that the scheduling device according to the present invention can be applied.
【0155】また、オブジェクト間の通信関数にsend、
callの区別がない場合や、オブジェクト間の通信がメッ
セージ通信ではなく、関数呼び出しである場合において
も、同様に、本スケジューリング装置の適用が可能であ
る。Also, send,
Even when there is no distinction between calls or when the communication between objects is not a message communication but a function call, the present scheduling device can be applied similarly.
【0156】上記実施例で示したように、オブジェクト
群が制限時間の厳しくない処理であり、その結果、当該
オブジェクト群が、低い優先順位のスレッドで実行され
る場合でも、これに含まれる特定のオブジェクトが、中
断してはならない処理であれば、プログラマがオブジェ
クト優先順位記憶部330に格納される優先順位を予め
高く設定しておき、オブジェクト処理中の該処理の中断
を回避することができる。As shown in the above embodiment, the object group is a process whose time limit is not strict, and as a result, even if the object group is executed by a thread having a low priority, the specific group included in the thread is executed. If the object is a process that should not be interrupted, the programmer can set a higher priority in advance to be stored in the object priority storage unit 330 to avoid interruption of the process during object processing.
【0157】また、オブジェクトごとに優先順位を設定
することができるので、オブジェクトの性質に合わせ、
きめ細かな実行順序の制御が可能である。[0157] Also, since the priority can be set for each object,
It is possible to control the execution order in detail.
【0158】オブジェクトの優先順位が変動しない場合
には、オブジェクトの切り替えに際し、スレッドの切り
替えや、再スケジューリングが不要である。したがっ
て、従来のスレッド連続方法と同様に、オブジェクトの
切り替え処理は、高速に行える。When the priority of the object does not change, it is not necessary to switch the thread or reschedule when switching the object. Therefore, as in the conventional thread continuation method, the object switching process can be performed at high speed.
【0159】さらに、オブジェクトを構成する「手続
き」を記述する際、オブジェクトがどのような優先順位
のオブジェクト群に組み込まれるかを配慮してプログラ
ミングを行う必要もない。 また、ユーザのプログラム
中に優先順位を上昇させる命令自体を記述する必要がな
く、優先順位情報を持たせるだけでよい。このため、オ
ブジェクトの汎用性が高くなる。Further, when describing the "procedure" which constitutes an object, it is not necessary to perform programming in consideration of what priority order the object is incorporated into. In addition, there is no need to describe the instruction for raising the priority in the user's program, and it is only necessary to provide the priority information. Therefore, the versatility of the object is improved.
【0160】[0160]
【発明の効果】オブジェクトを呼び出し実行するスレッ
ドが、低い優先順位であっても、当該オブジェクトが中
断されてはならないような処理であれば、当該オブジェ
クトの優先順位を、予め高く設定しておくことにより、
オブジェクト処理中のスレッドの切替え処理を回避する
ことが可能になる。According to the present invention, if the thread that calls and executes an object has a low priority, if the processing is such that the object must not be interrupted, the priority of the object should be set high in advance. By
It is possible to avoid thread switching processing during object processing.
【図1】スレッドが並列オブジェクト指向言語により記
述されたプログラムを実行する様子を示す説明図であ
る。FIG. 1 is an explanatory diagram showing how a thread executes a program described in a parallel object-oriented language.
【図2】スレッドの優先順位と状態遷移の変化を示すタ
イムチャート図である。FIG. 2 is a time chart showing changes in thread priorities and state transitions.
【図3】スケジューリング装置の実施例の構成図であ
る。FIG. 3 is a configuration diagram of an embodiment of a scheduling device.
【図4】スケジューリング装置を計算機上に実現した構
成図の一例である。FIG. 4 is an example of a configuration diagram in which a scheduling device is realized on a computer.
【図5】スレッドの状態遷移図である。FIG. 5 is a state transition diagram of a thread.
【図6】スレッド情報記憶部の構成図である。FIG. 6 is a configuration diagram of a thread information storage unit.
【図7】優先順位記憶部の構成図である。FIG. 7 is a configuration diagram of a priority order storage unit.
【図8】オブジェクトアドレス情報記憶部の構成図であ
る。FIG. 8 is a configuration diagram of an object address information storage unit.
【図9】オブジェクト優先順位記憶部の構成図である。FIG. 9 is a configuration diagram of an object priority storage unit.
【図10】本発明にかかる実施例の動作を示すフローチ
ャートである。FIG. 10 is a flowchart showing the operation of the embodiment according to the present invention.
【図11】本発明にかかる実施例の動作を示すフローチ
ャートである。FIG. 11 is a flowchart showing the operation of the embodiment according to the present invention.
【図12】本発明にかかる実施例の動作を示すフローチ
ャートである。FIG. 12 is a flowchart showing the operation of the embodiment according to the present invention.
【図13】本発明にかかる実施例の動作を示すフローチ
ャートである。FIG. 13 is a flowchart showing the operation of the embodiment according to the present invention.
【図14】本発明にかかる実施例の動作を示すフローチ
ャートである。FIG. 14 is a flowchart showing the operation of the embodiment according to the present invention.
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…優先順位1 object, 2 object, 3 object, 4 object, 10 thread, 20 thread, 30 thread, 100 program, 110 object group, 120 object group, 130 sen
d, 140 ... send, 150 ... call, 16 ... sleep instruction, 1
70: wakeup instruction, 211: thread state transition and priority, 212: thread state transition and priority, 221
... state transitions and priorities of threads, 222 ... state transitions and priorities of threads, 223 ... state transitions and priorities of threads, 224 ... state transitions and priorities of threads, 22
5 Thread state transitions and priorities 226 Thread state transitions and priorities 227 Thread state transitions and priorities 231 Thread state transitions and priorities 2
32: thread state transitions and priorities; 233: thread state transitions and priorities; 234: thread state transitions and priorities; 235: thread state transitions and priorities;
236: thread state transition and priority, 237: thread state transition and priority, 300: thread management unit,
Reference numeral 301: thread state operation management unit, 302: thread priority determination unit, 303: priority storage unit, 304: thread dispatcher, 305: thread information storage unit, 3
10 Object Dispatcher, 320 Object Address Information Storage Unit, 330 Object Priority Determination Unit, 340 Object Priority Storage Unit, 40
0: computer, 410: processor, 420: disk,
430: memory, 440: display, 450: mouse, 460: keyboard, 510: execution state, 520:
Executable state, 530 waiting state, 601 thread name, 602 register, 603 register, 604 priority, 605 thread state, 701 thread name,
702: priority, 801: object name, 802 ...
Address, 803 pointer, 901 object name, 902 priority
───────────────────────────────────────────────────── フロントページの続き (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 ──────────────────────────────────────────────────続 き Continued on the front page (72) Inventor Shinichiro Yamaguchi 7-1-1, Omikacho, Hitachi City, Ibaraki Prefecture Within Hitachi Research Laboratory, Hitachi, Ltd. (72) Inventor Tomoaki Nakamura 5-chome, Omikacho, Hitachi City, Ibaraki Prefecture No. 1 Inside the Omika Plant, Hitachi, Ltd. (56) References JP-A-4-160639 (JP, A) JP-A-4-350728 (JP, A) JP-A-1-205344 (JP, A) 4-100156 (JP, A) JP-A-64-26234 (JP, A) Yokohiko Yokote, "Object-Oriented Distributed Operating System", Computer Software, Japan Society for Software Science, May 15, 1992, ninth Vol. 3, No. 3, p. 206-207 (58) Field surveyed (Int. Cl. 7 , DB name) G06F 9/46, 9/44
Claims (5)
る複数のオブジェクト群を、複数の仮想プロセッサが、
並行または並列処理する計算機システムにおける、仮想
プロセッサのスケジューリングを行うスケジューリング
システムであって、 前記各オブジェクト群を構成する各オブジェクトに対し
て、予め定めた優先順位を記憶するオブジェクト優先順
位記憶手段と、 前記オブジェクト優先順位記憶手段の内容を参照して、
仮想プロセッサが次に実行すべきオブジェクトの優先順
位を判定するオブジェクト優先順位判定手段と、 前記仮想プロセッサに予め定められている仮想プロセッ
サ優先順位と、前記オブジェクト優先順位判定手段によ
り得られたオブジェクトのオブジェクト優先順位とか
ら、予め定められた関係にもとづいて、前記仮想プロセ
ッサが前記オブジェクトを実行する直前に実効優先順位
を決定する手段と、該決定された実効優先順位を記憶す
る実効優先順位記憶手段と、 前記実効優先順位記憶手段に記憶された実効優先順位を
参照し、予め定められた規則にしたがって、次に実行す
る仮想プロセッサを決定する仮想プロセッサ管理手段と
を備えることを特徴とするスケジューリングシステム。A plurality of object groups constituting a parallel object-oriented program are stored in a plurality of virtual processors by a plurality of virtual processors.
A scheduling system for scheduling a virtual processor in a computer system that performs parallel or parallel processing, comprising: an object priority storage unit configured to store a predetermined priority for each object configuring each of the object groups; Referring to the contents of the object priority storage means,
An object priority determining means for determining the priority of an object to be executed next by the virtual processor; and a virtual processor predetermined for the virtual processor.
A service priority, from an object priority obtained object by said object priority determining means, based on the predetermined relationship, means for determining the effective priority immediately before the virtual processor to execute said object When the virtual processor refers the effective priority storage means for storing the effective priority is the determined, effective priority stored in the effective priority storage means, according to a predetermined rule, to be executed next And a virtual processor management unit for determining the scheduling.
ログラムを構成する複数のオブジェクト群を、複数の仮
想プロセッサが、並行または並列処理する計算機システ
ムであって、受信側オブジェクトが有する関数を、送信
側オブジェクトが割り当てられた仮想プロセッサが呼び
出し実行せしめ、受信側オブジェクトが実行結果を返す
まで、送信側オブジェクトの実行を中止するオブジェク
ト間同期通信手段を具備し、仮想プロセッサのスケジュ
ーリングを行うスケジューリングシステムにおいて、 前記各オブジェクト群を構成する各オブジェクトに対し
て、予め定めた優先順位を記憶するオブジェクト優先順
位記憶手段と、 前記オブジェクト優先順位記憶手段の内容を参照して、
仮想プロセッサが次に実行すべきオブジェクトの優先順
位を判定するオブジェクト優先順位判定手段と、 前記仮想プロセッサに予め定められている仮想プロセッ
サ優先順位と、前記オブジェクト優先順位判定手段によ
り得られたオブジェクトのオブジェクト優先順位とか
ら、予め定められた関係にもとづいて、前記仮想プロセ
ッサが前記オブジェクトを実行する直前に実効優先順位
を決定する手段と、該決定された実効優先順位を記憶す
る実効優先順位記憶手段と、 前記実効優先順位記憶手段に記憶された実効優先順位を
参照し、予め定められた規則にしたがって、次に実行す
る仮想プロセッサを決定する仮想プロセッサ管理手段と
を備えることを特徴とするスケジューリングシステム。2. A computer system in which a plurality of virtual processors execute parallel or parallel processing of a plurality of objects constituting a program created in a parallel object-oriented language, wherein a function of a receiving side object is transmitted to a transmitting side. A scheduling system that performs inter-object synchronous communication means for causing the virtual processor to which the object is assigned to execute the call and suspending the execution of the transmitting object until the receiving object returns the execution result; For each object constituting each object group, an object priority storage unit that stores a predetermined priority, and with reference to the contents of the object priority storage unit,
An object priority determining means for determining the priority of an object to be executed next by the virtual processor; and a virtual processor predetermined for the virtual processor.
A service priority, from an object priority obtained object by said object priority determining means, based on the predetermined relationship, means for determining the effective priority immediately before the virtual processor to execute said object When the virtual processor refers the effective priority storage means for storing the effective priority is the determined, effective priority stored in the effective priority storage means, according to a predetermined rule, to be executed next And a virtual processor management unit for determining the scheduling.
られた関係は、前記仮想プロセッサに予め定められてい
る仮想プロセッサ優先順位と前記オブジェクト優先順位
判定手段により得られたオブジェクトのオブジェクト優
先順位を加算し、前記実効優先順位を決定するものであ
ることを特徴とするスケジューリングシステム。3. An apparatus according to claim 1 or 2, wherein the predetermined relationship, object Yu object obtained by the virtual processor priority predetermined for the virtual processor the object priority determining means <br /> A scheduling system, wherein priorities are added to determine the effective priority.
則は、実効優先順位の値の最も大きな仮想プロセッサ
を、次に実行する仮想プロセッサとすることを特徴とす
るスケジューリングシステム。4. The scheduling system according to claim 3, wherein the predetermined rule is such that a virtual processor having the highest effective priority value is a virtual processor to be executed next.
て、前記仮想プロセッサは、実プロセッサのレジスタの
値を格納する手段とスタックとを少なくとも備えて構成
されるスレッドであることを特徴とするスケジューリン
グシステム。5. The virtual processor according to claim 1, wherein the virtual processor is a thread including at least means for storing a register value of a real processor and a stack. A scheduling system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10841793A JP3349547B2 (en) | 1993-05-10 | 1993-05-10 | Scheduling system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10841793A JP3349547B2 (en) | 1993-05-10 | 1993-05-10 | Scheduling system |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06324888A JPH06324888A (en) | 1994-11-25 |
JP3349547B2 true JP3349547B2 (en) | 2002-11-25 |
Family
ID=14484240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10841793A Expired - Fee Related JP3349547B2 (en) | 1993-05-10 | 1993-05-10 | Scheduling system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3349547B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE9404294D0 (en) * | 1994-12-09 | 1994-12-09 | Ellemtel Utvecklings Ab | manner and device in telecommunications |
JP4072271B2 (en) * | 1999-02-19 | 2008-04-09 | 株式会社日立製作所 | A computer running multiple operating systems |
JP5109250B2 (en) * | 2005-11-08 | 2012-12-26 | 横河電機株式会社 | Distributed system |
JP5033343B2 (en) * | 2006-03-28 | 2012-09-26 | 株式会社野村総合研究所 | Job management apparatus and job management method |
-
1993
- 1993-05-10 JP JP10841793A patent/JP3349547B2/en not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
横手靖彦,"オブジェクト指向分散オペレーティングシステム",コンピュータソフトウェア,日本ソフトウェア科学会,1992年5月15日,第9巻,第3号,p.206−207 |
Also Published As
Publication number | Publication date |
---|---|
JPH06324888A (en) | 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 (en) | Computer system | |
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 (en) | A computer running multiple operating systems | |
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 (en) | Data processing | |
Molano et al. | Real-time filesystems. Guaranteeing timing constraints for disk accesses in RT-Mach | |
US5029077A (en) | System and method for controlling physical resources allocated to a virtual terminal | |
EP0301221A2 (en) | An improved subsystem input service for dynamically scheduling work for a computer system | |
JPH08212086A (en) | System and method for operating of office machine | |
JP5909566B2 (en) | Computer system and control method thereof | |
JPH08502841A (en) | Distributed application processing network | |
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 | |
CN111045786A (en) | Container creation system and method based on mirror image layering technology in cloud environment | |
JP3349547B2 (en) | Scheduling system | |
CN108958903A (en) | Embedded multi-core central processing unit method for scheduling task and device | |
JPH07129518A (en) | Computer system | |
KR100651722B1 (en) | Method of configuring Linux kernel for supporting real time performance and test method for supporting real time performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |