(57)【要約】【課題】  ブロックデバイスに対するＩ／Ｏデータ量のタスク間での不均一を軽減して、録画再生に関するマルチタスク処理を良好に行うことのできる録画再生装置を提供する。【解決手段】  ブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数のタスクが実行されるとき、各タスクそれぞれのブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、ブロックデバイスに対するＩ／Ｏスケジューリングを行う。また、Ｉ／Ｏリクエストの実行終了時点のスライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルではデフォルトのスライスタイムに戻す。【選択図】  図５
2012079272.tif 000002
【特許請求の範囲】
【請求項１】
録画用の記録媒体として用いられるブロックデバイスと、
前記ブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するＩ／Ｏスケジューリングを行う制御部と
を具備する録画再生装置。
【請求項２】
請求項１に記載の録画再生装置であって、
前記制御部は、選択中のタスクのリクエストキューが空である場合には、前記スライスタイムの経過を待たずにタスクの切り替えを行う
録画再生装置。
【請求項３】
請求項１または２に記載の録画再生装置であって、
前記制御部は、Ｉ／Ｏリクエストの実行終了時点の前記スライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルでは前記デフォルトのスライスタイムに戻す
録画再生装置。
【請求項４】
録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するＩ／Ｏスケジューリングを行う
Ｉ／Ｏスケジューリング方法。
【請求項５】
録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するＩ／Ｏスケジューリングを行う制御部としてコンピュータを動作させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチタスク環境においてブロックデバイスに対するＩ／Ｏスケジューリングを行うことの可能な録画再生装置、Ｉ／Ｏスケジューリング方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、複数のチャンネルの同時録画や、録画済みの番組を再生しながら別の番組を録画したりすることのできる録画再生装置が一般的となってきている。このような録画再生装置のストレージとしては、ブルーレイドライブやハードディスクドライブなどのブロックデバイスが用いられる。ブロックデバイスとは、データの書き込みおよび読み出しが所定の単位（ブロック単位）で行われるストレージである。ブロックデバイスに対するデータの入出力はファイルシステムを通じて行われる。
【０００３】
ブロックデバイスへの複数チャンネルの同時録画や、同時録画再生を行うためには、ブロックデバイスに対するＩ／Ｏ（入出力）のリソースを、各処理に公平に割り当てることが重要となる。ブロックデバイスに対するＩ／Ｏリソースを複数のタスクに公平に割り当てる技術としてはＩ／Ｏスケジューリングが知られている。
【０００４】
例えば、ＣＦＱ（Ｃｏｍｐｌｅｔｅｌｙ Ｆａｉｒ Ｑｕｅｕｉｎｇ）スケジューラは、現在Ｌｉｎｕｘカーネルに標準に組み込まれたＩ／Ｏスケジューラである（特許文献１参照）。ＣＦＱスケジューラでは、Ｉ／Ｏ要求を、その優先度に対応したリクエストキューに登録する。各リクエストキューにはＩ／Ｏ要求の優先度に応じて決められるスライスタイムが設定されている。通常、リアルタイム性の要求度が比較的高いタスクからのＩ／Ｏ要求には高い優先度が与えられ、リアルタイム性の要求度が比較的低いタスクからのＩ／Ｏ要求には低い優先度が与えられる。
【０００５】
ＣＦＱスケジューラは、隣り合うセクタに対するＩ／Ｏ要求を同じ種類（読み出し要求、書き込み要求）毎に１つのＩ／Ｏリクエストと呼ばれるデータ構造にまとめてリクエストキューに登録する。ＣＦＱスケジューラは、複数のリクエストキューの中から、空でない１つのリクエストキューを例えばラウンドロビン方式で選択し、選択されたリクエストキューからスライスタイムの時間内にＩ／Ｏリクエストを１つずつ選択してデバイスドライバに渡す。スライスタイムが経過した後、ＣＦＱスケジューラは、優先度が同じまたは次に高いリストを選択し、そのリストからＩ／Ｏリクエストを選択してデバイスドライバにわたす。これによりデバイスドライバによってＩ／Ｏリクエストが実行される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１１３５２４号公報（段落[００５４−００５８]）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前述したように、ＣＦＱスケジューラでは、リアルタイム性の要求度が比較的高いタスクからのＩ／Ｏ要求には高い優先度が与えられ、リアルタイム性の要求度が比較的低いタスクからのＩ／Ｏ要求には低い優先度が与えられる。より具体的には、ブロックデバイスに対するアクセス頻度（Ｉ／Ｏ要求の発生頻度）などが優先度を決める指標として使われる。
【０００８】
しかしながら、早送り再生時は通常再生時に比べ、ブロックデバイスから高レートでデータが読み出される必要があることから単位時間当たりのＩ／Ｏ要求の数が大きくなる。このため、典型的なＩ／Ｏスケジューリングの手法にならってブロックデバイスに対するアクセス頻度を加味して優先度を決定することとした場合、早送り再生のためのＩ／Ｏ要求に対して高い優先度が割り当てられ、それに伴って長いスライスタイムが割り当てられることになる。しかしながら、特定のタスクに長いスライスタイムが割り当てられた場合、そのタスクの処理にブロックデバイスに対するＩ／Ｏリソースが大きく奪われる。このため、早送り再生と同時に録画や通常再生など、他のリアルタイムタスクが実行される場合には、これら他のリアルタイムタスクの処理に十分なＩ／Ｏリソースを割り当てることができなくなるおそれがある。特に、番組の録画や再生では、ブロックデバイスに対して比較的長い時間のリードあるいはライトが連続して行われるため、継続的なＩ／Ｏリソースの不足がバッファアンダーランなどの実害として生じるおそれがあった。
【０００９】
以上のような事情に鑑み、本発明の目的は、ブロックデバイスに対するＩ／Ｏデータ量のタスク間での不均一を軽減して、録画再生に関するマルチタスク処理を良好に行うことのできる録画再生装置、Ｉ／Ｏスケジューリング方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の一形態に係る録画再生装置は、録画用の記録媒体として用いられるブロックデバイスと、前記ブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するＩ／Ｏスケジューリングを行う制御部とを具備する。
【００１１】
本発明では、タスク毎のスライスタイムを予め一意に設定しておく。タスク毎の固定のスライスタイムは、ブロックデバイスに対するアクセス頻度が高いリアルタイムタスクほど長くするといった典型的なＩ／Ｏスケジューリングの手法に倣って設定されるのではなく、例えば、各タスクそれぞれのブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるような値に設定される。これにより、各タスク間でブロックデバイスに対するＩ／Ｏリソースを共有するにあたって、タスク間でのＩ／Ｏデータ量の不均一を軽減できる。このことは、録画再生装置において早送り再生と放送番組の録画を同時に行う場合に特に有益である。なぜなら、早送り再生では録画時に比較して高いレートでブロックデバイスに対するＩ／Ｏ処理が行われる。典型的なＩ／Ｏスケジューリングに拠ると、この早送り再生のタスクによってＩ／Ｏリソースが大きく奪われ、放送番組を録画するためのタスクに割り当てられるＩ／Ｏリソースが不足傾向となる。放送番組の録画において受信した番組データを一次保存するバッファ領域からブロックデバイスへの伝送に割り当てられるＩ／Ｏリソースが減れば、バッファオーバーフローによる録画のエラーが発生する。本発明によれば、このような録画のエラーの発生を防止できる。
【００１２】
前記制御部は、選択中のタスクのリクエストキューが空である場合には、前記スライスタイムの経過を待たずにタスクの切り替えを行う。これにより、Ｉ／Ｏリソースの利用効率を向上させることができる。このような面からも、録画再生に関するマルチタスク処理を良好に行うことができる。
【００１３】
前記制御部は、Ｉ／Ｏリクエストの実行終了時点の前記スライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルでは前記デフォルトのスライスタイムに戻すことを繰り返す。これにより早送り再生など高いレートでブロックデバイスに対するＩ／Ｏ処理を行うタスクの次のタスクの処理が開始されるタイミングの遅延時間の累積を防止でき、タスク間でのＩ／Ｏデータ量の不均一をより一層改善できる。
【００１４】
本発明の別の側面による録画再生装置のＩ／Ｏスケジューリング方法は、録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、複数の前記タスクが実行されるとき、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するＩ／Ｏスケジューリングを行うというものである。
【００１５】
本発明の別の側面によるプログラムは、録画用の記録媒体として用いられるブロックデバイスに対する録画及び再生に関する一つ一つの処理をタスクとして、前記各タスクそれぞれの前記ブロックデバイスに対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを用いて、前記ブロックデバイスに対するＩ／Ｏスケジューリングを行う制御部としてコンピュータを動作させるプログラムである。
【発明の効果】
【００１６】
本発明によれば、ブロックデバイスに対するＩ／Ｏデータ量のタスク間での不均一を軽減して、録画再生に関するマルチタスク処理を良好に行うことができる。
【図面の簡単な説明】
【００１７】
【図１】本発明に係る第１の実施形態の録画再生装置の構成を示すブロック図である。
【図２】図１の録画再生装置のソフトウェア構成を示す図である。
【図３】図１の録画再生装置のＩ／Ｏスケジューラの動作を説明するための概念図である。
【図４】図１の録画再生装置のラウンドロビン方式によるタスクの切り替えのフローチャートである。
【図５】図１の録画再生装置のＩ／Ｏスケジューリングの例を示す図である。
【図６】本発明に係る変形例のＩ／Ｏスケジューリングを説明する図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら、本発明に係る実施形態を説明する。
本実施形態は、外部より取得した映像及び音声などの番組データを、ブルーレイディスクやハードディスクドライブ等のブロックデバイスに録画したり録画した番組データを再生したりすることのできる録画再生装置である。また、本実施形態は、複数チャンネルの同時録画や、同時の録画再生など、ブロックデバイスに対するＩ／Ｏ（入出力）を伴う複数の処理を、見掛け上同時に実行することの可能な録画再生装置に関するものである。
【００１９】
＜第１の実施形態＞
［録画再生装置のハードウェア構成］
図１は、本発明の第１の実施形態に係る録画再生装置１００の構成を示すブロック図である。
同図に示すように、この録画再生装置１００は、ＣＰＵ１１（制御部）、メインメモリ１２、プログラム記憶部１３、番組受信部１４、ブロックデバイス１５、番組再生部１６、バス１７などを備える。
【００２０】
ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）１１は、録画再生装置１００の各部を総括的に制御する。ＣＰＵ１１は、プログラム記憶部１３に記憶されたＯＳ、アプリケーションプログラムなどの各種のプログラム及びデータを用いて番組の録画及び再生に関する様々な処理を実行する。
【００２１】
メインメモリ１２は、ＣＰＵ１１の作業空間として用いられるメモリである。
プログラム記憶部１３は、ＣＰＵ１１により実行される各種のプログラム、そのプログラムの実行に必要なデータが記憶された記憶部である。
【００２２】
番組受信部１４は、例えば、地上波デジタルチューナ、ＢＳデジタルチューナ、ＣＳデジタルチューナなどのデジタルチューナや、インターネットを通じて番組を受信するネットワークインタフェースなどである。ここで、受信される番組とは、少なくとも映像及び音声のデータが多重化されて圧縮符号化された情報である。より具体的には、ＭＰＥＧ−２（Ｍｏｖｉｎｇ Ｐｉｃｔｕｒｅ Ｅｘｐｅｒｔｓ Ｇｒｏｕｐ ｐｈａｓｅ ２）ストリーム、ＭＰＥＧ−４ストリームなどである。
【００２３】
ブロックデバイス１５は、番組受信部１４にて受信された番組が記録される、例えばブルーレイディスク、ハードディスクドライブなどのデバイスである。ここで、ブロックデバイスとは、データの書き込みと読み出しが所定の単位（ブロック単位）で行われるデバイスのことである。ブロックデバイスに対するデータの入出力はファイルシステムを通じて行われる。
【００２４】
番組再生部１６は、番組の映像及び音声のストリームをデコードするデコーダ１６１と、デコーダ１６１のデコード結果である映像及び音声を出力する映像・音声出力部１６２とを備える。この実施形態では、複数の番組再生部１６が、バス１７に図示しないネットワーク接続部を通じて接続可能とされ、ＣＰＵ１１は複数の番組再生部１６に対して同一の番組を供給したり、選択的に別々の番組を供給したりすることが可能である。
【００２５】
［録画再生装置のソフトウェア構成］
図２は、本実施形態の録画再生装置１００のソフトウェア構成を示す図である。
【００２６】
録画再生装置１００には、ソフトウェアとして、ＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）３１と、ＯＳ３１上で動作可能な複数のアプリケーションプログラム（以下「アプリケーション」と呼ぶ。）３２が存在する。ここで、それぞれのアプリケーション３２は、例えば、番組の録画のためのプログラム、録画された番組の通常再生、早送り再生、スロー再生、コマ送り再生、スキップ再生、さらには、重要度の高いシーンを自動検出して番組の見所を再生するダイジェスト再生のためのプログラムなどである。
【００２７】
ＯＳ３１には、ファイルシステム３３、Ｉ／Ｏスケジューラ３４、デバイスドライバ３５などが含まれる。ＯＳ３１のカーネルは、実行中のアプリケーション３２を処理の実行単位である「タスク」として扱う。
【００２８】
ファイルシステム３３は、アプリケーション３２からのファイルの書き込みまたは読み出しのためのＩ／Ｏ要求を受けて、このＩ／Ｏ要求をブロック形式のＩ／Ｏ要求に変換する。
【００２９】
Ｉ／Ｏスケジューラ３４は、ブロックデバイス１５に対するＩ／Ｏ処理の効率向上を目的として、各タスクからのＩ／Ｏ要求の順序の制御、複数のＩ／Ｏ要求の結合、タスク毎のＩ／Ｏリソースの割り当ての時間的な制御などを行うスケジューラである。Ｉ／Ｏスケジューラ３４は、タスク毎のリクエストキューを有する。リクエストキューにはタスク毎に予め決められたスライスタイムが設定される。Ｉ／Ｏスケジューラ３４は、タスクからファイルシステムを通じて受けとったブロック形式のＩ／Ｏ要求を対応するリクエストキューに入れる。このときＩ／Ｏスケジューラ３４は、隣り合うセクタに対するＩ／Ｏ要求を同じ種類（読み出し要求、書き込み要求）毎に１つのＩ／Ｏリクエストと呼ばれるデータ構造にまとめる。Ｉ／Ｏスケジューラ３４は、タスク毎のリクエストキューの中から１つのリクエストキューをラウンドロビン方式で選択し、選択したリクエストキューから１つのＩ／Ｏリクエストを選択してデバイスドライバ３５に渡す。このＩ／Ｏスケジューラ３４の動作については後で詳しく説明する。
【００３０】
デバイスドライバ３５は、ブロックデバイス１５に対して、Ｉ／Ｏスケジューラ３４によって選択されたＩ／Ｏリクエストの処理を実行する。
【００３１】
［Ｉ／Ｏスケジューラ３４の動作］
図３はＩ／Ｏスケジューラ３４の動作を説明するための概念図である。
同図に示すように、Ｉ／Ｏスケジューラ３４は、タスク毎のリクエストキュー４１を有する。Ｉ／Ｏスケジューラ３４は、各タスクのリクエストキュー４１に、当該各タスクそれぞれのブロックデバイス１５に対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたスライスタイムを割り当てる。
【００３２】
ここで、録画や通常再生時に比べて早送り再生、ダイジェスト再生時の単位時間当たりのＩ／Ｏデータ量は大きいため、早送り再生、ダイジェスト再生のための各タスクに割り当てられるスライスタイムは、録画や通常再生のためのタスクに割り当てられるスライスタイムよりも短いものとなる。
【００３３】
１．リクエストキュー４１への登録
ファイルシステム３３は、アプリケーション３２（タスク）から渡された、ファイルの書き込みまたは読み出しのためのＩ／Ｏ要求を受けて、要求元であるタスクを識別する識別子を含むＩ／Ｏ要求をブロック形式のＩ／Ｏ要求に変換してＩ／Ｏスケジューラ３４に渡す。
【００３４】
Ｉ／Ｏスケジューラ３４は、ファイルシステム３３より渡されたＩ／Ｏ要求に含まれるタスク識別子をもとにリクエストキュー４１を生成または選択して、このリクエストキュー４１にＩ／Ｏ要求を入れる。このとき、隣り合うセクタに対するＩ／Ｏ要求は同じ種類（読み出し要求、書き込み要求）毎に１つのＩ／Ｏリクエストと呼ばれるデータ構造にまとめられる。
【００３５】
２．Ｉ／Ｏリクエストのデバイスドライバ３５への供給
Ｉ／Ｏスケジューラ３４は、デバイスドライバ３５にＩ／Ｏリクエストを渡すリクエストキュー４１をラウンドロビン方式で切り替える。ラウンドロビン方式とは、デバイスドライバ３５にＩ／Ｏリクエストを渡すリクエストキュー４１を、順番にかつサイクリックに切り替える方式である。リクエストキュー４１はタスク毎に作成されるので、以降の説明において「リクエストキュー４１の切り替え」を「タスクの切り替え」と表記する。
【００３６】
図４は、このラウンドロビン方式によるタスクの切り替えのフローチャートである。
このフローチャートは繰り返し実行される。
なお、ラウンドロビンのためのタスクの切り替えの順序は、例えば、Ｉ／Ｏ要求が発生したタスク順などに設定される。タスクが終了すると、設定されたタスクの順序配列から終了したタスクが外される。
【００３７】
Ｉ／Ｏスケジューラ３４はタスクを切り替えると（ステップＳ１０１）、タイマをスタートする（ステップＳ１０２）。
【００３８】
次に、Ｉ／Ｏスケジューラ３４は、切り替えられたタスクのリクエストキュー４１にＩ／Ｏリクエストが保持されているかどうかを調べ（ステップＳ１０３）、Ｉ／Ｏリクエストが保持されているならば、そのＩ／Ｏリクエストを選択してデバイスドライバ３５に渡すことにより、そのＩ／Ｏリクエストが実行される（ステップＳ１０４）。
【００３９】
また、リクエストキュー４１にＩ／Ｏリクエストが保持されていない場合、Ｉ／Ｏスケジューラ３４は待機状態に入る（ステップＳ１０６）。Ｉ／Ｏスケジューラ３４は待機状態に入ってから所定の時間内にリクエストキュー４１に新たなＩ／Ｏリクエストが登録されると（ステップＳ１０３のＹＥＳ）、そのＩ／Ｏリクエストを選択してデバイスドライバ３５に渡す。所定の時間が経過してもリクエストキュー４１に新たなＩ／Ｏリクエストが登録されなかった場合（ステップＳ１０７のＹＥＳ）、Ｉ／Ｏスケジューラ３４は、Ｉ／Ｏリクエストの選択先を次のタスクに切り替える（ステップＳ１０１）。リクエストキュー４１から選択されたＩ／Ｏリクエストはリクエストキュー４１から削除される。なお、待機状態はスライスタイムを超えて継続されることはない。
【００４０】
Ｉ／Ｏリクエストの実行完了後、Ｉ／Ｏスケジューラ３４は、現在のタイマの値がリクエストキュー４１に設定されたスライスタイムの値以上であるかどうかを調べる（ステップＳ１０５）。タイマの値がリクエストキュー４１に設定されたスライスタイムの値未満であれば、Ｉ／Ｏスケジューラ３４は、リクエストキュー４１にＩ／Ｏリクエストが保持されているかどうかを再度調べ（ステップＳ１０３）、保持されていれば、そのＩ／Ｏリクエストを選択してデバイスドライバ３５に渡す。また、タイマの値がリクエストキュー４１に設定されたスライスタイムの値以上であれば、Ｉ／Ｏスケジューラ３４はＩ／Ｏリクエストの選択先を次のタスクに切り替える（ステップＳ１０１）。以降も同様に上記の処理が繰り返される。
【００４１】
図５は本実施形態のＩ／Ｏスケジューリングの例を示す図である。
ここで、ｒ１−ｘ、ｒ２−ｘ、ｒ３−ｘはそれぞれタスク１、タスク２、タスク３からのＩ／Ｏリクエストを示している。"−ｘ"はＩ／Ｏリクエストの順位を示している。ラウンドロビンの順序はタスク１、タスク２、タスク３とする。ＳＴＭ１、ＳＴＭ２、ＳＴＭ３はタスク１、タスク２、タスク３にそれぞれ設定されたスライスタイムである。これらのＳＴＭ１、ＳＴＭ２、ＳＴＭ３は、各タスクそれぞれのブロックデバイス１５に対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められた値である。各スライスタイムの長さの関係はＳＴＭ１＞ＳＴＭ２とする。例えば、タスク１は録画、タスク２は早送り再生などである。すなわち、録画時に比べて早送り再生時の単位時間当たりのＩ／Ｏデータ量は大きいため、各タスクそれぞれのブロックデバイス１５に対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにスライスタイムを決定した場合、早送り再生のためのタスクに割り当てられるスライスタイムは録画のためのタスクに割り当てられるスライスタイムよりも短くなる。
【００４２】
Ｉ／Ｏスケジューラ３４は、タスク１のリクエストキュー４１からＩ／Ｏリクエストを選択する。Ｉ／Ｏスケジューラ３４は、スライスタイムＳＴＭ１内に、タスク１のリクエストキュー４１から１つずつＩ／Ｏリクエストを選択してデバイスドライバ３５に渡す。
【００４３】
図５の例では、３つのＩ／Ｏリクエストｒ１−１、ｒ１−２、ｒ１−３がタスク１のリクエストキュー４１から順次選択された場合を示している。３つ目のＩ／Ｏリクエストｒ１−３が実行された後、タスク１のリクエストキュー４１が一時的に空になったため、Ｉ／Ｏスケジューラ３４は所定の時間を上限とする待機状態に入る。この例では、待機状態に入ってから所定の時間が経過する前にタスク１のリクエストキュー４１内に新しいＩ／Ｏリクエストｒ１−４が新たに登録されたため、Ｉ／Ｏスケジューラ３４はそのＩ／Ｏリクエストｒ１−４を選択する。この後、タスク１のリクエストキュー４１が再び空になったため、Ｉ／Ｏスケジューラ３４は再び待機状態に入る。そして所定の時間が経過してもタスク１のリクエストキュー４１内に新しいＩ／Ｏリクエストが新たに登録されなかったため、Ｉ／Ｏスケジューラ３４はタスクの切り替えを行う。
【００４４】
続いてＩ／Ｏスケジューラ３４は、タスク２のリクエストキュー４１からＩ／Ｏリクエストを選択する。この例では、タスク２は早送り再生など、単位時間当たりのＩ／Ｏデータ量が比較的大きいタスクである場合を示している。このため、タスク２のリクエストキュー４１からはスライスタイムＳＴＭ２の期間、連続してＩ／Ｏリクエストｒ２−１、ｒ２−２、ｒ２−３、ｒ２−４、ｒ２−５が選択される。ここで、最後のＩ／Ｏリクエストｒ２−５の実行が終了する前にスライスタイムＳＴＭ２が経過している。Ｉ／Ｏスケジューラ３４は、このことを判定するとタスクの切り替えを行う。
【００４５】
続いてＩ／Ｏスケジューラ３４は、タスク３のリクエストキュー４１からＩ／Ｏリクエストを選択する。
【００４６】
以上のように本実施形態のＩ／Ｏスケジューリングによれば、各タスクそれぞれのブロックデバイス１５に対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎のスライスタイムを設定した。これにより、各タスク間でブロックデバイスに対するＩ／Ｏリソースを共有するにあたって、タスク間でのＩ／Ｏデータ量の不均一を軽減できる。したがって、例えば、早送り再生やダイジェスト再生等の大量のデータをブロックデバイスから読み出す処理と同時に放送番組の録画を良好に行うことができるなど、録画再生に関するマルチタスク処理を良好に行うことができる。
【００４７】
また、本実施形態のＩ／Ｏスケジューリングによれば、選択中のタスクのリクエストキュー４１が空である場合には、スライスタイムの経過を待たずにタスクの切り替えが行われることから、Ｉ／Ｏリソースの利用効率を向上させることができる。このような面からも、録画再生に関するマルチタスク処理を良好に行うことができる。
【００４８】
＜変形例１＞
次に、上記の実施形態の変形例を説明する。
上記の実施形態では、図５で説明したように、タスク２の最後のＩ／Ｏリクエストｒ２−５の実行が終了する前にスライスタイムＳＴＭ２が経過していた場合にタスクの切り替えだけが行われることとした。このＩ／Ｏリクエストｒ２−５の実行終了時点のスライスタイムＳＴＭ２に対する超過分は、次のタスクの処理の開始を遅らせる時間となる。ラウンドロビンのサイクル毎にこのような遅延が発生すると、次のタスクの処理が開始されるタイミングの遅延時間が次第に累積し、処理のリアルタイム性が低下するおそれがある。
【００４９】
そこで、スライスタイムからの超過分をデフォルトのスライスタイムから減算した時間を、ラウンドロビンの次サイクルのスライスタイムとして設定し、その次のサイクルではデフォルトのスライスタイムに戻すことを繰り返すようにする。すなわち、ラウンドロビンの２サイクルにおいて、最初の１サイクルで、デフォルトのスライスタイムからの超過分を取得し、次の１サイクルでは、その超過分をデフォルトのスライスタイムから減算した時間を採用する。そして、この２サイクルを繰り返す。これにより、スライスタイムからの超過分の累積によるマルチタスク処理への悪影響を回避できる。
【００５０】
図６は本変形例でのＩ／Ｏスケジューリングの例を示す図である。
図６は上記ラウンドロビンの２サイクル分のＩ／Ｏスケジューリングを示している。
ｒ１−ｘ、ｒ２−ｘ、ｒ３−ｘはそれぞれタスク１、タスク２、タスク３のＩ／Ｏリクエストを示している。ラウンドロビンの順序はタスク１、タスク２、タスク３とする。ＳＴＭ１、ＳＴＭ２、ＳＴＭ３は各タスクそれぞれのブロックデバイス１５に対するラウンドロビンのサイクル毎のＩ／Ｏ総データ量が互いにほぼ同じとなるようにタスク毎に予め決められたデフォルトのスライスタイムである。
【００５１】
ラウンドロビンの上記２サイクルの１サイクル目において、Ｉ／Ｏスケジューラ３４は、タスク２のリクエストキュー４１から選択したＩ／Ｏリクエストの実行が終了した時点でデフォルトのスライスタイムＳＴＭ２を超過している場合には、その超過時間を算出する。すなわち、図６の例では、Ｉ／Ｏリクエストｒ２−５の実行が終了した時点でのデフォルトのスライスタイムＳＴＭ２からの超過時間として算出される。
【００５２】
Ｉ／Ｏスケジューラ３４は、上記２サイクルの２サイクル目において、デフォルトのスライスタイムＳＴＭ２から上記の超過時間を減算した時間を、補正されたスライスタイムＳＴＭ２´として、デフォルトのスライスタイムＳＴＭ２に代えて採用する。これにより早送り再生など高いレートでブロックデバイス１５に対するＩ／Ｏ処理を行うタスクの次のタスクの処理が開始されるタイミングの遅延時間の累積を防止でき、タスク間でのＩ／Ｏデータ量の不均一をより一層改善できる。
【００５３】
本発明は上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更され得る。
【符号の説明】
【００５４】
１１…ＣＰＵ
１２…メインメモリ
１３…プログラム記憶部
１４…番組受信部
１５…ブロックデバイス
１６…番組再生部
３１…ＯＳ
３２…アプリケーションプログラム
３３…ファイルシステム
３４…Ｉ／Ｏスケジューラ
３５…デバイスドライバ
４１…リクエストキュー
１００…録画再生装置
【図１】
2012079272.tif 000003
【図２】
2012079272.tif 000004
【図３】
2012079272.tif 000005
【図４】
2012079272.tif 000006
【図５】
2012079272.tif 000007
【図６】
2012079272.tif 000008