(57)【要約】【課題】割込頻度が高い状態でもアプリケーション処理時間を確保できるように、割込要因のデータ処理を低優先度のタスクから実行する割込制御方法において、アプリケーションが実行権を長時間握ると、データ処理性能が低下する。【解決手段】データ処理タスク３３を呼び出す開始処理タスク３２を起床させた時(Ｓ１２)、タイマ３５による時間カウントを開始する(Ｓ１３)。時間カウント開始後、一定時間が経過した時にタイマ割込を発生させ(Ｓ４１)、開始処理タスク３２に実行権を移す(Ｓ４３)。開始処理タスク３２の実行時は、タイマ３５による時間カウントを停止してから(Ｓ２１)、データ処理タスク３３を呼び出す(Ｓ２２)。【選択図】図７
2007323256.tif 000002
【特許請求の範囲】
【請求項１】
デバイスからの割込イベントを受けて実行される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定されている情報処理装置における割込制御方法であって、
第一の割込イベントに対する割込処理の実行時に、第一の処理タスクを起動するタスク起動ステップと、
前記第一の処理タスク起動時に、タイマをセットしてタイマカウントを開始するタイマカウント開始ステップと、
前記タイマカウントを開始してから一定時間が経過すると第二の割込イベントを発生させるタイマ割込ステップと、
前記第二の割込イベントを受けて前記第一の処理タスクに実行権を遷移させる実行権遷移ステップと、
を備えたことを特徴とする割込制御方法。
【請求項２】
デバイスからの割込イベントを受けて実行される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定されている情報処理装置における割込制御方法であって、
第一の割込イベントに対する割込処理の実行時に、前記第一の割込イベントの発生を無効にする割込無効化ステップと、
前記第一の割込イベントに対する割込処理の実行時に、通常の処理タスクと同等以下の実行優先度が設定された開始処理タスクを起動する開始処理タスク起動ステップと、
前記開始処理タスクの実行時に、データ処理タスクを起動するデータ処理タスク起動ステップと、
前記データ処理タスクの実行時に、前記第一の割込イベントが発生する原因となった割込イベントデータを処理する割込データ処理ステップと、
前記割込無効化ステップにおいて無効にした前記第一の割込イベントの発生を有効にする割込有効化ステップと、
前記開始処理タスクの起動時に、タイマをセットしてタイマカウントを開始するタイマカウント開始ステップと
前記タイマカウントを開始してから一定時間が経過すると第二の割込イベントを発生させるタイマ割込ステップと、
前記第二の割込イベントを受けて前記開始処理タスクに実行権を遷移させる実行権遷移ステップと、
を備えたことを特徴とする割込制御方法。
【請求項３】
前記開始処理タスクに実行権が遷移すると、タイマカウントを停止するタイマ停止ステップをさらに備えたことを特徴とする請求項１または２記載の割込制御方法。
【請求項４】
デバイスからの割込イベントを受けて実行される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定され実行される情報処理装置であって、
アプリケーション等を実行する通常の処理タスクと、
外部からの割込イベントによって起動され、前記通常の処理タスクの実行優先度よりも高い実行優先度が設定されている割込ハンドラと、
前記割込ハンドラの実行時に前記割込ハンドラにより起動され、前記通常の処理タスクと同等以下の実行優先度が設定されている開始処理タスクと、
前記開始処理タスクの起動時にタイマカウントが開始され、タイマカウントの開始から一定時間が経過するとタイマ割込イベントを発生させて前記開始処理タスクに実行権を遷移させるタイマと、
前記開始処理タスクの実行時に前記開始処理タスクにより起動され、前記割込イベントの発生原因である割込イベントデータを処理するデータ処理タスクと、を備え、
前記割込ハンドラは、当該割込ハンドラの実行時に前記割込イベントの発生を無効にし、
前記データ処理タスクは、当該データ処理タスクの実行時に前記割込イベントの発生を有効にする、
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアデバイス等からの割込イベントを処理する情報処理装置、および当該情報処理装置において利用される割込制御方法に関する。
【背景技術】
【０００２】
従来、例えば、パソコンやプリンタ、ＨＤＤレコーダー等の情報処理装置においては、ネットワークカードやハードウェアキー等の様々なデバイスが装着され、利用されている。
【０００３】
これらのデバイスは、データ受信やキー押下といった割込要因を検知すると、接続された情報処理装置に対し、割込信号を出力するなどの割込イベントを送出する。割込イベントを受けた情報処理装置は、対応する割込ハンドラ（割込処理）を実行することによって、割込要因を所定の方法で処理する。例えば、ネットワークカードがネットワークパケットを受信したという割込要因であれば、割込ハンドラを実行してネットワークカード上のバッファに蓄積されたネットワークパケットの受信データを読み出し、情報処理装置内のシステムメモリにコピーする。そして、受信データを待ち受けるアプリケーションにそれを渡す。
【０００４】
また、ハードウェアデバイス以外にもソフトウェアプログラムが擬似的な割込イベントを発生させることもある。一定間隔毎に、または設定された時間が経過した時に割込イベントを発生させるソフトウェアタイマはその例である。
【０００５】
一方、情報処理装置を制御するＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）では、アプリケーションや制御プログラム等の様々な処理タスクを効率よく実行するため、タスクのスケジューリング（実行するタスクの切り替え）を随時行っているものがある。
【０００６】
タスクのスケジューリングの一つに、各々のタスクに設定された実行優先度（プライオリティ）に基づいて実行するタスクを決定する実行優先度方式がある。この方式では、例えば、タスクＡとタスクＢが実行可能状態であり、タスクＡの実行優先度が０、タスクＢの実行優先度が５とすると、先ずタスクＢに実行権が付与されて実行される。そして、タスクＢが処理を完了して終了した場合や、何らかのイベントを待つために実行可能状態以外に遷移した場合は、タスクＡだけが実行可能状態であるので、タスクＡが実行される。
【０００７】
また、他のスケジューリング方式の一つに、各タスクに実行可能時間（クォンタム時間）を設定し、実行可能時間分タスクが実行されてもそのタスクの処理が終了しなければ、別のタスクに実行権を移す、ラウンドロビン方式がある。この方式では、各タスクに予め実行可能時間を設定する。そして、タスク（例えば、タスクＣ）が実行されると、その実行時間分だけそのタスク（タスクＣ）の実行可能時間を減算する。減算後の実行可能時間を残り実行可能時間と定義すると、実行中のタスク（例えば、タスクＤ）の残り実行可能時間が０になると実行権が剥奪され、別のタスク（例えば、タスクＥ）に実行権が移る。
【０００８】
また、情報処理装置で利用されるＯＳの一つであるＬｉｎｕｘでは、実行優先度方式とラウンドロビン方式を組み合わせたスケジューリング方式を利用している。以下に、Ｌｉｎｕｘにおけるスケジューリング方式について説明する。
【０００９】
Ｌｉｎｕｘでは、タスク（プロセスとも称される）に設定される実行優先度として、リアルタイム優先度と基本優先度の２種類が存在する。リアルタイム優先度はリアルタイム処理が要求されるタスクにのみ与えられるものであり、通常のタスクには基本優先度のみが与えられる。そして、通常のタスクには、基本優先度に基づいて算出される実行可能時間の初期値が設定される。
【００１０】
タスクのスケジューリングを行うＬｉｎｕｘのスケジューラは、リアルタイム優先度が設定されているタスクが実行可能状態であれば、リアルタイム優先度の高いタスクから順に実行権を与える。リアルタイム優先度が設定されているタスクが実行可能状態でなければ、実行可能状態であるタスクのうち、残り実行可能時間と基本優先度の和が高く、かつ残り実行可能時間が０でないものに対して実行権を与える。以後、実行権を与えたタスクが実行可能時間を費やすか、タスクの切替え命令が呼び出された時に、前述の選択方法に基づいて実行権を与えるタスクを切り替える。なお、実行可能状態である全ての通常タスクの残り実行可能時間が０になれば、実行可能時間の初期値を再設定した上で、実行権を与えるタスクを選択する。
【００１１】
また、タスク切り替えを行うタイミングに関してもいくつかの方式がある。実行優先度の高いタスク（例えば、タスクＦ）が実行可能状態になると、実行優先度の低いタスク（例えば、タスクＧ）の実行を中断し、実行優先度の高いタスク（タスクＦ）に実行権を移す方式はプリエンプション方式と呼ばれる。この方式では、例えば、上記のタスクＧを実行中、タスクＦが実行可能状態となったときは、タスクＦに実行権が移る。
【００１２】
前述したＬｉｎｕｘをはじめとするいくつかのＯＳでは、割込ハンドラの実行優先度はどのタスクよりも常に高く設定されており、その実行優先度を変えることができない。すなわち、割込ハンドラの実行は、他のタスク実行よりも最優先で処理される。また、割込イベントが発生すると、プリエンプションによって現在のタスク実行を中断し、直ちに割込ハンドラを実行する。途中で実行が中断すると問題の起こるコードを保護するために、一時的に割込イベントが発生しても割込ハンドラを起動させないようにすることは可能であるが、禁止されていなければ、割込イベントの発生によって現在のタスク実行が中断されることになる。
【００１３】
割込イベントの多くは、情報処理装置の内部状態によらず非同期に発生する。例えば、ネットワークカードの割込イベント発生の要因となるパケットの受信は、外部装置から送信されるパケットによって引き起こされる。外部装置からのパケット送信頻度が上昇すると、ネットワークカードによる割込イベントの発生頻度も上昇し、ネットワークカードが装着された情報処理装置では、割込ハンドラを実行する機会が増加する。情報処理装置において何らかのアプリケーション処理のタスクを実行中であった場合、割込ハンドラの実行のために度々アプリケーション処理が中断されることになる。
【００１４】
また、割込イベントだけでなく、割込イベントによってもたらされるデータ(以下、割込データと呼ぶ)の処理を、アプリケーション処理よりも高い実行優先度で処理しなければならないＯＳも存在する。例えば、Ｌｉｎｕｘにおけるネットワークパケットのデータ受信処理では、各パケットのデータをＯＳの内部システムに引き渡す際に、アプリケーションよりも高い実行優先度が設定されたソフトウェア割込みという仕組みを経由する。ソフトウェア割込みの実行優先度も割込イベントと同様に下げることはできないため、割込データを処理する度にやはりアプリケーション処理が中断されることになる。
【００１５】
従って、割込ハンドラや、割込データ処理の実行優先度が、他のタスクよりも常に高く設定されるＯＳを利用する情報処理装置では、例えば、図９に示すように割込イベントの頻度が高まると、アプリケーション処理が遅延したり、情報処理装置全体の処理パフォーマンスが低下するなどの問題があった。なお、図９は、割込イベントの発生頻度が高まると情報処理装置におけるアプリケーション処理が遅延するなどの問題が発生することを示すタイムチャートである。図９において、横軸は時間（ｔ）を、縦軸は実行優先度を表しており、割込処理、アプリケーションおよびアイドルタスクは、それぞれ縦軸方向に上から実行優先度の高い順に配置されている。また、各タスクを示す横軸上において、太線部の区間は実行権を与えられて処理を実行中であることを示し、点描部の区間は実行可能状態であるものの実行権が与えられていないことを示し、細線部の区間は休止状態または起動していない状態であることを示す。また、図９の上部にデバイスに対する操作を併せて表示しているが、デバイスと割込処理との間に表示されている長方形と楕円形は、それぞれ割込イベントの発生と割込データの処理を表している。図９から明らかなように、割込イベントの頻度が高まるとアプリケーション処理が度々中断され遅延することになる。
【００１６】
上記のような割込イベントによるアプリケーション処理のパフォーマンス低下に対処する従来技術として、例えば、特許文献１には、デバイスからの割込イベントをトリガとする代わりに、定期的にデバイスに対して処理すべきデータの有無を問い合わせて処理をするポーリング方式が開示されている。このポーリング方式では、デバイスに対するデータ問い合わせ処理が一定回数に抑制される。従って、ネットワークパケットの受信頻度が高くなっても、アプリケーション処理のパフォーマンスを保持することができる。
【００１７】
しかしながら、このポーリング方式を用いると、アプリケーション処理をする必要がない状態（アイドル状態）でもデバイスへの問い合わせ回数が制限されるため、必要以上にデータ処理が抑制されるという課題がある。この課題を解決する方法として、例えば、特許文献２に、情報処理装置のＣＰＵの使用率が高い場合や、単位時間当たりの割込回数が閾値を超えた場合に限ってポーリング方式に切り替える方法が開示されている。
【００１８】
ただし、この方法を用いる場合は、ＣＰＵ使用率や割込回数を測定する必要があり、それらの測定にかかるオーバーヘッドを生じるという別な課題があり、さらに、情報処理装置におけるハードウェアやソフトウェア構成によって、アプリケーション処理にあたって許容できるＣＰＵ使用率や割込回数は異なるため、ポーリング方式に切り替えるための適切な閾値を、装置ごとに見極めるために相当な手間がかかるといった課題もある。
【特許文献１】特表２００２−５３８７２９号公報
【特許文献２】特開２００１−２１６１７０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上記のように、割込イベントによるアプリケーション処理のパフォーマンス低下に対処する従来技術としては、十分なものがなく何らかの課題を有していた。
【００２０】
一方、アプリケーション処理を優先させる方法の一つとして割込処理の実行優先度を下げる方法があるが、この方法においては、情報処理装置で用いられるＯＳによっては、割込ハンドラや割込データ処理の実行優先度を変更することができないものがあるため、このような実行優先度を変更することができないＯＳを用いる場合は別タスクを仲介させる必要がある。以下に別タスクとして開始処理タスクを仲介させる場合の考えられる手順を説明する。
【００２１】
（ア）情報処理装置は、デバイスから割込イベントの入力を受けると、該当する割込ハンドラを実行する。
【００２２】
（イ）割込ハンドラの中で、当該割込イベントの発生を無効化する。さらに、アプリケーション処理よりも実行優先度が低く設定された開始処理タスクを起床する。
【００２３】
（ウ）開始処理タスクよりもアプリケーション処理の実行優先度が高いため、アプリケーション処理が優先して実行される。
【００２４】
（エ）（アプリケーションが実行権を手放すなどして）開始処理タスクに実行権が移る。開始処理タスクは割込データ処理タスクを呼び出す。
【００２５】
（オ）割込データ処理タスクにおいて、デバイスに蓄積したデータを処理する。デバイス上のデータを全て処理するか、規定回数処理したら、手順（イ）で無効化した割込イベントの発生を有効化する。
【００２６】
以上の手順により、アプリケーション処理が優先実行される。また、アプリケーション処理をする必要がない時は、開始処理タスク起床後直ちに実行権が移ってデバイス上のデータが処理されるため、最大限のデータ処理性能を保つことが出来る。また、開始処理タスクに実行権が移るまで割込を無効化することにより、割込頻度が高くてもアプリケーション処理を妨げることが少ない。
【００２７】
しかしながら、上記の割込処理の実行優先度を下げることでアプリケーション処理を優先させる方法において、別タスクとして開始処理タスクを仲介させる場合は、開始処理タスクに実行権が移らないとデバイス上のデータを処理することができないため、長時間、実行権を保持するアプリケーションが動作するような場合、開始処理タスクに実行権が移る機会が減り、そのためにデバイス上のデータ処理を十分に行えないといった課題があった。このような課題は、アプリケーション間で実行権をやりとりする間はデバイスに蓄積されたデータを処理することができないため、複数のアプリを同時に実行している場合も同様に発生する。
【００２８】
一方、デバイス上にデータを一時記憶するための領域（バッファ)は有限であるので、記憶領域がデータで満たされた場合、新たに受信したデータを格納できないことになる。したがって、開始処理タスクに長時間、実行権が移らないと、データの欠落が頻発してデータの処理性能が著しく低下するという課題があった。
【００２９】
本発明は、このような課題に鑑みてなされたもので、特に、開始処理タスクを仲介させる方法において、長時間、実行権を保持するアプリケーションが実行されるような状態であっても、適度にデバイス上のデータ処理を実行することができ、かつアプリケーション処理をする必要がない時はデータ処理能力を低下させない、割込制御方法を提供することを目的とする。
【課題を解決するための手段】
【００３０】
上記課題を解決するために、本願の第１の発明（請求項１に対応）の割込制御方法は、デバイスからの割込イベントを受けて実行される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定されている情報処理装置における割込制御方法であって、第一の割込イベントに対する割込処理の実行時に、第一の処理タスクを起動するタスク起動ステップと、前記第一の処理タスク起動時に、タイマをセットしてタイマカウントを開始するタイマカウント開始ステップと、前記タイマカウントを開始してから一定時間が経過すると第二の割込イベントを発生させるタイマ割込ステップと、前記第二の割込イベントを受けて前記第一の処理タスクに実行権を遷移させる実行権遷移ステップと、を備えたことを特徴とするものである。
【００３１】
また、本願の第２の発明（請求項２に対応）の割込制御方法は、デバイスからの割込イベントを受けて実行される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定されている情報処理装置における割込制御方法であって、第一の割込イベントに対する割込処理の実行時に、前記第一の割込イベントの発生を無効にする割込無効化ステップと、前記第一の割込イベントに対する割込処理の実行時に、通常の処理タスクと同等以下の実行優先度が設定された開始処理タスクを起動する開始処理タスク起動ステップと、前記開始処理タスクの実行時に、データ処理タスクを起動するデータ処理タスク起動ステップと、前記データ処理タスクの実行時に、前記第一の割込イベントが発生する原因となった割込イベントデータを処理する割込データ処理ステップと、前記割込無効化ステップにおいて無効にした前記第一の割込イベントの発生を有効にする割込有効化ステップと、前記開始処理タスクの起動時に、タイマをセットしてタイマカウントを開始するタイマカウント開始ステップと前記タイマカウントを開始してから一定時間が経過すると第二の割込イベントを発生させるタイマ割込ステップと、前記第二の割込イベントを受けて前記開始処理タスクに実行権を遷移させる実行権遷移ステップと、を備えたことを特徴とするものである。
【００３２】
また、本願の第３の発明（請求項３に対応）の割込制御方法は、本願の第１発明または第２の発明の割込制御方法において、前記開始処理タスクに実行権が遷移すると、タイマカウントを停止するタイマ停止ステップをさらに備えたことを特徴とするものである。
【００３３】
また、本願の第４の発明（請求項４に対応）の情報処理装置は、デバイスからの割込イベントを受けて実行される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定され実行される情報処理装置であって、アプリケーション等を実行する通常の処理タスクと、外部からの割込イベントによって起動され、前記通常の処理タスクの実行優先度よりも高い実行優先度が設定されている割込ハンドラと、前記割込ハンドラの実行時に前記割込ハンドラにより起動され、前記通常の処理タスクと同等以下の実行優先度が設定されている開始処理タスクと、前記開始処理タスクの起動時にタイマカウントが開始され、タイマカウントの開始から一定時間が経過するとタイマ割込イベントを発生させて前記開始処理タスクに実行権を遷移させるタイマと、前記開始処理タスクの実行時に前記開始処理タスクにより起動され、前記割込イベントの発生原因である割込イベントデータを処理するデータ処理タスクと、を備え、前記割込ハンドラは、当該割込ハンドラの実行時に前記割込イベントの発生を無効にし、前記データ処理タスクは、当該データ処理タスクの実行時に前記割込イベントの発生を有効にする、ことを特徴とするものである。
【発明の効果】
【００３４】
以上のように、本発明の割込制御方法によれば、開始処理タスクを起床する時にタイマのタイマカウントを開始し、タイマカウント開始後に一定時間経過するとタイマ割込が起こって開始処理タスクに実行権を移すことにより、長時間実行権を保持するアプリケーション処理を実行中であっても、適度にデバイス上のデータ処理を実行することができ、情報処理装置におけるデータ処理性能の低下を抑制する効果がある。
【発明を実施するための最良の形態】
【００３５】
以下に、本発明の実施の形態について、図面を参照しながら説明する。
【００３６】
（実施の形態１）
図１は、本発明の実施の形態１における割込制御方法を適用する情報処理装置１とデバイス２の構成を示すブロック図である。また、図２は、発明の実施の形態１における割込制御方法を適用するデバイス２の構成を示すブロック図である。
【００３７】
図１に示されているように、情報処理装置１は、少なくとも、プログラムを実行する制御部１１、デバイス２からの割込イベントを受け付けて制御部１１に伝える割込コントローラ１２、制御部１１とデバイス２を接続するためのシステムバス１３、および情報処理装置１において実行されるプログラムがロードされるシステムメモリ１４を備えている。
【００３８】
情報処理装置１においては、実行優先度に基づいてタスクのスケジューリングが行われ、さらに、割込イベントを受信した時の処理の実行優先度が通常のタスクよりも高く設定されるものとする。
【００３９】
一方、図２に示されているように、デバイス２は、制御部２１、割込許可設定部２２、割込イベント発生部２３、およびバッファ２４で構成されている。
【００４０】
図２において、制御部２１は、割込許可設定部２２の設定を変更したり、割込イベント発生部２３へ割込イベント要求を行ったり、デバイス２の外部から受け取った（受信した）データをバッファ２４に格納したりする役割を担っている。割込許可設定部２２は、割込イベントの発生を許可するか、許可しないかの設定を行う。割込イベント発生部２３は、情報処理装置１における割込コントローラ１２と接続され、制御部２１から割込イベント要求があったときに、割込コントローラ１２へ割込イベントを送信する。制御部２１は、割込要因の一つである、デバイス２の外部からデータを受信したことを検知したとき、この受信したデータをバッファ２４に蓄積する。さらに、制御部２１は、割込許可設定部２２が割込イベントの発生を許可する設定になっている場合は、割込イベント発生部２３に対して割込イベントの要求を行い、割込コントローラ１２へ割込イベントを送信させる。
【００４１】
一方、割込許可設定部２２が割込イベントの発生を許可しない設定になっている場合は、制御部２１はバッファ２４にその受信したデータを蓄積するが、割込イベント発生部２３に対して割込イベントの要求は行わない。
【００４２】
次に、図１を用いて、情報処理装置１における割込制御方法を実装するソフトウェアの構成を説明する。
【００４３】
情報処理装置１において、システムメモリ１４には、割込ハンドラ３１、開始処理タスク３２、データ処理タスク３３、アプリケーション３４ａ〜３４ｃ、およびタイマ３５の実行コードがそれぞれロードされている。
【００４４】
割込ハンドラ３１は、割込無効化手段４１と開始処理タスク起動手段４２とタイマ開始手段４３を備えている。割込無効化手段４１は、制御部１１を通じてデバイス２の割込許可設定部２２にアクセスし、割込イベントの発生を許可しない設定に変更する。開始処理タスク起動手段４２は、アプリケーション３４ａ〜３４ｃと同等かそれ以下の実行優先度を設定した開始処理タスク３２を起動して実行可能状態とする。タイマ開始手段４３は、タイマ３５に作用して、タイマ値とタイマ値分の時間が経過したときに実行される処理ＴＰ（Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ）をセットする。処理ＴＰは、開始処理タスク３２に実行権を移すためのコードを含む。
【００４５】
開始処理タスク３２は、データ処理タスク起動手段５１とタイマ停止手段５２を備えている。データ処理タスク起動手段５１は、アプリケーション３４ａ〜３４ｃの実行優先度よりも高いデータ処理タスク３３を起動して実行可能状態とする。タイマ停止手段５２は、タイマ３５に作用して、タイマ開始手段４３によりセットされたタイマ値と処理ＴＰをリセットする。
【００４６】
データ処理タスク３３は、割込データ処理手段６１と割込有効化手段６２を備えている。割込データ処理手段６１は、制御部１１を通じてデバイス２のバッファ２４にアクセスし、バッファ２４に蓄積されているデータを読み出す。割込有効化手段６２は、制御部１１を通してデバイス２の割込許可設定部２２にアクセスし、割込許可設定部２２を割込イベントの発生を許可する設定にする。
【００４７】
タイマ３５は、本発明の実施の形態１ではソフトウェアタイマとして実装されているものとする。タイマ３５は、タイマ値と処理ＴＰがセットされた後、セットされたタイマ値だけ時間が経過すると制御部１１に対してタイマ割込を発生させ、処理ＴＰを実行するように要求する。また、タイマ３５は、タイマ値がリセットされると、新たにタイマ値がセットされるまで何もしない。
【００４８】
なお、割込ハンドラ３１は、割込コントローラ１２がデバイス２から割込イベントを受信したときに実行され、一方、開始処理タスク３２およびデータ処理タスク３３は、実行権が付与された時に実行される。
【００４９】
また、図１には記載されていないが、情報処理装置１においては、最低の実行優先度を持つアイドルタスクが常時実行可能状態になっており、アイドルタスク以外に実行可能状態のタスクが存在しなければ、アイドルタスクが実行される。この状態をアイドル状態と定義する。
【００５０】
次に、図３を用いて、情報処理装置１がデバイス２から割込イベントを受信した時の処理のフローについて説明する。なお、図３は、本発明の実施の形態１における情報処理装置において、デバイスから割込イベントを受信した時に実行される処理の手順を示すフローチャートである。
【００５１】
情報処理装置１において、割込コントローラ１２はデバイス２から割込イベントを受信すると、制御部１１に伝えて割込ハンドラ３１を呼び出し（Ｓ１０）、割込ハンドラ３１における割込無効化手段４１は、制御部１１を通じてデバイス２の割込許可設定部２２にアクセスし、割込イベントの発生を許可しない設定に変更してデバイス２から受信した割込イベントを無効化し(Ｓ１１)、開始処理タスク起動手段４２は開始処理タスク３２を起動し（Ｓ１２)、タイマ開始手段４３はタイマ３５に作用し、タイマ値をセットして時間カウント（タイマカウント）を開始させ（Ｓ１３）、デバイス２から受信した割込イベントに対する処理を終了する。
【００５２】
次に、図４を用いて、開始処理タスク３２に実行権が付与された時の開始処理タスク３２における処理のフローについて説明する。なお、図４は、本発明の実施の形態１における情報処理装置１において、開始処理タスク３２に実行権が付与されたときの開始処理タスク３２における処理の手順を示すフローチャートである。
【００５３】
開始処理タスク３２において、タイマ停止手段５２は、タイマ３５にセットされたタイマ値と処理ＴＰをリセットして時間カウント（タイマカウント）を停止させ（Ｓ２１）、データ処理タスク起動手段５１は、データ処理タスク３３を起動させ（Ｓ２２)、開始処理タスク３２における実行を終了する。
【００５４】
次に、図５を用いて、データ処理タスク３３に実行権が付与された時のデータ処理タスク３３における処理のフローについて説明する。なお、図５は、本発明の実施の形態１における情報処理装置において、データ処理タスク３３に実行権が付与されたときのデータ処理タスク３３における処理の手順を示すフローチャートである。
【００５５】
データ処理タスク３３において、割込データ処理手段６１は、制御部１１を通じてデバイス２のバッファ２４にアクセスし、バッファ２４に蓄積されている受信データの一つを読み出して処理する（Ｓ３１）。割込データ処理手段６１が行う処理としては、例えば、受信データを待ち受けるタスクに対して待ち列やメッセージキュー等を用いて引き渡す、といった処理などである。その後、バッファ２４に他の受信データが蓄積されているか否かを確認して、蓄積されていればステップＳ３１に戻ってデータ処理を繰り返し（Ｓ３２)、蓄積されていなければ、もしくはステップＳ３１におけるデータ処理の繰り返しにより蓄積されていたデータがなくなると、割込有効化手段６２は制御部１１を通してデバイス２の割込許可設定部２２にアクセスし、割込許可設定部２２を割込イベントの発生を許可するように設定して割込イベントの発生を有効化し（Ｓ３３）、データ処理タスク３３における実行を終了する。
【００５６】
次に、図６を用いて、タイマ３５にタイマ値がセットされてから、そのセットされたタイマ値の分だけ時間が経過したときの処理のフローについて説明する。なお、図６は、本発明の実施の形態１における情報処理装置において、タイマ３５にタイマ値がセットされてから、そのセットされたタイマ値の分だけ時間が経過したときの処理の手順を示したフローチャートである。
【００５７】
タイマがセットされてから一定時間（タイマ値の分だけの時間）が経過すると、タイマ３５から制御部１１にタイマ割込が入力され（Ｓ４１）、制御部１１はタイマ３５からタイマ割込が入力されると処理ＴＰを実行し（Ｓ４２）、制御部１１が処理ＴＰを実行することによって開始処理タスク３２に実行権が移る（Ｓ４３）。
【００５８】
次に、図７を用いて、上記の処理の手順に基づき、情報処理装置１において一つのアプリケーション３４ｄを実行中に、デバイス２が割込要因を検知して情報処理装置１の割込コントローラ１２に対して割込イベントを送信してから、割込イベントを発生させた割込要因が処理されるまでのタスク実行の遷移の一例を説明する。なお、図７は、アプリケーションが起動している状態での、本発明の実施の形態１における割込制御方法の動作／作用の一例を表すタイムチャートである。
【００５９】
図７において、割込ハンドラ３１、開始処理タスク３２、データ処理タスク３３、アプリケーション３４ｄ、アイドルタスクおよびタイマ３５が縦軸方向に実行優先度順に並んでおり、図の上方に位置する処理ほど実行優先度が高いことを示す。なお、タイマ３５は、実行中のプロセスに関係なくタイマ値がセットされていればタイマカウントを実行する。
【００６０】
一方、図の横軸は時間を示しており、各タスクを示す横軸上において、太線部の区間は実行権を与えられて処理を実行中であることを示し、点描部の区間は実行可能状態であるものの実行権が与えられていないことを示し、細線部の区間は休止状態または起動していない状態であることを示す。
【００６１】
タイマ３５の横軸上において、斜線部の区間はタイマ値がセットされたために時間経過を監視している状態であることを示し、細線部の区間はタイマ値がセットされていないことを示す。各タスクの横軸を結ぶ縦方向の点線（破線）は、タスクの切り替え中であることを示す。
【００６２】
また、図７の上部にデバイス２に対する操作を併せて示す。デバイス２の横軸上にある網線部の区間は割込イベントの発生が無効化されていることを示しており、この区間においては、デバイス２はデバイス２の外部からデータを受信しても、情報処理装置１に対して割込イベントを送信しない。
【００６３】
図７において、初期段階ではアプリケーション３４ｄが実行（１）されている。アプリケーション３４ｄを実行（１）中に、デバイス２がデバイス２の外部からデータを受信（２）すると、デバイス２から情報処理装置１に対して割込イベントが送信（３）される。この割込イベントを受信した情報処理装置１においては、アプリケーション３４ｄの実行（１）を中断して、割込ハンドラ３１が実行（４）される。
【００６４】
割込ハンドラ３１においては、割込無効化手段４１により割込イベントが無効化（５）され、開始処理タスク起動手段４２により開始処理タスク３２が起動（６）され、タイマ開始手段４３によりタイマ３５にタイマ値がセット（７）され、タイマカウントが開始される。その後、割込ハンドラ３１での処理が終了し、アプリケーション３４ｄの実行状態に復帰（８）する。以降、割込イベントの発生が有効にされるまで、デバイス２がデバイス２の外部からどれだけデータを受信しても、データ受信を示す割込イベントは発信されないので割込ハンドラ３１が実行されず、その結果、アプリケーション３４ｄの実行は妨げられることがない。
【００６５】
タイマ３５にセットされたタイマ値分の時間が経過すると、タイマ３５はタイマ割込（９）を発生する。タイマ割込を受けた制御部１１は、スケジューラに作用して、実行権をアプリケーション３４ｄから開始処理タスク３２に移動（１０）させる。
【００６６】
なお、アプリケーション３４ｄの処理が完了したり、何らかのイベント待ちのため休止状態となったりした時も、開始処理タスク３２へのタスクの切り替えが行われる。例えば、アプリケーション３４ｄの処理が完了し、他のアプリケーション（３４ｄ以外のアプリケーション）が実行可能状態でなければ、割込ハンドラ３１の開始処理タスク起動手段４２により起動させた開始処理タスク３２に実行権が移る。
【００６７】
開始処理タスク３２は、タイマ３５のタイマ値をリセットし、データ処理タスク３３
を起動（１１）する。この時、データ処理タスク３３は開始処理タスク３２よりも実行優先度が高いので、開始処理タスク３２の処理が中断されて実行権はデータ処理タスク３３に移行する。
【００６８】
データ処理タスク３３は、デバイス２のバッファ２４に蓄積されている受信データを制御部１１を通じて読み取り（１２）、その読み取ったデータを待ち受けるタスク等に待ち列やメッセージキュー等を用いて引き渡す。複数の受信データがバッファ２４に存在している場合は、バッファが空になるか、予め定めた規定数まで受信データを読み取る。その後、受信イベントの発生を有効化（１３）し、データ処理タスク３３の動作を終了（１４）する。
【００６９】
その後、開始処理タスク３２に実行権が戻った（１５）時に、開始処理タスク３２を終了（１６）する。これによりタスク切り替えが起こり、他のアプリケーション（ここではアプリケーション３４ｄの処理が終了しているものとする）が実行可能状態であれば他のアプリケーション３４ｅの実行に移行（１７）し、他のアプリケーションが実行可能状態でないか、もしくは実行を終了した場合はアイドル状態に遷移（１８）する。
【００７０】
次に、図８を用いて、アイドル状態において割込イベントを受信してから、割込イベントを発生させた割込要因が処理されるまでのタスク実行の遷移の一例を説明する。なお、図８は、アプリケーションが起動していない状態での、本発明の実施の形態１における割込制御方法の動作／作用の一例を表すタイムチャートである。
【００７１】
図８において、割込ハンドラ３１、開始処理タスク３２、データ処理タスク３３、およびアイドルタスクが縦軸方向に実行優先度順に並んでいる。アプリケーションは実行可能状態ではないため、図中には記載していない。それ以外は図７と同様である。
【００７２】
図８において、初期段階ではアイドルプロセスが実行されているアイドル状態（１）である。この時、デバイス２がデバイス２の外部からデータを受信（２）すると、情報処理装置１に割込イベントが送信（３）される。これにより、割込ハンドラ３１が実行（４）され、図７における場合と同様にして割込イベントの発生が無効化（５）され、開始処理タスク３２が起動（６）され、さらにタイマ３５がセット（７）されて時間カウント（タイマカウント）が開始される。
【００７３】
その後、割込ハンドラ３１での処理が終了すると、実行可能状態であるタスクは開始処理タスク３２のみであるので、直ちに開始処理タスク３２に実行権が移動（８）する。実行権を獲得した開始処理タスク３２は、タイマ３５の時間カウントを停止（９）させ、データ処理タスク３３を起動（１０）する。以下、図７における場合と同様にして、データ処理タスク３３の実行に移り、デバイス２のバッファ２４に蓄積されたデータが処理（１１）された後、割込イベントの発生を有効（１２）にする。その後、開始処理タスク３２に実行権が戻った（１３）時に、開始処理タスク３２を終了して他のアプリケーションが実行可能状態になっていなければ、アイドル状態に遷移（１４）する。
【００７４】
以上のように、本発明の実施の形態１における割込制御方法によれば、初動の割込ハンドラ３１の実行により割込イベントの発生が無効にされ、さらにアプリケーションと同等以下の実行優先度を持った開始処理タスク３２によりデータ処理タスク３３が起動されるまで割込イベントの発生が無効となる状態が継続するため、割込イベントを引き起こすデータ受信の頻度が高くなっても、アプリケーションを実行する妨げにはならない。その一方で、アプリケーション処理が長期に及んだ時は、タイマ割込によって開始処理タスク３２に実行権を移してデータ処理タスク３３を実行させるため、適度にデバイス２に蓄積されているデータを処理でき、データ処理性能の低下を抑制することができる。
【００７５】
また、アプリケーション処理を実行する必要がなければ、直ちに開始処理タスク３２に実行権が移り、タイマ３５においてセットされたタイマ値がリセットされるため、処理オーバーヘッドとなるタイマ割込が起こらず、データ処理性能の低下を抑制することができる。
【００７６】
なお、本発明の実施の形態１では、デバイス２がデバイス２の外部からデータを受けた場合の割込イベントの処理について説明したが、それ以外の割込要因で発生する割込イベントに対しても、同様の割込制御方法を適用することができる。
【００７７】
また、割込データ処理手段６１において実行される処理内容は、割込イベントを発生させた割込要因により異なる。例えば、ハードウェアキー等の入力装置におけるキー入力によって起こる割込イベントに対しては、割込データ処理手段６１は、本発明の実施の形態１において説明した処理に代わって、即ち、バッファ２４に蓄積された受信データを処理する代わりに、キー入力の履歴を参照するなどしてキー入力に対する処理を行う。
【００７８】
また、本発明の実施の形態１においては、割込イベントの発生の無効化・有効化を操作する場合について説明したが、これに限るものではなく、例えば、情報処理装置１において割込イベントを受信した時に、割込ハンドラ３１を実行しない・実行する、を操作するような実装にしてもよい。このような操作を実装した場合は、割込許可設定部２２を持たないデバイス２であっても、同様の効果を得ることができる。
【００７９】
また、本発明の実施の形態１においては、デバイス２がバッファ２４を具備する場合について説明したが、これに限るものではなく、例えば、情報処理装置１にバッファ２４を持たせてもよいし、システムメモリ１４の領域を代用するようにしてもよい。
【００８０】
また、本発明の実施の形態１においては、図３、図７、及び図８に示すように、割込イベントの発生を無効化してから、開始処理タスク３２を起動してタイマ３５にタイマ値をセットしてタイマカウントを開始しているが、この順番を入れ替えても同様の効果が得られる。
【００８１】
また、Ｌｉｎｕｘにおいては、先に述べたように実行優先度方式とラウンドロビン方式を組み合わせたスケジューリング方式を利用しているため、アプリケーション処理が長期を要するものであっても、タイマ割込を待たずに開始処理タスク３２に実行権が移る場合があるが、本発明においては、タイマ割込の発生前に開始処理タスク３２に実行権が移るとタイマを停止するので、本発明はＬｉｎｕｘにおいても何ら問題なく利用することができる。
【００８２】
また、システムによっては、実行可能状態になってからの待機時間が長いタスクの実行優先度を高くする方式、いわゆるエージング方式を採用しているものがあるが、この方式においては、アプリケーション処理が長期を要するものであっても、待機時間に応じて開始処理タスク３２の実行優先度が引き上げられ、タイマ割込を待たずに度々データ処理タスク３３を起動することがある。本発明は、このようなエージング方式を採用しているシステムにおいても、タイマ割込の発生前に開始処理タスク３２に実行権が移るとタイマを停止するので、何ら問題なく利用することができる。
【００８３】
また、タスク切り換えのタイミングに関して、システムが、現在実行中のタスクが明確に実行権を手放さない限りタスク切り替えが起きないノンプリエンプティブ方式を利用している場合は、図４におけるステップＳ２２において、データ処理タスク３３を起動しても開始処理タスク３２からデータ処理タスク３３へ実行権が移らないので、この場合は、開始処理タスク３２を終了または休止して実行権を手放すか、もしくは開始処理タスク３２での処理を完了すればよい。このようにして、開始処理タスク３２からデータ処理タスク３３に実行権を移すことにより、同様の効果を得ることができる。
【００８４】
また、本発明の実施の形態１では、タイマ３５をソフトウェアタイマとして構成したが、ハードウェアタイマでもよい。タイマ３５をハードウェアタイマとして構成した場合は、情報処理装置１におけるタイマ処理に関する負荷を軽減することができる。
【産業上の利用可能性】
【００８５】
本発明にかかる割込制御方法は、長時間アプリケーション実行が続いても、適度にデバイス上のデータ処理を行うことができるので、特に、開始処理タスクを使ってアプリケーション処理を優先実行する情報処理装置などにおいて利用される割込制御方法として有益である。
【図面の簡単な説明】
【００８６】
【図１】本発明の実施の形態１における割込制御方法を適用する情報処理装置とデバイスの構成を示すブロック図
【図２】本発明の実施の形態１における割込制御方法を適用するデバイスの構成を示すブロック図
【図３】本発明の実施の形態１における情報処理装置において、デバイスから割込イベントを受信した時に実行される処理の手順を示すフローチャート
【図４】本発明の実施の形態１における情報処理装置において、開始処理タスクに実行権が移ったときの開始処理タスクにおける処理の手順を示すフローチャート
【図５】本発明の実施の形態１における情報処理装置において、データ処理タスクに実行権が移ったときのデータ処理タスクにおける処理の手順を示すフローチャート
【図６】本発明の実施の形態１における情報処理装置において、タイマにタイマ値がセットされてから、そのセットされたタイマ値の分だけ時間が経過したときの処理の手順を示したフローチャート
【図７】アプリケーションが起動している状態での、本発明の実施の形態１における割込制御方法の動作／作用の一例を表すタイムチャート
【図８】アプリケーションが起動していない状態での、本発明の実施の形態１における割込制御方法の動作／作用の一例を表すタイムチャート
【図９】割込イベントの発生頻度が高まると情報処理装置におけるアプリケーション処理が遅延するなどの問題が発生することを示すタイムチャート
【符号の説明】
【００８７】
１  情報処理装置
２  デバイス
１１  制御部
１２  割込コントローラ
２１  制御部
２２  割込許可設定部
２３  割込イベント発生部
２４  バッファ
３１  割込ハンドラ（割込処理）
３２  開始処理タスク
３３  データ処理タスク
３４ａ  アプリケーション
３４ｂ  アプリケーション
３４ｃ  アプリケーション
３５  タイマ
４１  割込無効化手段
４２  開始処理タスク起動手段
４３  タイマ開始手段
５１  データ処理タスク起動手段
５２  タイマ停止手段
６１  割込データ処理手段
６２  割込有効化手段
【図１】
2007323256.tif 000003
【図２】
2007323256.tif 000004
【図３】
2007323256.tif 000005
【図４】
2007323256.tif 000006
【図５】
2007323256.tif 000007
【図６】
2007323256.tif 000008
【図７】
2007323256.tif 000009
【図８】
2007323256.tif 000010
【図９】
2007323256.tif 000011