JPS60118937A - マルチ・タスク制御用デバイス - Google Patents
マルチ・タスク制御用デバイスInfo
- Publication number
- JPS60118937A JPS60118937A JP22812183A JP22812183A JPS60118937A JP S60118937 A JPS60118937 A JP S60118937A JP 22812183 A JP22812183 A JP 22812183A JP 22812183 A JP22812183 A JP 22812183A JP S60118937 A JPS60118937 A JP S60118937A
- Authority
- JP
- Japan
- Prior art keywords
- task
- command
- memory
- register
- executed
- 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
【発明の詳細な説明】
く技術4〕野゛・
4”R= 明(cI−、マイクロコンピュータの・/ス
テム管理プログシムに有効な=Zルチ・タスク制御用機
能を内蔵したコンピュータ周辺デバ/(スに閏才るもの
である。
テム管理プログシムに有効な=Zルチ・タスク制御用機
能を内蔵したコンピュータ周辺デバ/(スに閏才るもの
である。
〈従来技術〉
マイクロコンピュータ・システムにおいて、1つのCP
Uに」:って複数のタスクを同時に処理させるために1
d1コンピユータ・システムのO8(オペレーティング
・システム)Kuニアマルチ・タスク制御が必要である
。
Uに」:って複数のタスクを同時に処理させるために1
d1コンピユータ・システムのO8(オペレーティング
・システム)Kuニアマルチ・タスク制御が必要である
。
従来、マルチ・タスク制御システムにおいて、各タスク
の使用するワーク・メモリの重複使用の禁止や少ないメ
モリ領域を有効利用するためのメモリ管理は、上記O8
のソフトウェアによって行なわれていた。そのため、ユ
ーザー・プログラムの負相が大きく、また、小さなメモ
リ空間l〜かもたないマイクロコンピュータのようなシ
ステムでは、O8のプログラムがプログラム・メモリ空
間の一部を占めるため、ユーザー・プログラムの大きさ
やユーザー・ゾログラムを配置するアドレスに制約を受
けた。
の使用するワーク・メモリの重複使用の禁止や少ないメ
モリ領域を有効利用するためのメモリ管理は、上記O8
のソフトウェアによって行なわれていた。そのため、ユ
ーザー・プログラムの負相が大きく、また、小さなメモ
リ空間l〜かもたないマイクロコンピュータのようなシ
ステムでは、O8のプログラムがプログラム・メモリ空
間の一部を占めるため、ユーザー・プログラムの大きさ
やユーザー・ゾログラムを配置するアドレスに制約を受
けた。
〈発明の目的〉
本発明は、」二連[7たようなタスクのメモリ管理は本
デバイス内で行なわれる。そのため、ユーザ−・プログ
ラム中で、メモリ領域を確保したい場合、本デバイスに
対してコマンドを実行すれば、あらかじめタスクの使用
するメモリ領域として登録しておいたメモリ領域の中か
ら、本デバイス内で空き領域が自動的に探し出され、空
き領域のアドレスを得ることができる。丑だ、タスクが
使用していたメモリが不要になったときは、別のコマン
ドにより適宜メモリ領域を解放することも可能である。
デバイス内で行なわれる。そのため、ユーザ−・プログ
ラム中で、メモリ領域を確保したい場合、本デバイスに
対してコマンドを実行すれば、あらかじめタスクの使用
するメモリ領域として登録しておいたメモリ領域の中か
ら、本デバイス内で空き領域が自動的に探し出され、空
き領域のアドレスを得ることができる。丑だ、タスクが
使用していたメモリが不要になったときは、別のコマン
ドにより適宜メモリ領域を解放することも可能である。
〈実施例〉
以下図面に従って本発明の一実施例を説明する。
第1図はマイクロコンピュータ・システムとしての構成
例を示す図である0素子(又は装置)1は、本発明に係
るマルチ・タスク制御を実現するだめの独立したマルチ
・タスク・サポート・プロセッサとして構成されたもの
であり、他の周辺デバイスと同様、入出力素子の形態で
供給される。
例を示す図である0素子(又は装置)1は、本発明に係
るマルチ・タスク制御を実現するだめの独立したマルチ
・タスク・サポート・プロセッサとして構成されたもの
であり、他の周辺デバイスと同様、入出力素子の形態で
供給される。
以下、本デバイスをマルチ・タスク制御用素子と呼フ。
マスタCPU2.プログラム・メモリ(ROM)3、デ
ータ・メモリ(RAM)4及び他のIlo等の周辺入出
力素子5は、周知のマイクロコンピュータ・システムと
しても具備されるものであり、マルチ・タスク制御用素
子1とともにバス6を介して相互に接続さ才〕、る。プ
ログラム・メモリ3は、マルチ・タスク制御用素子1の
初期化プログラムと複数のタスクをそ、lLぞれ独立l
〜てプログラムしている。
ータ・メモリ(RAM)4及び他のIlo等の周辺入出
力素子5は、周知のマイクロコンピュータ・システムと
しても具備されるものであり、マルチ・タスク制御用素
子1とともにバス6を介して相互に接続さ才〕、る。プ
ログラム・メモリ3は、マルチ・タスク制御用素子1の
初期化プログラムと複数のタスクをそ、lLぞれ独立l
〜てプログラムしている。
マルチ・タスク制御用素子1は、マスタCPU2により
実行されるこれら複数のタスクの管理をマスタCPU2
以外で行なう独立機能素子であり、タスクのスケジュー
リング機能(優先度順又は時分割による実行タスクの切
換え)、タスク間の同期・通信機能(各タスク間でデー
タの送受信を行ない、タスクの実行中断、実行再開を決
定)、メモリ管理機能(各タスクの使用メモリ領域の重
複使用の禁止)、時泪機能(内蔵タイマによる時刻のセ
ント)等を有している。つマシ、このマルチ・タスク制
御用素子1は、マルチ・タスクの制御機能ヲコンピュー
タ・システムのO8自身のもつ機能とせず、その機能を
有する周辺デバイスとした点に特色がある。
実行されるこれら複数のタスクの管理をマスタCPU2
以外で行なう独立機能素子であり、タスクのスケジュー
リング機能(優先度順又は時分割による実行タスクの切
換え)、タスク間の同期・通信機能(各タスク間でデー
タの送受信を行ない、タスクの実行中断、実行再開を決
定)、メモリ管理機能(各タスクの使用メモリ領域の重
複使用の禁止)、時泪機能(内蔵タイマによる時刻のセ
ント)等を有している。つマシ、このマルチ・タスク制
御用素子1は、マルチ・タスクの制御機能ヲコンピュー
タ・システムのO8自身のもつ機能とせず、その機能を
有する周辺デバイスとした点に特色がある。
第2図(dマルチ・タスク制御用素子1の内部構成例を
示すブロック図である。
示すブロック図である。
マルチ・タスク制御用素子111−1:マスクCPU2
からアクセス可能なレジスタ群を備えている。
からアクセス可能なレジスタ群を備えている。
コマンド・パラメータ・レジスタCPIOi、j:、マ
スタCPU2からコマンド実行時に入力する)くラメー
タや、実行後に出力する・ζラメークを保持スル。コマ
ンド/ステータス・レジスタCN5TU書込み時にはコ
マンド書込み用として、読出し時に6実行したコマンド
の実行情報を格納するだめのレジスタとl〜て機能する
0新スタツク・ポインタ・−レジスタ5PNiI′i、
タスク切換え情報としてこ7′12から新らだに実行状
態となるタスクのスタック・ポインタの値を出力するだ
めのレジスタである。また、旧スタック・ポインタ・レ
ジスタ5PBk上、タスク切換え情報として今寸で実行
状態にあったタスクのスタック・ポインタの値を入力す
るだめのレジスタである。
スタCPU2からコマンド実行時に入力する)くラメー
タや、実行後に出力する・ζラメークを保持スル。コマ
ンド/ステータス・レジスタCN5TU書込み時にはコ
マンド書込み用として、読出し時に6実行したコマンド
の実行情報を格納するだめのレジスタとl〜て機能する
0新スタツク・ポインタ・−レジスタ5PNiI′i、
タスク切換え情報としてこ7′12から新らだに実行状
態となるタスクのスタック・ポインタの値を出力するだ
めのレジスタである。また、旧スタック・ポインタ・レ
ジスタ5PBk上、タスク切換え情報として今寸で実行
状態にあったタスクのスタック・ポインタの値を入力す
るだめのレジスタである。
マスク割込み制御レジスタMICは本素子1における、
マスタCPU2に対する割込み発生を制御するだめのレ
ジスタで、割込みベクタ・レジスタMIVは割込みベク
タ値を書込むOデータ・レジスタPID 、I)2D
、P3Dはポート1.ポート2およびポート3のデータ
入出力のだめのレジスタである。ポート1とポート2は
データ入出力方向をプログラムによってビット単位で設
定できる8ビツト入出力ポートであり、ポート3は1ビ
ツトの入力ポートである。ポート3はプログラムによっ
てイベント入力(ポート3への入力信号の遷移により停
止状態のタスクをレディー状態に移す)にセットするこ
とが可能である。
マスタCPU2に対する割込み発生を制御するだめのレ
ジスタで、割込みベクタ・レジスタMIVは割込みベク
タ値を書込むOデータ・レジスタPID 、I)2D
、P3Dはポート1.ポート2およびポート3のデータ
入出力のだめのレジスタである。ポート1とポート2は
データ入出力方向をプログラムによってビット単位で設
定できる8ビツト入出力ポートであり、ポート3は1ビ
ツトの入力ポートである。ポート3はプログラムによっ
てイベント入力(ポート3への入力信号の遷移により停
止状態のタスクをレディー状態に移す)にセットするこ
とが可能である。
以上のレジスタ群はマスクCPU2からアクセスされて
、本素子1とマスタCPU2との間で情報を相互に交換
するために用いられる。テーク・バス・インターフェイ
スDBI、ノくス・タイミング発生・制御回路BTGC
、割込み制御回路INTCは、マスタCPU2とのイン
ターフェイス回路として備えられたものである。
、本素子1とマスタCPU2との間で情報を相互に交換
するために用いられる。テーク・バス・インターフェイ
スDBI、ノくス・タイミング発生・制御回路BTGC
、割込み制御回路INTCは、マスタCPU2とのイン
ターフェイス回路として備えられたものである。
タスク制御ブロックTCB(1へ・8)はタスクの状態
を保存するだめのメモリ領域である。ここでは8つ寸で
のタスクを取扱うことが可能である。
を保存するだめのメモリ領域である。ここでは8つ寸で
のタスクを取扱うことが可能である。
各ブロックは第3図に示さ瓦るように、タスク・ステー
タス■、タスク優先度■、先にレディーQに接続さ′i
1、ているタスクの番号■、後にレディーQに接続され
ているタスクの番号■、タスクが占イイしているワーク
・メモリの先頭アドレス■、そのサイズの、使用してい
るメイル・ボ・ノクス番号■、そしてタスク実行中断時
のツク・ツク・ポインタ値[有]を格納する領域を有し
ている。
タス■、タスク優先度■、先にレディーQに接続さ′i
1、ているタスクの番号■、後にレディーQに接続され
ているタスクの番号■、タスクが占イイしているワーク
・メモリの先頭アドレス■、そのサイズの、使用してい
るメイル・ボ・ノクス番号■、そしてタスク実行中断時
のツク・ツク・ポインタ値[有]を格納する領域を有し
ている。
メイル・ボックスMBXはタスク間でデータの授受を行
なえるよう設けられたノ<、ツファ・メモリ領域である
。
なえるよう設けられたノ<、ツファ・メモリ領域である
。
メモリ・マッシMEMMA、Pはワーク・メモリを情理
するためのメモリ領域であり、例えば第4図のように3
2バイトから構成される。メモリ・マツプMEMMAP
により64 Kバイト主)1位のワーク・メモリを管理
することが可能である。ワーク・メモリを使用していな
いときその領域に対応するビ、1・は0″で、占有中で
あるときはそのビ・ノドが1″にセットされる。
するためのメモリ領域であり、例えば第4図のように3
2バイトから構成される。メモリ・マツプMEMMAP
により64 Kバイト主)1位のワーク・メモリを管理
することが可能である。ワーク・メモリを使用していな
いときその領域に対応するビ、1・は0″で、占有中で
あるときはそのビ・ノドが1″にセットされる。
タイマTMは時分割処理(同一優先度のタスクを一定時
間毎に実行させる処理)等のために、素子1内に割込み
信号を発生させるもので、ブスデムクロソク領域5CA
J−j:同時にタイマTMの出力により計数される時1
分1秒等の時刻データを格納するメモリ領域である。
間毎に実行させる処理)等のために、素子1内に割込み
信号を発生させるもので、ブスデムクロソク領域5CA
J−j:同時にタイマTMの出力により計数される時1
分1秒等の時刻データを格納するメモリ領域である。
内部演算制御回路C0NTi−1論理演算コーニソト(
ALU)、本素子1のプログラムを格納するROM 、
一時記憶用のRA、 Mおよび各種制御のためのフラグ
用レジスタ等を有してなる。
ALU)、本素子1のプログラムを格納するROM 、
一時記憶用のRA、 Mおよび各種制御のためのフラグ
用レジスタ等を有してなる。
マスタCPU2からマルチ・タスク制御用素子1へのア
クセスv、11、実行中のタスクから発行されるコマン
ドによ−)で行なわれ、マルチ・タスク制御用素子1か
らマスタCPU2へのアクセス(弓8、マルチ・タスク
制御用素子1の割込み信号発生に基づいて行なわれる。
クセスv、11、実行中のタスクから発行されるコマン
ドによ−)で行なわれ、マルチ・タスク制御用素子1か
らマスタCPU2へのアクセス(弓8、マルチ・タスク
制御用素子1の割込み信号発生に基づいて行なわれる。
第5図はコマンドの種類と入力パラメータおよび出力パ
ラメータを示す図であるQ 基本的動作としては次のとおりである。なお、タスク制
御ブロックTCBKは各タスクの状態が既に保存されて
いるものとする。
ラメータを示す図であるQ 基本的動作としては次のとおりである。なお、タスク制
御ブロックTCBKは各タスクの状態が既に保存されて
いるものとする。
マルチ・タスク制御用素子1d1実行可能状態のタスク
から優先度の一番高いタスクを選び出し、ぞ録され/ξ
そのタスクのスタック・ポインタの値を新スタック・ポ
インタ・レジツクSPNに準備する。スタック・ポイン
タの値を準備1−だ後、マルチ・タスク制御用素子1は
マスタCPU2に対17割込みを発生する。マスタCP
U 2は割込み処理ルーチンを実行し、マルチ・タス
ク制御用素子1にセットされているスタック・ポインタ
の値を自分のスタック・ポインタにロードし、予じめ書
1、層目′していたレジスタの初期値をスタックからボ
ノグしてし7スタヲ皇!換ジーる。そしてマスタCPU
2の管理下液おいて指定されたタスクを実行する。
から優先度の一番高いタスクを選び出し、ぞ録され/ξ
そのタスクのスタック・ポインタの値を新スタック・ポ
インタ・レジツクSPNに準備する。スタック・ポイン
タの値を準備1−だ後、マルチ・タスク制御用素子1は
マスタCPU2に対17割込みを発生する。マスタCP
U 2は割込み処理ルーチンを実行し、マルチ・タス
ク制御用素子1にセットされているスタック・ポインタ
の値を自分のスタック・ポインタにロードし、予じめ書
1、層目′していたレジスタの初期値をスタックからボ
ノグしてし7スタヲ皇!換ジーる。そしてマスタCPU
2の管理下液おいて指定されたタスクを実行する。
実?−J中のタスクからコマンド入力があるか、またQ
・1.タイマTMあるいはボート3への入力による′、
i、’lJ 、i/Σみか7らる1て、マルチ・タスク
制御用素子1+r、l: ij+ち状態どなる。ここで
例えばコマンド入力があれt、−、C、マルチ・タスク
制御用素子1はそのコマンドを解析しコマンド処理を行
なう。そして、このコマンドがタスク切換え機能を含む
ものであれば、次に切換えるべきタスクのスタ・ツク・
ポインタの値を新スタック・ポインタ・レジスタSPH
にセラ)・シ、マスクCPtJ2に対し割込みを発生す
る。この割込みによってマスタCPU2は現在実行中の
タスクの実行を停止し、次に実行すべきタスクのスタッ
ク・ポインタの値をマルチ・タスク制御用素子1から読
出す。
・1.タイマTMあるいはボート3への入力による′、
i、’lJ 、i/Σみか7らる1て、マルチ・タスク
制御用素子1+r、l: ij+ち状態どなる。ここで
例えばコマンド入力があれt、−、C、マルチ・タスク
制御用素子1はそのコマンドを解析しコマンド処理を行
なう。そして、このコマンドがタスク切換え機能を含む
ものであれば、次に切換えるべきタスクのスタ・ツク・
ポインタの値を新スタック・ポインタ・レジスタSPH
にセラ)・シ、マスクCPtJ2に対し割込みを発生す
る。この割込みによってマスタCPU2は現在実行中の
タスクの実行を停止し、次に実行すべきタスクのスタッ
ク・ポインタの値をマルチ・タスク制御用素子1から読
出す。
以下フローチャートを参照してさらに詳しく説明する。
第6図はマルチ・タスク制御用素子1のメインルーチン
の動作を説明するフローチャー1− 、第7図〜第21
図は各コマンド0〜14による処理ル−チンの動作を説
明するフローチャート、第22図はタスク切換えルーチ
ンの動作を説明するフローチャート、第2:3図はポー
ト3へのイベント入力による割込み処理ルーチンの動作
を説明するフローチャート、第24図はタイマTMによ
る割込み処理ルーチンの動作を説明するソローチA、
−1−である。
の動作を説明するフローチャー1− 、第7図〜第21
図は各コマンド0〜14による処理ル−チンの動作を説
明するフローチャート、第22図はタスク切換えルーチ
ンの動作を説明するフローチャート、第2:3図はポー
ト3へのイベント入力による割込み処理ルーチンの動作
を説明するフローチャート、第24図はタイマTMによ
る割込み処理ルーチンの動作を説明するソローチA、
−1−である。
第6図において、システムに電源が投入されると、本マ
ルチ・タスク制御用素子1はリセット動作を行ない内部
の各機能素子を初期化する(ステップ■)。そして、マ
スタCPU2からコマンドがコマンド/ステータス−レ
ジスタCN5Tに書込捷れるのを待つ(ステップ■)。
ルチ・タスク制御用素子1はリセット動作を行ない内部
の各機能素子を初期化する(ステップ■)。そして、マ
スタCPU2からコマンドがコマンド/ステータス−レ
ジスタCN5Tに書込捷れるのを待つ(ステップ■)。
コマンドが書込1れると、各コマンド・コードに対応し
たコマンド処理を行なう(ステップ■)。
たコマンド処理を行なう(ステップ■)。
コマンド0(コマンド名: INI T 、第7図フロ
ーチャート)は、マルチ・タスク制御用素子1の初期化
を行なうだめのコマンドであり、マルチ・タスク制御用
素子1がマスタCPU2に対して割込みを発生するとき
にマスクCPU2へ出力するベクタ値、マルチ・タスク
制御用素子1が管理するワーク・メモリ領域の先頭アド
レスとその大きさ、及びタスクの優先度を各タスクに対
して登録するだめのコマンドである。
ーチャート)は、マルチ・タスク制御用素子1の初期化
を行なうだめのコマンドであり、マルチ・タスク制御用
素子1がマスタCPU2に対して割込みを発生するとき
にマスクCPU2へ出力するベクタ値、マルチ・タスク
制御用素子1が管理するワーク・メモリ領域の先頭アド
レスとその大きさ、及びタスクの優先度を各タスクに対
して登録するだめのコマンドである。
このコマンドが実行されると、入力データのエラーを調
査しくステップ■)、もし入力データにりCN5Tにセ
ットした場合も同様にT S K CI−IGフラグを
リセットしてメインルーチンに戻る。
査しくステップ■)、もし入力データにりCN5Tにセ
ットした場合も同様にT S K CI−IGフラグを
リセットしてメインルーチンに戻る。
コマンド1(コマンド名:TSTR,i8図フローチャ
ート)は、初期化したマルチ・タスク制御用素子1を実
行状態に移すだめのコマンドである。
ート)は、初期化したマルチ・タスク制御用素子1を実
行状態に移すだめのコマンドである。
このコマンド1では、コマンド0の処理が実行済かどう
かのチェックを行ない(ステップ@)、実行済の場合の
み、レディーQの先頭に接続されているタスク(一番優
先度の高いタスク)を実行状態に移すためTSKCHG
フラグ(内部演算制御回路C0NTの制御フラグ)を七
ノトシて(ステップ0)、第6図のメインルーチンに戻
る。実行済でない場合は、コマンド/ステータス・レジ
スタCN5Tにエラーコードをセットしくステップ[相
])、メインルーチンに戻る。
かのチェックを行ない(ステップ@)、実行済の場合の
み、レディーQの先頭に接続されているタスク(一番優
先度の高いタスク)を実行状態に移すためTSKCHG
フラグ(内部演算制御回路C0NTの制御フラグ)を七
ノトシて(ステップ0)、第6図のメインルーチンに戻
る。実行済でない場合は、コマンド/ステータス・レジ
スタCN5Tにエラーコードをセットしくステップ[相
])、メインルーチンに戻る。
以上のコマンド0,1およびマルチ・タスク制御用素子
1への書込み情報は、例えば第1図のプログラム・メモ
リ3の初期化プログラムに予じめ格納され、タスク内容
に応じてプログラム変更が誤りがあれば、エラーコード
をコマンド/ステータス・レジスタCN5Tにセットす
る(ステップ■)。
1への書込み情報は、例えば第1図のプログラム・メモ
リ3の初期化プログラムに予じめ格納され、タスク内容
に応じてプログラム変更が誤りがあれば、エラーコード
をコマンド/ステータス・レジスタCN5Tにセットす
る(ステップ■)。
入力データに誤りがなければ、コマンド・パラメータ・
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みベクタレジスタMIVに111込み(ステッ
プ(0)、マたワーク・メモリ領域の先頭アドレスとそ
の大きさのデータをもとにしてメモリ・マツプMEMM
APを初期化する(ステップ(7))。そして、二書込
捷れたタスクの優先度をもとにして各タスク制御ブロッ
クTCBを作成する(ステップ■)。そして、優先度の
高い順に並へてレディーQを構成する(ステップ■)0
このとき、タスク制御ブロックTCB内の■7■によっ
て順序づけを行なう。生成後は正常終了コードをコマン
ド/ステータス・レジスタCN5TKセツト(〜(ステ
ップ■)、内部演算制御回路CONTのTSKCHG
フラグをリセットして(ステップ0)、第6図のメイン
ルーチンに戻る。
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みベクタレジスタMIVに111込み(ステッ
プ(0)、マたワーク・メモリ領域の先頭アドレスとそ
の大きさのデータをもとにしてメモリ・マツプMEMM
APを初期化する(ステップ(7))。そして、二書込
捷れたタスクの優先度をもとにして各タスク制御ブロッ
クTCBを作成する(ステップ■)。そして、優先度の
高い順に並へてレディーQを構成する(ステップ■)0
このとき、タスク制御ブロックTCB内の■7■によっ
て順序づけを行なう。生成後は正常終了コードをコマン
ド/ステータス・レジスタCN5TKセツト(〜(ステ
ップ■)、内部演算制御回路CONTのTSKCHG
フラグをリセットして(ステップ0)、第6図のメイン
ルーチンに戻る。
エラーコードをコマンド/ステータス・レジス可能であ
り、マルチ・タスク制御用素子1ばこれにより種々に初
期化設定することができる。
り、マルチ・タスク制御用素子1ばこれにより種々に初
期化設定することができる。
コマンド2(コマンド名:TCRT 、第9[)l’イ
ムチャー) ’) ld初期設定の後、任意にタスクを
生成するだめのコマンドであり、入力データとして生成
するタスクの番号およびその優先度が本素子1のコマン
ド・パラメータ・レジスタCPIOに書込まれる。
ムチャー) ’) ld初期設定の後、任意にタスクを
生成するだめのコマンドであり、入力データとして生成
するタスクの番号およびその優先度が本素子1のコマン
ド・パラメータ・レジスタCPIOに書込まれる。
このコマンド2が実行されると、入力データにエラーが
ないかの検査を行ない(ステ・ノブ[相])、エラーが
あればコマンド/ステータス・レジスタCN5Tにエラ
ーコードを書込む(ステップ0)。
ないかの検査を行ない(ステ・ノブ[相])、エラーが
あればコマンド/ステータス・レジスタCN5Tにエラ
ーコードを書込む(ステップ0)。
エラーがなければ、入力データで指定されたタスクのタ
スク制御ブロックTCBを生成する(ステップ0)。
スク制御ブロックTCBを生成する(ステップ0)。
タスク制御ブロックTCB中のタスクφステータス■(
第3図参照)には次の4つのフラグが含まれる。
第3図参照)には次の4つのフラグが含まれる。
RUNフラグはタスクが実行状態にあることを示す0
READY フラグはタスクがレディー状態にあってレ
ディQに接続されていることを示す。
ディQに接続されていることを示す。
PENDW フラグはメツセージ受信待ち状態にあるこ
とを示す。
とを示す。
5USPENDフラグはタスクが停止状態にあることを
示す。
示す。
」二記タスク制御ブロックTCBの生成時(ステップ@
) 、l’r7J時にぞの中のIIIADY フラグ
をセットする。
) 、l’r7J時にぞの中のIIIADY フラグ
をセットする。
そして、タスクの優先度が高い順にレディーQに再接続
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ[相])、実行状態のタスクとレディーQの先頭に接
続されているタスクの優先度を比軸さぜるためのTSK
CI(Gフラグをセットして(ステップ[相])、第6
図のメインルーチンに戻るO コマンド3(コマン)”名:TDEL 、m10図タイ
ムチャート)は不要のタスクを消去するだめのコマンド
で、消去するタスクの番号を入力データとじて実行する
。
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセットしくステッ
プ[相])、実行状態のタスクとレディーQの先頭に接
続されているタスクの優先度を比軸さぜるためのTSK
CI(Gフラグをセットして(ステップ[相])、第6
図のメインルーチンに戻るO コマンド3(コマン)”名:TDEL 、m10図タイ
ムチャート)は不要のタスクを消去するだめのコマンド
で、消去するタスクの番号を入力データとじて実行する
。
入力データにエラ二がないかの検査(ステップ■〕にお
いて、エラーがあればコマンド/ステータスφレジスタ
CN5Tにエラーコードがセントされ(ステップ[相]
)、第6図のメインルーチンに戻る0 エラーがなければ、消去するタスクが占有していたワー
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレスC)およ
び占有メモリ・サイズ■を読出し、このデータに基づい
てメモリ、マツプMEMMAPj=で対応した領域を゛
0″クリアする(ステップ[相]90ついでこのタスク
がレディー状態にあれば、消去するタスクのタスク制御
ブロックTCBをレディーQから切離しくステップ[有
])、このタスク制御ブロックTCBのすべてをクリア
する(ステップ[相])。終われば、コマンド/ステー
タス・レジスタCN5Tに正常終了コードを七ソトシて
(ステップ0)、メインルーチンに戻る。
いて、エラーがあればコマンド/ステータスφレジスタ
CN5Tにエラーコードがセントされ(ステップ[相]
)、第6図のメインルーチンに戻る0 エラーがなければ、消去するタスクが占有していたワー
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレスC)およ
び占有メモリ・サイズ■を読出し、このデータに基づい
てメモリ、マツプMEMMAPj=で対応した領域を゛
0″クリアする(ステップ[相]90ついでこのタスク
がレディー状態にあれば、消去するタスクのタスク制御
ブロックTCBをレディーQから切離しくステップ[有
])、このタスク制御ブロックTCBのすべてをクリア
する(ステップ[相])。終われば、コマンド/ステー
タス・レジスタCN5Tに正常終了コードを七ソトシて
(ステップ0)、メインルーチンに戻る。
コマンド4(コマンド名: TR8M 、i1i図フロ
ーチャー1・)は、入力データで指定されたタスク番号
を持つ待期捷たは停止中のタスクをレディー状態(再起
動可能状態)にするだめのコマンドである。タスク番号
を入力データとして実行する0 コマンド4が実行されると、捷ず入力データにエラーが
ないかの検査が行かわれ(ステップ0)、エラーがあれ
はコマンド/ステータス・レジスタCN S T VC
エラーコ−ドを設定して(ステップ[相])、メインル
ーチンに戻る。
ーチャー1・)は、入力データで指定されたタスク番号
を持つ待期捷たは停止中のタスクをレディー状態(再起
動可能状態)にするだめのコマンドである。タスク番号
を入力データとして実行する0 コマンド4が実行されると、捷ず入力データにエラーが
ないかの検査が行かわれ(ステップ0)、エラーがあれ
はコマンド/ステータス・レジスタCN S T VC
エラーコ−ドを設定して(ステップ[相])、メインル
ーチンに戻る。
エラーがなければ、指定されたタスクのPENDWフラ
グまた←↓5USPENDフラグをリセットするととも
KREADY フラグをセットし、かつこのタスク制御
ブロックTCBをタスクの優先度の高い順序てレゾ(−
Qに接続する(ステップ[相])。
グまた←↓5USPENDフラグをリセットするととも
KREADY フラグをセットし、かつこのタスク制御
ブロックTCBをタスクの優先度の高い順序てレゾ(−
Qに接続する(ステップ[相])。
そして、正常終了コードをコマンド/ステータス・レジ
スタCN5Tにセットしくステップ[相])、実行状態
のタスクとレディーQの先頭に接続されているタスクの
優先度を比較するためTSKCIIGフラグをセットし
くステップ[株])、メインルーチンに戻る。
スタCN5Tにセットしくステップ[相])、実行状態
のタスクとレディーQの先頭に接続されているタスクの
優先度を比較するためTSKCIIGフラグをセットし
くステップ[株])、メインルーチンに戻る。
コマンド5(コマンド名:TSpD、212図フローチ
ャート)は、入力データで指定されたタスク番号を持つ
実1ゴ状態あるいはレディー状態にあるタスクを停止状
態にするだめのコマンドである。
ャート)は、入力データで指定されたタスク番号を持つ
実1ゴ状態あるいはレディー状態にあるタスクを停止状
態にするだめのコマンドである。
このコマンド5が実行されると、入力データのエラーを
検査し、エラーがあればコマンド/ステータス・レジス
タCN5Tにエラーコードを設定してメインルーチンに
戻る(ステップ0.[相])。
検査し、エラーがあればコマンド/ステータス・レジス
タCN5Tにエラーコードを設定してメインルーチンに
戻る(ステップ0.[相])。
エラーがなければ、まず、入力データによって、停止状
態になるタスクをボート3からの入力信号(外部イベン
ト)によりレディー状態にする(再起動)という指定が
されているかどうかのチェックを行なう(ステップ[相
])。外部イベントの指定がなければステップ@の処理
ヘスキノブする。指定がある場合は、他のタスクが既に
外部イベントを使用しているかどうかの検査を行ない(
ステップ[相])、使用されていれば、コマンド/ステ
ータス−レジスタCN5TKエラ−コー)”ヲー1=ッ
l−Lて(ステップ[相])メインルーチンに戻る。使
用されていなければ、ボー1−3の入力信号の遷移によ
る内部割込みをイネーブルにする(ステップ[相])。
態になるタスクをボート3からの入力信号(外部イベン
ト)によりレディー状態にする(再起動)という指定が
されているかどうかのチェックを行なう(ステップ[相
])。外部イベントの指定がなければステップ@の処理
ヘスキノブする。指定がある場合は、他のタスクが既に
外部イベントを使用しているかどうかの検査を行ない(
ステップ[相])、使用されていれば、コマンド/ステ
ータス−レジスタCN5TKエラ−コー)”ヲー1=ッ
l−Lて(ステップ[相])メインルーチンに戻る。使
用されていなければ、ボー1−3の入力信号の遷移によ
る内部割込みをイネーブルにする(ステップ[相])。
すなわち、本コマンド50入力データ設定により外部イ
ベ/1・起動の指定が可能である。
ベ/1・起動の指定が可能である。
そ1〜で、スキップした場合を含めて次に、そのタスク
制御ブロックTCB中のRUNフラグ(指定し/こタス
クが実行状態にある場合)まだはRE A D Yフラ
グ(レディー状態にある場合)をリセノl−1〜、5U
SPENDフラグをセットする(ステップ■)。終われ
ば、コマンド/ステータス・レジスタCN5Tに正常終
了コードをセットする(ステップ[相])。そして指定
されたタスクがレディ7状態にある場合を考慮して、こ
のタスクをレディーQから切離し、レディーQに接続さ
れているタスク制御ブロックTCBを再度優先度順にな
らび換え(ステップ[相])、実行状態のタスクとレデ
ィーQの先頭に接続されているタスクの優先度を比較す
るためのTSKCHGフラグを十ノトシて(ステップ[
相])、メインルーチンに戻る。
制御ブロックTCB中のRUNフラグ(指定し/こタス
クが実行状態にある場合)まだはRE A D Yフラ
グ(レディー状態にある場合)をリセノl−1〜、5U
SPENDフラグをセットする(ステップ■)。終われ
ば、コマンド/ステータス・レジスタCN5Tに正常終
了コードをセットする(ステップ[相])。そして指定
されたタスクがレディ7状態にある場合を考慮して、こ
のタスクをレディーQから切離し、レディーQに接続さ
れているタスク制御ブロックTCBを再度優先度順にな
らび換え(ステップ[相])、実行状態のタスクとレデ
ィーQの先頭に接続されているタスクの優先度を比較す
るためのTSKCHGフラグを十ノトシて(ステップ[
相])、メインルーチンに戻る。
コマンド6(コマンド名:TPRI 、第13図クイム
チャーI・)は、入力データで指定された番号のタスク
の優先度を変更するコマンドである。
チャーI・)は、入力データで指定された番号のタスク
の優先度を変更するコマンドである。
入力データにエラーがあるかの検査(ステップo)にお
いて、エラーがある場合はコマンド/ステータス・レジ
スタCN5Tにエラーコードをセントして(ステップ@
)メインルーチンに戻る。
いて、エラーがある場合はコマンド/ステータス・レジ
スタCN5Tにエラーコードをセントして(ステップ@
)メインルーチンに戻る。
エラーがない場合、指定されたタスクのタスク管理ブロ
ックTCB内の優先度■(第3図参照)を入力データの
変更優先度の値に書換える(ステップ◎)。次に、レデ
ィーQに接続されているタスク管理ブロック’I” C
Bを優先度ハ貝にならび換え(ステップe)、コマンド
/ステータ・レジスタCN5Tに正常終了コードをセッ
トする(ステップ@)oそして、実行状態のタスクとレ
ディーQの先頭に接続されているタスクの優先度を比較
するためにTSKCILGフラグを七ノトシて(ステッ
プ@)、メインルーチンに戻る。
ックTCB内の優先度■(第3図参照)を入力データの
変更優先度の値に書換える(ステップ◎)。次に、レデ
ィーQに接続されているタスク管理ブロック’I” C
Bを優先度ハ貝にならび換え(ステップe)、コマンド
/ステータ・レジスタCN5Tに正常終了コードをセッ
トする(ステップ@)oそして、実行状態のタスクとレ
ディーQの先頭に接続されているタスクの優先度を比較
するためにTSKCILGフラグを七ノトシて(ステッ
プ@)、メインルーチンに戻る。
コマンド7(コマンド名:TSLT、第14図フローチ
ャート)妊2、入力データで指定されだ優先度を持つタ
スク群のマスクCPU占有時間を制限するだめのコマン
ドである。すなわち、このコマンドは同一優先度のタス
クの時分割処理を指定する。時分割処理は、指定した優
先度より高い優先度を持つレディー状態のタスクが存在
しない場合に限り有効である。より高い優先度を持つレ
ディー状態のタスクが存在すオtば、そのタスクが実行
され時分割処理は無効となるが、高い優先度のタスクが
なくなれば有効となる。
ャート)妊2、入力データで指定されだ優先度を持つタ
スク群のマスクCPU占有時間を制限するだめのコマン
ドである。すなわち、このコマンドは同一優先度のタス
クの時分割処理を指定する。時分割処理は、指定した優
先度より高い優先度を持つレディー状態のタスクが存在
しない場合に限り有効である。より高い優先度を持つレ
ディー状態のタスクが存在すオtば、そのタスクが実行
され時分割処理は無効となるが、高い優先度のタスクが
なくなれば有効となる。
このコマンド7が実行され、ると、まず、入力データの
エラーが検査される(ステップ■)。エラーか検出され
た場合は、コマンド・ステータス・レジスタCN5Tに
エラーコードがセットされ(ステップ■)、メインルー
チンに戻る。
エラーが検査される(ステップ■)。エラーか検出され
た場合は、コマンド・ステータス・レジスタCN5Tに
エラーコードがセットされ(ステップ■)、メインルー
チンに戻る。
エラーが検出されなければ、入力データが時分割処理を
キャンセルする指定であるのかどうかを判定する(ステ
ップ@)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタS L I CNT
および5LIPRI を゛0″クリアする(ステップ[
相]、■)。入力データが新だに時分割処理の設定を指
定する場合は、その入力データからタスクのCPU占有
時間を制御用レジスタS L I CN i”に設定し
くステップ[相])、時分割処理を行なうタスクの優先
度をもう一つの告り御用レジスタ5LII〕RIに設定
する(ステップ[相])。
キャンセルする指定であるのかどうかを判定する(ステ
ップ@)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタS L I CNT
および5LIPRI を゛0″クリアする(ステップ[
相]、■)。入力データが新だに時分割処理の設定を指
定する場合は、その入力データからタスクのCPU占有
時間を制御用レジスタS L I CN i”に設定し
くステップ[相])、時分割処理を行なうタスクの優先
度をもう一つの告り御用レジスタ5LII〕RIに設定
する(ステップ[相])。
そして最後にコマンド/ステータス・レジスタCN5T
に正常終了コードを七ント1,て(ステップQ)メイン
ルーチンに戻る。
に正常終了コードを七ント1,て(ステップQ)メイン
ルーチンに戻る。
コマンド8(コマン)’名: C3ET 、ff115
図フローチャート)にl:、マルチ・タスク制御用素子
1内に設けられた時計に時刻を設定するだめのコマンド
である。マスクCPU2から本素子1内のコマンド・パ
ラメータ・レジスタCPIOに、入力データとして時9
分2秒データを書込みコマンドを実行する。
図フローチャート)にl:、マルチ・タスク制御用素子
1内に設けられた時計に時刻を設定するだめのコマンド
である。マスクCPU2から本素子1内のコマンド・パ
ラメータ・レジスタCPIOに、入力データとして時9
分2秒データを書込みコマンドを実行する。
入力データのエラーが検査されて(ステップ・)、エラ
ーが検出された場合はコマンド/ステータス・レジスタ
CN5Tにエラーコートがセットされて(ステップ[相
])、メインルーチンに戻る。
ーが検出された場合はコマンド/ステータス・レジスタ
CN5Tにエラーコートがセットされて(ステップ[相
])、メインルーチンに戻る。
エラーがなければ、システム・クロック領域SCAに時
2分2秒のデータが移される(ステップO)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ0)メインルーチンに戻る。
2分2秒のデータが移される(ステップO)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ0)メインルーチンに戻る。
この時計は後述するタイマ割込みルーチンにより刻々計
時される。
時される。
コマンド9(コマンド名: CGENT、第16図フロ
ーチャート)は、上記の時計から現在の時刻を読出すだ
めのコマンドである。
ーチャート)は、上記の時計から現在の時刻を読出すだ
めのコマンドである。
このコマンド9が実行されると、システム・クロック領
域SCAから時2分2秒のデータが、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス・レ
ジスタCN5Tに正常終了コードをセントして(ステッ
プ[相])メインルーチンに戻る。
域SCAから時2分2秒のデータが、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス・レ
ジスタCN5Tに正常終了コードをセントして(ステッ
プ[相])メインルーチンに戻る。
コマンド10(コマンド名:MALC,第17図フロー
チャート)は、マルチ・タスク制御用素子1が管理して
いるワーク・メモリ領域の中から、コマンドを実行した
タスクに対して要求されたサイズのワーク・メモリの使
用を許可するコマンドである。コマンド・パラメータ・
レジスタCPIOに要求するワーク・メモリ数(100
H単位)を書込みコマンドを実行する。
チャート)は、マルチ・タスク制御用素子1が管理して
いるワーク・メモリ領域の中から、コマンドを実行した
タスクに対して要求されたサイズのワーク・メモリの使
用を許可するコマンドである。コマンド・パラメータ・
レジスタCPIOに要求するワーク・メモリ数(100
H単位)を書込みコマンドを実行する。
コマンド10が実行されると、入力データのエラー検出
が行なわれる(ステップ0)。エラーが検出されれば、
コマンド/ステータス・レジスタCN5Tにエラーコー
ドをセットして(ステップ◎)メインルーチンに戻る。
が行なわれる(ステップ0)。エラーが検出されれば、
コマンド/ステータス・レジスタCN5Tにエラーコー
ドをセットして(ステップ◎)メインルーチンに戻る。
エラーが検出されなければ、メモリ・マツプMEMMA
Pを調査し、要求されたワーク・メモリが空いているか
どうかのチェックを行なう(ステップ・)0空き領域が
なければコマンド/ステータス・レジスタCN5Tにメ
モリ占有不可コードをセットして(ステップ1(ロ))
、メインルーチンに戻る。空き領域が見つかれば、コマ
ンドを実行したタスクが要求したサイズだ扮メモリ・マ
ツプMEMMAP上の対応したビットに■1″をセット
する(ステップ[相])0そして、コマンドを実行した
タスクのり図参照)にそれぞれの値を設定しくステップ
[相])、次にコマンド・パラメータ・レジスタCPI
Oに占有メモリ・先頭アドレスを書込む。書込まれば、
コマンド/ステータス・レジスタCN5Tに正常終了コ
ードをセットしくステップ[相])メインルーチンに戻
る。
Pを調査し、要求されたワーク・メモリが空いているか
どうかのチェックを行なう(ステップ・)0空き領域が
なければコマンド/ステータス・レジスタCN5Tにメ
モリ占有不可コードをセットして(ステップ1(ロ))
、メインルーチンに戻る。空き領域が見つかれば、コマ
ンドを実行したタスクが要求したサイズだ扮メモリ・マ
ツプMEMMAP上の対応したビットに■1″をセット
する(ステップ[相])0そして、コマンドを実行した
タスクのり図参照)にそれぞれの値を設定しくステップ
[相])、次にコマンド・パラメータ・レジスタCPI
Oに占有メモリ・先頭アドレスを書込む。書込まれば、
コマンド/ステータス・レジスタCN5Tに正常終了コ
ードをセットしくステップ[相])メインルーチンに戻
る。
コマンド11(コマンド名:MREL、第18図フロー
チャート)は、占有していたワーク・メモリ領域を開放
するだめのコマンドである。
チャート)は、占有していたワーク・メモリ領域を開放
するだめのコマンドである。
コマンド11を実行したタスクがワーク・メモリを占有
していなければ(ステップ・)、コマンド/ステータス
・レジスタCN5TKエラーコードをセットして(ステ
ップ[相])メインルーチンに戻る。
していなければ(ステップ・)、コマンド/ステータス
・レジスタCN5TKエラーコードをセットして(ステ
ップ[相])メインルーチンに戻る。
既にワーク・メモリが占有されていれば、コマンドを実
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス■および占有メモリ・サ
イズ■の領域の値を参照し、メモリ・マツプMEMMA
P上の対応したビットを110 IIにリセットする(
ステップ0)。そして、タスク制御ブロックTCB内の
占有メモリ先頭アドレス■及び占有メモリ・サイズのの
領域をクリアする(ステップ@)。最後にコマンド/ス
テータス・レジスタCN5Tに正常終了コードをセット
して(ステップ(■)、メインルーチンに戻る。
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス■および占有メモリ・サ
イズ■の領域の値を参照し、メモリ・マツプMEMMA
P上の対応したビットを110 IIにリセットする(
ステップ0)。そして、タスク制御ブロックTCB内の
占有メモリ先頭アドレス■及び占有メモリ・サイズのの
領域をクリアする(ステップ@)。最後にコマンド/ス
テータス・レジスタCN5Tに正常終了コードをセット
して(ステップ(■)、メインルーチンに戻る。
上述のようにタスクからメモリを要求する場合には、マ
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MALC)を実行する。また、タスク
が使用していたメモリが不要になり解放したい場合には
、コマンド11(メモリ解放コマンド、MREL)を実
行する。
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MALC)を実行する。また、タスク
が使用していたメモリが不要になり解放したい場合には
、コマンド11(メモリ解放コマンド、MREL)を実
行する。
このようにマルチ・タスク制御用素子1は、これらコマ
ンド10.11によって、予じめ登録された64にバイ
ト作でのワーク用メモリ領域を100Hバイト単位で使
用中か否かを判断し、タスクから要求さil、ijサイ
ズの空き領域を探し出して、タスクに割イ;]ける機能
を有する。
ンド10.11によって、予じめ登録された64にバイ
ト作でのワーク用メモリ領域を100Hバイト単位で使
用中か否かを判断し、タスクから要求さil、ijサイ
ズの空き領域を探し出して、タスクに割イ;]ける機能
を有する。
この機能は、限られたメモリ空間を複数のタスクで有効
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子1へのワーク
・メモリ領域の設定は、マルチ・タスク制御用素子1の
初期設定時(コマンドOの実行時)に行なわれる。
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子1へのワーク
・メモリ領域の設定は、マルチ・タスク制御用素子1の
初期設定時(コマンドOの実行時)に行なわれる。
コマンド12(コマンド名:PO3T 、第19図フロ
ーチャー)・)は、本マルチ・タスク制御用素子1内に
設けられたメイルボックスMBXと呼ばれるメモリ領域
に、データを送るだめのコマンドである。メイルボック
スMBXはこのコマンド12を実行したタスクと別タス
ク(次に説明するコマンド13実行)とのメツセージ中
継点となる05個のメイルボックスMBXi〜MBX5
中の1個を指定できる。コ”マ/ド・ノくラメータ・レ
ジスタCI? 1.0に使用するメイル・ボ・ンクスI
VIBXの番−’;j’ +および指定したメイルボッ
クスMBXへ送るデータを書込み、コマンドを実行する
。
ーチャー)・)は、本マルチ・タスク制御用素子1内に
設けられたメイルボックスMBXと呼ばれるメモリ領域
に、データを送るだめのコマンドである。メイルボック
スMBXはこのコマンド12を実行したタスクと別タス
ク(次に説明するコマンド13実行)とのメツセージ中
継点となる05個のメイルボックスMBXi〜MBX5
中の1個を指定できる。コ”マ/ド・ノくラメータ・レ
ジスタCI? 1.0に使用するメイル・ボ・ンクスI
VIBXの番−’;j’ +および指定したメイルボッ
クスMBXへ送るデータを書込み、コマンドを実行する
。
コマンド12が実行されると、入力データのエラーを検
査しくステップ@)、エラーが検出されレバコマンド/
ステータス・レジスタCN5TKエラーコードをセント
して(ステップ@Lメインルーチンに戻る。
査しくステップ@)、エラーが検出されレバコマンド/
ステータス・レジスタCN5TKエラーコードをセント
して(ステップ@Lメインルーチンに戻る。
エラーが検出されなければ、送信データを指定された番
号のメイル・ボックスMBXに書込む(ステップ[相]
)。そして次に、既にコマンド13が実行され、コマン
ド12の実行によってデータが指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ[相])。これはすべてのタ
スクのタスク制御ブロックTCB内のタスク・ステータ
■中のPFJNDWフラグおよびメイルボックス番号@
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]へスキップする。送信待ちのタス
クがある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内0P
ENDWフラグをリセット、またREADYフラグをセ
ットし、レディーQを優先席順に接続しなおす(ステッ
プ[相])。
号のメイル・ボックスMBXに書込む(ステップ[相]
)。そして次に、既にコマンド13が実行され、コマン
ド12の実行によってデータが指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ[相])。これはすべてのタ
スクのタスク制御ブロックTCB内のタスク・ステータ
■中のPFJNDWフラグおよびメイルボックス番号@
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]へスキップする。送信待ちのタス
クがある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内0P
ENDWフラグをリセット、またREADYフラグをセ
ットし、レディーQを優先席順に接続しなおす(ステッ
プ[相])。
そして送信待ちのタスクがある場合、ない場合共ニ、コ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、さらにT S K
CH,G フラグをセットして(ステップ@)メインル
ーチンに戻る0 コマンド13(コマンド名:PEND、第20図フロー
チャー1・)は別タスクより、指定したメイル・ボック
スMBXを介してデータを受け]収るコマンドである。
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、さらにT S K
CH,G フラグをセットして(ステップ@)メインル
ーチンに戻る0 コマンド13(コマンド名:PEND、第20図フロー
チャー1・)は別タスクより、指定したメイル・ボック
スMBXを介してデータを受け]収るコマンドである。
コマンド・ノζラメータ・レジスタCPIOにデータを
受け取るメイル・7I(ノクスMBXの番号を書込みコ
マンドを実行すイ)。コマンド13が実行されると、ま
ず入力データのエラー検査が行なわれ(ステップ[相]
)、エラーカよぉね。
受け取るメイル・7I(ノクスMBXの番号を書込みコ
マンドを実行すイ)。コマンド13が実行されると、ま
ず入力データのエラー検査が行なわれ(ステップ[相]
)、エラーカよぉね。
ばコマンド/ステータス・レジスタCN5Tにエラーコ
ードをセットして(ステップ[相])、メインルーチン
に戻る。
ードをセットして(ステップ[相])、メインルーチン
に戻る。
エラーが検出され分ければ、指定したメイル・ボックス
MBXにデータが既に書込まれているカーどうかチェッ
クする(ステソフ局)。もし書込咬れていなければ、R
UNフラグをリセット。
MBXにデータが既に書込まれているカーどうかチェッ
クする(ステソフ局)。もし書込咬れていなければ、R
UNフラグをリセット。
PENDW フラグをセ・ノドしくステップ[相])、
マたTSKCHGフラグをセ・ノドする(ステップ・)
。
マたTSKCHGフラグをセ・ノドする(ステップ・)
。
そして次に、コマンド/ステータス・し・タスクCN5
Tにデータ未着コードをセノトシ(ステップ・)、メイ
ンルーチンに戻る。既にデータが四“込マれていれば、
コマンド・・2ラメータ・レジスタCPIOに指定した
メイル・ボックスMBXに書込まれているデータを転送
しくステ・ノブ[相])、コマンド/ステータス・レジ
スタcNSTKL常終了コードをセ、y +−して(ス
テップ0)、メインルーチンに戻る0 コマンド14(コマンド名:PMOD 、第21図フロ
ーチャート)は、ポート1とポート2のデータ入出力方
向を設定するコマンドである。コマンド・パラメータ・
レジスタCPIOにポート1とポート2との入出力方向
を指定するだめのコードを設定してコマンドを実行する
O コマンド・パラメータ・レジスタCP I OK段設定
れたコードに基づきポート1とポート2の入出力方向を
指定しくステ・ノブ[相])、コマンド/ステータス・
レジスタCN、STに正常終了コー)パをセットして(
ステップ@)、メインル−チンに戻るO タスクから発行された上記任意のコマンドO〜14の処
理ルーチンを実行し、第6図のメインルーチンに戻ると
、捷ずコマンド/ステータス・レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ[相])。エラー−コードが七ノドされていれ
ばステップ・ヘスキノプし、もしエラーコードがセット
されていなければ、次にTSKCHGフラグがセットさ
れているかどうか判定する(ステップ[相])。T S
K CI−I G 7ラグが0″であればステップ0
ヘスキンプ(〜、111 IIであればタスク切換えル
ーチンを実行する(ステップ[相]・、タスク切換えル
ーチンは第22図のフローチャートに詳しく述べられる
)。
Tにデータ未着コードをセノトシ(ステップ・)、メイ
ンルーチンに戻る。既にデータが四“込マれていれば、
コマンド・・2ラメータ・レジスタCPIOに指定した
メイル・ボックスMBXに書込まれているデータを転送
しくステ・ノブ[相])、コマンド/ステータス・レジ
スタcNSTKL常終了コードをセ、y +−して(ス
テップ0)、メインルーチンに戻る0 コマンド14(コマンド名:PMOD 、第21図フロ
ーチャート)は、ポート1とポート2のデータ入出力方
向を設定するコマンドである。コマンド・パラメータ・
レジスタCPIOにポート1とポート2との入出力方向
を指定するだめのコードを設定してコマンドを実行する
O コマンド・パラメータ・レジスタCP I OK段設定
れたコードに基づきポート1とポート2の入出力方向を
指定しくステ・ノブ[相])、コマンド/ステータス・
レジスタCN、STに正常終了コー)パをセットして(
ステップ@)、メインル−チンに戻るO タスクから発行された上記任意のコマンドO〜14の処
理ルーチンを実行し、第6図のメインルーチンに戻ると
、捷ずコマンド/ステータス・レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ[相])。エラー−コードが七ノドされていれ
ばステップ・ヘスキノプし、もしエラーコードがセット
されていなければ、次にTSKCHGフラグがセットさ
れているかどうか判定する(ステップ[相])。T S
K CI−I G 7ラグが0″であればステップ0
ヘスキンプ(〜、111 IIであればタスク切換えル
ーチンを実行する(ステップ[相]・、タスク切換えル
ーチンは第22図のフローチャートに詳しく述べられる
)。
ステップ[相]捷だにステップ[相]からスキップして
、あるいはタスク切換えルーチン(ステップ[相])が
実行されてメインルーチンに戻ると、次のコマンド受は
入れ準備を行々い(ステップ■) 、TSK、CHGフ
ラグをリセットする(ステップ○)。そして、ステップ
■に戻り、次のコマンド受は入れ待ち状態となる。
、あるいはタスク切換えルーチン(ステップ[相])が
実行されてメインルーチンに戻ると、次のコマンド受は
入れ準備を行々い(ステップ■) 、TSK、CHGフ
ラグをリセットする(ステップ○)。そして、ステップ
■に戻り、次のコマンド受は入れ待ち状態となる。
上記したようにコマンド処理ルーチンで、TSKCHG
フラグがセット(ゝ’1”)されれば、タスク切換ルー
チンを実行する。第22図のフローチャートにおいて、
タスク切換えルーチンに入ると、まずコマンド1(初期
設定終了および実行開始)の実行時かどうかのチェック
を行なう(ステップ[相])。
フラグがセット(ゝ’1”)されれば、タスク切換ルー
チンを実行する。第22図のフローチャートにおいて、
タスク切換えルーチンに入ると、まずコマンド1(初期
設定終了および実行開始)の実行時かどうかのチェック
を行なう(ステップ[相])。
コマンド1の実行時であればステップ■ヘスギツプし、
以降の処理により、先にコマンド0(初期設定)で登録
したタスクの中から、レディー状態にありかつ優先度の
最も高いタスクを実行させルヘ<マスタCi) U 2
に割込み信号を発生する。
以降の処理により、先にコマンド0(初期設定)で登録
したタスクの中から、レディー状態にありかつ優先度の
最も高いタスクを実行させルヘ<マスタCi) U 2
に割込み信号を発生する。
まず、レディーQの先頭に接続されているタスクのタス
ク制@jブロックTCBをレディーQがら切離しくステ
ップ@l)、このタスク制御ブロックTCB内のタスク
・スタック・ポインタ■(第3図参照)の値を新スタッ
ク・ポインタ・レジスタ5PNK書込む(ステップO)
。そして、タスク制御ブロックTCB内のタスク・ステ
ータス■にRUNフラグをセントして(ステップO)、
マスクCPU2に対して割込み信号INTを発生する(
ステップO)。
ク制@jブロックTCBをレディーQがら切離しくステ
ップ@l)、このタスク制御ブロックTCB内のタスク
・スタック・ポインタ■(第3図参照)の値を新スタッ
ク・ポインタ・レジスタ5PNK書込む(ステップO)
。そして、タスク制御ブロックTCB内のタスク・ステ
ータス■にRUNフラグをセントして(ステップO)、
マスクCPU2に対して割込み信号INTを発生する(
ステップO)。
マスクCPU2は、この割込み信号INTに基づくマス
クCPUZ側のタスク切換え割込みルーチンに」:り新
しいタスクのスタック串ポインタの値を読込み、割込み
ルーチンのリターンと同時にマスクCI) U 2の管
理下においてそのタスクを実行する。
クCPUZ側のタスク切換え割込みルーチンに」:り新
しいタスクのスタック串ポインタの値を読込み、割込み
ルーチンのリターンと同時にマスクCI) U 2の管
理下においてそのタスクを実行する。
コマンド1の実行待以外では、タスクが実行状態かどう
か検査される(ステップ[相])。実行状態でないのは
コマンド5(タスクの停止)の実行時に限られる。実行
状態(RUN状態)のタスク自身がコマンド5を実行す
ると、コマンド処理ルーチンでRUNフラグがセットさ
れ、サスペンド状態(5USPENDフラグセント)と
なっている。
か検査される(ステップ[相])。実行状態でないのは
コマンド5(タスクの停止)の実行時に限られる。実行
状態(RUN状態)のタスク自身がコマンド5を実行す
ると、コマンド処理ルーチンでRUNフラグがセットさ
れ、サスペンド状態(5USPENDフラグセント)と
なっている。
この場合、ステップ[相]ヘスキップし、旧スタック・
ポインタ・レジスタSPBのデータを、今まで実行状態
にあったタスクのタスク制御ブロックT CB内のタス
ク・スタック・ポインタ(Ii領領域再込み、保存する
。この後、ステップ■φ〜Oの処理を通して別のタスク
を実行するだめ、マルチ・タスク制御用素子1からマス
タCPU2に割込み信号を発生する。
ポインタ・レジスタSPBのデータを、今まで実行状態
にあったタスクのタスク制御ブロックT CB内のタス
ク・スタック・ポインタ(Ii領領域再込み、保存する
。この後、ステップ■φ〜Oの処理を通して別のタスク
を実行するだめ、マルチ・タスク制御用素子1からマス
タCPU2に割込み信号を発生する。
タスクが実行状態(RUN状態)であれば、時分割処理
のタイム・アップ時間かどうが検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]ヘスキップする。
のタイム・アップ時間かどうが検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]ヘスキップする。
このスキップルーチンは後に説明する第23図フローチ
ャートのタイマ割込み処理中でしか通らない0 タイム・アップ時でなければ、各タスクのタスク制御ブ
ロックTCB内を調査してレディーQに接続されている
タスクがあるかどうかの検査を行々う(ステップ([相
])。なければ、すなわち、現在実行状態のタスク以外
に実行待ち(レディー)状態のタスクがなければ、第6
図のメインルーチンに戻る。レディーQに接続されてい
るタスクがあれば、次に、実行状態のタスクの優先度と
レディーQの先頭に接続されているタスクの優先度とを
比較する(ステップ@)。実行状態のタスクの優先度の
方が高ければ、同じく第6図のメインルーチンに戻る。
ャートのタイマ割込み処理中でしか通らない0 タイム・アップ時でなければ、各タスクのタスク制御ブ
ロックTCB内を調査してレディーQに接続されている
タスクがあるかどうかの検査を行々う(ステップ([相
])。なければ、すなわち、現在実行状態のタスク以外
に実行待ち(レディー)状態のタスクがなければ、第6
図のメインルーチンに戻る。レディーQに接続されてい
るタスクがあれば、次に、実行状態のタスクの優先度と
レディーQの先頭に接続されているタスクの優先度とを
比較する(ステップ@)。実行状態のタスクの優先度の
方が高ければ、同じく第6図のメインルーチンに戻る。
ステップ■、[有]でメインルーチンに戻れば、割込み
信号INTが発生されず、現在実行中のタスクがその丑
ま実行を続行することとなる0 レディーQの先頭に接続されているタスクの優先度の方
が高ければ、実行中のタスクのタスク制御ブロックTC
Bをレディー遵に接続するとともに、RUNフラグをリ
セットする(ステップ[相])。
信号INTが発生されず、現在実行中のタスクがその丑
ま実行を続行することとなる0 レディーQの先頭に接続されているタスクの優先度の方
が高ければ、実行中のタスクのタスク制御ブロックTC
Bをレディー遵に接続するとともに、RUNフラグをリ
セットする(ステップ[相])。
そして、旧スタック・ポインタ・レジスタSPBのデー
タをタスク・制御ブロックTCBのタスク・スタック・
ポインタの領域に保存しくステップΦ→)、以降のステ
ップ@〜Oの処理を通して割込みを発生させる。なお、
ステップ@〜0において、新l〜く実行状態となる別の
タスク一:、前述したようにレディーQの先頭に接続さ
れているタスクで、コマンド実行等により最も優先度が
高くなったタスクである。割込み信号INTを発生した
後は第6図のメインルーチンに戻り、次のコマンド90
人れ準備を行なう(第6図ステップ[株])。
タをタスク・制御ブロックTCBのタスク・スタック・
ポインタの領域に保存しくステップΦ→)、以降のステ
ップ@〜Oの処理を通して割込みを発生させる。なお、
ステップ@〜0において、新l〜く実行状態となる別の
タスク一:、前述したようにレディーQの先頭に接続さ
れているタスクで、コマンド実行等により最も優先度が
高くなったタスクである。割込み信号INTを発生した
後は第6図のメインルーチンに戻り、次のコマンド90
人れ準備を行なう(第6図ステップ[株])。
第23図、第24図は第6図のメインルーチンに対する
割込み処理ルーチンのフローチャートである。
割込み処理ルーチンのフローチャートである。
第23図はボート3への入力にょる割込み処理で、コマ
ンド5(タスクの停止、第12図フローチャート)によ
−〕て停止状態にあるタスクを外部イベント起動するも
のである。
ンド5(タスクの停止、第12図フローチャート)によ
−〕て停止状態にあるタスクを外部イベント起動するも
のである。
ポート3に入力されている信号の遷移によってこのルー
チンが起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先席順でレディーQに接続しくステップ
O)、そのタスク制御ブロックTCB内の5USPEN
Dフラグをリセッl−,READY フラグをセットす
る(ステップO)○すなわち、これによって停止状態の
タスクが再起動可能状態となるわけで、これが終れば割
込み処理ルーチンからリターンする。
チンが起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックTCBを優先席順でレディーQに接続しくステップ
O)、そのタスク制御ブロックTCB内の5USPEN
Dフラグをリセッl−,READY フラグをセットす
る(ステップO)○すなわち、これによって停止状態の
タスクが再起動可能状態となるわけで、これが終れば割
込み処理ルーチンからリターンする。
第24図はタイマによる割込み処理で、第2図のタイマ
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
タイマTMから内部割込み信号が発生すると、1ず、シ
ステム・クロック領域SCAに登録されている時開の値
(時2分2秒のデータ)を進める(ステップO)。次に
コマンド7(タスクの時分割処理の設定、第7図フロー
チャート)で設定されたレジスタ5LIPRIに登録さ
)2でいる優先度と、現在実行状態のタスクの優先度と
を比較する(ステップO)。時分割処理は指定した優先
度より高いレディー状態のタスクが存在しない場合に限
り有効である。より高い優先度を持つレディー状態のタ
スクが存在すれば、そのタスクが実行jされ時分割処理
は無効となるが、高い優先度のタスクがなくなハ、ば有
効となる。上記ステップOの比較iJ1、レジスタ5L
IPLIに登録されている優先度のタスクが実行中であ
るかどうか検査することと同等であり、時分割処理指定
タスクが実行状態にない場合は直ちに割込み処理ルーチ
ンからリターンする。
ステム・クロック領域SCAに登録されている時開の値
(時2分2秒のデータ)を進める(ステップO)。次に
コマンド7(タスクの時分割処理の設定、第7図フロー
チャート)で設定されたレジスタ5LIPRIに登録さ
)2でいる優先度と、現在実行状態のタスクの優先度と
を比較する(ステップO)。時分割処理は指定した優先
度より高いレディー状態のタスクが存在しない場合に限
り有効である。より高い優先度を持つレディー状態のタ
スクが存在すれば、そのタスクが実行jされ時分割処理
は無効となるが、高い優先度のタスクがなくなハ、ば有
効となる。上記ステップOの比較iJ1、レジスタ5L
IPLIに登録されている優先度のタスクが実行中であ
るかどうか検査することと同等であり、時分割処理指定
タスクが実行状態にない場合は直ちに割込み処理ルーチ
ンからリターンする。
レジスタS L I l) RIに登録されている優先
度と現在実行状態のタスクの優先度と一致、っ丑り、現
在実行状態のタスクが時分割処理指定のタスクであれば
、レジスタ5LICNTで登録されている時間が経過し
だかどうかの判定を行なう(ステップO)。経過してい
なければ、この割込み処理ルーチンからリターンする。
度と現在実行状態のタスクの優先度と一致、っ丑り、現
在実行状態のタスクが時分割処理指定のタスクであれば
、レジスタ5LICNTで登録されている時間が経過し
だかどうかの判定を行なう(ステップO)。経過してい
なければ、この割込み処理ルーチンからリターンする。
すなわち、マルチ・タスク制御用素子1はメインルーチ
ンに戻り次のコマンド受は入れ待ち状態となり、マスタ
CPU2は時分割処理指定の現在実行状態にあるタスク
を続けて実行する。
ンに戻り次のコマンド受は入れ待ち状態となり、マスタ
CPU2は時分割処理指定の現在実行状態にあるタスク
を続けて実行する。
登録された時間が経過したときは、実行状態のタスクの
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセソl−、READYフ
ラグをセントしくステップO)、第22図のタスク切換
えルーチンをコールすル(ステップO)。
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラグをリセソl−、READYフ
ラグをセントしくステップO)、第22図のタスク切換
えルーチンをコールすル(ステップO)。
第22図フローチャートにおいて、時分割処理指定のタ
スクがタイム・アップした場合は、ステップ[相]から
ステップ[相]ヘスキノプする。そしてステップ[相]
〜Oの処理を行なう。これらによって、今才で実行状態
にあったタスクのタスク・スタック・ポインタ■領域に
旧スタック・ポインタ・レジスタSPBのデータを保存
する(ステップ[相])とともに、時分割処理に指定さ
れた同じ優先度を持つタスクのタスク制御ブロックTC
BをレディーQから切離しくステップ・)、このタスク
制御ブロックTCB内のタスク・スタック・ポインタ■
領域のデータを新スクノク・ポインタ・レジスタ5PN
K書込む(ステップO)。そして最後にタスク・ステー
タス・■にRUNフラグをセットする(ステップO)。
スクがタイム・アップした場合は、ステップ[相]から
ステップ[相]ヘスキノプする。そしてステップ[相]
〜Oの処理を行なう。これらによって、今才で実行状態
にあったタスクのタスク・スタック・ポインタ■領域に
旧スタック・ポインタ・レジスタSPBのデータを保存
する(ステップ[相])とともに、時分割処理に指定さ
れた同じ優先度を持つタスクのタスク制御ブロックTC
BをレディーQから切離しくステップ・)、このタスク
制御ブロックTCB内のタスク・スタック・ポインタ■
領域のデータを新スクノク・ポインタ・レジスタ5PN
K書込む(ステップO)。そして最後にタスク・ステー
タス・■にRUNフラグをセットする(ステップO)。
こうしたタスク切換えルーチンを行なったのち割込みか
らリターンする。
らリターンする。
マスタCPU2では上述したマルチ・タスク制御用素子
1の動作により、時分割処理に指定した別のタスクを実
行することとなる。
1の動作により、時分割処理に指定した別のタスクを実
行することとなる。
」−述のように本実施例のマルチ・タスク制御用素子1
は同時に最大8個までのタスクをサポートすることがで
きる。8個を越えるタスクをサポートさせるには、必要
に応じてコマンド2(タスク実行中)、コマンド3(タ
スクの消去)によりタスクを生成、消去し、タスクの入
れ換えを行なえばよい。そして、マルチ・タスク制御用
素子1により各タスクは優先席順にマスタCPU2の占
有権を割当てられる。寸だ、コマンド7(タスクの時分
割処理の設定)により、同一優先度の複数のタスクを時
分割方式でスケ−ジューリングすることも可能である。
は同時に最大8個までのタスクをサポートすることがで
きる。8個を越えるタスクをサポートさせるには、必要
に応じてコマンド2(タスク実行中)、コマンド3(タ
スクの消去)によりタスクを生成、消去し、タスクの入
れ換えを行なえばよい。そして、マルチ・タスク制御用
素子1により各タスクは優先席順にマスタCPU2の占
有権を割当てられる。寸だ、コマンド7(タスクの時分
割処理の設定)により、同一優先度の複数のタスクを時
分割方式でスケ−ジューリングすることも可能である。
なお、各タスクの優先度はタスク生成時に設定されるが
、コマンド6(タスクの優先度変更)によりマスクCP
U2のプログラム実行中にも変更可能である。
、コマンド6(タスクの優先度変更)によりマスクCP
U2のプログラム実行中にも変更可能である。
時分割処理の開始時、タスクの実行順序はコマンドO(
初期設定)またはコマンド2(タスクの生成)により生
成したタスクの順序に従う。タスク実行中でコマンド7
(タスクの時分割処理の設定)を実行す7′1.ば、実
行したタスクの優先度と時分割指定優先度とが等しい場
合には、実行した時点から時分割処理が有効となる。
初期設定)またはコマンド2(タスクの生成)により生
成したタスクの順序に従う。タスク実行中でコマンド7
(タスクの時分割処理の設定)を実行す7′1.ば、実
行したタスクの優先度と時分割指定優先度とが等しい場
合には、実行した時点から時分割処理が有効となる。
コマンド12 (メツセージの送信)+=+マント13
(メソセージの受信)により、マルチ・タスク制御用素
子1のメイル・ボックスMBXを利用してタスク間のデ
ータ(メッセー力の受授が行なえる。
(メソセージの受信)により、マルチ・タスク制御用素
子1のメイル・ボックスMBXを利用してタスク間のデ
ータ(メッセー力の受授が行なえる。
コマンド12を実行した際、実行したタスクよりも高い
優先度を持つタスクが既にコマンド13を実行l−で時
期状態にあれば、タスク切換えにより時期していたタス
クが実行を開始する。低い優先度をもつタスクがコマン
ド13により時期中であれば、そのタスクはレディー状
態になるだけで、本コマンド12を実行したタスクがそ
の−it実行を継続する。コマンド12を実行した際、
コマンド13が実行されていなければ、データ(メツセ
ージ)はメイル・ボックスMBXに保存され、同様にそ
の−ま一土タスクの実行が継続される。
優先度を持つタスクが既にコマンド13を実行l−で時
期状態にあれば、タスク切換えにより時期していたタス
クが実行を開始する。低い優先度をもつタスクがコマン
ド13により時期中であれば、そのタスクはレディー状
態になるだけで、本コマンド12を実行したタスクがそ
の−it実行を継続する。コマンド12を実行した際、
コマンド13が実行されていなければ、データ(メツセ
ージ)はメイル・ボックスMBXに保存され、同様にそ
の−ま一土タスクの実行が継続される。
コマンド12が実行されていない時に、同一メイルボッ
クスMBXに対して複敬のタスクがコマンド1:3を実
行すれば、コマンド13を実行したタスクの順番に時期
状態となる。コマンド12が実行されれば、時期状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド]3を実行した際、既に指
定したメイル・ボックスMBXにデータ(メソセージ)
が届いている場合には、そのタスクがコマンド・パラメ
ータ・レジスタCPIOより、直ちに届いているデータ
(メツセージ)を読出すことができる。
クスMBXに対して複敬のタスクがコマンド1:3を実
行すれば、コマンド13を実行したタスクの順番に時期
状態となる。コマンド12が実行されれば、時期状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド]3を実行した際、既に指
定したメイル・ボックスMBXにデータ(メソセージ)
が届いている場合には、そのタスクがコマンド・パラメ
ータ・レジスタCPIOより、直ちに届いているデータ
(メツセージ)を読出すことができる。
また、コマンド13の時期機能を利用すれば、タスク間
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが可能である。なお、タスク間の同期お
よび相互排除において、メイル・ボックスMBXに書込
1れるデータd[ダミーデータで、実際のタスク処理に
は使用されないものとする。
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが可能である。なお、タスク間の同期お
よび相互排除において、メイル・ボックスMBXに書込
1れるデータd[ダミーデータで、実際のタスク処理に
は使用されないものとする。
2個のタスクが処理の都合」二、実行順序を制御しなけ
ればなら=ない場合がある。例えば、一方のタスクの処
理が終了する1で他方のタスクの処理を行なわず待たぜ
る場合、コマンド12.コマンド13を次のように利用
してお互いの同期をとることができる。
ればなら=ない場合がある。例えば、一方のタスクの処
理が終了する1で他方のタスクの処理を行なわず待たぜ
る場合、コマンド12.コマンド13を次のように利用
してお互いの同期をとることができる。
■ タスク2、コマンド13を実行。タスク2はメツセ
ージ未着のため時期状態となる。
ージ未着のため時期状態となる。
■ タスク1の処理■をタスク2の処理■よりも先に実
行する。
行する。
■ タスク1、コマンド12を実行。タスク2の処理H
の実行を許可する。
の実行を許可する。
■ タスク2の処理口を実行。
次に、相互排除であるが、複数のタスクが1つの共通の
資源、例えば■10.メモリ等を利用する」二で同時利
用を禁止する必要がある場合がある。
資源、例えば■10.メモリ等を利用する」二で同時利
用を禁止する必要がある場合がある。
例として、プリンタの同時使用を禁止する場合、次のよ
うにして互いに排除することができる。
うにして互いに排除することができる。
■ タスク1、コマンド12を実行O
■ タスク1、コマンド13を実行。既にコマンド12
が実行されているため時期状態にはならず、排他部分を
ロック0 ■ タスク2、コマンド13を実行Oこのコマンド13
によりタスクは時期状態と々る。
が実行されているため時期状態にはならず、排他部分を
ロック0 ■ タスク2、コマンド13を実行Oこのコマンド13
によりタスクは時期状態と々る。
■ タスク1、プリンタ使用。
■ タスク1、コマンド12を実行0排他部分のロック
解除、同時にタスク2の排他部分をロックO ■ タスク2、プリンタ使用。
解除、同時にタスク2の排他部分をロックO ■ タスク2、プリンタ使用。
■ タスク2、コマンド12を実行、排他部分のロック
解除。
解除。
上述のようにしてタスク間の同期および相互排除を行な
うこともできる。
うこともできる。
なお、本実施例におけるマルチ・タスク制御用素子1は
ハードウェアを1個のLSI上に集積化したものである
が、適宜回路要素を組合ぜ、装置とするようにして何ら
差支えない。
ハードウェアを1個のLSI上に集積化したものである
が、適宜回路要素を組合ぜ、装置とするようにして何ら
差支えない。
・、−発明の効果〉
以上のように本発明のデバイスによれば、簡単に各タス
クのメモリ管理を行なうことができ、またマスクCPU
側のメモリ管理のだめのソフトウェアの色相をす(匪に
軽減できる。
クのメモリ管理を行なうことができ、またマスクCPU
側のメモリ管理のだめのソフトウェアの色相をす(匪に
軽減できる。
第1図は本発明のデバイスを使用したシステム構成例を
示す図、第2図は本発明の一実施例におけるデバイスの
内部構成例を示すブロック図、第3図は第2図のタスク
制御ブロックTCB領域を説明する図、第4図1は第2
図のメモリ・マツプMEMMAP領域を説明する図、第
5図は本デバイスで使用されるコマンドと入カパシメー
クお」:び出力パラメータを説明する図、第6図d本デ
バイスのメインルーチンの動作を説明するフローチャー
1・、第7図〜第21図は各コマンドによる処理ルーチ
ンの動作を説明するフローチャート、第22図はタスク
切換ルーチンの動作を説明するフローチャート、第23
1ソIQ、1イベント入力による割込5グ処理ルーチン
の動flを説明するフローチャート、第24図はタイマ
割込み処理ルーチンの動作を説明するフローチャートで
ある。 1−・・マルチ・タスク制御用素子、2・マスクCPU
、3・・・プログラム・メモリ 、6・・データ・メ
モIJ、INTC・割込み制御回路、丁NT・割込み信
号、MEMMAP メモリ領域、TCB タスク制御ブ
ロック、C0NT 内部演算制御回路。 MIV・マスク割込み制御レジスタ、CPIO・・コマ
ンド・パラメータ・レジスタ、CN5T・コマンド/ス
テータス・レジスタ、SPN・・新スタック・ポインタ
・レジスタ、SPB・旧スタック・ポインタ・レジスタ
。 代理人 弁理士 福 士 愛 彦(他2名)竿、6咲 浄7 図 ′″frlOt21 浄+ /2(7) ?h、 74 図 手、16図 筆151X1 第17 CA !ニニーッ 第B図 第20シ1
示す図、第2図は本発明の一実施例におけるデバイスの
内部構成例を示すブロック図、第3図は第2図のタスク
制御ブロックTCB領域を説明する図、第4図1は第2
図のメモリ・マツプMEMMAP領域を説明する図、第
5図は本デバイスで使用されるコマンドと入カパシメー
クお」:び出力パラメータを説明する図、第6図d本デ
バイスのメインルーチンの動作を説明するフローチャー
1・、第7図〜第21図は各コマンドによる処理ルーチ
ンの動作を説明するフローチャート、第22図はタスク
切換ルーチンの動作を説明するフローチャート、第23
1ソIQ、1イベント入力による割込5グ処理ルーチン
の動flを説明するフローチャート、第24図はタイマ
割込み処理ルーチンの動作を説明するフローチャートで
ある。 1−・・マルチ・タスク制御用素子、2・マスクCPU
、3・・・プログラム・メモリ 、6・・データ・メ
モIJ、INTC・割込み制御回路、丁NT・割込み信
号、MEMMAP メモリ領域、TCB タスク制御ブ
ロック、C0NT 内部演算制御回路。 MIV・マスク割込み制御レジスタ、CPIO・・コマ
ンド・パラメータ・レジスタ、CN5T・コマンド/ス
テータス・レジスタ、SPN・・新スタック・ポインタ
・レジスタ、SPB・旧スタック・ポインタ・レジスタ
。 代理人 弁理士 福 士 愛 彦(他2名)竿、6咲 浄7 図 ′″frlOt21 浄+ /2(7) ?h、 74 図 手、16図 筆151X1 第17 CA !ニニーッ 第B図 第20シ1
Claims (1)
- 1 マスタCPUにより実行される複数のタスクの管理
を上記マスタCPU以外で行なうデノくイスであり、」
二記各タスクの使用するワーク・メモリを管理するだめ
のメモリ領域を有し、上記マスタCP Uにより実行中
のタスクから発行されるコマンドに従い、上記メモリ領
域の状況に応じ使用中か否かを判断し、タスクから要求
さ才またサイズの′)′F、き領域を探し出してタスク
に割旧は制御する手段を備えてなることを特徴とするマ
ルチ・タスクtlil制御用デバイス。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22812183A JPS60118937A (ja) | 1983-11-30 | 1983-11-30 | マルチ・タスク制御用デバイス |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP22812183A JPS60118937A (ja) | 1983-11-30 | 1983-11-30 | マルチ・タスク制御用デバイス |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS60118937A true JPS60118937A (ja) | 1985-06-26 |
JPH0376500B2 JPH0376500B2 (ja) | 1991-12-05 |
Family
ID=16871537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP22812183A Granted JPS60118937A (ja) | 1983-11-30 | 1983-11-30 | マルチ・タスク制御用デバイス |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS60118937A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6272275A (ja) * | 1985-09-25 | 1987-04-02 | Sony Corp | ビデオテツクス端末装置 |
JPS63226762A (ja) * | 1987-03-16 | 1988-09-21 | Hitachi Ltd | デ−タ処理方式 |
JP2006513493A (ja) * | 2003-01-09 | 2006-04-20 | エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション | フリーバッファプールを使用することによるメモリの管理 |
US10528476B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5652447A (en) * | 1979-10-02 | 1981-05-11 | Nec Corp | Working set control system |
JPS5730068A (en) * | 1980-07-30 | 1982-02-18 | Fujitsu Ltd | Data processing system |
-
1983
- 1983-11-30 JP JP22812183A patent/JPS60118937A/ja active Granted
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5652447A (en) * | 1979-10-02 | 1981-05-11 | Nec Corp | Working set control system |
JPS5730068A (en) * | 1980-07-30 | 1982-02-18 | Fujitsu Ltd | Data processing system |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6272275A (ja) * | 1985-09-25 | 1987-04-02 | Sony Corp | ビデオテツクス端末装置 |
JPS63226762A (ja) * | 1987-03-16 | 1988-09-21 | Hitachi Ltd | デ−タ処理方式 |
JP2006513493A (ja) * | 2003-01-09 | 2006-04-20 | エミュレックス・デザイン・アンド・マニュファクチュアリング・コーポレーション | フリーバッファプールを使用することによるメモリの管理 |
US10528476B2 (en) | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
Also Published As
Publication number | Publication date |
---|---|
JPH0376500B2 (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 | |
JP5367816B2 (ja) | オペレーションの保護モードスケジューリング | |
EP1628214A2 (en) | Systems and methods for implementing an operating system in a virtual machine environment | |
JPS6031648A (ja) | マルチ・タスク制御方法 | |
EP1461698A2 (en) | Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations | |
JPS646488B2 (ja) | ||
JPH0997189A (ja) | 共有資源の排他制御方式 | |
JPH0533410B2 (ja) | ||
JP3113841B2 (ja) | 並列トランザクション処理システム | |
CA1304513C (en) | Multiple i/o bus virtual broadcast of programmed i/o instructions | |
JPS60118937A (ja) | マルチ・タスク制御用デバイス | |
JP2693916B2 (ja) | タスクスケジュール方法 | |
JPH0376497B2 (ja) | ||
JPH0348538B2 (ja) | ||
CN108958904B (zh) | 嵌入式多核中央处理器的轻量级操作系统的驱动程序框架 | |
JPH0376499B2 (ja) | ||
Goossens et al. | Run-time middleware to support real-time system scenarios | |
JPH0376498B2 (ja) | ||
JP2579008B2 (ja) | 時分割マルチタスク実行装置 | |
JPH06282446A (ja) | ジョブスケジュール作成方法 | |
JPS60114942A (ja) | マルチ・タスク制御用デバイス | |
JPS60163133A (ja) | マルチ・タスク制御素子 | |
JP2571260B2 (ja) | 論理時計による動作環境選択処理方式 | |
CN118426964A (zh) | 芯片验证任务的分发方法、处理方法、系统存储介质 | |
JPS60215249A (ja) | マルチ・タスク制御素子を内蔵したコンピユ−タ周辺装置 |