(57)【要約】【課題】汎用タスクの実行によりリアルタイムタスクの応答に遅延が発生することを回避することが可能な情報処理装置、割込み制御方法及びプログラムを提供することにある。【解決手段】実施形態によれば、情報処理装置は、第１の制御手段、第１の処理手段、第２の制御手段及び第２の処理手段を具備する。第１の制御手段は、第１の外部機器からの割込みが発生した場合、第１のハンドラを割込みサービスルーチン内で実行する。第１の処理手段は、第１のハンドラの実行によって起床される第１のタスクを実行する。第２の制御手段は、第２の外部機器からの割込みが発生した場合、第２のハンドラを第３のタスク内で実行する。第２の処理手段は、第２のハンドラの実行によって起床される第２のタスクを実行する。第２のハンドラの実行中または第２のタスクの実行中に前記第１の外部機器からの割込みが発生した場合、割込みサービスルーチンが呼び出される。【選択図】図１
2015146155.tif 000002
【特許請求の範囲】
【請求項１】
第１の外部機器からの割込みに応じたリアルタイム性を必要とする第１のタスク及び第２の外部機器からの割込みに応じたリアルタイム性を必要としない第２のタスクを実行する情報処理装置において、
前記第１の外部機器からの割込みが発生した場合、当該第１の外部機器からの割込みを処理する第１のハンドラを、当該第１の外部機器からの割込みに応じて呼び出される割込みサービスルーチン内で実行する第１の制御手段と、
前記第１のハンドラが実行されることによって起床される前記第１のタスクを実行する第１の処理手段と、
前記第２の外部機器からの割込みが発生した場合、当該第２の外部機器からの割込みを処理する第２のハンドラを、当該第２の外部機器からの割込みに応じて起床される第３のタスク内で実行する第２の制御手段と、
前記第２のハンドラが実行されることによって起床される前記第２のタスクを実行する第２の処理手段と
を具備し、
前記第２のハンドラの実行中または前記第２のタスクの実行中に前記第１の外部機器からの割込みが発生した場合、当該第２のハンドラの実行または当該第２のタスクの実行が中断されて前記割込みサービスルーチンが呼び出される
ことを特徴とする情報処理装置。
【請求項２】
前記第１の外部機器からの割込みに対して割り当てられた割込み番号に対応づけて当該第１の外部機器からの割込みに応じた前記第１のタスクがリアルタイムタスクであることを示す第１のフラグを保持し、前記第２の外部機器からの割込みに対して割り当てられた割込み番号に対応づけて当該第２の外部機器からの割込みに応じた前記第２のタスクが汎用タスクであることを示す第２のフラグを保持する保持手段と、
前記発生された第１または第２の外部機器からの割込みに対して割り当てられた割込み番号を取得する取得手段と
を更に具備し、
前記第１の制御手段は、前記取得された割込み番号に対応づけて前記第１のフラグが前記保持手段に保持されている場合に前記割込みサービスルーチンを呼び出し、
前記第２の制御手段は、前記取得された割込み番号に対応づけて前記第２のフラグが前記保持手段に保持されている場合に前記第３のタスクを起床する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置上で動作するオペレーティングシステムの起動時に、前記割込み番号、前記第１及び第２のフラグを前記保持手段に登録する登録手段を更に具備することを特徴とする請求項２記載の情報処理装置。
【請求項４】
第１の外部機器からの割込みに応じたリアルタイム性を必要とする第１のタスク及び前記第２の外部機器からの割込みに応じたリアルタイム性を必要としない第２のタスクを実行する情報処理装置が実行する割込み制御方法であって、
前記第１の外部機器からの割込みが発生した場合、当該第１の外部機器からの割込みを処理する第１のハンドラを、当該第１の外部機器からの割込みに応じて呼び出される割込みサービスルーチン内で実行するステップと、
前記第１のハンドラが実行されることによって起床される前記第１のタスクを実行するステップと、
前記第２の外部機器からの割込みが発生した場合、当該第２の外部機器からの割込みを処理する第２のハンドラを、当該第２の外部機器からの割込みに応じて起床される第３のタスク内で実行するステップと、
前記第２のハンドラが実行されることによって起床される前記第２のタスクを実行するステップと
を具備し、
前記第２のハンドラの実行中または前記第２のタスクの実行中に前記第１の外部機器からの割込みが発生した場合、当該第２のハンドラの実行または当該第２のタスクの実行が中断されて前記割込みサービスルーチンが呼び出される
ことを特徴とする割込み制御方法。
【請求項５】
第１の外部機器からの割込みに応じたリアルタイム性を必要とする第１のタスク及び前記第２の外部機器からの割込みに応じたリアルタイム性を必要としない第２のタスクを実行する情報処理装置のコンピュータによって実行されるプログラムであって、
前記コンピュータに、
前記第１の外部機器からの割込みが発生した場合、当該第１の外部機器からの割込みを処理する第１のハンドラを、当該第１の外部機器からの割込みに応じて呼び出される割込みサービスルーチン内で実行するステップと、
前記第１のハンドラが実行されることによって起床される前記第１のタスクを実行するステップと、
前記第２の外部機器からの割込みが発生した場合、当該第２の外部機器からの割込みを処理する第２のハンドラを、当該第２の外部機器からの割込みに応じて起床される第３のタスク内で実行するステップと、
前記第２のハンドラが実行されることによって起床される前記第２のタスクを実行するステップと
を実行させ、
前記第２のハンドラの実行中または前記第２のタスクの実行中に前記第１の外部機器からの割込みが発生した場合、当該第２のハンドラの実行または当該第２のタスクの実行が中断されて前記割込みサービスルーチンが呼び出される
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、割込み制御方法及びプログラムに関する。
【背景技術】
【０００２】
一般的に、組み込みシステム等と称される情報処理装置（計算機）においては、外部機器から当該情報処理装置に対して入力される割込み（以下、イベントと表記）に応じて当該情報処理装置上での処理の単位であるタスクが実行される。
【０００３】
ところで、上記したイベントに応じて実行されるタスクには、リアルタイムタスクと汎用タスクとが含まれる。リアルタイムタスクは、例えば外部機器におけるモータ制御等のようなリアルタイム性を必要とするタスクである。一方、汎用タスクは、外部機器とのネットワーク通信やログの書き出し等のようなリアルタイム性を必要としないタスクである。
【０００４】
すなわち、リアルタイムタスクは処理要求（つまり、イベント）の発生後に他の処理に先立ち最優先で実行されるべきタスクであり、汎用タスクはリアルタイムタスクより低優先度で実行されるタスクである。
【０００５】
このようなリアルタイムタスク及び汎用タスクを実行する必要がある情報処理装置の場合、当該情報処理装置上で動作する１つのオペレーティングシステム（ＯＳ）上でリアルタイムタスクと汎用タスクとを共存させることにより、コストの低減を図ることが行われている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１９０２３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記したようにリアルタイムタスクと汎用タスクとを共存させた場合、汎用タスクの実行によってリアルタイムタスクの応答（リアルタイムタスクの実行開始）に遅延が発生する可能性がある。
【０００８】
上記したようにリアルタイムタスクはリアルタイム性を必要とするものであるから、上記した遅延の発生を回避するようにタスクの実行を制御する（つまり、割込み制御を行う）必要がある。
【０００９】
そこで、本発明が解決しようとする課題は、汎用タスクの実行によりリアルタイムタスクの応答に遅延が発生することを回避することが可能な情報処理装置、割込み制御方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
実施形態によれば、第１の外部機器からの割込みに応じたリアルタイム性を必要とする第１のタスク及び第２の外部機器からの割込みに応じたリアルタイム性を必要としない第２のタスクを実行する情報処理装置が提供される。実施形態に係る情報処理装置は、第１の制御手段と、第１の処理手段と、第２の制御手段と、第２の処理手段とを具備する。前記第１の制御手段は、前記第１の外部機器からの割込みが発生した場合、当該第１の外部機器からの割込みを処理する第１のハンドラを、当該第１の外部機器からの割込みに応じて呼び出される割込みサービスルーチン内で実行する。前記第１の処理手段は、前記第１のハンドラが実行されることによって起床される前記第１のタスクを実行する。前記第２の制御手段は、前記第２の外部機器からの割込みが発生した場合、当該第２の外部機器からの割込みを処理する第２のハンドラを、当該第２の外部機器からの割込みに応じて起床される第３のタスク内で実行する。前記第２の処理手段は、前記第２のハンドラが実行されることによって起床される前記第２のタスクを実行する。前記第２のハンドラの実行中または前記第２のタスクの実行中に前記第１の外部機器からの割込みが発生した場合、当該第２のハンドラの実行または当該第２のタスクの実行が中断されて前記割込みサービスルーチンが呼び出される。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係る情報処理装置の機能構成を示すブロック図。
【図２】ハンドラ登録処理の処理手順を示すフローチャート。
【図３】ハンドラ情報のデータ構造の一例を示す図。
【図４】割込み制御処理の処理手順を示すフローチャート。
【図５】割込み制御処理について概念的に説明するための図。
【図６】本実施形態の効果を説明するための図。
【図７】本実施形態の効果を説明するための図。
【図８】本実施形態の効果を説明するための図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して、実施形態について説明する。  
図１は、本実施形態に係る情報処理装置の主として機能構成を示すブロック図である。本実施形態に係る情報処理装置は、例えば組み込みシステムを含み、外部機器から入力される割込み（以下、イベントと表記）に応じて各種タスクを実行する。なお、タスクとは、情報処理装置（計算機）上での処理の単位である。
【００１３】
本実施形態に係る情報処理装置においてイベント（処理要求）に応じて実行されるタスクには、リアルタイムタスク（第１のタスク）及び汎用タスク（第２のタスク）が含まれる。
【００１４】
リアルタイムタスクは、例えば外部機器におけるモータ制御等のようなリアルタイム性を必要とするタスクである。すなわち、リアルタイムタスクは、上記したイベントの発生後に速やかに実行されるべきタスクであって、他の処理に先立ち最優先で実行される。
【００１５】
一方、汎用タスクは、例えば外部機器とのネットワーク通信やログの書き出し等のようなリアルタイム性を必要としないタスクである。すなわち、汎用タスクは、リアルタイムタスク以外のタスクであって、当該リアルタイムタスクより低い優先度で実行される。
【００１６】
以下の説明では便宜的に、リアルタイムタスクの処理要求となる外部機器からの割込みをリアルタイムイベント、汎用タスクの処理要求となる外部機器からの割込みを汎用イベントと称する。なお、リアルタイムイベントの発生頻度及び発生タイミングは既知であり、汎用イベントの発生頻度及び発生タイミングは未知である。
【００１７】
図１に示すように、情報処理装置１０は、外部機器（リアルタイム系）１０及び外部機器（汎用系）２０と接続される。外部機器１０は、上記したリアルタイムイベントを発生する機器（第１の外部機器）である。一方、外部機器２０は、上記した汎用イベントを発生する機器（第２の外部機器）である。
【００１８】
情報処理装置１０は、割込み制御部１１、ハンドラ管理テーブル１２、ハンドラ登録部１３、リアルタイムタスク処理部１４及び汎用タスク処理部１５を含む。
【００１９】
割込み制御部１１は、上記したリアルタイムイベントまたは汎用イベントが発生した場合、当該イベントの発生を示す情報（以下、イベント発生情報と表記）を外部機器２０または３０から取得する。
【００２０】
割込み制御部１１は、リアルタイムイベントの発生を示すイベント発生情報が取得された場合、当該リアルタイムイベントを処理するイベントハンドラ（第１のハンドラ）を実行する。このようにリアルタイムイベントを処理するイベントハンドラが実行されると、上記したリアルタイムタスクが起床される。
【００２１】
なお、リアルタイムイベントを処理するイベントハンドラ（以下、リアルタイムイベントハンドラと表記）は、リアルタイムイベントに応じて強制的に呼び出される割込みサービスルーチン（ＩＳＲ：Interrupt Service Routine）内で実行される。割込みサービスルーチンは、イベント発生時に、情報処理装置１０において実行中の処理を中断して、強制実行される最高優先度のルーチンである。以下の説明では、便宜的に、割込みサービスルーチンをＩＳＲと称する。
【００２２】
一方、割込み制御部１１は、汎用イベントの発生を示すイベント発生情報が取得された場合、当該汎用イベントを処理するイベントハンドラ（第２のハンドラ）を実行する。このように汎用イベントを処理するイベントハンドラが実行されると、上記した汎用タスクが起床される。
【００２３】
なお、汎用イベントを処理するイベントハンドラ（以下、汎用イベントハンドラと表記）は、汎用イベントに応じて起床されるタスク（第３のタスク）内で実行される。汎用イベントに応じて起床されるタスクは、汎用イベントハンドラを実行するためのタスク（つまり、ハンドラ実行専用のタスク）である。以下の説明では、便宜的に、汎用イベントに応じて起床されるタスクをハンドラ実行タスクと称する。
【００２４】
なお、上記した割込み制御部１１の処理は、ハンドラ管理テーブル１２を参照して実行される。このハンドラ管理テーブル１２には、上記した割込み制御部１１の処理に必要な情報として、各イベントに応じて実行されるべきイベントハンドラを示す情報（以下、ハンドラ情報と表記）が保持される。また、ハンドラ管理テーブル１２に保持されるハンドラ情報は、後述するようにハンドラ登録部１３によって登録される。
【００２５】
リアルタイムタスク処理部１４は、割込み制御部１１によってリアルタイムイベントハンドラが実行されることによって起床されるリアルタイムタスクを実行する。
【００２６】
汎用タスク処理部１５は、割込み制御部１１によって汎用イベントハンドラが実行されることによって起床される汎用タスクを実行する。
【００２７】
本実施形態に係る情報処理装置１０おいては、上記した構成により、外部機器２０または３０からのイベント（リアルタイムイベント及び汎用イベント）に応じたタスク（リアルタイムタスク及び汎用タスク）を実行することができる。
【００２８】
また、本実施形態に係る情報処理装置１０上ではオペレーティングシステム（ＯＳ：Operating System）が動作するが、上記した図１に示す割込み制御部１１及びハンドラ登録部１３は、当該オペレーティングシステムによって実現される機能部である。また、情報処理装置１０上で動作するオペレーティングシステムには外部機器（デバイス）２０及び３０を制御するためのソフトウェア（デバイスドライバ）が組み込まれており、上記したリアルイベントハンドラ及び汎用イベントハンドラは当該各デバイスドライバに含まれているものとする。
【００２９】
以下、本実施形態に係る情報処理装置１０の動作について説明する。ここでは、本実施形態に係る情報処理装置１０によって実行される処理のうち、ハンドラ登録処理及び割込み制御処理について説明する。
【００３０】
まず、図２のフローチャートを参照して、ハンドラ登録処理の処理手順について説明する。このハンドラ登録処理は、上記したハンドラ管理テーブル１２にハンドラ情報を登録するための処理である。なお、ハンドラ登録処理は、例えば情報処理装置１０において動作するオペレーティングシステムの起動時にハンドラ登録部１３によって実行される。
【００３１】
ここで、情報処理装置１０において、オペレーティングシステム（ＯＳ）が起動された場合を想定する（ステップＳ１）。
【００３２】
この場合、ハンドラ登録部１３は、起動されたオペレーティングシステムに組み込まれているデバイスドライバからハンドラ管理テーブル１２に登録すべき情報（ハンドラ情報）を取得する（ステップＳ２）。なお、ハンドラ登録部１３によって取得されるハンドラ情報は、各イベントに応じて実行されるべきイベントハンドラを示す情報であり、割込み番号、イベントハンドラ（割込みハンドラ）及びリアルタイムフラグが含まれる。
【００３３】
ここで、オペレーティングシステムに組み込まれているデバイスドライバには、外部機器（リアルタイム系）２０を制御するためのデバイスドライバ（リアルタイム系）及び外部機器（汎用系）３０を制御するためのデバイスドライバ（汎用系）が含まれる。また、デバイスドライバ（リアルタイム系）には上記したリアルタイムイベントを処理するリアルタイムイベントハンドラが含まれており、デバイスドライバ（汎用系）には上記した汎用イベントを処理する汎用イベントハンドラが含まれている。
【００３４】
この場合、ハンドラ登録部１３は、デバイスドライバ（リアルタイム系）から、外部機器２０からの割込み（つまり、リアルタイムイベント）に対して割り当てられた割込み番号、当該リアルタイムイベントを処理するリアルタイムイベントハンドラ（を示す情報）及び当該割込み番号が割り当てられたイベント（割込み）がリアルタイムイベントであること（つまり、当該イベントに応じたタスクがリアルタイムタスクであること）を示すリアルタイムフラグを含むハンドラ情報を取得する。
【００３５】
同様に、ハンドラ登録部１３は、デバイスドラバ（汎用系）から、外部機器３０からの割込み（つまり、汎用イベント）に対して割り当てられた割込み番号、当該汎用イベントを処理する汎用イベントハンドラ（を示す情報）及び当該割込み番号が割り当てられたイベント（割込み）が汎用イベントであること（つまり、当該イベントに応じたタスクが汎用タスクであること）を示すリアルタイムフラグを含むハンドラ情報を取得する。
【００３６】
このようにハンドラ登録部１３によって各デバイスドライバから取得されたハンドラ情報は、ハンドラ管理テーブル１２に対して登録される（ステップＳ３）。
【００３７】
ここで、図３は、ハンドラ管理テーブル１２に登録されたハンドラ情報のデータ構造の一例を示す。
【００３８】
図３に示すように、ハンドラ管理テーブル１２には、割込み番号、イベントハンドラ及びリアルタイムフラグを含むハンドラ情報が登録される。なお、リアルタイムフラグは１及び０を含む。リアルタイムフラグ「１」は割込み番号が割り当てられたイベントがリアルタイムイベントであることを示し、リアルタイムフラグ「０」は割込み番号が割り当てられたイベントが汎用イベントであることを示す。
【００３９】
具体的には、図３に示すハンドラ管理テーブル１２には、例えば割込み番号「０」、イベントハンドラ「ｈａｎｄｅｒ０（）」及びリアルタイムフラグ「０」を含むハンドラ情報１０１が登録されている。このハンドラ情報１０１によれば、割込み番号「０」が割り当てられたイベントを処理するイベントハンドラが「ｈａｎｄｌｅｒ０（）」であり、当該イベントがリアルタイムイベントであることが示されている。なお、このハンドラ情報１０１は、例えば外部機器（汎用系）３０から取得された情報である。
【００４０】
また、図３に示すハンドラ管理テーブル１２には、例えば割込み番号「１」、イベントハンドラ「ｈａｎｄｌｅｒ１（）」及びリアルタイムフラグ「１」を含むハンドラ情報１０２が登録されている。このハンドラ情報１０２によれば、割込み番号「１」が割り当てられたイベントを処理するイベントハンドラが「ｈａｎｄｌｅｒ１（）」であり、当該イベントがリアルタイムイベントであることが示されている。なお、このハンドラ情報１０２は、例えば外部機器（リアルタイム系）２０から取得された情報である。
【００４１】
再び図２に戻ると、ハンドラ登録部１３は、ハンドラ管理テーブル１２に登録されたハンドラ情報の各々についてステップＳ４及びＳ５の処理を実行する。
【００４２】
具体的には、ハンドラ登録部１３は、ハンドラ管理テーブル１２に登録されたハンドラ情報に含まれるリアルタイムフラグが１であるか否かを判定する（ステップＳ４）。
【００４３】
リアルタイムフラグが１でない（つまり、０である）と判定された場合（ステップＳ４のＮＯ）、ハンドラ登録部１３は、ハンドラ情報に含まれるイベントハンドラ（ここでは、汎用イベントハンドラ）を実行するためのタスク（ハンドラ実行タスク）を生成する（ステップＳ５）。ここで生成されたハンドラ実行タスクは、後述する割込み制御処理において実行される。
【００４４】
一方、リアルタイムフラグが１であると判定された場合（ステップＳ４のＹＥＳ）、ハンドラ登録処理は終了される。
【００４５】
上記したようにハンドラ登録処理によれば、後述する割込み制御処理において必要な情報（ハンドラ情報）をオペレーティングシステムの起動の際に自動的にハンドラ管理テーブル１２に登録することができるとともに、汎用イベントハンドラを実行するためのハンドラ実行タスクを生成することが可能となる。
【００４６】
次に、図４のフローチャートを参照して、割込み制御処理の処理手順について説明する。この割込み制御処理は、外部機器２０または３０からのイベント（つまり、割込み）に応じたタスクの実行を制御する処理である。ここでは、上述したハンドラ登録処理が実行されることによって、ハンドラ管理テーブル１２には、図３において説明したハンドラ情報が保持されているものとする。
【００４７】
ここで、例えば外部機器（２０または３０）からイベントが発生した場合を想定する。この場合、情報処理装置１０には外部機器から割込み信号が入力され、当該情報処理装置１０内でＩＳＲが呼び出される（ステップＳ１１）。このＩＳＲは、上記したように外部機器からのイベントの発生時に強制実行される最高優先度のルーチン（割込みサービスルーチン）である。
【００４８】
このようにＩＳＲが呼び出されると、割込み制御部１１は、割込み信号に基づくイベント発生情報を、例えば情報処理装置１０に備えられる割込みコントローラ（図示せず）を介して取得する（ステップＳ１２）。なお、割込み制御部１１によって取得されるイベント発生情報には、発生したイベントに対して割り当てられた割込み番号が含まれる。
【００４９】
次に、割込み制御部１１は、取得されたイベント発生情報に含まれる割込み番号を含むハンドラ情報を、ハンドラ管理テーブル１２から取得する（ステップＳ１３）。ここで割込み制御部１１によって取得されたハンドラ情報には、上記したように割込み番号、イベントハンドラ（割込みハンドラ）及びリアルタイムフラグが含まれている。
【００５０】
割込み制御部１１は、取得されたハンドラ情報に含まれるリアルタイムフラグが１（リアルタイムフラグ＝１）であるか否かを判定する（ステップＳ１４）。
【００５１】
リアルタイムフラグが１であると判定された場合（ステップＳ１４のＹＥＳ）、イベント発生情報に含まれる割込み番号が割り当てられたイベントは、例えば外部機器（リアルタイム系）２０からのリアルタイムイベントである。なお、このリアルタイムイベントは、リアルタイムタスクに対する処理要求である。
【００５２】
この場合、割込み制御部１１によって取得されたハンドラ情報に含まれるイベントハンドラ（ここでは、リアルタイムイベントハンドラ）がＩＳＲ内で実行される（ステップＳ１５）。
【００５３】
このリアルタイムイベントハンドラでは、例えばリアルタイムタスクを実行するために必要な各種処理（例えば、イベントを発生した外部機器２０に対する処理）が実行され、当該リアルタイムタスクが起床される（ステップＳ１６）。このとき、オペレーティングシステムにおいては、リアルタイムタスクのスケジューリング等が行われる。
【００５４】
リアルタイムタスクが起床されると、リアルタイムタスク処理部１４は、当該リアルタイムタスクを実行する（ステップＳ１７）。
【００５５】
上記したように例えば外部機器（リアルタイム系）２０からリアルタイムイベントが発生した場合、上述したステップＳ１１〜Ｓ１７の処理によってリアルタイムタスクが実行される。
【００５６】
一方、リアルタイムフラグが１でない（つまり、０である）と判定された場合（ステップＳ１３のＮＯ）、イベント発生情報に含まれる割込み番号が割り当てられたイベントは、例えば外部機器（汎用系）３０からの汎用イベントである。なお、この汎用イベントは、汎用タスクに対する処理要求である。この場合、割込み制御部１１によって取得されたハンドラ情報に含まれるイベントハンドラ（ここでは、汎用イベントハンドラ）を実行するために、ハンドラ実行タスクが起床される（ステップＳ１８）。このハンドラ実行タスクは、上述したハンドラ登録処理において生成されたタスクである。このとき、オペレーティングシステムにおいては、ハンドラ実行タスクのスケジューリング等が行われる。
【００５７】
ハンドラ実行タスクが起床されると、割込み制御部１１は、当該ハンドラ実行タスクを実行する（ステップＳ１９）。
【００５８】
次に、割込み制御部１１は、ハンドラ実行タスク内で汎用イベントハンドラを実行する（ステップＳ２０）。
【００５９】
ここで、上述したようにＩＳＲは、外部機器からのイベントの発生時に強制実行される最高優先度のルーチンである。したがって、イベント発生情報に含まれる割込み番号が割り当てられたイベントが汎用イベントである場合であっても、上述したステップＳ１１においてＩＳＲは強制的に呼び出されるが、この場合におけるＩＳＲ内ではイベント発生情報のキューイングのみが行われる。すなわち、イベント発生情報に含まれる割込み番号が割り当てられたイベントが汎用イベントである場合には、イベント発生情報のキューイングが行われるとＩＳＲは終了され、ハンドラ実行タスク内で汎用イベントハンドラが実行される。
【００６０】
この汎用イベントハンドラでは、例えば汎用タスクを実行するために必要な各種処理（例えば、イベントを発生した外部機器３０に対する処理）が実行され、当該汎用タスクが起床される（ステップＳ２１）。このとき、オペレーティングシステムにおいては、上記したハンドラ実行タスクの場合と同様に、汎用タスクのスケジューリング等が行われる。
【００６１】
汎用タスクが起床されると、汎用タスク処理部１５は、当該汎用タスクを実行する（ステップＳ２２）。
【００６２】
上記したように例えば外部機器（汎用系）３０からの汎用イベントが発生した場合、上述したステップＳ１１〜Ｓ１４及びＳ１８〜Ｓ２２の処理によって汎用タスクが実行される。
【００６３】
ここで、図５を参照して、本実施形態に係る情報処理装置において実行される割込み制御処理について概念的に説明する。
【００６４】
まず、外部機器（２０または３０）から割込み信号（イベント発生情報）が入力されると、ＩＳＲ（割込みサービスルーチン）１０１が呼び出される（ステップＳ３１）。この場合、ハンドラ管理テーブル１２が参照されて、発生したイベントがリアルタイムイベントであるか汎用イベントであるかが特定される（ステップＳ３２）。
【００６５】
発生したイベントがリアルタイムイベントである場合には、デバイスドライバ（リアルタイム系）１０２に含まれるリアルタイムイベントハンドラが呼び出され、当該リアルタイムイベントハンドラがＩＳＲ１０１内で実行される（ステップＳ３３）。
【００６６】
リアルタイムイベントハンドラが実行されると、イベント待ち状態であるリアルタイムタスク１０３が起床されて、当該リアルタイムタスク１０３が実行される（ステップＳ３４）。
【００６７】
一方、発生したイベントが汎用イベントである場合には、ＩＳＲ内ではイベント発生情報のキューイングのみが行われ、スリープ状態であるハンドラ実行タスク１０４が起床されて、当該ハンドラ実行タスク１０４が実行される（ステップＳ３５）。
【００６８】
ハンドラ実行タスク１０４が実行されると、デバイスドライバ（汎用系）１０５に含まれる汎用イベントハンドラが呼び出され、当該汎用イベントハンドラがハンドラ実行タスク１０４内で実行される（ステップＳ３６）。
【００６９】
汎用イベントハンドラが実行されると、イベント待ち状態である汎用タスク１０６が起床されて、当該汎用タスク１０６が実行される（ステップＳ３７）。
【００７０】
上記したように本実施形態においては、リアルタイムイベントが発生した場合、リアルタイムイベントハンドラをＩＳＲ内で実行し、汎用イベントが発生した場合、汎用イベントハンドラをハンドラ実行タスク内で実行する構成により、汎用タスクの実行によりリアルタイムタスクの応答に遅延が発生することを回避することが可能となる。
【００７１】
上述したようにＩＳＲは最高優先度のルーチンであるため、当該ＩＳＲでの処理中の割込みは禁止されている。一方、タスクでの処理中の割込みは可能である。このため、本実施形態においては、汎用イベントを処理するイベントハンドラ（汎用イベントハンドラ）をＩＳＲ内ではなくハンドラ実行タスク内で実行することにより、例えば汎用イベントハンドラの実行中にリアルタイムイベントが発生した場合であっても、リアルタイムイベントハンドラを実行するためのＩＳＲを呼び出すことが可能となり、リアルタイムタスクの応答の遅延を発生させることなく当該リアルタイムタスクを実行することが可能となる。
【００７２】
ここで、図６に示すように、汎用イベントを処理するイベントハンドラ（汎用イベントハンドラ）をＩＳＲ内で実行するような構成とした場合において、当該汎用イベントハンドラの実行中（つまり、ＩＳＲでの処理中）にリアルタイムイベントが発生した場合を想定する。この場合、上記したようにＩＳＲでの処理中の割込みは禁止されているため、リアルタイムイベントが発生した際に呼び出されるＩＳＲ（以下、リアルタイムイベントＩＳＲと表記）は、当該汎用イベントが発生した際に呼び出されたＩＳＲ（以下、汎用イベントＩＳＲと表記）での処理（つまり、汎用イベントハンドラの実行）の完了後に呼び出されることになる。すなわち、リアルタイムイベントの割込みが遅延され、結果として応答時間（リアルタイムイベントの発生からリアルタイムタスクが動作を開始するまでの時間）が長くなる。
【００７３】
これを解消するために、図７に示すように、例えば汎用イベントＩＳＲ及びリアルタイムイベントＩＳＲではイベント発生情報のキューイング（イベントキューイング）のみが行われ、各イベントハンドラ（汎用イベントハンドラ及びリアルタイムイベントハンドラ）はそれぞれハンドラ実行タスクで実行されるような構成とした場合を想定する。この場合、図７に示すように、例えば汎用イベントＩＳＲでの処理時間を短くすることができ、汎用イベントハンドラの実行中であってもリアルイベントＩＳＲを呼び出すことが可能となるため、当該汎用イベントＩＳＲでの処理によるリアルタイムイベントの割込みの遅延は解消される。しかしながら、上述したようにハンドラ実行タスクを実行するためには当該ハンドラ実行タスクのスケジューリングが必要であるため、図７に示すように、当該スケジューリング処理による遅延が新たに発生する。なお、この場合には、上記したキューイング処理による遅延も生じる。また、図７において説明した構成では、設計上の様々なオーバーヘッドの増加によりシステム全体のスループットが低下し、汎用タスクの実行に対しての影響も大きくなる。
【００７４】
これに対して、本実施形態においては、図８に示すように、汎用イベントを処理するイベントハンドラ（汎用イベントハンドラ）はハンドラ実行タスク内で実行されるため、汎用イベントハンドラの実行完了を待つことなくリアルタイムイベントＩＳＲを呼び出すことができ、上述した図６に示す遅延の発生を回避することができる。更に、本実施形態によれば、図８に示すように、リアルタイムイベントを処理するイベントハンドラ（リアルタイムイベントハンドラ）はリアルタイムイベントＩＳＲ内で実行されるため、図７において説明したような構成と比較して不要なキューイング処理及びスケジューリング処理が実行されない。よって、本実施形態においては、図７に示す遅延（キューイング及びスケジューリングのオーバーヘッド）の発生を回避することができる。
【００７５】
すなわち、本実施形態においては、上記したように外部機器からのイベントがリアルタイムイベントであるか汎用イベントであるかを区別することによって当該イベント（の種類）に応じた最適な処理方法を適用することができる。これにより、本実施形態においては、図６において説明したリアルタイムイベントの割込み遅延の発生を回避するとともに、図７において説明したキューイング及びスケジューリングによる遅延の発生をも回避することが可能となる。また、本実施形態によれば、図７において説明したシステム全体のスループット低下を抑制することもできる。
【００７６】
また、本実施形態の構成によれば、デバイスドライバやタスクにおける改変量を最小限に抑えることが可能である。
【００７７】
なお、本実施形態においてはハンドラ管理テーブル１２に保持されているリアルタイムフラグを用いてリアルタイムイベント及び汎用イベントを区別するものとして説明したが、リアルタイムイベント及び汎用イベントは他の方法によって区別されても構わない。例えば外部機器からのイベントの発生時にオペレーティングシステムに組み込まれているデバイスドライバ（各外部機器を制御するためのドライバ）に問い合わせることによって、リアルタイムイベント及び汎用イベントを区別することも可能である。
【００７８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。  
【符号の説明】
【００７９】
１０…情報処理装置、１１…割込み制御部、１２…ハンドラ管理テーブル、１３…ハンドラ登録部、１４…リアルタイムタスク処理部、１５…汎用タスク処理部、２０…外部機器（リアルタイム系）、３０…外部機器（汎用系）
【図１】
2015146155.tif 000003
【図２】
2015146155.tif 000004
【図３】
2015146155.tif 000005
【図４】
2015146155.tif 000006
【図５】
2015146155.tif 000007
【図６】
2015146155.tif 000008
【図７】
2015146155.tif 000009
【図８】
2015146155.tif 000010