JPH0736715A - マルチタスクシステムに於けるプログラム制御方式 - Google Patents

マルチタスクシステムに於けるプログラム制御方式

Info

Publication number
JPH0736715A
JPH0736715A JP20285493A JP20285493A JPH0736715A JP H0736715 A JPH0736715 A JP H0736715A JP 20285493 A JP20285493 A JP 20285493A JP 20285493 A JP20285493 A JP 20285493A JP H0736715 A JPH0736715 A JP H0736715A
Authority
JP
Japan
Prior art keywords
task
program
event
input
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
Application number
JP20285493A
Other languages
English (en)
Inventor
Masayuki Mochizuki
雅幸 望月
Toshiya Sakai
敏也 坂井
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.)
Amano Corp
Original Assignee
Amano Corp
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 Amano Corp filed Critical Amano Corp
Priority to JP20285493A priority Critical patent/JPH0736715A/ja
Publication of JPH0736715A publication Critical patent/JPH0736715A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 各タスクに於いて処理に一区切りついた時点
でのみタスク切り替えを行ない、各タスクに於いて処理
中に発生する事象の待ち時間を各タスクが互いに利用し
あって並行処理を実現する。 【構成】 目的とするタスクのタスク番号を引数として
タスク切り替えを行なうバイパスプログラムを、各タス
クが入出力に関する事象の待ち状態になった時点で割込
みを使わずに呼び出すことにより、タスクを切り替え
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、1つの中央演算処理装
置(以下CPUと云う)で複数のタスクを実行するマル
チタスクシステムの制御方式に関し、更に具体的には、
タスクの切り替えを割込み方式を使わずに実現すること
ができるプログラム制御方式に関するものである。
【0002】
【従来の技術】図19は、例えば「インターフエース」
1983年6月号、P174〜205、CQ出版に示さ
れた様な従来のマルチタスクシステムに於ける、モニタ
プログラム、入出力ハンドラ、マクロ・コール、タスク
等を関連付けて示した構成図であって、図に於いて、各
タスクは複数のマクロ・コールを発行して、入出力の制
御、タイマの制御、資源の排他、タスク間の同期を行な
っている。また、このシステムに於いてマクロ・コール
を実際に処理するのはモニタプログラムであって、入出
力を制御する場合は、モニタは各入出力装置に対応する
入出力ハンドラl〜kを呼び出し、且つ、各入出力ハン
ドラは、対応する入出力ポートl〜kを通して入出力装
置l〜kとデータ転送を行なうと共に、入出力ハンドラ
は、タスクが発行するマクロ・コールによってモニタを
介して起動し、入出力ポートからの割込みによってモニ
タを介して動作するように構成されている。
【0003】図20は、従来のマルチタスクシステムに
於ける並行処理の原理を示したものであって、タスク1
に於いて入出力の動作中はCPUに遊び時間ができ、そ
の時間を利用してタスク2を走らせている。また、図2
1のステップS101〜S104は、従来のマルチタス
クシステムに於けるタスク切り替えの手順を示したもの
であって、入出力ポートl〜kおよびタイマ装置からの
ハードウエア割込み、または各タスクが発行するマクロ
・コールによるソフトウエア割込みによって、モニタが
起動する。図20と関連づけると、タスク1が入出力の
マクロ・コールを発行することにより、モニタはタスク
1を待ち状態にし、実行可能である複数のタスクの中か
らタスク2を選んで走らせたことがわかる。また、入出
力ポートからの割込みによりタスク2が中断され、入出
力待ちとなっていたタスク1が実行可能となり、かつ実
行タスクとして起動されたことがわかる。
【0004】
【発明が解決しようとする課題】上記従来の方式では、
入出力の「動作中」に発生するCPUの遊び時間(図2
0)を利用して、複数のタスクを並行処理する仕組にな
っているが、マイクロコンピュータ組込み製品の多く
は、入出力の動作自体をCPUが行なっている。つまり
入出力装置が存在せず、CPUと入出力ポートにより、
入出力装置自体の動作を行なう場合が多い。例えば、紙
カード式のタイムレコーダでは、タイムカード(紙カー
ド)を引き込んだり吐き出したりするステッピングモー
タの制御、あるいはタイムカードに文字を1ドット毎に
印字するプリンタの制御を、CPUが1ビット単位に数
百μsの間隔で処理している。磁気カード式のタイムレ
コーダでは、CPUが磁気データビット列を文字に組立
てたり、LRC等のチェックをしたりして、入力処理を
行なっている。
【0005】更に上記従来の方式では、タスク切り替え
をハードウエア割込み(図21)によって行なってい
る。そのため、多くのマイクロコンピュータ組込み製品
にとって、次の4点が問題となる。第1に、タスク切り
替え(図21に於いて割込みがかかってから実行タスク
を起動するまで)の間は割込み禁止にする必要がある
が、数十〜数百μsのタイミングで動作させるシステム
に於いては、この間、他の入出力からの割込みが受け付
けられなくなり、データの取りこぼしが発生する危険が
ある。第2に、入出力の動作自体をCPUで行なう場
合、その動作中に割込みによるタスク切り替えが発生す
ると、タイミングの関係でその入出力が正常に動作しな
くなるため、前述のステッピングモータの制御、プリン
タの制御の例で言えば、モータの動きがギクシャクして
脱調したり、プリンタで印字ずれが発生し文字が正しく
書けなくなる。第3に、セマフォを用いて資源の排他制
御とタスク間の同期制御を行なう必要があり、設計者は
絶えずそれらの事に気を配らなければならず、例えば、
共通サブルーチンを使用する場合、それがリエントラン
ト可能なプログラムであれば問題ないが、そうでない
と、使用するごとに資源の占有宣言をして他のタスクと
の間で排他しなければならない。第4に、処理の途中で
他のタスクに切り替わってしまうため、設計者がプログ
ラムの動きを追おうとした場合に、非常にわかりにく
い。そしてそもそも処理の途中で他のタスクに切り替え
る必要などない場合が多い。例えば、パソコンと通信で
接続されているタイムレコーダに追いて、操作タスクと
通信タスクがあるとする。パソコンからデータが送られ
た直後に出勤キーが押された場合、通信タスクがそのデ
ータを解析して応答を返すまでに0.04秒かかり、そ
の後、操作タスクにて出勤キーに対する画面表示、ブザ
ー音を出したとしても、人間の目から見れば、出勤キー
が押された瞬間に表示されたように映る。従って、通信
タスクでのデータ解析の途中で、割込みにより操作タス
クに切り替える必要などない。
【0006】従って本発明の技術的課題は、各タスクに
於いて処理に一区切りついた時点でのみタスク切り替え
を行ない、各タスクに於いて処理中に発生する「入出力
に関する事象の待ち時間」を各タスクがお互いに利用し
あって並行処理を実現する、マルチタスク技法を提供す
ることにある。尚、ここに於いて入出力に関する事象の
待ち時間とは、入出力動作中のCPUの遊び時間ではな
く、マルチタスクシステムの外界と考えられる操作者や
他のコンピュータシステムからの呼びかけを待っている
時間、を意味する。
【0007】
【課題を解決するための手段】上記の技術的課題を解決
するために本発明で講じた手段は以下の如くである。1
つの中央演算処理装置で複数のタスクを実行するマルチ
タスクシステムに於いて、
【0008】(1) 目的とするタスクのタスク番号を
指定することができ、且つ、現在実行中のタスクを中断
して目的のタスクに切り替えることができるバイパス手
段と、各タスクに於いて入出力に関する事象の待ち状態
になった時に、各タスクを上記のバイパス手段を用いて
アイドルタスクに切り替え、また、アイドルタスクが上
記のバイパス手段を用いて各タスクを再起動するように
構成した制御移行手段とを具備すること。
【0009】(2) 各タスクに於いて入出力に関する
事象待ちのない長時間ループ処理があった場合にその処
理を一時停止し、他のタスクを走らせてから再びその長
時間ループ処理に制御を戻すブリーフ・ストップ手段を
具備すること。
【0010】(3) 複数のプログラムの実行を遅延さ
せる目的で、各タスクが各プログラムとそれ等各々に対
する複数の遅延時間を登録することができ、且つ、タイ
マ割込みとアイドルタスクを用いて上記複数の遅延時間
をカウントして、上記各々の遅延時間の経過後にそれ等
各々に対応する各プログラムを実行するラグCALL手
段と、登録された各プログラムの遅延実行を取消す取消
手段とを具備すること。
【0011】
【作用】上記の手段は以下の如く作用する。上記(1)
で述べた手段によれば、各タスクに於いて入出力に関す
る事象の待ち状態になった時に、割込みを使わず、前記
バイパスを呼び出すことでタスクを切り替えることがで
きるから、従って、第1に、前記バイパスにおいて割込
み許可状態でタスクを切り替えることができ、入出力の
割込みに関してデータの取りこぼしが発生しない。第2
に、入出力の動作自体をCPUが行なう場合、割込みに
よるタスク切り替えがその動作中に発生しないため、そ
の入出力は確実に動作してタイミングの問題が解決でき
る。第3に、前記アイドルタスクおよび各タスクに於い
て処理の途中で割込みにより他のタスクに切り替わるこ
とがないので、資源の排他制御やタスク間の同期制御を
セマフォを用いて行なう必要がない。例えば、複数のタ
スクで共有するサブルーチンプログラムの実行中には、
それを実行しているタスク以外のタスクに切り替わるこ
とがないため、言い換えれば、そのサブルーチンプログ
ラムが終了したあとでタスク切り替えが行なわれるた
め、資源の占有宣言をする必要はない。また、タスク間
の同期制御については、各タスクが共有データを参照す
ることで解決できる。第4に、前記アイドルタスクおよ
び各タスクにおいて処理が一区切りついた時点でのみタ
スクが切り替わるため、設計者がプログラムの動きを追
う場合、とてもわかりやすい。と言った作用を発揮す
る。
【0012】上記(2)で述べた手段によれば、上記の
動作は上述したアイドルタスクおよび各タスクに於ける
入出力に関する事象待ち後の「一区切りの処理」に要す
る時間が、人間の感覚からすれば一瞬で終ると言う前提
に立ったものであるが、しかしながら、例えばタイムレ
コーダに於いて一カ月の労働時間累計を計算する処理
や、パーキングシステムに於いて駐車料金の計算をする
処理の場合、処理時間に数十秒〜数分かかる。これら
は、プログラムの構造上、入出力に関する事象待ちが存
在しないループ処理となっていて、その長時間ループが
終らないうちは、他のタスクが動作しないが、ブリーフ
・ストップによってこの長時間ループが一時停止し、他
のタスクが動作可能となる。
【0013】上記(3)で述べた手段によれば、上記の
ラグCALLを用いることにより、前記アイドルタスク
にてプログラムの実行タイミングを遅延させ、同時に各
タスクに於いて入出力に関する事象も監視することが可
能となる。例えば、タイムレコーダに於いてIDカード
(磁気カード)が入力された時、それに書込まれている
社員コードを2秒間表示してから時計表示にもどす場合
を考えてみると、タスク1が社員コードを表示した後、
上記のラグCALLを用いて時計表示プログラムと遅延
時間(2秒)を登録すれば、アイドルタスクが2秒後に
時計表示プログラムを実行してくれる。ここで、もし2
秒経過しないうちに出勤キーが押されてその時点で出勤
表示にしなければならない場合には、タスク1が前記時
計表示プログラムと前記遅延時間(2秒)を登録した
後、キー入力の監視をし、出勤キーが押された時点で前
記時計表示プログラムの遅延実行を取り消し、すぐに出
勤表示をするから、このように、上記のラグCALLは
遅延と事象の監視とを同時に実行することができる。以
上の如くであるから、上記の手段によって上述した技術
的課題を解決して、前記従来の技術の問題点を解消する
ことができる。
【0014】
【実施例】以下に、上述した本発明に係るマルチタスク
システムに於けるプログラム制御方式の好適な実施例を
添付した図面と共に詳細に説明する。図1は、説明の都
合により仮想したCPUに於けるレジスタ構成と、n+
1個のタスクごとに持つスタックおよび汎用レジスタを
示したものであって、図において、TASKSP配列に
は各タスクのスタックポインタが格納されており、これ
らスタックポインタにより各タスクのスタックの番地が
わかるように構成されている。また、スタックの最終部
には、タスクが再起動する際のm個の汎用レジスタとプ
ログラムカウンタが保存されている。図2には例として
タスク1のスタックが示され、また、RUNTASKに
は現在実行中のタスク番号が保存されているので、RU
NTASKとTASKSP配列を参照すればCPUが現
在どのスタックを使っているかがわかる仕組に成ってい
る。
【0015】図2は、バイパスの処理手順を示したもの
であって、このサブルーチンには引数として切り替え先
のタスク番号が与えられる。なお、バイパスが呼び出さ
れた時には、すでにプログラムカウンタが現在実行中の
タスクのスタックに退避されている。すなわち、バイパ
スを呼び出したタスクに於いて、バイパス呼び出し命令
の次に実行される命令の番地が、プログラムカウンタと
して現在実行中のタスクのスタックに退避されている。
これは一般的なコンピュータに於けるサブルーチン呼び
出し命令の仕組によるものである。図に於いて、まず始
めのステップS01でCPUのm個の汎用レジスタを現
在実行中のタスクのスタックに退避し、次いで、ステッ
プS02及びS03が実行されて現在実行中のタスク番
号(RUNTASKの値)を用いてCPUのスタックポ
インタをTASKSP配列に退避する。以上で現在進行
中のタスクを中断したことになる。次に、ステップS0
4とS05で現在進行中のタスク番号(RUNTASK
の値)を引数である切り替え先のタスク番号にして、そ
れを用いてステップS06でTASKSP配列から切り
替え先のタスクのスタックポインタをCPUに復帰し、
言い換えれば、切り替え先のタスクのスタックに切り替
えて、次のステップS07で切り替え先のタスクのスタ
ックからm個の汎用レジスタをCPUに復帰する。最後
に、ステップS08で切り替え先のタスクのスタックか
らプログラムカウンタをCPUに復帰すると、言い換え
れば、リターン命令を実行すると、バイパスを呼び出し
たタスクに於いてバイパス呼び出し命令の次に実行され
る命令から、プログラムが走り出す。
【0016】次に、本発明に於けるタスクの構成方法に
ついて説明する。図3は各タスクの構成図であり、図4
は各タスクを立体的に見た場合に於ける制御の流れ図、
図5は各タスクに於ける処理の流れ図であって、タスク
1〜nに於いて、入出力に関する事象の待ちになった場
合、前記バイパスを呼び出しアイドルタスクTOに切り
替える。その様子が図3および図4に示されている。
尚、図5に於いて一区切りの処理とは、「区切りの良い
まとまったものでありかつ人間の感覚からすれば一瞬で
終わる」ということを概念的に表現したもので、各々の
一区切りの処理がお互いに全く同じ内容のものだという
意味ではない。また、図3および図5に於いて、アイド
ルタスクTOは初期起動部T1、事象監視部T2、ブリ
ーフ・ストップ監視部T3、及びラグCALL動作部T
4から構成されている。
【0017】図5に於いて初期起動部T1は、タスク1
〜nに於ける初期処理を実行させるためのものであり、
且つ、タスク1〜nをすべて事象の待ち状態にするため
のものである。すなわち、このマルチタスクシステムが
リセット・スタートすると最初にアイドルタスクTOが
起動され、アイドルタスクTOは初期起動部T1に於い
て、ステップS13〜S17の処理を実行して引数であ
るタスク番号を1〜nまで変化させながら前記バイパス
をn回呼び出す。これによりタスク1〜nが順次起動さ
れる。各タスク1〜nは、各々の初期処理を実行した
後、各々の事象の待ちに於いて前記バイパスによりアイ
ドルタスクTOに切り替わる。また、上記の初期起動部
T1によってタスク1〜nが全て事象の待ち状態になっ
たため、アイドルタスクTOが走ることになる。アイド
ルタスクTOは、事象監視部T2において事象1〜kの
発生を監視していて、もし事象が発生したならば、それ
に対応するタスクを前記バイパスを用いて再起動する。
【0018】更に図3乃至図5に於いて、タスク2には
入出力に関する事象待ちがない長時間ループ2Aを示し
た。この長時間ループ2Aに於いて、前記バイパスを用
いたブリーフ・ストップ2Bにより制御を一時的にアイ
ドルタスクTOに移行する。アイドルタスクTOは、他
の処理をした後、ブリーフ・ストップ監視部T3に於い
てブリーフ・ストップを実行しているタスクがあるかを
監視するので、その前記タスクに前記バイパスを用いて
切り替えることができる。
【0019】また、図3乃至図5に於いて、アイドルタ
スクTOのラグCALL動作部T4は、ステップS18
で一定時間が経過するごとにステップS19に進んでラ
グCALL実行部を呼び出す。ラグCALL実行部は、
タスク1〜nに於ける各々の一区切りの処理によって登
録された複数のプログラムに対する各々の遅延時間をカ
ウントし、各々の遅延時間の経過後に各々に対応するプ
ログラムを呼び出す。なお前記の一定時間が、遅延時間
をカウントする際の時間単位になっている。
【0020】次に、ホストコンピュータと接続されたタ
イムレコーダを例に挙げ、タスクの構成方法をより具体
的に説明する。図には示してないが、このタイムレコー
ダには日付・時刻を知るための内部時計、出勤・退勤を
指定するための2個のキー、内部時計を設定するための
数値入力キー、IDカード・時計設定用カードを入力す
るための磁気カードリーダ、時刻・社員番号などを表示
するための表示器、入力データを記憶するためのデータ
メモリ、労働時間を計算するための演算手段、ホストコ
ンピュータとの通信手段、及び図3・図4・図5のマル
チタスクシステムを実現するためのCPU・ROM・R
AM・タイマ装置、を備えているものとする。なお、通
信手順はポーリング/セレクティング方式である。
【0021】尚、図5に於いて、上記タイムレコーダと
関連づけるために以下のような定義をする。 タスク1:キー/カード入力操作 事象1:キーが押さ
れた/カードが入力された。 タスク2:通信処理 事象2:ホストから
ポーリング/セレクティングが来た。 事象3:ホストから応答が来た。 また、説明の都合上、アイドルタスク・タスク1・タス
ク2のみとし、タスク3〜nは存在しないものとする。
【0022】図5に於いて、タスク1の「初期処理」の
ステップS1に続く上側の「事象1の待ち」及び「一区
切りの処理」の各ステップS2、S3は、出退勤の入力
操作を表している。即ち出勤キーまたは退勤キーが押さ
れた時、上側の「一区切りの処理」のステップS3にお
いて、出勤又は退勤に対応するマークを表示器に表示
し、10秒後に時計表示に戻すために遅延時間(10
秒)と時計表示プログラムをラグCALLに登録し、出
勤/退勤を示す区分を一時的にメモリに記憶する。そし
て再び、上側の「事象1の待ち」のステップS2とな
る。ここに於いて、もし10秒間なにも操作しなかった
場合は、アイドルタスクTOのラグCALL動作部T4
により時計表示プログラムが呼び出され、表示器は時計
表示に戻る。
【0023】また、IDカードが入力された時は、上側
の「一区切り処理」のステップS3に於いて、IDカー
ドに書込まれている社員番号を表示器に表示し、ラグC
ALLに登録されている先の遅延時間(10秒)と時計
表示プログラムを取り消して、2秒後に時計表示に戻す
ために新たに遅延時間(2秒)と時計表示プログラムを
ラグCALLに登録し、社員番号と先に指定された出勤
/退勤を示す区分及び内部時計の日付・時刻を集めて出
勤データを作成し、それをデータメモリに記憶する。そ
して再び、上側の「事象1の待ち」のステップS2とな
る。ここに於いて、社員番号を2秒間表示した後、アイ
ドルタスクTOのラグCALL動作部T4により時計表
示プログラムが呼び出され、表示器は時計表示に戻る。
次いで、時計設定用カードが入力された時は、操作モー
ドを替えるために下側の「事象1の待ち」のステップS
4に制御を移す。下側の「事象1の待ち」のステップS
4及びそれに続く「一区切りの処理」のステップS5
は、内部時計の設定操作を表している。すなわち数値入
力キーによって、入力された値を表示器に表示し、内部
時計にセットするが、再度、時計設定用カードが入力さ
れた時、設定操作を終了し上側の「事象1の待ち」のス
テップS2に制御を戻す。
【0024】タスク2の「初期処理」のステップS6に
続く「事象2の待ち」、及び、上側の「一区切りの処
理」の各ステップS7、S8では、ポーリング/セレク
ティングの判断処理を行なう。即ちホストコンピュータ
からのポーリング/セレクティングを受信した時、上側
の「一区切りの処理」のステップS8に於いて自分が呼
ばれたのかを判断する。もし他のタイムレコーダが呼ば
れた場合は「事象2の待ち」のステップS7に制御を戻
すが、自分がポーリングで呼ばれた場合は真中の「一区
切りの処理」のステップS9及びそれに続く「事象3の
待ち」のステップS10を行なう、即ち真中の「一区切
りの処理」のステップS9に於いて、データメモリから
出退データを取り出しホストコンピュータに送信した
後、「事象3の待ち」のステップS10、つまりホスト
コンピュータからの応答待ちとなる。そしてもしホスト
コンピュータからの応答が肯定応答であれば、真中の
「一区切りの処理」のステップS9に於いて、データメ
モリから次の出退データを取り出しホストコンピュータ
に送信するが、否定応答であれば同じ出退データを再び
送信する。そして、「事象3の待ち」のステップS10
となる。データメモリに出退データが無くなるまで以上
の動作を繰返し、出退データが無くなった時に以上のポ
ーリング処理を終了し「事象2の待ち」のステップS7
に制御を戻す。また、自分がセレクティングで呼ばれた
場合は、ホストコンピュータからの演算指示であるた
め、社員ごとの一カ月の労働時間を計算する処理を行な
う。即ち下側の「一区切りの処理」のステップS11及
びそれに続く「ブリーフ・ストップ」のステップS12
の長時間ループ2Aを行なう。ここに於いて、下側の
「一区切りの処理」のステップS11は1日の労働時間
計算処理であり、長時間ループ2Aはすべての社員につ
いて一カ月の労働時間を集計する。長時間ループが終了
した場合、以上のセレクティング処理を終了し「事象2
の待ち」のステップS7に制御を戻す。
【0025】図6に、上記に於けるタスク切り替えの時
間的な流れを示した。図に於いて、タスク1〜2が走っ
ている一区切りの時間は数十μs〜数十msであるの
で、人間の目からすれば操作と通信とが同じ並行処理さ
れているように見える。
【0026】次に、事象の待ちに於ける入出力ハンドラ
と前記バイパスの使用を説明する。事象の待ちを実現す
るプログラムは、図7と図8に示したように2通りあ
る。なお図7と図8は、事象1〜kに共通の原理を示し
たものであり、各々の事象待ちに於いて図7と図8のど
ちらを選択するかは、入出力ハンドラの特性に依存す
る。即ち、一般的な通信処理のように、割込みを用いて
瞬時にデータを入力或は出力しなければならない場合は
図7を選択する。一方、入出力の要求信号が出てから入
出力のやり取りを始めるような場合は、言い換えれば、
事象(要求信号)が発生した後、ある程度の時間が経過
してからでも入出力の処理が可能な場合は、図8を選択
する。また図9は、アイドルタスクTO(タスク0)に
於ける事象監視部T2の流れ図で、ステップS30〜S
38はその処理手順である。
【0027】図7は、前処理、割込み部、後処理の3つ
に分割された入出力ハンドラが、メッセージバッファを
媒介して入力データまたは出力データのやり取りを行な
うプログラムである。ここに於いて、このプログラムは
入力と出力の両方を実現するものではなく、どちらか一
方を実現するものであり、両者とも原理的に同じなた
め、同一の図を用いて説明することにする。即ち入力の
場合はステップS20の処理でメッセージバッファをク
リアした後、ステップS21で0を引数として、ステッ
プS22で前記バイパスを呼び出すことでアイドルタス
クに切り替える。つまり、前記バイパスを呼び出したタ
スクが事象の待ち状態となる。但し、前処理はこのプロ
グラムの中で行なわずに、このプログラムを呼び出すタ
スクに於いて行なう場合が多い。その後、割込み部にて
データが1文字ずつ入力され、それがメッセージバッフ
ァに順次書込まれてゆく間に、図9に於けるアイドルタ
スクの事象監視部がこの事象(メッセージバッファにデ
ータが入力されたこと)を検知し、かつこの事象に対応
する前記タスクを前記バイパスを用いて再起動する。再
起動された前記タスクに於いて、入出力ハンドラの後処
理(ステップS23)が実行されることにより、メッセ
ージバッファから入力データが取り出される。
【0028】出力の場合は、図7に於いて、ステップS
24の前処理でメッセージバッファに出力すべきデータ
を書込んだ後、メッセージバッファの先頭の1文字を出
力し、ステップS25で出力の割込みを許可状態にして
アイドルタスクに切り替える。その後、ステップS26
に進んで割込み部にてメッセージバッファの残りのデー
タが1文字ずつ出力され、メッセージバッファが空きに
なった時、出力の割込み部を終了する。図9に於けるア
イドルタスクの事象監視部が、この事象(メッセージバ
ッファが空になったこと)を検知し、この事象に対応す
る前記タスクを前記バイパスを用いて再起動する。再起
動された前記タスクに於いて、入出力ハンドラの後処理
(ステップS23)が実行されることにより、メッセー
ジバッファがクリアされる。
【0029】図8は、図7のような割込みを用いないで
入出力ハンドラの処理を行なうプログラムである。ここ
に於いて、図7と同じ意味で、図8は入力と出力の両方
を実現するものではなく、どちらか一方を実現するもの
である。図8に於いて、まず始めのステップS27で0
を引数とし、次のステップS28で前記バイパスを呼び
出すことでアイドルタスクに切り替える。これによりタ
スクが事象の待ち状態となる。そして、図9に於けるア
イドルタスクTOの事象監視部T2が事象(入出力の要
求)を検知すると、その事象に対応するタスクが再起動
され、ステップS29の入出力ハンドラの処理が実行さ
れる。この入出力ハンドラに於いて、1文字ごとの入力
または出力処理が行なわれる。
【0030】次に、ブリーフ・ストップの処理手順につ
いて説明する。図10は、図3に於ける長時間ループ2
A、ブリーフ・ストップ2B、及びブリーフ・ストップ
監視部T3を立体的に眺めた制御の流れ図であり、図1
1は、ブリーフ・ストップ2B及びブリーフ・ストップ
監視部T3の処理手順である。図11に於いて、ブリー
フ・ストップ2Bは最初のステップS40で現在実行中
のタスク番号(図1に於けるRUNTASKの値)を得
て、次のステップS41でBFLAG配列のそのタスク
番号に対応する要素を1にする。これにより、現在実行
中のタスクがブリーフ・ストップが実行したことがわか
る。そして、ステップS42で0を引数としてステップ
S43で前記のバイパスを呼び出すことで、アイドルタ
スクに切り替わる。アイドルタスクは、他の処理を実行
した後、ブリーフ・ストップ監視部T3を呼び出す。ブ
リーフ・ストップ監視部T3は、BFLAG配列をチェ
ックして、タスク1〜nがブリーフ・ストップを実行し
ているか否かを検知する。即ち、ステップS45で変数
iを1〜nに順次変化させてゆき、ステップS46でB
FLAG〔i〕が1ならば、ステップS47に進んで変
数iを引数としてステップS48で前記バイパスを呼び
出すことで対応する前記タスクを再起動し、次いで、ス
テップS49及びS50が実行される。ここに於いて、
変数iはタスク番号1〜nを意味する。再起動された前
記タスクにおいて、ステップS44のBFLAG〔i〕
←0が実行されブリーフ・ストップが解除される。
【0031】次に、ラグCALLの詳細な処理手順につ
いて説明する。図12は、L+1個のプログラムとそれ
らに対応する遅延時間が登録されている様子を示してい
る。この図は例えば、TIMER〔L〕に登録された遅
延時間Lの経過後に、FUNC〔L〕に登録されたプロ
グラムLが実行される、ということを意味する。また、
図13は、ラグCALLの登録とラグCALLの取消の
処理手順である。図に於いて、ラグCALLの登録に
は、3つの引数、つまりタイマ番号、遅延時間、プログ
ラム名が与えられる。ここに於いて、このタイマ番号は
TIMER配列の要素番号を意味する。即ち、登録に当
っては先ずステップS51でタイマ番号に対応するTI
MER配列の要素に遅延時間を入れ、次いで、ステップ
S52でタイマ番号に対応するFUNC配列の要素にプ
ログラム名を入れて、終了する。また、ラグCALLの
取消しでは、引数として取り消したいプログラムのタイ
マ番号が与えられ、次いで、ステップS53でそのタイ
マ番号に対応するTIMER配列の要素に−1を入れて
終了する。ここに於いて、−1は登録無しを意味する。
【0032】図14に、ラグCALL動作部T4に於け
る一定時間経過の検知方法を、より詳細な手順で示し
た。図に於いて等式M=0.5sec/Tは、T(m
s)のタイマ割込みを利用してアイドルタスクTOが
0.5秒ごとにラグCALLの実行(図15)を呼び出
す場合に用いられる、定数Mの算出方法である。これ
は、T(ms)タイマ割込みがM回発生すれば、0.5
秒経過したことを意味する。図に於いて、T(ms)タ
イマ割込みはT(ms)の時間間隔で呼び出される割込
みプログラムであり、ステップS54で変数jを+1し
て終了する。一方、アイドルタスクはステップS55で
他の処理を行なった後、ステップS56で変数jを絶え
ず監視していて、その値がM以上の間、ステップS57
で変数jを−MしてステップS58に進み、ラグCAL
Lの実行プログラムを呼び出すことを繰返す。以上によ
り、ラグCALLの実行プログラムは、0.5秒ごとに
アイドルタスクTOから呼び出されるのがわかる。
【0033】図15に、ラグCALLの実行の処理手順
を示した。これは、遅延時間の経過後に登録されたプロ
グラムを呼び出す処理である。図に於いて、始めのステ
ップS60で変数jを0に初期化し、次にステップS6
1で図12のTIMER〔i〕に遅延時間が登録されて
いるのか、つまりそれが−1以外の値なのかを判定す
る。もし−1以外の場合は、ステップS62に進んでT
IMER〔i〕が0ならば、ステップS63でTIME
R〔i〕を−1としてステップS64に進んで図12の
FUNC〔i〕に登録されたプログラムを呼び出すが、
TIMER〔i〕が0以外の値ならばステップS65に
進んでTIMER〔i〕を−1にする。そしてステップ
S66で変数iを+1した後、ステップS67に進んで
変数iがL以下ならばその次のTIMER〔i〕につい
て同様に処理するが、変数iがLを超えた場合は終了す
る。また、上述したステップS61でTIMER〔i〕
に遅延時間が登録されていない場合、つまりそれが−1
の場合はステップS66に進んで変数iを+1した後、
ステップS67で変数iがL以下ならばその次のTIM
ER〔i〕について同様に処理するが、変数iがLを超
えた場合は終了する。
【0034】以上に於いて、ラグCALLの実行はアイ
ドルタスクから0.5秒ごとに呼び出されるため(図1
4)、TIMER〔i〕に登録された遅延時間は0.5
秒を単位としていることがわかる。例えば、遅延時間を
2秒としたければTIMER〔i〕に4を入れる。
【0035】最後に、図5に示したマルチタスクシステ
ムを、前記バイパスを用いたラウンドロビン方式で実現
する方法について説明する。図16は、マルチタスクの
構成を示したものである。図16が図5と異なる点は、
第1に、アイドルタスクTOがタスク起動部T1によ
り、前記バイパスを用いてタスク1〜nを順次起動する
ことを絶えず繰返している点(ラウンドロビン方式)で
ある。第2に、タスク2の長時間ループ2Aに於いて、
図5ではブリーフ・ストップを用いているが、図16で
はステップS68で0を引数としてステップS69で前
記バイパスを呼び出すだけで一時停止が可能にした点で
ある。つまり、アイドルタスクは順次タスク1〜nを再
起動するのでタスク2が再起動した場合、前記長時間ル
ープに制御が戻ってくる。また図16に於ける事象1〜
kの待ちは、図17或は図18に示した原理によって実
現される。ここで、各々の事象待ちに於いて図17と図
18のどちらを選択するかは、前述したように入出力ハ
ンドラの特性に依存する。
【0036】更に、図17が図7と異なる点は、ステッ
プS70で事象の検知を行なっている点である。すなわ
ち、事象が発生しなかった場合は、0を引数として前記
バイパスを呼び出すことでアイドルタスクに切り替える
が、事象が発生した場合は、入出力ハンドラの後処理を
実行して終了する。なお、事象が発生していない状態で
は、アイドルタスクによって再起動されたとしても、前
記バイパスによりアイドルタスクへと制御がすぐに戻
る。尚、図18が図8と異なる点も、以上と同様にステ
ップS71で事象の検知を行なっている点であって、従
って、上述した図16乃至図18では各ステップに於け
る処理手順の説明は省略した。
【0037】
【発明の効果】以上のように、この発明に係るマルチタ
スクシステムに於けるプログラム制御方式によれば、タ
スク切り替えが割込みを使わずに実現できるため、入出
力の動作自体をCPUが行なっているコンピュータ・シ
ステムにおいて、マルチタスクでの設計が可能となる。
また、設計者がマルチタスク・プログラムでの制御の流
れを追う場合、とてもわかりやすいため、設計やデバッ
グに要する作業時間を短縮できる。
【図面の簡単な説明】
【図1】CPUに於けるレジスタの構成と、各タスク毎
のスタック及び汎用レジスタの構成を示した構成図であ
る。
【図2】バイパスの処理手順を説明した流れ図である。
【図3】各タスクの内容を説明した構成図である。
【図4】各タスクを立体的に見た場合の制御の流れ図で
ある。
【図5】各タスクに於ける処理手順を説明した流れ図で
ある。
【図6】各タスク切り替えの時間的な流れを示した流れ
図である。
【図7】事象の待ちを実現するプログラムの処理手順を
説明した流れ図である。
【図8】事象の待ちを実現する他のプログラムの処理手
順を説明した流れ図である。
【図9】アイドルタスクに於ける事象監視部の流れ図で
ある。
【図10】図3に示した長時間ループ、ブリーフ・スト
ップ、及びブリーフ・ストップ監視部を立体的に眺めた
制御の流れ図である。
【図11】ブリーフ・ストップ及びブリーフ・ストップ
監視部の処理手順を説明した流れ図である。
【図12】ラグCALLのプログラムとそれらに対応す
る遅延時間が登録されている様子を説明した流れ図であ
る。
【図13】ラグCALLの登録と取消の処理手順を説明
した流れ図である。
【図14】ラグCALL動作部に於ける一定時間経過後
の検知手順を説明した流れ図である。
【図15】ラグCALLの実行の処理手順を説明した流
れ図である。
【図16】図5に示したマルチタスクシステムをバイパ
スを用いたラウンドロビー方式で実現する場合のマルチ
タスクに於ける各処理の手順を説明した流れ図である。
【図17】同じく事象の待ちを実現するプログラムの処
理手順を説明した流れ図である。
【図18】同じく事象の待ちを実現する他のプログラム
の処理手順を説明した流れ図である。
【図19】従来のマルチタスクシステムの構成図であ
る。
【図20】従来のマルチタスクシステムに於ける並行処
理の原理を示した説明図である。
【図21】従来のマルチタスクシステムに於けるタスク
切り替えの手順を説明した流れ図である。
【符号の説明】
TO アイドルタスク T1 初期起動部 T2 事象監視部 T3 ブリーフ・ストップ監視部 T4 ラグCALL動作部 1〜n タスク 2A 長時間ループ 2B ブリーフ・ストップ

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 1つの中央演算処理装置で複数のタスク
    を実行するマルチタスクシステムに於いて、 目的とするタスクのタスク番号を指定することができ、
    且つ、現在実行中のタスクを中断して目的のタスクに切
    り替えることができるバイパス手段と、各タスクに於い
    て入出力に関する事象の待ち状態になった時に、各タス
    クを上記のバイパス手段を用いてアイドルタスクに切り
    替え、また、アイドルタスクが上記のバイパス手段を用
    いて各タスクを再起動するように構成した制御移行手段
    とを具備して成ることを特徴とするマルチタスクシステ
    ムに於けるプログラム制御方式。
  2. 【請求項2】 各タスクに於いて入出力に関する事象待
    ちのない長時間ループ処理があった場合にその処理を一
    時停止し、他のタスクを走らせてから再びその長時間ル
    ープ処理に制御を戻すブリーフ・ストップ手段を具備し
    て成ることを特徴とする請求項1記載のマルチタスクシ
    ステムに於けるプログラム制御方式。
  3. 【請求項3】 複数のプログラムの実行を遅延させる目
    的で、各タスクが各プログラムとそれ等各々に対する複
    数の遅延時間を登録することができ、且つ、タイマ割込
    みとアイドルタスクを用いて上記複数の遅延時間をカウ
    ントして、上記各々の遅延時間の経過後にそれ等各々に
    対応する各プログラムを実行するラグCALL手段と、
    登録された各プログラムの遅延実行を取り消す取消手段
    とを具備して成ることを特徴とする請求項1記載のマル
    チタスクシステムに於けるプログラム制御方式。
