JP2636722B2 - マルチタスク実行管理方式 - Google Patents

マルチタスク実行管理方式

Info

Publication number
JP2636722B2
JP2636722B2 JP5347290A JP34729093A JP2636722B2 JP 2636722 B2 JP2636722 B2 JP 2636722B2 JP 5347290 A JP5347290 A JP 5347290A JP 34729093 A JP34729093 A JP 34729093A JP 2636722 B2 JP2636722 B2 JP 2636722B2
Authority
JP
Japan
Prior art keywords
event
task
control block
execution
queued
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP5347290A
Other languages
English (en)
Other versions
JPH07191863A (ja
Inventor
盛一 古川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP5347290A priority Critical patent/JP2636722B2/ja
Publication of JPH07191863A publication Critical patent/JPH07191863A/ja
Application granted granted Critical
Publication of JP2636722B2 publication Critical patent/JP2636722B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は情報処理装置におけるマ
ルチタスク実行管理方式に関し、特に複数のタスクから
構成され各タスクに幾つかのイベントの処理を分担させ
るようにしたマルチタスク構造のプログラムに適したマ
ルチタスク実行管理方式に関する。
【0002】
【従来の技術】従来、この種のマルチタスク実行管理方
式では、イベントの発生時、そのイベントを処理するタ
スクをスケジュールしてそのタスクにCPUの使用権を
付与し、以後、そのタスクがCPUの使用権を放棄する
まで動作させ続けるような管理方式を採用している(例
えば特開平2−12433号公報参照)。
【0003】
【発明が解決しようとする課題】従来は上述したような
管理方式をとっているため、例えばイベントAが発生し
たときに、タスク1を起動して所定の処理a1を行わ
せ、この処理a1の完了後に別のタスク2に所定の処理
dを行わせ、この処理dの完了後に再びタスク1に処理
a2を行わせるといったように、他のタスクと連けいし
て処理を進める逐次実行動作を実現する場合、イベント
Aで起動されたタスク1をそのイベント処理途中に実行
停止させることができないため、結果的にタスク1に分
担させるべきイベント数が増大することになる。
【0004】即ち、タスク1は、イベントAとは別に例
えばイベントXも分担するようにしておき、タスク1の
イベントAに関する処理としては、図10(a)に示す
ように、処理a1を行った後、例えばイベントDを発行
してタスク2を起動した後、処理を完了するようプログ
ラミングし、且つ、図10(b)に示すようにタスク1
のイベントXに関する処理として、後続の処理a2を行
うようプログラミングする必要がある。なお、タスク2
はイベントDの発行時に起動され、処理dを行うとイベ
ントXを出してタスク2を起動するようプログラミング
される。
【0005】このように他のタスクと連けいして処理を
進める逐次実行動作を実現する場合、従来のマルチタス
ク実行管理方式では、新たなイベントを新設してイベン
ト毎に動作を分割してプログラミングしなければなら
ず、プログラミングが複雑化し、且つ、処理a1,a2
という本来関連する処理がそれぞれ別個のイベント処理
として記述されるためプログラムの解読性が悪化し、そ
の保守等が困難になるという問題点がある。これは、1
つのタスクに分担させる逐次実行動作の数が増えれば増
えるほど顕著になる。
【0006】本発明はこのような事情に鑑みて提案され
たものであり、その目的は、イベント処理途中における
タスクの一時的な実行停止を可能にすることにより、他
のタスクとの間でイベントを送受しながら処理を進める
逐次実行動作の流れを、1つのイベントに対応する連続
した処理の流れとしてプログラミングできるようにする
ことにある。
【0007】
【課題を解決するための手段】本発明は上記の目的を達
成するために、複数のタスクから構成され各タスクに幾
つかのイベントにかかる処理を分担させるようにしたマ
ルチタスク構造のプログラムにおける前記各タスクの実
行を管理するマルチタスク実行管理方式において、各タ
スク対応にそのタスクが受け持つイベント毎のレジスタ
退避域を備えると共に、イベント処理途中のタスクから
実行停止要求が出されたとき、該タスクの実行を中断し
て各種レジスタの値を前記中断したタスクのその処理中
のイベントに対応するレジスタ退避域に退避しておき、
他タスクからの前記中断中タスクの前記中断したイベン
トの実行禁止解除の要求に応答して前記レジスタ退避域
に退避された各種レジスタの値を復元して前記中断箇所
から前記中断中のタスクの実行を再開するように構成し
ている。具体的には、 前記プログラムで処理すべきイベ
ントの発生時およびイベント処理途中のタスクからの実
行停止要求時、CPUで実行中のタスクを中断して各種
レジスタの値を前記中断したタスクのタスク制御ブロッ
クにキューイングされている現処理中のイベントに対応
するイベント制御ブロックに退避すると共に、実行停止
要求時には該イベント制御ブロック中の実行フラグを実
行禁止に設定する手段と、 前記発生したイベントのイベ
ントコード,実行許可に設定した実行フラグおよび各種
レジスタの初期値を含むイベント制御ブロックをそのイ
ベントを処理するタスクのタスク制御ブロックにキュー
イングする手段と、 各タスク制御ブロックにキューイン
グされているイベント制御ブロックのうち、実行フラグ
が実行許可を示し且つ最も優先度の高いイベントに対応
するイベント制御ブロックを選択する手段と、 該選択し
たイベント制御ブロックに格納されている各種レジスタ
の値を前記CPUの各種レジスタにセットして、そのイ
ベント制御ブロックがキューイングされているタスク制
御ブロックに対応するタスクを動作させる手段と、 実行
中のタスクから他タスクのイベントの実行禁止を解除す
る要求が出される ことにより、要求された他タスクのタ
スク制御ブロックにキューイングされているイベント制
御ブロックのうちの該当するイベント制御ブロック中の
実行フラグを実行許可に変更する手段とを備えている。
【0008】
【作用】本発明の作用をその理解を容易にするために例
を挙げて説明すると、例えばイベントAが発生したとき
に、タスク1を起動して所定の処理a1を行わせ、この
処理a1の完了後に別のタスク2に所定の処理dを行わ
せ、この処理dの完了後に再びタスク1に処理a2を行
わせるといった逐次実行動作を実現する場合、タスク1
のイベントAに関して、所定の処理a1を実行後、イベ
ントDを発行して実行停止要求を出し、その後に後続の
処理a2を行う処理をプログラミングし、タスク2のイ
ベントDに関して、所定の処理dを実行後にタスク1の
イベントAの実行禁止を解除する要求を出す処理をプロ
グラミングしておく。また、イベントAの優先度をイベ
ントDより高くしておく。こうしておくと、イベントA
の発生時に起動されたタスク1によって、先ず処理a1
が実行され、次いでイベントDが発行された時点でタス
ク2が起動されるが、優先度の関係でタスク2の処理d
はその時点では実行されない。次いで、タスク1から
行停止要求が出され、その時点でタスク1の実行が中断
され、各種レジスタの値がタスク1のイベントAに対応
するレジスタ退避域に退避される。その後、発行された
イベントDによって起動されたタスク2において処理d
が実行され、タスク1のイベントAの実行禁止を解除す
る要求が出されると、タスク1のイベントAに対応する
レジスタ退避域に退避されていた各種レジスタの値が復
元され、タスク1の実行が中断箇所から再開され、これ
により、処理a2が実行される。
【0009】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0010】先ず、図1乃至図3を参照して本発明の
本的な考え方について説明する。
【0011】図1を参照すると、本発明を適用したマル
チタスク構造のプログラムは、イベント駆動型リアルタ
イムマルチタスクシステムを構成するもので、2つのタ
スク1,2を含んでおり、タスク1はイベントA,B,
Cの3つのイベントにかかる処理を担当し、タスク2は
イベントD,E,Fの3つのイベントにかかる処理を担
当している。
【0012】タスク1には、それぞれレジスタ退避域と
なる3つのスタック3−1,3−2,3−3が用意され
ている。ここで、スタック3−1はイベントA用、スタ
ック3−2はイベントB用、スタック3−3はイベント
C用であり、タスク1はイベント処理が起動された場合
に、その起動されたイベントに対応するスタックを使用
してイベント処理の実行を行う。
【0013】タスク2にも、それぞれレジスタ退避域と
なる3つのスタック8−1,8−2,8−3が用意され
ている。ここで、スタック8−1はイベントD用、スタ
ック8−2はイベントE用、スタック8−3はイベント
F用であり、タスク2はイベント処理が起動された場合
に、その起動されたイベントに対応するスタックを使用
してイベント処理の実行を行う。
【0014】また、タスク1,2には、各イベントに対
応する実行フラグ4−1,4−2,4−3,9−1,9
−2,9−3が準備されている。これらの実行フラグ4
−1〜4−3,9−1〜9−3は実行許可または実行禁
止の何れかにセットでき、実行禁止にセットされた場
合、当該タスクはそのイベントの処理に関してスケジュ
ーリングの対象から外れ、他のタスクから起動しようと
しても起動することはできなくなる。
【0015】例えば、イベントAが発生したときに、タ
スク1を起動して所定の処理a1を行わせ、この処理a
1の完了後にタスク2に所定の処理dを行わせ、この処
理dの完了後に再びタスク1に処理a2を行わせるとい
った逐次実行動作を実現する場合、タスク1のイベント
Aに関しては、図2に示すように、所定の処理a1を実
行した後、タスク2をイベントDで起動して実行停止要
求を出し、次いで後続の処理である処理a2を行うよう
にプログラミングされる。他方、タスク2のイベントD
に関しては、図3に示すように、所定の処理dを実行
後、タスク1のイベントAの実行禁止を解除する要求を
出すようプログラミングされる。
【0016】さて、タスク1が例えば図示しない他のタ
スク等から出されたイベントAによりスケジューラ7に
よって起動されると、先ず所定の処理a1を実行し、次
いで図1の符号5に示すようにタスク2にイベントDを
送信して処理要求を行って実行停止処理をシステムに対
し要求する。この結果、システムにより、タスク1の現
実行状態を示すCPUの各種レジスタの値がイベントA
用のスタック3−1に退避されると共に、イベントAに
対応する実行フラグ4−1が実行禁止にセットされる。
これにより、イベントAに関してタスク1は以後スケジ
ューリングされなくなり、その時点で実行停止すること
になる。
【0017】他方、タスク1から出されたイベントDに
よってタスク2がスケジューラ7により起動されると、
タスク2はイベントDの処理の中で所定の処理dを行っ
た後、図1の符号6に示すようにタスク1のイベントA
に対する実行禁止の解除をシステムに要求する。この結
果、タスク1のイベントAの実行フラグ4−1は実行許
可にセットされ、イベントAに関してタスク1は再びス
ケジューリングの対象となる。
【0018】そして、スケジューラ7によりタスク1が
イベントAに関して再起動される場合には、スタック3
−1に保存してある各種レジスタの値がCPUのレジス
タに復元され、タスク1はイベントAの処理の実行を、
前記停止した時点から再開し、その結果、後続の処理a
2が実行される。
【0019】次に本発明の実施例について説明する。
【0020】図4を参照すると本発明のマルチタスク実
行管理方式を適用したイベント駆動型リアルタイムマル
チタスクシステムを実現する情報処理装置の一例は、C
PU11とメモリ12と入出力装置等13とこれらを接
続するバス14とで構成されている。
【0021】メモリ12には、タスク1およびタスク2
を含むプログラム18と、スケジューラ7,タスク1に
対応するタスク制御ブロックTCB1およびタスク2に
対応するタスク制御ブロックTCB2を含むオペレーテ
ィング・システム(OS)17とから構成される制御プ
ログラム16が配置されている。
【0022】タスク制御ブロックTCB1は、図中に示
すように、キューイングポインタ21を有し、このキュ
ーイングポインタ21を先頭に、タスク1で処理すべき
イベントに対応するイベント制御ブロックが、イベント
コードの昇順にキューイングされる。
【0023】各イベント制御ブロックは、イベント制御
ブロック22,23に例示するように、イベントコード
22−1,23−1と、プログラムカウンタやその他の
各種レジスタの退避場所となるレジスタ退避域22−
3,23−3と、実行フラグ22−2,23−2とを有
している。
【0024】本実施例では、各タスク1,2の中断時の
レジスタ情報をそのタスクが動作する原因となったイベ
ントに対応するイベント制御ブロック中のレジスタ退避
域に退避する構成を採用しているため、タスク制御ブロ
ックTCB1,TCB2自体にはレジスタ退避域は設け
られていない。なお、本実施例では、イベント制御ブロ
ック自体にレジスタ退避域を設けたが、メモリ12上に
各イベント毎のスタックを用意し、各種レジスタ情報は
そのイベントに対応するスタックに退避し、スタックの
ポインタをイベント制御ブロックに退避するようにして
も良く、要するに、各イベント毎にレジスタ退避域が存
在すれば良い。
【0025】図示していないが、タスク制御ブロックT
CB2もタスク制御ブロックTCB1と同様にキューイ
ングポインタを有し、タスク2で処理すべきイベントが
発生した場合、そのイベントのイベント制御ブロックが
タスク制御ブロックTCB2にキューイングされる。
【0026】また、CPU11には、割り込み処理部1
5があり、この割り込み処理部15で、図5および図6
に示すようなスケジューラ起動等の処理がハードウェア
またはファームウェアにより実行される。
【0027】更に、スケジューラ7は、図7および図8
に示すような処理を行うように構成されている。
【0028】以下、本実施例の動作を説明する。
【0029】プログラム18が処理すべきイベントには
ユニークなイベントコードが付与されている。また各イ
ベントコードにはその優先度が与えられている。本実施
例の場合、イベントコードの値がそのイベントの優先度
を示し、イベントコードの値が小さいほど、優先度が高
くなっている。説明の便宜上、プログラム18が処理す
べきイベントがA,B,C,D,E,Fの6つであり、
それぞれのイベントコードを「0」,「1」,「2」,
「3」,「4」,「5」とし、タスク1はイベントコー
ド「0」,「1」,「2」のイベントA,B,Cを担当
し、タスク2はイベントコード「3」,「4」,「5」
のイベントD,E,Fを担当するものとする。また、タ
スク1はイベントAに関して前述した図2に示すような
処理がプログラミングされており、タスク2はイベント
Dに関して前述した図3に示すような処理がプログラミ
ングされているものとする。
【0030】処理すべきイベントが全く発生していない
場合、タスク制御ブロックTCB1,TCB2には1つ
のイベント制御ブロックもキューイングされておらず、
タスク1,2は停止状態になっている。
【0031】この状態で、イベントコード「0」のイベ
ントAが例えば入出力装置等13からの割り込みにより
発生したとすると、CPU11の割り込み処理部15は
図5に示す処理を開始し、先ず、動作中のタスクが存在
するか否かを判別する(S1)。今の場合、動作中のタ
スクは存在しないので、必要な情報を与えて速やかにス
ケジューラ7を起動する(S4)。
【0032】スケジューラ7は起動されると、図7に示
す処理を開始する。先ず、処理S21にてイベントAの
発生による起動であることを判別し、発生したイベント
Aのイベント制御ブロックを、イベントコードの優先度
の昇順に、そのイベントを処理すべきタスク1に対応す
るタスク制御ブロックTCB1にキューイングする(S
22)。これにより、図9に示すように、タスク制御ブ
ロックTCB1にイベントコード「0」のイベント制御
ブロック71がキューイングされる。なお、イベント制
御ブロック71には、イベントコードとして「0」が設
定され、また、そのレジスタ退避域には各種レジスタの
初期値(例えばプログラムカウンタについてはタスク1
の先頭番地)が設定される。また、実行フラグは実行許
可に設定される。
【0033】そして、スケジューラ7はタスク起動処理
S24を実行する。
【0034】タスク起動処理S24の詳細は図8に示さ
れており、先ず、全てのタスク制御ブロックTCB1,
TCB2にキューイングされている先頭のイベント制御
ブロックであって実行フラグが実行許可になっているイ
ベント制御ブロック中からイベントコードを取り出す
(S31)。今の場合、タスク制御ブロックTCB2に
はイベント制御ブロックは1つもキューイングされてい
ないので、タスク制御ブロックTCB1にキューイング
されているイベント制御ブロック71だけからイベント
コード「0」が取り出される。
【0035】次にスケジューラ7は、図8のS32,S
33を経てS36へ進み、タスク制御ブロックTCB1
にキューイングされている先頭のイベント制御ブロック
71におけるレジスタ退避域の内容をCPU11の各種
レジスタにセットして、タスク1を起動する。なお、起
動に際しては、処理すべきイベントAをタスク1に対し
て指示する。
【0036】これにより、タスク1がCPU11で実行
され、タスク1はイベントAにかかる図2に示したよう
な処理を開始する。即ち、所定の処理a1を実行し、次
いでタスク2を起動するためにイベントDを発行する。
【0037】このイベントDの発行により割り込みが発
生し、CPU11の割り込み処理部15は再び図5に示
す処理を実行する。そして、今回はタスク1が動作中な
ので、S1からS2に進んでタスク1を中断し、次い
で、CPU11の各種レジスタの内容を、中断したタス
ク1のタスク制御ブロックTCB1の先頭にキューイン
グされているイベント制御ブロック71におけるレジス
タ退避域に退避し(S3)、そしてスケジューラ7を起
動する(S4)。
【0038】スケジューラ7は起動されると、図7に示
す処理を開始し、イベントDの発生による起動なので、
S21からS22に進み、発生したイベントDのイベン
ト制御ブロックを、イベントコードの優先度の昇順に、
そのイベントを処理すべきタスク2に対応するタスク制
御ブロックTCB2にキューイングする。これにより、
図9に示すように、タスク制御ブロックTCB2にイベ
ントコード「3」のイベントDにかかるイベント制御ブ
ロック72がキューイングされる。なお、イベント制御
ブロック72には、イベントコードとして「3」が設定
され、また、そのレジスタ退避域には各種レジスタの初
期値(例えばプログラムカウンタについてはタスク2の
先頭番地)が設定される。また、実行フラグは実行許可
に設定される。
【0039】次にスケジューラ7はタスク起動処理S2
4を実行し、先ず、全てのタスク制御ブロックTCB
1,TCB2にキューイングされている先頭のもので且
つ実行フラグが実行許可になっているイベント制御ブロ
ックからイベントコードを取り出す(S31)。今の場
合、図9に示すようにタスク制御ブロックTCB1には
イベント制御ブロック71が、タスク制御ブロックTC
B2にはイベント制御ブロック72がキューイングされ
ているので、それらからイベントコード「0」,「3」
が取り出される。
【0040】次にスケジューラ7は、S32,S33を
経てS34へ進み、これら複数のイベントコードの優先
度を比較する。そして、その比較結果に基づき、より優
先度の高いイベントコード「0」を持つタスク制御ブロ
ックTCB1を選択し(S35)、このタスク制御ブロ
ックTCB1にキューイングされている先頭のイベント
制御ブロック71におけるレジスタ退避域の内容をCP
U11の各種レジスタにセットして、タスク1の動作を
再開させる(S36)。
【0041】これにより、タスク1がCPU11で再び
実行され、イベントコード「0」のイベントAの処理が
中断箇所から再開されて、図2に示す次の処理である実
行停止要求を発行する処理が行われる。
【0042】このタスク1からの実行停止要求の発行に
より割り込みが発生し、CPU11の割り込み処理部1
5は再び図5に示す処理を実行する。そして、今回もタ
スク1が動作中なので、S1からS2に進んでタスク1
を中断し、次いで、CPU11の各種レジスタの内容
を、中断したタスク1のタスク制御ブロックTCB1の
先頭にキューイングされているイベント制御ブロック7
1におけるレジスタ退避域に退避し(S3)、そして必
要な情報を渡してスケジューラ7を起動する(S4)。
【0043】スケジューラ7は起動されると、図7に示
す処理を開始し、実行停止要求による起動なので、S2
1,S25,S26を経てS27に進み、実行停止要求
を出したタスク1に対応するタスク制御ブロックTCB
1の先頭にキューイングされているイベント制御ブロッ
ク71、つまりイベントAにかかるイベント制御ブロッ
ク71の実行フラグを実行許可から実行禁止に変更する
(S27)。そして、タスク起動処理S24を行う。
【0044】このタスク起動処理S24では、先ず、全
てのタスク制御ブロックTCB1,TCB2にキューイ
ングされている先頭のもので且つ実行フラグが実行許可
になっているイベント制御ブロックからイベントコード
を取り出すが(S31)。今の場合、図9に示すように
タスク制御ブロックTCB1にはイベント制御ブロック
71がキューイングされているが、その実行フラグは実
行禁止に変更されたので、イベント制御ブロック71は
除外され、タスク制御ブロックTCB2にキューイング
されているイベント制御ブロック71からイベントコー
ド「3」が取り出される。この結果、処理S36におい
て、タスク制御ブロックTCB2にキューイングされて
いる先頭のイベント制御ブロック72におけるレジスタ
退避域の内容をCPU11の各種レジスタにセットし
て、タスク2を起動する(S36)。
【0045】これにより、タスク2がCPU11で実行
され、イベントコード「3」のイベントDの処理が開始
され、図3に示した所定の処理dが実行される。そし
て、処理dの完了後にタスク2がタスク1のイベントA
の実行禁止解除の要求を発行すると、CPU11の割り
込み処理部15に割り込みが発生する。
【0046】CPU11の割り込み処理部15は再び図
5に示す処理を実行する。そして、タスク2が動作中な
ので、S1からS2に進んでタスク2を中断し、次い
で、CPU11の各種レジスタの内容を、中断したタス
ク2のタスク制御部TCB2の先頭にキューイングされ
ているイベント制御ブロック72におけるレジスタ退避
域に退避し(S3)、そして必要な情報を渡してスケジ
ューラ7を起動する(S4)。
【0047】スケジューラ7は起動されると、図7に示
す処理を開始し、実行禁止解除の要求による起動なの
で、S21,S25,S26を経てS28に進み、実行
禁止解除の対象となったタスク1のイベントAに対応す
るイベント制御ブロック71中の実行フラグを実行禁止
から実行許可に変更する。そして、タスク起動処理S2
4を行う。
【0048】このタスク起動処理S24において、スケ
ジューラ7は、全てのタスク制御ブロックTCB1,T
CB2にキューイングされている先頭のもので且つ実行
フラグが実行許可になっているイベント制御ブロックか
らイベントコードを取り出す(S31)。これにより、
タスク制御ブロックTCB1の先頭にキューイングされ
ているイベント制御ブロック71からイベントコード
「0」が、タスク制御ブロックTCB2にキューイング
されているイベント制御ブロック72からイベントコー
ド「3」が取り出され、より優先度の高いイベントコー
ド「0」を持つタスク制御ブロックTCB1が選択され
て(S35)、このタスク制御ブロックTCB1にキュ
ーイングされている先頭のイベント制御ブロック71に
おけるレジスタ退避域の内容がCPU11の各種レジス
タにセットされて、タスク1の動作が再開される(S3
6)。
【0049】これにより、タスク1がCPU11で実行
され、イベントコード「0」のイベントAの処理が中断
箇所から再開されて、図2に示す次の処理である後続の
処理a2が実行されることになる。
【0050】そして、タスク1のイベントAにかかる処
理が終了すると、タスクの終了割り込みが発生し、CP
U11の割り込み処理部15は図6に示すように速やか
にスケジューラ7を起動し(S11)、起動されたスケ
ジューラ7は図7のS21,S25を経てS23に進
み、終了したタスク1が処理したイベント制御ブロック
71をタスク制御ブロックTCB1から取り去る。そし
て、図8に示すタスク起動処理を行う。
【0051】なお、本実施例においては、同一のタスク
を異なるイベントのために多重に起動し得るようになっ
ている。即ち、タスク動作中に、より緊急度の高いイベ
ントが発生した場合には、タスクの実行を中断して、そ
の緊急度の高いイベントを処理するために同じタスクを
起動する。この場合も、イベント処理途中に中断された
タスクの実行状態はそのイベントに対応するイベント制
御ブロックに退避され、後に復元されて中断箇所から実
行が再開されるようになっている。
【0052】
【発明の効果】以上説明したように、本発明によれば、
各イベント処理中の任意の時点で実行停止要求を出せ
ば、後刻のその時点からの再開に備えて各種レジスタの
値を現処理中のイベントに対応するレジスタ退避域に退
避してそのタスクの実行を中断できるため、他のタスク
のイベント処理の実行完了を待ち、その完了後に実行停
止した時点からイベント処理を再開するといったことが
可能となる。従って、他のタスクとの間でイベントを送
受しながら処理を進める逐次実行動作を実現する場合、
従来のように新たなイベントを新設してイベント毎に動
作を分割してプログラミングする必要がなく、或るイベ
ントに関する一連の処理としてプログラミングできるた
め、プログラミングが容易になり、またプログラムの解
読性が向上するため保守等も容易となる。
【図面の簡単な説明】
【図1】本発明を適用したマルチタスク構造のプログラ
ムの構成図である。
【図2】実行停止要求を出す側のタスクの処理例を示す
フローチャートである。
【図3】実行禁止解除の要求を出す側のタスクの処理例
を示すフローチャートである。
【図4】本発明の実施例を適用した情報処理装置の一
例を示すブロック図である。
【図5】割り込み処理部の処理例を示すフローチャート
である。
【図6】割り込み処理部のタスク終了割り込み時の処理
例を示すフローチャートである。
【図7】スケジューラの処理例を示すフローチャートで
ある。
【図8】スケジューラのタスク起動処理の詳細を示すフ
ローチャートである。
【図9】タスク制御ブロックにキューイングされるイベ
ント制御ブロックの状態を示す図である。
【図10】従来のマルチタスク実行管理方式の下でのタ
スクのプログラミング例を示すフローチャートである。
【符号の説明】
1,2…タスク 3−1〜3−3,8−1〜8−3…レジスタ退避域とな
るスタック 4−1〜4−3,9−1〜9−3…実行フラグ 5…タスク1からタスク2へ出されたイベント 6…タスク2からタスク1へ出された実行禁止解除の要
求 7…スケジューラ

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 複数のタスクから構成され各タスクに幾
    つかのイベントにかかる処理を分担させるようにしたマ
    ルチタスク構造のプログラムにおける前記各タスクの実
    行を管理するマルチタスク実行管理方式において、 前記プログラムで処理すべきイベントの発生時およびイ
    ベント処理途中のタスクからの実行停止要求時、CPU
    で実行中のタスクを中断して各種レジスタの値を前記中
    断したタスクのタスク制御ブロックにキューイングされ
    ている現処理中のイベントに対応するイベント制御ブロ
    ックに退避すると共に、実行停止要求時には該イベント
    制御ブロック中の実行フラグを実行禁止に設定する手段
    と、 前記発生したイベントのイベントコード,実行許可に設
    定した実行フラグおよび各種レジスタの初期値を含むイ
    ベント制御ブロックをそのイベントを処理するタスクの
    タスク制御ブロックにキューイングする手段と、 各タスク制御ブロックにキューイングされているイベン
    ト制御ブロックのうち、実行フラグが実行許可を示し且
    つ最も優先度の高いイベントに対応するイベント制御ブ
    ロックを選択する手段と、 該選択したイベント制御ブロックに格納されている各種
    レジスタの値を前記CPUの各種レジスタにセットし
    て、そのイベント制御ブロックがキューイングされてい
    るタスク制御ブロックに対応するタスクを動作させる手
    段と、 実行中のタスクから他タスクのイベントの実行禁止を解
    除する要求が出されることにより、要求された他タスク
    のタスク制御ブロックにキューイングされているイベン
    ト制御ブロックのうちの該当するイベント制御ブロック
    中の実行フラグを実行許可に変更する手段とを備えるこ
    とを特徴とするマルチタスク実行管理方式。
JP5347290A 1993-12-25 1993-12-25 マルチタスク実行管理方式 Expired - Fee Related JP2636722B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5347290A JP2636722B2 (ja) 1993-12-25 1993-12-25 マルチタスク実行管理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5347290A JP2636722B2 (ja) 1993-12-25 1993-12-25 マルチタスク実行管理方式

Publications (2)

Publication Number Publication Date
JPH07191863A JPH07191863A (ja) 1995-07-28
JP2636722B2 true JP2636722B2 (ja) 1997-07-30

Family

ID=18389214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5347290A Expired - Fee Related JP2636722B2 (ja) 1993-12-25 1993-12-25 マルチタスク実行管理方式

Country Status (1)

Country Link
JP (1) JP2636722B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3052908B2 (ja) 1997-09-04 2000-06-19 日本電気株式会社 トランザクションプログラム並列実行方法およびトランザクションプログラム並列実行方式
US7773714B2 (en) * 2003-12-29 2010-08-10 Motorola, Inc. Method and system for employing adaptive event codes
JP5029333B2 (ja) * 2007-12-07 2012-09-19 日本電気株式会社 コンピュータシステム、仮想記憶制御方法、及びプログラム
US8392932B2 (en) 2008-06-25 2013-03-05 Panasonic Corporation Information processing device for causing a processor to context switch between threads including storing contexts based on next thread start position
JP5336331B2 (ja) 2009-11-24 2013-11-06 株式会社デンソー 車載装置
KR101658035B1 (ko) 2010-03-12 2016-10-04 삼성전자주식회사 가상 머신 모니터 및 가상 머신 모니터의 스케줄링 방법
CN112783652B (zh) * 2021-01-25 2024-03-12 珠海亿智电子科技有限公司 当前任务的运行状态获取方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04155532A (ja) * 1990-10-19 1992-05-28 Nec Corp タスク切替方式
JPH04264625A (ja) * 1991-02-19 1992-09-21 Nec Corp レジスタ管理方式
JPH04321134A (ja) * 1991-04-22 1992-11-11 Matsushita Electric Ind Co Ltd ファジィ推論装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
インターフェース1990年1月号(CQ出版社)、P.180−184
発明協会公開技報公技番号93−22561

Also Published As

Publication number Publication date
JPH07191863A (ja) 1995-07-28

Similar Documents

Publication Publication Date Title
US5452452A (en) System having integrated dispatcher for self scheduling processors to execute multiple types of processes
US8230430B2 (en) Scheduling threads in a multiprocessor computer
JP3037182B2 (ja) タスク管理方式
US7739685B2 (en) Decoupling a central processing unit from its tasks
NZ236764A (en) Data transfer: task priority allocation
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
JPH064322A (ja) プロセスレベルプログラミングのための割込み処理の直列化方法
JP2636722B2 (ja) マルチタスク実行管理方式
US20090187261A1 (en) Control Apparatus for Process input-Output Device
JPH07141208A (ja) マルチタスク処理装置
US20100107169A1 (en) Periodical task execution apparatus, periodical task execution method, and storage medium
JP2693916B2 (ja) タスクスケジュール方法
JP3524961B2 (ja) マルチプロセッサシステムおよび同システムにおけるタスクスケジューリング方法
JPH0588917A (ja) ジヨブスケジユーリング方式
JP3601677B2 (ja) タスク処理システム
JPH05324569A (ja) 割り込み制御方式
JPH05204667A (ja) 計算機システムのタスク実行制御装置
JPH0778091A (ja) マルチタスク管理方法
JPH0644234B2 (ja) タスク管理装置
JPH06309180A (ja) コンピュータシステムの割込制御装置
JP2566002B2 (ja) タスクディスパッチング方式
JPH04287233A (ja) 事象処理制御方法
JP2957347B2 (ja) ジョブ実行クラス停止方式
JPH04195539A (ja) システムコール処理方式
JPH03116335A (ja) 非特権cpuから特権cpuヘの乗り移り方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080425

Year of fee payment: 11

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

Free format text: PAYMENT UNTIL: 20090425

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20100425

Year of fee payment: 13

LAPS Cancellation because of no payment of annual fees