(57)【特許請求の範囲】
【請求項１】
アプリケーションを実行するための方法であって、
そのアプリケーションは、ファイルシステム（１０６）に記憶され、装置（１００）のプロセッサ（１０２）によって実行され、さらに、アプリケーションからプロセッサへの命令を容易にするために、アプリケーションプログラムインターフェース（ＡＰＩ：２０２）を利用するものであり、
ファイルシステムからアプリケーションを読み出すステップ（４２２）と、
そのアプリケーションをプロセッサにて実行するステップ（４２４）と、
ＡＰＩコールに関して、アプリケーションとプロセッサとの間のインタラクションをモニタするステップ（４２６）と、
ＡＰＩコールについてのモニタ結果に基づいて、アプリケーションがエラー状態にあると判定される場合に、バックアップメモリスペースからアプリケーションのバップアップコピーを読み出すステップ（４１８）と、
そのアプリケーションのバックアップコピーをファイルシステムに格納するステップ（４１８）と、
アプリケーションがエラー状態と連続して判定された回数をカウントするステップ（４３６）と、
カウントされた回数が第１の閾値を越えた時、ファイルシステムを再構築するステップ（４１６）と、を有し、
ファイルシステムが再構築される場合、アプリケーションのバックアップコピーは、ファイルシステムが再構築された後で読み出されてファイルシステムに格納されるアプリケーション実行方法。
【請求項２】
アプリケーションとプロセッサとの間のインタラクションをモニタするステップは、さらに、ＡＰＩコールを観測することなしに経過した時間長さを決定し、その時間長さと時間閾値とを比較する（４３４）ものであり、その時間長さが時間閾値を超えたときに、アプリケーションがエラー状態にあると判定され、バックアップコピーが読み出されることを特徴とする請求項１に記載のアプリケーション実行方法。
【請求項３】
さらに、カウントされた回数が第２の閾値を超えたとき、装置をオフするステップ（４４６）を有し、カウントされた回数が第２の閾値を超えると、アプリケーションのバックアップコピーは読み出されないことを特徴とする請求項１又は２に記載のアプリケーション実行方法。
【請求項４】
さらに、アプリケーションの読み出しとアプリケーションの実行のいずれか一方の間に、アプリケーションをＡＰＩにリンクさせるステップ（４２４）を有することを特徴とする請求項１に記載のアプリケーション実行方法。
【請求項５】
さらに、アプリケーションを動的にＡＰＩにリンクさせるステップ（４２４）を有することを特徴とする請求項１に記載のアプリケーション実行方法。
【請求項６】
ＡＰＩコールが所定時間以内に観測されたとき、アプリケーションのバックアップコピーを読み出すステップは実行されないことを特徴とする請求項１に記載のアプリケーション実行方法。
【請求項７】
装置は、テレマティクス装置及び携帯電話のいずれかであることを特徴とする請求項１に記載のアプリケーション実行方法。
【請求項８】
アプリケーションを実行するための装置であって、
そのアプリケーションは、コンピュータが実行可能な命令として具現化され、
そのアプリケーションを含む、複数のアプリケーションを記憶したファイルシステム（１０６）を有し、さらに、そのアプリケーションのバックアップコピーを含む、複数のアプリケーションの複数のバックアップコピーを記憶するバックアップメモリスペース（１０８）を有する不揮発性メモリ（１０４）と、
そのアプリケーションを実行可能に構成されたプロセッシングモジュール（１０２）と、
そのアプリケーションからプロセッシングモジュールへの命令を容易にすべく、プロセッシングモジュールで利用されるアプリケーションプログラムインターフェース（ＡＰＩ：２０２）と、を備え、
前記プロセッシングモジュールは、
ファイルシステムからアプリケーションを読み出し、プロセッシングモジュールにて、そのアプリケーションを実行し、アプリケーションからプロセッシングモジュールへのＡＰＩコールについて、アプリケーションとプロセッサとの間のインタラクションをモニタし、ＡＰＩコールについてのモニタ結果に基づいて、アプリケーションがエラー状態にあると判定される場合に、バックアップメモリスペースからアプリケーションのバップアップコピーを読み出し、そのアプリケーションのバックアップコピーをファイルシステムに記憶し、アプリケーションがエラー状態と連続して判定された回数をカウントして、その回数が第１の閾値を越えた時、ファイルシステムを再構築するように構成されており、
ファイルシステムが再構築される場合、アプリケーションのバックアップコピーは、ファイルシステムが再構築された後で読み出されてファイルシステムに記憶されることを特徴とするアプリケーション実行装置。
【請求項９】
プロセッシングモジュールは、さらに、ＡＰＩコールを観測することなしに経過した時間長さを決定し、その時間長さと時間閾値とを比較するように構成され、その時間長さが時間閾値を超えたときに、アプリケーションがエラー状態にあると判定され、バックアップコピーが読み出されることを特徴とする請求項８に記載のアプリケーション実行装置。
【請求項１０】
プロセッシングモジュールは、さらに、カウントされた回数が第２の閾値を超えたとき、装置をオフするように構成され、カウントされた回数が第２の閾値を超えると、アプリケーションのバックアップコピーは読み出されないことを特徴とする請求項８又は９に記載のアプリケーション実行装置。
【請求項１１】
プロセッシングモジュールは、さらに、アプリケーションの読み出し時又はアプリケーションの実行の開始時に、アプリケーションをＡＰＩにリンクさせるように構成されていることを特徴とする請求項８に記載のアプリケーション実行装置。
【請求項１２】
プロセッシングモジュールは、アプリケーションを動的にＡＰＩにリンクさせることを特徴とする請求項８に記載のアプリケーション実行装置。
【請求項１３】
プロセッシングモジュールは、ＡＰＩコールが所定時間以内に観測されたとき、アプリケーションのバックアップコピーを読み出さないことを特徴とする請求項８に記載のアプリケーション実行装置。
【請求項１４】
装置は、テレマティクス装置及び携帯電話のいずれかであることを特徴とする請求項８に記載のアプリケーション実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的にリンクされる環境において、アプリケーションを復元して、そのアプリケーションを実行するための方法及び装置に関する。
【背景技術】
【０００２】
この欄における記述は、本発明に関連する背景技術の情報を提供するものであるが、それは必ずしも公知技術に該当するものではない。
【０００３】
今日の多くの装置は、コアソフトウエアを実行するプロセッサあるいはマイクロプロセッサを利用する。そして、それらプロセッサあるいはマイクとプロセッサのアーキテクチャは、その装置のためのアプリケーション開発のため、プログラマーにオープンにされている。例えば、サードパーティの開発者又はインハウスの開発者は、テレマティクス装置のためのアプリケーションを設計する。このような場合に、プロセッサにて実行される広範なアプリケーションの設計を容易にするため、プロセッサ製造者は、アプリケーション開発者がアプリケーションとプロセッサとの間をインターフェースで連結することができるように、アプリケーションプログラムインターフェース（ＡＰＩ）を開発している。ＡＰＩは、プロセッサにて実行されるオペレーティングシステムのサービスやリソースにアクセスしたりそれらを利用したりするために、アプリケーション開発者が使用する規則や規定のセットである。従って、ＡＰＩは、第１のソフトウエアアプリケーションと第２のソフトウエアアプリケーションとの間のインターフェースとして機能するものである。例えば、ＡＰＩは、プログラマーが、テレマティクス装置のオペレーティングシステム上で実行されるアプリケーションを開発することを可能にする。アプリケーション開発者は、テレマティクス装置において使用される特定のプロセッサ用、又はそこで実行されるオペレーティングシステム用の、特定のシステムコールを知っている必要はない。そうではなく、ＡＰＩは、プロセッサ又はオペレーティングシステムから独立した、標準化された規則及び規定を有しているので、プログラマーは、ＡＰＩのシンタックスや規則を使用することが可能であり、それにより、ＡＰＩは、下位レベルのソフトウエア及び／又は装置のハードウエアコンポーネントに対する、抽象化層としての機能を提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
慣例的に、ある装置向けに開発されるアプリケーションは、ＡＰＩのリンクライブラリ及びファイルと静的にリンクされていた。つまり、アプリケーションは、コンパイル時に、リンクされていた。ＡＰＩ設計者は、今日では、リンクライブラリの拡充及び変更をより強く望んでおり、装置のオペレーティングシステムは、アプリケーションを、ＡＰＩのリンクライブラリに動的にリンクするようになってきた。例えば、ＢＲＥＷ（Binary Runtime Environment for Wireless）は、開発者が携帯型装置用のアプリケーションを開発することができるように、Qualcomm社によって開発されたＡＰＩである。歴史的に、ＢＲＥＷは、静的にリンクされていたが、最近の多くのＢＲＥＷＡＰＩでは、ＢＲＥＷアプリケーショの動的リンクが必要となっている。動的にリンクされるＢＲＥＷアプリケーションを実行するためには、そのＢＲＥＷアプリケーションを実行する前に実行されなければならない多くの複雑なプロセスがある。それらの複雑なプロセスの実行は、ＢＲＥＷアプリケーションが実行されないというリスクを増加させる。従って、動的にリンクされる環境では、静的にリンクされる環境における可能性とは対照的に、アプリケーションの動的なリンクが、アプリケーションが開始されないといったリスクを高めるという問題を生じさせる。そのため、動的にリンクされるアプリケーションの信頼性を高める必要がある。
【０００５】
本発明のさらなる適用範囲は、以下に与えられる記載から明らかとなる。ただし、課題を解決する手段等における記載及び特定の例は、説明のみを目的とすることが意図され、本発明の範囲を制限することは何ら意図されないことが理解されるべきである。
【課題を解決するための手段】
【０００６】
この欄では、本発明の全般的な概要が示されるが、それは、発明範囲すべての、あるいは発明の特徴の包括的な開示ではない。
【０００７】
本発明の１つの態様として、アプリケーションを実行するための方法が開示される。アプリケーションは、ファイルシステムに記憶され、装置のプロセッサにて実行される。その際、アプリケーションからプロセッサへの命令を容易にするために、アプリケーションプログラムインターフェース（ＡＰＩ）が使用される。本発明による方法は、ファイルシステムからアプリケーションを読み出し、プロセッサにてアプリケーションを実行し、ＡＰＩコールについて、アプリケーションとプロセッサとの間のインタラクションをモニタし、ＡＰＩコールについてのモニタ結果に基づいて、アプリケーションがエラー状態にあると判定される場合に、バックアップメモリスペースからアプリケーションのバップアップコピーを読み出し、そのアプリケーションのバックアップコピーをファイルシステムに格納し、アプリケーションがエラー状態と連続して判定された回数をカウントし、そのカウントされた回数が第１の閾値を越えた時、ファイルシステムを再構築するものであり、ファイルシステムが再構築される場合、アプリケーションのバックアップコピーは、ファイルシステムが再構築された後で読み出されてファイルシステムに格納される。
【０００８】
本発明の別の態様では、アプリケーションが実行される装置が開示される。装置は、そのアプリケーションを含む、複数のアプリケーションを記憶したファイルシステムを有する不揮発性メモリを備える。ファイルシステムは、そのアプリケーションのバックアップコピーを含む、複数のアプリケーションのバックアップコピーを記憶するバックアップメモリスペースを有する。さらに、装置は、プロセッシングモジュールを含み、それは、アプリケーション、及び、アプリケーションからプロセッシングモジュールへの命令を容易にすべく、プロセッシングモジュールで利用されるアプリケーションプログラムインターフェース（ＡＰＩ）を実行するように構成される。プロセッシングモジュールは、さらに、ファイルシステムからアプリケーションを読み出し、プロセッシングモジュールにて、そのアプリケーションを実行し、アプリケーションからプロセッシングモジュールへのＡＰＩコールについて、アプリケーションとプロセッサとの間のインタラクションをモニタし、ＡＰＩコールについてのモニタ結果に基づいて、アプリケーションがエラー状態にあると判定される場合に、バックアップメモリスペースからアプリケーションのバップアップコピーを読み出し、そのアプリケーションのバックアップコピーをファイルシステムに記憶し、アプリケーションがエラー状態と連続して判定された回数をカウントして、その回数が第１の閾値を越えた時、ファイルシステムを再構築するように構成されており、ファイルシステムが再構築される場合、アプリケーションのバックアップコピーは、ファイルシステムが再構築された後で読み出されてファイルシステムに記憶される。
【図面の簡単な説明】
【０００９】
【図１】代表例としての装置の構成を示すブロック図である。
【図２】代表例としての装置の階層構造を示す図である。
【図３】動的にリンクされるアプリケーションの実行時に、実施される代表例としての方法を示すフローチャートである。
【図４】動的にリンクされるアプリケーションの実行時に、実施される別の代表例としての方法を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の例示としての実施形態が、添付図面を参照しつつ、詳細に説明される。なお、図面は、選りすぐられた実施形態の説明のみを目的とするものであり、実現可能なすべての形態を示すものではなく、また、本発明の範囲を制限することは何ら意図されない。
【００１１】
実行エラーが生じたときに、装置において実行されるべきアプリケーションを回復する枠組みのための装置及び方法が開示される。アプリケーションは、ファイルシステムに記憶され、装置のプロセッサは、ファイルシステムからアプリケーションをロードし、ＲＡＭ上でそのアプリケーションを起動する。プロセッサは、アプリケーションがエラー状態にあるかを判定するために、アプリケーションによって発せられるＡＰＩコールをモニタする。ＡＰＩコールが実行されなかったとき、プロセッサはアプリケーションの回復動作を開始する。例えば、アプリケーションがバックアップ場所から回復され、あるいはファイルシステムが再構築される。
【００１２】
図１は、代表例としての装置１００を示している。装置１００は、テレマティクス装置、セルラー電話、タブレットＰＣ、ＰＤＡ（Personal Digital Assistant）などとして機能するものである。装置１００は、プロセッシングモジュール１０２，このプロセッシングモジュール１０２と通信可能な不揮発性メモリ１０４，及び、任意ではあるが、ユーザインターフェース１１２、通信モジュール１１０を備えている。
【００１３】
プロセッシングモジュール１０２は、装置１００のコアとなる機能を実行するように構成されている。プロセッシングモジュール１０２は、プロセッサ、マイクロプロセッサ、マイクロコントローラー、あるいは、その他のいずれかのプロセッシングユニットを有する。プロセッシングモジュール１０２は、さらにランダムアクセスメモリ（ＲＡＭ）、もしくは他の揮発性メモリを有する。プロセッシングモジュール１０２は、装置１００のオペレーティングシステムを実行するように構成されている。さらに、プロセッシングモジュール１０２は、不揮発性メモリ１０４からデータを読み出し、及び／又は不揮発性メモリ１０４にデータを書き込むように構成されている。プロセッシングモジュール１０２は、不揮発性メモリ１０４からアプリケーションを読み出し、そのアプリケーションをプロセッシングモジュール１０２のＲＡＭに書き込む。
【００１４】
不揮発性メモリ１０４は、適切ないずれのメモリデバイスであっても良い。例えば、不揮発性メモリデバイス１０４は、ハードディスクドライブであっても良いし、あるいはフラッシュメモリデバイスであっても良い。メモリデバイス１０４は、ファイルシステム１０６とバックアップメモリスペース１０８をそれぞれ含む少なくとも２つのセクションに仕切られている。ファイルシステム１０６は、プロセッシングモジュール１０２によって使用されるデータを複数のディレクトリ及び／又はファイルに組織化したものである。複数のファイルの中で、ファイルシステム１０６は、装置１００のために開発されたアプリケーションを記憶している。なお、アプリケーションは、目的物に応じて変化することが理解されるべきである。例えば、テレマティクス装置では、アプリケーションはＣＤＭＡアプリケーション、ＧＰＳアプリケーション、もしくはインターネットアプリケーションを含むものであっても良い。アプリケーションは、装置製造者、もしくはサードパーティの開発者によって開発される。アプリケーションは、コンピュータにて実行可能な命令からなる。いくつかの実施形態では、アプリケーションはコンパイルされ、ファイルシステムに記憶されるが、ロード時もしくは実行時までリンクされない。
【００１５】
バックアップメモリスペース１０８は、データのバックアップコピーを記憶するためのものである。例えば、バックアップメモリスペース１０８は、アプリケーションのバックアップコピーを記憶する。従って、ファイルシステム１０６に記憶されたアプリケーションが破損したとき、ファイルシステム１０６は、バックアップメモリスペース１０８からアプリケーションのバックアップコピーを読み出して、ファイルシステム１０６のアプリケーションを回復することができる。
【００１６】
装置１００は、さらにユーザインターフェース１１２及び／又は通信モジュール１１０を有する。ユーザインターフェース１１２は、ユーザからの入力データを受け取り、またユーザへデータを出力するように構成されている。例えば、テレマティクス装置においては、ユーザインターフェース１１２により、ユーザはタッチスクリーンを介してコマンドを入力することができ、またテレマティクス装置の状態を示す画面をユーザに表示することができる。
【００１７】
通信モジュール１１０は、外部のデータソースにデータを送信し、及び／又は外部のデータソースからデータを受信するように構成されている。例えば、装置１００がテレマティクス装置あるいは携帯電話である場合、通信モジュール１１０は、携帯電話の基地局あるいはＧＰＳ衛星と通信するように構成される。つまり、テレマティクス装置の例では、装置１００がＣＤＭＡアプリケーションを実行する場合、通信モジュール１１０が、携帯電話の基地局のような通信ノードと通信するように構成される。通信モジュール１１０は、通信ノードにデータを送信し、及び通信ノードからデータを受信する。
【００１８】
装置１００は、さらに、追加の構成を含み得ることが理解されるべきである。上述の構成は、代表的なものにすぎず、また実例を示すためのみに与えられたものである。
【００１９】
図２は、装置１００の実行時の環境の代表的な階層構造を示すものである。第１レベル２００では、オペレーティングシステムが装置１００のコアとなる機能に関するタスクを実行する。オペレーティングシステムは、アプリケーションをオペレーティングシステムのレベル２００とインターフェースで接続することを可能とするアプリケーションプログラムインターフェース（ＡＰＩ）２０２を含んでいる。ＡＰＩ２０２は、開発者が、好ましいシステムコールやオペレーティングシステムの機能を知らなくとも使用可能な、規則及び命令のセットを定義する。さらに、ＡＰＩ２０２は、アプリケーションをサポートするための機能及びサブルーチンを定義するライブラリのセットを含んでいる。実行時等には、オペレーティングシステムが、アプリケーションの実行形式のコードとライブラリとを動的にリンクさせる。
【００２０】
開発者がアプリケーションを開発するとき、開発者は、装置１００専用のアプリケーションをプログラムする必要はなく、ＡＰＩ２０２によって定義される命令を利用することができる。従って、ＡＰＩ２０２は、アプリケーションが、種々のプラットフォームにおいて実行できることを可能とする。幾つかの実施形態では、ＡＰＩ２０２として、Qualcomm社によって開発されたＢＲＥＷ（Binary Runtime Environment for Wireless）が用いられる。
【００２１】
第２レベル２１０では、ファイルシステム１０６が、オペレーティングシステムのレベル２００の上に乗っている。ファイルシステム１０６は、第１アプリケーション２１２及び第２アプリケーション２１４を含む複数のアプリケーションを格納している。第１アプリケーション２１２が実行のために呼び出されたとき、第１アプリケーション２１２とＡＰＩ２０２のリンクライブラリとが、オペレーティングシステムによってコンパイル及びリンクされ、ＲＡＭ２１４に記憶される。
【００２２】
第２レベル２１０の上には、第３レベル２２０において、バックアップメモリスペース１０８が乗っている。バックアップメモリスペース１０８は、第１アプリケーションのバックアップコピー２２２及び第２アプリケーションのバックアップコピー２２４を含む複数のアプリケーションのバックアップコピーを記憶している。バックアップメモリスペース１０８は、第２レベル２１０の上に乗っており、それにより、ファイルシステム１０６がフェイルしたとしても、ファイルシステム１０６は、バックアップメモリスペース１０８にアクセスし、第１及び第２アプリケーションのバックアップコピー２２２、２２４を引き出して、ファイルシステム１０６に格納し直すことが可能である。さらに、ファイルシステム１０６は、ファイルシステムそれ自体がフェイルした場合に、再び仕切られて、再構築されるように構成されている。
【００２３】
なお、上述した階層構造は、いかなる意味においても、単なる代表例にすぎないことが理解されるべきであり、他の階層構造が、装置１００に実装されることは想定され得ることである。
【００２４】
図３は、プロセッシングモジュール１０２によって実行される代表的な方法を示している。図３に示された方法は、アプリケーションの実行がユーザ若しくはオペレーティングシステムのタスクによって要求される都度、実施される。その方法は、装置１００の電源投入時にも実施される。例えば、ユーザが、テレマティクス装置によって実行可能なＣＤＭＡアプリケーションを使用して、通話を開始したいと考えた場合、図３に示される方法が実施される。
【００２５】
装置１００の電源投入時には、プロセッシングモジュール１０２は、装置１００のコアソフトウエアを初期化する（ステップ３１２）。幾つかの実施形態では、コアソフトウエアは、装置１００のオペレーティングシステムである。一旦、コアソフトウエアが初期化されると、装置１００は、アプリケーションを開始するための命令を受け取る。ファイルシステム１０６からアプリケーションをロードする前に、プロセッシングモジュール１０２は、ステップ３１４に示されるように、アプリケーションの回復が必要とされるか否かを判定する。後に詳細に説明するように、アプリケーションの回復が必要とされるかを示すフラグ、もしくは類似の指標が、保持されている。従って、プロセッシングモジュール１０２は、アプリケーション回復フラグの値をチェックすることで、アプリケーションの回復が必要とされるかどうかを判定する。アプリケーションの回復が必要とされるならば、プロセッシングモジュール１０２は、ステップ３１６に示されるように、ファイルシステム１０６を初期化するとともに、再構築する。なお、ファイルシステム１０６を初期化するとともに再構築するために適したいかなる手段も利用することが可能である。一般的には、プロセッサ又はマイクロプロセッサは、再構築命令を受けたときに、ファイルシステム１０６の再構築プロセスを実行するための所定の命令セットを実行するよう、予めプログラムされている。
【００２６】
ファイルシステム１０６が再構築されると、バックアップメモリスペース１０８は、ファイルシステム１０６から、バックアップメモリスペース１０８からアプリケーションのバックアップコピーを取得するための命令を受け取る。ファイルシステム１０６は、アプリケーションのバックアップコピーを受け取り、それを、ステップ３１８に示されるように、ファイルシステム１０６にコピーする。なお、ファイルシステム１０６は、複数のアプリケーションのバックアップコピーを要求できることが理解されるべきである。例えば、装置１００が、ＧＰＳアプリケーションとＣＤＭＡアプリケーションとを含む場合には、ファイルシステム１０６は、バックアップＧＰＳアプリケーションとバックアップＣＤＭＡアプリケーションとを要求する。そして、ファイルシステム１０６は、それらのアプリケーションのバックアップコピーを受け取り、その後、ファイルシステム１０６に格納する。
【００２７】
アプリケーションが回復を必要としない場合、もしくは、再構築及び回復操作の実行が完了した後、プロセッシングモジュール１０２は、ステップ３２０に示されるように、アプリケーションをファイルシステム１０６からＲＡＭ２１４にロードする。そうするために、プロセッシングモジュール１０２は、ファイルシステム１０６に対してアプリケーションを要求する。すると、ファイルシステム１０６は、アプリケーションの実行形式のコードをプロセッシングモジュール１０２に返す。プロセッシングモジュール１０２が、アプリケーションを受け取ると、そのアプリケーションは、プロセッシングモジュール１０２のＲＡＭ２１４に保存される。
【００２８】
次に、プロセッシングモジュール１０２は、ステップ３２２に示されるように、ＡＰＩ２０２に含まれるいずれかのリンクファイルもしくはリンクライブラリに、アプリケーションをリンクさせる。いくつかの実施形態では、プロセッシングモジュール１０２は、ロード時に、アプリケーションの実行形式のコードと、ＡＰＩ２０２に含まれるリンクライブラリあるいはリンクファイルの実行形式のコードとをリンクさせる。他の実施形態では、プロセッシングモジュール１０２は、実行時に、アプリケーションの実行形式のコードと、ＡＰＩ２０２に含まれるリンクライブラリあるいはリンクファイルの実行形式のコードとをリンクさせる。アプリケーションプログラムがリンクファイルもしくはリンクライブラリにリンクされると、プロセッシングモジュール１０２は、そのアプリケーションの実行を開始する。
【００２９】
アプリケーションの実行が開始されると、プロセッシングモジュール１０２は、ステップ３２４に示されるように、アプリケーションからのＡＰＩコールがアプリケーションによって発せられたかどうかを判定する。実行の間、アプリケーションは、必ずＡＰＩコールを発することが理解されるべきである。もし、アプリケーションがエラー状態にあり、例えば、アプリケーションプログラムが首尾よくリンクファイルにリンクされなかったりすると、アプリケーションはＡＰＩコールを発生しない。ＡＰＩコールがオペレーティングシステムによって受信されたならば、プロセッシングモジュール１０２は、アプリケーションが適切に実行されていると推測する。アプリケーションが適切に動作していれば、プロセッシングモジュール１０２は、ステップ３２６に示すように、再試行カウント値をゼロにセットする。再試行カウント値については、後に詳細に説明する。また、プロセッシングモジュール１０２は、ステップ３２８に示すように、アプリケーション回復フラグをオフにセットし、ステップ３３０に示すように、アプリケーションの実行を継続する。
【００３０】
ＡＰＩコールがプロセッシングモジュール１０２によって受信されない場合、プロセッシングモジュール１０２は、アプリケーションが実行を開始してから経過した時間長さを判定する。時間長さは、ステップ３３２に示されるように、時間閾値と比較される。時間閾値は、ＡＰＩコールがアプリケーションによって発せられるまでに経過可能な最大時間長さを示すものである。このように、プロセッシングモジュール１０２は、ステップ３３２と３２４との間に形成されたループによって示されるように、ＡＰＩコールが受信されるか、あるいは時間閾値を超えるかするまで、ＡＰＩコールが受信されたかどうかのチェックを続ける。時間閾値を超えてしまった場合、プロセッシングモジュール１０２は、例えば、アプリケーションがＡＰＩ２０２のリンクファイル又はライブラリに適切にリンクされなかったなど、アプリケーションがエラー状態にあるとみなす。
【００３１】
時間閾値を超えた場合には、プロセッシングモジュール１０２は、ステップ３３４に示すように、再試行カウント値をインクリメントする。再試行カウント値は、アプリケーションがエラー状態にあると連続して判定された回数を示す。この再試行カウント値は、ステップ３３６に示されるように、再試行閾値と比較される。再試行カウント値が再試行閾値を超えると、是正措置が取られる。例えば、ステップ３３８に示されるように、装置１００がオフされる。
【００３２】
再試行カウント値が、再試行閾値以下であれば、ステップ３４０に示されるように、アプリケーション回復フラグがオンにセットされる。この場合、プロセッシングモジュール１０２がアプリケーション回復フラグをチェックしたとき、プロセッシングモジュール１０２がアプリケーションのバックアップコピーを引き出すことができるように、プロセッシングモジュール１０２は、ステップ３１２において、コアソフトウエアを再度初期化する。もしくは、プロセッシングモジュール１０２は、コアソフトウエアの初期化ステップをスキップしても良い。
【００３３】
上記方法の変形例も実施可能であり、それらは本発明の範囲に含まれることが理解されるべきである。さらに、図３において示された幾つかのステップは、結合して単一のステップにしても良く、その一方で、他のステップは複数のステップに分けて実行しても良いことに注意すべきである。
【００３４】
図４は、図３を用いて説明された方法の別の実施形態を示すものである。図３を用いて説明されたと同様、電源投入に基づき、ステップ４１２に示されるように、コアソフトウエアがプロセッシングモジュール１０２によって初期化される。コアソフトウエアが初期化されると、プロセッシングモジュール１０２は、ステップ４１４に示されるように、ファイルシステム復元操作が実行されるべきかどうかを判定する。この判定に際して、幾つかの実施形態では、プロセッシングモジュール１０２は、ファイル復元フラグの値をチェックする。ファイルシステムの復元が必要である場合には、プロセッシングモジュール１０２は、ステップ４１６に示されるように、ファイルシステムを初期化するとともに再構築する。そして、プロセッシングモジュール１０２は、ステップ４１８に示されるように、１つもしくはそれ以上のアプリケーションのバックアップコピーをバックアップメモリスペース１０８から引き出し、そのバックアップアプリケーションをファイルシステム１０６にコピーする。
【００３５】
ファイルシステム再構築操作が必要とされない場合には、プロセッシングモジュール１０２は、ステップ４２０に示されるように、アプリケーション回復操作の実行が必要であるか否かを判定する。例えば、幾つかの実施形態では、プロセッシングモジュール１０２は、アプリケーション回復操作の実行が必要であるかどうかを示すアプリケーション回復フラグを保持している。それらの実施形態では、オペレーティングシステムがアプリケーション回復フラグをチェックし、アプリケーションの回復が必要とされているかどうかを判定する。もし、アプリケーション回復フラグがオンにセットされていたとすると、ステップ４１８に示されるように、アプリケーションは、バックアップメモリスペース１０８からファイルシステム１０６にコピーされる。
【００３６】
アプリケーション回復フラグ及びファイルシステム復元フラグのチェックが完了した後、プロセッシングモジュール１０２は、ステップ４２２に示されるように、ファイルシステム１０６からＲＡＭ２１４へとアプリケーションをロードする。そして、プロセッシングモジュール１０２は、ステップ４２４に示されるように、ＡＰＩ２０２のファイルをアプリケーションにリンクさせ、アプリケーションの実行を開始する。いくつかの実施形態では、プロセッシングモジュール１０２は、ロード時に、アプリケーションの実行形式のコードと、ＡＰＩ２０２に含まれるリンクライブラリあるいはリンクファイルの実行形式のコードとをリンクさせる。他の実施形態では、プロセッシングモジュール１０２は、実行時に、アプリケーションの実行形式のコードと、ＡＰＩ２０２に含まれるリンクライブラリあるいはリンクファイルの実行形式のコードとをリンクさせる。アプリケーションプログラムがリンクファイルなどにリンクされると、プロセッシングモジュール１０２は、そのアプリケーションの実行を開始する。
【００３７】
アプリケーションの実行が開始されると、オペレーティングシステムは、ステップ４２６に示されるように、ＡＰＩコールがアプリケーションから発せられたかどうかを判定する。ＡＰＩコールがアプリケーションによって発せられたならば、ステップ４２８から４３２に示されるように、再試行カウント値がゼロにセットされ、アプリケーション回復フラグ及びファイルシステム復元フラグがともにオフにセットされ、そして、プロセッシングモジュール１０２は、通常のアプリケーションプロセスの実行を継続する。
【００３８】
しかしながら、もし、ＡＰＩコールが受信されないならば、プロセッシングモジュール１０２は、ステップ４３４に示されるように、アプリケーションの実行を開始してから経過した時間長さと時間閾値とを比較する。ＡＰＩコールが受信されることなく、アプリケーションが呼び出されてからの時間長さが時間閾値を超えてしまうと、ステップ４３６に示されるように、再試行カウント値がインクリメントされる。上述したように、再試行カウント値は、何回、アプリケーションがエラー状態にあると判定されたかを示すものである。
【００３９】
本実施形態では、プロセッシングモジュール１０２は、最初に、ファイルシステム１０６を再構築することなく、アプリケーションを回復させることを試みる。そして、所定回数のアプリケーション回復の試行の後、プロセッシングモジュール１０２は、ファイルシステム１０６を再構築するとともに、アプリケーションの回復を試みる。もし、所定回数のファイルシステム復元の試行の後でさえ、エラーが解決されないのであれば、例えば装置１００がオフされる等の、是正措置が取られる。
【００４０】
そのため、プロセッシングモジュール１０２は、まずステップ４３８において、再試行カウント値を、第１再試行カウント閾値、例えば「２」と比較する。再試行カウント値が第１再試行カウント閾値を超えていなければ、ステップ４４０に示されるように、アプリケーション回復フラグがオンにセットされ、その後、ステップ４１２の処理に戻る。一方、再試行カウント値が第１再試行カウント閾値を超えている場合には、ステップ４４２に示されるように、再試行カウント値が第２再試行カウント閾値、例えば「４」と比較される。再試行カウント値が第２再試行カウント閾値を超えていなければ、ステップ４４４に示されるように、ファイルシステム復元フラグがオンにセットされ、その後、ステップ４１２の処理に戻る。一方、再試行カウント値が第２再試行カウント閾値を超えている場合には、プロセッシングモジュール１０２は、ステップ４４６に示されるように、例えば装置１００をオフするなどの、是正措置を講ずる。
【００４１】
上記方法の変形例も実施可能であり、それらは、本発明の範囲に含まれることが理解されるべきである。さらに、図４において示された幾つかのステップは、結合して単一のステップにしても良く、その一方で、他のステップは複数のステップに分けて実行しても良いことに注意すべきである。
【００４２】
本明細書で使用された如く、「モジュール」との用語は、特定用途向けＩＣ（ＡＳＩＣ）、電子回路、組み合わせ論理回路、書き換え可能ゲートアレイ（ＦＰＧＡ）、コードを実行するプロセッサ（共用、専用、あるいは集合）、説明した機能を提供する他の適当な構成、もしくは、システムオンチップのような、上述した構成のいくつかもしくはすべての組み合わせの、一部又は全体の構成を含むものとして使用されている。また、モジュールとの用語はプロセッサによって実行されるコードを記憶するメモリ（共用、専用、あるいは集合）を含むものであっても良い。
【００４３】
上記において使用された、「コード」との用語は、ソフトウエア、ファームウエア、及び／又はマイクロコードを含み、プログラム、ルーチン、機能、クラス、及び／又はオブジェクトまで言い及ぶものである。また、上記の「共用」との用語は、複数のモジュールからの幾つか若しくは全てのコードが単一の（共用された）プロセッサを用いて実行されることを意味する。さらに、複数のモジュールからの幾つか若しくは全てのコードが、単一（共用された）メモリに記憶されることも意味する。上記において使用された「集合」との用語は、単一のモジュールからの幾つかの若しくは全てのコードが複数のプロセッサのグループを用いて実行されることを意味する。さらに、単一のモジュールからの幾つかの若しくは全てのコードが複数のメモリのグループを用いて記憶されることを意味する。
【００４４】
本明細書に記載された装置及び方法は、１つあるいはそれ以上のプロセッサによって実行される１つあるいはそれ以上のコンピュータプログラムによって履行されるものである。コンピュータプログラムは、固定の実体的なコンピュータ読み出し可能媒体に記憶された、プロセッサが実行可能な命令を含むものである。コンピュータプログラムは、記憶されたデータも含むものであっても良い。固定の実体的なコンピュータ読み出し可能媒体の非制限的な例は、不揮発性メモリ、磁気メモリ、光メモリである。
【００４５】
本発明の広範な教示は、種々の形態で実施されえるものである。それ故、本明細書では、特定の例を含むものであるが、他の変形例は図面、明細書、及び特許請求の範囲の内容から、当業者にあきらかとなるので、本発明の真の範囲は、そのようなものに限定されるべきものではない。
【符号の説明】
【００４６】
１００  装置
１０２  プロセッシングモジュール
１０４  ＲＡＭ
１０６  ファイルシステム
１０８  バックアップメモリスペース
１１０  通信モジュール
１１２  ユーザインターフェース
【図１】
0005733239.tif 000002
【図２】
0005733239.tif 000003
【図３】
0005733239.tif 000004
【図４】
0005733239.tif 000005