(57)【要約】【課題】割込みコントローラの提供する割込み優先度制御機能とは独立に任意の数の割込みレベルの設定を可能とし、割り込みコントローラの移行に伴う割込み制御プログラムの変更を容易にすること。【解決手段】割込み初期化処理部１１０が各割込みをそれぞれ処理する割込みタスク１４０を生成し、各割込みタスク１４０が処理する割込みに対して決められた割込みレベルを割込みタスク１４０の優先度に反映し、割込み受付処理部１２０が割込みを受付けると受付けた割込みを処理する割込みタスク１４０を起床してスケジューラに制御を移すことによって、レベル付き割込み制御をマスクパターンを用いて行う代わりに割込み処理タスクの優先度制御を用いて行う。【選択図】        図２
2005196459.tif 000002
【特許請求の範囲】
【請求項１】
割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムであって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させることを特徴とする割込み制御プログラム。
【請求項２】
前記タスク優先度設定手順は、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でないと判定した場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、
前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする請求項１に記載の割込み制御プログラム。
【請求項３】
前記タスク優先度設定手順は、前記割込み処理タスクの生成およびタスク優先度の設定を初期化処理として行うことを特徴とする請求項１または２に記載の割込み制御プログラム。
【請求項４】
前記タスク優先度設定手順は、生成した割込み処理タスクを該割込み処理タスクが対応処理を行う割込み要因に対応させて割込みタスク表として記憶し、
前記割込みタスク起床手順は、前記割込み要因判定手順により判定された割込み要因に対応した処理を行う割込み処理タスクを前記割込みタスク表を用いて取得し、該取得した割込み処理タスクを起床することを特徴とする請求項１または２に記載の割込み制御プログラム。
【請求項５】
前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込み要因判定手順により受付けられた割込みの処理を行う割込みハンドラを呼び出して割込みを処理することを特徴とする請求項１または２に記載の割込み制御プログラム。
【請求項６】
割込み要因と該割込み要因に対応する処理を行う割込みハンドラとを対応させて割込みハンドラ表として記憶し、
前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込みハンドラ表を用いて割込みハンドラを取得し、取得した割込みハンドラを呼び出して割込みを処理することを特徴とする請求項５に記載の割込み制御プログラム。
【請求項７】
前記タスク優先度設定手順は、割込みレベルが高い順に割込み要因に割込みコントローラの割込み優先度を割り当て、割込みレベルの数が割込みコントローラの割込み優先度の数よりも多い場合は、異なる割込みレベルに割り当てられた複数の割込み要因を１つの割込み優先度に割り当て、前記割込み処理タスクにて処理することで各割込み優先度ごとに複数の割込みレベルを取り扱うことを特徴とする請求項２に記載の割込み制御プログラム。
【請求項８】
前記タスク優先度設定手順は、割込み要因に割り当てた割込み優先度を割込み要因に対応させて割込み優先度表として記憶し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを前記割込み優先度表を用いて判定することを特徴とする請求項２または７に記載の割込み制御プログラム。
【請求項９】
割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【請求項１０】
割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御方法であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、
前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、
を含んだことを特徴とする割り込み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、割込みコントローラからの割込みを受付け、受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムおよびその記録媒体ならびに割込み制御方法に関し、特に、割込み優先度の段数が異なる割込みコントローラへの移行に伴ってプログラムを変更する場合に、変更箇所を減らし、もって変更を容易にすることができる割込み制御プログラムおよびその記録媒体ならびに割込み制御方法に関するものである。
【背景技術】
【０００２】
一般に、オペレーティングシステム（以下「ＯＳ」という。）は、外部割込みの発生を契機として、あらかじめ指定された処理を起動する仕組み（これを割込み管理と呼ぶ）を搭載している。また、制御装置など、割込みのリアルタイム処理が重要な分野では、割込みの重要度に基づいて割込みの処理順序を制御する必要があり、このような制御は、レベル付き割込み制御と呼ばれる。
【０００３】
レベル付き割込み制御の代表的な方式として、以下の方式が知られている（例えば、非特許文献１を参照。）。
（１）割込み優先度制御機能付き割込みコントローラによるレベル付き割込み制御方式
（２）割込みマスクパターンによるレベル付き割込み制御方式
【０００４】
ここで、割込み優先度制御機能付き割込みコントローラとは、割込みとその割込みの優先度を設定すると、割込み発生時にその割込みに対して設定された優先度以下の割込みの受付けを禁止する機能を搭載した機器である。一部のＣＰＵは、このような機能を備えた割込み優先度制御機能付き割込みコントローラを搭載している。
【０００５】
一方、割込み優先度制御機能付き割込みコントローラを搭載していないＣＰＵでは、レベルによる割込み制御の代わりに、各割込み要因ごとに割込みマスクのＯＮ／ＯＦＦを設定することができる割込みコントローラを搭載している。このような割込みマスクを設定することができる割込みコントローラを用いてレベル付き割込み制御を行う方式として、割込みマスクパターンによるレベル付き割込み制御方式がある。
【０００６】
（１）の方式では、割込みの優先度制御をハードウエアが行うのに対し、（２）の方式ではソフトウエアによって行うという違いがある。なお、ここでは、割込み優先度と割込みレベルとを次のように使い分ける。
割込み優先度：割込み優先度制御機能付き割込みコントローラに設定する割込みの優先度
割込みレベル：ユーザが設定した割込みの優先度
【０００７】
（１）の方式では、割込み優先度と割込みレベルが同一に扱われる。一方、（２）の方式では、割込み優先度は存在せず（ハードウエアによるサポートがないため）、割込みレベルに基づいた割込みのマスク制御をソフトウエアによって行う。
【０００８】
以下、両方式について、図１４−１〜図１４−３を用いて説明する。図１４−１は、割込み優先度制御機能付き割込みコントローラを用いたレベル付き割込み制御処理の処理手順を示すフローチャートである。
【０００９】
同図に示すように、割込み優先度制御機能付き割込みコントローラを用いたレベル付き割込み制御処理では、まず、周辺機器が割込みを発生すると（ステップＳ４０１）、周辺機器からの割込みが割込みコントローラに通知される（ステップＳ４０２）。
【００１０】
そして、割込みコントローラがＣＰＵに割込みを通知し（ステップＳ４０３）、割込みを通知されたＣＰＵは割込みの受付けを禁止する（ステップＳ４０４）。なお、ここまでの処理は、ハードウエアによって行われる。
【００１１】
そして、ＯＳが割込み発生時の状態（レジスタ/割込み優先度）を保存し（ステップＳ４０５）、ＣＰＵに通知された割込みの要因を調査する（ステップＳ４０６）。そして、割込み要因の調査結果に基づいて割込みコントローラの割込み優先度を設定し（ステップＳ４０７）、ＣＰＵへの割込みの受付けを許可する（ステップＳ４０８）。
【００１２】
そして、割込み要因に応じた処理（これを割込みハンドラ処理と呼ぶ）を呼び出し（ステップＳ４０９）、割り込みハンドラの処理が終了すると、ＣＰＵへの割込みの受付けを禁止し（ステップＳ４１０）、ステップＳ４０５で保存した実行状態（レジスタ/割込み優先度）を復元する（ステップＳ４１１）。そして、割込み発生前の処理に復帰するとともに、ＣＰＵへの割込みの受付けを許可する（ステップＳ４１２）。
【００１３】
図１４−２は、マスクパターンによるレベル付き割込み制御を説明するための説明図である。同図に示すように、マスクパターンとは、各割込みレベルでマスクする割込み要因を表すビットマップであり、ここでは、タイマ／ＬＡＮ／ディスクの３つの割込みをこの順序で優先度をつけた場合（タイマが最も高い優先度をもち、ディスクが最も低い優先度をもつ）のマスクパターンの例を示している。
【００１４】
例えば、最も割込みレベルが高い「割込みレベル３」に対応するマスクパターンは、タイマ、ＬＡＮおよびディスクによる割込みを全てマスクしていずれの割込みも受付け不可とし、次に割込みレベルが高い「割込みレベル２」に対応するマスクパターンは、ＬＡＮおよびディスクによる割込みをマスクし、タイマによる割込みだけを受付け可としている。
【００１５】
このように、各割込み要因ごとに割込みマスクのＯＮ／ＯＦＦを設定することができる割込みコントローラでは、割込みレベルとマスクパターンとを対応させることによって、レベル付き割込み制御を実現することができる。
【００１６】
図１４−３は、割込みマスクパターンによるレベル付き割込み制御処理の処理手順を示すフローチャートである。同図に示すように、割込みマスクパターンによるレベル付き割込み制御処理では、ＯＳの初期化時に各割込みの割込みレベルから各割込みレベルごとにマスクする割込みを算出し、割込みマスクのパターン（マスクパターン）を作成する（ステップＳ４２１）。
【００１７】
そして、周辺機器が割込みを発生すると（ステップＳ４２２）、周辺機器からの割込みが割込みコントローラに通知され（ステップＳ４２３）、割込みコントローラがＣＰＵに割込みを通知する（ステップＳ４２４）。そして、割込みを通知されたＣＰＵは、割込みの受付けを禁止する（ステップＳ４２５）。なお、ここまでの処理は、ハードウエアによって行われる。
【００１８】
そして、ＯＳが割込み発生時の状態（レジスタ/割込みレベル）を保存し（ステップＳ４２６）、割り込み要因を調査する（ステップＳ４２７）。そして、調査した割込み要因から割込みレベルを調査し（ステップＳ４２８）、調査した割込みレベルに対応するマスクパターンを割込みコントローラに設定する（ステップＳ４２９）。
【００１９】
そして、ＣＰＵへの割込みの受付けを許可し（ステップＳ４３０）、割込み要因に対応した割込みハンドラ処理を実行する（ステップＳ４３１）。そして、割り込みハンドラ処理が終了すると、ＣＰＵへの割込みの受付けを禁止し（ステップＳ４３２）、割込み発生前の割込みレベルに対応したマスクパターンを割込みコントローラに設定する（ステップＳ４３３）。
【００２０】
そして、ステップＳ４２６で保存した状態を復元し（ステップＳ４３４）、割込み発生前の処理に復帰するとともにＣＰＵへの割込みの受付けを許可する（ステップＳ４３５）。
【００２１】
なお、SolarisなどのＯＳでは、マルチプロセッサ環境における割込みハンドラ処理の並列実行性を向上させる目的で、割込みハンドラ処理を割込みの延長で直接呼び出す代わりに各割込みに対応した割込み処理タスクで実行することが行われている（例えば、非特許文献２および３を参照。）。
【００２２】
【非特許文献１】永井正武、権藤正樹、沢田勉著、「実用 組込みＯＳ構築技法―情報通信を支える基礎技術ＲＴＯＳ入門」、共立出版、２００１年１１月１日、ｐ．２０４−２０７
【非特許文献２】ジム・モーロ、リチャード・マクドゥ−ガル著、福本秀、兵頭武文、細川一茂、大嶺朋之訳、「Solaris  インターナル」、ピアソンエデュケーション、２００１年１１月１日、ｐ．３９−４２
【非特許文献３】Jim Mauro, Richard McDougall, "Solaris Internals: Core Kernel Architecture", Sun Microsystems Press
【発明の開示】
【発明が解決しようとする課題】
【００２３】
しかしながら、かかる従来のレベル付き割込み制御では、ユーザが設定可能な割込みレベルの数が割込み優先度の数やマスク設定可能な割込み要因の数など割込みコントローラによって決定されるため、割込み優先度の数やマスク設定可能な割込み要因の数が異なる割込みコントローラへの移行に伴ってデバイスドライバ等の割込み制御プログラムを変更する場合に、割込みコントローラに依存する部分の変更量や開発量が多いという問題がある。
【００２４】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、割込み優先度の段数が異なる割込みコントローラへの移行に伴ってプログラムを変更する場合に、変更箇所を減らし、もって変更を容易にすることができる割込み制御プログラムおよびその記録媒体ならびに割込み制御方法を提供することを目的とする。
【課題を解決するための手段】
【００２５】
上述した課題を解決し、目的を達成するため、本発明は、割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムであって、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、をコンピュータに実行させることを特徴とする。
【００２６】
また、本発明は、割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とする。
【００２７】
また、本発明は、割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御方法であって、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、を含んだことを特徴とする。
【００２８】
かかる発明によれば、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定し、割込みコントローラからの割込みを受付け、受付けた割込みの割込み要因を判定し、タスク優先度を設定した割込み処理タスクのうち判定した割込み要因に対応する割込み処理を行う割込み処理タスクを起床するよう構成したので、割込みレベルによる割込み優先度制御を割込み処理タスクの優先度制御に置き換えて実現することができ、割込みレベルの数を割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができる。
【００２９】
また、本発明は、上記発明において、前記タスク優先度設定手順は、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でないと判定した場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする。
【００３０】
この発明によれば、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、受け付けた割込みの割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、割込み優先度が最低優先度でないと判定した場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、割込み優先度が最低優先度であると判定した場合には、割込み要因に対応する割込み処理を行う割込み処理タスクを起床するよう構成したので、割込みコントローラの優先度制御仕様に影響されないレベル付き割込み制御を割込み優先度制御機能付き割込みコントローラと組み合わせることができる。
【発明の効果】
【００３１】
本発明によれば、割込みレベルの数を割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができるので、割込み制御プログラムの中で割込みコントローラの優先度制御仕様に影響される箇所を減らすことができ、異なる割込みコントローラへの移行に伴って発生する割込み制御プログラムの変更を減らし、変更を容易にすることができるという効果を奏する。
【００３２】
また、本発明によれば、割込みコントローラの優先度制御仕様に影響されないレベル付き割込み制御を割込み優先度制御機能付き割込みコントローラと組み合わせることができるので、任意の数の割込みレベルを使用することができるとともに、高い割込みレベルの割込みを高速に処理することができるという効果を奏する。
【発明を実施するための最良の形態】
【００３３】
以下に添付図面を参照して、この発明に係る割込み制御プログラムおよびその記録媒体ならびに割込み制御方法の好適な実施例を詳細に説明する。
【実施例１】
【００３４】
まず、本実施例１に係る割込み制御プログラムを実行する装置の構成について説明する。図１は、本実施例１に係る割込み制御プログラムを実行する装置の構成を示す図である。同図に示すように、この装置は、複数の周辺機器１０と、割込みコントローラ２０と、ＣＰＵ３０とを有する。
【００３５】
周辺機器１０は、ディスク、プリンタ、ＬＡＮなどであり、割込みコントローラ２０に接続され、割込みを発生させることで、Ｉ／Ｏの完了やデータ受信などをＣＰＵ３０に通知する。
【００３６】
割込みコントローラ２０は、周辺機器１０からの割込みを受付けてＣＰＵ３０に通知する制御装置である。この割込みコントローラ２０は、個別の割込みマスクによって割込みを制御する。すなわち、この割込みコントローラ２０は、割込み要因ごとに割込みマスクのＯＮ／ＯＦＦを制御する機能を備えている。
【００３７】
ＣＰＵ３０は、割込み制御プログラムを含むＯＳやアプリケーションを実行する処理装置であり、割込みコントローラ２０からの割込みの受付けを禁止／許可する機能を備えている。
【００３８】
次に、本実施例１に係る割込み制御プログラムの構成について説明する。図２は、本実施例１に係る割込み制御プログラムの構成を示す機能構成図である。同図に示すように、この割込み制御プログラム１００は、割込み初期化処理部１１０と、割込み受付処理部１２０と、割込み出口処理部１３０と、割込み処理タスク１４０と、割込みハンドラ１５０と、割込みレベル対応表１６０と、割込みハンドラ表１７０とを有する。
【００３９】
割込み初期化処理部１１０は、割込み制御プログラム１００の初期化を行う処理部である。具体的には、この割込み初期化処理部１１０は、割込みレベル対応表１６０の初期化と割込み処理タスク１４０の生成を行う。
【００４０】
割込み受付処理部１２０は、周辺機器からの割込みの発生を記録し、割込み処理の準備を行う処理部である。具体的には、この割込み受付処理部１２０は、割込み発生時の実行状態を保存し、発生した割込みの要因を調べ、割込み要因に対応した割込み処理タスク１４０を起床する。
【００４１】
割込み出口処理部１３０は、割込みの処理を完了し、割込み発生元に戻る処理を行う処理部である。具体的には、この割込み出口処理部１３０は、割込み発生時の実行状態の復元などを行う。
【００４２】
割込み処理タスク１４０は、割込み要因に対応する割込み処理を行うタスクであり、具体的には、割込みハンドラ１５０を起動して割込み処理を行う。この割込み処理タスク１４０は、割込み初期化処理部１１０によって割込み要因の数だけ生成され、生成された各割込み処理タスク１４０が各割込み要因に対応する割込みハンドラ１５０を起動して割込み処理を行う。
【００４３】
割込みハンドラ１５０は、割込みタスク１４０から呼び出され、実際に割込みの処理を行う処理部である。なお、割込みハンドラ１５０は、デバイスドライバの開発者によって作成され、事前にＯＳに登録される。
【００４４】
割込みレベル対応表１６０は、割込み要因ごとに割込みレベルや割込み処理タスク１４０などの情報を割り込み要因情報として記憶する記憶部である。図３は、割込みレベル対応表１６０に記憶される各割込み要因情報のデータ構造の一例を示す図である。
【００４５】
同図に示すように、この割込み要因情報には、各割込み要因を識別する割込み要因番号と、割込み要因ごとに決められた割込みレベルと、各割込み要因に対応する割込み処理を行う割込み処理タスク１４０の優先度である割込み処理タスク優先度と、割込み処理タスク１４０を識別する割込み処理タスクＩＤが含まれる。
【００４６】
ここで、割込み処理タスク優先度は、割込みレベルを反映する優先度が割込み初期化処理部１１０によって割り当てられる。すなわち、割込みレベルが高い割込み要因に対応する割込み処理タスク１４０には高い優先度が割り当てられ、割込みレベルが低い割込み要因に対応する割込み処理タスク１４０には低い優先度が割り当てられる。
【００４７】
このように、各割込み処理タスク１４０に割込みレベルを反映する優先度を割り当てることによって、割込みレベルによる割込みの制御を割込み処理タスク１４０のタスク優先度制御によって実現することができる。
【００４８】
なお、割込み要因番号および割込みレベルについては、ＯＳの構成時にユーザが設定し、割り込み処理タスクＩＤについては、割込み初期化処理部１１０が設定する。また、割込み要因番号、割込みレベル、割込み処理タスク優先度および割込み処理タスクＩＤのデータ型は、整数型である。
【００４９】
割込みハンドラ表１７０は、割込み要因によって起動される割込みハンドラ１５０についての情報を割込みハンドラ情報として割込み要因ごとに記憶した記憶部である。図４は、割込みハンドラ表１７０に記憶される各割込みハンドラ情報のデータ構造の一例を示す図である。
【００５０】
この割込みハンドラ表１７０は、割込みハンドラ情報を要素とするリストであり、図４に示すように、各割込みハンドラ情報として、リスト情報と、割込み要因番号と、割込みハンドラ１５０のアドレスである割込みハンドラアドレスとを記憶している。ここで、リスト情報は、リスト構造の割込みハンドラ表１７０の各要素（各割込みハンドラの情報）を接続するポインタである。
【００５１】
次に、割込み初期化処理部１１０の処理手順について説明する。図５は、割込み初期化処理部１１０の処理手順を示すフローチャートである。同図に示すように、この割込み初期化処理部１１０は、割込みハンドラ１５０の呼出しを行う割込み処理タスク１４０を生成し（ステップＳ１０１）、生成した割込みタスク１４０のタスクＩＤを割込みレベル対応表１６０の一つの割込み要因に対して登録する（ステップＳ１０２）。
【００５２】
そして、タスクＩＤを登録した割込み要因の割込みレベルを割込みレベル対応表１６０から取得し（ステップＳ１０３）、取得した割込みレベルから割込み処理タスク１４０のタスク優先度を算出する（ステップＳ１０４）。
【００５３】
ここで、この割込み初期化処理部１１０は、割込みレベルが高い割込み要因を処理する割込み処理タスク１４０は、割り込みレベルが低い割込み要因を処理する割込みタスク１４０より優先度が高くなるようにタスク優先度を算出する。
【００５４】
そして、算出した値を割込みレベル対応表１６０の割込み処理タスク優先度に設定し（ステップＳ１０５）、生成した割り込み処理タスク１４０の優先度をレベル対応表１６０に設定した優先度に変更する（ステップＳ１０６）。
【００５５】
そして、全ての割込み要因について処理したか否かを調べ（ステップＳ１０７）、全ての割込み要因について処理していない場合には、ステップＳ１０１に戻って次の割込み要因に対する処理を行い、全ての割込み要因について処理した場合には、処理を終了する。
【００５６】
このように、この割込み初期化処理部１１０が、割込み要因の割込みレベルの高低関係を保ったまま割込み処理タスク１４０の優先度を設定することによって、割込みレベルによる割込み優先度制御を割込み処理タスク１４０の優先度制御に置き換えて実現することができる。
【００５７】
次に、割込み処理タスク１４０の処理手順について説明する。図６は、割込み処理タスク１４０の処理手順を示すフローチャートである。同図に示すように、この割込み処理タスク１４０は、割込み初期化処理部１１０によって生成された後、ＣＰＵ３０への割込みの受付けを禁止し（ステップＳ１２１）、一度休眠状態に移行する（ステップＳ１２２）。
【００５８】
その後、割込み発生時に割込み受付処理部１２０から起床され、タスク優先度に基づいてスケジューラによって実行状態にされると、発生した割込みを処理する割込みハンドラ１５０のアドレスを割込みハンドラ表１７０から取得し（ステップＳ１２３）、ＣＰＵ３０への割込みの受付けを許可した後に、割込みハンドラ１５０を呼び出す（ステップＳ１２４〜ステップＳ１２５）。
【００５９】
そして、割込みハンドラ１５０の処理が終了すると、ＣＰＵ３０への割込みの受付けを禁止し（ステップＳ１２６）、処理した割込みの要因についての割込みマスクを開放し（ステップＳ１２７）、ステップＳ１２１に戻る。
【００６０】
このように、この割込み処理タスク１４０が割込み受付処理部１２０から起床され、割込みレベルを反映したタスク優先度に基づいて実行されると、割込みハンドラ１５０を呼び出して割込みを処理することとしたので、レベル付き割込み制御をタスク優先度制御に置き換えて実現することができる。
【００６１】
次に、割込み受付処理部１２０および割込み出口処理部１３０の処理手順について説明する。図７は、割込み受付処理部１２０および割込み出口処理部１３０の処理手順を示すフローチャートである。なお、この割込み受付処理部１２０は、図１４−３に示したハードウエア処理の後に実行される。
【００６２】
図７に示すように、この割込み受付処理部１２０は、まず、割込み発生時の実行状態（レジスタ/割込み発生前の割込みレベル）を保存し（ステップＳ１４１）、割込み要因を調査する（ステップＳ１４２）。
【００６３】
そして、発生した割込みの割込みマスクを閉じ（ステップＳ１４３）、割込みレベル対応表１６０から、割込み要因に対応した割込み処理タスクＩＤを取得し（ステップＳ１４４）、取得した割込み処理タスクＩＤを用いて割込み処理タスク１４０を起床する（ステップＳ１４５）。
【００６４】
そして、スケジューラを呼び出し（ステップＳ１４６）、割込み処理タスク１４０に制御を移す（ステップＳ１４７）。その後、割込み処理タスク１４０の処理が終了すると、この割込み受付処理部１２０に制御が戻され、制御を戻された割込み受付処理部１２０は、割込み出口処理部１３０に制御を移行する。
【００６５】
そして、制御を移行された割込み出口処理部１３０は、割込み発生時の実行状態（レジスタ/割込み発生前の割込みレベル）を復元し（ステップＳ１４８）、割込み発生元に復帰するとともにＣＰＵ３０への割込みの受付けを許可する（ステップＳ１４９）。
【００６６】
上述してきたように、本実施例１では、割込み初期化処理部１１０が各割込みをそれぞれ処理する割込みタスク１４０を生成し、各割込みタスク１４０が処理する割込みに対して決められた割込みレベルを割込みタスク１４０の優先度に反映し、割込み受付処理部１２０が割込みを受付けると受付けた割込みを処理する割込みタスク１４０を起床してスケジューラに制御を移すこととしたので、レベル付き割込み制御をマスクパターン用いて行う代わりに割込みタスク１４０の優先度制御を用いて行うことができ、もって割込みレベルの数を割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができる。
【００６７】
したがって、割込み制御プログラム１００の中で割込みコントローラの優先度制御仕様に影響される箇所を減らすことができ、異なる割込みコントローラへの移行に伴って発生する割込み制御プログラム１００の変更を減らし、開発コストを削減することができる。
【実施例２】
【００６８】
ところで、上記実施例１では、個別の割込みマスクによって割込み制御を行う割込みコントローラ２０を用いる場合について説明した。しかしながら、割込みコントローラとしては、個別に割込みをマスクする機能だけでなく、割込み優先度制御機能付きのものを使用することもできる。
【００６９】
そこで、本実施例２では、割込み優先度制御機能付き割込みコントローラと実施例１で説明した割込み制御処理方式とを組み合わせることで、任意の数の割込みレベルを使用できるレベル付き割込み制御と、割込み優先度制御機能付き割込みコントローラを用いた高速な優先度付き割込み制御とを両立することができる割込み制御プログラムについて説明する。
【００７０】
まず、本実施例２に係る割込み制御プログラムによるレベル付き割込み制御処理の概念について説明する。図８は、本実施例２に係る割込み制御プログラムによるレベル付き割込み制御処理の概念を説明するための説明図である。なお、本実施例２に係る割込み制御プログラムは、５段の割込み優先度制御機能付き割込みコントローラ（割込み優先度は０〜４）を備えた装置で実行される。
【００７１】
同図に示すように、本実施例２に係る割込み制御プログラムは、設定可能な０〜９９の１００個の割込みレベルのうち、レベルの高い方から４つの割込みレベル（レベル９９〜レベル９６）の割込みレベル制御をハードウエアによって行う。
【００７２】
すなわち、割込みレベル９９〜９６をそれぞれ割込みコントローラの割込み優先度４〜１に対応させ、これらの割込みレベルの割込みについては、割込みコントローラによって割込みレベル制御を行う。
【００７３】
また、割込みレベルが９５以下の割り込みについては、全て割込みコントローラの割込み優先度０に対応させ、これらの割込みレベルの割込みについては、実施例１で示した方式で、ソフトウエアによって割込みレベル制御を行う。
【００７４】
このように、本実施例２に係る割込み制御プログラムは、高い割込みレベルに設定された割込みについては、割込み優先度制御機能付き割り込みコントローラによる割込みレベル制御を行い、より低い割込みレベルの制御を実施例１で示した方式で行う。したがって、任意の数の割込みレベルを設定することができるとともに、高い割込みレベルの割込みを高速に処理することができる。
【００７５】
また、図９は、本実施例２に係る割込み制御プログラムを実行する装置の構成を示す図である。同図に示すように、この装置は、図１に示した装置の割込みコントローラ２０の代わりに割込みコントローラ４０を有する。
【００７６】
この割込みコントローラ４０は、割込み優先度機能付き割込みコントローラである。すなわち、この割込みコントローラ４０は、周辺機器１０が発生した割込みをＣＰＵ３０に通知する機能と、割込み要因ごとに個別の割込みマスクを設定する機能と、指定された割込み優先度より低い優先度の割込みを受付け禁止にする機能を備えた装置である。
【００７７】
次に、本実施例２に係る割込み制御プログラムの構成について説明する。図１０は、本実施例２に係る割込み制御プログラムの構成を示す機能構成図である。なお、ここでは説明の便宜上、図２に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
【００７８】
同図に示すように、この割込み制御プログラム２００は、割込み初期化処理部２１０と、割込み受付処理部２２０と、割込み出口処理部２３０と、割込み処理タスク２４０と、割込みハンドラ１５０と、割込みレベル対応表２６０と、割込みハンドラ表１７０とを有する。
【００７９】
割込み初期化処理部２１０は、割込み制御プログラム２００の初期化を行う処理部であり、割込み受付処理部２２０は、割込みコントローラ４０からの割込みを受付けて処理する処理部であり、割込み出口処理部２３０は、割込み処理後に割込み発生前の状態に戻る処理を行う処理部である。
【００８０】
割込み処理タスク２４０は、割込み処理タスク１４０と同様に割込み要因に対応する割込み処理を行うタスクであるが、生成されるタスクの数は割込み要因の数より少なく、一部の割込みレベルが高い割込み要因は割込み受付処理部２２０が直接割り込みハンドラ１５０を呼び出して処理する。
【００８１】
割込みレベル対応表２６０は、割込みレベル対応表１６０が記憶する割込み要因情報に加えて、割込み優先度制御機能つき割込みコントローラ４０に設定する優先度である割込み優先度を記憶する記憶部である。
【００８２】
図１１は、本実施例２に係る割込みレベル対応表２６０に記憶される各割込み要因情報のデータ構造の一例を示す図である。同図に示すように、この割込み要因情報には、図３に示した割込み要因情報に加え、割込み優先度が含まれる。なお、この割込み優先度は、ユーザによって設定され、データ型は整数型である。
【００８３】
次に、本実施例２に係る割込み初期化処理部２１０の処理手順について説明する。図１２−１は、本実施例２に係る割込み初期化処理部２１０の処理手順を示すフローチャートである。同図に示すように、この割込み初期化処理部２１０は、割込みレベル対応表２６０から割込み要因の割込みレベルを一つ取得する（ステップＳ２０１）。
【００８４】
そして、取得した割込みレベルをＯＳで設定可能な割込みレベルの最大値から引いた値を算出し（ステップＳ２０２）、算出した値が割込み優先度制御機能つき割込みコントローラ４０で設定可能な割込み優先度の最大値より小さいか否かを判定する（ステップＳ２０３）。
【００８５】
その結果、割込み優先度の最大値より小さくなければ、割込みレベルが割込みコントローラ４０によって割込み優先度制御が行われない低いレベルなので、低レベル割込み初期化処理を行い（ステップＳ２０４）、割込み優先度の最大値より小さければ、割込みレベルが割込みコントローラ４０によって割込み優先度制御が行われる高いレベルなので、高レベル割込み初期化処理を行う（ステップＳ２０５）。
【００８６】
例えば、割込みレベル対応表２６０から取得した割込みレベルが「９６」であれば、ＯＳで設定可能な割込みレベルの最大値「９９」から引いた値「３」は割込み優先度の最大値「４」より小さいので、高レベル割込み初期化処理を行う。
【００８７】
そして、全ての割込み要因について処理したか否かを調べ（ステップＳ２０６）、全ての割込み要因について処理していない場合には、ステップＳ２０１に戻って次の割込み要因に対する処理を行い、全ての割込み要因について処理した場合には、処理を終了する。
【００８８】
次に、図１２−１に示した高レベル割込み初期化処理（ステップＳ２０５）の処理手順について説明する。図１２−２は、図１２−１に示した高レベル割込み初期化処理の処理手順を示すフローチャートである。
【００８９】
同図に示すように、この高レベル割込み初期化処理は、割込みコントローラ４０で設定可能な割込み優先度の最大値から、割込みレベルの最大値と割込みレベル対応表２６０から取得した割込みレベルとのレベル差を引いた値を算出し（ステップＳ２２１）、算出した値を割込みレベル対応表の割込み優先度に設定する（ステップＳ２２２）。
【００９０】
例えば、割込みレベル対応表２６０から取得した割込みレベルが「９６」であれば、割込みレベルの最大値「９９」とのレベル差は「３」であり、このレベル差を割込み優先度の最大値「４」から引くと「１」が算出され、この「１」を割込み優先度として割込みレベル対応表２６０に設定する。
【００９１】
このように、この高レベル割込み初期化処理が割込みレベルが「９６」以上の割込み要因の割込み優先度を算出して割込みレベル対応表２６０に設定することによって、後述するように、割込み受付処理部２２０が割込みコントローラ４０に設定する割込み優先度を割込み要因から取得することができる。
【００９２】
次に、図１２−１に示した低レベル割込み初期化処理（ステップＳ２０４）の処理手順について説明する。図１２−３は、図１２−１に示した低レベル割込み初期化処理の処理手順を示すフローチャートである。
【００９３】
同図に示すように、この低レベル割込み初期化処理は、割込みレベル対応表２６０の割込み優先度に最低優先度「０」（優先度による割込みマスクなし）の値を設定し（ステップＳ２４１）、割込みハンドラ１５０の呼出しを行う割込み処理タスク２４０を生成する（ステップＳ２４２）。
【００９４】
そして、生成した割込み処理タスク２４０のタスクＩＤを割込みレベル対応表２６０に登録し（ステップＳ２４３）、タスクＩＤを登録した割込み要因の割込みレベルから割込み処理タスク２４０のタスク優先度を算出する（ステップＳ２４４）。
【００９５】
ここで、この低レベル割込み初期化処理は、割込みレベルが高い割込み要因を処理する割込み処理タスク２４０は、割り込みレベルが低い割込み要因を処理する割込みタスク２４０より優先度が高くなるようにタスク優先度を算出する。
【００９６】
そして、算出した値を割込みレベル対応表２６０の割込み処理タスク優先度に設定し（ステップＳ２４５）、生成した割り込み処理タスク２４０の優先度を割込みレベル対応表２６０に設定したタスク優先度に変更する（ステップＳ２４６）。
【００９７】
このように、この低レベル割込み初期化処理が割込みレベルが「９６」より低い割込み要因に対して割込み優先度を「０」として割込みレベル対応表２６０に設定するとともに割込みを処理する割込みタスク２４０を生成して割込みレベル対応表２６０に登録することによって、後述するように、割込みレベルが「９６」より低い割込みが発生した場合に、割込み受付処理部２２０が割込みコントローラ４０に最低優先度を設定するとともに、割込み処理タスク２４０を用いて割込み処理を行うことができる。
【００９８】
次に、本実施例２に係る割込み受付処理部２２０および割込み出口処理部２３０の処理手順について説明する。図１３−１は、本実施例２に係る割込み受付処理部２２０および割込み出口処理部２３０の処理手順を示すフローチャートである。なお、この割込み受付処理部２２０は、図１４−３に示したハードウエア処理の後に実行される。
【００９９】
図１３−１に示すように、この割込み受付処理部２２０は、まず、割込み発生時の実行状態（レジスタ/割込み発生前の割込み優先度／割込みレベル）を保存する（ステップＳ２６１）。
【０１００】
そして、割込み要因を調査し（ステップＳ２６２）、割込みレベル対応表２６０から割込み要因に対応する割込み優先度を取得し（ステップＳ２６３）、割込みコントローラ４０に設定する（ステップＳ２６４）。
【０１０１】
そして、取得した割込み優先度は最低優先度であるか否かを判定し（ステップＳ２６５）、最低優先度である場合には、割込みタスク２４０を用いて割込み処理を行う最低優先度処理を実行し（ステップＳ２６６）、最低優先度でない場合には、割込みハンドラ１５０を直接呼び出して割込み処理を行う他の優先度処理を実行する（ステップＳ２６７）。
【０１０２】
その後、割込み処理が終了すると、割込み受付処理部２２０は、割込み出口処理部１３０に制御を移行する。そして、制御を移行された割込み出口処理部２３０は、ステップS２６１で保存した割込み発生前の割込み優先度を割込みコントローラ４０に設定し（ステップＳ２６８）、割込み発生時の実行状態（レジスタ）を復元し（ステップＳ２６９）、割込み発生元に復帰するとともにＣＰＵ３０への割込みの受付けを許可する（ステップＳ２７０）。
【０１０３】
このように、割込み受付処理部２２０が割込み優先度が最低優先度である場合には、割込みタスク２４０を用いて割込み処理を行い、最低優先度でない場合には、割込みハンドラ１５０を直接呼び出して割込み処理を行うことによって、任意の数の割込みレベルを使用できるレベル付き割込み制御と、割込み優先度制御機能付き割込みコントローラ４０を用いた高速な優先度付き割込み制御とを両立することができる。
【０１０４】
次に、図１３−１に示した最低優先度処理（ステップＳ２６６）の処理手順について説明する。図１３−２は、図１３−１に示した最低優先度処理の処理手順を示すフローチャートである。
【０１０５】
同図に示すように、この最低優先度処理は、発生した割込みの割込みマスクを閉じ（ステップＳ２８１）、割込みレベル対応表２６０から、割込み要因に対応した割込み処理タスクＩＤを取得する（ステップＳ２８２）。
【０１０６】
そして、取得した割込み処理タスクＩＤを用いて割込み処理タスク２４０を起床し（ステップＳ２８３）、スケジューラを呼び出して（ステップＳ２８４）、割込み処理タスク２４０に制御を移す（ステップＳ２８５）。
【０１０７】
次に、図１３−１に示した他の優先度処理（ステップＳ２６７）の処理手順について説明する。図１３−３は、図１３−１に示した他の優先度処理の処理手順を示すフローチャートである。
【０１０８】
同図に示すように、この他の優先度処理は、割込み要因によって起動される割込みハンドラ１５０のアドレスを割込みハンドラ表１７０から取得する（ステップＳ３０１）。そしてＣＰＵ３０への割込みの受付けを許可し（ステップＳ３０２）、ステップＳ３０１で取得した割込みハンドラ１５０のアドレスを元に割り込みハンドラ１５０を呼び出す（ステップＳ３０３）。そして、ＣＰＵ３０への割込みの受付けを禁止し、処理を終了する（ステップＳ３０４）。
【０１０９】
上述してきたように、本実施例２では、所定の数（割込みコントローラ４０の優先度制御の段数−１、ここでは４）の割込み要因に対しては、割込み初期化処理部２１０が、割込みレベルの高い順に、割込みレベル対応表２６０に最低優先度「０」以外の高い割込み優先度を順番に設定し（ここでは、割込みレベル９９〜９６に対して、それぞれ割込み優先度４〜１を設定）、割込みが発生した場合に、割込み処理受付処理部２２０が割込み要因の割込み優先度が最低優先度であるか否かを判定し、最低優先度以外の場合には、対応する割込みハンドラ１５０を直接呼び出して割込みを処理することとしたので、割込みコントローラ４０の優先度制御の段数とは独立に任意の数の割込みレベルを設定することができるとともに、所定の数の割込みについては、高速に処理することができる。
【０１１０】
（付記１）割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムであって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させることを特徴とする割込み制御プログラム。
【０１１１】
（付記２）前記タスク優先度設定手順は、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でない場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、
前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする付記１に記載の割込み制御プログラム。
【０１１２】
（付記３）前記タスク優先度設定手順は、前記割込み処理タスクの生成およびタスク優先度の設定を初期化処理として行うことを特徴とする付記１または２に記載の割込み制御プログラム。
【０１１３】
（付記４）前記タスク優先度設定手順は、生成した割込み処理タスクを該割込み処理タスクが対応処理を行う割込み要因に対応させて割込みタスク表として記憶し、
前記割込みタスク起床手順は、前記割込み要因判定手順により判定された割込み要因に対応した処理を行う割込み処理タスクを前記割込みタスク表を用いて取得し、該取得した割込み処理タスクを起床することを特徴とする付記１または２に記載の割込み制御プログラム。
【０１１４】
（付記５）前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込み要因判定手順により受付けられた割込みの処理を行う割込みハンドラを呼び出して割込みを処理することを特徴とする付記１または２に記載の割込み制御プログラム。
【０１１５】
（付記６）割込み要因と該割込み要因に対応する処理を行う割込みハンドラとを対応させて割込みハンドラ表として記憶し、
前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込みハンドラ表を用いて割込みハンドラを取得し、取得した割込みハンドラを呼び出して割込みを処理することを特徴とする付記５に記載の割込み制御プログラム。
【０１１６】
（付記７）前記割込みタスク起床手順は、割込み処理タスクを起床後にスケジューラに制御を移行することを特徴とする付記１または２に記載の割込み制御プログラム。
【０１１７】
（付記８）前記タスク優先度生成手順により生成された割込み処理タスクは、生成後に実行された際に休眠状態に移行することを特徴とする付記１または２に記載の割込み制御プログラム。
【０１１８】
（付記９）前記タスク優先度設定手順は、割込みレベルが高い順に割込み要因に割込みコントローラの割込み優先度を割り当て、割込みレベルの数が割込みコントローラの割込み優先度の数よりも多い場合は、異なる割込みレベルに割り当てられた複数の割込み要因を１つの割込み優先度に割り当て、前記割込み処理タスクにて処理することで各割込み優先度ごとに複数の割込みレベルを取り扱うことを特徴とする付記２に記載の割込み制御プログラム。
【０１１９】
（付記１０）前記タスク優先度設定手順は、割込み要因に割り当てた割込み優先度を割込み要因に対応させて割込み優先度表として記憶し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを前記割込み優先度表を用いて判定することを特徴とする付記２または９に記載の割込み制御プログラム。
【０１２０】
（付記１１）割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【０１２１】
（付記１２）割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御方法であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、
前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、
を含んだことを特徴とする割り込み制御方法。
【産業上の利用可能性】
【０１２２】
以上のように、本発明に係る割込み制御プログラムおよびその記録媒体ならびに割込み制御方法は、割込みの重要度に基づいて割込みの処理順序を制御する必要があるオペレーティングシステムに有用であり、特に、割込みコントローラの優先度制御仕様とは独立して任意の数の割込みレベルを設定する必要がある場合に適している。
【図面の簡単な説明】
【０１２３】
【図１】本実施例１に係る割込み制御プログラムを実行する装置の構成を示す図である。
【図２】本実施例１に係る割込み制御プログラムの構成を示す機能構成図である。
【図３】割込みレベル対応表に記憶される各割込み要因情報のデータ構造の一例を示す図である。
【図４】割込みハンドラ表に記憶される各割込みハンドラ情報のデータ構造の一例を示す図である。
【図５】割込み初期化処理部の処理手順を示すフローチャートである。
【図６】割込み処理タスクの処理手順を示すフローチャートである。
【図７】割込み受付処理部および割込み出口処理部の処理手順を示すフローチャートである。
【図８】本実施例２に係る割込み制御プログラムによるレベル付き割込み制御処理の概念を説明するための説明図である。
【図９】本実施例２に係る割込み制御プログラムを実行する装置の構成を示す図である。
【図１０】本実施例２に係る割込み制御プログラムの構成を示す機能構成図である。
【図１１】本実施例２に係る割込みレベル対応表に記憶される各割込み要因情報のデータ構造の一例を示す図である。
【図１２−１】本実施例２に係る割込み初期化処理部の処理手順を示すフローチャートである。
【図１２−２】図１２−１に示した高レベル割込み初期化処理の処理手順を示すフローチャートである。
【図１２−３】図１２−１に示した低レベル割込み初期化処理の処理手順を示すフローチャートである。
【図１３−１】本実施例２に係る割込み受付処理部および割込み出口処理部の処理手順を示すフローチャートである。
【図１３−２】図１３−１に示した最低優先度処理の処理手順を示すフローチャートである。
【図１３−３】図１３−１に示した他の優先度処理の処理手順を示すフローチャートである。
【図１４−１】割込み優先度制御機能付き割込みコントローラを用いたレベル付き割込み制御処理の処理手順を示すフローチャートである。
【図１４−２】マスクパターンによるレベル付き割込み制御を説明するための説明図である。
【図１４−３】割込みマスクパターンによるレベル付き割込み制御処理の処理手順を示すフローチャートである。
【符号の説明】
【０１２４】
１０    周辺機器
２０，４０    割込みコントローラ
３０    ＣＰＵ
１００，２００    割込み制御プログラム
１１０，２１０    割込み初期化処理部
１２０，２２０    割込み受付処理部
１３０，２３０    割込み出口処理部
１４０，２４０    割込み処理タスク
１５０    割込みハンドラ
１６０，２６０    割込みレベル対応表
１７０    割込みハンドラ表
【図１】
2005196459.tif 000003
【図２】
2005196459.tif 000004
【図３】
2005196459.tif 000005
【図４】
2005196459.tif 000006
【図５】
2005196459.tif 000007
【図６】
2005196459.tif 000008
【図７】
2005196459.tif 000009
【図８】
2005196459.tif 000010
【図９】
2005196459.tif 000011
【図１０】
2005196459.tif 000012
【図１１】
2005196459.tif 000013
【図１２−１】
2005196459.tif 000014
【図１２−２】
2005196459.tif 000015
【図１２−３】
2005196459.tif 000016
【図１３−１】
2005196459.tif 000017
【図１３−２】
2005196459.tif 000018
【図１３−３】
2005196459.tif 000019
【図１４−１】
2005196459.tif 000020
【図１４−２】
2005196459.tif 000021
【図１４−３】
2005196459.tif 000022