(57)【要約】【課題】コンテンツの記録または読み出しの処理を実行していない場合、より迅速、より確実に、コンテンツの記録に関係するか、または記録されているコンテンツに対するタスクを実行する。【解決手段】ソース使用実績データベース９１は、予め定めた所定の長さの第１の期間であって、コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴を記録する。空き時間帯計算部１０２は、記録されている第１の期間毎のリソースの占有の履歴から、タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算する。空き時間処理タスク実行制御部９６は、計算された空き時間帯におけるタスクの実行を制御する。本発明は、ビデオレコーダに適用できる。【選択図】図３
2007328508.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する記録装置において、
予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴を記録する履歴記録手段と、
記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算する空き時間帯計算手段と、
計算された前記空き時間帯における前記タスクの実行を制御するタスク実行制御手段と
を備える記録装置。
【請求項２】
前記履歴記録手段は、１日である前記第２の期間のうちのそれぞれの前記第１の期間におけるリソースの占有の履歴を記録する
請求項１に記載の記録装置。
【請求項３】
前記第２の期間のうちのそれぞれの前記第１の期間における１つ前の前記第２の期間までの前記リソースの占有の履歴と、今回の前記第２の期間のそれぞれの前記第１の期間における前記リソースの占有の履歴とから、前記第２の期間のうちのそれぞれの前記第１の期間における今回の前記第２の期間までの前記リソースの占有の履歴を計算する履歴計算手段をさらに備え、
前記履歴記録手段は、前記履歴計算手段により計算された、前記第２の期間のうちのそれぞれの前記第１の期間における今回の前記第２の期間までの前記リソースの占有の履歴を記録する
請求項１に記載の記録装置。
【請求項４】
前記履歴記録手段は、今回の前記第２の期間のそれぞれの前記第１の期間における、占有されている前記リソースの量と、前記タスクの実行のために占有されている前記リソースの量とから求められる、前記第２の期間のうちのそれぞれの第１の期間における、前記タスク以外のために占有されている前記リソースの量を示す履歴を記録する
請求項１に記載の記録装置。
【請求項５】
前記空き時間帯計算手段は、記録されている前記第１の期間毎の前記リソースの占有の履歴から、複数の前記リソースのそれぞれについて、前記タスクの実行に必要なそれぞれの前記リソースが確保できると予測される時間帯を計算して、その計算結果から、前記タスクの実行に必要な複数の前記リソースを確保できると予測される前記空き時間帯を計算する
請求項１に記載の記録装置。
【請求項６】
前記タスクの実行の優先の順番を決定する優先順番決定手段をさらに備える
請求項１に記載の記録装置。
【請求項７】
前記空き時間帯計算手段は、実行の優先の順番に応じて、前記タスクについて、順に前記空き時間帯を計算し、
前記タスク実行制御手段は、現在から一定の長さの前記空き時間帯がある場合、その前記タスクを実行させるように前記タスクの実行を制御する
請求項６に記載の記録装置。
【請求項８】
コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する記録装置の記録方法において、
予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴の記録を制御し、
記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算し、
計算された前記空き時間帯における前記タスクの実行を制御する
ステップを含む記録方法。
【請求項９】
コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する処理を、コンピュータに行わせるプログラムにおいて、
予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴の記録を制御し、
記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算し、
計算された前記空き時間帯における前記タスクの実行を制御する
ステップを含むプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記録装置および方法、並びにプログラムに関し、特に、コンテンツの記録または読み出しの処理を実行していない場合、より迅速、より確実に、コンテンツの記録に関係するか、または記録されているコンテンツに対するタスクを実行できるようにした記録装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
複数の光ディスクに、コンテンツのデータを記録し、光ディスクのドライブへの装着を自動化することで、多量のコンテンツを簡単に取り扱えるようにした記録装置がある。
【０００３】
このような記録装置における、夜中などの記録装置が使われていない、空いている時間帯に自動で処理して欲しい処理であるタスク（以下、空き時間処理タスクと称する。）の実行方法について考える。
【０００４】
図１は、空き時間処理タスクを示す図である。
【０００５】
図１において、空き時間処理タスクである光ディスクの登録処理とは、指令に応じて光ディスクをドライブに装着するチェンジャに光ディスクを挿入し、挿入した光ディスクを記録装置に登録する処理をいう。メールスロットから挿入された光ディスクは、一旦、チェンジャの空いているスロットに格納される。スロットに格納された光ディスクは、ドライブが空いているとき、ドライブに装着され、光ディスクの種別が確認されて、その光ディスクを特定するディスク管理ID（Identifier）と、光ディスクが格納されるスロットを特定する格納スロット番号が、記録装置に登録される。
【０００６】
すなわち、１つのドライブであるリソースが、光ディスクの登録処理に割り当てられる。
【０００７】
次に、光ディスク間のデータの移動処理とは、光ディスクに記録されているコンテンツであるデータを、他の光ディスクにコピーするか、または移動させる処理をいう。光ディスク間のデータの移動処理において、ドライブが空いているとき、元のデータが記録されている元の光ディスクとデータのコピー先または移動先の光ディスクとは、それぞれドライブに装着され、元の光ディスクからコピー先または移動先の光ディスクにデータがコピーされるか、または移動される。
【０００８】
すなわち、光ディスク間のデータの移動処理において、２つのドライブであるリソースが占有される。
【０００９】
また、HDD（Hard Disk Drive）内のビデオデータのフォーマット変換処理とは、コーデックチップによって、HDDに記録されているコンテンツであるビデオデータのフォーマットを他のフォーマットに変換し、HDDに書き戻す処理をいう。HDD内のビデオデータのフォーマット変換処理において、HDDからのコンテンツの読み出しとHDDへの書き込みが同時に発生する。
【００１０】
すなわち、コンテンツの読み出しと書き込みとに要するHDDの帯域に応じたHDDのリソースおよびビデオデータのフォーマットを変換するコーデックチップであるリソースが、HDD内のビデオデータのフォーマット変換処理に割り当てられる。
【００１１】
さらにまた、HDD内のビデオデータの画質改善処理とは、ノイズフィルタなどのコーデックチップの画質改善処理機能によって、HDDに記録されているコンテンツであるビデオデータに、画質改善処理を適用して、HDDに書き戻す処理をいう。HDD内のビデオデータの画質改善処理において、HDDからのコンテンツの読み出しとHDDへの書き込みが同時に発生する。画質改善処理は、グラフィックチップ若しくは専用の信号処理チップなどにハードウェアにより、またはプログラムを実行するCPUにより実行されることも考えられる。
【００１２】
この場合、コンテンツの読み出しと書き込みとに要するHDDの帯域に応じたHDDのリソース、およびグラフィックチップ、信号処理チップ、またはCPU（Central Processing Unit）であるリソースが、HDD内のビデオデータの画質改善処理に割り当てられることになる。
【００１３】
このように、異なる空き時間処理タスクの実行には、それぞれ異なる種類で、異なる量のリソースが必要である。
【００１４】
空き時間処理タスクを実行させる際には、空き時間処理タスクの中での優先度を考慮したスケジューリングが要求される。
【００１５】
従来、記録装置の空き時間処理タスクを実行させる方法として、夜中などの使用者に指定された時間に、またはある一定時間の間、記録装置が使用者に操作されなかったときに、タスクキューにためられた空き時間処理タスクを順番に実行させるようにスケジューリングする方法がある。
【００１６】
しかし、空き時間処理タスクのなかには、夜中に実行させるよりも、実行が要求されてから出来るだけ早く、空き時間帯に実行させることが好ましいものがある。多数の種類の空き時間処理タスクがいくつもタスクキューにたまっている状態では、使用者が記録装置を日頃使用していない時間帯に、空き時間処理タスクが実行されるようにスケジューリングされるとは限らない。
【００１７】
そこで、これを補うためには、日常、使用者が記録装置をよく使用する時間の統計値を利用することが考えられる。すなわち、使用状況として、記録装置本体への操作やリモートコントローラのキーへの操作などをそのイベントにより検出して、イベントについての統計値を算出し、使用者の使用状況を予想して、使用される確率が低い場合に、空き時間処理タスクを実行させるようにスケジューリングさせる方式が考えられる。
【００１８】
従来、タスクのスケジューリングに関係する情報を保持するアクティビティと、アクティビティに記録されていない情報を保持するコンテキストと、実行可能なタスクの中から、もっとも優先度が高いものを選択するために設けられたディスパッチキューとを備え、１つのタスクに関する情報を、アクティビティとコンテキストに分割して管理し、アクティビティをディスパッチキューへの挿入または削除の対象としており、あるタスクの優先度を他のタスクが継承する際には、アクティビティとコンテキストの対応関係だけを変化させるようにしたタスク管理システムもある（例えば、特許文献１参照）。
【００１９】
【特許文献１】特開２００３−１５８８７号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
ところが、イベントについての統計値を算出し、使用者の使用状況を予想して、使用される確率が低い場合に、空き時間処理タスクを実行させるようにスケジューリングさせる方式においては、各リソースの使用量を考慮していないので、複数の種類の空き時間処理タスクが、それぞれ異なるリソースを必要とするとき、使用者が日常的に特定の処理を良く実行させる時間帯に、その処理で使用されるリソースを使用する空き時間処理タスクが実行される確率が高くなる。すなわち、リソースの取り合いとなってしまう場合がある。
【００２１】
その場合には、空き時間処理タスクが途中で中断できないときは、使用者に要求された特定の処理の実行は、その空き時間処理タスクが終了するまで待たされてしまうことになる。
【００２２】
一方、空き時間処理タスクが途中で中断できる場合には、空き時間処理タスクが中断され、使用者に要求された特定の処理が実行されて、その特定の処理が終了してから一定の時間が経過すると、空き時間処理タスクの実行が再開される。このような場合、特定の処理の実行には所定の時間が必要とされるので、その特定の処理が終了したときには、その時間帯が、既に、その空き時間処理タスクを優先的に再開する時間帯から外れてしまうことがある。
【００２３】
このように、複数の種類の空き時間処理タスクの実行に、それぞれ異なるリソースが必要とされ、かつ、空き時間処理タスク毎の優先度を基に実行のスケジューリングを行うと、キューにたまっている優先度の低い空き時間処理タスクの実行に必要なリソースが空いている確率の高い時間帯でも、その空き時間処理タスクよりも優先度の高い空き時間処理タスクの実行に必要なリソースが確保できずに、優先度の高い空き時間処理タスクの実行が待機され、空き時間処理タスクの全体が実行されないことになる。
【００２４】
このように、必ずしも効率よくスケジューリングすることができない。
【００２５】
本発明は、このような状況に鑑みてなされたものであり、コンテンツの記録または読み出しの処理を実行していない場合、より迅速、より確実に、コンテンツの記録に関係するか、または記録されているコンテンツに対するタスクを実行することができるようにするものである。
【課題を解決するための手段】
【００２６】
本発明の一側面の記録装置は、コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する記録装置であって、予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴を記録する履歴記録手段と、記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算する空き時間帯計算手段と、計算された前記空き時間帯における前記タスクの実行を制御するタスク実行制御手段とを備える。
【００２７】
前記履歴記録手段には、１日である前記第２の期間のうちのそれぞれの前記第１の期間におけるリソースの占有の履歴を記録させることができる。
【００２８】
前記第２の期間のうちのそれぞれの前記第１の期間における１つ前の前記第２の期間までの前記リソースの占有の履歴と、今回の前記第２の期間のそれぞれの前記第１の期間における前記リソースの占有の履歴とから、前記第２の期間のうちのそれぞれの前記第１の期間における今回の前記第２の期間までの前記リソースの占有の履歴を計算する履歴計算手段をさらに設け、前記履歴記録手段には、前記履歴計算手段により計算された、前記第２の期間のうちのそれぞれの前記第１の期間における今回の前記第２の期間までの前記リソースの占有の履歴を記録させることができる。
【００２９】
前記履歴記録手段には、今回の前記第２の期間のそれぞれの前記第１の期間における、占有されている前記リソースの量と、前記タスクの実行のために占有されている前記リソースの量とから求められる、前記第２の期間のうちのそれぞれの第１の期間における、前記タスク以外のために占有されている前記リソースの量を示す履歴を記録させることができる。
【００３０】
前記空き時間帯計算手段には、記録されている前記第１の期間毎の前記リソースの占有の履歴から、複数の前記リソースのそれぞれについて、前記タスクの実行に必要なそれぞれの前記リソースが確保できると予測される時間帯を計算して、その計算結果から、前記タスクの実行に必要な複数の前記リソースを確保できると予測される前記空き時間帯を計算させることができる。
【００３１】
前記タスクの実行の優先の順番を決定する優先順番決定手段をさらに設けることができる。
【００３２】
前記空き時間帯計算手段には、実行の優先の順番に応じて、前記タスクについて、順に前記空き時間帯を計算させ、前記タスク実行制御手段には、現在から一定の長さの前記空き時間帯がある場合、その前記タスクを実行させるように前記タスクの実行を制御させることができる。
【００３３】
本発明の一側面の記録方法は、コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する記録装置の記録方法であって、予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴の記録を制御し、記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算し、計算された前記空き時間帯における前記タスクの実行を制御するステップを含む。
【００３４】
本発明の一側面のプログラムは、コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する処理を、コンピュータに行わせるプログラムであって、予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴の記録を制御し、記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算し、計算された前記空き時間帯における前記タスクの実行を制御するステップを含む。
【００３５】
本発明の一側面において、予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴が記録され、記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯が計算され、計算された前記空き時間帯における前記タスクの実行が制御される。
【発明の効果】
【００３６】
以上のように、本発明の一側面によれば、タスクを実行することができる。
【００３７】
また、本発明の一側面によれば、コンテンツの記録または読み出しの処理を実行していない場合、より迅速、より確実に、コンテンツの記録に関係するか、または記録されているコンテンツに対するタスクを実行することができる。
【発明を実施するための最良の形態】
【００３８】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００３９】
本発明の一側面の記録装置は、コンテンツを記録すると共に、前記コンテンツの記録または読み出しの処理を実行していない場合、前記コンテンツの記録に関係するか、または記録されている前記コンテンツに対するタスクを実行する記録装置であって、予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴を記録する履歴記録手段（例えば、図３のリソース使用実績データベース９１）と、記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算する空き時間帯計算手段（例えば、図３の空き時間帯計算部１０２）と、計算された前記空き時間帯における前記タスクの実行を制御するタスク実行制御手段（例えば、図３の空き時間処理タスク実行制御部９６）とを備える。
【００４０】
前記第２の期間のうちのそれぞれの前記第１の期間における１つ前の前記第２の期間までの前記リソースの占有の履歴と、今回の前記第２の期間のそれぞれの前記第１の期間における前記リソースの占有の履歴とから、前記第２の期間のうちのそれぞれの前記第１の期間における今回の前記第２の期間までの前記リソースの占有の履歴を計算する履歴計算手段（例えば、図３のリソース使用量統計値計算部９２）をさらに設け、前記履歴記録手段には、前記履歴計算手段により計算された、前記第２の期間のうちのそれぞれの前記第１の期間における今回の前記第２の期間までの前記リソースの占有の履歴を記録させることができる。
【００４１】
前記タスクの実行の優先の順番を決定する優先順番決定手段（例えば、図３のタスクスコア算出部１０１）をさらに設けることができる。
【００４２】
本発明の一側面の記録方法およびプログラムは、予め定めた所定の長さの第１の期間であって、前記コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴の記録を制御し（例えば、図４のステップＳ１３）、記録されている前記第１の期間毎の前記リソースの占有の履歴から、前記タスクの実行に必要な前記リソースが確保できると予測される時間帯である空き時間帯を計算し（例えば、図９のステップＳ７７）、計算された前記空き時間帯における前記タスクの実行を制御する（例えば、図９のステップＳ８０）ステップを含む。
【００４３】
図２は、本発明の一実施の形態の記録装置の構成を示すブロック図である。記録装置は、動画像または静止画像である画像および音声などのコンテンツをデータとして記録するとともに、データとして記録しているコンテンツを読み出して、再生する。
【００４４】
記録装置は、ホストCPU１１、グラフィックチップ１２、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６から構成される。
【００４５】
ホストCPU１１は、組込型の汎用のMPU（Micro Processing Unit）または専用のシステムコントローラなどから構成され、各種のプログラムを実行して、記録装置全体を制御する。
【００４６】
グラフィックチップ１２は、ホストCPU１１またはビデオコーデックチップ１３から供給された、画像であるコンテンツのデータから、ビデオ信号を生成して、表示装置２１に画像を表示させる。
【００４７】
ビデオコーデックチップ１３は、ビデオ信号を、例えば、MPEG（Moving Pictures Experts Group）２方式、またはMPEG４方式、またはH.264/MPEG-4 AVC（MPEG-4 Part 10 Advanced Video Coding）方式などで符号化するか、MPEG２方式、またはMPEG４方式、またはH.264/MPEG-4 AVC方式などで符号化されているデータを復号する。
【００４８】
ビデオコーデックチップ１３は、接続されているデジタルカメラ２２から供給されたビデオ信号を符号化する。ビデオコーデックチップ１３は、符号化により得られた、画像であるコンテンツの、符号化されているデータをホストCPU１１に供給する。また、ビデオコーデックチップ１３は、ホストCPU１１から供給された画像であるコンテンツの、符号化されているデータを復号する。ビデオコーデックチップ１３は、復号により得られた画像であるコンテンツの、いわゆるベースバンドのデータをグラフィックチップ１２に供給する。
【００４９】
オーディオインタフェース１４は、外部から供給されたオーディオ信号を、例えば、MP3（MPEG 1 Audio Layer 3）方式またはAAC（Advanced Audio Coding）方式などで符号化するか、または符号化されている音声であるコンテンツのデータを復号する。
【００５０】
オーディオインタフェース１４は、符号化により得られた、音声であるコンテンツの、符号化されているデータをホストCPU１１に供給する。また、オーディオインタフェース１４は、ホストCPU１１から供給された音声であるコンテンツの、符号化されているデータを復号する。オーディオインタフェース１４は、復号により得られたオーディオ信号を外部に出力する。
【００５１】
HDD１５は、ホストCPU１１から供給されたコンテンツのデータを記録し、記録しているコンテンツのデータをホストCPU１１に供給する。
【００５２】
ジュークボックス１６は、ホストCPU１１から供給されたコンテンツのデータを記録し、記録しているコンテンツのデータをホストCPU１１に供給する。
【００５３】
ホストCPU１１は、それぞれプログラムである、GUI（Graphical User Interface）プログラム４１、アプリケーションプログラム４２、システムマネージャ４３、ビデオ／オーディオモジュール４４、およびストレージマネージャ４５を実行する。
【００５４】
GUIプログラム４１は、アプリケーションプログラム４２からの要求に応じて、グラフィックチップ１２を介して、使用者に各種の情報を示したり操作を促したりする画像を表示装置２１に表示させる。また、GUIプログラム４１は、図示せぬスイッチまたはリモートコントローラへの使用者の操作に応じて、各種の処理をアプリケーションプログラム４２に指示する。例えば、使用者は、GUIプログラム４１によるGUIにより、記録装置に、コンテンツの記録、コンテンツの再生、または所定の空き時間処理タスクの実行を指令する。
【００５５】
アプリケーションプログラム４２は、記録装置およびコンテンツについて各種の処理を実行する。例えば、アプリケーションプログラム４２は、GUIプログラム４１からの指示に応じて、ストレージマネージャ４５に、コンテンツのデータの記録を指令する。また、アプリケーションプログラム４２は、GUIプログラム４１からの指示に応じて、ストレージマネージャ４５に、記録しているコンテンツのデータの読み出しを指令する。
【００５６】
システムマネージャ４３は、ストレージ制御関連のシステムを設定し、システムログを記録し、エラーログを管理し、メンテナンス処理を実行する。システムマネージャ４３は、コンテンツの記録または読み出しの処理を実行していない場合、コンテンツの記録に関係するか、または記録されているコンテンツに対するタスク、すなわち、空き時間処理タスクの実行を制御する。
【００５７】
ビデオ／オーディオモジュール４４は、ビデオコーデックチップ１３から供給された、符号化されている画像のコンテンツのデータと、オーディオインタフェース１４から供給された、符号化されている音声のコンテンツのデータとを多重化することで、コンテンツのデータをストリームに変換し、変換により得られたストリームをアプリケーションプログラム４２に供給する。例えば、ビデオ／オーディオモジュール４４は、MPEG方式で符号化されている画像のコンテンツのデータと、AAC方式で符号化されている音声のコンテンツのデータとを多重化して、MPEGトランスポートストリーム方式またはMPEGプログラムストリーム方式のストリームに変換する。
【００５８】
また、ビデオ／オーディオモジュール４４は、アプリケーションプログラム４２から供給されたストリームを分離して、分離して得られた符号化されている画像のコンテンツのデータをビデオコーデックチップ１３に供給すると共に、分離して得られた符号化されている音声のコンテンツのデータをオーディオインタフェース１４に供給する。
【００５９】
ビデオ／オーディオモジュール４４は、使用されているビデオコーデックチップ１３の数を監視し、使用されているビデオコーデックチップ１３の数が変化した場合、使用されているビデオコーデックチップ１３の数をシステムマネージャ４３に通知する。
【００６０】
ストレージマネージャ４５は、アプリケーションプログラム４２からの要求に基づいて、HDD１５およびジュークボックス１６を制御する。
【００６１】
すなわち、アプリケーションプログラム４２は、GUIプログラム４１からの指示に応じて、ストレージマネージャ４５に、コンテンツのデータの記録を指令する。コンテンツのデータを記録する場合、アプリケーションプログラム４２は、ビデオコーデックチップ１３およびビデオ／オーディオモジュール４４を介して、符号化され、多重化されているストリームであるコンテンツのデータを取得する。アプリケーションプログラム４２は、ストリームであるコンテンツのデータをストレージマネージャ４５に供給する。
【００６２】
ストレージマネージャ４５は、アプリケーションプログラム４２から供給されたストリームであるコンテンツのデータをHDD１５に記録する。ストレージマネージャ４５は、HDD１５に記録されているコンテンツのデータを、ジュークボックス１６に記録させる。
【００６３】
また、アプリケーションプログラム４２は、GUIプログラム４１からの指示に応じて、ストレージマネージャ４５に、記録しているコンテンツのデータの読み出しを指令する。記録しているコンテンツのデータを読み出す場合、ストレージマネージャ４５は、HDD１５またはジュークボックス１６に、記録されているコンテンツのデータを読み出させて、読み出したストリームであるコンテンツのデータを取得する。ストレージマネージャ４５は、ストリームであるコンテンツのデータをアプリケーションプログラム４２に供給する。
【００６４】
ストレージマネージャ４５は、ジュークボックス１６において使用されているドライブ６１−１およびドライブ６１−２（後述する）の数、並びにHDD１５の単位時間当たりのデータのフロー量、すなわち、使用されている帯域の量を監視し、その監視の結果を、システムマネージャ４３に通知する。
【００６５】
システムマネージャ４３は、同時動作調停プログラム５１、リソース使用状況管理プログラム５２、および空き時間処理タスクスケジューラ５３を含む。
【００６６】
同時動作調停プログラム５１は、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６などのリソースが現在使用できる状態であるかを確認して、複数のタスクが実行できるかなど、タスクの実行を調停する。例えば、アプリケーションプログラム４２は、コンテンツを再生する場合、同時動作調停プログラム５１にコンテンツの再生ができるかを問い合わせる。アプリケーションプログラム４２は、同時動作調停プログラム５１からコンテンツの再生ができると返答された場合、ストレージマネージャ４５に、コンテンツの読み出しを要求する。
【００６７】
リソース使用状況管理プログラム５２は、ストレージマネージャ４５を介して、HDD１５およびジュークボックス１６のリソースの現在の使用状況を示す情報を取得する。また、リソース使用状況管理プログラム５２は、ビデオ／オーディオモジュール４４を介して、ビデオコーデックチップ１３およびオーディオインタフェース１４のリソースの現在の使用状況を示す情報を取得する。
【００６８】
空き時間処理タスクスケジューラ５３は、予め定めた所定の長さの期間であって、１日のうちのそれぞれの期間における、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６などのリソースの占有の履歴を記録し、記録されている期間毎のリソースの占有の履歴から、空き時間処理タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算し、計算された空き時間帯における空き時間処理タスクの実行を制御する。
【００６９】
なお、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６をリソースの例として、以下、説明するが、本発明においてリソースとは、これに限らず、処理の実行に必要なものであれば足り、例えば、装置若しくはシステムを構成するハードウェアまたは装置若しくはシステムにおいて実行されるソフトウェア若しくはソフトウェアの実行に必要なデータなどである。
【００７０】
ストレージマネージャ４５は、ジュークコントローラ５４を含む。ジュークコントローラ５４は、ジュークボックス１６を制御する。
【００７１】
ジュークボックス１６は、ドライブ６１−１、ドライブ６１−２、光ディスク６２、ディスクスロット６３、ピッカー６４、およびメカコントローラ６５から構成される。
【００７２】
ドライブ６１−１およびドライブ６１−２は、それぞれ、装着されている光ディスク６２に、ストレージマネージャ４５から供給されたコンテンツのデータを記録する。ドライブ６１−１およびドライブ６１−２は、装着されている光ディスク６２から、記録されているコンテンツのデータを読み出して、読み出したコンテンツのデータをストレージマネージャ４５に供給する。
【００７３】
光ディスク６２は、例えば、DVD(Digital Versatile Disc)、MO（Magneto-Optical disk）、またはCD(Compact Disc)などである。光ディスク６２は、より高密度にデータを記録することのできるものであってもよい。
【００７４】
複数のディスクスロット６３には、それぞれ光ディスク６２が格納される。すなわち、ジュークボックス１６には、複数の光ディスク６２が格納される。
【００７５】
ピッカー６４は、いずれかディスクスロット６３に格納されている光ディスク６２を搬送して、ドライブ６１−１およびドライブ６１−２のいずれかに装着させる。また、ピッカー６４は、ドライブ６１−１およびドライブ６１−２のいずれかから取り出された光ディスク６２を搬送して、いずれかのディスクスロット６３に格納させる。
【００７６】
メカコントローラ６５は、ピッカー６４を制御する。メカコントローラ６５は、ジュークコントローラ５４の制御の基に、ピッカー６４を制御する。
【００７７】
ストレージマネージャ４５は、それぞれのディスクスロット６３に格納されているそれぞれの光ディスク６２を特定するように、光ディスク６２を管理している。メカコントローラ６５は、ストレージマネージャ４５のジュークコントローラ５４からの指令に応じて、ピッカー６４を制御し、コンテンツのデータが記録されるか、または記録されているコンテンツのデータが読み出される光ディスク６２を、ピッカー６４によって、ドライブ６１−１およびドライブ６１−２のいずれかに装着させる。
【００７８】
以下、ドライブ６１−１およびドライブ６１−２を個々に区別する必要がない場合、単にドライブ６１と称する。
【００７９】
図３は、空き時間処理タスクスケジューラ５３の構成を示すブロック図である。空き時間処理タスクスケジューラ５３は、使用実績記録処理ブロック８１およびタスク処理ブロック８２から構成される。
【００８０】
使用実績記録処理ブロック８１は、予め定めた所定の長さの期間であって、１日のうちのそれぞれの期間における、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６などのリソースの占有の履歴を記録する。
【００８１】
より詳細には、使用実績記録処理ブロック８１は、リソース使用状況管理プログラム５２から、現在使用されている、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６などのリソースの量を示す情報を取得する。また、使用実績記録処理ブロック８１は、リソース使用状況管理プログラム５２から、現在処理されている空き時間処理タスクで使用されている、ビデオコーデックチップ１３、オーディオインタフェース１４、HDD１５、およびジュークボックス１６などのリソースの量を示す情報を取得する。
【００８２】
リソースの占有の履歴の基準となる期間である基準間隔は、３分、５分、１０分、または１５分など任意の長さとすることができるが、以下、５分である場合を例に説明する。
【００８３】
期間が５分である場合、１日のうちのそれぞれの期間は、午前０時を起点とし、２４時間を５分で割り算して得られた値により表すことができる。すなわち、１日のうちの所定の期間を特定する変数である基準間隔時刻tは、式（１）により計算される。
t=int((HH×60+MM)/5)                                      ・・・（１）
式（１）において、HHは、期間の任意の時刻の時間を示し、MMは、期間の任意の時刻の分を示す。なお、起点である午前０時は、０である基準間隔時刻tで表される。すなわち、この場合、基準間隔時刻tは、０以上２８７以下である。
【００８４】
言い換えれば、基準間隔時刻tは、午前０時を起点として、２４時間を５分間隔で表した値である。１日のうちの任意の時刻に式（１）を適用することにより、その時刻の属する期間を特定する変数である基準間隔時刻tが算出されるとも言える。
【００８５】
以下、基準間隔時刻tで特定される期間を、単に、基準間隔時刻tとも称する。
【００８６】
また、現在の基準間隔時刻tにおいて使用されているリソースの量をリソース使用量Rs_day[i][t]で表す。さらに、現在の基準間隔時刻tにおいて空き時間処理タスクで使用されているリソースの量をリソース使用量Rs_bg[i][t]で表す。ここで、iは、リソースを特定する変数である。例えば、０であるiは、HDD１５を示し、１であるiは、ドライブ６１を示し、２であるiは、ビデオコーデックチップ１３を示す。
【００８７】
なお、例えば、リソース使用量Rs_day[i][t]およびリソース使用量Rs_bg[i][t]は、それぞれ、基準間隔時刻tのリソースの使用量のうち、最大のリソースの使用量を示す。
【００８８】
より具体的に説明すると、リソース使用量Rs_day[0][t]は、現在の基準間隔時刻tにおける、HDD１５のアクセス量、すなわち使用されているデータ転送の帯域を示す。例えば、書き込みまたは読み出しにおけるHDD１５の、いわゆるデータ転送速度の最大値を１とした場合、リソース使用量Rs_day[0][t]は、０以上１以下の範囲の現在のデータ転送速度を示す。すなわち、０以上１以下のリソース使用量Rs_day[0][t]は、使用されているリソースの量として、HDD１５のアクセス量を示す。
【００８９】
リソース使用量Rs_day[1][t]は、現在の基準間隔時刻tにおける、使用されているドライブ６１の数を示す。例えば、図１に示される記録装置において、０、１、または２のいずれかのリソース使用量Rs_day[1][t]は、使用されているリソースの量として、使用されているドライブ６１の数を示す。
【００９０】
なお、２であるリソース使用量Rs_day[1][t]の最大値は、図１に示される記録装置における場合の一例であり、リソース使用量Rs_day[1][t]の最大値は、記録装置に設けられているドライブ６１の数になる。例えば、記録装置に５つのドライブ６１が設けられている場合、リソース使用量Rs_day[1][t]の最大値は、５になる。
【００９１】
リソース使用量Rs_day[2][t]は、現在の基準間隔時刻tにおける、使用されているビデオコーデックチップ１３の数を示す。例えば、図１に示される記録装置において、０または１のいずれかのリソース使用量Rs_day[2][t]は、使用されているリソースの量として、使用されているビデオコーデックチップ１３の数を示す。
【００９２】
なお、１であるリソース使用量Rs_day[2][t]の最大値は、図１に示される記録装置における場合の一例であり、リソース使用量Rs_day[2][t]の最大値は、記録装置に設けられているビデオコーデックチップ１３の数になる。例えば、記録装置に３つのビデオコーデックチップ１３が設けられている場合、リソース使用量Rs_day[2][t]の最大値は、３になる。
【００９３】
同様に、リソース使用量Rs_bg[0][t]は、現在の基準間隔時刻tおける空き時間処理タスクによるHDD１５のアクセス量、すなわち空き時間処理タスクに使用されているデータ転送の帯域を示す。例えば、書き込みまたは読み出しにおけるHDD１５のデータ転送速度の最大値を１とした場合、リソース使用量Rs_bg[0][t]は、０以上１以下の範囲の、空き時間処理タスクのデータについての、現在のデータ転送速度を示す。すなわち、０以上１以下のリソース使用量Rs_bg[0][t]は、現在の基準間隔時刻tにおいて空き時間処理タスクで使用されているリソースの量として、現在の基準間隔時刻tおける空き時間処理タスクによるHDD１５のアクセス量を示す。
【００９４】
リソース使用量Rs_bg[1][t]は、現在の基準間隔時刻tにおける空き時間処理タスクに使用されているドライブ６１の数を示す。例えば、図１に示される記録装置において、０、１、または２のいずれかのリソース使用量Rs_bg[1][t]は、現在の基準間隔時刻tおける空き時間処理タスクに占有されているリソースの量として、空き時間処理タスクに使用されているドライブ６１の数を示す。
【００９５】
リソース使用量Rs_bg[2][t]は、現在の基準間隔時刻tおける空き時間処理タスクに使用されているビデオコーデックチップ１３の数を示す。例えば、図１に示される記録装置において、０または１のいずれかのリソース使用量Rs_bg[2][t]は、現在の基準間隔時刻tおける空き時間処理タスクに占有されているリソースの量として、空き時間処理タスクに使用されているビデオコーデックチップ１３の数を示す。
【００９６】
すなわち、例えば、使用実績記録処理ブロック８１は、リソース使用状況管理プログラム５２から供給される、リソース使用量Rs_day[0][t]、リソース使用量Rs_day[1][t]、リソース使用量Rs_day[2][t]、リソース使用量Rs_bg[0][t]、リソース使用量Rs_bg[1][t]、リソース使用量Rs_bg[2][t]を取得する。
【００９７】
使用実績記録処理ブロック８１は、現在使用されているリソースの量を示す情報および現在処理されている空き時間処理タスクで使用されているリソースの量を示す情報から、予め定めた所定の長さの期間であって、１日のうちのそれぞれの期間におけるリソースの占有の履歴を計算する。使用実績記録処理ブロック８１は、計算により得られた、１日のうちのそれぞれの期間におけるリソースの占有の履歴を記録する。
【００９８】
例えば、１日のうちの基準間隔時刻tにおけるリソースの占有の履歴は、統計量として算出される。統計量として算出された、１日のうちの基準間隔時刻tにおけるリソースの占有の履歴を、リソース使用量Rs_DB[i][t]で表す。
【００９９】
空き時間処理タスクのスケジューリングをするためには、記録装置で使用されているリソースの量から、空き時間処理タスクで使用されているリソースの量を引き算した結果を参照しなければ、記録装置の正確な空いている期間を知ることが出来ない。
【０１００】
そこで、例えば、リソース使用量Rs_DB[i][t]は、式（２）により計算される。
Rs_DB[0][t]=((Rs_day[0][t]−Rs_bg[0][t])×Ka＋Rs_DB[0][t]’×Kb)/(Ka＋Kb)
Rs_DB[1][t]=((Rs_day[1][t]−Rs_bg[1][t])×Ka＋Rs_DB[1][t]’×Kb)/(Ka＋Kb)
Rs_DB[2][t]=((Rs_day[2][t]−Rs_bg[2][t])×Ka＋Rs_DB[2][t]’×Kb)/(Ka＋Kb)
・・・（２）
【０１０１】
式（２）において、Rs_DB[0][t]’は、前日までの基準間隔時刻tにおけるHDD１５のリソースの占有の履歴を示し、Rs_DB[1][t]’は、前日までの基準間隔時刻tにおけるドライブ１６のリソースの占有の履歴を示し、Rs_DB[2][t]’は、前日までの基準間隔時刻tにおけるビデオコーデックチップ１３のリソースの占有の履歴を示す。
【０１０２】
なお、Rs_DB[0][t]、Rs_DB[1][t]、およびRs_DB[2][t]のそれぞれの初期値は、０とされる。
【０１０３】
式（２）において、Kaは、本日のそれぞれの基準間隔時刻tにおける、占有されているリソースの量に対する重み係数であり、Kbは、前日までのそれぞれの基準間隔時刻tにおけるリソースの占有の履歴に対する重み係数である。
【０１０４】
例えば、履歴の記録を開始した日において、重み係数Kaは、１とされ、重み係数Kbは、０とされ、履歴の記録を開始してから１週間の間は、重み係数Kaは、１とされ、重み係数Kbは、１とされ、その後、重み係数Kaは、１とされ、重み係数Kbは、２とされるように、履歴の記録を開始してから経過した日数によって、重み係数Kaおよび重み係数Kbを変更することが好ましい。
【０１０５】
なお、使用されているリソースの量の１日分の総和SUM_dayが予め定めた範囲に入っていない場合には、その日の記録装置の使われ方が、通常の日の記録装置の使われ方と異なるので、リソース使用量Rs_DB[i][t]を更新しないようにしてもよい。
【０１０６】
例えば、総和SUM_dayは、式（３）により算出される。
SUM_day=Σ(Rs_day[k][t]−Rs_bg[k][t])                ・・・（３）
なお、式（３）において、０から２８７の基準間隔時刻tと変数iが取り得る値の変数kについて、総和が求められる。
【０１０７】
例えば、SUM_lower < SUM_day < SUM_upperで示される条件が満たされた場合、リソース使用量Rs_DB[i][t]が更新される。なお、閾値SUM_lowerおよび閾値SUM_upperは、予め定められる。
【０１０８】
このようにすることで、記録装置の使用の状態が例外的である場合、その例外的な使用に応じたリソース使用量Rs_DB[i][t]の更新を抑制し、記録装置の通常の使用の状態を示すようにリソース使用量Rs_DB[i][t]の値を維持することができる。
【０１０９】
タスク処理ブロック８２は、使用実績記録処理ブロック８１に記録されている期間毎のリソースの占有の履歴から、空き時間処理タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算し、計算された空き時間帯における空き時間処理タスクの実行を制御する。
【０１１０】
また、タスク処理ブロック８２は、アプリケーションプログラム４２からの、空き時間処理タスクの実行、中断、またはキャンセルの要求に応じて、空き時間処理タスクをタスクキューに登録したり、実行している空き時間処理タスクの実行を中断させたりまたはキャンセルさせたりする。
【０１１１】
タスク処理ブロック８２は、記録装置の操作状態に応じて、空き時間処理タスクの実行を制御する。
【０１１２】
使用実績記録処理ブロック８１は、リソース使用実績データベース９１、リソース使用量統計値計算部９２、およびモニタレベル計算部９３を含む。
【０１１３】
リソース使用実績データベース９１は、予め定めた所定の長さの第１の期間であって、コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴を記録する。ここで、第２の期間は、例えば、半日、１日、１週間、または１月などとすることができる。
【０１１４】
以下、１日である第２の期間を例に説明する。
【０１１５】
すなわち、より具体的には、リソース使用実績データベース９１は、本日のそれぞれの期間における、占有されているリソースの量と、空き時間処理タスクの実行のために占有されているリソースの量とを記録する。また、リソース使用実績データベース９１は、本日のそれぞれの期間における、占有されているリソースの量と、空き時間処理タスクの実行のために占有されているリソースの量とから求められる、１日のうちのそれぞれの期間における、空き時間処理タスク以外のために占有されているリソースの量を示す履歴を記録する。さらに、リソース使用実績データベース９１は、予め定めた所定の長さの期間であって、１日のうちのそれぞれの期間における、リソースの占有の履歴を記録する。
【０１１６】
例えば、リソース使用実績データベース９１は、リソース使用状況管理プログラム５２から供給される、リソース使用量Rs_day[0][t]、リソース使用量Rs_day[1][t]、リソース使用量Rs_day[2][t]、リソース使用量Rs_bg[0][t]、リソース使用量Rs_bg[1][t]、リソース使用量Rs_bg[2][t]を記録する。
【０１１７】
リソース使用量統計値計算部９２は、１日のうちのそれぞれの期間における前日までのリソースの占有の履歴と、本日のそれぞれの期間におけるリソースの占有の履歴とから、１日のうちのそれぞれの期間における本日までのリソースの占有の履歴を計算する。
【０１１８】
例えば、リソース使用量統計値計算部９２は、式（２）で示される演算により、リソース使用量Rs_DB[0][t]、リソース使用量Rs_DB[1][t]、およびリソース使用量Rs_DB[2][t]を計算する。
【０１１９】
すなわち、リソース使用実績データベース９１は、リソース使用量統計値計算部９２によって計算された、１日のうちのそれぞれの期間における本日までのリソースの占有の履歴を、予め定めた所定の長さの期間であって、１日のうちのそれぞれの期間における、リソースの占有の履歴として記録する。
【０１２０】
すなわち、例えば、リソース使用実績データベース９１は、リソース使用量Rs_DB[0][t]、リソース使用量Rs_DB[1][t]、およびリソース使用量Rs_DB[2][t]を記録する。
【０１２１】
モニタレベル計算部９３は、直前の基準間隔時刻tにおいて、使用者からの直接の指令により実行されている処理により使用されているリソースの量が、予め定めた閾値以上であるかを示す値であるモニタレベルを計算する。例えば、使用者からの直接の指令により実行されている処理により、ドライブ６１が使用されている場合、HDD１５がアクセスされている場合、またはビデオコーデックチップ１３が使用されている場合、モニタレベルの値は、１とされ、使用者からの直接の指令により実行されている処理により、ドライブ６１が使用されず、HDD１５がアクセスされず、ビデオコーデックチップ１３が使用されていない場合、モニタレベルの値は、０とされる。
【０１２２】
より具体的には、例えば、モニタレベル計算部９３は、(Rs_day[0][t]−Rs_bg[0][t]) < Lowlevel[0]  かつ(Rs_day[1][t]−Rs_bg[1][t]) < Lowlevel[1]  かつ(Rs_day[2][t]−Rs_bg[2][t]) < Lowlevel[2]の条件が成立する場合、モニタレベルMon_levelを０とし、この条件が成立しない場合、モニタレベルMon_levelを１とする。ここで、閾値Lowlevel[0]、閾値Lowlevel[1]、および閾値Lowlevel[2]は、それぞれ、それぞれのリソースの量に十分な余裕があると判断できる値とされる。
【０１２３】
使用実績記録処理ブロック８１は、記録している、期間毎のリソースの占有の履歴、およびモニタレベルをタスク処理ブロック８２に供給する。例えば、使用実績記録処理ブロック８１は、Rs_DB[0][t]、Rs_DB[1][t]、およびRs_DB[2][t]、並びにモニタレベルMon_levelをタスク処理ブロック８２に供給する。
【０１２４】
タスク処理ブロック８２は、空き時間処理タスクスケジューリング部９４、空き時間処理タスクキュー管理部９５、および空き時間処理タスク実行制御部９６からなる。
【０１２５】
空き時間処理タスクスケジューリング部９４は、記録されている期間毎のリソースの占有の履歴から、空き時間処理タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算する。
【０１２６】
例えば、空き時間処理タスクスケジューリング部９４は、空き時間処理タスク実行制御部９６からスケジューリング計算の要求がなされた場合、空き時間処理タスクキュー管理部９５において管理されている、空き時間処理タスクのキューであるタスクキューに配置されている空き時間処理タスクの状態（以下、ステータスとも称する。）を示すステータス情報を基に、空き時間処理タスクの実行の優先の順番を決定し、実行の優先の順番に応じて、空き時間処理タスクについて、順に空き時間帯を計算する。
【０１２７】
空き時間処理タスクスケジューリング部９４は、現在から一定の長さの空き時間帯がある場合、すなわち、空き時間処理タスクの実行に必要なリソースを確保できる時間がこれから一定の長さ以上ある場合、空き時間処理タスク実行制御部９６に、その空き時間処理タスクの実行または実行の再開を要求する。
【０１２８】
空き時間処理タスクキュー管理部９５は、空き時間処理タスクのキューであるタスクキューを管理する。空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から供給される空き時間処理タスクの登録の指示、登録の削除の指示、または空き時間処理タスクの実行の状態の変更を示す情報を基に、タスクキューに配置されている空き時間処理タスクの状態を示すステータス情報を記憶する。
【０１２９】
空き時間処理タスク実行制御部９６は、後述する空き時間帯計算部１０２において計算された空き時間帯におけるタスクの実行を制御する。
【０１３０】
より具体的には、空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクを実行させる。また、空き時間処理タスクの実行の中断またはキャンセルが要求された場合、空き時間処理タスク実行制御部９６は、アプリケーションプログラム４２に空き時間処理タスクの実行を中断させるか、またはキャンセルさせる。
【０１３１】
空き時間処理タスク実行制御部９６は、モニタレベルMon_levelが０であるとき、または使用者による記録装置の操作状態に応じて、空き時間処理タスクスケジューリング部９４に、スケジューリング計算を要求する。
【０１３２】
また、空き時間処理タスク実行制御部９６は、空き時間処理タスクキュー管理部９５に、空き時間処理タスクの登録を指示するか、または登録の削除を指示する。空き時間処理タスク実行制御部９６は、空き時間処理タスクキュー管理部９５に、空き時間処理タスクの実行の状態の変更を示す情報を供給する。
【０１３３】
空き時間処理タスクスケジューリング部９４は、タスクスコア算出部１０１および空き時間帯計算部１０２を含むように構成される。
【０１３４】
タスクスコア算出部１０１は、空き時間処理タスクの優先度を示す優先度スコア値を計算し、計算した優先度スコア値により、最終的な、空き時間処理タスクの実行の優先の順番である実行優先度を決定する。空き時間帯計算部１０２は、記録されている第１の期間毎のリソースの占有の履歴から、タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算する。すなわち、空き時間帯計算部１０２は、外部から供給された予測条件である、HDDアクセス量閾値、ドライブ数閾値、およびコーデックチップ数閾値と、リソース使用実績データベース９１に記録されている期間毎のリソースの占有の履歴とから、タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算する。
【０１３５】
図４は、使用実績記録処理ブロック８１による、使用実績の収集の処理を説明するフローチャートである。ステップＳ１１において、使用実績記録処理ブロック８１は、リソース使用実績データベース９１を初期化する。
【０１３６】
図示せぬタイマから、例えば５分である基準間隔が経過して、タイマ割り込みが入ると、ステップＳ１２およびステップＳ１３の処理が実行される。ステップＳ１２において、使用実績記録処理ブロック８１は、現在時刻を基準間隔時刻tに変換する。ステップＳ１３において、使用実績記録処理ブロック８１は、使用実績値の更新の処理を実行して、ステップＳ１２に戻り、処理を繰り返す。
【０１３７】
図５は、図４のステップＳ１３に対応する、使用実績値の更新の処理の詳細を説明するフローチャートである。ステップＳ３１において、使用実績記録処理ブロック８１のリソース使用量統計値計算部９２は、ステップＳ１２の変換により得られた基準間隔時刻tが０であるか否かを判定する。ステップＳ３１において、基準間隔時刻tが０であると判定された場合、すなわち、基準間隔時刻tの起点である午前０時なので、ステップＳ３２に進み、リソース使用量統計値計算部９２は、本日１日、言い換えればこれまでの１日のそれぞれの基準間隔時刻tにおけるリソースの使用量から、リソース毎の、基準間隔時刻t毎の統計値を更新する。
【０１３８】
すなわち、リソース使用量統計値計算部９２は、式（２）で示される演算により、リソース毎の、基準間隔時刻t毎の統計値である、Rs_DB[0][t]、Rs_DB[1][t]、およびRs_DB[2][t]のそれぞれを更新する。
【０１３９】
リソース使用量統計値計算部９２は、更新した、リソース毎の、基準間隔時刻t毎の統計値を、リソース使用実績データベース９１に記録させる。
【０１４０】
ステップＳ３３において、リソース使用量統計値計算部９２は、リソース使用実績データベース９１に記録されている、これから１日で値を設定しようとする、リソース毎の、現在使用されているリソース量と空き時間処理タスクで使用されているリソース量とを初期化する。すなわち、例えば、ステップＳ３３において、リソース使用量統計値計算部９２は、これから１日分のリソース使用量Rs_day[0][t]、リソース使用量Rs_day[1][t]、リソース使用量Rs_day[2][t]、リソース使用量Rs_bg[0][t]、リソース使用量Rs_bg[1][t]、リソース使用量Rs_bg[2][t]に所定の値を設定することで、初期化する。
【０１４１】
ステップＳ３４において、使用実績記録処理ブロック８１のリソース使用実績データベース９１は、基準間隔時刻tにおけるリソース毎の、現在使用されているリソース量と空き時間処理タスクで使用されているリソース量とを更新して、処理は終了する。
【０１４２】
すなわち、例えば、ステップＳ３４において、リソース使用実績データベース９１は、リソース使用状況管理プログラム５２から供給される、基準間隔時刻tにおける、リソース使用量Rs_day[0][t]、リソース使用量Rs_day[1][t]、リソース使用量Rs_day[2][t]、リソース使用量Rs_bg[0][t]、リソース使用量Rs_bg[1][t]、およびリソース使用量Rs_bg[2][t]を取得する。そして、リソース使用実績データベース９１は、取得したソース使用量Rs_day[0][t]、リソース使用量Rs_day[1][t]、リソース使用量Rs_day[2][t]、リソース使用量Rs_bg[0][t]、リソース使用量Rs_bg[1][t]、およびリソース使用量Rs_bg[2][t]を記録することにより、これらを更新する。
【０１４３】
ステップＳ３１において、基準間隔時刻tが０でないと判定された場合、基準間隔時刻tの起点である午前０時ではなく、リソース毎の、基準間隔時刻t毎の統計値を更新する必要がないので、ステップＳ３２およびステップＳ３３はスキップされて、手続きは、ステップＳ３４に進み、統計値は更新されずに、基準間隔時刻tにおけるリソース毎の、現在使用されているリソース量と空き時間処理タスクで使用されているリソース量とが更新され、処理は終了する。
【０１４４】
図６は、ステップＳ３４の処理により、リソース使用実績データベース９１に記録されるリソース使用量Rs_day[1][t]およびリソース使用量Rs_bg[1][t]の例を示す図である。
【０１４５】
図６において、上から順に、１日のうちのそれぞれの期間におけるリソース使用量Rs_day[1][t]、１日のうちのそれぞれの期間におけるリソース使用量Rs_bg[1][t]、および１日のうちのそれぞれの期間における、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値が示されている。リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、空き時間処理タスク以外の処理（実行されている処理から空き時間処理タスクを除外した残りの処理）に使用されているリソースの量を示す。
【０１４６】
例えば、午前０時から午前０時２０分まで、リソース使用量Rs_day[1][t]は、２であり、午前０時２０分から午前１時まで、リソース使用量Rs_day[1][t]は、０であり、午前１時から午前１時２０分まで、リソース使用量Rs_day[1][t]は、１であり、午前１時２０分から午前２時まで、リソース使用量Rs_day[1][t]は、２である。午前２時から午前２時５０分まで、リソース使用量Rs_day[1][t]は、１である。午前２時５０分から午前６時５０分まで、リソース使用量Rs_day[1][t]は、０である。
【０１４７】
また、午前６時５０分から午前８時まで、リソース使用量Rs_day[1][t]は、１であり、午前８時から午後１時５０分まで、リソース使用量Rs_day[1][t]は、０である。
【０１４８】
さらに、午後１時５０分から午後２時２０分まで、リソース使用量Rs_day[1][t]は、１であり、午後２時２０分から午後５時５０分まで、リソース使用量Rs_day[1][t]は、０である。午後５時５０分から午後７時５０分まで、リソース使用量Rs_day[1][t]は、１であり、午後７時５０分から午後８時５０分まで、リソース使用量Rs_day[1][t]は、０であり、午後８時５０分から午後９時３０分まで、リソース使用量Rs_day[1][t]は、１であり、午後９時３０分から午後１０時５０分まで、リソース使用量Rs_day[1][t]は、２である。また、午後１０時５０分から午後１１時２０分まで、リソース使用量Rs_day[1][t]は、１であり、午後１１時２０分から午前０時まで、リソース使用量Rs_day[1][t]は、２である。
【０１４９】
同様に、例えば、午前０時から午前１時まで、リソース使用量Rs_bg[1][t]は、０であり、午前１時から午前１時２０分まで、リソース使用量Rs_bg[1][t]は、１であり、午前１時２０分から午前２時まで、リソース使用量Rs_bg[1][t]は、２である。午前２時から午前２時５０分まで、リソース使用量Rs_bg[1][t]は、１である。午前２時５０分から午後１時５０分まで、リソース使用量Rs_bg[1][t]は、０である。
【０１５０】
さらに、午後１時５０分から午後２時２０分まで、リソース使用量Rs_bg[1][t]は、１であり、午後２時２０分から午前０時まで、リソース使用量Rs_bg[1][t]は、０である。
【０１５１】
このように、午前１時から午前２時５０分までの期間、および午後１時５０分から午後２時２０分までの期間において、空き時間処理タスクにドライブ６１であるリソースが使用されたことと、そのリソースの使用量とがわかる。
【０１５２】
また、午前０時から午前０時２０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、２であり、午前０時２０分から午前６時５０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、０である。
【０１５３】
午前６時５０分から午前８時まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、１である。午前８時から午後５時５０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、０である。
【０１５４】
午後５時５０分から午後７時５０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、１であり、午後７時５０分から午後８時５０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、０であり、午後８時５０分から午後９時３０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、１であり、午後９時３０分から午後１０時５０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、２である。また、午後１０時５０分から午後１１時２０分まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、１であり、午後１１時２０分から午前０時まで、リソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値は、２である。
【０１５５】
これから、午前６時５０分から午前８時までの期間、午後５時５０分から午後７時５０分までの期間、および午後８時５０分から午前０時までの期間において、空き時間処理タスク以外の処理、例えば、使用者により直接要求された処理にドライブ６１であるリソースが使用されたことと、そのリソースの使用量とがわかる。
【０１５６】
図７は、図５の使用実績値の更新の処理により、リソース使用実績データベース９１に記録されるリソース使用量Rs_DB[1][t]の例を示す図である。
【０１５７】
ステップＳ３２において、式（２）で示される演算により、基準間隔時刻t毎に、リソース使用量Rs_DB[1][t]が計算される。すなわち、リソース使用量Rs_DB[1][t]は、基準間隔時刻t毎に、前日までのリソース使用量Rs_DB[1][t]’に、本日のリソース使用量Rs_day[1][t]からリソース使用量Rs_bg[1][t]を引き算した値が、重み付けされて加算されることにより得られる。
【０１５８】
所定の日数について、１日毎に、式（２）で示される演算を繰り返すことにより、使用者の平均的な使い方に応じた、１日のうちの基準間隔時刻tにおけるドライブ６１のリソースの使用量を示すリソース使用量Rs_DB[1][t]が計算される。
【０１５９】
図７の上側に示されるリソース使用量Rs_DB[1][t]は、基準間隔時刻tにおいて、空き時間処理タスク以外の処理、例えば、使用者により直接要求された処理に使用されるドライブ６１であるリソースの使用量の履歴を示している。言い換えれば、リソース使用量Rs_DB[1][t]は、基準間隔時刻tにおいて、空き時間処理タスク以外の処理にドライブ６１であるリソースが使用される傾向を示しているとも言え、また、リソース使用量Rs_DB[1][t]は、基準間隔時刻tにおいて、空き時間処理タスク以外の処理に使用されるドライブ６１であるリソースの使用量の予測値を示しているとも言える。
【０１６０】
図７の下側には、ドライブ６１であるリソースのリソース量の最大値を示すリソース量最大値Rs_Max[1]からリソース使用量Rs_DB[1][t]を引き算した結果を示す。リソース量最大値Rs_Max[1]からリソース使用量Rs_DB[1][t]を引き算した値は、基準間隔時刻tにおいて、空き時間処理タスクで使用できると予測される、ドライブ６１であるリソースのリソース量を示している。
【０１６１】
例えば、リソース量最大値Rs_Max[1]からリソース使用量Rs_DB[1][t]を引き算した値が、所定の空き時間処理タスクに応じた閾値の一例である０．８以上であって、３０分以上連続した期間を求めると、午前０時１０分から午後６時３０分までの期間と、午後９時から午後１０時までの期間と、午後１１時３０分から午前０時までの期間が求められる。
【０１６２】
なお、詳細は後述するが、閾値の値を、空き時間処理タスクによって、変更することが好ましい。
【０１６３】
図８は、空き時間処理タスクの登録の処理を説明するフローチャートである。
【０１６４】
ステップＳ５１において、空き時間処理タスク実行制御部９６は、アプリケーションプログラム４２からの空き時間処理タスクの実行の要求に応じて、空き時間処理タスクキュー管理部９５に、空き時間処理タスクの登録を要求する。空き時間処理タスク実行制御部９６から登録が要求されると、空き時間処理タスクキュー管理部９５は、タスクキューに空き時間処理タスクを登録する（タスクキューに空き時間処理タスクを配置する）。
【０１６５】
ステップＳ５２において、空き時間処理タスクキュー管理部９５は、ステップＳ５１で、タスクキューに登録した空き時間処理タスクのステータスを”待機中”として、処理は終了する。
【０１６６】
このように、”待機中”であるステータスの空き時間処理タスクがタスクキューに登録される。
【０１６７】
なお、タスクキューの空き時間処理タスクのステータスは、”待機中”、”中断中”、”実行中”、”完了”のいずれか１つとされる。また、”待機中”であるステータスの空き時間処理タスクは、さらに、”未確認”または”確認済み”のいずれかのステータスとされる。
【０１６８】
また、空き時間処理タスクは、優先度および実行に必要なリソースの量（最低限必要なリソースの量）を示す値を持つ。
【０１６９】
次に、空き時間処理タスクのスケジューリングの処理について説明する。図９は、空き時間処理タスクのスケジューリングの処理を説明するフローチャートである。ステップＳ７１において、タスク処理ブロック８２の空き時間処理タスク実行制御部９６は、使用実績記録処理ブロック８１のモニタレベル計算部９３から供給されるモニタレベルMon_levelが０であるか否かを判定し、モニタレベルMon_levelが０であると判定された場合、使用者からの直接の指令により実行されている処理によりリソースが占有されていないので、ステップＳ７２に進み、空き時間処理タスクが実行中であるか否かを判定する。
【０１７０】
ステップＳ７２において、空き時間処理タスクが実行中でないと判定された場合、ステップＳ７３に進み、空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４にスケジューリング計算を要求し、空き時間処理タスクスケジューリング部９４により、空き時間処理タスク実行優先度順の算出の処理が実行される。
【０１７１】
ここで、図１０のフローチャートを参照して、空き時間処理タスク実行優先度順の算出の処理の詳細について説明する。
【０１７２】
ステップＳ１０１において、空き時間処理タスクスケジューリング部９４のタスクスコア算出部１０１は、空き時間処理タスクキュー管理部９５で管理されているタスクキューにたまっている空き時間処理タスクの数をカウントする。ステップＳ１０２において、タスクスコア算出部１０１は、それぞれの空き時間処理タスクの優先度スコア値を算出する。
【０１７３】
図１１を参照して、優先度スコア値の算出についてより詳細に説明する。すなわち、図１１の上側に示されるように、タスクキューの空き時間処理タスクのそれぞれに、空き時間処理タスクが登録された時刻、空き時間処理タスクを特定するためのタスクID、空き時間処理タスクの処理内容、空き時間処理タスクの優先度、および空き時間処理タスクの実行に必要なリソースの量（最低限必要なリソースの量）を示す値が付されている。
【０１７４】
なお、空き時間処理タスクの優先度は、例えば、処理内容により定まる優先の度合いを示し、その値の小さいものほど優先の度合いの高いことを示す。
【０１７５】
例えば、A1であるタスクIDで特定される空き時間処理タスクに、2006/12/15 12:35:44である登録された時刻、ディスクの登録処理である処理内容、１である優先度、HDD１５について０．１であり、ドライブ６１について１であり、ビデオコーデックチップ１３について０である実行に必要なリソースの量を示す値が付されている。
【０１７６】
同様に、例えば、D2であるタスクIDで特定される空き時間処理タスクに、2006/12/15 12:20:37である登録された時刻、HDD内のビデオデータの画質改善処理である処理内容、４である優先度、HDD１５について０．６であり、ドライブ６１について０であり、ビデオコーデックチップ１３について１である実行に必要なリソースの量を示す値が付されている。
【０１７７】
さらに、例えば、C1であるタスクIDで特定される空き時間処理タスクに、2006/12/15 11:43:00である登録された時刻、HDD内のビデオデータのフォーマット変換である処理内容、３である優先度、HDD１５について０．６であり、ドライブ６１について０であり、ビデオコーデックチップ１３について１である実行に必要なリソースの量を示す値が付されている。
【０１７８】
さらにまた、例えば、B1であるタスクIDで特定される空き時間処理タスクに、2006/12/15 10:10:25である登録された時刻、光ディスク間でのデータ移動処理である処理内容、２である優先度、HDD１５について０であり、ドライブ６１について２であり、ビデオコーデックチップ１３について０である実行に必要なリソースの量を示す値が付されている。
【０１７９】
例えば、D1であるタスクIDで特定される空き時間処理タスクに、2006/12/15 07:05:12である登録された時刻、HDD内のビデオデータの画質改善処理である処理内容、４である優先度、HDD１５について０．６であり、ドライブ６１について０であり、ビデオコーデックチップ１３について１である実行に必要なリソースの量を示す値が付されている。
【０１８０】
以下、リソースiについて、空き時間処理タスクの実行に必要なリソースの量を、Rs_req[i]で表す。例えば、空き時間処理タスクの実行に必要なHDD１５のリソースの量は、Rs_req[0]で表され、空き時間処理タスクの実行に必要なドライブ６１のリソースの量は、Rs_req[1]で表され、空き時間処理タスクの実行に必要なビデオコーデックチップ１３のリソースの量は、Rs_req[2]で表される。
【０１８１】
空き時間処理タスクの優先度スコア値は、空き時間処理タスクのステータスによって決まるスコアオフセット値、優先度、空き時間処理タスクを登録してからの時間の長さから計算される。例えば、登録してからの経過した時間（分）に対する重み付け係数をAge_factorで表し、現在の時刻をcurrent_timeで表し、空き時間処理タスクが登録された時刻をregisted_timeで表し、優先度をtask_priorityで表し、空き時間処理タスクのステータスが”待機中”である場合のスコアオフセット値をScore_offset_Aで表し、空き時間処理タスクのステータスが”中断中”である場合のスコアオフセット値をScore_offset_Bで表すと、式（４）により、優先度スコア値Task_scoreが計算される。
【０１８２】
Task_score=task_priority−(current_time−registed_time)×Age_factor+Score_offset
・・・（４）
式（４）において、Score_offsetは、空き時間処理タスクのステータスが”待機中”である場合、Score_offset_Aとされ、空き時間処理タスクのステータスが”中断中”である場合、Score_offset_Bとされる。
【０１８３】
ただし、右辺の計算結果が０未満である場合、優先度スコア値Task_scoreは、０とされる。
【０１８４】
例えば、優先度task_priorityが２であり、空き時間処理タスクが登録された時刻registed_timeから現在の時刻current_timeまでの待機時間resuest_ageが１２０（分）であり、重み付け係数Age_factorが１／２００であり、スコアオフセット値Score_offset_Aが５０であり、スコアオフセット値Score_offset_Bが４７である場合、空き時間処理タスクのステータスが”待機中”であるとき、空き時間処理タスクの優先度スコア値Task_scoreは、２−１２０／２００＋５０より、５１．４とされる。
【０１８５】
例えば、ステップＳ１０２において、タスクスコア算出部１０１は、式（４）により、それぞれの空き時間処理タスクの優先度スコア値Task_scoreを算出する。
【０１８６】
図１０に戻り、ステップＳ１０３において、タスクスコア算出部１０１は、優先度スコア値Task_scoreの小さい順に、空き時間処理タスクの実行優先度の順番を指定し、処理は終了する。
【０１８７】
例えば、図１１の下側に示されるように、A1であるタスクIDで特定される空き時間処理タスク、D2であるタスクIDで特定される空き時間処理タスク、C1であるタスクIDで特定される空き時間処理タスク、B1であるタスクIDで特定される空き時間処理タスク、およびD1であるタスクIDで特定される空き時間処理タスクのそれぞれのステータスが、全て”待機中”である場合、A1であるタスクIDで特定される空き時間処理タスクについて、５０．８７５である優先度スコア値Task_scoreが算出され、D2であるタスクIDで特定される空き時間処理タスクについて、５３．８である優先度スコア値Task_scoreが算出され、C1であるタスクIDで特定される空き時間処理タスクについて、５２．６２である優先度スコア値Task_scoreが算出され、B1であるタスクIDで特定される空き時間処理タスクについて、５１．１５である優先度スコア値Task_scoreが算出され、D1であるタスクIDで特定される空き時間処理タスクについて、５２．２３である優先度スコア値Task_scoreが算出される。
【０１８８】
従って、タスクスコア算出部１０１は、優先度スコア値Task_scoreの小さい順に、空き時間処理タスクの実行優先度の順番を指定するので、A1であるタスクIDで特定される空き時間処理タスク、B1であるタスクIDで特定される空き時間処理タスク、D1であるタスクIDで特定される空き時間処理タスク、C1であるタスクIDで特定される空き時間処理タスク、D2であるタスクIDで特定される空き時間処理タスクの順に、それぞれの空き時間処理タスクに、実行優先度の順番が指定される。
【０１８９】
すなわち、D1であるタスクIDで特定される空き時間処理タスクの優先度による優先の度合いは、C1であるタスクIDで特定される空き時間処理タスクの優先度により優先の度合いより低いが、D1であるタスクIDで特定される空き時間処理タスクが登録された時刻から経過した時間が、C1であるタスクIDで特定される空き時間処理タスクが登録された時刻から経過した時間より長いので、実行優先度の順番は、C1であるタスクIDで特定される空き時間処理タスクよりD1であるタスクIDで特定される空き時間処理タスクの方が先になる。
【０１９０】
このように、空き時間処理タスクのステータスによって決まるスコアオフセット値、優先度、および空き時間処理タスクを登録してからの時間の長さが総合的に考慮されて、それぞれの空き時間処理タスクの実行優先度の順番が決められることになる。
【０１９１】
図９に戻り、ステップＳ７４において、空き時間処理タスク実行制御部９６は、空き時間処理タスクキュー管理部９５に、タスクキューに配置されているそれぞれの空き時間処理タスクのステータスを”未確認”に初期化させる。
【０１９２】
ステップＳ７５において、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクキュー管理部９５で管理されているタスクキューに、”未確認”であるステータスの空き時間処理タスクがあるか否かを判定し、”未確認”であるステータスの空き時間処理タスクがあると判定された場合、ステップＳ７６に進み、”未確認”であるステータスの空き時間処理タスクのうち、ステップＳ７３で算出された実行優先度の順序が最も先である空き時間処理タスクを選択する。
【０１９３】
ステップＳ７７において、空き時間処理タスクスケジューリング部７４により、選択された空き時間処理タスクについての、空き時間処理タスク実行可能時間帯の算出の処理が実行される。空き時間処理タスク実行可能時間帯の算出の処理の詳細は、図１２のフローチャートを参照して、後述する。
【０１９４】
ステップＳ７８において、空き時間処理タスクキュー管理部９５は、選択された空き時間処理タスクのステータスを”確認済み”に変更する。
【０１９５】
ステップＳ７９において、空き時間処理タスクスケジューリング部９４は、現時刻から一定の期間リソース確保可能な時間帯であるか否かを判定し、現時刻から一定の期間リソース確保可能な時間帯であると判定された場合、ステップＳ８０に進み、空き時間処理タスク実行制御部９６に、該当する空き時間処理タスク、すなわち、ステップＳ７６で選択され、現在から所定の長さの期間だけ、その実行に必要なリソースを確保できるとされた空き時間処理タスクの実行を指示する。空き時間処理タスク実行制御部９６は、指示された空き時間処理タスクをアプリケーションプログラム４２に実行させる。
【０１９６】
ステップＳ８１において、空き時間処理タスクキュー管理部９５は、実行が指示された空き時間処理タスクのステータスを”実行中”に変更して、処理は終了する。
【０１９７】
ステップＳ７９において、現時刻から一定の期間リソース確保可能な時間帯でないと判定された場合、ステップＳ７５に戻り、上述した処理を繰り返す。
【０１９８】
ステップＳ７５において、”未確認”であるステータスの空き時間処理タスクがないと判定された場合、実行できる空き時間処理タスクがないので、処理は終了する。
【０１９９】
ステップＳ７１において、モニタレベルMon_levelが０でないと判定された場合、使用者からの直接の指令により実行されている処理によりリソースが占有されているので、また、ステップＳ７２において、空き時間処理タスクが実行中であると判定された場合、これ以上、空き時間処理タスクを実行できないので、それ以降の処理はスキップされて、処理は終了する。
【０２００】
次に、図１２のフローチャートを参照して、HDD１５、ドライブ６１、およびビデオコーデックチップ１３の３つのリソースについての、ステップＳ７７に対応する、空き時間処理タスク実行可能時間帯の算出の処理の詳細について説明する。ステップＳ１３１において、空き時間処理タスクスケジューリング部９４は、内部に設けた予想時間帯テーブルを初期化する。ステップＳ１３２において、空き時間処理タスクスケジューリング部９４は、変数Kに０を設定する。変数Kは、リソースを特定するための用いられる。
【０２０１】
ステップＳ１３３において、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクを実行するのに必要なリソースKが確保できる時間帯を計算する。空き時間処理タスクスケジューリング部９４は、計算した時間帯を予想時間帯テーブルに格納する。
【０２０２】
例えば、変数Kが０である場合、ステップＳ１３３において、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクを実行するのに必要なHDD１５のリソースが確保できる時間帯を計算する。
【０２０３】
この場合、リソース使用量Rs_DB[0][t]を、基準間隔時刻tにおけるHDD１５のリソースの使用量の予測値として、HDD１５であるリソースのリソース量の最大値からリソース使用量Rs_DB[0][t]を引き算した値で示される余裕値が求められる。そして、この余裕値と、この空き時間処理タスク実行可能時間帯の算出の処理の対象である空き時間処理タスクが必要とするHDD１５のリソース量とが比較される。
【０２０４】
より具体的には、リソースiについての重み付けをRs_K[i]とすると、空き時間処理タスクの実行に必要なリソースの量Rs_req[i]に、重み付けRs_K[i]を乗算することで、空き時間処理タスクに必要とされるHDD１５のリソース量を示す閾値LT[i]が算出される。
【０２０５】
すなわち、この場合、閾値LT[0]=Rs_req[0]×Rs_K[0]で算出される、その閾値LT[0]が、この空き時間処理タスク実行可能時間帯の算出の処理の対象である空き時間処理タスクに必要とされるHDD１５のリソース量として求められる。
【０２０６】
そして、条件式Rs_Max[i]−Rs_DB[i][t] > LT[i]を満たす時間帯が、リソースiの空いている時間帯であるとされる。すなわち、例えば、条件式Rs_Max[0]−Rs_DB[0][t] > LT[0]を満たす時間帯が、HDD１５のリソース量が確保できる時間帯であるとされる。
【０２０７】
例えば、基準間隔時刻tにおいて、条件式Rs_Max[k]−Rs_DB[k][t] > LT[k]が成り立つ場合、リソース量が確保できる時間帯であるか否かを示す変数table[k][t]に１が設定され、基準間隔時刻tにおいて、条件式Rs_Max[k]−Rs_DB[k][t] > LT[k]が成り立たない場合、変数table[k][t]に０が設定される。そして、この変数table[k][t]が予想時間帯テーブルに格納される。
【０２０８】
ステップＳ１３４において、空き時間処理タスクスケジューリング部９４は、変数Kを１だけインクリメントする。
【０２０９】
ステップＳ１３５において、空き時間処理タスクスケジューリング部９４は、変数Kが３であるか否かを判定し、変数Kが３でないと判定された場合、まだ空いている時間帯を計算していないリソースがあるので、ステップＳ１３３に戻り、次のリソースについて、上述した処理を繰り返す。
【０２１０】
ステップＳ１３５において、変数Kが３であると判定された場合、空き時間処理タスクスケジューリング部９４は、０乃至２の総てのリソースKが確保できる時間帯であって、連続して３０分以上の時間が確保できる時間帯を、この空き時間処理タスク実行可能時間帯の算出の処理の対象である空き時間処理タスクの実行可能な時間帯として計算して、処理は終了する。
【０２１１】
空き時間処理タスクは、その実行に複数のリソースを必要とするので、ステップＳ１３３において計算されるそれぞれのリソースが確保できる時間帯が重複する時間帯が、この空き時間処理タスク実行可能時間帯の算出の処理の対象である空き時間処理タスクの実行可能な時間帯とされる。
【０２１２】
空き時間処理タスクスケジューリング部９４は、連続して３０分以上の時間において、リソースiの全てについて、条件式Rs_Max[i]−Rs_DB[i][t] >Rs_req[i]×Rs_K[i]が満たされる時間帯を計算する。例えば、空き時間処理タスクスケジューリング部９４は、連続して３０分以上の時間において、Rs_Max[0]−Rs_DB[0][t] >Rs_req[0]×Rs_K[0]  かつRs_Max[1]−Rs_DB[1][t] >Rs_req[1]×Rs_K[1]  かつRs_Max[2]−Rs_DB[2][t] >Rs_req[2]×Rs_K[2]が満たされる時間帯を求める。
【０２１３】
すなわち、例えば、予想時間帯テーブルに格納された変数table[k][t]が参照されて、Tmp[t]=table[0][t]&table[1][t]&table[2][t]により、０乃至２のkについて全ての変数table[k][t]が１である基準時刻tを示す一時変数Tmp[t]が算出されて、一時変数Tmp[t]が３０分以上連続して１である場合、最終的に、空き時間処理タスクの実行可能な時間帯を示す変数Task_forcast[t]に１が設定され、一時変数Tmp[t]が３０分以上連続して１でない場合、すなわち、一時変数Tmp[t]が０であるか、１である一時変数Tmp[t]が３０分以上連続していない場合、最終的に、空き時間処理タスクの実行可能な時間帯を示す変数Task_forcast[t]に０が設定される。
【０２１４】
１である変数Task_forcast[t]は、基準時刻tが空き時間処理タスクの実行可能な時間帯である空き時間帯に含まれることを示し、０である変数Task_forcast[t]は、基準時刻tが空き時間帯に含まれないことを示す。
【０２１５】
例えば、図１３で示されるように、HDD内のビデオデータの画質改善処理である空き時間処理タスクについて、空き時間処理タスクの実行に必要なHDD１５のリソースの量Rs_req[0]が、０．６とされ、ドライブ６１のリソースの量Rs_req[1]が０とされ、ビデオコーデックチップ１３のリソースの量Rs_req[2]が１とされている場合、例えば、閾値LT[0]は、０．５とされ、閾値LT[1]は、０とされ、閾値LT[2]は、０．６とされる。
【０２１６】
これにより、図１４で示されるように、HDD１５について、Rs_Max[0]−Rs_DB[0][t]が、３０分以上連続して、０．５である閾値LT[0]を超える時間帯として、午後１０時２０分から午後２時までの時間帯と、午後４時１０分から午後６時２５分までの時間帯とが計算される。また、ドライブ６１について、Rs_Max[1]−Rs_DB[1][t]が、３０分以上連続して、０である閾値LT[1]を超える時間帯として、一日中である時間帯が計算される。
【０２１７】
さらにまた、ビデオコーデックチップ１３について、Rs_Max[2]−Rs_DB[2][t]が、３０分以上連続して、０．６である閾値LT[2]を超える時間帯として、午前０時５０分から午前８時１５分までの時間帯と、午前１１時３０分から午後４時までの時間帯とが計算される。
【０２１８】
そして、HDD１５についての時間帯と、ドライブ６１についての時間帯と、ビデオコーデックチップ１３についての時間帯とが重複する午前０時５０分から午前８時１５分までの時間帯と、午前１１時３０分から午後２時までの時間帯とが、HDD内のビデオデータの画質改善処理である空き時間処理タスクの実行可能な空き時間帯とされる。
【０２１９】
図１５は、空き時間処理タスクの完了時の処理を説明するフローチャートである。ステップＳ１５１において、空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクの実行の完了が通知されるので、その空き時間処理タスクのステータスを”完了”にする。ステップＳ１５２において、空き時間処理タスクキュー管理部９５は、タスクキューから、”完了”であるステータスの空き時間処理タスクを削除して、処理は終了する。
【０２２０】
図１６は、空き時間処理タスクの途中中断の処理を説明するフローチャートである。ステップＳ１７１において、空き時間処理タスク実行制御部９６は、中断が指示された空き時間処理タスクの途中中断が可能であるか否かを判定する。例えば、空き時間処理タスク実行制御部９６は、実行されている空き時間処理タスクの処理内容により、中断が指示された空き時間処理タスクの途中中断が可能であるか否かを判定する。
【０２２１】
ステップＳ１７１において、中断が指示された空き時間処理タスクの途中中断が可能であると判定された場合、ステップＳ１７２に進み、空き時間処理タスク実行制御部９６は、アプリケーションプログラム４２に、空き時間処理タスクの中断を指示する。その結果、空き時間処理タスクの実行が中断される。空き時間処理タスク実行制御部９６は、空き時間処理タスクの中断を空き時間処理タスクキュー管理部９５に通知する。ステップＳ１７３において、空き時間処理タスクキュー管理部９５は、タスクキューの、実行が中断された空き時間処理タスクのステータスを”中断中”として、処理は終了する。
【０２２２】
一方、ステップＳ１７１において、中断が指示された空き時間処理タスクの途中中断が可能でないと判定された場合、ステップＳ１７４に進み、空き時間処理タスク実行制御部９６は、中断が指示された空き時間処理タスクの実行をキャンセルするか否かを判定する。例えば、空き時間処理タスク実行制御部９６は、GUIプログラム４１を介して、空き時間処理タスクの実行をキャンセルするかを使用者に問い合わせ、使用者からの返答に応じて、中断が指示された空き時間処理タスクの実行をキャンセルするか否かを判定する。
【０２２３】
ステップＳ１７４において、中断が指示された空き時間処理タスクの実行をキャンセルすると判定された場合、ステップＳ１７５に進み、空き時間処理タスク実行制御部９６は、アプリケーションプログラム４２に、空き時間処理タスクの実行のキャンセルを指示する。その結果、空き時間処理タスクの実行がキャンセルされる。空き時間処理タスク実行制御部９６は、空き時間処理タスクの実行のキャンセルを空き時間処理タスクキュー管理部９５に通知する。ステップＳ１７６において、空き時間処理タスクキュー管理部９５は、タスクキューの、実行がキャンセルされた空き時間処理タスクのステータスを”待機中”として、処理は終了する。
【０２２４】
ステップＳ１７４において、中断が指示された空き時間処理タスクの実行をキャンセルしないと判定された場合、空き時間処理タスクの実行が継続されて、処理は終了する。
【０２２５】
図１７は、空き時間処理タスクの削除時の処理を説明するフローチャートである。ステップＳ１９１において、空き時間処理タスク実行制御部９６は、削除が指示された空き時間処理タスクが実行中であるか否かを判定し、削除が指示された空き時間処理タスクが実行中であると判定された場合、ステップＳ１９２に進み、さらに、空き時間処理タスクの実行をキャンセルするか否かを判定する。例えば、ステップＳ１９２において、空き時間処理タスク実行制御部９６は、GUIプログラム４１を介して、空き時間処理タスクの実行をキャンセルするかを使用者に問い合わせ、使用者からの返答に応じて、削除が指示された空き時間処理タスクの実行をキャンセルするか否かを判定する。
【０２２６】
ステップＳ１９２において、空き時間処理タスクの実行をキャンセルすると判定された場合、ステップＳ１９３に進み、空き時間処理タスク実行制御部９６は、アプリケーションプログラム４２に、空き時間処理タスクの実行のキャンセルを指示する。その結果、空き時間処理タスクの実行がキャンセルされる。ステップＳ１９４において、空き時間処理タスクキュー管理部９５は、タスクキューから、その空き時間処理タスクを削除して、処理は終了する。
【０２２７】
ステップＳ１９２において、空き時間処理タスクの実行をキャンセルしないと判定された場合、空き時間処理タスクの実行が継続されて、処理は終了する。
【０２２８】
ステップＳ１９１において、削除が指示された空き時間処理タスクが実行中でないと判定された場合、ステップＳ１９２およびステップＳ１９３はスキップされて、手続きは、ステップＳ１９４に進み、タスクキューから、その空き時間処理タスクが削除されて、処理は終了する。
【０２２９】
以上で説明した処理による、空き時間処理タスクの実行の例を図１８乃至図２２を参照して説明する。
【０２３０】
図１８は、空き時間処理タスクのスケジューリングおよびその実行の具体例を示す図である。
【０２３１】
図１８において、例えば、空き時間処理タスクＡは、光ディスクの登録処理を処理内容とする空き時間処理タスクであり、空き時間処理タスクＢは、光ディスク間でのデータ移動処理を処理内容とする空き時間処理タスクであり、空き時間処理タスクＣは、HDD内のビデオデータのフォーマット変換を処理内容とする空き時間処理タスクであり、空き時間処理タスクＤは、HDD内のビデオデータの画質改善処理を処理内容とする空き時間処理タスクである。
【０２３２】
図１８で示される例において、空き時間処理タスクＡを実行可能な空き時間帯は、午前０時４０分から午前５時４０分までと、午前７時から午前９時３０分までと、午後０時３０分から午後５時２０分までと、午後９時３０分から午前０時までとである。
【０２３３】
また、図１８で示される例において、空き時間処理タスクＢを実行可能な空き時間帯は、午前２時１５分から午前５時までと、午前８時から午前９時３０分までと、午後４時５分から午後６時２０分までとである。
【０２３４】
図１８で示される例において、空き時間処理タスクＣを実行可能な空き時間帯は、午前１時１５分から午前５時４０分までと、午前７時４０分から午前８時５５分までと、午後１時２０分から午後５時５分までと、午後１０時１０分から午後１１時４０分までとである。
【０２３５】
さらに、図１８で示される例において、空き時間処理タスクＤを実行可能な空き時間帯は、午前１時１５分から午前５時４０分までと、午前７時４０分から午前８時５５分までと、午後１時２０分から午後５時５分までと、午後１０時１０分から午後１１時４０分までとである。
【０２３６】
図１８の下側の斜線を付した四角は、使用者からの操作によって、コンテンツの記録または記録しているコンテンツの再生など、即座に実行が要求される処理が実行された時間帯を示している。すなわち、使用者からの操作によって、午前０時から午前０時５０分までの時間帯と、午前７時から午後０時４０分までの時間帯と、午後３時から午後３時４０分までの時間帯と、午後６時３０分から午後１０時３０分までの時間帯において、即座に実行が要求される処理が実行された。
【０２３７】
システムマネージャ４３の同時動作調停プログラム５１は、アプリケーションプログラム４２の起動を検知し、アプリケーションプログラム４２の実行を管理しているので、システムマネージャ４３は、空き時間処理タスクを除くアプリケーションプログラム４２の処理であって、リソースを使用するアプリケーションプログラム４２の処理が実行されている時間帯を知ることができる。
【０２３８】
空き時間処理タスクスケジューラ５３は、タスクキューに”待機中”または”中断中”であるステータスの空き時間処理タスクが配置されている場合、例えば、３０分間など所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されなかったとき、または空き時間処理タスクの実行が完了したとき、使用者からの操作がない状態が継続していると、空き時間処理タスクスケジューラ５３の空き時間処理タスクスケジューリング部９４が起動させられて、図９を参照して説明した、空き時間処理タスクのスケジューリングの処理が開始する。
【０２３９】
図１８は、実行優先度によって、１つずつ順番に空き時間処理タスクが実行され、同時に２つ以上の空き時間処理タスクが実行されない場合の例を示している。
【０２４０】
図１８において、午前７時から午後０時４０分までの時間帯に、タスクIDがA1である空き時間処理タスク（以下、空き時間処理タスクA1と称する）、タスクIDがB1である空き時間処理タスク（以下、空き時間処理タスクB1と称する）、タスクIDがC1である空き時間処理タスク（以下、空き時間処理タスクC1と称する）、タスクIDがD1である空き時間処理タスク（以下、空き時間処理タスクD1と称する）、およびタスクIDがD2である空き時間処理タスク（以下、空き時間処理タスクD2と称する）がタスクキューに登録され、空き時間処理タスクA1、空き時間処理タスクB1、空き時間処理タスクC1、空き時間処理タスクD1、および空き時間処理タスクD2の全てのステータスは、”待機中”とされる。
【０２４１】
それぞれ、空き時間処理タスクA1は、光ディスクの登録処理を処理内容とし、空き時間処理タスクB1は、光ディスク間でのデータ移動処理を処理内容とし、空き時間処理タスクC1は、HDD内のビデオデータのフォーマット変換を処理内容とし、空き時間処理タスクD1および空き時間処理タスクD2は、HDD内のビデオデータの画質改善処理を処理内容とする。
【０２４２】
図１８のａで示される時点（以下、時点ａと称する。）において、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクスケジューリング部９４が起動させられて、図９を参照して説明した、空き時間処理タスクのスケジューリングの処理が実行される。
【０２４３】
時点ａにおいて実行された、空き時間処理タスクのスケジューリングの処理により、図１９に示されるように、空き時間処理タスクA1について、１である実行優先度が算出され、空き時間処理タスクB1について、２である実行優先度が算出され、空き時間処理タスクD1について、３である実行優先度が算出され、空き時間処理タスクC1について、４である実行優先度が算出され、空き時間処理タスクD2について、５である実行優先度が算出されたので、優先の度合いが最も高い、すなわち、実行優先度が最も小さい空き時間処理タスクA1が選択されることになる。
【０２４４】
そして、選択された空き時間処理タスクA1の空き時間帯が計算される。空き時間処理タスクA1の処理内容は、光ディスクの登録処理なので、図１８に示す、空き時間処理タスクＡの空き時間帯を参照すると、時点ａは、空き時間処理タスクＡの空き時間帯の時刻であり、空き時間処理タスクA1を実行することができる。
【０２４５】
その結果、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクA1の実行を空き時間処理タスク実行制御部９６に要求する。空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクA1を実行させる。
【０２４６】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクA1の実行が通知されると、タスクキューに配置されている空き時間処理タスクA1のステータスを”実行中”とする。
【０２４７】
図１８のｂで示される時点（以下、時点ｂと称する。）において、空き時間処理タスクA1の実行が完了すると、空き時間処理タスク実行制御部９６から空き時間処理タスクキュー管理部９５に空き時間処理タスクA1の実行の完了が通知されるので、空き時間処理タスクキュー管理部９５は、タスクキューから空き時間処理タスクA1を削除する。
【０２４８】
時点ｂにおいて、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクのスケジューリングの処理が実行される。
【０２４９】
時点ｂにおいて実行された、空き時間処理タスクのスケジューリングの処理により、図２０に示されるように、空き時間処理タスクB1について、１である実行優先度が算出され、空き時間処理タスクD1について、２である実行優先度が算出され、空き時間処理タスクC1について、３である実行優先度が算出され、空き時間処理タスクD2について、４である実行優先度が算出されたので、優先の度合いが最も高い、すなわち、実行優先度が最も小さい空き時間処理タスクB1が選択されることになる。
【０２５０】
そして、選択された空き時間処理タスクB1の空き時間帯が計算される。空き時間処理タスクB1の処理内容は、光ディスク間でのデータ移動処理なので、図１８に示す、空き時間処理タスクＢの空き時間帯を参照すると、時点ｂは、空き時間処理タスクＢの空き時間帯の時刻ではないので、時点ｂにおいて、空き時間処理タスクB1を実行することができない。
【０２５１】
そこで、優先の度合いが次に高い、すなわち、実行優先度が２番目に小さい空き時間処理タスクD1が選択されることになる。
【０２５２】
そして、選択された空き時間処理タスクD1の空き時間帯が計算される。空き時間処理タスクD1の処理内容は、HDD内のビデオデータの画質改善処理なので、図１８に示す、空き時間処理タスクＤの空き時間帯を参照すると、時点ｂは、空き時間処理タスクＤの空き時間帯の時刻であり、空き時間処理タスクD1を実行することができる。
【０２５３】
その結果、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクD1の実行を空き時間処理タスク実行制御部９６に要求する。空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクD1を実行させる。
【０２５４】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクD1の実行が通知されると、タスクキューに配置されている空き時間処理タスクD1のステータスを”実行中”とする。
【０２５５】
図１８のｃで示される時点（以下、時点ｃと称する。）において、空き時間処理タスクD1の実行が完了すると、空き時間処理タスク実行制御部９６から空き時間処理タスクキュー管理部９５に空き時間処理タスクD1の実行の完了が通知されるので、空き時間処理タスクキュー管理部９５は、タスクキューから空き時間処理タスクD1を削除する。
【０２５６】
時点ｃにおいて、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクのスケジューリングの処理が実行される。
【０２５７】
時点ｃにおいて実行された、空き時間処理タスクのスケジューリングの処理により、空き時間処理タスクB1について、１である実行優先度が算出され、空き時間処理タスクC1について、２である実行優先度が算出され、空き時間処理タスクD2について、３である実行優先度が算出されたので、優先の度合いが最も高い、すなわち、実行優先度が最も小さい空き時間処理タスクB1が選択されることになる。
【０２５８】
そして、選択された空き時間処理タスクB1の空き時間帯が計算される。空き時間処理タスクB1の処理内容は、光ディスク間でのデータ移動処理なので、図１８に示す、空き時間処理タスクＢの空き時間帯を参照すると、時点ｃは、空き時間処理タスクＢの空き時間帯の時刻ではないので、時点ｃにおいて、空き時間処理タスクB1を実行することができない。
【０２５９】
そこで、優先の度合いが次に高い、すなわち、実行優先度が２番目に小さい空き時間処理タスクC1が選択されることになる。
【０２６０】
そして、選択された空き時間処理タスクC1の空き時間帯が計算される。空き時間処理タスクC1の処理内容は、HDD内のビデオデータのフォーマット変換なので、図１８に示す、空き時間処理タスクＣの空き時間帯を参照すると、時点ｃは、空き時間処理タスクＣの空き時間帯の時刻であり、空き時間処理タスクC1を実行することができる。
【０２６１】
その結果、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクC1の実行を空き時間処理タスク実行制御部９６に要求する。空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクC1を実行させる。
【０２６２】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクC1の実行が通知されると、タスクキューに配置されている空き時間処理タスクC1のステータスを”実行中”とする。
【０２６３】
図１８のｄで示される時点（以下、時点ｄと称する。）において、空き時間処理タスクC1の実行中に、使用者からの操作によって、空き時間処理タスクC1で使用されるリソースと競合するリソースを必要とするアプリケーションプログラム４２の処理の実行が要求されたので、空き時間処理タスク実行制御部９６は、空き時間処理タスクC1の実行の中断を要求する。
【０２６４】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクC1の実行の中断が通知されると、タスクキューに配置されている空き時間処理タスクC1のステータスを”中断中”とする。
【０２６５】
使用者からの操作によって実行が要求されたアプリケーションプログラム４２の処理が終了した後の、図１８のｅで示される時点（以下、時点ｅと称する。）において、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクスケジューリング部９４が起動させられて、空き時間処理タスクのスケジューリングの処理が開始する。
【０２６６】
時点ｅにおいて実行された、空き時間処理タスクのスケジューリングの処理により、タスクキューにたまっている空き時間処理タスクのそれぞれについて、実行優先度が算出される。この場合、”中断中”であるステータスの空き時間処理タスクC1について、優先の度合いが最も高い、すなわち、最も小さい実行優先度が計算されることになり、空き時間処理タスクC1が選択されることになる。
【０２６７】
そして、選択された空き時間処理タスクC1の空き時間帯が計算される。空き時間処理タスクC1の処理内容は、HDD内のビデオデータのフォーマット変換なので、図１８に示す、空き時間処理タスクＣの空き時間帯を参照すると、時点ｅは、空き時間処理タスクＣの空き時間帯の時刻であり、空き時間処理タスクC1を実行することができる。
【０２６８】
そこで、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクC1の実行の再開を空き時間処理タスク実行制御部９６に要求する。空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクC1の実行を再開させる。
【０２６９】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクC1の実行が通知されると、タスクキューに配置されている空き時間処理タスクC1のステータスを”実行中”とする。
【０２７０】
図１８のｆで示される時点（以下、時点ｆと称する。）において、空き時間処理タスクC1の実行が完了すると、空き時間処理タスク実行制御部９６から空き時間処理タスクキュー管理部９５に空き時間処理タスクC1の実行の完了が通知されるので、空き時間処理タスクキュー管理部９５は、タスクキューから空き時間処理タスクC1を削除する。
【０２７１】
時点ｆにおいて、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクのスケジューリングの処理が実行される。
【０２７２】
時点ｆにおいて実行された、空き時間処理タスクのスケジューリングの処理により、図２１に示されるように、空き時間処理タスクB1について、１である実行優先度が算出され、空き時間処理タスクD2について、２である実行優先度が算出されたので、優先の度合いが高い、すなわち、実行優先度が小さい空き時間処理タスクB1が選択されることになる。
【０２７３】
そして、選択された空き時間処理タスクB1の空き時間帯が計算される。空き時間処理タスクB1の処理内容は、光ディスク間でのデータ移動処理なので、図１８に示す、空き時間処理タスクＢの空き時間帯を参照すると、時点ｆは、空き時間処理タスクＢの空き時間帯の時刻であり、空き時間処理タスクB1を実行することができる。
【０２７４】
その結果、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクB1の実行を空き時間処理タスク実行制御部９６に要求する。空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクB1を実行させる。
【０２７５】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクB1の実行が通知されると、タスクキューに配置されている空き時間処理タスクB1のステータスを”実行中”とする。
【０２７６】
図１８のｇで示される時点（以下、時点ｇと称する。）において、空き時間処理タスクB1の実行が完了すると、空き時間処理タスク実行制御部９６から空き時間処理タスクキュー管理部９５に空き時間処理タスクB1の実行の完了が通知されるので、空き時間処理タスクキュー管理部９５は、タスクキューから空き時間処理タスクB1を削除する。
【０２７７】
時点ｇにおいて、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクのスケジューリングの処理が実行される。
【０２７８】
時点ｇにおいて実行された、空き時間処理タスクのスケジューリングの処理により、図２２に示されるように、最後に１つ残った空き時間処理タスクD2について、１である実行優先度が算出され、空き時間処理タスクD2が選択されることになる。
【０２７９】
そして、選択された空き時間処理タスクD2の空き時間帯が計算される。空き時間処理タスクD2の処理内容は、HDD内のビデオデータの画質改善処理なので、図１８に示す、空き時間処理タスクＤの空き時間帯を参照すると、時点ｇは、空き時間処理タスクＤの空き時間帯の時刻ではないので、空き時間処理タスクD2を実行することができない。
【０２８０】
そこで、空き時間処理タスクD2の実行は待機されることになる。
【０２８１】
使用者からの操作によって実行が要求されたアプリケーションプログラム４２の実行が終了した後の、図１８のｈで示される時点（以下、時点ｈと称する。）において、所定の期間、空き時間処理タスクを除いたアプリケーションプログラム４２が実行されず、使用者からの操作がない状態が継続しているので、空き時間処理タスクスケジューリング部９４が起動させられて、空き時間処理タスクのスケジューリングの処理が開始する。
【０２８２】
時点ｈにおいて実行された、空き時間処理タスクのスケジューリングの処理により、時点ｇにおける場合と同様に、最後に１つ残った空き時間処理タスクD2について、１である実行優先度が算出され、空き時間処理タスクD2が選択されることになる。
【０２８３】
そして、選択された空き時間処理タスクD2の空き時間帯が計算される。空き時間処理タスクD2の処理内容は、HDD内のビデオデータの画質改善処理なので、図１８に示す、空き時間処理タスクＤの空き時間帯を参照すると、時点ｈは、空き時間処理タスクＤの空き時間帯の時刻であり、空き時間処理タスクD2を実行することができる。
【０２８４】
その結果、空き時間処理タスクスケジューリング部９４は、空き時間処理タスクD2の実行を空き時間処理タスク実行制御部９６に要求する。空き時間処理タスク実行制御部９６は、空き時間処理タスクスケジューリング部９４からの要求に応じて、アプリケーションプログラム４２に空き時間処理タスクD2を実行させる。
【０２８５】
空き時間処理タスクキュー管理部９５は、空き時間処理タスク実行制御部９６から空き時間処理タスクD2の実行が通知されると、タスクキューに配置されている空き時間処理タスクD2のステータスを”実行中”とする。
【０２８６】
以上のように、タスクキューに配置されている空き時間処理タスクについて実行優先度が計算され、実行優先度の順に、空き時間処理タスクが選択されて、選択された空き時間処理タスクについて実行可能時間帯が計算される。計算された実行可能時間帯により、選択された空き時間処理タスクが実行するか否かが決定される。
【０２８７】
このようにすることで、空き時間処理タスクを実行する期間において、空き時間処理タスクの実行に必要なリソースをより確実に確保することができる。すなわち、コンテンツの記録または読み出しの処理を実行していない場合、より迅速、より確実に、コンテンツの記録に関係するか、または記録されているコンテンツに対する空き時間処理タスクを実行することができる。
【０２８８】
以上、画像をコンテンツの例として説明したが、コンテンツは、画像に限らず、使用者にとって有用なものであればよく、音声、またはプログラムの実行に必要なデータなどであってもよい。
【０２８９】
このように、スケジューリングするようにした場合には、タスクを実行することができる。また、予め定めた所定の長さの第１の期間であって、コンテンツの記録または読み出しの処理の実行が繰り返される周期の長さの第２の期間のうちのそれぞれの第１の期間におけるリソースの占有の履歴を記録し、記録されている第１の期間毎のリソースの占有の履歴から、タスクの実行に必要なリソースが確保できると予測される時間帯である空き時間帯を計算し、計算された空き時間帯におけるタスクの実行を制御するようにした場合には、コンテンツの記録または読み出しの処理を実行していないとき、より迅速、より確実に、コンテンツの記録に関係するか、または記録されているコンテンツに対するタスクを実行することができる。
【０２９０】
本発明は、ビデオレコーダ、オーディオレコーダ、フォトストレージ、またはサーバなど、コンテンツを記録する装置に適用できる。
【０２９１】
図２３は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU（Central Processing Unit）２０１は、ROM（Read Only Memory）２０２、または記憶部２０８に記憶されているプログラムに従って各種の処理を実行する。RAM（Random Access Memory）２０３には、CPU２０１が実行するプログラムやデータなどが適宜記憶される。これらのCPU２０１、ROM２０２、およびRAM２０３は、バス２０４により相互に接続されている。
【０２９２】
CPU２０１にはまた、バス２０４を介して入出力インタフェース２０５が接続されている。入出力インタフェース２０５には、キーボード、マウス、マイクロホンなどよりなる入力部２０６、ディスプレイ、スピーカなどよりなる出力部２０７が接続されている。CPU２０１は、入力部２０６から入力される指令に対応して各種の処理を実行する。そして、CPU２０１は、処理の結果を出力部２０７に出力する。
【０２９３】
入出力インタフェース２０５に接続されている記憶部２０８は、例えばハードディスクからなり、CPU２０１が実行するプログラムや各種のデータを記憶する。通信部２０９は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。
【０２９４】
また、通信部２０９を介してプログラムを取得し、記憶部２０８に記憶してもよい。
【０２９５】
入出力インタフェース２０５に接続されているドライブ２１０は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア２１１が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部２０８に転送され、記憶される。
【０２９６】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０２９７】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図２３に示すように、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む）、光磁気ディスクを含む）、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア２１１、または、プログラムが一時的もしくは永続的に格納されるROM２０２や、記憶部２０８を構成するハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースである通信部２０９を介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【０２９８】
なお、本明細書において、プログラム記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２９９】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０３００】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０３０１】
【図１】空き時間処理タスクを示す図である。
【図２】本発明の一実施の形態の記録装置の構成を示すブロック図である。
【図３】空き時間処理タスクスケジューラの構成を示すブロック図である。
【図４】使用実績の収集の処理を説明するフローチャートである。
【図５】使用実績値の更新の処理の詳細を説明するフローチャートである。
【図６】リソース使用量Rs_day[1][t]およびリソース使用量Rs_bg[1][t]の例を示す図である。
【図７】リソース使用量Rs_DB[1][t]の例を示す図である。
【図８】空き時間処理タスクの登録の処理を説明するフローチャートである。
【図９】空き時間処理タスクのスケジューリングの処理を説明するフローチャートである。
【図１０】空き時間処理タスク実行優先度順の算出の処理の詳細を説明するフローチャートである。
【図１１】優先度スコア値の算出を説明する図である。
【図１２】空き時間処理タスク実行可能時間帯の算出の処理の詳細を説明するフローチャートである。
【図１３】空き時間処理タスクの実行に必要なリソース量を説明する図である。
【図１４】空き時間処理タスクの実行に必要なリソース量を確保できる時間帯を説明する図である。
【図１５】空き時間処理タスクの完了時の処理を説明するフローチャートである。
【図１６】空き時間処理タスクの途中中断の処理を説明するフローチャートである。
【図１７】空き時間処理タスクの削除時の処理を説明するフローチャートである。
【図１８】空き時間処理タスクのスケジューリングおよびその実行の具体例を示す図である。
【図１９】実行優先度の例を示す図である。
【図２０】実行優先度の例を示す図である。
【図２１】実行優先度の例を示す図である。
【図２２】実行優先度の例を示す図である。
【図２３】パーソナルコンピュータの構成の例を示すブロック図である。
【符号の説明】
【０３０２】
１１  ホストCPU，  １２  グラフィックチップ，  １３  ビデオコーデックチップ，  １４  オーディオインタフェース，  １５  HDD，  １６  ジュークボックス，  ４１GUIプログラム，  ４２  アプリケーションプログラム，  ４３  システムマネージャ，  ４４  ビデオ／オーディオモジュール，  ４５  ストレージマネージャ，  ５１  同時動作調停プログラム，  ５２  リソース使用状況管理プログラム，  ５３  空き時間処理タスクスケジューラ，  ５４  ジュークコントローラ，  ６１，６１−１，６１−２  ドライブ，  ６２  光ディスク，  ６３  ディスクスロット，  ６４  ピッカー，  ６５  メカコントローラ，  ８１  使用実績記録処理ブロック，  ８２  タスク処理ブロック，  ９１  リソース使用実績データベース，  ９２  リソース使用量統計値計算部，  ９３  モニタレベル計算部，  ９４  空き時間処理タスクスケジューリング部，  ９５  空き時間処理タスクキュー管理部，  ９６  空き時間処理タスク実行制御部，  １０１  タスクスコア算出部，  １０２  空き時間帯計算部，  ２０１  ＣＰＵ，  ２０２  ROM，  ２０３  RAM，  ２０８  記憶部，  ２１１  リムーバブルメディア
【図１】
2007328508.tif 000003
【図２】
2007328508.tif 000004
【図３】
2007328508.tif 000005
【図４】
2007328508.tif 000006
【図５】
2007328508.tif 000007
【図６】
2007328508.tif 000008
【図７】
2007328508.tif 000009
【図８】
2007328508.tif 000010
【図９】
2007328508.tif 000011
【図１０】
2007328508.tif 000012
【図１１】
2007328508.tif 000013
【図１２】
2007328508.tif 000014
【図１３】
2007328508.tif 000015
【図１４】
2007328508.tif 000016
【図１５】
2007328508.tif 000017
【図１６】
2007328508.tif 000018
【図１７】
2007328508.tif 000019
【図１８】
2007328508.tif 000020
【図１９】
2007328508.tif 000021
【図２０】
2007328508.tif 000022
【図２１】
2007328508.tif 000023
【図２２】
2007328508.tif 000024
【図２３】
2007328508.tif 000025