(57)【要約】【課題】マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができるマルチタスクシステムおよびマルチタスク制御方法を提供する。【解決手段】タスク遷移の発生時に、禁止遷移タスクテーブル２０７に保持されたタスクごとの禁止遷移先タスク情報と、遷移先タスク情報保持部２０５に保持された遷移先タスクの特定情報とを、比較手段２０８によって比較し、発生したタスク遷移が禁止されている遷移である場合は、マイクロプロセッサ３０１によりシステムの稼動を停止する。【選択図】図２
2006228074.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する遷移先タスク情報保持部と、タスクごとに遷移を禁止するタスクの情報を保持する禁止遷移タスクテーブルと、前記遷移先タスク情報保持部の内容と前記禁止遷移タスクテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先タスク情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移タスクテーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
【請求項２】
複数のタスクを切替えて実行するマルチタスクシステムであって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先割込みハンドラ情報保持部と、タスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移割込みハンドラテーブルと、前記遷移先割込みハンドラ情報保持部の内容と前記禁止遷移割込みハンドラテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先割込みハンドラ情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移割込みハンドラテーブル内で前記実行中タスク情報保持部に保持された前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
【請求項３】
複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移テーブルと、前記遷移先情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持されたタスクの実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
【請求項４】
複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報を保持する禁止遷移テーブルと、前記実行中タスク情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
【請求項５】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルは、特定の遷移禁止タスクに対してのみ、そのタスク情報を保持することを特徴とするマルチタスクシステム。
【請求項６】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルの内容を動的に変更する変更手段を設けたことを特徴とするマルチタスクシステム。
【請求項７】
請求項３または請求項４に記載のマルチタスクシステムを動作させるマイクロプロセッサであって、前記禁止遷移テーブルの情報を変更するための変更レジスタを設け、この変更レジスタに値を書き込むことにより前記禁止遷移テーブルの内容を変更可能とすることを特徴とするマイクロプロセッサ。
【請求項８】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、エントリアドレスを登録することを特徴とするマルチタスクシステム。
【請求項９】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスク名を登録することを特徴とするマルチタスクシステム。
【請求項１０】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクＩＤを登録し、前記タスクＩＤまたはＩＤ以上またはＩＤ以下のタスクへの遷移を禁止することを特徴とするマルチタスクシステム。
【請求項１１】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクの優先度を登録し、前記登録優先度または優先度以上または優先度以下のタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
【請求項１２】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超えるタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
【請求項１３】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクの再開領域を登録し、前記登録再開領域から実行が再開されるタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
【請求項１４】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、スタック消費量を登録し、前記登録スタック消費量以上使用しているタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
【請求項１５】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みレベルを登録し、前記登録割込みレベルまたはレベル以上またはレベル以下の割込みハンドラに対して、遷移を禁止することを特徴とするマルチタスクシステム。
【請求項１６】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込み要因を登録することを特徴とするマルチタスクシステム。
【請求項１７】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラのエントリアドレスを登録することを特徴とするマルチタスクシステム。
【請求項１８】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラ名を登録することを特徴とするマルチタスクシステム。
【請求項１９】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超える割込みハンドラに対して、遷移を禁止することを特徴とするマルチタスクシステム。
【請求項２０】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラの情報、および特別に遷移を許可するタスクあるいは割込みハンドラの情報を登録することを特徴とするマルチタスクシステム。
【請求項２１】
請求項２０に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラのうちＯＳの特定資源待ちの状態にあるタスクあるいは割込みハンドラに対して、特別に遷移を許可することを特徴とするマルチタスクシステム。
【請求項２２】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルに前記現在実行中タスクに切替わってからの区間実行時間を登録し、前記実行中タスク情報保持部の保持する区間実行時間が、前記登録区間実行時間を超える場合に、システムを停止することを特徴とするマルチタスクシステム。
【請求項２３】
請求項３または請求項４に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、請求項８〜請求項２２のいずれかに記載の情報を組み合わせたものを設定可能とすることを特徴とするマルチタスクシステム。
【請求項２４】
請求項３または請求項４に記載のマルチタスクシステムであって、前記スケジューラ部が特定のシステムコールから呼ばれた場合は、前記比較手段によって比較を行うことなくタスクを切替えることを特徴とするマルチタスクシステム。
【請求項２５】
請求項３または請求項４に記載のマルチタスクシステムを動作させるマイクロプロセッサであって、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較手段により禁止遷移であると判定した場合は、システムを停止することを特徴とするマイクロプロセッサ。
【請求項２６】
請求項３または請求項４に記載のマルチタスクシステムのデバッグを行なうデバッグ装置であって、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較手段により禁止遷移であると判定した場合は、システムを停止することを特徴とするデバッグ装置。
【請求項２７】
請求項３または請求項４に記載のマルチタスクシステムのデバッグを行なうデバッグ装置であって、前記禁止遷移テーブルの内容の変更を行なう入力手段を有することを特徴とするデバッグ装置。
【請求項２８】
複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報をテーブル化して保持する工程と、前記タスクの切替え時に、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較する工程と、前記比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
【請求項２９】
複数のタスクを切替えて実行するマルチタスク制御方法であって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記割込みハンドラの起動時に、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記比較により、前記現在のタスク実行中に起動要求が発生した割込みハンドラが、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
【請求項３０】
複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較し、前記割込みハンドラの起動時には、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記タスクの切替え時の比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記起動要求が発生した割込みハンドラの情報が、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
【請求項３１】
複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記現在実行中のタスク情報とテーブル内の遷移先タスクへの遷移元として禁止されたタスクの情報とを比較し、前記割込みハンドラの起動時には、前記現在実行中のタスク情報とテーブル内の前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクとを比較する工程と、前記タスクの切替え時の比較により、前記現在実行中のタスクが、前記テーブル内で前記遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記現在実行中のタスクが、前記テーブル内で前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
【請求項３２】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルは、特定の遷移禁止タスクに対してのみ、そのタスク情報を保持するマルチタスク制御方法。
【請求項３３】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルの内容を動的に変更するマルチタスク制御方法。
【請求項３４】
請求項３３に記載のマルチタスク制御方法であって、マイクロプロセッサに設けた変更レジスタに前記テーブルの変更情報を保持し、前記マイクロプロセッサによって、前記変更レジスタに保持した前記変更情報にしたがって、前記テーブルの内容を変更するマルチタスク制御方法。
【請求項３５】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、エントリアドレスを登録するマルチタスク制御方法。
【請求項３６】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスク名を登録するマルチタスク制御方法。
【請求項３７】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクＩＤを登録し、前記タスクＩＤまたはＩＤ以上またはＩＤ以下のタスクへの遷移を禁止するマルチタスク制御方法。
【請求項３８】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクの優先度を登録し、前記登録優先度または優先度以上または優先度以下のタスクに対して、遷移を禁止するマルチタスク制御方法。
【請求項３９】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超えるタスクに対して、遷移を禁止するマルチタスク制御方法。
【請求項４０】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクの再開領域を登録し、前記登録再開領域から実行が再開されるタスクに対して、遷移を禁止するマルチタスク制御方法。
【請求項４１】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、スタック消費量を登録し、前記登録スタック消費量以上使用しているタスクに対して、遷移を禁止するマルチタスク制御方法。
【請求項４２】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みレベルを登録し、前記登録割込みレベルまたはレベル以上またはレベル以下の割込みハンドラに対して、遷移を禁止するマルチタスク制御方法。
【請求項４３】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込み要因を登録するマルチタスク制御方法。
【請求項４４】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラのエントリアドレスを登録するマルチタスク制御方法。
【請求項４５】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラ名を登録するマルチタスク制御方法。
【請求項４６】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超える割込みハンドラに対して、遷移を禁止するマルチタスク制御方法。
【請求項４７】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラの情報、および特別に遷移を許可するタスクあるいは割込みハンドラの情報を登録するマルチタスク制御方法。
【請求項４８】
請求項４７に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラのうちＯＳの特定資源待ちの状態にあるタスクあるいは割込みハンドラに対して、特別に遷移を許可するマルチタスク制御方法。
【請求項４９】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルに前記現在実行中タスクに切替わってからの区間実行時間を登録し、前記実行中タスク情報保持部の保持する区間実行時間が、前記登録区間実行時間を超える場合に、システムを停止するマルチタスク制御方法。
【請求項５０】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、請求項３５〜請求項４９のいずれかに記載の情報を組み合わせたものを設定可能とするマルチタスク制御方法。
【請求項５１】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、前記特定のシステムコールがあった場合は、前記比較を行うことなくタスクを切替えるマルチタスク制御方法。
【請求項５２】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、マイクロプロセッサにより、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較により禁止遷移であると判定した場合は、システムを停止するマルチタスク制御方法。
【請求項５３】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、デバッグ装置により、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較により禁止遷移であると判定した場合はシステムを停止するマルチタスク制御方法。
【請求項５４】
請求項３０または請求項３１に記載のマルチタスク制御方法であって、デバッグ装置により、前記テーブルの内容の変更を行なうマルチタスク制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを切替えて処理実行するとともに割込みハンドラの起動処理を実行するマルチタスクシステムおよびマルチタスク制御方法に関するものである。
【背景技術】
【０００２】
近年、プログラムにおける制御の複雑化の進展により、コンピュータによる仕事の単位であるタスクを一度に２つ以上処理することができるマルチタスクシステムが一般的になってきている。このマルチタスクシステムを用いることによって、複数のタスクを効率よく切替えて実行することができる。
【０００３】
以上のような従来のマルチタスクシステムおよびマルチタスク制御方法について、図面を参照して以下に説明する。
図１は従来における一般的なマルチタスクシステムの構成を示すブロック図である。図１において、ＯＳ（オペレーティングシステム）２０１のスケジューラ部２０３は、アプリケーション１０１内の各タスク（タスクＡ１０２、タスクＢ１０３、タスクＣ１０４）から発行されるそれぞれのシステムコール２０２によって、次に行なうべきタスクへと処理を切替えるものである。また、ＯＳ２０１の割込み管理部２０４は、マイクロプロセッサ３０１からの割込み機能３０２による割込み要求に対して、アプリケーション１０１内で対応するレベルの割込みハンドラ１０５を起動するものである。
【０００４】
以上のように構成されたマルチタスクシステムにおけるタスク遷移の一例を図５に示す。この例では、タスクＡ、Ｂ、Ｃ、Ｄの優先順位が決めてあり、タスクＡの優先度が最も高く、タスクＤの優先度がもっとも低いものとする。図中の時間ｔ１において、同時にタスクＡ、Ｂ、Ｃ、Ｄに対する処理要求が起きた場合、スケジューラ部２０３は、優先順位に従ってタスクＡを起動する。
【０００５】
次に、時間ｔ２でタスクＡを待ち状態にするシステムコールが発行されると、スケジューラ部２０３は、タスクＡを待ち状態とし、タスクＢを起動する。タスクＢの処理が時間ｔ３で終了すると、スケジューラ部２０３は、次に優先度の高いタスクＣを起動する。時間ｔ４においてタスクＡの待ち状態が解除されると、スケジューラ部２０３は、タスクＣから優先度の高いタスクＡに切替える。その後、時間ｔ５においてタスクＡが終了すると、再びタスクＣに切替え、時間ｔ６でタスクＣが終了すると、スケジューラ部２０３はタスクＤを起動する。
【０００６】
このようなマルチタスクシステムにおけるシステムエラーを解析するための一手法として、タスクトレースを使用する方法がある。
タスクトレースとは、デバッグ装置において、システムが実行したタスクの遷移をモニタリングする機能であり、図５に示すようなタスク遷移を視覚的に表現するものである。このようなタスクトレースを使用することにより、システムが期待したタスク遷移をしているか否かを視覚的に容易に検知することが可能となり、この検知結果をもとに、システムエラーの有無を解析することができる。
【０００７】
マルチタスクシステムにおけるシステムエラーに対する他の解析方法としては、異常な状態遷移があった場合に、それを原因として起こるシステムエラーを解析することにより、そのシステムエラーの発生を防止する方法（例えば、特許文献１を参照）が提案されている。
【０００８】
この方法は、システムにおける状態遷移の発生時に、イベントに応じたタスクの状態遷移が正常であるか異常であるかを判定することによって、それを原因として起こるシステムエラーを解析し、異常な状態遷移によるシステムエラーの発生を事前に防止する方法である。
【特許文献１】特開平６−２４２９６９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来技術の後者である特許文献１に開示されたようなマルチタスクシステムでは、タスク遷移の正常か異常かの状態のみに着目しているために、要因としてＯＳの管理領域の破壊やデッドロックなどによりシステムエラーが発生するほどの異常な状態遷移ではないが、それ以外の要因により期待しないタスク遷移が発生した程度の場合には、システムエラーが発生することはなく、その時点でプログラム実行を停止することができず、その不具合解析ポイントの絞込み作業を行えるように対応することができないという問題点を有していた。
【００１０】
また、従来技術の前者であるタスクトレース機能を使用した解析方法においても、あるポイントで起こったシステムエラーを要因として、期待しないタスク遷移が発生した場合や期待しないタイミングにおける割込みハンドラの起動が発生した場合には、それらの視覚的な表現を利用することにより、期待しないタスク遷移が発生していることや期待しないタイミングにおける割込みハンドラの起動が発生していることは検知可能であり、それらの要因となるシステムエラーの有無は解析できるが、その時点でプログラム実行を停止することができず、期待しないタスク遷移や期待しないタイミングにおける割込みハンドラ起動の発生時点に戻すことは不可能であるため、ＯＳの管理領域の破壊やデッドロックなどあるいはその他のシステムエラーの発生ポイントを特定することは困難であるという問題点を有していた。
【００１１】
本発明は、上記従来の問題点を解決するもので、マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができるマルチタスクシステムおよびマルチタスク制御方法を提供する。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明の請求項１に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する遷移先タスク情報保持部と、タスクごとに遷移を禁止するタスクの情報を保持する禁止遷移タスクテーブルと、前記遷移先タスク情報保持部の内容と前記禁止遷移タスクテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先タスク情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移タスクテーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させる構成としたことを特徴とする。
【００１３】
また、本発明の請求項２に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先割込みハンドラ情報保持部と、タスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移割込みハンドラテーブルと、前記遷移先割込みハンドラ情報保持部の内容と前記禁止遷移割込みハンドラテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先割込みハンドラ情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移割込みハンドラテーブル内で前記実行中タスク情報保持部に保持された前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる構成としたことを特徴とする。
【００１４】
また、本発明の請求項３に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移テーブルと、前記遷移先情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持されたタスクの実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる構成としたことを特徴とする。
【００１５】
また、本発明の請求項４に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報を保持する禁止遷移テーブルと、前記実行中タスク情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させる構成としたことを特徴とする。
【００１６】
また、本発明の請求項２８に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報をテーブル化して保持する工程と、前記タスクの切替え時に、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較する工程と、前記比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
【００１７】
また、本発明の請求項２９に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記割込みハンドラの起動時に、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記比較により、前記現在のタスク実行中に起動要求が発生した割込みハンドラが、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
【００１８】
また、本発明の請求項３０に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較し、前記割込みハンドラの起動時には、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記タスクの切替え時の比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記起動要求が発生した割込みハンドラの情報が、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
【００１９】
また、本発明の請求項３１に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記現在実行中のタスク情報とテーブル内の遷移先タスクへの遷移元として禁止されたタスクの情報とを比較し、前記割込みハンドラの起動時には、前記現在実行中のタスク情報とテーブル内の前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクとを比較する工程と、前記タスクの切替え時の比較により、前記現在実行中のタスクが、前記テーブル内で前記遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記現在実行中のタスクが、前記テーブル内で前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
【００２０】
以上により、マルチタスクシステム実行時でシステムエラーが発生した時に、その結果として現れる期待しないタスク遷移の発生や、期待しないタイミングにおける割込みハンドラの起動があった場合には、システムの動作を確実に停止してプログラム実行を継続しないようにすることができる。
【発明の効果】
【００２１】
以上のように本発明によれば、マルチタスクシステム実行時でシステムエラーが発生した時に、その結果として現れる期待しないタスク遷移の発生や、期待しないタイミングにおける割込みハンドラの起動があった場合には、システムの動作を確実に停止してプログラム実行を継続しないようにすることができる。
【００２２】
以上により、マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を示すマルチタスクシステムおよびマルチタスク制御方法について、図面を参照しながら具体的に説明する。
（実施の形態１）
本発明の実施の形態１のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００２４】
図２は本実施の形態１のマルチタスクシステムの構成を示すブロック図であり、タスク遷移発生時に期待しないタスク遷移があった場合にそのタスク遷移を禁止するための構成を示している。図２において、１０１はユーザアプリケーションを表し、ユーザタスク（Ａ〜Ｃ）１０２〜１０４と、割込みハンドラ１０５が含まれる。２０１はＯＳを表し、システムコール２０２と、スケジューラ部２０３と、割込み管理部２０４と、遷移先タスク情報保持部２０５と、実行中タスク情報保持部２０６と、禁止遷移タスクテーブル２０７と、比較手段２０８が含まれる。３０１はマイクロプロセッサを表し、割込み機能３０２が含まれる。
【００２５】
次に、上記構成からなる本実施の形態１のマルチタスクシステムにおいて、システム起動からシステムエラー発生によって期待しないタスク遷移が発生し、システムの停止に至るまでを、図３と図４のフローチャートに基づいて説明する。
【００２６】
図３は本実施の形態１のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャートであり、システム起動時のＯＳ２０１の初期化処理を示している。機器への電源投入等のシステム起動によりＯＳ２０１が起動する。ステップＳ１０１においてカーネルの初期化が行われる。ステップＳ１０２において、タスクごとの禁止遷移タスクテーブル２０７へ、遷移を禁止するタスク情報の初期化登録を行なう。なお、禁止遷移タスクテーブル２０７に登録するデータとしては、タスク情報を識別するデータであり、タスクＩＤやタスクエントリアドレスなどタスクを識別可能なデータであれば、どのようなものでも良いものとする。
【００２７】
また、複数のタスクへの遷移をまとめて禁止したい場合の条件として、登録したタスクＩＤ以上またはＩＤ以下といった指定を行なうことも可能とする。
また、禁止遷移タスクテーブル２０７はデバッグ対象とするタスクに対してのみ持つことも可能とする。
図４は本実施の形態１のマルチタスク制御方法におけるタスク切替え時の処理内容を示すフローチャートであり、スケジューラ部２０３が実行するタスクを切替える際の処理を示している。システムコール２０２の発行によって、スケジューラ部２０３においてタスクの遷移が発生する際に、ステップＳ２０１において遷移先タスク情報保持部２０５および実行中タスク情報保持部２０６の内容が更新される。ステップＳ２０２において、タスクごとに禁止する遷移先タスクのタスク情報を保持する禁止遷移タスクテーブル２０７から、実行中のタスクにおいて禁止する遷移先タスク情報を取得し、ステップＳ２０３において、遷移先タスク情報保持部２０５に保持されたこれから遷移しようとするタスクの情報と、ステップＳ２０２で禁止遷移タスクテーブル２０７から取り出した禁止する遷移先のタスク情報とを、比較手段２０８を用いて比較し、これから遷移しようとするタスクが禁止されているタスク遷移である場合は、タスクの遷移を行なわずにシステムの停止を行なう。
【００２８】
上記の具体的な例を、図５から図７を用いて以下に説明する。
図５は本実施の形態１のマルチタスクシステムにおける正常なタスク遷移を示す説明図であり、図６は本実施の形態１のマルチタスクシステムにおけるシステムエラー発生時の異常なタスク遷移を示す説明図であり、図７は本実施の形態１のマルチタスクシステムにおける禁止遷移タスクテーブル２０７の一例を示す説明図である。
【００２９】
図５に示す正常なタスク遷移である場合は、時刻ｔ２においてタスクＡからタスクＢへ、時刻ｔ５においてタスクＡからタスクＣへ遷移が行なわれている。一方、図６に示す異常なタスク遷移である場合は、時刻ｔ２においては正常にタスクＡからタスクＢへと遷移し、時刻ｔ４から時刻ｔ５の間においてシステムエラーが発生したため、本来時刻ｔ５においてはタスクＡからタスクＣへと遷移を行なうべきはずであるが、タスクＤへと遷移が行なわれているものとする。ここで、時刻ｔ５において起きた異常なタスク遷移を検出するために、図７に示すように、タスクＡの禁止遷移タスクテーブル２０７に、タスクＡから禁止するタスク先の情報としてタスクＤの情報を設定する。
【００３０】
その結果、時刻ｔ５においてタスクＤへの遷移発生時に、図４のステップＳ２０３において、禁止遷移タスクテーブル２０７と遷移先タスク情報保持部２０５との各データを比較手段２０８を用いて比較し、禁止遷移タスクであることか判明するため、システムの停止要求を行うことができる。
【００３１】
かかる構成によれば、ユーザはシステムエラーなどの影響によって発生しうる期待しないタスク遷移発生時には、システムの停止を行なうことが可能となるため、システムエラーの発生ポイントの絞込みを行なうことが可能となる。
（実施の形態２）
本発明の実施の形態２のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００３２】
図８は本実施の形態２のマルチタスクシステムの構成を示すブロック図であり、割込みハンドラ起動時における期待しない割込みハンドラ起動の禁止を行なうための構成を示すブロック図である。図８において、１０１はユーザアプリケーションを表し、ユーザタスク（Ａ〜Ｃ）１０２〜１０４と、割込みハンドラ１０５が含まれる。２０１はＯＳを表し、システムコール２０２と、スケジューラ部２０３と、割込み管理部２０４と、遷移先割込みハンドラ情報保持部８０１と、実行中タスク情報保持部２０６と、禁止遷移割込みハンドラテーブル８０２と、比較手段２０８が含まれる。３０１はマイクロプロセッサを表し、割込み機能３０２が含まれる。
【００３３】
次に、上記構成からなる本実施の形態２のマルチタスクシステムにおいて、システム起動からシステムエラー発生によって期待しない割込みハンドラへの遷移が発生し、システムの停止に至るまでを、図９と図１０のフローチャートに基づいて説明する。
【００３４】
図９は本実施の形態２のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャートであり、システム起動時のＯＳ２０１の初期化処理を示している。機器への電源投入等のシステム起動によりＯＳ２０１が起動する。ステップＳ１０１においてカーネルの初期化が行われる。ステップＳ３０１において、タスクごとの禁止遷移割込みハンドラテーブル８０２へ、遷移を禁止する割込みハンドラ情報の初期化登録を行なう。
【００３５】
なお、禁止遷移割込みハンドラテーブル８０２に登録する禁止遷移割込みハンドラ情報としては、割込みハンドラの割込みレベルや割込み要因、あるいはエントリアドレスなど、割込みハンドラを識別可能なデータであれば良いものとする。
【００３６】
図１０は本実施の形態２のマルチタスク制御方法における割込みハンドラ起動時の処理内容を示すフローチャートであり、割込み管理部２０４において割込み要求発生時の割込みハンドラを起動する際の処理を示している。まず、割込み機能３０２からの割込み要求の発生によって、割込み管理部２０４において割込みハンドラ起動をする際に、ステップＳ４０１で遷移先割込みハンドラ情報保持部８０１および実行中タスク情報保持部２０６の内容を更新する。
【００３７】
次に、ステップＳ４０２において、現在実行中のタスクに対して遷移を禁止する遷移先の情報を、禁止遷移割込みハンドラテーブル８０２から取り出す。次に、ステップＳ４０３において、ステップＳ４０２で禁止遷移割込みハンドラテーブル８０２から取り出した遷移を禁止する遷移先の情報と、遷移先割込みハンドラ情報保持部８０１が保持するこれから遷移しようとする割込みハンドラの情報とを、比較手段２０８を用いて比較を行ない、これからしようとする割込みハンドラへの遷移が禁止されている場合は、割込みハンドラ１０５の起動を行なわずにシステムの停止を行なう。
【００３８】
上記の具体的な例を、図１１から図１３を用いて以下に説明する。
図１１は本実施の形態２のマルチタスクシステムにおける正常な割込みハンドラへの遷移を示す説明図であり、図１２は本実施の形態２のマルチタスクシステムにおける異常な割込みハンドラへの遷移を示す説明図であり、図１３は本実施の形態２のマルチタスクシステムにおける禁止遷移割込みハンドラテーブルの一例を示す説明図である。
【００３９】
図１１の正常なタスク遷移である場合は、時刻ｔ２においてタスクＡからタスクＢへ、時刻ｔ３において割込みＡが発生し、時刻ｔ４においてタスクＡへ切替えられるものとする。時刻ｔ５でタスクＡが終了しタスクＢへ切替えられ、時刻ｔ６でタスクＣへと切替えられる。一方、図１２の異常なタスク遷移である場合、タスクＣ実行中において、時刻ｔ４で資源１を獲得した後に、時刻ｔ５で割込みが発生し、時刻ｔ６においてタスクＡへ切替えたものとする。ここで、タスクＡが時刻ｔ６において資源１を獲得しようとした場合に、すでにタスクＣが獲得しており、時刻ｔ７において待ち状態へとなってしまう。
【００４０】
本来は優先度の高いタスクＡの処理を先に行なうべきはずであるが、タスクＣの処理が先に行なわれてしまう。ここで、異常な割込みハンドラ起動を検出するために、図１３に示すように、タスクＣの禁止遷移割込みハンドラテーブル８０２に、遷移を禁止する割込みハンドラ情報として割込みＡの情報を設定する。
【００４１】
その結果、時刻ｔ５において割込みハンドラＡへの遷移発生時に、図１３のステップＳ４０３において、禁止遷移割込みハンドラテーブル８０２と遷移先割込みハンドラ情報保持部８０１との各データを、比較手段２０８を用いて比較し、禁止遷移割込みハンドラであることが判明するため、システムの停止要求を行うことができる。
【００４２】
かかる構成によれば、ユーザはシステムエラーなどの影響によって発生しうる期待しない割込みハンドラ起動時には、システムの停止を行なうことが可能となるため、システムエラー発生ポイントの絞込みを行なうことが可能となる。
（実施の形態３）
本発明の実施の形態３のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００４３】
図１４は本実施の形態３のマルチタスクシステムの構成を示すブロック図であり、実施の形態１および実施の形態２を組み合わせた構成を示すブロック図である。図１４において、１０１はユーザアプリケーションを表し、ユーザタスク（Ａ〜Ｃ）１０２〜１０４と、割込みハンドラ１０５が含まれる。２０１はＯＳを表し、システムコール２０２と、スケジューラ部２０３と、割込み管理部２０４と、遷移先情報保持部２０９と、実行中タスク情報保持部２０６と、禁止遷移テーブル２１０と、比較手段２０８が含まれる。３０１はマイクロプロセッサを表し、割込み機能３０２が含まれる。
【００４４】
遷移先情報保持部２０９は、スケジューラ部２０３および割込み管理部２０４によって、これから遷移する先のタスクおよび割込みハンドラの情報を登録保持されるものとし、禁止遷移テーブル２１０は、タスクごとに遷移を禁止するタスクおよび割込みハンドラの情報を保持するものとする。比較手段２０８において、スケジューラ部２０３がタスク切替えを行なう際、および割込み管理部２０４が割込みハンドラを起動する際に、禁止遷移テーブル２１０と遷移先情報保持部２０９との各データを比較し、遷移先情報保持部２０９内のこれから遷移する先のタスクおよび割込みハンドラが、禁止遷移テーブル２１０において禁止された遷移先である場合は、システムの停止を行なう。
【００４５】
次に、上記構成からなる本実施の形態３のマルチタスクシステムにおける処理内容を、図１６のフローチャートに基づいて説明する。
図１６は本実施の形態３のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、スケジューラ部２０３が実行するタスクの切替えを行い、割込み管理部２０４が割込みハンドラを起動する際の処理を示している。
【００４６】
タスク遷移もしくは割込み遷移が発生すると、ステップＳ５０１において、遷移先情報保持部２０９および実行中タスク情報保持部２０６の内容が更新される。遷移先情報保持部２０９は、これから遷移する先のタスクおよび割込みハンドラの情報に加え、タスクへの遷移であるか割込みハンドラへの遷移であるかの情報を、保持するものとする。次のステップＳ５０２において、禁止遷移テーブル２１０から遷移を禁止するタスクの情報もしくは割込みハンドラの情報を取り出す。次のステップＳ５０３において、ステップＳ５０２で禁止遷移テーブル２１０から取り出した禁止する遷移の内容と、遷移先情報保持部２０９に保持された情報として、これから遷移する先のタスクおよび割込みハンドラの情報に加えタスクへの遷移であるか割込みハンドラへの遷移であるかの情報とを比較し、遷移先情報保持部２０９内のこれから遷移する先のタスクおよび割込みハンドラが、禁止遷移テーブル２１０において禁止されている遷移先である場合は、タスクの遷移もしくは割込みハンドラの起動を行なわずに、システムの停止を行なう。
【００４７】
上記の具体的な例を、図１１、図１２、図１５を用いて以下に説明する。
図１１は本実施の形態３のマルチタスクシステムにおける正常な割込みハンドラへの遷移を示す説明図であり、実施の形態２の場合と同様である。図１２は本実施の形態３のマルチタスクシステムにおける異常な割込みハンドラへの遷移を示す説明図であり、実施の形態２の場合と同様である。図１５は本実施の形態３のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、タスクＣの禁止遷移テーブル２１０について記したものとする。
【００４８】
図１１に示す正常なタスク遷移である場合は、時刻ｔ２においてタスクＡからタスクＢへ、時刻ｔ３において割込みＡが発生し、時刻ｔ４でタスクＡへ切替えられるものとする。時刻ｔ５でタスクＡが終了し、タスクＢへ切替えられ、時刻ｔ６でタスクＣへと切替えられる。一方、図１２に示す異常なタスク遷移である場合、時刻ｔ３からのタスクＣ実行中において、時刻ｔ４で資源１を獲得した後に、時刻ｔ５で割込みＡが発生し、時刻ｔ６でタスクＡへ切替えたものとする。ここで、タスクＡが時刻ｔ６において資源１を獲得しようとした場合に、その資源１はタスクＣがすでに獲得しており、時刻ｔ７において待ち状態へとなってしまう。本来は時刻ｔ６から優先度の高いタスクＡの処理を先に行なうべきはずであるが、時刻ｔ７においてタスクＣに戻り、タスクＣの処理が先に行なわれてしまう。
【００４９】
ここで、時刻ｔ５において起きた異常な遷移発生を検出するために、図１５に示すように、タスクＣの禁止遷移テーブル２１０に、タスクＣからの遷移を禁止するタスク先の情報としてタスクＢの情報と、タスクＣからの遷移を禁止する割込みハンドラの情報として割込みＡの情報とを設定登録する。
【００５０】
その結果、時刻ｔ５において割込みハンドラＡへの遷移発生時に、図１６のステップＳ５０３において、遷移先情報保持部２０９の内容と禁止遷移テーブル２１０の内容とを比較手段２０８によって比較し、遷移先情報保持部２０９内のこれから遷移する先の割込みハンドラが、禁止遷移テーブル２１０において禁止する遷移先の割込みハンドラＡであることが判明するため、システムの停止要求を行なうことができる。
【００５１】
かかる構成によれば、ユーザはシステムエラーなどの影響によって発生しうる期待しないタスク遷移および割込みハンドラ遷移時には、システムの停止を行なうことが可能となるため、システムエラー発生ポイントの絞込みを行なうことが可能となる。
【００５２】
なお、上記の実施の形態１〜３は、ＯＳにおいて禁止遷移情報の判別を行なっているが、この構成を、マイクロプロセッサやデバッグ装置において実現を行なった場合には、ソフトウェアへの変更をくわえなくて良いという利点がある。
（実施の形態４）
本発明の実施の形態４のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００５３】
図１７は本実施の形態４のマルチタスクシステムの構成を示すブロック図であり、タスク遷移の発生もしくは割込みハンドラへの遷移時に、禁止されている遷移元タスクからの遷移である場合は、システムを停止する構成を示すブロック図である。図１７において、１０１はユーザアプリケーションを表し、ユーザタスク（Ａ〜Ｃ）１０２〜１０４と、割込みハンドラ１０５が含まれる。２０１はＯＳを表し、システムコール２０２と、スケジューラ部２０３と、割込み管理部２０４と、遷移先情報保持部２０９と、実行中タスク情報保持部２０６と、禁止遷移テーブル２１０と、比較手段２０８が含まれる。３０１はマイクロプロセッサを表し、割込み機能３０２が含まれる。
【００５４】
本実施の形態４では、禁止遷移テーブル２１０にはタスクごとに禁止する遷移元のタスク情報を保持しておき、タスクの遷移発生時もしくは割込みハンドラの起動時において、実行中タスク情報保持部２０６に保持されている現在実行中のタスク情報と、禁止遷移テーブル２１０に保持されており、遷移先情報保持部２０９に保持されている遷移先のタスク情報に対応させて取り出された禁止する遷移元のタスク情報とを、比較手段２０８を用いて比較し、実行中タスク情報保持部２０６に保持されている現在実行中のタスクが、禁止遷移テーブル２１０において禁止された遷移元である場合は、タスクの遷移もしくは割込みハンドラの起動を行なわずに、システムの停止を行なう。
【００５５】
図１７において、タスク遷移もしくは割込みハンドラの起動時にスケジューラ部２０３の処理もしくは割込み管理部２０４の処理が実行される際に、実行中タスク情報保持部２０６および遷移先情報保持部２０９の内容を更新する。本実施の形態４においては、禁止遷移テーブル２１０は、禁止する遷移元のタスク情報を保持する構成となり、タスクごとおよび割込みごとにテーブルを持つものとする。
【００５６】
上記の具体的な例を、図５、図６を用いて以下に説明する。
図５は本実施の形態４のマルチタスクシステムにおける正常なタスク遷移を示す説明図であり、実施の形態１の場合と同様である。図６は本実施の形態４のマルチタスクシステムにおける異常なタスク遷移を示す説明図であり、実施の形態１の場合と同様である。
【００５７】
図５に示す正常なタスク遷移である場合は、時刻ｔ２においてタスクＡからタスクＢへ、時刻ｔ５においてタスクＡからタスクＣへ遷移が行なわれている。一方、図６に示す異常なタスク遷移である場合は、時刻ｔ２においてタスクＡからタスクＢへ、時刻ｔ４から時刻ｔ５の間においてシステムエラーが発生し、時刻ｔ５においては、本来ならばタスクＡからタスクＣへと遷移を行なうべきはずであるが、タスクＤへと遷移が行なわれているものとする。ここで、時刻ｔ５において起きた異常なタスク遷移を検出するために、タスクＤの禁止遷移テーブル２１０に、禁止する遷移元のタスク情報として、タスクＡの情報を設定保持する。
【００５８】
その結果、時刻ｔ５においてタスクＤへの遷移発生時に、禁止遷移テーブル２１０に保持された禁止する遷移元のタスク情報と、実行中タスク情報保持部２０６に保持された現在実行中のタスク情報とを、比較手段２０８を用いて比較し、実行中タスク情報保持部２０６に保持された現在実行中のタスクが、禁止遷移テーブル２１０に保持された禁止する遷移元のタスクであることか判明するため、システムの停止要求を行うことができる。
【００５９】
かかる構成によれば、禁止遷移テーブル２１０に登録される情報は、遷移元タスクの情報のみとなるため、禁止遷移判定時の比較処理を簡略化することが可能となる。
（実施の形態５）
本発明の実施の形態５のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００６０】
図１８は本実施の形態５のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態１〜４における禁止遷移タスクテーブル２０７あるいは禁止遷移割込みハンドラテーブル８０２あるいは禁止遷移テーブル２１０に対して、登録可能なタスク情報もしくは割込み情報として、タスク優先度もしくは割込みレベルを追加した場合のテーブル構造を示す説明図である。図１８において、禁止する遷移先としては、実行優先度が３以下の低い優先度のタスクとタスクＤと割込みレベルが２以下の低いレベルの割込みハンドラが設定されている。
【００６１】
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図１４、図１６、図１８を用いて以下に説明する。
図１４は本実施の形態５のマルチタスクシステムの構成を示すブロック図であり、実施の形態３の場合と同様である。図１６は本実施の形態５のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態３の場合と同様である。
【００６２】
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部２０３もしくは割込み管理部２０４が、タスクの切替えあるいは割込みハンドラの起動を行う。図１８に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その際の処理としては、図１６に示したフローに従った処理が実行される。
【００６３】
まず、ステップＳ５０１において遷移先情報保持部２０９および実行中タスク情報保持部２０６の更新が行なわれる。次のステップＳ５０２で、実行中タスク情報保持部２０６の現在実行中のタスクに対応させて、禁止遷移テーブル２１０から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。
【００６４】
上記処理のうち、はじめに、タスク遷移であった場合について説明を行なう。
まず、図１８において、タスク遷移を禁止する条件として禁止遷移テーブル２１０にＩＤ１として設定されている優先度が３以下であるという情報を禁止遷移先情報として取り出し、遷移先情報保持部２０９の内容と、比較手段２０８を用いて比較を行なう。ここで、遷移先情報保持部２０９が保持するデータは、タスクコントロールブロックのデータなどを保持するものとする。
【００６５】
上記の比較の結果、遷移先タスクの実行優先度が３を超える場合は、次にＩＤ２のタスクＤというタスク名であるかの比較を行ない、その結果、タスクＤでないことが判明した場合は遷移を許可し、ステップＳ５０４において遷移処理を行なう。
【００６６】
次に、割込みハンドラへの遷移であった場合について説明を行なう。
割り込みハンドラへの遷移であった場合は、図１８において、割り込みハンドラへの遷移を禁止する条件として、禁止遷移テーブル２１０から、ＩＤ３の割込みレベルが２以下であるという条件を、禁止遷移先情報として取り出し、比較手段２０８によって、遷移先情報保持部２０９の情報と比較を行なうものとする。ここで、比較手段２０８によって禁止されている遷移であったと判定した場合は、タスクの切替えおよび割込みハンドラの起動は行なわず、システムの停止を行なう。
【００６７】
遷移を禁止する条件として優先度を登録して指定する構成においては、その登録により指定する優先度以上または以下の優先度の場合は遷移の禁止を行なうことによって、タスクを優先度でグルーピングして遷移の禁止を行なうことが可能となる。
【００６８】
また、遷移を禁止する条件として割込みレベルを登録して指定する構成においては、その登録により指定するレベルもしくはレベル以上または以下のレベルの場合は、遷移の禁止を行なうことによって、例えば、最高レベルの割込みハンドラを禁止した場合、そのタスクにおいては割込みが発生した場合にシステムを停止することが可能となり、割込み禁止状態の設定を確実に確かめることが可能となる。
（実施の形態６）
本発明の実施の形態６のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００６９】
図１９は本実施の形態６のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態１〜４における禁止遷移タスクテーブル２０７あるいは禁止遷移割込みハンドラテーブル８０２あるいは禁止遷移テーブル２１０に対して、登録可能なタスク情報もしくは割込み情報として、遷移先タスクの実行を再開するための再開アドレスを追加した場合のテーブル構造を示す説明図である。図１９において、禁止遷移テーブル２１０には、禁止する遷移先タスクとしてのタスクＤに加え、タスク実行の再開を許可する再開アドレスのタスクとして、０ｘ４０００００００〜０ｘ４０００１０００のアドレス範囲から再開されるタスクが設定されている。
【００７０】
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図１４、図１６、図１９を用いて以下に説明する。
図１４は本実施の形態６のマルチタスクシステムの構成を示すブロック図であり、実施の形態３の場合と同様である。図１６は本実施の形態６のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態３の場合と同様である。
【００７１】
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部２０３もしくは割込み管理部２０４が、タスクの切替えあるいは割込みハンドラの起動を行う。一般的なマルチタスクシステムにおいては、スケジューラ部２０３は、タスクの切替え時に、タスクごとのスタック領域に現在実行中タスクのプログラムカウンタ値やレジスタ値などの情報を退避し、切替え先のタスクのスタックからプログラムカウンタやレジスタ値を取得することによって、タスクの切替えを行なう。マルチタスクシステムにおけるエラー発生のパターンとして、このタスクごとのスタック領域の内容が破壊され正しくない再開番地から再開されるケースが良く見られる。
【００７２】
図１９に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その際の処理としては、図１６に示したフローに従った処理が実行される。
【００７３】
まず、ステップＳ５０１において遷移先情報保持部２０９および実行中タスク情報保持部２０６の更新が行なわれる。次のステップＳ５０２で、実行中タスク情報保持部２０６の現在実行中のタスクに対応させて、禁止遷移テーブル２１０から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。ここで、図１９に示すように、禁止遷移テーブル２１０にタスク実行が可能な遷移先タスクの再開アドレスとして０ｘ４０００００００〜０ｘ４０００１０００を指定してある場合、ステップＳ５０３において、禁止遷移テーブル２１０内に指定された実行可能なタスクの再開アドレスと、遷移先情報保持部２０９内の遷移先タスクとして再開するタスクのアドレスとが、比較手段２０８によって比較され、遷移先タスクとして再開するタスクのアドレスが、禁止遷移テーブル２１０内に指定された実行可能なタスクの再開アドレスを外れている場合は、システムの停止を行なうものとする。
【００７４】
本構成においては、タスクスタックの破壊によって、プログラムの再開アドレスが指定されエリア外から再開される場合には、システムの停止を行なうことが可能となるため、スタック領域破壊によるポイントでシステムを停止させることが可能となる。
（実施の形態７）
本発明の実施の形態７のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００７５】
図２０は本実施の形態７のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態１〜４における禁止遷移タスクテーブル２０７あるいは禁止遷移割込みハンドラテーブル８０２あるいは禁止遷移テーブル２１０に対して、登録可能なタスク情報もしくは割込み情報として、スタック消費量を追加した場合のテーブル構造を示す説明図である。図２０において、禁止する遷移先としては、タスクＤに加え、０ｘ１０００バイト以上のスタックが使用されているタスクの場合が設定されている。
【００７６】
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図１４、図１６、図２０を用いて以下に説明する。
図１４は本実施の形態７のマルチタスクシステムの構成を示すブロック図であり、実施の形態３の場合と同様である。図１６は本実施の形態７のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態３の場合と同様である。
【００７７】
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部２０３もしくは割込み管理部２０４が、タスクの切替えあるいは割込みハンドラの起動を行う。一般的なマルチタスクシステムにおいては、スタックはタスクごとに設けられるが、確保されたスタックサイズ以上にスタックが使用された場合の挙動は保証することができない。スタックには関数呼び出し時やタスクを切替える際などに、再開アドレスやレジスタのデータなどが退避される。
【００７８】
図２０に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その処理としては、図１６に示したフローに従った処理が実行される。
【００７９】
まず、ステップＳ５０１において遷移先情報保持部２０９および実行中タスク情報保持部２０６の更新が行なわれる。次のステップＳ５０２で、実行中タスク情報保持部２０６の現在実行中のタスクに対応させて、禁止遷移テーブル２１０から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。
【００８０】
ここで、図２０に示すように、禁止遷移テーブル２１０において、禁止遷移情報として指定のタスク名に加えてスタック消費量を０ｘ１０００と指定している場合、ステップＳ５０３において、禁止遷移テーブル２１０にスタック消費量として保持された０ｘ１０００と、遷移先情報保持部２０９に保持されているスタック消費量とが、比較手段２０８によって比較され、その結果、遷移先情報保持部２０９に保持されている遷移先で消費しているスタック消費量の限界値として、０ｘ１０００以上消費しているタスクへの遷移である場合は、システムの停止を行なうものとする。
【００８１】
本構成においては、タスク遷移発生時にスタック使用量の予想値を指定し、ある予想値以上使用している場合には、システムの停止を行なうことにより、指定のポイントにおけるスタック使用量の制限に関するデバッグを行なうことが可能となる。
（実施の形態８）
本発明の実施の形態８のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００８２】
図２１は本実施の形態８のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態１〜４における禁止遷移タスクテーブル２０７あるいは禁止遷移割込みハンドラテーブル８０２あるいは禁止遷移テーブル２１０に対して、登録可能なタスク情報もしくは割込み情報として、遷移先のタスクもしくは割込みハンドラが現在までに実行された累計時間を追加した場合のテーブル構造を示す説明図である。ここで、累計時間の保持方法については、マイクロプロセッサ上のタイマ資源などを使用するものとするが、本発明の本質ではないため、ここでは言及しないものとする。
【００８３】
また、一般的なマルチタスクシステムにおいて、タスクを切替える方式には、一定の時間ごとに実行するタスクを切替えるタイムシェアリング方式と、イベントによって実行するタスクを切替えるイベントドリブン方式が存在する。本実施の形態のタスク切替え方式は、イベントドリブン方式であって、あるタスクもしくは割込みハンドラが一定の時間以上ＣＰＵを使用した場合にエラーとする方法である。
【００８４】
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図１４、図１６、図２１を用いて以下に説明する。
図１４は本実施の形態８のマルチタスクシステムの構成を示すブロック図であり、実施の形態３の場合と同様である。図１６は本実施の形態８のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態３の場合と同様である。
【００８５】
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部２０３もしくは割込み管理部２０４が、タスクの切替えあるいは割込みハンドラの起動を行う。
【００８６】
図２１に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その処理としては、図１６に示したフローに従った処理が実行される。
【００８７】
まず、ステップＳ５０１において遷移先情報保持部２０９および実行中タスク情報保持部２０６の更新が行なわれる。次のステップＳ５０２で、実行中タスク情報保持部２０６の現在実行中のタスクに対応させて、禁止遷移テーブル２１０から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。
【００８８】
ここで、図２１に示したように、禁止遷移テーブル２１０にタスク遷移の禁止情報として、遷移先のタスクが実行される時の累計時間（ここでは１００ｍｓｅｃ）を指定している場合、ステップＳ５０３において、遷移先情報保持部２０９に保持されている遷移先タスクが実行される時の累計時間と、禁止遷移テーブル２１０に保持されたタスク遷移の禁止情報であり遷移先タスクが実行されるときの累計時間としての１００ｍｓｅｃとが、比較手段２０８によって比較され、その結果、遷移先情報保持部２０９に保持されている遷移先タスクの実行中の累計時間が、禁止遷移テーブル２１０に保持されている１００ｍｓｅｃを超える場合は、システムの停止を行なうものとする。
【００８９】
なお、ここで禁止遷移テーブル２１０に登録するデータとして、遷移する前の遷移元タスクの実行に切り替わってから現在までの区間実行時間を登録しても、遷移先タスクの実行中の累計時間の場合と同様な方法によって比較することにより、同様の効果を期待することができる。
【００９０】
本構成によって、遷移先のタスクもしくは割込みハンドラが指定した時間以上にＣＰＵを使用した場合に、システムの停止を行なうことが可能となるため、リアルタイムシステムにおけるデッドラインの判定を行なうことが可能となる。
（実施の形態９）
本発明の実施の形態９のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００９１】
図２２は本実施の形態９のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態１〜４における禁止遷移タスクテーブル２０７あるいは禁止遷移割込みハンドラテーブル８０２あるいは禁止遷移テーブル２１０に対して、遷移を禁止する情報に加え、特別に遷移を許可する場合の許可フラグを追加した場合のテーブルの構造を示す説明図である。ここでは、遷移先のタスクで獲得する資源として、テーブルで指定された資源（セマフォ）である場合には、そのタスクへの遷移を許可するものとし、その他の資源(例えば、データキューやイベントフラグなど)を獲得するために資源待ちとなっているタスクへ切替えられる場合は、そのタスクへの遷移を禁止するものとする。
【００９２】
例えば、図２２において、禁止する遷移先としてのタスクＤに加え、特別に遷移を許可するために、遷移許可フラグと、その許可する条件である場合として「セマフォ待ちの解除」という要因によるタスク切替えの場合が設定されている。すなわち「セマフォ待ちの解除」という設定情報がタスクを切替えるトリガとなる。
【００９３】
図２２に示したようなテーブル設定の場合は、遷移を禁止するタスクＤへの遷移であっても、待ち資源として「セマフォ待ちの解除」という要因を設定している場合は、遷移を許可するものとする。
【００９４】
このように、特定の資源待ち（ここでは、セマフォ）によるタスク切替え時は遷移を許可することにより、詳細なタスク遷移禁止条件を設定することが可能となる。
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図５、図６、図１４、図２２を用いて以下に説明する。
【００９５】
図５は本実施の形態９のマルチタスクシステムにおける正常なタスク遷移を示す説明図であり、実施の形態１の場合と同様である。図６は本実施の形態９のマルチタスクシステムにおける異常なタスク遷移を示す説明図であり、実施の形態１の場合と同様である。図１４は本実施の形態９のマルチタスクシステムの構成を示すブロック図であり、実施の形態３の場合と同様である。
【００９６】
図５に示す正常なタスク遷移である場合は、時刻ｔ２においてタスクＡからタスクＢへ、時刻ｔ５においてタスクＡからタスクＣへ遷移が行なわれている。一方、図６に示す異常なタスク遷移である場合は、時刻ｔ２においては正常にタスクＡからタスクＢへと遷移し、時刻ｔ４から時刻ｔ５の間においてシステムエラーが発生したため、本来時刻ｔ５においてはタスクＡからタスクＣへと遷移を行なうべきはずであるが、タスクＤへと遷移が行なわれているものとする。
【００９７】
上記のようなタスク遷移に対して、実施の形態１の構成であれば、時刻ｔ５においてタスクＤへの遷移が発生した場合は、システムの停止を要求していたが、本実施の形態９においては、図２２のように、禁止遷移テーブル２１０に、遷移許可フラグと、遷移許可フラグに従って特別に遷移を許可する場合の条件としてセマフォ待ちの解除とが指定されており、時刻ｔ５に、図１４に示す比較手段２０８によって、禁止遷移テーブル２１０に保持された遷移許可フラグおよびこの遷移許可フラグに従って特別に遷移を許可する場合の条件と、遷移先情報保持部２０９の内容とを比較し、遷移先情報保持部２０９がセマフォ待ちである場合は、タスクＤへの遷移であっても許可するものとする。
【００９８】
本構成によって、特別に遷移を許可する条件を追加することができるため、柔軟な禁止遷移条件の設定を行なうことが可能となる。なお、禁止遷移テーブルを構造体によって実現することにより、実施の形態５〜９の条件を組み合わせて使用することが可能である。
（実施の形態１０）
本発明の実施の形態１０のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【００９９】
図２３は本実施の形態１０のマルチタスクシステムにおける禁止遷移テーブルの内容を動的に変更する変更手段を設けた場合の構成を示すブロック図であり、実施の形態１〜３の構成に対して、禁止遷移テーブル２１０の内容を動的に変更するための変更手段２１１を加えた構成図である。図２３において、１０１はユーザアプリケーションを表し、ユーザタスク（Ａ〜Ｃ）１０２〜１０４と、割込みハンドラ１０５が含まれる。２０１はＯＳを表し、システムコール２０２と、スケジューラ部２０３と、割込み管理部２０４と、遷移先情報保持部２０９と、実行中タスク情報保持部２０６と、禁止遷移テーブル２１０と、比較手段２０８と、変更手段２１１が含まれる。３０１はマイクロプロセッサを表し、割込み機能３０２が含まれる。
【０１００】
禁止遷移テーブル２１０の内容を動的に変更する具体的な例について、図２３を用いて説明する。
図２３において、禁止遷移テーブル２１０は、メモリ空間上に設けるものとし、タスクから発行されるシステムコールの一つである変更手段２１１によって、禁止遷移テーブル２１０の内容を変更するものとする。変更手段２１１は遷移を禁止するタスクの条件の追加および削除が可能なものとする。
【０１０１】
なお、ＯＳ２０１内に変更手段２１１を設けずに、マイクロプロセッサ３０１上の特定のレジスタに値を書き込むことによって、禁止遷移テーブル２１０の内容を変更する方法や、マルチタスクシステムのデバッグを行なうデバッグ装置において、その入力手段から禁止遷移テーブル２１０の内容を直接変更する方法などでもよいものとする。
【０１０２】
かかる構成によれば、遷移禁止条件を動的に変更することが可能となるため、システムエラー判定の条件を強化することが可能になる。
（実施の形態１１）
本発明の実施の形態１１のマルチタスクシステムおよびマルチタスク制御方法を説明する。
【０１０３】
図２４は本実施の形態１１のマルチタスク制御方法における処理内容を示すフローチャートであり、スケジューラ部２０３において、特定のシステムコール２０２からスケジューラ部２０３が呼ばれた場合は、禁止遷移の判定を行なわない場合のフローチャートを示したものである。
【０１０４】
上記の処理の具体的な例を、図２４を用いて以下に説明する。
図２４において、ステップＳ２００が、図４に示すタスク切替え処理に対して新しく追加された処理である。このタスク切替え処理は、スケジューラ部２０３において行なわれる処理で、各タスク（Ａ〜Ｃ）１０２〜１０４から呼ばれたシステムコール２０２によって呼び出されるものである。ここで、システムコール２０２からスケジューラ部２０３を呼び出す際に、禁止遷移タスクの判定処理を実行するかどうかを表す判定フラグを渡し、ステップＳ２００において、判定フラグが有効の場合のみに、スケジューラ部２０３は、遷移先情報保持部２０９と実行中タスク情報保持部２０６に対して情報を送り判定を行なうものとし、判定フラグが無効の場合は、即時にタスクの切替え処理Ｓ２０４を実行するものとする。
【０１０５】
ここで、判定フラグは引数やグローバル変数などで実現するものとする。判定フラグを引数とする場合は、あらかじめ決められたシステムコールに対しては比較を行なわないとする設定を、カーネルの構築時に設定しておく必要がある。一方、グローバル変数として実現する場合は、タスクにおいて指定のシステムコール呼び出し前のポイントにおいて変数に書き込みを行ない許可・禁止を切替えるものとする。また、グローバル変数として実現した場合は、指定の区間では禁止遷移判定の有効・無効を切替えられるといった利点もある。
【０１０６】
かかる構成によれば、特定のシステムコールに対しては、禁止遷移の判定を行なわなくてすむため、比較にかかるオーバヘッドを削減できるとともに、指定するシステムコールによる遷移は許可することが可能となる。
【産業上の利用可能性】
【０１０７】
本発明のマルチタスクシステムおよびマルチタスク制御方法は、マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができるもので、複数のタスクの切替え処理および割込みハンドラの起動処理を実行するマルチタスクシステムに適用できる。
【図面の簡単な説明】
【０１０８】
【図１】従来のマルチタスクシステムの構成を示すブロック図
【図２】本発明の実施の形態１のマルチタスクシステムの構成を示すブロック図
【図３】同実施の形態１のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャート
【図４】同実施の形態１のマルチタスク制御方法におけるタスク切替え時の処理内容を示すフローチャート
【図５】同実施の形態１のマルチタスクシステムにおける正常なタスク遷移を示す説明図
【図６】同実施の形態１のマルチタスクシステムにおける異常なタスク遷移を示す説明図
【図７】同実施の形態１のマルチタスクシステムにおける禁止遷移タスクテーブルの一例を示す説明図
【図８】本発明の実施の形態２のマルチタスクシステムの構成を示すブロック図
【図９】同実施の形態２のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャート
【図１０】同実施の形態２のマルチタスク制御方法における割込みハンドラ起動時の処理内容を示すフローチャート
【図１１】同実施の形態２のマルチタスクシステムにおける正常な割込みハンドラへの遷移を示す説明図
【図１２】同実施の形態２のマルチタスクシステムにおける異常な割込みハンドラへの遷移を示す説明図
【図１３】同実施の形態２のマルチタスクシステムにおける禁止遷移割込みハンドラテーブルの一例を示す説明図
【図１４】本発明の実施の形態３のマルチタスクシステムの構成を示すブロック図
【図１５】同実施の形態３のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図
【図１６】同実施の形態３のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャート
【図１７】本発明の実施の形態４のマルチタスクシステムの構成を示すブロック図
【図１８】本発明の実施の形態５のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図
【図１９】本発明の実施の形態６のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図
【図２０】本発明の実施の形態７のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図
【図２１】本発明の実施の形態８のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図
【図２２】本発明の実施の形態９のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図
【図２３】本発明の実施の形態１０のマルチタスクシステムにおける禁止遷移テーブルの内容を動的に変更する変更手段を設けた場合の構成を示すブロック図
【図２４】本発明の実施の形態１１のマルチタスク制御方法における処理内容を示すフローチャート
【符号の説明】
【０１０９】
１０１    アプリケーション
１０２    タスクＡ
１０３    タスクＢ
１０４    タスクＣ
１０５    割込みハンドラ
２０１    リアルタイムＯＳ
２０２    システムコール
２０３    スケジューラ部
２０４    割込み管理部
２０５    遷移先タスク情報保持部
２０６    実行中タスク情報保持部
２０７    禁止遷移タスクテーブル
２０８    比較手段
２０９    遷移先情報保持部
２１０    禁止遷移テーブル
２１１    変更手段
３０１    マイクロプロセッサ
３０２    割込み機能
８０１    遷移先割込みハンドラ情報保持部
８０２    禁止遷移割込みハンドラテーブル
Ｓ１０１    カーネルの初期化を行なうステップ
Ｓ１０２    禁止遷移タスクテーブル初期化を行なうステップ
Ｓ２００    比較をおこなうかどうかを判定するステップ
Ｓ２０１    遷移先・実行中タスク情報を更新するステップ
Ｓ２０２    禁止遷移タスク情報を取り出すステップ
Ｓ２０３    禁止遷移タスクであるかを比較するステップ
Ｓ２０４    タスク切替え処理を行なうステップ
Ｓ２０５    実行中タスク情報の更新を行なうステップ
Ｓ３０１    禁止遷移割込みハンドラテーブルの初期化を行なうステップ
Ｓ４０１    遷移先割込みハンドラ・実行中タスク情報を更新するステップ
Ｓ４０２    禁止遷移割込みハンドラ情報を取り出すステップ
Ｓ４０３    禁止遷移割込みハンドラであるかを比較するステップ
Ｓ４０４    割込みハンドラを起動するステップ
Ｓ５０１    遷移先情報・実行中タスク情報を更新するステップ
Ｓ５０２    禁止遷移先情報を取り出すステップ
Ｓ５０３    禁止遷移であるかの比較を行なうステップ
Ｓ５０４    遷移処理を行なうステップ
【図１】
2006228074.tif 000003
【図２】
2006228074.tif 000004
【図３】
2006228074.tif 000005
【図４】
2006228074.tif 000006
【図５】
2006228074.tif 000007
【図６】
2006228074.tif 000008
【図７】
2006228074.tif 000009
【図８】
2006228074.tif 000010
【図９】
2006228074.tif 000011
【図１０】
2006228074.tif 000012
【図１１】
2006228074.tif 000013
【図１２】
2006228074.tif 000014
【図１３】
2006228074.tif 000015
【図１４】
2006228074.tif 000016
【図１５】
2006228074.tif 000017
【図１６】
2006228074.tif 000018
【図１７】
2006228074.tif 000019
【図１８】
2006228074.tif 000020
【図１９】
2006228074.tif 000021
【図２０】
2006228074.tif 000022
【図２１】
2006228074.tif 000023
【図２２】
2006228074.tif 000024
【図２３】
2006228074.tif 000025
【図２４】
2006228074.tif 000026