JP4048638B2 - Scheduling apparatus and method and recording medium - Google Patents

Scheduling apparatus and method and recording medium Download PDF

Info

Publication number
JP4048638B2
JP4048638B2 JP6895899A JP6895899A JP4048638B2 JP 4048638 B2 JP4048638 B2 JP 4048638B2 JP 6895899 A JP6895899 A JP 6895899A JP 6895899 A JP6895899 A JP 6895899A JP 4048638 B2 JP4048638 B2 JP 4048638B2
Authority
JP
Grant status
Grant
Patent type
Prior art keywords
thread
time slot
priority
slot data
time
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.)
Active
Application number
JP6895899A
Other languages
Japanese (ja)
Other versions
JP2000020323A (en )
Inventor
誠二 村田
Original Assignee
ソニー株式会社
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
Grant date

Links

Images

Description

【0001】 [0001]
【発明の属する技術分野】 BACKGROUND OF THE INVENTION
本発明は、複数の実行主体を時分割処理することが可能なオペレーティングシステムにおけるスケジューリング装置及びスケジューリング方法、並びに、複数の実行主体を時分割処理することが可能なオペレーティングシステムが記録された記録媒体に関する。 The present invention, scheduling apparatus and a scheduling method in an operating system capable of time-sharing processing multiple execution entities, and to a recording medium by the operating system that is capable of time-sharing processing a plurality of execution subject is recorded .
【0002】 [0002]
【従来の技術】 BACKGROUND OF THE INVENTION
オペレーティングシステム、並びにオペレーティングシステム上で動作するアプリケーションプログラム等における実行実体を、時分割にて並行して動作させることが可能なシステムにおいて、実行主体は、実行主体毎に設定された優先度に基づいてスケジューリングされる。 Operating system, as well as the execution entity in the application program that operates on the operating system, in a system capable of operating in parallel in time division, the execution subject, based on the priority set for each execution subject It is scheduled. 具体的には、通常、各実行主体は、優先度の高い実行主体ほど早く実行されるように、優先度に基づいて待ち行列に入れられ、待ち行列に入っている実行主体が、当該待ち行列の順番に従ってCPU(Central Processing Unit)によって順次実行される。 Specifically, usually, the execution subject is to be executed earlier higher execution subject priority placed into a wait based on the priority matrix, the execution subject queued, the queue It is sequentially executed by a CPU (Central Processing Unit) according to the order. ここで、実行主体は、プロセス、タスク、スレッドなどと一般に呼ばれるものであり、本明細書では以後、代表してスレッドと称する。 Here, the execution subject is the process, which is commonly referred to tasks, threads, etc. and, herein after is referred to as a thread on behalf. また、スレッドが実行主体であるシステムのことをマルチスレッドシステムと称する。 Also referred to as a multi-threaded system to a system thread is performed mainly.
【0003】 [0003]
すなわち、マルチスレッドシステムにおいて、全スレッドは、基本的には各スレッドの生成時等に設定された優先度に基づいて、それらの順序関係が定義される。 That is, in a multi-threaded system, all threads are basically based on the priority set during generation of each thread, their order relationship is defined. なお、この順序関係は必ずしも実行順序の関係だけを示すものとは限らず、例えば、いわゆるタイムスライススケジューリングでは、ある時間内に各スレッドに割り当てられるCPUの処理時間の割合として、優先度に基づく順序関係が定義される。 The order should be noted that the order relationship is not always necessarily indicate only relationship execution order, for example, in the so-called time slice scheduling, as a percentage of the processing time of the CPU to be allocated to each thread within a certain time, based on the priority relationship is defined. また、場合によっては、システムの時間経過や各スレッドの処理時間等に応じて動的に、各スレッドの優先度に重み付けをすることもある。 In some cases, dynamically depending on the time and each thread processing time of the system, also to a weighting on the priority of each thread.
【0004】 [0004]
ところで、優先度に基づくスケジューリングのアルゴリズムでは、共有資源に対するアクセスの排他制御において、優先度逆転と呼ばれる問題が生じる場合がある。 However, the algorithm of the scheduling based on priority, in the exclusive control of access to shared resources, which may problem called priority inversion may occur. 以下、この優先度逆転について、図26を参照して説明する。 Hereinafter, the priority inversion, is described with reference to FIG. 26.
【0005】 [0005]
図26は、優先度逆転について、その典型的な状況を示す図であり、優先度の高いスレッドAがクリティカルセクションCS1に入ろうとした場合に起こりうる状況を示している。 Figure 26, for priority inversion, its is a diagram showing a typical situation, it shows a situation where the high priority thread A can occur when attempting to enter a critical section CS1. なお、クリティカルセクションCS1は、スレッドAとスレッドCが共通に使用する資源を含んでいるものとする。 Note that critical section CS1 is assumed to thread A and thread C contains the resources used in common.
【0006】 [0006]
図26に示すように、先ず、スレッドCがクリティカルセクションCS1に入った後に、より高い優先度を持つスレッドAが動作可能状態になったとする。 As shown in FIG. 26, first, the thread C is after entering the critical section CS1, the thread A with higher priority becomes operable. すると、スレッドCの実行が中断され、スレッドAの実行が開始される。 Then, execution of the thread C is interrupted, execution of thread A is started. しかし、このとき既にスレッドCがクリティカルセクションCS1に入っているため、スレッドCがクリティカルセクションCS1を抜けるまで、スレッドAは処理を待たねばならない。 However, this time already thread C is because it is in a critical section CS1, thread C until exit the critical section CS1, thread A must wait for processing. そこで、スレッドAは待ち状態となり、再びスレッドCの実行が開始される。 Therefore, the thread A is in a state waiting and starts execution of the thread C again.
【0007】 [0007]
そして、このような状況のときに、スレッドCがクリティカルセクションAを抜ける前に、スレッドAとスレッドCのそれぞれの優先度の中間の優先度を持つスレッドBが動作可能状態となった場合に、優先度逆転が生じる。 Then, when such a situation, before the thread C leaves the critical section A, when the thread B becomes operable with respective priority intermediate priority thread A and thread C, priority inversion occurs. すなわち、より優先度の高いスレッドAが待ち状態であるにも関わらずに、より優先度の低いスレッドBの実行が開始されるという状況が生じる。 That is, in spite of the wait state is higher priority thread A, situation occurs that more priority execution of low thread B is started. 優先度が中間のスレッドBが動作可能状態になると、優先度に従って、スレッドCの実行が中断され、スレッドBの実行が開始される。 When priority is middle thread B is operable, according to the priority execution thread C is interrupted, execution of thread B is started. このとき、スレッドAは中断したままである。 In this case, the thread A remains suspended. しかも、スレッドAとスレッドBの関係は優先度以外には定義されていないので、このような状況になると、スレッドAは、自分がどの程度の時間、処理が中断されるかを見積もることも不可能となる。 Moreover, since the relationship between the thread A and thread B it is not defined other than priority, In such a situation, the thread A is to estimate how his degree of time, the process is interrupted even non It can become.
【0008】 [0008]
このように、優先度に基づくスケジューリングのアルゴリズムでは、より高い優先度のスレッドが、より低い優先度のスレッドの実行を待つような優先度逆転と呼ばれる問題が生じる可能性がある。 Thus, the algorithm of the scheduling based on priority, a higher priority thread, a problem may arise called priority inversion that wait for execution of the lower priority thread. しかも、上述したように、優先度逆転が生じると、より高い優先度のスレッドの中断時間を予測することが不可能となる。 Moreover, as described above, the priority inversion occurs, it becomes impossible to predict the interruption time of the higher priority thread. このように、高い優先度のスレッドの中断時間が予測不可能に陥ってしまうのは、特に実時間システム(各処理がある一定時間内に終わらなければシステムが成り立たないようなシステム)において、致命的な問題である。 Thus, the interruption time of the higher priority thread will fall into unpredictable, especially in real-time systems (systems like unless the system does not hold completed within a certain time each process is), fatal is a problem.
【0009】 [0009]
そこで、従来、このような優先度逆転の問題を回避する必要がある場合には、優先度継承機構を導入するようにしている。 Therefore, conventionally, when it is necessary to avoid such a problem of priority inversion is designed so as to introduce a priority inheritance mechanisms. (Lui Sha,Ragunathan Rajkumar,and John P.Lehoczky. Priority Inheritance Protocols: An Approach to Real-Time Synchronization. Technical report, Computer Science Department, Carnegie Mellon University. November 1987. Tech.Report CMU-CS-87-181.) 優先度継承機構とは、高い優先度を持つスレッドが、低い優先度を持つスレッドのために待ち状態になった場合に、高い優先度を持つスレッドの優先度を、低い優先度を持つスレッドに継承する機構である。 (Lui Sha, Ragunathan Rajkumar, and John P.Lehoczky Priority Inheritance Protocols:... An Approach to Real-Time Synchronization Technical report, Computer Science Department, Carnegie Mellon University November 1987. Tech.Report CMU-CS-87-181. ) thread priority inheritance mechanism, a thread with a higher priority, with the case where the state waiting for a thread with a lower priority, the priority of the thread with a higher priority, the low priority it is a mechanism that inheritance to.
【0010】 [0010]
図26と同様な状況において、優先度継承機構を導入した場合のシナリオを図27に示す。 In a similar situation as Fig. 26 shows a scenario in the case of introducing priority inheritance mechanism in FIG. 優先度継承機構を導入した場合には、スレッドAが待ち状態となって再びスレッドCの実行が開始されるときに、スレッドCの優先度が、スレッドAと同じレベルの優先度に設定される。 In case of introducing priority inheritance mechanism, when the thread A is executed again thread C in a state waiting is started, the priority of the thread C is set at the same level priority thread A . この結果、スレッドCがクリティカルセクションCS1から抜けるまでは、スレッドAより優先度が低いスレッド(例えば図中のスレッドB)によって、スレッドCの実行が中断されてしまうようなことはなくなる。 As a result, the thread C is up to exit from the critical section CS1, the lower priority than the thread A thread (e.g. thread B in the figure), execution of the thread C will not be that would be interrupted.
【0011】 [0011]
このように優先度継承機構を導入した場合、スレッドCは、クリティカルセクションCS1を抜けるまで、スレッドAの優先度でスケジューリングされる。 If this was introduced priority inheritance mechanism, thread C until exits the critical section CS1, are scheduled at priority thread A. したがって、スレッドAがクリティカルセクションCS1にアクセスするために待たされる時間は、スレッドCがクリティカルセクションCS1を必要とする時間以内に制限されることとなり、優先度の高いスレッドであるスレッドAの中断時間の予測が可能となる。 Accordingly, the time which the thread A is waiting to access the critical section CS1 becomes a the thread C is limited within the time that requires critical section CS1, the interruption time of the thread A is a high priority thread prediction is possible.
【0012】 [0012]
ところで、以上のような優先度継承機構を実際に実現するには、具体的には下記のような処理が行われる。 However, to actually implement the priority inheritance mechanism as described above, the following process is performed in particular. なお、ここでは、上述したように、優先度が低いスレッドCがクリティカルセクションCS1を抜けるまで、優先度が高いスレッドAが処理を待たねばならないような場合を例に挙げる。 Here, as described above, it is given a low priority thread C until leaves the critical section CS1, where higher priority thread A that must wait for processing as an example.
【0013】 [0013]
先ず、スレッドCがクリティカルセクションCS1を抜けるまでスレッドAが処理を待たねばならないと判断されると、スレッドAの状態が待ち状態とされ、当該スレッドAが待ち行列から取り除かれる。 First, the thread C is the thread A is determined not to wait the processing until leaves the critical section CS1, is a state waiting state of the thread A, the thread A is removed from the queue. 次に、スレッドCの優先度が一時的にスレッドAの優先度に変更され、変更された優先度に基づいて、スレッドCが待ち行列に入れ直される。 Then, the priority of the thread C is changed to the priority of the temporarily threads A, based on the changed priority is cycled to the thread C queue. そして、待ち行列に入っているスレッドはCPUによって順次実行されていき、スレッドCが選択された時点で当該スレッドCが実行される。 The threads are in the queue will be executed sequentially by a CPU, the thread C is performed when the thread C is selected. なお、スレッドCの実行中に、スレッドCに割り当てられていた一定の処理時間を使い切った場合、当該スレッドCは、変更された優先度(すなわちスレッドAの優先度)に基づいて再び待ち行列に入れられる。 Incidentally, during the execution of the thread C, when used up a certain processing time assigned to the thread C, the thread C is again the queue based on the changed priority (i.e. priority thread A) It is placed.
【0014】 [0014]
その後、スレッドAの待ち事象が解決した時点(すなわち、スレッドCがクリティカルセクションCS1を抜けた時点)で、スレッドCの優先度が元に戻され、元に戻された優先度に基づいて、スレッドCが待ち行列に入れ直されるとともに、スレッドAの状態が実行可能状態とされ、当該スレッドAが待ち行列に入れられる。 Thereafter, when the wait event thread A is resolved (i.e., the thread C has passed through the critical section CS1 point), the priority of the thread C is returned to the original, based on the priority undone, thread together are cycled in C queue, the state of the thread a is an executable state, put into the thread a queue.
【0015】 [0015]
以上の処理により、図27に示したような優先度継承機構が実現され、スレッドCがクリティカルセクションCS1から抜けるまでは、スレッドAより優先度が低いスレッド(例えば図中のスレッドB)によって、スレッドCの実行が中断されてしまうようなことはなくなる。 By the above processing, such priority inheritance mechanism as shown in FIG. 27 is realized, the thread C until exit from the critical section CS1, the lower priority than the thread A thread (e.g. thread B in the figure), the thread C execution is not possible, such as would be interrupted.
【0016】 [0016]
【発明が解決しようとする課題】 [Problems that the Invention is to Solve
ところで、従来のスケジューリング機構では、各スレッドが持つその時点の優先度に応じて、スレッドの待ち行列に入る位置を決定している。 Incidentally, in the conventional scheduling mechanism, in accordance with the priority at that time with each thread, it determines the position to enter the thread queue. そして、上述のような優先度継承機構では、優先度が動的に頻繁に変更されるため、待ち行列の変更を頻繁に行う必要が生じる。 Then, the priority inheritance mechanism, as described above, since priority is dynamically changed frequently, frequent need arises to change the queue. そのため、上述のような優先度継承機構を導入すると、優先度の動的な変更に伴う待ち行列のリスケジューリングによるオーバーヘッドが大幅に増加してしまう。 Therefore, the introduction of priority inheritance mechanism, as described above, the overhead due to rescheduling queue due to dynamic changes of the priority is increased considerably.
【0017】 [0017]
すなわち、上述のような優先度継承機構は、優先度逆転の問題を回避するためには有効であるが、当該優先度継承機構を導入すると、優先度が頻繁に動的に変更されるため、スケジューリングによるオーバーヘッドが大幅に増加し、システム全体の性能が低下してしまうという問題が生じる。 That is, since the priority inheritance mechanism as described above is effective to avoid the problem of priority inversion, the introduction of the priority inheritance mechanism, priority is often dynamically changed, scheduling overhead increases significantly due to, overall system performance is caused deteriorates.
【0018】 [0018]
また、優先度がスレッドの単なる実行順序を示すのではなくCPUの処理時間の割合を示すような場合、すなわち時分割スケジューリングを採用しているような場合には、待ち状態の原因となっているスレッド(上記の例ではスレッドC)の優先度を、待ち状態にあるスレッド(上記の例ではスレッドA)と同じレベルの優先度に設定するだけでは、これらのスレッドに割り当てられている処理時間を有効に利用することができない。 Further, when the priority is shown the percentage of CPU processing time rather than indicating the mere execution sequence of threads, when namely as adopted division scheduling time, causing the wait state the priority of the thread (C in the example above), only (in the above example thread a) thread in the wait state is set to the priority of the same level, the processing time allocated to these threads It can not be effectively utilized.
【0019】 [0019]
すなわち、例えば、上記の例のように、スレッドCの優先度を、スレッドAと同じレベルの優先度に設定した場合、スレッドCはスレッドAの優先度にて実行されるため、スレッドAに割り当てられていたCPUの処理時間は使用されるが、スレッドCに割り当てられていたCPUの処理時間が使用されなくなる。 That assignment, for example, as in the above example, the priority of the thread C, when set to the same level priority thread A, since the thread C is executed by the priority of the thread A, the thread A Although the processing time of the obtained have a CPU is used, the processing time of the CPU which has been allocated to the thread C is no longer used. そして、このような状態を回避して、CPUの処理時間を有効に使用するためには、待ち状態にあるスレッドAに割り当てられていた処理時間と、待ち状態の原因となっているスレッドCに割り当てられていた処理時間との合計を求めて、その処理時間をスレッドCに改めて割り当てるようにする必要がある。 Then, to avoid such a situation, in order to effectively use the processing time of the CPU, and processing time has been allocated to the thread A in the waiting state, the thread C that is causing the wait state seeking sum of the processing time has been allocated, it is necessary to assign again the processing time to threads C. 換言すれば、時分割スケジューリングを採用しているような場合には、スレッドAに割り当てられていた処理時間と、スレッドCに割り当てられていた処理時間との合計の処理時間が与えられる優先度を求めて、当該優先度をスレッドCに割り当てるようにすべきである。 In other words, when the case that employs the division scheduling and processing time has been allocated to the thread A, the total priority processing time is given to the processing time assigned to the thread C seeking should be to assign the priority to the thread C.
【0020】 [0020]
しかしながら、このようにスレッドに割り当てられる処理時間を計算し直して、スケジューリングし直すようにすると、当該処理に伴うオーバーヘッドが大幅に増大してしまう。 However, thus recalculates processing time allocated to the thread, when such re-scheduling overhead of the process resulting in significantly increased. そのため、従来の優先度継承機構では、各スレッドに割り当てられたCPUの処理時間を有効に利用することができなかった。 Therefore, in the conventional priority inheritance mechanisms, it could not be effectively utilized the processing time of the CPU assigned to each thread.
【0021】 [0021]
本発明は、以上のような従来の実情に鑑みて提案されたものであり、優先度逆転問題を回避することが可能なスケジューリング装置及び方法を提供することを目的としている。 The present invention has been proposed in view of conventional actual circumstances as described above, and its object is to provide a scheduling apparatus and method capable of avoiding the priority inversion problem. 本発明にあるようなスケジューリング装置及び方法を用いることにより、オーバヘッドの増加の原因となる待ち行列の変更が少なくて済み、しかも、割り当てられたCPUの処理時間を有効に利用することが可能になる。 By using the scheduling apparatus and method as in the present invention, only a small change in the queue which causes increased overhead, moreover, it is possible to effectively use the processing time of the assigned CPU . また、本発明は、複数の実行主体を時分割処理することが可能なオペレーティングシステムのデータ処理プログラムが記録された記録媒体を提供することも目的としている。 The present invention is also intended to provide a recording medium on which data processing program is recorded capable operating system that time-sharing processing multiple execution entities.
【0022】 [0022]
【課題を解決するための手段】 In order to solve the problems]
本発明に係るスケジューリング装置は、複数の実行主体を時分割処理することが可能なオペレーティングシステムのスケジューリング装置であり、各実行主体毎に、スケジューリングの対象として割り当てられたタイムスロットデータを記憶する手段と、タイムスロットデータに処理時間を割り当て、時分割スケジューリングを行うスケジューラと、処理時間が割り当てられたタイムスロットデータに対応する実行主体を実行する手段と、優先度の高い第一の実行主体が、優先度の低い第二の実行主体の処理を待つ必要があるときには、当該第一の実行主体に対応するタイムスロットデータを当該第二の実行主体に割り当てる手段と、当該第二の実行主体の処理が終了したときに、当該第一の実行主体から割り当てられたタイムスロットデー Scheduling apparatus according to the present invention is a scheduling device operating system that is capable of time-sharing processing multiple execution entities, for each execution subject, means for storing time slot data assigned as a target of the scheduling process assigns the processing time in the time slot data, and a scheduler for performing time division scheduling, and means for executing an execution entity corresponding to the time slot data processing time is allocated, a high first execution subject of priority, priority when it is necessary to wait for the processing of low degrees second execution entity, means for assigning a time slot data corresponding to the first execution subject to the second execution entity, the processing of the second execution subject when finished, the time slot data assigned from the first execution entity を、当該第一の実行主体に再度割り当てる手段とを具備することを特徴とする。 And characterized by comprising a means for assigning again to the first execution subject.
【0023】 [0023]
以上のような本発明に係るスケジューリング装置では、実行主体から独立したタイムスロットデータをスケジューリングの対象とすることにより、優先度の高い実行主体が、優先度の低い実行主体の処理を待つ必要のあるときには、タイムスロットデータを受け渡すという低コストな処理によって優先度継承を行うことができる。 The scheduling apparatus according to the present invention as described above, by an independent time slot data from the execution entity and a target of the scheduling process, high priority execution subject, need to wait for the processing of low priority execution entity sometimes, it is possible to perform priority inheritance by low-cost processing of pass time slot data.
【0026】 [0026]
また、本発明に係るスケジューリング方法は、複数の実行主体を時分割処理することが可能なオペレーティングシステムのスケジューリング方法であり、各実行主体毎に、スケジューリングの対象として割り当てられたタイムスロットデータに処理時間を割り当て、時分割スケジューリングを行うステップと、処理時間が割り当てられたタイムスロットデータに対応する実行主体を実行するステップと、優先度の高い第一の実行主体が、優先度の低い第二の実行主体の処理を待つ必要があるときには、当該第一の実行主体に対応するタイムスロットデータを当該第二の実行主体に割り当てるステップと、当該第二の実行主体の処理が終了したときに、当該第一の実行主体から割り当てられたタイムスロットデータを、当該第一の実行主体に再 Further, the scheduling method according to the present invention is a method of scheduling operating system capable of time-sharing processing multiple execution entities, the processing time for each execution subject, the time slot data assigned as a target of the scheduling process allocation, and performing a division scheduling time, and performing the execution subject corresponding to the time slot data processing time is allocated, a high first execution subject of priority, low priority second execution of when it is necessary to wait for the processing of the entity, when allocating the time slot data corresponding to the first execution subject to the second execution entity, the processing of the second processing entities has been completed, the first time slot data allocated from one execution subject again to the first execution entity 割り当てるステップとを具備することを特徴とする。 Characterized by comprising a step of assigning.
【0027】 [0027]
以上のような本発明に係るスケジューリング方法では、実行主体から独立したタイムスロットデータをスケジューリングの対象とすることにより、優先度の高い実行主体が、優先度の低い実行主体の処理を待つ必要のあるときには、タイムスロットデータを受け渡すという低コストな処理によって優先度継承を行うことができる。 In the scheduling method according to the present invention as described above, by an independent time slot data from the execution entity and a target of the scheduling process, high priority execution subject, need to wait for the processing of low priority execution entity sometimes, it is possible to perform priority inheritance by low-cost processing of pass time slot data.
【0030】 [0030]
また、本発明に係る記録媒体は、複数の実行主体を時分割処理することが可能なオペレーティングシステムのデータ処理プログラムが記録された記録媒体であって、各実行主体毎に、スケジューリングの対象として割り当てられたタイムスロットデータに処理時間を割り当て、時分割スケジューリングを行うステップと、処理時間が割り当てられたタイムスロットデータに対応する実行主体を実行するステップと、優先度の高い第一の実行主体が、優先度の低い第二の実行主体の処理を待つ必要があるときには、当該第一の実行主体に対応するタイムスロットデータを当該第二の実行主体に割り当てるステップと、当該第二の実行主体の処理が終了したときに、当該第一の実行主体から割り当てられたタイムスロットデータを、当該第一の実 The recording medium according to the present invention is allocated to a recording medium on which the data processing program is recorded capable operating system that time-sharing processing multiple execution entities, for each execution subject, as a target of the scheduling process assign the processing time was the time slot data, when performing a division scheduling and executing the execution subject corresponding to the time slot data processing time is allocated, a higher priority first execution entity, when it is necessary to wait for the processing of low priority second execution entity, assigning a time slot data corresponding to the first execution subject to the second execution entity, the processing of the second processing entities when There ended, the time slot data assigned from the first execution entity, said first real 主体に再度割り当てるステップとをコンピュータに実行させるためのデータ処理プログラムが記録されてなる Data processing program for executing a step of assigning again mainly in the computer is recorded.
【0032】 [0032]
【発明の実施の形態】 DETAILED DESCRIPTION OF THE INVENTION
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。 Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
【0033】 [0033]
本発明では、複数の実行主体を時分割処理することが可能なオペレーティングシステムにおいて、各スレッドに対応するようにタイムスロットを割り当てて、各スレッドに割り当てられたタイムスロットデータを単位としてスケジューリングを行う。 In the present invention, in a possible operating system that time-sharing processing multiple execution entities, by assigning time slots to correspond to each thread performs scheduling time slots data allocated to each thread as a unit. すなわち、本発明では、スレッド自体をスケジューリングの対象とするのではなく、各スレッドにタイムスロットデータを割り当てて、それらのタイムスロットデータをスケジューリングの対象とする。 That is, in the present invention, instead of the thread itself and a target of the scheduling process, assign the time slot data for each thread, to their time slot data and a target of the scheduling process. そして、タイムスロットデータに処理時間が割り当てられたら、当該タイムスロットデータに対応したスレッドを実行するようにする。 Then, when the processing time is allocated to the time slot data, so as to perform a thread corresponding to the time slot data.
【0034】 [0034]
ここで、タイムスロットデータとは、各スレッドに割り当てられている優先度を間接的に表現したものである。 Here, the time slot data, in which the priority assigned to each thread indirectly expressed. 各タイムスロットデータは、当該タイムスロットデータにCPUの処理時間が与えられたときに実行すべきスレッドへのリンク情報を保持する。 Each time slot data holds link information to a thread to be executed when the processing time of the CPU to the time slot data is given. そして、オペレーティングシステムは、スレッドを単位としてスケジューリングを行うのではなく、タイムスロットデータを単位としてスケジューリングを行い、タイムスロットデータにCPUの処理時間が割り当てられたら、その時点において当該タイムスロットデータに対応しているスレッドを実行する。 Then, the operating system does not perform scheduling threads in units performs scheduling time slot data as a unit, when the processing time of the CPU is allocated to the time slot data, corresponding to the time slot data at that time to run the threads are.
【0035】 [0035]
そして、本発明では、タイムスロットデータとスレッドとの対応関係を動的に変更することで、優先度の継承を実現する。 In the present invention, by changing the correspondence between the time slot data and thread dynamically implements priority inheritance. すなわち、優先度の高いスレッドが、優先度の低いスレッドの処理を待つ必要がある場合には、当該処理が完了するまでの間、優先度の高いスレッドに対応していたタイムスロットデータを、優先度の低いスレッドに対応したタイムスロットデータとして扱い、当該タイムスロットデータに処理時間が割り当てられたら、優先度の低いスレッドを実行する。 That is, higher priority thread, when it is necessary to wait for the processing of low priority thread, until the process is completed, the time slot data which corresponds to a higher priority thread, preferentially treated as a time slot data corresponding to the low degree thread, when the process time is assigned to the time slot data, to execute the low priority thread.
【0036】 [0036]
なお、本発明は、共有資源に対するアクセスの排他制御だけでなく、オブジェクト指向オペレーティングシステムにおける同期ベースのメッセージ通信や、何らかのイベント待ちなど、複数のスレッド間で依存関係を持つ待ち事象一般に適用することが可能である。 The present invention is not only exclusive control of access to shared resources, synchronization based message communication or in an object-oriented operating system, such as some event waiting, be applied to a wait event generally with dependencies among multiple threads possible it is.
【0037】 [0037]
以下、このような本発明について、本発明を適用したスケジューリング方法の具体的な例を挙げて詳細に説明する。 Hereinafter, the present invention, will be described in detail by way of specific example of a scheduling method according to the present invention. なお、以下に説明するスケジューリング方法は、例えば、複数のスレッドを時分割処理することが可能なオペレーティングシステムにおけるスケジューリング装置において実行される。 Note that the scheduling method described below is executed, for example, in the scheduling apparatus in an operating system capable of time-sharing processing a plurality of threads. そして、このようなオペレーティングシステムが記録された記録媒体が、本発明に係る記録媒体に該当する。 Then, this recording medium on which the operating system is recorded, such that corresponds to the recording medium according to the present invention.
【0038】 [0038]
1. 1. スケジューリングに使用するデータ Data to be used for scheduling
まず、以下に説明するスケジューリング方法において使用されるデータについて説明する。 First, a description will be given of the data used in the scheduling method to be described below.
【0039】 [0039]
以下に示すスケジューリング方法では、各スレッドに対応するようにタイムスロットデータを割り当てて、各スレッドに割り当てられたタイムスロットデータを単位としてスケジューリングを行う。 In the scheduling method described below, by assigning a time slot data so as to correspond to each thread performs scheduling time slots data allocated to each thread as a unit. すなわち、スレッドが生成される毎に、当該スレッドに対応したタイムスロットデータが生成される。 That is, each time a thread is created, time slot data corresponding to the thread is created. そして、このときに、各スレッド毎に、当該スレッドについてのデータ(以下、スレッドデータと称する。)が格納されるデータ領域が、例えば、図24における外部記憶装置10上に確保され、当該データ領域にスレッドデータが格納される。 Then, at this time, for each thread, the data for the thread (hereinafter, referred to as thread data.) Of the data area to be stored, for example, secured in the external storage device 10 in FIG. 24, the data area thread data is stored in. また、タイムスロットデータが格納されるデータ領域が、同じく例えば、図24における外部記憶装置10上に確保される。 The data area timeslot data is stored, also for example, be secured on the external storage device 10 in FIG. 24.
【0040】 [0040]
【表1】 [Table 1]
【0041】 [0041]
スレッドデータには、表1に示すように、スレッドの状態を示すためのデータ型である「ThreadState」型の変数「state」と、スレッドデータを特定するためのデータ型である「Thread*」型の変数「depend」と、スレッドデータリストへのエントリを示すデータ型である「ThreadList」型の変数「inherit」と、タイムスロットを特定するためのデータ型である「TimeSlot*」型の変数「timeSlot」とが含まれる。 The thread data, as shown in Table 1, a data type to indicate the status of the thread "ThreadState" type of the variable "state" is a data type for specifying the thread data "Thread *" type a variable "depend" on, to be a data type that indicates the entry to the thread data list "ThreadList" type of the variable "inherit", which is a data type for specifying the time slot "timeSlot *" type of the variable "timeSlot "and is included.
【0042】 [0042]
変数「state」には、スレッドの状態を示す値が設定される。 The variable "state", a value that indicates the state of the thread is set. スレッドは、スレッドが停止している状態(以下、「休止状態」と称する。)と、スレッドが何らかの事象を待って中断している状態(以下、「待ち状態」と称する。)と、スレッドが実行可能な状態(以下、「実行可能状態」と称する。)との3つの状態をとりうる。 Thread is a state in which the thread is stopped (hereinafter. Referred to as a "dormant") and a state in which the thread is suspended waiting for some event (hereinafter, referred to as "wait state."), And the thread executable state (hereinafter, referred to as. "executable state") can assume three states with. そして、変数「state」は、スレッドがこれらの状態のうちのいずれの状態であるかを示す。 Then, the variable "state" is a thread indicating which state of these states. なお、スレッドが実行されるのは、スレッドが実行可能状態のときだけである。 Incidentally, the thread is executed, only when the thread is in the READY state. 換言すれば、スケジューリングにおいて、タイムスロットに対してCPUの処理時間が与えられるのは、当該タイムスロットに対応するスレッドが実行可能状態のときだけである。 In other words, in the scheduling, the processing time of the CPU with respect to the time slot is given, the thread corresponding to the time slot is only when the executable state.
【0043】 [0043]
変数「depend」には、スレッドが他のスレッドが起こす事象を待って待ち状態になっている場合に、待ち状態の原因となっているスレッドを指し示す値が設定される。 The variable "depend", if the thread is in a wait state waiting for an event that causes the other thread, the value that points to the thread that is causing the wait state is set. なお、その他の場合、変数「depend」には、NULL値が設定される。 It should be noted that, in other cases, the variable "depend", NULL value is set.
【0044】 [0044]
変数「inherit」には、スレッドが他のスレッドから優先度を継承している場合に、優先度の継承元のスレッドを指し示す値が設定される。 The variable "inherit", if the thread is inheriting a priority from the other thread, the value pointing to the inherited thread priority is set. 換言すれば、変数「inherit」には、このスレッドが起こす事象を待って待ち状態となっているスレッドを指し示す値が設定される。 In other words, the variable "inherit", and the value that points to a thread that has become a waiting state waiting for an event that is this thread cause is set. なお、優先度を継承していない場合、変数「inherit」には、NULL値が設定される。 It should be noted that, if you do not inherit the priority, the variable "inherit", NULL value is set.
【0045】 [0045]
なお、スレッドが起こす事象を待って待ち状態となっているスレッドは、複数ある場合があり、それらのスレッドはスレッドリストに登録される。 It should be noted that the thread has become a waiting state waiting for an event that thread causes are, there are times when there is more than one, those threads is registered in the thread list. そして、変数「inherit」は、そのようなスレッドリストへのエントリとなっている。 Then, the variable "inherit" has become an entry to such a thread list. すなわち、変数「inherit」には、優先度の継承元のスレッド自体を指し示す値が設定されるのではなく、そのようなスレッドが登録されたスレッドリストを指し示す値が設定される。 That is, the variable "inherit", rather than the value that indicates the inherited thread itself priority is set, a value indicating the thread list such thread is registered is set.
【0046】 [0046]
変数「timeSlot」には、スレッドに対して、スレッド初期化時から割り当てられているタイムスロットデータを指し示す値が設定される。 The variable "timeSlot" thread, a value indicating the time slot data assigned from the time of thread initialization is set. 換言すれば、変数「timeSlot」は、スレッドに割り当てられたタイムスロットデータを指し示すリンクデータである。 In other words, the variable "timeSlot" is the link data that points to the time slot data assigned to the thread.
【0047】 [0047]
以上のようなスレッドデータにおいて、変数「depend」及び「inherit」は、優先度継承関係のリンク情報となる。 In the thread data as described above, the variable "depend" and "inherit" is a link information of the priority inheritance relationship. すなわち、例えば、スレッドAが、スレッドBが起こす事象を待って待ち状態となっている場合には、スレッドAのスレッドデータの変数「depend」と、スレッドBのスレッドデータの変数「inherit」とが、対になって双方向リンクを形成することとなる。 That is, for example, thread A is, if you are in a state waiting waiting for the events that cause the thread B, the variable "depend" of thread data of the thread A, but the variable of thread data of the thread B "inherit" It will form a two-way link in pairs. なお、以下の説明においては、スレッドのスレッドデータの変数のことを、単にスレッドの変数と呼ぶことにする。 In the following description, the variable threads thread data, simply referred to as a thread variables. また、スレッドデータのことを単にスレッドと呼ぶことにする。 Further, simply referred to as a thread to a thread data.
【0048】 [0048]
【表2】 [Table 2]
【0049】 [0049]
タイムスロットデータには、表2に示すように、スレッドを特定するためのデータ型である「Thread*」型の変数「owner」と、優先度を特定するためのデータ型である「Priority」型の変数「prio」と、タイムスロットデータを特定するためのデータ型である「TimeSlot*」型の変数「next」とが含まれる。 The time slot data, as shown in Table 2, a data type for specifying the thread as "Thread *" type variable "owner" is a data type for specifying the priority of "Priority" type a variable "prio" of includes and is data type for specifying the time slot data "timeSlot *" type variable "next".
【0050】 [0050]
変数「owner」には、タイムスロットデータにCPUの処理時間が割り当てられたときに実行すべきスレッドを指し示す値が設定される。 The variable "owner", a value indicating the thread to be executed when the processing time of the CPU is allocated to the time slot data is set. 換言すれば、変数「owner」は、タイムスロットデータに対応したスレッドを指し示すリンクデータである。 In other words, the variable "owner" is a link data that points to the thread corresponding to the time slot data.
【0051】 [0051]
なお、以下に説明するスケジューリング方法では、変数「owner」が指し示すスレッドを変更することにより、CPUの処理時間が割り当てられるスレッドを変更し、これにより、実質的に優先度の継承を行う。 In the scheduling method to be described below, by changing the thread variable "owner" is indicated, changes the thread processing time of the CPU is allocated, thereby, performs substantially the priority inheritance. すなわち、タイムスロットデータにCPUの処理時間が割り当てられたら、当該タイムスロットデータの変数「owner」によって示されるスレッドを実行するようにする。 That is, as the processing time of the CPU is allocated to the time slot data, so as to execute the thread indicated by the variable "owner" of the time slot data. そして、優先度の継承は、待ち行列の変更を行うのではなく、変数「owner」を変更することで行う。 Then, priority inheritance, rather than to change the queue, carried out by changing the variable "owner".
【0052】 [0052]
変数「prio」には、優先度を示す値が設定される。 The variable "prio", a value indicating the priority are set. 以下に説明するスケジューリング方法では、この変数「prio」に基づいて、各タイムスロットデータに割り当てられるCPUの処理時間が決定される。 In the scheduling method to be described below, based on this variable "prio", the processing time of the CPU to be allocated to each time slot data is determined. なお、変数「prio」は、変数「owner」が指し示すスレッドが変更となった場合にも変更されない。 It should be noted that the variable "prio" is not changed even when the thread variable "owner" is pointing been changed. すなわち、変数「prio」は、変数「owner」が指し示すスレッドが変更されても、タイムスロットデータにもともと対応していたスレッドの優先度を示す値がそのまま保持される。 That is, the variable "prio" also changed the thread indicated by the variable "owner", a value indicating the priority of the thread that was originally corresponding to the time slot data is held as it is.
【0053】 [0053]
変数「next」には、次にCPUの処理時間が割り当てられるタイムスロットデータを指し示す値が設定される。 The variable "next", then point to the time slot data processing time of the CPU is allocated the value is set. すなわち、あるタイムスロットデータに割り当てられていたCPUの処理時間を使い切ったら、その後、当該タイムスロットデータの変数「next」が指し示すタイムスロットデータにCPUの処理時間が割り当てられる。 That is, a time slot Once used up the processing time of the assigned have the CPU in the data, then the processing time of the CPU to the time slot data variables of the time slot data "next" points to is assigned.
【0054】 [0054]
2. 2. スレッドが待ち状態となる場合の処理 Processing of the case in which a thread can become a waiting state
つぎに、優先度の高いスレッドが、優先度の低いスレッドが起こす事象を待って待ち状態となる場合に行われる処理の流れについて説明する。 Next, a high-priority thread will be described flow of processing performed when a waiting state waiting for an event to occur is low priority thread.
【0055】 [0055]
優先度の高いスレッドが、優先度の低いスレッドが起こす事象を待って待ち状態となる場合には、関数「makeWait(Thread* target, Thread* depend)」が呼ばれる。 Higher priority thread is, in the case where the state waiting waiting for the events that cause a low-priority thread, function "makeWait (Thread * target, Thread * depend)" is called. ここで、関数「makeWait(Thread* target, Thread* depend)」の第1の引数「target」は、「Thread*」型の引数であり、この引数「target」には、優先度の低いスレッドが起こす事象を待って待ち状態となるスレッドを指し示す値が設定される。 Here, the function "makeWait (Thread * target, Thread * depend)" first argument "target" of a "Thread *" type of argument, this argument "target", a low-priority thread value that points to the thread which is a waiting state waiting for an event to occur is set. また、第2の引数「depend」は、「Thread*」型の引数であり、この引数「depend」には、優先度の高いスレッドの待ち状態の原因となった優先度の低いスレッドを指し示す値が設定される。 In addition, the second argument "depend" is a "Thread *" type of argument, this argument "depend", pointing to the low priority that caused the wait state of the high-priority thread thread value There is set.
【0056】 [0056]
以下、関数「makeWait(Thread* target, Thread* depend)」が呼ばれた場合の処理について、図1のフローチャートを参照しながら説明する。 Hereinafter, the function "makeWait (Thread * target, Thread * depend)" process when the is called, it is described with reference to the flowchart of FIG. なお、図1のフローチャートでは、各ステップでの処理をC言語での表記に準じた表現で示している。 In the flowchart of FIG. 1 shows a process in each step representation in accordance notation in C.
【0057】 [0057]
関数「makeWait(Thread* target, Thread* depend)」が呼ばれた場合には、先ず、ステップST1−1において、「TimeSlot*」型の変数「timeSlot」に、引数「target」が指し示すスレッドの変数「timeSlot」の値を設定する。 If the function "makeWait (Thread * target, Thread * depend)" is called, first, in step ST1-1, "TimeSlot *" type in the variable "timeSlot" of, of the thread indicated by the argument "target" variable to set the value of the "timeSlot".
【0058】 [0058]
次に、ステップST1−2において、引数「target」が指し示すスレッドの変数「state」に、当該スレッドが待ち状態であることを示す値「WAIT」を設定する。 Next, at step ST1-2, the argument "target" thread of the variable "state" pointing, set the value "WAIT", indicating that the thread is in a wait state.
【0059】 [0059]
次に、ステップST1−3において、引数「target」が指し示すスレッドの変数「depend」に、引数「depend」の値を設定する。 Next, at step ST1-3, a thread indicated by the argument "target" variable "depend", it sets the value of the argument "depend". すなわち、優先度の高いスレッドの待ち状態の原因となったスレッドを、変数「depend」によって参照できるようにする。 That is, the thread that caused the wait state of high priority thread to be referenced by the variable "depend".
【0060】 [0060]
次に、ステップST1−4において、引数「depend」が指し示すスレッドの変数「inherit」が指し示すスレッドリストの末尾に、引数「target」が指し示すスレッドを追加する。 Then, in step ST1-4, at the end of the thread list indicated by the argument "depend" the thread of the variable "inherit" that point, to add a thread indicated by the argument "target". なお、図1中の「AddLast(target)」は、スレッドリストの末尾にスレッドを追加する処理を行う関数を示している。 It should be noted that, "AddLast (target)" in FIG. 1 shows a function that performs a process to add a thread to the end of the thread list. すなわち、タイムスロットデータの継承元である優先度の高いスレッドのリストをスレッドの変数「inherit」によって参照可能にする。 That allows view a list of high priority is a time slot data inherit thread by the thread of the variable "inherit".
【0061】 [0061]
次に、ステップST1−5において、引数「target」に、それまで引数「target」が指し示していたスレッドの変数「depend」の値を設定する。 Then, in step ST1-5, the argument "target", set it up to the value of the thread of the variable that has been pointed argument "target", "it depends". すなわち、実行対象となる可能性のあるスレッドを引数「target」によって参照できるようにする。 In other words, to be able to see the thread that may be executed by the argument "target".
【0062】 [0062]
次に、ステップST1−6において、引数「target」が指し示すスレッドのスレッドデータの変数「state」に、当該スレッドが待ち状態であることを示す値「WAIT」が設定されているか否かを判別する。 Next, at step ST1-6, the argument "target" variable "state" of the thread data thread indicating a value indicating that the thread is waiting state "WAIT" is determined whether it is set . そして、スレッドが待ち状態であることを示す値「WAIT」が設定されている場合は、ステップST1−5へ戻って処理を繰り返し、設定されていない場合は、ステップST1−7へ進む。 Then, if the value "WAIT", indicating that the thread is in a wait state is set, it repeats the processing returns to step ST1-5, if it is not set, the process proceeds to step ST1-7. すなわち、待ち状態でないスレッドが見つかるまでステップST1−5とST1−6の操作を繰り返す。 That is, repeated operation of steps ST1-5 and ST1-6 until it finds a thread is waiting state.
【0063】 [0063]
ステップST1−7では、変数「timeSlot」が指し示すタイムスロットの変数「owner」に、現在の引数「target」の値を設定する。 In step ST1-7, the variable "owner" of the time slot indicated by the variable "timeSlot", to set the current value of the argument "target". すなわち、この処理によって、タイムスロットデータによって間接的に表現された優先度が、優先度の高いスレッドから優先度の低いスレッドへと継承される。 That is, by this process, expressed indirectly by priority by the time slot data is inherited to a lower from a higher priority thread priority thread.
【0064】 [0064]
そして、最後にステップST1−8において、現在の引数「target」が指し示すスレッドの実行を開始する。 Finally, in step ST1-8, to start the execution of threads that the current argument "target" is pointing.
【0065】 [0065]
以上の処理により、優先度の高いスレッドが待ち状態とされ、優先度の低いスレッドが実行される。 By the above process, the wait state is high priority thread, low priority thread runs. このとき、優先度の高いスレッドの変数「depend」と、優先度の低いスレッドの変数「inherit」とによって、実行待ち関係の相互リンクが形成される。 In this case, the thread and the variable "depend" of higher priority, the low priority thread of the variable "inherit", interlinked waiting for execution relationship is formed.
【0066】 [0066]
なお、優先度の高いスレッドの待ち状態の原因となった優先度の低いスレッドが、更に優先度の低いスレッドが起こす事象を待って待ち状態となっていたときには、ステップST1−5及びステップST1−6の処理の繰り返しにより、引数「target」に更に優先度の低いスレッドを指し示す値が設定され、その結果、更に優先度の低いスレッドが実行されることとなる。 Incidentally, when the lower priority that caused the wait state of higher priority thread thread has been a wait state waiting for an event to occur even lower priority thread, steps ST1-5 and step ST1- by repeating the processing of 6, the value is set to point to lower further priority parameter "target" thread, as a result, the even lower priority thread is executed. 換言すれば、関数「makeWait(Thread* target, Thread* depend)」を実行することにより、優先度の高いスレッドに割り当てられていたタイムスロットデータの変数「owner」は、唯一実行可能なスレッドに対応するように変更される。 In other words, by executing the function "makeWait (Thread * target, Thread * depend)", the variable time slot data has been assigned a higher priority thread "owner" is corresponding to only runnable threads It is changed to.
【0067】 [0067]
そして、本例に係るスケジューリング方法では、タイムスロットデータにCPUの処理時間が割り当てられたら、当該タイムスロットデータの変数「owner」によって示されるスレッドを実行するようにする。 The scheduling method according to the present embodiment, when the processing time of the CPU is allocated to the time slot data, so as to execute the thread indicated by the variable of the time slot data "owner". したがって、以上のような処理によって変数「owner」を変更することにより、優先度の高いスレッドにタイムスロットデータの変数「prio」に応じて割り当てられていたCPUの処理時間が、先に実行すべき優先度の低いスレッドに割り当てられることとなる。 Therefore, by changing the variable "owner" by the above process, the processing time of the CPU that has been allocated in accordance with the variable "prio" time slot data to the high priority thread to be executed earlier and thus allocated to the low priority thread. この結果、優先度の高いスレッドから優先度の低いスレッドへ、優先度が実質的に継承されることとなる。 As a result, the lower the higher priority thread priority thread priority is to be substantially inheritance.
【0068】 [0068]
3. 3. スレッドの待ち状態が解消された場合の処理 Processing when the waiting state of the thread has been eliminated
つぎに、優先度の高いスレッドが、優先度の低いスレッドが起こす事象を待って待ち状態となっていたときに、優先度の低いスレッドでの処理が完了して、優先度の高いスレッドの待ち状態が解消された場合の処理について説明する。 Then, high-priority thread, when it has become a waiting state waiting for an event that causes a low priority thread, was treated at a lower priority thread is completed, the high-priority thread waiting It will be described processing in the case where the state has been eliminated.
【0069】 [0069]
優先度の高いスレッドが、優先度の低いスレッドが起こす事象を待って待ち状態となっていたときに、優先度の低いスレッドでの処理が完了して、優先度の高いスレッドの待ち状態が解消された場合には、関数「makeReady(Thread* target)」が呼ばれる。 Higher priority thread, when it has become a waiting state waiting for an event that causes a low priority thread, was treated at a lower priority thread is completed, eliminating the wait state of the high-priority thread If it is, the function "makeReady (Thread * target)" is called. ここで、関数「makeReady(Thread* target)」の引数「target」は、「Thread*」型の引数であり、この引数「target」には、待ち状態が解消されたスレッドを指し示す値が設定される。 Here, the function "makeReady (Thread * target)" in the argument "target" is a "Thread *" type of argument, the argument to the "target", the value that points to a thread that is waiting state has been resolved is set that.
【0070】 [0070]
以下、関数「makeReady(Thread* target)」が呼ばれた場合の処理について、図2のフローチャートを参照しながら説明する。 Hereinafter, processing when the function "makeReady (Thread * target)" is called, is described with reference to the flowchart of FIG. なお、図2のフローチャートでは、各ステップでの処理をC言語での表記に準じた表現で示している。 In the flowchart of FIG. 2 shows a process in each step representation in accordance notation in C.
【0071】 [0071]
関数「makeReady(Thread* target)」が呼ばれた場合には、先ず、ステップST2−1において、引数「target」が指し示すスレッドの変数「state」に、当該スレッドが実行可能状態であることを示す値「RUNNING」を設定する。 If the function "makeReady (Thread * target)" is called, first, at step ST2-1, the argument "target" thread of the variable "state" pointing, indicating that the thread is an executable state to set the value "RUNNING".
【0072】 [0072]
次に、ステップST2−2において、引数「target」が指し示すスレッドのタイムスロットデータを継承しているスレッドの変数「inherit」に繋がれた継承元スレッドへのリストから、関数「Remove(target)」によって、引数「target」で示されるスレッドへのリンクを削除する。 Then, in step ST2-2, the argument from the list of to inherit the original thread that connected to the thread of the variable "inherit" that inherits the thread of the time slot data to "target" is pointing, the function "Remove (target)" by, to remove the link to the thread indicated by the argument "target". すなわち、これによって継承先のスレッドに対して、タイムスロットデータ返還の手続きを遂行する。 That is, with respect to this by inheritance destination of the thread, perform the procedure of the time slot data return.
【0073】 [0073]
次に、ステップST2−3において、引数「target」が指し示すスレッドの変数「depend」に、NULL値を設定する。 Next, at step ST2-3, a thread indicated by the argument "target" variable "depend", it sets a NULL value. すなわち、当該スレッドの待ち状態の原因となっていたスレッドの処理が終了することにより、もはや待ち合わせが必要なくなったことを確かにする。 That is, by processing thread that caused the wait state of the thread terminates, to ensure that no longer needed is waiting.
【0074】 [0074]
次に、ステップST2−4において、関数「makeReady(Thread* target)」に受け渡されている引数「target」の値を第1の引数及び第2の引数の両方に設定して、関数「changeOwner(Thread* target, Thread* depend)」を呼び出す。 Then, in Step ST2-4, and set the value of the function "makeReady (Thread * target)" in receiving that the arguments passed "target" for both the first argument and a second argument, the function "changeOwner (Thread * target, Thread * depend) calls the ". すなわち、当該スレッドに元来割り当てられているタイムスロットデータを継承先のスレッドから当該スレッドへと移動する処理を行う。 That is, the process of moving the time slot data originally allocated to the thread from inheriting the thread into the thread. これにより、当該スレッドが当該タイムスロットデータを利用できるようにする。 Thus, the thread to be able to utilize the time slot data. なお、関数「changeOwner(Thread* target, Thread* depend)」では、タイムスロットデータの変数「owner」を変更する処理が行われるが、この処理については後で詳細に説明する。 In the function "changeOwner (Thread * target, Thread * depend)", the processing of changing the variable "owner" of the time slot data is performed, will be described later in detail this process. そして、関数「changeOwner(Thread* target, Thread* depend)」での処理が完了したら、ステップST2−5へ進む。 Then, after processing by the function "changeOwner (Thread * target, Thread * depend)" has been completed, the process proceeds to step ST2-5.
【0075】 [0075]
そして、最後にステップST2−5において、引数「target」が指し示すスレッドの実行を開始する。 Finally, in step ST2-5, to start the execution of the thread indicated by the argument "target".
【0076】 [0076]
以上のような関数「makeReady(Thread* target)」での処理により、優先度の高いスレッドが待ち状態から実行可能状態に戻され、優先度の高いスレッドが実行される。 Treatment with higher function "makeReady (Thread * target)" as in, returned from the waiting state is high priority thread ready to run, high priority thread runs.
【0077】 [0077]
つぎに、関数「changeOwner(Thread* target, Thread* depend)」が呼ばれた場合の処理について、図3のフローチャートを参照しながら説明する。 Next, the function "changeOwner (Thread * target, Thread * depend)" process when the is called will be described with reference to the flowchart of FIG. なお、図3のフローチャートでは、各ステップでの処理をC言語での表記に準じた表現で示している。 In the flowchart of FIG. 3 shows a process in each step representation in accordance notation in C.
【0078】 [0078]
なお、関数「changeOwner(Thread* target, Thread* depend)」の第1の引数「target」及び第2の引数「depend」は、「Thread*」型の引数であり、関数「changeOwner(Thread* target, Thread* depend)」は、引数「target」のタイムスロットデータの変数「owner」を引数「depend」の値に変更する。 Incidentally, the function "changeOwner (Thread * target, Thread * depend)" first argument "target" and the second argument "depend" of a "Thread *" argument for the function "CHANGEOWNER (Thread * target , Thread * depend) "changes the variable" owner "of the time slot data of the argument" target "to the value of the argument" depend ".
【0079】 [0079]
関数「changeOwner(Thread* target, Thread* depend)」が呼ばれた場合には、先ず、ステップST3−1において、「TimeSlot*」型の変数「timeSlot」に、引数「target」が指し示すスレッドの変数「timeSlot」の値を設定する。 If the function "changeOwner (Thread * target, Thread * depend)" is called, first, in step ST3-1, "TimeSlot *" type in the variable "timeSlot" of, of the thread indicated by the argument "target" variable to set the value of the "timeSlot".
【0080】 [0080]
次に、ステップST3−2において、変数「timeSlot」が指し示すタイムスロットの変数「owner」に、引数「depend」の値を設定する。 Next, at step ST3-2, the variable "owner" of the time slot indicated by the variable "timeSlot", sets the value of the argument "depend". すなわち、これにより当該タイムスロットの所有権を引数「depend」で示されるスレッドに継承する。 That is, thereby inheriting the thread indicated ownership of the time slot with the argument "depend".
【0081】 [0081]
次に、ステップST3−3において、引数「target」が指し示すスレッドの変数「inherit」が指し示すスレッドリストの先頭のスレッドを指し示す値を、「Thread*」型の変数「inherit」に設定する。 Then, in step ST3-3, the value that points to the beginning of the thread of the thread list indicated by the argument "target" is the thread of the variable "inherit" pointing, set to "Thread *" type of the variable "inherit". なお、スレッドリストが空の場合、変数「inherit」にはNULL値を設定する。 It should be noted that, if the thread list is empty, the variable "inherit" to set a NULL value.
【0082】 [0082]
なお、図3中の「Snoop()」は、スレッドリストの先頭のスレッドを取り出す処理を行う関数を示している。 Incidentally, "Snoop ()" in FIG. 3 shows a function that performs a process of taking out the top of the thread of the thread list. そして、この関数「Snoop()」は、先頭のスレッドを指し示す値を戻り値として返す。 Then, this function "Snoop ()" returns a value that points to the beginning of the thread as a return value.
【0083】 [0083]
次に、ステップST3−4において、変数「inherit」にNULL値が設定されているか否かを判別する。 Next, at step ST3-4, and it determines whether or not the NULL value is set to the variable "inherit". そして、変数「inherit」にNULL値が設定されている場合は、この関数「changeOwner(Thread* target, Thread* depend)」の処理を終了する。 And, if the NULL value is set to the variable "inherit", and ends the processing of this function "changeOwner (Thread * target, Thread * depend)". また、変数「inherit」にNULL値が設定されていない場合は、ステップST3−5へ進む。 In addition, if the variable "inherit" NULL value is not set, the process proceeds to step ST3-5.
【0084】 [0084]
ステップST3−5では、現在の変数「inherit」の値を第1の引数に設定するとともに、現在の引数「depend」の値を第2の引数に設定して、改めて関数「changeOwner(Thread* inherit, Thread* depend)」を呼び出す。 At step ST3-5, it sets the value of the current variable "inherit" the first argument, and sets the current value of the argument "depend" to the second argument, again the function "CHANGEOWNER (Thread * inherit , Thread * depend) it calls the ". そして、関数「changeOwner(Thread* inherit, Thread* depend)」での処理が完了したら、ステップST3−6へ進む。 Then, after processing by the function "changeOwner (Thread * inherit, Thread * depend)" has been completed, the process proceeds to step ST3-6.
【0085】 [0085]
ステップST3−6では、引数「inherit」が指し示す次のスレッドを指し示す値を、変数「inherit」に設定する。 In step ST3-6, the value that points to the next thread indicated by the argument "inherit", to set the variable "inherit". なお、次のスレッドが無い場合、変数「inherit」にはNULL値を設定する。 It should be noted that, if there is no next of thread, the variable "inherit" to set a NULL value. そして、ステップST3−6での処理が完了したら、ステップST3−4へ戻って処理を繰り返す。 Then, when the process is completed in step ST3-6, the process returns to step ST3-4.
【0086】 [0086]
以上のような関数「changeOwner(Thread* target, Thread* depend)」での処理により、タイムスロットデータの変数「owner」が変更されるとともに、優先度の高いスレッドの変数「depend」と、優先度の低いスレッドの変数「inherit」とによって形成されていた実行待ち関係のリンクが解消される。 By treatment with above-described function "changeOwner (Thread * target, Thread * depend)", the time slot data variable "owner" is changed, a higher priority thread of the variable "depend" priority low thread of the variable "inherit" the link of the execution wait relationship, which has been formed by the is eliminated.
【0087】 [0087]
なお、優先度の低いスレッドが起こす事象を待って待ち状態となっているスレッドは複数ある場合があり、それらのスレッドはスレッドリストに登録されている。 It should be noted that the thread has become a waiting state waiting for an event that causes a low priority thread is there is a case there is more than one, they thread has been registered in the thread list. そこで、関数「changeOwner(Thread* target, Thread* depend)」では、ステップST3−4乃至ステップST3−6の処理を繰り返すことより、スレッドリストに登録されている全てのスレッドについて、それらのスレッドに対応するタイムスロットデータの変数「owner」の変更を行うようにしている。 Therefore, the function "changeOwner (Thread * target, Thread * depend)" Now, from repeating the processing of steps ST3-4 to step ST3-6, for all the threads that are registered in the thread list corresponding to those threads and to carry out the change of the variable "owner" of the time slot data.
【0088】 [0088]
4. 4. スケジューリングの具体例 Specific examples of the scheduling
つぎに、スケジューリングの具体例を、図4乃至図23を参照して説明する。 Next, an example of the scheduling, will be described with reference to FIGS. 4 through 23.
【0089】 [0089]
なお、以下に説明する例では、いわゆるタイムスライススケジューリングを適用しており、スレッドの優先度が、各スレッドに割り当てられるCPUの処理時間の割合を示すようにしている。 In the example described below, it has been applied so-called time slice scheduling, thread priority, and to indicate the percentage of CPU processing time allocated to each thread. そして、以下に示す例では、優先度によって重み付けされたラウンド・ロビン・スケジューリング・アルゴリズム(Round Robin Scheduling Algorithm)を基本としている。 In the example shown below, it has been round robin scheduling algorithm weighted by priority (Round Robin Scheduling Algorithm) is a basic.
【0090】 [0090]
以下に説明するスケジューリングを行うにあたっては、先ず、各スレッドに対して、優先度に応じたタイムスロットデータが割り当てられる。 In making scheduling described below, firstly, for each thread, the time slot data corresponding to the priority assigned. なお、本例において、優先度は15〜0の値をとるものとする。 In the present embodiment, priority is assumed to take the value of 15 to 0. すなわち、各タイムスロットデータの変数「prio」には、当該タイムスロットに対応しているスレッドの優先度に応じて、15〜0のうちのいずれかの値が設定される。 That is, the variable "prio" of each time slot data, in accordance with the priority of the thread that corresponds to the time slot, one of the values ​​of 15-0 is set. ここで、15〜0の値は、それぞれCPUの使用率の比1:1/2:1/3:・・・・・:1/16に対応する。 Here, the value of 15-0 is the CPU usage each ratio 1: 1/2: 1/3: -----: corresponding to 1/16.
【0091】 [0091]
そして、各スレッドに対応した各タイムスロットデータは、全部で17列の待ち行列からなるリングバッファに入れられ、各待ち行列毎に順にタイムスロットデータが選択される。 Then, each time slot data corresponding to each thread is placed into a ring buffer consisting of a queue of a total of 17 rows, time slot data are sequentially selected for each queue. そして、選択されたタイムスロットデータに対してCPUの処理時間が割り当てられ、当該タイムスロットデータに対応したスレッドが実行される。 Then, the processing time of the CPU is allocated to the selected time slot data, the thread corresponding to the time slot data is performed.
【0092】 [0092]
CPUの処理時間が割り当てられたタイムスロットデータは、対応するスレッドが、当該タイムスロットに割り当てられた処理時間を使い切った時点で、当該タイムスロットデータの変数「prio」に設定された優先度に従って、何番目か先の待ち行列に繋がれる。 Time slot data processing time of the CPU is assigned, the corresponding threads, after it has been filled up the processing time allocated to the time slot, according to the priorities set in the variable "prio" of the time slot data, It is connected to what number ahead of the queue. ここで、当該タイムスロットデータが次に繋がれるリングバッファ中の待ち行列を、優先度によって調整することにより、優先度に応じたCPU使用率の割り当てが実現される。 Here, the queue in the ring buffer to which the time slot data is then connected, by adjusting the priority, allocation of CPU use rate according to the priority is implemented.
【0093】 [0093]
なお、ここではラウンド・ロビン・スケジューリング・アルゴリズムを基本としたスケジューリング方法を例に挙げるが、本発明はこれに限られるものではない。 Here, mention scheduling method for a base of a round robin scheduling algorithm as an example, but the present invention is not limited thereto. すなわち、本発明は、例えば、優先度に基づいてFCFS(First Come First Serve)を行うようなスケジューリング方法等にも適用可能である。 That is, the present invention is, for example, can be applied to based on the priority FCFS (First Come First Serve) scheduling method performs like. ここで、優先度に基づいてFCFSを行うようなスケジューリング方法としては、例えば、実時間システムにおいてよく用いられる「Rate Monotonic」(John Lehoczky,Lui Sha,and Ye Ding. The Rate Monotonic Scheduling Algorithm. Exact Characterization And Average Case Behavior. Thchnical report,Department Of Statistics,Carnegie Mellon University,1987)や「Earliest Deadline First」などのアルゴリズムを適用したスケジューリング方法が挙げられる。 Here, as the scheduling method performs FCFS based on the priority, for example, often used in the Real-Time Systems "Rate Monotonic" (John Lehoczky, Lui Sha, and Ye Ding. The Rate Monotonic Scheduling Algorithm. Exact Characterization and Average Case Behavior. Thchnical report, Department of Statistics, include Carnegie Mellon University, 1987) and "Earliest Deadline First" algorithm applied to scheduling methods such as.
【0094】 [0094]
4−1 優先度の継承が行われないとき 4-1 when the priority of the inheritance is not performed
優先度が15のスレッドAと、優先度が13のスレッドBと、優先度3のスレッドCとを時分割処理するような場合であって、優先度の継承が行われない場合について、図4乃至図13を参照して説明する。 And thread A with a priority of 15, and thread B in the priority 13, in a case such as time-sharing processing and thread C of priority 3, the case where the priority inheritance is not performed, FIG. 4 to be described with reference to FIG. 13. なお、図4乃至図13並びに後掲する図14乃至図23において、1から17までの数字は、待ち行列の番号を示している。 Numerals 14 to 23 to supra post 4 to 13 and Figures, from 1 to 17 indicates the number of the queue. そして、これらの番号に付けられた丸印は、当該番号の待ち行列が現在処理の対象となっていることを示している。 The circles attached to these numbers indicate that the queue of the number is the subject of current processing.
【0095】 [0095]
スレッドA,B,Cを時分割処理する際は、先ず、図4に示すように、1番目の待ち行列にタイムスロットデータA,B,Cが並べられる。 Thread A, B, when dividing the processing time of the C, first, as shown in FIG. 4, the first queue to time slot data A, B, C are arranged. すなわち、タイムスロットデータAの変数「next」がタイムスロットデータBを指し、タイムスロットデータBの変数「next」がタイムスロットデータCを指している。 That is, the variable "next" in the time slot data A points to the time slot data B, the time slot data B variable "next" points to the time slot data C. なお、ここでは、スレッドAに割り当てられたタイムスロットデータをタイムスロットデータA、スレッドBに割り当てられたタイムスロットデータをタイムスロットデータB、スレッドCに割り当てられたタイムスロットデータをタイムスロットデータCとしている。 Here, the time slot data allocated to the thread A time slot data A, the time slot data allocated to thread B time slot data B, the time slot data assigned to the thread C as time slot data C there.
【0096】 [0096]
そして、先ず、1番目の待ち行列の先頭のタイムスロットデータであるタイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行される。 Then, firstly, the processing time of the CPU is allocated to the time slot data A is the first time slot data of the first queue, the thread A is executed is a thread that corresponds to the time slot data A. なお、タイムスロットデータAに対応したスレッドとは、タイムスロットデータAの変数「owner」が指し示すスレッドのことである。 It is to be noted that the thread corresponding to the time slot data A, is that of the thread indicated by the variable "owner" of the time slot data A.
【0097】 [0097]
そして、当該タイムスロットデータAに割り当てられていた処理時間を、スレッドAが使い切ったら、タイムスロットデータAは、リングバッファ中で、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, the time slot data processing time assigned to A, When used up the thread A, time slot data A is in a ring buffer and is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図5に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち2番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 5, the time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the second queue It is.
【0098】 [0098]
次に、1番目の待ち行列の次のタイムスロットデータであるタイムスロットデータBにCPUの処理時間が割り当てられ、タイムスロットデータBに対応したスレッドであるスレッドBが実行される。 Then, the processing time of the CPU is allocated to the time slot data B as the next time slot data of the first queue, the thread B is executed is a thread that corresponds to the time slot data B. なお、タイムスロットデータBに対応したスレッドとは、タイムスロットデータBの変数「owner」が指し示すスレッドのことである。 Note that the thread corresponding to the time slot data B, and that the thread indicated by the variable "owner" of the time slot data B.
【0099】 [0099]
そして、当該タイムスロットデータBに割り当てられていた処理時間を、スレッドBが使い切ったら、タイムスロットデータBは、リングバッファ中で、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, the processing time allocated to the time slot data B, When used up the thread B, the time slot data B is in the ring buffer is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドBの優先度が13なので、図6に示すように、タイムスロットデータBは、(16−13)=3の分だけ先の待ち行列、すなわち4番目の待ち行列に繋がれる。 Specifically, since the priority of the thread B 13, as shown in FIG. 6, the time slot data B is (16-13) = amount corresponding previous queue 3, i.e., connected to the fourth queue It is.
【0100】 [0100]
次に、1番目の待ち行列の次のタイムスロットデータであるタイムスロットデータCにCPUの処理時間が割り当てられ、タイムスロットデータCに対応したスレッドであるスレッドCが実行される。 Then, the processing time of the CPU is allocated to the time slot data C which is the next time slot data of the first queue, the thread C is performed is a thread that corresponds to the time slot data C. なお、タイムスロットデータCに対応したスレッドとは、タイムスロットデータCの変数「owner」が指し示すスレッドのことである。 Note that the thread corresponding to the time slot data C, is that the thread indicated by the variable "owner" of the time slot data C.
【0101】 [0101]
そして、当該タイムスロットデータCに割り当てられていたタイムスライスを使い切ったら、タイムスロットデータCは、リングバッファ中で、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up to the time slice assigned to the time slot data C, the time slot data C is in the ring buffer is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドCの優先度が3なので、図7に示すように、タイムスロットデータCは、(16−3)=13の分だけ先の待ち行列、すなわち14番目の待ち行列に繋がれる。 Specifically, since the priority of the thread C is 3, as shown in FIG. 7, the time slot data C is (16-3) = amount corresponding previous queue 13, i.e. connected to 14-th queue It is.
【0102】 [0102]
以上で1番目の待ち行列に並んでいたタイムスロットデータの処理が終了し、次に、2番目の待ち行列に並んでいるタイムスロットデータの処理が行われる。 The first process of the time slot data which equaled queue is completed above, then the processing of time slot data which are arranged in the second queue is performed. このとき、2番目の待ち行列の先頭は、タイムスロットデータAとなっているので、当該タイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行される。 At this time, the head of the second queue, since a time slot data A, the processing time of the CPU to the time slot data A is allocated, the thread A is executed a thread corresponding to the time slot data A It is. そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図8に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち3番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 8, the time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the third queue It is.
【0103】 [0103]
以上で2番目の待ち行列に並んでいたタイムスロットデータの処理が終了し、次に、3番目の待ち行列に並んでいるタイムスロットデータの処理が行われる。 The second process of the time slot data which equaled queue is completed above, then the processing of time slot data which are arranged in the third queue is performed. このとき、3番目の待ち行列の先頭は、タイムスロットデータAとなっているので、当該タイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行される。 At this time, the head of the third queue, since a time slot data A, the processing time of the CPU to the time slot data A is allocated, the thread A is executed a thread corresponding to the time slot data A It is. そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図9に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち4番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 9, the time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the fourth queue It is. ここで、4番目の待ち行列には、既にタイムスロットデータBが並んでいるので、タイムスロットデータAは、タイムスロットデータBの後ろに繋がれる。 Here, the fourth queue, since already lined up time slot data B, the time slot data A is connected behind the time slot data B.
【0104】 [0104]
以上で3番目の待ち行列に並んでいたタイムスロットデータの処理が終了し、次に、4番目の待ち行列に並んでいるタイムスロットデータの処理が行われる。 Or the third process of the time slot data which equaled queue is completed, then the processing of time slot data which are arranged in the fourth queue is performed. このとき、4番目の待ち行列の先頭は、タイムスロットデータBとなっているので、先ず、当該タイムスロットデータBにCPUの処理時間が割り当てられ、タイムスロットデータBに対応したスレッドであるスレッドBが実行される。 At this time, the head of the fourth queue, since a time slot data B, first, the processing time of the CPU to the time slot data B is assigned a thread corresponding to the time slot data B Thread B There is executed. そして、当該タイムスロットデータBに割り当てられていた処理時間を使い切ったら、タイムスロットデータBは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data B, the time slot data B is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドBの優先度が13なので、図10に示すように、タイムスロットデータBは、(16−13)=3の分だけ先の待ち行列、すなわち7番目の待ち行列に繋がれる。 Specifically, since the priority of the thread B 13, as shown in FIG. 10, time slot data B is (16-13) = amount corresponding previous queue 3, i.e., connected to the seventh queue It is.
【0105】 [0105]
次に、4番目の待ち行列の次のタイムスロットデータであるタイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行される。 Next, the fourth next processing time of the CPU to the time slot data A is a time slot data queues are allocated, the thread A is executed is a thread that corresponds to the time slot data A. そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図11に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち5番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 11, time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the 5 th queue It is.
【0106】 [0106]
以下同様に、待ち行列毎にタイムスロットデータに対してCPUの処理時間を割り当てて、当該タイムスロットデータに対応したスレッドの実行を行うとともに、処理時間を使い切ったタイムスロットデータを優先度に対応した分だけ先の待ち行列に繋ぐ処理を行っていく。 Similarly, by assigning the processing time of the CPU relative to the time slot data for each queue, with the execution of the thread corresponding to the time slot data, the time slot data used up the processing time corresponding to the priority minute only and execute the process that connects the tip of the queue. なお、以上のように処理を進めていくことにより、待ち行列が17番目にまで達した場合、その後は1番目の待ち行列に戻るものとする。 Note that by going proceeds as described above, if the queue has reached the 17 th, then it is assumed to return to the first queue.
【0107】 [0107]
例えば、図12に示すように、17番目の待ち行列にタイムスロットデータAが繋がれており、当該タイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行された場合、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 For example, as shown in FIG. 12, 17 th and connected time slot data A to the queue, processing time of the CPU to the time slot data A is assigned a thread corresponding to the time slot data A thread If a is executed, when used up the processing time allocated to the time slot data a, time slot data a is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、(16−15)=1の分だけ先の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, is coupled to the amount corresponding previous queue (16-15) = 1. そして、このとき現在の待ち行列は17番目なので、(16−15)=1の分だけ先の待ち行列は、1番目の待ち行列である。 Since this time a 17-th current queue, (16-15) = 1 minute just before the queue is the first queue. すなわち、タイムスロットデータAは、図13に示すように、1番目の待ち行列に繋がれる。 That is, time slot data A, as shown in FIG. 13, is coupled to the first queue.
【0108】 [0108]
以上のような処理を順次行っていくことにより、スレッドAのCPU使用率と、スレッドBのCPU使用率と、スレッドCのCPU使用率との比が、1:1/3:1/13となる。 By sequentially performing the above processing, the CPU utilization of threads A, and CPU utilization for threads B, and the ratio of the CPU utilization of the thread C, 1: 1/3: 1/13 and Become. すなわち、スレッドの対応するタイムスロットデータの優先度に応じて、それぞれのスレッドにCPUの処理時間が割り当てられ、複数のスレッドの時分割処理が実行されることとなる。 That is, in accordance with the priority of the thread of the corresponding time slot data, processing time of the CPU is assigned to each thread, so that the time division processing of a plurality of threads are executed.
【0109】 [0109]
ところで、従来の多くのタイムスライススケジューリングでは、CPU使用率の割合に応じて待ち行列のソートを行うなどの処理が必要であった。 Meanwhile, in many conventional time slice scheduling, processing, such as to sort the wait in proportion to the CPU utilization matrix was required. これに対して、上記の方法では、単にタイムスロットデータの繋ぎ換えを行うだけで、タイムスライススケジューリングを実現することができる。 In contrast, in the above method, simply perform reconnecting the time slot data, it is possible to realize a time slice scheduling. すなわち、上記の方法を用いることで、非常に少ない計算量にて、タイムスライススケジューリングを実現することができる。 That is, by using the above method, at very small amount of calculation, it is possible to realize a time slice scheduling.
【0110】 [0110]
なお、各処理がある一定時間内に終わらなければシステムが成り立たないような実時間システムに上記の方法を適用するような場合には、スケジューリング待ち行列に入れるタイムスロットデータの量を制限するようにすればよい。 Note that, as in the case for real-time systems such as unless the system does not hold completed within a certain time each process is such that application of the above method limits the amount of time slot data to take into scheduling queue do it. スケジューリング待ち行列に入れるタイムスロットデータの量を制限することで、CPUの使用率を保証することが可能となり、これにより、実時間システムへの適用が可能となる。 By limiting the amount of time slot data to take into scheduling queue, it is possible to ensure the usage of CPU, which makes it possible to apply to the real-time system.
【0111】 [0111]
例えば、スレッドAが最も優先順位の高いスレッドだと仮定する。 For example, suppose thread A the most high priority thread. ここでスレッドAの実行終了には、CPU処理時間を2単位必要とするとする。 Here, the completion of execution of the thread A, and the CPU processing time requires two units. また、スレッドAは、5CPU単位処理時間以内に終了しなければならないとする。 In addition, thread A is, and must be completed within 5CPU unit processing time. この場合、スレッドAが図8の状態にあって、スレッドAが実行終了までにあと1CPU単位処理時間となった状態で図9のような状態になるとする。 In this case, the thread A is in the state of FIG. 8, and a state as shown in FIG. 9 in a state in which the thread A is turned after 1CPU unit processing time to run ends. このとき、少なくとも次にスレッドAに処理時間が割り当てられるまでには1CPU単位処理時間待たなければならない(すなわちスレッドBが実行する処理時間)が、次のサイクルでスレッドAは無事に実行を終了することができる。 At this time, it must wait 1CPU unit processing time until the processing time for at least the next thread A is allocated (i.e. processing time to run the thread B) is, the thread A in the next cycle is terminated successfully executed be able to. ところが、仮に、図8の状態で現在スレッドBが繋がれている待ち行列に5個のスレッドが繋がっていると考えると、スレッドAに次に処理時間が回ってくるまでには、5CPU単位処理時間待つことになる。 However, if, considering that connected the queue to five threads that are currently connected thread B in the state of FIG. 8, until the next processing time to threads A comes around is, 5CPU unit process so that the wait time. この場合、これだけでスレッドAの実行制限時間を超えてしまう。 In this case, it exceeds the just execution time limit thread A thereto. このようなときに、例えば、一つの待ち行列に繋ぐことのできるスレッドの数を、待ち行列理論などによりスレッドAが制限時間を超えることのないことが示されるような数以内に制限することが考えられる。 In such a case, for example, to limit the number of threads that can be coupled to one queue, within a few such as thread A due queuing theory it is shown that does not exceed the time limit Conceivable.
【0112】 [0112]
4−2 優先度の継承が行われるとき 4-2 when the priority of inheritance is performed
優先度が15のスレッドAと、優先度が13のスレッドBと、優先度3のスレッドCとを時分割処理するような場合であって、優先度の継承が行われる場合について、図14乃至図23を参照して説明する。 And thread A with a priority of 15, and thread B in the priority 13, in a case such as time-sharing processing and thread C of priority 3, the case where the priority inheritance is performed, 14 to Referring to FIG. 23 will be described.
【0113】 [0113]
なお、図14乃至図23において、括弧内の符号は、タイムスロットデータの変数「owner」が指し示しているスレッドを表している。 Note that, in FIGS. 14 to 23, reference numerals in parentheses represent the threads of the time slot data variable "owner" is pointing. すなわち、例えば、A(A)は、タイムスロットデータAの変数「owner」がスレッドAを指し示しているということを表しており、また、例えば、A(B)は、タイムスロットデータAの変数「owner」がスレッドBを指し示しているということを表している。 Thus, for example, A (A) represents the fact that the time slot data A variable "owner" points to a thread A, also, for example, A (B), the time slot data A variable " it represents the fact that the owner "is pointing to thread B.
【0114】 [0114]
本例においても、図4乃至図13に示した例と同様、先ず、図14に示すように、1番目の待ち行列にタイムスロットデータA,B,Cが並べられる。 In this embodiment, as in the example shown in FIGS. 4 to 13, first, as shown in FIG. 14, time slot data A in the first queue, B, C are arranged. そして、先ず、1番目の待ち行列の先頭のタイムスロットデータであるタイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行されるが、本例では、このときに、スレッドAが、スレッドBが起こす事象を待たねばならないとする。 Then, first, the first queue head CPU processing time to the time slot data A is a time slot data of the assigned, but the thread A is a thread that corresponds to the time slot data A is executed, this embodiment in, in this case, thread a, and must wait for an event that causes the thread B. すると、ここではスレッドAは実行されずに、図1に示したフローチャートに従って処理が行われる。 Then, here without the thread A is executed, processing is performed according to the flowchart shown in FIG. その結果、スレッドAが待ち状態とされるとともに、図15に示すように、タイムスロットデータAの変数「owner」がスレッドBを指し示すように変更され、スレッドBが実行される。 As a result, the thread A is in a waiting state, as shown in FIG. 15, the variable "owner" of the time slot data A is changed to point to the thread B, the thread B is executed. すなわち、タイムスロットデータAからのリンクが、スレッドAからスレッドBに変更され、もともとスレッドAに対して割り当てられていたCPUの処理時間が、スレッドBに割り当てられることとなる。 That is, the link from the time slot data A is changed from the thread A to the thread B, CPU processing time that was assigned originally thread A, so that the assigned thread B.
【0115】 [0115]
そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図16に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち2番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 16, time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the second queue It is.
【0116】 [0116]
次に、1番目の待ち行列の次のタイムスロットデータであるタイムスロットデータBにCPUの処理時間が割り当てられ、タイムスロットデータBに対応したスレッドであるスレッドBが実行される。 Then, the processing time of the CPU is allocated to the time slot data B as the next time slot data of the first queue, the thread B is executed is a thread that corresponds to the time slot data B. なお、タイムスロットデータBに対応したスレッドとは、タイムスロットデータBの変数「owner」が指し示すスレッドのことであり、ここではスレッドBである。 Note that the thread corresponding to the time slot data B, and that the thread indicated by the variable "owner" of the time slot data B, where is the thread B.
【0117】 [0117]
そして、当該タイムスロットデータBに割り当てられていた処理時間を使い切ったら、タイムスロットデータBは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data B, the time slot data B is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドBの優先度が13なので、図17に示すように、タイムスロットデータBは、(16−13)=3の分だけ先の待ち行列、すなわち4番目の待ち行列に繋がれる。 Specifically, since the priority of the thread B 13, as shown in FIG. 17, time slot data B is (16-13) = amount corresponding previous queue 3, i.e., connected to the fourth queue It is.
【0118】 [0118]
次に、1番目の待ち行列の次のタイムスロットデータであるタイムスロットデータCにCPUの処理時間が割り当てられ、タイムスロットデータCに対応したスレッドであるスレッドCが実行される。 Then, the processing time of the CPU is allocated to the time slot data C which is the next time slot data of the first queue, the thread C is performed is a thread that corresponds to the time slot data C. なお、タイムスロットデータCに対応したスレッドとは、タイムスロットデータCの変数「owner」が指し示すスレッドのことであり、ここではスレッドCである。 Note that the thread corresponding to the time slot data C, and that the thread indicated by the variable "owner" of the time slot data C, where is the thread C.
【0119】 [0119]
そして、当該タイムスロットデータCに割り当てられていた処理時間を使い切ったら、タイムスロットデータCは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data C, the time slot data C is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドCの優先度が3なので、図18に示すように、タイムスロットデータCは、(16−3)=3の分だけ先の待ち行列、すなわち14番目の待ち行列に繋がれる。 Specifically, since the priority of the thread C is 3, as shown in FIG. 18, time slot data C is (16-3) = amount corresponding previous queue 3, i.e., connected to the 14-th queue It is.
【0120】 [0120]
以上で1番目の待ち行列に並んでいたタイムスロットデータの処理が終了し、次に、2番目の待ち行列に並んでいるタイムスロットデータの処理が行われる。 The first process of the time slot data which equaled queue is completed above, then the processing of time slot data which are arranged in the second queue is performed. このとき、2番目の待ち行列の先頭は、タイムスロットデータAとなっているので、当該タイムスロットデータAの変数「owner」が指し示すスレッド、すなわちスレッドBが実行される。 At this time, the head of the second queue, since a time slot data A, the thread variable "owner" of the time slot data A pointed, i.e. the thread B is executed. そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図19に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち3番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 19, time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the third queue It is.
【0121】 [0121]
以上で2番目の待ち行列に並んでいたタイムスロットデータの処理が終了し、次に、3番目の待ち行列に並んでいるタイムスロットデータの処理が行われる。 The second process of the time slot data which equaled queue is completed above, then the processing of time slot data which are arranged in the third queue is performed. このとき、3番目の待ち行列の先頭は、タイムスロットデータAとなっているので、当該タイムスロットデータAの変数「owner」が指し示すスレッド、すなわちスレッドBが実行される。 At this time, the head of the third queue, since a time slot data A, the thread variable "owner" of the time slot data A pointed, i.e. the thread B is executed. そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図20に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち4番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 20, time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the fourth queue It is. ここで、4番目の待ち行列には、既にタイムスロットデータBが並んでいるので、タイムスロットデータAは、タイムスロットデータBの後ろに繋がれる。 Here, the fourth queue, since already lined up time slot data B, the time slot data A is connected behind the time slot data B.
【0122】 [0122]
以上で3番目の待ち行列に並んでいたタイムスロットデータの処理が終了し、次に、4番目の待ち行列に並んでいるタイムスロットデータの処理が行われる。 Or the third process of the time slot data which equaled queue is completed, then the processing of time slot data which are arranged in the fourth queue is performed. このとき、4番目の待ち行列の先頭は、タイムスロットデータBとなっているので、先ず、当該タイムスロットデータBの変数「owner」が指し示すスレッド、すなわちスレッドBが実行される。 At this time, the head of the fourth queue, since a time slot data B, first, the thread variable "owner" of the time slot data B is pointing, i.e. the thread B is executed.
【0123】 [0123]
このときに、スレッドBの実行により、スレッドAの待ち状態の原因が解消されたとする。 In this case, the execution of the thread B, and causes the wait state of the thread A is eliminated. すると、図2及び図3に示したフローチャートに従って処理が行われ、その結果、スレッドAが実行可能状態にされるとともに、図21に示すように、タイムスロットデータAの変数「owner」がスレッドAを指し示すように変更される。 Then, the processing according to the flowchart shown in FIGS. 2 and 3 are performed, as a result, with the thread A is in the executable state, as shown in FIG. 21, time slot data A of the variable "owner" thread A It is changed to point to. すなわち、タイムスロットデータAからのリンクが、スレッドAに戻される。 That is, the link from the time slot data A is returned to the thread A.
【0124】 [0124]
その後、タイムスロットデータBに割り当てられていた処理時間を使い切ったら、タイムスロットデータBは、優先度に対応した分だけ先の待ち行列に繋がれる。 After that, when used up the processing time allocated to the time slot data B, the time slot data B is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドBの優先度が13なので、図22に示すように、タイムスロットデータBは、(16−13)=3の分だけ先の待ち行列、すなわち7番目の待ち行列に繋がれる。 Specifically, since the priority of the thread B 13, as shown in FIG. 22, time slot data B is (16-13) = amount corresponding previous queue 3, i.e., connected to the seventh queue It is.
【0125】 [0125]
次に、4番目の待ち行列の次のタイムスロットデータであるタイムスロットデータAにCPUの処理時間が割り当てられ、タイムスロットデータAに対応したスレッドであるスレッドAが実行される。 Next, the fourth next processing time of the CPU to the time slot data A is a time slot data queues are allocated, the thread A is executed is a thread that corresponds to the time slot data A. なお、タイムスロットデータAに対応したスレッドとは、タイムスロットデータAの変数「owner」が指し示すスレッドのことであり、ここではスレッドAとなっている。 It is to be noted that the thread corresponding to the time slot data A, is that of the thread indicated by the variable "owner" of the time slot data A, here has become a thread A.
【0126】 [0126]
そして、当該タイムスロットデータAに割り当てられていた処理時間を使い切ったら、タイムスロットデータAは、優先度に対応した分だけ先の待ち行列に繋がれる。 Then, when used up the processing time allocated to the time slot data A, time slot data A is connected only to the previous queue min corresponding to the priority. 具体的には、スレッドAの優先度が15なので、図23に示すように、タイムスロットデータAは、(16−15)=1の分だけ先の待ち行列、すなわち5番目の待ち行列に繋がれる。 Specifically, since the priority of the thread A 15, as shown in FIG. 23, time slot data A is (16-15) = 1 minute just before the queue, i.e. connected to the 5 th queue It is.
【0127】 [0127]
以下同様に、待ち行列毎にタイムスロットデータの実行を行うとともに、処理時間を使い切ったタイムスロットデータを優先度に対応した分だけ先の待ち行列に繋ぐ処理を行っていく。 Similarly, with the execution of the time slot data for each queue, and execute the process of connecting to the amount corresponding previous queue corresponding time slot data used up processing time priority.
【0128】 [0128]
5. 5. まとめ Summary
上記スケジューリング方法では、優先度の高いスレッドが優先度の低いスレッドの処理を待つ必要があるときに、優先度の高いスレッドの状態を待ち状態にするとともに、優先度の高いスレッドに割り当てられていたタイムスロットデータの変数「owner」が指し示すスレッドを、優先度の高いスレッドから優先度の低いスレッドに変更するようにしている。 In the above scheduling method, when a higher priority thread needs to wait for the processing of low priority thread, as well as a wait state a state of high priority thread was assigned a high priority thread a thread that the variable "owner" is pointing to the time slot data, is to be changed from the high-priority thread to low priority thread. すなわち、優先度の高いスレッドに割り当てられていたタイムスロットデータからスレッドへのリンクを、一時的に優先度の低いスレッドに切り換えるようにしている。 That is, the link to the thread from the higher priority thread assigned have the time slot data, to switch temporarily low priority thread.
【0129】 [0129]
換言すれば、上記スケジューリング方法では、優先度の高いスレッドが優先度の低いスレッドの処理を待つ必要があるときに、優先度の低いスレッドの優先度を上げることにより優先度逆転問題を回避するのではなく、優先度の高いスレッドの代わりに優先度の低いスレッドを動かすようにすることで優先度逆転問題を回避している。 In other words, in the scheduling method, when a higher priority thread needs to wait for the processing of low priority thread, to avoid priority inversion problem by raising the priority of the lower priority thread rather, it avoids the priority inversion problem by the move the low priority thread in place of a higher priority thread.
【0130】 [0130]
このようなスケジューリング方法によれば、優先度の高いスレッドが優先度の低いスレッドの処理を待つ必要があるときに、優先度継承のために待ち行列を変更するような処理や優先度を再計算するような処理等を一切行わずに、優先度の高いスレッドから優先度の低いスレッドに優先度を継承したのと同一の結果を得ることができる。 According to this scheduling method, when a higher priority thread needs to wait for the processing of low priority thread, recalculating the processing and priorities that modify the queue for priority inheritance to such processing or the like without any, can be obtained the same result as that inherits the priority from high to low priority thread priority thread. したがって、上記スケジューリング方法によれば、特に実時間システムにおいては致命的な問題となる優先度逆転問題を回避することができる。 Therefore, according to the scheduling method, it is possible to avoid a priority inversion problem that a fatal problem, particularly in real-time systems. しかも、上記スケジューリング方法では、優先度継承のために待ち行列を変更するような処理や優先度を再計算するような処理等を一切行う必要がないので、スケジューリングコストを増大させることなく、優先度逆転問題を回避することができる。 Moreover, in the scheduling method, it is not necessary to perform the priority processing for recalculating the processing and priorities that modify the queue for inheritance, etc. at all, without increasing the scheduling cost, priority it is possible to avoid the reverse problem. さらに、上記スケジューリング方法では、待ち状態となるスレッドに割り当てられていたCPUの処理時間は、待ち状態の原因となっているスレッドに割り当てられることとなるので、CPUの処理時間は無駄なく有効に利用される。 Further, in the above scheduling method, the processing time of the CPU which has been allocated to the thread to be waiting state, and thus allocated to the thread that is causing the wait state, the processing time of the CPU without waste effectively utilized It is.
【0131】 [0131]
なお、上記スケジューリング方法では、待ち事象が連結するような場合(例えば、スレッドAがスレッドBを待ち、スレッドBがスレッドCを待つような場合)にも、全タイムスロットデータが連結の先端のスレッドにリンクされることとなる。 In the above scheduling method, if the waiting event such that also coupled to (e.g., thread A waits for thread B, if such thread B waits for thread C), the total time slot data are connected tip thread and thus it is linked to. したがって、CPUの処理時間が全て有効に使用される。 Therefore, the processing time of the CPU are all effectively used. すなわち、上記スケジューリング方法では、従来の優先度継承方法では不可能であった、いわゆる複数スレッド待ちが可能となっている。 That is, in the scheduling method, not possible with conventional priority inheritance method, so-called multiple thread waiting is possible.
【0132】 [0132]
最後に、本発明が適用されるハードウェア構成及びオペレーティングシステム構成の一例について、図24及び図25を参照しながら説明する。 Finally, an example of the hardware configuration and operating system configuration to which the present invention is applied will be described with reference to FIGS. 24 and 25. なお、図24においては、本発明を適用したテレビジョン受信装置1を例に挙げるが、本発明は他の各種情報処理装置に対して適用することができることは言うまでもない。 Incidentally, in FIG. 24, but given the television receiver 1 according to the present invention as an example, the present invention can of course be applied to other various information processing devices. すなわち、本発明は、時分割処理するマルチスレッドシステムが採用されるオペレーティングシステム(以下、OSという)が搭載される情報処理装置に対して広く適用可能であり、例えば、各種のオーディオ・ビジュアル機器(いわゆるAV機器)、事務用情報処理機器、コンピュータ機器等の情報処理装置に対して適用可能である。 That is, the present invention is an operating system multithreading system is employed for time division processing (hereinafter, referred to as OS) is widely applicable to an information processing apparatus mounted, for example, various audio-visual equipment ( so-called AV equipment), it is applicable to office information processing apparatus, an information processing apparatus such as computer equipment.
【0133】 [0133]
図24において、テレビジョン受信装置1は、アンテナ又はケーブル等によって放送局から送信された信号を受信し、受信した信号に基づいて、画像表示装置に映像を表示するとともに、スピーカから音声を出力する装置である。 In Figure 24, the television receiver 1 receives a signal transmitted from a broadcast station via an antenna or a cable or the like, based on the received signal, and displays an image on the image display device, and outputs the sound from the speaker it is a device.
【0134】 [0134]
テレビジョン受信装置1は、一般的なテレビジョン受信機能を備えているだけではなく、外部からプログラムやデータ等を受け取ることが可能とされており、図24に示すように、バス/IOブリッジ2を介してバス3に接続されたテレビ機能部4と、バス/メモリブリッジ5を介してバス3に接続されたプロセッサ6と、バス/メモリブリッジ5を介してバス3に接続されたROM(Read Only Memory)7及びRAM(Random Access Memory)8と、バス3に接続された操作パネル9、外部記憶装置10及び通信装置11とを備えている。 Television receiver 1 not only includes a general television receiving function, it has been possible to receive programs and data from the outside, as shown in FIG. 24, a bus / IO bridge 2 a television function unit 4 connected to the bus 3 via a bus / memory bridge 5 via the processor 6 connected to the bus 3, which are connected to the bus 3 via the bus / memory bridge 5 ROM (a Read and Only memory) 7, and RAM (Random Access memory) 8, the operation panel 9 connected to the bus 3, and an external storage device 10 and communication device 11.
【0135】 [0135]
テレビ機能部4は、アンテナ又はケーブル等によって受信した信号に基づいて、映像や音声を再生する機能を備えている。 Television function unit 4, based on the signal received by the antenna or cable or the like, and a function of reproducing video and audio. このテレビ機能部4は、バス/IOブリッジ2を介してバス3に接続されており、これにより、他の各部と信号のやりとりが可能とされている。 The television function unit 4 is connected to the bus 3 via the bus / IO bridge 2, thereby being possible to exchange other various parts and signals.
【0136】 [0136]
プロセッサ6は、このテレビジョン受信装置1の各部の制御を行うものであり、バス/メモリブリッジ5を介してバス3に接続されている。 The processor 6, which performs control of each section of the television receiver 1 is connected to the bus 3 via the bus / memory bridge 5. また、プロセッサ6には、バス/メモリブリッジ5を介してROM7及びRAM8が接続されている。 Also, the processor 6, ROM 7 and RAM8 via the bus / memory bridge 5 are connected. ROM7は、例えば、テレビジョン受信装置1に関する不変の情報を保持している。 ROM7, for example, holds the unchanging information regarding the television receiver 1. RAM8は、プロセッサ6のワークエリアとして使われるメモリ空間を提供する。 RAM8 provides a memory space to be used as a work area of ​​the processor 6. すなわち、プロセッサ6は、後述するように外部記憶装置10に記録されているOS(本発明のスケジューリング装置、方法を含む)やアプリケーションプログラムを、RAM8をワークエリアとして使用しながら実行することにより、このテレビジョン受信装置1を構成する各部を制御する。 That is, the processor 6, OS stored in the external storage device 10 as will be described later and an application program (scheduling apparatus of the present invention includes a method), by executing while using the RAM8 as a work area, the and controls each unit constituting the television receiver 1.
【0137】 [0137]
操作パネル9は、ユーザからの操作入力を受け付けるための入力装置である。 Operation panel 9 is an input device for accepting an operation input from the user. テレビジョン受信装置1は、この操作パネル9から、例えば、チャンネルやボリューム等の切り替えを指示する信号が入力される。 Television receiving apparatus 1, from the operation panel 9, e.g., a signal for instructing switching of such channels or volume is input. この操作パネル9は、具体的には、各種信号を入力するための複数のボタンを備えた入力装置や、いわゆるマウスに代表されるようなポインティングデバイス等によって構成される。 The operation panel 9 is specifically an input device and having a plurality of buttons for inputting various signals, constituted by a pointing device such as typified by so-called mouse. この操作パネル9によって入力された信号は、バス3及びバス/メモリブリッジ5を介してプロセッサ6に入力される。 Signal inputted by the operation panel 9 is inputted to the processor 6 via the bus 3 and the bus / memory bridge 5. そして、プロセッサ6は、操作パネル9から入力された信号に基づいて、所定の演算処理を行い、テレビジョン受信装置1を構成する各部を制御する。 Then, the processor 6 based on the signal input from the operation panel 9 performs predetermined calculation processing, and controls each unit constituting the television receiver 1.
【0138】 [0138]
外部記憶装置10は、例えばハードディスク装置等の記憶装置から構成され、プロセッサ6による各種制御を行うためのOS(本発明のスケジューリング装置、方法を含む)やアプリケーションプログラム等を記録している。 The external storage device 10 is, for example, a storage device such as a hard disk device, OS for performing various types of control by the processor 6 (scheduling apparatus of the present invention includes a method) and records the application program or the like. また、外部記憶装置10は、画像データ及び制御データや、外部から通信装置11を介してダウンロードされたプログラム等が記録される。 The external storage device 10, image data and control data and programs and the like downloaded via the communication device 11 from the outside is recorded. また、通信装置11は、外部との間でデータ通信を行うための入出力部であり、例えばモデムやターミナルアダプター等の通信装置によって構成される。 The communication device 11 is an input-output unit for performing data communication with an external, for example, constituted by a communication device such as a modem or a terminal adapter.
【0139】 [0139]
また、テレビジョン受信装置1は、外部記憶装置10に記憶されているOSをプロセッサ6によって実行し、このOS上で、ROM7に記録されている制御情報等を用いて、外部記憶装置10に記録されたアプリケーションプログラムを実行することにより、各部の制御を行う。 Further, the television receiver 1, the OS stored in the external storage device 10 and executed by the processor 6, on the OS, using control information or the like recorded in the ROM 7, recorded in the external storage device 10 by executing the application program, and controls each part. すなわち、このテレビジョン受信装置1は、OSを構成する各種データ処理プログラム(本発明のスケジューリング装置、方法を含む)を提供するプログラム提供媒体として、外部記憶装置10を備えている。 That is, the television receiver 1, various data processing programs that constitute the OS as a program providing medium for providing a (scheduling apparatus of the present invention includes a method), and an external storage device 10.
【0140】 [0140]
なお、本発明のスケジューリング装置、方法を含むOSは、ROM7やRAM8に記録しておくとしてもよい。 Note that the scheduling apparatus of the present invention, OS, including methods may be be recorded on ROM7 and RAM 8. この場合には、ROM7やRAM8がプログラム提供媒体となる。 In this case, ROM 7 and RAM8 is a program providing medium. ただし、バージョンアップを行う等のようなOSの書き換え操作を行うためには、書き換え可能な記録媒体に本発明のスケジューリング装置、方法を含むOSを備えることが望ましい。 However, in order to rewrite operation of OS, such as performing the upgrade, the scheduling apparatus of the present invention in a rewritable recording medium, it is desirable to provide an OS, including methods. また、プログラム提供媒体としては、例えば、このテレビジョン受信装置1に対して着脱自在に用いられる磁気記録媒体や光記録媒体等であってもよいし、このテレビジョン受信装置1と他の各種情報処理装置とを接続するネットワーク回線等であってもよい。 As the program providing medium, for example, may be a the television receiver magnetic recording medium or an optical recording medium or the like to be freely used detachable from 1, the television receiver 1 and various other information and a processing device may be a network line or the like to be connected.
【0141】 [0141]
テレビジョン受信装置1に搭載されるOSは、純オブジェクト指向OSである。 OS mounted on a television receiver 1 is a pure object-oriented OS. そして、このOS上で、例えば、テレビ機能部4に動画像を表示するためにアプリケーションプログラムや、操作パネル9を制御するためのグラフィカル・ユーザ・インタフェース(GUI)を実現するアプリケーションプログラムが実行される。 Then, on the OS, for example, an application program, an application program for implementing a graphical user interface for controlling the operation panel 9 (GUI) are performed to display the moving image on the television function unit 4 .
【0142】 [0142]
次に、図25を用いてOSの一例について説明する。 Next, an example of OS will be described with reference to FIG. 25. このOSは、基本部分であるメタコア(MetaCore)20と、その他のオブジェクト群とから構成される。 The OS is composed of metaCore (MetaCore) 20 which is the basic moiety, the other object group. ここで、メタコア20は、オブジェクトとしては定義できない部分であり、オブジェクト間の実行制御の切り替えをする処理部、すなわち本発明に係る処理時間を割り当てられたスレッドを実行する処理部などを含んでいる。 Here, metaCore 20 is a portion that can not be defined as an object, and includes processing unit for the switching of the execution control between objects, i.e. a processing section that executes a thread that has been assigned a processing time according to the present invention .
【0143】 [0143]
このOSは、純オブジェクト指向OSであり、OS上で実行されるアプリケーションプログラムを構成するオブジェクトと、OSを構成するオブジェクトとが、同様な実行機構を有するOSである。 The OS is a pure object-oriented OS, the objects that make up the application program running on OS, and the objects that make up the OS, a OS with similar execution mechanism. このOSでは、全てのオブジェクトは、各々一つずつのスレッドを持ち、互いに並行に動作することが可能である。 In the OS, all objects, each has a one by one thread, it is possible to operate in parallel with each other. 各オブジェクトはメッセージを送信することにより互いに通信することができる。 Each object can communicate with each other by sending messages. ただし、システムオブジェクトと呼ばれる特定のオブジェクトだけは、メッセージを介することなく通信することができ、さらには本発明にあるようなスケジューリングの対象外にあって動作することが保証されている。 However, only certain objects called system objects can communicate without using a message, it is guaranteed that further work be in exempt from certain such scheduling to the present invention. また、システムオブジェクトは、特定のデータ構造に対して直接操作することを許可されている。 The system object is allowed to operate directly on a particular data structure. このような特定のデータ構造としては、本発明にあるようなスレッドデータやタイムスロットデータ等が含まれる。 Such specific data structures include thread data and time slot data such as in the present invention.
【0144】 [0144]
図25においては、メタコア20以外に、システムオブジェクトであるタイマオブジェクト21とスケジューラ22、及びそれ以外のオブジェクト群として第一のメッセージハンドラ23、第二のメッセージハンドラ24、第一の実行環境マネージャ25、第二の実行環境マネージャ26を示す。 In Figure 25, in addition metaCore 20, the first message handler 23 as a timer object 21 and the scheduler 22, and the object group the other is a system object, the second message handler 24, the first execution environment manager 25, It shows a second execution environment manager 26. なお、図25には実際のシステムに含まれるが省略されている多くのオブジェクト(システムオブジェクトを含む)があることは言うまでもない。 Needless to say, there are many objects that although in FIG. 25 are included in the actual system is omitted (including system objects).
【0145】 [0145]
本OSにおいては、各アプリケーションを異なる実行環境の上で動作させることが可能である。 In this OS, it is possible to operate on each application different execution environments. 本実施例においては、2つのアプリケーションがそれぞれ異なる実行環境を利用している例が示されている。 In this embodiment, two applications are shown examples utilizing different execution environments, respectively. 具体的には、第一のアプリケーション32は、第一の実行環境30の上で動作し、第一の実行環境30は、タイマオブジェクト21、スケジューラ22、第一のメッセージハンドラ23、第一の実行環境マネージャ25を含んでいる。 Specifically, the first application 32 runs on the first execution environment 30, the first execution environment 30, timer objects 21, a scheduler 22, a first message handler 23, the first run it includes the environment manager 25. また、第二のアプリケーション33は、第二の実行環境31の上で動作し、第二の実行環境31は、タイマオブジェクト21、スケジューラ22、第二のメッセージハンドラ24、第二の実行環境マネージャ26を含んでいる。 The second application 33 runs on the second execution environment 31, the second execution environment 31, timer objects 21, a scheduler 22, a second message handler 24, the second execution environment manager 26 It contains. また、第一のアプリケーション32及び第二のアプリケーション33も、各々オブジェクト群によって構成されている。 The first application 32 and a second application 33 is also constructed by each object group. さらに、第一のアプリケーションは、第一のオブジェクト34と第二のオブジェクト35を含んでおり、第一のオブジェクト34の優先度は第二のオブジェクト35の優先度より低いと仮定する。 Furthermore, the first application, the first object 34 includes a second object 35, the priority of the first object 34 is assumed to be lower than the priority of the second object 35.
【0146】 [0146]
まず、本発明においてスレッドの切り替えがなされる手順について説明する。 First, a description will be given of a procedure in which a thread switch is made in the present invention. 第一のアプリケーション32を構成する第一のオブジェクト34が、第二のオブジェクト35に対して処理要求メッセージを送ったとする。 The first object 34 constituting the first application 32, and sent the processing request message to the second object 35. この場合、メッセージは、第一のメッセージハンドラ23を経由して、第二のオブジェクト35に送られることになる。 In this case, the message, via the first message handler 23, to be sent to the second object 35. このとき、第一のメッセージハンドラ23は、送り手である第一のオブジェクト34の優先度と、受け手である第二のオブジェクト35の優先度を比較することにより、優先度逆転が発生することを検出する。 At this time, the first message handler 23, the priority of the first object 34 is a sender, by comparing the priority of the second object 35 is the recipient, that priority inversion occurs To detect. この検出を受けて、第一のメッセージハンドラ23は、関数「makeWait(Thread* target, Thread* depend)」を呼び出す。 In response to this detection, the first message handler 23, calls the function "makeWait (Thread * target, Thread * depend)". ここで、引数「target」は第一のオブジェクト34のスレッドを示し、引数「depend」は第二のオブジェクト35のスレッドを示す。 Here, the argument "target" indicates the thread of the first object 34, the argument "depend" indicates the thread of the second object 35. これによって、第二のオブジェクト35のスレッドに対して、第一のオブジェクト34のスレッドに対応するタイムスロットデータが継承される。 Thus, with respect to the thread of the second object 35, the time slot data corresponding to the thread of the first object 34 is inherited.
【0147】 [0147]
次に第二のオブジェクト35が第一のオブジェクト34からの処理要求メッセージによって要求された処理を終了して、第一のオブジェクト34に対して返答メッセージを返すことになる。 Then the second object 35 is completed and has been processed requested by the processing request message from the first object 34, it will return a reply message to the first object 34. この返答メッセージは再び第一のメッセージハンドラ23を経由して送られる。 The reply message is sent via the first message handler 23 again. このとき、第一のメッセージハンドラ23は、第一のオブジェクト34が第二のオブジェクト35に依存して待ち状態になっていることを検出する。 At this time, the first message handler 23 detects that the first object 34 is in the waiting state, depending on the second object 35. この検出を受けて、第一のメッセージハンドラ23は、関数「makeReady(Thread* target)」を呼び出す。 In response to this detection, the first message handler 23, calls the function "makeReady (Thread * target)". ここで、引数「target」は第一のオブジェクト34のスレッドである。 Here, the argument "target" is the thread of the first object 34. これによって、第二のオブジェクト35のスレッドに対して継承されていたタイムスロットデータが、第一のオブジェクト34のスレッドに対して返還される。 Thus, the time slot data has been inherited for the thread of the second object 35 is returned to a thread of the first object 34.
【0148】 [0148]
次に時分割スケジューリングについて説明する。 Next time division scheduling will be described. 時分割スケジューリングにおいては、タイマオブジェクト21が一定時間ごとにタイマ割り込みを起こし、スケジューラ22を呼び出す。 In time division scheduling, timer objects 21 cause timer interrupts at fixed intervals, calls the scheduler 22. スケジューラ22は、既に説明されたような方法で、次に実行されるスレッドのタイムスロットデータを選択し、当該選択されたオブジェクトのスレッドを起動する。 The scheduler 22 is already the described manner, and selects the thread of the time slot data to be executed next, to start the thread of the selected object.
【0149】 [0149]
【発明の効果】 【Effect of the invention】
以上詳細に説明したように、本発明では、優先度の高いスレッドに対応していたタイムスロットデータを、優先度の低いスレッドに対応したタイムスロットデータとして扱うようにすることで、優先度の高いスレッドから優先度が低いスレッドへの優先度の継承を実現している。 As described above in detail, in the present invention, the time slot data which corresponds to a higher priority thread, by handled as a time slot data corresponding to the low priority thread, high priority priority from the thread is to achieve the priority of the inheritance to a lower thread. したがって、本発明によれば、優先度逆転の問題を回避することができる。 Therefore, according to the present invention, it is possible to avoid the problem of priority inversion.
【0150】 [0150]
しかも、本発明では、優先度の高いスレッドに対応していたタイムスロットデータを優先度の低いスレッドに対応したタイムスロットデータとして扱うようにすることだけで、優先度の継承が実現されるので、優先度の継承を行うにあたって、待ち行列の変更を頻繁に行うような必要はない。 Moreover, in the present invention, only to a handle the time slot data which corresponds to a higher priority thread as the time slot data corresponding to the low priority thread, since priority inheritance can be realized, in carrying out the priority of the inheritance, it is not necessary, such as frequent changes of the queue. したがって、本発明によれば、オーバーヘッドの増加の原因となる待ち行列の変更を頻繁に行うようなことなく、優先度の継承を実現することができる。 Therefore, according to the present invention, without such frequent changes queue which causes increased overhead, it is possible to realize a priority inheritance.
【0151】 [0151]
さらに、本発明では、優先度の高いスレッドから優先度の低いスレッドに優先度の継承が行われた場合、優先度の低いスレッドは、優先度の高いスレッドに割り当てられていた処理時間と、優先度の低いスレッドにもともと割り当てられていた処理時間との両方を使うこととなる。 Furthermore, in the present invention, if the priority to a lower priority thread from a higher priority thread inheritance is performed, a low-priority thread, and the processing time assigned to high priority thread priority so that the use of both the processing time was originally assigned to a low degree thread. したがって、本発明によれば、各スレッドに割り当てられた処理時間を有効に利用することが可能となる。 Therefore, according to the present invention, it is possible to effectively use the processing time allocated to each thread.
【図面の簡単な説明】 BRIEF DESCRIPTION OF THE DRAWINGS
【図1】スレッドが待ち状態となる場合に呼び出される関数「makeWait(Thread* target, Thread* depend)」の処理の流れを示すフローチャートである。 1 is a flowchart showing a flow of processing of the function to be called when the thread is waiting state "makeWait (Thread * target, Thread * depend)".
【図2】スレッドの待ち状態が解消された場合に呼び出される関数「makeReady(Thread* target)」の処理の流れを示すフローチャートである。 2 is a flowchart showing a flow of processing of the function "makeReady (Thread * target)" thread wait state is invoked when it is eliminated.
【図3】関数「makeReady(Thread* target)」の中で呼ばれる関数「changeOwner(Thread* target, Thread* depend)」の処理の流れを示すフローチャートである。 3 is a flowchart showing a flow of processing of the function "changeOwner (Thread * target, Thread * depend)" called in the function "makeReady (Thread * target)".
【図4】図4乃至図11は優先度の継承が行われない場合の待ち行列の遷移を順に示す図であり、図4は1番目の待ち行列にタイムスロットデータA,B,Cが並んでいる状態を示す図である。 Figure 4 to 11 are views showing the transition of the queue when the priority inheritance is not performed in this order, FIG. 4 is a time slot data A in the first queue, B, C are arranged it is a diagram showing a Dale state.
【図5】タイムスロットデータA,B,Cの待ち行列について、図4の次の状態を示す図である。 [5] the time slot data A, B, the C queues is a view showing the next state of FIG.
【図6】タイムスロットデータA,B,Cの待ち行列について、図5の次の状態を示す図である。 [6] the time slot data A, B, the C queues is a view showing the next state of FIG.
【図7】タイムスロットデータA,B,Cの待ち行列について、図6の次の状態を示す図である。 [7] the time slot data A, B, the C queues is a view showing the next state of FIG.
【図8】タイムスロットデータA,B,Cの待ち行列について、図7の次の状態を示す図である。 8 time slot data A, B, the C queues is a view showing the next state of FIG.
【図9】タイムスロットデータA,B,Cの待ち行列について、図8の次の状態を示す図である。 [9] the time slot data A, B, the C queues is a view showing the next state of FIG.
【図10】タイムスロットデータA,B,Cの待ち行列について、図9の次の状態を示す図である。 [10] the time slot data A, B, the C queues is a view showing the next state of FIG.
【図11】タイムスロットデータA,B,Cの待ち行列について、図10の次の状態を示す図である。 11 time slot data A, B, the C queues is a view showing the next state of FIG. 10.
【図12】図12及び図13は、待ち行列が17番目にまで達した場合の待ち行列の遷移を順に示す図であり、図12は17番目に待ち行列にタイムスロットデータAが並んでいる状態を示す図である。 Figure 12 and 13 are views showing the transition of the queue when the queue has reached the 17 th order, 12 are lined up time slot data A to queue the 17 th it is a diagram showing a state.
【図13】タイムスロットデータA,B,Cの待ち行列について、図12の次の状態を示す図である。 [13] the time slot data A, B, the C queues is a view showing the next state of FIG. 12.
【図14】図14乃至図23は優先度の継承が行われる場合の待ち行列の遷移を順に示す図であり、図14は1番目の待ち行列にタイムスロットデータA,B,Cが並んでいる状態を示す図である。 [14] FIGS. 14 to 23 are views showing the transition of the queue when the priority inheritance is performed in order, FIG. 14 is the time slot data A in the first queue, B, lined C is it is a diagram showing a state in which there.
【図15】タイムスロットデータA,B,Cの待ち行列について、図14の次の状態を示す図である。 [15] time slot data A, B, the C queues is a view showing the next state of FIG. 14.
【図16】タイムスロットデータA,B,Cの待ち行列について、図15の次の状態を示す図である。 [16] the time slot data A, B, the C queues is a view showing the next state of FIG. 15.
【図17】タイムスロットデータA,B,Cの待ち行列について、図16の次の状態を示す図である。 [17] the time slot data A, B, the C queues is a view showing the next state of FIG. 16.
【図18】タイムスロットデータA,B,Cの待ち行列について、図17の次の状態を示す図である。 [18] the time slot data A, B, the C queues is a view showing a next state of FIG. 17.
【図19】タイムスロットデータA,B,Cの待ち行列について、図18の次の状態を示す図である。 19 time slot data A, B, the C queues is a view showing the next state of FIG. 18.
【図20】タイムスロットデータA,B,Cの待ち行列について、図19の次の状態を示す図である。 [20] the time slot data A, B, the C queues is a view showing the next state of FIG. 19.
【図21】タイムスロットデータA,B,Cの待ち行列について、図20の次の状態を示す図である。 [21] time slot data A, B, the C queues is a view showing the next state of FIG. 20.
【図22】タイムスロットデータA,B,Cの待ち行列について、図21の次の状態を示す図である。 [22] the time slot data A, B, the C queues is a view showing the next state of FIG. 21.
【図23】タイムスロットデータA,B,Cの待ち行列について、図22の次の状態を示す図である。 [23] the time slot data A, B, the C queues is a view showing the next state of FIG. 22.
【図24】本発明に係る実施例として示すテレビジョン受信装置の概略構成図である。 It is a schematic configuration diagram of a television receiver shown as an embodiment according to Figure 24 the present invention.
【図25】本発明に係るオペレーティングシステムの概略を説明するための図である。 25 is a diagram for explaining an outline of an operating system according to the present invention.
【図26】優先度逆転の問題を説明するための図である。 26 is a diagram for explaining the problem of priority inversion.
【図27】従来の優先度継承機構を説明するための図である。 27 is a diagram for explaining a conventional priority inheritance mechanisms.
【符号の説明】 DESCRIPTION OF SYMBOLS
1 テレビジョン受信装置、 2 バス/IOブリッジ、 3 バス、 4 テレビ機能部、 5 バス/メモリブリッジ、 6 プロセッサ、 7 ROM(Read Only Memory)、 8 RAM(Random Access Memory)、 9 操作パネル、 10 外部記憶装置、 11 通信装置 1 television receiving apparatus, 2 a bus / IO bridge, 3 bus, 4 television function unit, 5 bath / memory bridge, 6 processor, 7 ROM (Read Only Memory), 8 RAM (Random Access Memory), 9 control panel, 10 external storage device, 11 a communication device

