(57)【要約】  本発明は、コンピュータシステム（１０２）において割込みを処理するための割込み処理システム（１００）を提供する。割込み処理システムは、コンピュータシステム（１０２）のユーザ空間（１１２）で割込みを取り込んで処理する。本発明は、また、あるプラットフォームから別のプラットフォームへのユーザアプリケーションの移植時に、ユーザ空間（１１２）での割込み処理を容易にする割込み登録方法も提供する。
2020021745.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムが、第１のプラットフォームで作成された割込み処理プログラムを、第２のプラットフォームで実行する割込み処理方法であって、
前記コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを、前記コンピュータシステムが備えるメモリに格納するステップと、
前記入出力デバイスに対応するユーザ空間入出力デバイス番号を、前記割込み番号に基づいて、決定するステップと、
前記決定されたユーザ空間入出力デバイス番号に基づいて、前記入出力デバイスのメモリ位置を決定するステップと、
前記決定されたメモリ位置に基づいて、読み出しのために前記入出力デバイスを起動するステップと、
前記入出力デバイスに対応するスレッドを作成するステップと、
前記入出力デバイスによって生成された割込みに対応する割込み信号を前記入出力デバイスから受け取るために前記スレッドを待機状態にするステップと、
前記入出力デバイスから前記割込み信号を受け取るステップと、
前記割込み信号の受け取りに応答して、前記メモリ内のカーネル空間で前記割込みサービスルーチンを実行するステップと、
前記割込みサービスルーチンに基づいて、前記スレッドを前記待機状態から再開するステップと、
前記割込み信号に対応するユーザ定義関数を前記メモリ内のユーザ空間で実行するステップと
を含むことを特徴とする割込み処理方法。
【請求項２】
前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記入出力デバイスから別の割込み信号を受け取るために前記スレッドを前記待機状態にするステップをさらに含む、請求項１に記載の割込み処理方法。
【請求項３】
前記入出力デバイスから前記割込み信号を受け取った後に、割込みイベントカウンタをインクリメントするステップと、
前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記割込みイベントカウンタをリセットするステップと
をさらに含む、請求項１に記載の割込み処理方法。
【請求項４】
割込みごとに別個のスレッドを作成するステップをさらに含む、請求項１に記載の割込み処理方法。
【請求項５】
前記入出力デバイスから前記割込み信号を受け取る前記ステップは、割込みコントローラを介して前記入出力デバイスに対応する前記割込み信号を受け取るステップを含む、請求項１に記載の割込み処理方法。
【請求項６】
前記スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する、請求項１に記載の割込み処理方法。
【請求項７】
ユーザ空間とカーネル空間とを有するメモリと、前記メモリに接続された演算装置と、を備えたコンピュータシステムであって、
前記演算装置は、
前記コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを前記メモリに格納し、
前記入出力デバイスに対応するユーザ空間入出力デバイス番号を前記割込み番号に基づいて決定し、
前記決定されたユーザ空間入出力デバイス番号に基づいて、前記入出力デバイスのメモリ位置を決定し、
前記決定されたメモリ位置に基づいて、読み出しのために前記入出力デバイスを起動し、
前記入出力デバイスに対応するスレッドを作成し、
前記入出力デバイスによって生成された割込みに対応する割込み信号を前記入出力デバイスから受け取るために前記スレッドを待機状態にし、
前記入出力デバイスから前記割込み信号を受け取り、
前記割込み信号の受け取りに応答して、前記カーネル空間で前記割込みサービスルーチンを実行し、
前記割込みサービスルーチンに基づいて前記スレッドを待機状態から再開し、
前記割込み信号に対応するユーザ定義関数を前記ユーザ空間で実行する
ように構成されている、ことを特徴とするコンピュータシステム。
【請求項８】
前記演算装置は、前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記入出力デバイスから別の割込み信号を受け取るために前記スレッドを前記待機状態にするようにさらに構成されている、請求項７に記載のコンピュータシステム。
【請求項９】
前記演算装置は、
前記入出力デバイスから前記割込み信号を受け取った後に、割込みイベントカウンタをインクリメントし、
前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記割込みイベントカウンタをリセットする
ようにさらに構成されている、請求項７に記載のコンピュータシステム。
【請求項１０】
前記演算装置は、割込みごとに別個のスレッドを作成するようにさらに構成される、請求項７に記載のコンピュータシステム。
【請求項１１】
前記割込み信号は、割込みコントローラを介して前記入出力デバイスから受け取られる、請求項７に記載のコンピュータシステム。
【請求項１２】
前記スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する、請求項７に記載のコンピュータシステム。
【請求項１３】
演算装置を備えたコンピュータシステムに、第１のプラットフォームで作成された割込み処理プログラムを、第２のプラットフォームで実行させるためのプログラム製品であって、
前記コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを、前記演算装置に接続されたメモリに格納する動作と、
前記入出力デバイスに対応するユーザ空間入出力デバイス番号を、前記割込み番号に基づいて、決定する動作と、
前記決定されたユーザ空間入出力デバイス番号に基づいて前記入出力デバイスのメモリ位置を決定する動作と、
前記決定されたメモリ位置に基づいて、読み出しのために前記入出力デバイスを起動する動作と、
前記入出力デバイスに対応するスレッドを作成する動作と、
前記入出力デバイスによって生成された割込みに対応する割込み信号を前記入出力デバイスから受け取るために前記スレッドを待機状態にする動作と、
前記入出力デバイスから前記割込み信号を受け取る動作と、
前記割込み信号の受け取りに応答して、前記メモリ内のカーネル空間で前記割込みサービスルーチンを実行する動作と、
前記割込みサービスルーチンに基づいて待機状態から前記スレッドを再開する動作と、
前記割込み信号に対応するユーザ定義関数を前記メモリ内のユーザ空間で実行する動作と、
を前記演算装置に実行させる、ことを特徴とするプログラム製品。
【請求項１４】
前記プログラム製品が前記演算装置に実行させる動作は、前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記入出力デバイスから別の割込み信号を受け取るために前記スレッドを前記待機状態にする動作をさらに含む、請求項１３に記載のプログラム製品。
【請求項１５】
前記プログラム製品が前記演算装置に実行させる動作は、割込みごとに別個のスレッドを作成する動作をさらに含む、請求項１３に記載のプログラム製品。
【請求項１６】
前記プログラム製品が前記演算装置に実行させる動作は、
前記入出力デバイスから前記割込み信号を受け取った後に割込みイベントカウンタをインクリメントする動作と、
前記割込み信号に対応する前記ユーザ定義関数を実行した後に割込みイベントカウンタをリセットする動作と
をさらに含む、請求項１３に記載のプログラム製品。
【請求項１７】
前記入出力デバイスから前記割込み信号を受け取る前記動作は、割込みコントローラを介して、前記入出力デバイスに対応する前記割込み信号を受け取る動作を含む、請求項１３に記載のプログラム製品。
【請求項１８】
前記スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する、請求項１３に記載のプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータシステムに関し、詳しくは、コンピュータシステムで割込みを処理する技術に関する。
【背景技術】
【０００２】
オペレーティングシステムは、ソフトウェアアプリケーションとコンピュータシステムのハードウェアとの間の仲介役として働くコンピュータプログラムである。コンピュータシステムは、オペレーティングシステムと、ソフトウェアアプリケーションと、およびユーザデータとを格納するメモリを備えている。メモリは、２つの部分、すなわち、カーネル空間とユーザ空間とに分かれている。カーネル空間は、オペレーティングシステムの中核であるカーネルが実行されるメモリ位置の集合である。ユーザ空間は、ソフトウェアアプリケーションなどのユーザプロセスが実行されるメモリ位置の集合である。カーネルは、ユーザプロセス同士の間の干渉を防ぐために、ユーザプロセスの実行を管理する。カーネル空間は、システムコールを使用した場合にのみユーザプロセスからアクセスできる。システムコールは、呼び出された関数をカーネル空間でコンピュータシステムに実行させる、ユーザプロセスが行う呼出しである。【０００３】
またコンピュータシステムは、入出力、ネットワーキング、通信などといった様々な機能を果たす複数のハードウェアデバイスも含む。ハードウェアデバイスは、割込みコントローラを介してプロセッサに接続可能である。ハードウェアデバイスでイベントが発生すると、ハードウェアデバイスは、割込みコントローラを介してプロセッサに割込み信号を送る。プロセッサは、割込みを処理するために、現在の命令の実行を中断する。プロセッサは、オペレーティングシステムに割込みが発生したことを通知し、オペレーティングシステムは、当該割込み用に定義された対応する割込みサービスルーチン（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ、ＩＳＲ）に従って、この割込みを処理する。ＩＳＲは、「割込みハンドラ」としても知られており、割込みがトリガされたときに実行される命令セットである。ＩＳＲは、オペレーティングシステムのユーザ定義関数またはビルトイン関数とすることができる。【０００４】
例えば、Ｌｉｎｕｘ（登録商標）オペレーティングシステム環境では、割込みハンドラはカーネル空間内で実行される。割込みサービスルーチンをユーザ空間で実行することが望ましいが、カーネル空間からユーザ空間に割込みを伝えることが難しいために、割込みサービスルーチンをユーザ空間で実行することはきわめて難しく、そのために大量のリソースが消費され、コンピュータシステムの効率が低下する。【０００５】
特許文献１に開示されているように、カーネル空間からユーザ空間に割込みを伝える従来の方法では、割込みはハードウェアデバイスから受け取られ、イベントキューに送られる。この場合、ＩＳＲは、イベントキューの可用性を求める。イベントキューが使用可能になると、ＩＳＲはイベントキューのロックを取得し、割込みチャネルを識別するイベントをイベントキューの末尾に配置する。その後、ＩＳＲはイベントキューのロックを解除し、その時点でＩＳＲは終了しうる。さらに、イベントがイベントキューの先頭に達すると、ユーザ・ハンドラ・スレッドは、イベントキューの先頭からイベントをデキューし、元の割込みを再構築し、この割込みを割込み処理ハンドラに送る。その後、割込み処理ハンドラは、その割込みを、あたかもカーネル空間で直接動作しているＩＳＲであるかのように処理する。しかし、この方法では、ＩＳＲを２つのプロセスに分割する必要がある。これにより、コンピュータシステムの効率が低下するとともに、カーネル空間でイベントデータを取り込んでユーザ空間に移す際に発生する待ち時間および性能オーバーヘッドが増加する。さらに、この方法では、カーネル空間イベント・キャプチャリング・コードをカーネル空間に書き込み、対応するイベントデータ処理コードをユーザ空間に書き込む必要がある。これにより、割込み処理プロセスが更に複雑になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第９３７８０４７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、コンピュータシステムで性能オーバーヘッドを低減するとともに、待ち時間を低減し、オペレーティングシステムのユーザ空間で割込みを効率的に処理するシステムおよび方法が求められている。
【課題を解決するための手段】
【０００８】
本発明の概要は、割込み処理システムおよびその方法に関連した概念を導入している。この概要は、本発明の本質的な特徴を特定するものでもなく、本発明の範囲を決定または限定するものでもない。【０００９】
本発明の一態様では、コンピュータシステムが、第１のプラットフォームで作成された割込み処理プログラムを、第２のプラットフォームで実行する割込みを処理する方法が提供される。この方法は、コンピュータシステムが備えるメモリに、割込み番号と対応する割込みサービスルーチン（ＩＳＲ）とを格納するステップを含む。割込み番号は、コンピュータシステムに接続された入出力（Ｉ／Ｏ）デバイスに対応する。この方法は、さらに、決定されたユーザ空間入出力デバイス番号に基づいて、入出力デバイスのメモリ位置を決定するステップと、決定されたメモリ位置に基づいて、読み出しのために入出力デバイスを起動するステップと、入出力デバイスに対応するスレッドを作成するステップと、を含む。さらに、この方法は、入出力デバイスによって生成された割込みに対応する割込み信号を入出力デバイスから受け取るためにスレッドを待機状態にするステップと、入出力デバイスから割込み信号を受け取るステップと、割込み信号の受け取りに応答して、メモリ内のカーネル空間で割込みサービスルーチンを実行するステップと、割込みサービスルーチンに基づいて、スレッドを待機状態から再開するステップと、割込み信号に対応するユーザ定義関数をメモリ内のユーザ空間で実行するステップと、を含む。【００１０】
本発明の別の態様では、ユーザ空間とカーネル空間とを有するメモリと、メモリに接続された演算装置と、を備えたコンピュータシステムが提供される。演算装置は、コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとをメモリに格納し、入出力デバイスに対応するユーザ空間入出力デバイス番号を割込み番号に基づいて決定し、決定されたユーザ空間入出力デバイス番号に基づいて、入出力デバイスのメモリ位置を決定し、決定されたメモリ位置に基づいて、読み出しのために入出力デバイスを起動する。また、演算装置は、入出力デバイスに対応するスレッドを作成し、入出力デバイスによって生成された割込みに対応する割込み信号を入出力デバイスから受け取るためにスレッドを待機状態にし、入出力デバイスから割込み信号を受け取り、割込み信号の受け取りに応答して、カーネル空間で割込みサービスルーチンを実行し、割込みサービスルーチンに基づいてスレッドを待機状態から再開し、割込み信号に対応するユーザ定義関数をユーザ空間で実行する。【００１１】
本発明のさらに別の態様では、演算装置を備えたコンピュータシステムに、第１のプラットフォームで作成された割込み処理プログラムを、第２のプラットフォームで実行させるためのプログラム製品が提供される。このプログラム製品は、コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを、演算装置に接続されたメモリに格納する動作と、入出力デバイスに対応するユーザ空間入出力デバイス番号を、割込み番号に基づいて、決定する動作と、を演算装置に実行させる。さらに、このプログラム製品は、決定されたユーザ空間入出力デバイス番号に基づいて入出力デバイスのメモリ位置を決定する動作と、決定されたメモリ位置に基づいて、読み出しのために入出力デバイスを起動する動作と、入出力デバイスに対応するスレッドを作成する動作と、入出力デバイスによって生成された割込みに対応する割込み信号を入出力デバイスから受け取るためにスレッドを待機状態にする動作と、入出力デバイスから割込み信号を受け取る動作と、割込み信号の受け取りに応答して、メモリ内のカーネル空間で割込みサービスルーチンを実行する動作と、割込みサービスルーチンに基づいて待機状態からスレッドを再開する動作と、割込み信号に対応するユーザ定義関数をメモリ内のユーザ空間で実行する動作と、を演算装置に実行させる。【００１２】
例示的な一態様では、Ｉ／Ｏデバイスから割込み信号を受け取った後に割込みイベントカウンタがインクリメントされる。割込みイベントカウンタは、割込み信号に対応するユーザ定義関数を実行した後にリセットされる。【００１３】
別の例示的な態様では、割込みごとに別個のスレッドが作成される。【００１４】
別の例示的な態様では、Ｉ／Ｏデバイスに対応する割込み信号は、割込みコントローラを介して受け取られる。【００１５】
別の例示的な態様では、スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する。
【発明の効果】
【００１６】
本発明にかかる割込み処理方法は、コンピュータシステムで性能オーバーヘッドを低減するとともに、待ち時間を低減し、オペレーティングシステムのユーザ空間で割込みを効率的に処理することができるという効果を奏する。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態におけるコンピュータ実装割込み処理システムを示す概略ブロック図
【図２】本発明の実施形態におけるコンピュータシステムで割込みを処理する方法を示すフローチャート
【発明を実施するための形態】
【００１８】
添付の図を参照して詳細な説明を行う。図面全体にわたって類似した特徴およびモジュールを参照するのに同じ番号が用いられる。
【００１９】
本願のブロック図が本発明の原理を具体化したシステムの概念を示す図であることは、当業者には理解されよう。同様に、フローチャートなどは、コンピュータ読み取り可能な媒体において実質的に表される各種のプロセスを示しており、当該プロセスは、コンピュータまたはプロセッサが明示されているか否かにかかわらず、コンピュータまたはプロセッサによって実行されることも理解されたい。
【００２０】
本発明の様々な態様は、コンピュータシステムおよび割込みを処理する方法である割込み処理方法を提供する。
【００２１】
以下では、説明の便宜上、本発明を理解するための詳細を示す。しかしながら、当業者には明らかではあるが、本発明が以下の詳細が無くても実施可能である。
【００２２】
以下で説明する実施形態を含む本発明の実施形態を多数のシステムに組み込むことが可能であることは、当業者の認識事項である。しかしながら、これらのシステムおよび方法は、本明細書に記載される特定の実施形態に限定されるものではない。本発明を不明瞭にしないために、図示される構造およびデバイスは、本発明の一例である実施形態を示している。
【００２３】
さらに、図面の構成要素間および／またはモジュール間の接続は、直接接続だけに限定されることを意図していない。これらの構成要素およびモジュールは、中間の構成要素およびモジュールによって変更、再フォーマット、またはそれ以外の方法で変更されてもよい。
【００２４】
本開示において、「１つの実施形態」または「一実施形態」とは、当該実施形態に関連して記載される特定の特徴、構造、特性、または機能が本発明の少なくとも１つの実施形態に含まれることを意味する。本明細書の様々な箇所において用いられている「１つの実施形態において」という文言は、必ずしも全て同じ実施形態を指しているとは限らない。
【００２５】
本発明は、コンピュータシステムおよび割込み処理方法を提供する。
【００２６】
次に図１を参照すると、本発明の一実施形態によるコンピュータ実装割込み処理システム１００が示されている。コンピュータ実装割込み処理システム（以下、割込み処理システムともいう）１００は、コンピュータシステム１０２と、第１および第２のＩ／Ｏデバイス１０４ａおよび１０４ｂを含む複数の入出力（Ｉ／Ｏ）デバイス１０４（単数として「Ｉ／Ｏデバイス１０４」とも称する）と、割込みコントローラ１０６とを含む。コンピュータシステム１０２は、プロセッサ１０８とメモリ１１０とを含む。メモリ１１０は、ユーザ空間１１２とカーネル空間１１４とを含む。
【００２７】
当業者には明白なことではあるが、コンピュータシステム１０２は、プロセッサ１０８及びメモリ１１０に限定されず、他の電子部品を備えることができるが、これらの電子部品は、実施の形態を簡潔に示すために図１には示されていない。
【００２８】
Ｉ／Ｏデバイス１０４は、コンピュータシステム１０２に接続された周辺デバイスを含む。Ｉ／Ｏデバイス１０４の例としては、キーボードなどの入力デバイスおよび表示デバイスなどの出力デバイスが含まれる。一例として、第１のＩ／Ｏデバイス１０４ａは、コンピュータシステム１０２に直接接続されており、第２のＩ／Ｏシステム１０４ｂは、割込みコントローラ１０６を介してコンピュータシステム１０２に接続されている。したがって、当業者には明白なことではあるが、本発明の割込み処理システム１００は、コンピュータシステム１０２とＩ／Ｏデバイス１０４とを様々な形態で直接および間接的に接続した場合でも等しく動作する。さらに、本発明の割込み処理システム１００は、割込みコントローラ１０６の存在の有無にかかわらず等しく動作する。
【００２９】
各Ｉ／Ｏデバイス１０４は、コンピュータシステム１０２によって処理されなければならない割込みを生成する。よって、各Ｉ／Ｏデバイス１０４は、対応する割込み信号を生成し、その割込み信号をコンピュータシステム１０２に送る。各割込みは、対応する割込み番号を使用して識別される。
【００３０】
コンピュータシステム１０２は、第１のプラットフォームで作成された第１のプログラムを、第２のプラットフォームで実行可能な第２のプログラムに変換する。第１のプラットフォームで作成される第１のプログラムの例としては、ＶｘＷｏｒｋｓ（登録商標）などのプラットフォームで作成されたユーザアプリケーションが含まれる。第２のプラットフォームで実行可能な第２のプログラムの例としては、Ｌｉｎｕｘなどのオペレーティングシステム上で実行可能なユーザアプリケーションが含まれる。別の例として、第１のプログラムと第２のプログラムとは、プロセッサ１０８によって実行可能な異なる種類のユーザアプリケーションである。
【００３１】
コンピュータシステム１０２は、第１のプログラムを第２のプログラムに変換するエミュレーション層を含む。エミュレーション層は、割込み登録アプリケーション・プログラミング・インターフェース（ＡＰＩ）、オペレーティング・システム（ＯＳ）・ライブラリ、およびＯＳ機構を含む。ＯＳライブラリは、コンピュータシステム１０２で割込みを処理するための従来の組み込み関数を提供する。
【００３２】
本発明の一実施形態では、新規の割込み登録ＡＰＩが提供される。割込み登録ＡＰＩの開始時に、Ｉ／Ｏデバイス１０４の割込み信号に対応する割込み番号は、メモリ１１０に格納される。さらに、割込み信号に対応する割込みサービスルーチン（ＩＳＲ）ハンドラもメモリ１１０に格納される。例示的な一実施形態では、メモリ１１０は、割込み信号に対応する割込み番号と、割込み番号に対応するＩＳＲとを含むルックアップテーブルを格納する。
【００３３】
演算装置であるプロセッサ１０８は、割込み番号に対応するユーザ空間入出力（ＵＩＯ）デバイス番号（以下、ＵＩＯ番号ともいう）を決定し、ＵＩＯ番号をメモリ１１０に格納する。例示的な一実施形態では、プロセッサ１０８は、メモリ１１０に格納されたルックアップテーブルにＵＩＯ番号を格納する。その後、プロセッサ１０８は、ＵＩＯ番号に基づいて、Ｉ／Ｏデバイス１０４のメモリ位置を決定する。プロセッサ１０８は、メモリ位置に基づいて、読み出しのためにＩ／Ｏデバイス１０４を起動する。
【００３４】
プロセッサ１０８は、Ｉ／Ｏデバイス１０４ごとに別個のスレッドを作成する。すなわち、あらゆるＩ／Ｏデバイス１０４は、当該Ｉ／Ｏデバイス１０４によって生成された割込み信号を受け取るための専用スレッドを有する。プロセッサ１０８は、対応するＩ／Ｏデバイス１０４から割込み信号を受け取るためにスレッドを待機状態にする。
【００３５】
コンピュータシステム１０２がＩ／Ｏデバイス１０４から割込み信号を受け取ると、プロセッサ１０８は、カーネル空間１１４で、スレッドに対応するＩＳＲを実行する。プロセッサ１０８は、また、Ｉ／Ｏデバイス１０４から割込み信号を受け取った後に、イベントカウンタをインクリメントする。割込み信号に対応するスレッドは、ＩＳＲの実行中にプロセッサ１０８によって待機状態から再開される。スレッドが待機状態から再開された後、スレッドはプロセッサ１０８にユーザ定義関数を実行させる。ユーザ定義関数は、割込み信号に対応しており、ユーザ空間１１２に格納され、当該ユーザ空間で実行される。ユーザ定義関数の実行が完了すると、プロセッサ１０８は、Ｉ／Ｏデバイス１０４から次の割込み信号を受け取るためにスレッドを待機状態にする。プロセッサ１０８は、また、ユーザ定義関数を実行した後にイベントカウンタをリセットする。イベントカウンタは、コンピュータシステム１０２をデバッグしている間に逃したイベントを追跡するのに使用される。
【００３６】
一実施形態では、本発明のコンピュータシステム１０２は、Ｉ／Ｏデバイス１０４から割込み信号を受け取った後のＩＳＲ関数の即時実行を保証する優先度ブースティング機構を実装する。
【００３７】
一般的に、リアルタイム・コンピュータ・システムは、複数のタスクを実行するための先入れ先出し（Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔ、ＦＩＦＯ）スケジューラを実装している。各タスクには、例えば０〜９９の範囲の優先度が割り当てられ、０は最低の優先度であり、９９は最高の優先度である。よって、コンピュータシステムは、優先度が０であるタスクの前に優先度が９９のタスクを実行する。コンピュータシステムはまた、ユーザが任意のタスクに０〜９９の優先度を割り当てることも可能にする。
【００３８】
本発明のコンピュータシステム１０２の優先度ブースティング機構は、割込み信号に対応するスレッドに１００の優先度を与えることによって、前段で説明した優先方式に優る技術的な改良を提供する。割込み信号に対応するスレッドには１００の優先度が割り振られるので、ＩＳＲ関数は即時に、待ち時間なしで実行される。よって、優先度ブースティング機構は、コンピュータシステム１０２の効率を大幅に改善する。
【００３９】
次に図２を参照すると、本発明の一実施形態による割込みを処理する方法を例示するフローチャートが示されている。以下でこのフローチャート２００を図１のコンピュータ実装割込み処理システム１００に関連して説明する。
【００４０】
ステップ２０２で、第１のプラットフォームで作成された第１のプログラムがコンピュータシステム１０２に提供される。
【００４１】
ステップ２０４で、第１のプログラムは、第２のプラットフォームで実行可能な第２のプログラムに変換される。
【００４２】
ステップ２０６で、プロセッサ１０８は、Ｉ／Ｏデバイス１０４によって生成された割込みに対応する割込み番号およびＩＳＲをメモリ１１０に格納する。
【００４３】
ステップ２０８で、プロセッサ１０８は、割込み番号に対応するＵＩＯデバイス番号を決定する。
【００４４】
ステップ２１０で、プロセッサ１０８は、ＵＩＯ番号に基づいて、Ｉ／Ｏデバイス１０４のメモリ位置を決定する。
【００４５】
ステップ２１２で、プロセッサ１０８は、読み出しのためにＩ／Ｏデバイス１０４を起動する。
【００４６】
ステップ２１４で、プロセッサ１０８は、Ｉ／Ｏデバイス１０４に対応するスレッドを作成する。
【００４７】
ステップ２１６で、プロセッサ１０８は、Ｉ／Ｏデバイス１０４に対応するスレッドの優先度を復元する。
【００４８】
ステップ２１８で、プロセッサ１０８は、Ｉ／Ｏデバイス１０４から、対応する割込み信号を受け取るためにスレッドを待機状態にする。
【００４９】
ステップ２２０で、コンピュータシステム１０２は、Ｉ／Ｏデバイス１０４から割込み信号を受け取る。
【００５０】
ステップ２２２で、プロセッサ１０８は、受け取った割込み信号に対応するＩＳＲをカーネル空間１１４で実行する。
【００５１】
ステップ２２４で、プロセッサ１０８は、受け取った割込み信号に対応するスレッドの優先度を上げる。
【００５２】
ステップ２２６で、プロセッサ１０８はスレッドを待機状態から再開する。
【００５３】
ステップ２２８で、プロセッサ１０８は、受け取った割込み信号に対応するユーザ定義関数をユーザ空間１１２で実行する。
【００５４】
動作に際して、図１に示すコンピュータ実装割込み処理システム１００および図２に示された割込み処理方法（２０２〜２２８）は、第１のプラットフォーム（例えば、ＶｘＷｏｒｋｓ）で作成された第１のプログラムを、第２のプラットフォーム（例えば、Ｌｉｎｕｘ）で実行可能な第２のプログラムに変換することを含む。さらに、本発明の新規の割込み登録ＡＰＩは、Ｉ／Ｏデバイス１０４の割込み信号に対応する割込み番号をメモリ１１０に格納する。プロセッサ１０８は、割込み番号に対応するＵＩＯ番号を決定し、ＵＩＯ番号をメモリ１１０に格納する。その後、プロセッサ１０８は、ＵＩＯ番号に基づいてＩ／Ｏデバイス１０４のメモリ位置を決定し、プロセッサ１０８は、読み出しのためにＩ／Ｏデバイス１０４を起動する。プロセッサ１０８は、Ｉ／Ｏデバイス１０４のスレッドを作成し、対応するＩ／Ｏデバイス１０４から割込み信号を受け取るためにスレッドを待機状態にする。
【００５５】
コンピュータシステム１０２がＩ／Ｏデバイス１０４から割込み信号を受け取ると、プロセッサ１０８は、カーネル空間１１４で、スレッドに対応するＩＳＲを実行し、イベントカウンタをインクリメントする。その後、割込み信号に対応するスレッドは、ＩＳＲの実行中にプロセッサ１０８によって待機状態から再開される。スレッドが待機状態から再開された後、スレッドはプロセッサ１０８に、ユーザ定義関数を実行させる。ユーザ定義関数は、割込み信号に対応しており、ユーザ空間１１２に格納され、優先度が上げられた状態でユーザ空間で実行される。その後、プロセッサ１０８は、Ｉ／Ｏデバイス１０４から次の割込み信号を受け取るためにスレッドを待機状態にし、イベントカウンタをリセットし、優先度を復元する。
【００５６】
本発明の割込み登録ＡＰＩは、カーネル空間ではなくユーザ空間におけるユーザ定義関数の実行を容易にするという効果を奏する。したがって、第１のプログラムが第２のプログラムに変換された後であっても、割込みはカーネル空間ではなくユーザ空間で処理される。これにより、ユーザアプリケーションの割込み呼出しの変更を必要とせずに、ＶｘＷｏｒｋｓなどのプラットフォームで作成されたユーザアプリケーションをＬｉｎｕｘなどのプラットフォームに直接移植することが容易になる。
【００５７】
本発明の割込み登録ＡＰＩは、メモリマッピングによる周辺デバイスのユーザ空間へのマッピングを容易にする。これにより、本発明の割込み登録ＡＰＩは、割込みの発生などのイベントデータをカーネル空間ではなくユーザ空間に直接取り込むことができる。これは、イベントデータをカーネル空間で取り込み、次いでデータをユーザ空間に移す従来の割込み処理システムに優る非常に大きな技術的な改良である。よって、カーネル空間からユーザ空間へのイベントデータの移行に起因して従来の割込み処理システムで生じていた待ち時間が本発明の割込み登録ＡＰＩでは回避されるので、コンピュータシステムの効率が向上するとともに、ユーザ空間において高度な割込み処理が実現される。イベントデータはユーザ空間で取り込まれ、ＩＳＲ関数もユーザ空間で格納されているとともにユーザ空間で実装されるため、カーネルがアップグレードされる場合でさえもユーザがユーザ定義関数を再定義する必要はない。これにより、ユーザはＩＳＲ関数を変更しなくてもカーネルをアップグレードすることができる。
【００５８】
さらに、本発明の割込み登録ＡＰＩは、割込み信号の受け取りおよびＩＳＲ関数の実行に際して発生する待ち時間を低減するので、このためコンピュータシステムの効率を向上させる。待ち時間が短縮することによって、コンピュータシステムは、待ち時間を確定させてリアルタイム機能を効率的に果たすことができる。
【００５９】
ユーザアプリケーションをあるプラットフォームから別のプラットフォームに移植する従来のシステムにおいては、イベントの取り込みがカーネル空間で実行され、イベントの処理がユーザ空間で実行されるように、ＩＳＲ関数は２つの部分に分割される。このような従来のシステムとは対照的に、本発明の割込み登録ＡＰＩでは、ユーザアプリケーションの移植時にＩＳＲを２つに分割する必要がない。したがって、本発明の割込み登録ＡＰＩは、ユーザアプリケーションをプラットフォームから別のプラットフォームへより簡単で迅速に移植することを可能にするので、移植プロセスがあまり複雑にならずに、コンピューティングシステムの効率を高める。
【００６０】
さらに、本発明の割込み処理システムによって実現される優先度ブースティング機構は、コンピュータシステムの待ち時間をさらに短縮するＩＳＲ関数の即時実行を可能にする。
【００６１】
本発明の以上の説明は、単に本発明を例示するために提示したものであり、本発明を限定することを意図したものではない。当業者は、本発明の趣旨および内容を組み込んで上述の実施形態を変更できるため、本発明は、本発明の範囲内の全てを含むものものとして解釈される。
【００６２】
当業者には明白なことであるが、添付の特許請求の範囲に記載された本発明の範囲から逸脱することなく、様々な実施形態の多くの改変、改善および部分的組み合わせ、適応、ならびに変形を本発明に行うことは可能である。
【符号の説明】
【００６３】
１００  コンピュータ実装割込み処理システム、１０２  コンピュータシステム、１０４ａ  第１のＩ／Ｏデバイス、１０４ｂ  第２のＩ／Ｏデバイス、１０６  割込みコントローラ、１０８  プロセッサ、１１０  メモリ、１１２  ユーザ空間、１１４  カーネル空間。
【図１】
2020021745.tif 000003
【図２】
2020021745.tif 000004
【手続補正書】
【提出日】令和1年10月11日(2019.10.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータシステムが、第１のプラットフォームで作成された割込み処理プログラムを、第２のプラットフォームで実行する割込み処理方法であって、
前記コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを、前記コンピュータシステムが備えるメモリに格納するステップと、
前記入出力デバイスに対応するユーザ空間入出力デバイス番号を、前記割込み番号に基づいて、決定するステップと、
前記決定されたユーザ空間入出力デバイス番号に基づいて、前記入出力デバイスのメモリ位置を決定するステップと、
前記決定されたメモリ位置に基づいて、読み出しのために前記入出力デバイスを起動するステップと、
前記入出力デバイスに対応するスレッドを作成するステップと、
前記入出力デバイスによって生成された割込みに対応する割込み信号を前記入出力デバイスから受け取るために前記スレッドを待機状態にするステップと、
前記入出力デバイスから前記割込み信号を受け取るステップと、
前記割込み信号の受け取りに応答して、前記メモリ内のカーネル空間で前記割込みサービスルーチンを実行するステップと、
前記割込みサービスルーチンに基づいて、前記スレッドを前記待機状態から再開するステップと、
前記割込み信号に対応するユーザ定義関数を前記メモリ内のユーザ空間で実行するステップと
を含むことを特徴とする割込み処理方法。
【請求項２】
前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記入出力デバイスから別の割込み信号を受け取るために前記スレッドを前記待機状態にするステップをさらに含む、請求項１に記載の割込み処理方法。
【請求項３】
前記入出力デバイスから前記割込み信号を受け取った後に、割込みイベントカウンタをインクリメントするステップと、
前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記割込みイベントカウンタをリセットするステップと
をさらに含む、請求項１に記載の割込み処理方法。
【請求項４】
割込みごとに別個のスレッドを作成するステップをさらに含む、請求項１に記載の割込み処理方法。
【請求項５】
前記入出力デバイスから前記割込み信号を受け取る前記ステップは、割込みコントローラを介して前記入出力デバイスに対応する前記割込み信号を受け取るステップを含む、請求項１に記載の割込み処理方法。
【請求項６】
前記スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する、請求項１に記載の割込み処理方法。
【請求項７】
ユーザ空間とカーネル空間とを有するメモリと、前記メモリに接続された演算装置と、を備えたコンピュータシステムであって、
前記演算装置は、
前記コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを前記メモリに格納し、
前記入出力デバイスに対応するユーザ空間入出力デバイス番号を前記割込み番号に基づいて決定し、
前記決定されたユーザ空間入出力デバイス番号に基づいて、前記入出力デバイスのメモリ位置を決定し、
前記決定されたメモリ位置に基づいて、読み出しのために前記入出力デバイスを起動し、
前記入出力デバイスに対応するスレッドを作成し、
前記入出力デバイスによって生成された割込みに対応する割込み信号を前記入出力デバイスから受け取るために前記スレッドを待機状態にし、
前記入出力デバイスから前記割込み信号を受け取り、
前記割込み信号の受け取りに応答して、前記カーネル空間で前記割込みサービスルーチンを実行し、
前記割込みサービスルーチンに基づいて前記スレッドを待機状態から再開し、
前記割込み信号に対応するユーザ定義関数を前記ユーザ空間で実行する
ように構成されている、ことを特徴とするコンピュータシステム。
【請求項８】
前記演算装置は、前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記入出力デバイスから別の割込み信号を受け取るために前記スレッドを前記待機状態にするようにさらに構成されている、請求項７に記載のコンピュータシステム。
【請求項９】
前記演算装置は、
前記入出力デバイスから前記割込み信号を受け取った後に、割込みイベントカウンタをインクリメントし、
前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記割込みイベントカウンタをリセットする
ようにさらに構成されている、請求項７に記載のコンピュータシステム。
【請求項１０】
前記演算装置は、割込みごとに別個のスレッドを作成するようにさらに構成される、請求項７に記載のコンピュータシステム。
【請求項１１】
前記割込み信号は、割込みコントローラを介して前記入出力デバイスから受け取られる、請求項７に記載のコンピュータシステム。
【請求項１２】
前記スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する、請求項７に記載のコンピュータシステム。
【請求項１３】
演算装置を備えたコンピュータシステムに、第１のプラットフォームで作成された割込み処理プログラムを、第２のプラットフォームで実行させるためのプログラムであって、
前記コンピュータシステムに接続された入出力デバイスに対応する割込み番号と、対応する割込みサービスルーチンとを、前記演算装置に接続されたメモリに格納する動作と、
前記入出力デバイスに対応するユーザ空間入出力デバイス番号を、前記割込み番号に基づいて、決定する動作と、
前記決定されたユーザ空間入出力デバイス番号に基づいて前記入出力デバイスのメモリ位置を決定する動作と、
前記決定されたメモリ位置に基づいて、読み出しのために前記入出力デバイスを起動する動作と、
前記入出力デバイスに対応するスレッドを作成する動作と、
前記入出力デバイスによって生成された割込みに対応する割込み信号を前記入出力デバイスから受け取るために前記スレッドを待機状態にする動作と、
前記入出力デバイスから前記割込み信号を受け取る動作と、
前記割込み信号の受け取りに応答して、前記メモリ内のカーネル空間で前記割込みサービスルーチンを実行する動作と、
前記割込みサービスルーチンに基づいて待機状態から前記スレッドを再開する動作と、
前記割込み信号に対応するユーザ定義関数を前記メモリ内のユーザ空間で実行する動作と、
を前記演算装置に実行させる、ことを特徴とするプログラム。
【請求項１４】
前記プログラムが前記演算装置に実行させる動作は、前記割込み信号に対応する前記ユーザ定義関数を実行した後に、前記入出力デバイスから別の割込み信号を受け取るために前記スレッドを前記待機状態にする動作をさらに含む、請求項１３に記載のプログラム。
【請求項１５】
前記プログラムが前記演算装置に実行させる動作は、割込みごとに別個のスレッドを作成する動作をさらに含む、請求項１３に記載のプログラム。
【請求項１６】
前記プログラムが前記演算装置に実行させる動作は、
前記入出力デバイスから前記割込み信号を受け取った後に割込みイベントカウンタをインクリメントする動作と、
前記割込み信号に対応する前記ユーザ定義関数を実行した後に割込みイベントカウンタをリセットする動作と
をさらに含む、請求項１３に記載のプログラム。
【請求項１７】
前記入出力デバイスから前記割込み信号を受け取る前記動作は、割込みコントローラを介して、前記入出力デバイスに対応する前記割込み信号を受け取る動作を含む、請求項１３に記載のプログラム。
【請求項１８】
前記スレッドに最高の優先度が割り当てられることによって、待ち時間を短縮する、請求項１３に記載のプログラム。
【国際調査報告】
2020021745.tif 000005
2020021745.tif 000006
2020021745.tif 000007