JP2014182764A - 情報処理装置、情報処理方法、及びプログラム - Google Patents
情報処理装置、情報処理方法、及びプログラム Download PDFInfo
- Publication number
- JP2014182764A JP2014182764A JP2013058694A JP2013058694A JP2014182764A JP 2014182764 A JP2014182764 A JP 2014182764A JP 2013058694 A JP2013058694 A JP 2013058694A JP 2013058694 A JP2013058694 A JP 2013058694A JP 2014182764 A JP2014182764 A JP 2014182764A
- Authority
- JP
- Japan
- Prior art keywords
- task
- priority
- execution
- information processing
- assigning
- 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
Abstract
【課題】 特定のユーザによる設定や個別のタスクに対する設定を行うことなくタスクのリアルタイム応答性を向上させる。
【解決手段】 デバイス優先度情報400によりデバイスの優先度が高く設定されたフラッシュメモリデバイス215に対してアクセスを行ったタスク202(タスクB)に対し、当該デバイスの優先度と同じ高い優先度を付与する。これにより、タスク202(タスクB)を他のタスク201、203(タスクA、C)よりも優先させて起床させることができるようにする。
【選択図】 図3
【解決手段】 デバイス優先度情報400によりデバイスの優先度が高く設定されたフラッシュメモリデバイス215に対してアクセスを行ったタスク202(タスクB)に対し、当該デバイスの優先度と同じ高い優先度を付与する。これにより、タスク202(タスクB)を他のタスク201、203(タスクA、C)よりも優先させて起床させることができるようにする。
【選択図】 図3
Description
本発明は、情報処理装置、情報処理方法、及びプログラムに関し、特に、デバイスのアクセスを伴うタスクを制御するために用いて好適なものである。
従来、UNIX(登録商標)やLinux(登録商標)のようなプリエンプティブ(preemptive)なマルチタスクオペレーティングシステムが主にパーソナルコンピュータで用いられている。以下の説明では「オペレーティングシステム」を必要に応じて「OS」と称する。このようなマルチタスクOSには、一定時間内にOSに制御が戻ることにより得られる高い堅牢性を有することや、複数のユーザがOSの資源を共有できる等の様々な利点がある。
近年では、従来ではリアルタイムOSが用いられてきた組込み機器においても、ソフトウェアに対する機能の要求の拡大から、マルチタスクOSが採用されるようになった(以下の説明では「リアルタイムOS」を必要に応じて「RTOS」と称する)。
近年では、従来ではリアルタイムOSが用いられてきた組込み機器においても、ソフトウェアに対する機能の要求の拡大から、マルチタスクOSが採用されるようになった(以下の説明では「リアルタイムOS」を必要に応じて「RTOS」と称する)。
しかしながら、マルチタスクOSは一般的にRTOSと比べ、割り込み応答性能や、いわゆるデットライン保証性能(一定の時間内に処理を完了させることを保証する性能)が劣る傾向にある。その結果、即時の応答が求められるタスクの実行が待たされる場合がある。このような場合、映像機器や、音響機器において映像の途切れや音声の途切れ等を引き起こす問題が生じる虞がある。
このような問題に対して、割り込み処理の優先度をタスクに対して付与することや、所望のタスクをリアルタイムタスク化する技術がある(非特許文献1を参照)。
また、停止していたアプリケーションを再び起動する際に必要な復帰情報を復帰優先度毎に記憶しておき、復帰優先度の高い順に復帰情報を読み出し、当該復帰情報に対応するタスクを起動させる技術がある(特許文献1を参照)。
また、停止していたアプリケーションを再び起動する際に必要な復帰情報を復帰優先度毎に記憶しておき、復帰優先度の高い順に復帰情報を読み出し、当該復帰情報に対応するタスクを起動させる技術がある(特許文献1を参照)。
久米修平、外2名、「Linuxにおけるリアルタイムプリエンプションパッチに基づいたロボットのリアルタイム制御」、ロボティクス・メカトロニクス講演会高原概要集2008、"1P1-E16(1)"-"1P1-E14(4)",2008年6月6日、インターネット<URL:http://www.rls.mse.tcu.ac.jp/robotics/papers/2008/robomec/2008_robomec_SyuheiKume.pdf>
非特許文献1に記載の技術では、リアルタイム応答性を得たいタスクに対してリアルタイム優先度を付与することでリアルタイム応答性の向上を実現している。しかしながら、そのための操作は特権と呼ばれる特別な権限を有する者が行う必要がある。すなわち、任意のユーザがリアルタイム優先度を設定できるものではない。よって、リアルタイム性能を向上させたいタスクが既知の場合のみに適用可能であり、汎用的ではない。
また、特許文献1に記載の技術においても、アプリケーションの復帰情報及び復帰優先度を予め設定しておく必要がある。よって、例えば、ユーザが任意のアプリケーションをインストールした場合には、随時、復帰優先度を設定することが必要である。
本発明は、このような問題点に鑑みてなされたものであり、特定のユーザによる設定や個別のタスクに対する設定を行うことなくタスクのリアルタイム応答性を向上させることを目的とする。
本発明は、このような問題点に鑑みてなされたものであり、特定のユーザによる設定や個別のタスクに対する設定を行うことなくタスクのリアルタイム応答性を向上させることを目的とする。
本発明の情報処理装置は、処理の実行についての優先度に基づいて複数のタスクの何れかをマルチタスク処理により実行する情報処理装置であって、デバイスへのアクセスを伴うタスクを実行する実行手段と、前記デバイスへのアクセスに伴い、前記タスクの実行を一時的に中断する中断手段と、前記デバイスまたは前記デバイスの処理に対応して設定されている前記優先度を前記タスクに対して付与する付与手段と、前記付与手段により付与された前記優先度に基づいて、前記実行を一時的に中断した前記タスクの実行を再開する再開手段と、を有することを特徴とする。
本発明によれば、特定のユーザによる設定や個別のタスクに対する設定を行うことなくタスクのリアルタイム応答性を向上させることができる。
本発明の実施形態の説明を行う前に、本実施形態の前提となる技術を説明する。
まず、図9〜図12を参照しながら、一般的なマルチタスクOSにおける割り込み処理について説明する。
図9は、一般的なマルチタスクOSにおける割り込み処理を説明する図である。
図9に示すように、マルチタスクOSは一般的に、ユーザ空間900とカーネル空間901とに分けられる。ユーザ空間900では、複数のタスク902〜904(タスクA〜C)が動作する。各タスク902〜904(タスクA〜C)は、OSの機能であるスケジューラ905によってその動作が制御される。カーネル空間901は主にOSが動作する特権を有した空間である。カーネル空間901には、スケジューラ905と、レジスタや物理的なデータに直接アクセスを行うデバイスドライバ906とが含まれる。
まず、図9〜図12を参照しながら、一般的なマルチタスクOSにおける割り込み処理について説明する。
図9は、一般的なマルチタスクOSにおける割り込み処理を説明する図である。
図9に示すように、マルチタスクOSは一般的に、ユーザ空間900とカーネル空間901とに分けられる。ユーザ空間900では、複数のタスク902〜904(タスクA〜C)が動作する。各タスク902〜904(タスクA〜C)は、OSの機能であるスケジューラ905によってその動作が制御される。カーネル空間901は主にOSが動作する特権を有した空間である。カーネル空間901には、スケジューラ905と、レジスタや物理的なデータに直接アクセスを行うデバイスドライバ906とが含まれる。
次に、図10のフローチャートを参照しながら、タスク902(タスクA)が、デバイス909(デバイスB)へのアクセスを伴う処理を行う際の一連の処理について説明する。尚、デバイス908〜910(デバイスA〜C)は、ハードディスクドライブやカードメディアの様なディスクデバイスである。
まず、タスク902(タスクA)の処理が開始すると(ステップS1001)、タスク902(タスクA)はデータを要求する(ステップS302)。一般的にデータの要求は、カーネル空間901に対して、システムコールの様なインターフェースを介して行われる。データの要求を受け付けたカーネル空間901のデバイスドライバ906は、要求されたデータがバッファ等の1次記憶にプールされているか否かを判断する(ステップS1003)。
まず、タスク902(タスクA)の処理が開始すると(ステップS1001)、タスク902(タスクA)はデータを要求する(ステップS302)。一般的にデータの要求は、カーネル空間901に対して、システムコールの様なインターフェースを介して行われる。データの要求を受け付けたカーネル空間901のデバイスドライバ906は、要求されたデータがバッファ等の1次記憶にプールされているか否かを判断する(ステップS1003)。
この判断の結果、既にデータがプールされている場合、スケジューラ905は、要求されたデータをユーザ空間900へコピーし、タスク902(タスクA)に処理を移す(ステップS1004)。そして、タスク902(タスクA)は、要求したデータを受信する(ステップS1005)。
一方、ステップS1003でデータがプールされていないと判断された場合、デバイスドライバ906は、タスク902(タスクA)を一旦割り込み待ち状態にし、スリープさせる(ステップS1006)。その後、デバイスドライバ906は、デバイス909(デバイスB)にデータ処理を要求する(ステップS1007)。デバイス909(デバイスB)がデータ処理を行っている間は、タスク902(タスクA)以外のタスク903、904(タスクB、C)が動作する。
一方、ステップS1003でデータがプールされていないと判断された場合、デバイスドライバ906は、タスク902(タスクA)を一旦割り込み待ち状態にし、スリープさせる(ステップS1006)。その後、デバイスドライバ906は、デバイス909(デバイスB)にデータ処理を要求する(ステップS1007)。デバイス909(デバイスB)がデータ処理を行っている間は、タスク902(タスクA)以外のタスク903、904(タスクB、C)が動作する。
次に、図11のフローチャートを参照しながら、デバイス909(デバイスB)がデータ処理を完了した後の一連の処理について説明する。
まず、デバイス909(デバイスB)がデータ処理を完了すると(ステップS1101)、データ処理が完了したイベントとしてハードウェアより割り込みが発生し、OSに通知される(ステップS1102)。OSが当該割り込みを検知すると、割り込み処理部907は、当該割り込みに対しての処理を行う。当該割り込みに対しての処理が完了し、前記要求されたデータの準備が整ったら、スケジューラ905は、スリープ状態で待機しているタスク202(タスクA)を起床(起動)させる(ステップS1103)。最後に、スケジューラ905は、次のスケジューリング機会で起床させるタスクを選択し、タスク切り替え処理を行う(ステップS1104)。このとき、スケジューラ905は、実行可能な状態となっているタスクの動的優先度を元に、現時点で最も優先度の高いタスクを選択し、実行させる。
まず、デバイス909(デバイスB)がデータ処理を完了すると(ステップS1101)、データ処理が完了したイベントとしてハードウェアより割り込みが発生し、OSに通知される(ステップS1102)。OSが当該割り込みを検知すると、割り込み処理部907は、当該割り込みに対しての処理を行う。当該割り込みに対しての処理が完了し、前記要求されたデータの準備が整ったら、スケジューラ905は、スリープ状態で待機しているタスク202(タスクA)を起床(起動)させる(ステップS1103)。最後に、スケジューラ905は、次のスケジューリング機会で起床させるタスクを選択し、タスク切り替え処理を行う(ステップS1104)。このとき、スケジューラ905は、実行可能な状態となっているタスクの動的優先度を元に、現時点で最も優先度の高いタスクを選択し、実行させる。
ここで、タスク902(タスクA)は、スケジューラ905によって起床されているため、実行可能な状態となっている。また、これと同時にタスク903、904(タスクB、C)も実行可能な状態になっているものとする。一例として、図11のステップS1104(タスク切り替え処理)の時点での各タスクの動的優先度1200〜1202が図12に示す様に設定されているものとする。図12に示す動的優先度の値として高い値が設定されているタスクほど優先度が高いタスクであるものとする。図12に示す例では、タスク904(タスクC)が選択され、タスク902(タスクA)は、タスク904(タスクC)、タスク903(タスクB)が実行された後に実行されるため、実行が待たされることになる。タスク902(タスクA)がリアルタイム性を要求する様な処理であって、即時の応答が求められる処理であっても、タスク902(タスクA)において大きなレイテンシ(latency)を生じることとなる。その結果、前述したように、映像機器や、音響機器において映像の途切れや音声の途切れ等を引き起こす問題となる。
図13は、リアルタイム性能を考慮したマルチタスクOSにおける割り込み処理を説明する図である。
図13において、デバイスドライバ906は、優先度付き割り込み処理部1301を備える。優先度付き割り込み処理部1301は、図14に示すように、割り込み処理の優先度情報1400を備える。割り込み処理の優先度情報1400によって、各割り込み処理に対して静的優先度が設定される。この静的優先度は、OSの初期化時に予め設定される。また、リアルタイム性を得たいタスクを、リアルタイムタスク1300(リアルタイムタスクA)として設定し、このタスクに対して静的優先度を付与する。このようにすることで割り込み処理からの応答性の向上を実現することができ、前記問題を解消することができる。
しかしながら、このようにした場合には、特別な権限を有するユーザでなければ、タスクに対して静的優先度を付与することができない。よって、前述したように、リアルタイム性能を向上させたいタスクが既知の場合のみに適用可能であり、汎用的ではない。
図13において、デバイスドライバ906は、優先度付き割り込み処理部1301を備える。優先度付き割り込み処理部1301は、図14に示すように、割り込み処理の優先度情報1400を備える。割り込み処理の優先度情報1400によって、各割り込み処理に対して静的優先度が設定される。この静的優先度は、OSの初期化時に予め設定される。また、リアルタイム性を得たいタスクを、リアルタイムタスク1300(リアルタイムタスクA)として設定し、このタスクに対して静的優先度を付与する。このようにすることで割り込み処理からの応答性の向上を実現することができ、前記問題を解消することができる。
しかしながら、このようにした場合には、特別な権限を有するユーザでなければ、タスクに対して静的優先度を付与することができない。よって、前述したように、リアルタイム性能を向上させたいタスクが既知の場合のみに適用可能であり、汎用的ではない。
以上の技術を前提として、以下に、本発明の実施形態を説明する。
(第1の実施形態)
まず、第1の実施形態を説明する。
図1は、プログラムの実行の対象となる情報処理装置のハードウェア構成の一例を示すブロック図である。
CPU(Central Processing Unit)101は、情報処理装置100全体を制御する。CPU101によって、オペレーティングシステム(OS)やプログラムが動作する。本実施形態では、OSはマルチタスクOSであり、情報処理装置100はマルチタスク処理を行う。主記憶装置102は、プログラムやデータを一時的に記憶するRAM(Random Access Memory)であり、システムメモリとも呼ばれる。二次記憶装置103は、HDD(ハードディスクドライブ)のような、データやプログラムを記録しておくことができる不揮発な記録媒体である。周辺機器104は、ネットワーク機器やシリアル通信機器等の情報処理装置100に接続される機器である。バス105は、各ユニットを通信可能に接続するシステムバスである。
(第1の実施形態)
まず、第1の実施形態を説明する。
図1は、プログラムの実行の対象となる情報処理装置のハードウェア構成の一例を示すブロック図である。
CPU(Central Processing Unit)101は、情報処理装置100全体を制御する。CPU101によって、オペレーティングシステム(OS)やプログラムが動作する。本実施形態では、OSはマルチタスクOSであり、情報処理装置100はマルチタスク処理を行う。主記憶装置102は、プログラムやデータを一時的に記憶するRAM(Random Access Memory)であり、システムメモリとも呼ばれる。二次記憶装置103は、HDD(ハードディスクドライブ)のような、データやプログラムを記録しておくことができる不揮発な記録媒体である。周辺機器104は、ネットワーク機器やシリアル通信機器等の情報処理装置100に接続される機器である。バス105は、各ユニットを通信可能に接続するシステムバスである。
図2は、情報処理装置100の詳細な構成の一例を示すブロック図である。
情報処理装置100には、入出力装置214と、フラッシュメモリデバイス215と、HDD216とが接続される。
入出力装置214は、キーボードやタッチパネルのような入力装置と、ディスプレイのような出力装置とを備える。入出力装置214は、周辺機器104に属するものである。フラッシュメモリデバイス215には、映像データ217等が記録される。HDD216には、OS200が使用するデータ等が記録される。フラッシュメモリデバイス215及びHDD216は、二次記憶装置103に属するものである。図2に示す例では、これらのハードウェア(入出力装置214、フラッシュメモリデバイス215、及びHDD216)がデバイスとなる。
情報処理装置100には、入出力装置214と、フラッシュメモリデバイス215と、HDD216とが接続される。
入出力装置214は、キーボードやタッチパネルのような入力装置と、ディスプレイのような出力装置とを備える。入出力装置214は、周辺機器104に属するものである。フラッシュメモリデバイス215には、映像データ217等が記録される。HDD216には、OS200が使用するデータ等が記録される。フラッシュメモリデバイス215及びHDD216は、二次記憶装置103に属するものである。図2に示す例では、これらのハードウェア(入出力装置214、フラッシュメモリデバイス215、及びHDD216)がデバイスとなる。
これらのハードウェア(デバイス)は、システムメモリ上で動作するOS200によって管理される。OS200は、ユーザアプリケーションとして各サービスを提供するタスク201〜203と、API(Application Programming Interface)204と、カーネル205と、を含む。
API204は、タスク201〜203とカーネル205との間の通信を行う。
カーネル205には、各ハードウェアを制御するソフトウェアであるデバイスドライバ206〜208と、割り込み処理209〜211(割り込み処理A〜C)と、が含まれる。さらに、カーネル205には、タスクの実行手順を管理するスケジューラ212と、デバイス優先度判定部213と、が含まれる。デバイス優先度判定部213は、デバイスの優先度情報を記録したリストを有し、デバイスの優先度を判定する。
API204は、タスク201〜203とカーネル205との間の通信を行う。
カーネル205には、各ハードウェアを制御するソフトウェアであるデバイスドライバ206〜208と、割り込み処理209〜211(割り込み処理A〜C)と、が含まれる。さらに、カーネル205には、タスクの実行手順を管理するスケジューラ212と、デバイス優先度判定部213と、が含まれる。デバイス優先度判定部213は、デバイスの優先度情報を記録したリストを有し、デバイスの優先度を判定する。
ここで、タスク201〜203(タスクA〜C)が動作している場合の情報処理装置100における処理の一例について説明する。
タスク202(タスクB)は、フラッシュメモリデバイス215に記録された映像データ217を読み出し、映像データ217を処理した後に入出力装置214に映像として出力する。尚、ここでは、タスク202(タスクB)の動作が他のタスクの動作によって阻害されることがなく、且つ、出力される映像が途切れることなく連続的に処理がなされることがタスク202(タスクB)に求められるものとする。
タスク202(タスクB)は、フラッシュメモリデバイス215に記録された映像データ217を読み出し、映像データ217を処理した後に入出力装置214に映像として出力する。尚、ここでは、タスク202(タスクB)の動作が他のタスクの動作によって阻害されることがなく、且つ、出力される映像が途切れることなく連続的に処理がなされることがタスク202(タスクB)に求められるものとする。
このような場合の情報処理装置100における詳細な処理の流れの一例について説明する。図3は、本実施形態における割り込み処理の一例を説明する図である。
図3において、タスク202(タスクB)が、API204を介して、カーネル205に対して映像データ217の要求を行う。カーネル205内のデバイスドライバ207(デバイスドライバB)は、この要求を受け、フラッシュメモリデバイス215に記録された映像データ217へのアクセス処理を行う。デバイスドライバ207(デバイスドライバB)は、フラッシュメモリデバイス215からのデータの取得が整うまでタスク202(タスクB)を待ち状態とさせるために、タスク202(タスクB)を割り込み待ちの待機状態にする。これにより、タスク202(タスクB)の実行は一時的に中断される。
図3において、タスク202(タスクB)が、API204を介して、カーネル205に対して映像データ217の要求を行う。カーネル205内のデバイスドライバ207(デバイスドライバB)は、この要求を受け、フラッシュメモリデバイス215に記録された映像データ217へのアクセス処理を行う。デバイスドライバ207(デバイスドライバB)は、フラッシュメモリデバイス215からのデータの取得が整うまでタスク202(タスクB)を待ち状態とさせるために、タスク202(タスクB)を割り込み待ちの待機状態にする。これにより、タスク202(タスクB)の実行は一時的に中断される。
フラッシュメモリデバイス215は、データ取得処理が完了すると割り込みを発行してカーネル205へ処理の完了を知らせる。この割り込みを受け取ったカーネル205は、フラッシュメモリデバイス215による割り込みに専用の割り込み処理210(割り込み処理B)にて、フラッシュメモリデバイス215より取得したデータをタスク202(タスクB)へ渡すための処理を行う。次に、デバイス優先度判定部213は、フラッシュメモリデバイス215の優先度を確認する。図4は、デバイス優先度判定部213が備えるデバイス優先度情報400のリストの一例を示す図である。
デバイス優先度情報400には、デバイス名と、そのデバイス名で特定されるデバイスに設定された優先度とが相互に対応づけられて予め記録される。ここでは、優先度は、「0」から「99」までの値をとり、「0」は優先度が指定されていない状態を表す。「1」から「99」の値は優先度の高さを表し、値が大きいほど優先度が高いことを表す。ここでは、図4に示す例のように、フラッシュメモリデバイス215に対する優先度が「99」であり、最も優先度が高いものとする。
デバイス優先度情報400には、デバイス名と、そのデバイス名で特定されるデバイスに設定された優先度とが相互に対応づけられて予め記録される。ここでは、優先度は、「0」から「99」までの値をとり、「0」は優先度が指定されていない状態を表す。「1」から「99」の値は優先度の高さを表し、値が大きいほど優先度が高いことを表す。ここでは、図4に示す例のように、フラッシュメモリデバイス215に対する優先度が「99」であり、最も優先度が高いものとする。
デバイス優先度判定部213は、デバイス優先度情報400より、フラッシュメモリデバイス215の優先度が「99」であると判定する。次に、デバイスドライバ207(デバイスドライバB)が有するタスク優先度付与部300は、デバイス優先度判定部213によって判定されたデバイス優先度(=99)と同一のタスク優先度(=99)をタスク202(タスクB)に対して付与する。また、デバイスドライバ207(デバイスドライバB)は、割り込み待ちの待機状態であったタスク202(タスクB)の状態を実行可能状態に変更する。最後にカーネル205は、スケジューラ212を呼び出して、次に実行すべきタスクを決定し、実行するタスクを切り替える。このとき、タスク優先度付与部300によってタスク202(タスクB)の優先度は、最も高い優先度(=99)に設定されている。このため、スケジューラ212は、タスク202(タスクB)を選択し、実行する。これにより、一時的に中断されたタスク202(タスクB)の実行が再開する。
一方、一度、高い優先度が付与されたタスクを元の優先度に戻す方法としては、例えば、以下の方法がある。タスク優先度付与部300は、タスクの優先度を変更する際に、変更前のタスクの優先度を記録しておく。そして、タスク優先度付与部300は、一定の回数、スケジューラ212が呼び出された際に、変更後のタスクの優先度を変更前のタスクの優先度に戻す。この他、例えば、タスク202(タスクB)が映像データ217の処理を完了したことを検知することに伴い、タスク202(タスクB)の優先度をスケジューラ212が元の優先度に戻してもよい。以上のように、一時的に中断されたタスクの実行が再開された後、当該タスクの実行が不要と見なせる所定の条件が成立した場合に、タスク優先度付与部300に付与された優先度が削除される。そして、タスク202(タスクB)に元々付与されていた優先度がタスク202に再び付与される。
以上のように本実施形態では、デバイス優先度情報400によりデバイスの優先度が高く設定されたフラッシュメモリデバイス215に対してアクセスを行ったタスク202(タスクB)に対し、当該デバイスの優先度と同じ高い優先度を付与する。これにより、タスク202(タスクB)を他のタスク201、203(タスクA、C)よりも優先させて起床させることができる。したがって、タスク202(タスクB)の復帰時間を小さくすることが可能となり、高いリアルタイム応答性を得ることが可能となる。よって、所定のデバイスへのアクセスを伴い、且つ、リアルタイム応答性能が求められるアプリケーションに対する特権を持った管理者による優先度の設定や、個別のタスクに対する設定(操作)を行うことなく、タスクのリアルタイム応答性の向上を実現できる。
尚、本実施形態では、フラッシュメモリデバイス215の優先度が「99」であり、その他のデバイスの優先度が「0(ゼロ)」である場合を例に挙げて説明した(図4を参照)。しかしながら、デバイスの優先度の内容はこのようなものに限定されるものではない。フラッシュメモリデバイス215以外のデバイスの優先度は「0(ゼロ)」でなくてもよい。フラッシュメモリデバイス215以外のデバイスの優先度が最も高くなるようにしてもよい。
(第2の実施形態)
次に、本発明の第2の実施形態を説明する。本実施形態では、図14に示すように、情報処理装置の割り込み処理が静的な優先度を有しており、各割り込みに対して優先度を考慮した割り込み処理を行う場合について説明する。このように本実施形態と第1の実施形態とは、割り込み処理に静的な優先度を設定することに伴う構成及び処理が主として異なる。したがって、本実施形態の説明において、前述したものと同一の部分については、図1〜図4、図9〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
次に、本発明の第2の実施形態を説明する。本実施形態では、図14に示すように、情報処理装置の割り込み処理が静的な優先度を有しており、各割り込みに対して優先度を考慮した割り込み処理を行う場合について説明する。このように本実施形態と第1の実施形態とは、割り込み処理に静的な優先度を設定することに伴う構成及び処理が主として異なる。したがって、本実施形態の説明において、前述したものと同一の部分については、図1〜図4、図9〜図14に付した符号と同一の符号を付す等して詳細な説明を省略する。
図8は、タスク優先度付与部300が備える割り込み処理の優先度情報800の一例を示す図である。本実施形態では、割り込み処理の静的な優先度はOSの初期化時に決定されているものとする。また、この静的な優先度は、図8に示すように設定されているものとする。
図5は、本実施形態における割り込み処理の一例を説明する図である。図6は、タスク202(タスクB)がフラッシュメモリデバイス215へのアクセスを伴う処理を行う際の一連の処理について説明するフローチャートである。図7は、フラッシュメモリデバイス215が処理を完了した後の一連の処理について説明するフローチャートである。
図5は、本実施形態における割り込み処理の一例を説明する図である。図6は、タスク202(タスクB)がフラッシュメモリデバイス215へのアクセスを伴う処理を行う際の一連の処理について説明するフローチャートである。図7は、フラッシュメモリデバイス215が処理を完了した後の一連の処理について説明するフローチャートである。
図6において、まず、タスク202(タスクB)が処理を開始すると(ステップS601)、API204を介して、デバイスドライバ207(デバイスドライバB)に対して、映像データ217の要求を行う(ステップS602)。カーネル205内のデバイスドライバ207(デバイスドライバB)は、この要求の内容に応じた処理を行う。ここで、デバイスドライバ207(デバイスドライバB)は、カーネル205内にキャッシュ等のデータプールとして、映像データ217の準備が既に整っているか否かを判断する(ステップS603)。
この判断の結果、映像データ217の準備が既に整っている場合、スケジューラ212は、タスク202(タスクB)への映像データ217のコピーを行う(ステップS604)。そして、スケジューラ212は、タスク202(タスクB)の処理を復帰させる(ステップS605)。
一方、ステップS603で映像データ217の準備が整っていないと判断された場合には、次の処理が行われる。すなわち、デバイスドライバ207(デバイスドライバB)は、映像データ217の準備が整うまで、タスク202(タスクB)を一旦割り込み待ち状態にし、スリープさせる(ステップS606)。これにより、タスク202(タスクB)の実行は一時的に中断する。そして、デバイスドライバ207(デバイスドライバB)は、フラッシュメモリデバイス215へ映像データ217の要求を行う。
一方、ステップS603で映像データ217の準備が整っていないと判断された場合には、次の処理が行われる。すなわち、デバイスドライバ207(デバイスドライバB)は、映像データ217の準備が整うまで、タスク202(タスクB)を一旦割り込み待ち状態にし、スリープさせる(ステップS606)。これにより、タスク202(タスクB)の実行は一時的に中断する。そして、デバイスドライバ207(デバイスドライバB)は、フラッシュメモリデバイス215へ映像データ217の要求を行う。
フラッシュメモリデバイス215は、映像データ217の取得を完了すると(ステップS701)、割り込みを発生させ、OS200に通知する(ステップS702)。OS200がこの割り込みを受信すると、カーネル205は、割り込み処理の優先度情報800を確認する。そして、カーネル205は、当該割り込みに対する割り込み処理である、優先度付き割り込み処理500(優先度付き割り込み処理B)の優先度が最も高いものか否かを判断する(ステップS703)。
この判断の結果、優先度付き割り込み処理500(優先度付き割り込み処理B)よりも高い優先度の割り込み処理が存在する場合には、当該高い優先度の割り込み処理が完了するまで待機する(ステップS703、S704)。そして、優先度付き割り込み処理500(優先度付き割り込み処理B)よりも高い優先度の割り込み処理がない、又は、優先度付き割り込み処理500(優先度付き割り込み処理B)よりも高い優先度の割り込み処理が完了済みである場合、次の処理が行われる。すなわち、スケジューラ212は、優先度付き割り込み処理500(優先度付き割り込み処理B)の処理を実行する(ステップS705)。そして、スケジューラ212は、タスク202(タスクB)への映像データ217のコピーを行う(ステップS706)。
次に、タスク202(タスクB)を起床させる前に、タスク優先度付与部300は、割り込み処理の優先度情報800を参照する(ステップS707)。割り込み処理の優先度情報800より、本例では、フラッシュメモリデバイス215の割り込み処理(フラッシュメモリ割り込み処理)の優先度は「49」に設定されている。このため、タスク優先度付与部300は、タスク202(タスクB)の優先度としてこれを継承させ、タスク202(タスクB)の優先度を「49」に決定する(ステップS708)。
最後に、デバイスドライバ207(デバイスドライバB)は、スケジューラ212を介して、ステップS708で設定された優先度をタスク202(タスクB)に設定し、タスク202(タスクB)を起床させる(ステップS709)。タスク202(タスクB)の優先度が全てのタスクの優先度の中で最も高いものであれば、スケジューラ212が次に実行すべきタスクはタスク202(タスクB)となる。これにより、一時的に中断されたタスク202(タスクB)の実行が再開する。
最後に、デバイスドライバ207(デバイスドライバB)は、スケジューラ212を介して、ステップS708で設定された優先度をタスク202(タスクB)に設定し、タスク202(タスクB)を起床させる(ステップS709)。タスク202(タスクB)の優先度が全てのタスクの優先度の中で最も高いものであれば、スケジューラ212が次に実行すべきタスクはタスク202(タスクB)となる。これにより、一時的に中断されたタスク202(タスクB)の実行が再開する。
一方、一度、高い優先度が付与されたタスクを元の優先度に戻す方法としては、第1の実施形態で説明したように、タスク優先度付与部300は、タスクの優先度を変更する際に、変更前のタスクの優先度を記録しておき、この変更前のタスクの優先度に戻す。すなわち、タスク優先度付与部300は、一定の回数、スケジューラ212が呼び出された場合に、タスク202(タスクB)の優先度を元の優先度に戻すことができる。また、タスク優先度付与部300は、タスク202(タスクB)が映像データ217の処理を完了したことをスケジューラ212が検知した場合に、タスク202(タスクB)の優先度を元の優先度に戻してもよい。以上のように、一時的に中断されたタスクの実行が再開された後、当該タスクの実行が不要と見なせる所定の条件が成立した場合に、タスク優先度付与部300に付与された優先度が削除される。そして、タスク202(タスクB)に元々付与されていた優先度がタスク202に再び付与される。
以上のように、タスクに対して、デバイスの割り込み処理の優先度を継承させることによっても、第1の実施形態と同様の効果が得られる。すなわち、所定のデバイスへのアクセスを伴い、且つ、リアルタイム応答性能が求められるアプリケーションに対する特権を持った管理者による優先度の設定や、個別のタスクに対する設定(操作)を行うことなく、タスクのリアルタイム応答性の向上を実現できる。
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
(その他の実施例)
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が当該プログラムを読み出して実行する。
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)が当該プログラムを読み出して実行する。
212 スケジューラ、213 デバイス優先度判定部、300 タスク優先度付与部
Claims (9)
- 処理の実行についての優先度に基づいて複数のタスクの何れかをマルチタスク処理により実行する情報処理装置であって、
デバイスへのアクセスを伴うタスクを実行する実行手段と、
前記デバイスへのアクセスに伴い、前記タスクの実行を一時的に中断する中断手段と、
前記デバイスまたは前記デバイスの処理に対応して設定されている前記優先度を前記タスクに対して付与する付与手段と、
前記付与手段により付与された前記優先度に基づいて、前記実行を一時的に中断した前記タスクの実行を再開する再開手段と、を有することを特徴とする情報処理装置。 - 前記中断手段により前記タスクの実行が一時的に中断されているときに、前記デバイスまたは前記デバイスの処理に対応して設定されている前記優先度を判定する判定手段を更に有し、
前記付与手段は、前記判定手段により判定された前記優先度を前記タスクに対して付与することを特徴とする請求項1に記載の情報処理装置。 - 前記付与手段により前記タスクに対して付与された前記優先度を、前記再開手段により前記実行を一時的に中断した前記タスクの実行が再開された後に削除する削除手段を更に有することを特徴とする請求項1又は2に記載の情報処理装置。
- 前記タスクには、処理の実行についての優先度が付与されており、
前記付与手段は、前記タスクに対して付与されている前記優先度を前記設定されている優先度に変更し、
前記削除手段は、前記付与手段により前記タスクに対して付与された前記優先度を、前記変更の前の前記優先度に戻すことを特徴とする請求項3に記載の情報処理装置。 - 処理の実行についての優先度に基づいて複数のタスクの何れかをマルチタスク処理により実行する情報処理方法であって、
デバイスへのアクセスを伴うタスクを実行する実行工程と、
前記デバイスへのアクセスに伴い、前記タスクの実行を一時的に中断する中断工程と、
前記デバイスまたは前記デバイスの処理に対応して設定されている前記優先度を前記タスクに対して付与する付与工程と、
前記付与工程により付与された前記優先度に基づいて、前記実行を一時的に中断した前記タスクの実行を再開する再開工程と、を有することを特徴とする情報処理方法。 - 前記中断工程により前記タスクの実行が一時的に中断されているときに、前記デバイスまたは前記デバイスの処理に対応して設定されている前記優先度を判定する判定工程を更に有し、
前記付与工程は、前記判定工程により判定された前記優先度を前記タスクに対して付与することを特徴とする請求項5に記載の情報処理方法。 - 前記付与工程により前記タスクに対して付与された前記優先度を、前記再開工程により前記実行を一時的に中断した前記タスクの実行が再開された後に削除する削除工程を更に有することを特徴とする請求項5又は6に記載の情報処理方法。
- 前記タスクには、処理の実行についての優先度が付与されており、
前記付与工程は、前記タスクに対して付与されている前記優先度を前記設定されている優先度に変更し、
前記削除工程は、前記付与工程により前記タスクに対して付与された前記優先度を、前記変更の前の前記優先度に戻すことを特徴とする請求項7に記載の情報処理方法。 - 処理の実行についての優先度に基づいて複数のタスクの何れかをマルチタスク処理により実行するためのプログラムであって、
デバイスへのアクセスを伴うタスクを実行する実行手段と、
前記デバイスへのアクセスに伴い、前記タスクの実行を一時的に中断する中断手段と、
前記デバイスまたは前記デバイスの処理に対応して設定されている前記優先度を前記タスクに対して付与する付与手段と、
前記付与手段により付与された前記優先度に基づいて、前記実行を一時的に中断した前記タスクの実行を再開する再開手段としてコンピュータを機能させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013058694A JP2014182764A (ja) | 2013-03-21 | 2013-03-21 | 情報処理装置、情報処理方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013058694A JP2014182764A (ja) | 2013-03-21 | 2013-03-21 | 情報処理装置、情報処理方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014182764A true JP2014182764A (ja) | 2014-09-29 |
Family
ID=51701372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013058694A Pending JP2014182764A (ja) | 2013-03-21 | 2013-03-21 | 情報処理装置、情報処理方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014182764A (ja) |
-
2013
- 2013-03-21 JP JP2013058694A patent/JP2014182764A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10649935B2 (en) | Deferred inter-processor interrupts | |
JP6199477B2 (ja) | ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法 | |
US7844970B2 (en) | Method and apparatus to control priority preemption of tasks | |
KR101366075B1 (ko) | 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치 | |
US9507631B2 (en) | Migrating a running, preempted workload in a grid computing system | |
US10152359B2 (en) | Load balancing method for multicore mobile terminal | |
US10509739B1 (en) | Optimized read IO for mix read/write scenario by chunking write IOs | |
JP2013524362A (ja) | 便宜的マルチタスキング | |
TW201432565A (zh) | 用於執行緒排程的方法以及系統 | |
KR101901587B1 (ko) | 연성 실시간 운영체제의 실시간성을 확보하는 방법 및 장치 | |
US10719245B1 (en) | Transactional IO scheduler for storage systems with multiple storage devices | |
WO2021174698A1 (zh) | 虚拟机快照创建方法、装置、存储介质及计算机设备 | |
US8977752B2 (en) | Event-based dynamic resource provisioning | |
CN112231238A (zh) | 使用存储器压缩来减少存储器提交开销 | |
US10289306B1 (en) | Data storage system with core-affined thread processing of data movement requests | |
US10592123B1 (en) | Policy driven IO scheduler to improve write IO performance in hybrid storage systems | |
KR101535792B1 (ko) | 운영체제 구성 장치 및 방법 | |
US10599340B1 (en) | Policy driven IO scheduler to improve read IO performance in hybrid storage systems | |
JP5692355B2 (ja) | コンピュータシステム、制御システム、制御方法および制御プログラム | |
JP2014182764A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
Hahn et al. | Improving user experience of android smartphones using foreground app-aware I/O management | |
KR102175999B1 (ko) | 컴퓨터 시스템에서의 입출력 완료 방법 및 이를 위한 컴퓨터 시스템 | |
US10430291B1 (en) | Effective method to backup VMs in larger VM infrastructure | |
JP5994339B2 (ja) | 仮想化システム、ストレージ装置、ストレージデータ移行方法、及びストレージデータ移行プログラム | |
KR100676671B1 (ko) | 유저 쓰레드 관리 장치 및 그 방법 |