Claims (6)

  1. 複数の実行主体を時分割処理することが可能なオペレーティングシステムのスケジューリング装置において、 In the scheduling apparatus of the operating system capable of time-sharing processing multiple execution entities,
    各実行主体毎に、スケジューリングの対象として割り当てられたタイムスロットデータを記憶する手段と、 For each execution subject, it means for storing time slot data assigned as a target of the scheduling process,
    タイムスロットデータに処理時間を割り当て、時分割スケジューリングを行うスケジューラと、 Assign the processing time in the time slot data, and a scheduler for performing a division scheduling time,
    処理時間が割り当てられたタイムスロットデータに対応する実行主体を実行する手段と、優先度の高い第一の実行主体が、優先度の低い第二の実行主体の処理を待つ必要があるときには、当該第一の実行主体に対応するタイムスロットデータを当該第二の実行主体に割り当てる手段と、当該第二の実行主体の処理が終了したときに、当該第一の実行主体から割り当てられたタイムスロットデータを、当該第一の実行主体に再度割り当てる手段と、 Means for executing an execution entity corresponding to the time slot data processing time is allocated, when a high priority first execution subject, it is necessary to wait for the processing of low priority second execution entity, the means for assigning a time slot data corresponding to the first execution subject to the second processing entities, the when the process of the second processing entities has been completed, the time slot data assigned from the first execution entity and means for assigning again to the first execution entity,
    を具備することを特徴とするスケジューリング装置。 Scheduling apparatus characterized by comprising a.
  2. 前記タイムスロットデータは、各タイムスロットデータの対応する実行主体を指し示すリンクデータを格納するデータ領域を具備し、前記スケジューリング装置は、 The time slot data includes a data area for storing the link data that points to the execution subject corresponding respective time slot data, wherein the scheduling device,
    優先度の高い実行主体に対応していたタイムスロットデータを、優先度の低い実行主体に対応したタイムスロットデータとして扱うようにするときには、当該タイムスロットデータのリンクデータが指し示す実行主体を、優先度の高い実行主体から優先度の低い実行主体に変更する手段を具備する、 The time slot data which corresponds to the high priority execution subject when treated as a time slot data corresponding to the low priority execution entity, the execution subject link data of the time slot data pointed, priority comprising means for changing the low execution subject priority from high execution subject of,
    ことを特徴とする請求項1記載のスケジューリング装置。 Scheduling apparatus according to claim 1, wherein a.
  3. 複数の実行主体を時分割処理することが可能なオペレーティングシステムのスケジューリング方法において、 In the scheduling method of the operating system capable of time-sharing processing multiple execution entities,
    各実行主体毎に、スケジューリングの対象として割り当てられたタイムスロットデータに処理時間を割り当て、時分割スケジューリングを行うステップと、 For each execution subject, comprising the steps of allocation of processing time to the time slot data assigned as a target of the scheduling process performs division scheduling time,
    処理時間が割り当てられたタイムスロットデータに対応する実行主体を実行するステップと、 And executing an execution entity corresponding to the time slot data processing time is allocated,
    優先度の高い第一の実行主体が、優先度の低い第二の実行主体の処理を待つ必要があるときには、当該第一の実行主体に対応するタイムスロットデータを当該第二の実行主体に割り当てるステップと、当該第二の実行主体の処理が終了したときに、当該第一の実行主体から割り当てられたタイムスロットデータを、当該第一の実行主体に再度割り当てるステップと、 High priority first execution subject, when it is necessary to wait for the processing of low priority second execution entity allocates time slot data corresponding to the first execution subject to the second execution entity a step, when the processing of the second processing entities has been completed, and assigning the time slot data assigned from the first execution subject again to the first execution entity,
    を具備することを特徴とするスケジューリング方法。 Scheduling method characterized by comprising the.
  4. 前記タイムスロットデータ毎に、対応する実行主体を指し示すリンクデータが格納されるデータ領域を確保しておき、優先度の高い実行主体に対応していたタイムスロットデータを、優先度の低い実行主体に対応したタイムスロットデータとして扱うようにするときには、当該タイムスロットデータに対応したリンクデータが指し示す実行主体を、優先度の高い実行主体から優先度の低い実行主体に変更する、 For each of said time slot data, should reserve a data area link data that points to the corresponding execution subject is stored, the time slot data which corresponds to the high priority execution subject to lower priority execution entity when handled as the corresponding time slot data changes the execution subject link data corresponding to the time slot data pointed, low execution subject priority from high priority execution subject
    ことを特徴とする請求項3記載のスケジューリング方法。 Scheduling method of claim 3, wherein a.
  5. 複数の実行主体を時分割処理することが可能なオペレーティングシステムのデータ処理プログラムが記録された記録媒体であって、 A recording medium on which an operating system the data processing program is recorded capable of time-sharing processing multiple execution entities,
    各実行主体毎に、スケジューリングの対象として割り当てられたタイムスロットデータに処理時間を割り当て、時分割スケジューリングを行うステップと、処理時間が割り当てられたタイムスロットデータに対応する実行主体を実行するステップと、 For each execution subject, and performing the steps of allocation of processing time to the time slot data assigned as a target of the scheduling process performs division scheduling time, the execution subject corresponding to the time slot data processing time is allocated,
    優先度の高い第一の実行主体が、優先度の低い第二の実行主体の処理を待つ必要がある ときには、当該第一の実行主体に対応するタイムスロットデータを当該第二の実行主体に割り当てるステップと、 High priority first execution subject, it is necessary to wait for the processing of low priority second execution subject sometimes, allocates the time slot data corresponding to the first execution subject to the second execution entity and the step,
    当該第二の実行主体の処理が終了したときに、当該第一の実行主体から割り当てられたタイムスロットデータを、当該第一の実行主体に再度割り当てるステップと、 When the processing of the second processing entities has been completed, and allocating time slots data assigned from the first execution subject again to the first execution entity,
    をコンピュータに実行させるためのデータ処理プログラムが記録された記録媒体。 Recording medium on which data processing program is recorded for causing a computer to execute the.
  6. 上記データ処理プログラムは、前記タイムスロットデータ毎に、対応する実行主体を指し示すリンクデータが格納されるデータ領域を確保しておき、優先度の高い実行主体に対応していたタイムスロットデータを、優先度の低い実行主体に対応したタイムスロットデータとして扱うようにするときには、当該タイムスロットデータに対応したリンクデータが指し示す実行主体を、優先度の高い実行主体から優先度の低い実行主体に変更する、 The data processing program for each of the time slot data, should reserve a data area link data that points to the corresponding execution subject is stored, the time slot data which corresponds to the high priority execution subject priority when handled as a time slot data corresponding to degrees lower execution entity changes the execution subject link data corresponding to the time slot data pointed, low execution subject priority from high priority execution subject
    ことをコンピュータに実行させることを特徴とする請求項5記載の記録媒体。 Recording medium according to claim 5, characterized in that to perform the to the computer.
