JPH04367057A - 複数タスクの実時間処理装置 - Google Patents
複数タスクの実時間処理装置Info
- Publication number
- JPH04367057A JPH04367057A JP14361091A JP14361091A JPH04367057A JP H04367057 A JPH04367057 A JP H04367057A JP 14361091 A JP14361091 A JP 14361091A JP 14361091 A JP14361091 A JP 14361091A JP H04367057 A JPH04367057 A JP H04367057A
- Authority
- JP
- Japan
- Prior art keywords
- task
- tasks
- priority
- real
- 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.)
- Pending
Links
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 238000000034 method Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000004043 responsiveness Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000007616 round robin method Methods 0.000 description 2
- 238000004886 process control Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Landscapes
- Bus Control (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、複数タスクの実時間処
理装置に関するものであり、さらに詳しくは、コンピュ
ータのリアルタイム・マルチタスクオペレーティングシ
ステムの改良に関するものである。
理装置に関するものであり、さらに詳しくは、コンピュ
ータのリアルタイム・マルチタスクオペレーティングシ
ステムの改良に関するものである。
【0002】
【従来の技術】従来、コンピュータの運用効率並びに操
作性を向上させるためにオペレーティングシステム(O
S)が広く用いられている。このうち、リアルタイム・
マルチタスクOSは、複数のタスク(マルチタスク)を
実時間(リアルタイム)で処理する機能を備えたOSで
あり、工場のプロセス制御やビル管理システムに利用さ
れている。リアルタイム・マルチタスクOSにおいて、
各タスクの実行順序を決めるアルゴリズムには、優先順
位方式とラウンドロビン方式のいずれか一方、あるいは
両方の組合せが一般的に用いられている。優先順位方式
では、予め設定した優先順位の高いタスクを先に実行し
、優先順位の低いタスクを後に実行する。また、ラウン
ドロビン方式では、並列実行させたいタスクに平等にC
PU時間を割り当てて、その時間内に終わらないタスク
は強制終了して実行待ち状態とし、次のタスクを実行す
る。
作性を向上させるためにオペレーティングシステム(O
S)が広く用いられている。このうち、リアルタイム・
マルチタスクOSは、複数のタスク(マルチタスク)を
実時間(リアルタイム)で処理する機能を備えたOSで
あり、工場のプロセス制御やビル管理システムに利用さ
れている。リアルタイム・マルチタスクOSにおいて、
各タスクの実行順序を決めるアルゴリズムには、優先順
位方式とラウンドロビン方式のいずれか一方、あるいは
両方の組合せが一般的に用いられている。優先順位方式
では、予め設定した優先順位の高いタスクを先に実行し
、優先順位の低いタスクを後に実行する。また、ラウン
ドロビン方式では、並列実行させたいタスクに平等にC
PU時間を割り当てて、その時間内に終わらないタスク
は強制終了して実行待ち状態とし、次のタスクを実行す
る。
【0003】従来の標準的なリアルタイム・マルチタス
クOSにおけるタスク処理順序の決定アルゴリズムを図
5に例示する。今、複数のタスクT1,T2,T3,T
4,T5,T6,…のプライオリティ(優先順位)が、
図5に示す通りであるとする。すなわち、タスクT1,
T2,T3が同一順位で第1順位、タスクT4が第2順
位、タスクT5,T6が同一順位で第3順位とする。第
1順位のタスクT1,T2,T3は、矢印Aに示すよう
に、時分割的に順次実行される。そして、第1順位のタ
スクT1,T2,T3の実行が終了すれば、次に、矢印
Bに示すように、第2順位のタスクT4が実行される。 そして、第2順位のタスクT4の実行が終了すれば、次
に、矢印Cに示すように、第3順位のタスクT5,T6
が時分割的に順次実行される。
クOSにおけるタスク処理順序の決定アルゴリズムを図
5に例示する。今、複数のタスクT1,T2,T3,T
4,T5,T6,…のプライオリティ(優先順位)が、
図5に示す通りであるとする。すなわち、タスクT1,
T2,T3が同一順位で第1順位、タスクT4が第2順
位、タスクT5,T6が同一順位で第3順位とする。第
1順位のタスクT1,T2,T3は、矢印Aに示すよう
に、時分割的に順次実行される。そして、第1順位のタ
スクT1,T2,T3の実行が終了すれば、次に、矢印
Bに示すように、第2順位のタスクT4が実行される。 そして、第2順位のタスクT4の実行が終了すれば、次
に、矢印Cに示すように、第3順位のタスクT5,T6
が時分割的に順次実行される。
【0004】このように、従来のリアルタイム・マルチ
タスクOSでは、複数のタスクを実時間処理しようとす
るとき、その実行順序は各タスクに予めジェネレーショ
ン時に割り当てられたプライオリティによって決定され
、そのプライオリティが高いものから順次処理される。 さらに、同一プライオリティのタスク間では、FIFO
(First In First Out)のア
ルゴリズムに従い、先に入力されたタスクが先に実行さ
れるように、順次処理される。なお、タスクの処理待ち
順序は、システムコールあるいは割り込み処理の発生時
に決定される。
タスクOSでは、複数のタスクを実時間処理しようとす
るとき、その実行順序は各タスクに予めジェネレーショ
ン時に割り当てられたプライオリティによって決定され
、そのプライオリティが高いものから順次処理される。 さらに、同一プライオリティのタスク間では、FIFO
(First In First Out)のア
ルゴリズムに従い、先に入力されたタスクが先に実行さ
れるように、順次処理される。なお、タスクの処理待ち
順序は、システムコールあるいは割り込み処理の発生時
に決定される。
【0005】
【発明が解決しようとする課題】従来のリアルタイム・
マルチタスクOSでは、複数のタスクが同時に動作要求
を出しているとき、その処理は一貫して上述の手順で実
行される。しかし、実際には或る条件が成立したとき、
その次に行われる処理は経験的に予想できる。例えば、
ビル管理のシステムでは、警報が発生したときにユーザ
ーが行う処理としては、まず、その警報の箇所を調べて
、処理対策のマニュアルを見た後、その処理対策を実行
することが予想できる。このような場合、警報の箇所を
調べるための処理タスクや、処理対策のマニュアルを見
るための処理タスク、並びに処理対策の実行タスクが、
通常時よりも高いレベルのプライオリティで待ちの状態
にあることが望ましい。しかるに、従来のOSでは、ジ
ェネレーション時のプライオリティに従ってタスクの実
行順序が決定されるため、見た目の反応が遅いように感
じられることがある。
マルチタスクOSでは、複数のタスクが同時に動作要求
を出しているとき、その処理は一貫して上述の手順で実
行される。しかし、実際には或る条件が成立したとき、
その次に行われる処理は経験的に予想できる。例えば、
ビル管理のシステムでは、警報が発生したときにユーザ
ーが行う処理としては、まず、その警報の箇所を調べて
、処理対策のマニュアルを見た後、その処理対策を実行
することが予想できる。このような場合、警報の箇所を
調べるための処理タスクや、処理対策のマニュアルを見
るための処理タスク、並びに処理対策の実行タスクが、
通常時よりも高いレベルのプライオリティで待ちの状態
にあることが望ましい。しかるに、従来のOSでは、ジ
ェネレーション時のプライオリティに従ってタスクの実
行順序が決定されるため、見た目の反応が遅いように感
じられることがある。
【0006】本発明はこのような点に鑑みてなされたも
のであり、その目的とするところは、複数のタスクを実
時間で処理するリアルタイム・マルチタスクOSにおい
て、所定の条件が満たされる場合には所定のタスクの優
先順位を変更することにより、実時間応答性を高めるこ
とにある。
のであり、その目的とするところは、複数のタスクを実
時間で処理するリアルタイム・マルチタスクOSにおい
て、所定の条件が満たされる場合には所定のタスクの優
先順位を変更することにより、実時間応答性を高めるこ
とにある。
【0007】
【課題を解決するための手段】本発明に係る複数タスク
の実時間処理装置にあっては、上記の課題を解決するた
めに、図1に示すように、複数のタスクの各々に割り当
てられた優先順位を記憶するタスク優先順位記憶手段1
と、タスク優先順位記憶手段1の記憶内容を参照して優
先順位の高いタスクを優先順位の低いタスクよりも先に
実行し、同一優先順位のタスクは所定の順序で循環的に
実行する実行タスク切換手段2とを備えるCPU制御装
置において、所定の条件を判定する条件判定手段3と、
条件判定手段3により所定の条件が判定されたときにタ
スク優先順位記憶手段1に記憶された優先順位を変更す
る優先順位変更手段4とを備えることを特徴とするもの
である。
の実時間処理装置にあっては、上記の課題を解決するた
めに、図1に示すように、複数のタスクの各々に割り当
てられた優先順位を記憶するタスク優先順位記憶手段1
と、タスク優先順位記憶手段1の記憶内容を参照して優
先順位の高いタスクを優先順位の低いタスクよりも先に
実行し、同一優先順位のタスクは所定の順序で循環的に
実行する実行タスク切換手段2とを備えるCPU制御装
置において、所定の条件を判定する条件判定手段3と、
条件判定手段3により所定の条件が判定されたときにタ
スク優先順位記憶手段1に記憶された優先順位を変更す
る優先順位変更手段4とを備えることを特徴とするもの
である。
【0008】
【作用】本発明では、複数のタスクを実時間で処理する
に際して、タスク優先順位記憶手段1に記憶された各タ
スクの優先順位に基づいて、優先順位の高いタスクを先
に実行し、優先順位の低いタスクを後に実行するように
、実行タスク切換手段2により実行タスクを切り換える
。この実行タスク切換手段2では、同一優先順位のタス
クについては、所定の順序で循環的に各タスクを実行す
るように、実行タスクを切り換えて行く。
に際して、タスク優先順位記憶手段1に記憶された各タ
スクの優先順位に基づいて、優先順位の高いタスクを先
に実行し、優先順位の低いタスクを後に実行するように
、実行タスク切換手段2により実行タスクを切り換える
。この実行タスク切換手段2では、同一優先順位のタス
クについては、所定の順序で循環的に各タスクを実行す
るように、実行タスクを切り換えて行く。
【0009】条件判定手段3では、所定の条件が満たさ
れるか否かを判定する。そして、所定の条件が満たされ
る場合には、タスク優先順位記憶手段1に記憶された所
定のタスクの優先順位を優先順位変更手段4により変更
する。このようにすれば、所定の条件の下で優先的に処
理されるべきタスクが先に実行されるように実行順序が
変更され、実時間応答性を高めることができる。
れるか否かを判定する。そして、所定の条件が満たされ
る場合には、タスク優先順位記憶手段1に記憶された所
定のタスクの優先順位を優先順位変更手段4により変更
する。このようにすれば、所定の条件の下で優先的に処
理されるべきタスクが先に実行されるように実行順序が
変更され、実時間応答性を高めることができる。
【0010】
【実施例】図2は本発明の一実施例のハードウェア構成
を示すブロック図である。図中、10はバスラインであ
り、アドレスバスとデータバス及び制御バスを含んでい
る。11はCPUであり、いわゆるノイマン型のプログ
ラム実行機能を備えている。12は外部I/O装置であ
り、外部からデータを入力したり、外部にデータを出力
する機能を有する。13はキーボード、14はCRTデ
ィスプレイであり、オペレータ(操作者)とコンピュー
タとの間のマン−マシン・インターフェイスとして利用
される。15はROMであり、オペレーティングシステ
ム(OS)や必要なプログラムが格納されている。16
はRAMであり、各種の変数やフラグ、テーブル等が格
納されている。なお、本実施例では、CPU11は内蔵
タイマ20を備えているものとする。内蔵タイマ20は
一定時間又はプログラムされた時間毎に割り込みを発生
させて、タスクの切り換えを行うために利用される。
を示すブロック図である。図中、10はバスラインであ
り、アドレスバスとデータバス及び制御バスを含んでい
る。11はCPUであり、いわゆるノイマン型のプログ
ラム実行機能を備えている。12は外部I/O装置であ
り、外部からデータを入力したり、外部にデータを出力
する機能を有する。13はキーボード、14はCRTデ
ィスプレイであり、オペレータ(操作者)とコンピュー
タとの間のマン−マシン・インターフェイスとして利用
される。15はROMであり、オペレーティングシステ
ム(OS)や必要なプログラムが格納されている。16
はRAMであり、各種の変数やフラグ、テーブル等が格
納されている。なお、本実施例では、CPU11は内蔵
タイマ20を備えているものとする。内蔵タイマ20は
一定時間又はプログラムされた時間毎に割り込みを発生
させて、タスクの切り換えを行うために利用される。
【0011】図3は本実施例のリアルタイムOSにおけ
るタスクの処理順序決定の原理を概念的に示している。 このOSでは、タスクの処理順序を決定する際に、従来
のタスク単位のプライオリティだけでなく、メモリープ
ールの使用状況、各キューの待ち状況、実メモリー内及
び実メモリー外のタスクの状況、実行中タスク、停止中
タスク、割り込みの状況、さらに、警報等に応じた参照
ルールに応じて、動的にプライオリティを変化させなが
ら、最適なタスクの処理順序を決定するものである。
るタスクの処理順序決定の原理を概念的に示している。 このOSでは、タスクの処理順序を決定する際に、従来
のタスク単位のプライオリティだけでなく、メモリープ
ールの使用状況、各キューの待ち状況、実メモリー内及
び実メモリー外のタスクの状況、実行中タスク、停止中
タスク、割り込みの状況、さらに、警報等に応じた参照
ルールに応じて、動的にプライオリティを変化させなが
ら、最適なタスクの処理順序を決定するものである。
【0012】図4は本実施例のリアルタイムOSの構成
を更に具体的に示すブロック図である。図中、#1はデ
ィスパッチャであり、本システムの特徴となる部分であ
る。これは以下に述べる各管理ブロック#2〜#5から
の情報と#7の参照ルールから、#6のタスク処理順序
を決定するブロックである。#2は現在発生中の割り込
みの種類とその処理状況を管理する割り込み管理ブロッ
クである。#3は各メモリプールの使用状況を管理する
プール使用状況管理ブロックである。メモリプールの使
用状況としては、各メモリプールの空きとフリーブロッ
クの所有タスクが管理対象となる。#4は各キューの待
ち状況を管理するキュー管理ブロックである。#5は現
在の各レベルでの処理待ちの対象となっているタスクの
状況を管理するタスク状況管理ブロックである。
を更に具体的に示すブロック図である。図中、#1はデ
ィスパッチャであり、本システムの特徴となる部分であ
る。これは以下に述べる各管理ブロック#2〜#5から
の情報と#7の参照ルールから、#6のタスク処理順序
を決定するブロックである。#2は現在発生中の割り込
みの種類とその処理状況を管理する割り込み管理ブロッ
クである。#3は各メモリプールの使用状況を管理する
プール使用状況管理ブロックである。メモリプールの使
用状況としては、各メモリプールの空きとフリーブロッ
クの所有タスクが管理対象となる。#4は各キューの待
ち状況を管理するキュー管理ブロックである。#5は現
在の各レベルでの処理待ちの対象となっているタスクの
状況を管理するタスク状況管理ブロックである。
【0013】次に、#7の参照ルールについて詳述する
。これは、ターゲットシステムの作成時にユーザーが作
成する動的なタスクプライオリティの変更のためのルー
ルである。ここで、このルールの表記法はC言語に準拠
するものとするが、使用可能な関数は以下に定義された
ものだけとする。以下、#7の参照ルールで使用する関
数について説明する。
。これは、ターゲットシステムの作成時にユーザーが作
成する動的なタスクプライオリティの変更のためのルー
ルである。ここで、このルールの表記法はC言語に準拠
するものとするが、使用可能な関数は以下に定義された
ものだけとする。以下、#7の参照ルールで使用する関
数について説明する。
【0014】(1)PriGet
これは、タスクの現在のプライオリティ値を得るための
関数であり、その書式は次の通りとする。 ret=PriGet(taskname);ここで、
tasknameはタスク名であり、返却値は、指定の
タスクが存在しなかった場合には、ret=−1となり
、指定のタスクが存在する場合には、そのタスクの現在
のプライオリティ値Priを得ることができ、ret=
Priとなる。
関数であり、その書式は次の通りとする。 ret=PriGet(taskname);ここで、
tasknameはタスク名であり、返却値は、指定の
タスクが存在しなかった場合には、ret=−1となり
、指定のタスクが存在する場合には、そのタスクの現在
のプライオリティ値Priを得ることができ、ret=
Priとなる。
【0015】(2)PriSet
これは、タスクのプライオリティ値をセットするための
関数であり、その書式は次の通りとする。 ret=PriSet(taskname,num{,
−u,−d,−s}〔,−t〕); ここで、tasknameはタスク名であり、numは
0〜255の数値である。返却値は、正常終了時には、
ret=0となり、指定のタスクが存在しなかった場合
には、ret=−1となる。オプション−uは、num
で示された値だけタスクのプライオリティを上げる。た
だし、上限を越える値が指定されたときは上限値で切り
捨てる。オプション−dは、numで示された値だけタ
スクのプライオリティを下げる。ただし、下限を下回る
値が指定されたときは下限値で切り上げる。オプション
−sは、numで示した値をタスクのプライオリティと
して新たに設定する。ただし、上下限を越える値が指定
されたときは上下限値で切り捨てる。オプション−tは
、そのタスクが停止すると同時に元のプライオリティに
戻す。なお、〔〕は省略可能である。
関数であり、その書式は次の通りとする。 ret=PriSet(taskname,num{,
−u,−d,−s}〔,−t〕); ここで、tasknameはタスク名であり、numは
0〜255の数値である。返却値は、正常終了時には、
ret=0となり、指定のタスクが存在しなかった場合
には、ret=−1となる。オプション−uは、num
で示された値だけタスクのプライオリティを上げる。た
だし、上限を越える値が指定されたときは上限値で切り
捨てる。オプション−dは、numで示された値だけタ
スクのプライオリティを下げる。ただし、下限を下回る
値が指定されたときは下限値で切り上げる。オプション
−sは、numで示した値をタスクのプライオリティと
して新たに設定する。ただし、上下限を越える値が指定
されたときは上下限値で切り捨てる。オプション−tは
、そのタスクが停止すると同時に元のプライオリティに
戻す。なお、〔〕は省略可能である。
【0016】また、第2の書式として、次の書式も使用
可能とする。 ret=PriSet(taskname,DEFPR
I); ここで、tasknameはタスク名であり、DEFP
RIはジェネレーション時に決められた値である。この
書式を使用した場合には、指定のタスクのプラオリティ
をジェネレーション時に決められた値に戻すことができ
る。
可能とする。 ret=PriSet(taskname,DEFPR
I); ここで、tasknameはタスク名であり、DEFP
RIはジェネレーション時に決められた値である。この
書式を使用した場合には、指定のタスクのプラオリティ
をジェネレーション時に決められた値に戻すことができ
る。
【0017】(3)WakeUp
これは、タスクを立ち上げるための関数であり、その書
式は次の通りとする。 ret=WakeUp(taskname);ここで、
tasknameはタスク名であり、返却値は、指定の
タスクが存在しなかった場合には、ret=−1となり
、指定のタスクが既に動作中である場合には、ret=
1となり、正常終了時には、ret=0となる。
式は次の通りとする。 ret=WakeUp(taskname);ここで、
tasknameはタスク名であり、返却値は、指定の
タスクが存在しなかった場合には、ret=−1となり
、指定のタスクが既に動作中である場合には、ret=
1となり、正常終了時には、ret=0となる。
【0018】(4)Sleep
これは、タスクを停止させるための関数であり、その書
式は次の通りとする。 ret=Sleep(taskname);ここで、t
asknameはタスク名であり、返却値は、指定のタ
スクが存在しなかった場合には、ret=−1となり、
指定のタスクが既に停止中である場合には、ret=1
となり、正常終了時には、ret=0となる。
式は次の通りとする。 ret=Sleep(taskname);ここで、t
asknameはタスク名であり、返却値は、指定のタ
スクが存在しなかった場合には、ret=−1となり、
指定のタスクが既に停止中である場合には、ret=1
となり、正常終了時には、ret=0となる。
【0019】(5)I/O
これは、登録外部I/Oからのアクセス情報を得るため
の関数であり、その書式は次の通りとする。 ret=I/O(IOname); ここで、IOnameは外部I/O(ポート)名であり
、返却値は、指定の外部I/Oが存在しなかった場合に
は、ret=−1となり、指定の外部I/Oからのアク
セスがあった場合には、ret=0となる。
の関数であり、その書式は次の通りとする。 ret=I/O(IOname); ここで、IOnameは外部I/O(ポート)名であり
、返却値は、指定の外部I/Oが存在しなかった場合に
は、ret=−1となり、指定の外部I/Oからのアク
セスがあった場合には、ret=0となる。
【0020】(6)PoolFree
これは指定されたプールのフリーブロックサイズを得る
ための関数であり、その書式は次の通りとする。 ret=PoolFree(Poolname);ここ
で、Poolnameはプール名であり、返却値は、指
定のプールが存在しなかった場合には、ret=−1と
なり、指定のプールが存在する場合には、そのプールの
フリーブロックバイト数Freeを得ることができ、r
et=Freeとなる。
ための関数であり、その書式は次の通りとする。 ret=PoolFree(Poolname);ここ
で、Poolnameはプール名であり、返却値は、指
定のプールが存在しなかった場合には、ret=−1と
なり、指定のプールが存在する場合には、そのプールの
フリーブロックバイト数Freeを得ることができ、r
et=Freeとなる。
【0021】(7)PoolBlockこれは指定され
たプール内のメモリーブロックの使用状況を得るための
関数であり、その書式は次の通りとする。 ret=PoolBlock(Poolname);こ
こで、Poolnameはプール名であり、返却値は、
指定のプールが存在しなかった場合には、ret=−1
となり、指定のプールが存在する場合には、そのプール
内のメモリーブロックの使用状況を格納した構造体変数
Blockを得ることができ、ret=Blockとな
る。
たプール内のメモリーブロックの使用状況を得るための
関数であり、その書式は次の通りとする。 ret=PoolBlock(Poolname);こ
こで、Poolnameはプール名であり、返却値は、
指定のプールが存在しなかった場合には、ret=−1
となり、指定のプールが存在する場合には、そのプール
内のメモリーブロックの使用状況を格納した構造体変数
Blockを得ることができ、ret=Blockとな
る。
【0022】ここで、構造体変数Blockは、C言語
のstruct文を用いて、次のように定義される。 struct Block{unsigned i
nt Count;unsigned char
*Whos〔_BMAX,1〕;}; ここで、変数Countは、符号を持たない整数値(0
〜65535)のデータ型を有しており、使用中のブロ
ックの総数を示す。また、*Whos〔_BMAX,1
〕はポインター配列であり、ポインター演算子(*)が
付いている文字型の配列変数である。_BMAXはシス
テム変数であり、1プール内の最大ブロック数を表す。 第2添字=0の場合、各ブロックの所有タスク名が格納
されており、第2添字=1の場合、各ブロックの先頭ア
ドレスが格納されている。
のstruct文を用いて、次のように定義される。 struct Block{unsigned i
nt Count;unsigned char
*Whos〔_BMAX,1〕;}; ここで、変数Countは、符号を持たない整数値(0
〜65535)のデータ型を有しており、使用中のブロ
ックの総数を示す。また、*Whos〔_BMAX,1
〕はポインター配列であり、ポインター演算子(*)が
付いている文字型の配列変数である。_BMAXはシス
テム変数であり、1プール内の最大ブロック数を表す。 第2添字=0の場合、各ブロックの所有タスク名が格納
されており、第2添字=1の場合、各ブロックの先頭ア
ドレスが格納されている。
【0023】(8)Que
これは指定されたキューの待ちフリーブロックの状況を
得るための関数であり、その書式は次の通りとする。 ret=Que(Quename); ここで、Quenameはキュー名であり、返却値は、
指定のキューが存在しなかった場合には、ret=−1
となり、指定のキューが存在する場合には、そのキュー
の待ちフリーブロックの使用状況を格納した構造体変数
Queを得ることができ、ret=Queとなる。
得るための関数であり、その書式は次の通りとする。 ret=Que(Quename); ここで、Quenameはキュー名であり、返却値は、
指定のキューが存在しなかった場合には、ret=−1
となり、指定のキューが存在する場合には、そのキュー
の待ちフリーブロックの使用状況を格納した構造体変数
Queを得ることができ、ret=Queとなる。
【0024】ここで、構造体変数Queは、C言語のs
truct文を用いて、次のように定義される。 struct Que{unsigned int
Count;unsigned char *
Whos〔_QMAX,1〕;}; ここで、変数Countは、符号を持たない整数値(0
〜65535)のデータ型を有しており、待ちになって
いるキューの総数を示す。また、*Whos〔_QMA
X〕はポインター配列であり、ポインター演算子(*)
が付いている文字型の配列変数である。_QMAXはシ
ステム変数であり、1キューに入る最大フリーブロック
数を表す。
truct文を用いて、次のように定義される。 struct Que{unsigned int
Count;unsigned char *
Whos〔_QMAX,1〕;}; ここで、変数Countは、符号を持たない整数値(0
〜65535)のデータ型を有しており、待ちになって
いるキューの総数を示す。また、*Whos〔_QMA
X〕はポインター配列であり、ポインター演算子(*)
が付いている文字型の配列変数である。_QMAXはシ
ステム変数であり、1キューに入る最大フリーブロック
数を表す。
【0025】以上のような関数を用いて表記された#7
の参照ルールを、#1のディスパッチャはシステム起動
直後に内部テーブルに登録し、実行時に参照しながら#
6の動的プライオリティを最適な状態で生み出して行く
ものである。
の参照ルールを、#1のディスパッチャはシステム起動
直後に内部テーブルに登録し、実行時に参照しながら#
6の動的プライオリティを最適な状態で生み出して行く
ものである。
【0026】
【発明の効果】本発明では、優先順位の高いタスクを優
先順位の低いタスクよりも先に実行し、同一優先順位の
タスクは所定の順序で循環的に実行する複数タスクの実
時間処理装置において、所定の条件を判定する条件判定
手段と、条件判定手段により所定の条件が判定されたと
きにタスク優先順位記憶手段に記憶された優先順位を変
更する優先順位変更手段とを設けたものであるから、所
定の条件が満たされる場合には所定のタスクの優先順位
を変更することができ、これにより、実時間応答性を高
めることができ、自由度の高い最適制御が可能となると
いう効果がある。
先順位の低いタスクよりも先に実行し、同一優先順位の
タスクは所定の順序で循環的に実行する複数タスクの実
時間処理装置において、所定の条件を判定する条件判定
手段と、条件判定手段により所定の条件が判定されたと
きにタスク優先順位記憶手段に記憶された優先順位を変
更する優先順位変更手段とを設けたものであるから、所
定の条件が満たされる場合には所定のタスクの優先順位
を変更することができ、これにより、実時間応答性を高
めることができ、自由度の高い最適制御が可能となると
いう効果がある。
【図1】本発明の基本構成を示すクレーム対応ブロック
図である。
図である。
【図2】本発明の一実施例のハードウェア構成を示すブ
ロック図である。
ロック図である。
【図3】本発明におけるタスクの処理順序決定の原理を
概念的に示す図である。
概念的に示す図である。
【図4】本発明のシステム構成を示すブロック図である
。
。
【図5】従来例の動作説明図である。
1 タスク優先順位記憶手段
2 実行タスク切換手段
3 条件判定手段
4 優先順位変更手段
Claims (1)
- 【請求項1】 複数のタスクの各々に割り当てら
れた優先順位を記憶するタスク優先順位記憶手段と、タ
スク優先順位記憶手段の記憶内容を参照して優先順位の
高いタスクを優先順位の低いタスクよりも先に実行し、
同一優先順位のタスクは所定の順序で循環的に実行する
実行タスク切換手段とを備えるCPU制御装置において
、所定の条件を判定する条件判定手段と、条件判定手段
により所定の条件が判定されたときにタスク優先順位記
憶手段に記憶された優先順位を変更する優先順位変更手
段とを備えることを特徴とする複数タスクの実時間処理
装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP14361091A JPH04367057A (ja) | 1991-06-14 | 1991-06-14 | 複数タスクの実時間処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP14361091A JPH04367057A (ja) | 1991-06-14 | 1991-06-14 | 複数タスクの実時間処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH04367057A true JPH04367057A (ja) | 1992-12-18 |
Family
ID=15342739
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP14361091A Pending JPH04367057A (ja) | 1991-06-14 | 1991-06-14 | 複数タスクの実時間処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH04367057A (ja) |
-
1991
- 1991-06-14 JP JP14361091A patent/JPH04367057A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7810096B2 (en) | Computer executing multiple operating systems | |
| US5390329A (en) | Responding to service requests using minimal system-side context in a multiprocessor environment | |
| US8612986B2 (en) | Computer program product for scheduling ready threads in a multiprocessor computer based on an interrupt mask flag value associated with a thread and a current processor priority register value | |
| US5469571A (en) | Operating system architecture using multiple priority light weight kernel task based interrupt handling | |
| US6360243B1 (en) | Method, device and article of manufacture for implementing a real-time task scheduling accelerator | |
| US5333319A (en) | Virtual storage data processor with enhanced dispatching priority allocation of CPU resources | |
| US5452452A (en) | System having integrated dispatcher for self scheduling processors to execute multiple types of processes | |
| US5666523A (en) | Method and system for distributing asynchronous input from a system input queue to reduce context switches | |
| US8612659B1 (en) | Hardware interrupt arbitration in virtualized computer systems | |
| US7296271B1 (en) | Replaceable scheduling algorithm in multitasking kernel | |
| US8135894B1 (en) | Methods and systems for reducing interrupt latency by using a dedicated bit | |
| CN116360941A (zh) | 一种面向多核dsp的并行计算资源自组织调度方法及系统 | |
| Manner | Hardware task/processor scheduling in a polyprocessor environment | |
| Gupta et al. | MAKING EFFECTIVE USE OF SHARED-MEMORY MULTIPROCESSORS: THE PROCESS CONTROL APPROACH (REV. | |
| JP2001249808A (ja) | 情報処理装置 | |
| CN120216124A (zh) | 一种用户中断事件回调机制实现方法 | |
| JPH04367057A (ja) | 複数タスクの実時間処理装置 | |
| JPH04367035A (ja) | 複数タスクの実時間処理装置 | |
| JP3349547B2 (ja) | スケジューリングシステム | |
| KR100506254B1 (ko) | 임베디드 시스템의 비특권 모드에서 인터럽트 처리를 위한장치 및 방법 | |
| WO1992003783A1 (en) | Method of implementing kernel functions | |
| Labrosse | Operating systems | |
| JPH08314740A (ja) | プロセスディスパッチ方法 | |
| Papadimitriou et al. | A Comparative Evaluation of Core Kernel Features of the Recent Linux, FreeBSD, Solaris, and Windows Operating Systems | |
| JPH03253965A (ja) | コントローラによるマルチタスク処理方式 |