JP2006228074A - マルチタスクシステムおよびマルチタスク制御方法 - Google Patents

マルチタスクシステムおよびマルチタスク制御方法 Download PDF

Info

Publication number
JP2006228074A
JP2006228074A JP2005043294A JP2005043294A JP2006228074A JP 2006228074 A JP2006228074 A JP 2006228074A JP 2005043294 A JP2005043294 A JP 2005043294A JP 2005043294 A JP2005043294 A JP 2005043294A JP 2006228074 A JP2006228074 A JP 2006228074A
Authority
JP
Japan
Prior art keywords
task
transition
information
prohibited
interrupt handler
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
JP2005043294A
Other languages
English (en)
Inventor
Yusuke Ito
祐介 伊藤
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 JP2005043294A priority Critical patent/JP2006228074A/ja
Publication of JP2006228074A publication Critical patent/JP2006228074A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

【課題】マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができるマルチタスクシステムおよびマルチタスク制御方法を提供する。
【解決手段】タスク遷移の発生時に、禁止遷移タスクテーブル207に保持されたタスクごとの禁止遷移先タスク情報と、遷移先タスク情報保持部205に保持された遷移先タスクの特定情報とを、比較手段208によって比較し、発生したタスク遷移が禁止されている遷移である場合は、マイクロプロセッサ301によりシステムの稼動を停止する。
【選択図】図2

Description

