JPS60118938A - マルチ・タスク制御用デバイス - Google Patents
マルチ・タスク制御用デバイスInfo
- Publication number
- JPS60118938A JPS60118938A JP22812283A JP22812283A JPS60118938A JP S60118938 A JPS60118938 A JP S60118938A JP 22812283 A JP22812283 A JP 22812283A JP 22812283 A JP22812283 A JP 22812283A JP S60118938 A JPS60118938 A JP S60118938A
- Authority
- JP
- Japan
- Prior art keywords
- task
- command
- data
- tasks
- 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
【発明の詳細な説明】
く技術分野2
本発明は、マイクロコンピュータのシステム管理プログ
ラムに有効なマルチ・タスク制御用機能を内蔵したコン
ピュータ周辺デバイスに関するものである。
ラムに有効なマルチ・タスク制御用機能を内蔵したコン
ピュータ周辺デバイスに関するものである。
〈従来技術〉
マルチ・タスク制御システムにおいて、タスクの実行中
にタスク間でデータ授受(通信)を行なう必要があった
り、2つのタスクが処理の都合上、実行順序を制御しな
ければならないときがあり、一方のタスクの処理が終了
するまで他方の処理を行なわずに待たせる必要がある場
合がある。またタスク間に共通の資源、例えばIlo、
メモリ、ファイル等を利用する上で、複数のタスクの同
時利用を禁止する必要がある場合がある。
にタスク間でデータ授受(通信)を行なう必要があった
り、2つのタスクが処理の都合上、実行順序を制御しな
ければならないときがあり、一方のタスクの処理が終了
するまで他方の処理を行なわずに待たせる必要がある場
合がある。またタスク間に共通の資源、例えばIlo、
メモリ、ファイル等を利用する上で、複数のタスクの同
時利用を禁止する必要がある場合がある。
上述の制御を行なうために、従来からのコンピュータ・
システムのソフトウェアによるO3(オペレーティング
・システム)では、メイル・ボックスやセマフォと呼ぶ
制御フラグを用いて、データ授受やタスクの同期、相互
排除を行なっていた。
システムのソフトウェアによるO3(オペレーティング
・システム)では、メイル・ボックスやセマフォと呼ぶ
制御フラグを用いて、データ授受やタスクの同期、相互
排除を行なっていた。
このようなソフトウェアによる方法では、メイル・ボッ
クスやセマフォおよび制御対象タスクの登録領域をユー
ザーのデータ・メモリ上に用意しなければならない。従
って、ユーザ一拳プログラムの負担が大きく、またO8
のプログラムがプログラム・メモリ空間の一部を占める
ため、ユーザー・プログラムの大きさやユーザm−プロ
グラムを配置するアドレスに制約を受けていた。
クスやセマフォおよび制御対象タスクの登録領域をユー
ザーのデータ・メモリ上に用意しなければならない。従
って、ユーザ一拳プログラムの負担が大きく、またO8
のプログラムがプログラム・メモリ空間の一部を占める
ため、ユーザー・プログラムの大きさやユーザm−プロ
グラムを配置するアドレスに制約を受けていた。
〈発明の目的〉
本発明は、タスク間のデータ授受、同期および相互排除
を行なうだめには、デバイスに対して2つのコマンドを
実行するだけで可能である。本デバイスには、メイルボ
ックス、制御フラグおよびタスク登録領域等が内蔵され
ており、本デバイスをマルチ・タスク制御システムに組
込めば、O8のノフトウェアによる上述の制御は不要に
なり、負担が軽減する。また、ユーザーのデータ・メモ
リ領域も必要としない。
を行なうだめには、デバイスに対して2つのコマンドを
実行するだけで可能である。本デバイスには、メイルボ
ックス、制御フラグおよびタスク登録領域等が内蔵され
ており、本デバイスをマルチ・タスク制御システムに組
込めば、O8のノフトウェアによる上述の制御は不要に
なり、負担が軽減する。また、ユーザーのデータ・メモ
リ領域も必要としない。
〈実施例〉
以下図面に従って本発明の一実施例を説明する。
第1図1dマイクロコンピユータ畳システムとしての構
成例を示す図である。素子(又は装置)1は、本発明に
係るマノピチ・タスク制御を実現するだめの独立しAニ
マルチ・タスク・サポート・プロセッサとして構成され
たものであり、他の周辺デバイスと同様、入出力素子の
形態で供給される。
成例を示す図である。素子(又は装置)1は、本発明に
係るマノピチ・タスク制御を実現するだめの独立しAニ
マルチ・タスク・サポート・プロセッサとして構成され
たものであり、他の周辺デバイスと同様、入出力素子の
形態で供給される。
以下、本デバイスをマルチ・タスク制御用素子と呼ぶ。
マスタCPU2.プログラム・メモ’J (ROM)3
、データ会メモリ(RAM)4及び他のIlo等の周辺
入出力素子5は、周知のマイクロコンピュータ・システ
ムとしても具備されるものであり、マルチ・タスク制御
用素子1とともにバス6を介して相互に接続される。プ
ログラム・メモリ3は、マルチ・タスク制御用素子1の
初期化プログラムと複数のタスクをそれぞれ独立してプ
ログラムしている。
、データ会メモリ(RAM)4及び他のIlo等の周辺
入出力素子5は、周知のマイクロコンピュータ・システ
ムとしても具備されるものであり、マルチ・タスク制御
用素子1とともにバス6を介して相互に接続される。プ
ログラム・メモリ3は、マルチ・タスク制御用素子1の
初期化プログラムと複数のタスクをそれぞれ独立してプ
ログラムしている。
マルチ・タスク制御用素子1は、マスタCPU2により
実行されるこれら複数のタスクの管理をマスタCPU2
!以外で行なう独立機能素子であり、タスクのスケジュ
ーリング機能(優先席順又は時分割による実行タスクの
切換え)、タスク間の同期・通信機能(各タスク間でデ
ータの送受信を行ない、タスクの実行中断、実行再開を
決定)、メモリ管理機能(各タスクの使用メモリ領域の
重複使用の禁止)、時計機能(内蔵タイマによる時刻の
セット)等を有している。つまり、このマルチ・タスク
制御用素子1は、マルチ・タスクの制御機能ヲコンピュ
ータ・システムのO8自身のもつ機能とせず、その機能
を有する周辺デバイスとした点に特色がある。
実行されるこれら複数のタスクの管理をマスタCPU2
!以外で行なう独立機能素子であり、タスクのスケジュ
ーリング機能(優先席順又は時分割による実行タスクの
切換え)、タスク間の同期・通信機能(各タスク間でデ
ータの送受信を行ない、タスクの実行中断、実行再開を
決定)、メモリ管理機能(各タスクの使用メモリ領域の
重複使用の禁止)、時計機能(内蔵タイマによる時刻の
セット)等を有している。つまり、このマルチ・タスク
制御用素子1は、マルチ・タスクの制御機能ヲコンピュ
ータ・システムのO8自身のもつ機能とせず、その機能
を有する周辺デバイスとした点に特色がある。
第2図はマルチ・タスク制御用素子1の内部構成例を示
すブロック図である。
すブロック図である。
マルチ・タスク制御用素子1はマスタCPU2からアク
セス可能なレジスタ群を備えている。
セス可能なレジスタ群を備えている。
コマンド・パラメーターレジスタCPIOu、マスタC
P U 2からコマンド実行時に入力するパラメータや
、実行後に出力するパラメータを保持する。コマンド/
ステータス・レジスタCN5Tニ゛男込み時にはコマン
ド書込み用として、読出し時には実行したコマンドの実
行情報を格納するだめのレジスタとして機能する。新ス
タック・ポインタ・レジスタSPNは、タスク切換え情
報としてこれI−6新らだに実行状態となるタスクのス
タック・ポインタの値を出力するためのレジスタである
。また、旧スタック・ポインターレジスタSPBは、タ
スク切換え情報として今まで実行状態にあったタスクの
スタック・ポインタの値を入力するためのし/タスクで
ある。
P U 2からコマンド実行時に入力するパラメータや
、実行後に出力するパラメータを保持する。コマンド/
ステータス・レジスタCN5Tニ゛男込み時にはコマン
ド書込み用として、読出し時には実行したコマンドの実
行情報を格納するだめのレジスタとして機能する。新ス
タック・ポインタ・レジスタSPNは、タスク切換え情
報としてこれI−6新らだに実行状態となるタスクのス
タック・ポインタの値を出力するためのレジスタである
。また、旧スタック・ポインターレジスタSPBは、タ
スク切換え情報として今まで実行状態にあったタスクの
スタック・ポインタの値を入力するためのし/タスクで
ある。
マスク割込み制御レジスタMICは本素子1における、
マスクC1)U2に対する割込み発生を制御するだめの
レジスタで、割込みベクタ・レジスタMIVl”i割込
みベクタ値を書込む。データ・レジスタPID、P2D
、P3Dはボート1.ボート2およびボート3のデータ
入出力のだめのレジスタである。ボート1とボート2は
データ入出力方向をプログラムによってビット単位で設
定できる8ビツト入出力ボートであり、ボート3は1ビ
ツトの入力ポートである。ボート3はプログラムによっ
てイベン]・入力(ボート3への入力信号の遷移により
停止状1息のタスクをレディー状態に移す)にセントす
ることが可能である。
マスクC1)U2に対する割込み発生を制御するだめの
レジスタで、割込みベクタ・レジスタMIVl”i割込
みベクタ値を書込む。データ・レジスタPID、P2D
、P3Dはボート1.ボート2およびボート3のデータ
入出力のだめのレジスタである。ボート1とボート2は
データ入出力方向をプログラムによってビット単位で設
定できる8ビツト入出力ボートであり、ボート3は1ビ
ツトの入力ポートである。ボート3はプログラムによっ
てイベン]・入力(ボート3への入力信号の遷移により
停止状1息のタスクをレディー状態に移す)にセントす
ることが可能である。
以上のレジスタ群はマスタCPU2からアクセスされて
、本素子[とマスタCPU2との間で情報を相互に交換
するために用いられる。データ・バスーインターフェイ
スDBI、バス・タイミング発生・制御回路BTGC,
割込み制御回路INTCII−j、マスタCPU2との
インターフェイス回路として備えられたものである。
、本素子[とマスタCPU2との間で情報を相互に交換
するために用いられる。データ・バスーインターフェイ
スDBI、バス・タイミング発生・制御回路BTGC,
割込み制御回路INTCII−j、マスタCPU2との
インターフェイス回路として備えられたものである。
タスク制御ブロック’[’CB(1〜8)はタスクの状
態を保存するだめのメモリ領域である。ここでは8つま
でのタスクを取扱うことが可能である。
態を保存するだめのメモリ領域である。ここでは8つま
でのタスクを取扱うことが可能である。
各ブロックは第3図に示されるように、タスク・ステー
タス■、タスク優先度■、先にレディーQに接続されて
いるタスクの番号■、後にレディーQに接続されている
タスクの番号■、タスクが占有しているワーク・メモリ
の先頭アドレス■、そのサイズ■、使用しているメイル
・ボックス番号■、そしてタスク実行中断時のスクソク
ーポインタ値■を格納する領域を有している。
タス■、タスク優先度■、先にレディーQに接続されて
いるタスクの番号■、後にレディーQに接続されている
タスクの番号■、タスクが占有しているワーク・メモリ
の先頭アドレス■、そのサイズ■、使用しているメイル
・ボックス番号■、そしてタスク実行中断時のスクソク
ーポインタ値■を格納する領域を有している。
メイル−ボックスMBXはタスク間でデータの授受を行
なえるよう設けられたバッファ・メモリ領域である。
なえるよう設けられたバッファ・メモリ領域である。
メモリ・マツプMEMMAPはワーク−メモリを管理す
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプMEMMAPに
より64にバイト単位のワーク・メモリを管理すること
が可能である。ワーク・メモリを使用していないときそ
の領域に対応するビットはXXO//で、占有中である
ときはそのビットがXX1 //にセットされる。
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプMEMMAPに
より64にバイト単位のワーク・メモリを管理すること
が可能である。ワーク・メモリを使用していないときそ
の領域に対応するビットはXXO//で、占有中である
ときはそのビットがXX1 //にセットされる。
タイマTMi−J、時分割処理(同一優先度のタスクを
一定時間毎に実行させる処理)等のために、素子1円に
割込み信号を発生させるもので、システムクロツク領域
5CAu同時にタイマTMの出力により計数される時7
分1秒等の時刻データを格納するメモリ領域である。
一定時間毎に実行させる処理)等のために、素子1円に
割込み信号を発生させるもので、システムクロツク領域
5CAu同時にタイマTMの出力により計数される時7
分1秒等の時刻データを格納するメモリ領域である。
内部演算制御回路C0NTは論理演算ユニット(ALU
)、本素子1のプログラムを格納するROM、一時記憶
用のRAMおよび各種制御のだめのフラグ用レジスタ等
を有してなる。
)、本素子1のプログラムを格納するROM、一時記憶
用のRAMおよび各種制御のだめのフラグ用レジスタ等
を有してなる。
マスクCPU2からマルチ・タスク制御用素子1へのア
クセスは、実行中のタスクから発行されるコマンドによ
って行なわれ、マルチ・タスクfj用御用素子1からマ
スタCPU2へのアクセスtd。
クセスは、実行中のタスクから発行されるコマンドによ
って行なわれ、マルチ・タスクfj用御用素子1からマ
スタCPU2へのアクセスtd。
マルチ・タスク制御用素子1の割込み信号発生に基づい
て行ムわれる。第5図はコマンドの種類と入力パラメー
タおよび出力パラメークを示す図である。
て行ムわれる。第5図はコマンドの種類と入力パラメー
タおよび出力パラメークを示す図である。
基本的03作としては次のとおりである。々お、タスク
制御ブロックTCBKは各タスクの状態が既に保存され
ているものとする。
制御ブロックTCBKは各タスクの状態が既に保存され
ているものとする。
マルチ・タスク制御用素子1は、実行可能状態のタスク
から優先度の一番高いタスクを選び出し、登録されたそ
のタスクのスタック会ポインタの値を新スタック・ポイ
ンタ・レジスタ5L)NK準備する。スタック・ポイン
タの値を準備した後、マルチ−タスク制御用素子lはマ
スクCPU2に対し割込みを発生する。マスクCPU2
は割込み処理ルーチンを実行し、マルチ・タスク制御用
素子1にセットされているスタック−ポインタの直を自
分のスタック・ポインタにロードし、予じめ書込まれて
いたレジスタの初期値をスタックからポ2の管理下にお
いて指定されたタスクを実行する。
から優先度の一番高いタスクを選び出し、登録されたそ
のタスクのスタック会ポインタの値を新スタック・ポイ
ンタ・レジスタ5L)NK準備する。スタック・ポイン
タの値を準備した後、マルチ−タスク制御用素子lはマ
スクCPU2に対し割込みを発生する。マスクCPU2
は割込み処理ルーチンを実行し、マルチ・タスク制御用
素子1にセットされているスタック−ポインタの直を自
分のスタック・ポインタにロードし、予じめ書込まれて
いたレジスタの初期値をスタックからポ2の管理下にお
いて指定されたタスクを実行する。
実行中のタスクからコマンド入力があるか、またはタイ
マTMあるいはボート3への入力による割込みがあるま
で、マルチ・タスク制御用素子1は待ち状態となる。こ
こで例えばコマンド入力があれば、マルチ・タスク制御
用素子1はそのコマンドを解析しコマンド処理を行なう
。そして、このコマンドがタスク切換え機能を含むもの
であれば、次に切換えるべきタスクのスタック−ポイン
タの値を新スタックーポインタeレジスタSPHにセッ
トし、マスクCPU2に対し割込みを発イ1:する。こ
の割込みによってマスタCPU2id:m作笑行中のタ
スクの実行を停止し、次に実行すべきタスクのスタック
・ポインタの値をマルチ・タスク制御用素子1から読出
す。
マTMあるいはボート3への入力による割込みがあるま
で、マルチ・タスク制御用素子1は待ち状態となる。こ
こで例えばコマンド入力があれば、マルチ・タスク制御
用素子1はそのコマンドを解析しコマンド処理を行なう
。そして、このコマンドがタスク切換え機能を含むもの
であれば、次に切換えるべきタスクのスタック−ポイン
タの値を新スタックーポインタeレジスタSPHにセッ
トし、マスクCPU2に対し割込みを発イ1:する。こ
の割込みによってマスタCPU2id:m作笑行中のタ
スクの実行を停止し、次に実行すべきタスクのスタック
・ポインタの値をマルチ・タスク制御用素子1から読出
す。
以下70−チャ−1・を参照してさらに詳しく説明する
。
。
第6図はマルチ・タスク制御用素子1のメインルーチン
の動作を説明するフローチャー1・、第7Fir〜端9
11i2IH&コ−vンh# 〜l dMfAMF!ル
−チンの01作を説明するフローチャー+−1第22図
はタスク切換えルーチンの0J作を説明するフローチャ
ー1・、第23図はポート3へのイベント入力による割
込み処理ルーチンの!IpJ作を説明するフローチャー
ト、第24図はタイマTMによる割込み処理ルーチンの
動作を説明するフローチャー1・である。
の動作を説明するフローチャー1・、第7Fir〜端9
11i2IH&コ−vンh# 〜l dMfAMF!ル
−チンの01作を説明するフローチャー+−1第22図
はタスク切換えルーチンの0J作を説明するフローチャ
ー1・、第23図はポート3へのイベント入力による割
込み処理ルーチンの!IpJ作を説明するフローチャー
ト、第24図はタイマTMによる割込み処理ルーチンの
動作を説明するフローチャー1・である。
第6図において、システムに電源が投入されると、本マ
ルチ・タスク制御用素子1はリセット動作を行々い内部
の各機能素子を初期化する(ステップ■)。そして、マ
スタCPU2からコマンドがコマンド/ステータス自レ
ジスタCN5TK書込丑れるのを待一つ(ステップ■)
Oコマンドが劉込捷れると、各コマンド・コードに対応
したコマンド処理を行なう(ステップ■)。
ルチ・タスク制御用素子1はリセット動作を行々い内部
の各機能素子を初期化する(ステップ■)。そして、マ
スタCPU2からコマンドがコマンド/ステータス自レ
ジスタCN5TK書込丑れるのを待一つ(ステップ■)
Oコマンドが劉込捷れると、各コマンド・コードに対応
したコマンド処理を行なう(ステップ■)。
コマンド0(コマンド名: INIT、 第7図フロー
チャー]・)は、マルチ・タスク制御用素子1の初期化
を行なうだめのコマンドであり、マルチ−タスク制御用
素子1がマスタCPU2に対して割込みを発生するとき
にマスタCPU2へ出力するベクタ値、マルチ・タスク
制御用素子1が管理するワーク・メモリ領域の先頭アド
レスとその大きさ、及びタスクの優先度を各タスクに対
して登録するだめのコマンドである。
チャー]・)は、マルチ・タスク制御用素子1の初期化
を行なうだめのコマンドであり、マルチ−タスク制御用
素子1がマスタCPU2に対して割込みを発生するとき
にマスタCPU2へ出力するベクタ値、マルチ・タスク
制御用素子1が管理するワーク・メモリ領域の先頭アド
レスとその大きさ、及びタスクの優先度を各タスクに対
して登録するだめのコマンドである。
このコマンドが実行されると、入力データのエラーを調
査しくステップ■)、もし入力データに誤りがあれば、
エラーコードをコマンド/ステータス・レジスタCN5
Tにセットする(ステップ■)○ 入力データに誤りがなけれは、コマンド・パラメータ働
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みベクタレジスフMIVに書込み(ステップ■
)、まだワーク・メモリ領域の先頭アドレスとその大き
さのデータをもとにしてメモリ・マッグMEMMA、P
を初期化する(ステップ■)。そして、書込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
べてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の■、■にJ:って順序づ
けを行なう。生成後は正常終了コード全コマンド/ステ
ータス・レジスタCN S T Kセノl□L−(ステ
ップ[相])、内部演算制御回路C0NTのT S K
CHG フラグをリセット動作て(ステップ0)、第
6図のメインルーチンに戻る0エラーコートヲコマンド
/ステータス−レジスタCN5Tにセットした場合も同
様にTSKCHGフラグをリセットしてメインルーチン
に戻る。
査しくステップ■)、もし入力データに誤りがあれば、
エラーコードをコマンド/ステータス・レジスタCN5
Tにセットする(ステップ■)○ 入力データに誤りがなけれは、コマンド・パラメータ働
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みベクタレジスフMIVに書込み(ステップ■
)、まだワーク・メモリ領域の先頭アドレスとその大き
さのデータをもとにしてメモリ・マッグMEMMA、P
を初期化する(ステップ■)。そして、書込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
べてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の■、■にJ:って順序づ
けを行なう。生成後は正常終了コード全コマンド/ステ
ータス・レジスタCN S T Kセノl□L−(ステ
ップ[相])、内部演算制御回路C0NTのT S K
CHG フラグをリセット動作て(ステップ0)、第
6図のメインルーチンに戻る0エラーコートヲコマンド
/ステータス−レジスタCN5Tにセットした場合も同
様にTSKCHGフラグをリセットしてメインルーチン
に戻る。
コマンド1(コマンド名:TSTR,第8図フローチャ
ー1− )は、初期化したマルチ・タスク制御用素子1
を実行状態に移すだめのコマンドである0 このコマンド1では、コマンド0の処理が実行rかどう
かのチェックを行ない(ステップ@)、実行法の場合の
み、レディーQの先頭に接続されているタスク(一番優
先度の高いタスク)を実行状!悪に移すだめTSKCH
Gフラグ(内部演算制御回路C0NTの制御フラグ)を
セットして(ステップ0)、第6図のメインルーチンに
戻る。実行法でない場合は、コマンド/ステータス・レ
ジスタCN5Tにエラーコードをセットしくステップ0
)、メインルーチンに戻る。
ー1− )は、初期化したマルチ・タスク制御用素子1
を実行状態に移すだめのコマンドである0 このコマンド1では、コマンド0の処理が実行rかどう
かのチェックを行ない(ステップ@)、実行法の場合の
み、レディーQの先頭に接続されているタスク(一番優
先度の高いタスク)を実行状!悪に移すだめTSKCH
Gフラグ(内部演算制御回路C0NTの制御フラグ)を
セットして(ステップ0)、第6図のメインルーチンに
戻る。実行法でない場合は、コマンド/ステータス・レ
ジスタCN5Tにエラーコードをセットしくステップ0
)、メインルーチンに戻る。
以上のコマンド0,1およびマルチ・タスク制御用素子
lへの−p1込み情報は、例えば第1図のプログラム・
メモリ3の初期化プログラムに予じめ格納され、タスク
内容に応じてプログラム変更が可能であり、マルチ・タ
スク制御用素子1はこれにより種々に初期化設定するこ
とができる0コマンド2(コマンド名:TCRT、、I
ll!llJタイムチャート)は初jυ」設定の後、任
意にタスクを生成するためのコマンドであり、入力デー
タとして生成するタスクの番号およびその優先度が本素
子1のコマンド−パラメータ・レジスタCP IOに書
込まれる。
lへの−p1込み情報は、例えば第1図のプログラム・
メモリ3の初期化プログラムに予じめ格納され、タスク
内容に応じてプログラム変更が可能であり、マルチ・タ
スク制御用素子1はこれにより種々に初期化設定するこ
とができる0コマンド2(コマンド名:TCRT、、I
ll!llJタイムチャート)は初jυ」設定の後、任
意にタスクを生成するためのコマンドであり、入力デー
タとして生成するタスクの番号およびその優先度が本素
子1のコマンド−パラメータ・レジスタCP IOに書
込まれる。
このコマンド2が実行されると、入力データにエラーが
々いかの検査を行ない(ステップ[相])、エラーがあ
ればコマンド/ステータス・レジスタCN5Tにエラー
コードを書込む(ステップ[相])Oエラーがなければ
、入力データで指定されたタスクのタスク制御ブロック
TCBを生成する(ステノブ0)。
々いかの検査を行ない(ステップ[相])、エラーがあ
ればコマンド/ステータス・レジスタCN5Tにエラー
コードを書込む(ステップ[相])Oエラーがなければ
、入力データで指定されたタスクのタスク制御ブロック
TCBを生成する(ステノブ0)。
タスク制御ブロックTCB中のタスク・ステータス■(
第3図参照)には次の4つのフラグが含まれる。
第3図参照)には次の4つのフラグが含まれる。
RUNフラグはタスクが実行状態にあることを示す。
REA、DY フラグはタスクがレディー状態にあって
レディーQに接続されていることを示す。
レディーQに接続されていることを示す。
PENDW フラグはメツセージ受信待ち状泥にあるこ
とを示す。
とを示す。
5USPENDフラグはタスクが停止状庸にあることを
示す。
示す。
上記タスク制御ブロックTCBの生成時(ステップ0)
、同時にその中のREADY フラグをセットする。
、同時にその中のREADY フラグをセットする。
そして、タスクの優先度が高い順にレディーQに再接続
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ[相])、実行状態のタスクとレディーQの先頭に接
続されているタスクの優先度を比較させるためのTSK
CHGフラグをセットして(ステップ[相])、第6図
のメインルーチンに戻るO コマンド3(コマンド名:TDEL、ml Clタイム
チャート)は不要のタスクを消去するだめのコマンドで
、消去するタスクの番号を入力データとして実行する。
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ[相])、実行状態のタスクとレディーQの先頭に接
続されているタスクの優先度を比較させるためのTSK
CHGフラグをセットして(ステップ[相])、第6図
のメインルーチンに戻るO コマンド3(コマンド名:TDEL、ml Clタイム
チャート)は不要のタスクを消去するだめのコマンドで
、消去するタスクの番号を入力データとして実行する。
入力データにエラーがないかの検肴(ステップ■)にお
いて、エラーがあればコマンド/ステータス・レジスタ
CN5TKエラーコードがセットされ(ステップtk2
) ) 、第6図のメインルーチンに戻る。
いて、エラーがあればコマンド/ステータス・レジスタ
CN5TKエラーコードがセットされ(ステップtk2
) ) 、第6図のメインルーチンに戻る。
エラーがなければ、消去するタスクが占有していたワー
ク・メモリを解放するだめ、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリ・サイズ■を読出し、このデータに基づいて
メモリ・マツプMEMMAP上で対応した領域をts
Q //クリアする(ステップ[相])。ついでこのタ
スクがレディー状)にあれば、消去するタスクのタスク
制御ブロックTCBをレディーQかも切離しくステップ
[有])、このタスク制御ブロックTCBのすべてをク
リアする(ステップ[相])0終われば、コマンド/ス
テータス・レジスタCN5Tに正常終了コードをセット
して(ステップ[相])、メインルーチンに戻る。
ク・メモリを解放するだめ、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリ・サイズ■を読出し、このデータに基づいて
メモリ・マツプMEMMAP上で対応した領域をts
Q //クリアする(ステップ[相])。ついでこのタ
スクがレディー状)にあれば、消去するタスクのタスク
制御ブロックTCBをレディーQかも切離しくステップ
[有])、このタスク制御ブロックTCBのすべてをク
リアする(ステップ[相])0終われば、コマンド/ス
テータス・レジスタCN5Tに正常終了コードをセット
して(ステップ[相])、メインルーチンに戻る。
コマンド4(コマンド名:TR8M、ml 1図フロー
チャート)は、入力データで指定されたタスク番号を持
つ時期または停止中のタスクをレディー状態(再起07
可能状逝)にするだめのコマンドである。タスク番号を
入力データとして実行するO コマンド4が実行されると、まず入力データにエラーが
ないかの検査が行なわれ(ステップ[相])、エラーが
あればコマンド/ステータス・レジスタCN5Tにエラ
ーコードを設定して(ステップ[相])、メインルーチ
ンに戻る。
チャート)は、入力データで指定されたタスク番号を持
つ時期または停止中のタスクをレディー状態(再起07
可能状逝)にするだめのコマンドである。タスク番号を
入力データとして実行するO コマンド4が実行されると、まず入力データにエラーが
ないかの検査が行なわれ(ステップ[相])、エラーが
あればコマンド/ステータス・レジスタCN5Tにエラ
ーコードを設定して(ステップ[相])、メインルーチ
ンに戻る。
エラーがなければ、1旨定されたタスクのPENDWフ
ラグlたは5USPENDフラグをリセットするととも
にR,EADY フラグをセノトシ、かつこのタスク制
御グロックTCBをタスクの優先度の高い順序でレディ
ーQK接続する(ステップ0)。
ラグlたは5USPENDフラグをリセットするととも
にR,EADY フラグをセノトシ、かつこのタスク制
御グロックTCBをタスクの優先度の高い順序でレディ
ーQK接続する(ステップ0)。
そして、正常終了コードをコマンド/ステータス・レジ
スタCN5Tにセットしくステップ[相])、実行状態
のタスクとレディーQの先頭に接続されているタスクの
優先度を比較するためT S K CHGフラグを七ノ
+−L(ステップ[株])、メインルーチンに戻る。
スタCN5Tにセットしくステップ[相])、実行状態
のタスクとレディーQの先頭に接続されているタスクの
優先度を比較するためT S K CHGフラグを七ノ
+−L(ステップ[株])、メインルーチンに戻る。
コマンド5(コマンド名:TSPD、 第12i9フロ
ーチヤー1・)は、入力データで指定されたタスク番号
を持つ実行状態あるいはレディー状態にあるタスクを停
市状態にするためのコマンドであるO このコマンド5が実行されると、入力データのエラーを
検査し、エラーがあればコマンド/ステータス・レジス
タCN5TKエラーコードを設定してメインルーチンに
戻る(ステップ■、0)。
ーチヤー1・)は、入力データで指定されたタスク番号
を持つ実行状態あるいはレディー状態にあるタスクを停
市状態にするためのコマンドであるO このコマンド5が実行されると、入力データのエラーを
検査し、エラーがあればコマンド/ステータス・レジス
タCN5TKエラーコードを設定してメインルーチンに
戻る(ステップ■、0)。
エラーがなければ、まず、入力データによって、停止状
態になるタスクをボー1−3からの入力信号(外部イベ
ント)によりレディー状態にする(再起動)という指定
がされているかどうかのチェッりを行なう(ステップ[
相])。外部イベントの指定がなければステップ■の処
理ヘスキノプする。指定がある場合は、他のタスクが既
に外部イベントを使用しているかどうかの検査を行ない
(ステップ[相])、使用されていれば、コマンド/ス
テータス・レジスタCN5Tにエラーコードをセットし
て(ステップ[相])メインルーチンに戻る。使用され
ていなければ、ボート3の入力信号の遷移による内部割
込みをイネーブルにする(ステップ[相])。
態になるタスクをボー1−3からの入力信号(外部イベ
ント)によりレディー状態にする(再起動)という指定
がされているかどうかのチェッりを行なう(ステップ[
相])。外部イベントの指定がなければステップ■の処
理ヘスキノプする。指定がある場合は、他のタスクが既
に外部イベントを使用しているかどうかの検査を行ない
(ステップ[相])、使用されていれば、コマンド/ス
テータス・レジスタCN5Tにエラーコードをセットし
て(ステップ[相])メインルーチンに戻る。使用され
ていなければ、ボート3の入力信号の遷移による内部割
込みをイネーブルにする(ステップ[相])。
すなわち、本コマンド5の入力データ設定により外部イ
ベント起動の指定が可能である。
ベント起動の指定が可能である。
そして、スキップした場合を含めて次に、そのタスク制
御ブロックTCB中のRUNフラグ(指定したタスクが
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPENDフラ
グをセットする(ステップ@)0終われば、コマンド/
ステータス・レジスタCN S Tに正常終了コードを
セットする(ステップ[相])。そして指定されたタス
クがレディー状態にある場合を考慮して、このタスクを
レディーQから切部し、レディーQに接続されているタ
スク制御ブロックTCBを再度優先席順にならび換え(
ステップ[相])、実行状態のタスクとレディーQの先
頭に接続されているタスクの優先度を比較するためのT
CK CHGフラグをセットして(ステップ[相])
、メインルーチンに戻る。
御ブロックTCB中のRUNフラグ(指定したタスクが
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPENDフラ
グをセットする(ステップ@)0終われば、コマンド/
ステータス・レジスタCN S Tに正常終了コードを
セットする(ステップ[相])。そして指定されたタス
クがレディー状態にある場合を考慮して、このタスクを
レディーQから切部し、レディーQに接続されているタ
スク制御ブロックTCBを再度優先席順にならび換え(
ステップ[相])、実行状態のタスクとレディーQの先
頭に接続されているタスクの優先度を比較するためのT
CK CHGフラグをセットして(ステップ[相])
、メインルーチンに戻る。
コマンド6(コマンド名:TPRI、第13図タイムチ
ャート)は、入力データで指定された番号のタスクの優
先度を変更するコマンドである。
ャート)は、入力データで指定された番号のタスクの優
先度を変更するコマンドである。
入力データにエラーがあるかの検査(ステップ0)にお
いて、エラーがある場合はコマンド/ステータス[相]
レジスタCN5Tにエラーコードをセットして(ステッ
プ■)メインルーチンニ戻る。
いて、エラーがある場合はコマンド/ステータス[相]
レジスタCN5Tにエラーコードをセットして(ステッ
プ■)メインルーチンニ戻る。
エラーが々い場合、指定されたタスクのタスク管理プO
−)りTCB内の優先度■(第3図参照)を入力データ
の変更優先度の値に書換える(ステップ@〕。次に、レ
ディーQに接続されているタスク管理ブロックTCBを
優先席順にならび換え(ステップ■)、コマンド/ステ
ータス・レジスタCN5TにE常終了コードをセットす
る(ステップ@)。そして、実行状態のタスクとレディ
ーQの先頭に接続されているタスクの優先度を比較する
ためにTSKCHGフラグをセットして(ステップeΦ
)、メインルーチンに戻る。
−)りTCB内の優先度■(第3図参照)を入力データ
の変更優先度の値に書換える(ステップ@〕。次に、レ
ディーQに接続されているタスク管理ブロックTCBを
優先席順にならび換え(ステップ■)、コマンド/ステ
ータス・レジスタCN5TにE常終了コードをセットす
る(ステップ@)。そして、実行状態のタスクとレディ
ーQの先頭に接続されているタスクの優先度を比較する
ためにTSKCHGフラグをセットして(ステップeΦ
)、メインルーチンに戻る。
コマンド7(コマンド名:TSLI、第14図フローチ
ャー1・)は、入力データで指定された優/、1一度を
持つタスク群のマスクCI) U占有時間を制限するだ
めのコマンドである。すなわち、このコマンドは同一優
先度のタスクの時分割処理を指定する。時分割処理は、
指定した優先度より高い優先度を持つレディー状態のタ
スクが存在しない場合に限り有効である。より高い優先
度を持つレディー状]渇のタスクが存在すれば、そのタ
スクが実イ]され時分割処理は無効と々るが、高い優先
度のタスクがなくなれば有効となる。
ャー1・)は、入力データで指定された優/、1一度を
持つタスク群のマスクCI) U占有時間を制限するだ
めのコマンドである。すなわち、このコマンドは同一優
先度のタスクの時分割処理を指定する。時分割処理は、
指定した優先度より高い優先度を持つレディー状態のタ
スクが存在しない場合に限り有効である。より高い優先
度を持つレディー状]渇のタスクが存在すれば、そのタ
スクが実イ]され時分割処理は無効と々るが、高い優先
度のタスクがなくなれば有効となる。
このコマンド7が実行されると、丑ず、入力データのエ
ラーが検査される(ステップo)oエラーが検出された
場合は、コマンド・ステータス−レジスタCN5Tにエ
ラーコードがセットされ(ステップいん)、メインルー
チンに戻る。
ラーが検査される(ステップo)oエラーが検出された
場合は、コマンド・ステータス−レジスタCN5Tにエ
ラーコードがセットされ(ステップいん)、メインルー
チンに戻る。
エラーが検出されなければ、入力データが時分割処理を
キャンセルする指定であるのかどうかを判定する(ステ
ップ■)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタ5LICNTおよび
5LIPRIを 10″クリアする(ステップ[相]、
[相])。入力データが新たに時分割処理の設定を指定
する場合は、その入力データからタスクのCPU占有時
間を制御用レジスタ5LICNTに設定しくステップ0
)、時分割処理を行なうタスクの優先度をもう一つの制
御用レジスタS L i P RJに設定する(ステッ
プ0)。
キャンセルする指定であるのかどうかを判定する(ステ
ップ■)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタ5LICNTおよび
5LIPRIを 10″クリアする(ステップ[相]、
[相])。入力データが新たに時分割処理の設定を指定
する場合は、その入力データからタスクのCPU占有時
間を制御用レジスタ5LICNTに設定しくステップ0
)、時分割処理を行なうタスクの優先度をもう一つの制
御用レジスタS L i P RJに設定する(ステッ
プ0)。
そして最後にコマンド/ステータス・レジスタCN5T
に正常終了コードをセットして(ステップ■〕メインル
ーチンに戻る。
に正常終了コードをセットして(ステップ■〕メインル
ーチンに戻る。
コマンド8(コマンド名:C3ET、 第15図フロー
チャー) ) &:J:、マルチ・タスク制御用素子1
円に設けられた]1.−計に時刻を設定するだめのコマ
ンドである。マスタCPU2から本素子1内のコマンド
6パラメータ・レジスタCPIOに、入力データとして
時7分1秒データを書込みコマンドを実行する。
チャー) ) &:J:、マルチ・タスク制御用素子1
円に設けられた]1.−計に時刻を設定するだめのコマ
ンドである。マスタCPU2から本素子1内のコマンド
6パラメータ・レジスタCPIOに、入力データとして
時7分1秒データを書込みコマンドを実行する。
入力データのエラーが検査されて(ステップ0)、エラ
ーが検出された場合はコマンド/ステータス・レジスタ
CNS Tにエラーコードがセットされて(ステップ0
)、メインルーチンに戻る。
ーが検出された場合はコマンド/ステータス・レジスタ
CNS Tにエラーコードがセットされて(ステップ0
)、メインルーチンに戻る。
エラーがなければ、システム・クロック領域SCAに時
9分1秒のデータが移される(ステップ■)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
9分1秒のデータが移される(ステップ■)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
コマンド9(コマンド名: CGENT、第16図フロ
ーチャート)は、上記の時開から現在の時刻を読出すだ
めのコマンドである。
ーチャート)は、上記の時開から現在の時刻を読出すだ
めのコマンドである。
このコマンド9が実行されると、システム・クロック領
域SCAから時1分1秒のデータが、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移し/ζ後はコマンド/ステータス・
レジスタCN5TK正常終了コードをセットして(ステ
ップ[相])メインルーチンに戻る。
域SCAから時1分1秒のデータが、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移し/ζ後はコマンド/ステータス・
レジスタCN5TK正常終了コードをセットして(ステ
ップ[相])メインルーチンに戻る。
コマンド]、 O(コマンド名:MALC,第17図フ
ローチャー1・)は、マルチ・タスク制御用素子1が管
理しているワーク・メモリ領域の中から、コマンドを実
行したタスクに対して要求されたサイズのワーク・メモ
リの使用を許可するコマンドである。コマンド・パラメ
ータ・レジスタCPIOに要求するワーク・メモリ数(
1,00H単位)を書込みコマンドを実行する。
ローチャー1・)は、マルチ・タスク制御用素子1が管
理しているワーク・メモリ領域の中から、コマンドを実
行したタスクに対して要求されたサイズのワーク・メモ
リの使用を許可するコマンドである。コマンド・パラメ
ータ・レジスタCPIOに要求するワーク・メモリ数(
1,00H単位)を書込みコマンドを実行する。
コマンド10が実行されると、入力データのエラー検出
が行なわれる(ステップ[相])。エラーが検出されれ
ば、コマンド/ステータス・レジスタCJjSTにエラ
ーコードをセットして(ステップ・)メインルーチンに
戻る。
が行なわれる(ステップ[相])。エラーが検出されれ
ば、コマンド/ステータス・レジスタCJjSTにエラ
ーコードをセットして(ステップ・)メインルーチンに
戻る。
エラーがイ寅出されなければ、メモリ・マツプMEMM
APを調査し、要求されたワーク・メモリ が空いてい
るかどうかのチェックを行なう(ステップ0)。
APを調査し、要求されたワーク・メモリ が空いてい
るかどうかのチェックを行なう(ステップ0)。
空き領域がなければコマンド/ステータス・レジスタC
N5Tにメモリ占有不可コードを七ノトシて(ステップ
・)、メインルーチンに戻る。。空き領域が見つかれば
、コマンドを実行したタスクが要求したサイズだけメモ
リ・マツプMEMMA、Pfの対応したビットにN1“
をセットする(2ステツプ0)。そして、コマンドを実
行したタスクのタスク制御ブロックTCB内の占有メモ
リ先頭アトL/ス■および占有メモリ・サイズ■の領域
(第3図参照)にそれぞれの値を設定しくステップ[相
])、次にコマンド・パラン〜り・レジスタCPIOに
占有メモリ・先頭アドレスを書込む。書込まれば、コマ
ンド/ステータス・レジスタCN5Tに正常糸多丁コー
ドをセットしくステップ°[相])メインル−チンに戻
る。
N5Tにメモリ占有不可コードを七ノトシて(ステップ
・)、メインルーチンに戻る。。空き領域が見つかれば
、コマンドを実行したタスクが要求したサイズだけメモ
リ・マツプMEMMA、Pfの対応したビットにN1“
をセットする(2ステツプ0)。そして、コマンドを実
行したタスクのタスク制御ブロックTCB内の占有メモ
リ先頭アトL/ス■および占有メモリ・サイズ■の領域
(第3図参照)にそれぞれの値を設定しくステップ[相
])、次にコマンド・パラン〜り・レジスタCPIOに
占有メモリ・先頭アドレスを書込む。書込まれば、コマ
ンド/ステータス・レジスタCN5Tに正常糸多丁コー
ドをセットしくステップ°[相])メインル−チンに戻
る。
コマンド11(コマンド名:MREL、第18図フロー
チャート)は、占有していたワーク・メモリ領域を開放
するだめのコマンドである。
チャート)は、占有していたワーク・メモリ領域を開放
するだめのコマンドである。
コマンド11を実行したタスクがワーク・メモリを占有
していなければ(ステップ0)、コマンド/ステータス
・レジスタCN S T Kエラーコードをセットして
(ステップ[相])メインルーf7VC戻る。
していなければ(ステップ0)、コマンド/ステータス
・レジスタCN S T Kエラーコードをセットして
(ステップ[相])メインルーf7VC戻る。
既にワーク・メモリが占有されていれば、コマンドを実
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス■および占有メモリ・サ
イズ■の領域の値を参照し、メモリ・マツプMiEMM
AI?J二の対応したビットを■O〃にリセットする(
ステップ@)。そして、タスク制御ブロックTCB17
Hの占有メモリ先頭アドレス■及び占有メモリ・サイズ
■の領域をクリアする(ステップの)。最後にコマンド
/ステータス・レジスタCN5Tに正常終了コードをセ
ットして(ステップ0)、メインルーチンに戻る。
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス■および占有メモリ・サ
イズ■の領域の値を参照し、メモリ・マツプMiEMM
AI?J二の対応したビットを■O〃にリセットする(
ステップ@)。そして、タスク制御ブロックTCB17
Hの占有メモリ先頭アドレス■及び占有メモリ・サイズ
■の領域をクリアする(ステップの)。最後にコマンド
/ステータス・レジスタCN5Tに正常終了コードをセ
ットして(ステップ0)、メインルーチンに戻る。
上述のようにタスクからメモリを要求する場合には、マ
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MA、LC)を実行する。また、タス
クが使用していたメモリが不要になり解放したい場合に
は、コマンド11(メモリ解放コマンド、MREL)を
実行する。
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MA、LC)を実行する。また、タス
クが使用していたメモリが不要になり解放したい場合に
は、コマンド11(メモリ解放コマンド、MREL)を
実行する。
このようにマルチ・タスク制御用素子1は、これらコマ
ンドlf)、11によって、予じめ登録された6 4
Kバイトまでのワーク用メモリ領域を100Hバイト単
位で使用中か否かを判断し、タスクから要求されたサイ
ズの空き領域を探し出して、タスクに割付ける(良能を
有する。
ンドlf)、11によって、予じめ登録された6 4
Kバイトまでのワーク用メモリ領域を100Hバイト単
位で使用中か否かを判断し、タスクから要求されたサイ
ズの空き領域を探し出して、タスクに割付ける(良能を
有する。
この機能は、限られたメモリ空間を複数のタスクで有効
に利用するのに効果を発揮し、丑だお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子1へのワーク
・メモリ領域の設定は、マルチ・タスク制御用素子1の
初期設定時(コマンドOの実行時)に行なわれる。
に利用するのに効果を発揮し、丑だお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子1へのワーク
・メモリ領域の設定は、マルチ・タスク制御用素子1の
初期設定時(コマンドOの実行時)に行なわれる。
コマンド12(コマンド名:PO8T、第19図フロー
チャート)は、本マルチ・タスク制御用素子1円に設け
られたメイルボックスMBXと呼ばれるメモリ領域に、
データを送るためのコマンドである。メイル・ボックス
MBXはこのコマンド】2を実行したタスクと別タスク
(次に説明するコマンド13実行)とのメツセージ中継
点となる。5個のメイルボックスMBX1〜M B X
5 rl]の1個を指定できる。コマンド・パラメー
タ・レジスタCPIOに使用するメイル・ボックスMB
Xの番号、および指定したメイル・ボックスM B X
へ送るデータを居込み、コマンドを実行する。
チャート)は、本マルチ・タスク制御用素子1円に設け
られたメイルボックスMBXと呼ばれるメモリ領域に、
データを送るためのコマンドである。メイル・ボックス
MBXはこのコマンド】2を実行したタスクと別タスク
(次に説明するコマンド13実行)とのメツセージ中継
点となる。5個のメイルボックスMBX1〜M B X
5 rl]の1個を指定できる。コマンド・パラメー
タ・レジスタCPIOに使用するメイル・ボックスMB
Xの番号、および指定したメイル・ボックスM B X
へ送るデータを居込み、コマンドを実行する。
コマンド12が実行されると、入力データのエラーを検
査しくステップ0)、エラーが検出されレバコマンド/
ステータス・レジスタCN5Tにエラーコードをセット
して(ステップ0)メインルーチンに戻る。
査しくステップ0)、エラーが検出されレバコマンド/
ステータス・レジスタCN5Tにエラーコードをセット
して(ステップ0)メインルーチンに戻る。
エラーが検出されなければ、送信データを指定された番
号のメイル・ボックスMBXに書込む(ステップ(ハ)
)。そして次に、既にコマンド13が実行され、コマン
ド12の実行によってデータが指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ[相])。これはすべてのタ
スクのタスク制御ブロックTCB内のタスク・ステータ
■中のPENDW7ラグおよびメイル・ボックス番号■
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]ヘスキノプする。送信待ちのタス
クがある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内のP
ENDWフラグをリセット、またREADYフラグをセ
ットし、レディーQを優先席順に接続しなおす(ステッ
プ[相])。
号のメイル・ボックスMBXに書込む(ステップ(ハ)
)。そして次に、既にコマンド13が実行され、コマン
ド12の実行によってデータが指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ[相])。これはすべてのタ
スクのタスク制御ブロックTCB内のタスク・ステータ
■中のPENDW7ラグおよびメイル・ボックス番号■
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]ヘスキノプする。送信待ちのタス
クがある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内のP
ENDWフラグをリセット、またREADYフラグをセ
ットし、レディーQを優先席順に接続しなおす(ステッ
プ[相])。
そして送信待ちのタスクがある場合、ない場合共ニ、コ
マンド/ステータス・レジスタCN、STに正常終了コ
ードをセット(ステップ[相])、さら1’cTsKc
I−TG フラグをセットして(ステップ@)メインル
ーチンに戻る。
マンド/ステータス・レジスタCN、STに正常終了コ
ードをセット(ステップ[相])、さら1’cTsKc
I−TG フラグをセットして(ステップ@)メインル
ーチンに戻る。
コマンド13(コマンド名:PEND、第20図フロー
チャート)は別タスクより、指定したメイル・ボックス
MBXを介してデータを受け取るコマンドである。コマ
ンド・パラメータ・レジスタCPIOにデータを受け取
るメイル・ボックスMBXの番号を書込みコマンドを実
行する。コマンド13が実行されると、まず入力データ
のエラー検査が行なわれ(ステップ@)、エラーが6れ
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードを七ノドして(ステップ[相])、メインルーチン
に戻る。
チャート)は別タスクより、指定したメイル・ボックス
MBXを介してデータを受け取るコマンドである。コマ
ンド・パラメータ・レジスタCPIOにデータを受け取
るメイル・ボックスMBXの番号を書込みコマンドを実
行する。コマンド13が実行されると、まず入力データ
のエラー検査が行なわれ(ステップ@)、エラーが6れ
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードを七ノドして(ステップ[相])、メインルーチン
に戻る。
エラーが検出されなければ、指定したメイルボックスM
BXにデータが既に書込寸れているがどうかチェックす
る(ステップ[相])。もし書込まれていなければ、R
UNフラグをリセット。
BXにデータが既に書込寸れているがどうかチェックす
る(ステップ[相])。もし書込まれていなければ、R
UNフラグをリセット。
PENDW フラグをセットしくステップ[有])、ま
1TSKCHGフラグをセットする(ステップO)。
1TSKCHGフラグをセットする(ステップO)。
そして次に、コマンド/ステータス・レジスタCN5T
にデータ未着コードをセットしくステップO)、メイン
ルーチンに戻る。既にデータが書込捷れていれば、コマ
ンド・パラメータ・レジスタCPIOに指定したメイル
・ボックスMBXに書込まれているデータを転送しくス
テップ0)、コマンド/ステータス・レジスタCN S
T VC正常終了コードをセットして(ステップ[相
])、メインルーチンに戻る。
にデータ未着コードをセットしくステップO)、メイン
ルーチンに戻る。既にデータが書込捷れていれば、コマ
ンド・パラメータ・レジスタCPIOに指定したメイル
・ボックスMBXに書込まれているデータを転送しくス
テップ0)、コマンド/ステータス・レジスタCN S
T VC正常終了コードをセットして(ステップ[相
])、メインルーチンに戻る。
コマンド14(コマンド名:PMOD、第21図フロー
チャート)は、ポート1とポート2のデータ入出力方向
を設定するコマンドである。コマンド・パラメーターレ
ジスタCPIOにポート】とポート2との入出力方向を
指定するだめのコードを設定してコマンドを実行する。
チャート)は、ポート1とポート2のデータ入出力方向
を設定するコマンドである。コマンド・パラメーターレ
ジスタCPIOにポート】とポート2との入出力方向を
指定するだめのコードを設定してコマンドを実行する。
コマンド・パラメータ・レジスタCPIOに設定された
コードに基づきポート1とボート2の入出力方向を指定
しくステップ[相])、コマンド/ステータス・レジス
タCN5Tに正常終了コードを七ノトシて(ステップe
)、メインルーチンニ戻る0 タスクから発行された上記任意のコマンド0〜14の処
理ルーチンを実行し、第6図のメインルーチンに戻ると
、まずコマンド/ステータス・レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ[相])。エラーコードがセットされていれば
ステップ・ヘスキップし、もしエラーコードがセクトさ
れていなければ、次にTSKCHGフラグがセットされ
ているかどうか判定する(ステップ[相])。TSKC
HGフラグがゝ0“であればステップ■ヘスキノプし、
SS 1 //であればタスク切換えルーチンを実行す
る(ステップ[相] 、タスク切換えルーチンは第22
図のフローチャートに詳しく述べられる)。ステップ[
相]まだはステップ[相]からスキップして、あるいは
タスク切換えルーチン(ステップ[相])が実行されて
メインルーチンに戻ると、次のコマンド受は入れ準備を
行ない(ステップ[株])、TSKCHGフラグをリセ
ットする(ステップ[相])0そして、ステップ■に戻
り、次のコマンド受は入れ待ち状態となる。
コードに基づきポート1とボート2の入出力方向を指定
しくステップ[相])、コマンド/ステータス・レジス
タCN5Tに正常終了コードを七ノトシて(ステップe
)、メインルーチンニ戻る0 タスクから発行された上記任意のコマンド0〜14の処
理ルーチンを実行し、第6図のメインルーチンに戻ると
、まずコマンド/ステータス・レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ[相])。エラーコードがセットされていれば
ステップ・ヘスキップし、もしエラーコードがセクトさ
れていなければ、次にTSKCHGフラグがセットされ
ているかどうか判定する(ステップ[相])。TSKC
HGフラグがゝ0“であればステップ■ヘスキノプし、
SS 1 //であればタスク切換えルーチンを実行す
る(ステップ[相] 、タスク切換えルーチンは第22
図のフローチャートに詳しく述べられる)。ステップ[
相]まだはステップ[相]からスキップして、あるいは
タスク切換えルーチン(ステップ[相])が実行されて
メインルーチンに戻ると、次のコマンド受は入れ準備を
行ない(ステップ[株])、TSKCHGフラグをリセ
ットする(ステップ[相])0そして、ステップ■に戻
り、次のコマンド受は入れ待ち状態となる。
上記したようにコマンド処理ルーチンで、TSKCHG
フラグがセット(SS 1 tr )されれば、タスク
切換ルーチンを実行する。第22図のフローチャートに
おいて、タスク切換えルーチンに入ると、まずコマンド
1(初期設定終了および実行開始)の実行時かどうかの
チェックを行なう(ステップ[相])0 コマンド1の実行時であればステップ@ヘスキップし、
以降の処理により、先にコマンド0(初期設定)で登録
したタスクの中から、レディー状態にありかつ優先度の
最も高いタスクを実行させるべくマスタC)) U 2
に割込み信号を発生する。
フラグがセット(SS 1 tr )されれば、タスク
切換ルーチンを実行する。第22図のフローチャートに
おいて、タスク切換えルーチンに入ると、まずコマンド
1(初期設定終了および実行開始)の実行時かどうかの
チェックを行なう(ステップ[相])0 コマンド1の実行時であればステップ@ヘスキップし、
以降の処理により、先にコマンド0(初期設定)で登録
したタスクの中から、レディー状態にありかつ優先度の
最も高いタスクを実行させるべくマスタC)) U 2
に割込み信号を発生する。
まず、レディーQの先頭に接続されているタスクのタス
ク制御ブロックTCBをレディーQから切離しくステッ
プ@)、このタスク制御ブロックTCB内のタスク・ス
タック・ポインタ■(第3図参照)の値を新スタック・
ポインタ・レジスタ5PNK8込む(ステップO)Oそ
して、タスク制御ブロックTCB内のタスク・ステータ
ス■にRUNフラグをセットして(ステップQ)、マス
クCPU2に対して割込み信号INTを発生する(ステ
ップO)0 マスタCPU2は、この割込み信号IN下に基づくマス
クCPUZ側のタスク切換え割込みルーチンにより新し
いタスクのスタック・ポインタの値をWe込み、割込み
ルーチンのリターンと同時にマスクCPU2の管理下に
おいてその夕又りを実行する。
ク制御ブロックTCBをレディーQから切離しくステッ
プ@)、このタスク制御ブロックTCB内のタスク・ス
タック・ポインタ■(第3図参照)の値を新スタック・
ポインタ・レジスタ5PNK8込む(ステップO)Oそ
して、タスク制御ブロックTCB内のタスク・ステータ
ス■にRUNフラグをセットして(ステップQ)、マス
クCPU2に対して割込み信号INTを発生する(ステ
ップO)0 マスタCPU2は、この割込み信号IN下に基づくマス
クCPUZ側のタスク切換え割込みルーチンにより新し
いタスクのスタック・ポインタの値をWe込み、割込み
ルーチンのリターンと同時にマスクCPU2の管理下に
おいてその夕又りを実行する。
コマンド1の実行待以外では、タスクが実行状態かどう
か検査される(ステップ[株])。実行状態でないのけ
コマンド5(タスクの停止)の実行時←られる。実行状
fg (RU N状態)のタスク自身がコマンド5を実
行すると、コマンド処理ルーチンでRUNフラグがセッ
トされ、ザスペンド状態(5USPENI)フラグセッ
ト)となっている。
か検査される(ステップ[株])。実行状態でないのけ
コマンド5(タスクの停止)の実行時←られる。実行状
fg (RU N状態)のタスク自身がコマンド5を実
行すると、コマンド処理ルーチンでRUNフラグがセッ
トされ、ザスペンド状態(5USPENI)フラグセッ
ト)となっている。
この場合、ステップ[相]ヘスキソプし、旧スタックー
ポインタ・レジスタSPBのデータを、今まで実行状態
にあったタスクのタスク制御ブロックTCB内のタスク
・スタック・ポインタ■領域に書込み、保存する。この
後、ステップ@〜Oの処理を通して別のタスクを実行す
るだめ、マルチ・タスク制御用素子1からマスタCPU
2に割込み信号を発生する。
ポインタ・レジスタSPBのデータを、今まで実行状態
にあったタスクのタスク制御ブロックTCB内のタスク
・スタック・ポインタ■領域に書込み、保存する。この
後、ステップ@〜Oの処理を通して別のタスクを実行す
るだめ、マルチ・タスク制御用素子1からマスタCPU
2に割込み信号を発生する。
タスクが実行状態(RUN状態)であれば、時分割処理
のタイム・アンプ時間かどうか検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]へスキップするOこのスキップルー
チンは後に説明する第23図70−チャートのタイマ割
込み処理中でしか通らない0 タイム・アップ時でなければ、各タスクのタスク制御ブ
ロックT CB内を調査してレディーQに実行状態のタ
スク以外に実行待ち(レディー)状態のタスクがなけれ
ば、第6図のメインルーチンに戻る。レディーQに接続
されているタスクがあれば、次妬、実行状態のタスクの
優先度とレディーQの先頭に接続されているタスクの優
先度とを比較する(ステップ0)。実行状態のタスクの
優先度の方が高ければ、同じく第6図のメインル−チン
に戻る。ステップ[相]、■でメインルーチンに戻れば
、割込み信号INTが発生されず、現在実行中のタスク
がそのまま実行を続行することとなる0 レディーQの先頭に接続されているタスクの優先度の方
が高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RUN7ラグをリ
セットする(ステップ[相])0そして、旧スタック・
ポインタ・レジスタSPBのデータをタスク・制御ブロ
ックTCBのタスク・スタック・ポインタ■領域に保存
しくステップ・)、以降のステップ[相]〜○の処理を
通して割込みを発生させる。なお、ステップ@〜Oにお
いて、新しく実行状態となる別のタスクは、前述したよ
うにレディーQの先頭に接続されているタスクで、コマ
ンド実行等により最も優先度が高くなったタスクである
。割込み信号丁に下を発生[7た後は第6図のメインル
ーチンに戻り、次のコマンド受は入れ準備を行なう(第
6図ステップ・)0第23図、第24図は第6図のメイ
ンルーチンに対する割込み処理ルーチンのフローチャー
トである。
のタイム・アンプ時間かどうか検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]へスキップするOこのスキップルー
チンは後に説明する第23図70−チャートのタイマ割
込み処理中でしか通らない0 タイム・アップ時でなければ、各タスクのタスク制御ブ
ロックT CB内を調査してレディーQに実行状態のタ
スク以外に実行待ち(レディー)状態のタスクがなけれ
ば、第6図のメインルーチンに戻る。レディーQに接続
されているタスクがあれば、次妬、実行状態のタスクの
優先度とレディーQの先頭に接続されているタスクの優
先度とを比較する(ステップ0)。実行状態のタスクの
優先度の方が高ければ、同じく第6図のメインル−チン
に戻る。ステップ[相]、■でメインルーチンに戻れば
、割込み信号INTが発生されず、現在実行中のタスク
がそのまま実行を続行することとなる0 レディーQの先頭に接続されているタスクの優先度の方
が高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RUN7ラグをリ
セットする(ステップ[相])0そして、旧スタック・
ポインタ・レジスタSPBのデータをタスク・制御ブロ
ックTCBのタスク・スタック・ポインタ■領域に保存
しくステップ・)、以降のステップ[相]〜○の処理を
通して割込みを発生させる。なお、ステップ@〜Oにお
いて、新しく実行状態となる別のタスクは、前述したよ
うにレディーQの先頭に接続されているタスクで、コマ
ンド実行等により最も優先度が高くなったタスクである
。割込み信号丁に下を発生[7た後は第6図のメインル
ーチンに戻り、次のコマンド受は入れ準備を行なう(第
6図ステップ・)0第23図、第24図は第6図のメイ
ンルーチンに対する割込み処理ルーチンのフローチャー
トである。
第23図はボート3への入力による割込み処理で、コマ
ンド5(タスクの停止、第12図フローチャート)によ
って停止状態にあるタスクを外部イベント起6ノするも
のである。
ンド5(タスクの停止、第12図フローチャート)によ
って停止状態にあるタスクを外部イベント起6ノするも
のである。
ポート3に入力されている信号の遷移によってこのルー
チンが起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先席順でレディーQに接続しくステップ
O)、そのタスク制御ブロックTCB内の5USPEN
Dフラグをリセッ)、READY −yラグをセットす
る(ステップO)。すなわち、これによって停止状態の
タスクが再起動可能状態となるわけで、これが終れば割
込み処理ルーチンからリターンする。
チンが起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先席順でレディーQに接続しくステップ
O)、そのタスク制御ブロックTCB内の5USPEN
Dフラグをリセッ)、READY −yラグをセットす
る(ステップO)。すなわち、これによって停止状態の
タスクが再起動可能状態となるわけで、これが終れば割
込み処理ルーチンからリターンする。
第24図はタイマによる割込み処理で、第2図のタイマ
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
タイマTMから内部割込み信号が発生すると、まず、シ
ステム・クロック領域SCAに登録されている時計の値
(時1分1秒のデータ)を進める(ステップO)。次に
コマンド7(タスクの時分割処理の設定、第7図フロー
チャート)で設定されたレジスタ5LIPRIに登録さ
れている優先度と、現在実行状j島のタスクの優先度と
を比較する(ステップO)。時分割処理は指定した優先
度より高いレディー状態のタスクが存在しない場合に限
り有効である。より高い優先度を持つレディー状態のタ
スクが存在すれば、そのタスクが実行され時分割処理は
無効となるが、高い優先度のタスクがなくなれば有効と
なる。上記ステップOの比較は、レジスタ5LIPLI
に登録されている優先度のタスクが実行中であるかどう
か検査することと同等であり、時分割処理指定タスクが
実行状態にない場合は直ちに割込み処理ルーチンからリ
ターンする。
ステム・クロック領域SCAに登録されている時計の値
(時1分1秒のデータ)を進める(ステップO)。次に
コマンド7(タスクの時分割処理の設定、第7図フロー
チャート)で設定されたレジスタ5LIPRIに登録さ
れている優先度と、現在実行状j島のタスクの優先度と
を比較する(ステップO)。時分割処理は指定した優先
度より高いレディー状態のタスクが存在しない場合に限
り有効である。より高い優先度を持つレディー状態のタ
スクが存在すれば、そのタスクが実行され時分割処理は
無効となるが、高い優先度のタスクがなくなれば有効と
なる。上記ステップOの比較は、レジスタ5LIPLI
に登録されている優先度のタスクが実行中であるかどう
か検査することと同等であり、時分割処理指定タスクが
実行状態にない場合は直ちに割込み処理ルーチンからリ
ターンする。
レジスタ5LIPRIに登録されている優先度と現在実
行状態のタスクの優先度と一致、つまり、現在実行状態
のタスクが時分割処理指定のタスクであれば、レジスタ
5LICNTで登録されている時間が経過したかどうか
の判定を行なう(ステップO)0経jトルていなければ
、この割込み処理ルーチンからリターンする。すなわち
、マルチ・タスク制御用素子lはメインルーチンに戻り
次のコマンド受は入れ待ち状態となり、マスタCPU2
は時分割処理指定の現在実行状態にあるタスクを続けて
実行する。
行状態のタスクの優先度と一致、つまり、現在実行状態
のタスクが時分割処理指定のタスクであれば、レジスタ
5LICNTで登録されている時間が経過したかどうか
の判定を行なう(ステップO)0経jトルていなければ
、この割込み処理ルーチンからリターンする。すなわち
、マルチ・タスク制御用素子lはメインルーチンに戻り
次のコマンド受は入れ待ち状態となり、マスタCPU2
は時分割処理指定の現在実行状態にあるタスクを続けて
実行する。
登録された時間が経過したときは、実行状態のタスクの
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセット、、READYフ
ラグをセットしくステップO)、第22図のタスク切換
えルーチンをコールする(ステップO)O 第22図フローチャートにおいて、時分割処理指定のタ
スクがタイム・アンプした場合は、ステップ■からステ
ップ[相]ヘスキノプする。そしてステップ[相]〜■
の処理を行なう。これらによって、今まで実行状1島に
あったタスクのタスク・スタック・ポインタ■領域に旧
スタック・ポインタ・レジスタSPBのデータを保存す
る(ステソゲ[相])とともに、時分割処理に指定され
た同じ優先度を持つタスクのタスク制御ブロックTCB
をレディーQから切離しくステップ[相])、このタス
ク制御ブロックTCB円のタスク・スタック・ポインタ
■領域のデータを新スタック・ポインタ・レジスタ5P
NK書込む(ステップ○)。そして最後にタスク・ステ
ータス・■にRUNフラグをセットする(ステップO)
。こうしたタスク切換えルーチンを行なったのち割込み
からリターンする。
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセット、、READYフ
ラグをセットしくステップO)、第22図のタスク切換
えルーチンをコールする(ステップO)O 第22図フローチャートにおいて、時分割処理指定のタ
スクがタイム・アンプした場合は、ステップ■からステ
ップ[相]ヘスキノプする。そしてステップ[相]〜■
の処理を行なう。これらによって、今まで実行状1島に
あったタスクのタスク・スタック・ポインタ■領域に旧
スタック・ポインタ・レジスタSPBのデータを保存す
る(ステソゲ[相])とともに、時分割処理に指定され
た同じ優先度を持つタスクのタスク制御ブロックTCB
をレディーQから切離しくステップ[相])、このタス
ク制御ブロックTCB円のタスク・スタック・ポインタ
■領域のデータを新スタック・ポインタ・レジスタ5P
NK書込む(ステップ○)。そして最後にタスク・ステ
ータス・■にRUNフラグをセットする(ステップO)
。こうしたタスク切換えルーチンを行なったのち割込み
からリターンする。
マスタCPU2では上述したマルチ・タスク制御用素子
1の動作により、時分割処理に指定した別のタスクを実
行することとなる。
1の動作により、時分割処理に指定した別のタスクを実
行することとなる。
上述のように本実施例のマルチ・タスク制御用素子lは
同時に最大8個捷でのタスクをサポートすることができ
る。8個を越えるタスクをサポートさせるには、必要に
応じてコマンド2(タスクの生成)、コマンド3(タス
クの消去)によりタスクを生成、消去し、タスクの入れ
換えを行なえばよい。そして、マルチ・タスク制御用素
子1により各タスクは優先席順にマスタCPU2の占有
権を割当てられる0また、コマンド7(タスクの時分割
処理の設定)により、同一優先度の複数のタスクを時分
割方式でスケ−ジューリングすることも可能である。な
お、各タスクの優先度はタスク生成時に設定されるが、
コマンド6(タスクの優先度変更)によりマスタCPU
2のプログラム実行中にも変更可能である。
同時に最大8個捷でのタスクをサポートすることができ
る。8個を越えるタスクをサポートさせるには、必要に
応じてコマンド2(タスクの生成)、コマンド3(タス
クの消去)によりタスクを生成、消去し、タスクの入れ
換えを行なえばよい。そして、マルチ・タスク制御用素
子1により各タスクは優先席順にマスタCPU2の占有
権を割当てられる0また、コマンド7(タスクの時分割
処理の設定)により、同一優先度の複数のタスクを時分
割方式でスケ−ジューリングすることも可能である。な
お、各タスクの優先度はタスク生成時に設定されるが、
コマンド6(タスクの優先度変更)によりマスタCPU
2のプログラム実行中にも変更可能である。
時分割処理の開始時、タスクの実行順序はコマンドO(
初期設定)−1′たはコマンド2(タスクの生成)によ
り生成したタスクの順序に従う。タスク実行中でコマン
ド7(タスクの時分割処理の設定)を実行すれば、実行
したタスクの優先度と時分割指定優先度とが等しい場合
には、実行した時点から時分割処理が有効となる。
初期設定)−1′たはコマンド2(タスクの生成)によ
り生成したタスクの順序に従う。タスク実行中でコマン
ド7(タスクの時分割処理の設定)を実行すれば、実行
したタスクの優先度と時分割指定優先度とが等しい場合
には、実行した時点から時分割処理が有効となる。
コマンド12(メツセージの送信)、コマンド13(メ
ツセージの受信)により、マルチ−タスク制御用素子1
のメイル・ボックスMBXを利用してタスク間のデータ
(メツセージ)の受授が行なえる。
ツセージの受信)により、マルチ−タスク制御用素子1
のメイル・ボックスMBXを利用してタスク間のデータ
(メツセージ)の受授が行なえる。
コマンド12を実行した際、実行したタスクよりも高い
優先度を持つタスクが既にコマンド13を実行して時期
状態にあれば、タスク切換えにより情期していたタスク
が実行を開始する。低い優先度をもつタスクがコマンド
13により時期中であれば、そのタスクはレディー状態
になるだけで、本コマンド12を実行したタスクがその
まま実行を継続する。コマンド12を実行した際、コマ
ンド13が実行されていなければ、データ(2メツセー
ジ)はメイル・ボックスMBXに保存され、同様にその
ままタスクの実行が継続される。
優先度を持つタスクが既にコマンド13を実行して時期
状態にあれば、タスク切換えにより情期していたタスク
が実行を開始する。低い優先度をもつタスクがコマンド
13により時期中であれば、そのタスクはレディー状態
になるだけで、本コマンド12を実行したタスクがその
まま実行を継続する。コマンド12を実行した際、コマ
ンド13が実行されていなければ、データ(2メツセー
ジ)はメイル・ボックスMBXに保存され、同様にその
ままタスクの実行が継続される。
コマンド12が実行されていない時に、同一メイルボッ
クスM]3Xに対して複数のタスクがコマンド13を実
行すれば、コマンド13を実行したタスクの順番に時期
状態となる。コマンド12が実行されれば、時期状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド13を実行した際、既に指
定したメイル・ボックスM 13 Xにデータ(メツセ
ージ)が届いている場合には、そのタスクがコマンド・
ノ(ラメータ・レジスタCPIOより、直ちに届いてい
るデータ(メツセージ)を読出すことができる。
クスM]3Xに対して複数のタスクがコマンド13を実
行すれば、コマンド13を実行したタスクの順番に時期
状態となる。コマンド12が実行されれば、時期状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド13を実行した際、既に指
定したメイル・ボックスM 13 Xにデータ(メツセ
ージ)が届いている場合には、そのタスクがコマンド・
ノ(ラメータ・レジスタCPIOより、直ちに届いてい
るデータ(メツセージ)を読出すことができる。
また、コマンド13の時期機能を利用すれば、タスク間
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが可能である。なお、タスク間の同期お
よび相互排除において、メイル・ボックスMBXに書込
まれるデータはダミーデータで、実際のタスク処理には
使用されないものとする。
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが可能である。なお、タスク間の同期お
よび相互排除において、メイル・ボックスMBXに書込
まれるデータはダミーデータで、実際のタスク処理には
使用されないものとする。
2個のタスクが処理の都合上、実行順序を制御しなけれ
ばならない場合がある。例えば、一方のタスクの処理が
終了するまで他方のタスクの処理を行なわず待たせる場
合、コマンド12.コマンド13を次のように利用して
お互いの同期をとることができる。
ばならない場合がある。例えば、一方のタスクの処理が
終了するまで他方のタスクの処理を行なわず待たせる場
合、コマンド12.コマンド13を次のように利用して
お互いの同期をとることができる。
■ タスク2、コマンド13を実行。タスク2はメツセ
ージ未着のため時期状態となる。
ージ未着のため時期状態となる。
■ タスク1の処理Iをタスク2の処理■よりも先に実
行する。
行する。
■ タスクl、コマンド12を実行。タスク2の処理H
の実行を許可する。
の実行を許可する。
次に、相互排除であるが、複数のタスクが1つの共通の
資源、例えばIlo、メモリ等を利用する上で同時利用
を禁止する必要がある場合がある。
資源、例えばIlo、メモリ等を利用する上で同時利用
を禁止する必要がある場合がある。
例として、プリンタの同時使用を禁止する場合、次のよ
うにして力いに排除することができる。
うにして力いに排除することができる。
■ タスク1、コマンド12を実行。
■ タスク1、コマンド13を実行。既にコマンド12
が実行されているため時期状態にはならず、排他部分を
ロック。
が実行されているため時期状態にはならず、排他部分を
ロック。
■ タスク2、コマンド13を実行。このコマンド13
によりタスクは時期状態となる。
によりタスクは時期状態となる。
■ タスク1、プリンタ使用。
■ タスク1、コマンド12を実行。排他部分のロック
解除、同時にタスク2の排他部分をロック○ ■ タスク2、プリンタ使用。
解除、同時にタスク2の排他部分をロック○ ■ タスク2、プリンタ使用。
■ タスク2、コマンド12を実行、排他部分のロック
解除。
解除。
上述のようにしてタスク間の同期および相互刊除を行な
うこともできる。
うこともできる。
なお、本実施例におけるマルチ・タスク制御用素子1は
ハードウェアを1個のLSI上に集積化したものである
が、適宜回路要素を組合せ、装置とするようにして何ら
差支えない。
ハードウェアを1個のLSI上に集積化したものである
が、適宜回路要素を組合せ、装置とするようにして何ら
差支えない。
〈発明の効果2
以上のように本発明のデバイスによれば、マルチ・タス
ク制御システムにおいて、タスク間のデータ授受、同期
および相互排除を本デバイスが行なうため、システムに
別途ワーク用のデータ・メモリを用意する必要がなく、
ユーザー・プログラムからは2つのコマンドを書込むだ
けでよく、ソフトウェアの負Ji lが軽減する。また
特に、上記同期および相互4ノ1除は受信用コマンドの
待機機能を利用したものであり、簡単な制御で実現でき
る。
ク制御システムにおいて、タスク間のデータ授受、同期
および相互排除を本デバイスが行なうため、システムに
別途ワーク用のデータ・メモリを用意する必要がなく、
ユーザー・プログラムからは2つのコマンドを書込むだ
けでよく、ソフトウェアの負Ji lが軽減する。また
特に、上記同期および相互4ノ1除は受信用コマンドの
待機機能を利用したものであり、簡単な制御で実現でき
る。
さらには、データ授受、同期および相互排除の処理をマ
スタCl) [,1白身が行なう必要がなくなるため、
ユーザー・プログラムの処理速度を向上できる0
スタCl) [,1白身が行なう必要がなくなるため、
ユーザー・プログラムの処理速度を向上できる0
第1図は本発明のデバイスを使用したシステム構成例を
示すIFI、第2図は本発明の一実施例におけるデバイ
スの内部構成例を示すブロック図、第3図は第2図のタ
スク制御ブロックTCB領域を説明する図、第4図は第
2図のメモリ・マツプMEMMAP領域を説明する図、
第5図は本デバイスで使用されるコマンドと入力パラメ
ータおよび出力パラメータを説明する図、第6図は本デ
バイスのメインルーチンの動作を説明するフローチャー
1・、第7図〜第21図は各コマンドによる処理ルーチ
ンの動作を説明するフローチャート、第22図はタスク
切換ルーチンの動作を説明するフローチャート、第23
図はイベント入力による割込み処理ルーチンの動作を説
明するフローチャート、第24図はタイマ割込み処理ル
ーチンの動作を説明するフローチャートである。 1・・マルチ・タスク制御用素子、2・・・マスタCP
U、3・プログラム−メモリ、6・・データ・メモリ、
INTC・・・割込み制御回路、INT・・割込み信号
、TCB・・タスク制御ブロック、C0NT・内部演算
制御回路、MBX・メイル・ボックス、MIV ・マス
ク割込み制御レジスタ、CPIO・・コマンド・パラメ
ータ・レジスタ、CN5T・・・コマンド/ステータス
・レジスタ1.SPN・・新スタ2り・ポインタ・レジ
スタ、SPB・旧スタック・ポインタ・レジスタ0 イー、6図 鉋 7図 ぎ・lo(3) ?fI121廁 第14(′χ1 箪16図 第15図 :為17図 \−□□ − @19図 第20図
示すIFI、第2図は本発明の一実施例におけるデバイ
スの内部構成例を示すブロック図、第3図は第2図のタ
スク制御ブロックTCB領域を説明する図、第4図は第
2図のメモリ・マツプMEMMAP領域を説明する図、
第5図は本デバイスで使用されるコマンドと入力パラメ
ータおよび出力パラメータを説明する図、第6図は本デ
バイスのメインルーチンの動作を説明するフローチャー
1・、第7図〜第21図は各コマンドによる処理ルーチ
ンの動作を説明するフローチャート、第22図はタスク
切換ルーチンの動作を説明するフローチャート、第23
図はイベント入力による割込み処理ルーチンの動作を説
明するフローチャート、第24図はタイマ割込み処理ル
ーチンの動作を説明するフローチャートである。 1・・マルチ・タスク制御用素子、2・・・マスタCP
U、3・プログラム−メモリ、6・・データ・メモリ、
INTC・・・割込み制御回路、INT・・割込み信号
、TCB・・タスク制御ブロック、C0NT・内部演算
制御回路、MBX・メイル・ボックス、MIV ・マス
ク割込み制御レジスタ、CPIO・・コマンド・パラメ
ータ・レジスタ、CN5T・・・コマンド/ステータス
・レジスタ1.SPN・・新スタ2り・ポインタ・レジ
スタ、SPB・旧スタック・ポインタ・レジスタ0 イー、6図 鉋 7図 ぎ・lo(3) ?fI121廁 第14(′χ1 箪16図 第15図 :為17図 \−□□ − @19図 第20図
Claims (1)
- 1 マルタCPUにより実行される複数のタスクの管理
を上記マスタCPU以外で行なうデバイスであり、タス
ク間のデータ授受のだめに使用されるメイル・ボックス
領域を有し、上記マスタCPUにより実行中のタスクか
ら発行される送信および受信用コマンドに従い、上記メ
イル・ボックス領域を介しコマンドを発行するタスク間
のデータ授受を制御する手段と、上記受信用コマンドの
発行時データ3:届いていない場合、上記受信用コマン
ドを発行したタスクを時期状態に制御する手段とを備え
てなることを特徴とするマルチ・タスク制御用デバイス
。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP22812283A JPS60118938A (ja) | 1983-11-30 | 1983-11-30 | マルチ・タスク制御用デバイス |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP22812283A JPS60118938A (ja) | 1983-11-30 | 1983-11-30 | マルチ・タスク制御用デバイス |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS60118938A true JPS60118938A (ja) | 1985-06-26 |
| JPH0376498B2 JPH0376498B2 (ja) | 1991-12-05 |
Family
ID=16871553
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP22812283A Granted JPS60118938A (ja) | 1983-11-30 | 1983-11-30 | マルチ・タスク制御用デバイス |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS60118938A (ja) |
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-30 JP JP22812283A patent/JPS60118938A/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 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH0376498B2 (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 | |
| US5524247A (en) | System for scheduling programming units to a resource based on status variables indicating a lock or lock-wait state thereof | |
| TW498281B (en) | Interface system and method for asynchronously updating a shared resource | |
| US9798595B2 (en) | Transparent user mode scheduling on traditional threading systems | |
| US6834385B2 (en) | System and method for utilizing dispatch queues in a multiprocessor data processing system | |
| JP3113841B2 (ja) | 並列トランザクション処理システム | |
| US6769121B1 (en) | Program execution device and process migrating method thereof and storage medium which stores process migration control program | |
| US5251317A (en) | Computer system with an access control unit for resource | |
| JPS6031648A (ja) | マルチ・タスク制御方法 | |
| JPH0997189A (ja) | 共有資源の排他制御方式 | |
| EP0257655B1 (en) | Multitask processing apparatus | |
| JPH08297581A (ja) | リアルタイム・オペレーティングシステムにおける割り込み管理方式 | |
| JPH0376500B2 (ja) | ||
| JPH07141208A (ja) | マルチタスク処理装置 | |
| JPS60118939A (ja) | マルチ・タスク制御用デバイス | |
| JPH0376497B2 (ja) | ||
| JP2693916B2 (ja) | タスクスケジュール方法 | |
| JPH0376499B2 (ja) | ||
| JPH0376498B2 (ja) | ||
| EP0297895B1 (en) | Apparatus and method using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system | |
| US7770046B2 (en) | Management of time information within a plurality of execution spaces | |
| JPS60114942A (ja) | マルチ・タスク制御用デバイス | |
| JP4559958B2 (ja) | マルチコアプロセッサにおけるマルチコア制御方法 | |
| CN119415158B (zh) | 线程锁处理方法、电子设备、存储介质及程序产品 | |
| JPS60163133A (ja) | マルチ・タスク制御素子 |