(57)【要約】本発明は、メディアプレイヤにおけるタイムスライス循環方式によるマルチタスキング方法を提供する。この方法は、コントローラユニットによって、メディアプレイヤの異なる機能のそれぞれを複数のタスクに分割するステップと、コントローラユニットによって各タスクに優先度を設定するステップと、コントローラユニットによって、各タスクの優先度を調べ、タスクの優先度にしたがってタスクの状態を「レディ」から「実行中」に変更するステップと、コントローラユニットによって、タスクに関連づけられたタイムスライスを用いてタスクを交互に実行するステップとを含む。すべてのタスクが短い時間内で実行されるため、ユーザの観点からはすべてのタスクが同時に実行される。これにより、メディアプレイヤにおいてマルチタスキングが実現される。【選択図】図１
2009510817.tif 000002
【特許請求の範囲】
【請求項１】
コントローラユニットを含むメディアプレイヤにおけるマルチタスキング方法であって、当該方法は、 
１）前記コントローラユニットによって、前記メディアプレイヤの異なる機能のそれぞれを複数のタスクに分割するステップと、
２）前記コントローラユニットによって前記複数のタスクのそれぞれに優先度を設定するステップと、
３）前記コントローラユニットによって、各タスクの優先度を調べ、タスクの優先度にしたがってタスクの状態を「レディ」から「実行中」に変更するステップと、
４）前記コントローラユニットによって、タスクに関連づけられたタイムスライスを用いてタスクを交互に実行するステップとを含むことを特徴とする方法。
【請求項２】
すべてのタスクが「レディ」状態にあるとき、より高い優先度をもつタスクが最初に実行されることを特徴とする請求項１のメディアプレイヤにおけるマルチタスキング方法。
【請求項３】
各タスクの実行時間は、各タスクの記述子にクロックティックを設定することによって決定されることを特徴とする請求項１のメディアプレイヤにおけるマルチタスキング方法。
【請求項４】
前記分割するステップは、前記コントローラユニットが各タスクに対して記述子を生成することによって実現されることを特徴とする請求項１のメディアプレイヤにおけるマルチタスキング方法。
【請求項５】
前記各タスクに対して記述子を生成するステップは、
１）各タスクの特性を記述するために必要なデータを含む記述子を各タスクに対して生成するステップと、
２）記述子配列を生成するステップと、
３）各タスクを初期化し、各タスクに対して優先度を設定するステップと、
４）各タスクの状態を「レディ」に設定するステップとを含むことを特徴とする請求項１のメディアプレイヤにおけるマルチタスキング方法。
【請求項６】
前記ステップ２）はさらに、
２−１）前記コントローラによって、異なる優先度をもつ各タスクの状態を「レディ」に設定するステップと、
２−２）各タスクに対してタイムスライスを設定するステップとを含み、各タイムスライスは、タスクの優先度の順位に応じて複数のタスクの内の一つに対応づけられることを特徴とする請求項１のメディアプレイヤにおけるマルチタスキング方法。
【請求項７】
前記ステップ３）はさらに、
３−１）「実行中」の現在のタスクが存在するかどうか調べ、もし存在するなら、現在のタスクの状態を「実行中」から「レディ」に変更するステップと、
３−２）記述子配列をスキャンして最高優先度をもち「レディ」状態にある第１のタスクを見つけるステップと、
３−３）前記第１のタスクが現在のタスクであるなら、現在のタスクの状態を「実行中」に変更し、現在のタスクのコードのアドレスにジャンプして現在のタスクを実行するステップと、前記第１のタスクが現在のタスクでないなら、現在のシステムフィールドデータを現在のタスクのスタックに保存し、前記第１のタスクのスタックの内容を現在のシステムフィールドデータとしてコピーし、前記第１のタスクのコードのアドレスにジャンプして前記第１のタスクを実行するステップとを含むことを特徴とする請求項１のメディアプレイヤにおけるマルチタスキング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メディアを再生する技術に関し、特にメディアプレイヤにおけるマルチタスキング（multi-tasking）の方法に関する。
【背景技術】
【０００２】
電子情報技術は発達している。ＭＰ３プレイヤのようなメディアプレイヤは、音楽再生、画像閲覧、テキスト表示、ゲーム、ＦＭラジオなどの複数の機能を有するため、人気が高まっている。
【０００３】
しかし、機能がどんなに豊富でも、そのようなデバイスは一度に一つだけの機能しか提供することができない。音楽を再生したり、ＦＭラジオを受信している間、ユーザーはテキストを読んであり、画像を閲覧したり、ゲームをしたりすることはできない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
図１は、従来のメディアプレイヤでタスクを実行する方法を示すフローチャートである。マルチタスキング機構がないため、デバイスのアプリケーションはシングルタスキングの方法で実行されるに過ぎない。実行中のタスクは、すべてのシステムリソースを占有する。たとえば、ＣＰＵの制御、スタックやレジスタのアクセス、内部メモリデバイスや周辺装置のような機器の制御といったシステムリソースである。いったん新しいタスクを実行する必要が生じると、現在のタスクを停止することによってシステムリソースを解放し、その新しいタスクの実行を保証する。
【０００５】
上記の方法では、外部メモリと内部メモリの間で絶えず実行コードをコールイン、コールアウトする必要がある。実行コードをコールアウトする前に、現在のタスクの実行環境パラメータを保存する。実行コードをコールインする前に、実行環境パラメータを以前に保存したものに復元する。このように、実行環境パラメータを、高速の機器と低速の機器の間で頻繁に読み書きしなければならない。このことが全体システムの実行速度を決定づけるため、システムは低速度で実行されることになる。
【０００６】
図２は、当該技術分野における上記の問題に対する一つの解決策を示す。新しいタスクのファンクションコードを現在のタスクに追加することにより、現在のタスクと新しいタスクの両方のファンクションを交互に実行することができる。ユーザから見れば、二つ以上のタスクを同時に実行しているように見える。事実、実行すべきそれらのタスクのファンクションコードはすべて、一つの同じタスクに組み込まれ、タイムスライス循環方式を用いて実行される。
【０００７】
しかし、各ファンクションに対して優先度を割り当てることをせずに、異なるファンクションコードをタイムスライス循環モデルにおいて実行するため、コードの高速な実行は、コードの低速な実行が終わるまで、待たされることになる。特に、二つのファンクションのいずれか一方の実行は、他方があるレベルまで実行されるまで待たなければならず、デッドロックが起こりやすい。
【０００８】
このために、メディアプレイヤでマルチタスキングを可能にする新しい方法が本発明において提供される。
【０００９】
本発明の目的はメディア再生デバイスにおけるマルチタスキング方法を提供することである。
【課題を解決するための手段】
【００１０】
本発明の目的はメディア再生デバイスにおけるマルチタスキング方法を提供することである。
【００１１】
タイムスライス循環方式によるメディアプレイヤにおけるマルチタスキング方法を本発明において提供する。メディアプレイヤはコントローラユニットを含む。この方法は、
前記コントローラユニットによって、前記メディアプレイヤの異なる機能のそれぞれを複数のタスクに分割するステップと、
前記コントローラユニットによって前記複数のタスクのそれぞれに優先度を設定するステップと、
前記コントローラユニットによって、各タスクの優先度を調べ、タスクの優先度にしたがってタスクの状態を「レディ（準備完了）」から「実行中」に変更するステップと、
前記コントローラユニットによって、タスクに関連づけられたタイムスライスを用いてタスクを交互に実行するステップとを含む。
【００１２】
本発明の方法では、すべてのタスクが「レディ」状態にあるとき、より高い優先度をもつタスクが最初に実行される。
【００１３】
本発明の方法では、各タスクの実行時間は、各タスクの記述子にクロックティックを設定することによって決定される。前記分割するステップは、前記コントローラユニットが各タスクに対して記述子を生成することによって実現される。
【００１４】
本発明によれば、複数のタスクはＣＰＵとシステムのリソースを入れ替わり使うことにより、コントローラユニットにおける特定のアルゴリズムにしたがって、複数のタスクがある時間内で交互に実行される。すべてのタスクが短い時間内で実行されるため、ユーザの観点からは、すべてのタスクが同時に実行されることになる。このように、メディアプレイヤにおいてマルチタスキングが実現される。
【発明を実施するための最良の形態】
【００１５】
メディアプレイヤは、コントローラユニット、入力ユニット、ディスプレイユニット、および音声出力ユニットを通常備える。コントローラユニットは、メディアプレイヤの機能を使用可能にするためのファームウェアを備える。 
【００１６】
本発明は、タイムスライス循環方式でメディアプレイヤにおいて複数のタスクを実行する方法を提供する。この方法は、メディアプレイヤの各機能を複数のタスクに分割する処理、各タスクに優先度を設定する処理、各タスクに対して記述子を生成する処理、初期化処理、クロックスケジューリング処理、タスク実行処理、タスクをアイドリングさせる処理、「中断」状態にあるタスクをスケジューリングする処理、およびクロック割り込み処理を含む。
【００１７】
当該技術分野で知られているように、メディアプレイヤは、典型的には複数の機能をもち、たとえば、オーディオ再生、画像閲覧、テキスト表示、ゲーム、ＦＭ受信などができる。これらの機能のそれぞれは、複数のタスクに分割され、コントローラ内のファームウェアによって制御、実行される。タスクの実行は、コントローラユニットの制御下でＣＰＵとシステムのリソースを入れ替わり使う。すべてのタスクが短い時間内で実行されるため、ユーザの観点からは、すべてのタスクが同時に実行されることになる。このようにしてメディアプレイヤ上でマルチタスキングが実現される。
【００１８】
本発明によれば、各タスクは特定のアルゴリズムにしたがって優先度を与えられる。タスクが異なれば、要求されるＣＰＵリソースやシステムリソースも異なる。たとえば、ＭＰ３の復号には画像の復号よりも高い計算能力が必要である。リアルタイムで実行しなければならないタスクもあれば、そうではないタスクもある。たとえば、ユーザはＭＰ３再生が中断すると気がつくが、画像表示の遅延は気にしないであろう。その上、ＭＰ３再生のような機能は、テキスト表示のような機能に比べて、それほど頻繁には使われないであろう。したがって、すべてのタスクが「レディ」状態にあるとき、より高い優先度のタスクをまず実行に移すべきである。より低い優先度のタスクは、より高い優先度のタスクが打ち切られて中断し、ＣＰＵリソースとシステムリソースを解放するまで実行されることがない。この方法において、タイムスライスを異なるタスクに適切に割り当てることができれば、効率が向上し、システムリソースの浪費を回避することができる。
【００１９】
本発明によれば、各機能をタスクに分割し、優先度を設定することは、コントローラユニットが各タスクに対して記述子を生成することによって実行される。コントローラユニットは、特定のアルゴリズムを用いて、各タスクに対して記述子を生成し、優先度とクロックティックを設定する。すべてのタスクは最初は「レディ」状態に設定される。コントローラユニットは最高優先度のタスクを取り出し、そのタスクの状態を「レディ」から「実行中」に変更する。これにより、この高い優先度のタスクは、当該タスクの記述子に設定されたクロックティックにしたがって実行される。
【００２０】
本発明によれば、あるタスクの実行時間はそのタスクの記述子に設定されたクロックティックによって決定される。その結果、すべてのタスクを、それぞれそのタスクに割り当てられたタイムスライスによって交互に繰り返し実行することができる。あるタスクが実行されるとき、そのタスクの状態は「実行中」であるが、他のタスクの状態は「レディ」である。「実行中」の状態のタスクが打ち切られ、そのタスクのクロックティックの終了時に中断した後でないと、他のタスクは実行されない。現在のタスクの実行に対して「レディ」状態にある他のタスクが割り込むことはできない。この瞬間、現タスクの状態は「レディ」に変更される。各タスクの優先度を再び調べ、実行すべき新しいタスクを決定する。現在実行されているタスクがその実行中にＣＰＵリソースを解放して中断した場合、このタスクの優先度は依然として最高であるから、そのタスクが引き続き実行される。
【００２１】
たとえば、メディアプレイヤは、オーディオ再生、画像閲覧、テキスト表示、ゲーム、およびＦＭ受信の機能をもつ。各機能は複数のタスクに分割され、その結果、プレイヤは複数のタスクのもとで動作することができる。オーディオ再生には第１優先度１５、画像閲覧には第２優先度１４、テキスト表示には第３優先度１３などが設定され、「アイドル」状態にあるタスクに最低優先度が設定される。メディアプレイヤの電源が入れられ、初期化された後、コントローラユニットは各タスクの優先度を調べ、各タスクの状態を「レディ」に設定し、各タスクに対して１０ミリ秒の１タイムスライスを割り当てる。複数のタイムスライスが優先度にしたがって複数のタスクに対応づけられてもよい。ユーザのコマンドがキーボード、タッチスクリーンなどを用いて入力されると、関連づけられたタスク（たとえばオーディオ再生）が以前の設定にしたがって実行される。そしてそのタスクの状態は、対応するタイムスライス内で「実行中」になり、他のタスクの状態は「レディ」である。
【００２２】
ユーザーがたとえば画像閲覧のような新しいタスクを実行したい場合、コントローラユニットはこの新しいタスクの優先度をチェックする。もし新しいタスクの優先度が現在のタスクの優先度よりも高いなら、新しいタスクは、その新しいタスクに対応するタイムスライスにしたがって直ちに実行される。そして、その新しいタスクの状態は「実行中」に変更される。新しいタスクの優先度が現在のタスクの優先度よりも低いなら、新しいタスクは、現在のタスクの実行が終了するまで実行されることがない。
【００２３】
図３は、本発明に係るタスク記述子を生成する処理と初期化処理を示すフローチャートである。
ステップＳ１１において、記述子が各タスクに対して生成される。記述子は各タスクの特性を記述するために必要なデータを含む。たとえば、ＩＤ、優先度、状態、クロックティック、実行コードの先頭アドレス、スタックの先頭アドレス、スタックのサイズなどである。
ステップＳ１２は、管理を簡単にするために、すべてのタスクの記述子のアドレスを含む記述子配列を生成する。
ステップＳ１３で、タスクが初期化される。各タスクに対して、必要なスタックのサイズと優先度が設定され、スタックの空間とＩＤが供給され、状態が「レディ」に設定され、クロックがリセットされ、実行コードの先頭アドレスとスタックの先頭アドレスとサイズが記録される。すべてのタスクはこのようにして初期化される。
ステップＳ１４において、プロセスはクロックスケジューリング処理に切り替えられる。
【００２４】
図４は、本発明に係るクロックスケジューリング処理を示すフローチャートである。
ステップＳ２１において、タスクは「実行中」の状態にあると判定された場合、タスクの状態は「レディ」に変更される。そうでない場合、プロセスはステップＳ２２に進む。
ステップＳ２２において、記述子配列がスキャンされ、最高優先度をもち、「レディ」状態にあるタスクを見つける。
ステップＳ２３において、上述の要求に合うタスクがあれば、プロセスはステップＳ２４に進む。そうでない場合、プロセスはステップＳ２６に進む。
ステップＳ２４において、要求に合うタスクが現在のタスクであれば、現在のタスクの状態は「実行中」に変更され、現在のタスクが実行される。たとえば、現在のタスクがオーディオ再生であるなら、オーディオ再生の処理が実行される。他のタスクについても同様である。
ステップＳ２５において、要求に合うタスクが現在のタスクでないなら、すべての現在のシステムフィールドデータが現在のタスクのスタックに保存される。最高優先度をもつ「レディ」タスクのスタックの内容は、現在のシステムフィールドとしてコピーされ、最高優先度をもつタスクの状態は「レディ」から「実行中」に変更され、このタスクが実行される。たとえば、もし最高優先度をもつ「レディ」タスクがオーディオ再生であるなら、オーディオ再生がスタートする。もし最高優先度をもつ「レディ」タスクが画像閲覧であるなら、画像閲覧の処理が実行される。
ステップＳ２６において、要求に合うタスクが見つからないなら、クロックスケジューリングの処理は「アイドル」タスクのアドレスにジャンプする。すなわち、「アイドル」タスクが実行される。
【００２５】
図５は、本発明に係るオーディオ再生タスクとアイドルタスクの実行を示すフローチャートである。
ステップＳ３１において、オーディオ再生のタスクに関するオペレーションが実行される。
ステップＳ３２において、オーディオ再生のサイクルが一回実行され、当該関連オペレーションの実行が終了する。
ステップＳ３３において、中断されるタスクをスケジューリングするプログラムコードのアドレスにジャンプすることにより、中断されるタスクをスケジューリングするプロセスが実行される。
【００２６】
図６は、本発明に係る、中断されるタスクをスケジューリングする処理の実行を示すフローチャートである。
ステップＳ４１において、現在のタスクの状態が「実行中」から「中断」に変更され、現在のシステムフィールドデータは現在のタスクのスタックに保存される。
ステップＳ４２において、記述子配列がスキャンされ、最高優先度をもち「レディ」状態にあるタスクを見つける。
ステップＳ４３において、上記の要求を満たすタスクがあれば、プロセスはステップＳ４４に進む。そうでなければ、ステップＳ４６に進む。
ステップＳ４４において、最高優先度をもつ「レディ」タスクのスタックの内容が、現在のシステムフィールドとしてコピーされ、最高優先度をもつタスクの状態が「レディ」から「実行中」に変更され、このタスクが実行される。たとえば、最高優先度をもつ「レディ」タスクがオーディオ再生であるなら、オーディオ再生が開始される。もし最高優先度をもつ「レディ」タスクが画像閲覧であるなら、画像閲覧が開始される。
要求に合うタスクが見つからない場合、ステップＳ４５おいて、プロセスはアイドルタスクのアドレスに進む。すなわちアイドルタスクが実行される。
【００２７】
図７は、本発明に係るクロック割り込み処理の実行を示すフローチャートである。
ステップＳ５１において、クロック割り込み要求が発行される。
ステップＳ５２において、クロックスケジューリングのプログラムコードのアドレスにジャンプすることにより、クロックスケジューリングの処理が実行される。
【００２８】
本発明によれば、異なるタスクは異なるモジュールとみなされる。単一のスケジューリング処理がすべてのタスクをスケジュールするために用いられることにより、全体システムの障害の可能性を減らすことができる。さらに、一つの機能を複数のモジュールで実行するため、アプリケーションソフトウェアの複雑度を減らすことができる。複数の複雑化したタスクが一つのタスクとして扱われるため、開発者にとってはプログラムが容易になる。
【００２９】
本発明では、異なるタスクのシステムフィールドデータが異なるスタックに保存されるため、全体システムの結合は単純化され、それによってシステムの信頼性が強化される。
【００３０】
実際には、ユーザーは、コントローラのファームウェア内のプログラムを修正して、優先度とクロックティックを各タスクに設定できるようにしてもよい。各タスクの優先度はゼロから値が上がるように設定してもよく、ある数からゼロに下るように設定してもよい。両方のシナリオにおいて、オーディオ再生デバイス上で複数のタスクが実行されるように実装することができる。
【図面の簡単な説明】
【００３１】
【図１】メディアプレイヤでタスクを実行する従来の方法を示すフローチャートである。
【図２】メディアプレイヤでタスクを実行する従来の方法を示す別のフローチャートである。
【図３】本発明に係るメディアプレイヤにおけるマルチタスキング方法において、記述子を生成する処理と初期化処理を示すフローチャートである。
【図４】本発明に係るメディアプレイヤにおけるマルチタスキング方法において、クロックスケジューリング処理を示すフローチャートである。
【図５】本発明に係るオーディオ再生タスクとアイドル処理の実行を示すフローチャートである。
【図６】本発明に係る中断されたタスクのスケジューリング処理の実行を示すフローチャートである。
【図７】本発明に係るクロック割り込み処理の実行を示すフローチャートである。
【図１】
2009510817.tif 000003
【図２】
2009510817.tif 000004
【図３】
2009510817.tif 000005
【図４】
2009510817.tif 000006
【図５】
2009510817.tif 000007
【図６】
2009510817.tif 000008
【図７】
2009510817.tif 000009
【国際調査報告】
2009510817.tif 000010
2009510817.tif 000011
2009510817.tif 000012
2009510817.tif 000013