(57)【要約】【課題】汎用ＯＳにおいて特定の割り込み資源からの割り込みに対してリアルタイム性を保証する割り込み制御装置を提供する。【解決手段】本発明の割り込み制御装置は、割り込み資源のうちＯＳが管理する第１タイプの割り込み資源およびＯＳが管理しない第２タイプの割り込み資源のそれぞれに対応するアドレス情報を保持する割り込みベクタレジスタ１０３ａを備え、ＯＳが管理する第１タイプの割り込み資源が発生した割り込みに対しては、割り込みベクタレジスタ１０３ａのアドレス情報に基づいて第１タイプの割り込み資源に共通するスケジュール処理の対象となる共通割り込みエントリ関数１０５を起動し、ユーザが管理する第２タイプの割り込み資源が発生した割り込みに対しては、割り込みベクタレジスタ１０３ａのアドレス情報に基づいて前記スケジュール処理の対象とならない拡張割り込みエントリ関数を起動する。【選択図】図２
2005190207.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムを制御するＯＳの一部として、割り込みを発生する割り込み資源からの割り込みを制御する割り込み制御装置であって、
割り込み資源のうちＯＳが管理する第１タイプの割り込み資源およびＯＳが管理しない第２タイプの割り込み資源のそれぞれに対応するアドレス情報を保持するテーブル手段と、
第１タイプの割り込み資源が発生した割り込みに対しては、テーブル手段のアドレス情報に基づいて第１タイプの割り込み資源に共通する管理処理を含む第１の制御処理を起動し、第２タイプの割り込み資源が発生した割り込みに対しては、テーブル手段のアドレス情報に基づいて前記管理処理を含まない第２の制御処理を起動する起動手段と
を備えることを特徴とする割り込み制御装置。
【請求項２】
前記割り込み制御装置は、さらに、アプリケーションから特定の割り込み資源とアドレス情報とを示す通知を受け付ける受付手段を有し、
前記テーブル手段は、受付手段によって受け付けられた通知に従って第２タイプの割り込み資源に対応するアドレス情報を保持する
ことを特徴とする請求項１記載の割り込み制御装置。
【請求項３】
前記起動手段は、前記第２の制御処理において、コンテキストの退避と、割り込みを発生した第２タイプの割り込み資源に対応する割り込み処理と、退避していたコンテキストの復帰とを順に実行する
ことを特徴とする請求項１又は２記載の割り込み制御装置。
【請求項４】
前記起動手段は、前記第２の制御処理において前記コンテキスト退避の開始前に他の割り込み入力を禁止し、前記第２の制御処理が完了するまでに前記割り込み入力の禁止を解除する
ことを特徴とする請求項３記載の割り込み制御装置。
【請求項５】
前記割り込み制御手段は、さらに、仮想記憶用のページテーブルのうち実行中プロセスに対応するページデータをキャッシュする変換バッファと、
前記起動手段は、前記第２の制御処理において前記割り込み処理実行前に当該割り込み処理に対応するページデータを保持するよう前記変換バッファを更新する更新手段と
を備えることを特徴とする請求項３記載の割り込み制御装置。
【請求項６】
前記受付手段は、さらにアプリケーションから、第２タイプの割り込み資源に対応する割り込み処理のプロセスＩＤを示す通知を受け付け、
前記更新手段は、受付手段によって受け付けられた通知に示されるプロセスＩＤに従って前記ページテーブルから前記ページデータを読み出して前記変換バッファに格納する
ことを特徴とする請求項５記載の割り込み制御装置。
【請求項７】
前記テーブル手段は、さらに割り込み資源毎に割り込みレベルと前記第１タイプか第２タイプかを示す区分とを保持し、
前記起動手段は、発生した割り込みの割り込みレベルとテーブル手段に保持された区分とに基づいて第１タイプと第２タイプのいずれであるかを判別する
ことを特徴とする請求項１から６の何れかに記載の割り込み制御装置。
【請求項８】
前記起動手段は、発生した割り込みの割り込みレベルと所定レベルの優先順位を比較して、前記第１タイプと第２タイプのいずれであるかを判別する
ことを特徴とする請求項１から６の何れかに記載の割り込み制御装置。
【請求項９】
コンピュータシステムを制御するＯＳの一部として、割り込みを発生する割り込み資源からの割り込みを制御する割り込み制御方法であって、
アプリケーションから特定の割り込み資源とアドレス情報とを示す通知を受け付ける受付ステップと、
割り込み資源のうちＯＳが管理する第１タイプの割り込み資源に対応するアドレス情報を保持する管理テーブルに、受付手段によって受け付けられた通知に従ってＯＳが管理しない第２タイプの割り込み資源に対応するアドレス情報を追加する追加ステップと、
第１タイプの割り込み資源が発生した割り込みに対しては、管理テーブルのアドレス情報に従って第１タイプの割り込み資源に共通する管理処理を含む第１の制御処理を起動し、第２タイプの割り込み資源が発生した割り込みに対しては、管理テーブルのアドレス情報に基づいて前記管理処理を含まない第２の制御処理を起動する起動ステップと
を有することを特徴とする割り込み制御方法。
【請求項１０】
請求項９記載の割り込み制御方法をコンピュータに実行させる
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
コンピュータシステムを制御するＯＳの一部として、割り込みを発生する割り込み資源からの割り込みを制御する割り込み制御装置に関する。
【背景技術】
【０００２】
一般に、コンピュータシステムにおける割り込み制御は、ＯＳにおいて各割り込み資源からの割り込みを一元的に管理することで処理される。
図１０は、従来におけるコンピュータシステムにおける割り込み発生時に、ＯＳのカーネル空間からユーザープロセス空間への遷移関係を示す図である。同図のように、割り込みは、カーネル空間６０２内において、割り込みを受け付ける割り込み処理部からスケジューラによる割り込みのスケジュール処理の後、プロセス空間６０１内のユーザープロセスへ遷移する。
【０００３】
図１１は、従来のコンピュータシステムにおける割り込み制御装置の構成を示す図である。同図では、割り込みを発生する割り込み資源としての周辺デバイス、割り込みコントローラ、ＣＰＵ、ＯＳ、アプリケーションプロセスを含む階層別に示している。図１２は、図１１における処理の流れを各構成要素のレジスタ構成に着目して示す動作説明図である。図１１における動作を図１２を用いて、より具体的に説明する。
【０００４】
割り込みコントローラ（ＩＮＴＣ）５０２が、各種周辺デバイス（Ｉ／Ｏ装置）５０１ａ、５０１ｂ等からの割り込み発生を検出し、該当割り込み要因に対応する要因番号レジスタ５０２ａのフラグをセットする。当該割り込み要因がソフトウェア設定によりマスクされていなければ、割り込みコントローラ５０２はＣＰＵ５０３に割り込み発生を通知する。
【０００５】
ＣＰＵ５０３は、割り込みレベルに応じた割り込みベクタレジスタ５０３ａを有し、割り込みコントローラ５０３からの割り込み通知を受理した後、該当割り込み要因がアサインされている割り込みベクタレジスタから、割り込みベクタを読み出し、ＯＳが管理している割り込みエントリ関数５０５を実行する。この割り込みエントリ関数５０５を実行することにより、割り込み要因の判別や、ユーザの割り込みハンドラへ遷移する。その際、スケジューラ５０６は、他の割り込みや他のプロセスとの間でスケジュール調整を行い、調整後に割り込み要因に対応する割り込みハンドラ５０７ａまたは５０７ｂ等を起動し、割り込み要求に対応する処理を行う（または対応する処理を呼び出す）。
【０００６】
以上の動作により、従来の割り込み制御装置は一連の割り込み制御を行うことが一般的である。
ところで、一般的なＯＳは特定の割り込み資源だけをＯＳの管理外とする場合を想定しておらず、そうするには特別な機構が必要である。そのための特別な機構として特許文献１では、複数のＯＳと、ＯＳから独立した割り込み管理プログラムによる実現方法が開示されている。
【０００７】
特許文献１によれば、ＯＳから独立した割り込み管理プログラムが、一方のＯＳが管理する割り込み資源を横取りして他方のＯＳに振り分ける方法と、ＯＳの実行状態により割り込みハンドラを起動するタイミングを決定してそれぞれの割り込みハンドラを起動するタイミングを決定する方法による、割り込み制御方法が開示されている。この割り込み制御方法によれば、発生した外部割り込みを割り込み管理プログラムで一旦処理し、複数のＯＳに割り込み処理を振り分け、振り分けた先のＯＳで割り込み処理を実行することが可能である。また割り込み処理が複数のＯＳ間で多重化された場合も、割り込み管理プログラムで割り込み状態を管理することで、排他制御を可能としている。
【特許文献１】特開２００１−２１６１７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、従来の割り込み制御装置によれば、特定の割り込み資源だけをＯＳの管理外とする場合に、割り込みが発生してから割り込みに対応するアプリケーションが実行されるまでの応答性、つまりリアルタイム性を保証することができないという問題がある。
具体的には、オペレーティングシステム（ＯＳ）上の特定の割り込み資源を、他のプログラムにより分離、独立して管理する場合には、以下のような問題がある。
【０００９】
（１）特許文献１では、割り込み管理プログラムが、割り込み処理のＯＳ間での多重化を調停するため、前記割り込み管理プログラムで割り込み状態を管理することが必須となる。例えば、図１２に示したスケジューラ５０６が特許文献１では、さらに複雑なスケジュール調整を行う割り込み管理プログラムに相当する。この割り込み管理プログラムを新規に実装して処理を実行することにより、従来ＯＳで実装されている割り込みエントリ関数に加えて割り込み状態の管理処理が増える分、リアルタイム性が悪くなる。
【００１０】
（２）特許文献１に関わらず、特定の割り込み要因に対応するユーザの割り込みハンドラ関数を、ＯＳのアドレス空間（カーネル空間）ではなくユーザープロセス空間に配置し、配置された割り込みハンドラ関数へ割り込み応答性を阻害することなく遷移する仕組みが従来存在しない。図１０に示したカーネル空間６０２からプロセス空間６０１へ遷移する過程において、スケジューラの応答性はＯＳ性能に依存する。汎用ＯＳでは、割り込み発生後にアプリケーションへ遷移するまでの時間保証がない、すなわちリアルタイム保証がないことが課題になる。
【００１１】
（３）特許文献１では、ＣＰＵの割り込み資源を複数のＯＳで分割管理するために、少なくとも２つ以上のＯＳが必要である構成であり、１つのＯＳとそのＯＳ上で動作するアプリケーションプログラム間で割り込み資源分割を行うケースが想定されていない。
上記の課題に鑑み本発明は、汎用ＯＳにおいて特定の割り込み資源からの割り込みに対してリアルタイム性を保証する割り込み制御装置、その制御方法およびプログラムを提供することを目的とする。特に、本発明は、組み込み機器に広く必要とされるリアルタイム性を汎用ＯＳ上で保証、実現する割り込み制御装置、その制御方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の割り込み制御装置は、コンピュータシステムを制御するＯＳとして、割り込みを発生する割り込み資源からの割り込みを制御する割り込み制御装置であって、割り込み資源のうちＯＳが管理する第１タイプの割り込み資源およびＯＳが管理しない第２タイプの割り込み資源のそれぞれに対応するアドレス情報を保持するテーブル手段と、第１タイプの割り込み資源が発生した割り込みに対しては、テーブル手段のアドレス情報に基づいて第１タイプの割り込み資源に共通する管理処理を含む第１の制御処理を起動し、第２タイプの割り込み資源が発生した割り込みに対しては、テーブル手段のアドレス情報に基づいて前記管理処理を含まない第２の制御処理を起動する起動手段とを備える。
【００１３】
この構成によれば、第１タイプの割り込み資源に対してはリアルタイム性には劣るものの汎用性の高い割り込み処理を起動し、第２タイプの割り込み資源に対しては割り込みにすばやく応答しリアルタイム性に優れた割り込み処理を起動することができる。
ここで、前記割り込み制御装置は、さらに、アプリケーションから特定の割り込み資源とアドレス情報とを示す通知を受け付ける受付手段を有し、前記テーブル手段は、受付手段によって受け付けられた通知に従って第２タイプの割り込み資源に対応するアドレス情報を保持する構成としてもよい。
【００１４】
この構成によれば、アプリケーションはリアルタイム性を必要とする任意の割り込み資源を第１タイプから第２タイプに自由に設定変更することができる。
ここで、前記起動手段は、前記第２の制御処理において、コンテキストの退避と、割り込みを発生した第２タイプの割り込み資源に対応する割り込み処理と、退避していたコンテキストの復帰とを順に実行する構成としてもよい。
【００１５】
ここで、前記起動手段は、前記第２の制御処理において前記コンテキスト退避の開始前に他の割り込み入力を禁止し、前記第２の制御処理が完了するまでに前記割り込み入力の禁止を解除する構成としてもよい。
この構成によれば、第２タイプの割り込み資源に対応する割り込み処理においてリアルタイム性を要する処理が完了するまでは他の割り込み入力を禁止するので、リアルタイム性をより確実に確保することができる。
【００１６】
ここで、前記割り込み制御手段は、さらに、仮想記憶用のページテーブルのうち実行中プロセスに対応するページデータをキャッシュする変換バッファと、前記起動手段は、前記第２の制御処理において前記割り込み処理実行前に当該割り込み処理に対応するページデータを保持するよう前記変換バッファを更新する更新手段とを備える構成としてもよい。
【００１７】
ここで、前記受付手段は、さらにアプリケーションから、第２タイプの割り込み資源に対応する割り込み処理のプロセスＩＤを示す通知を受け付け、前記更新手段は、受付手段によって受け付けられた通知に示されるプロセスＩＤに従って前記ページテーブルから前記ページデータを読み出して前記変換バッファに格納する構成としてもよい。
この構成によれば、仮想記憶用のいわゆるＴＬＢ（Translation Look aside Buffer）と呼ばれる変換バッファを更新するので、割り込み処理をプロセス空間に容易に配置することができる。
【００１８】
ここで、前記テーブル手段は、さらに割り込み資源毎に割り込みレベルと前記第１タイプか第２タイプかを示す区分とを保持し、前記起動手段は、発生した割り込みの割り込みレベルとテーブル手段に保持された区分とに基づいて第１タイプと第２タイプのいずれであるかを判別する構成としてもよい。
ここで、前記起動手段は、発生した割り込みの割り込みレベルと所定レベルの優先順位を比較して、前記第１タイプと第２タイプのいずれであるかを判別する構成としてもよい。
【００１９】
この構成によれば、任意の割り込みレベルを第１から第２タイプに変更し、あるいは、所定レベルよりも低い（または高い）割り込みレベルの割り込み資源を第２タイプに設定することができる。
【発明の効果】
【００２０】
以上説明したように、本発明の割り込み制御装置によれば、リアルタイム性には劣るものの汎用性の高い割り込み処理と、割り込みにすばやく応答しリアルタイム性に優れた割り込み処理とを混在させることができる。また、アプリケーションが指定する任意の割り込みレベルにおいて、第２タイプＯＳの管理処理を介さないでユーザー独自の割り込み処理を起動するので、制御方法の実現が可能である。
【００２１】
また、アプリケーションが管理する第２タイプの割り込み資源とＯＳで管理する第１タイプの割り込み資源との間の割り込み処理の排他制御については、調停機構を別途設ける必要がなく、調停機構自体による処理遅延も発生しないため、応答性を阻害することなく排他制御が可能である。
さらに、アプリケーションが管理する割り込み処理関数をカーネル空間とは別空間となるアプリケーションのユーザープロセス空間に実装することを可能としている。第２タイプの割り込み資源に対応する割り込み処理、つまり割り込み処理関数（ユーザープロセス空間）への遷移は、リアルタイム性を保証することができる。
【００２２】
また、本発明の割り込み制御方法およびプログラムについても上記と同様の手段、作用および効果を有する。
【発明を実施するための最良の形態】
【００２３】
（実施の形態１）
以下、本発明の割り込み制御方式の実施形態について、図面を参照しながら説明する。
＜割り込み制御装置の構成＞
図１は、本発明の実施の形態１における割り込み制御装置のシステム構成を示すブロック図である。同図では、アプリケーションと、ＯＳと、ＣＰＵと、割り込みコントローラと、外部デバイスと階層的に示している。図１１に示した従来のシステム構成と異なる点は、アプリケーションが自プロセスからＯＳに対してユーザーで管理したい割り込みレベル、すなわちＯＳの管理外とする割り込みレベルを通知する機構としてユーザ管理割り込み番号通知部１１２を備える点と、アプリケーションが準備する拡張割り込みエントリ関数１０８と呼ぶ関数アドレスを通知する機構として拡張割り込みエントリ関数通知部１１３を備える点と、ＯＳ内に前記アプリケーションが準備する拡張割り込み関数のアドレスの通知を受け取る割り込みベクタ更新部１１０を備える点とである。拡張割り込みエントリ関数１０８およびユーザハンドラ１０９はＯＳの一部としてではなくアプリケーションとして準備される。
【００２４】
図１に示した割り込み制御装置について、処理の流れを各構成要素のレジスタ構成に着目して示す図２を用いて、より具体的に説明する。
割り込みコントローラ１０２が、各種周辺デバイス（Ｉ／Ｏ装置）１０１ａ、１０１ｂ等からの割り込み発生を検出し、該当割り込み要因に対応する要因番号レジスタ１０２ａのフラグをセットする。当該割り込み要因がソフトウェア設定によりマスクされていなければ、割り込みコントローラ１０２はＣＰＵ１０３に割り込み発生を通知する。
【００２５】
ＣＰＵ５０３は、割り込みレベルに応じた割り込みベクタレジスタ１０３ａを有している。割り込みベクタレジスタ１０３ａは優先度の高い順にレベル０からレベルｎまでの割り込みレベルに対応するアドレスを保持する割り込みレベルレジスタを備える。
図２の例では、割り込みベクタレジスタ１０３ａにおいてレベル０からレベルｍまでの割り込みレベルレジスタは第１タイプの割り込み用であり、それぞれ共通割り込みエントリ関数１０５の先頭アドレスを保持しているものとする。また、レベルｍ＋１からレベルｎまでの割り込みベクタレジスタは第２タイプの割り込み用であり、それぞれ拡張割り込みエントリ関数１０８の先頭アドレスを保持しているものする。ここで、第１タイプの割り込みとは、従来技術と同様にＯＳによって共通の管理処理（主としてスケジューラ１０６のスケジュール処理）を経由して割り込み処理（ユーザの割り込みハンドラ１０７ａ、１０７ｂなど）が起動される汎用性に優れた割り込みをいう。第２タイプの割り込みとは、アプリケーションが管理する割り込みであって上記の管理処理を経由しないで割り込み処理（ユーザの割り込みハンドラ１０９ａ、１０９ｂなど）が起動されるリアルタイム性を保証される割り込みをいう。
【００２６】
割り込みコントローラ１０２からの割り込み通知を受理した後、該当割り込み要因がアサインされている割り込みベクタレジスタのアドレスに従って共通割り込みエントリ関数１０５、拡張割り込みエントリ関数１０８の何れかが呼び出される。同図の例では、第１タイプの割り込みである場合は、共通割り込みエントリ関数１０５が呼び出され、第２タイプの割り込みである場合は、拡張割り込みエントリ関数１０８が呼び出されることになる。
【００２７】
共通割り込みエントリ関数１０５の実行によって、割り込み要因の判別や、ユーザの割り込みハンドラ１０７ａや１０７ｂへの遷移がなされる。その際、スケジューラ１０６は、他の割り込みとの多重化調停や他のプロセスとのスケジュール調整を行い、調整後に割り込み要因に対応する割り込みハンドラ１０７ａまたは１０７ｂ等を起動する。割り込みハンドラ１０７ａや１０７ｂが呼び出されることにより割り込み要求に対応する割り込み処理が実行される（または呼び出される）。
【００２８】
一方、拡張共通割り込みエントリ関数１０８の実行によって、割り込み要因の判別や、ユーザの割り込みハンドラ１０７ａや１０７ｂへの遷移がなされる。その際、スケジューラ１０６の調整を経由しないので、割り込み要因に対応する割り込みハンドラ１０９ａや１０９ｂが遅延することなく起動される。割り込みハンドラ１０９ａや１０９ｂが呼び出されることにより割り込み要求に対応する割り込み処理が実行される（または呼び出される）。
【００２９】
＜アプリケーションからの登録処理＞
図３は、ユーザーアプリケーションで準備する割り込み処理ルーチン（つまり拡張割り込みエントリ関数１０８）のアドレスをＣＰＵ内の割り込みベクタレジスタへ登録する処理を示すフローチャートである。同図の手順は、リアルタイム性を必要とする任意の割り込み要因を第２タイプの割り込みに設定する場合に、例えばアプリケーションの起動時の最初に実行される。
【００３０】
まず、実行中のアプリケーション（以下単にアプリケーションと呼ぶ）は、ＯＳが管理する割り込み資源の中から任意のリアルタイム性を必要とする任意の割り込み資源の資源番号を選択する（Ｓ３０１）。図２の例では、割り込み資源として、割り込み要因（周辺デバイス名称又は番号）および割り込みレベルを選択する。この場合、割り込み要因と割り込みレベルが１対１または多対１で対応していれば、選択すべき資源番号は割り込みレベルだけでよい。アプリケーションは、さらに選択した割り込み資源の番号をＯＳに通知する（Ｓ３０２）。次に、前記選択した割り込みレベルに対応する割り込みベクタテーブルにアドレスを格納するための、拡張割り込みエントリ関数の名称（又は先頭アドレス）をＯＳに通知する（Ｓ３０３）。
【００３１】
この通知を受けてＯＳ中の割り込みベクタ更新部１１０は、通知された資源番号に対応するベクタレジスタがベクタテーブル中にあれば（Ｓ３０４）、さらにアプリケーションは、拡張割り込みエントリ関数の先頭アドレス（自プロセス内の任意のアドレスでもよい）をＯＳに通知する（Ｓ３０５）。ＯＳは通知されたアドレスをベクタテーブル内のベクタレジスタに格納し（Ｓ３０６）、本処理を終了する。もし、上記ステップＳ３０４において、アプリケーションから通知された資源番号に対応するベクタレジスタがベクタテーブル中になければエラー処理を行って（Ｓ３０７）本処理を終了する。
【００３２】
これによりアプリケーションが任意に選択した割り込み資源について、拡張割り込みエントリ関数のアドレスがベクタテーブルに格納されることになる。
＜割り込み制御処理＞
図４は、図３での登録処理後、実際に割り込みが発生した場合の割り込み制御処理を示すフローチャートである。
【００３３】
周辺Ｉ／Ｏなどの割り込み資源から割り込みが発生した場合、その割り込みを管理する割り込みコントローラ１０２が、該当割り込み要因の割り込み発生をＣＰＵへ通知する（Ｓ４０１）。ＣＰＵが該当割り込み要因がアサインされている割り込みベクタレジスタへ遷移する（Ｓ４０２）。通知された割り込み要因に応じた、ＣＰＵ内の割り込みベクタレジスタが選択される（Ｓ４０３）。
【００３４】
遷移先の割り込みベクタレジスタが、前記図３で登録された拡張割り込みエントリ関数１０８のアドレスである場合には、その拡張割り込みエントリ関数１０８が実行される（Ｓ４０５）。それ以外の割り込みベクタレジスタであれば、既存のＯＳの共通割り込みエントリ関数１０５が実行される（Ｓ４０４）。
この結果、図２に示したように、割り込みベクタレジスタ内に格納される割り込みエントリ関数のアドレスは、既存のＯＳで管理する共通割り込みエントリ関数１０５のアドレスだけでなく、アプリケーションで準備される拡張割り込みエントリ関数１０８のアドレスも存在しているので、アプリケーション独自にリアルタイム性のよい割り込み処理が能となる。図２の例では、割り込みレベルがレベルｍよりも大きい場合には、第２タイプの割り込みとして拡張割り込みエントリ関数１０８が起動される。
【００３５】
以上のようにして、割り込み制御装置は、第２タイプの割り込みに対して、任意の割り込みレベルにおいてＯＳ内部の管理処理を介さずに、ユーザー関数独自の割り込み処理を優れた応答性で起動することができる。
なお、図４に示した割り込み制御の代わりに図５に示す割り込み制御処理を実行してもよい。図５は、図４と比べて、ステップＳ４０５の代わりにステップＳ５０４〜Ｓ５０８を実行する点が異なっている。図４と同じステップ番号は同じなので説明を省略し、異なる点を中心に説明する。
【００３６】
Ｓ５０４〜Ｓ５０８の処理は、第２タイプの割り込みにより呼び出される拡張割り込みエントリ関数による割り込み処理、または拡張割り込みエントリ関数により呼び出される割り込み処理を示している。
まず、拡張割り込みエントリ関数の起動により、まず他の割り込み処理の入力を禁止する（Ｓ５０４）。この禁止は、割り込みコントローラ１０２のマスクレジスタの設定を変更することにより、マスカブルな割り込みの全部または一部でよい。次に、現在実行中のプロセスのコンテキスト（ＣＰＵの各種制御レジスタのデータなど）を退避し（Ｓ５０５）、割り込みを発生した資源に対応するユーザの割り込みハンドラ１０９ａ等を選択して実行し（Ｓ５０６）、ユーザの割り込みハンドラの終了後に退避したコンテキストを復帰し（Ｓ５０７）、割り込み入力の禁止を解除する（Ｓ５０８）。
【００３７】
この割り込み制御処理によれば、他の割り込み入力を禁止するので、より確実に割り込み処理を実行することが可能になる。その結果、リアルタイム性をより確実に保証することができる。なお、割り込み禁止およびその解除は、割り込み処理において必要とされるリアルタイム性に行うようにしてもよい。例えば、Ｓ５０４にて禁止した後、リアルタイム処理が完了した時点で解除してもよい。
【００３８】
このように、アプリケーションが管理する第２タイプの割り込みとＯＳで管理する第１タイプの割り込みの排他制御が可能である。図２の例では、第１タイプの割り込みと第２タイプの割り込みとの間の多重化の調停自体は、第１タイプと第２タイプとが割り込みレベルにより分割されているのでＯＳを介さずにＣＰＵが実現している。このため第１タイプの割り込みと第２タイプ割り込みを調停する機構を別途設ける必要がなく、第２タイプの割り込み処理に移行するのに処理遅延も発生しない。
【００３９】
また、図２では、発生した割り込みがレベルｍより上であるかそれ以下であるかによって、第１タイプか第２タイプかを区別する例を示したが、割り込みレベル個別に第１タイプか第２タイプかを設定する構成としてもよい。この場合に、割り込みレベル毎に第１タイプと第２タイプの何れかに任意に対応付ける管理テーブルの一例を図６に示す。
また、図６および図２において、図３に示した登録手順なしに、予めそれぞれの割り込みエントリ関数を登録するようにしてもよい。
【００４０】
（実施の形態２）
図７は、本発明の実施の形態２における割り込み制御装置のシステム構成を示すブロック図である。同図は、図１のシステム構成と比較して、アプリケーションが自プロセスのＩＤをＯＳに対して通知するプロセスＩＤ通知部１１４と、ＯＳ内に前記アプリケーションから通知されたプロセスＩＤに基づいてＣＰＵのＴＬＢを更新するＴＬＢ更新部１１７を備える点が主として異なっている。また、同図では、ＣＰＵ内に仮想記憶用の仮想アドレスと実アドレスとの対応表であるページテーブル１１５と、ページテーブル１１５から実行中のプロセスに対応するページデータを一時的にキャッシュするＴＬＢ１１６を備える点を明記している。
【００４１】
図７の割り込み制御装置において、アプリケーションが割り込みエントリ関数を登録する処理を、図８に示すフローチャートを用いて説明する。図８のフローチャートでは、図３に示したユーザーで準備する割り込み処理ルーチン（拡張割り込みエントリ関数）をＣＰＵ内の割り込みベクタレジスタへ登録する手順と、プロセスＩＤの通知手順とを示している。図３と同じ番号のステップは同じ処理内容なので説明を省略し、異なるステップを中心に説明する。
【００４２】
アプリケーションは、通知した資源番号に対応するベクタレジスタがベクタテーブル中にある場合（Ｓ３０４）、自プロセスのプロセスＩＤをＡＰＩ（Application Program Interface）を通じてＯＳから取得し（Ｓ８０１）、取得したプロセスＩＤをＯＳに通知する（Ｓ８０２）。この通知を受けたＯＳはＴＬＢ更新部１１７内に通知されたプロセスＩＤと割り込みレベルとを記憶する。
【００４３】
これにより、アプリケーションからＯＳへのプロセスＩＤの通知と、ＯＳ内のＴＬＢ更新部１１７でのプロセスＩＤの記憶とが完了する。
次に図９は、図８での登録処理後に実際に割り込みが発生した場合の割り込み制御処理を示すフローチャートである。図９は、図５に示した割り込み制御処理と比較して、ステップＳ５０５とＳ５０６の間にステップＳ９０１が追加されている点が異なっている。図５と同じ番号のステップは同じ処理内容なので説明を省略し、異なる点を中心に説明する。
【００４４】
拡張割り込みエントリ関数の実行において、コンテキストを退避（Ｓ５０５）した後、ＴＬＢ更新部１１７にＴＬＢの更新を指示し、この指示を受けたＴＬＢ更新部１１７は通知されたプロセスＩＤのページデータをページテーブルから読み出して、ＴＬＢ１１６に格納する（Ｓ９０１）。このようにＴＬＢ１１６をプロセスＩＤに基づいて更新することにより、ユーザープロセス空間アドレスが参照可能となる。
【００４５】
以上により、アプリケーションが管理する第２タイプの割り込みに対応する割り込み処理関数をカーネル空間とは別空間となるアプリケーションのユーザープロセス空間に実装することが可能となる。
また、割り込み発生後、拡張割り込みエントリ処理（カーネル空間）からアプリケーションが管理する割り込み処理関数（ユーザープロセス空間）へ遷移するが、カーネル内のスケジューラ１０６を通らないため、割り込み応答性を阻害することがない。
【００４６】
なお本発明は、上述した各実施例に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することができる。
【産業上の利用可能性】
【００４７】
本発明は、コンピュータシステムを制御するＯＳの一部として、割り込みを発生する割り込み資源からの割り込みを制御する割り込み制御装置に適し、特に、コンピュータシステム上の割り込み資源を、ＯＳとアプリケーションとが別々にそれぞれの割り込みを管理する割り込み制御装置、割り込み制御方法、およびプログラムに適している。
【図面の簡単な説明】
【００４８】
【図１】実施の形態１における割り込み制御装置の構成を示すブロック図である。
【図２】レジスタ構成に着目して処理の流れを示す動作説明図である。
【図３】拡張割り込みエントリ関数を登録する処理を示すフローチャートである。
【図４】割り込み制御処理を示すフローチャートである。
【図５】他の割り込み制御処理を示すフローチャートである。
【図６】割り込みレベル毎に第１タイプと第２タイプの何れかを対応付ける管理テーブル例を示す図である。
【図７】実施の形態２における割り込み制御装置の構成を示すブロック図である。
【図８】拡張割り込みエントリ関数を登録する処理を示すフローチャートである。
【図９】割り込み制御処理を示すフローチャートである。
【図１０】従来のＯＳのカーネル空間からユーザープロセス空間への割り込み制御の遷移関係を示す図である。
【図１１】従来のコンピュータシステムにおける割り込み制御装置の構成を示す図である。
【図１２】図１１における処理の流れを各構成要素のレジスタ構成に着目して示す動作説明図である。
【符号の説明】
【００４９】
１０２    割り込みコントローラ
１０２ａ  割り込み要因番号レジスタ
１０３    ＣＰＵ
１０３ａ  割り込みベクタレジスタ
１０５    共通割り込みエントリ関数
１０６    スケジューラ
１０７  割り込みハンドラ
１０８    拡張割り込みエントリ関数
１０９    ユーザ割り込みハンドラ
１１０    割り込みベクタ更新部
１１２    ユーザ管理割り込み番号通知部
１１３    拡張割り込みエントリ関数通知部
１１４    プロセスＩＤ通知部
１１５    ページテーブル
１１６    ＴＬＢ
１１７    ＴＬＢ更新部
【図１】
2005190207.tif 000003
【図２】
2005190207.tif 000004
【図３】
2005190207.tif 000005
【図４】
2005190207.tif 000006
【図５】
2005190207.tif 000007
【図６】
2005190207.tif 000008
【図７】
2005190207.tif 000009
【図８】
2005190207.tif 000010
【図９】
2005190207.tif 000011
【図１０】
2005190207.tif 000012
【図１１】
2005190207.tif 000013
【図１２】
2005190207.tif 000014