JPH09319595A - マルチタスク制御装置 - Google Patents

マルチタスク制御装置

Info

Publication number
JPH09319595A
JPH09319595A JP13148496A JP13148496A JPH09319595A JP H09319595 A JPH09319595 A JP H09319595A JP 13148496 A JP13148496 A JP 13148496A JP 13148496 A JP13148496 A JP 13148496A JP H09319595 A JPH09319595 A JP H09319595A
Authority
JP
Japan
Prior art keywords
state
task
event
management unit
system state
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
JP13148496A
Other languages
English (en)
Inventor
Yoshiyuki Iwamura
喜之 岩村
Fumio Sumi
史生 角
Motohide Nishihata
素秀 西畑
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP13148496A priority Critical patent/JPH09319595A/ja
Publication of JPH09319595A publication Critical patent/JPH09319595A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 高速なスケジューリング処理を可能とするマ
ルチタスク制御装置を提供する。 【解決手段】 前処理部11、イベントフラグ管理部1
2、セマフォ管理部13、メール管理部14、タスク状
態データ保持部15、状態遷移テーブル保持部16、ス
ケジューリング管理部17、タスク切替え管理部18、
後処理部19、状態遷移テーブル生成部20を備え、ス
ケジューリング管理部17が、イベントフラグ管理部1
2、セマフォ管理部13、メール管理部14からの事象
の発生の通知を受けて、タスク状態データ保持部15の
内容と、状態遷移テーブル保持部16に保持されている
状態遷移テーブルとを参照し、事象の発生後に実行すべ
きタスクを判定して、必要に応じてタスク切替え管理部
18にタスクの切替えを指示する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オぺレーティング
システム(以下「OS」と略称する)によるマルチタス
ク制御を行うマルチタスク制御装置に関する。
【0002】
【従来の技術】近年、マイコン制御を行う家電製品等の
分野において、複数のタスクを有するマルチタスクプロ
グラムの実行に際して、同期通信機能を用いてタスクの
切替えを行うマルチタスク制御装置が広く利用されてい
る。ここで、同期通信機能とは、複数のタスクの処理を
同期して進行させるためにタスク間で通信を行う機能の
ことである。以下、同期通信機能を用いた従来のマルチ
タスク制御装置について説明する。
【0003】図23は、従来のマルチタスク制御装置の
構成を示すブロック図である。同図に示されるマルチタ
スク制御装置は、前処理部91、イベントフラグ管理部
92、セマフォ管理部93、メール管理部94、状態遷
移キュー95、スケジューリング管理部96、タスク切
替え管理部97、後処理部98を有する。前処理部91
は、マルチタスク制御装置が、タスク若しくは割り込み
ルーチンからシステム呼び出し命令によって駆動された
直後に、呼び出し元を表す識別子の保存処理等、前処理
として毎回行う必要のある処理を行う。
【0004】ここで、呼び出し元を表す識別子の保存を
行う必要性は、呼び出し元によって復帰時の処理内容に
相違があることに起因する。即ち、マルチタスク制御装
置がタスクから駆動された場合には、復帰時にタスクの
切替えを行っても何ら問題は起きない。しかし、割り込
みルーチンから駆動された場合には、割り込み処理を全
て終了してタスクに制御が戻るときにはタスクの切替え
を行ってもよいが、それ以外の場合、例えば多重割り込
みが行われた状態で割り込みルーチンから駆動された場
合のように、戻り先も割り込みルーチンであるような場
合にはタスクの切替えを行うことはできない。これは、
戻り先が割り込みルーチンである場合にタスクの切替え
を行ってしまうと、本来の戻り先である呼び出し元の割
り込みルーチンに戻れなくなってしまうというOSの機
能に基づくものである。
【0005】従って、マルチタスク制御装置からの復帰
時には、呼び出し元を識別して、呼び出し元に応じた処
理を行う必要があるため、呼び出し元を表す識別子の保
存処理が必要となるのである。イベントフラグ管理部9
2は、マルチタスク制御装置がタスク若しくは割り込み
ルーチンからイベントフラグの設定命令又は待ち命令に
より駆動された場合にイベントフラグの設定処理等を行
う。
【0006】ここで、イベントフラグとは、OSが管理
するデータ領域(以下「OS領域」と呼ぶ)に、複数の
フラグIDごとに保持されているビットパタンを意味す
る。イベントフラグの設定命令とは、タスク若しくは割
り込みルーチンからフラグIDとビットパタンとを指定
してイベントフラグの設定を行う命令である。具体的に
は、例えばタスク若しくは割り込みルーチンにおいて "
setflag(setpattern,flagID)" というような命令が発行
されると、イベントフラグ管理部92によりflagIDで指
定されたフラグIDを有するOS領域にsetpatternで指
定されたビットパタンが設定される。設定命令は、タス
ク及び割り込みルーチンの両方から発行される場合があ
る。
【0007】一方、イベントフラグの待ち命令とは、タ
スクからフラグIDとビットパタンを指定して、当該フ
ラグIDを有するOS領域に設定されているビットパタ
ンと、タスクにより指定されたビットパタンとが一致す
るか否かを問い合わす命令である。具体的には、例えば
タスクにおいて "waitflag(waitpattern,flagID)" とい
うような命令が発行されると、イベントフラグ管理部9
2はflagIDで指定されたIDを有するOS領域に設定さ
れているビットパタンと、waitpatternで指定されたビ
ットパタンとを比較する。比較の結果、両者が一致して
いれば命令を発行したタスクをそのまま処理を実行する
ことが可能であるが、一致していなければ待機状態(以
下「Wait状態」と呼ぶ)となる。Wait状態と
は、事象の発生によりタスクが実行可能状態(以下「R
eady状態」と呼ぶ)となるまで(以下、Wait状
態のタスクが事象の発生によりReady状態となるこ
とを「起床する」と称する)処理の実行を中断している
状態である。この場合の例であれば、他のタスク若しく
は割り込みルーチンから発行されたイベントフラグの設
定命令により、両者のビットパタンが一致するするまで
Wait状態が継続する。なお、イベントフラグの待ち
命令はタスクのみから発行され、割り込みルーチンから
発行されることはない。
【0008】Wait状態において、事象の発生により
タスクが起床すると、当該タスクはまずReady状態
となり、当該タスクの優先度が最も高い場合や、他にR
eady状態のタスクが存在しない場合等、当該タスク
を実行することが可能な状況が整えば実行状態(以下
「Run状態」と呼ぶ)となる。イベントフラグの待ち
命令において、waitpatternで指定されたビットパタン
は、個々のタスクに割り当てられたTCB(Task Contro
l Block)に、フラグIDの指定と共に保持される。
【0009】イベントフラグ管理部92は、マルチタス
ク制御装置がイベントフラグの設定命令により駆動され
た場合には、イベントフラグの設定処理後、当該フラグ
IDを有するフラグに対してビットパタンを指定してW
ait状態となっているタスクが存在するか否かを検索
する。検索の結果Wait状態のタスクが存在し、か
つ、Wait状態のタスクにより指定されているビット
パタンと、設定処理後のOS領域のビットパタンとが一
致した場合にはWait状態のタスクが起床する。この
場合、イベントフラグ管理部92は、事象の発生による
タスクの起床をスケジューリング管理部96に通知す
る。
【0010】また、イベントフラグ管理部92は、マル
チタスク制御装置がイベントフラグの待ち命令により駆
動された場合には、前述のとおりタスクにより指定され
たビットパタンとOS領域のビットパタンとを比較し、
一致していればそのままタスクの処理の実行を継続す
る。一致しない場合には、タスクがWait状態となる
ため、イベントフラグ管理部92はタスクのWait状
態への変化をスケジューリング管理部96に通知する。
【0011】セマフォ管理部93は、資源に割り振られ
たIDごとに、その時点での資源の割当可能量を保持す
るカウンタを有しており、マルチタスク制御装置が、タ
スク若しくは割り込みルーチンから資源獲得要求及び資
源開放要求により駆動された場合にカウンタの更新処理
等を行う。ここで、資源獲得要求とはタスクから資源の
IDと資源の獲得要求量を指定して発行される命令であ
る。具体的には、例えば "waitsem(semID,reqNo)" とい
うような命令が発行されると、セマフォ管理部93はre
qNoで指定された要求量と、semIDで指定されたIDを有
する資源についてのカウンタに保持されている割当可能
量とを比較する。割当可能量が獲得要求量以上であれ
ば、セマフォ管理部93がカウンタの値から獲得要求量
を減算し、タスクに対して、要求された資源が割り当て
られて、当該タスクの処理が継続実行されるが、割当可
能量が獲得要求量を下回っている場合には、当該タスク
は、他のタスクからの資源開放要求により当該資源の割
当可能量が増加して獲得要求量以上となるまでWait
状態となる。
【0012】一方、資源開放要求とは、タスクから資源
のIDと資源の開放要求量を指定して発行される命令で
ある。具体的には、例えば "sigsem(semID,relNo)" と
いうような命令が発行されると、semIDで指定されたI
Dを有する資源についてのカウンタの値を加算する。な
お、資源開放要求は、タスク及び割り込みルーチンの両
方から発行される可能性があるが、資源獲得要求はタス
クのみから発行され、割り込みルーチンから発行される
ことはない。
【0013】セマフォ管理部93は、マルチタスク制御
装置が資源開放要求により駆動された場合には、カウン
タの値の加算の後、当該資源の割当可能量の増加を待っ
てWait状態となっているタスクが存在するか否かを
検索する。検索の結果Wait状態のタスクが存在し、
かつ、Wait状態のタスクにより要求されている資源
量が、加算後のカウンタの値以下である場合には、Wa
it状態のタスクが起床する。この場合セマフォ管理部
93は、事象の発生によるタスクの起床をスケジューリ
ング管理部96に通知する。
【0014】セマフォ管理部93は、マルチタスク制御
装置が資源獲得要求により駆動された場合には、前述の
とおりカウンタに保持されている資源の割当可能量が獲
得要求量以上であれば、カウンタの値を減算して、その
ままタスクの処理の実行を継続する。割当可能量が獲得
要求量を下回る場合は当該タスクがWait状態となる
ため、セマフォ管理部93は、タスクのWait状態へ
の変化をスケジューリング管理部96に通知する。
【0015】メール管理部94は、マルチタスク制御装
置がタスク若しくは割り込みルーチンからメールの受信
命令又は送信命令により駆動された場合にメールの管理
処理等を行う。メールは複数のメールボックスIDごと
に、メッセージを伴って、送信された順に保持される。
メールの受信命令とは、タスクからメールボックスID
を指定して当該メールボックスにメールが保持されてい
るか否かを問い合わす命令である。具体的には、例えば
"waitmsg(boxID,ptr)" というような命令が発行される
と、boxIDで指定されたメールボックスにメールが保持
されているか否かを検索する。メールが保持されていれ
ば、受信命令を発行したタスクは、そのメールを受信し
て処理の実行を継続することができる。ptrには、メッ
セージが存在する位置のアドレスが返されるので、タス
クはメッセージ領域に保持されたデータを使用して処理
を継続する。
【0016】メールが保持されていなければ、タスク
は、他のタスクから当該メールボックスにメールが送信
されるまでWait状態となる。また、メールの送信命
令とは、タスク若しくは割り込みルーチンから、メール
ボックスIDとメッセージ保持領域のアドレスとを指定
してメールを送信する命令である。具体的には "sendms
g(boxID,ptr)" というような命令が発行されると、boxI
Dで指定されたメールボックスにptrで指定されたアドレ
スに保持されるメッセージを伴うメールが送信される。
【0017】なお、メールの送信命令は、タスク及び割
り込みルーチンの両方から発行される可能性があるが、
メールの受信命令はタスクのみから発行され、割り込み
ルーチンから発行されることはない。メール管理部94
は、マルチタスク制御装置がメールの送信命令により駆
動された場合には、メールの送信処理を行った後、当該
メールボックスへのメールの送信を待ってWait状態
となっているタスクが存在するか否かを検索する。
【0018】検索の結果Wait状態のタスクが存在し
ていれば、Wait状態のタスクが起床することになる
ので、メール管理部94は、事象の発生によるタスクの
起床をスケジューリング管理部96に通知する。メール
管理部94は、マルチタスク制御装置がメールの受信命
令により駆動された場合には、前述のとおり指定された
メールボックスにメールが保持されていれば、タスクに
メールを渡して、そのままタスクの処理の実行を継続す
る。メールが保持されていない場合は、受信命令を発行
したタスクがWait状態となるため、メール管理部9
4は、タスクのWait状態への変化をスケジューリン
グ管理部96に通知する。
【0019】状態遷移キュー95は、RunキューとR
eadyキューとから構成される。RunキューとはR
un状態のタスクのTCBが接続されている領域であ
り、Readyキューとは、Ready状態のタスク
が、例えば優先順位の順に待ち行列を形成している領域
である。スケジューリング管理部96は、イベントフラ
グ管理部92、セマフォ管理部93、メール管理部94
からの通知を受け、Run状態からWait状態となっ
たタスクをRunキューから切り離したり、事象の発生
により起床したタスクについて、Ready状態の各々
のタスクの優先度を比較しながら、Readyキューの
待ち行列の並び順を管理するとともに、優先度の高いタ
スクから順にRunキューに接続されるようにスケジュ
ーリングを行う。
【0020】タスク切替え管理部97は、スケジューリ
ング管理部96のスケジューリングに従って、実際にレ
ジスタの退避/復帰等のタスクの切替え処理を行う。後
処理部98は、前処理部91において保存された呼び出
し元の識別子等の更新、削除等、マルチタスク制御の最
後に毎回行う必要のある処理を行う。以上のように構成
されたマルチタスク制御装置について、以下、その動作
を具体例を用いて説明する。図24は、本具体例におけ
る状態遷移キュー95の状態を示す図である。
【0021】例えば、三つのタスクA、B、Cが存在
し、タスクAが最高優先度、タスクBが次の優先度、タ
スクCが最低優先度であり、タスクAがWait状態、
タスクBがRun状態、タスクCがReady状態であ
る場合を仮定する。タスクAはメールボックスXにメー
ルが送信されるのを待っているWait状態であるとし
て、Run状態であるタスクBからメールボックスXに
対するメールの送信命令が発行された場合の動作につい
て説明する。
【0022】まず前処理部91は、タスクBからメール
の送信命令により駆動されたことを表す識別子の保存等
のOS共通処理を行う。今回の例ではメールの送信命令
により呼び出されているのでメール管理部94による処
理が行われる。メール管理部94は、メールボックスX
にメールを送信した後、メールボックスXへのメールの
送信を待ってWait状態となっているタスクが存在す
るか否かを検索する。検索の結果、タスクAが起床して
Ready状態となることが判明するので、メール管理
部94は、メールの送信によるタスクの起床をスケジュ
ーリング管理部96に通知する。
【0023】スケジューリング管理部96は、メール管
理部94の通知を受け、まず状態遷移キュー95の状態
を図24(a)から図24(b)のように変更する。即
ち、Wait状態であったタスクAがReady状態と
なるのでタスクAのTCBをReadyキューに繋ぐ。
この際、タスクAの優先度はタスクCの優先度より高い
ので、Readyキューのサーチの結果、タスクA、タ
スクCの順にReadyキューに繋がれることになる。
【0024】次にスケジューリング管理部96はRun
状態であるタスクBと、Ready状態であるタスクの
中で最も優先度の高いタスクであるタスクAとの優先度
を比較し、状態遷移キュー95の状態を図24(b)か
ら図24(c)のように変更する。即ち、タスクAの優
先度の方がタスクBの優先度より高いので、タスクAの
TCBをRunキューに繋ぎ、タスクBのTCBをRe
adyキューに繋ぐ。この場合、タスクBの優先度はタ
スクCの優先度よりも高いのでReadyキューのサー
チの結果タスクB、タスクCの順にReadyキューに
繋がれる。
【0025】スケジューリング管理部96は、Runキ
ューに繋がれたタスクの変化を検知し、タスクの切替え
が必要であることをタスク切替え管理部97に通知す
る。タスク切替え管理部97は、レジスタの退避/復帰
等、実際のタスク切替えに必要な処理を行い、後処理部
98に制御を渡す。後処理部98が、タスクBから駆動
されたことを示す識別子の削除等のOS共通処理を行っ
た後、マルチタスク制御装置の処理が終了する。処理終
了後はタスクAの処理が実行される。
【0026】
【発明が解決しようとする課題】しかしながら、上記の
ような従来のマルチタスク制御装置においては、イベン
トフラグの設定、メールの送信等の事象の発生によりタ
スクのWait状態が解除され、Ready状態となっ
た場合に、キューサーチ、キュー接続などのキュー操作
が必要であること、及び、Ready状態となったタス
クとRun状態のタスクとの優先度の比較処理、Rea
dy状態のタスク同士の優先度の比較処理、タスク切替
え時のRunキュー、Readyキューの操作等が必要
であり、スケジューリング処理が遅いという問題点を有
していた。その結果、例えば高速な制御処理を行う必要
がある場合には、高機能を有する汎用的なマルチタスク
OSを使用することができない等の問題が生じていた。
【0027】本発明は上記の問題点に鑑み、高速なスケ
ジューリング処理を可能とするマルチタスク制御装置を
提供することを目的とする。
【0028】
【課題を解決するための手段】上記の問題点を解決する
目的で、本発明に係るマルチタスク制御装置は、複数の
タスクを実行するシステムに備えられ、事象の発生に応
じて、前記システムが実行するタスクの切替えを行うマ
ルチタスク制御装置において、前記複数のタスクのそれ
ぞれが、実行状態、実行可能状態、待機状態を含む各種
の状態の中のどの状態にあるかを表すシステム状態ごと
に、各事象が発生した場合に次に実行すべきタスクを決
定する情報を保持する状態遷移テーブルと、事象の発生
を検知する事象検知手段と、前記事象検知手段により事
象の発生が検知された場合に、前記状態遷移テーブルを
参照し、その時点におけるシステム状態から次に実行す
べきタスクを判定する判定手段と、前記判定手段の判定
に応じてタスクの切替えを行うタスク切替え手段とを有
する。
【0029】また、前記判定手段は、その時点における
システム状態を保持する保持部を有することもできる。
また、前記状態遷移テーブルは、前記システムにおいて
存在し得るシステム状態について、システム状態ごと
に、各事象が発生した場合の遷移先のシステム状態を保
持することができる。
【0030】さらに、前記状態遷移テーブルにおいて、
各々のシステム状態には、優先度の高いタスクが実行状
態であるシステム状態から、昇順又は降順にて状態番号
が割り振られ、前記判定手段は、状態遷移テーブルに保
持されている遷移先のシステム状態の状態番号から次に
実行すべきタスクを判定することが可能である。前記マ
ルチタスク制御装置はさらに、タスクと、タスクごとの
優先度と、各々のタスクを実行可能状態に起床させる事
象との定義を含むシステム定義テーブルから、前記状態
遷移テーブルを生成する状態遷移テーブル生成手段を備
えることもできる。
【0031】また、前記状態遷移テーブル生成手段は、
前記システム定義テーブルから、各タスクの状態の全て
の組み合わせを生成する状態生成手段と、所定のシステ
ム状態に関する規則に従って、前記状態生成手段が生成
した組み合わせから、前記システムにおいて存在し得な
いシステム状態を表す組み合わせを削除することによ
り、前記システムにおいて存在し得るシステム状態を表
す組み合わせを抽出する状態抽出手段と、前記状態抽出
手段により抽出された組み合わせから、前記状態遷移テ
ーブルを生成するテーブル生成手段とを有することも可
能である。
【0032】さらに、前記状態抽出手段は、前記システ
ムの機能に基づくシステム状態に関する規則と、アプリ
ケーション固有の理由に基づくシステム状態に関する規
則とに従って前記システム状態を表す組み合わせを抽出
することが可能である。
【0033】
【発明の実施の形態】以下、本発明の一実施の形態につ
いて図面を参照しながら説明する。図1は、本実施の形
態に係るマルチタスク制御装置の構成を示すブロック図
である。同図に示されるマルチタスク制御装置は、前処
理部11、イベントフラグ管理部12、セマフォ管理部
13、メール管理部14、タスク状態データ保持部1
5、状態遷移テーブル保持部16、スケジューリング管
理部17、タスク切替え管理部18、後処理部19を有
する。
【0034】なお、本実施の形態のマルチタスク制御装
置は、OSをCPUが実行することにより実現されてい
る点、及び、CPUにおいて、イベントフラグの設定命
令及び待ち命令、資源の獲得要求及び開放要求、メール
の送信命令及び受信命令等の命令が実行される毎に駆動
されるものである点については、従来の技術で説明した
マルチタスク制御装置と同一である。
【0035】前処理部11は、本実施の形態のマルチタ
スク制御装置が、タスク若しくは割り込みルーチンから
駆動された直後に、呼び出し元を表す識別子の保存処理
等、前処理として毎回行う必要のある処理を行う。イベ
ントフラグ管理部12は、マルチタスク制御装置がタス
ク若しくは割り込みルーチンからイベントフラグの設定
命令又は待ち命令により駆動された場合に、イベントフ
ラグに関する事象の発生及び当該事象の発生に伴うシス
テム状態の変化を管理する。システム状態とは、各々の
タスクがRun状態、Ready状態、Wait状態の
何れの状態であるかを示す情報である。
【0036】具体的には、マルチタスク制御装置が、イ
ベントフラグの設定命令で駆動された場合には、イベン
トフラグの設定処理を行う他、当該フラグの設定により
システム状態に変化があった場合に、設定命令で指定さ
れたフラグIDを有するフラグの設定という事象の発生
をスケジューリング管理部17に通知する。また、マル
チタスク制御装置が、イベントフラグの待ち命令で駆動
された場合には、駆動したタスクがWait状態に変化
した場合に、マルチタスク制御装置を駆動したタスクの
Wait状態への変化という事象の発生をスケジューリ
ング管理部17に通知する。
【0037】セマフォ管理部13は、マルチタスク制御
装置が、タスク若しくは割り込みルーチンから資源の獲
得要求又は資源開放要求により駆動された場合に、資源
の制御に関する事象の発生及び当該事象の発生に伴うシ
ステム状態の変化を管理する。具体的には、マルチタス
ク制御装置が、資源の開放要求で駆動された場合には、
カウンタの加算処理を行う他、当該資源に開放によりシ
ステム状態に変化があった場合に、資源の開放という事
象の発生をスケジューリング管理部17に通知する。ま
た、マルチタスク制御装置が、資源の獲得要求で駆動さ
れた場合には、駆動したタスクがWait状態に変化し
た場合に、マルチタスク制御装置を駆動したタスクのW
ait状態への変化という事象の発生をスケジューリン
グ管理部17に通知する。
【0038】メール管理部14は、マルチタスク制御装
置が、タスク若しくは割り込みルーチンからメールの受
信命令又は送信命令により駆動された場合に、メールに
関する事象の発生及び当該事象の発生に伴うシステム状
態の変化を管理する。具体的には、マルチタスク制御装
置がメールの送信命令で駆動された場合には、当該メー
ルの送信でシステム状態に変化があった場合に、送信命
令で指定されたメールボックスIDを有するメールボッ
クスへのメールの送信という事象の発生をスケジューリ
ング管理部17に通知する。また、マルチタスク制御装
置が、メールの受信命令で駆動された場合には、駆動し
たタスクがWait状態に変化した場合に、マルチタス
ク制御装置を駆動したタスクのWait状態への変化と
いう事象の発生をスケジューリング管理部17に通知す
る。
【0039】タスク状態データ保持部15には、実行中
のタスクを示す識別子が保持されている。状態遷移テー
ブル保持部16は、現在のシステム状態と、発生した事
象とから、状態遷移後のシステム状態を判定するための
状態遷移テーブルを保持する。状態遷移テーブルは、状
態遷移テーブル生成部20にて予め生成される。状態遷
移テーブルのデータ構造及び生成方法については後述す
る。
【0040】スケジューリング管理部17は、イベント
フラグ管理部12、セマフォ管理部13、メール管理部
14からの通知を受け、タスク状態データ保持部15及
び状態遷移テーブル保持部16の内容を参照して、タス
ク切替えが必要か否かを判定し、タスク切替えが必要な
場合にタスク切替え管理部18に指示する。タスク切替
え管理部18は、スケジューリング管理部17の指示に
従って、レジスタの退避/復帰等のタスクの切替え処理
を行うとともに、タスク状態データ保持部15の内容を
更新する。
【0041】後処理部19は、前処理部11において保
存された呼び出し元の識別子等の更新、削除等、マルチ
タスク制御の最後に毎回行う必要のある処理を行う。図
2は本実施の形態のマルチタスク制御装置の処理内容を
示すフロ−チャ−トである。本実施の形態のマルチタス
ク制御装置は、タスク若しくは割り込みルーチンからの
システム呼び出し命令を受けて動作を開始する(S10
1)。
【0042】まず、前処理部11がシステム呼び出しを
行ったタスク若しくは割り込みルーチンの識別子を保存
する等のOS共通処理を行う(S102)。次に、シス
テム呼び出し命令の内容に基づき、イベントフラグ管理
部12、セマフォ管理部13、メール管理部14の何れ
かによる処理が行われる。例えば、システム呼び出し時
の命令がイベントフラグの設定命令であれば、イベント
フラグ管理部12により、フラグ設定命令処理が行われ
る(S104)。また、イベントフラグの待ち命令であ
れば、イベントフラグ管理部12により、フラグ待ち命
令処理が行われる(S105)。
【0043】また、システム呼び出し時の命令が資源の
開放要求であれば、セマフォ管理部13により、資源開
放要求処理が行われ(S106)、資源獲得要求であれ
ばセマフォ管理部13により、資源獲得要求処理処理が
行われる(S107)。また、システム呼び出し時の命
令がメール送信命令であれば、メール管理部14によ
り、メール送信処理が行われ(S108)、メールの受
信命令であればメール管理部14により、メール受信処
理が行われる(S109)。
【0044】図3は、イベントフラグ管理部12が行う
フラグ設定命令処理の詳細な処理内容を示すフロ−チャ
−トである。イベントフラグ管理部12は、イベントフ
ラグの設定命令において指定されたフラグIDにより示
されたOSのイベントフラグ領域に、指定されたビット
パタンを設定し(S201)、当該フラグIDを指定し
てWait状態となっているタスクを検索する(S20
2)。検索の結果、Wait状態となっているタスクが
存在していれば(S203:Yes)、設定命令により
設定されたビットパタンが、Wait状態のタスクによ
って指定されているビットパタンと一致するか否かを調
べる(S204)。ビットパタンが一致していれば、W
ait状態のタスクが起床することによりシステム状態
が変化するため、イベントフラグ管理部12は、ビット
パタンのクリアを行い(S205)、イベントフラグの
設定という事象の発生をスケジューリング管理部17に
通知する(S206)。なお、ステップS205におけ
るビットパタンのクリアについては、OSの仕様や、処
理内容等によっては行わない場合もある。
【0045】Wait状態となっているタスクが存在し
ない(S203:No)か、タスクが存在してもビット
パタンが一致しない場合(S204:No)は、システ
ム状態に何ら変化がないことを意味するので、そのまま
イベントフラグ管理部12の処理を終了する。図4は、
イベントフラグ管理部12が行うフラグ待ち命令処理の
詳細な処理内容を示すフロ−チャ−トである。イベント
フラグ管理部12は、フラグの待ち命令において指定さ
れたフラグIDを有するOS領域に保持されているビッ
トパタンが、待ち命令により指定されたビットパタンと
一致しているか否かを比較する(S211)。一致して
いれば、システム状態に何ら変化が起きないことを意味
するのでイベントフラグ管理部12は、ビットパタンの
クリアを行い(S214)、処理を終了する。ビットパ
タンのクリア処理を行わない場合もあることはフラグ設
定命令処理と同様である。
【0046】一致していなければ、待ち命令を発行した
タスクがWait状態となるので、イベントフラグ管理
部12は、タスクのWait状態への変化という事象の
発生をスケジューリング管理部17に通知する(S21
3)。図5は、セマフォ管理部13が行う資源開放要求
処理の詳細な処理内容を示すフロ−チャ−トである。セ
マフォ管理部13は、資源開放命令において指定された
IDにより示された資源の割当可能量を保持しているカ
ウンタに、開放された資源の量を加算し(S301)、
当該資源の獲得待ちとしてWait状態になっているタ
スクが存在するか否かを検索する(S302)。検索の
結果、Wait状態となっているタスクが存在する場合
にはステップS301におけるカウンタの加算により起
床するタスクが発生するか否かを判定する(S30
4)。起床するタスクが発生すれば、当該起床するタス
クの資源獲得要求量だけ、カウンタの減算を行い(S3
05)、資源の開放という事象の発生をスケジューリン
グ管理部17に通知する(S306)。
【0047】Wait状態となっているタスクが存在し
ない場合(S303:No)か、Wait状態のタスク
が存在しても、当該タスクによる資源の獲得要求量が更
新後のカウンタの値を上回っている場合(S304:N
o)には、システム状態に何ら変化がないことを意味す
るので、そのままセマフォ管理部13の処理を終了す
る。
【0048】図6は、セマフォ管理部13が行う資源獲
得要求処理の詳細な処理内容を示すフロ−チャ−トであ
る。セマフォ管理部13は、資源獲得要求の命令中で指
定されたIDにより示された資源の割当可能量を保持し
ているカウンタに保持されている値を、命令中で指定さ
れた資源の獲得要求量と比較する(S311)。カウン
タに保持されている値が資源の獲得要求量以上である場
合には、当該タスクが要求した資源を確保して、そのま
ま処理の実行を継続することを意味する。従って、セマ
フォ管理部13はカウンタの値から資源の要求量を減算
して(S314)、処理を終了する。
【0049】カウンタに保持されている値が資源の獲得
要求量を下回っている場合には、当該タスクは資源待ち
としてWait状態となるため、セマフォ管理部13
は、タスクのWait状態への変化という事象の発生を
スケジューリング管理部17に通知する(S313)。
図7は、メール管理部14が行うメール送信処理の詳細
な処理内容を示すフロ−チャ−トである。
【0050】メール管理部14は、命令中で指定された
IDにより示されたメールボックスにメッセージを送信
する(S401)。その後、当該メールボックスへのメ
ールの送信を待ってWait状態となっているタスクが
存在するか否かを検索する(S402)。Wait状態
のタスクが存在する場合は、当該Wait状態のタスク
が起床することを意味する。この場合、メール管理部1
4は、当該Wait状態のタスクにメールを渡し(S4
04)、メールの受信という事象の発生をスケジューリ
ング管理部17に通知する(S405)。Wait状態
のタスクが存在しなければ(S403:No)、システ
ム状態に何ら変化がないことを意味するので、そのまま
メール管理部14の処理を終了する。
【0051】図8は、メール管理部14が行うメール受
信処理の詳細な処理内容を示すフロ−チャ−トである。
メール管理部14は、命令中で指定されたメールボック
スIDを有するメールボックスの内容を検索する(S4
11)。指定されたメールボックスにメールが存在すれ
ば、当該タスクがそのメールを受信し、そのまま処理を
継続実行できる事を意味するので、メール管理部14
は、呼び出したタスクにメールを渡し(S414)、そ
のまま処理を終了する。
【0052】指定されたメールボックスにメールが存在
しなければ(S412:No)、受信命令を発行したタ
スクは、他のタスクからのメールの送信があるまでWa
it状態となるため、メール管理部14は、タスクのW
ait状態への変化という事象の発生をスケジューリン
グ管理部17に通知する(S413)。以上のように、
イベントフラグ管理部12、セマフォ管理部13、メー
ル管理部14の何れかによる処理が終了すると、図2の
フロ−チャ−トに戻って、各事象管理部からのスケジュ
ーリング管理部17への事象の発生の通知が行われたか
否かを見る(S110)。ここで、事象の発生の通知が
行われていないということは、システム状態に何ら変化
がないことを意味するので、スケジューリング管理部1
7及びタスク切替え管理部18の処理は行われず、その
ままステップS111へと進む(S110:No)。
【0053】各事象管理部から、スケジューリング管理
部17への通知があった場合には、スケジューリング管
理部17の処理が行われる(S111)。図9はスケジ
ューリング管理部17の詳細な処理内容を示すフロ−チ
ャ−トである。スケジューリング管理部17は、まずイ
ベントフラグ管理部12、セマフォ管理部13、メール
管理部14の何れかからの通知を受けて事象の発生を検
知し(S501)、状態遷移テーブル保持部16を参照
する。本実施の形態においては、スケジューリング管理
部17は現在のシステム状態を表す状態番号(システム
状態には、後述するように状態番号が割り振られてい
る)を保持しているので、現在の状態番号と、発生した
事象とから、状態遷移後の状態番号を判定する(S50
2)。
【0054】図15は状態遷移テーブルのデータ構造を
示す図である。状態遷移テーブルの生成方法について
は、後で詳細に説明するが、ここでは、状態遷移テーブ
ルの使用方法について簡単に説明する。図15に示す状
態遷移テーブルは、縦軸に現在の状態番号をとり、横軸
に発生した事象をとる。状態番号とは、システム状態ご
とに割り振られた番号である。また、この例では横軸と
して、Run状態のタスクがWait状態となる場合
(以下「Wait状態への変化」と呼ぶ)、フラグの設
定命令が発行され、フラグIDが「FLAG_A」であ
るイベントフラグ領域にビットパタンが設定された場合
(以下「フラグAの設定」と呼ぶ)、メールボックスI
Dが「MBX_B」であるメールボックスにメールが送
信された場合(以下「メッセージBの送信」と呼ぶ)、
メールボックスIDが「MBX_C」であるメールボッ
クスにメールが送信された場合(以下「メッセージCの
送信」と呼ぶ)の四つの事象が取られており、現在の状
態番号により示されるシステム状態において、それぞれ
の事象が発生した場合の、状態遷移後の状態番号が示さ
れている。
【0055】即ち、図15の状態遷移テーブルでは、例
えば状態番号1のシステム状態において、マルチタスク
制御装置を駆動したタスクがWait状態となった場合
には、状態番号4のシステム状態に遷移することを意味
している。ここで、状態番号は、優先度の高いタスクが
Run状態であるシステム状態ほど小さい状態番号を有
するように割り振られている。図15の例では、状態番
号が1、2、3であるシステム状態では、最も優先度の
高いタスクAがRun状態であり、状態番号が4、5で
あるシステム状態では、次に優先度の高いタスクBがR
un状態であり、状態番号が6であるシステム状態で
は、最も優先度の低いタスクCがRun状態である。こ
のように状態番号を割り振ることにより、状態番号か
ら、Run状態となるタスクを判別することが容易にな
る。
【0056】スケジューリング管理部17は、まず、タ
スク状態データ保持部15に保持されているタスク状態
データを参照して、現在Run状態であるタスク、即ち
マルチタスク制御装置を駆動したタスクを判定する。次
に、状態遷移テーブルを参照して得られる状態遷移後の
システム状態を表す状態番号から、状態遷移後にRun
状態となるタスクを判定し、両者を比較する(S50
3)ことによりタスク切替えが必要か否かを判定する
(S504)。
【0057】ここで、呼び出し元が割り込みルーチンで
ある場合にはタスク切替えはできないので、タスク切替
えは必要でないと判定する(S505)。以上の判定に
より、タスク切替えが必要である場合にはタスク切替え
管理部18にタスクの切替えを要求して(S506)処
理を終了する。なお、呼び出し元が割り込みルーチンで
ある場合(S505:Yes)には、割り込みルーチン
に復帰する際にタスク切替えを行うことはできないが、
割り込みルーチンによる処理が終了して、タスクに制御
が戻るときにタスクの切替えを行う必要がある。そのた
め、タスク切替えのマーク付けという処理を行う(S5
07)。タスク切替えのマーク付けとは、ステップS5
04における状態遷移後のタスクについて、後のタイミ
ング(タスクに制御が戻るとき)でのタスク切替えを行
うために、当該状態遷移後に行うべきタスクの識別子等
を保存する処理である。具体的には、OS領域に設けら
れている所定の領域に、切替えるべきタスクを表す識別
子を保存する等の方法で行う。
【0058】スケジューリング管理部17の処理が終了
した後は、図2のフロ−チャ−トに戻って、タスク切替
えが必要ない場合(S112:No)には、タスク切替
え管理部18による処理は行われずにそのままステップ
S114へと進む。タスク切替えが必要な場合は、タス
ク切替え管理部18により、レジスタの退避/復帰等の
処理及びタスク状態データ保持部15の更新処理が行わ
れ(S113)、後処理部19にて、呼び出し元を表す
情報の更新、削除等の共通処理が行われて(S11
4)、マルチタスク制御装置の処理が終了する。
【0059】以上のように、本実施の形態のマルチタス
ク制御装置では、事象の発生が検知された場合に、キュ
ー操作やタスク間の優先度の比較等の処理を行わず、状
態遷移テーブルを参照することにより状態遷移後のシス
テム状態を判定するという方法をとっているので、スケ
ジューリング処理を高速に行うことが可能となる。次
に、状態遷移テーブルの生成方法について説明する。
【0060】図10は、状態遷移テーブル生成部20の
詳細な構成を示すブロック図である。同図に示されるよ
うに、状態遷移テーブル生成部20は、状態生成部2
1、状態抽出部22、テーブル生成部23から構成され
る。なお、同図に示されるシステム定義テーブル保持部
30は、システム定義テーブルを保持している部分であ
り、従来のマルチタスク制御装置においても存在してい
たものである。最も、システム定義テーブル保持部30
が保持するテーブルの内容については、OSの仕様等に
よって異なる場合もある。
【0061】図11はシステム定義テーブルの内容の一
例を示す図である。同図は、種々存在するシステム定義
テーブルの中で、状態遷移テーブルの生成に必要な部分
を表したものである。同図に示されるように、システム
定義テーブルの中には図11(a)に示すタスク定義テ
ーブルと、図11(b)に示す同期通信機能定義テーブ
ルとが存在する。図11(a)のタスク定義テーブル
は、タスク名、タスクの優先度、スタックサイズ等を定
義する。同図の優先度はその数字が小さいほど、優先度
が高いことを意味している。本実施の形態の例では、タ
スクA、タスクB、タスクCの三つのタスクを定義して
いるが、タスクの数に特に制限はなく、また複数のタス
クに同一の優先度を付与することも可能である。図11
(b)の同期通信機能定義テーブルには、発生し得る事
象に関連するフラグID、資源のID、メールボックス
IDと、当該事象と関連のあるタスク名とが定義されて
いる。同図の例では、フラグIDが「FLAG_A」で
あるイベントフラグがタスクAと関連している旨の定義
がなされているが、これは、「FLAG_A」というフ
ラグIDを有するイベントフラグの設定が事象の発生と
して検知され、当該事象の発生によりタスクAが起床す
ることを意味している。
【0062】メールボックスID「MBX_B」、「M
BX_C]についても同様であり、当該メールボックス
へのメールの送信が事象の発生として検知され、当該事
象の発生によりタスクB、タスクCがそれぞれ起床する
ことを意味している。状態生成部21は、システム定義
テーブル保持部30に保持されているシステム定義テー
ブルを参照して、システム状態テーブルを生成する。
【0063】図12は、システム状態テーブルのデータ
構造を示す図である。同図に示されるように、システム
状態テーブルは、システム定義テーブルに定義されてい
るタスクが取り得る状態の組み合わせを全て定義したも
のである。同図の例では三つのタスクが定義されてお
り、各々の優先度は全て異なっているが、複数のタスク
の優先度が同一である場合も有り得る。そのような場合
は、同一の優先度のタスクについては、起床した順番に
よりシステム状態が異なるものとみなしてシステム状態
テーブルを生成する。
【0064】状態抽出部22は、OS規則に基づく状態
抽出部221と、アプリケーション固有規則に基づく状
態抽出部222とを含む。例えば、図13(a)に示す
ようなOSの機能に基づくシステム状態に関する規則
(以下「OS規則」と呼ぶ)及び図13(b)に示すよ
うなアプリケーション固有の理由に基づくシステム状態
に関する規則(以下「アプリケーション固有規則」と呼
ぶ)が存在する場合に、OS規則に基づく状態抽出部2
21は、OS規則に合致するシステム状態のみをシステ
ム状態テーブルから抽出し、アプリケーション固有規則
に基づく状態抽出部222は、アプリケーション固有規
則に合致するシステム状態のみをさらに抽出する。状態
抽出部22は、抽出されたシステム状態に状態番号を割
り振り直すことにより、システム状態最小テーブルを生
成する。図14(b)は、システム状態最小テーブルの
一例である。
【0065】テーブル生成部23は、システム状態最小
テーブルから状態遷移テーブルを生成する。次に、状態
遷移テーブル生成部20の処理内容について説明する。
図16は状態遷移テーブル生成部20の処理内容を示す
フロ−チャ−トである。状態遷移テーブル生成部20は
まず、状態生成部21による処理を行う(S701)。
状態生成部21は、前述のとおり、図11に示すシステ
ム定義テーブルを参照して、図12に示すシステム状態
テーブルを生成する。具体的には、図11(a)に示さ
れるタスク定義テーブルからタスク名を抽出し、図11
(b)に示される同期通信機能定義テーブルから関連す
る事象を抽出して、各々のタスクが取り得る状態の組み
合わせを全て定義することにより、システム状態テーブ
ルを生成する。ここで、Wait(Fa)は、フラグI
D「FLAG_A」を有するイベントフラグの設定を待
つWait状態であり、Wait(Mb)は、メールボ
ックスID「MBX_B」を有するメールボックスへの
メールの送信を待つWait状態であることを意味す
る。Wait(Mc)についてもWait(Mb)と同
様である。
【0066】システム状態テーブルの生成を終了する
と、図16のフロ−チャ−トに戻って、状態遷移テーブ
ル生成部20は、状態抽出部22による処理として、ま
ず、OS規則に基づく状態抽出部221による処理を行
う(S702)。図17はOS規則に基づく状態抽出処
理の詳細な処理内容を示すフロ−チャ−トである。OS
規則に基づく状態抽出部221は、まず図13(a)に
示すOS規則(1)に基づいて、システム状態テーブル
から、Run状態のタスクがシステムで二つ以上存在す
る組み合わせを削除する(S801)。この処理によ
り、システム状態テーブルから、状態番号が5、6、
8、9、11〜18、20〜27であるシステム状態を
表す組み合わせが抽出される。
【0067】次に、OS規則に基づく状態抽出部221
は、OS規則(2)に基づいて、最高優先度のタスクが
Ready状態となっている組み合わせを削除する(S
802)。本実施の形態の例では、最高優先度のタスク
はタスクAであるので、この処理により、状態番号が
5、6、8、9、20〜27であるシステム状態を表す
組み合わせが抽出される。
【0068】次に、OS規則に基づく状態抽出部221
は、OS規則(3)に基づいて、Run状態のタスクが
存在する場合に、そのタスクよりも優先度の高いタスク
がReady状態となっている組み合わせを削除する
(S803)。本実施の形態の例では、タスクA、タス
クB、タスクCの順に優先度が高いので、ステップS8
02における抽出の結果を考慮すると、本ステップの処
理で削除の対象となるのはタスクBがReady状態で
あり、かつ、タスクCがRun状態である組み合わせで
ある。即ち、この処理により、状態番号が5、6、8、
9、20、21、23〜27であるシステム状態を表す
組み合わせが抽出される。
【0069】最後に、OS規則に基づく状態抽出部22
1は、OS規則(4)に基づいてReady状態のタス
クが存在し、かつ、Run状態のタスクが存在しない組
み合わせを削除する(S804)。この処理により、状
態番号が5、6、8、9、20、21、25、27であ
るシステム状態を表す組み合わせが抽出される。OS規
則に基づく状態抽出処理を終了すると、図16のフロ−
チャ−トに戻って状態抽出部22は、アプリケーション
固有規則に基づく状態抽出処理を行う(S703)。ア
プリケーション固有規則に基づく状態抽出部222は、
図13(b)に示すアプリケーション固有規則に基づい
て、OS規則に基づく状態抽出処理で抽出されたシステ
ム状態から、タスクBとタスクCとが同時にWait状
態となる組み合わせを削除する。この処理によリ、状態
番号が5、6、8、20、21、25であるシステム状
態を表す組み合わせが抽出される。
【0070】以上の抽出処理により、状態抽出部22
は、図14(a)に示すような状態抽出後のシステム状
態テーブルを得る。状態抽出部22は、テーブルのサイ
ズ効率等の点で有利なように状態番号を割り当て直し、
最終的に図14(b)に示すようなシステム状態最小テ
ーブルを生成する。前述の如く、本実施の形態では、状
態番号の割り当ては、優先度の高いタスクがRun状態
であるシステム状態ほど小さい状態番号を有するように
行っているが、状態番号の順番については、逆に、優先
度の高いタスクがRun状態であるシステム状態ほど大
きい状態番号を有するように行うことも可能である。何
れの場合も、状態番号の範囲からRun状態となるタス
クを判別することができる。
【0071】状態抽出部22によるシステム状態最小テ
ーブルの生成が終了すると、テーブル生成部23が、シ
ステム状態最小テーブルと、システム定義テーブルとを
参照して、状態遷移テーブルを生成する(S704)。
状態遷移テーブルとは、前述のとおり、現在のシステム
状態と、発生した事象とから、状態遷移後のシステム状
態を判定すべく定義されたテーブルである。
【0072】図18及び図19は、テーブル生成部23
の詳細な処理内容を示すフロ−チャ−トである。テーブ
ル生成部23は、まず、システム定義テーブルを参照し
て、タスク及びタスクに関連した事象の情報を抽出する
(S901)。例えば図11に示した例では、タスク定
義テーブルから切替えが行われるタスク及びタスクの優
先度が抽出され、同期通信機能定義テーブルに定義され
ているタスクに関連したフラグID、メールボックスI
D等の情報からはタスクに関連した事象が抽出される。
ここで、抽出とは必ずしも別の領域に抽出することを意
味せず、テーブルの生成中に必要に応じてシステム定義
テーブルを参照しても差し支えない。
【0073】ループAの処理は、システム状態最小テー
ブルに含まれる全てのシステム状態について順次行われ
る(S902)。テーブル生成部23は、システム状態
最小テーブルから一つずつシステム状態を読み出す(S
903)。ループBの処理は、Run状態のタスクがW
ait状態に変化する場合と、ステップS901で同期
通信機能定義テーブルから抽出された事象が発生した場
合とを含む、発生し得る全ての事象について行われる
(S904)。
【0074】即ち、ループA及びループBの処理は、ス
テップS903において読み出されたシステム状態を現
在のシステム状態と仮定し、当該システム状態において
事象が発生した場合の状態遷移を、発生した事象ごとに
シミュレートして、図15のような状態遷移テーブルの
マトリックスを一つずつ埋めていく処理である。以下、
ループBにおける処理の内容について、具体例を示しな
がら詳細に説明する。
【0075】テーブル生成部23は、まず、どの事象が
発生した場合についてシミュレートを行うかを決定する
(S905)。その後、ステップS905において決定
された事象が、Run状態のタスクがWait状態に変
化する場合であるか否かを判定する(S906)。これ
は、Run状態のタスクがWait状態に変化する場合
と、事象の発生によりタスクが起床した場合とでは、明
らかに異なる種類の状態遷移を伴うからである。
【0076】Run状態のタスクがWait状態に変化
する場合についての状態遷移のシミュレート処理であれ
ば(S906:Yes)、まず、選択されたシステム状
態においてRun状態であったタスクが、Wait状態
に変化するものと仮定する(S907)。例えば、状態
番号1のシステム状態において、Run状態のタスクが
Wait状態に変化した場合を仮定すれば、図20に示
す例のように、まずタスクAがWait状態に変化した
ものとする(図20(b))。
【0077】次に、残りのタスクの中で、Ready状
態となっているタスクがあるか否かを判定する(S90
8)。Ready状態のタスクがなければ、図19のフ
ロ−チャ−トに移って、状態遷移後のシステム状態の状
態番号を検索する(S909)。ここで、該当するシス
テム状態がシステム状態最小テーブルに存在すれば(S
910:Yes)、該当するシステム状態の状態番号を
状態遷移テーブルの対応する位置に保存する(S91
1)。しかし、前記システム状態がシステム状態最小テ
ーブルに存在しない場合は、状態遷移後のシステム状態
を未定義とする(S912)。この場合、状態遷移テー
ブルのマトリックスには、状態遷移後の状態番号が未定
義であることを示すフラグ(図15の例では「−」)が
設定される。
【0078】ステップS908において、Ready状
態のタスクが存在すれば、図19のフロ−チャ−トに移
って、Ready状態のタスクの中で最も優先度が高い
タスクが複数存在するか否かを判定する(S913)。
図20の例であれば、図20(b)の状態においてRe
ady状態のタスクの中で最も優先度の高いタスクはタ
スクBのみである。従ってステップS913ではNoと
判定されることになる。
【0079】最も優先度の高いReady状態のタスク
が一つであれば(S913:No)、事象の発生によ
り、そのタスクがRun状態となるため、Ready状
態のタスクをRun状態として状態遷移後のシステム状
態を決定する(S914)。図20の例では、タスクB
がRun状態となる(図20(c))。最も優先度の高
いReady状態のタスクが複数存在する場合は、どの
タスクをRun状態とするかをシステムの仕様等に基づ
いて決定しておく必要がある。例えば最先に起床したタ
スクをRun状態にする方法が考えられるが、他の方法
で決定してもよい。何れにしても、状況に応じて適切な
タスクがRun状態に変化することになる(S91
5)。ここでの詳細な説明は割愛するが、優先度が同一
であるタスクについては、システム状態テーブル生成時
に起床した順番ごとに別のシステム状態として定義する
ことにより対処を行う。
【0080】以上のように状態遷移後のシステム状態が
決定されると、決定されたシステム状態に対応する状態
番号をシステム状態最小テーブルから検索し(S90
9)、該当するシステム状態が、システム状態最小テー
ブルに存在すれば(S910:Yes)、検索された状
態番号を状態遷移テーブルに保存する(S911)。図
20の例であれば、図20(c)に示されるシステム状
態の状態番号は4であるため、図20(d)に示される
ように、状態番号4が状態遷移テーブルの所定の位置に
保存されることになる。ステップS910において、シ
ステム状態がシステム状態最小テーブルに存在しなけれ
ば、状態遷移後のシステム状態を未定義とする(S91
2)。
【0081】一方、ステップS906において、Noと
判定された場合、即ち、Run状態のタスクがWait
状態となる場合以外の事象の発生を仮定する場合には、
ステップS905で決定された事象に関連するタスク
が、現在のシステム状態においてWait状態であるか
否かを判定する(S916)。Wait状態でない場合
とは、システム状態に何ら変更が無いことを意味するも
のであり、状態遷移テーブルが参照されない場合である
ので、状態遷移後のシステム状態を未定義とし(S91
2)、ループBの先頭に戻る。Wait状態である場合
は、事象の発生によりタスクが起床することとなるの
で、当該Wait状態のタスクをReady状態とする
(S917)。
【0082】事象の発生によるシステム状態の遷移をシ
ミュレートする処理の一例を図21に示す。同図に示さ
れる例は、状態番号6のシステム状態において、イベン
トフラグID「FLAG_A」を有するイベントフラグ
のOS領域に、タスクCが発行したフラグ設定命令によ
りビットパタンの設定がなされることによりタスクAが
起床する場合の例である。同図に示される例では、「F
LAG_A」のビットパタンの一致により、タスクAが
Ready状態となる(図21(b))。
【0083】次に、テーブル生成部23はステップS9
17でReady状態となったタスクの優先度と、現在
のシステム状態においてRun状態であるタスクの優先
度とを比較する(S918)。Run状態のタスクの優
先度の方が、Ready状態のタスクの優先度より高い
場合(S918:Yes)には、Run状態のタスクが
そのまま継続実行されるので、図19のフロ−チャ−ト
に移り、状態遷移後のシステム状態を表す状態番号を検
索し(S909)、システム状態がシステム状態最小テ
ーブルに存在すれば(S910:Yes)、状態番号を
状態遷移テーブルのマトリックスの所定の位置に保存す
る(S911)。
【0084】図21(b)に示す例のように、Read
y状態のタスクの優先度の方が、Run状態のタスクの
優先度より高い場合(S918:No)には、Run状
態のタスクをReady状態に変更し(S919)、図
19のフロ−チャ−トのステップS913に進む。図2
1(b)の例ではステップS919においてタスクCが
Ready状態に変更され(図21(c))、先に説明
したステップS913の判定の後、ステップS914に
おいてタスクAをRun状態とする(図21(d))。
【0085】以上のように状態遷移後のシステム状態が
決定されると、ステップS909において、決定された
システム状態に対応する状態番号をシステム状態最小テ
ーブルから検索し、システム状態がシステム状態最小テ
ーブルに存在すれば(S910:Yes)、検索された
状態番号を状態遷移テーブルに保存する(S911)。
図21の例であれば、図21(d)に示されるシステム
状態の状態番号が3であるため、図21(e)に示され
るように、状態番号3が状態遷移テーブルの所定の位置
に保存されることになる。
【0086】以上のような処理を発生し得る全ての事象
について行い(S920)、さらに、システム状態最小
テーブルに含まれている全ての状態について行う(S9
21)ことで、図15に示すような状態遷移テーブルを
機械的に生成することができる。図15に示す状態遷移
テーブルにおいて、網掛け部分の状態遷移においてタス
ク切替えが発生することを意味している。
【0087】なお、本実施の形態では、最も一般的な例
として、各タスクが取り得る状態がWait状態、Re
ady状態、Run状態の三種類であるシステムについ
て詳細に説明したが、OSの機能によっては、他の状態
を取り得る場合もある。例えばサスペンド状態、サスペ
ンド待機状態、休止状態等である。図22に、それらの
状態を含めた状態遷移図を示す。ここで、前記各状態に
ついて簡単に説明しておくと、サスペンド状態とは、タ
スクが強制的な待ち状態に置かれている状態である。具
体的には、当該タスクがReady状態である場合にお
いて他のタスクから中断命令が発行された場合や、サス
ペンド待機状態において、フラグの設定命令等により待
ちが解除された場合にとり得る状態であり、他のタスク
から、再開命令が発行されることによりReady状態
となる。ここで、中断命令とは、例えば"suspend(taskI
D)"というようにタスクIDを指定して発行され、再開
命令も、例えば"resume(taskID)"というようにタスクI
Dを指定して発行されるが、何れもシステム状態の変化
を伴う。
【0088】サスペンド待機状態とは、Wait状態に
おいて中断命令が発行された場合にとり得る状態であ
り、前述の如く、事象の発生による待ちの解除によりサ
スペンド状態に遷移する。また、他のタスクから再開命
令が発行された場合には、Wait状態に戻る。休止状
態とは、スタック等のタスク実行のための最小限の資源
をも開放し、タスクの実行を休止している状態である。
休止状態へは、Run状態のタスク自身の中で終了命令
を発行した場合や、Ready状態、Wait状態等の
状態から強制終了命令が発行された場合に遷移する。ま
た、休止状態からは、他のタスクから起動命令が発行さ
れた場合に、Ready状態に移行する。
【0089】ここで、終了命令は、例えば"exittask"と
いうような命令をRun状態のタスク自体が発行するこ
とにより、当該Run状態のタスク自身を休止状態に遷
移させる。中断命令は、例えば"terminate(taskID)"と
いうようにタスクIDを指定して発行され、起動命令
は、例えば"starttask(taskID)"というようにタスクI
Dを指定して発行される。何れもシステム状態の変化を
伴う。
【0090】しかしながら、図22に示された状態遷移
図及び以上の説明から明らかなように、何れの状態につ
いても、マルチタスク制御装置を駆動する際のシステム
呼び出し命令に基づく事象の発生により状態遷移が起こ
る点において前記Wait、Ready、Runの三種
類の状態と本質的に同一であり、状態遷移テーブルを用
いたタスク切替えについても、状態遷移テーブルの生成
についても、今回詳細に説明した方法を若干拡張するこ
とにより容易に適用することが可能である。
【0091】即ち、タスク切替え時にあっては、前記中
断命令や、再開命令等の発行を事象の発生とみなして、
状態遷移テーブルを参照することにより状態遷移後のシ
ステム状態を判定し、さらに状態遷移後のシステム状態
から状態遷移後に実行すべきタスクを判定する。状態遷
移テーブルの生成においては、本実施の形態において説
明したような事象発生時の状態遷移のシミュレート処理
を、前記中断命令や、再開命令等についても、状態遷移
図に基づいて行うようにすれば良い。
【0092】また、本実施の形態では、状態遷移テーブ
ルとして、状態番号番号ごとに、各事象が発生した後の
システム状態を表す状態番号を保持する形としたが、テ
ーブルのフォーマットは、本実施の形態の例に限られ
ず、状態遷移後に実行すべきタスクが決定できるもので
あれば他のフォーマットにしてもよく、例えば、システ
ム状態を表すテーブルを直接保持するようにしても構わ
ない。
【0093】また、本実施の形態では、処理の高速化を
優先して、タスク状態データ保持部15に、現在実行中
のタスクに関する情報を保持する形にしたが、前述の如
く、スケジューリング管理部17に保持されている状態
番号から、現在実行中のタスクを判別することも可能で
ある。また、本実施の形態ではスケジューリング管理部
17にその時点での状態番号を保持したが、システム状
態を認識することができれば、必ずしも状態番号の形で
保持する必要はない。また、システム状態を識別するた
めの情報も、常に保持せずに、事象の発生時にシステム
状態を検知するようにしてもよい。
【0094】また、状態抽出部22による状態抽出処理
においても、本実施の形態で用いたシステム状態に関す
る規則以外のシステム状態に関する規則に基づいて、シ
ステム状態最小テーブルを生成することも可能である。
また、本実施の形態では、前処理部11で行われる処理
について、その全ての処理を毎回実行するようにした
が、前処理部11にて行うべき処理の中には、必ずしも
毎回行う必要はない処理が含まれている場合もある。そ
のような処理については、例えば各事象管理部によりシ
ステム状態の変化が検知された場合のみに、各事象管理
部の処理の後で行うようにすることも可能である。その
場合には、前処理部11の処理として行われなかった処
理に対応する後処理については、後処理部19において
も行う必要はない。
【0095】
【発明の効果】以上の説明から明らかなように、本発明
に係るマルチタスク制御装置は、複数のタスクを実行す
るシステムに備えられ、事象の発生に応じて、前記シス
テムが実行するタスクの切替えを行うマルチタスク制御
装置において、前記複数のタスクのそれぞれが、実行状
態、実行可能状態、待機状態を含む各種の状態の中のど
の状態にあるかを表すシステム状態ごとに、各事象が発
生した場合に次に実行すべきタスクを決定する情報を保
持する状態遷移テーブルと、事象の発生を検知する事象
検知手段と、前記事象検知手段により事象の発生が検知
された場合に、前記状態遷移テーブルを参照し、その時
点におけるシステム状態から次に実行すべきタスクを判
定する判定手段と、前記判定手段の判定に応じてタスク
の切替えを行うタスク切替え手段とを備え、判定手段
は、前記事象検知手段により事象の発生が検知された場
合に、システム状態ごとに、各事象が発生した場合に次
に実行すべきタスクを決定する情報を保持する状態遷移
テーブルを参照して、その時点におけるシステム状態か
ら次に実行すべきタスクを判定するので、事象の発生時
に、状態遷移キューのサーチ、キュー接続などのキュー
操作や、Run状態のタスクとのReady状態のタス
クの優先度の比較処理、Ready状態のタスク同士の
優先度の比較処理、タスク切替え時の状態遷移キューの
繋ぎかえ操作等を行う必要がなく、スケジューリング処
理を高速に行うことが可能になるという効果がある。
【0096】また、前記判定手段は、その時点における
システム状態を保持する保持部を有することも可能であ
る。その場合には、各事象の発生時に、その時点でのシ
ステム状態を検知する必要がないため、スケジューリン
グ処理をより高速に行うことができるという効果があ
る。また、前記状態遷移テーブルは、前記システムにお
いて存在し得るシステム状態について、システム状態ご
とに、各事象が発生した場合の遷移先のシステム状態を
保持することが可能である。前記状態遷移テーブルが前
記システムにおいて存在し得るシステム状態についての
み保持することにより、状態遷移テーブルを保持する領
域が節約できるとともに、システム状態ごとに、各事象
が発生した場合の遷移先のシステム状態を保持すること
により、状態遷移後のシステム状態を、各々のタスクの
状態を調べることなく、迅速に認識することができると
いう効果がある。
【0097】また、前記状態遷移テーブルにおいて、各
々のシステム状態には、優先度の高いタスクが実行状態
であるシステム状態から、昇順又は降順にて状態番号が
割り振られ、前記判定手段は、状態遷移テーブルに保持
されている遷移先のシステム状態の状態番号から次に実
行すべきタスクを判定することが可能である。システム
状態の抽出処理後に、システム状態に状態番号を割り振
り直すことにより、状態遷移テーブルを保持する領域が
節約できるとともに、前記の如く状態番号を割り振って
おけば、前記判定手段が、どのタスクがRun状態とな
るかを容易に判定できるという効果がある。
【0098】また、タスクと、タスクごとの優先度と、
各々のタスクを実行可能状態に起床させる事象との定義
を含むシステム定義テーブルから、前記状態遷移テーブ
ルを生成する状態遷移テーブル生成手段をさらに備える
こともできる。この場合には、状態遷移テーブル生成手
段が、システム定義テーブルから機械的に状態遷移テー
ブルを生成することにより、状態遷移テーブルの生成ミ
スを防止することができるという効果がある。
【0099】また、前記状態遷移テーブル生成手段は、
前記システム定義テーブルから、各タスクの状態の全て
の組み合わせを生成する状態生成手段と、所定のシステ
ム状態に関する規則に従って、前記状態生成手段が生成
した組み合わせから、前記システムにおいて存在し得な
いシステム状態を表す組み合わせを削除することによ
り、前記システムにおいて存在し得るシステム状態を表
す組み合わせを抽出する状態抽出手段と、前記状態抽出
手段により抽出された組み合わせから、前記状態遷移テ
ーブルを生成するテーブル生成手段とを備えることが可
能である。
【0100】状態生成手段が、システム定義テーブルを
参照して、各タスクの状態の全ての組み合わせを生成
し、状態抽出手段は、前記各タスクの状態の全ての組み
合わせから、システムにおいて存在し得ないシステム状
態を表す組み合わせを削除することにより、システムに
おいて存在し得るシステム状態を表す組み合わせを抽出
し、テーブル生成手段は、前記状態抽出手段により抽出
された組み合わせから状態遷移テーブルを生成すること
で、システムにおいて存在し得ないシステム状態につい
て状態遷移テーブルを生成することがなくなり、状態遷
移テーブルを保持する領域を節約することが可能となる
他、簡単なアルゴリズムで、状態遷移テーブルの生成ミ
スを防止することができるという効果がある。
【0101】また、前記状態抽出手段は、前記システム
の機能に基づくシステム状態に関する規則と、アプリケ
ーション固有の理由に基づくシステム状態に関する規則
とに従って前記システム状態を表す組み合わせを抽出す
ることが可能である。このような処理を行うことによ
り、オぺレーティングシステムの機能の変更や、アプリ
ケーションの変更に柔軟に対応できるという効果を有す
る。
【図面の簡単な説明】
【図1】本発明の一実施の形態におけるマルチタスク制
御装置の構成を示すブロック図である。
【図2】本発明の一実施の形態におけるマルチタスク制
御装置の処理内容を示すフロ−チャ−トである。
【図3】イベントフラグ管理部が行うフラグ設定命令処
理の詳細な処理内容を示すフロ−チャ−トである。
【図4】イベントフラグ管理部が行うフラグ待ち命令処
理の詳細な処理内容を示すフロ−チャ−トである。
【図5】セマフォ管理部が行う資源開放要求処理の詳細
な処理内容を示すフロ−チャ−トである。
【図6】セマフォ管理部が行う資源獲得要求処理の詳細
な処理内容を示すフロ−チャ−トである。
【図7】メール管理部が行うメール送信処理の詳細な処
理内容を示すフロ−チャ−トである。
【図8】メール管理部が行うメール受信処理の詳細な処
理内容を示すフロ−チャ−トである。
【図9】スケジューリング管理部の詳細な処理内容を示
すフロ−チャ−トである。
【図10】状態遷移テーブル生成部の構成を示すブロッ
ク図である。
【図11】(a)システム定義テーブルに含まれるタス
ク定義テーブルの内容の一例を示す図である。 (b)システム定義テーブルに含まれる同期通信機能定
義テーブルの内容の一例を示す図である。
【図12】システム状態テーブルのデータ構造を示す図
である。
【図13】(a)OS規則の一例を示す図である。 (b)アプリケーション固有規則の一例を示す図であ
る。
【図14】(a)状態抽出部による状態抽出後のシステ
ム状態テーブルの一例を示す図である。 (b)システム状態最小テーブルの一例を示す図であ
る。
【図15】状態遷移テーブルの一例を示す図である。
【図16】状態遷移テーブル生成部の処理内容を示すフ
ロ−チャ−トである。
【図17】OS規則に基づく状態抽出処理の処理内容を
示すフロ−チャ−トである。
【図18】テーブル生成部の処理内容を示すフロ−チャ
−トである。
【図19】テーブル生成部の処理内容を示すフロ−チャ
−トである。
【図20】テーブル生成部の処理内容を説明するための
図である。
【図21】テーブル生成部の処理内容を説明するための
図である。
【図22】サスペンド状態、サスペンド待機状態、休止
状態を含めた状態遷移図である。
【図23】従来のマルチタスク制御装置の構成を示すブ
ロック図である。
【図24】従来のマルチタスク制御装置の動作について
説明するための図である。
【符号の説明】
11 前処理部 12 イベントフラグ管理部 13 セマフォ管理部 14 メール管理部 15 タスク状態データ保持部 16 状態遷移テーブル保持部 17 スケジューリング管理部 18 タスク切替え管理部 19 後処理部 20 状態遷移テーブル生成部 21 状態生成部 22 状態抽出部 221 OS規則に基づく状態抽出部 222 アプリケーション固有規則に基づく状態抽出
部 23 テーブル生成部 30 システム定義テーブル保持部

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 複数のタスクを実行するシステムに備え
    られ、事象の発生に応じて、前記システムが実行するタ
    スクの切替えを行うマルチタスク制御装置において、 前記複数のタスクのそれぞれが、実行状態、実行可能状
    態、待機状態を含む各種の状態の中のどの状態にあるか
    を表すシステム状態ごとに、各事象が発生した場合に次
    に実行すべきタスクを決定する情報を保持する状態遷移
    テーブルと、 事象の発生を検知する事象検知手段と、 前記事象検知手段により事象の発生が検知された場合
    に、前記状態遷移テーブルを参照し、その時点における
    システム状態から次に実行すべきタスクを判定する判定
    手段と、 前記判定手段の判定に応じてタスクの切替えを行うタス
    ク切替え手段とを有することを特徴とするマルチタスク
    制御装置。
  2. 【請求項2】 前記判定手段は、 その時点におけるシステム状態を保持する保持部を有す
    ることを特徴とする請求項1記載のマルチタスク制御装
    置。
  3. 【請求項3】 前記状態遷移テーブルは、 前記システムにおいて存在し得るシステム状態につい
    て、システム状態ごとに、各事象が発生した場合の遷移
    先のシステム状態を保持することを特徴とする請求項1
    又は2記載のマルチタスク制御装置。
  4. 【請求項4】 前記状態遷移テーブルにおいて、 各々のシステム状態には、優先度の高いタスクが実行状
    態であるシステム状態から、昇順又は降順にて状態番号
    が割り振られ、 前記判定手段は、 状態遷移テーブルに保持されている遷移先のシステム状
    態の状態番号から次に実行すべきタスクを判定すること
    を特徴とする請求項3記載のマルチタスク制御装置。
  5. 【請求項5】 前記マルチタスク制御装置はさらに、 タスクと、タスクごとの優先度と、各々のタスクを実行
    可能状態に起床させる事象との定義を含むシステム定義
    テーブルから、前記状態遷移テーブルを生成する状態遷
    移テーブル生成手段を備えることを特徴とする請求項1
    乃至4の何れかに記載のマルチタスク制御装置。
  6. 【請求項6】 前記状態遷移テーブル生成手段は、 前記システム定義テーブルから、各タスクの状態の全て
    の組み合わせを生成する状態生成手段と、 所定のシステム状態に関する規則に従って、前記状態生
    成手段が生成した組み合わせから、前記システムにおい
    て存在し得ないシステム状態を表す組み合わせを削除す
    ることにより、前記システムにおいて存在し得るシステ
    ム状態を表す組み合わせを抽出する状態抽出手段と、 前記状態抽出手段により抽出された組み合わせから、前
    記状態遷移テーブルを生成するテーブル生成手段とを有
    することを特徴とする請求項5記載のマルチタスク制御
    装置。
  7. 【請求項7】 前記状態抽出手段は、 前記システムの機能に基づくシステム状態に関する規則
    と、アプリケーション固有の理由に基づくシステム状態
    に関する規則とに従って前記システム状態を表す組み合
    わせを抽出することを特徴とする請求項6記載のマルチ
    タスク制御装置。
