JP2005196459A - 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法 - Google Patents
割込み制御プログラムおよびその記録媒体ならびに割込み制御方法 Download PDFInfo
- Publication number
- JP2005196459A JP2005196459A JP2004001934A JP2004001934A JP2005196459A JP 2005196459 A JP2005196459 A JP 2005196459A JP 2004001934 A JP2004001934 A JP 2004001934A JP 2004001934 A JP2004001934 A JP 2004001934A JP 2005196459 A JP2005196459 A JP 2005196459A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- task
- priority
- factor
- processing
- 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
Links
- 238000000034 method Methods 0.000 title claims description 203
- 238000012545 processing Methods 0.000 claims abstract description 280
- 230000008569 process Effects 0.000 claims description 99
- 230000002618 waking effect Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 abstract description 6
- 230000007704 transition Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 10
- 238000011161 development Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
【課題】割込みコントローラの提供する割込み優先度制御機能とは独立に任意の数の割込みレベルの設定を可能とし、割り込みコントローラの移行に伴う割込み制御プログラムの変更を容易にすること。
【解決手段】割込み初期化処理部110が各割込みをそれぞれ処理する割込みタスク140を生成し、各割込みタスク140が処理する割込みに対して決められた割込みレベルを割込みタスク140の優先度に反映し、割込み受付処理部120が割込みを受付けると受付けた割込みを処理する割込みタスク140を起床してスケジューラに制御を移すことによって、レベル付き割込み制御をマスクパターンを用いて行う代わりに割込み処理タスクの優先度制御を用いて行う。
【選択図】 図2
【解決手段】割込み初期化処理部110が各割込みをそれぞれ処理する割込みタスク140を生成し、各割込みタスク140が処理する割込みに対して決められた割込みレベルを割込みタスク140の優先度に反映し、割込み受付処理部120が割込みを受付けると受付けた割込みを処理する割込みタスク140を起床してスケジューラに制御を移すことによって、レベル付き割込み制御をマスクパターンを用いて行う代わりに割込み処理タスクの優先度制御を用いて行う。
【選択図】 図2
Description
この発明は、割込みコントローラからの割込みを受付け、受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムおよびその記録媒体ならびに割込み制御方法に関し、特に、割込み優先度の段数が異なる割込みコントローラへの移行に伴ってプログラムを変更する場合に、変更箇所を減らし、もって変更を容易にすることができる割込み制御プログラムおよびその記録媒体ならびに割込み制御方法に関するものである。
一般に、オペレーティングシステム(以下「OS」という。)は、外部割込みの発生を契機として、あらかじめ指定された処理を起動する仕組み(これを割込み管理と呼ぶ)を搭載している。また、制御装置など、割込みのリアルタイム処理が重要な分野では、割込みの重要度に基づいて割込みの処理順序を制御する必要があり、このような制御は、レベル付き割込み制御と呼ばれる。
レベル付き割込み制御の代表的な方式として、以下の方式が知られている(例えば、非特許文献1を参照。)。
(1)割込み優先度制御機能付き割込みコントローラによるレベル付き割込み制御方式
(2)割込みマスクパターンによるレベル付き割込み制御方式
(1)割込み優先度制御機能付き割込みコントローラによるレベル付き割込み制御方式
(2)割込みマスクパターンによるレベル付き割込み制御方式
ここで、割込み優先度制御機能付き割込みコントローラとは、割込みとその割込みの優先度を設定すると、割込み発生時にその割込みに対して設定された優先度以下の割込みの受付けを禁止する機能を搭載した機器である。一部のCPUは、このような機能を備えた割込み優先度制御機能付き割込みコントローラを搭載している。
一方、割込み優先度制御機能付き割込みコントローラを搭載していないCPUでは、レベルによる割込み制御の代わりに、各割込み要因ごとに割込みマスクのON/OFFを設定することができる割込みコントローラを搭載している。このような割込みマスクを設定することができる割込みコントローラを用いてレベル付き割込み制御を行う方式として、割込みマスクパターンによるレベル付き割込み制御方式がある。
(1)の方式では、割込みの優先度制御をハードウエアが行うのに対し、(2)の方式ではソフトウエアによって行うという違いがある。なお、ここでは、割込み優先度と割込みレベルとを次のように使い分ける。
割込み優先度:割込み優先度制御機能付き割込みコントローラに設定する割込みの優先度
割込みレベル:ユーザが設定した割込みの優先度
割込み優先度:割込み優先度制御機能付き割込みコントローラに設定する割込みの優先度
割込みレベル:ユーザが設定した割込みの優先度
(1)の方式では、割込み優先度と割込みレベルが同一に扱われる。一方、(2)の方式では、割込み優先度は存在せず(ハードウエアによるサポートがないため)、割込みレベルに基づいた割込みのマスク制御をソフトウエアによって行う。
以下、両方式について、図14−1〜図14−3を用いて説明する。図14−1は、割込み優先度制御機能付き割込みコントローラを用いたレベル付き割込み制御処理の処理手順を示すフローチャートである。
同図に示すように、割込み優先度制御機能付き割込みコントローラを用いたレベル付き割込み制御処理では、まず、周辺機器が割込みを発生すると(ステップS401)、周辺機器からの割込みが割込みコントローラに通知される(ステップS402)。
そして、割込みコントローラがCPUに割込みを通知し(ステップS403)、割込みを通知されたCPUは割込みの受付けを禁止する(ステップS404)。なお、ここまでの処理は、ハードウエアによって行われる。
そして、OSが割込み発生時の状態(レジスタ/割込み優先度)を保存し(ステップS405)、CPUに通知された割込みの要因を調査する(ステップS406)。そして、割込み要因の調査結果に基づいて割込みコントローラの割込み優先度を設定し(ステップS407)、CPUへの割込みの受付けを許可する(ステップS408)。
そして、割込み要因に応じた処理(これを割込みハンドラ処理と呼ぶ)を呼び出し(ステップS409)、割り込みハンドラの処理が終了すると、CPUへの割込みの受付けを禁止し(ステップS410)、ステップS405で保存した実行状態(レジスタ/割込み優先度)を復元する(ステップS411)。そして、割込み発生前の処理に復帰するとともに、CPUへの割込みの受付けを許可する(ステップS412)。
図14−2は、マスクパターンによるレベル付き割込み制御を説明するための説明図である。同図に示すように、マスクパターンとは、各割込みレベルでマスクする割込み要因を表すビットマップであり、ここでは、タイマ/LAN/ディスクの3つの割込みをこの順序で優先度をつけた場合(タイマが最も高い優先度をもち、ディスクが最も低い優先度をもつ)のマスクパターンの例を示している。
例えば、最も割込みレベルが高い「割込みレベル3」に対応するマスクパターンは、タイマ、LANおよびディスクによる割込みを全てマスクしていずれの割込みも受付け不可とし、次に割込みレベルが高い「割込みレベル2」に対応するマスクパターンは、LANおよびディスクによる割込みをマスクし、タイマによる割込みだけを受付け可としている。
このように、各割込み要因ごとに割込みマスクのON/OFFを設定することができる割込みコントローラでは、割込みレベルとマスクパターンとを対応させることによって、レベル付き割込み制御を実現することができる。
図14−3は、割込みマスクパターンによるレベル付き割込み制御処理の処理手順を示すフローチャートである。同図に示すように、割込みマスクパターンによるレベル付き割込み制御処理では、OSの初期化時に各割込みの割込みレベルから各割込みレベルごとにマスクする割込みを算出し、割込みマスクのパターン(マスクパターン)を作成する(ステップS421)。
そして、周辺機器が割込みを発生すると(ステップS422)、周辺機器からの割込みが割込みコントローラに通知され(ステップS423)、割込みコントローラがCPUに割込みを通知する(ステップS424)。そして、割込みを通知されたCPUは、割込みの受付けを禁止する(ステップS425)。なお、ここまでの処理は、ハードウエアによって行われる。
そして、OSが割込み発生時の状態(レジスタ/割込みレベル)を保存し(ステップS426)、割り込み要因を調査する(ステップS427)。そして、調査した割込み要因から割込みレベルを調査し(ステップS428)、調査した割込みレベルに対応するマスクパターンを割込みコントローラに設定する(ステップS429)。
そして、CPUへの割込みの受付けを許可し(ステップS430)、割込み要因に対応した割込みハンドラ処理を実行する(ステップS431)。そして、割り込みハンドラ処理が終了すると、CPUへの割込みの受付けを禁止し(ステップS432)、割込み発生前の割込みレベルに対応したマスクパターンを割込みコントローラに設定する(ステップS433)。
そして、ステップS426で保存した状態を復元し(ステップS434)、割込み発生前の処理に復帰するとともにCPUへの割込みの受付けを許可する(ステップS435)。
なお、SolarisなどのOSでは、マルチプロセッサ環境における割込みハンドラ処理の並列実行性を向上させる目的で、割込みハンドラ処理を割込みの延長で直接呼び出す代わりに各割込みに対応した割込み処理タスクで実行することが行われている(例えば、非特許文献2および3を参照。)。
永井正武、権藤正樹、沢田勉著、「実用 組込みOS構築技法―情報通信を支える基礎技術RTOS入門」、共立出版、2001年11月1日、p.204−207
ジム・モーロ、リチャード・マクドゥ−ガル著、福本秀、兵頭武文、細川一茂、大嶺朋之訳、「Solaris インターナル」、ピアソンエデュケーション、2001年11月1日、p.39−42
Jim Mauro, Richard McDougall, "Solaris Internals: Core Kernel Architecture", Sun Microsystems Press
しかしながら、かかる従来のレベル付き割込み制御では、ユーザが設定可能な割込みレベルの数が割込み優先度の数やマスク設定可能な割込み要因の数など割込みコントローラによって決定されるため、割込み優先度の数やマスク設定可能な割込み要因の数が異なる割込みコントローラへの移行に伴ってデバイスドライバ等の割込み制御プログラムを変更する場合に、割込みコントローラに依存する部分の変更量や開発量が多いという問題がある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、割込み優先度の段数が異なる割込みコントローラへの移行に伴ってプログラムを変更する場合に、変更箇所を減らし、もって変更を容易にすることができる割込み制御プログラムおよびその記録媒体ならびに割込み制御方法を提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムであって、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、をコンピュータに実行させることを特徴とする。
また、本発明は、割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とする。
また、本発明は、割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御方法であって、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、を含んだことを特徴とする。
かかる発明によれば、各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定し、割込みコントローラからの割込みを受付け、受付けた割込みの割込み要因を判定し、タスク優先度を設定した割込み処理タスクのうち判定した割込み要因に対応する割込み処理を行う割込み処理タスクを起床するよう構成したので、割込みレベルによる割込み優先度制御を割込み処理タスクの優先度制御に置き換えて実現することができ、割込みレベルの数を割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができる。
また、本発明は、上記発明において、前記タスク優先度設定手順は、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でないと判定した場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする。
この発明によれば、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、受け付けた割込みの割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、割込み優先度が最低優先度でないと判定した場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、割込み優先度が最低優先度であると判定した場合には、割込み要因に対応する割込み処理を行う割込み処理タスクを起床するよう構成したので、割込みコントローラの優先度制御仕様に影響されないレベル付き割込み制御を割込み優先度制御機能付き割込みコントローラと組み合わせることができる。
本発明によれば、割込みレベルの数を割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができるので、割込み制御プログラムの中で割込みコントローラの優先度制御仕様に影響される箇所を減らすことができ、異なる割込みコントローラへの移行に伴って発生する割込み制御プログラムの変更を減らし、変更を容易にすることができるという効果を奏する。
また、本発明によれば、割込みコントローラの優先度制御仕様に影響されないレベル付き割込み制御を割込み優先度制御機能付き割込みコントローラと組み合わせることができるので、任意の数の割込みレベルを使用することができるとともに、高い割込みレベルの割込みを高速に処理することができるという効果を奏する。
以下に添付図面を参照して、この発明に係る割込み制御プログラムおよびその記録媒体ならびに割込み制御方法の好適な実施例を詳細に説明する。
まず、本実施例1に係る割込み制御プログラムを実行する装置の構成について説明する。図1は、本実施例1に係る割込み制御プログラムを実行する装置の構成を示す図である。同図に示すように、この装置は、複数の周辺機器10と、割込みコントローラ20と、CPU30とを有する。
周辺機器10は、ディスク、プリンタ、LANなどであり、割込みコントローラ20に接続され、割込みを発生させることで、I/Oの完了やデータ受信などをCPU30に通知する。
割込みコントローラ20は、周辺機器10からの割込みを受付けてCPU30に通知する制御装置である。この割込みコントローラ20は、個別の割込みマスクによって割込みを制御する。すなわち、この割込みコントローラ20は、割込み要因ごとに割込みマスクのON/OFFを制御する機能を備えている。
CPU30は、割込み制御プログラムを含むOSやアプリケーションを実行する処理装置であり、割込みコントローラ20からの割込みの受付けを禁止/許可する機能を備えている。
次に、本実施例1に係る割込み制御プログラムの構成について説明する。図2は、本実施例1に係る割込み制御プログラムの構成を示す機能構成図である。同図に示すように、この割込み制御プログラム100は、割込み初期化処理部110と、割込み受付処理部120と、割込み出口処理部130と、割込み処理タスク140と、割込みハンドラ150と、割込みレベル対応表160と、割込みハンドラ表170とを有する。
割込み初期化処理部110は、割込み制御プログラム100の初期化を行う処理部である。具体的には、この割込み初期化処理部110は、割込みレベル対応表160の初期化と割込み処理タスク140の生成を行う。
割込み受付処理部120は、周辺機器からの割込みの発生を記録し、割込み処理の準備を行う処理部である。具体的には、この割込み受付処理部120は、割込み発生時の実行状態を保存し、発生した割込みの要因を調べ、割込み要因に対応した割込み処理タスク140を起床する。
割込み出口処理部130は、割込みの処理を完了し、割込み発生元に戻る処理を行う処理部である。具体的には、この割込み出口処理部130は、割込み発生時の実行状態の復元などを行う。
割込み処理タスク140は、割込み要因に対応する割込み処理を行うタスクであり、具体的には、割込みハンドラ150を起動して割込み処理を行う。この割込み処理タスク140は、割込み初期化処理部110によって割込み要因の数だけ生成され、生成された各割込み処理タスク140が各割込み要因に対応する割込みハンドラ150を起動して割込み処理を行う。
割込みハンドラ150は、割込みタスク140から呼び出され、実際に割込みの処理を行う処理部である。なお、割込みハンドラ150は、デバイスドライバの開発者によって作成され、事前にOSに登録される。
割込みレベル対応表160は、割込み要因ごとに割込みレベルや割込み処理タスク140などの情報を割り込み要因情報として記憶する記憶部である。図3は、割込みレベル対応表160に記憶される各割込み要因情報のデータ構造の一例を示す図である。
同図に示すように、この割込み要因情報には、各割込み要因を識別する割込み要因番号と、割込み要因ごとに決められた割込みレベルと、各割込み要因に対応する割込み処理を行う割込み処理タスク140の優先度である割込み処理タスク優先度と、割込み処理タスク140を識別する割込み処理タスクIDが含まれる。
ここで、割込み処理タスク優先度は、割込みレベルを反映する優先度が割込み初期化処理部110によって割り当てられる。すなわち、割込みレベルが高い割込み要因に対応する割込み処理タスク140には高い優先度が割り当てられ、割込みレベルが低い割込み要因に対応する割込み処理タスク140には低い優先度が割り当てられる。
このように、各割込み処理タスク140に割込みレベルを反映する優先度を割り当てることによって、割込みレベルによる割込みの制御を割込み処理タスク140のタスク優先度制御によって実現することができる。
なお、割込み要因番号および割込みレベルについては、OSの構成時にユーザが設定し、割り込み処理タスクIDについては、割込み初期化処理部110が設定する。また、割込み要因番号、割込みレベル、割込み処理タスク優先度および割込み処理タスクIDのデータ型は、整数型である。
割込みハンドラ表170は、割込み要因によって起動される割込みハンドラ150についての情報を割込みハンドラ情報として割込み要因ごとに記憶した記憶部である。図4は、割込みハンドラ表170に記憶される各割込みハンドラ情報のデータ構造の一例を示す図である。
この割込みハンドラ表170は、割込みハンドラ情報を要素とするリストであり、図4に示すように、各割込みハンドラ情報として、リスト情報と、割込み要因番号と、割込みハンドラ150のアドレスである割込みハンドラアドレスとを記憶している。ここで、リスト情報は、リスト構造の割込みハンドラ表170の各要素(各割込みハンドラの情報)を接続するポインタである。
次に、割込み初期化処理部110の処理手順について説明する。図5は、割込み初期化処理部110の処理手順を示すフローチャートである。同図に示すように、この割込み初期化処理部110は、割込みハンドラ150の呼出しを行う割込み処理タスク140を生成し(ステップS101)、生成した割込みタスク140のタスクIDを割込みレベル対応表160の一つの割込み要因に対して登録する(ステップS102)。
そして、タスクIDを登録した割込み要因の割込みレベルを割込みレベル対応表160から取得し(ステップS103)、取得した割込みレベルから割込み処理タスク140のタスク優先度を算出する(ステップS104)。
ここで、この割込み初期化処理部110は、割込みレベルが高い割込み要因を処理する割込み処理タスク140は、割り込みレベルが低い割込み要因を処理する割込みタスク140より優先度が高くなるようにタスク優先度を算出する。
そして、算出した値を割込みレベル対応表160の割込み処理タスク優先度に設定し(ステップS105)、生成した割り込み処理タスク140の優先度をレベル対応表160に設定した優先度に変更する(ステップS106)。
そして、全ての割込み要因について処理したか否かを調べ(ステップS107)、全ての割込み要因について処理していない場合には、ステップS101に戻って次の割込み要因に対する処理を行い、全ての割込み要因について処理した場合には、処理を終了する。
このように、この割込み初期化処理部110が、割込み要因の割込みレベルの高低関係を保ったまま割込み処理タスク140の優先度を設定することによって、割込みレベルによる割込み優先度制御を割込み処理タスク140の優先度制御に置き換えて実現することができる。
次に、割込み処理タスク140の処理手順について説明する。図6は、割込み処理タスク140の処理手順を示すフローチャートである。同図に示すように、この割込み処理タスク140は、割込み初期化処理部110によって生成された後、CPU30への割込みの受付けを禁止し(ステップS121)、一度休眠状態に移行する(ステップS122)。
その後、割込み発生時に割込み受付処理部120から起床され、タスク優先度に基づいてスケジューラによって実行状態にされると、発生した割込みを処理する割込みハンドラ150のアドレスを割込みハンドラ表170から取得し(ステップS123)、CPU30への割込みの受付けを許可した後に、割込みハンドラ150を呼び出す(ステップS124〜ステップS125)。
そして、割込みハンドラ150の処理が終了すると、CPU30への割込みの受付けを禁止し(ステップS126)、処理した割込みの要因についての割込みマスクを開放し(ステップS127)、ステップS121に戻る。
このように、この割込み処理タスク140が割込み受付処理部120から起床され、割込みレベルを反映したタスク優先度に基づいて実行されると、割込みハンドラ150を呼び出して割込みを処理することとしたので、レベル付き割込み制御をタスク優先度制御に置き換えて実現することができる。
次に、割込み受付処理部120および割込み出口処理部130の処理手順について説明する。図7は、割込み受付処理部120および割込み出口処理部130の処理手順を示すフローチャートである。なお、この割込み受付処理部120は、図14−3に示したハードウエア処理の後に実行される。
図7に示すように、この割込み受付処理部120は、まず、割込み発生時の実行状態(レジスタ/割込み発生前の割込みレベル)を保存し(ステップS141)、割込み要因を調査する(ステップS142)。
そして、発生した割込みの割込みマスクを閉じ(ステップS143)、割込みレベル対応表160から、割込み要因に対応した割込み処理タスクIDを取得し(ステップS144)、取得した割込み処理タスクIDを用いて割込み処理タスク140を起床する(ステップS145)。
そして、スケジューラを呼び出し(ステップS146)、割込み処理タスク140に制御を移す(ステップS147)。その後、割込み処理タスク140の処理が終了すると、この割込み受付処理部120に制御が戻され、制御を戻された割込み受付処理部120は、割込み出口処理部130に制御を移行する。
そして、制御を移行された割込み出口処理部130は、割込み発生時の実行状態(レジスタ/割込み発生前の割込みレベル)を復元し(ステップS148)、割込み発生元に復帰するとともにCPU30への割込みの受付けを許可する(ステップS149)。
上述してきたように、本実施例1では、割込み初期化処理部110が各割込みをそれぞれ処理する割込みタスク140を生成し、各割込みタスク140が処理する割込みに対して決められた割込みレベルを割込みタスク140の優先度に反映し、割込み受付処理部120が割込みを受付けると受付けた割込みを処理する割込みタスク140を起床してスケジューラに制御を移すこととしたので、レベル付き割込み制御をマスクパターン用いて行う代わりに割込みタスク140の優先度制御を用いて行うことができ、もって割込みレベルの数を割込みコントローラの優先度制御仕様に影響されることなく自由に設定することができる。
したがって、割込み制御プログラム100の中で割込みコントローラの優先度制御仕様に影響される箇所を減らすことができ、異なる割込みコントローラへの移行に伴って発生する割込み制御プログラム100の変更を減らし、開発コストを削減することができる。
ところで、上記実施例1では、個別の割込みマスクによって割込み制御を行う割込みコントローラ20を用いる場合について説明した。しかしながら、割込みコントローラとしては、個別に割込みをマスクする機能だけでなく、割込み優先度制御機能付きのものを使用することもできる。
そこで、本実施例2では、割込み優先度制御機能付き割込みコントローラと実施例1で説明した割込み制御処理方式とを組み合わせることで、任意の数の割込みレベルを使用できるレベル付き割込み制御と、割込み優先度制御機能付き割込みコントローラを用いた高速な優先度付き割込み制御とを両立することができる割込み制御プログラムについて説明する。
まず、本実施例2に係る割込み制御プログラムによるレベル付き割込み制御処理の概念について説明する。図8は、本実施例2に係る割込み制御プログラムによるレベル付き割込み制御処理の概念を説明するための説明図である。なお、本実施例2に係る割込み制御プログラムは、5段の割込み優先度制御機能付き割込みコントローラ(割込み優先度は0〜4)を備えた装置で実行される。
同図に示すように、本実施例2に係る割込み制御プログラムは、設定可能な0〜99の100個の割込みレベルのうち、レベルの高い方から4つの割込みレベル(レベル99〜レベル96)の割込みレベル制御をハードウエアによって行う。
すなわち、割込みレベル99〜96をそれぞれ割込みコントローラの割込み優先度4〜1に対応させ、これらの割込みレベルの割込みについては、割込みコントローラによって割込みレベル制御を行う。
また、割込みレベルが95以下の割り込みについては、全て割込みコントローラの割込み優先度0に対応させ、これらの割込みレベルの割込みについては、実施例1で示した方式で、ソフトウエアによって割込みレベル制御を行う。
このように、本実施例2に係る割込み制御プログラムは、高い割込みレベルに設定された割込みについては、割込み優先度制御機能付き割り込みコントローラによる割込みレベル制御を行い、より低い割込みレベルの制御を実施例1で示した方式で行う。したがって、任意の数の割込みレベルを設定することができるとともに、高い割込みレベルの割込みを高速に処理することができる。
また、図9は、本実施例2に係る割込み制御プログラムを実行する装置の構成を示す図である。同図に示すように、この装置は、図1に示した装置の割込みコントローラ20の代わりに割込みコントローラ40を有する。
この割込みコントローラ40は、割込み優先度機能付き割込みコントローラである。すなわち、この割込みコントローラ40は、周辺機器10が発生した割込みをCPU30に通知する機能と、割込み要因ごとに個別の割込みマスクを設定する機能と、指定された割込み優先度より低い優先度の割込みを受付け禁止にする機能を備えた装置である。
次に、本実施例2に係る割込み制御プログラムの構成について説明する。図10は、本実施例2に係る割込み制御プログラムの構成を示す機能構成図である。なお、ここでは説明の便宜上、図2に示した各部と同様の役割を果たす機能部については同一符号を付すこととしてその詳細な説明を省略する。
同図に示すように、この割込み制御プログラム200は、割込み初期化処理部210と、割込み受付処理部220と、割込み出口処理部230と、割込み処理タスク240と、割込みハンドラ150と、割込みレベル対応表260と、割込みハンドラ表170とを有する。
割込み初期化処理部210は、割込み制御プログラム200の初期化を行う処理部であり、割込み受付処理部220は、割込みコントローラ40からの割込みを受付けて処理する処理部であり、割込み出口処理部230は、割込み処理後に割込み発生前の状態に戻る処理を行う処理部である。
割込み処理タスク240は、割込み処理タスク140と同様に割込み要因に対応する割込み処理を行うタスクであるが、生成されるタスクの数は割込み要因の数より少なく、一部の割込みレベルが高い割込み要因は割込み受付処理部220が直接割り込みハンドラ150を呼び出して処理する。
割込みレベル対応表260は、割込みレベル対応表160が記憶する割込み要因情報に加えて、割込み優先度制御機能つき割込みコントローラ40に設定する優先度である割込み優先度を記憶する記憶部である。
図11は、本実施例2に係る割込みレベル対応表260に記憶される各割込み要因情報のデータ構造の一例を示す図である。同図に示すように、この割込み要因情報には、図3に示した割込み要因情報に加え、割込み優先度が含まれる。なお、この割込み優先度は、ユーザによって設定され、データ型は整数型である。
次に、本実施例2に係る割込み初期化処理部210の処理手順について説明する。図12−1は、本実施例2に係る割込み初期化処理部210の処理手順を示すフローチャートである。同図に示すように、この割込み初期化処理部210は、割込みレベル対応表260から割込み要因の割込みレベルを一つ取得する(ステップS201)。
そして、取得した割込みレベルをOSで設定可能な割込みレベルの最大値から引いた値を算出し(ステップS202)、算出した値が割込み優先度制御機能つき割込みコントローラ40で設定可能な割込み優先度の最大値より小さいか否かを判定する(ステップS203)。
その結果、割込み優先度の最大値より小さくなければ、割込みレベルが割込みコントローラ40によって割込み優先度制御が行われない低いレベルなので、低レベル割込み初期化処理を行い(ステップS204)、割込み優先度の最大値より小さければ、割込みレベルが割込みコントローラ40によって割込み優先度制御が行われる高いレベルなので、高レベル割込み初期化処理を行う(ステップS205)。
例えば、割込みレベル対応表260から取得した割込みレベルが「96」であれば、OSで設定可能な割込みレベルの最大値「99」から引いた値「3」は割込み優先度の最大値「4」より小さいので、高レベル割込み初期化処理を行う。
そして、全ての割込み要因について処理したか否かを調べ(ステップS206)、全ての割込み要因について処理していない場合には、ステップS201に戻って次の割込み要因に対する処理を行い、全ての割込み要因について処理した場合には、処理を終了する。
次に、図12−1に示した高レベル割込み初期化処理(ステップS205)の処理手順について説明する。図12−2は、図12−1に示した高レベル割込み初期化処理の処理手順を示すフローチャートである。
同図に示すように、この高レベル割込み初期化処理は、割込みコントローラ40で設定可能な割込み優先度の最大値から、割込みレベルの最大値と割込みレベル対応表260から取得した割込みレベルとのレベル差を引いた値を算出し(ステップS221)、算出した値を割込みレベル対応表の割込み優先度に設定する(ステップS222)。
例えば、割込みレベル対応表260から取得した割込みレベルが「96」であれば、割込みレベルの最大値「99」とのレベル差は「3」であり、このレベル差を割込み優先度の最大値「4」から引くと「1」が算出され、この「1」を割込み優先度として割込みレベル対応表260に設定する。
このように、この高レベル割込み初期化処理が割込みレベルが「96」以上の割込み要因の割込み優先度を算出して割込みレベル対応表260に設定することによって、後述するように、割込み受付処理部220が割込みコントローラ40に設定する割込み優先度を割込み要因から取得することができる。
次に、図12−1に示した低レベル割込み初期化処理(ステップS204)の処理手順について説明する。図12−3は、図12−1に示した低レベル割込み初期化処理の処理手順を示すフローチャートである。
同図に示すように、この低レベル割込み初期化処理は、割込みレベル対応表260の割込み優先度に最低優先度「0」(優先度による割込みマスクなし)の値を設定し(ステップS241)、割込みハンドラ150の呼出しを行う割込み処理タスク240を生成する(ステップS242)。
そして、生成した割込み処理タスク240のタスクIDを割込みレベル対応表260に登録し(ステップS243)、タスクIDを登録した割込み要因の割込みレベルから割込み処理タスク240のタスク優先度を算出する(ステップS244)。
ここで、この低レベル割込み初期化処理は、割込みレベルが高い割込み要因を処理する割込み処理タスク240は、割り込みレベルが低い割込み要因を処理する割込みタスク240より優先度が高くなるようにタスク優先度を算出する。
そして、算出した値を割込みレベル対応表260の割込み処理タスク優先度に設定し(ステップS245)、生成した割り込み処理タスク240の優先度を割込みレベル対応表260に設定したタスク優先度に変更する(ステップS246)。
このように、この低レベル割込み初期化処理が割込みレベルが「96」より低い割込み要因に対して割込み優先度を「0」として割込みレベル対応表260に設定するとともに割込みを処理する割込みタスク240を生成して割込みレベル対応表260に登録することによって、後述するように、割込みレベルが「96」より低い割込みが発生した場合に、割込み受付処理部220が割込みコントローラ40に最低優先度を設定するとともに、割込み処理タスク240を用いて割込み処理を行うことができる。
次に、本実施例2に係る割込み受付処理部220および割込み出口処理部230の処理手順について説明する。図13−1は、本実施例2に係る割込み受付処理部220および割込み出口処理部230の処理手順を示すフローチャートである。なお、この割込み受付処理部220は、図14−3に示したハードウエア処理の後に実行される。
図13−1に示すように、この割込み受付処理部220は、まず、割込み発生時の実行状態(レジスタ/割込み発生前の割込み優先度/割込みレベル)を保存する(ステップS261)。
そして、割込み要因を調査し(ステップS262)、割込みレベル対応表260から割込み要因に対応する割込み優先度を取得し(ステップS263)、割込みコントローラ40に設定する(ステップS264)。
そして、取得した割込み優先度は最低優先度であるか否かを判定し(ステップS265)、最低優先度である場合には、割込みタスク240を用いて割込み処理を行う最低優先度処理を実行し(ステップS266)、最低優先度でない場合には、割込みハンドラ150を直接呼び出して割込み処理を行う他の優先度処理を実行する(ステップS267)。
その後、割込み処理が終了すると、割込み受付処理部220は、割込み出口処理部130に制御を移行する。そして、制御を移行された割込み出口処理部230は、ステップS261で保存した割込み発生前の割込み優先度を割込みコントローラ40に設定し(ステップS268)、割込み発生時の実行状態(レジスタ)を復元し(ステップS269)、割込み発生元に復帰するとともにCPU30への割込みの受付けを許可する(ステップS270)。
このように、割込み受付処理部220が割込み優先度が最低優先度である場合には、割込みタスク240を用いて割込み処理を行い、最低優先度でない場合には、割込みハンドラ150を直接呼び出して割込み処理を行うことによって、任意の数の割込みレベルを使用できるレベル付き割込み制御と、割込み優先度制御機能付き割込みコントローラ40を用いた高速な優先度付き割込み制御とを両立することができる。
次に、図13−1に示した最低優先度処理(ステップS266)の処理手順について説明する。図13−2は、図13−1に示した最低優先度処理の処理手順を示すフローチャートである。
同図に示すように、この最低優先度処理は、発生した割込みの割込みマスクを閉じ(ステップS281)、割込みレベル対応表260から、割込み要因に対応した割込み処理タスクIDを取得する(ステップS282)。
そして、取得した割込み処理タスクIDを用いて割込み処理タスク240を起床し(ステップS283)、スケジューラを呼び出して(ステップS284)、割込み処理タスク240に制御を移す(ステップS285)。
次に、図13−1に示した他の優先度処理(ステップS267)の処理手順について説明する。図13−3は、図13−1に示した他の優先度処理の処理手順を示すフローチャートである。
同図に示すように、この他の優先度処理は、割込み要因によって起動される割込みハンドラ150のアドレスを割込みハンドラ表170から取得する(ステップS301)。そしてCPU30への割込みの受付けを許可し(ステップS302)、ステップS301で取得した割込みハンドラ150のアドレスを元に割り込みハンドラ150を呼び出す(ステップS303)。そして、CPU30への割込みの受付けを禁止し、処理を終了する(ステップS304)。
上述してきたように、本実施例2では、所定の数(割込みコントローラ40の優先度制御の段数−1、ここでは4)の割込み要因に対しては、割込み初期化処理部210が、割込みレベルの高い順に、割込みレベル対応表260に最低優先度「0」以外の高い割込み優先度を順番に設定し(ここでは、割込みレベル99〜96に対して、それぞれ割込み優先度4〜1を設定)、割込みが発生した場合に、割込み処理受付処理部220が割込み要因の割込み優先度が最低優先度であるか否かを判定し、最低優先度以外の場合には、対応する割込みハンドラ150を直接呼び出して割込みを処理することとしたので、割込みコントローラ40の優先度制御の段数とは独立に任意の数の割込みレベルを設定することができるとともに、所定の数の割込みについては、高速に処理することができる。
(付記1)割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムであって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させることを特徴とする割込み制御プログラム。
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させることを特徴とする割込み制御プログラム。
(付記2)前記タスク優先度設定手順は、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でない場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、
前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする付記1に記載の割込み制御プログラム。
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でない場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、
前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする付記1に記載の割込み制御プログラム。
(付記3)前記タスク優先度設定手順は、前記割込み処理タスクの生成およびタスク優先度の設定を初期化処理として行うことを特徴とする付記1または2に記載の割込み制御プログラム。
(付記4)前記タスク優先度設定手順は、生成した割込み処理タスクを該割込み処理タスクが対応処理を行う割込み要因に対応させて割込みタスク表として記憶し、
前記割込みタスク起床手順は、前記割込み要因判定手順により判定された割込み要因に対応した処理を行う割込み処理タスクを前記割込みタスク表を用いて取得し、該取得した割込み処理タスクを起床することを特徴とする付記1または2に記載の割込み制御プログラム。
前記割込みタスク起床手順は、前記割込み要因判定手順により判定された割込み要因に対応した処理を行う割込み処理タスクを前記割込みタスク表を用いて取得し、該取得した割込み処理タスクを起床することを特徴とする付記1または2に記載の割込み制御プログラム。
(付記5)前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込み要因判定手順により受付けられた割込みの処理を行う割込みハンドラを呼び出して割込みを処理することを特徴とする付記1または2に記載の割込み制御プログラム。
(付記6)割込み要因と該割込み要因に対応する処理を行う割込みハンドラとを対応させて割込みハンドラ表として記憶し、
前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込みハンドラ表を用いて割込みハンドラを取得し、取得した割込みハンドラを呼び出して割込みを処理することを特徴とする付記5に記載の割込み制御プログラム。
前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込みハンドラ表を用いて割込みハンドラを取得し、取得した割込みハンドラを呼び出して割込みを処理することを特徴とする付記5に記載の割込み制御プログラム。
(付記7)前記割込みタスク起床手順は、割込み処理タスクを起床後にスケジューラに制御を移行することを特徴とする付記1または2に記載の割込み制御プログラム。
(付記8)前記タスク優先度生成手順により生成された割込み処理タスクは、生成後に実行された際に休眠状態に移行することを特徴とする付記1または2に記載の割込み制御プログラム。
(付記9)前記タスク優先度設定手順は、割込みレベルが高い順に割込み要因に割込みコントローラの割込み優先度を割り当て、割込みレベルの数が割込みコントローラの割込み優先度の数よりも多い場合は、異なる割込みレベルに割り当てられた複数の割込み要因を1つの割込み優先度に割り当て、前記割込み処理タスクにて処理することで各割込み優先度ごとに複数の割込みレベルを取り扱うことを特徴とする付記2に記載の割込み制御プログラム。
(付記10)前記タスク優先度設定手順は、割込み要因に割り当てた割込み優先度を割込み要因に対応させて割込み優先度表として記憶し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを前記割込み優先度表を用いて判定することを特徴とする付記2または9に記載の割込み制御プログラム。
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを前記割込み優先度表を用いて判定することを特徴とする付記2または9に記載の割込み制御プログラム。
(付記11)割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
(付記12)割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御方法であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、
前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、
を含んだことを特徴とする割り込み制御方法。
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、
前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、
を含んだことを特徴とする割り込み制御方法。
以上のように、本発明に係る割込み制御プログラムおよびその記録媒体ならびに割込み制御方法は、割込みの重要度に基づいて割込みの処理順序を制御する必要があるオペレーティングシステムに有用であり、特に、割込みコントローラの優先度制御仕様とは独立して任意の数の割込みレベルを設定する必要がある場合に適している。
10 周辺機器
20,40 割込みコントローラ
30 CPU
100,200 割込み制御プログラム
110,210 割込み初期化処理部
120,220 割込み受付処理部
130,230 割込み出口処理部
140,240 割込み処理タスク
150 割込みハンドラ
160,260 割込みレベル対応表
170 割込みハンドラ表
20,40 割込みコントローラ
30 CPU
100,200 割込み制御プログラム
110,210 割込み初期化処理部
120,220 割込み受付処理部
130,230 割込み出口処理部
140,240 割込み処理タスク
150 割込みハンドラ
160,260 割込みレベル対応表
170 割込みハンドラ表
Claims (10)
- 割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムであって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させることを特徴とする割込み制御プログラム。 - 前記タスク優先度設定手順は、割込み優先度制御機能を備えた割込みコントローラの割込み優先度を割込みレベルに基づいて各割込み要因に割り当て、割り当てた割込み優先度が最低優先度である割込み要因に対してのみ割込み処理タスクを生成し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを判定し、該割込み優先度が最低優先度でないと判定した場合には、受付けた割込みを処理する割込みハンドラを直接呼び出して割込み処理を行い、
前記割込みタスク起床手順は、前記割込み要因判定手順が割込み優先度が最低優先度であると判定した場合に、前記割込み要因に対応する割込み処理を行う割込み処理タスクを起床することを特徴とする請求項1に記載の割込み制御プログラム。 - 前記タスク優先度設定手順は、前記割込み処理タスクの生成およびタスク優先度の設定を初期化処理として行うことを特徴とする請求項1または2に記載の割込み制御プログラム。
- 前記タスク優先度設定手順は、生成した割込み処理タスクを該割込み処理タスクが対応処理を行う割込み要因に対応させて割込みタスク表として記憶し、
前記割込みタスク起床手順は、前記割込み要因判定手順により判定された割込み要因に対応した処理を行う割込み処理タスクを前記割込みタスク表を用いて取得し、該取得した割込み処理タスクを起床することを特徴とする請求項1または2に記載の割込み制御プログラム。 - 前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込み要因判定手順により受付けられた割込みの処理を行う割込みハンドラを呼び出して割込みを処理することを特徴とする請求項1または2に記載の割込み制御プログラム。
- 割込み要因と該割込み要因に対応する処理を行う割込みハンドラとを対応させて割込みハンドラ表として記憶し、
前記割込みタスク起床手順により起床される割込み処理タスクは、前記割込みハンドラ表を用いて割込みハンドラを取得し、取得した割込みハンドラを呼び出して割込みを処理することを特徴とする請求項5に記載の割込み制御プログラム。 - 前記タスク優先度設定手順は、割込みレベルが高い順に割込み要因に割込みコントローラの割込み優先度を割り当て、割込みレベルの数が割込みコントローラの割込み優先度の数よりも多い場合は、異なる割込みレベルに割り当てられた複数の割込み要因を1つの割込み優先度に割り当て、前記割込み処理タスクにて処理することで各割込み優先度ごとに複数の割込みレベルを取り扱うことを特徴とする請求項2に記載の割込み制御プログラム。
- 前記タスク優先度設定手順は、割込み要因に割り当てた割込み優先度を割込み要因に対応させて割込み優先度表として記憶し、
前記割込み要因判定手順は、判定した割込み要因に割り当てられた割込み優先度が最低優先度であるか否かを前記割込み優先度表を用いて判定することを特徴とする請求項2または7に記載の割込み制御プログラム。 - 割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御プログラムを記録したコンピュータ読み取り可能な記録媒体であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定手順と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定手順と、
前記タスク優先度設定手順によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定手順により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床手順と、
をコンピュータに実行させる割込み制御プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。 - 割込みコントローラからの割込みを受付け、該受付けた割込みを割込み要因ごとに定められた割込みレベルに基づいて処理する割込み制御方法であって、
各割込み要因に対応する割込み処理をそれぞれ行う割込み処理タスクを生成し、該生成した割込み処理タスクが処理する割込みの割込みレベルの高低を反映するタスク優先度を各割込み処理タスクに設定するタスク優先度設定工程と、
前記割込みコントローラからの割込みを受付け、該受付けた割込みの割込み要因を判定する割込み要因判定工程と、
前記タスク優先度設定工程によりタスク優先度が設定された割込み処理タスクのうち前記割込み要因判定工程により判定された割込み要因に対応する割込み処理を行う割込み処理タスクを起床する割込みタスク起床工程と、
を含んだことを特徴とする割り込み制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004001934A JP2005196459A (ja) | 2004-01-07 | 2004-01-07 | 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法 |
US10/849,361 US20050193260A1 (en) | 2004-01-07 | 2004-05-19 | Interrupt control program, recording medium, and interrupt control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004001934A JP2005196459A (ja) | 2004-01-07 | 2004-01-07 | 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005196459A true JP2005196459A (ja) | 2005-07-21 |
Family
ID=34817306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004001934A Pending JP2005196459A (ja) | 2004-01-07 | 2004-01-07 | 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20050193260A1 (ja) |
JP (1) | JP2005196459A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100930009B1 (ko) | 2008-06-04 | 2009-12-07 | 한국과학기술원 | 인터럽트 처리방법 |
JP2014203230A (ja) * | 2013-04-04 | 2014-10-27 | 三菱電機株式会社 | 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4353211B2 (ja) * | 2006-07-11 | 2009-10-28 | 株式会社日立製作所 | 通信機能内蔵制御装置 |
JP2008065713A (ja) * | 2006-09-08 | 2008-03-21 | Canon Inc | マルチプロセッサシステム及び割込み制御方法 |
US7698541B1 (en) * | 2006-10-31 | 2010-04-13 | Netapp, Inc. | System and method for isochronous task switching via hardware scheduling |
US20120226842A1 (en) * | 2011-03-02 | 2012-09-06 | Research In Motion Limited, an Ontario, Canada corporation | Enhanced prioritising and unifying interrupt controller |
US8560750B2 (en) | 2011-05-25 | 2013-10-15 | Lsi Corporation | Systems and methods for advanced interrupt scheduling and priority processing in a storage system environment |
US9678903B1 (en) | 2014-10-15 | 2017-06-13 | Intel Corporation | Systems and methods for managing inter-CPU interrupts between multiple CPUs |
JP2019152985A (ja) * | 2018-03-01 | 2019-09-12 | 株式会社東芝 | 監視回路、監視システム、モータ制御システム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100218675B1 (ko) * | 1996-12-04 | 1999-09-01 | 정선종 | 지능적 우선순위 결정 방식의 다중 인터럽트 제어기 및 그 제어 방법 |
US6539448B1 (en) * | 2000-05-26 | 2003-03-25 | Texas Instruments Incorporated | Priority first come first serve interrupt controller |
US20020087614A1 (en) * | 2000-08-31 | 2002-07-04 | Andrej Kocev | Programmable tuning for flow control and support for CPU hot plug |
-
2004
- 2004-01-07 JP JP2004001934A patent/JP2005196459A/ja active Pending
- 2004-05-19 US US10/849,361 patent/US20050193260A1/en not_active Abandoned
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100930009B1 (ko) | 2008-06-04 | 2009-12-07 | 한국과학기술원 | 인터럽트 처리방법 |
JP2014203230A (ja) * | 2013-04-04 | 2014-10-27 | 三菱電機株式会社 | 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20050193260A1 (en) | 2005-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1991768B (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CA1305799C (en) | Logical resource partitioning of a data processing system | |
US20080046621A1 (en) | Information Processing Apparatus, Interrupt Process Control Method, and Computer Program | |
CN100429625C (zh) | 实时内部简易监视方法 | |
CN105446806B (zh) | 一种应用程序无响应的处理方法及装置 | |
CN1722092A (zh) | Vex-虚拟扩展框架 | |
JP2005056391A (ja) | コンピューティング環境の作業負荷を均衡させる方法およびシステム | |
CN1700171A (zh) | 提供从虚拟环境对硬件的直接访问 | |
WO2008062647A1 (en) | Multiprocessor system, system configuration method in multiprocessor system, and program thereof | |
US7523229B2 (en) | Memory protection during direct memory access | |
JP2005056067A (ja) | Dma転送制御装置 | |
JP2005196459A (ja) | 割込み制御プログラムおよびその記録媒体ならびに割込み制御方法 | |
US20160034411A1 (en) | Subsystem Peripheral Ownership Scheduling and Reconfiguration for Highly Integrated System on Chips | |
CN101876954A (zh) | 一种虚拟机控制系统及其工作方法 | |
WO2001086418A2 (en) | Portable thread environment | |
US10042659B1 (en) | Caching virtual contexts for sharing of physical instances of a hardware resource | |
JP2007164421A (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
US20050086665A1 (en) | Autonomous device driver | |
JP2004127163A (ja) | マルチプロセッサシステム | |
US20020169908A1 (en) | System and method for implementing a flexible arbitration mechanism | |
Silva et al. | An I/O building block for the IMA space reference architecture | |
KR102708907B1 (ko) | 외부 예외 핸들링 | |
WO2003075167A1 (en) | Method and arrangement for virtual direct memory access | |
Stewart et al. | Hardware/software co-design of i/o interfacing hardware and real-time device drivers for embedded systems | |
JPH0612500A (ja) | マイクロプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060509 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080212 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080715 |