JP6895899A 1998-04-27 1999-03-15 Scheduling apparatus and method and recording medium Active JP4048638B2 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP11750498 1998-04-27
JP10-117504 1998-04-27
JP6895899A JP4048638B2 (en) 1998-04-27 1999-03-15 Scheduling apparatus and method and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6895899A JP4048638B2 (en) 1998-04-27 1999-03-15 Scheduling apparatus and method and recording medium

Publications (2)

Publication Number Publication Date
JP2000020323A true JP2000020323A (en) 2000-01-21
JP4048638B2 true JP4048638B2 (en) 2008-02-20

Family

ID=26410145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6895899A Active JP4048638B2 (en) 1998-04-27 1999-03-15 Scheduling apparatus and method and recording medium

Country Status (1)

Country Link
JP (1) JP4048638B2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5968865A (en) 1997-12-10 1999-10-19 Union Carbide Chemicals & Plastics Technology Corporation Electron donor containing compositions
US6124507A (en) 1997-12-10 2000-09-26 Union Carbide Chemicals & Plastics Technology Corporation Electron donors

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3813930B2 (en) 2002-01-09 2006-08-23 松下電器産業株式会社 Processor and program execution method
JP4750350B2 (en) 2003-03-13 2011-08-17 パナソニック株式会社 Task switching apparatus, method, and program
US7360062B2 (en) 2003-04-25 2008-04-15 International Business Machines Corporation Method and apparatus for selecting an instruction thread for processing in a multi-thread processor
US7401207B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Apparatus and method for adjusting instruction thread priority in a multi-thread processor
US7401208B2 (en) 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US7409520B2 (en) 2005-01-25 2008-08-05 International Business Machines Corporation Systems and methods for time division multiplex multithreading

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5968865A (en) 1997-12-10 1999-10-19 Union Carbide Chemicals & Plastics Technology Corporation Electron donor containing compositions
US6124507A (en) 1997-12-10 2000-09-26 Union Carbide Chemicals & Plastics Technology Corporation Electron donors

