(57)【特許請求の範囲】
【請求項１】
（ａ）それぞれの最小開始時刻、最大開始時刻、および残りの継続時間を有するモジュール・エントリのリストを検査し、
（ｂ）各前記モジュール・エントリごとに、前記最小開始時刻が、現在時刻よりも前の場合、前記最小開始時刻を前記現在時刻に設定し、
（ｃ）最も早い最小開始時刻を有する前記モジュール・エントリを第１のエントリとして、前記モジュール・エントリの前記リストを最小開始時刻が増加する順に並べ替え、かつ同一の最小開始時刻を有する前記モジュール・エントリのなかで、最も早い最大開始時刻を有するモジュール・エントリから最大開始時刻が増加する順に並べ替え、
（ｄ）前記モジュール・エントリの前記リストの中の前記第１のエントリを選択し、
（ｅ）前記現在時刻から前記複数のモジュール・エントリの最も早い最大開始時刻を引くことによって期間を決定し、前記期間中に伝送することができる前記第１のエントリの最大部分をスケジュールし、前記現在時刻と、前記モジュール・エントリのなかの前記現在時刻より後の最小開始時刻を有するエントリの最も早い最小開始時刻との間の差、および前記第１のモジュール・エントリの前記最大開始時刻と、前記モジュール・エントリのなかの前記現在時刻に等しい最小開始時刻を有するエントリの最も早い最大開始時刻との間の差の小さい方をとることによって期間を決定し、その期間に応じて、前記リストを再び並び替えるのがちょうど必要となるのに十分な大きさに前記部分のサイズを選択し、
（ｆ）前記第１のエントリの前記残りの継続時間から前記部分を引き、
（ｇ）前記第１のエントリの前記最大開始時刻に前記部分を足し、
（ｈ）前記現在時刻に前記部分を足し、
（ｉ）（ａ）〜（ｈ）を繰り返すことを含む、フロー・スケジューリングのための方法。
【請求項２】
最小開始時刻と最大開始時刻を含む複数のモジュール・エントリを用い、
第１のグループの中の前記複数のモジュール・エントリの前記最小開始時刻が現在時刻より小さく、かつ複数のモジュール・エントリの選択した１つの前記最大開始時刻が、前記第１のグループの中の前記モジュール・エントリの残りのエントリの前記最大開始時刻を超えない前記複数のモジュール・エントリのうち１つを前記複数のエントリの第１のグループから選択し、
前記現在時刻から前記複数のモジュール・エントリの最も早い最大開始時刻を引くことによって期間を決定し、前記期間中に伝送することができる前記第１のエントリの最大部分をスケジュールし、前記現在時刻と、前記モジュール・エントリのなかの前記現在時刻より後の最小開始時刻を有するエントリの最も早い最小開始時刻との間の差、および前記第１のモジュール・エントリの前記最大開始時刻と、前記モジュール・エントリのなかの前記現在時刻に等しい最小開始時刻を有するエントリの最も早い最大開始時刻との間の差の小さい方をとることによって期間を決定し、その期間に応じて、前記リストを再び並び替えるのがちょうど必要となるのに十分な大きさに前記部分のサイズを選択することとを含むフロー・スケジューリングのための方法。
【請求項３】
前記複数のモジュール・エントリの前記選択した１つの前記最大開始時刻を再計算し、前記選択することを繰り返すことをさらに含む請求項２に記載のフロー・スケジューリングのための方法。
【請求項４】
前記選択することが、
前記複数のモジュール・エントリのいずれかが、現在時刻より小さい最小開始時刻を有する場合、前記最小開始時刻を前記現在時刻に設定し、
前記複数のモジュール・エントリのリストを用い、
第１に前記最小開始時刻に従って、第２に前記最大開始時刻に従って前記リストを並べ替えることと、前記リストの中の前記複数のモジュール・エントリのうち第１のエントリを選択することとを含む請求項２に記載のフロー・スケジューリングのための方法。
【請求項５】
各モジュール・エントリごとの前記最大開始時刻が、前記各モジュール・エントリごとの終了時刻から前記各モジュール・エントリの継続時間を引くことによって初期に決定される請求項２に記載のフロー・スケジューリングのための方法。
【請求項６】
各モジュール・エントリごとの前記最小開始時刻が、前記各モジュール・エントリごとに特定された開始時刻に初期設定される請求項５に記載のフロー・スケジューリングのための方法。
【請求項７】
前記複数のモジュール・エントリのうち前記選択した１つの前記部分を伝送することをさらに含む請求項２に記載のフロー・スケジューリングのための方法。
【請求項８】
前記複数のモジュールのいずれに関して、前記どれかのモジュール・エントリの継続時間が、前記どれかのモジュール・エントリの終了時刻から前記現在時刻を引いた値より大きい場合、誤りの指示を提供する請求項２に記載のフロー・スケジューリングのための方法。
【請求項９】
現在時刻から前記複数のモジュール・エントリの最も早い最大開始時刻を引くことにより、前記モジュールの前記部分を計算することをさらに含む請求項２に記載のフロー・スケジューリングのための方法。
【請求項１０】
現在時刻と、前記複数のモジュール・エントリのなかの前記現在時刻より後の最小開始時刻を有するエントリの最も早い最小開始時刻との間の差、および前記選択したモジュール・エントリの前記最大開始時刻と、前記複数のモジュール・エントリのなかの前記現在時刻より早い最小開始時刻を有するエントリの最も早い最大開始時刻との間の差の小さい方をとることによって前記モジュールの前記部分を計算することをさらに含む請求項２に記載のフロー・スケジューリングのための方法。
【請求項１１】
プロセッサと、
前記プロセッサに結合され、複数のモジュール・エントリを記憶するように構成され、各前記モジュール・エントリが、対応する最小開始時刻、最大開始時刻、終了時刻、および継続時間を有する第１のメモリとを含み、
前記プロセッサが、前記モジュール・エントリを検査し、前記モジュール・エントリの第１のエントリを選択し、現在時刻から前記複数のモジュール・エントリの最も早い最大開始時刻を引くことによって期間を決定し、前記期間中に伝送することができる前記第１のエントリの最大部分をスケジュールするように構成され、前記モジュール・エントリの前記第１のエントリが、最高優先順位を有し、前記モジュール・エントリの前記第１のエントリが、現在時刻より小さいか、または等しい前記最小開始時刻を有し、かつ前記現在時刻より前か、または等しい前記最小開始時刻を有する前記モジュール・エントリのなかで最も早い最大開始時刻を有することを前記最高優先順位が示し、前記現在時刻と、前記モジュール・エントリのなかの前記現在時刻より後の最小開始時刻を有するエントリの最も早い最小開始時刻との間の差、および前記第１のモジュール・エントリの前記最大開始時刻と、前記モジュール・エントリのなかの前記現在時刻に等しい最小開始時刻を有するエントリの最も早い最大開始時刻との間の差の小さい方をとることによって期間を決定し、その期間に応じて、前記エントリの優先順位を再び並び替えるのがちょうど必要となるのに十分な大きさに前記部分のサイズを選択するスケジューラ。
【請求項１２】
前記モジュールの前記部分をスケジュールした後、前記モジュール・エントリの第２のエントリが、前記最高優先順位を有する請求項１１に記載のスケジューラ。
【請求項１３】
前記プロセッサが、前記メモリの中の前記モジュール・エントリを定期的に再び並べ替えるように構成された請求項１１に記載のスケジューラ。
【請求項１４】
前記プロセッサが、前記モジュール・エントリの前記第１のエントリをスケジュールすることによって前記複数のモジュール・エントリに関連する１つまたは複数の優先順位の変化が生じたとき、前記メモリの中の前記モジュール・エントリを再び並べ替えるように構成された請求項１３に記載のスケジューラ。
【請求項１５】
前記スケジューラが、スケジュールを生成し、前記スケジュールを第２のメモリの中に記憶するように構成された請求項１１に記載のスケジューラ。
【請求項１６】
前記スケジューラが、１つまたは複数のモジュール・ソースに結合され、前記モジュール・ソースによって提供されるモジュールを放送送信機に対して選択するように構成された請求項１１に記載のスケジューラ。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、一般にスケジューリング方法に関し、より詳細には、モジュールの最高優先順位を有する部分を選択し、スケジュールすることによって情報のフローをスケジュールするための方法に関する。
【０００２】
（関連技術の説明）
対話型テレビジョン・システムは、様々なサービスを視聴者に提供することができる。これらのサービスには、テレビ番組、対話型アプリケーション等の送付が含まれるであろう。また、対話型テレビジョン・システムは、そのシステムによって提供されるオーディオ情報およびビデオ情報に対する視聴者の応答を記録することもできる。したがって、対話型テレビジョン・システムは、いくつかのマーケティング目的、エンターテイメント目的、および教育目的で有用である。
【０００３】
対話型テレビジョン・システムでは、放送サービス・プロバイダが、視聴者のテレビジョンに伝送するための対話型テレビジョン信号を生成する。対話型テレビジョン信号には、アプリケーション・コード情報または制御情報からなる対話型部分とテレビ番組からなるオーディオ・ビデオ部分とを含む。放送サービス・プロバイダは、ユーザのテレビジョンに接続された受信機に伝送するための単一の信号にオーディオ・ビデオ部分と対話型部分を結合する。信号は、一般に、伝送に先立って圧縮され、ケーブル・テレビジョン（ＣＡＴＶ）回線または直接サテライト伝送システムなどの通常の放送チャネルを介して送られる。
【０００４】
放送サービス・プロバイダによって送られる信号は、通常、視聴者のテレビジョンに結合されたセットトップ・ボックスによって受信される。セットトップ・ボックスはオーディオ・ビデオ部分から対話型部分を分離し、各信号部分を圧縮解除する。次に、セットトップ・ボックスは、受信したアプリケーションを実行して、受信したオーディオ・ビデオ情報をテレビジョンに渡す。また、セットトップ・ボックスは、情報をテレビジョンに伝送するのに先立って、オーディオ・ビデオ情報を対話型アプリケーションによって生成された対話型グラフィックスまたは対話型オーディオと結合することもできる。対話型グラフィックスおよび対話型オーディオは、視聴者に情報を提供すること、または入力するように視聴者に促すことができる。セットトップ・ボックスは、モデム接続または別のリターン・パスを介して視聴者入力またはその他の情報を放送サービス・プロバイダに提供する。
【０００５】
対話型テレビジョン・システムによって送られる対話型アプリケーション、テレビ番組、およびその他の情報を、１つまたは複数の情報モジュールに含ませることができる。これらのモジュールは通常パケットにフォーマットされる。それぞれパケットはモジュールの情報の一部分を含む。パケットは、セットトップ・ボックスに送られ、そこでモジュールに再構成される。１つのモジュールのパケットは、連続的に送られること、または他のモジュールの部分を含むパケットが所々に挿入されることもある。
【０００６】
モジュールの伝送をスケジュールする簡単な仕方は、モジュール全体を送付するのに必要な時間を（近似的に）計算し、次に、これをスケジュールされた送付時間から引くことである。伝送の継続時間は、パケットが送られるビットレートによってモジュールのサイズを割ることによって判定することができる。モジュールをスケジュールするためのこの方法は、この特定のモジュールのために放送チャネルが予約されること、ならびにモジュールのパケットのすべてが連続的に送られることを必要とする。このことにより、システムによって送られる必要がある潜在的に多数のモジュールをスケジュールする際、相当な困難が生じる可能性がある。したがって、モジュールの送付をスケジュールするための改良された機構が望ましいことになる。
【０００７】
（発明の概要）
本発明は、情報モジュールの送付をスケジュールするためのシステムおよび方法を含む。スケジューリング・アルゴリズムを使用してモジュールに優先順位を付け、最高優先順位でスケジュールされるべきモジュールを選択する。各モジュールの優先順位は、対応するスケジューリング情報に基づく。このスケジューリング情報は、モジュールまたはモジュールの部分がスケジュールされるにつれて変化する可能性があるため、定期的に更新し、モジュールの優先順位を再計算しなければならない。モジュールがスケジューリングのために選択されたとき、再計算が必要になるまでに経過するであろう時間量が判定され、選択されたモジュールの対応する部分だけがスケジュールされる。モジュール情報は、モジュールのスケジューリングを反映するように更新され、結果の優先順位が再計算された後、さらなるスケジューリングのために新たなモジュールが選択される。
【０００８】
一実施態様は、情報伝送システムにおけるモジュールのフローをスケジュールするための方法を含む。送られるべきモジュールのリストを編集する。リストは、モジュールのそれぞれに関して、最小開始時刻、最大開始時刻、および残りの継続時間を含む。リストを検査し、現在時刻より前のすべての最小開始時刻を現在時刻に設定する。次に、まずモジュールの最小開始時刻に従って、次にモジュールの最大開始時刻に従ってリストを並べ替える。すぐ伝送できるようになっており（すなわち、現在時刻より前、または現在時刻に等しい最小開始時刻を有するモジュール）、最も早い最大開始時刻を有するモジュールをリストの先頭から選択する。次に、リストの順序を再計算しなければならなくなる前に伝送することができる選択したモジュールの最大部分をスケジュールする。モジュールのスケジュールした部分に等価の量だけ現在時刻を先に進めて、必要な場合、モジュールのそれぞれに対応する情報を再計算する（すなわち、スケジュールした部分の長さを最大開始時刻およびスケジュールしたモジュールの継続時間から引き、各モジュールの最小開始時刻を現在時刻に更新する）。次に、モジュールに関する更新した情報に従ってリストを再び並べ替え、前述のステップを繰り返す。
【０００９】
一実施態様は、以上の方法を実現するコンピュータ可読記憶媒体を含む。記憶媒体には、フロッピー（登録商標）・ディスク、磁気テープ、光ディスク、ＲＡＭ、ＲＯＭ、フラッシュ・メモリ等が含まれる可能性がある。記憶媒体は、コンピュータ・システムのオペレーションを制御するためのプログラム命令を記録している。プログラム命令は、コンピュータ・システムによって実行可能であり、モジュール情報を検査し、モジュールを並べ替え、最高優先順位のモジュールを選択し、このモジュールの少なくとも一部分をスケジュールし、モジュール情報を再計算するようにコンピュータ・システムを導く。以上のステップは、モジュールが完全にスケジュールされるまで繰り返される。
【００１０】
一実施態様は、モジュールのフローを構築するためのスケジューラを対話型テレビジョン・システム内に備える。スケジューラは、放送局内で実装され、加入者に対して放送されることになるモジュールの部分のサイズおよび順序を決定するように構成されている。スケジューラは、各モジュールごとにスケジューリング情報を検査し、この情報に従ってモジュールに優先順位を付けるように構成されている。情報は、各モジュールごとの最小開始時刻、最大開始時刻、および継続時間を含む。スケジューラは、最小開始時刻を検査し、現在時刻より前各最小開始時刻に関して、その最小開始時刻を現在時刻に等しく設定する。次に、スケジューラは、最小開始時刻に従って昇順でモジュールをリストする。同一の最小開始時刻を有するモジュールは、最大開始時刻が増加する順に並べる。次に、リストの中のスケジュールすべき最初のモジュールを選択する。スケジューラは、モジュールの順序（すなわち、モジュールの優先順位）を再計算しなければならなくなるまでに、モジュールのどれだけを伝送できるかを判定する。スケジューラは、伝送のためにモジュールの対応する部分をスケジュールする。次に、モジュールに関する情報を更新し、モジュールの優先順位を再計算して、スケジュールすべき次のモジュール（またはモジュールの部分）を選択する。
【００１１】
本システムおよび本方法の多数のさらなる実施形態が、本発明の分野の技術者には明白であることに留意されたい。本明細書に開示する実施形態は、制限するものではなく例示するものであり、開示する実施形態の変更形態および変形形態も本開示の趣旨および範囲の中にあることが企図される。
【００１２】
本発明のその他の目的および利点は、以下の詳細な説明を読み、添付の図面を参照することで明白となる。
【００１３】
本発明は、様々な変更形態および代替形態が可能であるが、本発明の特定の実施形態を図面で例として示し、本明細書で詳細に説明する。ただし、図面およびその詳細な説明は、開示する特定の形態に本発明を限定するものではなく、反対に、本発明は、頭記の特許請求の範囲によって定義される本発明の趣旨および範囲の中に入るすべての変更形態、等価形態、および代替形態をカバーするものであることを理解されたい。
【００１４】
（好ましい実施形態の詳細な説明）
本発明の一実施形態を以下に説明する。この実施形態は、一群のモジュールをスケジュールするための方法を構成している。その方法は、一回に１つだけのモジュールをスケジュールすることができる。本方法は、主に、次の複数のステップから成る。モジュールに優先順位を付けるステップ、最高優先順位のモジュールを選択するステップ、このモジュールの少なくとも一部分をスケジュールするステップ、以上のステップを繰り返すステップ。以下の説明は、対話型テレビジョン・システムにおける本方法の実施を中心に扱う。
【００１５】
モジュールの優先順位付けは、モジュールのそれぞれに関する最小開始時刻および最大開始時刻に基づく。現在時刻より前、または現在時刻に等しい最小開始時刻を有するモジュールは、すぐにスケジュールできるようになっている。これらのモジュールは、そのそれぞれに関する最小開始時刻を現在時刻に設定して、最小開始時刻が増加する順に配列することにより、選択する（それぞれの最小開始時刻に基づく同等の優先順位で）。同一の最小開始時刻を有するモジュールは、最大開始時刻が増加する順に配列する。したがって、モジュールのリストの中の第１のモジュールは、利用可能なモジュールのなかで最も早い最大開始時刻を有するモジュールとなる。
【００１６】
選択したモジュールの少なくとも一部分をスケジュールする。選択したモジュールのこの部分をスケジュールすることは、モジュールのリストの中の情報に影響を与える。選択したモジュールに関して、残りの継続時間が減少し、最大開始時刻が増加する。リスト上のその他のモジュールに関しては、現在時刻が先に進められ、あるモジュールの最小開始時刻が新しい現在より前の場合、その最小開始時刻が現在時刻に更新される。リストの中の情報が変化したため、モジュールの優先順位も変更しなければならない。したがって、リストを再び並べ替える必要がある。以下により詳細に説明するとおり、スケジュールされたモジュールの部分が、リストの中の選択されていないモジュールに対応する情報に基づいて判定される。通常、その部分のサイズは、モジュール・リストを再び並べ替えるのがちょうど必要となるのに十分な大きさに計算される。
【００１７】
前述したとおり、選択したモジュールの部分をスケジュールしたとき、そのモジュールの残りの継続時間が、スケジュールした量だけ減少し、そのモジュールに関する最大開始時刻が、スケジュールした量だけ増加する。したがって、この情報は、モジュールの部分をスケジュールした後、更新しなければならない。また、現在時刻も、スケジュールした量だけ増加する。この情報を更新した後、利用可能なモジュールの最小開始時刻を再び現在時刻に設定し、モジュールに優先順位を付け直してスケジュールするべき別のモジュール（またはモジュールの部分）を選択することができるようにする。各モジュールの全体がスケジュールされるまで、以上のステップを繰り返す。（１つまたは複数のモジュールをスケジュールできない場合、誤り通知をユーザに提示する）。
【００１８】
一実施形態では、本方法は、対話型テレビジョン・システムにおいて実施される。図１を参照すると、放送局１２が、放送網１３を介して１つまたは複数の受信局１４〜１６に結合されている。放送網１３は、サテライト伝送媒体、ケーブル伝送媒体、電話会社伝送媒体、ＭＭＤＳ（マイクロ波）伝送媒体、および地上伝送媒体を含む放送信号を伝送するための任意の適切な手段から構成される。放送局から受信局に送られる情報は、データ・ソース１１によって提供される。ソース１１は、１つまたは複数の個々のデータ・ソースを含むことが可能であり、またビデオ・サーバまたはデータ・サーバ、アプリケーション・サーバ、ライブ・テレビジョン・フィードなどの装置である。データ・ソース１１によって提供されるモジュールは、放送網１３を介して一回ですべて伝送することはできず、限られていると仮定されているので、データ・ソースによって提供される情報を受信局に伝送する順序を決めることが必要である。
【００１９】
図２を参照すると、本方法の機能が示されている。前述したとおり、データ・ソースによって提供される情報を伝送のためにスケジュールしなければならない。この実施形態では、情報は、複数のモジュールの形態で提供される。スケジューラ２１が、これらのモジュールのリスト２２を入力として受け入れる。リストの中の各エントリは、各モジュールに関連するいくつかのスケジューリング制約を特定する。スケジューラ２１は、リスト上のモジュールに優先順位を付け、リストの中の各モジュールに関する情報に基づいてスケジュールすべきモジュールを選択する。スケジューラ２１は、スケジュール２３を出力として生成する。スケジュール２３は、関連するスケジューリング制約を満たすようにモジュールまたはモジュールの部分を伝送すべき順序を特定する。
【００２０】
図３を参照すると、一実施形態における本方法を示す流れ図が示されている。この実施形態では、本方法は、一般に、関連するスケジューリング情報に従ってモジュールのリストを並べ替えるステップと、最も早い最大開始時刻を有する利用可能なモジュールを選択するステップと、選択したモジュールのスケジュールすべき部分を決めるステップと、モジュールのその部分をスケジュールするステップと、リストの中のモジュールに関するスケジューリング情報を再計算するステップと、モジュールのすべてがスケジュールされるまで、以上のステップを繰り返すステップとを含む。
【００２１】
前述したとおり、各モジュールは、自らに関連するあるスケジューリング情報を有する。この情報は、その範囲内で各モジュールをスケジュールしなければならない制約を定義する。この実施形態では、各モジュールは、最初、対応する開始時刻、終了時刻、および継続時間を有する。開始時刻および終了時刻は、モジュールをその間に伝送しなければならない時間ウィンドウを決める。言い換えれば、モジュールの伝送は、開始時刻後に開始しなければならず、終了時刻前に完了させなければならない。
【００２２】
モジュールの初期の継続時間は、モジュールのサイズおよび伝送のビットレートによって判定する。初期継続時間が、開始時刻と終了時刻の間の差よりも長い場合、そのモジュールは、所与の制約の範囲内でスケジュールすることができない。そのような場合、そのモジュールに関するスケジューリング制約を満たすことができないことがユーザに通知され、そのモジュールが、さらなる考慮から除外される（すなわち、モジュールをスケジュールしようとする試みは、存在しない）。ユーザは、スケジューリングの誤りの通知を必要とする人、クライアント・アプリケーション、または何らかの他のエンティティであることに留意されたい。モジュールの初期継続時間は、開始時刻と終了時刻の間の差に等しい場合、モジュールの伝送は、許容されたウィンドウ内に入るように、開始時刻に開始して、モジュールが完全に送られるまで継続するようにスケジュールしなければならない。モジュールの初期継続時間が開始時刻と終了時刻の間の差より短い場合、許容されたウィンドウ内にそのモジュールをスケジュールし、場合により、その他のモジュールをスケジュールすることが可能である。
【００２３】
一実施形態では、モジュールのリストの中に維持される情報は、最小開始時刻（ＭｉｎＢＴ）および最大開始時刻（ＭａｘＢＴ）を含む。最小開始時刻は、開始時刻（ＳＴ）に初期設定される。最大開始時刻は、終了時刻（ＥＴ）から継続時間（Ｄ）を引いた時刻に初期設定される。
ＭｉｎＢＴ＝ＳＴ
ＭａｘＢＴ＝ＥＴ−Ｄ
これを図４に示している。
【００２４】
通常、モジュールのリストは、それぞれのモジュールの最小開始時刻および最大開始時刻によって順序付けられている。ただし、リストを並べ替える前に、最小開始時刻を現在時刻と比較し、現在時刻より前どの最小開始時刻も現在時刻にリセットする。そうすることにより、すぐにスケジュールできるようになっているモジュール（すなわち、最小開始時刻が来ているモジュール）は、最大開始時刻だけによって優先順位を付ける。（本開示の別の箇所でさらに説明するとおり、モジュールの一部分をスケジュールしたときはいつでも、最小開始時刻および最大開始時刻を再計算し、リストを再び並べ替える）。
【００２５】
モジュールは、最小開始時刻によって順序付け、次に最大開始時刻によって順序付けているので、再び並べ替えたリストの中の第１のモジュールは、利用可能なモジュールのなかの最も早い最大開始時刻を有するモジュールである。（２つの利用可能なモジュールが同一の最大開始時刻を有する場合、それらのモジュールは、所定の優先順位レーティングなどのさらなる基準に従ってさらに順序付けること、またはモジュールのどちらかを単にランダムに選択することができる。）この第１のモジュールの少なくとも一部分をスケジュールする。モジュールのスケジュールした部分が、継続時間Ｐを有する場合、スケジュールしたモジュールの最大開始時刻は、その量だけ調整しなければならない。というのは、モジュールの残りの部分は、初期の継続時間Ｄよりも短い継続時間を有し、したがって、終了時刻前に伝送するのにより少ない時間しか必要としないからである。
【００２６】
モジュールの最大開始時刻は、Ｐだけ調整されるので、モジュールのリストの順序は、もはや有効でないかもしれない。モジュールの部分が最適サイズよりも小さい場合、必要でないときに再計算およびリストの再度の並べ替えが行われる。モジュールの部分が、最適サイズよりも大きい場合、より高い優先順位を有するモジュールが、スケジュールされないままになり、したがって、そのスケジューリング制約が満たされない可能性がある。したがって、スケジュールするモジュールの部分（およびＰの対応する値）は、ちょうどリストを再び並べ替えなければならなくなるのに十分な大きさに選択する（これは、モジュールの残りの部分が、その量よりも小さくない限りであり、その量よりも小さい場合は、モジュールの残りの部分をスケジュールし、リスト上のスケジュールすべき次のモジュールを選択する。）
【００２７】
したがって、選択したモジュールの部分を適切にスケジュールするため、スケジュールすべきモジュールの量（すなわち、継続時間Ｐ）を決めなければならない。一実施形態では、選択したモジュールの一部分をスケジュールするのに利用できる時間量は、モジュール（まだ利用可能でないモジュールも含め）の最小の最大開始時刻から現在時刻を引くことによって決定される。Ｐの値をこのやり方で計算するのは、モジュールの最大開始時刻が来るまで、モジュールをスケジュールするのを待つことができるからである。最大開始時刻が来ると、モジュールの全体をスケジュールしなければならない。
【００２８】
別の実施形態では、スケジューリングに利用可能な継続時間は、再計算する必要性、および、場合により、モジュールのリストを再び並べ替える必要性によって決められる。再計算および再度の並べ替えは、次の２つの条件のどちらかが満たされた場合、必要となる。新たなモジュールが利用可能になる（すなわち、その最小開始時刻が、新しい現在時刻より前か、またはその現在時刻に等しい）、または別の利用可能なモジュールの最大開始時刻が、選択したモジュールの最大開始時刻より前か、またはその時刻に等しくなる。したがって、選択したモジュールの部分は、Ｐが、次のどちらか小さい方になるように選択する。現在時刻（部分のスケジューリングに先立つ）と、利用可能ではないモジュールのなかで最も早い最小開始時刻との間の差、および選択したモジュールの最大開始時刻と、利用可能なモジュールのなかで最も早い最大開始時刻との間の差。
【００２９】
さらに別の実施形態では、Ｐは、以下のどちらか小さい方になるように選択することができる。現在時刻と利用可能ではないモジュールのなかで最も早い最小開始時刻との間の差、およびリスト上の次に利用可能なモジュール選択したモジュールの最大開始時刻の間の差に１を足した値。選択したモジュールのこの追加の単位（これは、パケットまたはその他の何らかの最小スケジューリング単位でよい）をスケジュールして、モジュール情報が更新された後、リスト上の最初の２つのモジュールが、同一の最小開始時刻および同一の最大開始時刻を有さないようにする。したがって、選択したモジュールおよび次の最高優先順位のモジュールが、同一の最小開始時刻および同一の最大開始時刻を有する場合、既に選択したモジュールを選好することができる。何らかの状況で、リストの先頭にある２つの利用可能なモジュールが、同一の最大開始時刻を有する場合、スケジュールする部分は、Ｐが、少なくとも所定の最小継続時間（例えば、１）を有するように選択することができる。
【００３０】
モジュールの選択した部分の量を決めた後、その部分をスケジュールすることができる。モジュールのこの部分をスケジュールしたとき、そのモジュールに関する情報が更新される。前述したとおり、選択したモジュールの最大開始時刻が、Ｐだけ先に進められる。選択したモジュールのすべてのスケジューリングを完了した場合、このモジュールをリストから除去する。現在時刻（ＣＴ）をスケジュールした部分の終了時刻まで進める（すなわち、ＣＴ＝ＣＴ＋Ｐ）。利用可能なモジュールの最小開始時刻を更新して、その最小開始時刻が、現在時刻に等しいようにする。また、最小開始時刻が新しい現在時刻より前、またはその現在時刻に等しい、あらゆる前にまだ利用可能でなかったモジュールも、このやり方で更新する（すなわち、ＭｉｎＢＴ＝ＣＴ）。次に、リストを再び並べ替え、スケジュールすべき新たなモジュールを選択する。（「新たな」モジュールは、必ずしも前に選択したモジュールと別ではないことに留意されたい。再計算および再度の並べ替えの後、やはり同じモジュールがリスト上で先頭に来る可能性がある。）モジュールのすべてのスケジューリングが完了するまで、以上のステップを繰り返す。
【００３１】
一実施形態では、本方法は、事前スケジューリング機構として実施することができる。言い換えれば、伝送を開始するのに先立って、モジュールのすべてに関する情報を編集し、本方法を使用するスケジューラに入力として提供することができる。次に、スケジューラが、モジュールの伝送のためのスケジュールを生成することができる。次に、このスケジュールを使用して、モジュールの伝送の順序および量を制御することができる。この実施形態により、ユーザは、生じる可能性があるあらゆるスケジューリングの問題（例えば、モジュールの継続時間が、その開始時刻、終了時刻の間の差を超える）を識別し、その問題に対処できる（例えば、モジュールの１つまたは複数に関するスケジューリング制約を変更することにより）ようになる。特に、モジュールを事前スケジュールする実施形態では、「現在」時刻は、一般に、計算が行われる時刻ではなく、既にスケジュールしたモジュール（またはモジュールの部分）の終了に対応する時刻であることに留意されたい。
【００３２】
代替の実施形態では、本方法は、リアルタイム・スケジューリング機構として実施することができる。例えば、モジュールを求める要求を受け入れ、あらゆるスケジューリング制約を特定し、モジュールをスケジュールすることを、他のモジュールが伝送されている最中にさえ行うように対話型テレビジョン・システムの放送局内のスケジューラを構成することが可能である。スケジューラは、モジュールが要求されるにつれ、新たに要求されたモジュールをリストに追加して、リストを再計算する／再び並べ替えるように構成することが可能である。あるいは、リスト内に前に含まれた情報によって決定された時点で再計算および再度の並べ替えを行うことが可能である。リアルタイム・スケジューリングの実施形態および事前スケジューリングの実施形態はともに、ソフトウェア・アプリケーションとして容易に実装することが可能である。
【００３３】
本方法のオペレーションは、以下の簡単な例によって例示することができる。３つのモジュールをスケジュールする必要があると想定する。第１のモジュールは、０の開始時刻（ＳＴ）、１４の終了時刻（ＥＴ）、および４の継続時間（Ｄ）を有する。（この例では、時刻および継続時間は、簡潔にするため単位をつけない。）第２のモジュールは、５の開始時刻、１７の終了時刻、および１０の継続時間を有し、第３のモジュールは、２の開始時刻、１６の終了時刻、および３の継続時間を有する。これらのモジュールの最小開始時刻は、初期には、それぞれの開始時刻に等しい。その最大開始時刻は、その終了時刻からそれぞれの継続時間を引いた時刻に等しい（すなわち、第１のモジュールでは１０、第２のモジュールでは７、第３のモジュールでは１３）。したがって、モジュール・リストは、初期には（すなわち、現在時刻ＣＴ＝０で）、以下の情報を含む。
【表１】
0004718743.tif 000002
【００３４】
この例を詳しく見る際、モジュールのスケジューリングに対応する時系列チャートを描いた図５を参照することが役立つ可能性がある。以下のテーブルのそれぞれは、テーブルで特定される現在時刻に対応する時系列チャート上の特定の時点（Ａ〜Ｅ）におけるモジュール・リストを示す。時刻ＣＴ＝０で、１つのモジュール（モジュール１）だけが、現在時刻より前、または現在時刻に等しい最小開始時刻を有している。したがって、モジュール１をスケジュールするように選択する。２の継続時間を有するモジュール１の一部分をスケジュールすることができる。というのは、その時点まで利用可能な他のモジュールは存在しないからである。モジュール１のこの部分をスケジュールした後、そのモジュールに関する情報を更新しなければならない。より具体的には、最大開始時刻をスケジュールした部分の継続時間だけ増加させ（ＭａｘＢｔ＝ＭａｘＢＴ＋Ｐ）、残りの継続時間を同じ量だけ減少させる（Ｄ＝Ｄ−Ｐ）。また、現在時刻も、Ｐを追加することによって更新する。次に、最小開始時刻および最大開始時刻によってリストを再び並べ替え、ＣＴ＝２で、リストは、以下のようになる。
【表２】
0004718743.tif 000003
【００３５】
モジュール１が、やはりリストの中の第１のモジュールであるので、モジュール１を再びスケジュールするように選択する。ただし、今回は、スケジュールする部分の継続時間は、現在時刻と、利用可能でないモジュールのなかで最も初期の最小開始時刻との間の差（すなわち、３）、および選択したモジュールの最大開始時刻と、利用可能なモジュールのなかで最も初期の最大開始時刻との間の差（すなわち、５）の小さい方をとることによって決められる。最大でモジュール１の３単位までスケジュールすることが可能であるが、このモジュールは、２の残りの継続時間しか有さない。したがって、残りの部分全体をスケジュールして、リストから除去する。現在時刻を更新した後（ＣＴ＝ＣＴ＋２＝４）、モジュール情報を更新し、リストを再び並べ替える。
【表３】
0004718743.tif 000004
【００３６】
別のモジュール（モジュール２）が１時間単位で利用可能になるため、１の継続時間を有するモジュール３の一部分をスケジュールする。モジュール・リストを更新し、再び並べ替えた後、リストは、以下のようになる。
【表４】
0004718743.tif 000005
【００３７】
モジュール２は、先立つ最大開始時刻を有するので、モジュール３より優先順位が高い。利用可能になる可能性のあるさらなるモジュールは存在しないため、モジュール２のスケジュールする部分の許容可能な継続時間は、主に、このモジュールの最大開始時刻と次の最も近いモジュールの間の差によって決められる（すなわち、１４−７＝７）。７の継続時間を有するモジュール２の一部分をスケジュールすることにより、モジュール２および３の最小開始時刻および最大開始時刻が同一になるので、スケジュールする部分は、８の継続時間を有するように選択する。モジュール２のこの部分をスケジュールした後、更新し、再び並べ替えたリストは、以下のとおりである。
【表５】
0004718743.tif 000006
【００３８】
この時点で、モジュール３は、モジュール２より優先順位が高く、モジュール３をスケジュールするように選択する。Ｐは、２に選択する（前の段落で説明したのと同じ理由で）。モジュール３の残りの継続時間は、２であるので、このモジュールの残りの部分全体をスケジュールすることができ、示すとおり、リストからこのモジュールを除去することができる。
【表６】
0004718743.tif 000007
【００３９】
次に、リスト上に残る唯一のモジュールであるモジュール２をスケジュールする。最大開始時刻を過ぎてはいないので、モジュールの残りの部分をその許容されたウィンドウ内にうまくスケジュールすることができる。
【００４０】
前の段落で説明したステップの結果が、以下のスケジュールである。
【表７】
0004718743.tif 000008
【００４１】
本発明は、特定の実施形態に関連して説明してきたが、これらの実施形態は、例示するものであり、本発明の範囲は、これらの実施形態に限定されないことを理解されたい。説明した実施形態に対する多数の変形、変更、追加が可能である。これらの変形、変更、追加、および改良も、頭記の特許請求の範囲で詳述する本発明の範囲の中に入る可能性がある。
【図面の簡単な説明】
【図１】  一実施形態を使用することができる対話型テレビジョン・システムを示すブロック図である。
【図２】  一実施形態におけるスケジューラの中の情報フローを示す図である。
【図３】  一実施形態の方法を示す流れ図である。
【図４】  モジュールに関する最小開始時刻および最大開始時刻と、モジュールの開始時刻、終了時刻、および継続時間の間の関係を示す図である。
【図５】  一実施形態の方法を示す例に対応する時系列チャートである。
【図１】
0004718743.tif 000009
【図２】
0004718743.tif 000010
【図３】
0004718743.tif 000011
【図４】
0004718743.tif 000012
【図５】
0004718743.tif 000013