本発明は、複数のタスクを切替えて処理実行するとともに割込みハンドラの起動処理を実行するマルチタスクシステムおよびマルチタスク制御方法に関するものである。
近年、プログラムにおける制御の複雑化の進展により、コンピュータによる仕事の単位であるタスクを一度に2つ以上処理することができるマルチタスクシステムが一般的になってきている。このマルチタスクシステムを用いることによって、複数のタスクを効率よく切替えて実行することができる。
以上のような従来のマルチタスクシステムおよびマルチタスク制御方法について、図面を参照して以下に説明する。
図1は従来における一般的なマルチタスクシステムの構成を示すブロック図である。図1において、OS(オペレーティングシステム)201のスケジューラ部203は、アプリケーション101内の各タスク(タスクA102、タスクB103、タスクC104)から発行されるそれぞれのシステムコール202によって、次に行なうべきタスクへと処理を切替えるものである。また、OS201の割込み管理部204は、マイクロプロセッサ301からの割込み機能302による割込み要求に対して、アプリケーション101内で対応するレベルの割込みハンドラ105を起動するものである。
以上のように構成されたマルチタスクシステムにおけるタスク遷移の一例を図5に示す。この例では、タスクA、B、C、Dの優先順位が決めてあり、タスクAの優先度が最も高く、タスクDの優先度がもっとも低いものとする。図中の時間t1において、同時にタスクA、B、C、Dに対する処理要求が起きた場合、スケジューラ部203は、優先順位に従ってタスクAを起動する。
次に、時間t2でタスクAを待ち状態にするシステムコールが発行されると、スケジューラ部203は、タスクAを待ち状態とし、タスクBを起動する。タスクBの処理が時間t3で終了すると、スケジューラ部203は、次に優先度の高いタスクCを起動する。時間t4においてタスクAの待ち状態が解除されると、スケジューラ部203は、タスクCから優先度の高いタスクAに切替える。その後、時間t5においてタスクAが終了すると、再びタスクCに切替え、時間t6でタスクCが終了すると、スケジューラ部203はタスクDを起動する。
このようなマルチタスクシステムにおけるシステムエラーを解析するための一手法として、タスクトレースを使用する方法がある。
タスクトレースとは、デバッグ装置において、システムが実行したタスクの遷移をモニタリングする機能であり、図5に示すようなタスク遷移を視覚的に表現するものである。このようなタスクトレースを使用することにより、システムが期待したタスク遷移をしているか否かを視覚的に容易に検知することが可能となり、この検知結果をもとに、システムエラーの有無を解析することができる。
マルチタスクシステムにおけるシステムエラーに対する他の解析方法としては、異常な状態遷移があった場合に、それを原因として起こるシステムエラーを解析することにより、そのシステムエラーの発生を防止する方法(例えば、特許文献1を参照)が提案されている。
この方法は、システムにおける状態遷移の発生時に、イベントに応じたタスクの状態遷移が正常であるか異常であるかを判定することによって、それを原因として起こるシステムエラーを解析し、異常な状態遷移によるシステムエラーの発生を事前に防止する方法である。
特開平6−242969号公報
しかしながら、従来技術の後者である特許文献1に開示されたようなマルチタスクシステムでは、タスク遷移の正常か異常かの状態のみに着目しているために、要因としてOSの管理領域の破壊やデッドロックなどによりシステムエラーが発生するほどの異常な状態遷移ではないが、それ以外の要因により期待しないタスク遷移が発生した程度の場合には、システムエラーが発生することはなく、その時点でプログラム実行を停止することができず、その不具合解析ポイントの絞込み作業を行えるように対応することができないという問題点を有していた。
また、従来技術の前者であるタスクトレース機能を使用した解析方法においても、あるポイントで起こったシステムエラーを要因として、期待しないタスク遷移が発生した場合や期待しないタイミングにおける割込みハンドラの起動が発生した場合には、それらの視覚的な表現を利用することにより、期待しないタスク遷移が発生していることや期待しないタイミングにおける割込みハンドラの起動が発生していることは検知可能であり、それらの要因となるシステムエラーの有無は解析できるが、その時点でプログラム実行を停止することができず、期待しないタスク遷移や期待しないタイミングにおける割込みハンドラ起動の発生時点に戻すことは不可能であるため、OSの管理領域の破壊やデッドロックなどあるいはその他のシステムエラーの発生ポイントを特定することは困難であるという問題点を有していた。
本発明は、上記従来の問題点を解決するもので、マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができるマルチタスクシステムおよびマルチタスク制御方法を提供する。
上記の課題を解決するために、本発明の請求項1に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する遷移先タスク情報保持部と、タスクごとに遷移を禁止するタスクの情報を保持する禁止遷移タスクテーブルと、前記遷移先タスク情報保持部の内容と前記禁止遷移タスクテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先タスク情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移タスクテーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させる構成としたことを特徴とする。
また、本発明の請求項2に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先割込みハンドラ情報保持部と、タスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移割込みハンドラテーブルと、前記遷移先割込みハンドラ情報保持部の内容と前記禁止遷移割込みハンドラテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先割込みハンドラ情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移割込みハンドラテーブル内で前記実行中タスク情報保持部に保持された前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる構成としたことを特徴とする。
また、本発明の請求項3に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移テーブルと、前記遷移先情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持されたタスクの実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる構成としたことを特徴とする。
また、本発明の請求項4に記載のマルチタスクシステムは、複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報を保持する禁止遷移テーブルと、前記実行中タスク情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させる構成としたことを特徴とする。
また、本発明の請求項28に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報をテーブル化して保持する工程と、前記タスクの切替え時に、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較する工程と、前記比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
また、本発明の請求項29に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記割込みハンドラの起動時に、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記比較により、前記現在のタスク実行中に起動要求が発生した割込みハンドラが、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
また、本発明の請求項30に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較し、前記割込みハンドラの起動時には、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記タスクの切替え時の比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記起動要求が発生した割込みハンドラの情報が、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
また、本発明の請求項31に記載のマルチタスク制御方法は、複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記現在実行中のタスク情報とテーブル内の遷移先タスクへの遷移元として禁止されたタスクの情報とを比較し、前記割込みハンドラの起動時には、前記現在実行中のタスク情報とテーブル内の前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクとを比較する工程と、前記タスクの切替え時の比較により、前記現在実行中のタスクが、前記テーブル内で前記遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記現在実行中のタスクが、前記テーブル内で前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなる方法としたことを特徴とする。
以上により、マルチタスクシステム実行時でシステムエラーが発生した時に、その結果として現れる期待しないタスク遷移の発生や、期待しないタイミングにおける割込みハンドラの起動があった場合には、システムの動作を確実に停止してプログラム実行を継続しないようにすることができる。
以上のように本発明によれば、マルチタスクシステム実行時でシステムエラーが発生した時に、その結果として現れる期待しないタスク遷移の発生や、期待しないタイミングにおける割込みハンドラの起動があった場合には、システムの動作を確実に停止してプログラム実行を継続しないようにすることができる。
以上により、マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができる。
以下、本発明の実施の形態を示すマルチタスクシステムおよびマルチタスク制御方法について、図面を参照しながら具体的に説明する。
(実施の形態1)
本発明の実施の形態1のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図2は本実施の形態1のマルチタスクシステムの構成を示すブロック図であり、タスク遷移発生時に期待しないタスク遷移があった場合にそのタスク遷移を禁止するための構成を示している。図2において、101はユーザアプリケーションを表し、ユーザタスク(A〜C)102〜104と、割込みハンドラ105が含まれる。201はOSを表し、システムコール202と、スケジューラ部203と、割込み管理部204と、遷移先タスク情報保持部205と、実行中タスク情報保持部206と、禁止遷移タスクテーブル207と、比較手段208が含まれる。301はマイクロプロセッサを表し、割込み機能302が含まれる。
次に、上記構成からなる本実施の形態1のマルチタスクシステムにおいて、システム起動からシステムエラー発生によって期待しないタスク遷移が発生し、システムの停止に至るまでを、図3と図4のフローチャートに基づいて説明する。
図3は本実施の形態1のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャートであり、システム起動時のOS201の初期化処理を示している。機器への電源投入等のシステム起動によりOS201が起動する。ステップS101においてカーネルの初期化が行われる。ステップS102において、タスクごとの禁止遷移タスクテーブル207へ、遷移を禁止するタスク情報の初期化登録を行なう。なお、禁止遷移タスクテーブル207に登録するデータとしては、タスク情報を識別するデータであり、タスクIDやタスクエントリアドレスなどタスクを識別可能なデータであれば、どのようなものでも良いものとする。
また、複数のタスクへの遷移をまとめて禁止したい場合の条件として、登録したタスクID以上またはID以下といった指定を行なうことも可能とする。
また、禁止遷移タスクテーブル207はデバッグ対象とするタスクに対してのみ持つことも可能とする。
図4は本実施の形態1のマルチタスク制御方法におけるタスク切替え時の処理内容を示すフローチャートであり、スケジューラ部203が実行するタスクを切替える際の処理を示している。システムコール202の発行によって、スケジューラ部203においてタスクの遷移が発生する際に、ステップS201において遷移先タスク情報保持部205および実行中タスク情報保持部206の内容が更新される。ステップS202において、タスクごとに禁止する遷移先タスクのタスク情報を保持する禁止遷移タスクテーブル207から、実行中のタスクにおいて禁止する遷移先タスク情報を取得し、ステップS203において、遷移先タスク情報保持部205に保持されたこれから遷移しようとするタスクの情報と、ステップS202で禁止遷移タスクテーブル207から取り出した禁止する遷移先のタスク情報とを、比較手段208を用いて比較し、これから遷移しようとするタスクが禁止されているタスク遷移である場合は、タスクの遷移を行なわずにシステムの停止を行なう。
上記の具体的な例を、図5から図7を用いて以下に説明する。
図5は本実施の形態1のマルチタスクシステムにおける正常なタスク遷移を示す説明図であり、図6は本実施の形態1のマルチタスクシステムにおけるシステムエラー発生時の異常なタスク遷移を示す説明図であり、図7は本実施の形態1のマルチタスクシステムにおける禁止遷移タスクテーブル207の一例を示す説明図である。
図5に示す正常なタスク遷移である場合は、時刻t2においてタスクAからタスクBへ、時刻t5においてタスクAからタスクCへ遷移が行なわれている。一方、図6に示す異常なタスク遷移である場合は、時刻t2においては正常にタスクAからタスクBへと遷移し、時刻t4から時刻t5の間においてシステムエラーが発生したため、本来時刻t5においてはタスクAからタスクCへと遷移を行なうべきはずであるが、タスクDへと遷移が行なわれているものとする。ここで、時刻t5において起きた異常なタスク遷移を検出するために、図7に示すように、タスクAの禁止遷移タスクテーブル207に、タスクAから禁止するタスク先の情報としてタスクDの情報を設定する。
その結果、時刻t5においてタスクDへの遷移発生時に、図4のステップS203において、禁止遷移タスクテーブル207と遷移先タスク情報保持部205との各データを比較手段208を用いて比較し、禁止遷移タスクであることか判明するため、システムの停止要求を行うことができる。
かかる構成によれば、ユーザはシステムエラーなどの影響によって発生しうる期待しないタスク遷移発生時には、システムの停止を行なうことが可能となるため、システムエラーの発生ポイントの絞込みを行なうことが可能となる。
(実施の形態2)
本発明の実施の形態2のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図8は本実施の形態2のマルチタスクシステムの構成を示すブロック図であり、割込みハンドラ起動時における期待しない割込みハンドラ起動の禁止を行なうための構成を示すブロック図である。図8において、101はユーザアプリケーションを表し、ユーザタスク(A〜C)102〜104と、割込みハンドラ105が含まれる。201はOSを表し、システムコール202と、スケジューラ部203と、割込み管理部204と、遷移先割込みハンドラ情報保持部801と、実行中タスク情報保持部206と、禁止遷移割込みハンドラテーブル802と、比較手段208が含まれる。301はマイクロプロセッサを表し、割込み機能302が含まれる。
次に、上記構成からなる本実施の形態2のマルチタスクシステムにおいて、システム起動からシステムエラー発生によって期待しない割込みハンドラへの遷移が発生し、システムの停止に至るまでを、図9と図10のフローチャートに基づいて説明する。
図9は本実施の形態2のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャートであり、システム起動時のOS201の初期化処理を示している。機器への電源投入等のシステム起動によりOS201が起動する。ステップS101においてカーネルの初期化が行われる。ステップS301において、タスクごとの禁止遷移割込みハンドラテーブル802へ、遷移を禁止する割込みハンドラ情報の初期化登録を行なう。
なお、禁止遷移割込みハンドラテーブル802に登録する禁止遷移割込みハンドラ情報としては、割込みハンドラの割込みレベルや割込み要因、あるいはエントリアドレスなど、割込みハンドラを識別可能なデータであれば良いものとする。
図10は本実施の形態2のマルチタスク制御方法における割込みハンドラ起動時の処理内容を示すフローチャートであり、割込み管理部204において割込み要求発生時の割込みハンドラを起動する際の処理を示している。まず、割込み機能302からの割込み要求の発生によって、割込み管理部204において割込みハンドラ起動をする際に、ステップS401で遷移先割込みハンドラ情報保持部801および実行中タスク情報保持部206の内容を更新する。
次に、ステップS402において、現在実行中のタスクに対して遷移を禁止する遷移先の情報を、禁止遷移割込みハンドラテーブル802から取り出す。次に、ステップS403において、ステップS402で禁止遷移割込みハンドラテーブル802から取り出した遷移を禁止する遷移先の情報と、遷移先割込みハンドラ情報保持部801が保持するこれから遷移しようとする割込みハンドラの情報とを、比較手段208を用いて比較を行ない、これからしようとする割込みハンドラへの遷移が禁止されている場合は、割込みハンドラ105の起動を行なわずにシステムの停止を行なう。
上記の具体的な例を、図11から図13を用いて以下に説明する。
図11は本実施の形態2のマルチタスクシステムにおける正常な割込みハンドラへの遷移を示す説明図であり、図12は本実施の形態2のマルチタスクシステムにおける異常な割込みハンドラへの遷移を示す説明図であり、図13は本実施の形態2のマルチタスクシステムにおける禁止遷移割込みハンドラテーブルの一例を示す説明図である。
図11の正常なタスク遷移である場合は、時刻t2においてタスクAからタスクBへ、時刻t3において割込みAが発生し、時刻t4においてタスクAへ切替えられるものとする。時刻t5でタスクAが終了しタスクBへ切替えられ、時刻t6でタスクCへと切替えられる。一方、図12の異常なタスク遷移である場合、タスクC実行中において、時刻t4で資源1を獲得した後に、時刻t5で割込みが発生し、時刻t6においてタスクAへ切替えたものとする。ここで、タスクAが時刻t6において資源1を獲得しようとした場合に、すでにタスクCが獲得しており、時刻t7において待ち状態へとなってしまう。
本来は優先度の高いタスクAの処理を先に行なうべきはずであるが、タスクCの処理が先に行なわれてしまう。ここで、異常な割込みハンドラ起動を検出するために、図13に示すように、タスクCの禁止遷移割込みハンドラテーブル802に、遷移を禁止する割込みハンドラ情報として割込みAの情報を設定する。
その結果、時刻t5において割込みハンドラAへの遷移発生時に、図13のステップS403において、禁止遷移割込みハンドラテーブル802と遷移先割込みハンドラ情報保持部801との各データを、比較手段208を用いて比較し、禁止遷移割込みハンドラであることが判明するため、システムの停止要求を行うことができる。
かかる構成によれば、ユーザはシステムエラーなどの影響によって発生しうる期待しない割込みハンドラ起動時には、システムの停止を行なうことが可能となるため、システムエラー発生ポイントの絞込みを行なうことが可能となる。
(実施の形態3)
本発明の実施の形態3のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図14は本実施の形態3のマルチタスクシステムの構成を示すブロック図であり、実施の形態1および実施の形態2を組み合わせた構成を示すブロック図である。図14において、101はユーザアプリケーションを表し、ユーザタスク(A〜C)102〜104と、割込みハンドラ105が含まれる。201はOSを表し、システムコール202と、スケジューラ部203と、割込み管理部204と、遷移先情報保持部209と、実行中タスク情報保持部206と、禁止遷移テーブル210と、比較手段208が含まれる。301はマイクロプロセッサを表し、割込み機能302が含まれる。
遷移先情報保持部209は、スケジューラ部203および割込み管理部204によって、これから遷移する先のタスクおよび割込みハンドラの情報を登録保持されるものとし、禁止遷移テーブル210は、タスクごとに遷移を禁止するタスクおよび割込みハンドラの情報を保持するものとする。比較手段208において、スケジューラ部203がタスク切替えを行なう際、および割込み管理部204が割込みハンドラを起動する際に、禁止遷移テーブル210と遷移先情報保持部209との各データを比較し、遷移先情報保持部209内のこれから遷移する先のタスクおよび割込みハンドラが、禁止遷移テーブル210において禁止された遷移先である場合は、システムの停止を行なう。
次に、上記構成からなる本実施の形態3のマルチタスクシステムにおける処理内容を、図16のフローチャートに基づいて説明する。
図16は本実施の形態3のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、スケジューラ部203が実行するタスクの切替えを行い、割込み管理部204が割込みハンドラを起動する際の処理を示している。
タスク遷移もしくは割込み遷移が発生すると、ステップS501において、遷移先情報保持部209および実行中タスク情報保持部206の内容が更新される。遷移先情報保持部209は、これから遷移する先のタスクおよび割込みハンドラの情報に加え、タスクへの遷移であるか割込みハンドラへの遷移であるかの情報を、保持するものとする。次のステップS502において、禁止遷移テーブル210から遷移を禁止するタスクの情報もしくは割込みハンドラの情報を取り出す。次のステップS503において、ステップS502で禁止遷移テーブル210から取り出した禁止する遷移の内容と、遷移先情報保持部209に保持された情報として、これから遷移する先のタスクおよび割込みハンドラの情報に加えタスクへの遷移であるか割込みハンドラへの遷移であるかの情報とを比較し、遷移先情報保持部209内のこれから遷移する先のタスクおよび割込みハンドラが、禁止遷移テーブル210において禁止されている遷移先である場合は、タスクの遷移もしくは割込みハンドラの起動を行なわずに、システムの停止を行なう。
上記の具体的な例を、図11、図12、図15を用いて以下に説明する。
図11は本実施の形態3のマルチタスクシステムにおける正常な割込みハンドラへの遷移を示す説明図であり、実施の形態2の場合と同様である。図12は本実施の形態3のマルチタスクシステムにおける異常な割込みハンドラへの遷移を示す説明図であり、実施の形態2の場合と同様である。図15は本実施の形態3のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、タスクCの禁止遷移テーブル210について記したものとする。
図11に示す正常なタスク遷移である場合は、時刻t2においてタスクAからタスクBへ、時刻t3において割込みAが発生し、時刻t4でタスクAへ切替えられるものとする。時刻t5でタスクAが終了し、タスクBへ切替えられ、時刻t6でタスクCへと切替えられる。一方、図12に示す異常なタスク遷移である場合、時刻t3からのタスクC実行中において、時刻t4で資源1を獲得した後に、時刻t5で割込みAが発生し、時刻t6でタスクAへ切替えたものとする。ここで、タスクAが時刻t6において資源1を獲得しようとした場合に、その資源1はタスクCがすでに獲得しており、時刻t7において待ち状態へとなってしまう。本来は時刻t6から優先度の高いタスクAの処理を先に行なうべきはずであるが、時刻t7においてタスクCに戻り、タスクCの処理が先に行なわれてしまう。
ここで、時刻t5において起きた異常な遷移発生を検出するために、図15に示すように、タスクCの禁止遷移テーブル210に、タスクCからの遷移を禁止するタスク先の情報としてタスクBの情報と、タスクCからの遷移を禁止する割込みハンドラの情報として割込みAの情報とを設定登録する。
その結果、時刻t5において割込みハンドラAへの遷移発生時に、図16のステップS503において、遷移先情報保持部209の内容と禁止遷移テーブル210の内容とを比較手段208によって比較し、遷移先情報保持部209内のこれから遷移する先の割込みハンドラが、禁止遷移テーブル210において禁止する遷移先の割込みハンドラAであることが判明するため、システムの停止要求を行なうことができる。
かかる構成によれば、ユーザはシステムエラーなどの影響によって発生しうる期待しないタスク遷移および割込みハンドラ遷移時には、システムの停止を行なうことが可能となるため、システムエラー発生ポイントの絞込みを行なうことが可能となる。
なお、上記の実施の形態1〜3は、OSにおいて禁止遷移情報の判別を行なっているが、この構成を、マイクロプロセッサやデバッグ装置において実現を行なった場合には、ソフトウェアへの変更をくわえなくて良いという利点がある。
(実施の形態4)
本発明の実施の形態4のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図17は本実施の形態4のマルチタスクシステムの構成を示すブロック図であり、タスク遷移の発生もしくは割込みハンドラへの遷移時に、禁止されている遷移元タスクからの遷移である場合は、システムを停止する構成を示すブロック図である。図17において、101はユーザアプリケーションを表し、ユーザタスク(A〜C)102〜104と、割込みハンドラ105が含まれる。201はOSを表し、システムコール202と、スケジューラ部203と、割込み管理部204と、遷移先情報保持部209と、実行中タスク情報保持部206と、禁止遷移テーブル210と、比較手段208が含まれる。301はマイクロプロセッサを表し、割込み機能302が含まれる。
本実施の形態4では、禁止遷移テーブル210にはタスクごとに禁止する遷移元のタスク情報を保持しておき、タスクの遷移発生時もしくは割込みハンドラの起動時において、実行中タスク情報保持部206に保持されている現在実行中のタスク情報と、禁止遷移テーブル210に保持されており、遷移先情報保持部209に保持されている遷移先のタスク情報に対応させて取り出された禁止する遷移元のタスク情報とを、比較手段208を用いて比較し、実行中タスク情報保持部206に保持されている現在実行中のタスクが、禁止遷移テーブル210において禁止された遷移元である場合は、タスクの遷移もしくは割込みハンドラの起動を行なわずに、システムの停止を行なう。
図17において、タスク遷移もしくは割込みハンドラの起動時にスケジューラ部203の処理もしくは割込み管理部204の処理が実行される際に、実行中タスク情報保持部206および遷移先情報保持部209の内容を更新する。本実施の形態4においては、禁止遷移テーブル210は、禁止する遷移元のタスク情報を保持する構成となり、タスクごとおよび割込みごとにテーブルを持つものとする。
上記の具体的な例を、図5、図6を用いて以下に説明する。
図5は本実施の形態4のマルチタスクシステムにおける正常なタスク遷移を示す説明図であり、実施の形態1の場合と同様である。図6は本実施の形態4のマルチタスクシステムにおける異常なタスク遷移を示す説明図であり、実施の形態1の場合と同様である。
図5に示す正常なタスク遷移である場合は、時刻t2においてタスクAからタスクBへ、時刻t5においてタスクAからタスクCへ遷移が行なわれている。一方、図6に示す異常なタスク遷移である場合は、時刻t2においてタスクAからタスクBへ、時刻t4から時刻t5の間においてシステムエラーが発生し、時刻t5においては、本来ならばタスクAからタスクCへと遷移を行なうべきはずであるが、タスクDへと遷移が行なわれているものとする。ここで、時刻t5において起きた異常なタスク遷移を検出するために、タスクDの禁止遷移テーブル210に、禁止する遷移元のタスク情報として、タスクAの情報を設定保持する。
その結果、時刻t5においてタスクDへの遷移発生時に、禁止遷移テーブル210に保持された禁止する遷移元のタスク情報と、実行中タスク情報保持部206に保持された現在実行中のタスク情報とを、比較手段208を用いて比較し、実行中タスク情報保持部206に保持された現在実行中のタスクが、禁止遷移テーブル210に保持された禁止する遷移元のタスクであることか判明するため、システムの停止要求を行うことができる。
かかる構成によれば、禁止遷移テーブル210に登録される情報は、遷移元タスクの情報のみとなるため、禁止遷移判定時の比較処理を簡略化することが可能となる。
(実施の形態5)
本発明の実施の形態5のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図18は本実施の形態5のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態1〜4における禁止遷移タスクテーブル207あるいは禁止遷移割込みハンドラテーブル802あるいは禁止遷移テーブル210に対して、登録可能なタスク情報もしくは割込み情報として、タスク優先度もしくは割込みレベルを追加した場合のテーブル構造を示す説明図である。図18において、禁止する遷移先としては、実行優先度が3以下の低い優先度のタスクとタスクDと割込みレベルが2以下の低いレベルの割込みハンドラが設定されている。
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図14、図16、図18を用いて以下に説明する。
図14は本実施の形態5のマルチタスクシステムの構成を示すブロック図であり、実施の形態3の場合と同様である。図16は本実施の形態5のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態3の場合と同様である。
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部203もしくは割込み管理部204が、タスクの切替えあるいは割込みハンドラの起動を行う。図18に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その際の処理としては、図16に示したフローに従った処理が実行される。
まず、ステップS501において遷移先情報保持部209および実行中タスク情報保持部206の更新が行なわれる。次のステップS502で、実行中タスク情報保持部206の現在実行中のタスクに対応させて、禁止遷移テーブル210から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。
上記処理のうち、はじめに、タスク遷移であった場合について説明を行なう。
まず、図18において、タスク遷移を禁止する条件として禁止遷移テーブル210にID1として設定されている優先度が3以下であるという情報を禁止遷移先情報として取り出し、遷移先情報保持部209の内容と、比較手段208を用いて比較を行なう。ここで、遷移先情報保持部209が保持するデータは、タスクコントロールブロックのデータなどを保持するものとする。
上記の比較の結果、遷移先タスクの実行優先度が3を超える場合は、次にID2のタスクDというタスク名であるかの比較を行ない、その結果、タスクDでないことが判明した場合は遷移を許可し、ステップS504において遷移処理を行なう。
次に、割込みハンドラへの遷移であった場合について説明を行なう。
割り込みハンドラへの遷移であった場合は、図18において、割り込みハンドラへの遷移を禁止する条件として、禁止遷移テーブル210から、ID3の割込みレベルが2以下であるという条件を、禁止遷移先情報として取り出し、比較手段208によって、遷移先情報保持部209の情報と比較を行なうものとする。ここで、比較手段208によって禁止されている遷移であったと判定した場合は、タスクの切替えおよび割込みハンドラの起動は行なわず、システムの停止を行なう。
遷移を禁止する条件として優先度を登録して指定する構成においては、その登録により指定する優先度以上または以下の優先度の場合は遷移の禁止を行なうことによって、タスクを優先度でグルーピングして遷移の禁止を行なうことが可能となる。
また、遷移を禁止する条件として割込みレベルを登録して指定する構成においては、その登録により指定するレベルもしくはレベル以上または以下のレベルの場合は、遷移の禁止を行なうことによって、例えば、最高レベルの割込みハンドラを禁止した場合、そのタスクにおいては割込みが発生した場合にシステムを停止することが可能となり、割込み禁止状態の設定を確実に確かめることが可能となる。
(実施の形態6)
本発明の実施の形態6のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図19は本実施の形態6のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態1〜4における禁止遷移タスクテーブル207あるいは禁止遷移割込みハンドラテーブル802あるいは禁止遷移テーブル210に対して、登録可能なタスク情報もしくは割込み情報として、遷移先タスクの実行を再開するための再開アドレスを追加した場合のテーブル構造を示す説明図である。図19において、禁止遷移テーブル210には、禁止する遷移先タスクとしてのタスクDに加え、タスク実行の再開を許可する再開アドレスのタスクとして、0x40000000〜0x40001000のアドレス範囲から再開されるタスクが設定されている。
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図14、図16、図19を用いて以下に説明する。
図14は本実施の形態6のマルチタスクシステムの構成を示すブロック図であり、実施の形態3の場合と同様である。図16は本実施の形態6のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態3の場合と同様である。
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部203もしくは割込み管理部204が、タスクの切替えあるいは割込みハンドラの起動を行う。一般的なマルチタスクシステムにおいては、スケジューラ部203は、タスクの切替え時に、タスクごとのスタック領域に現在実行中タスクのプログラムカウンタ値やレジスタ値などの情報を退避し、切替え先のタスクのスタックからプログラムカウンタやレジスタ値を取得することによって、タスクの切替えを行なう。マルチタスクシステムにおけるエラー発生のパターンとして、このタスクごとのスタック領域の内容が破壊され正しくない再開番地から再開されるケースが良く見られる。
図19に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その際の処理としては、図16に示したフローに従った処理が実行される。
まず、ステップS501において遷移先情報保持部209および実行中タスク情報保持部206の更新が行なわれる。次のステップS502で、実行中タスク情報保持部206の現在実行中のタスクに対応させて、禁止遷移テーブル210から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。ここで、図19に示すように、禁止遷移テーブル210にタスク実行が可能な遷移先タスクの再開アドレスとして0x40000000〜0x40001000を指定してある場合、ステップS503において、禁止遷移テーブル210内に指定された実行可能なタスクの再開アドレスと、遷移先情報保持部209内の遷移先タスクとして再開するタスクのアドレスとが、比較手段208によって比較され、遷移先タスクとして再開するタスクのアドレスが、禁止遷移テーブル210内に指定された実行可能なタスクの再開アドレスを外れている場合は、システムの停止を行なうものとする。
本構成においては、タスクスタックの破壊によって、プログラムの再開アドレスが指定されエリア外から再開される場合には、システムの停止を行なうことが可能となるため、スタック領域破壊によるポイントでシステムを停止させることが可能となる。
(実施の形態7)
本発明の実施の形態7のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図20は本実施の形態7のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態1〜4における禁止遷移タスクテーブル207あるいは禁止遷移割込みハンドラテーブル802あるいは禁止遷移テーブル210に対して、登録可能なタスク情報もしくは割込み情報として、スタック消費量を追加した場合のテーブル構造を示す説明図である。図20において、禁止する遷移先としては、タスクDに加え、0x1000バイト以上のスタックが使用されているタスクの場合が設定されている。
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図14、図16、図20を用いて以下に説明する。
図14は本実施の形態7のマルチタスクシステムの構成を示すブロック図であり、実施の形態3の場合と同様である。図16は本実施の形態7のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態3の場合と同様である。
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部203もしくは割込み管理部204が、タスクの切替えあるいは割込みハンドラの起動を行う。一般的なマルチタスクシステムにおいては、スタックはタスクごとに設けられるが、確保されたスタックサイズ以上にスタックが使用された場合の挙動は保証することができない。スタックには関数呼び出し時やタスクを切替える際などに、再開アドレスやレジスタのデータなどが退避される。
図20に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その処理としては、図16に示したフローに従った処理が実行される。
まず、ステップS501において遷移先情報保持部209および実行中タスク情報保持部206の更新が行なわれる。次のステップS502で、実行中タスク情報保持部206の現在実行中のタスクに対応させて、禁止遷移テーブル210から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。
ここで、図20に示すように、禁止遷移テーブル210において、禁止遷移情報として指定のタスク名に加えてスタック消費量を0x1000と指定している場合、ステップS503において、禁止遷移テーブル210にスタック消費量として保持された0x1000と、遷移先情報保持部209に保持されているスタック消費量とが、比較手段208によって比較され、その結果、遷移先情報保持部209に保持されている遷移先で消費しているスタック消費量の限界値として、0x1000以上消費しているタスクへの遷移である場合は、システムの停止を行なうものとする。
本構成においては、タスク遷移発生時にスタック使用量の予想値を指定し、ある予想値以上使用している場合には、システムの停止を行なうことにより、指定のポイントにおけるスタック使用量の制限に関するデバッグを行なうことが可能となる。
(実施の形態8)
本発明の実施の形態8のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図21は本実施の形態8のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態1〜4における禁止遷移タスクテーブル207あるいは禁止遷移割込みハンドラテーブル802あるいは禁止遷移テーブル210に対して、登録可能なタスク情報もしくは割込み情報として、遷移先のタスクもしくは割込みハンドラが現在までに実行された累計時間を追加した場合のテーブル構造を示す説明図である。ここで、累計時間の保持方法については、マイクロプロセッサ上のタイマ資源などを使用するものとするが、本発明の本質ではないため、ここでは言及しないものとする。
また、一般的なマルチタスクシステムにおいて、タスクを切替える方式には、一定の時間ごとに実行するタスクを切替えるタイムシェアリング方式と、イベントによって実行するタスクを切替えるイベントドリブン方式が存在する。本実施の形態のタスク切替え方式は、イベントドリブン方式であって、あるタスクもしくは割込みハンドラが一定の時間以上CPUを使用した場合にエラーとする方法である。
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図14、図16、図21を用いて以下に説明する。
図14は本実施の形態8のマルチタスクシステムの構成を示すブロック図であり、実施の形態3の場合と同様である。図16は本実施の形態8のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャートであり、実施の形態3の場合と同様である。
本構成においては、タスクの遷移もしくは割込みハンドラの起動時に、スケジューラ部203もしくは割込み管理部204が、タスクの切替えあるいは割込みハンドラの起動を行う。
図21に示すようなテーブル設定が成されたタスクの実行中に、タスク遷移もしくは割込みハンドラへの遷移が発生した場合には、その処理としては、図16に示したフローに従った処理が実行される。
まず、ステップS501において遷移先情報保持部209および実行中タスク情報保持部206の更新が行なわれる。次のステップS502で、実行中タスク情報保持部206の現在実行中のタスクに対応させて、禁止遷移テーブル210から、タスク遷移もしくは割込みハンドラへの遷移の禁止情報の取得を行なう。
ここで、図21に示したように、禁止遷移テーブル210にタスク遷移の禁止情報として、遷移先のタスクが実行される時の累計時間(ここでは100msec)を指定している場合、ステップS503において、遷移先情報保持部209に保持されている遷移先タスクが実行される時の累計時間と、禁止遷移テーブル210に保持されたタスク遷移の禁止情報であり遷移先タスクが実行されるときの累計時間としての100msecとが、比較手段208によって比較され、その結果、遷移先情報保持部209に保持されている遷移先タスクの実行中の累計時間が、禁止遷移テーブル210に保持されている100msecを超える場合は、システムの停止を行なうものとする。
なお、ここで禁止遷移テーブル210に登録するデータとして、遷移する前の遷移元タスクの実行に切り替わってから現在までの区間実行時間を登録しても、遷移先タスクの実行中の累計時間の場合と同様な方法によって比較することにより、同様の効果を期待することができる。
本構成によって、遷移先のタスクもしくは割込みハンドラが指定した時間以上にCPUを使用した場合に、システムの停止を行なうことが可能となるため、リアルタイムシステムにおけるデッドラインの判定を行なうことが可能となる。
(実施の形態9)
本発明の実施の形態9のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図22は本実施の形態9のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図であり、前述の実施の形態1〜4における禁止遷移タスクテーブル207あるいは禁止遷移割込みハンドラテーブル802あるいは禁止遷移テーブル210に対して、遷移を禁止する情報に加え、特別に遷移を許可する場合の許可フラグを追加した場合のテーブルの構造を示す説明図である。ここでは、遷移先のタスクで獲得する資源として、テーブルで指定された資源(セマフォ)である場合には、そのタスクへの遷移を許可するものとし、その他の資源(例えば、データキューやイベントフラグなど)を獲得するために資源待ちとなっているタスクへ切替えられる場合は、そのタスクへの遷移を禁止するものとする。
例えば、図22において、禁止する遷移先としてのタスクDに加え、特別に遷移を許可するために、遷移許可フラグと、その許可する条件である場合として「セマフォ待ちの解除」という要因によるタスク切替えの場合が設定されている。すなわち「セマフォ待ちの解除」という設定情報がタスクを切替えるトリガとなる。
図22に示したようなテーブル設定の場合は、遷移を禁止するタスクDへの遷移であっても、待ち資源として「セマフォ待ちの解除」という要因を設定している場合は、遷移を許可するものとする。
このように、特定の資源待ち(ここでは、セマフォ)によるタスク切替え時は遷移を許可することにより、詳細なタスク遷移禁止条件を設定することが可能となる。
上記の設定を行なった場合のタスク切替え時もしくは割込みハンドラ起動時の処理の具体例を、図5、図6、図14、図22を用いて以下に説明する。
図5は本実施の形態9のマルチタスクシステムにおける正常なタスク遷移を示す説明図であり、実施の形態1の場合と同様である。図6は本実施の形態9のマルチタスクシステムにおける異常なタスク遷移を示す説明図であり、実施の形態1の場合と同様である。図14は本実施の形態9のマルチタスクシステムの構成を示すブロック図であり、実施の形態3の場合と同様である。
図5に示す正常なタスク遷移である場合は、時刻t2においてタスクAからタスクBへ、時刻t5においてタスクAからタスクCへ遷移が行なわれている。一方、図6に示す異常なタスク遷移である場合は、時刻t2においては正常にタスクAからタスクBへと遷移し、時刻t4から時刻t5の間においてシステムエラーが発生したため、本来時刻t5においてはタスクAからタスクCへと遷移を行なうべきはずであるが、タスクDへと遷移が行なわれているものとする。
上記のようなタスク遷移に対して、実施の形態1の構成であれば、時刻t5においてタスクDへの遷移が発生した場合は、システムの停止を要求していたが、本実施の形態9においては、図22のように、禁止遷移テーブル210に、遷移許可フラグと、遷移許可フラグに従って特別に遷移を許可する場合の条件としてセマフォ待ちの解除とが指定されており、時刻t5に、図14に示す比較手段208によって、禁止遷移テーブル210に保持された遷移許可フラグおよびこの遷移許可フラグに従って特別に遷移を許可する場合の条件と、遷移先情報保持部209の内容とを比較し、遷移先情報保持部209がセマフォ待ちである場合は、タスクDへの遷移であっても許可するものとする。
本構成によって、特別に遷移を許可する条件を追加することができるため、柔軟な禁止遷移条件の設定を行なうことが可能となる。なお、禁止遷移テーブルを構造体によって実現することにより、実施の形態5〜9の条件を組み合わせて使用することが可能である。
(実施の形態10)
本発明の実施の形態10のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図23は本実施の形態10のマルチタスクシステムにおける禁止遷移テーブルの内容を動的に変更する変更手段を設けた場合の構成を示すブロック図であり、実施の形態1〜3の構成に対して、禁止遷移テーブル210の内容を動的に変更するための変更手段211を加えた構成図である。図23において、101はユーザアプリケーションを表し、ユーザタスク(A〜C)102〜104と、割込みハンドラ105が含まれる。201はOSを表し、システムコール202と、スケジューラ部203と、割込み管理部204と、遷移先情報保持部209と、実行中タスク情報保持部206と、禁止遷移テーブル210と、比較手段208と、変更手段211が含まれる。301はマイクロプロセッサを表し、割込み機能302が含まれる。
禁止遷移テーブル210の内容を動的に変更する具体的な例について、図23を用いて説明する。
図23において、禁止遷移テーブル210は、メモリ空間上に設けるものとし、タスクから発行されるシステムコールの一つである変更手段211によって、禁止遷移テーブル210の内容を変更するものとする。変更手段211は遷移を禁止するタスクの条件の追加および削除が可能なものとする。
なお、OS201内に変更手段211を設けずに、マイクロプロセッサ301上の特定のレジスタに値を書き込むことによって、禁止遷移テーブル210の内容を変更する方法や、マルチタスクシステムのデバッグを行なうデバッグ装置において、その入力手段から禁止遷移テーブル210の内容を直接変更する方法などでもよいものとする。
かかる構成によれば、遷移禁止条件を動的に変更することが可能となるため、システムエラー判定の条件を強化することが可能になる。
(実施の形態11)
本発明の実施の形態11のマルチタスクシステムおよびマルチタスク制御方法を説明する。
図24は本実施の形態11のマルチタスク制御方法における処理内容を示すフローチャートであり、スケジューラ部203において、特定のシステムコール202からスケジューラ部203が呼ばれた場合は、禁止遷移の判定を行なわない場合のフローチャートを示したものである。
上記の処理の具体的な例を、図24を用いて以下に説明する。
図24において、ステップS200が、図4に示すタスク切替え処理に対して新しく追加された処理である。このタスク切替え処理は、スケジューラ部203において行なわれる処理で、各タスク(A〜C)102〜104から呼ばれたシステムコール202によって呼び出されるものである。ここで、システムコール202からスケジューラ部203を呼び出す際に、禁止遷移タスクの判定処理を実行するかどうかを表す判定フラグを渡し、ステップS200において、判定フラグが有効の場合のみに、スケジューラ部203は、遷移先情報保持部209と実行中タスク情報保持部206に対して情報を送り判定を行なうものとし、判定フラグが無効の場合は、即時にタスクの切替え処理S204を実行するものとする。
ここで、判定フラグは引数やグローバル変数などで実現するものとする。判定フラグを引数とする場合は、あらかじめ決められたシステムコールに対しては比較を行なわないとする設定を、カーネルの構築時に設定しておく必要がある。一方、グローバル変数として実現する場合は、タスクにおいて指定のシステムコール呼び出し前のポイントにおいて変数に書き込みを行ない許可・禁止を切替えるものとする。また、グローバル変数として実現した場合は、指定の区間では禁止遷移判定の有効・無効を切替えられるといった利点もある。
かかる構成によれば、特定のシステムコールに対しては、禁止遷移の判定を行なわなくてすむため、比較にかかるオーバヘッドを削減できるとともに、指定するシステムコールによる遷移は許可することが可能となる。
本発明のマルチタスクシステムおよびマルチタスク制御方法は、マルチタスクシステム実行時にシステムエラーが発生した時でも、その時点でプログラム実行を必ず停止することができ、システムエラーにより発生する期待しないタスク遷移や期待しないタイミングにおける割込みハンドラの起動に対して、それらの不具合解析ポイントの絞込みを行って、システムエラーの発生ポイントを特定することができるもので、複数のタスクの切替え処理および割込みハンドラの起動処理を実行するマルチタスクシステムに適用できる。
従来のマルチタスクシステムの構成を示すブロック図 本発明の実施の形態1のマルチタスクシステムの構成を示すブロック図 同実施の形態1のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャート 同実施の形態1のマルチタスク制御方法におけるタスク切替え時の処理内容を示すフローチャート 同実施の形態1のマルチタスクシステムにおける正常なタスク遷移を示す説明図 同実施の形態1のマルチタスクシステムにおける異常なタスク遷移を示す説明図 同実施の形態1のマルチタスクシステムにおける禁止遷移タスクテーブルの一例を示す説明図 本発明の実施の形態2のマルチタスクシステムの構成を示すブロック図 同実施の形態2のマルチタスク制御方法におけるシステム起動処理の初期化内容を示すフローチャート 同実施の形態2のマルチタスク制御方法における割込みハンドラ起動時の処理内容を示すフローチャート 同実施の形態2のマルチタスクシステムにおける正常な割込みハンドラへの遷移を示す説明図 同実施の形態2のマルチタスクシステムにおける異常な割込みハンドラへの遷移を示す説明図 同実施の形態2のマルチタスクシステムにおける禁止遷移割込みハンドラテーブルの一例を示す説明図 本発明の実施の形態3のマルチタスクシステムの構成を示すブロック図 同実施の形態3のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図 同実施の形態3のマルチタスク制御方法における遷移発生時の処理内容を示すフローチャート 本発明の実施の形態4のマルチタスクシステムの構成を示すブロック図 本発明の実施の形態5のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図 本発明の実施の形態6のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図 本発明の実施の形態7のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図 本発明の実施の形態8のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図 本発明の実施の形態9のマルチタスクシステムにおける禁止遷移テーブルの一例を示す説明図 本発明の実施の形態10のマルチタスクシステムにおける禁止遷移テーブルの内容を動的に変更する変更手段を設けた場合の構成を示すブロック図 本発明の実施の形態11のマルチタスク制御方法における処理内容を示すフローチャート
符号の説明
101 アプリケーション
102 タスクA
103 タスクB
104 タスクC
105 割込みハンドラ
201 リアルタイムOS
202 システムコール
203 スケジューラ部
204 割込み管理部
205 遷移先タスク情報保持部
206 実行中タスク情報保持部
207 禁止遷移タスクテーブル
208 比較手段
209 遷移先情報保持部
210 禁止遷移テーブル
211 変更手段
301 マイクロプロセッサ
302 割込み機能
801 遷移先割込みハンドラ情報保持部
802 禁止遷移割込みハンドラテーブル
S101 カーネルの初期化を行なうステップ
S102 禁止遷移タスクテーブル初期化を行なうステップ
S200 比較をおこなうかどうかを判定するステップ
S201 遷移先・実行中タスク情報を更新するステップ
S202 禁止遷移タスク情報を取り出すステップ
S203 禁止遷移タスクであるかを比較するステップ
S204 タスク切替え処理を行なうステップ
S205 実行中タスク情報の更新を行なうステップ
S301 禁止遷移割込みハンドラテーブルの初期化を行なうステップ
S401 遷移先割込みハンドラ・実行中タスク情報を更新するステップ
S402 禁止遷移割込みハンドラ情報を取り出すステップ
S403 禁止遷移割込みハンドラであるかを比較するステップ
S404 割込みハンドラを起動するステップ
S501 遷移先情報・実行中タスク情報を更新するステップ
S502 禁止遷移先情報を取り出すステップ
S503 禁止遷移であるかの比較を行なうステップ
S504 遷移処理を行なうステップ

