(57)【要約】【課題】受信したメッセージに基づいてプロセスの重要度を変更する技術を提供する。【解決手段】デーモンプロセスの重要度を変更する方法及び装置が開示される。規範的な実施形態において、装置は、デーモンプロセスに向けられたユーザプロセスからのメッセージを受信し、デーモンプロセスは、ユーザプロセスとは独立して実行され、そして第１のデーモンプロセスは、他の実行プロセスとメッセージを通信する。更に、装置は、第１のデーモンプロセスの重要度を変更できることを第１のメッセージが指示するかどうか決定する。第１のデーモンプロセスの重要度を変更できることを第１のメッセージが指示する場合には、装置が第１のデーモンプロセスの重要度を変更する。装置は、更に、第１のメッセージを第１のデーモンプロセスに転送する。【選択図】図４
2013257873.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の処理ユニットが第１のデーモンプロセスの重要度を変更する方法を遂行するようにさせる実行可能なインストラクションを有する非一時的マシン読み取り可能な媒体において、前記方法は、
前記第１デーモンプロセスに向けられたユーザプロセスからの第１メッセージを受け取り、前記第１デーモンプロセスは、前記ユーザプロセスとは独立して実行され、前記第１デーモンプロセスは、他の実行プロセスとメッセージを通信し、そのメッセージは、前記ユーザプロセスから前記第１デーモンプロセスへのサービス要求であり、
前記第１デーモンプロセスの重要度を変更できることを前記第１メッセージが指示するかどうか決定し、
前記第１デーモンプロセスの重要度を変更できることを前記第１メッセージが指示する場合には、前記第１デーモンプロセスの重要度を変更し、及び
前記第１メッセージを前記第１デーモンプロセスへ転送する、
ことを含むものである、非一時的マシン読み取り可能な媒体。
【請求項２】
前記ユーザプロセスは、前記第１デーモンプロセスよりも高い高重要度で実行される、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項３】
前記第１デーモンプロセスの重要度の変更は、前記第１デーモンプロセスの重要度を、前記ユーザプロセスと同じ重要度に変更する、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項４】
前記決定は、第１デーモンプロセスの重要度を変更できるメッセージが第１デーモンプロセスに向けられるかどうか決定することを含む、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項５】
前記メッセージの転送は、前記第１デーモンプロセスに対しポートキューにおいて前記メッセージをエンキューすることを含む、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項６】
前記第１デーモンプロセスに対するアサーションのカウントを維持し、
前記第１デーモンプロセスに対するドロップアサーションを受け取り、
前記第１デーモンプロセスに対するアサーションのカウントをデクリメントし、及び
前記第１デーモンプロセスに対するアサーションのカウントがゼロである場合には、前記第１デーモンプロセスの重要度をデフォールト重要度へ変更する、
ことを更に含む、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項７】
第２デーモンプロセスに向けられたユーザプロセスからの第２メッセージを受け取り、前記第２デーモンプロセスは、実行されており、前記第２デーモンプロセスは、前記第１デーモンプロセスとは独立して実行され、前記第２デーモンプロセスは、他の実行プロセスとメッセージを通信し、
前記第２デーモンプロセスの重要度を変更できることを前記第２メッセージが指示するかどうか決定し、
前記第２デーモンプロセスの重要度を変更できることを前記第２メッセージが指示する場合には、前記第２デーモンプロセスの重要度を変更し、及び
前記第２メッセージを前記第２デーモンプロセスへ転送する、
ことを更に含む、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項８】
前記第２デーモンプロセスの重要度の変更は、変更される前記第２デーモンプロセスの重要度を、前記ユーザプロセスと同じ重要度に変更する、請求項７に記載の非一時的マシン読み取り可能な媒体。
【請求項９】
前記第１メッセージを、重要度を搬送するものとしてマークすることを更に含む、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項１０】
前記第１メッセージを前記第１デーモンへ転送することは、前記第１デーモンプロセスの重要度の変更に応答して行われる、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項１１】
前記ユーザプロセスは、前景において実行されるユーザアプリケーションのためのプロセスである、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項１２】
前記第１デーモンプロセスは、背景において実行される、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項１３】
プロセス重要度は、ユーザに代わってアクションが必要であることを指示する、請求項１に記載の非一時的マシン読み取り可能な媒体。
【請求項１４】
１つ以上の処理ユニットが適応デーモンプロセスの重要度を変更する方法を遂行するようにさせる実行可能なインストラクションを有する非一時的マシン読み取り可能な媒体において、前記方法は、
適応デーモンに向けられた重要度ドナープロセスからメッセージを受け取り、前記適応デーモンは、起動されるべきものであり、
前記適応デーモンプロセスの重要度を変更できることを前記メッセージが指示するかどうか決定し、
前記適応デーモンプロセスの重要度を変更できることを前記メッセージが指示する場合には、前記適応デーモンプロセスを、異なる重要度、即ち前記適応デーモンプロセスに関連したデフォールト重要度で起動し、及び
前記起動された適応デーモンプロセスへ前記メッセージを転送する、
ことを含む、非一時的マシン読み取り可能な媒体。
【請求項１５】
前記適応デーモンプロセスは、変更可能なプロセス重要度をもつデーモンプロセスである、請求項１４に記載の非一時的マシン読み取り可能な媒体。
【請求項１６】
前記重要度ドナープロセスは、別のプロセスに重要度を寄贈できるプロセスである、請求項１４に記載の非一時的マシン読み取り可能な媒体。
【請求項１７】
前記重要度ドナープロセスは、ユーザアプリケーションプロセス、及び重要度が昇格された別の適応デーモンプロセスより成るグループから選択される、請求項１６に記載の非一時的マシン読み取り可能な媒体。
【請求項１８】
前記適応デーモンプロセスの重要度は、重要度ドナーの重要度へ昇格される、請求項１４に記載の非一時的マシン読み取り可能な媒体。
【請求項１９】
前記メッセージは、前記重要度ドナープロセスから前記適応デーモンプロセスへのサービス要求である、請求項１４に記載の非一時的マシン読み取り可能な媒体。
【請求項２０】
第１デーモンプロセスの重要度を変更するための装置において、
第１デーモンプロセスの重要度を変更できることを第１メッセージが指示するかどうか決定する手段と、
前記第１デーモンプロセスの重要度を変更できることを前記第１メッセージが指示する場合には、前記第１デーモンプロセスの重要度を変更する手段と、
前記第１メッセージを前記第１デーモンプロセスへ転送する手段と、
を備えた装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に、プロセス管理に関するもので、より詳細には、受信したメッセージに基づいてプロセスの重要度を変更することに関する。
【０００２】
関連出願：本願は、２０１２年６月８日に出願された同時係争中の米国特許出願第６１／６５７，６１１号の優先権の利益を主張するもので、これは、参考として、ここにそのまま援用される。
【背景技術】
【０００３】
移動装置は、ユーザと相互作用し且つその移動装置における多数のサービスを遂行するのに使用される複数の実行プロセスを有する装置である。例えば、移動装置は、前景において実行される１つのユーザアプリケーションプロセスを有し、ユーザは、このプロセスと相互作用することができる。他の実行プロセスは、ユーザアプリケーションプロセス又は他の実行プロセスにサービスを提供するデーモンプロセスである。これら他のプロセスは、中央処理ユニット（ＣＰＵ）、メモリ、入力／出力、等の、移動装置のハードウェアリソースを消費する。これら消費されるリソースは、ユーザアプリケーション作用に必要なリソースと競合し、その結果、ユーザアプリケーションプロセスに適用されるリソースが非常に僅かになるので、ユーザインターフェイスの異常、装置の動きがのろいと感じること、タッチに対する反応が遅いこと、及び／又は装置がロックすることが生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
この問題を軽減する１つの仕方は、デーモン及び／又は他の背景プロセスをユーザアプリケーションプロセスより低い重要度で実行させることである。これらの他のプロセスをユーザアプリケーションプロセスより低い重要度で実行させることで、ユーザアプリケーションプロセスは、より多くの移動装置リソースを消費することができ、従って、移動装置は、ユーザにとって、より良好な応答性をもつように見える。このシナリオに伴う問題は、ユーザアプリケーションプロセスがサービス又は情報についてそれらのデーモン又は他の背景プロセスの１つに要求を発するときに、それらのデーモン又は背景プロセスが低い重要度で要求に応じることである。これは、サービス要求を満足させるために、ユーザアプリケーションプロセスを待機させることになる。
【課題を解決するための手段】
【０００５】
デーモンプロセスの重要度を変更する方法及び装置について説明する。規範的な実施形態において、装置は、デーモンプロセスに向けられたユーザプロセスからのメッセージを受信し、デーモンプロセスは、ユーザプロセスとは独立して実行され、そして第１のデーモンプロセスは、他の実行プロセスとメッセージを通信する。更に、装置は、第１のデーモンプロセスの重要度を変更できることを第１のメッセージが指示するかどうか決定する。第１のデーモンプロセスの重要度を変更できることを第１のメッセージが指示する場合には、装置が第１のデーモンプロセスの重要度を変更する。装置は、更に、第１のメッセージを第１のデーモンプロセスに転送する。
【０００６】
更に別の実施形態において、装置は、適応デーモンに向けられた重要度ドナー(donor)プロセスからのメッセージを受信し、適応デーモンは、まだ起動されねばならないものである。更に、装置は、適応デーモンプロセスの重要度を変更できることをメッセージが指示するかどうか決定する。適応デーモンプロセスの重要度を変更できることをメッセージが指示する場合には、装置は、異なる重要度、即ち適応デーモンプロセスに関連したデフォールト重要度で適応デーモンプロセスを起動する。起動された適応デーモンプロセスには、更にメッセージが転送される。
【０００７】
他の方法及び装置についても説明する。
【０００８】
本発明は、同様の要素が同じ参照番号で示された添付図面に一例として示されるが、これに限定されるものではない。
【図面の簡単な説明】
【０００９】
【図１】ユーザアプリケーションプロセスが低い重要度で実行されるデーモンプロセスと通信する移動装置の１つの実施形態のブロック図である。
【図２】ユーザアプリケーションプロセスが、低い重要度及び高い重要度の混合状態で実行されるデーモンプロセスと通信する移動装置の１つの実施形態のブロック図である。
【図３Ａ】ユーザアプリケーションプロセスがデーモンプロセスと通信しそしてデーモンプロセスの重要度が昇格される移動装置の１つの実施形態のブロック図である。
【図３Ｂ】ユーザアプリケーションプロセスがデーモンプロセスと通信しそしてデーモンプロセスの重要度が昇格される移動装置の１つの実施形態のブロック図である。
【図４】デーモンに向けられたメッセージに基づいてデーモンの重要度を昇格するのに使用されるメッセージを送信するためのカーネルのプロセスの一実施形態のフローチャートである。
【図５】デーモンに向けられたメッセージに基づいてデーモンの重要度を昇格するのに使用されるメッセージを受信するためのカーネルのプロセスの一実施形態のフローチャートである。
【図６】デーモンの重要度を昇格するのに使用されるメッセージを受信するための適応デーモンのプロセスの一実施形態のフローチャートである。
【図７】重要度アサーションをドロップするためのカーネルのプロセスの一実施形態のフローチャートである。
【図８】オンデマンドでサービスを起動するためのプロセスの一実施形態のフローチャートである。
【図９】適応デーモンプロセスの重要度を昇格及び降格するシステムの一実施形態のブロック図である。
【図１０】第１のデーモンにより受信されたメッセージに基づき第２のデーモンの重要度を昇格するためのプロセスの一実施形態のフローチャートである。
【図１１】第１のデーモンプロセスが第２のデーモンプロセスと通信しそして第２のデーモンプロセスの重要度が昇格される移動装置の一実施形態のブロック図である。
【図１２】プロセスによるメッセージの送信及び受信を容易にするためのメッセージサービスモジュールである。
【図１３】デーモンにより受信されたメッセージに基づきデーモンの重要度を昇格するのに使用されるメッセージを送信するためのメッセージ送信モジュールである。
【図１４】デーモンのデーモン重要度を昇格するのに使用されるメッセージを受信するためのメッセージ受信モジュールである。
【図１５】デーモンにより受信されたメッセージに基づきデーモンの重要度を昇格するのに使用されるメッセージを受信するためのユーザ受信モジュールである。
【図１６】重要度アサーションをドロップするためのドロップアサーション重要度モジュールである。
【図１７】オンデマンドでサービスを起動するための起動サービスモジュールである。
【図１８】第１のデーモンにより受信されたメッセージに基づき第２のデーモンの重要度を昇格するためのメッセージ処理モジュールである。
【図１９】ここに述べる実施形態に関連して使用される典型的なコンピュータシステムの一例を示す。
【図２０】本発明の１つの実施形態に使用されるデータ処理システムの一例を示す。
【発明を実施するための形態】
【００１０】
デーモンプロセスの重要度を変更する方法及び装置について説明する。以下の記述では、本発明の実施形態を完全に説明するために多数の特定の細部について述べる。しかしながら、当業者であれば、それらの特定の細部がなくても、本発明の実施形態が具現化されることが明らかであろう。他の点について、この説明の理解を不明瞭にしないために良く知られたコンポーネント、構造及び技術は、詳細に示さない。
【００１１】
明細書において「１つの実施形態」又は「一実施形態」を言及するときには、その実施形態に関して述べる特定の特徴、構造又は特性が本発明の少なくとも１つの実施形態に包含されることを意味する。明細書の種々の場所に「１つの実施形態」又は「一実施形態」が現れるときには、必ずしも全てが同じ実施形態を指していない。
【００１２】
以下の説明及び特許請求の範囲において、「結合(coupled)」及び「接続(connected)」並びにそれから派生する語が使用される。これらの語は、互いに同意語として意図されていないことを理解されたい。「結合」は、２つ以上の要素が互いに直接物理的又は電気的に接触してもしなくてもよいが、互いに協働し又は相互作用することを指示するのに使用される。「接続」は、互いに結合された２つ以上の要素間での通信の確立を指示するのに使用される。
【００１３】
添付図面に示すプロセスは、ハードウェア（例えば、回路、専用ロジック、等）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシンで実行される）、又は両方の組み合わせを含む処理ロジックにより遂行される。これらのプロセスは、幾つかの順次のオペレーションに関して以下に述べるが、それらのオペレーションの幾つかは、異なる順序で遂行されてもよいことが明らかであろう。更に、幾つかのオペレーションは、順次ではなく、並列に遂行されてもよい。
【００１４】
「サーバー」「クライアント」及び「装置」という語は、サーバー、クライアント及び／又は装置の特定フォームファクタを特別に指すのではなく、データ処理システムを一般的に指すことを意図している。
【００１５】
デーモンプロセスの重要度を変更する方法及び装置について説明する。１つの実施形態において、装置は、重要度の高いプロセスから適応デーモンプロセスへ送信されるメッセージを装置のカーネルで検出させることにより、デーモンプロセスの重要度を変更することができる。適応デーモンプロセスとは、その適応デーモンプロセスが実行される環境に基づき重要度を上げ下げすることのできるデーモンプロセスである。この実施形態では、カーネルは、このメッセージを検出し、そしてメッセージを重要度でマークする。更に、カーネルは、このデーモンプロセスが実行される場合には適応デーモンプロセスの重要度を昇格し、或いは適応プロセスがカーネルからのメッセージを受信する前に、適応デーモンを高い重要度で起動することができる。適応デーモンプロセスがメッセージを受信する前に適応デーモンプロセスの重要度を昇格させることで、適応デーモンプロセスは、メッセージを受信して、高い重要度のプロセスとして処理することができる。更に、カーネルは、適応デーモンプロセスに対するアサーションを行う。
【００１６】
適応デーモンプロセスは、それがメッセージを受信した後、そのメッセージを処理し、そしてメッセージに対する応答を初期メッセージの発信者へ送信する。更に、適応デーモンプロセスは、適応デーモンプロセスにおけるアサーションをドロップする。カーネルは、適応デーモンプロセスにおけるペンディング中アサーションの数をデクリメントする。適応デーモンプロセスに対するペンディング中アサーションの数がゼロである場合には、カーネルは、適応デーモンプロセスの重要度をその適応デーモンプロセスのデフォールト重要度へ降格する。１つの実施形態では、デーモンのデフォールト重要度とは、昇格が存在しないか又は昇格された重要度での起動が存在しないときにデーモンが有する重要度である。
【００１７】
図１は、ユーザアプリケーションプロセスが低重要度で実行されるデーモンプロセスと通信する移動装置１００の１つの実施形態のブロック図である。１つの実施形態において、移動装置１００は、スマートホン、ラップトップ、パーソナルデジタルアシスタント、音楽再生装置、ゲーム装置、等である。装置は、ここでは移動装置として述べるが、ここに述べる本発明は、パーソナルコンピュータ、サーバー、又は複数のプロセスを実行する他の装置にも使用することができる。図１において、移動装置１００は、コンピュータハードウェアリソースを管理するのに使用されるソフトウェアのセットであり且つアプリケーションプログラムのような他の実行コンピュータプログラムのための共通のサービスを提供するオペレーティングシステム１０２を備えている。１つの実施形態において、オペレーティングシステム１０２は、移動装置１００のプロセッサが各実行プロセスを実行するときにタイムスケジューリングにより異なる実行プロセスを管理する。１つの実施形態において、プロセスは、実行されているコンピュータプログラムのインスタンスである。この実施形態では、プロセスは、ユーザ入力の結果として実行されるユーザアプリケーションである。プロセスの別の例は、ユーザアプリケーション、別のデーモン、他のプロセス、等に１つ以上のサービスを提供するデーモンプロセスである。例えば、１つの実施形態では、デーモンプロセスは、ワイヤレスホットスポットサービスの状態、インストールされたアプリケーションのリストを与え、サーチを容易にし、装置電力設定を監視及び調整し、等を行う。１つの実施形態において、デーモンプロセスは、移動装置の特定のハードウェアリソースに結び付けられていない。
【００１８】
１つの実施形態において、あるプロセスは、他のプロセスよりも重要度が高いか低い。１つの実施形態において、プロセスの重要度は、装置と現在相互作用しているユーザに代わってアクションが必要であることを指示するためにタスク／プロセスに関連したプロパティの集合である。それは、ユーザがそれらアクションの完了を待機していることを指示し、このタスク／プロセスは、緊急に処理されるべきものである。プロセスの重要度は、プロセスに対する中央処理ユニットのスケジュールプライオリティ、入力／出力スケジュール、ネットワーク帯域巾プライオリティ、メモリ管理、グラフィックリソースの使用、等、及び／又はその組み合わせを含む。プロセスプライオリティとは、実行する必要がある多数のタスクがあるときにタスク又はスレッドを動作（又は実行）のために取り上げる緊急性を指示するプロパティである。このプロセスプライオリティは、プロセスを実行すべきときをスケジュールするためにオペレーティングシステムにより使用される。１つの実施形態では、他のプロセスより重要度が高いプロセスは、多量の移動装置リソース（例えば、プロセッサリソース、等）を消費する。この実施形態では、重要度の高いプロセスは、重要度の低いプロセスより高速で実行するように見える。１つの実施形態では、重要度は、最低重要度から最高重要度まである範囲の数字に基づいて指定される。例えば、１つの実施形態では、重要度の範囲は、１から１０まで、０−１２７、低／高、又は値の別の範囲である。
【００１９】
例えば、１つの実施形態では、次の移動装置リソース使用がプロセス重要度により影響される。１．プロセススケジュールング：上述したように、高及び低重要度プロセスには、低重要度のプロセスが高重要度のプロセスを妨げないように異なるプロセススケジューリング「プライオリティ」が指定される。
【００２０】
２．ディスクスケジューリング：１つの実施形態では、システム記憶ユニット（例えば、磁気ハードドライブ及びソリッドステートハードディスクユニット）にアクセスするときに、高重要度のプロセスには、低重要度プロセスに勝るプライオリティが与えられる。更に、低重要度プロセス（即ち、背景状態のプロセスに関連したスレッド）は、システム記憶ユニットのアクセスにおいてレート制限される。
【００２１】
３．着信ネットワークアクティビティ：１つの実施形態において、着信ネットワークトラフィックは、低重要度プロセスに向けられた幾つかの又は全てのパケットをドロップすることにより緩和される。更に、人為的に小さなバッファサイズが遠方のネットワークサイトに報告され、着信するＴＣＰ（送信コントロールプロトコル）トラフィックを絞る。当業者であれば、ＴＣＰは、バッファサイズに関連したトラフィックフローコントロールメカニズムの既存セットを有し、受取者が取り扱いできる以上に高速でトラフィックがネットワーク上に送られないようにする。上述したように、１つの実施形態では、送信者が着信トラフィックのフローを低速化し又は停止するように、人為的に小さなバッファサイズが報告される。
【００２２】
４．発信ネットワークアクティビティ：１つの実施形態において、ネットワークアクセスは、２つのキューを使用することで緩和され、その１つは、高重要度プロセスに関連したジョブに対するものであり、そしてもう１つは、低重要度プロセスに関連したジョブに対するものである。低重要度キューに勝る高重要度キュープライオリティを与えるのが有益であることが分かった。例えば、高重要度キューは、背景キューに勝る１００％プライオリティが与えられる。この設定では、低重要度キューのジョブがサービスされる唯一の時間は、高重要度キューが空の場合である。別の実施形態では、高重要度キューのジョブは、低重要度キューからのジョブと希望の比率、例えば、９０／１０、８０／２０、７５／２７又は５０／５０でサービスされる。更に別の実施形態では、ジョブがキュー（例えば、高重要度キュー）に入れられると、ジョブ関連プロセスがその後に異なる動作状態（例えば、低重要度）に入れられる場合には、それが移動されない。更に別の実施形態では、ジョブのキュー位置が、その関連プロセスの動作状態を反映するように更新される。
【００２３】
５．ハードウェア制約：１つの実施形態において、低重要度プロセスは、あるシステムハードウェアリソースへのアクセスを得ることが防止される。低重要度プロセスに利用できない例示的なハードウェアは、カメラ、ＧＰＵ、加速度計、ジャイロスコープ、メモリ消費、接近センサ及びマイクロホンを含むが、これに限定されない。
【００２４】
１つの実施形態では、ユーザアプリケーションプロセス１０４は、前景において実行することができ、一方、１つ以上のデーモンプロセス１０６Ａ−Ｎは、ユーザアプリケーションプロセス１０４より低い重要度で背景において実行される。前景で実行されるプロセスは、ユーザと相互作用するプロセスであり、そしてユーザと相互作用せずに実行されるプロセスは、背景のプロセスである。例えば、１つの実施形態では、移動装置１００において前景で実行されるユーザアプリケーションプロセス１０４は、移動装置１００に表示されるユーザアプリケーションである。この実施形態では、移動装置１００は、移動装置に表示されずに他のプロセスと通信する１つ以上のデーモンプロセスを同時に実行することができる。これらのデーモンプロセスは、背景において実行され、ユーザには直接見えない。
【００２５】
１つの実施形態において、前景の低重要度プロセスは、異なるプライオリティで実行される。前景のプロセスは、ユーザと相互作用できるので、前景のプロセスは、低重要度プロセスであるデーモンプロセスより高い重要度で実行される。前景のプロセスを高い重要度で実行させることで、前景のプロセスは、より多くのプロセッサリソースを得、そして前景のプロセスは高速で実行されるので前景のプロセスには良好なユーザ経験が与えられる。
【００２６】
１つの実施形態では、オペレーティングシステム１０２は、ユーザアプリケーションプロセス１０４及びデーモンプロセス１０６Ａ−Ｎを含む。この実施形態では、ユーザアプリケーションプロセス１０４は、高重要度プロセス１０８であり、そしてデーモンプロセス１０６Ａ−Ｎは、低重要度プロセス１１０である。更に、ユーザアプリケーションプロセス１０４は、低重要度で実行される個々のデーモンプロセス１０６Ａ−Ｎに比して移動装置１００のリソースの高いシェアを得る。ユーザアプリケーションプロセス１０４を高い重要度で実行させることにより、ユーザアプリケーションプロセス１０４は、ユーザにとって高速で実行されるように見える。
【００２７】
上述したように、この構成の１つの問題は、ユーザアプリケーションプロセス１０４が時々デーモンプロセス１０６Ａ−Ｂから１つ以上のサービスを要求できることである。この実施形態では、デーモンプロセス１０６Ａ−Ｂが低重要度で実行されるので、デーモンがその要求にサービスするには時間がかかる。ユーザアプリケーションプロセス１０４が低重要度で実行される１つ以上のデーモンプロセス１０６Ａ−Ｂからサービスを要求することにより、ユーザアプリケーションプロセス１０４は、デーモン１０６Ａ−Ｂが要求にサービスする時間中は、低重要度で実行されるように見える。例えば、１つの実施形態では、ユーザアプリケーションプロセス１０４は、デーモンから移動ホットスポットの状態を要求し、電力管理を調整及び報告し、サーチを遂行し、等々である。
【００２８】
図２は、ユーザアプリケーションプロセスが、低重要度及び高重要度の混合状態で実行されるデーモンプロセスと通信する移動装置の１つの実施形態のブロック図である。図２及び１つの実施形態において、移動装置２００のオペレーティングシステム２０２は、高重要度プロセス２０８の１つとして実行されるデーモンプロセス２１２を有する。更に、オペレーティングシステム２０２は、低重要度プロセス２１０として実行される他のデーモンプロセス２０６Ａ−Ｎ、及びユーザアプリケーションプロセス２０４を含む。更に、ユーザアプリケーションプロセス２０４は、低重要度プロセスデーモン２０６Ａ−Ｂ及び高重要度プロセスデーモン２１２へサービス要求を発する。
【００２９】
デーモンプロセス２１２を高重要度プロセス２０８の１つとして実行させることで、ユーザアプリケーションプロセス２０４は、デーモンプロセス２１２にサービス要求を発することにより性能低下を経験しない。このデーモンプロセス２１２については、デーモンサービス要求を発することで、ユーザアプリケーションプロセス２０４に対する性能低下が軽減される。しかしながら、このデーモン２１２は、オペレーティングシステム２０２で実行される他のデーモン又は他のプロセスからのサービス要求も処理するので、別の問題が生じる。他のサービス要求を処理することにより、高重要度のデーモンプロセス２１２は、移動装置２００のより多くのリソースを受け取り、ユーザアプリケーションプロセス２０４に利用できるリソースの量を減少する。この問題は、高重要度プロセス２０８として実行されるデーモンプロセスの数が増加するにつれて悪化する。更に、この状況は、低重要度のデーモンが低重要度のサービス要求を取り扱う問題からも生じる。
【００３０】
図１及び２は、全てが低重要度プロセスとして実行されるか又は低及び高プライオリティ混合プロセスとして実行されるデーモンプロセスへサービス要求を発することによりユーザアプリケーションプロセスの性能が低下する問題を示している。１つの実施形態では、デーモンプロセスの重要度をユーザアプリケーションプロセスサービス要求に対して高重要度へ昇格させそして他のサービス要求については低重要度で実行させることにより、ユーザアプリケーションプロセスに優れた性能をもたせることができる。これは、ユーザアプリケーションプロセスがデーモンプロセスにサービス要求を発するときに、そのサービス要求が高重要度で処理されるからである。サービス要求を高プロセス重要度で処理させることで、ユーザアプリケーションプロセスは、更に迅速に実行されるように見える。他のサービス要求については、デーモンは、低重要度で実行され、そして他の機能についてユーザアプリケーションプロセスの性能を低下させない。
【００３１】
１つの実施形態では、プロセスは、１つ以上のスレッドを含み、スレッドとは、オペレーティングシステムによりスケジュールできる最小単位の処理である。同じプロセス内に複数のスレッドが存在して、プロセスリソース（例えば、メモリ、インストラクション、コンテキスト、等）をシェアしている。１つの実施形態では、プロセスの重要度が変更された場合に、全てのスレッドがその変更された重要度で実行される。この実施形態では、メッセージの受信又はメッセージ返事の送信に応答して重要度が昇格又は降格されたときに、そのプロセスの全ての現在実行スレッドが新たな重要度で実行される。別の実施形態では、幾つかのスレッドがその変更された重要度で実行される。
【００３２】
図３Ａは、ユーザアプリケーションプロセス３０４がデーモンプロセス３０６Ａと通信しそしてデーモンプロセス３０６Ａの重要度が昇格される移動装置３００の１つの実施形態のブロック図である。図３Ａにおいて、移動装置３００は、ユーザアプリケーションプロセス３０４及びデーモンプロセス３０６Ａ−Ｎの実行を管理するオペレーティングシステム３０２を備えている。更に、ユーザアプリケーションプロセス３０４は、高重要度で実行され、そしてデーモンプロセスは、最初、低重要度で実行される。ユーザアプリケーションプロセス３０４がデーモンプロセスからのサービスを要求するときに、デーモンプロセスは、このサービス要求を処理するために高重要度へ昇格される。１つの実施形態では、このデーモンプロセス３０６Ａは、このプロセスの重要度を、プロセスが作用する環境に適応できるので、適応デーモンである。例えば、１つの実施形態では、ユーザアプリケーションプロセス３０４は、メッセージ３１２を経てデーモンプロセス３０６Ａにサービス要求を発する。１つの実施形態では、メッセージは、プロセス間通信（ＩＰＣ）メッセージである。メッセージがデーモンに対してキューされるのに応答して、デーモンの重要度は、高重要度デーモン３１６へ昇格される。１つの実施形態では、昇格されたデーモン３１６の重要度が要求側ユーザアプリケーションプロセス３０４と同じであるが、別の実施形態では、デーモン３１６の昇格された重要度が要求側ユーザアプリケーションプロセス３０４の重要度より高くても低くてもよい。
【００３３】
更に、ユーザアプリケーションプロセス３０４は、メッセージをデーモンプロセス３０６Ａへ送信した後に、そのメッセージの返事をデーモンプロセス３０６Ａから受信するまで、実行を続ける。例えば、１つの実施形態では、ユーザアプリケーションプロセス３０４がデーモンプロセス３０６Ａへメッセージを送信した後に、ユーザアプリケーションプロセス３０４がそのメッセージの返事を受信するまで、ユーザアプリケーションプロセス３０４は、ユーザから入力を受け取り、ユーザアプリケーションプロセス３０４の表示を更新し（例えば、スクロール、リサイズ、回転、等）、及び／又は他の機能を遂行する。別の例として、ユーザアプリケーションプロセス３０４は、デーモンプロセス３０６Ａ／３１６から返事を待つ間に停止しない。
【００３４】
１つの実施形態において、デーモンプロセス３０６Ａは、ユーザアプリケーションプロセス３０４がデーモンプロセス３０６Ａへサービス要求メッセージを送信するときに実行される。この実施形態では、デーモンプロセス３０６Ａは、ユーザアプリケーションプロセス３０４とは独立して実行され、そしてユーザアプリケーションプロセス３０４、他のユーザアプリケーションプロセス、他のデーモン、他のプロセス及び／又はその組み合わせからのサービス要求を取り扱う。更に、デーモンプロセス３０６Ａは、ユーザアプリケーションプロセス３０４がスタートする前又はその後にスタートする。例えば、１つの実施形態において、デーモンプロセス３０６Ａは、移動装置がブートアップするときにスタートし、そしてユーザアプリケーションプロセス３０４は、移動装置がブートした後にスタートする。この例では、デーモンプロセス３０６Ａは、ユーザアプリケーションプロセス３０４とは独立して移動装置で実行される１つ以上のプロセスからのサービス要求メッセージを処理する。
【００３５】
別の実施形態では、デーモンプロセス３０６Ａは、ユーザアプリケーションプロセス３０４がメッセージを送信するときに実行されない。この実施形態では、デーモンプロセス３０６Ａは、このデーモンプロセス３０６Ａより通常は高い重要度のオンデマンドで起動される。オンデマンドの起動は、図８を参照して以下に更に説明する。１つの実施形態では、起動サービス３２６は、デーモンのオンデマンド起動３２８を取り扱う。この実施形態では、サービス要求メッセージが起動サービス３２６へ転送され、起動サービス３２６は、デーモン３０６Ａ／３１６を高重要度プロセス３１６として起動し、このデーモンは、通常、低重要度プロセス３０６Ａとして起動するものである。
【００３６】
図３Ａ及び１つの実施形態において、オペレーティングシステムカーネル３２０は、デーモンプロセス重要度昇格を取り扱う。別の実施形態では、オペレーティングシステムカーネル３２０は、プロセス管理モジュール３２２を使用してデーモンプロセス重要度昇格を取り扱う。この実施形態では、プロセス管理モジュール３２２は、ユーザアプリケーションプロセス３０４とデーモンプロセス３０６Ａ／３１６との間のメッセージの送信及び受信を取り扱う。例えば、１つの実施形態では、プロセス管理モジュール３２２は、このプロセス管理モジュール３２２がデーモンプロセス３０６Ａ／３１６のためのメッセージをエンキューするときにデーモンプロセス３０６Ａ／３１６を昇格させる。これら２つのプロセス間のメッセージ通過を取り扱うことにより、プロセス管理モジュール３２２は、デーモンプロセスの昇格を管理することができる。更に、デーモンプロセス３０６Ａ／３１６は、受信したメッセージを処理するデーモンｍｓｇ＿ｒｅｃｖモジュール３２４を含む。受信したメッセージの処理は、図６において以下で更に説明する。
【００３７】
１つの実施形態において、デーモンがメッセージの処理を完了した後、デーモンの重要度が最初のデーモン重要度に戻される。図３Ｂは、ユーザアプリケーションプロセス３０４が昇格されたデーモンプロセス３１６と通信しそしてデーモンプロセス３１６の重要度が降格される移動装置３００の１つの実施形態のブロック図である。図３Ｂにおいて、移動装置３００は、ユーザアプリケーションプロセス３０４、デーモンプロセス３０６Ｂ−Ｎ、及び昇格されたデーモンプロセス３１６の実行を管理するオペレーティングシステム３０２を含む。図３Ａと同様に、ユーザアプリケーションプロセス３０４は、高重要度で実行され、デーモンプロセス３０６Ｂ−Ｎは、最初、低重要度で実行され、そしてデーモン３０６Ａは、高重要度で実行されるように昇格され、これは、デーモンプロセス（昇格）３１６として示されている。１つの実施形態では、昇格されたデーモンプロセス３１６は、メッセージを処理し、そして返事をユーザアプリケーションプロセス３０４へ送信する。この実施形態では、メッセージの送信に応答して、昇格されたデーモンプロセス３１６を、その最初の重要度３０６Ａへ降格することができる。更に、デーモンプロセス３１６の降格は、デーモンプロセス３０６Ａの重要度が昇格されたが、その昇格された重要度で実行され又は起動される場合にも、行われる。プロセスの降格については、以下で更に述べるが、昇格されたデーモンプロセス３１６は、アサーションをドロップさせ、このプロセス３１６が降格されるように導く。例えば、プロセスの降格は、図６において以下に更に説明する。
【００３８】
図３Ｂにおいて、１つの実施形態では、オペレーティングシステムカーネル３２０は、デーモンプロセスの降格を取り扱う。別の実施形態では、オペレーティングシステムカーネル３２０は、プロセス管理モジュール３２２を使用してデーモンプロセスの昇格を取り扱う。この実施形態では、プロセス管理３２２は、ユーザアプリケーションプロセス３０４とデーモンプロセス３０６Ａ／３１６との間のメッセージの送信及び受信を取り扱う。これら２つのプロセス間のメッセージ通過を取り扱うことで、プロセス管理モジュール３２２は、デーモンプロセスの降格を管理することができる。更に、デーモンプロセス３０６Ａ／３１６は、受信したメッセージを処理するデーモンｍｓｇ＿ｒｅｃｖモジュール３２４を含む。受信したメッセージの処理は、図６において以下に更に説明する。
【００３９】
１つの実施形態において、昇格されたデーモンプロセス３１６がアサーションをドロップさせることでプロセスの降格が生じる。例えば、１つの実施形態において、デーモンプロセスがカーネルへシステムコールを発することでプロセスアサーションドロップが生じる。このシステムコールは、デーモンプロセスがユーザアプリケーションプロセスに代わって仕事を完了したことをカーネルに指示する。この実施形態では、アサーションは、メッセージが処理されて、プロセスを降格できることをオペレーティングシステムに通知する。１つの実施形態では、オペレーティングシステムは、このデーモンの昇格のためにペンディング中アサーションの数をデクリメントする。この実施形態では、デーモンプロセスの重要度を昇格すべきであることを指示する他のアサーションがない場合には、昇格されたデーモンプロセス３１６の重要度がデフォールト重要度へ降格される。或いは又、このデーモンに対する他のペンディング中アサーションがある場合には、オペレーティングシステムは、このデーモンの昇格に対するペンディング中アサーションの数をデクリメントする。１つの実施形態では、デーモンプロセスの重要度が、デーモンプロセスのデフォールト重要度へ降格されるが、別の実施形態では、降格されたプロセスの重要度をデフォールト重要度より低くすることも高くすることもできる。１つの実施形態では、デフォールト重要度は、重要度が変更されないプロセスの重要度である。
【００４０】
例えば、１つの実施形態において、いつ好みのアプリケーションを起動するか及び移動装置のネットワーク設定をチェックするようにユーザがナビゲートするかの一例について考える。この例では、移動インターネットシェアデーモンは、デーモンプロセス３０６Ａにより表され、そして好みのアプリケーションは、ユーザアプリケーションプロセス３０４である。好みのアプリケーションは、パーソナルホットスポットサービスに関する状態情報を問合せするためにメッセージを移動インターネットシェアデーモン（例えば、デーモンプロセス３０６Ａ）へ送信する。移動インターネットシェアデーモンは、このメッセージを受け取ると、そのキャリアに対してテザリングが利用できるかどうか及びユーザがその使用について許可されていることを決定する。移動インターネットシェアデーモンは、その情報を好みのアプリケーションへ返送し、このアプリケーションは、パーソナルホットスポットサービスに対する適切な状態を表示する。
【００４１】
１つの実施形態において、移動インターネットシェアデーモンは、好みのアプリケーションがこのデーモンにメッセージを送信するときに実行される。この実施形態では、このデーモンのためのサービスポートは、移動インターネットシェアデーモンを伴う。好みのアプリケーションからメッセージが送信されるときには、カーネルは、ポートへメッセージをキューする部分として、メッセージがユーザアプリケーションからのものでありそして適応デーモンへ向けられることを通知する。カーネルは、アサーションをテークし、そしてこのデーモンが低重要度（例えば、背景重要度）で実行される場合には移動インターネットシェアデーモンを高重要度へ昇格させる。更に、メッセージは、そのメッセージがカーネルにアサーションを保持させたことを指示するためにマークされる。移動インターネットシェアデーモンは、このメッセージを受信すると、その特定のメッセージがカーネルによりアサーションを生じさせたかどうかチェックし、もしそうであれば、処理及び返事の後に、デーモンは、アサーションをドロップすることをカーネルに告げる。アサーションがドロップすると、他のアサーションがペンディングでない状態では、カーネルは、移動インターネットシェアデーモンをこのプロセスのデフォールト重要度（例えば、背景重要度）へ降格させる。
【００４２】
別の実施形態では、移動インターネットシェアデーモンが実行されず、このデーモンプロセスは、デーモンの１つのデフォールト重要度とは異なる重要度でオンデマンド起動される。例えば、１つの実施形態では、デーモン、上述した移動インターネットシェアデーモンについて考える。移動インターネットシェアデーモンが現在実行中でない場合には、移動インターネットシェアデーモンのサービスポートが起動デーモンと共に記憶される。このポートがメッセージ（例えば、イベントメッセージ）を有するとの通知を起動デーモンが得ると、起動デーモンは、スポーン(spawn)、即ち適応デーモンである移動インターネットシェアデーモンをスタートするプロセスを呼び出す。起動のための引数の１つとして、起動デーモンは、カーネルへの当該ポートにハンドルを与える。オペレーティングシステムカーネルは、ペンディング中メッセージがユーザアプリケーションプロセスからのデーモンサービスポートを含み、更に、デーモンプロセスを昇格させるアサーションを搬送するかどうか決定する。この形式のメッセージが存在する場合には、カーネルは、移動インターネットシェアデーモンの起動を昇格された重要度でスタートさせる。１つの実施形態では、昇格された重要度は、デフォールトである移動インターネットシェアデーモンの重要度より高い重要度であって、ユーザアプリケーションプロセスの重要度と同じ、それより高い又はそれより低い、の１つである。この実施形態では、カーネルは、そのときのプロセスにアサーションを保持する。デーモンのメッセージがアサーションを含まない場合には、移動インターネットシェアデーモンは、このプロセスのデフォールト重要度で起動される。例えば、１つの実施形態では、移動インターネットシェアデーモンは、背景重要度で起動される。
【００４３】
移動インターネットシェアデーモンプロセスの起動が完了すると、移動インターネットシェアデーモンは、起動デーモンとランデブーして、移動インターネットシェアデーモンへ転送されるサービスポートを得る。移動インターネットシェアデーモンは、メッセージを読み取り、そしてそのメッセージがアサーションを引き起こしたかどうかチェックし、アサーションは、カーネルによりマークされる。メッセージがアサーションを生じた場合には、移動インターネットシェアデーモンがメッセージの処理を完了しそしてメッセージに対する返事をするときに、移動インターネットシェアデーモンは、アサーションをドロップする。ペンディング中アサーションがプロセスにおいてドロップされると、移動インターネットシェアデーモンは、デフォールトプロセス重要度（例えば、背景重要度）へ戻る。
【００４４】
別の例として、ユーザが移動装置を使用してスタートすると、アプリケーションランチャーアプリケーションは、アイドルスリープを防止するためにパワーアサーションを保持するメッセージをパワーデーモンへ送信する。１つの実施形態では、パワーデーモンは、移動装置のバックライトがオンになるまでこのアサーションを保持する。この実施形態では、ユーザが装置をロックし、背景オーディオが再生されないときに、アプリケーションランチャーアプリケーションがパワーアサーションをドロップさせる。装置がある期間中使用されなかった後に、移動装置のバックライトがターンオフされる。アプリケーションランチャーアプリケーションは、パワーアサーションをドロップさせ、そしてカーネルが装置をアイドルスリープできるようにする。
【００４５】
この例では、パワーデーモンが適応デーモンであり、これは、アプリケーションランチャーアプリケーションのような高重要度プロセスからのメッセージに応答して昇格できるデフォールト重要度をパワーデーモンが有することを意味する。これは、前景アプリケーションアクティビティへの影響を減少することができる。例えば、１つの実施形態では、アプリケーションランチャーアプリケーションからのメッセージがパワーデーモンに到着するときに、パワーデーモンは、高重要度へブーストされ、そしてパワーデーモンによるメッセージの処理が完了すると、パワーデーモンは、パワーデーモンのデフォールト重要度（例えば、背景重要度）へドロップされる。この例は、適応デーモンがメッセージ処理時間中に通常の重要度で実行されて、前景アプリケーションに不必要に影響を及ぼさない場合を示している。この例は、更に、入力／出力、処理ユニット、等の著しく多くのリソースを消費したり競合したりせずに前景アプリケーションの応答性を改善するために適応デーモンがどのように役立つかも示す。更に、別のデーモンが、パワーデーモンの重要度を昇格することなくパワーデーモンへ要求を発することができる。このような他のデーモン要求は、パワーデーモンのデフォールト重要性で処理される。
【００４６】
更に別の例及び実施形態では、カーネルは、通信チャンネルの受信端（ポート）の所有権をプロセス間で移送する能力を有する。例えば、１つの実施形態では、この移送は、適応デーモンが起動中デーモンからサービスポートの所有権を要求するときに生じる。別の例及び別の実施形態では、適応デーモンＡは、ポートＰに対する受信権利を有する。この例では、ポートＰにおいてエンキューされるＮ個の重要度寄贈(donating)メッセージがあり、従って、デーモンは、Ｎ個の重要度寄贈／ブースト基準を有する。適応デーモンがＮ個のメッセージを受信し、それらを処理し、そして各１つの後にアサーションをドロップする場合には、適応デーモンは、通常の適応重要度に復帰する。しかし、このケース／例では、Ｎ個のメッセージ全部を受信するのではなく、適応デーモンは、異なるポートＱに向けられるメッセージのコンテンツにおいてポートＰの受信端を送信することによりそのポートの受信端の所有権を別のプロセスＢへ移行する。このケースでは、適応デーモンＡは、Ｎ個のブーストを失い、そしてプロセスＢ（これも適応性であれば）は、受信権移送メッセージがエンキューされたときにＮ個のブーストを得る。
【００４７】
次いで、適応デーモンＢが、ポートＰの受信端を含むメッセージを受け取る前に、ポートＱの受信端を他のプロセスへ移送する場合には、適応デーモンＢは、ポートＱにおける他のメッセージに対する重要度寄贈アサーションの数、及びポートＰに関連したＮ個の重要度アサーションを移送しなければならない。このように、重要度寄贈アカウンティングは、これらポートのいずれかにおいてエンキューされるいずれかのメッセージの受信権利コンテンツに基づいて繰り返される。
【００４８】
別の例及び実施形態では、適応デーモンＡは、それがアイドル状態であることを決定すると、より多くのシステムリソースをセーブするために退出することを選択する。それ又はこのデーモンはクラッシュするだけかもしれない。いずれの場合も、ポートＰの受信権は、起動中デーモンへ移送されて戻される（例えば、オペレーティングシステムのプロセス間通信システムにおける内蔵バックアップシステムを経て）。この退出／クラッシュの直前に重要度寄贈メッセージがエンキューされた場合には、適応デーモンＡは、実行を停止するときに重要度寄贈をもつ。この例では、カーネルは、適応デーモンのブーストが永久的に失われるのを希望しない。従って、起動中デーモンがポートＰの受信端を得ると、起動中デーモンは、エンキューされたメッセージが既にあることを検出し、そして適応デーモンＡの次のインスタンスを再起動する（例えば、Ａ２と称される）。適応デーモンＡ２は、ポートが起動中デーモンへ返送された後に到達する重要度寄贈メッセージの量によるだけでなく、そのポートに既にエンキューされたメッセージによってもブーストされる必要がある。この「ポート移動による重要度更新」メカニズムは、これを生じさせる。
【００４９】
図４は、デーモンにより受信されるメッセージに基づきデーモンプロセス重要度を昇格するのに使用されるメッセージを送信するためのカーネルのプロセス４００の一実施形態のフローチャートである。このプロセスは、ハードウェア（例えば、回路、専用ロジック、プログラム可能なロジック、マイクロコード、等）、ソフトウェア（例えば、ハードウェアシミュレーションを遂行するために処理装置で実行されるインストラクション）、又はその組み合わせを含む処理ロジックにより遂行される。１つの実施形態では、プロセス４００は、図３Ａ又は３Ｂのカーネル３２０のようなカーネルによって遂行される。
【００５０】
図４において、プロセス４００は、ブロック４０２において、メッセージを送信する現在プロセスが重要度ドナーであるかどうか決定することにより開始する。１つの実施形態では、重要度ドナーは、ユーザアプリケーションプロセスであるプロセスで、ユーザは、アクションの完了を待機する。別の実施形態では、重要度ドナーは、ユーザアプリケーションプロセスに代わって仕事を行うデーモン又はサービスである。この実施形態では、デーモンは、昇格された重要度を有する。１つの実施形態では、重要度ドナーは、前景において実行されるユーザアプリケーションプロセスである。例えば、１つの実施形態において、重要度プロセスは、図３Ａにおいて上述したユーザアプリケーションプロセス３０４である。現在プロセスが重要度ドナーでない場合には、実行がブロック４１４へ進む。
【００５１】
現在プロセスが重要度ドナーである場合には、ブロック４０４において、プロセス４００は、メッセージを受信するターゲットプロセスが適応デーモンプロセスであるかどうか決定する。ターゲットプロセスが適応デーモンプロセスでない場合には、実行がブロック４１２へ進む。ターゲットプロセスが重要度受取者である場合には、プロセス４００は、ブロック４０６において、メッセージを重要度搬送とマークし、そしてターゲットプロセスにおいて「重要度アサーションアカウント」をインクリメントする。１つの実施形態では、「重要度アサーションカウント」をインクリメントすることにより、プロセス４００は、ターゲットプロセスにおいてアサーションをテークする。このアサーションカウントは、アサーションの重要度を降格するかどうか決定するために後でカーネルにより使用される。この実施形態では、アサーションは、ターゲットプロセスによるメッセージの処理に関連して後でドロップされる。アサーションをドロップすることは、図６において以下で更に述べる。例えば、１つの実施形態において、ユーザがネットワーク状態を知りたいときに、ユーザ好みアプリケーションプロセスは、ネットワークホットスポットサービスの状態に関するメッセージを移動インターネットシェアデーモンへ送信する。以上の説明について、好みのアプリケーションは、ユーザアプリケーションプロセスであり、そして移動インターネットシェアデーモンは、適応デーモンであり、ここで、移動インターネットシェアデーモンへのメッセージは、重要度搬送とマークされ、そして移動インターネットシェアデーモンの重要度アサーションカウントがインクリメントされる。
【００５２】
ブロック４０８において、プロセス４００は、ターゲットプロセスが低い重要度を有するかどうか決定する。１つの実施形態において、プロセス４００は、ターゲットプロセスが現在プロセスより重要度が低いかどうか決定する。例えば、１つの実施形態において、プロセス４００は、現在プロセス及びターゲットプロセスの重要度を比較する。
【００５３】
プロセス４００は、ブロック４１０において、ターゲットプロセスを昇格された重要度に変更させる。１つの実施形態において、プロセス４００は、ターゲットプロセスを現在プロセスの重要度へ変更させる。この実施形態では、プロセス４００は、ポートキューにおいてメッセージをエンキューするとき又はその前であって且つターゲットプロセスがメッセージ処理のためのメッセージをデキューする前にターゲットプロセス重要度を昇格させる。ターゲットプロセスがメッセージをデキューする前にターゲットプロセスを昇格させることにより、ターゲットプロセスは、より高い重要度でメッセージをデキューし処理することができる。例えば、１つの実施形態では、現在プロセスは、前景重要度で実行することができ、そしてプロセス４００は、ターゲットプロセス重要度を前景重要度へ変更する。別の実施形態では、プロセス４００は、ターゲットプロセス重要度を、現在プロセスの重要度とは異なる値に変更する。１つの実施形態では、プロセス４００は、図３Ａにおいて上述したターゲットプロセスの重要度を変更する。実行は、ブロック４１２へと続く。
【００５４】
前記ブロック４０２で決定された現在プロセスが重要度ドナーでない場合には、プロセスは、ブロック４１４において、メッセージポートがサービスポートであるかどうか決定する。１つの実施形態において、現在プロセスが重要度ドナーでない場合には、現在プロセスは、オンデマンドで起動されるべきデーモンに対するメッセージを取り扱う起動デーモンである。この実施形態では、サービスポートは、そのサービスのためのターゲットプロセスへメッセージを通信するのに使用されるポートである。メッセージポートがサービスポートである場合には、ブロック４１６において、プロセス４００は、メッセージを、重要度を搬送するものとしてマークし、そしてサービスポートにおいて「重要度アサーションアカウント」をインクリメントする。１つの実施形態では、サービスポートにおいて「重要度アサーションカウント」をインクリメントすることにより、プロセス４００は、ポートが適応デーモン又は別の重要度ドナーによりオンデマンドで起動されたことをマークする。実行は、ブロック４１２へ進む。メッセージポートがサービスポートでない場合には、実行がブロック４１２へ進む。
【００５５】
ブロック４１２において、プロセス４００はポート上でメッセージをキューする。１つの実施形態では、ポートは、ターゲットプロセスに使用されるポートである。１つの実施形態では、Ｍａｃｈプロセス間通信ポートがサポートされ、他の実施形態では、他の形式のポート（例えば、ローカルドメインソケット、パイプ、等）、他の形式のＩＰＣ、等がサポートされる。
【００５６】
図４は、デーモンプロセスの重要度を昇格するのに使用できるメッセージを送信するためにカーネルにより使用されるプロセスを示している。図５は、デーモンに向けられたメッセージに基づいてデーモンの重要度を昇格するのに使用されるメッセージを受信するためのカーネルのプロセス５００の一実施形態のフローチャートである。このプロセスは、ハードウェア（例えば、回路、専用ロジック、プログラム可能なロジック、マイクロコード、等）、ソフトウェア（例えば、ハードウェアシミュレーションを遂行するために処理装置で実行されるインストラクション）、又はその組み合わせにより遂行される。１つの実施形態では、プロセス５００は、図３Ａ又は３Ｂのカーネル３２０のようなカーネルにより遂行される。
【００５７】
図５では、プロセス５００は、ブロック５０２において、現在プロセスに対してキューされたメッセージがあるかどうか決定することにより開始する。１つの実施形態では、プロセス５００は、図３Ａについて上述したデーモンプロセスのような現在プロセスに関連したポートに対してメッセージがキューされるかどうか決定する。１つの実施形態では、現在プロセスは、適応デーモンである。キューされたメッセージがない場合には、実行プロセス５００が終了となる。
【００５８】
メッセージがある場合には、プロセス５００は、ブロック５０４において、ポートからメッセージをデキューする。１つの実施形態では、プロセス５００は、そのメッセージをポートキューから除去する。プロセス５００は、ブロック５０６において、メッセージが重要度についてマークされているかどうか決定する。１つの実施形態では、プロセス５００は、メッセージが重要度についてマークされているかどうか決定するためにメッセージを検査する。例えば、１つの実施形態では、メッセージは、重要度ビットを含み、この重要度ビットがセットされた場合には、メッセージが重要度についてマークされている。メッセージが重要度についてマークされていない場合には、実行がブロック５１２へ進む。
【００５９】
メッセージが重要度についてマークされている場合には、プロセス５００は、ブロック５０８において、現在プロセスが適応デーモンプロセスであるかどうか決定する。現在プロセスが適応デーモンプロセスでない場合には、プロセス５００は、ブロック５１０において、メッセージが重要度を保持することを指示するフラグを除去する。１つの実施形態では、プロセス５００は、メッセージの重要度ビットをアンセットする。更に、プロセス５００は、ブロック５１０において、ポート重要度カウントをデクリメントする。この実施形態では、ポート重要度カウントは、重要度ドナープロセスからの未処理メッセージの数を指示するカウンタである。実行は、ブロック５１２へ進む。現在プロセスが適応プロセスである場合には、実行は、ブロック５１２へ進む。
【００６０】
ブロック５１２において、プロセス５００は、メッセージをユーザバッファにコピーする。１つの実施形態では、メッセージをユーザバッファにコピーすることにより、現在プロセスは、メッセージを処理することができる。１つの実施形態では、現在プロセスは、図６について述べるようにメッセージを処理するためのプロセス６００を遂行する。
【００６１】
図６は、デーモンの重要度を、そのデーモンにより受け取られるメッセージに基づいて昇格するのに使用されるメッセージを受信するための適応デーモンのプロセス６００の一実施形態のフローチャートである。このプロセスは、ハードウェア（例えば、回路、専用ロジック、プログラム可能なロジック、マイクロコード、等）、ソフトウェア（例えば、ハードウェアシミュレーションを遂行するために処理装置で実行されるインストラクション）、又はその組み合わせを含む処理ロジックにより遂行される。１つの実施形態において、プロセス６００は、図３Ａ又は３Ｂのデーモン３０６／３１６のような適応デーモンにより遂行される。図６において、プロセス６００は、メッセージが受信されたかどうか決定することにより開始する。１つの実施形態では、プロセス６００は、デーモンプロセスにより使用されるユーザバッファにメッセージがあるかどうか決定する。プロセス６００で処理すべきメッセージがない場合には、実行が終了となる。
【００６２】
プロセス６００で処理すべきメッセージがある場合には、プロセス６００は、ブロック６０４において、メッセージが重要度についてマークされているかどうか決定する。１つの実施形態において、プロセス６００は、上述した重要度ビットのような重要度フラグがセットされたかどうかチェックする。メッセージが重要度についてマークされていない場合には、実行は、ブロック６０８へ進む。メッセージが重要度についてマークされている場合には、プロセス６００は、ブロック６０６において、ローカル変数を非ゼロ値にセットし、ここで、非ゼロ値は、メッセージが重要であるかどうか指示する。
【００６３】
プロセス６００は、ブロック６０８において、メッセージを処理する。１つの実施形態では、プロセス６００は、要求された情報を収集するためのアクションを遂行する。例えば、１つの実施形態では、プロセス６００は、移動インターネットシェアサービスの状態を決定し、電力管理を遂行し、サーチを遂行し、インストール済アプリケーションのリストを返送し、等を行うことができる。プロセス６００は、ブロック６１０において、要求された情報で送信者に返事を送信する。１つの実施形態では、プロセス６００は、図３Ｂについて上述したようにユーザアプリケーションプロセスに返事を送信する。
【００６４】
ブロック６１２において、プロセス６００は、メッセージが重要度についてマークされたかどうか決定する。１つの実施形態では、プロセス６００は、重要度フラグが真にセットされたかどうかチェックする。メッセージが重要度についてマークされた場合には、ブロック６１４において、プロセス６００は、重要度アサーションをドロップさせるためにカーネルコールを発信する。重要度フラグがセットされず、メッセージが重要度についてマークされた場合には、実行が終了となる。
【００６５】
図６において、プロセス６００は、重要度アサーションをドロップさせるコールを発信する。重要度アサーションをドロップさせることは、デーモンプロセスの重要度をデーモンプロセスのデフォールト重要度に戻すべきかどうか決定するためにカーネルにより使用される。図７は、重要度アサーションをドロップさせるためのカーネルのプロセス７００の一実施形態のフローチャートである。このプロセスは、ハードウェア（例えば、回路、専用ロジック、プログラム可能なロジック、マイクロコード、等）、ソフトウェア（例えば、ハードウェアシミュレーションを遂行するために処理装置で実行されるインストラクション）、又はその組み合わせを含む処理ロジックにより遂行される。１つの実施形態において、プロセス７００は、図３Ａ又は３Ｂのカーネル３２０のようなカーネルにより遂行される。図７では、プロセス７００は、ブロック７０２において、現在プロセスが適応デーモンであるかどうか決定することにより開始する。現在プロセスが適応デーモンでない場合には、実行が終了となる。
【００６６】
プロセスが適応デーモンである場合には、プロセス７００は、ブロック７０４において現在プロセスにおける「重要度アサーションカウント」をデクリメントする。上述したように、重要度アサーションカウントは、このプロセスに対して上昇された現在アサーションの数を追跡する。プロセス７００は、ブロック７０６において、重要度アサーションカウントがゼロであるかどうか決定する。重要度アサーションカウントがゼロであることは、現在プロセスに対して上昇された現在アサーションがないことを意味する。重要度アサーションカウントがゼロである場合には、プロセス７００は、ブロック７０８において、現在プロセスをデフォールト重要度に降格させる。ブロック７０６において、重要度カウントがゼロでない場合には、実行が終了となる。
【００６７】
図８は、オンデマンドでサービスを起動させるプロセス８００の一実施形態のフローチャートである。このプロセスは、ハードウェア（例えば、回路、専用ロジック、プログラム可能なロジック、マイクロコード、等）、ソフトウェア（例えば、ハードウェアシミュレーションを遂行するために処理装置で実行されるインストラクション）、又はその組み合わせを含む処理ロジックにより遂行される。１つの実施形態において、プロセス８００は、図３Ａ又は３Ｂの起動サービス３２６のような起動サービスにより遂行される。図８では、プロセス８００は、ブロック８０２において、プロセス８００で処理すべきペンディングイベントがあるかどうか決定することにより開始する。ペンディングイベントがない場合には、プロセス８００は、ブロック８０２に戻り、他のペンディング事象を待機する。
【００６８】
ペンディングイベントがある場合には、ブロック８０４において、プロセス８００は、メッセージサービスを生成すべきことをイベントが指示するかどうか決定する。１つの実施形態では、メッセージサービスは、デーモン及びユーザアプリケーションの両方により使用されて、メッセージ経路／接続の確立、メッセージの交換、及びそれらの間の重要度寄贈プロパティを管理するためのサービスのセット（例えば、ライブラリー）である。これは、ユーザアプリケーションとデーモンとの間で情報を交換するためのアブストラクションを与え、そして更に、重要度寄贈をシームレスに取り扱う。例えば、１つの実施形態では、メッセージサービスは、サービス要求を取り扱い及び満足させるためにメッセージを送信及び受信することのできるサーチデーモンのようなデーモンである。メッセージサービスを生成すべきであることをイベントが指示する場合には、ブロック８０６において、プロセス８００は、メッセージサービスのためのサービスポートを生成し、そしてそのサービスポートをウオッチリストに追加する。１つの実施形態では、サービスポートを生成し、そしてそのポートをウオッチリストに追加することにより、プロセス８００は、生成されたポートにおいてこのサービスに対してメッセージが到達するかどうか決定することができる。実行は、ブロック８０２へ進み、プロセス８００は、処理すべき別の事象を待機する。
【００６９】
イベントが、メッセージサービスを生成すべきことを示すものでない場合には、ブロック８０８において、プロセス８００は、起動すべきデーモンに対してサービスポートにメッセージがあるかどうか決定する。そのようなメッセージがある場合には、ブロック８１０において、プロセス８００は、デーモンを起動して、そのデーモンにサービスポートを関連付けるためにカーネルにコールする。１つの実施形態では、プロセス８００は、このサービスポートにとってどちらが適当なデーモンであるか決定し、そのデーモンを起動するためにカーネルにコールする。更に、プロセス８００は、その起動されたデーモンに、メッセージサービスポートを関連させる。この実施形態では、カーネルは、サービスポートを検査し、そしてそのポートが重要度メッセージを有するかどうか決定する。重要度メッセージがあることをカーネルが決定すると、カーネルは、デーモンを高い重要度で起動する。サービスポートに重要度メッセージがない場合には、カーネルは、そのデーモンのデフォールト重要度でデーモンを起動する。更に、カーネルは、デーモン／サービスポートの関連性を知っているので、デーモンが通常の／低い重要度で起動され、そしてその後、重要度メッセージがこのサービスポートにおいてキューされた場合には、カーネルは、重要度メッセージをキューするときに、デーモンを高重要度に昇格させることができる。実行は、ブロック８０２へ進み、プロセス８００は、処理すべき別の事象を待機する。
【００７０】
ブロック８０８において、サービスポートにメッセージがない場合には、プロセス８００は、ブロック８１２において、イベントが適応デーモンの起動後にそのデーモンのチェックインに対するものであるかどうか決定する。もしそうであれば、ブロック８１４において、プロセス８００は、サービスポートを適応デーモンへ転送する。１つの実施形態では、これは、適応デーモンがそのポートにおいてメッセージを送信及び受信できるようにする。実行は、ブロック８０２へ進み、プロセス８００は、処理すべき別の事象を待機する。イベントが適応デーモンチェックインでない場合には、ブロック８１６において、プロセス８００は、他のイベントを処理する。
【００７１】
上述したように、デーモンプロセスの重要度は、そのデーモンに対してエンキューされる重要度ドナーからのメッセージ、又は昇格された重要度で起動されるデーモンをトリガーする重要度ドナーからのメッセージに基づき、実行中デーモンに対して昇格することができる。デーモンの重要度が昇格されたとき、カーネルは、そのデーモンに対するアサーションをテークする。このデーモンプロセスは、ペンディングアサーションがゼロにドロップするときにその重要度を降格させる。アサーションは、重要度でマークされたメッセージをデーモンが処理するのに応答してドロップされる。図９は、適応デーモンプロセスの重要度を昇格及び降格するシステム９００の一実施形態のブロック図である。図９において、システム９００は、ユーザアプリケーションプロセス９０２、適応デーモンプロセス９０４、及びカーネル９０６を含む。１つの実施形態では、ユーザアプリケーションプロセス９０２は、メッセージサービス９４０を使用して、適応デーモンプロセス９０４とでメッセージを送信及び受信する。この実施形態では、メッセージサービス９４０は、ユーザアプリケーションプロセス９０２と適応デーモンプロセス９０６との間でのメッセージの通信を管理するためにユーザアプリケーションプロセス９０２及び適応デーモンプロセス９０６にわたって作用するサービスである。１つの実施形態では、メッセージサービス９４０は、同期及び非同期メッセージ通信をサポートする。
【００７２】
１つの実施形態において、ユーザアプリケーションプロセス９０４は、メッセージサービス９４０を使用して、メッセージを適応デーモンプロセス９０６へ送信する。例えば、１つの実施形態では、ユーザアプリケーションプロセス９０２は、パワーアサーションを保持してアイドルスリープを防止し、サーチを遂行し、等々のために、パーソナルホットスポットサービスの状態を要求する。この実施形態では、ユーザアプリケーションプロセス９０２は、ユーザアプリケーション接続９１８を使用してメッセージ９２０を生成することによりメッセージ９２２を送信する。このメッセージ９２０は、カーネル９０６へ送られ、カーネルは、ｋｅｒｎｅｌ  ｍｓｇ＿ｓｅｎｄを使用して、適応デーモンプロセス９０４に対してポートキュー９１２にメッセージ９２０をエンキューする。１つの実施形態では、ポートキューは、適応デーモンプロセス９０４と通信されるメッセージをキューするためにカーネル９０６により使用されるキューのセットである。１つの実施形態において、カーネル９０６のｋｅｒｎｅｌ  ｍｓｇ＿ｓｅｎｄ９１４機能は、メッセージに対して重要度９０８をセットし、そして適応デーモンプロセス９０４に対してアサーション９１０をテークする。例えば、１つの実施形態では、カーネル９０６は、図４に示すように、メッセージ重要度のセット及びアサーションのテークを遂行する。
【００７３】
ポートキュー９１２においてメッセージがエンキューされた状態で、カーネル９０６は、機能ｋｅｒｎｅｌ  ｍｓｇ＿ｒｅｃｖ９１６を遂行して、ポートキュー９１２からメッセージをデキューし、そのメッセージを適応デーモンプロセス９０４のためのユーザバッファへコピーする。１つの実施形態では、カーネル９０６は、図５に示すように、メッセージをデキューし、コピーする。
【００７４】
適応デーモンプロセス９０４は、デーモン接続９３２を経てメッセージ９２８をメッセージオブジェクト９３８として受信する。１つの実施形態では、適応デーモンプロセス９０４は、メッセージ９２８に対して応答しない。この実施形態では、メッセージサービス９４０は、メッセージオブジェクト９３８を破壊する。メッセージオブジェクトの破壊９３４に応答して、メッセージサービス９４０は、カーネルへのアサーション９２６をドロップさせる。アサーションをドロップさせることで、カーネル９０６は、適応デーモンプロセス９０４が適応デーモンプロセス９０４の重要度を降格すべきかどうか決定する。１つの実施形態では、カーネル９０６は、図６について上述したように適応デーモンプロセス９０４が降格されるべきかどうか決定する。
【００７５】
別の実施形態では、メッセージサービスは、受信したメッセージ９２８に対する返事を準備する。この実施形態では、メッセージサービス９４０は、メッセージオブジェクト９３８に対する返事オブジェクト９３６を生成する。返事オブジェクト９３６を生成する際に、メッセージオブジェクト９３８に含まれた重要度が返事オブジェクト９３６へ転送される。メッセージサービス９４０は、デーモン接続９３２及びメッセージ９２８を経て、カーネル９０６を通して、ユーザアプリケーションプロセス９０４へ返事を送信する。更に、返事を送信することで、メッセージサービス９４０は、返事オブジェクト９３０を破壊する。返事オブジェクトは、重要度セットを有しているので、返事オブジェクトを破壊すると、メッセージサービス９４０がカーネルへのアサーション９２６をドロップさせる。アサーションをドロップすることで、カーネル９０６は、適応デーモンプロセス９０４が適応デーモンプロセス９０４の重要度を降格すべきかどうか決定する。１つの実施形態では、カーネル９０６は、図６について上述したように、適応デーモンプロセス９０４が降格されるべきかどうか決定する。更に、返事は、メッセージ８２８を使用し、ポートキュー９１２を経て、メッセージサービス９４０のｍｓｇ＿ｒｅｃｖ機能を使用して、ユーザアプリケーションプロセス９０２へ送られる。この実施形態では、メッセージサービスは、メッセージ９２０及びユーザアプリケーション接続９１８を使用して、ユーザアプリケーションプロセス９０２へ返事を配送する。
【００７６】
上述したように、デーモンプロセスの重要度は、ユーザアプリケーションプロセスからのメッセージの受信に基づいて変更することができる。別の実施形態では、第２のデーモンプロセスは、別のデーモンがユーザアプリケーションプロセスからメッセージを送信するのに応答して重要度を変化させることができる。図１０は、第１デーモンにより受信されたメッセージに基づき第２デーモンの重要度を昇格させるプロセス１０００の１つの実施形態のフローチャートである。このプロセスは、ハードウェア（例えば、回路、専用ロジック、プログラム可能なロジック、マイクロコード、等）、ソフトウェア（例えば、ハードウェアシミュレーションを遂行するために処理装置で実行されるインストラクション）、又はその組み合わせを含む処理ロジックにより遂行される。１つの実施形態では、図１１のカーネル１１３２のようなカーネルがプロセス１０００を遂行する。１つの実施形態では、ユーザアプリケーションプロセスから要求を受け取りそして別のデーモンから他の情報を要求することのできるデーモンがプロセス１０００を遂行する。例えば、１つの実施形態では、プロセス１０００は、デーモン１１０６Ａ／１１１６のメッセージ処理モジュール１１２８により遂行される。図１０では、プロセス１０００は、ブロック１００２において、第１メッセージを受信することにより開始する。１つの実施形態において、このメッセージは、ユーザアプリケーションプロセスからのメッセージのような、重要度を保持するメッセージである。別の実施形態では、メッセージは、重要度フラグセットでマークされる。例えば、１つの実施形態では、メッセージは、図９について上述したように重要度ビットセットを有する。更に別の実施形態では、メッセージは、別のデーモンにより送信され、カーネルは、メッセージを、重要度を保持するものとしてマークする。この実施形態では、デーモンからのメッセージを、重要度を保持するものとしてマークすることにより、デーモンプロセスプライオリティのストリングを昇格及び降格することができる。１つの実施形態では、デーモンによりこのメッセージを受信することで、図３Ａ、４、及び１０について述べたように、このデーモンのプロセス重要度を昇格させる。
【００７７】
ブロック１００４において、プロセス１０００は、このメッセージの返事が別のデーモンからの情報を使用するかどうか決定する。例えば、１つの実施形態では、サーチデーモンは、サーチ要求を受け取る。このサーチデーモンは、サーチ要求を満足させるために、移動装置にインストールされたアプリケーションのリストを決定する必要がある。サーチデーモンは、このリストを得るための要求をインストールデーモンに発信する。プロセス１０００が別のデーモンからの情報を使用しない場合には、実行がブロック１０１０へ進む。
【００７８】
プロセス１０００が別のデーモンからの情報を使用する場合には、ブロック１００６において、プロセス１０００は、その別のデーモンへ第２のメッセージを送信し、カーネルは、そのメッセージを、重要度を保持するものとマークする。更に、カーネルは、他のデーモンの重要度を昇格させ、このデーモンのためのアサーションをテークし、そして前記他のデーモンについてこのメッセージをキューする。ブロック１００８において、プロセス１０００は、第２メッセージに対する返事を受け取る。プロセス１０００は、ブロック１０１０において、第１メッセージに対する返事を準備し、そして重要度で返事メッセージをマークする。更に、プロセス１０００は、ブロック１００２において、第１メッセージを受け取ったデーモンのアサーションをドロップさせる。ブロック１０１２において、プロセス１０００は、第１メッセージを送信したプロセスに返事を返送する。１つの実施形態では、このメッセージを送信することにより、プロセス１０００を遂行するデーモンの昇格された重要度が降格される。
【００７９】
図１１は、第１のデーモンプロセス１１０６Ａが第２のデーモンプロセス１１０６Ｂと通信しそして第２のデーモンプロセス１１０６Ｂの重要度が昇格される移動装置１１００の一実施形態のブロック図である。図１１において、移動装置１１００は、ユーザアプリケーションプロセス１１０４及びデーモンプロセス１１０６Ａ−Ｎの実行を管理するオペレーティングシステム１１０２を含む。更に、ユーザアプリケーションプロセス１１０４は、高重要度で実行され、そしてデーモンプロセス１１０６Ａ−Ｎは、最初、低重要度で実行される。ユーザアプリケーションプロセス１１０４がデーモンプロセス（例えば、デーモンプロセス１１０６Ａ）からのサービスを要求するとき、このデーモンプロセスは、このサービス要求を処理するために高い重要度へ昇格される。１つの実施形態では、このデーモン１１０６Ａは、適応デーモンと称される。例えば、１つの実施形態では、ユーザアプリケーションプロセス１１０４は、メッセージ１１１２を経てデーモン１１０６Ａにサービス要求を発する。デーモン１１０６Ａがメッセージを受け取るのに応答して、デーモンの重要度が、より高い重要度、即ちデーモン１１１６へ昇格される。１つの実施形態において、昇格されたデーモン１１１６の重要度は、要求側ユーザアプリケーションプロセス１１０４と同じであるが、別の実施形態では、デーモン１１１６の昇格されたプロセスは、要求側ユーザアプリケーションプロセス１１０４の重要度より高くても低くてもよい。
【００８０】
デーモンＡのプロセス１１１６がメッセージを受け取りそして重要度が昇格されるのに応答して、デーモンＡのプロセスは、別のメッセージ１１３６をデーモンＢのプロセス１１０６Ｂへ送る。このメッセージ１１３６は、デーモンＡに送られる同じメッセージでもよいし、異なるメッセージでもよい。デーモン１１０６Ｂがメッセージ１１３６を受け取るのに応答して、デーモンＢの重要度は、より高い重要度、即ちデーモンＢ  １１２０に昇格される。１つの実施形態では、昇格されたデーモンＢ  １１２０の重要度が、最初の要求側ユーザアプリケーションプロセス１１０４と同じであるが、別の実施形態では、デーモン１１２０の昇格されたプロセスが、要求側ユーザアプリケーションプロセス１１０４の重要度より高くても低くてもよい。
【００８１】
この実施形態では、昇格されたデーモンＢ  １１２０は、第２のメッセージを処理し、そして返事をデーモンＡ  １１１６へ送る。更に、デーモンＢプロセスの重要度は、デーモンＢ  １１０６Ｂの重要度へ降格される。１つの実施形態では、デーモンプロセスＢ  １１２０は、アサーションをテークし、そしてカーネルは、デーモンＢプロセス１１２０の重要度を降格させる。返事１１２２を受け取るのに応答して、デーモンＡは、初期メッセージ１１１２に対する返事を形成し、そしてそのメッセージをユーザアプリケーションプロセス１１０４へ送る。更に、デーモンＡプロセス１１１６の重要度は、このプロセスのデフォールト重要度へ降格される。１つの実施形態では、オペレーティングシステムカーネル１１３２は、デーモンプロセスの昇格及び降格を取り扱う。別の実施形態では、オペレーティングシステムカーネル１１３２は、メッセージサービス１１３４を使用してデーモンプロセスの昇格及び降格を取り扱う。この実施形態では、プロセスマネージメント１１３４は、ユーザアプリケーションプロセス１１０４と、デーモンプロセス１１０６Ａ／１１１６と、デーモンプロセス１１０６Ｂ／１１２０との間でのメッセージの送信及び受信を取り扱う。これらのプロセス間でのメッセージの通過を取り扱うことにより、プロセスマネージメント１１３２は、デーモンプロセスの昇格及び降格を管理することができる。
【００８２】
例えば、１つの実施形態では、サーチデーモンを使用してサーチを行う例について考える。この例では、サーチデーモンは、ユーザアプリケーションプロセスからサーチ要求を受け取る結果としてサーチデーモンプロセスの重要度を昇格させる。サーチ要求メッセージを受け取るのに応答して、サーチデーモンは、移動装置におけるインストール済アプリケーションのリストを得るために第２のメッセージをインストールデーモンへ送る。重要度の昇格それ自体を取得したサーチデーモンは、インストール済アプリケーションのリストのための第２メッセージをインストールデーモンへ送ることによりこの重要度を寄贈する。この例では、インストールデーモンは、サーチデーモンから第２メッセージを受け取った際にその重要度を昇格させる。更に、インストールデーモンの重要度は、インストールデーモンがサーチデーモンに返事を送る際にインストールデーモンのデフォールト重要度へ降格される。１つの実施形態では、メッセージの取り扱い及びデーモンプロセスの昇格／降格は、上述したメッセージサービス１０３４のようなメッセージサービスによって取り扱われる。
【００８３】
図１２は、プロセス間でのメッセージの送信及び受信を管理するためのプロセスマネージメントモジュール３２２である。１つの実施形態において、プロセスマネージメントモジュール３２２は、図３Ａ−Ｂのカーネル３２０及び／又は図１０のカーネル１０３２のような、送信及び受信メッセージを容易にするためのカーネルにより使用される。１つの実施形態では、プロセスマネージメントモジュール３２２は、メッセージ送信モジュール１２０２、メッセージ受信モジュール１２０４、及びドロップアサーション重要度モジュール１２０６を含む。この例では、メッセージ送信モジュール１２０２は、図４について上述したメッセージを送信する。メッセージ受信モジュール１２０４は、図５について上述したように受信を行う。ドロップアサーション重要度モジュール１２０６は、図６について上述したようにアサーションをドロップさせる。
【００８４】
図１３は、デーモンに向けられたメッセージに基づきデーモンの重要度を昇格するのに使用されるメッセージを送信するためのメッセージ送信モジュール１２０２である。１つの実施形態では、メッセージ送信モジュール１２０２は、プロセス重要度ドナーモジュール１３０２、プロセス重要度受信モジュール１３０４、マークメッセージモジュール１３０６、プロセス低重要度モジュール１３０８、昇格プロセスモジュール１３１０、及びキューメッセージモジュール１３１２を含む。１つの実施形態では、プロセス重要度ドナーモジュール１３０２は、図４のブロック４０２で上述したように、現在プロセスが重要度ドナーであるかどうか決定する。プロセス重要度受信モジュール１３０４は、図４のブロック４０４で上述したように、ターゲットプロセスが重要度受取者であるかどうか決定する。マークメッセージモジュール１３０６は、図４のブロック４０６で上述したように、メッセージをマークし、そして重要度アサーションカウントをインクリメントする。プロセス低重要度モジュール１３０８は、図４のブロック４０８で上述したように、ターゲットプロセスが低重要度をもつかどうか決定する。昇格プロセスモジュール１３１０は、図４のブロック４１０で上述したように、ターゲットプロセス重要度を変更する。キューメッセージモジュール１３１２は、図４のブロック４１３で上述したように、ポートにおいてメッセージをキューする。
【００８５】
図１４は、デーモンに向けられたメッセージに基づいてデーモン重要度を昇格するのに使用されるメッセージを受信するためのメッセージ受信モジュール１２０４である。１つの実施形態では、メッセージ受信モジュール１２０４は、キューメッセージモジュール１４０２、デキューメッセージモジュール１４０４、メッセージマークモジュール１４０６、プロセス重要度受信モジュール１４０８、除去フラグモジュール１４１０、及びコピーメッセージモジュール１４１２を備えている。１つの実施形態において、キューメッセージモジュール１４０２は、図５のブロック５０２で上述したように、キューメッセージがあるかどうか決定する。デキューメッセージモジュール１４０４は、図５のブロック５０４で上述したように、ポートからメッセージをデキューする。メッセージマークモジュール１４０６は、図５のブロック５０６で上述したように、メッセージが重要度についてマークされるかどうか決定する。プロセス重要度受信モジュール１４０８は、図５のブロック５０８で上述したように、現在プロセスが適応デーモンプロセスであるかどうか決定する。除去フラグモジュール１４１０は、図５のブロック５１０で上述したように、フラグを除去し、そして重要度カウントをデクリメントする。コピーメッセージモジュール１４１２は、図５のブロック５１２で上述したように、ユーザバッファへメッセージをコピーする。
【００８６】
図１５は、デーモン重要度を昇格するために使用されるメッセージを受け取るデーモンｍｓｇ＿ｒｅｃｖモジュール３２４である。１つの実施形態において、デーモンｍｓｇ＿ｒｅｃｖモジュール３２４は、メッセージ受信モジュール１５０２、メッセージマークモジュール１５０４、セットメッセージ重要度モジュール１５０６、プロセスメッセージモジュール１５０８、メッセージ返事モジュール、重要度メッセージモジュール、及びドロップ重要度モジュール１５１４を備えている。この実施形態では、メッセージ受信モジュール１５０２は、図６のブロック６０２で上述したように、メッセージが受信されるかどうか決定する。メッセージマークモジュール１５０４は、図６のブロック６０４で上述したように、重要度についてメッセージをマークする。セットメッセージ重要度モジュール１５０６は、図６のブロック６０６で上述したように、重要度を真としてセットする。プロセスメッセージモジュール１５０８は、図６のブロック６０８で上述したように、メッセージを処理し、そして必要なアクションを遂行する。メッセージ返事モジュール１５１０は、図６のブロック６１０で上述したように、返事を送信する。重要度メッセージモジュール１５１２は、図６のブロック６１２で上述したように、メッセージが重要度としてマークされるかどうか決定する。ドロップ重要度モジュール１５１４は、図６のブロック６１４で上述したように、重要度アサーションをドロップさせる。
【００８７】
図１６は、重要度アサーションをドロップするためのドロップアサーション重要度モジュール１２０６である。１つの実施形態において、ドロップ重要度モジュール１２０６は、現在プロセスモジュール１６０２、デクリメントアサーションカウントモジュール１６０４、アサーションカウントゼロモジュール１６０６、及びプロセス降格モジュール１６０８を備えている。この実施形態では、現在プロセスモジュール１６０２は、図７のブロック７０２で上述したように、現在プロセスが重要度プロセスであるかどうか決定する。デクリメントアサーションカウントモジュール１６０４は、図７のブロック７０４で上述したように、重要度アサーションカウントをデクリメントする。アサーションカウントゼロモジュール１６０６は、図７のブロック７０６で上述したように、重要度アサーションカウントを決定する。プロセス降格モジュール１６０８は、図７のブロック７０８で上述したように、現在プロセスを降格させる。
【００８８】
図１７は、オンデマンドでサービスを起動する起動サービス３２６である。１つの実施形態では、この起動サービスは、ペンディングイベントモジュール１７０２、メッセージサービスモジュール１７０４、生成サービスポートモジュール１７０６、メッセージサービスポートモジュール１７０８、適応デーモンモジュール１７１０、起動適応デーモン１７１２、起動デーモンモジュール１７１４、適応デーモンチェックインモジュール１７１６、転送サービスポートモジュール１７１８、及び他イベント処理モジュール１７２０を備えている。１つの実施形態では、ペンディングイベントモジュール１７０２は、図８のブロック８０２で上述したように、いずれかのペンディングイベントがあるかどうか決定する。メッセージサービスモジュール１７０４は、図８のブロック８０４で上述したように、生成されるべきメッセージサービスがあるかどうか決定する。生成サービスポートモジュール１７０６は、図８のブロック８０６で上述したように、サービスポートを生成し、そしてこのサービスポートをウオッチリストに追加する。メッセージサービスポートモジュール１７０８は、図８のブロック８０８で上述したように、サービスポートにメッセージがあるかどうか決定する。適応デーモンモジュール１７１０は、図８のブロック８１０で上述したように、メッセージが適応デーモンに対するものであるかどうか決定する。起動適応デーモン１７１２は、図８のブロック８１２で上述したように、適応デーモンを起動する。起動デーモンモジュール１７１４は、図８のブロック８１４で上述したように、デーモンを起動する。適応デーモンチェックインモジュール１７１６は、図８のブロック８１６で上述したように、起動後に適応デーモンがチェックインしたかどうか決定する。転送サービスポートモジュール１７１８は、図８のブロック８１８で上述したように、サービスポートを適応デーモンへ転送する。他イベント処理モジュール１７２０は、図８のブロック８２０で上述したように、他のイベントを処理する。
【００８９】
図１８は、第１デーモンにより受信されたメッセージに基づき第２デーモンの重要度を昇格するためのメッセージ処理モジュール１５０８である。１つの実施形態では、メッセージ処理モジュール１５０８は、受信メッセージモジュール１８０２、メッセージデーモンモジュール１８０４、送信メッセージデーモンモジュール１８０６、受信返事デーモンモジュール１８０８、準備返事モジュール１８１０、及び送信返事モジュール１８１２を備えている。この実施形態では、受信メッセージモジュール１８０２は、図９のブロック９０２で上述したように、第１メッセージを受信する。メッセージデーモンモジュール１８０４は、図９のブロック９０４で上述したように、第１メッセージの返事が別のデーモンからの情報を要求するかどうか決定する。第２メッセージデーモンモジュール１８０６は、図９のブロック９０６で上述したように、他のデーモンへ第２のメッセージを送信する。受信返事デーモンモジュール１８０８は、図９のブロック９０８で上述したように、返事を受信する。準備返事モジュール１８１０は、図９のブロック９１０で上述したように、第１メッセージに対する返事メッセージを準備する。送信返事モジュール１８１２は、図９のブロック９１２で上述したように、返事を送信する。
【００９０】
図１９は、本発明の１つの実施形態に使用されるデータ処理システム１９００の一例を示す。例えば、システム１９００は、図３Ａ−Ｂに示された装置３００を含めて、具現化される。図１９は、コンピュータシステムの種々のコンポーネントを示すが、コンポーネントを相互接続する特定のアーキテクチャー又は仕方を表わすことを意図していない。というのは、そのような詳細は、本発明と関係がないからである。より少数のコンポーネント又はおそらくより多数のコンポーネントを有するネットワークコンピュータ及び他のデータ処理システム又は他の消費者向け電子装置も、本発明に使用できることが明らかであろう。
【００９１】
図１９に示すように、一形式のデータ処理システムであるコンピュータシステム１９００は、バス１９０３を備え、これは、マイクロプロセッサ１９０５、ＲＯＭ（リードオンリメモリ）１９０７、揮発性ＲＡＭ１９０９、及び不揮発性メモリ１９１１に結合される。マイクロプロセッサ１９０５は、メモリ１９０７、１９０９、１９１１からインストラクションを検索し、そしてそれらインストラクションを実行して、上述したオペレーションを遂行する。バス１９０３は、これら種々のコンポーネントを一緒に相互接続すると共に、これらのコンポーネント１９０５、１９０７、１９０９及び１９１１を、ディスプレイコントローラ・ディスプレイ装置１９１３、並びに入力／出力（Ｉ／Ｏ）装置のような周辺装置に相互接続し、そのＩ／Ｏ装置は、マウス、キーボード、モデム、ネットワークインターフェイス、プリンタ、及びこの分野で良く知られた他の装置である。典型的に、入力／出力装置１９１５は、入力／出力コントローラ１９１３を通してシステムに結合される。揮発性ＲＡＭ（ランダムアクセスメモリ）１９０９は、典型的に、メモリ内のデータをリフレッシュ又は維持するために常時電力を必要とするダイナミックＲＡＭ（ＤＲＡＭ）として具現化される。
【００９２】
大量記憶装置１９１１は、典型的に、システムから電力が取り去られた後もデータ（例えば、大量のデータ）を維持する磁気ハードディスク、磁気光学ドライブ、光学ドライブ又はＤＶＤ  ＲＡＭ、又はフラッシュメモリ、或いは他の形式のメモリシステムである。典型的に、大量記憶装置１９１１は、ランダムアクセスメモリでもあるが、これは、必要なことではない。図１９は、大量記憶装置１９１１がデータ処理システムの残りのコンポーネントに直結されたローカル装置であることを示しているが、本発明は、システムから遠隔にある不揮発性メモリ、例えば、モデムのようなネットワークインターフェイス、イーサネット（登録商標）インターフェイス、又はワイヤレスネットワークを通してデータ処理システムに結合されたネットワーク記憶装置を使用してもよいことが明らかである。バス１９０３は、この分野で良く知られたように、種々のブリッジ、コントローラ、及び／又はアダプタを通して互いに接続される１つ以上のバスを含む。
【００９３】
図２０は、本発明の一実施形態に使用される別のデータ処理システム２０００の一例を示す。例えば、システム２０００は、図３Ａ−Ｂに示す装置３００として具現化される。図２０に示すデータ処理システムは、１つ以上のマイクロプロセッサであるか又はシステムオンチップ集積回路である処理システム２０１１を備え、又、処理システムにより実行するためのデータ及びプログラムを記憶するメモリ２００１も備えている。又、システム２０００は、オーディオ入力／出力サブシステム２００５も備え、これは、例えば、音楽を再生するためのマイクロホン及びスピーカを含むか、又はスピーカ及びマイクロホンを通して電話機能を与える。
【００９４】
ディスプレイコントローラ・ディスプレイ装置２００９は、ユーザのための視覚ユーザインターフェイスを与え、このデジタルインターフェイスは、ＯＳ  Ｘオペレーティングシステムソフトウェアを実行するときのＭａｃｉｎｔｏｓｈコンピュータ、又はｉＯＳオペレーティングシステムを実行するときのＡｐｐｌｅ  ｉＰｈｏｎｅ、等に示されるものと同様のグラフィックユーザインターフェイスを含む。又、システム２０００は、図２０のシステム２０００のような別のデータ処理システムと通信するための１つ以上のワイヤレストランシーバ２００３も備えている。ワイヤレストランシーバは、ＷＬＡＮトランシーバ、赤外線トランシーバ、Ｂｌｕｅｔｏｏｔｈ（登録商標）トランシーバ、及び／又はワイヤレスセルラー電話トランシーバである。ある実施形態では、図示されていない付加的なコンポーネントも、システム２０００の一部分であり、そしてある実施形態では、図２０の示すものより少ないコンポーネントをデータ処理システムに使用してもよいことが明らかであろう。更に、システム２０００は、図１５のシステム１５００のような別のデータ処理システムと通信するために１つ以上の通信ポート２０１７も備えている。通信ポートは、ＵＳＢポート、Ｆｉｒｅｗｉｒｅポート、Ｂｌｕｅｔｏｏｔｈ（登録商標）インターフェイス、等である。
【００９５】
又、データ処理システム２０００は、ユーザがシステムに入力を与えることができるようにする１つ以上の入力装置２０１３も備えている。それらの入力装置は、キーパッド、又はキーボード、又はタッチパネル、又はマルチタッチパネルである。又、データ処理システム２０００は、ドックのためのコネクタである任意の入力／出力装置２０１５も備えている。当業者に明らかなように、種々のコンポーネントを相互接続するのに、図示されていない１つ以上のバスを使用できることが明らかであろう。図２０に示すデータ処理システムは、ハンドヘルドコンピュータ、又はパーソナルデジタルアシスタント（ＰＤＡ）、又はＰＤＡのような機能をもつセルラー電話、又はセルラー電話を含むハンドヘルドコンピュータ、又はｉＰｏｄのようなメディアプレーヤ、或いはそれら装置の態様又は機能を結合する装置、例えば、ＰＤＡ及びセルラー電話を１つの装置に結合したメディアプレーヤ、又は埋め込み型装置、又は他の消費者向け電子装置である。他の実施形態では、データ処理システム２０００は、ネットワークコンピュータ、又は別の装置内の埋め込み型処理装置、或いは図２０に示すものより少数のコンポーネント又はおそらくそれより多数のコンポーネントを有する他の形式のデータ処理システムである。
【００９６】
本発明の少なくとも幾つかの実施形態は、ポータブル音楽及び／又はビデオメディアプレーヤのようなデジタルメディアプレーヤの部分であり、これは、メディアを提示するためのメディア処理システム、メディアを記憶するための記憶装置を含むと共に、アンテナシステム及びメディア処理システムに結合された高周波（ＲＦ）トランシーバ（例えば、セルラー電話のためのＲＦトランシーバ）を含む。ある実施形態では、リモート記憶装置に記憶されるメディアは、ＲＦトランシーバを通してメディアプレーヤへ送信される。メディアは、例えば、音楽又は他のオーディオ、静止画像、又は動画の１つ以上である。
【００９７】
ポータブルメディアプレーヤは、カリフォルニア州クパチーノのアップル・インクからのｉＰｏｄ（登録商標）又はｉＰｏｄ  Ｎａｎｏ（登録商標）プレーヤにおけるクリックホイール入力、タッチスクリーン入力装置、プッシュボタン装置、可動ポインティング入力装置、又は他の入力装置のようなメディア選択装置を含む。このメディア選択装置は、記憶装置及び／又はリモート記憶装置に記憶されたメディアを選択するのに使用される。ポータブルメディアプレーヤは、少なくとも幾つかの実施形態では、入力装置を通して選択され、且つスピーカ又はイヤホンを通して、又はディスプレイ装置に、或いはディスプレイ装置及びスピーカ又はイヤホンの両方に提示されるメディアのタイトル又は他の指示子を表示するためにメディア処理システムに結合されるディスプレイ装置を含む。ポータブルメディアプレーヤの例は、米国特許第７，３４５，６７１号及び米国特許出願公告第２００４／０２２４６３８号に説明されており、これらは参考としてここに援用される。
【００９８】
上述された部分は、専用ロジック回路のようなロジック回路、或いはプログラムコードインストラクションを実行するマイクロコントローラ又は他の形式の処理コアで具現化される。従って、前記説明により教示されるプロセスは、マシン実行可能なインストラクションを実行するマシンが幾つかの機能を遂行するようにさせるマシン実行可能なインストラクションのようなプログラムコードで遂行される。この点に関して、「マシン」とは、中間形態（又は「アブストラクト」）インストラクションを、プロセッサ特有のインストラクション（例えば、「バーチャルマシン」（例えば、Ｊａｖａ（登録商標）バーチャルマシン）、インタープリター、コモン・ランゲッジ・ランタイム、高レベル言語バーチャルマシン、等のようなアブストラクト実行環境）へ変換するマシン、及び／又は汎用プロセッサ及び／又は特殊目的プロセッサのような、インストラクションを実行するように設計された半導体チップ（例えば、トランジスタで具現化される「ロジック回路」）上に配置された電子回路である。又、前記説明により教示されるプロセスは、プログラムコードを実行せずにプロセス（又はその一部分）を遂行するように設計された電子回路により遂行されてもよい（マシンに代わって又はマシンとの組み合わせにおいて）。
【００９９】
又、本発明は、ここに述べるオペレーションを遂行するための装置にも関する。この装置は、必要とされる目的で特別に構成されてもよいし、又はコンピュータに記憶されたコンピュータプログラムにより選択的にアクチベートされ又は再構成される汎用コンピュータでもよい。そのようなコンピュータプログラムは、これに限定されないが、フロッピー（登録商標）ディスク、光学ディスク、ＣＤ−ＲＯＭ、及び磁気・光学ディスクを含む任意の形式のディスク、リードオンリメモリ（ＲＯＭ）、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光学カード、或いは電子的インストラクションを記憶するのに適したものでコンピュータシステムバスに各々結合された任意の形式の媒体のようなコンピュータ読み取り可能な記憶媒体に記憶される。
【０１００】
マシン読み取り可能な媒体は、マシン（例えば、コンピュータ）により読み取り可能な形態で情報を記憶又は送信するためのメカニズムを含む。例えば、マシン読み取り可能な媒体は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学的記憶媒体、フラッシュメモリ装置、等を含む。
【０１０１】
製造物品は、プログラムコードを記憶するのに使用される。プログラムコードを記憶する製造物品は、これに限定されないが、１つ以上のメモリ（例えば、１つ以上のフラッシュメモリ、ランダムアクセスメモリ（スタティック、ダイナミック、その他）、光学的ディスク、ＣＤ−ＲＯＭ、ＤＶＤ  ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光学カード、或いは電子的インストラクションを記憶するのに適した他の形式のマシン読み取り可能な媒体として実施される。又、プログラムコードは、伝播媒体で実施されるデータ信号により（例えば、通信リンク（例えば、ネットワーク接続）を経て）リモートコンピュータ（例えば、サーバー）から要求側コンピュータ（例えば、クライアント）へダウンロードされてもよい。
【０１０２】
以上の詳細な説明は、コンピュータメモリ内のデータビットに対するオペレーションのアルゴリズム及び記号表示に関して表現された。これらのアルゴリズム記述及び表現は、データ処理分野の当業者により、彼等の仕事の実質を他の当業者に最も効率的に伝えるために使用される。アルゴリズムとは、ここでは、一般的に、望ましい結果を導く自己矛盾のないオペレーションシーケンスであると考えられる。オペレーションは、物理量の物理的操作を要求するものである。通常、必ずしもそうでないが、これらの量は、記憶、転送、合成、比較、その他、操作することのできる電気的又は磁気的信号の形態をとる。主として、慣用上、これらの信号は、ビット、値、エレメント、記号、キャラクタ、期間、数、等として参照するのが便利であると分かっている。
【０１０３】
しかしながら、これら及び同様の用語は、全て、適当な物理量に関連付けられ、そしてそれらの量に適用される便宜的表示に過ぎないことを銘記されたい。特に指示のない限り、以上の説明から明らかなように、この説明全体を通して、「受信」「発信」「処理」「送信」「昇格」「降格」「返送」「計算」「エンキュー」「移送」「起動」「転送」「デクリメント」「維持」、等の用語を使用する説明は、コンピュータシステムのレジスタ及びメモリ内で物理的（電子的）量として表されたデータを操作し、そしてコンピュータシステムのメモリ又はレジスタ或いは他のそのような情報記憶、伝達又は表示装置内で物理的量として同様に表される他のデータへと変換するコンピュータシステム又は同様の電子的コンピューティング装置のアクション及び処理を参照するものである。
【０１０４】
ここに述べるアルゴリズム及びディスプレイは、特定のコンピュータ又は他の装置に固有に関係していない。種々の汎用システムを、ここに述べる技術に基づくプログラムと共に使用してもよいし、又はここに述べるオペレーションを遂行するように更に特殊な装置を構成するのが便利であると分かっている。種々のこれらシステムに要求される構造は、以上の説明から明らかとなろう。更に、本発明は、特定のプログラミング言語を参照して説明していない。上述した本発明の実施形態の教示を具現化するのに種々のプログラミング言語を使用できることが明らかであろう。
【０１０５】
以上の説明は、本発明の規範的実施形態を単に記述したものである。当業者であれば、そのような説明、添付図面及び特許請求の範囲から、本発明の精神及び範囲から逸脱せずに種々の変更がなされ得ることが容易に明らかであろう。
【符号の説明】
【０１０６】
１００：移動装置
１０２：オペレーティングシステム
１０４：ユーザアプリケーションプロセス
１０６Ａ−Ｎ：デーモンプロセス
１０８：高重要度プロセス
１１０：低重要度プロセス
２００：移動装置
２０２：オペレーティングシステム
２０４：ユーザアプリケーションプロセス
２１２：デーモンプロセス
２０６Ａ―Ｎ：デーモンプロセス
２０８：高重要度プロセス
２１０：低重要度プロセス
３００：移動装置
３０２：オペレーティングシステム
３０４：ユーザアプリケーションプロセス
３０６Ａ−Ｎ：デーモンプロセス
３０８：高重要度プロセス
３１０：低重要度プロセス
３１８：プロセス
３２０：カーネル
３２２：プロセス管理
３２６：起動サービス
９０２：ユーザアプリケーションプロセス
９０４：適応デーモンプロセス
９０６：カーネル
９０８：重要度セット
９１０：アサーションテーク
９１２：ポートキュー
９１８：ユーザＡＰＰ接続
９２６：アサーションドロップ
９３０：返事オブジェクト破壊
９３２：デーモン接続
９３６：返事オブジェクト
９４０：メッセージサービス
【図１】
2013257873.tif 000003
【図２】
2013257873.tif 000004
【図３Ａ】
2013257873.tif 000005
【図３Ｂ】
2013257873.tif 000006
【図４】
2013257873.tif 000007
【図５】
2013257873.tif 000008
【図６】
2013257873.tif 000009
【図７】
2013257873.tif 000010
【図８】
2013257873.tif 000011
【図９】
2013257873.tif 000012
【図１０】
2013257873.tif 000013
【図１１】
2013257873.tif 000014
【図１２】
2013257873.tif 000015
【図１３】
2013257873.tif 000016
【図１４】
2013257873.tif 000017
【図１５】
2013257873.tif 000018
【図１６】
2013257873.tif 000019
【図１７】
2013257873.tif 000020
【図１８】
2013257873.tif 000021
【図１９】
2013257873.tif 000022
【図２０】
2013257873.tif 000023
【外国語明細書】
2013257873000001.pdf