(57)【特許請求の範囲】
【請求項１】
仮想メモリ・システムを含むオペレーティング・システムを備えたコンピュータ上でソフトウェア・モジュールを実行する方法であって、前記コンピュータは、リードオンリー・デバイスとリード／ライト・デバイスを含み、前記リードオンリー・デバイスはフラッシュメモリであり、前記方法が、前記コンピュータの前記リードオンリー・デバイスに格納された第１のソフトウェア・モジュールを実行するとき、
前記第１のソフトウェア・モジュールに含まれるインポート・テーブルを前記オペレーティング・システムが調べて、前記第１のソフトウェア・モジュールが参照する前記リードオンリー・デバイスに格納された少なくとも１つの第２のソフトウェア・モジュールを識別するステップであって、前記インポート・テーブルは、前記少なくとも１つの第２のソフトウェア・モジュールに対する参照を少なくともリストしている、前記のステップと、
各前記第２ソフトウェア・モジュールが前記リードオンリー・デバイスに格納された更新されたバージョンを有するかどうかを、前記オペレーティング・システムが、前記リードオンリー・デバイスが各前記第２ソフトウェア・モジュールと同じネームのソフトウェア・モジュールを格納しているかどうかを判定することによってチェックするステップと、
各前記第２ソフトウェア・モジュールが前記更新されたバージョンを有する場合、前記第１ソフトウェア・モジュールの前記インポート・テーブルを、前記コンピュータの前記リード／ライト・デバイスに前記オペレーティング・システムがコピーするステップと、
前記リード／ライト・デバイス内のコピーした前記インポート・テーブルにおける各前記第２ソフトウェア・モジュールに対する参照を、前記更新されたバージョンを参照するように前記オペレーティング・システムが変更して変更されたインポート・テーブルを生成するステップと、
前記少なくとも１つの第２のソフトウェア・モジュールが更新されたバージョンを有する場合、前記リードオンリー・デバイス及び前記リード／ライト・デバイスに対し仮想メモリを前記仮想メモリ・システムが割り当てるステップであって、前記仮想メモリを、前記リード／ライト・デバイスに格納された前記第１ソフトウェア・モジュールの前記変更されたインポート・テーブルと、前記リードオンリー・デバイスに格納された前記第１ソフトウェア・モジュールの残りとに割り当てることを含む、前記のステップと、
を備えたソフトウェア・モジュール実行方法。
【請求項２】
請求項１記載の方法において、前記リード／ライト・デバイスはランダム・アクセス・メモリを含む、を特徴とするソフトウェア・モジュール実行方法。
【請求項３】
請求項１記載の方法において、前記コピーするステップは、前記リードオンリー・デバイスからの少なくとも１つの物理メモリ・ページを、前記リード／ライト・デバイスの物理メモリ・ページにコピーすることを含むこと、を特徴とするソフトウェア・モジュール実行方法。
【請求項４】
コンピュータが実行可能の命令を有するコンピュータ読み取り可能媒体であって、前記コンピュータが、リードオンリー・デバイスとリード／ライト・デバイスを含み、前記リードオンリー・デバイスはフラッシュメモリであり、前記命令が、前記コンピュータに、該コンピュータの前記リードオンリー・デバイスに格納された第１のソフトウェア・モジュールを実行するとき、
前記第１ソフトウェア・モジュールに含まれるインポート・テーブルを調べて、前記第１ソフトウェア・モジュールが参照する前記リードオンリー・デバイスに格納された少なくとも１つの第２のソフトウェア・モジュールを識別するステップであって、前記インポート・テーブルは、前記少なくとも１つの第２のソフトウェア・モジュールに対する参照を少なくともリストしている、前記のステップと、
各前記第２ソフトウェア・モジュールが前記リードオンリー・デバイスに格納された更新されたバージョンを有するかどうかを、前記リードオンリー・デバイスが各前記第２ソフトウェア・モジュールと同じネームのソフトウェア・モジュールを格納しているかどうかを判定することによってチェックするステップと、
各前記第２ソフトウェア・モジュールが前記更新されたバージョンを有する場合、前記第１ソフトウェア・モジュールの前記インポート・テーブルを、前記コンピュータの前記リード／ライト・デバイスにコピーするステップと、
前記リード／ライト・デバイス内のコピーした前記インポート・テーブルにおける各前記第２ソフトウェア・モジュールに対する参照を、前記更新されたバージョンを参照するように変更して変更されたインポート・テーブルを生成するステップと、
前記少なくとも１つの第２のソフトウェア・モジュールが更新されたバージョンを有する場合、前記リードオンリー・デバイス及び前記リード／ライト・デバイスに対し仮想メモリを割り当てるステップであって、前記仮想メモリを、前記リード／ライト・デバイスに格納された前記第１ソフトウェア・モジュールの前記変更されたインポート・テーブルと、前記リードオンリー・デバイスに格納された前記第１ソフトウェア・モジュールの残りとに割り当てることを含む、前記のステップと、
を備えた方法を実行させるコンピュータ読み取り可能媒体。
【請求項５】
仮想メモリ・システムを含むオペレーティング・システムを備えた計算システムであって、
第１のソフトウェア・モジュールと、該第１ソフトウェア・モジュールが参照する少なくとも１つの第２のソフトウェア・モジュールとを収容するリードオンリー・デバイスであって、該リードオンリー・デバイスはフラッシュメモリであり、前記第１のソフトウェア・モジュールはインポート・テーブルを含み、前記インポート・テーブルは、該リードオンリー・デバイスに格納された前記少なくとも１つの第２のソフトウェア・モジュールに対する参照を少なくともリストしている、前記のリードオンリー・デバイスと、
インポート・テーブルを収容するリード／ライト・デバイスであって、該リード／ライト・デバイスに収容された前記インポート・テーブルは、前記リードオンリー・デバイスに収容された前記第１のソフトウェア・モジュールの前記インポート・テーブルをコピーすることによって格納されたものであって、前記少なくとも１つの第２ソフトウェア・モジュールの更新されたバージョンを参照するように変更された参照をリストしており、前記少なくとも１つの第２のソフトウェア・モジュールの前記更新されたバージョンは前記リードオンリー・デバイスに格納されており、前記更新されたバージョンは、前記リードオンリー・デバイスが各前記第２ソフトウェア・モジュールと同じネームのソフトウェア・モジュールを格納しているかどうかを判定することによって識別する、前記のリード／ライト・デバイスと、
を備え、
前記少なくとも１つの第２のソフトウェア・モジュールが更新されたバージョンを有する場合、前記仮想メモリ・システムは、前記リードオンリー・デバイス及び前記リード／ライト・デバイスに対し仮想メモリを割り当て、該割り当てが、前記仮想メモリを、前記リード／ライト・デバイスに格納された前記第１ソフトウェア・モジュールの前記インポート・テーブルと、前記リードオンリー・デバイスに格納された前記第１ソフトウェア・モジュールの残りとに割り当てることを含む、
計算システム。
【請求項６】
請求項５記載のシステムにおいて、前記リードオンリー・デバイスはリード・オンリー・メモリであり、前記リード／ライト・デバイスはランダム・アクセス・メモリであること、を特徴とする計算システム。
【請求項７】
請求項５記載のシステムにおいて、さらに、前記オペレーティング・システムは、前記リードオンリー・デバイスからの少なくとも１つの物理メモリ・ページを、前記リード／ライト・デバイスの物理メモリ・ページにコピーすること、を特徴とする計算システム。
【請求項８】
請求項５記載の計算システムであって、該計算システムは、ハンドヘルド・パーソナル・コンピュータである、計算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理の分野に関し、詳細には、計算システムにおけるリードオンリー・ソフトウェアの更新のための方法およびシステムに関するものである。
【背景技術】
【０００２】
多くの従来のシステムは、リード・オンリー・メモリ（ＲＯＭ）のようなリードオンリー・デバイス内にバンドルされたソフトウェア・モジュールを実行するための機構を有している。リードオンリー・デバイス内のこれらソフトウェア・モジュールは、ワード処理ソフトウェアのようなソフトウェア・アプリケーションであったり、あるいはそれらアプリケーションが実行の間に使用する共有ソフトウェア・ライブラリであったりする。例えば、リードオンリー・デバイスは、リードオンリー・デバイス内に格納されたソフトウェア・アプリケーションが共有するダイナミックにリンクされたライブラリ（ＤＬＬ）を収容することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
速度とメモリ効率は、それらソフトウェア・アプリケーションおよびライブラリを、リードオンリー・デバイスから直接実行し、それらが最初にランダム・アクセス・メモリ（ＲＡＭ）にロードされるのを要求しないことにより、実現される。このアプローチにおける１つの問題は、それらソフトウェア・モジュールの１つに対する小さな変更を行うためにでさえ、リードオンリー・デバイス全体の再プログラミングかあるいはリプレースをしなければならないことである。
【０００４】
これらの理由のため、また本明細書を読み理解したときに当業者には明かとなる以下に述べる理由のため、リードオンリーのソフトウェア・モジュールを、リードオンリー・デバイスの再プログラミングあるいはリプレースを必要とせずに更新することができることとする機能に対するニーズが当該分野にある。さらに、リードオンリーのソフトウェア・モジュールを実行の時にダイナミックに更新することができることとする機構に対するニーズがある。
【課題を解決するための手段】
【０００５】
本発明は、リードオンリー・デバイスから実行するソフトウェア・モジュールを、このデバイスの再プログラミングまたはリプレースを必要とすることなく、他のソフトウェア・モジュールの新たなバージョンを使用するように更新することができることとする機構、を提供する。本発明は、有利にも、ソフトウェア・モジュールを主としてリードオンリー・デバイスから直接実行できるようにすると共に、ほんの小さな更新された部分をリード／ライト（read/write）デバイスから実行できるようにする。ソフトウェア・モジュールは、スタンドアロンのアプリケーションであったり、共有のソフトウェア・ライブラリとすることができる。
【０００６】
１つの形態によれば、本発明は、コンピュータ・システム上でソフトウェア・モジュールを実行する方法である。ソフトウェア・モジュールの１部分は、リードオンリー・デバイスからリード／ライト・デバイスにロードする。前記ソフトウェア・モジュールの前記ロードした１部分は、前記リード／ライト・デバイスから直接実行し、前記ソフトウェア・モジュールの残りを前記リードオンリー・デバイスから直接実行する。１実施形態では、前記リード／ライト・デバイス内にロードされた前記ソフトウェア・モジュールの前記１部分に対し、また前記リードオンリー・デバイス内の前記ソフトウェア・モジュールの前記残りに対し、仮想メモリを割り当てる。前記ソフトウェア・モジュールの前記ロードした１部分は、新たなソフトウェア・モジュールを正しくアドレスするように変更する。前記ソフトウェア・モジュールの多くは、リードオンリー・デバイスから直接実行する一方で、ちょうど変更した部分は、リード／ライト・デバイスから実行する。
【０００７】
別の形態によれば、本発明は、計算システムであって、これは、ソフトウェア・モジュールの第１の部分を収容するリードオンリー・デバイスを有する。リード／ライト・デバイスは、前記ソフトウェア・モジュールの第２の部分を収容する。オペレーティング・システムは、前記ソフトウェア・モジュールの前記第１および第２の部分をそれらの対応するデバイスから実行することによって、前記ソフトウェア・モジュールを実行する。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の実施形態を実施することができるリソース制限形コンピュータのハードウェアおよび動作環境の図である。
【図２】図２は、図１に示したコンピュータの機能コンポーネントを示すブロック図。
【図３】図３は、実行可能のソフトウェア・アプリケーションおよび共有ライブラリを有するリードオンリー・デバイスの１つの実施形態を示すブロック図。
【図４】図４は、仮想メモリから、リード・オンリー・メモリ（ＲＯＭ）およびランダム・アクセス・メモリ（ＲＡＭ）を含む物理メモリへのマッピングを示すブロック図。
【図５】図５は、本発明が、リードオンリー・デバイスに格納したソフトウェア・モジュールを、リードオンリー・デバイスのコンテンツの再プログラミングを必要とせずに更新する１つの動作モードを示すフローチャート。
【発明を実施するための形態】
【０００９】
本発明の例示的実施形態についての以下の詳細な説明においては、この説明の１部を成す添付図面を参照するが、この添付図面は、例示として本発明を実施できる特定の具体的な実施形態を示している。これら実施形態は、当業者が本発明を実施できるように十分詳細に説明する。他の実施形態も用いることができること、また、論理的、機械的、電気的な変更、および他の変更を、本発明の要旨または範囲から逸脱せずに行うことができることは、理解されるべきである。したがって、以下の詳細な説明は、限定する意味でとられるべきではなく、本発明は、添付の特許請求の範囲の記載によってのみ定められるものである。
【００１０】
詳細な説明は、４つのセクションに分けている。最初のセクションは、本発明で使用するのに適したハードウェアおよび動作環境を説明する。第２のセクションは、発明性のあるシステムの実施形態の詳細な説明を行う。第３のセクションは、本発明の例示的実施形態を動作させる方法を提供する。最後に、第４のセクションは、詳細な説明の結論を提供する。
【００１１】
ハードウェアおよび動作環境
図１は、リードオンリーのアプリケーションを、本発明の種々の実施形態にしたがってランタイムで更新するようになった、リソース制限形コンピュータの図である。本発明は、パーソナル・コンピュータのようなコンピュータが実行する、プログラム・モジュールのようなコンピュータ実行可能命令の一般的なコンテキストで説明する。一般に、プログラム・モジュールは、特定のタスクを実行しまたは特定の抽象的なデータ・タイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。
【００１２】
図１は、代表的なハンドヘルド・パーソナル・コンピュータ（Ｈ／ＰＣ）２０を示し、これは、限られた計算リソースを有している。Ｈ／ＰＣ２０は、ケーシング２２を有し、これは、カバーまたはフタ２４とベース２６とを備えている。Ｈ／ＰＣ２０は、液晶ディスプレイ（ＬＣＤ）２８を有し、タッチ感知型スクリーンをフタ２４に装着している。フタ２４は、ベース２６にヒンジ結合して、ディスプレイ２８を露出させる開位置と、このディスプレイを保護する閉位置との間で回転するようにしている。Ｈ／ＰＣ２０には、タッチスクリーン・ディスプレイ２８を介してデータを入力するスタイラス３０と、小型のキーボード３２を設けている。スタイラス３０とキーボード３２とは、両方ともベース２６内に装着している。
【００１３】
また、Ｈ／ＰＣ２０は、赤外線送受信機および／または無線周波数送受信機のような無線送受信機（図示せず）を設けて実現することができる。図示した実現例では、フタ２４とベース２６を備えた２部分Ｈ／ＰＣ２０を示しているが、Ｈ／ＰＣの他の機械的実現例も使用することができる。
【００１４】
図２は、図１に示したＨ／ＰＣ２０の主機能コンポーネントを示している。Ｈ／ＰＣ２０は、マイクロプロセッサ４０を備え、これは、オペレーティング・システム４８を実行する。プロセッサ４０は、３つの動作モード、すなわち、フルスピード、スタンバイ、サスペンドを有している。フルスピード・モードは、アプリケーションを実行するのに使用する。スタンバイ・モードは、短時間のアイドル期間において使用する。サスペンド・モードは、長いアイドル期間において使用し、そしてフルスピード・パワーの千分の一未満を使用する。
【００１５】
Ｈ／ＰＣ２０は、割込を与えるため、また他のタイマ・イベント並びに現在の日付および時刻を与えるためタイマ４２を備えている。リード・オンリー・メモリ（ＲＯＭ）４４は、オペレーティング・システム４８並びにバンドルしたアプリケーション５６を格納する。ランダム・アクセス・メモリ（ＲＡＭ）４６は、ユーザがインストールのアプリケーションを実行するためのユーザ領域５２と、データを格納するオブジェクト記憶５４とを含んでいる。オブジェクト記憶５４は、ディスク・ドライブおよびテープ・ドライブのような従来の直接アクセス記憶デバイスの代わりに使用する。加えて、オブジェクト記憶５４は、Ｈ／ＰＣ２０のためのレジストリも維持している。ユーザ入力／出力デバイス６０は、外部デバイスと通信する。同様に、接続性（connectivity）ブロック６２は、シリアルポート、赤外線通信ハードウェア等のような多くの標準の接続性デバイスを表している。
【００１６】
本発明の実施形態を実現できるハードウェアおよび動作環境について、説明する。以下のセクションは、発明性のあるシステムの実施形態のより詳細な説明を提供する。
システム・レベルのオーバービュー
図３は、リード・オンリー・メモリ（ＲＯＭ）４４の１実施形態を示しており、これは、ソフトウェア・アプリケーション５６と共有ライブラリ１３５を中に格納している。リード・オンリー・メモリ（ＲＯＭ）４４は、リードオンリーの任意のメモリアドレス可能のデバイス、あるいはフラッシュメモリ、フラッシュメモリ・カード等のようなブロック書き込みのみをサポートする任意のデバイスとすることができる。
【００１７】
ソフトウェア・アプリケーション５６は、ワード処理ソフトウェアのようなアプリケーション・プログラムを表し、これは、ＲＯＭ４４に格納し、またＲＯＭ４４から実行して初期実行速度を高めかつＲＡＭ４６を温存するようにする。ライブラリ１３５は、スタンドアロンのアプリケーションではないが、アプリケーション５６よってまたは他のライブラリ１３５によってさえも呼び出す。例えば、１実施形態では、ライブラリ１３５は、ダイナミックにリンクされたライブラリ（ＤＬＬ）である。本出願においては、用語“ソフトウェア・モジュール”は、ソフトウェア・アプリケーション５６並びにライブラリ１３５の双方を包含する。コンテンツ・テーブル１２０は、ＲＯＭ４４内に格納した全てのソフトウェア・アプリケーション５６およびライブラリ１３５をリストし、そして各ソフトウェア・モジュールの対応する開始アドレスを与える。
【００１８】
上述のように、従来のリソース制限形計算デバイスにおいては、ライブラリ１３５に対するどのような変更も、ＲＯＭ４４全体の再プログラミングあるいはリプレースを必要とすることが多い。パームトップあるいはさらにラップトップのコンピュータのような消費者向け製品では、これは特に問題となるが、それは、ユーザまたはサービス要員が、新たなＲＯＭ４４を物理的にインストールすることを必要とするからである。ユーザは、ライブラリ１３５のうちの１つに対する新たなバージョンを単にハードディスク・ドライブ２７にロードすることはできないが、それは、ＲＯＭ４４内のこのリプレースしたライブラリ１３５への全ての参照は変更されず、したがって古いバージョンを間違ってポイントするからである。このため、従来のシステムでは、ユーザは、リードオンリー・デバイス全体をリプレースするか、フラッシュメモリ・デバイスの場合においてはそのデバイス全体を再書き込みするか、あるいはアプリケーション５６およびライブラリ１３５の古いバージョンを使用するかせざるを得ない。
【００１９】
本発明を例示するため、ユーザが、より新しいバージョンのライブラリ１３５Ｄをコンピュータ２０にインストールしており、またソフトウェア・アプリケーション５６Ａがライブラリ１３５Ｄに依存していると仮定する。本発明によれば、ソフトウェア・アプリケーション５６Ａを実行すべきとき、オペレーティング・システム４８は、このアプリケーション５６が依存するライブラリ１３５を識別する。これら依存性全てを識別した後、オペレーティング・システム４８は、識別したライブラリ１３５のうちの任意のもののより新たなバージョンがコンピュータ２０にインストールされているかどうか判定を行う。したがって、本例では、オペレーティング・システム４８は、ソフトウェア・アプリケーション５６Ａはライブラリ１３５Ｄに依存しており、またより新たなバージョンのライブラリ１３５Ｄがコンピュータ２０にロードされていると判定する。
【００２０】
新バージョンのライブラリ１３５Ｄがインストールされているため、オペレーティング・システム４８は、ライブラリ１３５Ｄに依存するアプリケーション５６および任意の他の所要のライブラリ１３５を更新することにより、これらがその新たなライブラリを正しく参照するようにする。より詳しくは、オペレーティング・システム４８は、ＲＡＭ４６内に１つ以上の物理ページを割り当て、そしてライブラリ１３５Ｄを参照するソフトウェア・アプリケーション５６Ａの１部分をＲＡＭ４６中にコピーする。その１部分をコピーした後、オペレーティング・システム４８は、新バージョンのライブラリ１３５Ｄをポイントするように全ての参照を変更する。オペレーティング・システム４８は、ソフトウェア・アプリケーション５６Ａが依存しまたライブラリ１３５Ｄを参照する各ライブラリ１３５に対してこのプロセスを繰り返す。
【００２１】
次に、オペレーティング・システム４８は、ＲＯＭ４４およびＲＡＭ４６の双方からソフトウェア・アプリケーション５６Ａを実行する。このようにして、ソフトウェア・アプリケーション５６Ａのほとんどは、ＲＯＭ４４から実行する一方で、そのちょうど更新した部分はＲＡＭ４６から実行する。更新したライブラリ１３５は、それと同様にして実行する。このようにして、本発明は、ＲＯＭ４４内に収容されたライブラリ１３５の任意のものに対する更新を容易にする。新たなバージョンのライブラリ１３５Ｄがインストールされていなかったとした場合、オペレーティング・システム４８は、ソフトウェア・アプリケーション５６Ａを、変更なしのＲＯＭ４４から直接実行していたことになる。
【００２２】
図４に示したように、１実施形態においては、オペレーティング・システム４８は、仮想メモリ（ＶＭ）システムを備え、これは、仮想メモリ１４０を物理メモリ１４５にマッピングする。詳細には、ＶＭシステムは、仮想メモリのページ１５５を、ＲＯＭ４４またはＲＡＭ４６のいずれかの中に位置した物理ページにマッピングする。この実施形態では、アプリケーション５６を実行するために割り当てた仮想メモリ・ページ１５５のほとんどは、ＲＯＭ４４内の物理メモリに直接マッピングする。しかし、少数の仮想メモリ・ページ１５５は、ＲＡＭ４６内において変更されている部分に対し割り当てる。このＶＭシステムを使用して仮想メモリ・ページをＲＯＭ４４とＲＡＭ４６の双方にマッピングすることにより、コンピュータ２０は、このソフトウェアの小さな部分に対するほんの初期の変更で、アプリケーション５６とライブラリ１３５をシームレスに実行することができる。
【００２３】
本発明の例示的実施形態の方法
前のセクションでは、本発明の例示的実施形態の動作のシステム・レベルのオーバービューを記述した。このセクションでは、この例示的実施形態が実行する特定の方法を、フローチャートを参照して説明する。本実施形態が実行すべき方法は、コンピュータ実行可能の命令から成るコンピュータ・プログラムを構成する。この方法をフローチャートを参照して説明すれば、当業者であれば、そのような命令を含むプログラムを開発して、本方法を適当なコンピュータ上でコンピュータ読み取り可能媒体から実施することができる。
【００２４】
図５は、ＲＯＭ４４内に常駐するソフトウェア・モジュールをランタイムで更新するためのオペレーティング・システム４８の動作の１つの例示の方法を示すフローチャート４００である。フローチャート４００の多くは、ループ４０３に含まれ、このループでは、オペレーティング・システム４８は、実行すべきソフトウェア・アプリケーション５６のうちの１つを更新し、そして次に各々の所要のライブラリ１３５に対しループ４０３を繰り返す。
【００２５】
オペレーティング・システム４８は、フローチャート４００をブロック４０２で開始し、そしてブロック４０４に進むことによってループ４０３に入る。ブロック４０４において、オペレーティング・システム４８は、希望のソフトウェア・アプリケーション５６を実行するのに必要な全てのライブラリ１３５を識別する。１実施形態では、各ソフトウェア・アプリケーション５６および各ライブラリ１３５は、インポート・テーブルを収容しており、これは、実行に必要な全てのライブラリ１３５をリストしている。１つのソフトウェア・モジュールに対する１つのインポート・テーブルは、３２ビットのポインタのアレイであって、これは、１つのソフトウェア・モジュールに対する全ての必要なインポートを識別する。その最後のエントリは、ゼロ（ヌル）にセットされて、このテーブルの終わりを示す。例えば、ソフトウェア・アプリケーション５６Ａに対するインポート・テーブルは、実行に必要なものとしてライブラリ１３５Ａ，１３５Ｂ，１３５Ｃを識別することがある。
【００２６】
ブロック４０６においては、オペレーティング・システム４８は、それら識別したライブラリ１３５の任意のものに対して新たなバージョンがインストールされているかどうか判定を行う。新たなバージョンが存在するかどうか判定するため、オペレーティング・システム４８は、予め定めたサーチ経路に従い、そしてこの間に所要のライブラリ１３５と同一のネームをもつファイルを探す。例えば、オペレーティング・システム４８は、任意の装着されたボリュームを求めてルート・ディレクトリを調べ、コンピュータ２０のビルトインのボリュームを求めてルート・ディレクトリを調べ、またオペレーティング・システムの特定のディレクトリを調べる。所要のライブラリ１３５の１つと同一ネームをもつオペレーティング・システム４８が見つけ出した任意のファイルは、新バージョンとみなす。
【００２７】
より新たなバージョンがインストールされていない場合、オペレーティング・システム４８は、ブロック４１２にジャンプし、そしてソフトウェア・アプリケーション５６Ａの実行に必要な各ライブラリ１３５に対しループ４０３を繰り返す。新バージョンが必要なライブラリ１３５の１つあるいはそれ以上に対しインストールされている場合、オペレーティング・システム４８は、ブロック４０６からブロック４０８へ進む。
【００２８】
ブロック４０８においては、オペレーティング・システム４８は、ＲＡＭ４６内の１つ以上の物理ページを割り当て、そしてソフトウェア・アプリケーション５６の１部をこの割り当てたページにロードする。詳細には、オペレーティング・システム４８は、ＲＯＭ４４からＲＡＭ４６にライブラリ１３５への参照を含むそれら物理ページをロードする。例えば、１実施形態においては、オペレーティング・システム４８は、インポート・テーブルまたはこれの１部をＲＡＭ４６にロードする。
【００２９】
ブロック４１０においては、オペレーティング・システム４８は、ＲＡＭ４６にロードしたアプリケーション１３５の部分を変更する。オペレーティング・システム４８は、このＲＡＭベースの部分を更新して、複製したライブラリ１３５へのどのような参照も新バージョンをポイントするようにする。１実施形態では、オペレーティング・システム４８は、ＲＡＭ４６中にコピーしたインポート・テーブルを変更する。
【００３０】
ＲＡＭベースの部分を更新した後、オペレーティング・システム４８は、ブロック４１２に進み、そして希望のソフトウェア・アプリケーション５６を実行するのに必要な各ライブラリ１３５に対しループ４０３を繰り返す。全ての依存性を調べ終わりまた必要な場合に全てのライブラリ１３５を更新し終えたとき、オペレーティング・システム４８は、ループ４０３を出てそしてブロック４１４に進む。
【００３１】
ブロック４１４においては、オペレーティング・システム４８は、アプリケーション５６を実行する。アプリケーションを実行するには、オペレーティング・システム５６は、アプリケーション５６と任意の必要なライブラリ１３５が消費する物理メモリ・ページにマッピングする１組の仮想メモリ・ページ１５５を割り当てる。アプリケーション５６の部分と必要なライブラリ１３５をＲＡＭ４６にコピーした場合、オペレーティング・システム５６は、ＶＭシステムに対し命令して、この仮想メモリ・ページ１５５をその更新した部分にマッピングさせる。一旦仮想メモリ１４０がＲＯＭベースの部分とＲＡＭベースの部分に対し割り当てられると、コンピュータ２０は、アプリケーション５６をシームレスに実行する。
【００３２】
ソフトウェア・アプリケーション５６が実行を完了すると、オペレーティング・システム４８は、ブロック４１６に進み、仮想メモリ・ページ１５５の割り当てを解除し、そしてＲＡＭ４６にコピーしたソフトウェア・アプリケーション５６の全ての部分およびライブラリ１３５を除去する。
【００３３】
結び
コンピュータのリードオンリー・デバイスに格納したソフトウェア・モジュールを更新するための種々の実施形態について説明した。本発明は、ユーザが、ＲＯＭベースのソフトウェア・モジュールが使用するソフトウェア・モジュールの新たなバージョンのインストールを、ユーザによる新たなＲＯＭのインストールを必要とせずに行うことができることとする機構を提供する。本発明により、１次的にリードオンリー・デバイスから実行する一方で、小さな部分のみを更新しそしてリード／ライト・デバイスから実行することが有利にできるようになる。ソフトウェア・モジュールは、スタンドアロンのソフトウェア・アプリケーションであったり共有のソフトウェア・ライブラリとすることができる。
【００３４】
以上、特定の実施形態について図示し説明したが、当業者には分かるように、同一の目的を達成するように計画されたどのような配置も、図示した特定の実施形態と置き換えることができる。したがって、本願は、本発明のどのような適合例あるいは変更例も包含するよう意図している。
【図１】
0004608580.tif 000002
【図２】
0004608580.tif 000003
【図３】
0004608580.tif 000004
【図４】
0004608580.tif 000005
【図５】
0004608580.tif 000006