Claims (54)

  1. 複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する遷移先タスク情報保持部と、タスクごとに遷移を禁止するタスクの情報を保持する禁止遷移タスクテーブルと、前記遷移先タスク情報保持部の内容と前記禁止遷移タスクテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先タスク情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移タスクテーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
  2. 複数のタスクを切替えて実行するマルチタスクシステムであって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先割込みハンドラ情報保持部と、タスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移割込みハンドラテーブルと、前記遷移先割込みハンドラ情報保持部の内容と前記禁止遷移割込みハンドラテーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先割込みハンドラ情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移割込みハンドラテーブル内で前記実行中タスク情報保持部に保持された前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
  3. 複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報を保持する禁止遷移テーブルと、前記遷移先情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記遷移先情報保持部に保持された前記次に遷移するタスクが、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持された現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラの情報が、前記禁止遷移テーブル内で前記実行中タスク情報保持部に保持されたタスクの実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
  4. 複数のタスクを切替えて実行するマルチタスクシステムであって、各タスクからのシステムコールの発行によって実行するタスクを切替えるスケジューラ部と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する割込み管理部と、現在実行中のタスク情報を保持する実行中タスク情報保持部と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する遷移先情報保持部と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報を保持する禁止遷移テーブルと、前記実行中タスク情報保持部の内容と前記禁止遷移テーブルの内容とを比較する比較手段とを有し、前記比較手段は、前記スケジューラ部による前記タスクの切替え時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込み管理部による前記割込みハンドラの起動時に、前記比較により、前記実行中タスク情報保持部に保持された現在実行中のタスクが、前記禁止遷移テーブル内で前記遷移先情報保持部に保持された前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させることを特徴とするマルチタスクシステム。
  5. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルは、特定の遷移禁止タスクに対してのみ、そのタスク情報を保持することを特徴とするマルチタスクシステム。
  6. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルの内容を動的に変更する変更手段を設けたことを特徴とするマルチタスクシステム。
  7. 請求項3または請求項4に記載のマルチタスクシステムを動作させるマイクロプロセッサであって、前記禁止遷移テーブルの情報を変更するための変更レジスタを設け、この変更レジスタに値を書き込むことにより前記禁止遷移テーブルの内容を変更可能とすることを特徴とするマイクロプロセッサ。
  8. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、エントリアドレスを登録することを特徴とするマルチタスクシステム。
  9. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスク名を登録することを特徴とするマルチタスクシステム。
  10. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクIDを登録し、前記タスクIDまたはID以上またはID以下のタスクへの遷移を禁止することを特徴とするマルチタスクシステム。
  11. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクの優先度を登録し、前記登録優先度または優先度以上または優先度以下のタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
  12. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超えるタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
  13. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、タスクの再開領域を登録し、前記登録再開領域から実行が再開されるタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
  14. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクの情報として、スタック消費量を登録し、前記登録スタック消費量以上使用しているタスクに対して、遷移を禁止することを特徴とするマルチタスクシステム。
  15. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みレベルを登録し、前記登録割込みレベルまたはレベル以上またはレベル以下の割込みハンドラに対して、遷移を禁止することを特徴とするマルチタスクシステム。
  16. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込み要因を登録することを特徴とするマルチタスクシステム。
  17. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラのエントリアドレスを登録することを特徴とするマルチタスクシステム。
  18. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラ名を登録することを特徴とするマルチタスクシステム。
  19. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超える割込みハンドラに対して、遷移を禁止することを特徴とするマルチタスクシステム。
  20. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラの情報、および特別に遷移を許可するタスクあるいは割込みハンドラの情報を登録することを特徴とするマルチタスクシステム。
  21. 請求項20に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラのうちOSの特定資源待ちの状態にあるタスクあるいは割込みハンドラに対して、特別に遷移を許可することを特徴とするマルチタスクシステム。
  22. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルに前記現在実行中タスクに切替わってからの区間実行時間を登録し、前記実行中タスク情報保持部の保持する区間実行時間が、前記登録区間実行時間を超える場合に、システムを停止することを特徴とするマルチタスクシステム。
  23. 請求項3または請求項4に記載のマルチタスクシステムであって、前記禁止遷移テーブルにおける遷移禁止割込みハンドラの情報として、請求項8〜請求項22のいずれかに記載の情報を組み合わせたものを設定可能とすることを特徴とするマルチタスクシステム。
  24. 請求項3または請求項4に記載のマルチタスクシステムであって、前記スケジューラ部が特定のシステムコールから呼ばれた場合は、前記比較手段によって比較を行うことなくタスクを切替えることを特徴とするマルチタスクシステム。
  25. 請求項3または請求項4に記載のマルチタスクシステムを動作させるマイクロプロセッサであって、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較手段により禁止遷移であると判定した場合は、システムを停止することを特徴とするマイクロプロセッサ。
  26. 請求項3または請求項4に記載のマルチタスクシステムのデバッグを行なうデバッグ装置であって、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較手段により禁止遷移であると判定した場合は、システムを停止することを特徴とするデバッグ装置。
  27. 請求項3または請求項4に記載のマルチタスクシステムのデバッグを行なうデバッグ装置であって、前記禁止遷移テーブルの内容の変更を行なう入力手段を有することを特徴とするデバッグ装置。
  28. 複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報をテーブル化して保持する工程と、前記タスクの切替え時に、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較する工程と、前記比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
  29. 複数のタスクを切替えて実行するマルチタスク制御方法であって、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記割込みハンドラの起動時に、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記比較により、前記現在のタスク実行中に起動要求が発生した割込みハンドラが、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
  30. 複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止するタスクの情報、およびタスクごとに遷移を禁止する割込みハンドラの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記次に遷移するタスクの情報とテーブル内の前記遷移を禁止するタスクの情報とを比較し、前記割込みハンドラの起動時には、前記起動要求が発生した割込みハンドラの情報とテーブル内の前記遷移を禁止する割込みハンドラの情報とを比較する工程と、前記タスクの切替え時の比較により、前記次に遷移するタスクが、前記テーブル内で前記現在実行中のタスクからの遷移先として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記起動要求が発生した割込みハンドラの情報が、前記テーブル内で前記現在のタスク実行中に発生した割込みハンドラの起動要求として禁止された遷移であると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
  31. 複数のタスクを切替えて実行するマルチタスク制御方法であって、各タスクからのシステムコールの発行によって実行するタスクを切替える工程と、ハードウェアからの割込み発生によって対応する要因の割込みハンドラを起動する工程と、現在実行中のタスク情報を保持する工程と、前記現在実行中のタスクの次に遷移するタスクの情報、および前記現在のタスク実行中に起動要求が発生した割込みハンドラの情報を保持する工程と、タスクごとに遷移を禁止する遷移元タスクの情報、および割込みハンドラごとに遷移を禁止する遷移元タスクの情報をテーブル化して保持する工程と、前記タスクの切替え時には、前記現在実行中のタスク情報とテーブル内の遷移先タスクへの遷移元として禁止されたタスクの情報とを比較し、前記割込みハンドラの起動時には、前記現在実行中のタスク情報とテーブル内の前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクとを比較する工程と、前記タスクの切替え時の比較により、前記現在実行中のタスクが、前記テーブル内で前記遷移先タスクへの遷移元として禁止されたタスクであると判定した場合、あるいは前記割込みハンドラの起動時の比較により、前記現在実行中のタスクが、前記テーブル内で前記起動要求が発生した割込みハンドラへの遷移元として禁止されたタスクであると判定した場合は、システムを停止させる工程とからなるマルチタスク制御方法。
  32. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルは、特定の遷移禁止タスクに対してのみ、そのタスク情報を保持するマルチタスク制御方法。
  33. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルの内容を動的に変更するマルチタスク制御方法。
  34. 請求項33に記載のマルチタスク制御方法であって、マイクロプロセッサに設けた変更レジスタに前記テーブルの変更情報を保持し、前記マイクロプロセッサによって、前記変更レジスタに保持した前記変更情報にしたがって、前記テーブルの内容を変更するマルチタスク制御方法。
  35. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、エントリアドレスを登録するマルチタスク制御方法。
  36. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスク名を登録するマルチタスク制御方法。
  37. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクIDを登録し、前記タスクIDまたはID以上またはID以下のタスクへの遷移を禁止するマルチタスク制御方法。
  38. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクの優先度を登録し、前記登録優先度または優先度以上または優先度以下のタスクに対して、遷移を禁止するマルチタスク制御方法。
  39. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超えるタスクに対して、遷移を禁止するマルチタスク制御方法。
  40. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、タスクの再開領域を登録し、前記登録再開領域から実行が再開されるタスクに対して、遷移を禁止するマルチタスク制御方法。
  41. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクの情報として、スタック消費量を登録し、前記登録スタック消費量以上使用しているタスクに対して、遷移を禁止するマルチタスク制御方法。
  42. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みレベルを登録し、前記登録割込みレベルまたはレベル以上またはレベル以下の割込みハンドラに対して、遷移を禁止するマルチタスク制御方法。
  43. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込み要因を登録するマルチタスク制御方法。
  44. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラのエントリアドレスを登録するマルチタスク制御方法。
  45. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラ名を登録するマルチタスク制御方法。
  46. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、割込みハンドラごとに現在まで実行した累計時間を登録し、前記登録実行累計時間を超える割込みハンドラに対して、遷移を禁止するマルチタスク制御方法。
  47. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラの情報、および特別に遷移を許可するタスクあるいは割込みハンドラの情報を登録するマルチタスク制御方法。
  48. 請求項47に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止タスクあるいは遷移禁止割込みハンドラのうちOSの特定資源待ちの状態にあるタスクあるいは割込みハンドラに対して、特別に遷移を許可するマルチタスク制御方法。
  49. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルに前記現在実行中タスクに切替わってからの区間実行時間を登録し、前記実行中タスク情報保持部の保持する区間実行時間が、前記登録区間実行時間を超える場合に、システムを停止するマルチタスク制御方法。
  50. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記テーブルにおける遷移禁止割込みハンドラの情報として、請求項35〜請求項49のいずれかに記載の情報を組み合わせたものを設定可能とするマルチタスク制御方法。
  51. 請求項30または請求項31に記載のマルチタスク制御方法であって、前記特定のシステムコールがあった場合は、前記比較を行うことなくタスクを切替えるマルチタスク制御方法。
  52. 請求項30または請求項31に記載のマルチタスク制御方法であって、マイクロプロセッサにより、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較により禁止遷移であると判定した場合は、システムを停止するマルチタスク制御方法。
  53. 請求項30または請求項31に記載のマルチタスク制御方法であって、デバッグ装置により、タスクの遷移あるいは割込みハンドラの起動への遷移が行なわれる時に、前記比較により禁止遷移であると判定した場合はシステムを停止するマルチタスク制御方法。
  54. 請求項30または請求項31に記載のマルチタスク制御方法であって、デバッグ装置により、前記テーブルの内容の変更を行なうマルチタスク制御方法。
