JPS60114942A - マルチ・タスク制御用デバイス - Google Patents

マルチ・タスク制御用デバイス

Info

Publication number
JPS60114942A
JPS60114942A JP22295183A JP22295183A JPS60114942A JP S60114942 A JPS60114942 A JP S60114942A JP 22295183 A JP22295183 A JP 22295183A JP 22295183 A JP22295183 A JP 22295183A JP S60114942 A JPS60114942 A JP S60114942A
Authority
JP
Japan
Prior art keywords
task
command
time
executed
priority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP22295183A
Other languages
English (en)
Inventor
Toshimitsu Nakade
中出 敏光
Masaru Kuki
九鬼 優
Hirotake Hayashi
林 裕丈
Takaaki Uno
鵜野 高明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP22295183A priority Critical patent/JPS60114942A/ja
Publication of JPS60114942A publication Critical patent/JPS60114942A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 く技術分野〉 本発明は、マイクロコンピュータのシステム管理プログ
ラムに有効なマルチ・タスク制御用機能を内蔵したコン
ピュータ周辺デバイスに関するものである。
〈従来技内〉 マイクロコンピュータ−システムにおいて、1つのCP
Uによって複数のタスクを同時に処理させるためには、
コンピューターシステムのO8(オペレーティングΦシ
ステム〕によるマルチ・タスク制御が必要である。
マルチ書タスク制御システムにおいて、タスクノ時間制
御を行なうためには、システム・クロックを動作させる
ことが必要条件である。従来、上記lフトウェアによる
O8では、タイマ用外部素子を外付けし、外部タイマか
らの割込みをもとにして、時計の管理やタスクの時間制
御を行なっていた。そのため、システムの回路上にタイ
マ素子が余分に必要であり、またソフトウェアによる時
計の管理およびタスクの制御は複雑で、マスタCPUの
大きな負担となっていた。また、時計用素子もあるが、
これは時計そのものの機能しかもたず、この素子だけで
はタスクの時間制御(@えば複数のタスクの時分割処理
等)(ま不可能であった。
〈発明の目的〉 本発明は、タイマは本デノ〜イスに内蔵されており、外
部タイマ素子の外付けか不要となるため、システムのス
ペースファクタか向上する。また。
本デバイスにより時計の処理およびタスクの時間制御を
マスタCPUのソフトウェアでサポートする必要かなく
、ソフトウェアの負担を軽減できる。
〈実施例〉 以下図面に従って本発明の一実施例を説明する。
第1図はマイクロコンピュータ・システムとしての構欣
例を示す図である。素子(又は装置)1は、本発明に係
るマルチ・タスク制御を実現するための独立したマルチ
・タスク・サポート・プロセッサとして構成されたもの
であり、他の周辺デバイスと同様、入出力素子の形態で
供給される。
以下本デバイスをマルチ・タスク制御用素子と呼ぶ。マ
スタCPU2.プログラム・メモリ(ROM)3、デー
タ・メモリ(RAM)4及び他のI/10等の周辺入出
力素子5は、周知のマイクロコンピュータ・システムと
しても具備されるものであり、マルチ・タスク制御用素
子1とともにバス6を介して相互に接続される。プログ
ラム・メモリ3は、マルチ・タスク制御用素子Iの初期
化プロクラムと複数のタスクをそれぞれ独立してプロク
ラムしている。
マルチ・タスク制御用素子1は、マスタCPU2により
実行されるこれら複数のタスクの包理をマスタCPU2
以外で行なう独立機能素子であり、タスクのスケジュー
リンク機能(優先夏順又は時分割による実行タスクの切
換え)、タスク間の同期・通信機能(各タスク間でデー
タの送受信を行ない、タスクの実行中継、実行再開を決
定)、メモリ管理機能(各タスクの使用メモリ領域の重
複使用の禁止)97時計機能(内蔵タイマによる時刻の
セント)等を有している。つまり、このマルチ・タスク
制御用索子lは、マルチ・タスクの制御機能をコンピュ
ータ・システムのO8自身のもつ機能とせず、その機能
を有する周辺デバイスとした点に特色がある。
第2図はマルチ・タスク制御用素子1の内部構成例を示
すブロック図である。
マルチ・タスク制御用索子lはマスタCPU2からアク
セス可能なレジスタ群を備えてG)る。
コマンド・パラメータ・レジスタCPIOii、マスタ
CPU2からコマンド実行時に入力する。<ラメータや
、実行後に出力するノぐラメータをイ呆持する。コマン
ド/ステータス・レジスタCN5Tは書込み時にはコマ
ンド書込み用として、読出し時には実行したコマンドの
実行情報を格納するIこめのレジスタとして機能する。
新スタ・ツク°ポインタ・レジスタSPNは、タスク切
換え情報としてこれから新らたに実行状態となるタスク
のスタック・ポインタの値を出力するためのレジスタで
ある。また旧スタック・ポインタ・レジスタSPBは、
タスク切換え情報として今まで実行状警音こあったタス
クのスタック・ポインタの1直を入力するためのレジス
タである。
マスク割込み制御レジスタMICは本素子1における、
マスタCPU2に対する割込み発生を制御するためのレ
ジスタで、割込みベクターレジスタMIVは割込みベク
タ値を書込む。データ・レジスタPID、P2D、P3
Dはポートlアポート2およびポート3のデータ人出力
のjこめのレジスタである。ポート1とポート2cマデ
ータ入出力方向をプログラムによってビット単位で設定
てきる8ビツト出力ポートであり、ポート3Cま1ヒ゛
ノドの入力ポートである。ポート36マプロク゛ラムに
よってイベント人力(ポート3への入力(g号の遷移に
より停止状態のタスクをレディー状態に移1−)にセン
トすることが1」能である。
以上のレジスタ群はマスタCP tJ 2 ;IJ−ら
アクセスされて、本素子1とマスタCPU2との1刊1
て11′青報を相互に交換するために用0られる。デー
タ・バス・インターフェイスDBI、/Xス・タイミン
グ発生・制御回路BTGC,割込み制御回ν谷■NTC
は、マスクCPtJ 2とのインターフェイス]用路と
して備えられたものである。
タスク制御ブロックTCB(1〜8)(まタスクの状態
を保存するためのメモIJ 領域である。ここでは8つ
までのタスクを取扱うこと力fpJ有しである。
各ブロックは第3図に示されるように、タスク・ステー
タス■、タスク優先没■、先にレディーQに接続されて
いるタスクの番号■、後にレディーQにff14Nされ
ているタスクの番号■、タスクか占有しているワーク・
メモリの先頭アドレス■、そのサイズの、使用している
メイル・ボックス番号ω、そしてタスク実用中継時のス
タック・ポインタ値■を格納する領域を有している。
メイル・ボックスMBXはタスク間でデータの授受を行
なえるよう設けられたバッファ・メモリ領域である。
メモリ・マツプMEMMAPはワーク・メモリを管理す
るためのメモリ領域であり、例えば第4図のように32
バイトから構成される。メモリ・マツプM E M M
 A Pにより64にバイト単位のワーク・メモリを管
理することが可能である。ワーク・メモリを使用してい
ないときその領域に対応するヒントは“0″で、占有中
であるときはそのビットか′1″にセントされる。
タイマTMは時分割処理(同一優先度のタスクを一定時
間缶に実行させる処理)等のために、素子1内に割込み
信号を発生させるもので、システムクロック領域SCA
は同時にタイマ′l″NIの出力により計数される時2
分2秒等の時刻データを格納するメモリ領域である。
内部顔算制向回路C0NTは論理演算ユニット(ALU
)、本素子1のプロクラムを格納するROM 、一時記
憶用のRAMおよび各種制御のためのフラク用レジスタ
等を有してなる。
マスタCPU2からマルチ・タスク制御用索子1へのア
クセスは、実行中のタスクから発行されるコマンドによ
って行なわれ、マルチ・タスク制御用素子1からマスタ
CPU2へのアクセスは、マルチ・タスク制御用素子1
の割込み信号発生に基ついて行なわれる。第5図はコマ
ンドの種類と入力パラメータおよび出力パラメータを示
す図である。
基本的動作としては次のとおりである。なお、タスク制
御ブロックTCBには各タスクの状態か既に保存されて
いるものとする。
マルチ・タスク制御用索子lは、実行可能状態のタスク
から優先度の一番尚いタスクを選ひ出し、登録されたそ
のタスクのスタック・ポインタの値を新スタック・ポイ
ンタ・レジスタSPNに準備する。スタック・ポインタ
の値を準備した後、マルチ・タスク制御用素子lはマス
タCPU2に対し割込みを発生する。マスタCPU2は
割込み処理ルーチンを実行し、マルチ・タスク制御用素
子1にセントされているスタック・ポインタの偏を自分
のスタック・ポインタにロードし、予じめ書込まれてい
たレジスタの初期価をスタックからポンプしてレジスタ
を書換える。そしてマスタCPU2の官理下において指
ボされたタスクを実行する。
実行中のタスクからコマンド人力かあるか、またはタイ
マTMあるいはポート3への入力による割込みかあるま
で、マルチ・タスク制御用素子Iは待ぢ状態となる。こ
こで例えはコマンド入力があれは、マルチ・タスク制御
用素子lはそのコマ?・ドを解析しコマンド処理を行な
う。そして、このコマンドがタスク切換え機能を含むも
のであれば、次に切換えるへきタスクのスタック・ポイ
ンタの値を新スタック・ポインタ・レジスタSPNにセ
ットし、マスタCPU2に対し割込みを発生する。この
割込みによってマスタCPU2は現在実行中のタスクの
実行を停止し、次に実行すべきタスクのスタック・ポイ
ンタの価をマルチ・タスク制御用素子Iから読出す。
以下フローチャートを参照してさらに詳しく説明する。
第6図はマルチ・タスク制御用索子1のメインルーチン
の動作を説明するフローチャート、第7図〜第21図は
各コマンド0〜14による処理ルーチンの動作を説明す
るフローチャー)、第22図はタスク切換えルーチンの
動作を説明するフローチャート、第23図はポート3へ
のイベント入力による割込み処理ルーチンの動作を説明
するフローチャート、第24図はタイマTMによる割込
み処、理ルーチンの動作を説明するフローチャートであ
、る。
第6図において、システムに電源か投入されると、本マ
ルチ・タスク制御用系子lはリセット動作を行ない内部
の各機能素子を初期化する(ステップ■)。そして、マ
スタCPU2からコマンドかコマンド/ステータス・レ
ジスタCN5Tに書込まれるのを待つ(ステップ■)。
コマンドか書込まれると、各コマンド・コードに対応し
たコマンド処理を行なう(ステップ■)。
コマンド0(コマンド名: INIT 、ar図ラフロ
ーチャートは、マルチ・タスク制御用素子lの初期化を
行なうためのコマンドであり、マルチ・タスク制御用系
子1かマスタCPU2に対して割込みを発生するときに
マスタCPU2へ出力するベクタ値、マルチ・タスク制
御用系子lか1理するワーク・メモリ領域の先頭アドレ
スとその大きさ、及びタスクの優先度を各タスクに対し
て登録するためのコマンドである。
このコマンドか実行されると、入力データのエタス・レ
ジスタCN5Tにセントする(ステップ■)。
人力データに誤りかなければ、コマンド・パラメータ・
レジスタCPIOに送られたデータから、割込みベクタ
値を割込みへフタレジスタMIVに書込み(ステップ■
)、またワーク・メモリ領域の先頭アドレスとその大き
さのデータをもとにしてメモリ・マツプMEMMAPk
初ル1化する(ステップ■)。そして、1込まれたタス
クの優先度をもとにして各タスク制御ブロックTCBを
作成する(ステップ■)。そして、優先度の高い順に並
へてレディーQを構成する(ステップ■)。このとき、
タスク制御ブロックTCB内の■、■によって順序っけ
を行なう。生成後は正常終了コードをコマンド/ステー
タス・レジスタCN5Tにセントしくステップ[相])
、内部演算制御回路C0NTのTSKCHGフラグをリ
セットして(ステップ■)、第6図のメインルーチンに
戻ル。
エラーコードをコマンド/ステータス・レジスコマンド
l(コマンド名:TsTk 、%8図フローチャート)
は、初期化したマルチ・タスク制御用系子Iを実行状態
に移すためのコマンドである。
このコマンド1では、コマンドOの処理が実行済かどう
かのチェックを行ない(ステップ@)、実行済の場合の
み、レディーQの先頭に接続されているタスク(一番優
先度の商いタスク)を実行状態に移すためTSKCHG
フラク(内フラ算制御回路C0NTの制御フラグ)をセ
ットして(ステップ■)、第6図のメインルーチンに戻
る。実行済でない場合は、コマンド/ステータス・レジ
スタCN5Tにエラーコードをセントしくステップ0)
、メインルーチンに戻る。
以上のコマンド0,1およびマルチ・タスク制御用素子
1への書込み情報は、例えは第1図のプロクラム・メモ
リ3の初期化プロクラムに予じめ格納され、タスク自答
に応じてプロクラムに史か■」能であり、マルチ・タス
ク制御用素子1はこれにより種々に初期化設定すること
ができる。
コマンド2(コマンド名:TcRT、Nj9図タイタイ
ムチャート初期設定の後、任怠にタスクを生成するため
のコマンドであり人力データとして生成するタスクの番
号およびその優先度か本索子lのコマンドφパラメータ
・レジスタCPIOに書込まれる。
このコマンド2か実行されると、人力データにエラーが
ないかの検査を行ない(ステップ[相])、エラーかあ
ればコマンド/ステータス・レジスタCN5Tにエラー
コードを書込む(ステップ0)。
エラーがなけれは、人力データで指定されたタスクのタ
スク制御ブロックTCBを生成する(ステップ■)。
タスク制御ブロックTCB中のタスク・ステータス■(
第3図参照)には次の4つのフラグか含まれる。
RUNフラグはタスクか実行状態にあることを示す。
READYフラグはタスクがレディー状態にあ凧てレデ
ィーQに接続されていることをホす。
PENDWENDフラグージ受信待ち状態にあることを
示す。
5USI)ENDフラグはタスクが停止状態にあること
を示す。
上記タスク制御ブロックTCBの生成時(ステップ@)
、同時にその甲のREADYフラグをセットする。
そして、タスクの優先度か商い順にレディーQに再接続
する(ステップ[相])。次にコマンド/ステータス・
レジスタCN5Tに正常終了コードをセントしくステッ
プ[相])、実行状態のタスクとレディー〇の先頭に接
続されているタスクの優先度を比較させるためのTSK
CHGフラグをセントして(ステップ[相])、第6図
はメインルーチンに戻る。
コマンド3(コマンド名: TDEL 、 第10図り
として実行する。
入力データにエラーかないかの検量(ステップ■)にお
いて、エラーかあれはコマンド/ステータス−レジスタ
CN5Tにエラーコードかセットされ(ステップ[相]
)、第6図のメインルーチンに戻る。
エラーがなければ、消去するタスクか占有していたワー
ク・メモリを解放するため、このタスクのタスク制御ブ
ロックTCB中にある占有メモリ先頭アドレス■および
占有メモリ・サイズのを読出し、このデータに基ついて
メモリ・マツプMEMMAP上で対応した領域を°゛0
″0″クリアステップ[相])。ついでこのタスクかレ
ディー状態にあれは、消去するタスクのタスク制御ブロ
ックTCBをレディーQから切離しくステップ[株])
、このタスク制御ブロックTCBのすへてをクリアする
(ステップ[相])。終われば、コマンド/ステータス
・レジスタCN5Tに正常終了コードをセットして(ス
テップ[相])、メインルーチンに戻る。
コマンド4(コマンド名:TR8M、il1区1フロー
チャート)は、入力データで指定されたタスク番号を持
つ持切または停止中のタスクをレディー状態(再起動1
」能状態)にするためのコマンドである。タスク番号を
人力データとして実行する。
コマンド4か実行されると、まず人力データにエラーか
ないかの検量か行なわれ(ステップ[相])、エラーが
あれはコマンド/ステータス・レジスタCN5Tにエラ
ーコードを設定して(ステップ[相])、メインルーチ
ンに戻る。
エラーかなけれは、指定されたタスクのPENDWEN
DフラグUSPENDフラクをリセットするとともにR
EADYフラグをセットし、かつこのタスク制御ブロッ
クTCBをタスクの優先度の尚い順序でレディーQに接
続する(ステップ[相])。そして、正常終了コードを
コマンド/ステータス・レジスタCN5Tにセットしく
ステップ[相])、実行状態のタスクとレディーQの先
頭に接続されているタスクの優先度を比較するためTS
KCHGフラクをセフラしくステップ[株])メインル
ーチンに戻る。
コマンド5(コマンド名:TsPD、ml 211フロ
ーチヤート〕は、人力データで指定されたタスク番号を
持つ実行状態あるいはレディー状態にあるタスクを停止
状態にするためのコマンドである。
このコマンド5が実行されると、人力データのエラーを
検査し、エラーがあれはコマンド/ステータス・レジス
タCN5Tにエラーコードを設定してメインルーチンに
戻る(ステップ[相]、[相])。
エラーかなけれは、まず、人力データによって、停止状
態になるタスクをポート3からの入力信号(外部イベン
ト)によりレディー状態にする(再起動)という指定が
されているかどうかのチェックを行なう(ステップ[有
])。外部イベントの指定かなけれはステップ■の処理
へスキップする。指定かある場合は、他のタスクが既に
外部イベントを使用しているかどうかの検査を行ない(
ステップ[相])、使用されていれは、コマンド/ステ
ータスΦレジスタCN5Tにエラーコードをセントして
(ステップ[相])メインルーチンに戻る。使用されて
いなけれは、ボート3の入力信号の遷移による内部割込
みをイネーブルに】−る(ステップ[相])。
すなわち、本コマンド5の人力データ設定により外部イ
ベント起動の指定か1」能である。
そして、スキップした場合を含めて次に、そのタスク制
御ブロックTCB中のRUNフラグ(指定したタスクか
実行状態にある場合)またはREADYフラグ(レディ
ー状態にある場合)をリセットし、5USPENDフラ
グをセットする(ステップO)。終われは、コマンド/
ステータス・レジスタCN5Tに正常終了コードをセン
トする(ステップ[相])。そして指定されたタスクが
レディー状態にある場合を考慮して、このタスクをレデ
ィーQから切離し、レディーQに接続されているタスク
制御ブロックTCBを再度優先夏順にならひ換え(ステ
ップ[相])、実行状態のタスクとレディーQの先頭に
接続されているタスクの優先度を比較するためのTSK
CHGフラグをセットして(ステップ[相])、メイン
ルーチンに戻る。
コマンド6(コマンド名:TPRI 、第18図タイム
チャート)は、入力データで指定された番号のタスクの
優先度を変更するコマンドである。
人力データにエラーかあるかの検宜(ステップo)にお
いて、エラーかある場合はコマンド/ステータス−レジ
スタCNS Tにエラーコードをセントして(ステップ
O)メインルーチンに戻る。
エラーかない場合、指定されたタスクのタスク1′理ブ
ロツクTCB内の優先度■(第3図参照)を人力データ
の変更優先度の値に書換える(ステップ0)。次に、レ
ディーQに接続されているタスク管理ブロックTCBを
優先度胆にならひ換え(ステツー1o)、コマンド/ス
テータ・レジスタCN5Tに正常終了コードをセントす
る(ステップ[相])。そして、実行状態のタスクとレ
ディーQの先頭に接続されているタスクの優先度を比較
するためにTSKCHGフラグをセントして(ステップ
[相])、メインルーチンに戻る。
コマンド7(コマンド名:TSLI 、第14図フロー
チャート)は、人力データで指定された優先度を持つタ
スク群のマスタCPU占有時間を制限するためのコマン
ドである。すなわち、このコマンドは同−優先度のタス
クの時分割処理を指定する。時分割処理は、指定した優
先度より高い優先度ケ持つレディー状態のタスクか存在
しない場合に限り有効である。より尚い侵先lf:を持
つレディー状態のタスクか存在すれば、そのタスクが実
行され時分割処理は無効となるが、高い優先度のタスク
がなくなれは有効となる。
このコマンド7が実行されると、まず、入力データのエ
ラーが検査される(ステップO)。エラーか検出された
場合は、コマンド/ステータス・レジスタCN5Tにエ
ラーコードかセットされ−(ステップ[相])、メイン
ルーチンに戻る。
エラーか検出されなけれは、入力データか時分割処理を
キャンセルする指定であるのかどうかを判定する(ステ
シブ@)。キャンセルの場合は、内部演算制御回路C0
NT内にある時分割制御用レジスタ5LICNTおよび
5LIPRIをゝ゛0″0″クリアステップ[相]、(
ロ))。人力データが新たに時分割処理の設定を指定1
−る場合は、その入力データからタスクのCPU占有時
間を制御用レジスタS L I CNTに設定しくステ
ップ[相])、時分割処理を行なうタスクの優先度をも
う一つの制御用レジスタ5LIPRIに設定する(ステ
ップ・)。
そして最後にコマンド/ステータス・レジスタCN5T
に正常終了コードをセントして(ステップo)メインル
ーチンに戻る。
コマンド8(コマンド名:C3ET、第15図フローチ
ャート)は、マルチ・タスク制御用素子1内に設けられ
た時計に時刻を設定するためのコマンドである。マスタ
CPU2から本糸子l内のコマンド−パラメーターレジ
スタCPIOに、人力データとして時2分1秒データを
書込みコマンドを実行する。
入力データのエラーが検査されて(ステップ[相]入エ
ラーが検出された場合はコマンド/ステータス・レジス
タCN5Tにエラーコードがセントされて(ステップ[
相])、メインルーチンに戻る。
エラーがなけれは、システム−クロック領域SCAに時
2分2秒のデータが移される(ステップO)。そしてコ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットして(ステップ[相])メインルーチンに戻
る。この時計は後述するタイマ割込みルーチンにより刻
々計時される。
コマンド9(コマンド名: CGENT、第16図フロ
ーチャート)は、上記の時計から現在の時刻を読出子た
めのコマンドである。
このコマンド9が実行されると、システム・クロック領
域SCAから時1分2秒のデータが、マスタCPU2か
らアクセス可能なコマンド・パラメータ・レジスタCP
IOに移される。移した後はコマンド/ステータス・レ
ジスタCN5Tに正常終了コードをセットして(ステッ
プ[相])メインルーチンに戻る。
コマンド10(コマンド名: MALC、第17図フロ
ーチャート)は、マルチ・タスク制御用素子1が1理し
ているワーク・メモリ領域の中から、コマンドを実行し
たタスクに対して要求されたサイズのワーク・メモリの
使用を許i」するコマンドである。コマンド・パラメー
タ・レジスタCPIOに要求するワーク・メモリ数(1
00H単位)を沓込みコマンドを実行する。
コマンドIOか実行されると、人力データのエラー検出
が行なわれる(ステソプリ)。エラーか検出されれば、
コマンド/ステータス・レジスタCN5Tにエラーコー
ドをセットして(ステップ[相])メインルーチンに戻
る。
エラーか検出されなけれは、メモリ・マツプMEMMA
Pを調査し、要求されたワーク・メモリが空いているか
どうかのチェックを行なう(ステップ・)。空き領域が
なけれはコマンド/ステータス・レジスタCN5Tにメ
モリ占有不i」コードをセントして(ステップ[相])
、メインルーチンに戻る。荒き領域が見つかれば、コマ
ンドを実行したタスクが要求したサイズたけメモリ・マ
ツプM E M M A P上の対応したビットにl 
″をセントする(ステップ0)。そして、コマンドを実
行したタスクのタスク制御ブロックTCB内の占有メモ
リ先頭アドレス■および占有メモリ・サイズ■の領域(
第3図参照)にそれぞれの値を設定し覧(ス、テップ[
相])、次にコマンド・パラメータ・レジスタCPIO
に占有メモリ・先頭アドレスヲ個込む。書込まれは、コ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセットしくステップ[相])メインルーチンに戻る
コマンド+1(コマンド名:MREL、第18図フロー
チャート〕は、占有していたワーク・メモIJ In域
を開放するためのコマンドである。
コマンド11を実行したタスクかワーク・メモリを占有
ルていなけれは(ステップ[相])、コマンド/ステー
タス・レジスタCN5Tにエラーコードをセントして(
ステップ[相])メインルーチンに戻る。
既にワーク・メモリが占有されていれは、コマンドを実
行したタスクのタスク制御ブロックTCB内に登録され
ている占有メモリ先頭アドレス■および占有メモリ・サ
イズ■の領域の値を参照し、メモリ・マツプMEMMA
P上の対応したビットを” o ”にリセットする(ス
テップ0)。そして、タスク制御ブロックTCB内の占
有メモリ先頭アドレス0及び占有メモリ・サイズ■の領
域をクリアする(ステップ@)。最後にコマンド/ステ
ータス・レジスタCN5Tに正常終了コードをセットし
て(ステップ[相])、メインルーチンに戻る。
上述のようにタスクからメモリを要求する場合には、マ
ルチ・タスク制御用素子1に対してコマンド10(メモ
リ占有コマンド、MA、LC)f実行する。また、タス
クか使用していたメモリが不要になり解放したい場合に
は、コマンドII(メモリ解放コマンド、MREL )
を実行する。
このようにマルチ・タスク制御用素子1は、これらコマ
ンド10.IIによって、予しめ登録された64にバイ
トまでのワーク用メモリ領域を100Hバイト単位で使
用中か否かを判…iし、タスクから要求されたサイズの
空き領域を探し出して、タスクに割付ける機能を有する
この機能は、限られたメモリ空間を複数のタスクで有効
に利用するのに効果を発揮し、またお互いのタスク間で
同一メモリ領域を重複して使用することを防止するのに
役立つ。なお、マルチ・タスク制御用素子lへのワーク
・メモリ領域の設疋は、マルチ・タスク制御用素子lの
初期設定時(コマンド0の実行時)に行なわれる。
コマンド12(コマンド名: PO3T 、第19図フ
ローチャート)は、本マルチ・タスク制御用素子1内に
設けられたメイルボックスMBXと呼ばれるメモリ領域
に、データを送るためのコマンドである。メイルボック
スMBXはこのコマンド12を実行したタスクと別タス
ク(次に説明するコマンド13実行)とのメソセージ中
継点となる。
5個のメイルボックスMBXI〜MBX5中の1個を指
定できる。コマンド・パラメータ・レジスタCPIOに
使用するメイル・ボックスMBXの番号、および指定し
たメイル・ボックスMBXへ送るデータを掛込み、コマ
ンドを実行する。
コマンド12か実行されると、人力データのエラーを検
査しくステップ0)、エラーか検出されれはコマンド/
ステータス・レジスタCN5Tにエラーコードをセット
して(ステップ@)メインルーチンに戻る。
エラーが検出されなければ、送信データを指定された番
号のメイル・ボックスMBXに1込む(ステップ[相]
)。そして次に、既にコマンド13か実行され、コマン
ド12の実行によってデータか指定のメイル・ボックス
MBXに送られてくるのを待っているタスクがあるかど
うかを調査する(ステップ(ハ))。これはすべてのタ
スクのタスク制御ブロックTCB内のタスク・ステータ
O中のPENDWフラグおよびメイル・ボックス番号■
とを参照して行なわれる。もし送信待ちのタスクがない
場合はステップ[相]へスキップする。送信待ちのタス
クかある場合(本実施例では1個のみを許している)は
、送信待ちのタスクのタスク制御ブロックTCB内のP
ENDWフラグをリセット、またREADYフラグをセ
ントし、レディーQを優先度胆に接続しなおす(ステッ
プ[相])。
そして送信待ちのタスクがある場合、ない場合共に、コ
マンド/ステータス・レジスタCN5Tに正常終了コー
ドをセット(ステップ[相])、さらにTSKCHG 
フラグをセットして(ステップ0)メインルーチンに戻
る。
コマンド13(コマンド名:PEND、第20図フロー
チャート)は別タスクより、指定したメイル・ホックス
MBXを介してデータを受け取るコマンドである。コマ
ンド・パラメーターレジスタCPIOにデータを受け取
るメイル・ボックスMBXの番号を書込みコマンドを実
行する。コマンド13が実行されると、ます入力データ
のエラー検査が行なわれ(ステップ[相])、エラーか
あればコマンド/ステータス・レジスタCN5Tにエラ
ーコードをセントして(ステップ[相])、メインルー
チンに戻る。
エラーか検出されなければ、指定したメイル・ボックス
MBXにデータが既に書込まれているかどうかチェック
する(ステップ[相])。もし書込まれていなければ、
PUNフラグをリセット、PENDWフラグをセントし
くステップ[相])、またTSKCHG フラグをセッ
トする(ステップO)。
そして次に、コマンド/ステータス・レジスタ・CN5
Tにデータ来者コードをセットしくステップ・)、メイ
ンルーチンに戻る。既にデータか書込まれていれは、コ
マンド・パラメータ・レジスタCPIOに指定したメイ
ル・ボックスM B Xに畳込まれているデータを転送
しくステップ秒)、コマンド/ステータス・レジスタC
N5Tに正常終了コードをセットして(ステップ(ハ)
)、メインルーチンに戻る。
コマンド+4(コマンド名: PMOD 、第21図フ
ローチャート)は、ポートlとポート2のデータ入出力
方向を設定するコマンドである。コマンド・パラメータ
・レジスタCPIOにポートlとポート2との入出力方
向を指定するためのコードを設定してコマンドを実行す
る。
コマンド・パラメータ・レジスタCPIOに設定された
コードに基づきポートlとポート2の入出力方向を指定
しくステップ[相])、コマンド/ステータス・レジス
タCN5Tに正常終了コードをセットして(ステップO
)、メインルーチンに戻る。
タスクから発行された上記任意のコマンド0〜14の処
理ルーチンを実行し、第6図のメインル−チンに戻ると
、まずコマンド/ステータス・レジスタCN5Tにエラ
ーコードがセットされているかどうかの判定を行なう(
ステップ0)。エラーコードがセントされていればステ
ップ[株]ヘスキノプし、もしエラーコードがセントさ
れていなければ、次にTSKCHG フラグがセントさ
れているかどうか判定する(ステップ・)。TSKCH
G フラグが0″であればステップ[株]ヘスキップし
、”I”であればタスク切換えルーチンを実行する(ス
テップ[相]2.タスク切換えルーチンは第22図のフ
ローチャートに詳しく述へられる)。ステップ@または
ステップ・からスキップして、あるいはタスク切換えル
ーチン(ステップ[相])が実行されてメインルーチン
に戻ると、次のコマンド受は入れ準備を行ない(ステッ
プ[相])、TSKCHG フラグをリセットする(ス
テップ[相])。そして、ステップ■に戻り、次のコマ
ンド受は入れ待ち状態となる。
上記したようにコマンド処理ルーチンでTSKCHGフ
ラグがセット(゛′ビ′)されれば、タスク切換えルー
チンを実行する。第22区のフローチャートにおいて、
タスク切換えルーチンに入ると、まずコマンド1(初期
設定終了および実行開始)の実行時かどぅがのチェック
を行なう(ステップ[相])。
コマンドlの実行時であればステップリヘスキノプし、
以降の処理により、先にコマンド0(初期設定)で短縁
したタスクの中がら、レディー状態にありかつ優先度の
最も高いタスクを実行させるべくマスタCPU2に割込
み信号を発生する。
ます、レディーQの先頭に接続されているタスクのタス
ク制御プロyりTCEをレディー。がら切離しくステッ
プ@)、このタスク制御ブロックTCB内のタスク・ス
タック・ポインタ■(第゛3図参照)の値を新スタック
・ポインタ・レジスタSPHに書込む(ステップO)。
そして、タスク制御ブロックTCB内のタスク・ステー
タス■にRUNフラグをセットして(ステップ@)、マ
スタCPU2に対して割込み信号IN了を発生する(ス
テップO)。
マスクCP’U 2は、この割込み信号丁y了に基つ(
マスタCPU2側のタスク切換え割込みルーチンにより
新しいタスクのスタックφポインタの値を読込み、割込
みルーチンのリターンと同時に、マスクCPU2の1′
理下においてそのタスクを実行する。
コマンド1の実行待以外では、タスクが実行状態かどう
か検査される(ステップ[株])。実行状態でないのは
コマンド5(タスクの停止)の実行時に限られる。実行
状態(RU N状態)のタスク自身がコマンド5を実行
すると、コマンド処理ルーチンでRU Nフラグがセッ
トされ、サスペンド状態(SU・5PENDフラグセツ
ト)となっている。
この場合、ステップ[相]ヘスキノプし、旧スタック・
ポインタ・レジスタSPBのデータを、今まで実行状態
にあったタスクのタスク制御ブロックTCB内のタスク
・スタック・ポインタ■領域に書込み、保存する。この
後、ステップO−■の処理を通して別のタスクを実行す
るため、マルチ・タスク制御用素子lからマスタCPU
2に割込み信号を発生する。
タスクが実行状態(RUN状態)であれば、時分割処理
のタイム・アップ時間かどうか検査される(ステップ[
相])。時分割処理指定のタスクがタイムアツプした時
にはステップ[相]ヘスキップする。
このスキップルーチンは後に説明1−る第23図フロー
チャートのタイマ割込み処理中でしか通らない。
タイム・アップ時でなければ、各タスクのタスク制御ブ
ロックTCB内を調査してレディーQに接続されている
タスクがあるかどうかの検査を行なう(ステップ[相]
)。なければ、すなわち、現在実行状態のタスク以外に
実行待ち(レゾ、「−)状態のタスクがなければ、第6
図のメインルーチンに戻る。レディーQに接続されてい
るタスクがあれば、次に、実行状態のタスクの優先度の
レディーQの先頭に接続されているタスクの優先度とを
比較する(ステップ[相])。実行状態のタスクの優先
度の方が劃けれは、同じく第6図のメインルーチンに戻
る。ステップ[相]、■でメインルーチンに戻れは、割
込み信号INTが発生されず、現在実行中のタスクかそ
のまま実行を続行することになる。
レディーQの先頭に接続されているタスクの優先度の方
か高ければ、実行中のタスクのタスク制御ブロックTC
BをレディーQに接続するとともに、RUNフラグをリ
セットする(ステップ[相])。
そして、旧スタック・ポインタ・レジスタSPBのデー
タをタスク・制御ブロックTCBのタスク・スタック・
ポインタ■領域に保存しくステップ[株])、以降のス
テップ@〜○ の処理を通して割込みを発生させる。な
お、ステップ蜘〜○において、新しく実行状態となる別
のタスクは、前述したようにレディーQの先頭に接続さ
れているタスクで、コマンド実行等により最も優先度か
高くなったタスクである。割込み信号IN丁を発生した
後は第6図のメインルーチンに戻り、次のコマンド受は
入れ準備を行なう(第6図ステップ0)。
第23図、第24図は第6図のメインルーチンに対する
割込み処理ルーチンのフローチャートである。
第23図はポート3への人力による割込み処理で、コマ
ンド5(タスクの停止、i+2図フローチャート)によ
って停止状態にあるタスクを外部イベント起動するもの
である。
ポート3に人力されている記号の遷移によってこのルー
チンか起動される。このルーチンでは、コマンド5で外
部イベント起動を設定しているタスクのタスク制御ブロ
ックICEを優先度胆でレディーQに接続しくステップ
○)、そのタスク制御ブロックTCB内の5USPEN
Dフラクをリセット、READYフラグをセットする(
ステップ○)。すなわち、これによって停止状態のタス
クが再起動可能状態となるわけて、これか終れば割込み
処理ルーチンからリターンする。
第24図はタイマによる割込み処理で、第2図のタイマ
TMからの信号を内部割込み信号として、これが一定時
間単位で発生するとタイマ割込み処理ルーチンに入る。
タイマTMから内部割込み信号が発生すると、ます、シ
ステム・クロック領域SCAに登録されている時計の値
(時2分1秒のデータ)を進める(ステップ○)。次に
コマンド7(タスクの時分割処理の設定、第7図フロー
チャート)で設定されたレジスタ5LIPRI に登録
されている優先度と、現在実行状態のタスクの優先度と
を比較する(ステップ■)。時分割処理は指定した優先
度より高いレディー状態のタスクか存在しない場合に限
り有効である。より高い優先度を持つレディー状態のタ
スクか存在すれば、そのタスクが実行され時分割処理は
無効となるが、高い優先度のタスクかなくなれば有効と
なる。上記ステップ■ の比較は、レジスタSLI P
RI に登録されている優先度のタスクが実行中である
かどうか検査することと同等であり、時分割処理指定タ
スクが実行状態にない場合は面ちに割込み処理ルーチン
からリターンする。
レジスタSL I PRI に登録されている優先度と
現在実行状態のタスクの優先度と一致、つまり、現在実
行状態のタスクが時分割処理指定のタスクであれは、レ
ジスタS L I CNTで登録されている時間が経過
したかどうかの判定を行なう(ステップ@)。経過して
いなけれは、この割込み処理ルーチンからリターンする
。Tなわち、マルチ・タスク制御用素子lはメインルー
チンに戻り次のコマンド受は入れ待ち状態となり、マス
タCP U2は時分割処理指定の現在実行状態にあるタ
スクを続けて実行する。
登録された時間が経過したときは、実行状態のタスクの
タスク制御ブロックTCBをレディーQの末尾に接続す
るとともに、RUNフラフラリセット、READYフラ
グをセントしくステップO)、第22図のタスク切換え
ルーチンをコールする(ステップ○)。
第22図フローチャートにおいて、時分割処理指定のタ
スクがタイム・アップした場合は、ステップ[相]から
ステップ[相]へスキップする。そしてステップ[相]
−@の処理を行なう。これらによって今まで実行状態に
あったタスクのタスク・スタック・ポインタ■領域に旧
スタンク・ポインタ・しレジスタSPHのデータを保存
する(ステップ[相]ンとともに、時分割処理に指定さ
れた同じ優先度を持つタスクのタスク制御ブロックTC
BをレディーQから切離しくステップ[相])、このタ
スク制御ブロックTCB内のタスク・スタック・ポイン
タ0頭域のデータを新スタック・ポインタ・レジスタS
PHに書込む(ステップ■)。そして最後にタスク・ス
テータス■にRUNフラグをセットする(ステップ○)
。こうしたタスク切換えルーチンを行なったのち割込み
からリターンする。
マスタCPU2では上述したマルチ・タスク制御用索子
】の動作により、時分割処理に指定した別のタスクを実
行することとなる。
上述のように本実施例のマルチ・タスク制御用素子1は
同時に最大8個までのタスクをサポートすることができ
る。8個を越えるタスクをサポートさせるには、必要に
応じてコマンド2(タスク(D生成)、コマンド3(タ
スクの消去)によりタスクを生成、消去し、タスクの入
れ換えを行なえはよい。そして、マルチ・タスク制御用
素子1により各タスクは優先皮類にマスタCPU2の占
面権を割当てられる。また、コマンド7(タスクの時分
割処理の設定)により、同一優先度の複数のタスクを時
分割方式でスケジューリンクすることも可能である。な
お、各タスクの優先度はタスク生成時に設定されるか、
コマンド6(タスクの優先度変更)によりマスタCPU
2のブロクラム実行中にも変更可能である。
時分割処理の開始時、タスクの実行順序はコマンド0(
初期設定)またはコマンド2(タスクの生成)により生
成したタスクの順序に従う。タスク実行中でコマンド7
(タスクの時分割処理の設定)を実行すれば、実行した
タスクの優先度と時分割指定優先度とが等しい場合には
、実行した時点から時分割処理が有効となる。
コマンド12(メツセージの送信)、コマンド18(メ
ツセージの愛他)により、マルチ・タスク制御用素子l
のメイル・ボックスMBXを利用してタスク間のデータ
(メツセージ)の受授が行なえる。
コマンド12を実行した際、実行したタスクよりも尚い
優先度を持つタスクか既にコマンド13を実杓して持切
状態にあれば、タスク切換えにより持切していたタスク
が実行を開始する。低い優先度をたつタスクがコマンド
13により持切中であれは、そのタスクはレディー状態
になるだけで、本コマンド12を実行したタスクかその
まま実行を継続する。コマンドI2を実行した際、コマ
ンド13が実行されていなければ、データ(メソセージ
)はメイル・ボックスMBXに保存され、同様にそのま
まタスクの実行が継続される。
コマンド12が実行されていない時に、同一メイル・ボ
ックスMBXに対して複数のタスクがコマンド13を実
行すれは、コマンド13を実行したタスクの順番に持切
状態となる。コマンド12が実行されれば、持切状態で
あったタスクの先頭のものより順番にレディー状態また
は実行状態となる。コマンド13を実行した際、既に指
定したメイル・ボ、ツクスMBXにデータ(メツセージ
)が届いている場合には、そのタスクがコマンドΦパラ
メータ・レジスタCPIOより、直ちに届いているデー
タ(メソセージ)を読出すことかできる。
また、コマンド13の持切機能を利用すれは、タスク間
のデータ通信だけでなく、タスク間の同期および相互排
除を行なうことが゛口]能である。なお、タスク間の同
期および相互排除にお1、)で、メイル・ホックスMB
Xに書込まれるデータはタミーデータで、実際のタスク
処理には使用されないものとする。
2個のタスクが処理の都合上、実行順序を制御しなりれ
ばならない場合かある。例えは、一方のタスクの処理か
終了するまで他方のタスクの処理を行なわす待たせる場
合、コマンド12.コマンド13を次のように利用して
お互いの同期をとることができる。
■ タスク2、コマンド13を実行。タスク2はメソセ
ージ未着のため前期状態となる。
■ タスク1の処理■をタスク2の処理■よりも先に実
行する。
■ タスクl、コマンド12を実行。タスク2の処理■
の実行を許可する。
■ タスクの処理11を実行。
次に相互排除であるが、複数のタスクか1つの共通の資
源、例えはIlo、メモリ等を利用する上で同時利用を
禁止する必要がある場合がある。例として、プリンタの
同時使用を禁止する場合、次のようにして互いに排除す
ることができる。
■ タスクl、コマンド12を実行。
■ タスク、コマンドI3を実行。既にコマンド12が
実行されているため前期状態にはならず、排他部分をロ
ック。
■ タスク2、コマンド13を実行。このコマンド13
によりタスクは前期状態となる。
■ タスク1、プリンタ使用。
■ タスクI、コマンドI2を実行。排他部分のロック
解除、同時にタスク2の排他部分をロック。
■ タスク2、プリンタ使用。
■ タスク2、コマンド12を実行、排他部分のロック
解除。
上述のようにしてタスク間の同期および相互排除を行な
うこともてきる。
なお、本実施例におけるマルチ・タスク制御用索子lは
ハードウェアを1個のLS IJ二に集積化したもので
あるが、個室回路要素を組合せ、装置とするようにして
何ら差支えない。
〈発明の効果〉 以上のように本発明によるテノ\イスは、時計の設定お
よび読出しかロエ能であるだけでなく、本デバイス1つ
てマルチ・タスク制御システムの時間制御か行なえるも
のであって、システムのスペース・ファクタか向上し、
またマスクCPtJのソフトウェアの負担を軽減できる
【図面の簡単な説明】
第1図は本発明のデバイスを使用したシステム慣成例を
示T図、第2図は本冗明の一実力巾例におけるデバイス
の内部構成例を示すブロック図、第3図は第2図のタス
ク制御ブロックTCB頭載を説明する図、第4図は第2
図のメモリ・マツプM E M M A P領域を説明
する図、第5図は本デバイスで使用されるコマンドと人
力パラメータおよび出力パラメータを説明する図、第6
図は本デバイスのメインルーチンの動作を説明するフロ
ーチャート、第7図〜第21図は各コマンドによる処理
ルーチンの動作を説明するフローチャート、第22図は
タスク切換ルーチンの動作を説明するフローチャート、
第23図はイベント人力による割込み処理ルーチンの動
作を説明するフローチャート、第24図はタイマ割込み
処理ルーチンの動作を説明するフローチャートである。 ■・・・マルチ・タスク制御用素子、2−マスタCPU
、3・・・プログラム・メモリ、6 ・データ・・・・
内部演算制御回路、TM・・・タイマ、SCA システ
ム・クロック領域、MIV ・マスク割込み制御レジス
タ、CPIO・コマンド9パラメーターレジスタ、CN
5T・コマンド/ステータス・レジスタ、SPN・・新
スタック・ポインタ・レジス−タ、SPB・・・旧スタ
ックーポインタ轡レジスタ。 代理人 弁理士 福 士 愛 彦(他2名)’;t”、
 to rxh チ、I2Cカ 手14図 y−、teし1 第15ヴ1 手、/7ば1 9り1 第22団 第24陳I

