JP2007128396A - 割込制御方法および情報処理装置 - Google Patents
割込制御方法および情報処理装置 Download PDFInfo
- Publication number
- JP2007128396A JP2007128396A JP2005321948A JP2005321948A JP2007128396A JP 2007128396 A JP2007128396 A JP 2007128396A JP 2005321948 A JP2005321948 A JP 2005321948A JP 2005321948 A JP2005321948 A JP 2005321948A JP 2007128396 A JP2007128396 A JP 2007128396A
- Authority
- JP
- Japan
- Prior art keywords
- interrupt
- task
- processing
- processing task
- event
- 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
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】割込イベントを発生させる割込要因の頻度が上昇しても、アプリケーション動作を妨げない割込制御方法を提供する。
【解決手段】割込イベントの受信によって呼び出される割込ハンドラ31の実行中に、割込イベントの発生を無効(ステップS11)にし、通常のアプリケーションよりも実行優先度の低い開始処理タスク32を起動する(ステップS12)。そして開始処理タスク32に実行権が移ったときに、データ処理タスク33を起動し(ステップS21)、さらにデータ処理タスクに実行権が移ったときに、割込イベントを発生させた割込要因に関するデータ処理を行った後(ステップS31)、割込イベントの発生を有効にする(ステップS33)。
【選択図】図6
【解決手段】割込イベントの受信によって呼び出される割込ハンドラ31の実行中に、割込イベントの発生を無効(ステップS11)にし、通常のアプリケーションよりも実行優先度の低い開始処理タスク32を起動する(ステップS12)。そして開始処理タスク32に実行権が移ったときに、データ処理タスク33を起動し(ステップS21)、さらにデータ処理タスクに実行権が移ったときに、割込イベントを発生させた割込要因に関するデータ処理を行った後(ステップS31)、割込イベントの発生を有効にする(ステップS33)。
【選択図】図6
Description
本発明は、ハードウェアデバイス等からの割込イベントを処理する情報処理装置で利用される割込制御方法及び当該情報処理装置に関する。
従来、例えばパソコンやプリンタ、HDDレコーダー等の情報処理装置においては、ネットワークカードやハードウェアキー等の様々なデバイスが装着され、利用されている。
これらのデバイスは、データ受信やキー押下といった割込要因を検知すると、接続された情報処理装置に対し、割込信号を出力するなどの割込イベントを送出する。割込イベントを受けた情報処理装置は、対応する割込ハンドラ(割込処理)を実行することによって、割込要因を所定の方法で処理する。例えば、ネットワークカードがネットワークパケットを受信したという割込要因であれば、割込ハンドラを実行してネットワークカード上のバッファに蓄積されたネットワークパケットの受信データを読み出し、情報処理装置上のシステムメモリにコピーする。そして、受信データを待ち受けるアプリケーションにそれを渡す。
また、ハードウェアデバイス以外にもソフトウェアプログラムが擬似的な割込イベントを発生させることもある。一定間隔毎または設定された時間が経過した時に割込イベントを発生させるソフトウェアタイマはその例である。
一方、情報処理装置を制御するOS(operating system)では、アプリケーションや制御プログラム等の様々な処理タスクを効率よく実行するため、タスクのスケジューリング(実行するタスクの切り替え)を随時行っているものがある。
タスクのスケジューリングの一つに、各々のタスクに設定された実行優先度(プライオリティ)に基づいて実行するタスクを決定する実行優先度方式がある。この方式では、例えば、タスクAとタスクBが実行可能状態であり、タスクAの実行優先度が0、タスクBの実行優先度が5とすると、先ずタスクBに実行権が付与されて実行される。そして、タスクBが処理を完了して終了したり、何らかのイベントを待つために実行可能状態以外に遷移した場合、この時はタスクAだけ実行可能状態であるので、タスクAが実行される。
また、他のスケジューリング方式の一つに、各タスクに実行可能時間(クォンタム時間)を設定し、実行可能時間分タスクが実行されてもそのタスクの処理が終了しなければ、別のタスクに実行権を移す、ラウンドロビン方式がある。この方式では、予め各タスクに実行可能時間を設定する。そして、タスクが実行されると、実行時間分だけそのタスクの実行可能時間を減算する。減算後の実行可能時間を残り実行可能時間と定義すると、実行中のタスクの残り実行可能時間が0になると実行権が剥奪され、別のタスクに実行権が移る。
また、情報処理装置で利用されるOSの一つであるLinuxでは、実行優先度方式とラウンドロビン方式を組み合わせたスケジューリング方式を利用している。以下、Linuxにおけるスケジューリング方式について説明する。
Linuxでは、タスク(プロセスとも称される)に設定される実行優先度として、リアルタイム優先度と基本優先度の2種類が存在する。リアルタイム優先度はリアルタイム処理が要求されるタスクにのみ与えられるものであり、通常の処理タスクには基本優先度のみが与えられる。そして、通常の処理タスクには、基本優先度に基づいて算出される実行可能時間の初期値が設定される。
タスクのスケジューリングを行うLinuxのスケジューラは、リアルタイム優先度が設定されているタスクが実行可能状態であれば、リアルタイム優先度の高いタスクから順に実行権を与える。そうでなければ、実行可能状態であるタスクのうち、残り実行可能時間と基本優先度の和が高く、かつ残り実行可能時間が0でないものに対して実行権を与える。以後、実行権を与えたタスクが実行可能時間を費やすか、タスクの切替え命令が呼び出された時に、前述の選択方法に基づいて実行権を与えるタスクを切り替える。なお、実行可能状態である全ての通常の処理タスクの残り実行可能時間が0になれば、実行可能時間の初期値を再設定した上で、実行権を与えるタスクを選択する。
また、タスク切り替えを行うタイミングに関してもいくつか方式がある。実行優先度の高いタスクが実行可能状態になると、実行優先度の低いタスクの実行を中断し、実行優先度の高いタスクに実行権が移る方式はプリエンプション方式と呼ばれる。この方式では、例えば、上記のタスクAを実行中、タスクBが実行可能状態となったときは、タスクBに実行権が移る。
前述したLinuxをはじめとするいくつかのOSでは、割込ハンドラの実行優先度はどのタスクよりも常に高く設定されており、その実行優先度を変えることができない。すなわち、割込ハンドラの実行は、他のタスク実行よりも最優先で処理される。また、割込イベントが発生すると、プリエンプションによって現在のタスク実行を中断し、直ちに割り込みハンドラを実行する。途中で実行が中断すると問題の起こるコードを保護するために、一時的に割込イベントが発生しても割込ハンドラを起動させないようにすることは可能であるが、禁止されていなければ、割込イベントの発生によって現在のタスク実行が中断されることになる。
割込イベントの多くは、情報処理装置の内部状態によらず非同期に発生する。例えば、ネットワークカードの割込イベント発生の要因となるパケットの受信は、外部装置から送信されるパケットによって引き起こされる。外部装置からのパケット送信頻度が上昇すると、ネットワークカードによる割込イベントの発生頻度も上昇し、ネットワークカードが装着された情報処理装置では、割込ハンドラを実行する機会が増加する。情報処理装置で何らかのアプリケーション処理のタスクを実行中であった場合、割込ハンドラの実行のために度々アプリケーション処理が中断することになる。
また、割込イベントだけでなく、割込イベントによってもたらされるデータ(以下、割込データとする)の処理を、アプリケーション処理よりも高い実行優先度で処理しなければならないOSも存在する。例えば、Linuxにおけるネットワークパケットのデータ受信処理では、各パケットのデータをOSの内部システムに引き渡す際に、アプリケーションよりも高い実行優先度が設定されたソフトウェア割込みという仕組みを経由する。ソフトウェア割込みの実行優先度も同様に下げることはできないため、割込データを処理する度にやはりアプリケーション処理が中断することになる。
従って、割込ハンドラや、割込データ処理の実行優先度が、他のタスクよりも常に高く設定されるOSを利用する情報処理装置では、割込イベントの頻度が高まると、アプリケーション処理が遅延したり、情報処理装置全体の処理パフォーマンスが低下したりするなどの問題があった(例えば、図12を参照)。
割込イベントによるアプリケーション処理のパフォーマンス低下に対処する従来技術として、例えば、特許文献1における受信制限システムでは、ネットワークデバイスでの割込回数を測定し、一定時間当たりの割込回数が予め設定された閾値を超えると、ネットワーク受信によって起こる割込イベントを一定時間無効にしたり、受信するネットワークデータパケットを制限することで、パフォーマンスを保つ方法が記載されている。
しかしながら、割込回数を測定する機構を追加する必要があり、測定のオーバーヘッドも生じる。また、情報処理装置のハードウェア構成や動作するアプリケーションの動作仕様が異なれば、許容される割込処理回数も異なってくる。閾値を緩くしてしまうと、本来の目的であったアプリケーション処理のパフォーマンス確保が困難になるし、逆に必要以上に閾値を高くしてしまうと、アプリケーション処理のパフォーマンスは十分に確保できるが、割込ハンドラ及び割込データの処理が疎かになるという問題を含んでいる。従って、予め情報処理装置ごとに、割込回数の適切な閾値を見極めて設定する必要がある。
一方、特許文献2におけるプリンタでの割込処理制御方法では、データ受信割込(割込イベント)の回数が閾値を超えた場合に、データ受信割込処理(割込処理)の優先順位を変更する(下げる)ことによって、CPUの占有を防止する方法が記載されている。
しかしながら、情報処理装置が、割込ハンドラや割込データ処理の実行優先度を変更することができないOSを利用している場合は適用できない。
特開2004−15497号公報
特開平10−254721号公報
前述の通り、割込処理の実行優先度が、アプリケーション処理を行うタスクよりも高く設定されるOSを利用する情報処理装置では、割込処理の頻度上昇により、アプリケーション処理が妨げられてしまうという課題がある。
特許文献1の方法では、割込回数を測定する必要があり、測定にかかるオーバーヘッドを生じる。また情報処理装置のハードウェアやソフトウェア構成によって、許容できる割込回数は異なってくるため、装置ごとに適切な閾値を見極める手間がかかる。
また、OSによっては、割込ハンドラや割込データ処理の実行優先度を変更することができないため、特許文献2に記載されたような割込処理自体の実行優先度を変更する方法は適用できない。
本発明は、こうした問題に鑑みてなされたもので、負荷測定の機構や閾値設定を必要とせず、割込ハンドラや割込データ処理の実行優先度を変更することが出来ない装置でも適用可能であり、かつ割込要因の頻度が上昇してもアプリケーション動作を妨げない、割込制御方法を提供することを目的とする。
以上の課題を解決するために、本発明の割込制御方法は、割込イベントを発生するデバイスを接続可能であり、前記割込イベントの発生可否を制御する機能を持ち、装置上で起動された各々の処理タスクに実行優先度を設定し、前記実行優先度に基づいて前記処理タスクを実行し、かつ、前記割込イベントによって起動される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定されている、情報処理装置における割込制御方法であって、前記割込処理の実行時に、前記割込イベントの発生を無効にする割込無効化ステップと、通常の処理タスクと同等以下の実行優先度が設定された開始処理タスクを起動する開始処理タスク起動ステップと、前記開始処理タスクの実行時に、データ処理タスクを起動するデータ処理タスク起動ステップと、前記データ処理タスクの実行時に、前記割込イベントに起因する割込イベントデータを処理する割込データ処理ステップと、前記割込イベントの発生を有効にする割込有効化ステップと、を備える。
上記に構成された本発明の割込制御方法によれば、割込ハンドラ実行時に割込イベントの発生を無効にすると共に通常のアプリケーションよりも実行優先度の低い開始処理タスクを起動し、開始処理タスクからデータ処理タスクを実行し、データ処理タスクの中で割込要因に対するデータ処理を行った後、割込イベントの発生を有効にすることによって、割込要因が頻発する状況下においても、アプリケーション実行の妨げにはならない。また、処理すべきタスク量が多ければ多いほど開始処理タスクの実行が遅延される一方で、アイドル状態であれば即座に実行されて割込データ処理が行われるため、CPU負荷や割込回数等を測定せずとも情報処理装置の負荷状態に応じて割込ハンドラや割込データ処理の実行を制御できる効果がある。
なお、データ処理タスクに適切な実行優先度を持たせることによって、割込要因に対するデータ処理をアプリケーションよりも実行優先度の高い状態で実行させなければならない情報処理装置にでも適用可であり、割込要因が頻発する状況下においても、アプリケーション実行の妨げにはならず、また、CPU負荷や割込回数等を測定せずとも情報処理装置の負荷状態に応じて割込ハンドラや割込データ処理の実行を制御できる効果がある。
以下に、本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1、図2は本発明の実施の形態1に適用される、情報処理装置1とデバイス2の構成図である。
図1、図2は本発明の実施の形態1に適用される、情報処理装置1とデバイス2の構成図である。
図1で示されている通り、情報処理装置1は、少なくともプログラムを実行する制御部11、デバイスからの割込イベントを受け付けて制御部に伝える割込コントローラ12、制御部11とデバイス2を接続するためのシステムバス13、情報処理装置1上で実行されるプログラムがロードされるシステムメモリ14を備える。
情報処理装置1では、実行優先度に基づいてタスクのスケジューリングが行われるものとし、さらに割込イベントを受信した時の処理の実行優先度が、通常のタスクよりも高く設定されるものとする。
一方、図2で示されている通り、デバイス2は、制御部21、割込許可設定部22、割込イベント発生部23、バッファ24を持つ。
制御部21は、割込許可設定部22の設定を変更したり、割込イベント発生部23へ割込イベント要求を行ったり、デバイス外部から受け取ったデータをバッファ24に格納したりする。
割込許可設定部22は、割込イベントの発生を許可するか、許可しないかの設定がなされる。
割込イベント発生部23は、割込コントローラ12と接続され、制御部21から割込イベント要求23があったときに、割込コントローラ12へ割込イベントを送信する。
制御部21が、割込要因の一つである、デバイス外部からのデータ受信を検知したとき、このデータはバッファ24に蓄積される。さらに割込許可設定部22が割込イベントの発生を許可する設定にされていた場合は、割込イベント発生部23に割込イベント要求を行う。一方、割込許可設定部22が割込イベントの発生を許可しない設定にされていた場合は、バッファ24にそのデータを蓄積するが、割込イベントは送信しない。
以上のシステム構成を基に、情報処理装置1における割込制御方法を実装するソフトウェア構成を図1を用いて説明する。
情報処理装置1のシステムメモリ14には、割込ハンドラ31、開始処理タスク32、データ処理タスク33、アプリケーション(通常の処理タスク)34a〜34cの実行コードがロードされている。
割込ハンドラ31は、割込無効化手段41と開始処理タスク起動手段42を備える。割込無効化手段41は、制御部11を通じてデバイス2の割込許可設定部22にアクセスし、割込イベントの発生を許可しない設定に変更する。開始処理タスク起動手段42は、アプリケーション34a〜34cと同等かそれ以下の実行優先度を設定した開始処理タスク32を起動し、実行可能状態とする。
開始処理タスク32は、データ処理タスク起動手段51を備える。データ処理タスク起動手段51は、アプリケーション34a〜34cの実行優先度よりも高いデータ処理タスク33を起動して実行可能状態とする。
データ処理タスク33は、割込データ処理手段61と、割込有効化手段62を備える。割込データ処理手段61は、制御部11を通じてデバイス2のバッファ24にアクセスし、蓄積されたデータを読み出す。割込有効化手段62は、制御部11を通してデバイス2の割込許可設定部22にアクセスし、割込イベントの発生を許可する設定にする。
割込ハンドラ31は、割込コントローラ12がデバイス2から割込イベントを受信したときに実行される。一方、開始処理タスク32、およびデータ処理タスク33は、実行権が付与された時に実行される。
また、図1には記載されていないが、情報処理装置1では、最低の実行優先度を持つアイドルタスクが常時実行可能状態になっている。アイドルタスク以外に実行可能状態のタスクが存在しなければ、アイドルタスクが実行される。この状態をアイドル状態と定義する。
図3は、割込イベントを受信した時の処理のフローチャートである。デバイス2から割込イベントを受信すると、情報処理装置1は割込ハンドラ31を呼び出す(ステップS10)。そして、割込ハンドラ31内で、デバイス2の割込イベントの発生を無効化(ステップS11)し、開始処理タスク32を起動して(ステップS12)、割込イベントに対する処理を終了する。
図4は開始処理タスク32に実行権が付与された時の、開始処理タスク32における処理のフローチャートである。開始処理タスク32内では、データ処理タスク33を起動し(ステップS21)、開始処理タスク32の実行を終了する。
図5は、データ処理タスク33に実行権が付与された時の、データ処理タスク33における処理のフローチャートである。データ処理タスク33内では、デバイス2のバッファ24に蓄積された受信データの一つを読み出して処理する(ステップS31)。処理の例としては、受信データを待ち受けるタスクに待ち列やメッセージキュー等を用いて引き渡す、などである。その後、バッファ24に他の受信データが蓄積されているか確認し、蓄積されていればステップS31に戻ってデータ処理を繰り返す(ステップS32)。蓄積されていなければ、デバイス2の割込イベントの発生を有効化(ステップS33)して、データ処理タスク33の実行を終了する。
以上の手順に基づき、一つのアプリケーション実行中に、デバイス2での割込要因の検知によって割込イベントが送信されてから、割込イベントを発生させた割込要因が処理される時のタスク実行の遷移を示したタイムチャートの一例を図6に示す。
図6に示すように、割込ハンドラ31、開始処理タスク32、データ処理タスク33、アプリケーション34d、アイドルタスクが実行優先度順に並んでいる。上方にある処理ほど実行優先度が高いことを示す。図の横軸は時間である。各タスクを示す軸上において、太線部の区間は実行権を与えられて処理を実行中で有ることを示す。点描部の区間は、実行可能状態であるものの実行権が与えられていないことを示す。細線部の区間は、休止状態または起動していない状態であることを示す。各タスクの軸を結ぶ点線は、タスクの切り替え中であることを示す。また、図6の上部にデバイス2に対する操作を合わせて示す。デバイスの軸上にある網線部の区間は、割込イベントの発生が無効化されていることを示す。すなわちこの区間では、デバイス2はデバイス外部からデータを受信しても、情報処理装置1に対して割込イベントは送信しない。
図6において、初期段階ではアプリケーション34dが実行されている。アプリケーション34d実行中に、デバイス2がデバイス外部からデータを受信すると、情報処理装置1に割込イベントが送信される。これにより、アプリケーション34dの実行を中断して、割込ハンドラ31が実行される。割込ハンドラ31内では、割込イベントの発生が無効化され、開始処理タスク32が起動される。その後、割込ハンドラ31での処理が終了し、アプリケーション34dの実行状態に復帰する。以降、割込イベントの発生が有効にされるまで、デバイス2がデバイス外部からどれだけデータを受信しても、データ受信を示す割込イベントは発信されず、割込ハンドラが実行されないことにより、アプリケーション34dの実行を妨げることはない。
次に、アプリケーション34dの処理が完了したり、何らかのイベント待ちのため休止状態となったりした時、タスクの切り替えが行われる。他のアプリケーションが実行可能状態でなければ、割込ハンドラ31内から起動した開始処理タスク32に実行権が移る。開始処理タスク32では、データ処理タスク33を起動する。この時、データ処理タスク32は開始処理タスクよりも実行優先度が高いため、開始処理タスク32の実行が中断され、代わりにデータ処理タスク33が実行される。
データ処理タスク33は、デバイス2のバッファ24に蓄積されている受信データを制御部11を通じて読み取って、このデータを待ち受けるタスク等に待ち列やメッセージキュー等を用いて引き渡す。複数の受信データがバッファに存在しているならば、バッファが空になるか、規定数読み取るまで受信データを読み取る。その後、データ処理タスク33は受信イベントの発生を有効化して終了する。
その後、開始処理タスク32に実行権が戻った時に、開始処理タスク32は終了する。これによりタスク切り替えが起こり、他のアプリケーションが実行可能状態でなければアイドル状態に遷移する。
次に、アイドル状態で割込イベントを受信してから、割込イベントを発生させた割込要因が処理される時のタスク実行の遷移を示したタイムチャートの一例を図7に示す。
図7では、割込ハンドラ31、開始処理タスク32、データ処理タスク33、アイドルタスクが実行優先度順に並んでいる。アプリケーションは実行可能状態ではないため、図中には記載していない。それ以外は図6と同様である。
図7において、初期段階ではアイドルプロセスが実行されているアイドル状態である。この時、デバイス2がデバイス外部からデータを受信すると、情報処理装置1に割込イベントが送信される。これにより、割込ハンドラ31が実行され、以下同様にして割込イベントの発生が無効化され、開始処理タスク32が起動される。
その後、割込ハンドラ31での処理が終了すると、実行可能状態で有るタスクは開始処理タスク32のみであるので、直ちに開始処理タスク32に実行に移る。開始処理タスク32では、データ処理タスク33を起動する。以下、同様にして、データ処理タスク33の実行に移り、デバイス2のバッファ24に蓄積されたデータが処理された後、割込イベントの発生を有効にし、データ処理タスク33は終了する。その後、開始処理タスク32に実行権が戻った時に、開始処理タスク32は終了する。他のアプリケーションが実行可能状態になっていなければ、アイドル状態に遷移する。
以上のように、実施の形態1における割込制御方法によれば、初動の割込ハンドラ実行により割込イベントの発生が無効にされ、さらにアプリケーションと同等以下の実行優先度を持った開始処理タスクからデータ処理タスクが起動されるまでその状態が継続するため、割込イベントを引き起こすデータ受信頻度が上昇しても、アプリケーション実行の妨げにはならない。また、処理すべきタスク量が多ければ多いほど開始処理タスクの実行を遅延させる一方、アイドル状態であれば即座に開始処理タスクが実行されてデータ処理タスクを起動しデータ処理が行われる。CPU負荷や割込回数等を測定せずとも情報処理装置の負荷状態に応じて割込ハンドラやデータ処理の実行を制御できる効果がある。
なお、図6において、実行中のアプリケーションが1つの場合を示したが、複数のアプリケーションが実行可能状態である場合には、それらアプリケーションに順次実行権が移ってから、開始処理タスクに実行権が移る。従って、処理すべきアプリケーション数によらず、割込イベントを引き起こすデータ受信頻度が上昇しても、アプリケーション実行の妨げにはならない。
なお、本実施例では、デバイス2がデバイス外部からデータを受けた場合の割込イベントの処理について説明したが、それ以外の割込要因で発生する割込イベントに対しても、同様の割込制御方法を適用できる。
なお、割込データ処理手段にて実行される処理内容は、割込イベントを発生させた割込要因により異なる。例えば、ハードウェアキー等の入力装置におけるキー入力によって起こる割込イベントに対しては、割込データ処理手段は、バッファに蓄積された受信データを処理する代わりに、キー入力の履歴を参照するなどしてキー入力に対する処理を行う。
なお、割込イベントの発生無効化・有効化を操作する代わりに、情報処理装置1で割込イベントに対応する割込ハンドラの起動無効化・有効化を操作する実装にしてもよい。この効果により、割込許可設定部22を持たないデバイスであっても、かかる効果を得られる。
なお、バッファ24は必ずしもデバイス2が持たなくて良い。情報処理装置1にバッファ24を持たせたり、システムメモリ14の領域を代用したりしても良い。
なお、割込ハンドラ31の処理に関して、図3、図6、及び図7において、割込イベントの発生を無効化してから、開始処理タスク32を起動しているが、この順番を逆にしても同様の効果が得られる。
なお、ステップS21の処理の後で開始処理タスク32を終了する代わりに、開始処理タスク32を休止状態へと遷移させてもよい。この場合、開始処理タスク32はシステムメモリ14に常駐し、実行権が移るたびにステップS21を実行するようにする。この効果により、割込ハンドラ31での開始処理タスク32の起動処理が、開始処理タスク32を実行可能状態へと遷移させるだけで済むため、割込ハンドラ内の処理時間を短縮でき、アプリケーションへの影響がさらに減る。
なお、Linuxにおいては、先に述べたように実行優先度方式とラウンドロビン方式を組み合わせたスケジューリング方式を利用しているため、アプリケーション処理が長期を要するものであっても、度々開始処理タスクに実行権が移り、データ処理タスクを起動することができる。バッファに蓄積されたデータの処理を適度に実行することにより、バッファフルによるデータの取りこぼしが減るため、本発明がより有効に利用できる。
なお、システムによっては、実行可能状態になってからの待機時間が長いタスクの実行優先度を高くする、エージング方式を採用しているものがある。この場合、アプリケーション処理が長期を要するものであっても、待機時間に応じて開始処理タスクの実行優先度が引き上げられ、度々データ処理タスクを起動することができる。バッファに蓄積されたデータの処理を適度に実行することにより、バッファフルによるデータの取りこぼしが減るため、本発明がより有効に利用できる。
なお、タスク切り換えのタイミングに関して、現在実行中のタスクが明示的に実行権を手放さない限りタスク切り替えが起きないノンプリエンプティブ方式を利用している場合は、ステップS21においてデータ処理タスクを起動しても実行権が移らない。このため、データ処理タスク起動後に開始処理タスクを終了または休止して実行権を手放せば良い。データ処理タスクに実行権が移ることにより、同様の効果が得られる。
(実施の形態2)
図8は本発明の実施の形態2に適用される、情報処理装置101とデバイス2の構成図である。
図8は本発明の実施の形態2に適用される、情報処理装置101とデバイス2の構成図である。
図8において、既に説明された構成と同様のものは、同じ符合を用いて説明を省略する。
さらに情報処理装置101では、情報処理装置1と同様に、実行優先度に基づいてタスクのスケジューリングが行われるものとし、さらに割込イベントに対する実行優先度が、通常のタスクよりも高く設定されるものとする。
以上のシステム構成を下に、情報処理装置101における割込制御方法を実装するソフトウェア構成を図8を用いて説明する。
情報処理装置101のシステムメモリ14には、割込ハンドラ35、開始処理タスク32、データ処理タスク33、アプリケーション34a〜34cに加えて、リアルタイムアプリ36の実行コードがロードされている。さらに、システムメモリ14には、割込処理方法情報テーブル37が記憶されている。
割込ハンドラは35、割込無効化手段41と開始処理タスク起動手段42に加えて、割込処理方法判断手段43を備える。割込処理方法判断手段43は、制御部11を通してデバイス2にアクセスし、割込イベントを発生させた割込要因を確認した後、割込処理方法情報テーブル37を読み出してその割込要因に対する処理方法を判断する。
割込ハンドラ35は、割込ハンドラ31と同様に、割込コントローラ12がデバイス2から割込イベントを受信したときに実行される。
開始処理タスク32、データ処理タスク33、アプリケーション34a〜34cは、実施の形態1と同様である。
リアルタイムアプリ36は、ある一定の時間内で決められた処理が完了することを求められるアプリケーションであり、例えば情報処理装置に入力された映像を記録するアプリケーション等が該当する。
割込処理方法情報テーブル37は、割込要因38a〜38dと、その割込要因に対する処理方法39a〜39dを組にした一つまたは複数の項目で構成される。図9に、割込処理方法情報テーブル37の一例を挙げる。図9の例では、割込要因がデータ受信であった場合、その処理方法として開始処理タスクを使用するよう示している。また、割込要因がバッファフルであった場合、何も処理しないことを示している。また、割込要因がデータ受信エラーであった場合は、開始処理タスクを使用するのではなく、割込ハンドラの中で直ちに処理するよう指示している。また、該当する割込要因がテーブル中になければ、デフォルトの方法を使用し、この例の場合は、データ受信エラーと同様に割込ハンドラ内で直ちに処理するよう示している。
図10は、情報処理装置101における割込イベント処理のフローチャートである。デバイス2から割込イベントを受信すると、情報処理装置101は割込ハンドラ35を呼び出す(ステップS51)。次に割込処理方法判断手段43により割込要因IFが確認され(ステップS52)、割込処理方法情報テーブル37から当該割込要因IFに対応する処理方法の情報が取り出される(ステップS53)。処理方法の情報に基づき、割込処理方法判断手段43が少なくとも開始処理タスクを使用するよう判断すれば(ステップS54)、開始処理タスク起動手段41によって開始処理タスク32を起動し(ステップS55)、割込無効化手段42により当該割込要因IFによる割込イベントの発生を無効化する(ステップS56)。一方、ステップS54において、開始処理タスクを使用しないと判断すれば、割込処理方法判断手段43は、データ処理タスク33が備える割込データ処理手段61を呼び出して実行する(ステップS57)。
割込ハンドラ35で開始処理タスク32が起動された場合は、実施の形態1と同様にして、開始処理タスク32からデータ処理タスク33が起動され、そしてデータ処理タスク33によって割込データ処理手段61を実行した後、当該割込要因IFによる割込イベントの発生を有効化する。
一方、リアルタイムアプリ36の実行においては、ある一定時間内での処理完了を保証するために、通常のアプリケーション以上に割込イベントによる処理中断が起きないことが望まれる。そこで、リアルタイムアプリ36実行中は、より多くの割込要因に対して開始処理タスクによる処理方法を適用することで、リアルタイムアプリの処理に影響が出ないように割込イベントの発生を抑制する。具体的には、割込処理方法情報テーブルの内容を書き換えて対処する。
図11は、割込処理方法情報テーブル37の変更の一例である。(a)のテーブルが平常状態の内容であるものとする。その後、リアルタイムアプリ36が起動された時に、(b)の内容に変更する。この時、データ受信、バッファフル、データ受信エラー以外の割込要因に対する対処方法が、割込ハンドラ内で処理する即時処理から、開始処理タスクを使用して処理する方法に変更される。これにより、平常状態ではデータ受信による割込イベントの発生のみ抑制されていたものが、リアルタイムアプリ36実行中は、バッファフル、データ受信エラー以外の割込要因にまで範囲を広げて適用することができる。
以上のように、実施の形態2における割込制御方法によれば、実施の形態1における効果に加えて、開始処理タスクを経由して処理させる割込要因を動的に決定することが可能であり、情報処理装置101で実行するアプリケーション等の特性に応じて、臨機応変に制御が可能である。
なお、リアルタイムアプリ36の実行が終了した時に、割込処理方法情報テーブル37を元の状態(図11の(a)の状態)に戻しても良い。
なお、本実施の形態2では、リアルタイムアプリ36実行中に開始処理タスクを使用して処理する割込要因の範囲を広げる例を示したが、逆に、開始処理タスクを使用して処理する割込要因の範囲を狭めても良い。例えば、ネットワークから受信データを受け取るたびに処理するアプリケーションを実行している場合は、割込要因がデータ受信である時の処理方法を即時処理に変更する。これにより、アプリケーションでの処理スループットを向上させることができる。
本発明にかかる割込制御方法は、割込イベントを発生させる割込要因の頻度が上昇しても、アプリケーション実行の妨げにはならず、また、処理すべきタスク量が多ければ多いほど開始処理タスクの実行が遅延される一方で、アイドル状態であれば即座に実行されてデータ処理が行われるため、CPU負荷や割込回数等を測定せずとも情報処理装置の負荷状態に応じて割込ハンドラやデータ処理の実行を制御できるので、ハードウェアデバイス等からの割込イベントを処理する情報処理装置で利用される割込制御方法等として有益である。
1、101 情報処理装置
2 デバイス
31、35 割込ハンドラ(割込処理)
32 開始処理タスク
33 データ処理タスク
37 割込処理方法情報テーブル
41 割込無効化手段
42 開始処理タスク起動手段
43 割込処理方法判断手段
51 データ処理タスク起動手段
61 割込データ処理手段
62 割込有効化手段
2 デバイス
31、35 割込ハンドラ(割込処理)
32 開始処理タスク
33 データ処理タスク
37 割込処理方法情報テーブル
41 割込無効化手段
42 開始処理タスク起動手段
43 割込処理方法判断手段
51 データ処理タスク起動手段
61 割込データ処理手段
62 割込有効化手段
Claims (5)
- 割込イベントを発生するデバイスを接続可能であり、前記割込イベントの発生可否を制御する機能を持ち、装置上で起動された各々の処理タスクに実行優先度を設定し、前記実行優先度に基づいて前記処理タスクを実行し、かつ、
前記割込イベントによって起動される割込処理の実行優先度が、通常の処理タスクの実行優先度よりも高く設定されている、情報処理装置における割込制御方法であって、
前記割込処理の実行時に、
前記割込イベントの発生を無効にする割込無効化ステップと、
通常の処理タスクと同等以下の実行優先度が設定された開始処理タスクを起動する開始処理タスク起動ステップと、
前記開始処理タスクの実行時に、
データ処理タスクを起動するデータ処理タスク起動ステップと、
前記データ処理タスクの実行時に、
前記割込イベントに起因する割込イベントデータを処理する割込データ処理ステップと、
前記割込イベントの発生を有効にする割込有効化ステップと、
を備えたことを特徴とする、割込制御方法。 - 前記データ処理タスクの実行優先度を通常の処理タスクよりも高く設定することにより、通常の処理タスクよりも高い実行優先度で前記割込データ処理ステップが実行されることを特徴とする、請求項1記載の割込制御方法。
- 前記割込処理の実行時に、
各々の割込要因に対する処理方法を記載した割込処理対応情報に基づいて処理方法を判断する割込処理方法判断ステップと、
を備えたことを特徴とする、請求項1または2に記載の割込制御方法。 - 当該情報処理装置上で実行される各々の処理タスクに実行優先度を設定し、前記実行優先度に基づいて前記処理タスクを実行する情報処理装置であって、
アプリケーション等を実行する通常の処理タスクと、
外部からの割込イベントによって起動される割込みハンドラと、
前記割込みハンドラの実行時に前記割り込みハンドラにより起動される開始処理タスクと、
前記開始処理タスクの実行時に前記開始処理タスクにより起動される、前記割込イベントに起因する割込イベントデータを処理するデータ処理タスクとを備え、
前記割込みハンドラは、通常の処理タスクの実行優先度よりも高い実行優先度が設定されており、かつ当該割り込みハンドラの実行時に、前記割込イベントの発生を無効にするものであり、
前記開始処理タスクは、前記通常の処理タスクと同等以下の実行優先度が設定されており、
前記データ処理タスクは、当該データ処理タスクの実行時に、前記割込イベントの発生を有効にする、ことを特徴とする情報処理装置。 - 前記データ処理タスクは、前記通常の処理タスクよりも高い実行優先度が設定されていることを特徴とする請求項4に記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005321948A JP2007128396A (ja) | 2005-11-07 | 2005-11-07 | 割込制御方法および情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005321948A JP2007128396A (ja) | 2005-11-07 | 2005-11-07 | 割込制御方法および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007128396A true JP2007128396A (ja) | 2007-05-24 |
Family
ID=38150984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005321948A Pending JP2007128396A (ja) | 2005-11-07 | 2005-11-07 | 割込制御方法および情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007128396A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8909835B2 (en) | 2009-05-14 | 2014-12-09 | International Business Machines Corporation | Computer system and method of controlling computer system |
-
2005
- 2005-11-07 JP JP2005321948A patent/JP2007128396A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8909835B2 (en) | 2009-05-14 | 2014-12-09 | International Business Machines Corporation | Computer system and method of controlling computer system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4580845B2 (ja) | タスク実行装置 | |
US8695002B2 (en) | Multi-threaded processors and multi-processor systems comprising shared resources | |
JP5498505B2 (ja) | データバースト間の競合の解決 | |
US7853743B2 (en) | Processor and interrupt controlling method | |
US7472214B2 (en) | Real-time embedded simple monitor method and computer product | |
JP4747307B2 (ja) | ネットワーク処理制御装置,プログラムおよび方法 | |
JP2013232207A (ja) | コンピュータマイクロジョブを中断せずに実行するようスケジュールするための方法、システムおよび装置 | |
JP2005056067A (ja) | Dma転送制御装置 | |
US20110078702A1 (en) | Multiprocessor system | |
JP4523910B2 (ja) | 並列処理装置及び並列処理方法及び並列処理プログラム | |
JP5014179B2 (ja) | Os優先度変更装置及びos優先度変更プログラム | |
JP2008046890A (ja) | マルチプロセッサシステム | |
JP2001216170A (ja) | 専用ポーリング処理組み込みオペレーティング方法及び専用ポーリング処理組み込みオペレーティングシステム | |
JP2001282558A (ja) | マルチオペレーティング計算機システム | |
WO2016033755A1 (zh) | 任务处理装置、电子设备及方法 | |
JP2006085428A (ja) | 並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラム | |
JPWO2003040948A1 (ja) | コンピュータ及び制御方法 | |
JP2006146758A (ja) | コンピュータシステム | |
JP2007128396A (ja) | 割込制御方法および情報処理装置 | |
JP2007323256A (ja) | 割込制御方法および情報処理装置 | |
JP2010140239A (ja) | 割り込みレイテンシーを短縮する装置及び方法 | |
JP2008225641A (ja) | コンピュータシステム、割り込み制御方法及びプログラム | |
WO2012101759A1 (ja) | プロセッサ処理方法、およびプロセッサシステム | |
JP4567586B2 (ja) | 処理装置 | |
JP5376042B2 (ja) | マルチコアプロセッサシステム、スレッド切り替え制御方法、およびスレッド切り替え制御プログラム |