JP2005043294A 2005-02-21 2005-02-21 マルチタスクシステムおよびマルチタスク制御方法 Pending JP2006228074A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005043294A JP2006228074A (ja) 2005-02-21 2005-02-21 マルチタスクシステムおよびマルチタスク制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005043294A JP2006228074A (ja) 2005-02-21 2005-02-21 マルチタスクシステムおよびマルチタスク制御方法

Publications (1)

Publication Number Publication Date
JP2006228074A true JP2006228074A (ja) 2006-08-31

Family

ID=36989387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005043294A Pending JP2006228074A (ja) 2005-02-21 2005-02-21 マルチタスクシステムおよびマルチタスク制御方法

Country Status (1)

Country Link
JP (1) JP2006228074A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843134B1 (ko) 2006-09-15 2008-07-02 삼성전자주식회사 인터럽트 금지구간 처리 장치 및 방법과 페이지 고정 장치및 방법
JP2010218023A (ja) * 2009-03-13 2010-09-30 Nippon Telegr & Teleph Corp <Ntt> サービス連携装置およびサービス連携方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843134B1 (ko) 2006-09-15 2008-07-02 삼성전자주식회사 인터럽트 금지구간 처리 장치 및 방법과 페이지 고정 장치및 방법
JP2010218023A (ja) * 2009-03-13 2010-09-30 Nippon Telegr & Teleph Corp <Ntt> サービス連携装置およびサービス連携方法

