JPS60114940A - マルチ・タスク制御用デバイス - Google Patents
マルチ・タスク制御用デバイスInfo
- Publication number
- JPS60114940A JPS60114940A JP22294983A JP22294983A JPS60114940A JP S60114940 A JPS60114940 A JP S60114940A JP 22294983 A JP22294983 A JP 22294983A JP 22294983 A JP22294983 A JP 22294983A JP S60114940 A JPS60114940 A JP S60114940A
- Authority
- JP
- Japan
- Prior art keywords
- task
- command
- priority
- phase
- register
- 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.)
- Granted
Links
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
く技術分野〉
本発明は、マイクロコンピュータのシステム管理プログ
ラムに有効なマルチ・タスク制御用機能を内蔵したコン
ピュータ周辺デバイスに関するものである。
ラムに有効なマルチ・タスク制御用機能を内蔵したコン
ピュータ周辺デバイスに関するものである。
〈従来技術〉
マイクロコンピュータ・システムにおいて、1つのCP
Uによって複数のタスクを同時に処理させるには、プロ
グラムが複雑で大容量になりやすく、またタスクの切換
えを行なうプログラムの設計も難しくなる。そこで、コ
ンピュータ・システムのO8(オペレーティング−シス
テム)によるマルチ−タスク制御が必要となる。
Uによって複数のタスクを同時に処理させるには、プロ
グラムが複雑で大容量になりやすく、またタスクの切換
えを行なうプログラムの設計も難しくなる。そこで、コ
ンピュータ・システムのO8(オペレーティング−シス
テム)によるマルチ−タスク制御が必要となる。
従来、このO8はマスタCPUが管理するメモリ空間上
におかれているため、タスクの切換えをマスタCPU自
身が行なっていた。従って、マイクロコンピュータのよ
うな小さいメモリ空間しか持たないシステムでは、ユー
ザー・プログラムをおくためのメモリ空間にも制約を与
えた。また、実行させるタスクを決定するための優先度
の比較演算をマスタCPUが行なわねばならす、タスク
切換えのためのオーバーヘッドが大きかった。
におかれているため、タスクの切換えをマスタCPU自
身が行なっていた。従って、マイクロコンピュータのよ
うな小さいメモリ空間しか持たないシステムでは、ユー
ザー・プログラムをおくためのメモリ空間にも制約を与
えた。また、実行させるタスクを決定するための優先度
の比較演算をマスタCPUが行なわねばならす、タスク
切換えのためのオーバーヘッドが大きかった。
〈発明の目的〉
本発明は、タスクの優先度の比較はマスタCPUとは別
に実行されるため、マスタCPUのユーザー・プログラ
ムの処理速度を向上させることが可能であり、またマス
タCPUが実行しているタス夕を切換える手段として割
込み信号を用いているため、多(の汎用マイクロコンピ
ュータに適用できる、有用なマルチ・タスク制御用デバ
イスを提供するものである。
に実行されるため、マスタCPUのユーザー・プログラ
ムの処理速度を向上させることが可能であり、またマス
タCPUが実行しているタス夕を切換える手段として割
込み信号を用いているため、多(の汎用マイクロコンピ
ュータに適用できる、有用なマルチ・タスク制御用デバ
イスを提供するものである。
〈実施例〉
以下図面に従って本発明の一実施例を説明する。
第1区目はマイクロコンピュータ拳システムとしての構
成例を示す図である。素子(又は装置)1は、本発明に
係るマルチ・タスク制御を実現するための独立したマル
チeタスク・サポート・プロセッサとして構成されたも
のであり、他の周辺デバイスと同様、入出力素子の形態
で供給される。
成例を示す図である。素子(又は装置)1は、本発明に
係るマルチ・タスク制御を実現するための独立したマル
チeタスク・サポート・プロセッサとして構成されたも
のであり、他の周辺デバイスと同様、入出力素子の形態
で供給される。
以下本デバイスをマルチ拳タスク制御用素子と呼ぶ。マ
スタCPU2 、プログラム・メモリ(ROM)3、デ
ータ・メモリ(RAM)4及び他のIlo等の周辺入出
力素子5は、周知のマイクロコンピュータ・システムと
して具備されるものであり、マルチ・タスク制御用素子
1とともにバス6を介して相互に接続される。プログラ
ムのメモリ3は、マルチ・タスク制御用素子1の初期化
プログラムと複数のタスクをそれぞれ独立してプログラ
ムしている。
スタCPU2 、プログラム・メモリ(ROM)3、デ
ータ・メモリ(RAM)4及び他のIlo等の周辺入出
力素子5は、周知のマイクロコンピュータ・システムと
して具備されるものであり、マルチ・タスク制御用素子
1とともにバス6を介して相互に接続される。プログラ
ムのメモリ3は、マルチ・タスク制御用素子1の初期化
プログラムと複数のタスクをそれぞれ独立してプログラ
ムしている。
マルチ・タスク制御用素子1は、マスタCP U2によ
り実行されるこれら複数のタスクの管理をマスタCPU
2以外で行なう独立機能素子であり、タスクのスケジュ
ーリング機能(優先度順又は時分割による実行タスクの
切換え)、タスク間の同期・通信機能(各タスク間でデ
ータの送受信を行ない、タスクの実行中断、実行再開を
決定)、メモリ管理機能(各タスクの使用メモリ領域の
重複使用の禁止)、時計機能(内蔵タイマによる時刻の
セット)等を有している。つまり、このマルチ−タスク
制御用素子1は、マルチΦタスクの制御機能をコンピュ
ータ・システムのO8自身のもつ機能とせず、その機能
を有する周辺デバイスとした点に特色がある。
り実行されるこれら複数のタスクの管理をマスタCPU
2以外で行なう独立機能素子であり、タスクのスケジュ
ーリング機能(優先度順又は時分割による実行タスクの
切換え)、タスク間の同期・通信機能(各タスク間でデ
ータの送受信を行ない、タスクの実行中断、実行再開を
決定)、メモリ管理機能(各タスクの使用メモリ領域の
重複使用の禁止)、時計機能(内蔵タイマによる時刻の
セット)等を有している。つまり、このマルチ−タスク
制御用素子1は、マルチΦタスクの制御機能をコンピュ
ータ・システムのO8自身のもつ機能とせず、その機能
を有する周辺デバイスとした点に特色がある。
第2図はマルチ・タスク制御用素子1の内部構成例を示
すブロック図である。
すブロック図である。
マルチ拳タスク制御用素子1はマスタCPU2からアク
セス可能なレジスタ群を備えている。
セス可能なレジスタ群を備えている。
コマンド・パラメータeレジスタCPIOは、マスクC
PU2からコマンド実行時に入力するパラメータや、実
行後に出力するパラメータを保持する。コマンド/ステ
ータス・レジスタCN5Tは書込み時にはコマンド書込
み用として、読出し時には実行したコマンドの実行情報
を格納するためのレジスタとして機能する。新スタック
拳ポインターレジスタSPNは、タスク切換え情報とし
てこれから新らたに実行状態となるタスクのスタック−
ポインタの値を出力するためのレジスタである。また、
旧スタック・ポインタ・レジスタSPBは、タスク切換
え情報として今まで実行状部にあったタスクのスタック
・ポインタの値を入力するためのレジスタである。
PU2からコマンド実行時に入力するパラメータや、実
行後に出力するパラメータを保持する。コマンド/ステ
ータス・レジスタCN5Tは書込み時にはコマンド書込
み用として、読出し時には実行したコマンドの実行情報
を格納するためのレジスタとして機能する。新スタック
拳ポインターレジスタSPNは、タスク切換え情報とし
てこれから新らたに実行状態となるタスクのスタック−
ポインタの値を出力するためのレジスタである。また、
旧スタック・ポインタ・レジスタSPBは、タスク切換
え情報として今まで実行状部にあったタスクのスタック
・ポインタの値を入力するためのレジスタである。
マスク割込み制御レジスタMICは本素子1における、
マスタCPU2に対する割込み発生を制御するためのレ
ジスタで、割込みベクタ・レジスタMIVは割込みベク
タ値を書込む。データーレジスタPID、P2D、P3
Dはボート1.ボート2およびボート3のデータ入出力
のためのレジスタである。ボート1とボート2はデータ
人出方方向をプログラムによってビット単位で設定でき
る8ビツト入出力ポートであり、ボート3は1ビツトの
入力ポートである。ボート3はプログラムによってイベ
ント久方(ボート3への大刀信号の遷移により停止状態
のタスクをレディー状態に移す)にセットすることが可
能である。
マスタCPU2に対する割込み発生を制御するためのレ
ジスタで、割込みベクタ・レジスタMIVは割込みベク
タ値を書込む。データーレジスタPID、P2D、P3
Dはボート1.ボート2およびボート3のデータ入出力
のためのレジスタである。ボート1とボート2はデータ
人出方方向をプログラムによってビット単位で設定でき
る8ビツト入出力ポートであり、ボート3は1ビツトの
入力ポートである。ボート3はプログラムによってイベ
ント久方(ボート3への大刀信号の遷移により停止状態
のタスクをレディー状態に移す)にセットすることが可
能である。
以上のレジスタ群はマスタCPU2からアクセスされて
、本素子1とマスタCPU2との間で情報を相互に交換
するために用いられる。データ・バスーインターフェイ
スDBI、バス・タイミング発生・制御回路BTGC,
割込み制御回路I NTCは、マスタCPU2とのイン
ターフェイス回路として備えられたものである。
、本素子1とマスタCPU2との間で情報を相互に交換
するために用いられる。データ・バスーインターフェイ
スDBI、バス・タイミング発生・制御回路BTGC,
割込み制御回路I NTCは、マスタCPU2とのイン
ターフェイス回路として備えられたものである。
タスク制御ブロックTCB(1〜8)はタスクの状態を
保存するためのメモリ領域である。ここでは8つまでの
タスクを取扱うことが可能である。
保存するためのメモリ領域である。ここでは8つまでの
タスクを取扱うことが可能である。
各ブロックは第3図に示されるように、タスク・ ゝス
テータス0.タスク優先度■、先にレディーQに接続さ
れているタスクの番号■、後にレディーQに接続されて
いるタスクの番号■、タスクが占有しているワーク・メ
モリの先頭アドレス■、そのサイズ■、使用しているメ
イル・ボックス番号Q、そしてタスク実行中断時のスタ
ック・ポインタ値■を格納する領域を有している。
テータス0.タスク優先度■、先にレディーQに接続さ
れているタスクの番号■、後にレディーQに接続されて
いるタスクの番号■、タスクが占有しているワーク・メ
モリの先頭アドレス■、そのサイズ■、使用しているメ
イル・ボックス番号Q、そしてタスク実行中断時のスタ
ック・ポインタ値■を格納する領域を有している。
メイル・ボックスMBXはタスク間でデータの授受を行
なうよう設けられたバッファ・メモリ領域である。
なうよう設けられたバッファ・メモリ領域である。
メモリ・マツプMEMMAPはワーク・メモリを管理す
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプMEMMAP
により64にバイト単位のワーク−メモリを管理するこ
とが可能である。ワーク・メモリを使用していないとき
その領域に対応するビットは“0”で、占有中であると
きはそのビットが“1″にセットされる。
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプMEMMAP
により64にバイト単位のワーク−メモリを管理するこ
とが可能である。ワーク・メモリを使用していないとき
その領域に対応するビットは“0”で、占有中であると
きはそのビットが“1″にセットされる。
タイマTMは時分割処理(同一優先度のタスクを一定時
間毎に実行させる処理)等のために、素子1内に割込み
信号を発生させるためので、システ、ムクロック領域S
CAは同時にタイマTMの出力により計数される時2分
2秒等の時刻データを格納するメモリ領域である。
間毎に実行させる処理)等のために、素子1内に割込み
信号を発生させるためので、システ、ムクロック領域S
CAは同時にタイマTMの出力により計数される時2分
2秒等の時刻データを格納するメモリ領域である。
内部演算制御回路C0NTは論理演算ユニット(ALU
)、本素子1のプログラムを格納するR OM 、一時
記憶用のRAM 、および各種制御のためのフラグ用レ
ジスタ等を有してなる。
)、本素子1のプログラムを格納するR OM 、一時
記憶用のRAM 、および各種制御のためのフラグ用レ
ジスタ等を有してなる。
マスタCPU2からマスチ・タスク制御用素子1へのア
クセスは、実行中のタスクから発行されるコマンドによ
って行なわれ、マルチ・タスク制御用素子1からマスタ
CPU2へのア外セスは、マルチ・タスク制御用素子1
の割込み信号発生に基ついて行なわれる。第5図はコマ
ンドの種類と入力パラメータおよび出力パラメータを示
す図である。
クセスは、実行中のタスクから発行されるコマンドによ
って行なわれ、マルチ・タスク制御用素子1からマスタ
CPU2へのア外セスは、マルチ・タスク制御用素子1
の割込み信号発生に基ついて行なわれる。第5図はコマ
ンドの種類と入力パラメータおよび出力パラメータを示
す図である。
基本的動作としては次のとおりである。なお、タスク制
御ブロックTCBには各タスクの状態が既に保存されて
いるものとする。
御ブロックTCBには各タスクの状態が既に保存されて
いるものとする。
マルチ・タスク制御用素子1は、実行可能状聾のタスク
から優先度の一番高いタスクを選び出し、登録されたそ
のタスクのスタック・ポインタの値を新スタック・ポイ
ンタ・レジスタSPNに準備する。スタック・ポインタ
の値を準備した後、マルチ・タスク制御用素子1はマス
タCPU2に対し割込みを発生する。マスクCPU2は
割込み処理ルーチンを実行し、マルチ・タスク制御用素
子1にセットされ、ているスタック・ポインタの値を自
分のスタックのポインタにロードし、予じめ書込まれて
いたレジスタの初期値をスタックからポツプしてレジス
タを書換える。そしてマスタCPU2の管理下において
指定されたタスクを実行する。
から優先度の一番高いタスクを選び出し、登録されたそ
のタスクのスタック・ポインタの値を新スタック・ポイ
ンタ・レジスタSPNに準備する。スタック・ポインタ
の値を準備した後、マルチ・タスク制御用素子1はマス
タCPU2に対し割込みを発生する。マスクCPU2は
割込み処理ルーチンを実行し、マルチ・タスク制御用素
子1にセットされ、ているスタック・ポインタの値を自
分のスタックのポインタにロードし、予じめ書込まれて
いたレジスタの初期値をスタックからポツプしてレジス
タを書換える。そしてマスタCPU2の管理下において
指定されたタスクを実行する。
実行中のタスクからコマンド入力があるか、またはタイ
マTMあるいはポート3への入力による割込みかあるま
で、マルチ・タスク制御用素子1は待ち状態となる。こ
こで例えばコマンド入力があれば、マルチ・タスク制御
用素子1はそのコマンドを解析しコマンド処理を行なう
。そして、このコマンドかタスク切換え機能を含むもの
であれば、次に切換えるべきタスクのスタック・ポイン
タの値を新スタック・ポインタ・レジスタSPNにセッ
トし、マスタCPU2に対し割込みを発生する。この割
込みによってマスタCPU2は現在実行中のタスクの実
行を停止し、次に実行すべきタスクのスタック・ポイン
タの値をマルチΦタスク制御用素子1から読出す。
マTMあるいはポート3への入力による割込みかあるま
で、マルチ・タスク制御用素子1は待ち状態となる。こ
こで例えばコマンド入力があれば、マルチ・タスク制御
用素子1はそのコマンドを解析しコマンド処理を行なう
。そして、このコマンドかタスク切換え機能を含むもの
であれば、次に切換えるべきタスクのスタック・ポイン
タの値を新スタック・ポインタ・レジスタSPNにセッ
トし、マスタCPU2に対し割込みを発生する。この割
込みによってマスタCPU2は現在実行中のタスクの実
行を停止し、次に実行すべきタスクのスタック・ポイン
タの値をマルチΦタスク制御用素子1から読出す。
以下フローチャートを参照してさらに詳しく説明する。
第6図はマルチ・タスク制御用素子1のメインルーチン
の動作を説明するフローチャート、第7図〜第21図は
各コマンドO〜14による処理ルーチンの動作を説明す
るフローチャート、第22図はタスク切換えルーチンの
動作を説明するフローチャート、第23図はポート3へ
のイベント入力による割込み処理ルーチンの動作を説明
するフローチャート、第24図はタイマTMによる割込
み処理ルーチンの動作を説明するフローチャートである
。
の動作を説明するフローチャート、第7図〜第21図は
各コマンドO〜14による処理ルーチンの動作を説明す
るフローチャート、第22図はタスク切換えルーチンの
動作を説明するフローチャート、第23図はポート3へ
のイベント入力による割込み処理ルーチンの動作を説明
するフローチャート、第24図はタイマTMによる割込
み処理ルーチンの動作を説明するフローチャートである
。
第6図において、−、tXテムに電源が投入されると、
本マルチ・タスク制御用素子1はリセット動作を行ない
内部の各機能素子を初期化する(ステップ■)。そして
、マスタCPU2からコマンドがコマント/ステータス
・レジスタCN5Tに書込まれるのを待つ(ステップ■
)。コマンドか書込マれると、各コマンド拳コードに対
応したコマンド処理を行なう(ステップ■)。
本マルチ・タスク制御用素子1はリセット動作を行ない
内部の各機能素子を初期化する(ステップ■)。そして
、マスタCPU2からコマンドがコマント/ステータス
・レジスタCN5Tに書込まれるのを待つ(ステップ■
)。コマンドか書込マれると、各コマンド拳コードに対
応したコマンド処理を行なう(ステップ■)。
コマンド0(コマンド名:INIT、17図70−チャ
ート)は、マルチ・タスク制御用素子lの初期化を行な
うためのコマンドであり、マルチ・タスク制御用素子1
がマスタCPU2に対して割込みを発生するときにマス
クCPU2へ出方するベクタ値、マルチ−タスク制御用
素子1が管理するワーク・メモリ領域の先頭アドレスと
その大きさ、及びマスクの優先度を各タスクに対して登
録するためのコマンドである。
ート)は、マルチ・タスク制御用素子lの初期化を行な
うためのコマンドであり、マルチ・タスク制御用素子1
がマスタCPU2に対して割込みを発生するときにマス
クCPU2へ出方するベクタ値、マルチ−タスク制御用
素子1が管理するワーク・メモリ領域の先頭アドレスと
その大きさ、及びマスクの優先度を各タスクに対して登
録するためのコマンドである。
このコマンドが実行されると、入力データのエラーを調
査しくステップ■)、もし入力データに誤りがあれば、
エラーコードをコマンド/ステータスΦレジスタCN5
Tにセットする(ステップ■)。
査しくステップ■)、もし入力データに誤りがあれば、
エラーコードをコマンド/ステータスΦレジスタCN5
Tにセットする(ステップ■)。
入力データに誤りがなければ、コマンド・パラメータ・
レジスタCPIOに送られたデータから割込みベクタ値
を割込みベクタレジスタM I Vに書込み(ステップ
■)、またワーク・メモリ領域の先頭アドレスとその大
きさのデータをもとにしてメモリ・マツプMEMMAP
を初期化する(ステップ■)。そして、書込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
べてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の■、■によって順序っけ
を行なう。生成後は正常終了コードをコマンド/ステー
タス・レジスタCN5T+Cセツトしくステップ@))
、内部演算制御回路C0NTのTSKCHG フラグを
リセットして(ステップ@)、第6図のメインルーチン
に戻る。
レジスタCPIOに送られたデータから割込みベクタ値
を割込みベクタレジスタM I Vに書込み(ステップ
■)、またワーク・メモリ領域の先頭アドレスとその大
きさのデータをもとにしてメモリ・マツプMEMMAP
を初期化する(ステップ■)。そして、書込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
べてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の■、■によって順序っけ
を行なう。生成後は正常終了コードをコマンド/ステー
タス・レジスタCN5T+Cセツトしくステップ@))
、内部演算制御回路C0NTのTSKCHG フラグを
リセットして(ステップ@)、第6図のメインルーチン
に戻る。
エラーコードをコマンド/ステータス・レジスタCN5
Tにセットした場合も同様にTSKCHGフラグをリセ
ットしてメインルーチンに戻る。
Tにセットした場合も同様にTSKCHGフラグをリセ
ットしてメインルーチンに戻る。
コマンド1(コマンド名:TsTR,第8図)0−−チ
ャート)は、初期化したマルチ轡りスク制御用素子1を
実行状態に移すためのコマンドであこのコマンド1ては
、コマンド0の処理か実行済かどうかのチェックを行な
い(ステップ@)、実行済の場合のみ、レディーQの先
頭に接続されているタスク(一番優先度の高いタスク)
を実行状態に移すためTSKCHGフラグ(内部演算制
御回路C0NTの制御フラグ)をセットして(ステップ
■)、第6図のメインルーチンに戻る。実行済でない場
合は、コマンド/ステータス・レジスタCN5Tにエラ
ーコードをセットしくステップo)、メインルーチンに
戻る。
ャート)は、初期化したマルチ轡りスク制御用素子1を
実行状態に移すためのコマンドであこのコマンド1ては
、コマンド0の処理か実行済かどうかのチェックを行な
い(ステップ@)、実行済の場合のみ、レディーQの先
頭に接続されているタスク(一番優先度の高いタスク)
を実行状態に移すためTSKCHGフラグ(内部演算制
御回路C0NTの制御フラグ)をセットして(ステップ
■)、第6図のメインルーチンに戻る。実行済でない場
合は、コマンド/ステータス・レジスタCN5Tにエラ
ーコードをセットしくステップo)、メインルーチンに
戻る。
以上のコマンド0.1およびマルチ−タスク制御用素子
1への書込み情報は、例えば第1図のプログラム・メモ
リ3の初期化プログラムに予じめ格納され、タスク内容
に応じてプログラム変更が可能であり、マルチ・タスク
制御用素子1はこれにより種々に初期化設定することが
できる。
1への書込み情報は、例えば第1図のプログラム・メモ
リ3の初期化プログラムに予じめ格納され、タスク内容
に応じてプログラム変更が可能であり、マルチ・タスク
制御用素子1はこれにより種々に初期化設定することが
できる。
コマンド2(コマンド名:rCRT、第9図タイムチャ
ート)は初期設定の後、任意にタスクを生成するための
コマンドであり、入力データとして生成するタスクの番
号およびその優先度か本素子1のコマンド・パラメータ
・レジスタCPIOに書込まれる。
ート)は初期設定の後、任意にタスクを生成するための
コマンドであり、入力データとして生成するタスクの番
号およびその優先度か本素子1のコマンド・パラメータ
・レジスタCPIOに書込まれる。
このコマンド2か実行されると、入力データにエラーが
ないかの検査を行ない(ステップ0)、エラーがあれば
コマンド/ステータス・レジスタCN5Tにエラーコー
ドを書込む(ステップ[相])、エラーがなければ、入
力データで指定されたタスクのタスク制御ブロックTC
Bを生成する(ステップO)。
ないかの検査を行ない(ステップ0)、エラーがあれば
コマンド/ステータス・レジスタCN5Tにエラーコー
ドを書込む(ステップ[相])、エラーがなければ、入
力データで指定されたタスクのタスク制御ブロックTC
Bを生成する(ステップO)。
タスク制御ブロックTCB中のタスク拳ステータス■(
第3図参照)には次の4つのフラグが含まれる。
第3図参照)には次の4つのフラグが含まれる。
RUNフラグはタスクが実行状態にあることを示す。
READYフラグはタスクがレディー状態にあってレデ
ィーQに接続されていることを示す。
ィーQに接続されていることを示す。
PENDWフラグはメツセージ受信待ち状態にあること
を示す。
を示す。
5USPENDフラグはタスクが停止状態にあることを
示す。
示す。
上記タスク制御ブロック]’ CBの生成時(ステップ
O)、同1寺にその中のREADYフラグをセットする
。
O)、同1寺にその中のREADYフラグをセットする
。
そして、タスクの優先度が高い順にレディーQに再接続
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ[相])、実行状聾のタスクとレディーQの先頭に接
続されているタスクの優先度を比較させるためのTSK
CHG フラグをセットして(ステップ[相])、第6
図のメインルーチンに戻る。
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ[相])、実行状聾のタスクとレディーQの先頭に接
続されているタスクの優先度を比較させるためのTSK
CHG フラグをセットして(ステップ[相])、第6
図のメインルーチンに戻る。
コマンド3(コマンド名:TDEL 、110図タイム
チャート)は不要のタスクを消去するためのコマンドで
、消去するタスクの番号を入力データとして実行する。
チャート)は不要のタスクを消去するためのコマンドで
、消去するタスクの番号を入力データとして実行する。
入力データにエラーがないかの検査(ステップ■)にお
いて、エラーがあればコマンド/ステータス・レジスタ
CN5Tにエラーコードがセットされ(ステップ[相]
)、第6図のメインルーチンに戻る。
いて、エラーがあればコマンド/ステータス・レジスタ
CN5Tにエラーコードがセットされ(ステップ[相]
)、第6図のメインルーチンに戻る。
エラーかなけれは、消去するタスクか占有していたワー
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリーサイズ■を読出し、このデータに基づいて
メモリマツプM E MMAP上で対応した領域を11
011クリアする(ステップ[相])。ついでこのタス
クがレディー状態にあれば、消去するタスクのタスク制
御ブロックTCBをレディーQから切離しくステップ[
相])、このタスク制御ブロックTCBのすべてをクリ
アする(ステップ[相])。終われば、コマンド/ステ
ータス・レジスタCN5Tに正常終了コードをセットし
て(ステップ[相])、メインルーチ/に戻る。
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリーサイズ■を読出し、このデータに基づいて
メモリマツプM E MMAP上で対応した領域を11
011クリアする(ステップ[相])。ついでこのタス
クがレディー状態にあれば、消去するタスクのタスク制
御ブロックTCBをレディーQから切離しくステップ[
相])、このタスク制御ブロックTCBのすべてをクリ
アする(ステップ[相])。終われば、コマンド/ステ
ータス・レジスタCN5Tに正常終了コードをセットし
て(ステップ[相])、メインルーチ/に戻る。
コマンド4(コマンド名: TR5M、第11図フロー
チャート)は、入力データで指定されたタスク番号を持
つ待期または停止中のタスクをレディー状態(再起動可
能状態)にするためのコマンドである。タスク番号を入
力データとして実行する。
チャート)は、入力データで指定されたタスク番号を持
つ待期または停止中のタスクをレディー状態(再起動可
能状態)にするためのコマンドである。タスク番号を入
力データとして実行する。
コマンド4が実行されると、まず入力データにエラーが
ないかの検査か行なわれ(ステップ0)、エラーかあれ
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードを設定して(ステップ[相])、メインルーチンに
戻る。
ないかの検査か行なわれ(ステップ0)、エラーかあれ
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードを設定して(ステップ[相])、メインルーチンに
戻る。
エラーがなければ、指定されたタスクのPENDWフラ
グまたは5USPENDフラグをリセットするとともに
READYフラグをセットし、かっこのタスク制御ブロ
ックTCBをタスクの優先度の高い順序テレディーQに
接続する(ステップ[相])。そして正常終了コードを
コマンド/ステータス・レジスタCN5Tにセットしく
ステップ[相])、実行状態のタスクとレディーQの先
頭に接続されているタスクの優先度を比較するためTS
KCHGフラグをセットしくステップ[相])メインル
ーチンに戻る。
グまたは5USPENDフラグをリセットするとともに
READYフラグをセットし、かっこのタスク制御ブロ
ックTCBをタスクの優先度の高い順序テレディーQに
接続する(ステップ[相])。そして正常終了コードを
コマンド/ステータス・レジスタCN5Tにセットしく
ステップ[相])、実行状態のタスクとレディーQの先
頭に接続されているタスクの優先度を比較するためTS
KCHGフラグをセットしくステップ[相])メインル
ーチンに戻る。
コマンド5(コマンド名:TsPD、!f12図フロー
チャート)は、入力データで指定されたタスク番号を持
つ実行状態あるいはレディー状態にあるタスクを停止状
態にするためのコマンドである。
チャート)は、入力データで指定されたタスク番号を持
つ実行状態あるいはレディー状態にあるタスクを停止状
態にするためのコマンドである。
このコマンド5が実行されると、入力/−夕のエラーを
検査し、エラーがあればコマンド/ステータス・レジス
タCN5Tにエラーコードを設定してメインルーチンに
戻る(ステップ[相]、[相])。
検査し、エラーがあればコマンド/ステータス・レジス
タCN5Tにエラーコードを設定してメインルーチンに
戻る(ステップ[相]、[相])。
エラーがなければ、まず、入力データによって、停止状
態になるタスクをポート3からの入力信号(外部イベン
ト)によりレディー状態にする(再起動)という指定が
されているかどうかのチェックを行なう(ステップ[相
])。外部イベントの指定がなければステップ@の処理
ヘスキップする。指定がある場合は、他のタスクが既に
外部イベントを使用しているかどうかの検査を行ない(
ステップ[相])、使用されていれば、コマンド/ステ
ータス・レジスタCN5Tにエラーコードをセットして
(ステップ[相])メインルーチンに戻る。使用されて
いなければ、ポート3の入力信号の遷移による内部割込
みをイネーブルにする(ステップ[相])。
態になるタスクをポート3からの入力信号(外部イベン
ト)によりレディー状態にする(再起動)という指定が
されているかどうかのチェックを行なう(ステップ[相
])。外部イベントの指定がなければステップ@の処理
ヘスキップする。指定がある場合は、他のタスクが既に
外部イベントを使用しているかどうかの検査を行ない(
ステップ[相])、使用されていれば、コマンド/ステ
ータス・レジスタCN5Tにエラーコードをセットして
(ステップ[相])メインルーチンに戻る。使用されて
いなければ、ポート3の入力信号の遷移による内部割込
みをイネーブルにする(ステップ[相])。
すなわち、本コマンド5の入力データ設定により外部イ
ベント起動の指定が可能である。
ベント起動の指定が可能である。
そして、スキップした場合を含めて次に、そのタスク制
御ブロックTCB中のRUNフラグ(指定したタスクが
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPEND フ
ラグをセットする(ステップ0)。終われば、コマンド
/ステータス・レジスタCN5Tに正常終了コードをセ
ットする(ステップ[相])。そして指定されたタスク
がレディー状態にある場合を考慮して、このタスクをレ
ディーQから切離し、レディーQに接続されているタス
ク制御ブロックTCBを再度優先度順にならび換え(ス
テップ[相])、実行状態のタスクとレディーQの先頭
に接続されているタスクの優先度を比較するためのTS
KCHGフラグをセットして(ステップ[相])、メイ
ンルーチンに戻る。
御ブロックTCB中のRUNフラグ(指定したタスクが
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPEND フ
ラグをセットする(ステップ0)。終われば、コマンド
/ステータス・レジスタCN5Tに正常終了コードをセ
ットする(ステップ[相])。そして指定されたタスク
がレディー状態にある場合を考慮して、このタスクをレ
ディーQから切離し、レディーQに接続されているタス
ク制御ブロックTCBを再度優先度順にならび換え(ス
テップ[相])、実行状態のタスクとレディーQの先頭
に接続されているタスクの優先度を比較するためのTS
KCHGフラグをセットして(ステップ[相])、メイ
ンルーチンに戻る。
コマンド6(コマンド名:TPRI 、第13図タイム
チャート)は、入力データで指定された番υのタスクの
優先度を変更するコマンドである。
チャート)は、入力データで指定された番υのタスクの
優先度を変更するコマンドである。
入力データにエラーがあるかの検査(ステップO)にお
いて、エラーがある場合はコマンド/ステータス・レジ
スタCN5Tにエラーコードをセットして(ステップ@
)メインルーチンに戻る。
いて、エラーがある場合はコマンド/ステータス・レジ
スタCN5Tにエラーコードをセットして(ステップ@
)メインルーチンに戻る。
エラーかない場合、指定されたタスクのタスク管理ブロ
ックTCB内の優先度■(第3図参照)を入力データの
変更優先度の値に書換える(ステップ@)。次に、レデ
ィーQに接続されているタスク管理ブロックTCBを優
先度順にならひ換え(ステップo>、コマンド/ステー
タ・レジスタCN5Tに正常終了コードをセットする(
ステップ@)。そして、実行状態のタスクとレディーQ
の先頭に接続されているタスクの優先度を比較するため
にTSKCHGフラグをセットして(ステ・ノブ@)、
メインルーチンに戻る。
ックTCB内の優先度■(第3図参照)を入力データの
変更優先度の値に書換える(ステップ@)。次に、レデ
ィーQに接続されているタスク管理ブロックTCBを優
先度順にならひ換え(ステップo>、コマンド/ステー
タ・レジスタCN5Tに正常終了コードをセットする(
ステップ@)。そして、実行状態のタスクとレディーQ
の先頭に接続されているタスクの優先度を比較するため
にTSKCHGフラグをセットして(ステ・ノブ@)、
メインルーチンに戻る。
コマンド7(コマンド名:TSL I 、第14図フロ
ーチャート)は、入力データで指定された優先度を持つ
タスク群のマスタCPU占有時間を制限するためのコマ
ンドである。すなわち、このコマンドは同一優先度のタ
スクの時分割処理を指定する。時分割処理は、指定した
優先度より高い優先度を持つレディー状態のタスクが存
在(2ない場合に限り有効である。より高い優先度を持
つレディー状態のタスクが存在すれは、そのタスクが実
行され時分割処理は無効となるが、高い優先度のタスク
がなくなれば有効となる。
ーチャート)は、入力データで指定された優先度を持つ
タスク群のマスタCPU占有時間を制限するためのコマ
ンドである。すなわち、このコマンドは同一優先度のタ
スクの時分割処理を指定する。時分割処理は、指定した
優先度より高い優先度を持つレディー状態のタスクが存
在(2ない場合に限り有効である。より高い優先度を持
つレディー状態のタスクが存在すれは、そのタスクが実
行され時分割処理は無効となるが、高い優先度のタスク
がなくなれば有効となる。
このコマンド7が実行されると、まず、入力データのエ
ラーか検査される(ステップ0)。エラーか検出された
場合は、コマンド/ステータス・レジスタCN5Tにエ
ラーコードがセットされ(ステップ@)、メインルーチ
ンに戻る。
ラーか検査される(ステップ0)。エラーか検出された
場合は、コマンド/ステータス・レジスタCN5Tにエ
ラーコードがセットされ(ステップ@)、メインルーチ
ンに戻る。
エラーか検出されなければ、入力データか時分割処理を
キャンセルする指定であるのかどうかを判定する(ステ
ップ@)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタ5LICNTおよび
5LIPRIを“0”クリアする(ステップ[相]、■
)。入力データか新たに時分割処理の設定を指定する場
合は、その入力データからタスクのC’PU占有時間を
制御用レジスタS L I CNTに設定しくステップ
・)、時分割処理を行なうタスクの優先度をもう一つの
制御用レジスタ5LIPRI に設定する(ステップ・
)。そして最後にコマンド/ステータス・レジスタCN
5Tに正常終了コードをセットして(ステップ0)メイ
ンルーチンに戻る。
キャンセルする指定であるのかどうかを判定する(ステ
ップ@)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタ5LICNTおよび
5LIPRIを“0”クリアする(ステップ[相]、■
)。入力データか新たに時分割処理の設定を指定する場
合は、その入力データからタスクのC’PU占有時間を
制御用レジスタS L I CNTに設定しくステップ
・)、時分割処理を行なうタスクの優先度をもう一つの
制御用レジスタ5LIPRI に設定する(ステップ・
)。そして最後にコマンド/ステータス・レジスタCN
5Tに正常終了コードをセットして(ステップ0)メイ
ンルーチンに戻る。
コマンド8(コマンド名:C3ET、215図フローチ
ャート)は、マル千〇タスク制御用素子1内に設けられ
た時計に時刻を設定するためのコマンドである。マスタ
CPU2から本素子1内のコマンド・パラメータ・レジ
スタCP I Oに、入力データとして時2分2秒デー
タを書込みコマンドを実行する。
ャート)は、マル千〇タスク制御用素子1内に設けられ
た時計に時刻を設定するためのコマンドである。マスタ
CPU2から本素子1内のコマンド・パラメータ・レジ
スタCP I Oに、入力データとして時2分2秒デー
タを書込みコマンドを実行する。
入力データのエラーが検査されて(ステップ[相])、
エラーが検出された場合はコマンド/ステータス・レジ
スタCN5Tにエラーコードかセットされて(ステップ
[相])、メインルーチンに戻る。
エラーが検出された場合はコマンド/ステータス・レジ
スタCN5Tにエラーコードかセットされて(ステップ
[相])、メインルーチンに戻る。
エラーがなければ、システム・クロック領域SCAに時
2分2秒のデータが移される(ステップ■)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
2分2秒のデータが移される(ステップ■)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
コマンド9(コマンド名: CGENT、第16図フロ
ーチャート)は、上記の時計から現在の時刻を読出すた
めのコマンドである。
ーチャート)は、上記の時計から現在の時刻を読出すた
めのコマンドである。
このコマンド9が実行されると、システム・クロック領
域SCAから時9分2秒のデータが、マスタCPU2か
らアクセス可能なコマンド番パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス・レ
ジスタCN5Tに正常終了コードをセットして(ステッ
プ[相])メインルーチンに戻る。
域SCAから時9分2秒のデータが、マスタCPU2か
らアクセス可能なコマンド番パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス・レ
ジスタCN5Tに正常終了コードをセットして(ステッ
プ[相])メインルーチンに戻る。
コマンド10(コマンド名:MAL’C,第17図フロ
ーチャート)は、マルチeタスク制御用素子1が管理し
ているワーク・メモリ領域の中から、コマンドを実行し
たタスクに対して要求されたサイズのワーク・メモリの
使用を許可するコマンドでアル。コマンドΦパラメータ
・レジスタCPIOに要求するワーク・メモリ数(10
0H単位)を書込みコマンドを実行する。
ーチャート)は、マルチeタスク制御用素子1が管理し
ているワーク・メモリ領域の中から、コマンドを実行し
たタスクに対して要求されたサイズのワーク・メモリの
使用を許可するコマンドでアル。コマンドΦパラメータ
・レジスタCPIOに要求するワーク・メモリ数(10
0H単位)を書込みコマンドを実行する。
コマンド10が実行されると、入力データのエラー検出
が行なわれる(ステップ[相])。エラーが検出されれ
ば、コマンド/ステータス・レジスタCN5Tにエラー
コードをセットして(ステップ・)メインルーチンに戻
る。
が行なわれる(ステップ[相])。エラーが検出されれ
ば、コマンド/ステータス・レジスタCN5Tにエラー
コードをセットして(ステップ・)メインルーチンに戻
る。
エラーが検出されなければ、メモリマツプMEMMAP
を調査し、要求されたワーク・メモリが空いているかど
うかのチェックを行なう(ステップ[相])。空き領域
がなければコマンド/ステータス・レジスタCN5Tに
メモリ占有不可コードをセットして(ステップ[相])
、メインルーチンに戻る。
を調査し、要求されたワーク・メモリが空いているかど
うかのチェックを行なう(ステップ[相])。空き領域
がなければコマンド/ステータス・レジスタCN5Tに
メモリ占有不可コードをセットして(ステップ[相])
、メインルーチンに戻る。
空き領域が見つかれば、コマンドを実行したタスクが要
求したサイズだけメモリ・マツプMEMMAP上の対応
したビットに“1”をセットする(ステップ[相])。
求したサイズだけメモリ・マツプMEMMAP上の対応
したビットに“1”をセットする(ステップ[相])。
そして、コマンドを実行したタスクのタスク制御ブロッ
クTCB内の占有メモリ先頭アドレスOおよび占有メモ
リeサイズ■の領域(第3図参照)にそれぞれの値を設
定しくステップ[相])、次にコマンド−パラメータ・
レジスタCPIOに占有メモリ・先頭アドレスを書込む
。書込まれば、コマンド/ステータス響レジスタCN5
Trこ正常終了コードをセットしくステップ[相])メ
インルーチンに戻る。
クTCB内の占有メモリ先頭アドレスOおよび占有メモ
リeサイズ■の領域(第3図参照)にそれぞれの値を設
定しくステップ[相])、次にコマンド−パラメータ・
レジスタCPIOに占有メモリ・先頭アドレスを書込む
。書込まれば、コマンド/ステータス響レジスタCN5
Trこ正常終了コードをセットしくステップ[相])メ
インルーチンに戻る。
コマンド11(コマンド名:MREL 、第18図フロ
ーチャート)は、占有していたワーク・メモリ領域を開
放するためのコマンドテアル。
ーチャート)は、占有していたワーク・メモリ領域を開
放するためのコマンドテアル。
コマンド11を実行したタスクがワーク・メモリを占有
していなければ(ステップ[相])、コマンド/ステー
タス・レジスタCNS、Tにエラーコードをセットして
(ステップ[相])メインルーチンに戻る。
していなければ(ステップ[相])、コマンド/ステー
タス・レジスタCNS、Tにエラーコードをセットして
(ステップ[相])メインルーチンに戻る。
既にワーク・メモリが占有されていれば、コマンドを実
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス[F]および占有メモリ
・サイズ■の領域の値を参照し、メモリマツプMEMM
AP上の対応したビットを“O”にリセットする(ステ
ップ■)。そして、タスク制御ブロックTCB内の占有
メモリ先頭アドレス0及び占有メモリーサイズ■の領域
をクリアする(ステップ@)。最後にコマンド/ステー
タス・レジスタCN5Tに正常終了コードをセットして
(ステック@)、メインルーチンに戻る。
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス[F]および占有メモリ
・サイズ■の領域の値を参照し、メモリマツプMEMM
AP上の対応したビットを“O”にリセットする(ステ
ップ■)。そして、タスク制御ブロックTCB内の占有
メモリ先頭アドレス0及び占有メモリーサイズ■の領域
をクリアする(ステップ@)。最後にコマンド/ステー
タス・レジスタCN5Tに正常終了コードをセットして
(ステック@)、メインルーチンに戻る。
上述のようにタスクからメモリを要求する場合には、マ
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MALC)を実行する。また、タスク
が使用していたメモリが不要になり解放したい場合には
、コマンド11(メモリ解放コマンド、MREL)を実
行する。
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MALC)を実行する。また、タスク
が使用していたメモリが不要になり解放したい場合には
、コマンド11(メモリ解放コマンド、MREL)を実
行する。
このようにマルチ・タスク制御用素子1は、これらコマ
ンド10.11によって、予じめ登録された64にバイ
トまでのワーク用メモリ領域を100Hバイト単位で使
用中か否かを判断し、タスクから要求されたサイズの空
き領域を探し出して、タスクに割付ける機能を有する。
ンド10.11によって、予じめ登録された64にバイ
トまでのワーク用メモリ領域を100Hバイト単位で使
用中か否かを判断し、タスクから要求されたサイズの空
き領域を探し出して、タスクに割付ける機能を有する。
この機能は、限られたメモリ空間を複数のタスクで有効
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子1へのワーク
・メモリ領域の設定は、マルチ・タスク制御用素子1の
初期設定時(コマンドQの実行時)に行なわれる。
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子1へのワーク
・メモリ領域の設定は、マルチ・タスク制御用素子1の
初期設定時(コマンドQの実行時)に行なわれる。
コマンド12(コマンド名: PO5T 、第19図フ
ローチャート)は、本マルチ・タスク制御用素子1内に
設けられたメイルボックスMBXと呼ばれるメモリ領域
に、データを送るためのコマンドである。メイルボック
スMBXはこのコマンド12を実行したタスクと別タス
ク(次に説明するコマンド13実行)とのメツセージ中
継点となる。
ローチャート)は、本マルチ・タスク制御用素子1内に
設けられたメイルボックスMBXと呼ばれるメモリ領域
に、データを送るためのコマンドである。メイルボック
スMBXはこのコマンド12を実行したタスクと別タス
ク(次に説明するコマンド13実行)とのメツセージ中
継点となる。
5個のメイルボックスMBX I〜MBX5中の1個を
指定できる。コマンド・パラメータ愉レジスタCPIO
に使用するメイルボックスMBXの番号、および指定し
たメイル・ボックスMBXへ送るデータを書込み、コマ
ンドを実行する。
指定できる。コマンド・パラメータ愉レジスタCPIO
に使用するメイルボックスMBXの番号、および指定し
たメイル・ボックスMBXへ送るデータを書込み、コマ
ンドを実行する。
コマンド12が実行されると、入力データのエラーを検
査しくステップ@)、エラーが検出されればコマンド/
ステータス・レジスタCN5Tにエラーコードをセット
して(ステップ@)メインルーチンに戻る。
査しくステップ@)、エラーが検出されればコマンド/
ステータス・レジスタCN5Tにエラーコードをセット
して(ステップ@)メインルーチンに戻る。
エラーが検出されなければ、送信データを指定された番
号のメイル・ボックスMBXに書込む(ステップ@)。
号のメイル・ボックスMBXに書込む(ステップ@)。
そして次:3既にコマ7ンド13が実行され、コマンド
12の実行によってデータか指定のメイル・ボックスM
BXに送られてくるのを待っているタスクがあるかどう
かを調査する(ステップ[有])。これはすべてのタス
クのタスク制御ブロックTCB内のタスク・ステータ■
中のPENDWフラグおよびメイルボックス番号0とを
参照して行なわれる。しかし送信待ちのタスクがない場
合はステップ[相]ヘスキップする。送信待ちのタスク
がある場合(本実施例では1個のみを計している)は、
送信待ちのタスクのタスク制御ブロックTCB内のPE
NDWフラグをリセット。
12の実行によってデータか指定のメイル・ボックスM
BXに送られてくるのを待っているタスクがあるかどう
かを調査する(ステップ[有])。これはすべてのタス
クのタスク制御ブロックTCB内のタスク・ステータ■
中のPENDWフラグおよびメイルボックス番号0とを
参照して行なわれる。しかし送信待ちのタスクがない場
合はステップ[相]ヘスキップする。送信待ちのタスク
がある場合(本実施例では1個のみを計している)は、
送信待ちのタスクのタスク制御ブロックTCB内のPE
NDWフラグをリセット。
またREADYフラグをセラ)し、レディーQを優先度
順に接続しなおす(ステップ[相])。
順に接続しなおす(ステップ[相])。
そして送信待ちのタスクがある場合、ない場合共に、コ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、さらにTSKCHG
フラグをセットして(ステップO)メインルーチンに戻
る。
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、さらにTSKCHG
フラグをセットして(ステップO)メインルーチンに戻
る。
コマンド13(コマンド名: PEND 、第20図フ
ローチャート)は別タスクより、指定したメイル番ボッ
クスMBXを介してデータを受け取るコマンドである。
ローチャート)は別タスクより、指定したメイル番ボッ
クスMBXを介してデータを受け取るコマンドである。
コマンド・パラメータ・レジスタCPIOにデータを受
け取るメイル・ボックスMBXの番号を書込みコマンド
を実行する。コマンド13が実行されると、まず入力デ
ータのエラー検査が行なわれ(ステップ[相])、エラ
ーがあればコマンド/ステータス嗜レジスタCN5Tに
エラーコードをセットして(ステップ[相])、メイン
ルーチンに戻る。
け取るメイル・ボックスMBXの番号を書込みコマンド
を実行する。コマンド13が実行されると、まず入力デ
ータのエラー検査が行なわれ(ステップ[相])、エラ
ーがあればコマンド/ステータス嗜レジスタCN5Tに
エラーコードをセットして(ステップ[相])、メイン
ルーチンに戻る。
エラーが検出されなければ、指定したメイル・ボックス
MBXにデータが既に書込まれているかどうかチェック
する(ステップ[相])。もし書込まれていなければ、
RUNフラグをリセッl−、PENDWフラグをセット
しくステップ[相])、またTSKCHGフラグをセッ
トする(ステップ0)。そして次に、コマンド/ステー
タス・レジスタCN5Tにデータ未着コードをセントし
くステップ・)、メインルーチンに戻る。既にデータか
書込まれていれば、コマンド・パラメータ・レジスタC
PIOに指定したメイル書ボックスMBXに書込まれて
いるデータを転送しくステップ[相])、コマンド/ス
テータス・レジスタCN5Tに正常終了コードをセラし
て(ステップ[相])、メインルーチンに戻る。
MBXにデータが既に書込まれているかどうかチェック
する(ステップ[相])。もし書込まれていなければ、
RUNフラグをリセッl−、PENDWフラグをセット
しくステップ[相])、またTSKCHGフラグをセッ
トする(ステップ0)。そして次に、コマンド/ステー
タス・レジスタCN5Tにデータ未着コードをセントし
くステップ・)、メインルーチンに戻る。既にデータか
書込まれていれば、コマンド・パラメータ・レジスタC
PIOに指定したメイル書ボックスMBXに書込まれて
いるデータを転送しくステップ[相])、コマンド/ス
テータス・レジスタCN5Tに正常終了コードをセラし
て(ステップ[相])、メインルーチンに戻る。
コマンド14(コマンド名: PMOD 、第21図フ
ローチャート)は、ポート1とポート2のデータ入出力
方向を設定するコマンドである。コマンド中パラメータ
・レジスタCPIOにポート1とポート2との入出力方
向を指定するためのコードを設定してコマンドを実行す
る。
ローチャート)は、ポート1とポート2のデータ入出力
方向を設定するコマンドである。コマンド中パラメータ
・レジスタCPIOにポート1とポート2との入出力方
向を指定するためのコードを設定してコマンドを実行す
る。
コマンドeパラメータeレジスタCPIOに設定された
コードに基つきポート1とポート2の入出力方向を指定
しくステップ[相])、コマンド/ステータス・レジス
タCN5Tに正常終了コードをセットして(ステップO
)、メインルーチンに戻る。
コードに基つきポート1とポート2の入出力方向を指定
しくステップ[相])、コマンド/ステータス・レジス
タCN5Tに正常終了コードをセットして(ステップO
)、メインルーチンに戻る。
タスクから発行された上記任意のコマンドθ〜14の処
理ルーチンを実行し、第6図のメインルーチンに戻ると
、まずコマンド/ステータス争レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ[相])。エラーコードがセットされていれば
ステップ■ヘスキップし、もしエラーコードがセットさ
れていなけれは、次にTSKCHGフラグかセットさイ
1ているかどうか判定する(ステップ[相])。TSK
CHG フラグか“0”であれはステップ[相]ヘスキ
ソプし、“1″であればタスク切換えルーチンを実行す
る(ステップ[相]、タスク切換えルーチンは第22図
のフローチャートに詳しく述べられる)。ステップ[相
]またはステップ[相]からスキップして、あるいはタ
スク切換えルーチン(ステップ[相])か実行されてメ
インルーチンに戻ると、次のコマンド受は入れ準備を行
ない(ステップ[相])、TSKCHGフラグをリセッ
トする(ステップ[相])。そして、ステップ■に戻り
、次のコマンド受は入れ待ち状態となる。
理ルーチンを実行し、第6図のメインルーチンに戻ると
、まずコマンド/ステータス争レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ[相])。エラーコードがセットされていれば
ステップ■ヘスキップし、もしエラーコードがセットさ
れていなけれは、次にTSKCHGフラグかセットさイ
1ているかどうか判定する(ステップ[相])。TSK
CHG フラグか“0”であれはステップ[相]ヘスキ
ソプし、“1″であればタスク切換えルーチンを実行す
る(ステップ[相]、タスク切換えルーチンは第22図
のフローチャートに詳しく述べられる)。ステップ[相
]またはステップ[相]からスキップして、あるいはタ
スク切換えルーチン(ステップ[相])か実行されてメ
インルーチンに戻ると、次のコマンド受は入れ準備を行
ない(ステップ[相])、TSKCHGフラグをリセッ
トする(ステップ[相])。そして、ステップ■に戻り
、次のコマンド受は入れ待ち状態となる。
上記したようにコマンド処理ルーチンでTSKCHGフ
ラグがセット(“1”)されれば、タスク切換えルーチ
ンを実行する。第22図のフローチャートにおいて、タ
スク切換えルーチンに入ると、まずコマンド1(初期設
定終了および実行開始)の実行時かどうかのチェックを
行なう(ステップ[相])。
ラグがセット(“1”)されれば、タスク切換えルーチ
ンを実行する。第22図のフローチャートにおいて、タ
スク切換えルーチンに入ると、まずコマンド1(初期設
定終了および実行開始)の実行時かどうかのチェックを
行なう(ステップ[相])。
コマンド1の実行時てあればステップ[相]ヘスキップ
し、以降の処理により、先にコマンドO(初期設定)で
登録したタスクの中から、レディー状態にありかつ優先
度の最も高いタスクを実行させるべくマスタCPU2に
割込み信号を発生する。まず、レディーQの先頭に接続
されているタスクのタスク制御ブロックTCBをレディ
ーQから切離しくステップ■)、このタスク制御ブロッ
クTCB内のタスク・スタックΦポインタ■(第3図参
照)の値を新スタック・ポインタ・レジスタSPHに書
込む(ステップ[相])。そして、タスク制御ブロック
TCB内のタスク・ステータス■にRUNフラグをセッ
トして(ステップ[相])、マスタCPU2に対して割
込み信号INTを発生する(ステップ@))。
し、以降の処理により、先にコマンドO(初期設定)で
登録したタスクの中から、レディー状態にありかつ優先
度の最も高いタスクを実行させるべくマスタCPU2に
割込み信号を発生する。まず、レディーQの先頭に接続
されているタスクのタスク制御ブロックTCBをレディ
ーQから切離しくステップ■)、このタスク制御ブロッ
クTCB内のタスク・スタックΦポインタ■(第3図参
照)の値を新スタック・ポインタ・レジスタSPHに書
込む(ステップ[相])。そして、タスク制御ブロック
TCB内のタスク・ステータス■にRUNフラグをセッ
トして(ステップ[相])、マスタCPU2に対して割
込み信号INTを発生する(ステップ@))。
マスタCPU2は、この割込み信号INTに基づくマス
タCPU2側のタスク切換え割込みルーチンにより新し
いタスクのスタック・ポインタの値を読込み、割込みル
ーチンのリターンと同時に、マスタCPU2の管理下に
おいてそのタスクを実行する。
タCPU2側のタスク切換え割込みルーチンにより新し
いタスクのスタック・ポインタの値を読込み、割込みル
ーチンのリターンと同時に、マスタCPU2の管理下に
おいてそのタスクを実行する。
コマンド1の実行待以外では、タスクが実行状態かとう
か検査される(ステップ[相])。実行状態でなイノは
コマンド5(タスクの停止)の実行時に限られる。実行
状11(RUN状態)のタスク自身かコマンド5を実行
すると、コマンド処理ルーチンてRU Nフラグかセッ
トされ、サスペンド状態(5tJSPENDフラグセツ
ト)となっている。この場合、ステップ[相]ヘスキッ
プし、旧スタック・ポインターレジスタSPHのデータ
を、今まで実行状態にあったタスクのタスク制御ブロッ
クTCB内のタスク・スタック・ポインタ■領域に書込
み、保存する。この後、ステップ@〜[相]の処理を通
して別のタスクを実行するため、マルチ・タスクi1t
制御用素子1からマスタCPU2に割込み信号を発生す
る。
か検査される(ステップ[相])。実行状態でなイノは
コマンド5(タスクの停止)の実行時に限られる。実行
状11(RUN状態)のタスク自身かコマンド5を実行
すると、コマンド処理ルーチンてRU Nフラグかセッ
トされ、サスペンド状態(5tJSPENDフラグセツ
ト)となっている。この場合、ステップ[相]ヘスキッ
プし、旧スタック・ポインターレジスタSPHのデータ
を、今まで実行状態にあったタスクのタスク制御ブロッ
クTCB内のタスク・スタック・ポインタ■領域に書込
み、保存する。この後、ステップ@〜[相]の処理を通
して別のタスクを実行するため、マルチ・タスクi1t
制御用素子1からマスタCPU2に割込み信号を発生す
る。
タスクが実行状態(RUN状態)であれば、時分割処理
のタイム・アップ時間かどうか検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]ヘスキップする。
のタイム・アップ時間かどうか検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]ヘスキップする。
このスキップルーチンは後に説明する第23図フローチ
ャートのタイム割込み処理中でしか通らない。
ャートのタイム割込み処理中でしか通らない。
タイム・アップ時でなければ、各タスクのタスク制御ブ
ロックTCB内を調査してレディーQに接続されている
タスクがあるかどうかの検査を行なう(ステップ[相]
)。なければ、すなわち、現在実行状態のタスク以外に
実行待ち(レディー)状態のタスクかなければ、第6図
のメインルーチンに戻る。レディーQに接続されている
タスクかあれば、次に、実行状態のタスクの優先度とレ
ディーQの先頭に接続されているタスクの優先度とを比
較する(ステップ■)。実行状態のタスクの優先度の方
が高ければ、同じく第6図のメインルーチンに戻る。ス
テップ[相]、[相]でメインルーチンに戻れば、割込
み信号INTか発生されず、現在実行中のタスクがその
まま実行を続行することとなる。
ロックTCB内を調査してレディーQに接続されている
タスクがあるかどうかの検査を行なう(ステップ[相]
)。なければ、すなわち、現在実行状態のタスク以外に
実行待ち(レディー)状態のタスクかなければ、第6図
のメインルーチンに戻る。レディーQに接続されている
タスクかあれば、次に、実行状態のタスクの優先度とレ
ディーQの先頭に接続されているタスクの優先度とを比
較する(ステップ■)。実行状態のタスクの優先度の方
が高ければ、同じく第6図のメインルーチンに戻る。ス
テップ[相]、[相]でメインルーチンに戻れば、割込
み信号INTか発生されず、現在実行中のタスクがその
まま実行を続行することとなる。
レディーQの先頭に接続されているタスクの優先度の方
が高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RU Nフラグを
リセットする(ステップ[相])。
が高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RU Nフラグを
リセットする(ステップ[相])。
そして、旧スタック・ポインタ・レジスタS I) B
のデータをタスク・制御ブロックTCBのタスク・スタ
ック・ポインタの領域に保存しくステップ[相])、以
降のステップ■〜[相]の処理を通して割込みを発生さ
せる。なお、ステップ@〜[相]において、新しく実行
状態となる別のタスクは、前述したようにレディーQの
先頭に接続されているタスクで、コマンド実行等により
最も優先度か高(なったタスクである。割込み信号IN
Tを発生した後は第6図のメインルーチンに戻り、次の
コマンド受は入れ準備を行なう(第6図ステップ[相]
)。
のデータをタスク・制御ブロックTCBのタスク・スタ
ック・ポインタの領域に保存しくステップ[相])、以
降のステップ■〜[相]の処理を通して割込みを発生さ
せる。なお、ステップ@〜[相]において、新しく実行
状態となる別のタスクは、前述したようにレディーQの
先頭に接続されているタスクで、コマンド実行等により
最も優先度か高(なったタスクである。割込み信号IN
Tを発生した後は第6図のメインルーチンに戻り、次の
コマンド受は入れ準備を行なう(第6図ステップ[相]
)。
第23図、第24図は第6図のメインルーチンに対する
割込み処理ルーチンのフローチャ・−トである。
割込み処理ルーチンのフローチャ・−トである。
第23図はポート3への入力による割込み処理で、コマ
ンド5(タスクの停止、第12図フローチャート)によ
って停止状態にあるタスクを外部イベント起動するもの
である。
ンド5(タスクの停止、第12図フローチャート)によ
って停止状態にあるタスクを外部イベント起動するもの
である。
ポート3に入力されている信号の遷移によってこのルー
チンか起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先度順でレディーQに接続しくステップ
[相])、そのタスク制御ブロックTCB内の5USP
ENDフラグをリセット、READYフラグをセットす
る(ステップ[相])。すなわち、これによって停止状
態のタスクが再起動可能状態となるわけで、これか終れ
ば割込み処理ルーチンからリターンする。
チンか起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先度順でレディーQに接続しくステップ
[相])、そのタスク制御ブロックTCB内の5USP
ENDフラグをリセット、READYフラグをセットす
る(ステップ[相])。すなわち、これによって停止状
態のタスクが再起動可能状態となるわけで、これか終れ
ば割込み処理ルーチンからリターンする。
第24図はタイマによる割込み処理で、第2図のタイマ
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
タイマTMから内部割込み信号が発生すると、まず、シ
ステム・クロック領域SCAに登録されている時計の値
(時2分2秒のデータ)を進める(ステップ[相])。
ステム・クロック領域SCAに登録されている時計の値
(時2分2秒のデータ)を進める(ステップ[相])。
次にコマンド7(タスクの時分割処理の設定、第7図フ
ローチャート)で設定されたレジスタ5LIPRI に
登録されている優先度と、現在実行状態のタスクの優先
度とを比較する(ステップ[相])。時分割処理は指定
した優先度より高いレディー状態のタスクか存在しない
場合に限り有効である。より高い優先度を持つレディー
状aのタスクが存在すれは、そのタスクが実行され時分
割処理は無効となるが、高い優先度のタスクがなくなれ
ば有効となる。上記ステップ[相]の比較は、レジスタ
5LIPRI に登録されている優先度のタスクが実行
中であるかどうか検査することと同等であり、時分割処
理指定タスクが実行状態にない場合は直ちに割込み処理
ルーチンからリターンする。
ローチャート)で設定されたレジスタ5LIPRI に
登録されている優先度と、現在実行状態のタスクの優先
度とを比較する(ステップ[相])。時分割処理は指定
した優先度より高いレディー状態のタスクか存在しない
場合に限り有効である。より高い優先度を持つレディー
状aのタスクが存在すれは、そのタスクが実行され時分
割処理は無効となるが、高い優先度のタスクがなくなれ
ば有効となる。上記ステップ[相]の比較は、レジスタ
5LIPRI に登録されている優先度のタスクが実行
中であるかどうか検査することと同等であり、時分割処
理指定タスクが実行状態にない場合は直ちに割込み処理
ルーチンからリターンする。
レジスタ5LIPRI に登録されている優先度と現在
実行状態のタスクの優先度と一致、つまり、現在実行状
態のタスクが時分割処理指定のタスクであれば、レジス
タ5LICNTで登録されている時間が経過したかどう
かの判定を行なう(ステップ[相])。経過していなけ
れば、この割込み処理ルーチンからリターンする。すな
わち、マルチ・タスク制御用素子1はメインルーチンに
J1次のコマンド受は入れ待ち状態となり、マスタCP
U2は時分割処理指定の現在実行状態にあるタスクを続
けて実行する。
実行状態のタスクの優先度と一致、つまり、現在実行状
態のタスクが時分割処理指定のタスクであれば、レジス
タ5LICNTで登録されている時間が経過したかどう
かの判定を行なう(ステップ[相])。経過していなけ
れば、この割込み処理ルーチンからリターンする。すな
わち、マルチ・タスク制御用素子1はメインルーチンに
J1次のコマンド受は入れ待ち状態となり、マスタCP
U2は時分割処理指定の現在実行状態にあるタスクを続
けて実行する。
登録された時間が経過したときは、実行状態のタスクの
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセット、READYフラ
グをセットしくステップO)。
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセット、READYフラ
グをセットしくステップO)。
第22図のタスク切換えルーチンをコールする(ステッ
プ[相])。
プ[相])。
第22図フローチャートにおいて、時分割処理指定のタ
スクがタイム・アンプした場合は、ステップ[相]から
ステップ[相]へスキップする。そしてステップ[相]
〜Oの処理を行なう。これらによって、今まで実行状態
にあったタスクのタスク−スタック・ポインタ■領域に
旧スタック・ポインタ・レジスタSPBのデータを保存
する(ステップ[相])とともに、時分割処理に指定さ
れた同じ優先度を持つタスクのタスク制御ブロックTC
BをレディーQから切離しくステップ@)、このタスク
制御ブロックTCB内のタスク・スタック・ポインタ■
領域のデータを新スタック・ポインタ・レジスりSPN
に書込む(ステップ[相])。そして最後にタスク・ス
テータス■にRUNフラグをセットする(ステップ[相
])。こうしたタスク切換えルーチンを行なったのち割
込みからリターンする。
スクがタイム・アンプした場合は、ステップ[相]から
ステップ[相]へスキップする。そしてステップ[相]
〜Oの処理を行なう。これらによって、今まで実行状態
にあったタスクのタスク−スタック・ポインタ■領域に
旧スタック・ポインタ・レジスタSPBのデータを保存
する(ステップ[相])とともに、時分割処理に指定さ
れた同じ優先度を持つタスクのタスク制御ブロックTC
BをレディーQから切離しくステップ@)、このタスク
制御ブロックTCB内のタスク・スタック・ポインタ■
領域のデータを新スタック・ポインタ・レジスりSPN
に書込む(ステップ[相])。そして最後にタスク・ス
テータス■にRUNフラグをセットする(ステップ[相
])。こうしたタスク切換えルーチンを行なったのち割
込みからリターンする。
マスクCPU2では上述したマルチ・タスク制御用素子
1の動作により1時分割処理に指定した別のタスクを実
行することとなる。
1の動作により1時分割処理に指定した別のタスクを実
行することとなる。
上述のように本実施例のマルチ・タスク制御用素子1は
同時に最大8個までのタスクをサポートすることができ
る。8個を越えるタスクをサポートさせるには、必要に
応じてコマンド2(タスクの生成)、コマンド3(タス
クの消去)によりタスクを生成、/y4去し、タスクの
入れ換えを行なえばよい。そして、マルチ嗜タスク制御
用素子1により各タスクは優先度順にマスクCPU2の
占有権を割当てられる。また、コマンド7(タスクの時
分割処理の設定)により、同一優先度の複数のタスクを
時分割方式でスケジューリングすることも可能である。
同時に最大8個までのタスクをサポートすることができ
る。8個を越えるタスクをサポートさせるには、必要に
応じてコマンド2(タスクの生成)、コマンド3(タス
クの消去)によりタスクを生成、/y4去し、タスクの
入れ換えを行なえばよい。そして、マルチ嗜タスク制御
用素子1により各タスクは優先度順にマスクCPU2の
占有権を割当てられる。また、コマンド7(タスクの時
分割処理の設定)により、同一優先度の複数のタスクを
時分割方式でスケジューリングすることも可能である。
なお、各タスクの優先度はタスク生成時に設定されるか
、コマンド6(タスクの優先度変更)によりマスタCP
U2のプログラム実行中にも変更可能である。
、コマンド6(タスクの優先度変更)によりマスタCP
U2のプログラム実行中にも変更可能である。
時分割処理の開始時、タスクの実行順序はコマンドO(
初期設定)またはコマンド2(タスクの生成)により生
成したタスクの順序に従う。タスク実行中でコマンド7
(タスクの時分割処理の設定)を実行すれば、実行した
タスクの優先度と時分割指定優先度とが等しい場合には
、実行した時点から時分割処理が有効となる。
初期設定)またはコマンド2(タスクの生成)により生
成したタスクの順序に従う。タスク実行中でコマンド7
(タスクの時分割処理の設定)を実行すれば、実行した
タスクの優先度と時分割指定優先度とが等しい場合には
、実行した時点から時分割処理が有効となる。
コマンド12(メツセージの送信)、コマンド13(メ
ツセージの受信)により、マルチ・タスク制御用素子1
のメイル・ボックスMBXを利用してタスク間のデータ
(メツセージ)の受授か行なえる。
ツセージの受信)により、マルチ・タスク制御用素子1
のメイル・ボックスMBXを利用してタスク間のデータ
(メツセージ)の受授か行なえる。
コマンド12を実行した際、実行したタスクよりも高い
優先度を持つタスクが既にコマンド13を実行して待期
状態にあれば、タスク切換えにより持切していたタスク
が実行を開始する。低い優先&をもつタスクがコマンド
J3により持切中であれば、その夕、スフはレディー状
態になるだけて、本コマンド12を実行したタスクかそ
のまま実行を継続する。コマンド12を実行した際、コ
マンド13が実行されていなければ、データ(メツセー
ジ)はメイル・ボックスMBXに保存され、同様にその
ままタスクの実行が継続される。
優先度を持つタスクが既にコマンド13を実行して待期
状態にあれば、タスク切換えにより持切していたタスク
が実行を開始する。低い優先&をもつタスクがコマンド
J3により持切中であれば、その夕、スフはレディー状
態になるだけて、本コマンド12を実行したタスクかそ
のまま実行を継続する。コマンド12を実行した際、コ
マンド13が実行されていなければ、データ(メツセー
ジ)はメイル・ボックスMBXに保存され、同様にその
ままタスクの実行が継続される。
コマンド12が実行されていない時に、同一メイル・ボ
ックスMBXに対して複数のタスクがコマンド13を実
行すれば、コマンド13を実行したタスクの順番に待期
状態となる。コマンド12が実行されれば、待期状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド13を実行した際、既に指
定したメイル・ボックスMBXにデータ(メツセージ)
が届いている場合には、そのタスクがコマンド・パラメ
ータ・レジスタCPIOより、直ちに届いているデータ
(メツセージ)を読出すことができる。
ックスMBXに対して複数のタスクがコマンド13を実
行すれば、コマンド13を実行したタスクの順番に待期
状態となる。コマンド12が実行されれば、待期状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド13を実行した際、既に指
定したメイル・ボックスMBXにデータ(メツセージ)
が届いている場合には、そのタスクがコマンド・パラメ
ータ・レジスタCPIOより、直ちに届いているデータ
(メツセージ)を読出すことができる。
また、コマンド13の持切機能を利用すれば、タスク間
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが可能である。なお、タスク間の同期お
よび相互排除において、メイル・ボックスMBXに書込
まれるデータはダミーデータで実際のタスク処理には使
用されないものとする。
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが可能である。なお、タスク間の同期お
よび相互排除において、メイル・ボックスMBXに書込
まれるデータはダミーデータで実際のタスク処理には使
用されないものとする。
2個のタスクが処理の都合上、実行順序を制御しなけれ
ばならない場合がある。例えば、一方のタスクの処理が
終了するまで他方のタスクの処理を行なわず待たせる場
合、コマンド12.コマンド13を次のように利用して
お互いの同期をとることができる。
ばならない場合がある。例えば、一方のタスクの処理が
終了するまで他方のタスクの処理を行なわず待たせる場
合、コマンド12.コマンド13を次のように利用して
お互いの同期をとることができる。
■ タスク2、コマンド13を実行。タスク2はメソセ
ージ未着のため待期状態となる。
ージ未着のため待期状態となる。
■ タスク1の処理■をタスク2の処理■よりも先に実
行する。
行する。
■ タスク1、コマンド12を実行。タスク2の処理■
の実行を許可する。
の実行を許可する。
■ タスク2の処理■を実行。
次に相互排除であるが、複数のタスクが1つの共通の資
源、例えば■10.メモリ等を利用する上で同時利用を
禁止する必要がある場合がある。例として、プリンタの
同時使用を禁止する場合1次のようにして互いに排除す
ることができる。
源、例えば■10.メモリ等を利用する上で同時利用を
禁止する必要がある場合がある。例として、プリンタの
同時使用を禁止する場合1次のようにして互いに排除す
ることができる。
■ タスク1、コマンド12を実行。
■ タスク1、コマンド13を実行。既にコマンド12
が実行されているため待期状態にはならず、排他部分を
ロック。
が実行されているため待期状態にはならず、排他部分を
ロック。
■ タスク2、コマンド13を実行。このコマンド13
によりタスクは待期状態となる。
によりタスクは待期状態となる。
■ タスク1、プリンタ使用。
■ タスク1、コマンド12を実行。排他部分のロック
解除、同時にタスク2の排他部分をロック。
解除、同時にタスク2の排他部分をロック。
■ タスク2、プリンタ使用。
■ タスク2、コマンド12を実行、排他部分のロック
解除。
解除。
上述のようにしてタスク間の同期および相互排除を行な
うこともできる。
うこともできる。
なお、本実施例におけるマルチ・タスク制御用素子1は
ハードウェアを1個のLSI上に集積化したものである
が、適宜回路要素を組合せ、装置とするようにして何ら
差支えない。
ハードウェアを1個のLSI上に集積化したものである
が、適宜回路要素を組合せ、装置とするようにして何ら
差支えない。
〈発明の効果〉
以上のように本発明のデバイスは、マスタCPUと組合
せてマルチ・タスク・システムを構成すると、元来マス
タCPU自身が実行していたタスクの優先度の比較演算
を本デバイスが実行するので、マスタCPUはこの時間
をユーザー・プログラムの実行に当てることができ、マ
スタCPUの使用効率が向上する。さらに、本デバイス
は、タスクの優先度を行なった結果、マスタCPUに対
してタスク切換えの必要が生じたとき割込み信号を発生
してそのタイミングを知らせる方式を採っているので、
汎用マイクロコンピュータに適用が可能である。
せてマルチ・タスク・システムを構成すると、元来マス
タCPU自身が実行していたタスクの優先度の比較演算
を本デバイスが実行するので、マスタCPUはこの時間
をユーザー・プログラムの実行に当てることができ、マ
スタCPUの使用効率が向上する。さらに、本デバイス
は、タスクの優先度を行なった結果、マスタCPUに対
してタスク切換えの必要が生じたとき割込み信号を発生
してそのタイミングを知らせる方式を採っているので、
汎用マイクロコンピュータに適用が可能である。
第1図は本発明のデバイスを使用したシステム構成例を
示す図、第2図は本発明の一実施例におけるデバイスの
内部構成例を示すブロック図、第3図は第2図のタスク
制御ブロックTCB領域を説明する図、第4図は第2図
のメモリ・マツプMEMMAP領域を説明する図、第5
図は本デバイスで使用されるコマンドと入力パラメータ
および出力パラメータを説明する図、第6図は本デバイ
スのメインルーチンの動作を説明するフローチャート、
第7図〜第21図は各コマンドによる処理ルーチンの動
作を説明するフローチャート、第22図はタスク切換え
ルーニチンの動作を説明するフローチャートG二第23
図はイベント入力による割込み処理ルーチンの動作を説
明するフローチャート、第24図はタイマ割込み処理ル
ーチンの動作を説明するフローチャートである。 1・・マルチ・タスク制御用素子、2・・マスタCPU
、3・・・プログラム・メモリ、6・・・データ・メ
モリ、INTC・・割込み制御回路、LNT ・・・割
込み信号、TCB・・・タスク制御ブロック、 C0N
T・・・内部演算制御回路、MIV・・・マスク割込み
制御レジスタ、CPIO・・・コマンド・パラメータ・
レジスタ、CN5T・・・コマンド/ステータスΦレジ
スタ、SPN・・・新スタック・ポインタ・レジスタ。 SPB・・旧スタック・ポインタ・レジスタ。 代理人 弁理士 福 士 愛 彦(他2名)第6図 爪7c21 第1O図 第12図 第74図 第16陳1 手、15(カ 沙、17図 第1θ図 第19図 第20図 手、22図 鰺、23凶 ト (111竺 飴、24図
示す図、第2図は本発明の一実施例におけるデバイスの
内部構成例を示すブロック図、第3図は第2図のタスク
制御ブロックTCB領域を説明する図、第4図は第2図
のメモリ・マツプMEMMAP領域を説明する図、第5
図は本デバイスで使用されるコマンドと入力パラメータ
および出力パラメータを説明する図、第6図は本デバイ
スのメインルーチンの動作を説明するフローチャート、
第7図〜第21図は各コマンドによる処理ルーチンの動
作を説明するフローチャート、第22図はタスク切換え
ルーニチンの動作を説明するフローチャートG二第23
図はイベント入力による割込み処理ルーチンの動作を説
明するフローチャート、第24図はタイマ割込み処理ル
ーチンの動作を説明するフローチャートである。 1・・マルチ・タスク制御用素子、2・・マスタCPU
、3・・・プログラム・メモリ、6・・・データ・メ
モリ、INTC・・割込み制御回路、LNT ・・・割
込み信号、TCB・・・タスク制御ブロック、 C0N
T・・・内部演算制御回路、MIV・・・マスク割込み
制御レジスタ、CPIO・・・コマンド・パラメータ・
レジスタ、CN5T・・・コマンド/ステータスΦレジ
スタ、SPN・・・新スタック・ポインタ・レジスタ。 SPB・・旧スタック・ポインタ・レジスタ。 代理人 弁理士 福 士 愛 彦(他2名)第6図 爪7c21 第1O図 第12図 第74図 第16陳1 手、15(カ 沙、17図 第1θ図 第19図 第20図 手、22図 鰺、23凶 ト (111竺 飴、24図
Claims (1)
- 1、 マスクCPUにより実行される複数のタスクの管
理を上記マスクCPU以外で行なうデバイスであり、上
記タスクの優先度の比較を行なうための演算制御手段、
および上記演算結果に基づき本デバイスより上記マスタ
CPUに対し実行中のタスク切換え州側込みを発生させ
るための手段とを備えてなることを特徴とするマルチ・
タスク制御用デバイス。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22294983A JPS60114940A (ja) | 1983-11-25 | 1983-11-25 | マルチ・タスク制御用デバイス |
US07/825,334 US5168566A (en) | 1983-11-25 | 1992-01-27 | Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22294983A JPS60114940A (ja) | 1983-11-25 | 1983-11-25 | マルチ・タスク制御用デバイス |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS60114940A true JPS60114940A (ja) | 1985-06-21 |
JPH0376497B2 JPH0376497B2 (ja) | 1991-12-05 |
Family
ID=16790397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22294983A Granted JPS60114940A (ja) | 1983-11-25 | 1983-11-25 | マルチ・タスク制御用デバイス |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS60114940A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1042974A (ja) * | 1996-08-08 | 1998-02-17 | Uchida Kogyo Kk | キャンプ場用調理装置 |
JP2002264406A (ja) * | 2001-03-08 | 2002-09-18 | Ricoh Co Ltd | 画像処理装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5730068A (en) * | 1980-07-30 | 1982-02-18 | Fujitsu Ltd | Data processing system |
-
1983
- 1983-11-25 JP JP22294983A patent/JPS60114940A/ja active Granted
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5730068A (en) * | 1980-07-30 | 1982-02-18 | Fujitsu Ltd | Data processing system |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1042974A (ja) * | 1996-08-08 | 1998-02-17 | Uchida Kogyo Kk | キャンプ場用調理装置 |
JP2002264406A (ja) * | 2001-03-08 | 2002-09-18 | Ricoh Co Ltd | 画像処理装置 |
JP4495873B2 (ja) * | 2001-03-08 | 2010-07-07 | 株式会社リコー | 画像処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JPH0376497B2 (ja) | 1991-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5168566A (en) | Multi-task control device for central processor task execution control provided as a peripheral device and capable of prioritizing and timesharing the tasks | |
JP2867717B2 (ja) | マイクロコンピュータ | |
US5257372A (en) | Methods for efficient distribution of parallel tasks to slave processes in a multiprocessing system | |
US8145820B2 (en) | Multiprocessor system and computer program product | |
JPS6031648A (ja) | マルチ・タスク制御方法 | |
JPH0997189A (ja) | 共有資源の排他制御方式 | |
JP2005056067A (ja) | Dma転送制御装置 | |
EP0257655B1 (en) | Multitask processing apparatus | |
JP3644042B2 (ja) | マルチタスク処理装置 | |
JPS60114940A (ja) | マルチ・タスク制御用デバイス | |
JP2007141155A (ja) | マルチコアプロセッサにおけるマルチコア制御方法 | |
CN109614218B (zh) | 半导体器件 | |
JPS60118937A (ja) | マルチ・タスク制御用デバイス | |
JPS60114941A (ja) | マルチ・タスク制御用デバイス | |
JP2693916B2 (ja) | タスクスケジュール方法 | |
JPH0376498B2 (ja) | ||
JPS63636A (ja) | タスク制御方式 | |
JP2553526B2 (ja) | マルチタスク処理装置 | |
JPS60114942A (ja) | マルチ・タスク制御用デバイス | |
JPS60215249A (ja) | マルチ・タスク制御素子を内蔵したコンピユ−タ周辺装置 | |
US20030225817A1 (en) | Concurrent execution of kernel work and non-kernel work in operating systems with single-threaded kernel | |
JPS60163133A (ja) | マルチ・タスク制御素子 | |
JPS6020771B2 (ja) | マイクロ診断方式 | |
JPH0340169A (ja) | 多重プロセツサシステムおよび複数の処理装置を制御する方法 | |
Wood | An example in synchronization of cooperating processes: theory and practice |