JP13148496A 1996-05-27 1996-05-27 マルチタスク制御装置 Pending JPH09319595A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13148496A JPH09319595A (ja) 1996-05-27 1996-05-27 マルチタスク制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13148496A JPH09319595A (ja) 1996-05-27 1996-05-27 マルチタスク制御装置

Publications (1)

Publication Number Publication Date
JPH09319595A true JPH09319595A (ja) 1997-12-12

Family

ID=15059068

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13148496A Pending JPH09319595A (ja) 1996-05-27 1996-05-27 マルチタスク制御装置

Country Status (1)

Country Link
JP (1) JPH09319595A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500647A (ja) * 2004-05-26 2008-01-10 クゥアルコム・インコーポレイテッド アプリケーションを再起動するときに、アプリケーション状態の履歴情報を使用する方法、ソフトウェア、および装置
US7647075B2 (en) 2003-03-28 2010-01-12 Ntt Docomo, Inc. Terminal device and program
KR101451667B1 (ko) * 2008-09-24 2014-10-16 엘지전자 주식회사 단말기 및 그 제어 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647075B2 (en) 2003-03-28 2010-01-12 Ntt Docomo, Inc. Terminal device and program
JP2008500647A (ja) * 2004-05-26 2008-01-10 クゥアルコム・インコーポレイテッド アプリケーションを再起動するときに、アプリケーション状態の履歴情報を使用する方法、ソフトウェア、および装置
JP4740238B2 (ja) * 2004-05-26 2011-08-03 クゥアルコム・インコーポレイテッド アプリケーションを再起動するときに、アプリケーション状態の履歴情報を使用する方法、ソフトウェア、および装置
KR101451667B1 (ko) * 2008-09-24 2014-10-16 엘지전자 주식회사 단말기 및 그 제어 방법