Similar Documents

Publication Publication Date Title
US7734881B2 (en) Adapting RCU for real-time operating system usage
US7698540B2 (en) Dynamic hardware multithreading and partitioned hardware multithreading
US8176489B2 (en) Use of rollback RCU with read-side modifications to RCU-protected data structures
US9069605B2 (en) Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US9274859B2 (en) Multi processor and multi thread safe message queue with hardware assistance
US7971205B2 (en) Handling of user mode thread using no context switch attribute to designate near interrupt disabled priority status
US7487503B2 (en) Scheduling threads in a multiprocessor computer
US20090037927A1 (en) Apparatus and method for direct switching of software threads
JP2009501366A (ja) スレッドレベルの投機実行を拡張するためのプリミティブ
US20130081038A1 (en) Multiprocessor computing device
US8321874B2 (en) Intelligent context migration for user mode scheduling
US8726279B2 (en) System for multi threaded multi processor sharing of asynchronous hardware units
US20080104602A1 (en) Task switching control method and computer system
EP1693743A2 (en) System, method and medium for using and/or providing operating system information to acquire a hybrid user/operating system lock
JP2005190207A (ja) 割り込み制御装置、制御方法
US11061730B2 (en) Efficient scheduling for hyper-threaded CPUs using memory monitoring
JP2011216004A (ja) マイクロプロセッサ、電子制御ユニット、実行比率切り替え方法
JP2006228074A (ja) マルチタスクシステムおよびマルチタスク制御方法
JP2009175960A (ja) 仮想マルチプロセッサシステム
US20070168716A1 (en) Failsoft system for multiple CPU system
US7996848B1 (en) Systems and methods for suspending and resuming threads
WO2007094460A1 (ja) 並列処理装置及び排他制御方法
US20090241111A1 (en) Recording medium having instruction log acquiring program recorded therein and virtual computer system
JP2005173643A (ja) コンピュータシステム及びそのオペレーティング方法
JPH11272501A (ja) デバッガの処理方法およびリアルタイムosの処理方法