米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 松下電器産業株式会社

発明の名称 タスク制御方法および装置
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2007−140753(P2007−140753A)
公開日 平成19年6月7日(2007.6.7)
出願番号 特願2005−331538(P2005−331538)
出願日 平成17年11月16日(2005.11.16)
代理人 【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
発明者 荒木 彰一
要約 課題
強制的な終了や強制的な待ち状態への移行を、シグナル機能を用いて実現するオペレーティングシステムにおいても、タスク切り替え処理時間の保証が可能になるタスク制御装置を提供する。

解決手段
複数のタスクを、優先度が上位のタスクから優先して実行させるタスク制御装置であって、(a)タスク毎に設定された優先度を管理する優先度管理部222aと、(b)第1のタスクの状態を強制的に変更する強制変更要求を第2のタスクから受け付けるシステムコールインターフェース210aと、(c)強制変更要求を受け付けると、優先度管理部222aにおいて管理されている優先度のうち、第1のタスクに設定されている優先度を変更する優先度変更部270aとを備える。
特許請求の範囲
【請求項1】
複数のタスクを、優先度が上位のタスクから優先して実行させるタスク制御装置であって、
タスク毎に設定された優先度を管理する管理手段と、
第1のタスクの状態を強制的に変更する強制変更要求を第2のタスクから受け付ける受付手段と、
前記強制変更要求を受け付けると、前記管理手段において管理されている優先度のうち、前記第1のタスクに設定されている優先度を変更する変更手段と
を備えることを特徴とするタスク制御装置。
【請求項2】
前記変更手段は、前記第1のタスクに設定されている優先度を、前記第1のタスクに設定される優先度の範囲において予め予約されている優先度に変更する
ことを特徴とする請求項1に記載のタスク制御装置。
【請求項3】
前記変更手段は、前記第1のタスクに設定されている優先度を、前記第1のタスクに設定される優先度の範囲のうちの最上位および最下位のいずれかに変更し、
前記タスク制御装置は、さらに、
前記第1のタスクに設定されている優先度の変更に伴い、変更後の優先度と同一の優先度が設定されている第3のタスクよりも、前記第1のタスクを上位および下位のいずれかとしてスケジューリングするスケジューリング手段
を備えることを特徴とする請求項1に記載のタスク制御装置。
【請求項4】
タスクの状態を強制的に変更されたか否かが識別される情報を識別情報とした場合において、
前記管理手段は、タスク毎に設定された前記識別情報を管理する
ことを特徴とする請求項1に記載のタスク制御装置。
【請求項5】
前記管理手段は、前記第1のタスクに設定されている優先度の変更に伴い、変更前の優先度を保持する
ことを特徴とする請求項1に記載のタスク制御装置。
【請求項6】
前記タスク制御装置は、さらに、
前記第1のタスクの状態を強制待ち状態に移行させるシグナルを受信した場合は、前記第1のタスクに設定されている優先度を、前記変更前の優先度に設定するシグナル受信手段
を備えることを特徴とする請求項5に記載のタスク制御装置。
【請求項7】
前記受付手段は、前記強制変更要求に従って強制的に変更されたタスクの状態を解除する強制解除要求を受け付け、
前記変更手段は、前記強制解除要求を受け付けると、前記第1のタスクに設定されている優先度を、前記変更前の優先度に変更する
ことを特徴とする請求項5に記載のタスク制御装置。
【請求項8】
前記受付手段は、前記第1のタスクに設定されている優先度を変更する優先度変更要求と、変更後の優先度とを受け付け、
前記変更手段は、前記優先度変更要求を受け付けると、前記第1のタスクに設定されている優先度を、前記変更後の優先度に変更する
ことを特徴とする請求項5に記載のタスク制御装置。
【請求項9】
前記タスク制御装置は、さらに、
前記第1のタスクの状態を強制待ち状態に移行させる強制待ちシグナルと、前記第1のタスクの状態を強制終了状態に移行させる強制終了シグナルとのうち、前記強制終了シグナルを優先して受信するシグナル受信手段
を備えることを特徴とする請求項1に記載のタスク制御装置。
【請求項10】
複数のタスクを、優先度の高いものから優先して実行させるタスク制御方法であって、
タスク毎に設定された優先度を管理する管理ステップと、
第1のタスクの状態を強制的に変更する強制変更要求を第2のタスクから受け付ける受付ステップと、
前記強制変更要求を受け付けると、前記管理手段において管理されている優先度のうち、前記第1のタスクに設定されている優先度を変更する変更ステップと
を含むことを特徴とするタスク制御方法。
【請求項11】
複数のタスクを、優先度の高いものから優先して実行させるタスク制御プログラムであって、
タスク毎に設定された優先度を管理する管理ステップと、
第1のタスクの状態を強制的に変更する強制変更要求を第2のタスクから受け付ける受付ステップと、
前記強制変更要求を受け付けると、前記管理手段において管理されている優先度のうち、前記第1のタスクに設定されている優先度を変更する変更ステップと
をコンピュータシステムに実行させることを特徴とするタスク制御プログラム。
発明の詳細な説明
【技術分野】
【0001】
本発明は、複数のタスクを並行して実行するシステムにおいて、あるタスクを対象にして強制的に状態を変化させる処理を伴う場合に、タスク切り替え処理のリアルタイム性を保証するタスク制御方法および装置に関する。
【背景技術】
【0002】
従来、複数のタスクを制御するオペレーティングシステムでは、リアルタイム性を保証する手段の一つとして優先度に従ったタスクのスケジューリングを行う。すなわち複数のタスクのそれぞれに優先度を付けておいて、高い優先度のタスクを優先して実行させる。
【0003】
また、オペレーティングシステムの機能には、現在実行中のタスクが、あるタスクの状態を強制的に変化させることができるものがある。強制的な状態の変化とは、強制的に終了させたり、強制的に待ち状態に移行させたりすることである。
【0004】
Linux(登録商標)のような汎用的なオペレーティングシステムにおいても、タスクに優先度を与え、高い優先度のタスクを優先して実行させることが可能であり、あるタスクの状態を強制的に変化させる場合は、シグナル機能を用いて実現している。
【0005】
図31は、汎用的なオペレーティングシステムにおいて、シグナル機能によって強制的にタスクの状態を変化させる機能を実現する場合の構成図である。
【0006】
まず、オペレーティングシステム実行部200で動作するタスクは、強制的な終了や強制的な待ち状態への移行を識別できるシグナルに応じた処理を行うシグナルハンドラをあらかじめ登録しておくか、もしくは、オペレーティングシステム実行部200でデフォルトの動作が決められている。
【0007】
そして、あるタスクを対象にして強制的な終了や強制的な待ち状態に移行させる要求をシステムコールインターフェース210に発行し、シグナル送信部250は、その対象タスクに強制的な終了もしくは強制的な待ち状態への移行を識別できるシグナルを送信する。
【0008】
送信されたシグナルは即座に対象タスクが受信するのではなく、対象タスクがCPUの実行権利を得た後に受信できるものである。
【0009】
ディスパッチ部240によって強制的な終了や強制的な待ち状態に移行させる対照となるタスクにCPUの実行権利が切り替えられた後に、シグナル受信部260がシグナルを受信し、受信したシグナルに応じて、あらかじめ登録されていたシグナルハンドラが呼び出される。
【0010】
そのシグナルハンドラにて、現在CPUの実行権利があるタスク自らが終了や待ち状態への移行の要求をシステムコールインターフェース210に発行することで、強制的な終了や強制的な待ち状態への移行を実現している。
【0011】
図32は、従来技術において、タスクを強制的に終了させる処理の例を示したタイミングチャートである。
【0012】
図32のタイミングチャートにおいて、水平方向の直線はタスクの実行状態を表す。太線は現在CPUの実行権利が与えられている現在実行中のタスクであり、細い実線は実行可能状態であるタスク、点線は待ち状態であるタスク、波線は終了したタスクであることを表す。
【0013】
さらに太線について、白塗りの太線はタスク内の実行を表し、黒塗りの太線はオペレーティングシステム内の実行を表し、網掛けの太線はシグナルハンドラ内の実行を表す。括弧内の数値はタスクの優先度を数値で表し、特に表記がない場合は、最新の優先度を継続しているとする。
【0014】
3つのタスクが動作しているとし、それぞれタスクA、タスクB、タスクCとする。タスクの優先度を数値で表すと、それぞれ、[10]、[20]、[30]であるとし、数値が小さい程、優先度が高い。
【0015】
時刻t1において、タスクAが現在実行中であり、タスクB、タスクCは、実行可能状態である。また、タスクBは終了処理を行うシグナルハンドラBをあらかじめ登録している。
【0016】
時刻t2において、タスクAがタスクBを強制的に終了させる要求を出す。シグナル送信部250は、タスクBに対して強制終了を識別するシグナルを送信する。
【0017】
時刻t3において、オペレーティングシステム実行部200は、強制的に終了させる要求の処理を完了し、タスクAにリターンする。
【0018】
時刻t4において、タスクAが資源獲得の要求、例えばセマフォを獲得する要求を出す。タスクAが獲得しようとしたセマフォ資源はすべて使用されていたとすると、オペレーティングシステム実行部200は、タスクAをセマフォ獲得の待ち状態にする。タスクAが待ち状態に移行するため、次に実行すべきタスクは実行可能状態のタスクの中で最も高い優先度(最上位の優先度)[20]のタスクBとなる。
【0019】
時刻t5において、タスクBは、実行状態に切り替わる。シグナル受信部260は、タスクBのタスク内に戻る前に強制終了を識別するシグナルを受信し、タスクBに登録されたシグナルハンドラBを呼び出す。
【0020】
時刻t6において、シグナルハンドラBが起動し、時刻t7において、シグナルハンドラBが現在実行中のタスクを終了する要求を出す。オペレーティングシステム実行部200は、現在実行中のタスクすなわちタスクBを終了させる。タスクBが終了することにより、次に実行すべきタスクは実行可能状態のタスクの中で最も高い優先度(最上位の優先度)として[30]の数値を持つタスクCとなる。
【0021】
時刻t8において、タスクCに実行状態が切り替わり、時刻t9において、オペレーティングシステム実行部200内の処理からタスクC内の処理にリターンし、タスクC内の処理を継続する。
【非特許文献1】ダニエル・P.ボベット,マルコ セサティ 著/高橋浩和,高杉昌督,平松雅巳,杉田由美子,畑崎恵介,安井隆宏 訳、「詳解Linux(登録商標)カーネル 第2版」(株)オライリー・ジャパン、2003年6月24日 初版第1刷発行、p.174−177,385−401
【非特許文献2】高橋浩和,三好和人 著、「リナックスジャパン 2001年2月号」(株)五橋研究所、2001年2月1日発行、p.159−176
【発明の開示】
【発明が解決しようとする課題】
【0022】
しかしながら、前記の従来技術においては、セマフォ獲得待ちなどによるタスク切り替え処理の過程に、強制的な終了や強制的な待ち状態へ移行の対象になるタスクのシグナルハンドラ処理が実行され、タスクの切り替え処理時間の保証ができないという問題がある。
【0023】
図32のタイミングチャートでは、優先度[10]のタスクAがセマフォ獲得の要求を発行し、その結果セマフォ獲得待ち状態になることによって、優先度[30]のタスクCが実行状態に切り替わる過程、すなわち時刻t4から時刻t9の過程に優先度[20]のタスクBが強制終了を行うためのシグナルハンドラBの処理が含まれることになる。つまりセマフォ獲得の要求処理時間は、強制的な終了を行うタスクに依存して変動し、その時間の保証ができない。
【0024】
そこで、本発明は、前記問題に鑑みてなされたものであり、強制的な終了や強制的な待ち状態への移行を、シグナル機能を用いて実現するオペレーティングシステムにおいても、タスク切り替え処理時間の保証が可能になるタスク制御装置およびを提供することである。
【課題を解決するための手段】
【0025】
前記目的を達成するために、本発明に係るタスク制御装置は、(a)複数のタスクを、優先度が上位のタスクから優先して実行させるタスク制御装置であって、(a1)タスク毎に設定された優先度を管理する管理手段と、(a2)第1のタスクの状態を強制的に変更する強制変更要求を第2のタスクから受け付ける受付手段と、(a3)前記強制変更要求を受け付けると、前記管理手段において管理されている優先度のうち、前記第1のタスクに設定されている優先度を変更する変更手段とを備えることを特徴とする。
【0026】
これによって、強制的に状態を変化させる対象となるタスクのシグナルハンドラ処理の影響を受けずにタスク切り替えを行うため、タスク切り替え処理時間の保証ができる。
【0027】
なお、本発明は、タスク制御装置として実現されるだけでなく、タスク制御装置を制御するタスク制御方法、タスク制御方法をコンピュータシステムに実行させるタスク制御プログラムなどとして実現されるとしてもよい。
【発明の効果】
【0028】
本発明に係るタスク制御装置によれば、強制的に状態を変化させる対象となるタスクのシグナルハンドラ処理の影響を受けずにタスク切り替えを行うため、タスク切り替え処理時間の保証ができる。
【発明を実施するための最良の形態】
【0029】
(実施の形態1)
以下に、本発明に係わる実施の形態1について、図面を参照しながら説明する。
【0030】
本実施の形態に係るタスク制御装置は、(a)複数のタスクを、優先度が上位のタスクから優先して実行させるタスク制御装置であって、(a1)タスク毎に設定された優先度を管理し、(a2)第1のタスクの状態を強制的に変更する強制変更要求を第2のタスクから受け付け、(a3)強制変更要求を受け付けると、管理されている優先度のうち、第1のタスクに設定されている優先度を変更することを特徴とする。
【0031】
このとき、タスク制御装置は、第1のタスクに設定されている優先度を、第1のタスクに設定される優先度の範囲において予め予約されている優先度(最上位の優先度)に変更する。
【0032】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。
図1は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図1に示されるように、タスク制御装置100aは、オペレーティングシステム実行部200aにおいて、強制的にタスクの状態を変化させる機能を備える。
【0033】
オペレーティングシステム実行部200aは、ハードウェア資源(例えば、図2参照。)上で、Linux(登録商標)などのような汎用的なオペレーティングシステムを実行する。
【0034】
ここでは、オペレーティングシステム上で複数のタスクが動作しているとする。ここで、「タスク」とは、オペレーティングシステム上での処理の実行単位を意味する。図1では、タスクA、タスクB、タスクCの3つのタスクが動作しているとする。これに伴い、タスクA実行部300aは、タスクAを実行する。タスクB実行部310aは、タスクBを実行する。タスクC実行部320aは、タスクCを実行する。
【0035】
オペレーティングシステム実行部200aは、システムコールインターフェース210a、タスク情報管理部220a、スケジューリング部230a、ディスパッチ部240a、優先度変更部270a、シグナル送信部250a、シグナル受信部260aなどを備える。
【0036】
システムコールインターフェース210aは、タスクA実行部300a、タスクB実行部310a、タスクC実行部320aからオペレーティングシステム実行部200aで定められた要求を受け付け、それぞれの要求に応じた処理を実行する。例えば、Linux(登録商標)等の汎用的なオペレーティングシステムで提供される機能が使用できるものとする。その要求として、(1)資源獲得や資源開放の要求、(2)待ち状態への移行の要求、(3)待ち状態を解除させる要求、(4)現在実行中のタスクを終了する要求などがある。さらに、上記(1)〜(4)に記された要求に加えて、(5)強制的にタスクを終了させる要求、(6)強制的な待ち状態にさせる要求、(7)強制的な待ち状態を解除する要求も受け付けるとする。
【0037】
システムコールインターフェース210aがこれらの要求を受け付けるときに、入力される情報がオペレーティングシステム実行部200aによって定められている。例えば、資源獲得の要求である場合は、資源を識別する情報が入力される。また、タスクを強制的に終了させる要求である場合は、強制的に終了させるタスクを識別する情報が入力される。
【0038】
システムコールインターフェース210aは、要求に応じた処理を実施するにあたって、タスクに関する情報の変更や参照を行う場合は、タスク情報管理部220aと情報の入出力を行う。
【0039】
タスク情報管理部220aは、少なくともタスクの実行状態を格納する状態管理部221a、タスクを実行する優先順位を表す優先度を格納する優先度管理部222aなどを備える。状態管理部221aで格納されるタスクの実行状態は、少なくとも実行可能状態と待ち状態があり、実行可能状態のタスクのうち、最も優先度が高いタスクが現在実行中のタスクとなる。また、タスク情報管理部220aは、それぞれのタスク毎に用意され、状態管理部221aと優先度管理部222aとは、タスク情報管理部220aに含まれているのが望ましい。
【0040】
スケジューリング部230aは、レディキューの操作を行う。レディキューとは、タスク情報管理部220aにおける優先度管理部222aの情報に基づき、実行可能状態のタスクを実行する順番にタスク情報管理部220aのポインタを管理するリスト構造である。レディキューの操作とは、タスク情報管理部220aの情報に基づき、実行可能状態になるタスクをレディキューの適切な場所にキューイングしたり、現在実行中のタスクが待ち状態になる場合は、レディキューから削除したりすることを意味する。また、スケジューリング部230aは、レディキューから実行する優先順位が高いタスクを次に実行すべきタスクとして選択し、そのタスクを識別する情報をディスパッチ部240aに出力する。
【0041】
ディスパッチ部240aは、スケジューリング部230aから次に実行すべきタスクを識別する情報を入力として受け取り、現在実行中のタスクから次に実行すべきタスクにCPU101aの実行権利を切り替える。
【0042】
オペレーティングシステム実行部200aは、強制的にタスクの状態を変化させるシグナルを送信するシグナル送信部250aと、シグナル送信部250aから送信されたシグナルを格納するシグナル管理部223aと、シグナル管理部223aからシグナルを受信してそのシグナルに応じたシグナルハンドラを呼び出すシグナル受信部260aとを有し、強制的にタスクの状態を変化させる対象となるタスクの優先度を変更する優先度変更部270aを、さらに有している。
【0043】
シグナル管理部223aは、タスクごとに情報を持つため、タスク情報管理部220aに含んでいるのが望ましい。
【0044】
シグナルハンドラとは、タスクごとにシグナルの種類ごとに登録できる処理単位であり、図1では、強制的に状態を変化させるシグナルに対応するシグナルハンドラAがタスクAに、シグナルハンドラBがタスクBに、シグナルハンドラCがタスクCに登録されているとする。
【0045】
シグナル送信部250aは、システムコールインターフェース210aからシグナルを識別する情報と、そのシグナルの送信相手となるタスクを識別する情報とを入力として、シグナルの送信相手となるタスクに対応するタスク情報管理部220aを特定し、シグナル管理部223aにシグナルを送信する。また、シグナルの送信相手となるタスクを識別する情報を優先度変更部270aに出力する。
【0046】
優先度変更部270aは、シグナル送信部250aからシグナルの送信相手となるタスクを識別する情報を入力として受け取り、シグナルの送信相手となるタスクに対応するタスク情報管理部220aを特定し、優先度管理部222aの優先度を変更する。
【0047】
シグナル管理部223aは、少なくとも、強制的にタスクを終了させる要求であることを識別できる強制終了シグナルと、強制的にタスクを待ち状態に移行させる要求であることを識別できる強制待ちシグナルとを格納する。
【0048】
シグナル受信部260aは、ディスパッチ部240aが次に実行すべきタスクにCPU101aの実行権利を切り替えた後、そのタスクの処理に戻る前に、そのタスクに対応するタスク情報管理部220aのシグナル管理部223aに格納してあるシグナルを受信し、そのタスクに登録されたシグナルハンドラを呼び出す。また、シグナル受信部260aは、シグナルハンドラを呼び出す際、受信したシグナルを識別する情報をシグナルハンドラに引き渡す。
【0049】
また、シグナル受信部260aは、シグナル管理部223aからシグナルを受信すると、そのシグナルをシグナル管理部223aから削除する。また、システムコールインターフェース210aは、シグナルハンドラからオペレーティングシステム実行部200aで定められた要求を受け付け、それぞれの要求に応じた処理を実行する。
【0050】
なお、図2に示されるように、タスク制御装置100aは、CPU(Central Processing Unit)101a、RAM(Random Access Memory)102a、ROM(Read Only Memory)103a、I/O(Input/Output interface)104a、HDD(Hard Disk Drive)などを備える。
【0051】
CPU101aは、タスク制御処理を実行するにあたって要する諸々の処理を実行する中央演算処理ユニットである。
【0052】
RAM102aは、データの読み出し書き込みが随時可能な半導体メモリである。例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などである。
【0053】
ROM103aは、読み出し専用のメモリである。例えば、電気的に内容を書き換えることができるEEPROM(Electronically Erasable and Programmable Read Only Memory)などである。
【0054】
I/O104aは、図には示されてはいないが、タスク制御装置100aに接続されている内部機器と外部機器とに対してデータの入出力を行う入出力インターフェースである。例えば、(a)Bluetooth、IrDA(Infrared Data Association)、赤外線通信ポート等のような短距離無線伝送インターフェース、(c)USB(Universal Serial Bus)、IEEE(Institute of Electrical and Electronics Engineers)1394、シリアルATA(AT Attachment)等のようなシリアル伝送インターフェース、(d)ATAPI(AT Attachment Packet Interface)等のようなパラレル伝送インターフェース、(e)IEEE802.3、IEEE802.11等のようなネットワークインターフェースなどである。
【0055】
HDD105aは、Linux(登録商標)などのような汎用的なオペレーティングシステムと、オペレーティングシステム上で動作するプログラムがインストールされており、オペレーティングシステムとプログラムが実行されることによって、タスク制御装置の各機能が実現される。
【0056】
本実施の形態に係るタスク制御装置において、タスクを強制的に終了させる処理の詳細を、図3を用いて説明する。
【0057】
図3は、本実施の形態に係るタスク制御装置において、強制的にタスクを終了させる要求のメイン処理を示すフローチャートである。
【0058】
シグナル送信部250aは、システムコールインターフェース210aから、強制終了シグナルと、その強制終了シグナルの送信相手となるタスクを識別する情報とを受け取り、強制終了シグナルの送信相手となるタスクに対応するタスク情報管理部220aを特定し、シグナル管理部223aに強制終了シグナルを格納する(ステップS401)。
【0059】
次に、優先度変更部270aは、シグナル送信部250aから、強制終了シグナルの送信相手となるタスクを識別する情報を受け取り、強制終了シグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、優先度管理部222aに最も高い優先度(最上位の優先度)を格納する(ステップS402)。
【0060】
ここで、最も高い優先度(最上位の優先度)とは、オペレーティングシステム実行部200aが強制的に状態を変化させるタスクの優先度を制御するためにあらかじめ予約されている優先度であるとする。例えば、オペレーティングシステム実行部200aがタスクに与える優先度として[1]から[99]の数値を扱うとする場合、最も優先度が高い[1]の数値を予約しておく。
【0061】
次に、優先度変更部270aは、強制終了シグナルの送信相手となるタスクに対応するタスク情報管理部220aの状態管理部221aを参照し(ステップS403)、実行可能状態でない場合は(ステップS403:No)、強制終了シグナルの送信相手となるタスクの待ち解除を行う。すなわち、強制終了シグナルの送信相手となるタスクに対応するタスク情報管理部220aの状態管理部221aに実行可能状態を設定する(ステップS404)。
【0062】
一方、実行可能状態である場合は(ステップS403:Yes)、スケジューリング部230aは、強制的に終了させるタスクをレディキューにリンクしなおす。このとき、強制的に終了させるタスクに対応するタスク情報管理部220aの優先度管理部222aに格納される優先度に応じて、FIFO(First In First Out)を満足するようにリンクする(ステップS405)。
【0063】
次に、スケジューリング部230aは、レディキューで管理される実行可能状態のタスクの中で最も実行優先順位の高いタスク、すなわち強制的に終了させるタスクを次に実行すべきタスクとして選択する(ステップS406)。
【0064】
次に、ディスパッチ部240aは、現在実行中のタスクから次に実行すべきタスク、すなわち強制的に終了させるタスクにCPU101aの実行権利を切り替える(ステップS407)。これにより、強制的に終了させるタスクにCPU101aの実行権利を切り替えることができ、シグナル受信部260aは、強制的に終了させるタスクに送信されている強制終了シグナルを受信し、シグナルハンドラを呼び出すことができる。
【0065】
図4は、本実施の形態に係るタスク制御装置において、強制的に終了させるタスクに送信された強制終了シグナルに対応するシグナルハンドラで行う処理の例を示したフローチャートである。
【0066】
オペレーティングシステム実行部200aは、システムコールインターフェース210aに現在実行中のタスクを終了する要求を出す(ステップS501)。現在実行中のタスクを終了する要求は、オペレーティングシステム実行部200aが提供する機能であるため、詳細な説明は省略する。現在実行中のタスクを終了する要求によって、現在実行中のタスク、すなわち強制的に終了させるタスクは、オペレーティングシステム実行部200aによって終了処理が行われ、次に実行すべきタスクにCPU101aの実行権利を切り替える。
【0067】
次に、本実施の形態に係るタスク制御装置について、タスクを強制的に待ち状態に移行させる処理について説明する。
【0068】
図5は、本実施の形態に係るタスク制御装置について、強制的にタスクを待ち状態に移行させる要求のメイン処理を示すフローチャートである。
【0069】
図5に示されるように、シグナル送信部250aは、システムコールインターフェース210aから、強制待ちシグナルと、その強制待ちシグナルの送信相手となるタスクを識別する情報とを受け取り、強制待ちシグナルの送信相手となるタスクに対応するタスク情報管理部220aを特定し、シグナル管理部223aに強制待ちシグナルを格納する(ステップS601)。
【0070】
次に、優先度変更部270aは、シグナル送信部250aから、強制待ちシグナルの送信相手となるタスクを識別する情報を受け取り、強制待ちシグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、優先度管理部222aに最も高い優先度(最上位の優先度)を格納する(ステップS602)。
【0071】
ここで、最も高い優先度(最上位の優先度)とは、オペレーティングシステム実行部200aが強制的に状態を変化させ、タスクの優先度を制御するためにあらかじめ予約されている優先度であるとする。例えば、オペレーティングシステム実行部200aがタスクに与える優先度として[1]から[99]の数値を扱うとする場合、最も優先度が高い[1]の数値を予約しておく。
【0072】
次に、優先度変更部270aは、強制待ちシグナルの送信相手となるタスクに対応するタスク情報管理部220aの状態管理部221aを参照し(ステップS603)、実行可能状態でない場合は(ステップS603:No)、この強制的にタスクを待ち状態に移行させるメイン処理からリターンする。一方、実行可能状態である場合は(ステップS603:Yes)、スケジューリング部230aは、強制的に待ち状態に移行させるタスクをレディキューにリンクしなおす(ステップS604)。このとき、強制的に待ち状態に移行させるタスクに対応するタスク情報管理部220aの優先度管理部222aに格納される優先度に応じて、FIFO(First In First Out)を満足するようにリンクする。
【0073】
次に、スケジューリング部230aは、レディキューで管理される実行可能状態のタスクの中で最も実行優先順位の高いタスク、すなわち強制的に待ち状態に移行させるタスクを次に実行すべきタスクとして選択する(ステップS605)。
【0074】
次に、ディスパッチ部240aは、現在実行中のタスクから次に実行すべきタスク、すなわち強制的に待ち状態に移行させるタスクにCPU101aの実行権利を切り替える(ステップS606)。これにより、強制的に待ち状態に移行させるタスクにCPU101aの実行権利を切り替えることができ、シグナル受信部260aは、強制的に待ち状態に移行させるタスクに送信されている強制待ちシグナルを受信し、シグナルハンドラを呼び出すことができる。
【0075】
図6は、本実施の形態に係るタスク制御装置において、強制的に待ち状態に移行させるタスクに送信された強制待ちシグナルに対応するシグナルハンドラで行う処理の例を示したフローチャートである。
【0076】
システムコールインターフェース210aに現在実行中のタスクを待ち状態にする要求を出す(ステップS701)。現在実行中のタスクを待ち状態にする要求はオペレーティングシステム実行部200aが提供する機能を使用する。
【0077】
例えば、それぞれのタスク毎に強制待ち状態に移行させるためのイベントを予約しておき、強制待ちするタスクはそのイベントが設定されるのを待つ要求を出せばよい。これにより、そのイベントに対して待ち状態に移行できるのは唯一のタスクとなる。強制的な待ち状態に移行させるためのイベントとしては、共有メモリやメッセージ通信などを使用すればよい。現在実行中のタスクを待ち状態にする要求によって、現在実行中のタスク、すなわち強制的に待ち状態に移行させるタスクはオペレーティングシステム実行部200aによって待ち状態に移行する処理が行われ、次に実行すべきタスクにCPU101aの実行権利を切り替える。
【0078】
図7は、本実施の形態に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示したタイミングチャートである。タイミングチャートにおいて、水平方向の直線は、タスクの実行状態を表す。太線は、現在CPUの実行権利が与えられているタスク、すなわち、現在実行中のタスクである。細い実線は、実行可能状態であるタスクである。点線は、待ち状態であるタスクである。波線は、終了したタスクであることを表す。さらに、太線について、白塗りの太線は、タスク内の実行を表し、黒塗りの太線は、オペレーティングシステム内の実行を表し、網掛けの太線は、シグナルハンドラ内の実行を表す。括弧内の数値は、タスクの優先度を表し、特に表記がない場合は、最新の優先度を継続しているとする。
【0079】
ここでは、タスクA、タスクB、タスクCの3つのタスクが動作しているとする。また、タスクBには強制終了シグナルに対応するシグナルハンドラBが登録されているとする。
【0080】
オペレーティングシステム実行部200aは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。さらに、オペレーティングシステム実行部200aは、強制的に状態を変化させるタスクの優先度を制御するために、最上位の優先度[1]を予約している。
【0081】
時刻t1において、タスクA(優先度[10]。)が現在実行中である。タスクB(優先度[20]。)、タスクC(優先度[30]。)は、実行可能状態である。
【0082】
時刻t2において、タスクAは、タスクBを強制的に終了させる要求を出す。オペレーティングシステム実行部200aは、タスクBに対して強制終了シグナルを送信し、タスクBの優先度を予約している優先度(最上位の優先度)に変更する。このとき、オペレーティングシステム実行部200aは、最上位の優先度として優先度[1]を設定する。したがって、タスクBの優先度は、一時的に優先度[1]になる。
【0083】
スケジューリング部230aは、タスクBをレディキューにリンクしなおし、次に実行すべきタスクとして最も高い優先度(最上位の優先度)を持つ優先度[1]のタスクBを選択する。
【0084】
時刻t3において、タスクBは、実行状態に切り替わる。オペレーティングシステム実行部200aは、タスクBのタスク内に戻る前に強制終了シグナルを受信し、タスクBに登録された強制終了シグナルに対応するシグナルハンドラBを呼び出す。
【0085】
時刻t4において、強制終了シグナルに対応するシグナルハンドラBが起動し、時刻t5において、強制終了シグナルに対応するシグナルハンドラBが現在実行中のタスクを終了する要求を出す。
【0086】
オペレーティングシステム実行部200aは、現在実行中のタスク、すなわち、タスクBを終了させる。タスクBが終了することにより、次に実行すべきタスクは、優先度[10]のタスクAとなる。
【0087】
時刻t6において、タスクAに実行状態が切り替わり、オペレーティングシステム実行部200aは、強制的に終了させる要求のメイン処理を継続し、時刻t7において、強制的に終了させる要求のメイン処理からタスクA内の処理にリターンし、タスクAは、タスク内の処理を継続する。
【0088】
時刻t8において、タスクAが資源獲得の要求、例えば、セマフォを獲得する要求を出す。タスクAが獲得しようとしたセマフォ資源は、すべて使用されていたとすると、オペレーティングシステム実行部200aは、タスクAをセマフォ獲得の待ち状態にする。タスクAが待ち状態に移行するため、実行可能状態のタスクの中で最も高い優先度(最上位の優先度)をもつタスクは、優先度[30]のタスクCとなる。
【0089】
時刻t9において、タスクCに実行状態が切り替わり、時刻t10において、タスクC内の処理にリターンし、タスクC内の処理を継続する。
【0090】
このように、強制的に終了させるタスクBの優先度を制御することで、優先度[10]のタスクAがセマフォ獲得の要求を発行し、その結果セマフォ獲得待ち状態になる。さらに、優先度[30]のタスクCは、実行状態に切り替わる過程、すなわち、時刻t8から時刻t10の過程に、優先度[20]のタスクBに登録された強制終了シグナルに対応するシグナルハンドラBで自ら終了の要求を発行する処理が含まれなくなる。そして、タスクAからタスクCへのタスク切り替え処理時間、すなわち、時刻t8から時刻t10の処理時間の保証ができるようになる。
【0091】
なお、タスクを強制的に待ち状態に移行させる処理についても、図7と同様のタイミングチャートで表すことができるため、説明は省略する。
【0092】
(実施の形態2)
次に、本発明に係る実施の形態2について、図面を参照しながら説明する。
【0093】
本実施の形態に係るタスク制御装置は、第1のタスクに設定されている優先度を、第1のタスクに設定される優先度の範囲のうちの最上位に変更し、第1のタスクに設定されている優先度の変更に伴い、変更後の優先度と同一の優先度が設定されている第3のタスクよりも、第1のタスクを上位としてスケジューリングすることを特徴とする。
【0094】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0095】
図8は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図8に示されるように、タスク制御装置100bは、実施の形態1に係るタスク制御装置100a(図1参照。)と比べて、下記の点が異なる。
【0096】
優先度変更部270bは、強制的にタスクを終了させる要求のメイン処理において(例えば、図3参照。)、シグナル送信部250aから、強制終了シグナルの送信相手となるタスクを識別する情報を受け取り、強制終了シグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、オペレーティングシステム実行部200bがタスクに設定可能な優先度の範囲のうちの最上位の優先度を優先度管理部222aに格納する。例えば、オペレーティングシステム実行部200bがタスクの優先度として[1]から[99]の数値のいずれかを設定する場合において、最上位の優先度が[1]である場合、強制終了シグナルの送信相手となるタスクの優先度管理部222aに優先度[1]を格納する。
【0097】
これに伴い、スケジューリング部230bは、強制的に終了させるタスクをレディキューにリンクしなおす。このとき、スケジューリング部230bは、同一優先度の実行可能状態のタスクの中で強制終了シグナルまたは強制待ちシグナルが送信されているタスクを、それらのシグナルが送信されていないタスクよりも前に実行されるようにレディキューにリンクする。
【0098】
また、優先度変更部270bは、強制的にタスクを待ち状態に移行させる要求のメイン処理において(例えば、図5参照。)、同様に、シグナル送信部250aから、強制待ちシグナルの送信相手となるタスクを識別する情報を受け取り、強制待ちシグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、オペレーティングシステム実行部200bがタスクに設定可能な優先度の範囲のうちの最上位の優先度を優先度管理部222aに格納する。例えば、オペレーティングシステム実行部200bがタスクの優先度として[1]から[99]の数値のいずれかを設定する場合において、最上位の優先度が[1]である場合、強制待ちシグナルの送信相手となるタスクの優先度管理部222aに優先度[1]を格納する。
【0099】
これに伴い、スケジューリング部230bは、強制的な待ち状態に移行させるタスクをレディキューにリンクしなおす。このとき、スケジューリング部230bは、同一優先度の実行可能状態のタスクの中で強制終了シグナルまたは強制待ちシグナルが送信されているタスクを、それらのシグナルが送信されていないタスクよりも前に実行されるようにレディキューにリンクする。
【0100】
図9は、本実施形態に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示したタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0101】
図9に示されるように、ここでは、タスクA、タスクB、タスクCの3つのタスクが動作しているとする。また、タスクBには強制終了シグナルに対応するシグナルハンドラBが登録されているとする。
【0102】
オペレーティングシステム実行部200bは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。
【0103】
時刻t1において、タスクA(優先度[1]。)が現在実行中である。タスクB(優先度[2]。)、タスクC(優先度[3]。)は、実行可能状態である。
【0104】
時刻t2において、タスクAがタスクBを強制的に終了させる要求を出す。オペレーティングシステム実行部200bは、タスクBに対して強制終了シグナルを送信し、タスクBの優先度を最上位の優先度に変更する。このとき、オペレーティングシステム実行部200bは、最上位の優先度として優先度[1]を設定する。したがって、タスクBの優先度は、一時的に優先度[1]になる。
【0105】
スケジューリング部230aは、タスクBをレディキューにリンクしなおす。このとき、タスクBは、強制的に終了させる対象のタスクであるので、同じ優先度のタスクの中でLIFO(Last In First Out)を満足するようリンクされる。したがって、タスクAとタスクBは同一の優先度[1]であるが、スケジューリング部230aは、次に実行すべきタスクとしてタスクBを選択する。
【0106】
時刻t3において、優先度[1]のタスクBは、実行状態に切り替わる。オペレーティングシステム実行部200bは、タスクBのタスク内に戻る前に強制終了シグナルを受信し、タスクBに登録された強制終了シグナルに対応するシグナルハンドラBを呼び出す。
【0107】
時刻t4において、強制終了シグナルに対応するシグナルハンドラBが起動し、時刻t5において、強制終了シグナルに対応するシグナルハンドラBが現在実行中のタスクを終了する要求を出す。
【0108】
オペレーティングシステム実行部200bは、現在実行中のタスクすなわちタスクBを終了させる。タスクBが終了することにより、次に実行すべきタスクは、優先度[1]のタスクAとなる。
【0109】
時刻t6において、タスクAに実行状態が切り替わり、オペレーティングシステム実行部200bは、強制的に終了させる要求のメイン処理を継続し、時刻t7において、強制的に終了させる要求のメイン処理からタスクA内の処理にリターンする。そして、タスクAは、タスク内の処理を継続する。
【0110】
時刻t8において、タスクAが資源獲得の要求、例えば、セマフォを獲得する要求を出す。タスクAが獲得しようとしたセマフォ資源は、すべて使用されていたとすると、オペレーティングシステム実行部200bは、タスクAをセマフォ獲得の待ち状態にする。タスクAが待ち状態に移行するため、実行可能状態のタスクの中で最も高い優先度をもつタスクは優先度[3]のタスクCとなる。
【0111】
時刻t9において、タスクCに実行状態が切り替わり、時刻t10において、タスクC内の処理にリターンし、タスクC内の処理を継続する。
【0112】
このように、強制的に終了させるタスクBの優先度を最上位の優先度に変化させ、レディキューへリンクする時、LIFO(Last In First Out)を満足するようにリンクすることによって、オペレーティングシステム実行部200bがタスクに設定可能な優先度の範囲を減少させることなく実施の形態1で説明したタスク切り替え時間が保証できるという効果を発する。
【0113】
なお、タスクを強制的に待ち状態に移行させる処理についても、図9と同様のタイミングチャートで表すことができるため、説明は省略する。
【0114】
(実施の形態3)
次に、本発明に係わる実施の形態3について、図面を参照しながら説明する。
【0115】
本実施の形態に係るタスク制御装置は、第1のタスクに設定されている優先度を、第1のタスクに設定される優先度の範囲において予め予約されている優先度(最下位の優先度)に変更することを特徴とする。
【0116】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0117】
図10は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図10に示されるように、タスク制御装置100cは、実施の形態1に係るタスク制御装置100a(図1参照。)と比べて、下記の点が異なる。
【0118】
優先度変更部270cは、強制的にタスクを終了させる要求のメイン処理において(例えば、図3参照。)、シグナル送信部250aから、強制終了シグナルの送信相手となるタスクを識別する情報を受け取り、強制終了シグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、優先度管理部222aに、予約している優先度を格納する。
【0119】
また、優先度変更部270cは、タスクを強制的に待ち状態に移行させる要求のメイン処理において(例えば、図5参照。)、同様に、シグナル送信部250aから、強制待ちシグナルの送信相手となるタスクを識別する情報を受け取り、強制待ちシグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、優先度管理部222aに、予約しておいた優先度を格納する。その優先度は、オペレーティングシステム実行部200cが強制的に状態を変化させるタスクの優先度を制御するためにあらかじめ予約しており、例えば、オペレーティングシステム実行部200cがタスクに与える優先度として[1]から[99]の数値のいずれかを優先度として設定する場合において、優先度[99]を予約しておく。
【0120】
この場合において、オペレーティングシステム実行部200cがアイドル状態になる直前に、強制的に終了させるタスクに登録された強制終了シグナルに対応するシグナルハンドラ、または強制的に待ち状態に移行させるタスクに登録された強制待ちシグナルに対応するシグナルハンドラを実行することができる。
【0121】
ここで、アイドル状態とは、どのタスクも実行可能状態にない状態であり、通常は、割込み等のイベントによりタスクが実行可能状態になるのを待っていることを指す。またアイドル状態は、タスクのような優先度も持っていないとする。
【0122】
図11は、本実施の形態に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示すタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0123】
図11に示されるように、ここでは、タスクA、タスクB、タスクCの3つのタスクが動作しているとする。またCPUのアイドル状態をチャートの下方に示す。また、タスクBには強制終了シグナルに対応するシグナルハンドラBが登録されているとする。
【0124】
オペレーティングシステム実行部200cは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。さらに、オペレーティングシステム実行部200cは、強制的に状態を変化させるタスクの優先度を制御するために、優先度[99]を予約している。
【0125】
時刻t1において、タスクA(優先度[10]。)が現在実行中である。タスクB(優先度[20]。)、タスクC(優先度[30]。)は、実行可能状態である。
【0126】
時刻t2において、タスクAがタスクBを強制的に終了させる要求を出す。オペレーティングシステム実行部200cは、タスクBに対して強制終了シグナルを送信し、タスクBの優先度を予約している優先度(最下位の優先度)に変更する。このとき、オペレーティングシステム実行部200cは、最下位の優先度として優先度[99]を設定する。したがって、タスクBの優先度は、一時的に優先度[99]になる。
【0127】
スケジューリング部230aは、タスクBをレディキューにリンクしなおす。しかし、タスクBは、一時的に優先度[99]に変更されているので、時刻t3において、引き続き優先度[10]のタスクA内の処理が継続される。
【0128】
時刻t4において、タスクAが資源獲得の要求、例えば、セマフォを獲得する要求を出す。タスクAが獲得しようとしたセマフォ資源は、すべて使用されていたとすると、オペレーティングシステム実行部200cは、タスクAをセマフォ獲得の待ち状態にする。タスクAが待ち状態に移行するため、実行可能状態のタスクの中で最も高い優先度をもつタスクは優先度[30]のタスクCとなる。
【0129】
時刻t5において、タスクCに実行状態が切り替わり、時刻t6において、タスクC内の処理にリターンし、タスクC内の処理を継続する。
【0130】
時刻t7において、タスクCが資源獲得の要求、例えば、セマフォを獲得する要求を出す。タスクCが獲得しようとしたセマフォ資源は、すべて使用されていたとすると、オペレーティングシステム実行部200cは、タスクCを待ち状態に移行させ、時刻t8において、優先度[99]のタスクBは、実行状態に切り替わる。
【0131】
オペレーティングシステム実行部200cは、タスクBのタスク内に戻る前に強制終了シグナルを受信し、タスクBに登録された強制終了シグナルに対応するシグナルハンドラBを呼び出す。
【0132】
時刻t9において、強制終了シグナルに対応するシグナルハンドラBが起動する。
時刻t10において、強制終了シグナルに対応するシグナルハンドラBが現在実行中のタスクを終了する要求を出す。
【0133】
オペレーティングシステム実行部200cは、現在実行中のタスク、すなわち、タスクBを終了させる。タスクBが終了することにより、次に実行すべきタスクが存在しなくなり、時刻t11において、アイドル状態に移行する。
【0134】
このように、強制的に終了させる対象となるタスクBの優先度を、予約している優先度に変化させることで、優先度[10]のタスクAがセマフォ獲得の要求を発行し、その結果、セマフォ獲得待ち状態になる。さらに、優先度[30]のタスクCが実行状態に切り替わる過程、すなわち時刻t4から時刻t6の過程に、優先度[20]のタスクBに登録された強制終了シグナルに対応するシグナルハンドラBで自ら終了の要求を発行する処理が含まれなくなる。そして、タスクAからタスクCへのタスク切り替え処理時間、すなわち、時刻t4から時刻t6の処理時間の保証ができるようになる。
【0135】
タスクBに登録された強制終了シグナルに対応するシグナルハンドラBはアイドル状態直前に実行できるようになる。
【0136】
なお、タスクを強制的に待ち状態に移行させる処理についても、図11と同様のタイミングチャートで表すことができるため、説明は省略する。
【0137】
なお、本実施の形態におけるタスク制御装置100cの機能と実施の形態1におけるタスク制御装置100aの機能とを組み合わせるとしてもよい。例えば、資源の開放を優先させたい場合は、実施の形態1におけるタスク制御装置100aのように、強制終了タスクの優先度を最上位の優先度[1]に変更し、強制終了タスクに獲得されている資源を優先して開放するとしてもよい。また、他のタスクの処理を優先させたい場合は、本実施の形態におけるタスク制御装置100cのように、強制終了タスクの優先度を最下位の優先度[99]に変更し、強制終了タスク以外のタスクを優先して処理するとしてもよい。すなわち、タスク制御装置の実行状態を監視し、強制終了タスクまたは強制待ちタスクの優先度を変更するときに、実行状態から優先事項を決定し、決定した優先事項に応じて、最上位の優先度[1]および最下位の優先度[99]のいずれかに変更するとしてもよい。
【0138】
(実施の形態4)
次に、本発明に係わる実施の形態4について、図面を参照しながら説明する。
【0139】
本実施の形態に係るタスク制御装置は、第1のタスクに設定されている優先度を、第1のタスクに設定される優先度の範囲のうちの最下位に変更し、第1のタスクに設定されている優先度の変更に伴い、変更後の優先度と同一の優先度が設定されている第3のタスクよりも、第1のタスクを下位としてスケジューリングすることを特徴とする。
【0140】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0141】
図12は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図12に示されるように、タスク制御装置100dは、実施の形態1に係るタスク制御装置100a(図1参照。)と比べて、下記の点が異なる。
【0142】
優先度変更部270dは、強制的にタスクを終了させる要求のメイン処理において(例えば、図3参照。)、シグナル送信部250aから、強制終了シグナルの送信相手となるタスクを識別する情報を受け取り、強制終了シグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、オペレーティングシステム実行部200dがタスクに設定可能な優先度の範囲のうちの最下位の優先度を優先度管理部222aに格納する。例えば、オペレーティングシステム実行部200dがタスクの優先度として、[1]から[99]の数値のいずれかを設定する場合において、最下位の優先度が[99]である場合、強制終了シグナルの送信相手となるタスクの優先度管理部222aに優先度[99]を格納する。
【0143】
これに伴い、スケジューリング部230dは、強制的に終了させるタスクをレディキューにリンクしなおす。このとき、スケジューリング部230dは、同一優先度の実行可能状態のタスクの中で強制終了シグナルまたは強制待ちシグナルが送信されているタスクを、それらのシグナルが送信されていないタスクよりも後に実行されるようにレディキューにリンクする。
【0144】
また、優先度変更部270dは、強制的にタスクを待ち状態に移行させる要求のメイン処理において(例えば、図5参照。)、同様に、シグナル送信部250aから、強制待ちシグナルの送信相手となるタスクを識別する情報を受け取り、強制待ちシグナルの送信相手となるタスクに対するタスク情報管理部220aを特定し、オペレーティングシステム実行部200dがタスクに設定可能な優先度の範囲のうちの最下位の優先度を優先度管理部222aに格納する。例えば、オペレーティングシステム実行部200dがタスクの優先度として、[1]から[99]の数値のいずれかを設定する場合において、最下位の優先度が[99]である場合、強制待ちシグナルの送信相手となるタスクの優先度管理部222aに優先度[99]を格納する。
【0145】
これに伴い、スケジューリング部230dは、強制的な待ち状態に移行させるタスクをレディキューにリンクしなおす。このとき、スケジューリング部230dは、同一優先度の実行可能状態のタスクの中で強制終了シグナル、または強制待ちシグナルが送信されているタスクを、それらのシグナルが送信されていないタスクよりも後に実行されるようにレディキューにリンクする。
【0146】
この場合、オペレーティングシステム実行部200dがアイドル状態になる直前に、強制的に終了させるタスクに登録された強制終了シグナルに対応するシグナルハンドラ、または強制的に待ち状態に移行させるタスクに登録された強制待ちシグナルに対応するシグナルハンドラを実行することができる。
【0147】
ここで、アイドル状態とは、どのタスクも実行可能状態にない状態であり、通常は、割込み等のイベントによりタスクが実行可能状態になるのを待っていることを指す。またアイドル状態は、タスクのような優先度も持っていないとする。
【0148】
図13は、本実施形態に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示すタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0149】
図13では、タスクA、タスクB、タスクCの3つのタスクが動作しているとする。また、CPUのアイドル状態をチャートの下方に示す。また、タスクBには、強制終了シグナルに対応する強制終了シグナルハンドラBが登録されているとする。
【0150】
オペレーティングシステム実行部200dは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。
【0151】
時刻t1において、タスクA(優先度[97]。)が現在実行中である。タスクB(優先度[98]。)、タスクC(優先度[99]。)は、実行可能状態である。
【0152】
時刻t2において、タスクAがタスクBを強制的に終了させる要求を出す。オペレーティングシステム実行部200dは、タスクBに対して強制終了シグナルを送信し、タスクBの優先度を最下位の優先度に変更する。このとき、オペレーティングシステム実行部200dは、最下位の優先度として優先度[99]を設定する。したがって、タスクBの優先度は、一時的に優先度[99]になる。
【0153】
スケジューリング部230dは、タスクBをレディキューにリンクしなおす。このときレディキューには優先度[99]のタスクCがリンクされている。タスクCには、強制終了シグナルまたは強制待ちシグナルは送信されていないため、スケジューリング部230dはタスクBをタスクCよりも後に実行されるようにレディキューにリンクする。
【0154】
時刻t3において、引き続き優先度[97]のタスクA内の処理が継続する。
時刻t4において、タスクAが資源獲得の要求、例えば、セマフォを獲得する要求を出す。タスクAが獲得しようとしたセマフォ資源は、すべて使用されていたとすると、オペレーティングシステム実行部200dは、タスクAをセマフォ獲得の待ち状態にする。このとき、タスクBとタスクCとは同一の優先度[99]である。しかし、スケジューリング部230dは、強制終了シグナル、または強制待ちシグナルが送信されていないタスクCを次に実行すべきタスクとして選択する。
【0155】
時刻t5において、タスクCに実行状態が切り替わり、時刻t6において、タスクC内の処理にリターンし、タスクC内の処理を継続する。
【0156】
時刻t7において、タスクCが資源獲得の要求、例えば、セマフォを獲得する要求を出す。タスクCが獲得しようとしたセマフォ資源は、すべて使用されていたとすると、オペレーティングシステム実行部200dは、タスクCを待ち状態に移行させ、時刻t8において、優先度[99]のタスクBは、実行状態に切り替わる。
【0157】
オペレーティングシステム実行部200dは、タスクBのタスク内に戻る前に強制終了シグナルを受信し、タスクBに登録された強制終了シグナルに対応するシグナルハンドラBを呼び出す。
【0158】
時刻t9において、強制終了シグナルに対応するシグナルハンドラBが起動する。
時刻t10において、強制終了シグナルに対応するシグナルハンドラBが現在実行中のタスクを終了する要求を出す。
【0159】
オペレーティングシステム実行部200dは、現在実行中のタスク、すなわち、タスクBを終了させる。タスクBが終了することにより、次に実行すべきタスクが存在しなくなり、時刻t11において、アイドル状態に移行する。
【0160】
このように、強制的に終了させる対象となるタスクBの優先度を最下位の優先度に変化させて、スケジューリング部230dは、タスクをレディキューへリンクするとき、同一優先度の実行可能状態のタスクの中で強制終了シグナルまたは強制待ちシグナルが送信されているタスクが、それらのシグナルが送信されていないタスクよりも後に実行されるようにレディキューにリンクすることによって、オペレーティングシステム実行部200dがタスクに設定可能な優先度の範囲を減少させることなく実施の形態1で説明したタスク切り替え時間が保証できるという効果を発する。
【0161】
なお、タスクを強制的に待ち状態に移行させる処理についても図13と同様のタイミングチャートで表すことができるため、説明は省略する。
【0162】
なお、本実施の形態におけるタスク制御装置100dの機能と実施の形態2におけるタスク制御装置100bの機能とを組み合わせるとしてもよい。例えば、資源の開放を優先させたい場合は、実施の形態1におけるタスク制御装置100bのように、強制終了タスクの優先度を最上位の優先度[1]に変更し、強制終了タスクに獲得されている資源を優先して開放するとしてもよい。また、他のタスクの処理を優先させたい場合は、本実施の形態におけるタスク制御装置100dのように、強制終了タスクの優先度を最下位の優先度[99]に変更し、強制終了タスク以外のタスクを優先して処理するとしてもよい。すなわち、タスク制御装置の実行状態を監視し、強制終了タスクまたは強制待ちタスクの優先度を変更するときに、実行状態から優先事項を決定し、決定した優先事項に応じて、最上位の優先度[1]および最下位の優先度[99]のいずれかに変更するとしてもよい。
【0163】
(実施の形態5)
次に、本発明に係わる実施の形態5について、図面を参照しながら説明する。
【0164】
本実施の形態に係るタスク制御装置は、タスクの状態を強制的に変更された否かが識別される情報を識別情報とした場合において、タスク毎に設定された識別情報を管理することを特徴とする。
【0165】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態1と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0166】
図14は、本実施の形態に係るタスク制御装置の機能構成を示す図である。ここでは、オペレーティングシステムにおいて、強制的にタスクの状態を変化させる機能を実現する場合について説明する。図1に示されるように、タスク制御装置100eは、実施の形態1に係るタスク制御装置100a(図1参照。)と比べて、強制状態変化管理部224eを新たに備える点が異なる。
【0167】
強制状態変化管理部224eは、強制的に状態を変化させられていることを識別する情報を格納する。ここでは強制的な終了をさせるタスクには、強制終了フラグが格納され、強制的な待ち状態に移行させるタスクには、強制待ちフラグが格納されるとする。なお、強制状態変化管理部224eは、タスクごとに必要であるため、タスク情報管理部220eに含んでいるのが望ましい。
【0168】
本実施の形態に係るタスク制御装置において、強制的にタスクを終了させる処理および強制的にタスクを待ち状態に移行させる処理の詳細を図15、図16を用いて説明する。
【0169】
図15は、本実施の形態に係るタスク制御装置において、強制的にタスクを終了させる要求のメイン処理を示すフローチャートである。
【0170】
図3に示されるように、実施の形態1に係るタスク制御装置におけるタスクを強制的に終了させる要求のメイン処理では、強制的に終了させるタスクが既に強制的な状態の変化を実施されているかを判断することなく強制的にタスクを終了させる要求を実行する。
本実施の形態に係るタスクを強制的に終了させる要求のメイン処理は、強制的に終了させられていることを示す強制終了フラグを格納すること(ステップS1303)と、強制的に終了させるタスクが既に強制的な状態の変化を実施されているかを判断する(ステップS1301、S1302、S1305)。
【0171】
図15に示されるように、シグナル送信部250aは、システムコールインターフェース210aから、強制終了シグナルと、その強制終了シグナルの送信相手となるタスクを識別する情報とを受け取り、強制終了シグナルの送信相手となるタスクに対するタスク情報管理部220eを特定し、強制状態変化管理部224eに格納されているフラグを取得する(ステップS1301)。
【0172】
次に、優先度変更部270eは、強制状態変化管理部224eから取得したフラグを判定し(ステップS1302)、強制終了フラグである場合は(ステップS1302:Yes)、この強制的にタスクを終了させる要求のメイン処理からリターンする。一方、強制終了フラグでない場合は(ステップS1302:No)、強制終了シグナルを送信する相手となるタスクの強制状態変化管理部224eに強制終了フラグを格納する(ステップS1303)。
【0173】
次に、強制終了フラグを送信する(ステップS1304)。
次に、強制状態変化管理部224eから取得したフラグを判定し(ステップS1305)、強制待ちフラグでない場合は(ステップS1305:No)、優先度変更部270eは、シグナル送信部250aから、強制待ちシグナルの送信相手となるタスクを識別する情報を受け取り、強制待ちシグナルの送信相手となるタスクに対するタスク情報管理部220eを特定し、優先度管理部222aに最上位の優先度を格納する(ステップS1306)。そして、強制待ちシグナルの送信相手となるタスクに対応するタスク情報管理部220eの状態管理部221aを参照し、実行可能状態であるか否かを判定する(ステップS1307)。一方、強制待ちフラグである場合は(ステップS1305:Yes)、優先度を変更せずに、実行可能状態であるか否かを判定する(ステップS1307)。
【0174】
実行可能状態でない場合は(ステップS1307:No)、実行可能な状態に設定する(ステップS1308)。
【0175】
一方、実行可能状態である場合は(ステップS1307:Yes)、スケジューリング部230aは、強制的に待ち状態に移行させるタスクをレディキューにリンクしなおす(ステップS405)。なお、これ以降のステップについては、図3に示される後半のステップと同じであるので説明を省略する。
【0176】
図16は、本実施の形態に係るタスク制御装置において、タスクを強制的に待ち状態に移行させる要求のメイン処理を示すフローチャートである。
【0177】
図5に示されるように、実施の形態1に係るタスク制御装置100aにおいて、タスクを強制的な待ち状態に移行させる要求のメイン処理では、強制的な待ち状態に移行させるタスクが既に強制的な状態の変化を実施されているかを判断することなく強制的にタスクを待ち状態に移行させる要求を実行する。
【0178】
これに対して、本実施の形態に係るタスク制御装置100eにおいて、タスクを強制的に待ち状態に移行させる要求のメイン処理では、強制的な待ち状態に移行させられていることを示す強制待ちフラグを格納すること(ステップS1404)と、強制的に待ちに移行させるタスクが既に強制的な状態の変化を実施されているかを判断すること(ステップS1401、S1402、S1403)を特徴とする。
【0179】
優先度変更部270eは、システムコールインターフェース210aから、強制待ちシグナルと、その強制待ちシグナルの送信相手となるタスクを識別する情報とを受け取り、強制待ちシグナルの送信相手となるタスクに対するタスク情報管理部220eを特定し、強制状態変化管理部224eに格納されているフラグを取得する(ステップS1401)。そして、強制状態変化管理部224eから取得したフラグを判定し(ステップS1402)、強制終了フラグである場合は(ステップS1402:Yes)、この強制的にタスクを待ち状態に移行させる要求のメイン処理からリターンする。
【0180】
一方、強制終了フラグでない場合は(ステップS1402:No)、強制状態変化管理部224eから取得したフラグを判定し(ステップS1403)、強制待ちフラグである場合は(ステップS1403:Yes)、この強制的にタスクを待ち状態に移行させる要求のメイン処理からリターンする。強制待ちフラグでない場合は(ステップS1403:No)、強制待ちシグナルを送信する相手となるタスクの強制状態変化管理部224eに強制待ちフラグを格納する(ステップS1404)。
【0181】
なお、これ以降のステップについては、図5に示されるステップと同じであるので説明を省略する。
【0182】
例えば、強制的に待ち状態に移行させたタスクに対して、強制的に終了させる要求を行った場合を考える。この場合においては、強制的に待ち状態に移行させたタスクは、そのタスクに対応するタスク情報管理部220eの強制状態変化管理部224eに強制待ちフラグが格納されており(ステップS1404)、さらに、優先度管理部222aには、最上位の優先度[1]が格納されている(ステップS1406)。
【0183】
このとき、そのタスクを強制的に終了させる場合は、そのタスクの強制状態変化管理部224eには、既に強制待ちフラグが格納されているという判断ができる(ステップS1305)ことから、優先度を変更する処理(ステップS1306)を省略することが可能となる。
【0184】
このように、強制的な状態変化を受けていることを意味するフラグを格納するステップと強制的な状態変化を判断するステップとを設けることによっても、実施の形態1で説明したタスク切り替え処理時間が保証できるとともに、強制的にタスクを終了させる要求と強制的にタスクを待ち状態に移行させる要求の両方を使用する場合に、それらの処理を高速化できるという効果を発する。
【0185】
なお、本実施の形態では、強制的に状態を変化させるタスクの優先度を制御する方法(ステップS1306、S1309、S1406、S1408)として、実施の形態1で用いた方法を使用したが、実施の形態2、実施の形態3、または実施の形態4で用いた方法を使用することでも同様の効果を発する。また、実施の形態1で用いた方法および実施の形態3で用いた方法を組み合わせた方法、または実施の形態2で用いた方法および実施の形態4で用いた方法を組み合わせた方法を使用することでも同様の効果を発する。
【0186】
(実施の形態6)
次に、本発明に係る実施の形態6について、図面を参照しながら説明する。
【0187】
本実施の形態に係るタスク制御装置は、第1のタスクに設定されている優先度の変更に伴い、変更前の優先度を保持することを特徴とする。
【0188】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態5と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0189】
図17は、本実施の形態に係るタスク制御装置の機能構成を示す図である。ここでは、オペレーティングシステムにおいて、強制的にタスクの状態を変化させる機能を実現する場合について説明する。図17に示されるように、タスク制御装置100fは、実施の形態5に係るタスク制御装置100e(図14参照。)と比べて、下記の点が異なる。
【0190】
優先度保存部225fは、強制的にタスクの状態を変化させる場合に、優先度変更部270fが優先度管理部222aの優先度を変更する前の優先度を保存する。なお、優先度保存部225fは、強制的に状態を変化させられるタスクごとに必要であるため、タスク情報管理部220fに含んでいるのが望ましい。
【0191】
優先度変更部270fは、強制待ちシグナルを送信する相手となるタスクに対応するタスク情報管理部220fの優先度管理部222aにある優先度を優先度保存部225fにコピーする。強制待ち状態を解除したときに強制待ち状態に移行する前の優先度を戻す。
【0192】
本実施の形態に係るタスク制御方法を用いたオペレーティングシステムについて強制的にタスクを待ち状態に移行させる処理および強制的な待ち状態を解除する処理の詳細を図18、図19、図20を用いて説明する。
【0193】
図18は、本実施の形態に係るタスク制御装置において、タスクを強制的に待ち状態に移行させる要求のメイン処理を示すフローチャートである。
【0194】
実施の形態5に係るタスク制御方法を用いたオペレーティングシステムにおけるタスクを強制的な待ち状態に移行させる要求のメイン処理では、図16に示されるように、強制的な待ち状態に移行させるタスクの優先度を最上位の優先度に変更する。
【0195】
それに対し、本実施の形態に係るタスクを強制的な待ち状態に移行させる要求のメイン処理は、強制的な待ち状態に移行させるタスクの優先度を変更する直前に、現在の優先度を優先度保存部225fに保存することを特徴とする。
【0196】
優先度変更部270fは、強制待ちシグナルを送信する相手となるタスクに対応するタスク情報管理部220fの優先度管理部222aにある優先度を優先度保存部225fにコピーする(ステップS1606)。なお、これ以外のステップについては、図16にしめされるステップと同じであるので説明を省略する。
【0197】
図19は、本実施の形態に係るタスク制御装置において、受信したシグナルに応じてシグナルハンドラを呼び出す処理を示すフローチャートである。
【0198】
図19に示されるように、シグナル受信部260aは、ディスパッチ部240aが次に実行すべきタスクにCPU101aの実行権利を切り替えた後、そのタスクの処理に戻る前に、そのタスクに対応するタスク情報管理部220fのシグナル管理部223aに格納してあるシグナルを受信する。そして、受信したシグナルが強制待ちシグナルである場合は(ステップS1701:Yes)、現在実行中のタスクに対応するタスク情報管理部220fの優先度保存部225fに格納されている優先度を現在実行中のタスクに対応するタスク情報管理部220fの優先度管理部222aに設定する(ステップS1702)。送信されたシグナルに対応するシグナルハンドラを呼び出す(ステップS1703)。一方、強制待ちシグナルでない場合は(ステップS1701:No)、送信されたシグナルに対応するシグナルハンドラを呼び出す(ステップS1703)。
【0199】
図20は、本実施の形態に係るタスク制御装置において、タスクの強制的な待ち状態を解除する要求のメイン処理を示すフローチャートである。
【0200】
まず、優先度変更部270fは、システムコールインターフェース210aから強制待ち状態を解除するタスクを識別する情報を受け取り、強制待ち状態を解除するタスクに対するタスク情報管理部220fを特定し、強制状態変化管理部224eに格納されているフラグが強制待ちフラグでない場合は(ステップS1801:No)、この強制的な待ち状態を解除する要求のメイン処理からリターンする。一方、強制待ちフラグである場合は(ステップS1801:Yes)、強制待ち状態に移行するために用意されたイベントを設定する(ステップS1802)。もし、強制待ち状態を解除するタスクがその強制待ち状態に移行するために用意されたイベントによる待ち状態になっていれば、そのイベントを設定することで、そのタスクの待ち状態が解除される。
【0201】
次に、強制的な待ち状態を解除するタスクの強制状態変化管理部224eのフラグを削除する(ステップS1803)。
【0202】
次に、スケジューリング部230aは、強制的に待ち状態に移行させるタスクをレディキューにリンクしなおす(ステップS1804)。このとき、強制的に待ち状態に移行させるタスクに対応するタスク情報管理部220aの優先度管理部222aに格納される優先度に応じて、FIFO(First In First Out)を満足するようにリンクする。
【0203】
次に、スケジューリング部230aは、レディキューで管理される実行可能状態のタスクの中で最も実行優先順位の高いタスクを次に実行すべきタスクとして選択する(ステップS1805)。
【0204】
次に、ディスパッチ部240aは、現在実行中のタスクから次に実行すべきタスクにCPU101aの実行権利を切り替える(ステップS1806)。
【0205】
図21は、本実施の形態に係るタスク制御装置について、タスクを強制的な待ち状態に移行させる処理およびその強制的な待ち状態を解除させる処理の例を示したタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0206】
図21に示されるように、タスクA(優先度[10]。)、タスクB(優先度[20]。)の2つのタスクが動作しているとする。また、タスクBに対して、強制待ちシグナルに対応する強制待ちシグナルハンドラBが登録されているとする。
【0207】
オペレーティングシステム実行部200fは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。さらに、オペレーティングシステム実行部200fは、強制的に状態を変化させるタスクの優先度を制御するために、最上位の優先度[1]を予約している。
【0208】
時刻t1において、タスクA(優先度[10]。)は、現在実行中である。タスクB(優先度[20]。)は、ある資源Bによる待ち状態である。
【0209】
時刻t2において、タスクAは、タスクBを強制的な待ち状態に移行させる要求を出す。オペレーティングシステム実行部200fは、タスクBに強制待ちフラグを設定し、タスクBに対して強制待ちシグナルを送信し、タスクBの現在の優先度[20]を保存し、タスクBの優先度を予約している優先度(最上位の優先度)に変更する。このとき、オペレーティングシステム実行部200fは、最上位の優先度として優先度[1]を設定する。したがって、タスクBの優先度は、一時的に優先度[1]になる。ただし、タスクBは、資源B獲得の待ち状態であるため、レディキューにはリンクされない。
【0210】
時刻t3において、タスクA内の処理にリターンする。
時刻t4において、タスクAは、タスクBの強制的な待ち状態を解除する要求を出す。
【0211】
これに伴い、オペレーティングシステム実行部200fは、強制待ち状態に移行するために用意されたイベントを設定する。ここでは、タスクBは、まだ強制待ち状態に移行するために用意されたイベントによる待ち状態ではないため、そのイベントが設定された状態となる。
【0212】
次に、タスクBの強制待ちフラグを削除する。次に、スケジューリング処理が実行される(ステップS1805)が、実行可能状態のタスクの中で最も高い優先度をもつタスクは、優先度[10]のタスクAであるため、時刻t5において、引き続きタスクA内の処理が継続する。
【0213】
時刻t6において、タスクAが資源Bを解放する。これにより、タスクBの資源B待ち状態が解除され、時刻t7において、優先度[1]であるタスクBは、実行状態に切り替わり、オペレーティングシステム実行部200fは、タスクB内に戻る前に強制待ちシグナルを受信し、タスクBの優先度保存部225fに格納された優先度[20]を優先度管理部222aに戻し、タスクBに登録された強制待ちシグナルに対応するシグナルハンドラBを呼び出す。
【0214】
時刻t8において、強制待ちシグナルに対応するシグナルハンドラBは、起動し、時刻t9において、現在実行中のタスクのために予約されたイベントが設定されるのを待つ要求を出す。ただし、時刻t4から時刻t5のオペレーティングシステム実行部200fの処理において、そのイベントは既に設定されている状態である。したがって、タスクBは、イベントを取得することができ、待ち状態には移行せず実行可能状態となる。しかし、オペレーティングシステム実行部200fは、実行可能状態のタスクの中で最も高い優先度[10]を持つタスクAを次に実行するタスクとして選択する。
【0215】
時刻t10において、タスクAは、実行状態に切り替わり、時刻t11において、タスクAのタスク内の処理にリターンする。
【0216】
このように、本実施の形態に係るタスク制御装置においても、強制的な待ち状態に移行するタスクの優先度を制御することができるため、実施の形態1で説明したタスク切り替え処理時間が保証できるとともに、さらに、強制待ち状態に移行する前の優先度を保存することにより、強制待ち状態を解除したときに強制待ち状態に移行する前の優先度を戻すことが可能になる。
【0217】
なお、本実施の形態においては、強制的な待ち状態に移行させる要求のメイン処理において、優先度を保存する処理(ステップS1606)とシグナルハンドラを呼び出す処理において、強制待ちシグナルの場合に、保存した優先度を戻す処理(ステップS1702)を設けたが、強制的にタスクを終了させる要求のメイン処理において、優先度を保存するステップと、シグナルハンドラを呼び出す処理において、強制終了シグナルの場合に、保存した優先度を戻すステップを設けてもよい。
【0218】
ただし、オペレーティングシステム実行部200fが、終了したタスクを再起動する処理において、タスクの優先度に初期値を設定するのが一般的であるため、強制的にタスクを終了させる処理においては必ずしも必要な処理ではない。
【0219】
なお、本実施の形態では、強制的に状態を変化させるタスクの優先度を制御する方法として、実施の形態1で用いた方法を使用したが、実施の形態2、実施の形態3、もしくは実施の形態4で用いた方法を使用することでも同様の効果を発する。また、実施の形態1で用いた方法および実施の形態3で用いた方法を組み合わせた方法、または実施の形態2で用いた方法および実施の形態4で用いた方法を組み合わせた方法を使用することでも同様の効果を発する。
【0220】
(実施の形態7)
次に、本発明に係わる実施の形態7について、図面を参照しながら説明する。
【0221】
本実施の形態に係るタスク制御装置は、第1のタスクの状態を強制的に変更する強制変更要求に従って強制的に変更されたタスクの状態を解除する強制解除要求を受け付け、強制解除要求を受け付けると、第1のタスクに設定されている優先度を、変更前の優先度に変更することを特徴とする。
【0222】
具体的には、本実施の形態に係るタスク制御装置は、強制的にタスクを待ち状態に移行させる。また、強制的な待ち状態を解除する。
【0223】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態6と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0224】
図22は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図22に示されるように、タスク制御装置100gは、実施の形態6に係るタスク制御装置100f(図17参照。)と比べて、下記の点が異なる。
【0225】
優先度変更部270gは、強制的な待ち状態の解除対象となるタスクと対応付けられているタスク情報管理部220gの優先度保存部225fに格納されている優先度を、そのタスク情報管理部220gの優先度管理部222aに戻す。そして、オペレーティングシステム実行部200gは、そのタスク情報管理部220gのシグナル管理部223aを参照し、強制待ちシグナルが格納されている場合は、そのタスク情報管理部220gのシグナル管理部223aに格納されている強制待ちシグナルを削除する。
【0226】
図23は、本実施の形態に係るタスク制御装置において、受信したシグナルに応じてシグナルハンドラを呼び出す処理を示すフローチャートである。
【0227】
図23に示されるように、本実施の形態では、実施の形態6(図19参照。)と比べて、受信したシグナルが強制待ちシグナルであるか否かを判定するステップ(ステップS1701)と、強制待ちシグナルであった場合は、優先度保存部225fに格納された優先度を優先度管理部222aに戻す処理(ステップS1702)とが省略されていることが異なる。
【0228】
これにより、受信したシグナルに応じてシグナルハンドラを呼び出す処理(ステップS1703)のみとなり、オペレーティングシステム実行部200gで一般的に用いられている処理と同等である。
【0229】
また、図24は、本実施の形態に係るタスク制御装置において、タスクの強制的な待ち状態を解除する要求のメイン処理を示すフローチャートである。図24に示されるように、本実施の形態では、実施の形態6で説明した図20と比べて、次のステップが追加されていることが異なる。
【0230】
優先度変更部270gは、強制的な待ち状態を解除する対象となるタスクのタスク情報管理部220gの優先度保存部225fに格納された優先度を、そのタスクの優先度管理部222aに戻す(ステップS2102)。そして、強制的な待ち状態を解除する対象となるタスクのタスク情報管理部220gのシグナル管理部223aを参照し、強制待ちシグナルが格納されている場合は(ステップS2103:Yes)、強制的な待ち状態を解除する対象のタスクに対応するタスク情報管理部220gのシグナル管理部223aに格納されている強制待ちシグナルを削除する(ステップS2105)。一方、強制待ちシグナルが格納されていない場合は(ステップS2103:No)、強制待ち状態に移行するために用意されたイベントを設定する(ステップS2104)。これらの追加されたステップ以外については、図20に示されるステップと同じであるので説明を省略する。
【0231】
図25は、本実施の形態に係るタスク制御装置について、タスクを強制的な待ち状態に移行させる処理、およびその強制的な待ち状態を解除させる処理の例を示したタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0232】
図25に示されるように、タスクA、タスクBの2つのタスクが動作しているとする。また、タスクBに対して、強制待ちシグナルに対応するシグナルハンドラBが登録されているとする。
【0233】
オペレーティングシステム実行部200gは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。さらに、オペレーティングシステム実行部200gは、強制的に状態を変化させるタスクの優先度を制御するために、最上位の優先度[1]を予約している。
【0234】
時刻t1において、タスクA(優先度[10]。)は、現在実行中である。タスクB(優先度[20]。)は、ある資源Bによる待ち状態である。
【0235】
時刻t2において、タスクAは、タスクBを強制的な待ち状態に移行させる要求をオペレーティングシステム実行部200gに出す。
【0236】
オペレーティングシステム実行部200gは、タスクBに対して、強制待ちシグナルを送信し、タスクBの現在の優先度[20]を保存し、タスクBの優先度を予約している優先度(最上位の優先度)に変更する。このとき、オペレーティングシステム実行部200gは、最上位の優先度として優先度[1]を設定する。したがって、タスクBの優先度は、一時的に優先度[1]になる。ただし、タスクBは、資源B獲得の待ち状態であるため、レディキューにはリンクされない。
【0237】
時刻t3において、タスクA内の処理にリターンする。
時刻t4において、タスクAは、タスクBを強制的な待ち状態を解除する要求を出す。
【0238】
オペレーティングシステム実行部200gは、タスクBが強制待ち状態であることを判断し、タスクBの優先度保存部225fに保存してある優先度[20]をタスクBの優先度管理部222aに戻す。
【0239】
次に、タスクBに強制待ちシグナルが送信されていることを判断し、強制待ちシグナルを削除する。次に、タスクBの強制待ちフラグを削除する。さらに、スケジューリング処理が実行される。しかし、このとき、実行可能状態のタスクはタスクAのみであるので、時刻t5において、引き続きタスクA内の処理が継続する。
【0240】
時刻t6において、タスクAは、資源Bを解放する。これにより、タスクBの資源B待ち状態が解除される。しかし、実行可能状態のタスクの中で最も優先度を持つタスクは優先度[10]のタスクAであるため、時刻t7において、引き続きタスクA内の処理が継続する。
【0241】
このように、本実施の形態に係るタスク制御方法を用いたオペレーティングシステムにおいても強制的な待ち状態に移行するタスクの優先度を制御することができるため、実施の形態1で説明したタスク切り替え処理時間が保証できるとともに、さらに、強制待ち状態に移行する前の優先度を保存することにより、強制待ち状態を解除したときに強制待ち状態に移行する前の優先度を戻すことが可能になる。
【0242】
さらに、強制待ち状態を解除する処理に、保存された優先度を戻すステップと、送信された強制待ちシグナルを削除するステップを設けることで、強制待ちシグナルハンドラの呼び出しを削減することが可能になり、処理を高速化できるという効果を発する。
【0243】
なお、本実施の形態では、強制的に状態を変化させるタスクの優先度を制御する方法として、実施の形態1で用いた方法を使用したが、実施の形態2、実施の形態3、または実施の形態4で用いた方法を使用することでも同様の効果を発する。また、実施の形態1で用いた方法および実施の形態3で用いた方法を組み合わせた方法、または実施の形態2で用いた方法および実施の形態4で用いた方法を組み合わせた方法を使用することでも同様の効果を発する。
【0244】
(実施の形態8)
次に、本発明に係わる実施の形態8について、図面を参照しながら説明する。
【0245】
本実施の形態に係るタスク制御装置は、第1のタスクに設定されている優先度を変更する優先度変更要求と、変更後の優先度とを受け付け、優先度変更要求を受け付けると、第1のタスクに設定されている優先度を、変更後の優先度に変更することを特徴とする。
【0246】
具体的には、本発明の実施の形態8に係るタスク制御装置は、実施の形態7に係るタスク制御装置に、強制的な待ち状態のタスクを指定して優先度を変更する要求に応じた処理を実行可能にしたものである。タスクが別のタスクを指定して優先度を変更する要求は、例えば、μITRON仕様にも採用されており、強制的な待ち状態に移行しているタスクを指定してその優先度を変更することが可能である。
【0247】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態7と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0248】
図26は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図26に示されるように、タスク制御装置100hは、実施の形態7に係るタスク制御装置100gと比べて、下記の点が異なる。
【0249】
システムコールインターフェース210hには、タスクの優先度を変更する要求をさらに受け付け、その要求に応じた処理をする。
【0250】
図27は、本実施の形態に係るタスク制御装置において、タスクの優先度を変更する要求のメイン処理を示すフローチャートである。
【0251】
図27に示されるように、まず、システムコールインターフェース210hは、優先度を変更する対象となるタスクを識別する情報からそのタスクに対応したタスク情報管理部220gを特定し、強制状態変化管理部224eを参照し、強制待ちフラグの格納有無を判定する(ステップS2301)。判定した結果、強制待ちフラグがない場合は(ステップS2301:No)、システムコールインターフェース210hは、優先度を変更する対象となるタスクに対応したタスク情報管理部220gの優先度管理部222aに変更すべき優先度を格納する(ステップS2302)。
【0252】
次に、スケジューリング部230aは、優先度を変更する対象となるタスクをレディキューにリンクしなおす(ステップS2303)。さらに、レディキューで管理される実行可能状態のタスクの中で最も実行優先順位の高いタスクを次に実行すべきタスクとして選択する(ステップS2304)。
【0253】
次に、ディスパッチ部240aは、現在実行中のタスクから次に実行すべきタスクにCPU101aの実行権利を切り替える(ステップS2305)。
【0254】
一方、強制待ちフラグがある場合は(ステップS2301:Yes)、システムコールインターフェース210hは、優先度を変更する対象となるタスクに対応したタスク情報管理部220gの優先度保存部225fに変更すべき優先度を格納し、このタスクの優先度を変更する要求のメイン処理からリターンする(ステップS2306)。
【0255】
図28は、本実施の形態に係るタスク制御装置において、強制的な待ち状態であるタスクの優先度を変更する処理の例を示すタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0256】
図28に示されるように、オペレーティングシステム上で、タスクA、タスクBの2つのタスクが動作しているとする。また、タスクBに対して、強制待ちシグナルに対応するシグナルハンドラBが登録されているとする。
【0257】
オペレーティングシステム実行部200hは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。さらに、オペレーティングシステム実行部200hは、強制的に状態を変化させるタスクの優先度を制御するために、最上位の優先度[1]を予約している。
【0258】
時刻t1において、タスクA(優先度[10]。)は、現在実行中である。タスクB(優先度[20]。)は、実行可能状態である。
【0259】
時刻t2において、タスクAは、タスクBを強制的な待ち状態に移行させる要求をオペレーティングシステム実行部200hに出す。オペレーティングシステム実行部200hは、タスクBに強制待ちフラグを設定し、タスクBに対して、強制待ちシグナルを送信し、タスクBの現在の優先度[20]を保存し、タスクBの優先度を予約している優先度(最上位の優先度)に変更する。このとき、オペレーティングシステム実行部200hは、最上位の優先度として優先度[1]を設定する。したがって、タスクBの優先度は、一時的に優先度[1]になる。スケジューリング部230aは、タスクBをレディキューにリンクしなおし、次に実行すべきタスクとして最も高い優先度を持つ優先度[1]のタスクBを選択する。
【0260】
時刻t3において、タスクBは、実行状態に切り替わる。オペレーティングシステム実行部200hは、タスクBのタスク内に戻る前に強制待ちシグナルを受信し、タスクBに登録された強制待ちシグナルに対応するシグナルハンドラBを呼び出す。
【0261】
時刻t4において、強制待ちシグナルに対応するシグナルハンドラBは、起動し、時刻t5において、強制待ちシグナルに対応するシグナルハンドラBは、現在実行中のタスクを強制待ち状態に移行させるために予約されたイベントを待つ要求を出す。オペレーティングシステム実行部200hは、現在実行中のタスク、すなわち、タスクBをそのイベント待ち状態に移行させる。タスクBが待ち状態に移行することにより、次に実行すべきタスクは優先度[10]のタスクAとなる。
【0262】
時刻t6において、タスクAは、実行状態に切り替わり、オペレーティングシステム実行部200hは、強制的に待ち状態に移行させる要求のメイン処理を継続し、時刻t7において、タスクA内の処理にリターンする。そして、タスクAは、タスク内の処理を継続する。タスクBは、強制的な待ち状態に移行しており、その優先度は一時的に最も高い優先度(最上位の優先度)である[1]に変更されている。
【0263】
時刻t8において、タスクAは、タスクBの優先度を[5]に変更する要求を出す。オペレーティングシステム実行部200hは、タスクBが強制待ち状態であることを判断し、タスクBのタスク情報管理部220gの優先度保存部225fに優先度[5]を格納する。
【0264】
時刻t9において、オペレーティングシステム実行部200hは、タスクBのタスク内にリターンする。
【0265】
時刻t10において、タスクAは、タスクBの強制待ち状態を解除する要求を出す。オペレーティングシステム実行部200hは、タスクBが強制待ち状態であることを判断し、タスクBのタスク情報管理部220gの優先度保存部225fに保存されている優先度[5]を優先度管理部222aに戻す。次に、タスクBに強制待ちシグナルがすでに受信済みであることを判断し、タスクBの強制待ち状態に移行させるために予約されたイベントを設定することでタスクBの待ち状態を解除する。次に、タスクBの強制待ちフラグを削除する。さらに、レディキューへのリンク、スケジューリング処理が実行され、実行可能状態のタスクの中で最も高い優先度[5]のタスクBが次に実行すべきタスクとして選択される。
【0266】
時刻t11において、タスクBは、実行状態に切り替わり、時刻t12において、オペレーティングシステム実行部200hからタスクB内の処理にリターンする。
【0267】
以上、本実施の形態に係るタスク制御装置によれば、強制的な待ち状態のタスクを指定して優先度を変更する場合、優先度保存部225fに格納された優先度を更新することで、強制的な待ち状態を解除したときに更新された優先度を戻すことが可能になる。
【0268】
なお、本実施の形態では、強制的に状態を変化させるタスクの優先度を制御する方法として、実施の形態1で用いた方法を使用したが、実施の形態2、実施の形態3、または実施の形態4で用いた方法を使用することでも同様の効果を発する。また、実施の形態1で用いた方法および実施の形態3で用いた方法を組み合わせた方法、または実施の形態2で用いた方法および実施の形態4で用いた方法を組み合わせた方法を使用することでも同様の効果を発する。
【0269】
(実施の形態9)
次に、本発明に係る実施の形態9について、図面を参照しながら説明する。
【0270】
本実施の形態に係るタスク制御装置は、第1のタスクの状態を強制待ち状態に移行させる強制待ちシグナルと、第1のタスクの状態を強制終了状態に移行させる強制終了シグナルとのうち、強制終了シグナルを優先して受信することを特徴とする。
【0271】
具体的には、本実施の形態に係るタスク制御装置は、強制的な待ち状態のタスクを指定して、そのタスクを強制的に終了させる要求に応じた処理を実行可能にしたものである。例えば、μITRON仕様では、資源獲得による待ち状態のタスクを指定し強制的な待ち状態へ移行させることで、そのタスクは二重待ち状態となる。また、そのタスクを強制的に終了させることが可能である。
【0272】
以上の点を踏まえて、本実施の形態に係るタスク制御装置について説明する。なお、実施の形態6と同一の構成要素については、同一の参照符号を付して説明を省略する。
【0273】
図29は、本実施の形態に係るタスク制御装置の機能構成を示す図である。図29に示されるように、タスク制御装置100iは、実施の形態6に係るタスク制御装置100f(図17参照。)と比べて、下記の点が異なる。
【0274】
シグナル受信部260iは、さらに、シグナル管理部223aからシグナルを受信するとき、強制終了シグナルを優先して受信するという機能を有する。例えば、シグナル管理部223aは、少なくとも2ビットの情報を格納する領域があるとする。強制終了シグナルを16進数で「0x1」、強制待ちシグナルを16進数で「0x2」という情報とする。そして、シグナル受信部260iは、シグナル管理部223aの下位ビットから情報を取得することで、強制終了シグナルと強制待ちシグナルの両方が格納されている場合に、強制終了シグナルを優先して受信することができる。
【0275】
図30は、本実施の形態に係るタスク制御装置において、資源獲得待ち状態のタスクを強制的に待ち状態に移行させ、そのタスクを強制的に終了させる処理の例を示すタイミングチャートである。タイミングチャートの表記の仕方は図7と同様である。
【0276】
図30に示されるように、ここでは、オペレーティングシステム上で、タスクA、タスクB、タスクCの3つのタスクが動作しているとする。また、タスクBに対して、強制終了シグナルに対応するシグナルハンドラと、強制待ちシグナルに対応するシグナルハンドラとが登録されているとする。さらに、強制終了シグナルと強制待ちシグナルとのそれぞれに対応するシグナルハンドラとして、同じシグナルハンドラBを登録しているとする。シグナルハンドラBは、引き渡されたシグナルを識別する情報によって、終了処理、または待ちに移行する処理を判断するものとする。
【0277】
オペレーティングシステム実行部200iは、タスクに[1]から[99]の数値のいずれかを優先度として設定する。なお、値が小さい程、優先度が高い。さらに、オペレーティングシステム実行部200iは、強制的に状態を変化させるタスクの優先度を制御するために、最上位の優先度[1]を予約している。
【0278】
時刻t1において、タスクA(優先度[10]。)は、ある資源A獲得による待ち状態である。タスクB(優先度[20]。)は、現在実行中のタスクである。タスクC(優先度[30]。)は、実行可能状態である。
【0279】
時刻t2において、タスクB(優先度[20]。)がある資源Bを獲得する要求を出す。ここで、タスクBが獲得しようとする資源Bは、すでに使用されているとする。オペレーティングシステム実行部200iは、タスクBを資源B獲得待ち状態にする。タスクBが待ち状態に移行するため、実行可能状態のタスクの中で最も高い優先度を持つタスクは優先度[30]のタスクCとなる。
【0280】
時刻t3において、タスクCは、実行状態に切り替わり、時刻t4において、タスクC内の処理にリターンし、タスクC内の処理を継続する。
【0281】
時刻t5において、タスクCは、タスクBを強制待ち状態に移行させる要求をオペレーティングシステム実行部200iに出す。オペレーティングシステム実行部200iは、タスクBに対して、強制待ちシグナルを送信し、タスクBの優先度を予約している優先度(最上位の優先度)に変更する。ここで、オペレーティングシステム実行部200iは、最上位の優先度として優先度[1]を設定する。したがって、タスクBの優先度は、一時的に優先度[1]になる。ただし、タスクBは、資源B獲得の待ち状態であるため、レディキューにはリンクされない。
【0282】
時刻t6において、タスクC内の処理にリターンし、時刻t7において、タスクCは、資源Aを解放する。これにより、タスクAの資源A待ち状態が解除され、時刻t8において、タスクAは、実行状態に切り替わり、時刻t9において、タスクA内の処理にリターンする。
【0283】
時刻t10において、タスクAは、タスクBを強制的に終了させる要求をオペレーティングシステム実行部200iに出す。オペレーティングシステム実行部200iは、タスクBに対して、強制終了シグナルを送信し、タスクBの優先度を最も高い優先度(最上位の優先度)に変更する。
【0284】
タスクBは、資源B獲得の待ち状態であると判定され、状態管理部221aに実行可能状態が格納される。
【0285】
スケジューリング部230aは、次に実行すべきタスクとして、優先度[1]のタスクBを選択し、時刻t11において、タスクBは、実行状態に切り替わる。
【0286】
タスクBに対して、強制待ちシグナルと強制終了シグナルとが送信されている。しかし、オペレーティングシステム実行部200iのシグナル受信部260iは、強制終了シグナルを優先して受信し、タスクBに登録された強制終了シグナルに対応するシグナルハンドラBを呼び出す。
【0287】
時刻t12において、強制終了シグナルに対応するシグナルハンドラBが起動する。
時刻t13において、強制終了シグナルに対応するシグナルハンドラBは、現在実行中のタスク、すなわち、タスクBを終了する要求をオペレーティングシステム実行部200iに出す。オペレーティングシステム実行部200iは、現在実行中のタスク、すなわち、タスクBを終了させる。タスクBが終了することにより、次に実行すべきタスクは優先度[10]のタスクAとなる。
【0288】
時刻t14において、タスクAは、実行状態に切り替わり、オペレーティングシステム実行部200iは、強制的に終了させる要求のメイン処理を継続し、時刻t15において、タスクA内の処理にリターンし、タスクA内の処理を継続する。
【0289】
以上、本実施の形態に係るタスク制御装置によれば、オペレーティングシステムの資源獲得待ち状態であるタスクを強制的に待ち状態に移行させ、さらにそのタスクを強制的に終了させる場合は、そのタスクに送信された強制待ちシグナルと強制終了シグナルのうち、強制終了シグナルを優先して受信することにより、そのタスクを強制的に終了させることができる。
【0290】
なお、本実施の形態では、強制的に状態を変化させるタスクの優先度を制御する方法として、実施の形態1で用いた方法を使用したが、実施の形態2、実施の形態3、または実施の形態4で用いた方法を使用することでも同様の効果を発する。また、実施の形態1で用いた方法および実施の形態3で用いた方法を組み合わせた方法、または実施の形態2で用いた方法および実施の形態4で用いた方法を組み合わせた方法を使用することでも同様の効果を発する。
【0291】
なお、本発明に係るタスク制御装置において動作するオペレーティングシステムを、組み込みシステム、コンピュータシステムなどのようなハードウェアシステムに読み出され得るように、光学記録媒体(例えば、CD−ROMなど。)、磁気記録媒体(例えば、ハードディスクなど。)、光磁気記録媒体(例えば、MOなど。)、半導体メモリ(例えば、メモリカードなど。)などのようなコンピュータ読み取り可能な記録媒体に記録しておくとしてもよい。そして、これらの記録媒体を介して、他のハードウェアシステムにおいて実行されるとしてもよい。
【0292】
また、本発明に係るタスク制御装置において動作するオペレーティングシステムを、ネットワーク上のハードウェアシステムに保持しておき、ネットワークを介してダウンロードした他のハードウェアシステムにおいて実行されるとしてもよい。
【0293】
なお、タスク制御装置は、コンピュータシステム以外にも、デジタルTV、デジタルレコーダ、ゲーム機、IP電話、携帯電話などのような組み込みシステムとしてもよい。
【産業上の利用可能性】
【0294】
本発明は、複数のタスクを、優先度が上位のタスクから優先して実行させるタスク制御装置などとして、特に、強制的に状態を変化させる対象となるタスクのシグナルハンドラ処理の影響を受けずにタスク切り替えを行うことにより、タスク切り替え処理時間の保証が可能となるため、リアルタイム性を特徴としたオペレーティングシステム等のタスク制御装置などとして、利用することができる。
【図面の簡単な説明】
【0295】
【図1】本発明の実施の形態1に係るタスク制御装置の機能構成を示す図である。
【図2】本発明の実施の形態1に係るタスク制御装置のハードウェア構成を示す図である。
【図3】本発明の実施の形態1に係るタスク制御装置において、強制的にタスクを終了させる要求のメイン処理を示すフローチャートである。
【図4】本発明の実施の形態1に係るタスク制御装置において、強制的に終了させるタスクに送信された強制終了シグナルによって呼び出される強制終了シグナルハンドラ処理を示したフローチャートである。
【図5】本発明の実施の形態1に係るタスク制御装置において、強制的にタスクを待ち状態に移行させる要求のメイン処理を示すフローチャートである。
【図6】本発明の実施の形態1に係るタスク制御装置において、強制的に待ち状態に移行させるタスクに送信された強制待ちシグナルによって呼び出される強制待ちシグナルハンドラ処理を示したフローチャートである。
【図7】本発明の実施の形態1に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示すタイミングチャートである。
【図8】本発明の実施の形態2に係るタスク制御装置の機能構成を示す図である。
【図9】本発明の実施の形態2に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示すタイミングチャートである。
【図10】本発明の実施の形態3に係るタスク制御装置の機能構成を示す図である。
【図11】本発明の実施の形態3に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示すタイミングチャートである。
【図12】本発明の実施の形態4に係るタスク制御装置の機能構成を示す図である。
【図13】本発明の実施の形態4に係るタスク制御装置において、タスクを強制的に終了させる処理の例を示すタイミングチャートである。
【図14】本発明の実施の形態5に係るタスク制御装置において、強制的にタスクの状態を変化させる機能を実現する場合のソフトウェア構成図である。
【図15】本発明の実施の形態5に係るタスク制御装置において、強制的にタスクを終了させる要求のメイン処理を示すフローチャートである。
【図16】本発明の実施の形態5に係るタスク制御装置において、タスクを強制的に待ち状態に移行させる要求のメイン処理を示すフローチャートである。
【図17】本発明の実施の形態6に係るタスク制御装置の機能構成を示す図である。
【図18】本発明の実施の形態6に係るタスク制御装置において、タスクを強制的に待ち状態に移行させる要求のメイン処理を示すフローチャートである。
【図19】本発明の実施の形態6に係るタスク制御装置において、受信したシグナルに応じてシグナルハンドラを呼び出す処理を示すフローチャートである。
【図20】本発明の実施の形態6に係るタスク制御装置において、タスクの強制的な待ち状態を解除する要求のメイン処理を示すフローチャートである。
【図21】本発明の実施の形態6に係るタスク制御装置において、タスクを強制的な待ち状態に移行させる処理およびその強制的な待ち状態を解除させる処理の例を示すタイミングチャートである。
【図22】本発明の実施の形態7に係るタスク制御装置の機能構成を示す図である。
【図23】本発明の実施の形態7に係るタスク制御装置において、受信したシグナルに応じてシグナルハンドラを呼び出す処理を示すフローチャートである。
【図24】本発明の実施の形態7に係るタスク制御装置において、タスクの強制的な待ち状態を解除する要求のメイン処理を示すフローチャートである。
【図25】本発明の実施の形態7に係るタスク制御装置において、タスクを強制的な待ち状態に移行させる処理およびその強制的な待ち状態を解除させる処理の例を示すタイミングチャートである。
【図26】本発明の実施の形態8に係るタスク制御装置の機能構成を示す図である。
【図27】本発明の実施の形態8に係るタスク制御装置において、タスクの優先度を変更する要求のメイン処理を示すフローチャートである。
【図28】本発明の実施の形態8に係るタスク制御装置において、強制的な待ち状態であるタスクの優先度を変更する処理の例を示すタイミングチャートである。
【図29】本発明の実施の形態9に係るタスク制御装置の機能構成を示す図である。
【図30】本発明の実施の形態9に係るタスク制御装置において、資源獲得待ち状態のタスクを強制的に待ち状態に移行させ、そのタスクを強制的に終了させる処理の例を示すタイミングチャートである。
【図31】従来のタスク制御装置の機能構成を示す図である。
【図32】従来のタスク制御装置において、シグナル機能によってタスクを強制的に終了させる処理の例を示すタイミングチャートである。
【符号の説明】
【0296】
100,100a〜100i タスク制御装置
101a CPU
102a RAM
103a ROM
104a I/O
105a HDD
200,200a〜200i オペレーティングシステム実行部
210,210a,210h システムコールインターフェース
220,220a,220e,220f,220g タスク情報管理部
221,221a 状態管理部
222,222a 優先度管理部
223,223a シグナル管理部
224e 強制状態変化管理部
225f 優先度保存部
230,230a,230b,230d スケジューリング部
240,240a ディスパッチ部
250,250a シグナル送信部
260,260a,260i シグナル受信部
270,270a〜270g 優先度変更部
300 タスクA実行部
301 タスクAに登録されたシグナルハンドラ
310 タスクB実行部
311 タスクBに登録されたシグナルハンドラ
320 タスクC実行部
321 タスクCに登録されたシグナルハンドラ




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013