Similar Documents

Publication Publication Date Title
JP5088234B2 (ja) メッセージ紐付け処理装置、方法及びプログラム
CN109815007A (zh) 基于云监控的线程控制方法、装置、电子设备及存储介质
CN107391279B (zh) 一种消息队列容器创建方法、装置及消息队列容器
JP2020048045A (ja) スイッチ装置、スイッチング方法及びプログラム
CN111078628A (zh) 一种多盘并发数据迁移方法、系统、装置及可读存储介质
CN113835851A (zh) 一种实时操作系统定时器实现方法
JPH09319595A (ja) マルチタスク制御装置
JP2904483B2 (ja) 周期的プロセスのスケジューリング方法
JP3245500B2 (ja) マルチプログラミングにおける事象管理方式
CN115640100B (zh) 一种虚拟机信息同步方法及计算机可读介质
CN112363980A (zh) 一种分布式系统的数据处理方法及装置
CN112346835A (zh) 一种基于协程的调度处理方法及系统
CN114546677A (zh) 一种消息执行处理方法、装置、电子设备和存储介质
JP4682513B2 (ja) タスク管理システム
JP2693916B2 (ja) タスクスケジュール方法
JPH05108380A (ja) データ処理システム
CN113225269A (zh) 基于容器的工作流调度方法、装置、系统及存储介质
CN113495787A (zh) 资源分配方法、装置、存储介质及电子设备
EP2280345A1 (en) A device for and a method of managing computer tasks
JP2903525B2 (ja) ジョブ管理方式
CN113543419B (zh) 一种灯效控制方法和电子设备
CN113032171B (zh) 一种控制方法及装置
JP3763452B2 (ja) 情報処理システム、オブジェクトの優先度管理方法、オペレーティングシステム、記録媒体
JP2001229038A (ja) マルチオペレーテング計算機システム
JP2001306652A (ja) 衣服の製図設計作図のための情報処理管理方法