Claims (1)

    【特許請求の範囲】
  1. 1、マスタCPUにより実行される複数のタスクの首゛
    理を上記マスタCPU以外で行なうデバイスであり、時
    間計時を行なうための内部タイマ手段と、該タイマ出力
    によりタスクの時間制御を行ない上記マスタCPUに対
    して実行中のタスク切換用割込みを発生させる手段と、
    上記マスタCPUからの時刻の設定および読出しを1」
    能とし、上記タイマー出力により計数される時計手段と
    を備えてなることを特徴とする7ルチ・タスク制御用デ
    バイス。
JP22295183A 1983-11-25 1983-11-25 マルチ・タスク制御用デバイス Pending JPS60114942A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22295183A JPS60114942A (ja) 1983-11-25 1983-11-25 マルチ・タスク制御用デバイス

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22295183A JPS60114942A (ja) 1983-11-25 1983-11-25 マルチ・タスク制御用デバイス

Publications (1)

Publication Number Publication Date
JPS60114942A true JPS60114942A (ja) 1985-06-21

Family

ID=16790429

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22295183A Pending JPS60114942A (ja) 1983-11-25 1983-11-25 マルチ・タスク制御用デバイス

Country Status (1)

Country Link
JP (1) JPS60114942A (ja)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56108146A (en) * 1980-01-31 1981-08-27 Fujitsu Ltd Clocking device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56108146A (en) * 1980-01-31 1981-08-27 Fujitsu Ltd Clocking device

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
TW498281B (en) Interface system and method for asynchronously updating a shared resource
US5701493A (en) Exception handling method and apparatus in data processing systems
US20030041173A1 (en) Synchronization objects for multi-computer systems
JPH0997189A (ja) 共有資源の排他制御方式
US6769121B1 (en) Program execution device and process migrating method thereof and storage medium which stores process migration control program
JPS6031648A (ja) マルチ・タスク制御方法
JP2821345B2 (ja) 非同期i/o制御方式
JP3644042B2 (ja) マルチタスク処理装置
JPS60114942A (ja) マルチ・タスク制御用デバイス
JPH0376500B2 (ja)
JPH0376497B2 (ja)
JPH0376499B2 (ja)
JPS60118939A (ja) マルチ・タスク制御用デバイス
JP2693916B2 (ja) タスクスケジュール方法
JPH01118956A (ja) データ処理装置
JPH0376498B2 (ja)
JPH0687221B2 (ja) 情報処理装置
JP2998721B2 (ja) 並列処理プログラムとコプロセッサとの間の排他制御方法およびその排他制御機能を有する計算システム
JPH07105120A (ja) 入出力制御装置
JPS5947341B2 (ja) 索引順編成フアイルの動的排他制御方式
JPS6011935A (ja) 動作モ−ド表示装置
JPS60215249A (ja) マルチ・タスク制御素子を内蔵したコンピユ−タ周辺装置
JP2926873B2 (ja) 計算機システム
JPS60163133A (ja) マルチ・タスク制御素子