JP20285493A 1993-07-23 1993-07-23 マルチタスクシステムに於けるプログラム制御方式 Pending JPH0736715A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20285493A JPH0736715A (ja) 1993-07-23 1993-07-23 マルチタスクシステムに於けるプログラム制御方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20285493A JPH0736715A (ja) 1993-07-23 1993-07-23 マルチタスクシステムに於けるプログラム制御方式

Publications (1)

Publication Number Publication Date
JPH0736715A true JPH0736715A (ja) 1995-02-07

Family

ID=16464298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20285493A Pending JPH0736715A (ja) 1993-07-23 1993-07-23 マルチタスクシステムに於けるプログラム制御方式

Country Status (1)

Country Link
JP (1) JPH0736715A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008003915A (ja) * 2006-06-23 2008-01-10 Denso Corp 電子機器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008003915A (ja) * 2006-06-23 2008-01-10 Denso Corp 電子機器

Similar Documents

Publication Publication Date Title
KR930000592B1 (ko) 타스크 추적장치
US20050015767A1 (en) Operating system configuration tool
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
EP1766510B1 (en) Microprocessor output ports and control of instructions provided therefrom
JPH0736715A (ja) マルチタスクシステムに於けるプログラム制御方式
TWI303040B (en) Method for meeting smi duration limits by time slicing smi handlers
JP2001318807A (ja) タスク切り替え制御方法及び装置
US5913073A (en) Input/output driver for benchmark testing
JPH0667899A (ja) タスクスケジューリング装置の複数タスク周期起動方法
JP3207564B2 (ja) イベント記録方法及び装置
JPH0334037A (ja) システム異常の検出処理方式
JPH064318A (ja) エラー検出方式
JP2677175B2 (ja) コンピュータシステムの外部イベント検出方式
JPH0199132A (ja) マルチタスク実行装置
KR940007832B1 (ko) 실시간 시스템의 프로세서 부하 측정방법
Kritzinger et al. Incorporating system overhead in queuing network models
JPH0683652A (ja) マイクロコンピュ−タシステム
JPS6128144A (ja) トレ−ス動作実行装置
JPH05204672A (ja) インタフェースシステム
JP2001101221A (ja) データベースアクセス方式及び方法
JP3042034B2 (ja) 障害処理方式
JPS63311442A (ja) マルチオペレ−テイングシステム
JP2000242522A (ja) マルチタスクデバッグ装置及びその方法
JPH0485610A (ja) サイクリックタイマ制御装置
JPH04274523A (ja) 情報処理システムにおけるイベント管理方式