Also Published As

Publication number Publication date Type
JP2000020323A (en) 2000-01-21 application

Similar Documents

Publication Publication Date Title
US6748593B1 (en) Apparatus and method for starvation load balancing using a global run queue in a multiple run queue system
US7082519B2 (en) System and method for instruction level multithreading scheduling in a embedded processor
Wang et al. Implementing a general real-time scheduling framework in the RED-Linux real-time kernel
US7937706B2 (en) Method and system for performing fair-share preemption
Tokuda et al. Real-Time Mach: Towards a Predictable Real-Time System.
US5666523A (en) Method and system for distributing asynchronous input from a system input queue to reduce context switches
US6223201B1 (en) Data processing system and method of task management within a self-managing application
US6473780B1 (en) Scheduling of direct memory access
US20010034751A1 (en) Real-time OS simulator
US20070198628A1 (en) Cell processor methods and apparatus
US6587955B1 (en) Real time synchronization in multi-threaded computer systems
US6658448B1 (en) System and method for assigning processes to specific CPU's to increase scalability and performance of operating systems
Buttazzo Rate monotonic vs. EDF: judgment day
US20060277551A1 (en) Administration of locks for critical sections of computer programs in a computer that supports a multiplicity of logical partitions
US5987492A (en) Method and apparatus for processor sharing
US20090049451A1 (en) Multi-threaded processing with reduced context switching
US20110302587A1 (en) Information processing device and information processing method
US20060206887A1 (en) Adaptive partitioning for operating system
US7302686B2 (en) Task management system
US20060206881A1 (en) Process scheduler employing adaptive partitioning of critical process threads
US20040187120A1 (en) System and method for scheduling thread execution
US20090100435A1 (en) Hierarchical reservation resource scheduling infrastructure
US20030061260A1 (en) Resource reservation and priority management
US20090158299A1 (en) System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
US20090328046A1 (en) Method for stage-based cost analysis for task scheduling

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070814

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20071106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071119

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101207

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111207

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121207

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121207

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131207

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250