JPH0793168A - タスク管理方式 - Google Patents
タスク管理方式Info
- Publication number
- JPH0793168A JPH0793168A JP5234558A JP23455893A JPH0793168A JP H0793168 A JPH0793168 A JP H0793168A JP 5234558 A JP5234558 A JP 5234558A JP 23455893 A JP23455893 A JP 23455893A JP H0793168 A JPH0793168 A JP H0793168A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- task
- execution level
- execution
- limit value
- 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.)
- Withdrawn
Links
Abstract
(57)【要約】
【目的】 本発明は階層化されたソフトウェアの各層が
バッファをもち、バッファ内のデータが同じ層に属する
タスクによって処理されるシステムにおいて、バッファ
の容量不足によるシステムの性能低下の問題を解消し、
データの取りこぼしやシステムのデッドロックを回避す
ることを目的とする。 【構成】 監視タスクが一定周期で各バッファの使用量
を読み出しバッファ上限値と比べることにより、バッフ
ァの容量不足を直ちに検出することができ、さらにこの
とき、そのバッファ内のデータを処理するタスクの実行
優先順位を他のタスクより高くすることによって、溜ま
ったデータを優先的に処理し、システムの性能低下を回
避することができる方式である。
バッファをもち、バッファ内のデータが同じ層に属する
タスクによって処理されるシステムにおいて、バッファ
の容量不足によるシステムの性能低下の問題を解消し、
データの取りこぼしやシステムのデッドロックを回避す
ることを目的とする。 【構成】 監視タスクが一定周期で各バッファの使用量
を読み出しバッファ上限値と比べることにより、バッフ
ァの容量不足を直ちに検出することができ、さらにこの
とき、そのバッファ内のデータを処理するタスクの実行
優先順位を他のタスクより高くすることによって、溜ま
ったデータを優先的に処理し、システムの性能低下を回
避することができる方式である。
Description
【0001】
【産業上の利用分野】本発明は計算機や制御用装置な
ど、オペレーティングシステムやモニタによって資源の
使用権を与えられる処理の基本単位であるタスクの管理
方式に係り、特に各タスクの実行優先順位を動的に制御
するタスク管理方式に関する。
ど、オペレーティングシステムやモニタによって資源の
使用権を与えられる処理の基本単位であるタスクの管理
方式に係り、特に各タスクの実行優先順位を動的に制御
するタスク管理方式に関する。
【0002】
【従来の技術】今日、計算機や制御用装置等の大規模な
制御システムにおいて、制御機能の多様化に伴って複雑
な内部構造を持つソフトウェアを管理する為、あるいは
ソフトウェアの標準化に対応する為、これらのソフトウ
ェアをいくつかの階層に分けて実装している。例えば、
各種通信制御やデータ通信を行う通信用ソフトウェアも
プロトコル等の階層化に対応してそれぞれ異なった実行
優先順位が付加されたタスクを各層別に処理し、さらに
各層間のインタフェースをとることにより総合的な機能
を実現している。この階層化された通信用ソフトウェア
の一般的な構成を図5に示す。
制御システムにおいて、制御機能の多様化に伴って複雑
な内部構造を持つソフトウェアを管理する為、あるいは
ソフトウェアの標準化に対応する為、これらのソフトウ
ェアをいくつかの階層に分けて実装している。例えば、
各種通信制御やデータ通信を行う通信用ソフトウェアも
プロトコル等の階層化に対応してそれぞれ異なった実行
優先順位が付加されたタスクを各層別に処理し、さらに
各層間のインタフェースをとることにより総合的な機能
を実現している。この階層化された通信用ソフトウェア
の一般的な構成を図5に示す。
【0003】同図において、上位層、中位層、下位層は
各プロトコルのレベルの相違に基づいた階層構造を成し
ている。また、各層には他の層から転送されてきたデー
タを処理中のデータとして一時的に格納する専用のバッ
ファが割り当てられている。そして、各層のバッファの
容量はシステム動作時の性能や効率等を考慮に入れて最
適な値が層別に設定されている。
各プロトコルのレベルの相違に基づいた階層構造を成し
ている。また、各層には他の層から転送されてきたデー
タを処理中のデータとして一時的に格納する専用のバッ
ファが割り当てられている。そして、各層のバッファの
容量はシステム動作時の性能や効率等を考慮に入れて最
適な値が層別に設定されている。
【0004】タスクA、タスクB、タスクCはそれぞれ
上位層、中位層、下位層に属し、例えばそれぞれ異なる
プロトコルによる通信機能に関する処理を各々のタスク
に付加された実行優先順位である実行レベルに従って行
う。実行レベルは通常各層に属するタスクの効率的な処
理に最も適した値が決められており、タスク生成時に主
記憶装置内に設けられる、例えばタスク制御ブロックに
格納される。
上位層、中位層、下位層に属し、例えばそれぞれ異なる
プロトコルによる通信機能に関する処理を各々のタスク
に付加された実行優先順位である実行レベルに従って行
う。実行レベルは通常各層に属するタスクの効率的な処
理に最も適した値が決められており、タスク生成時に主
記憶装置内に設けられる、例えばタスク制御ブロックに
格納される。
【0005】ここで、各タスクの実行順位は、従来以下
の方式により設定されている。すなわち、システム初期
化時に層別に実行レベルを指定し、この値を静的に固定
して運用するものである。例えば、図5の例で説明する
と、同図ではタスクAに実行レベル1を付加し、タスク
Bに実行レベル2を付加し、タスクCに実行レベル3を
付加している。そして、数値が大きいほど実行優先順位
が高く、この実行レベルは固定的である。つまり、タス
クCが一番実行優先順位が高く、従って最初にスケジュ
ーラからCPU(中央処理装置)等の使用権が与えら
れ、タスクCが処理された後、二番目の実行優先順位で
あるタスクBが実行され、最後に一番実行優先順位が低
いタスクAが実行される。尚、各層のバッファ間の矢印
は、処理が終ったデータのやりとりを示し、これは各バ
ッファの容量に応じて行われる。
の方式により設定されている。すなわち、システム初期
化時に層別に実行レベルを指定し、この値を静的に固定
して運用するものである。例えば、図5の例で説明する
と、同図ではタスクAに実行レベル1を付加し、タスク
Bに実行レベル2を付加し、タスクCに実行レベル3を
付加している。そして、数値が大きいほど実行優先順位
が高く、この実行レベルは固定的である。つまり、タス
クCが一番実行優先順位が高く、従って最初にスケジュ
ーラからCPU(中央処理装置)等の使用権が与えら
れ、タスクCが処理された後、二番目の実行優先順位で
あるタスクBが実行され、最後に一番実行優先順位が低
いタスクAが実行される。尚、各層のバッファ間の矢印
は、処理が終ったデータのやりとりを示し、これは各バ
ッファの容量に応じて行われる。
【0006】
【発明が解決しようとする課題】しかしながら、上述の
タスク管理方法では、バッファの使用状況に依らず一定
の実行優先順位を固定的に付加する方式である為、円滑
な処理を妨げ、システム全体の性能を低下させることが
ある。例えば、このことを上述の図5の例で説明する。
タスク管理方法では、バッファの使用状況に依らず一定
の実行優先順位を固定的に付加する方式である為、円滑
な処理を妨げ、システム全体の性能を低下させることが
ある。例えば、このことを上述の図5の例で説明する。
【0007】例えば、タスクBの実行により中位層での
処理を完了したデータが上位層に転送される場合を考え
ると、上位層のバッファに十分な空きがあれば直ちに転
送が行われる。しかし、空きがない場合、上位層のバッ
ファ内のデータが処理、又は他に転送されて上位層のバ
ッファに空き領域ができるまで、タスクBは処理を停止
し、実行状態から待ち状態へと移行する。この為、次に
高い実行レベルを持つタスクAは実行可能状態から実行
状態に移り上位層のバッファのデータを処理し、例えば
中位層等へ転送する。これにより上位層のバッファに空
きができ、タスクAより実行レベルの高いタスクBがタ
スクAの処理を中断させ、待ち状態であったデータ転送
処理を再開する。
処理を完了したデータが上位層に転送される場合を考え
ると、上位層のバッファに十分な空きがあれば直ちに転
送が行われる。しかし、空きがない場合、上位層のバッ
ファ内のデータが処理、又は他に転送されて上位層のバ
ッファに空き領域ができるまで、タスクBは処理を停止
し、実行状態から待ち状態へと移行する。この為、次に
高い実行レベルを持つタスクAは実行可能状態から実行
状態に移り上位層のバッファのデータを処理し、例えば
中位層等へ転送する。これにより上位層のバッファに空
きができ、タスクAより実行レベルの高いタスクBがタ
スクAの処理を中断させ、待ち状態であったデータ転送
処理を再開する。
【0008】このようにタスクの実行レベルを固定的に
設定し、優先順位に基づいて処理を実行することは、上
述した様に上位層のバッファが大量のデータを抱え込む
ことになり、例えば、上述の様にタスクAとタスクBが
互いに処理の実行と中断を繰り返し、システムの処理効
率を低下させる。さらに、最悪の場合には、各層のバッ
ファに空き領域がなくなり、データを取りこぼし、シス
テムがデッドロックを起こす危険性もある。
設定し、優先順位に基づいて処理を実行することは、上
述した様に上位層のバッファが大量のデータを抱え込む
ことになり、例えば、上述の様にタスクAとタスクBが
互いに処理の実行と中断を繰り返し、システムの処理効
率を低下させる。さらに、最悪の場合には、各層のバッ
ファに空き領域がなくなり、データを取りこぼし、シス
テムがデッドロックを起こす危険性もある。
【0009】本発明は、実行レベルの比較的低い層のバ
ッファが大量のデータを抱え込んだ場合でもシステム全
体の効率を損なわず、データの取りこぼしやシステムの
デッドロックを回避するタスク管理方式を提供すること
を目的とする。
ッファが大量のデータを抱え込んだ場合でもシステム全
体の効率を損なわず、データの取りこぼしやシステムの
デッドロックを回避するタスク管理方式を提供すること
を目的とする。
【0010】
【課題を解決するための手段】本発明は、実行レベルの
異なる階層化された複数のタスクと、該複数のタスクに
より処理されるデータを格納するために各層毎に設けら
れたバッファと、該バッファの使用量の閾値を設定する
閾値設定手段と、該閾値設定手段が設定した閾値を外れ
た時前記タスクの実行優先順位を変更する変更制御手段
とで構成されている。
異なる階層化された複数のタスクと、該複数のタスクに
より処理されるデータを格納するために各層毎に設けら
れたバッファと、該バッファの使用量の閾値を設定する
閾値設定手段と、該閾値設定手段が設定した閾値を外れ
た時前記タスクの実行優先順位を変更する変更制御手段
とで構成されている。
【0011】また、上記閾値設定手段は、例えばバッフ
ァ容量に応じたバッファ上限値と下限値を設定し、変更
制御手段はバッファ使用量を一定周期で読み出し、その
値に応じてタスクの実行レベルを管理する監視タスクで
構成され、監視タスクは処理実行中の各タスクのバッフ
ァ使用量を監視し、バッファ使用量が上記バッファ上限
値、又は下限値を外れた時、タスクの実行優先順位を変
更する。
ァ容量に応じたバッファ上限値と下限値を設定し、変更
制御手段はバッファ使用量を一定周期で読み出し、その
値に応じてタスクの実行レベルを管理する監視タスクで
構成され、監視タスクは処理実行中の各タスクのバッフ
ァ使用量を監視し、バッファ使用量が上記バッファ上限
値、又は下限値を外れた時、タスクの実行優先順位を変
更する。
【0012】例えば、あるバッファのバッファ使用量
が、そのバッファ上限値を越えることにより、上記監視
タスクは当該バッファが大量のデータを格納しており、
空きがわずかであることを認識し、タスクの実行優先順
位を上げる。また、あるバッファのバッファ使用量が、
バッファ下限値より低い時、当該バッファに対応するタ
スクの実行レベルを引き下げる。
が、そのバッファ上限値を越えることにより、上記監視
タスクは当該バッファが大量のデータを格納しており、
空きがわずかであることを認識し、タスクの実行優先順
位を上げる。また、あるバッファのバッファ使用量が、
バッファ下限値より低い時、当該バッファに対応するタ
スクの実行レベルを引き下げる。
【0013】さらに、各タスクの現在の実行レベルであ
るカレント実行レベル、前記初期化時の実行レベル、そ
のタスクの属する層のバッファの前記バッファ上限値、
バッファ下限値、バッファ使用量等を格納するタスク監
視テーブルを設け、前記監視タスクが当該タスク監視テ
ーブルの各パラメータを随時変更することにより、効率
よくタスクの管理を行う方式とすることもできる。
るカレント実行レベル、前記初期化時の実行レベル、そ
のタスクの属する層のバッファの前記バッファ上限値、
バッファ下限値、バッファ使用量等を格納するタスク監
視テーブルを設け、前記監視タスクが当該タスク監視テ
ーブルの各パラメータを随時変更することにより、効率
よくタスクの管理を行う方式とすることもできる。
【0014】
【作用】監視タスクが定期的にバッファ使用量とバッフ
ァ上、下限値を比較することにより、例えば比較的実行
レベルの低い層においてバッファが大量のデータを抱え
込み、容量をオーバーしそうな場合、これを事前に察知
し、初期化時に層別に指定されたタスクの実行レベルを
バッファ使用量に応じて変更し、例えば容量がオーバー
しそうになったバッファのデータを優先的に処理するこ
とができる。監視タスクが実行レベルの低い層の使用バ
ッファ量を監視し、その使用量に応じてタスクの実行レ
ベルを変更するので、各層におけるデータバッファの使
用量の片寄を解消する。この処理により、タスクの実行
を中断することなく、システム全体の性能を向上させる
ことができ、さらにバッファの容量オーバーによるデー
タの取りこぼしや、システムのデッドロック等の最悪の
事態を回避することができる。
ァ上、下限値を比較することにより、例えば比較的実行
レベルの低い層においてバッファが大量のデータを抱え
込み、容量をオーバーしそうな場合、これを事前に察知
し、初期化時に層別に指定されたタスクの実行レベルを
バッファ使用量に応じて変更し、例えば容量がオーバー
しそうになったバッファのデータを優先的に処理するこ
とができる。監視タスクが実行レベルの低い層の使用バ
ッファ量を監視し、その使用量に応じてタスクの実行レ
ベルを変更するので、各層におけるデータバッファの使
用量の片寄を解消する。この処理により、タスクの実行
を中断することなく、システム全体の性能を向上させる
ことができ、さらにバッファの容量オーバーによるデー
タの取りこぼしや、システムのデッドロック等の最悪の
事態を回避することができる。
【0015】
【実施例】以下、本発明の一実施例について、図面を参
照しながら説明する。図1は本実施例のタスク管理方式
を説明する概略構成図である。同図において、上位層、
中位層、下位層は通信用ソフトウェアにおいて、例えば
通信機能等の相違により階層化された各ソフトウェア層
であり、処理が完了していないデータを格納しておくた
めに、それぞれバッファ1−1、バッファ1−2、バッ
ファ1−3を有する。各々のバッファには、システムの
初期化時にバッファ上限値とバッファ下限値が設定さ
れ、監視タスクがタスクの実行レベルを変更する際に閾
値として用いられる。具体的には、タスクA、タスク
B、タスクCはそれぞれ上位層、中位層、下位層に属
し、例えば上位層はユーザレベルプロトコルであり、通
信処理におけるオペレータとの処理手順のプロトコルで
ある。また、中位層は例えばネットワークレベルプロト
コルであり、通信処理におけるコンピュータ間の処理手
順のプロトコルである。さらに、下位層は例えばデータ
リンクレベルプロトコルであり、通信処理におけるデー
タ処理手順を示す。
照しながら説明する。図1は本実施例のタスク管理方式
を説明する概略構成図である。同図において、上位層、
中位層、下位層は通信用ソフトウェアにおいて、例えば
通信機能等の相違により階層化された各ソフトウェア層
であり、処理が完了していないデータを格納しておくた
めに、それぞれバッファ1−1、バッファ1−2、バッ
ファ1−3を有する。各々のバッファには、システムの
初期化時にバッファ上限値とバッファ下限値が設定さ
れ、監視タスクがタスクの実行レベルを変更する際に閾
値として用いられる。具体的には、タスクA、タスク
B、タスクCはそれぞれ上位層、中位層、下位層に属
し、例えば上位層はユーザレベルプロトコルであり、通
信処理におけるオペレータとの処理手順のプロトコルで
ある。また、中位層は例えばネットワークレベルプロト
コルであり、通信処理におけるコンピュータ間の処理手
順のプロトコルである。さらに、下位層は例えばデータ
リンクレベルプロトコルであり、通信処理におけるデー
タ処理手順を示す。
【0016】また、各層には初期化時、実行レベルとし
て実行レベル1、実行レベル2、実行レベル3がそれぞ
れ付加されている。すなわち、タスクAは実行レベル1
であり、タスクBは実行レベル2であり、タスクCは実
行レベル3である。また、監視タスクは最も高い優先順
位で実行できるよう、例えば実行レベル6が付与されて
いる。
て実行レベル1、実行レベル2、実行レベル3がそれぞ
れ付加されている。すなわち、タスクAは実行レベル1
であり、タスクBは実行レベル2であり、タスクCは実
行レベル3である。また、監視タスクは最も高い優先順
位で実行できるよう、例えば実行レベル6が付与されて
いる。
【0017】尚、各バッファの斜線部分は現在のバッフ
ァ使用量を表し、各バッファ間の矢印は必要に応じてデ
ータの転送が行われることを表す。監視タスクは一定時
間毎にバッファ1−1及びバッファ1−2のバッファ使
用量を読み出し、それぞれのバッファ上限値と比較する
構成である。
ァ使用量を表し、各バッファ間の矢印は必要に応じてデ
ータの転送が行われることを表す。監視タスクは一定時
間毎にバッファ1−1及びバッファ1−2のバッファ使
用量を読み出し、それぞれのバッファ上限値と比較する
構成である。
【0018】また、図1の状態は、バッファ1−1のバ
ッファ使用量がバッファ上限値を越えているため、この
まま放置すれば、さらに他層からデータが転送されるこ
とによって、バッファ使用量がバッファ容量に達してし
まう状態を示す。尚、バッファ1−3のバッファ使用量
が読み出しの対象となっていないのは、タスクCの初期
化時の実行レベルが他の層よりも高く、バッファ1−3
のデータが常時優先的に処理されるからである。勿論、
バッファ1−3のバッファ使用量を読み出すことにより
タスクCの実行レベルを変更する方式としてもよいこと
は言うまでもない。
ッファ使用量がバッファ上限値を越えているため、この
まま放置すれば、さらに他層からデータが転送されるこ
とによって、バッファ使用量がバッファ容量に達してし
まう状態を示す。尚、バッファ1−3のバッファ使用量
が読み出しの対象となっていないのは、タスクCの初期
化時の実行レベルが他の層よりも高く、バッファ1−3
のデータが常時優先的に処理されるからである。勿論、
バッファ1−3のバッファ使用量を読み出すことにより
タスクCの実行レベルを変更する方式としてもよいこと
は言うまでもない。
【0019】また、図2は上述の監視タスクが効率よく
タスクの実行レベルを管理するために主記憶装置内に設
けられたタスク監視テーブルの一例である。同図におい
て、「初期化時の実行レベル」は、システム初期化時に
オペレーティングシステムやモニタにより指定された各
層の実行レベルであり、各タスクの生成時に付加される
静的な固定値である。また、「バッファ上限値」と「バ
ッファ下限値」も初期化時に設定される定数値であるが
必要に応じて監視タスクにより変更できる。
タスクの実行レベルを管理するために主記憶装置内に設
けられたタスク監視テーブルの一例である。同図におい
て、「初期化時の実行レベル」は、システム初期化時に
オペレーティングシステムやモニタにより指定された各
層の実行レベルであり、各タスクの生成時に付加される
静的な固定値である。また、「バッファ上限値」と「バ
ッファ下限値」も初期化時に設定される定数値であるが
必要に応じて監視タスクにより変更できる。
【0020】「バッファオーバー検出回数上限値」と
「実行レベル変更回数上限値」はバッファの使用量がバ
ッファ上限値を越える頻度を評価するための閾値でタス
クの生成時に設定される。尚、「実行レベル変更回数上
限値」は固定値であり、「バッファオーバー検出回数上
限値」は監視タスクにより変更できる場合もある。
「実行レベル変更回数上限値」はバッファの使用量がバ
ッファ上限値を越える頻度を評価するための閾値でタス
クの生成時に設定される。尚、「実行レベル変更回数上
限値」は固定値であり、「バッファオーバー検出回数上
限値」は監視タスクにより変更できる場合もある。
【0021】一方、「カレント実行レベル」はバッファ
使用量読み出し時に対応する動的な実行レベルであり、
「バッファオーバー検出回数」はバッファ使用量がバッ
ファ上限値を越えた回数を示し、「実行レベル変更回
数」は監視タスクによりカレント実行レベルが引き上げ
られた回数を示す。
使用量読み出し時に対応する動的な実行レベルであり、
「バッファオーバー検出回数」はバッファ使用量がバッ
ファ上限値を越えた回数を示し、「実行レベル変更回
数」は監視タスクによりカレント実行レベルが引き上げ
られた回数を示す。
【0022】これらのパラメータはタスクA、タスク
B、タスクCのみならず監視タスクの監視対象となるタ
スクが他にあれば、そのタスクについても同様に設定さ
れる。尚、図2に示す具体的な数値については後述す
る。
B、タスクCのみならず監視タスクの監視対象となるタ
スクが他にあれば、そのタスクについても同様に設定さ
れる。尚、図2に示す具体的な数値については後述す
る。
【0023】以下、本実施例の動作を説明する。図3は
上述した一実施例の監視タスクの詳細な処理内容を示す
フローチャートである。監視タスクは一定周期で起動
し、各層のタスク毎にステップS1からステップS16
までの処理を逐次行い、初期化時の実行レベルが最も高
い下位層を除く全ての層についての処理が終わると終了
する。
上述した一実施例の監視タスクの詳細な処理内容を示す
フローチャートである。監視タスクは一定周期で起動
し、各層のタスク毎にステップS1からステップS16
までの処理を逐次行い、初期化時の実行レベルが最も高
い下位層を除く全ての層についての処理が終わると終了
する。
【0024】まずステップS1において対象とするタス
クが使用しているバッファのバッファ使用量を読み出
し、タスク監視テーブルに格納する。次に、S2におい
てバッファ使用量をタスク生成時に既に格納されている
バッファ上限値と比較し、これがバッファ上限値を越え
ている場合S3に進み、越えていなければS11に進
む。
クが使用しているバッファのバッファ使用量を読み出
し、タスク監視テーブルに格納する。次に、S2におい
てバッファ使用量をタスク生成時に既に格納されている
バッファ上限値と比較し、これがバッファ上限値を越え
ている場合S3に進み、越えていなければS11に進
む。
【0025】S3においては、前回の監視タスク終了時
にタスク監視テーブルに格納されていたカレント実行レ
ベルを他の層のタスクのカレント実行レベルと比較し、
もしより高いカレント実行レベルをもつタスクが他にあ
れば、S4に進んでバッファオーバー検出回数に1を加
え、そうでなければS16へ進む。尚、タスク生成時に
おいてはカレント実行レベルは初期化時の実行レベルに
一致し、バッファオーバー検出回数は0に設定されてい
る。S3でカレント実行レベルが他のタスクより高いと
きS16に移行するのは、既にバッファ内のデータが優
先的に処理されており、それ以上実行レベルを引き上げ
る必要がないからである。
にタスク監視テーブルに格納されていたカレント実行レ
ベルを他の層のタスクのカレント実行レベルと比較し、
もしより高いカレント実行レベルをもつタスクが他にあ
れば、S4に進んでバッファオーバー検出回数に1を加
え、そうでなければS16へ進む。尚、タスク生成時に
おいてはカレント実行レベルは初期化時の実行レベルに
一致し、バッファオーバー検出回数は0に設定されてい
る。S3でカレント実行レベルが他のタスクより高いと
きS16に移行するのは、既にバッファ内のデータが優
先的に処理されており、それ以上実行レベルを引き上げ
る必要がないからである。
【0026】S4において変更されたバッファオーバー
検出回数は、S5においてバッファオーバー検出回数上
限値と比較され、これを越えている場合バッファ内のデ
ータの処理が滞っているものと判断し、S6に進んでカ
レント実行レベルを他の層のタスクより高くする。これ
により該当するタスクの処理を優先させ、バッファ使用
量の減少を促進することができる。一方、バッファオー
バー検出回数上限値を越えていない場合は、次回の監視
までにバッファ使用量が減少するかも知れないので、今
回はカレント実行レベルの引き上げを見合わせS16へ
進む。
検出回数は、S5においてバッファオーバー検出回数上
限値と比較され、これを越えている場合バッファ内のデ
ータの処理が滞っているものと判断し、S6に進んでカ
レント実行レベルを他の層のタスクより高くする。これ
により該当するタスクの処理を優先させ、バッファ使用
量の減少を促進することができる。一方、バッファオー
バー検出回数上限値を越えていない場合は、次回の監視
までにバッファ使用量が減少するかも知れないので、今
回はカレント実行レベルの引き上げを見合わせS16へ
進む。
【0027】S6においてカレント実行レベルを引き上
げた後S7において実行レベル変更回数に1を加え、そ
の結果をS8において実行レベル変更回数上限値と比較
する。これは、同一タスクに対してカレント実行レベル
が頻繁に引き上げられたかどうか、すなわち、処理すべ
きデータがバッファに溜まりバッファ使用量が頻繁にバ
ッファ上限値を越えたかどうかを評価するためである。
あまりにも高い頻度でカレント実行レベルを引き上げる
時、つまり、実行レベル変更回数が実行レベル変更回数
上限値を越えた時は、そのタスクに負荷が集中している
か、又はバッファ上限値が小さすぎることが考えられ、
S9に進んでタスク監視テーブルのパラメータを変更す
る必要がある。一方、実行レベル変更回数上限値を越え
ない時はS16に進む。尚、実行レベル変更回数はタス
ク生成時に0に設定されている。
げた後S7において実行レベル変更回数に1を加え、そ
の結果をS8において実行レベル変更回数上限値と比較
する。これは、同一タスクに対してカレント実行レベル
が頻繁に引き上げられたかどうか、すなわち、処理すべ
きデータがバッファに溜まりバッファ使用量が頻繁にバ
ッファ上限値を越えたかどうかを評価するためである。
あまりにも高い頻度でカレント実行レベルを引き上げる
時、つまり、実行レベル変更回数が実行レベル変更回数
上限値を越えた時は、そのタスクに負荷が集中している
か、又はバッファ上限値が小さすぎることが考えられ、
S9に進んでタスク監視テーブルのパラメータを変更す
る必要がある。一方、実行レベル変更回数上限値を越え
ない時はS16に進む。尚、実行レベル変更回数はタス
ク生成時に0に設定されている。
【0028】S9において、例えばバッファオーバー検
出回数上限値を現行の値より小さくすることにより、次
回以後カレント実行レベルの引き上げをさらに促進し、
データの処理をさらに速めることができる。このバッフ
ァオーバー検出回数上限値は最終的に0まで下げること
ができ、この場合バッファ使用量が一度でもバッファ上
限値を越えるとS6に進み、カレント実行レベルが引き
上げられる。
出回数上限値を現行の値より小さくすることにより、次
回以後カレント実行レベルの引き上げをさらに促進し、
データの処理をさらに速めることができる。このバッフ
ァオーバー検出回数上限値は最終的に0まで下げること
ができ、この場合バッファ使用量が一度でもバッファ上
限値を越えるとS6に進み、カレント実行レベルが引き
上げられる。
【0029】一方、S9において、又は現行のバッファ
上限値をそのタスクにとってより適正な値に引き上げる
ことにより、バッファオーバー検出回数の増加を抑制す
ることができ、無駄なカレント実行レベルの引き上げを
防止することができる。
上限値をそのタスクにとってより適正な値に引き上げる
ことにより、バッファオーバー検出回数の増加を抑制す
ることができ、無駄なカレント実行レベルの引き上げを
防止することができる。
【0030】また、S9がYESの場合、カレント実行
レベル引き上げのための判断基準(諸条件)が変わった
わけであるから、S10において実行レベル変更回数を
クリアし、0に戻してS16へ進む。
レベル引き上げのための判断基準(諸条件)が変わった
わけであるから、S10において実行レベル変更回数を
クリアし、0に戻してS16へ進む。
【0031】一方、バッファ使用量がもともと少ない
か、又はデータの処理が進んで少なくなり、S2からS
11に進んだ場合、S11においてバッファ使用量をバ
ッファ下限値と比較する。もしこれがバッファ下限値以
下の場合はS12に進み、そうでなければS16に進
む。
か、又はデータの処理が進んで少なくなり、S2からS
11に進んだ場合、S11においてバッファ使用量をバ
ッファ下限値と比較する。もしこれがバッファ下限値以
下の場合はS12に進み、そうでなければS16に進
む。
【0032】S12においては、カレント実行レベルを
初期化時の実行レベルと比較し、初期化時の実行レベル
より高ければS13に進んでバッファオーバー検出回数
より1を減じる。これは前回の監視タスク終了時以前に
S6により少なくとも一度はカレント実行レベルが引き
上げられたことがある場合に相当し、バッファオーバー
検出回数はS12において0より大きい値を持っている
はずである。もし一度もカレント実行レベルが引き上げ
られたことがなければ、そのタスクのカレント実行レベ
ルは初期化時の実行レベルに一致しているわけであるか
らS15の処理を必要としないので直ちにS16へ進
む。
初期化時の実行レベルと比較し、初期化時の実行レベル
より高ければS13に進んでバッファオーバー検出回数
より1を減じる。これは前回の監視タスク終了時以前に
S6により少なくとも一度はカレント実行レベルが引き
上げられたことがある場合に相当し、バッファオーバー
検出回数はS12において0より大きい値を持っている
はずである。もし一度もカレント実行レベルが引き上げ
られたことがなければ、そのタスクのカレント実行レベ
ルは初期化時の実行レベルに一致しているわけであるか
らS15の処理を必要としないので直ちにS16へ進
む。
【0033】S14においては、バッファオーバー検出
回数が0になったかどうかを判定し、0であればデータ
の処理が進んでバッファ使用量がバッファ下限値を下回
る状態が続いていると判断し、S15に進んでカレント
実行レベルを初期化時の実行レベルに戻す。こうして対
応するバッファに抱え込まれていた大量のデータの処理
がほぼ終わった時、より高い初期化時の実行レベルをも
つ他の層のタスクに優先順位を譲るわけである。バッフ
ァオーバー検出回数が0でなければ、引き続き優先的に
データ処理を行うためカレント実行レベルを保持しS1
6へ進む。
回数が0になったかどうかを判定し、0であればデータ
の処理が進んでバッファ使用量がバッファ下限値を下回
る状態が続いていると判断し、S15に進んでカレント
実行レベルを初期化時の実行レベルに戻す。こうして対
応するバッファに抱え込まれていた大量のデータの処理
がほぼ終わった時、より高い初期化時の実行レベルをも
つ他の層のタスクに優先順位を譲るわけである。バッフ
ァオーバー検出回数が0でなければ、引き続き優先的に
データ処理を行うためカレント実行レベルを保持しS1
6へ進む。
【0034】以上、S1からS15までの処理をタスク
A、タスクBのそれぞれについて行い、S16において
全ての層のタスクについて処理が終了したと判定したと
き監視タスクを終了する。
A、タスクBのそれぞれについて行い、S16において
全ての層のタスクについて処理が終了したと判定したと
き監視タスクを終了する。
【0035】この実施例の監視タスクはタスクのバッフ
ァ上限値、バッファオーバー検出回数上限値と共に、カ
レント実行レベルを動的に制御することを特徴としてい
る。次に、タスクA、タスクBに対する上述の処理を、
図2に示す具体的な数値を用いて説明する。尚、本実施
例ではタスクCのバッファ使用量を読み出していないた
め、図2のタスクCについては、初期化時の実行レベル
とカレント実行レベルのみが格納されている。
ァ上限値、バッファオーバー検出回数上限値と共に、カ
レント実行レベルを動的に制御することを特徴としてい
る。次に、タスクA、タスクBに対する上述の処理を、
図2に示す具体的な数値を用いて説明する。尚、本実施
例ではタスクCのバッファ使用量を読み出していないた
め、図2のタスクCについては、初期化時の実行レベル
とカレント実行レベルのみが格納されている。
【0036】まず、タスクAについてはカレント実行レ
ベルは初期化時の実行レベルに等しく1のままである
が、バッファオーバー検出回数は前回までの監視タスク
により、例えば3まで増加しているものとする。S1に
おいて読み出されたバッファ1−1のバッファ使用量は
同図に示すように、例えば80となっており、タスクA
のバッファ上限値70より大きいことがわかる。また、
S3の時点ではカレント実行レベルはタスクB、タスク
Cのカレント実行レベルより低いわけであるから、S4
にてバッファオーバー検出回数に1を加えこれを4とす
る。S5においてバッファオーバー検出回数が先に設定
されたバッファオーバー検出回数上限値、例えば3を越
えていると判定され、S6において、カレント実行レベ
ルがタスクCより高い4に引き上げられる。これにより
タスクAは以後S15で初期化時の実行レベルに戻され
るまで最優先で処理されることになる。このときS7に
より実行レベル変更回数は1となる。S8で実行レベル
変更回数上限値は10であるからS9には進まず処理を
終える。S16においてタスクBに対する処理がまだで
あるからS1に戻る。
ベルは初期化時の実行レベルに等しく1のままである
が、バッファオーバー検出回数は前回までの監視タスク
により、例えば3まで増加しているものとする。S1に
おいて読み出されたバッファ1−1のバッファ使用量は
同図に示すように、例えば80となっており、タスクA
のバッファ上限値70より大きいことがわかる。また、
S3の時点ではカレント実行レベルはタスクB、タスク
Cのカレント実行レベルより低いわけであるから、S4
にてバッファオーバー検出回数に1を加えこれを4とす
る。S5においてバッファオーバー検出回数が先に設定
されたバッファオーバー検出回数上限値、例えば3を越
えていると判定され、S6において、カレント実行レベ
ルがタスクCより高い4に引き上げられる。これにより
タスクAは以後S15で初期化時の実行レベルに戻され
るまで最優先で処理されることになる。このときS7に
より実行レベル変更回数は1となる。S8で実行レベル
変更回数上限値は10であるからS9には進まず処理を
終える。S16においてタスクBに対する処理がまだで
あるからS1に戻る。
【0037】次にタスクBが処理するバッファ1−2の
バッファ使用量は図2に示されているように、例えば4
0であり、バッファ上限値70より小さくバッファ下限
値30より大きい。この場合はカレント実行レベル等の
パラメータは変更を受けず、直ちにS16へ進み監視タ
スクを終了する。
バッファ使用量は図2に示されているように、例えば4
0であり、バッファ上限値70より小さくバッファ下限
値30より大きい。この場合はカレント実行レベル等の
パラメータは変更を受けず、直ちにS16へ進み監視タ
スクを終了する。
【0038】その後何回か定期的に監視タスクが起動さ
れた後、バッファ1−1のデータ処理が進んでバッファ
使用量が、例えば20のようなバッファ下限値30以下
の値になった時、S13にてタスクAのバッファオーバ
ー検出回数が減じられ、さらに3回連続してその傾向が
続けばバッファオーバー検出回数が0となるので、S1
5にてカレント実行レベルは4から1に引き下げられ
る。
れた後、バッファ1−1のデータ処理が進んでバッファ
使用量が、例えば20のようなバッファ下限値30以下
の値になった時、S13にてタスクAのバッファオーバ
ー検出回数が減じられ、さらに3回連続してその傾向が
続けばバッファオーバー検出回数が0となるので、S1
5にてカレント実行レベルは4から1に引き下げられ
る。
【0039】こうした動作を繰り返し11回目のカレン
ト実行レベルの引き上げが行われると、S8においてタ
スクAの実行レベル変更回数が実行レベル変更回数上限
値10を越えるので、S9に進みパラメータの変更が行
われ、S10にて実行レベル変更回数がクリアされる。
S9では、例えばバッファオーバー検出回数上限値が2
に下げられたり、或いはバッファ上限値が80に引き上
げられたりする。
ト実行レベルの引き上げが行われると、S8においてタ
スクAの実行レベル変更回数が実行レベル変更回数上限
値10を越えるので、S9に進みパラメータの変更が行
われ、S10にて実行レベル変更回数がクリアされる。
S9では、例えばバッファオーバー検出回数上限値が2
に下げられたり、或いはバッファ上限値が80に引き上
げられたりする。
【0040】ここで、特に監視タスクがS6において、
カレント実行レベルを引き上げる処理を図4(a)、
(b)に示す。タスクのカレント実行レベルは、主記憶
装置内の実行レベル管理ブロックにより管理されてい
る。実行レベル管理ブロックには各実行レベル毎にター
ミナルが用意され、タスクの起動要求があると、オペレ
ーティングシステムやモニタがそのタスクのタスク制御
ブロックを対応する実行レベルのターミナルに連結す
る。タスク制御ブロックには現在のタスク状態や割込み
禁止状態等を頻繁に参照できる情報が格納されており、
タスク管理ブロックのターミナルに連結されることによ
りタスク状態は実行可能状態へと移行する。
カレント実行レベルを引き上げる処理を図4(a)、
(b)に示す。タスクのカレント実行レベルは、主記憶
装置内の実行レベル管理ブロックにより管理されてい
る。実行レベル管理ブロックには各実行レベル毎にター
ミナルが用意され、タスクの起動要求があると、オペレ
ーティングシステムやモニタがそのタスクのタスク制御
ブロックを対応する実行レベルのターミナルに連結す
る。タスク制御ブロックには現在のタスク状態や割込み
禁止状態等を頻繁に参照できる情報が格納されており、
タスク管理ブロックのターミナルに連結されることによ
りタスク状態は実行可能状態へと移行する。
【0041】図4(a) はタスクA、タスクB、タスクC
のカレント実行レベルがそれぞれの初期化時の実行レベ
ルに一致している時、これらのタスク制御ブロックが対
応する各ターミナルに連結されている様子を示してい
る。このまま各タスクが起動さされると、スケジューラ
は実行レベル管理ブロック内のより高い実行レベルのタ
ーミナルに連結されているタスクから順に実行する。同
図(a) ではタスクC制御ブロックが実行レベル3のター
ミナルに連結されているので、タスクCが最初に実行さ
れ、完了するとタスクC制御ブロックはターミナルから
切り離される。次に、破線で示される如くタスクB、タ
スクAの順に実行されていく。
のカレント実行レベルがそれぞれの初期化時の実行レベ
ルに一致している時、これらのタスク制御ブロックが対
応する各ターミナルに連結されている様子を示してい
る。このまま各タスクが起動さされると、スケジューラ
は実行レベル管理ブロック内のより高い実行レベルのタ
ーミナルに連結されているタスクから順に実行する。同
図(a) ではタスクC制御ブロックが実行レベル3のター
ミナルに連結されているので、タスクCが最初に実行さ
れ、完了するとタスクC制御ブロックはターミナルから
切り離される。次に、破線で示される如くタスクB、タ
スクAの順に実行されていく。
【0042】ところが、タスクCよりも高い実行レベル
6を持つ監視タスクが、タスクAの処理対象であるバッ
ファ1−1のデータ処理が滞っていること、つまりバッ
ファ使用量がバッファ上限値を越えていることを検出す
ると、このとき監視タスクはS6において、タスクA制
御ブロックを実行レベル1ターミナルから切り離し、実
行レベル4ターミナルに連結する。この状態を示す図が
同図(b)であり、これを受けてタスクAには優先的に
実行権が与えられ、バッファ1−1のデータを処理す
る。タスクC、タスクBの処理は、S15にてタスクA
制御ブロックが実行レベル4のターミナルから切り離さ
れた後となる。
6を持つ監視タスクが、タスクAの処理対象であるバッ
ファ1−1のデータ処理が滞っていること、つまりバッ
ファ使用量がバッファ上限値を越えていることを検出す
ると、このとき監視タスクはS6において、タスクA制
御ブロックを実行レベル1ターミナルから切り離し、実
行レベル4ターミナルに連結する。この状態を示す図が
同図(b)であり、これを受けてタスクAには優先的に
実行権が与えられ、バッファ1−1のデータを処理す
る。タスクC、タスクBの処理は、S15にてタスクA
制御ブロックが実行レベル4のターミナルから切り離さ
れた後となる。
【0043】以上詳述したように、本実施例によれば監
視タスクによる実行レベルの引き上げ操作により、初期
化時において比較的小さな実行レベルを与えられた層の
バッファにデータが溜まった場合でも、これを優先的に
処理させることができる。またタスク監視テーブルのパ
ラメータを変更することにより、実行レベルの引き上げ
頻度を調節することができる。
視タスクによる実行レベルの引き上げ操作により、初期
化時において比較的小さな実行レベルを与えられた層の
バッファにデータが溜まった場合でも、これを優先的に
処理させることができる。またタスク監視テーブルのパ
ラメータを変更することにより、実行レベルの引き上げ
頻度を調節することができる。
【0044】
【発明の効果】本発明によれば、階層化されたソフトウ
ェアの各層がバッファをもつシステムにおいて、実行優
先順位の比較的低い層のバッファが大量のデータを抱え
込んだ場合にも、監視タスクがバッファ上限値を基準に
してタスクの実行レベルを動的に制御するタスク管理方
式により、システム全体の性能を損なわずに溜まったデ
ータの処理を促進し、データの取りこぼしやシステムの
デッドロックを回避することができる。
ェアの各層がバッファをもつシステムにおいて、実行優
先順位の比較的低い層のバッファが大量のデータを抱え
込んだ場合にも、監視タスクがバッファ上限値を基準に
してタスクの実行レベルを動的に制御するタスク管理方
式により、システム全体の性能を損なわずに溜まったデ
ータの処理を促進し、データの取りこぼしやシステムの
デッドロックを回避することができる。
【図面の簡単な説明】
【図1】一実施例の階層化された通信用ソフトウェアの
一般的な構成図である。
一般的な構成図である。
【図2】一実施例のタスク監視テーブルである。
【図3】一実施例の監視タスクによる処理フローチャー
トである。
トである。
【図4】一実施例の監視タスクによる実行レベル引き上
げ操作の説明図である。
げ操作の説明図である。
【図5】従来の通信用ソフトウェアの一般的な構成図で
ある。
ある。
1−1,1−2,1−3 バッファ
Claims (1)
- 【請求項1】 実行レベルの異なる階層化された複数の
タスクと、 該複数のタスクにより処理されるデータを格納するため
に各層毎に設けられたバッファと、 該バッファの使用量の閾値を設定する閾値設定手段と、 該閾値設定手段が設定した閾値を外れた時、前記タスク
の実行優先順位を変更する変更制御手段と、 を有することを特徴とするタスク管理方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5234558A JPH0793168A (ja) | 1993-09-21 | 1993-09-21 | タスク管理方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5234558A JPH0793168A (ja) | 1993-09-21 | 1993-09-21 | タスク管理方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0793168A true JPH0793168A (ja) | 1995-04-07 |
Family
ID=16972907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5234558A Withdrawn JPH0793168A (ja) | 1993-09-21 | 1993-09-21 | タスク管理方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0793168A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006012150A (ja) * | 2004-06-10 | 2006-01-12 | Thomson Licensing | 処理ユニットにおいてデータを処理するための方法及び装置 |
JP2007522561A (ja) * | 2004-02-06 | 2007-08-09 | インテル・コーポレーション | 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法 |
JP2008276739A (ja) * | 2007-04-05 | 2008-11-13 | Kyocera Mita Corp | 情報処理システム及び情報処理プログラム |
JP2010049314A (ja) * | 2008-08-19 | 2010-03-04 | Nec Corp | タスクスケジューリング装置およびタスクスケジューリング方法 |
JP2011030117A (ja) * | 2009-07-29 | 2011-02-10 | Nec Corp | 通信制御装置及びそれに用いる呼処理輻輳制御方法 |
JP2022524745A (ja) * | 2019-09-28 | 2022-05-10 | テンセント・アメリカ・エルエルシー | ステップ対応ワークフローのための方法及び装置 |
JP2022524746A (ja) * | 2019-09-28 | 2022-05-10 | テンセント・アメリカ・エルエルシー | ワークフローを処理する方法及び装置 |
-
1993
- 1993-09-21 JP JP5234558A patent/JPH0793168A/ja not_active Withdrawn
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007522561A (ja) * | 2004-02-06 | 2007-08-09 | インテル・コーポレーション | 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法 |
JP2006012150A (ja) * | 2004-06-10 | 2006-01-12 | Thomson Licensing | 処理ユニットにおいてデータを処理するための方法及び装置 |
JP2008276739A (ja) * | 2007-04-05 | 2008-11-13 | Kyocera Mita Corp | 情報処理システム及び情報処理プログラム |
JP2010049314A (ja) * | 2008-08-19 | 2010-03-04 | Nec Corp | タスクスケジューリング装置およびタスクスケジューリング方法 |
JP2011030117A (ja) * | 2009-07-29 | 2011-02-10 | Nec Corp | 通信制御装置及びそれに用いる呼処理輻輳制御方法 |
JP2022524745A (ja) * | 2019-09-28 | 2022-05-10 | テンセント・アメリカ・エルエルシー | ステップ対応ワークフローのための方法及び装置 |
JP2022524746A (ja) * | 2019-09-28 | 2022-05-10 | テンセント・アメリカ・エルエルシー | ワークフローを処理する方法及び装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6430594B1 (en) | Real-time operating system and a task management system therefor | |
EP0788053B1 (en) | Resource management method and apparatus for information processing system of multitasking facility | |
JP3588485B2 (ja) | プロセススケジューリング方式 | |
US9348628B2 (en) | Computer system | |
KR100864964B1 (ko) | 연산처리시스템 및 연산처리 제어방법, 업무관리시스템 및업무관리방법과 기억매체 | |
CN106557369B (zh) | 一种多线程的管理方法及系统 | |
US7441240B2 (en) | Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling | |
US7676610B2 (en) | Device and method for optimization of target host device process handling according to the status and the priority of the target host device process | |
US20030084088A1 (en) | Dynamic allocation of processing tasks using variable performance hardware platforms | |
JP4747307B2 (ja) | ネットワーク処理制御装置,プログラムおよび方法 | |
US20100251248A1 (en) | Job processing method, computer-readable recording medium having stored job processing program and job processing system | |
JPH0793168A (ja) | タスク管理方式 | |
CN104572286A (zh) | 一种基于分布式内存集群的任务调度方法 | |
US20230409391A1 (en) | Thread priority adjusting method, terminal, and computer-readable storage medium | |
CN106843890B (zh) | 基于智能决策的传感器网络、节点及其运行方法 | |
JPH10187636A (ja) | 消費電力低減クラスタシステム | |
JP2002073354A (ja) | タスク制御装置とタスク制御方法 | |
CN114706663A (zh) | 一种计算资源调度方法、介质及计算设备 | |
JPH11120147A (ja) | 負荷分散制御方法 | |
JPH07253893A (ja) | タスク優先度管理方式 | |
JPH1031592A (ja) | メモリ管理方法及びメモリ管理システム | |
JPH06243011A (ja) | データベースの自動メンテナンス方式 | |
JPH0417034A (ja) | タスクスケジューリング装置 | |
JPS62279433A (ja) | 動的タスク変更方式 | |
CN115408145A (zh) | 一种流计算的在线伸缩方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20001128 |