JP4608580B2 - ソフトウェア・モジュールを実行する方法及び計算システム - Google Patents

ソフトウェア・モジュールを実行する方法及び計算システム Download PDF

Info

Publication number
JP4608580B2
JP4608580B2 JP2009007212A JP2009007212A JP4608580B2 JP 4608580 B2 JP4608580 B2 JP 4608580B2 JP 2009007212 A JP2009007212 A JP 2009007212A JP 2009007212 A JP2009007212 A JP 2009007212A JP 4608580 B2 JP4608580 B2 JP 4608580B2
Authority
JP
Japan
Prior art keywords
read
software module
stored
computer
import table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009007212A
Other languages
English (en)
Other versions
JP2009140512A (ja
Inventor
ギンズバーグ,マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009140512A publication Critical patent/JP2009140512A/ja
Application granted granted Critical
Publication of JP4608580B2 publication Critical patent/JP4608580B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、一般的にはデータ処理の分野に関し、詳細には、計算システムにおけるリードオンリー・ソフトウェアの更新のための方法およびシステムに関するものである。
多くの従来のシステムは、リード・オンリー・メモリ(ROM)のようなリードオンリー・デバイス内にバンドルされたソフトウェア・モジュールを実行するための機構を有している。リードオンリー・デバイス内のこれらソフトウェア・モジュールは、ワード処理ソフトウェアのようなソフトウェア・アプリケーションであったり、あるいはそれらアプリケーションが実行の間に使用する共有ソフトウェア・ライブラリであったりする。例えば、リードオンリー・デバイスは、リードオンリー・デバイス内に格納されたソフトウェア・アプリケーションが共有するダイナミックにリンクされたライブラリ(DLL)を収容することがある。
速度とメモリ効率は、それらソフトウェア・アプリケーションおよびライブラリを、リードオンリー・デバイスから直接実行し、それらが最初にランダム・アクセス・メモリ(RAM)にロードされるのを要求しないことにより、実現される。このアプローチにおける1つの問題は、それらソフトウェア・モジュールの1つに対する小さな変更を行うためにでさえ、リードオンリー・デバイス全体の再プログラミングかあるいはリプレースをしなければならないことである。
これらの理由のため、また本明細書を読み理解したときに当業者には明かとなる以下に述べる理由のため、リードオンリーのソフトウェア・モジュールを、リードオンリー・デバイスの再プログラミングあるいはリプレースを必要とせずに更新することができることとする機能に対するニーズが当該分野にある。さらに、リードオンリーのソフトウェア・モジュールを実行の時にダイナミックに更新することができることとする機構に対するニーズがある。
本発明は、リードオンリー・デバイスから実行するソフトウェア・モジュールを、このデバイスの再プログラミングまたはリプレースを必要とすることなく、他のソフトウェア・モジュールの新たなバージョンを使用するように更新することができることとする機構、を提供する。本発明は、有利にも、ソフトウェア・モジュールを主としてリードオンリー・デバイスから直接実行できるようにすると共に、ほんの小さな更新された部分をリード/ライト(read/write)デバイスから実行できるようにする。ソフトウェア・モジュールは、スタンドアロンのアプリケーションであったり、共有のソフトウェア・ライブラリとすることができる。
1つの形態によれば、本発明は、コンピュータ・システム上でソフトウェア・モジュールを実行する方法である。ソフトウェア・モジュールの1部分は、リードオンリー・デバイスからリード/ライト・デバイスにロードする。前記ソフトウェア・モジュールの前記ロードした1部分は、前記リード/ライト・デバイスから直接実行し、前記ソフトウェア・モジュールの残りを前記リードオンリー・デバイスから直接実行する。1実施形態では、前記リード/ライト・デバイス内にロードされた前記ソフトウェア・モジュールの前記1部分に対し、また前記リードオンリー・デバイス内の前記ソフトウェア・モジュールの前記残りに対し、仮想メモリを割り当てる。前記ソフトウェア・モジュールの前記ロードした1部分は、新たなソフトウェア・モジュールを正しくアドレスするように変更する。前記ソフトウェア・モジュールの多くは、リードオンリー・デバイスから直接実行する一方で、ちょうど変更した部分は、リード/ライト・デバイスから実行する。
別の形態によれば、本発明は、計算システムであって、これは、ソフトウェア・モジュールの第1の部分を収容するリードオンリー・デバイスを有する。リード/ライト・デバイスは、前記ソフトウェア・モジュールの第2の部分を収容する。オペレーティング・システムは、前記ソフトウェア・モジュールの前記第1および第2の部分をそれらの対応するデバイスから実行することによって、前記ソフトウェア・モジュールを実行する。
図1は、本発明の実施形態を実施することができるリソース制限形コンピュータのハードウェアおよび動作環境の図である。 図2は、図1に示したコンピュータの機能コンポーネントを示すブロック図。 図3は、実行可能のソフトウェア・アプリケーションおよび共有ライブラリを有するリードオンリー・デバイスの1つの実施形態を示すブロック図。 図4は、仮想メモリから、リード・オンリー・メモリ(ROM)およびランダム・アクセス・メモリ(RAM)を含む物理メモリへのマッピングを示すブロック図。 図5は、本発明が、リードオンリー・デバイスに格納したソフトウェア・モジュールを、リードオンリー・デバイスのコンテンツの再プログラミングを必要とせずに更新する1つの動作モードを示すフローチャート。
本発明の例示的実施形態についての以下の詳細な説明においては、この説明の1部を成す添付図面を参照するが、この添付図面は、例示として本発明を実施できる特定の具体的な実施形態を示している。これら実施形態は、当業者が本発明を実施できるように十分詳細に説明する。他の実施形態も用いることができること、また、論理的、機械的、電気的な変更、および他の変更を、本発明の要旨または範囲から逸脱せずに行うことができることは、理解されるべきである。したがって、以下の詳細な説明は、限定する意味でとられるべきではなく、本発明は、添付の特許請求の範囲の記載によってのみ定められるものである。
詳細な説明は、4つのセクションに分けている。最初のセクションは、本発明で使用するのに適したハードウェアおよび動作環境を説明する。第2のセクションは、発明性のあるシステムの実施形態の詳細な説明を行う。第3のセクションは、本発明の例示的実施形態を動作させる方法を提供する。最後に、第4のセクションは、詳細な説明の結論を提供する。
ハードウェアおよび動作環境
図1は、リードオンリーのアプリケーションを、本発明の種々の実施形態にしたがってランタイムで更新するようになった、リソース制限形コンピュータの図である。本発明は、パーソナル・コンピュータのようなコンピュータが実行する、プログラム・モジュールのようなコンピュータ実行可能命令の一般的なコンテキストで説明する。一般に、プログラム・モジュールは、特定のタスクを実行しまたは特定の抽象的なデータ・タイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。
図1は、代表的なハンドヘルド・パーソナル・コンピュータ(H/PC)20を示し、これは、限られた計算リソースを有している。H/PC20は、ケーシング22を有し、これは、カバーまたはフタ24とベース26とを備えている。H/PC20は、液晶ディスプレイ(LCD)28を有し、タッチ感知型スクリーンをフタ24に装着している。フタ24は、ベース26にヒンジ結合して、ディスプレイ28を露出させる開位置と、このディスプレイを保護する閉位置との間で回転するようにしている。H/PC20には、タッチスクリーン・ディスプレイ28を介してデータを入力するスタイラス30と、小型のキーボード32を設けている。スタイラス30とキーボード32とは、両方ともベース26内に装着している。
また、H/PC20は、赤外線送受信機および/または無線周波数送受信機のような無線送受信機(図示せず)を設けて実現することができる。図示した実現例では、フタ24とベース26を備えた2部分H/PC20を示しているが、H/PCの他の機械的実現例も使用することができる。
図2は、図1に示したH/PC20の主機能コンポーネントを示している。H/PC20は、マイクロプロセッサ40を備え、これは、オペレーティング・システム48を実行する。プロセッサ40は、3つの動作モード、すなわち、フルスピード、スタンバイ、サスペンドを有している。フルスピード・モードは、アプリケーションを実行するのに使用する。スタンバイ・モードは、短時間のアイドル期間において使用する。サスペンド・モードは、長いアイドル期間において使用し、そしてフルスピード・パワーの千分の一未満を使用する。
H/PC20は、割込を与えるため、また他のタイマ・イベント並びに現在の日付および時刻を与えるためタイマ42を備えている。リード・オンリー・メモリ(ROM)44は、オペレーティング・システム48並びにバンドルしたアプリケーション56を格納する。ランダム・アクセス・メモリ(RAM)46は、ユーザがインストールのアプリケーションを実行するためのユーザ領域52と、データを格納するオブジェクト記憶54とを含んでいる。オブジェクト記憶54は、ディスク・ドライブおよびテープ・ドライブのような従来の直接アクセス記憶デバイスの代わりに使用する。加えて、オブジェクト記憶54は、H/PC20のためのレジストリも維持している。ユーザ入力/出力デバイス60は、外部デバイスと通信する。同様に、接続性(connectivity)ブロック62は、シリアルポート、赤外線通信ハードウェア等のような多くの標準の接続性デバイスを表している。
本発明の実施形態を実現できるハードウェアおよび動作環境について、説明する。以下のセクションは、発明性のあるシステムの実施形態のより詳細な説明を提供する。
システム・レベルのオーバービュー
図3は、リード・オンリー・メモリ(ROM)44の1実施形態を示しており、これは、ソフトウェア・アプリケーション56と共有ライブラリ135を中に格納している。リード・オンリー・メモリ(ROM)44は、リードオンリーの任意のメモリアドレス可能のデバイス、あるいはフラッシュメモリ、フラッシュメモリ・カード等のようなブロック書き込みのみをサポートする任意のデバイスとすることができる。
ソフトウェア・アプリケーション56は、ワード処理ソフトウェアのようなアプリケーション・プログラムを表し、これは、ROM44に格納し、またROM44から実行して初期実行速度を高めかつRAM46を温存するようにする。ライブラリ135は、スタンドアロンのアプリケーションではないが、アプリケーション56よってまたは他のライブラリ135によってさえも呼び出す。例えば、1実施形態では、ライブラリ135は、ダイナミックにリンクされたライブラリ(DLL)である。本出願においては、用語“ソフトウェア・モジュール”は、ソフトウェア・アプリケーション56並びにライブラリ135の双方を包含する。コンテンツ・テーブル120は、ROM44内に格納した全てのソフトウェア・アプリケーション56およびライブラリ135をリストし、そして各ソフトウェア・モジュールの対応する開始アドレスを与える。
上述のように、従来のリソース制限形計算デバイスにおいては、ライブラリ135に対するどのような変更も、ROM44全体の再プログラミングあるいはリプレースを必要とすることが多い。パームトップあるいはさらにラップトップのコンピュータのような消費者向け製品では、これは特に問題となるが、それは、ユーザまたはサービス要員が、新たなROM44を物理的にインストールすることを必要とするからである。ユーザは、ライブラリ135のうちの1つに対する新たなバージョンを単にハードディスク・ドライブ27にロードすることはできないが、それは、ROM44内のこのリプレースしたライブラリ135への全ての参照は変更されず、したがって古いバージョンを間違ってポイントするからである。このため、従来のシステムでは、ユーザは、リードオンリー・デバイス全体をリプレースするか、フラッシュメモリ・デバイスの場合においてはそのデバイス全体を再書き込みするか、あるいはアプリケーション56およびライブラリ135の古いバージョンを使用するかせざるを得ない。
本発明を例示するため、ユーザが、より新しいバージョンのライブラリ135Dをコンピュータ20にインストールしており、またソフトウェア・アプリケーション56Aがライブラリ135Dに依存していると仮定する。本発明によれば、ソフトウェア・アプリケーション56Aを実行すべきとき、オペレーティング・システム48は、このアプリケーション56が依存するライブラリ135を識別する。これら依存性全てを識別した後、オペレーティング・システム48は、識別したライブラリ135のうちの任意のもののより新たなバージョンがコンピュータ20にインストールされているかどうか判定を行う。したがって、本例では、オペレーティング・システム48は、ソフトウェア・アプリケーション56Aはライブラリ135Dに依存しており、またより新たなバージョンのライブラリ135Dがコンピュータ20にロードされていると判定する。
新バージョンのライブラリ135Dがインストールされているため、オペレーティング・システム48は、ライブラリ135Dに依存するアプリケーション56および任意の他の所要のライブラリ135を更新することにより、これらがその新たなライブラリを正しく参照するようにする。より詳しくは、オペレーティング・システム48は、RAM46内に1つ以上の物理ページを割り当て、そしてライブラリ135Dを参照するソフトウェア・アプリケーション56Aの1部分をRAM46中にコピーする。その1部分をコピーした後、オペレーティング・システム48は、新バージョンのライブラリ135Dをポイントするように全ての参照を変更する。オペレーティング・システム48は、ソフトウェア・アプリケーション56Aが依存しまたライブラリ135を参照する各ライブラリ135に対してこのプロセスを繰り返す。
次に、オペレーティング・システム48は、ROM44およびRAM46の双方からソフトウェア・アプリケーション56Aを実行する。このようにして、ソフトウェア・アプリケーション56Aのほとんどは、ROM44から実行する一方で、そのちょうど更新した部分はRAM46から実行する。更新したライブラリ135は、それと同様にして実行する。このようにして、本発明は、ROM44内に収容されたライブラリ135の任意のものに対する更新を容易にする。新たなバージョンのライブラリ135Dがインストールされていなかったとした場合、オペレーティング・システム48は、ソフトウェア・アプリケーション56Aを、変更なしのROM44から直接実行していたことになる。
図4に示したように、1実施形態においては、オペレーティング・システム48は、仮想メモリ(VM)システムを備え、これは、仮想メモリ140を物理メモリ145にマッピングする。詳細には、VMシステムは、仮想メモリのページ155を、ROM44またはRAM46のいずれかの中に位置した物理ページにマッピングする。この実施形態では、アプリケーション56を実行するために割り当てた仮想メモリ・ページ155のほとんどは、ROM44内の物理メモリに直接マッピングする。しかし、少数の仮想メモリ・ページ155は、RAM46内において変更されている部分に対し割り当てる。このVMシステムを使用して仮想メモリ・ページをROM44とRAM46の双方にマッピングすることにより、コンピュータ20は、このソフトウェアの小さな部分に対するほんの初期の変更で、アプリケーション56とライブラリ135をシームレスに実行することができる。
本発明の例示的実施形態の方法
前のセクションでは、本発明の例示的実施形態の動作のシステム・レベルのオーバービューを記述した。このセクションでは、この例示的実施形態が実行する特定の方法を、フローチャートを参照して説明する。本実施形態が実行すべき方法は、コンピュータ実行可能の命令から成るコンピュータ・プログラムを構成する。この方法をフローチャートを参照して説明すれば、当業者であれば、そのような命令を含むプログラムを開発して、本方法を適当なコンピュータ上でコンピュータ読み取り可能媒体から実施することができる。
図5は、ROM44内に常駐するソフトウェア・モジュールをランタイムで更新するためのオペレーティング・システム48の動作の1つの例示の方法を示すフローチャート400である。フローチャート400の多くは、ループ403に含まれ、このループでは、オペレーティング・システム48は、実行すべきソフトウェア・アプリケーション56のうちの1つを更新し、そして次に各々の所要のライブラリ135に対しループ403を繰り返す。
オペレーティング・システム48は、フローチャート400をブロック402で開始し、そしてブロック404に進むことによってループ403に入る。ブロック404において、オペレーティング・システム48は、希望のソフトウェア・アプリケーション56を実行するのに必要な全てのライブラリ135を識別する。1実施形態では、各ソフトウェア・アプリケーション56および各ライブラリ135は、インポート・テーブルを収容しており、これは、実行に必要な全てのライブラリ135をリストしている。1つのソフトウェア・モジュールに対する1つのインポート・テーブルは、32ビットのポインタのアレイであって、これは、1つのソフトウェア・モジュールに対する全ての必要なインポートを識別する。その最後のエントリは、ゼロ(ヌル)にセットされて、このテーブルの終わりを示す。例えば、ソフトウェア・アプリケーション56Aに対するインポート・テーブルは、実行に必要なものとしてライブラリ135A,135B,135Cを識別することがある。
ブロック406においては、オペレーティング・システム48は、それら識別したライブラリ135の任意のものに対して新たなバージョンがインストールされているかどうか判定を行う。新たなバージョンが存在するかどうか判定するため、オペレーティング・システム48は、予め定めたサーチ経路に従い、そしてこの間に所要のライブラリ135と同一のネームをもつファイルを探す。例えば、オペレーティング・システム48は、任意の装着されたボリュームを求めてルート・ディレクトリを調べ、コンピュータ20のビルトインのボリュームを求めてルート・ディレクトリを調べ、またオペレーティング・システムの特定のディレクトリを調べる。所要のライブラリ135の1つと同一ネームをもつオペレーティング・システム48が見つけ出した任意のファイルは、新バージョンとみなす。
より新たなバージョンがインストールされていない場合、オペレーティング・システム48は、ブロック412にジャンプし、そしてソフトウェア・アプリケーション56Aの実行に必要な各ライブラリ135に対しループ403を繰り返す。新バージョンが必要なライブラリ135の1つあるいはそれ以上に対しインストールされている場合、オペレーティング・システム48は、ブロック406からブロック408へ進む。
ブロック408においては、オペレーティング・システム48は、RAM46内の1つ以上の物理ページを割り当て、そしてソフトウェア・アプリケーション56の1部をこの割り当てたページにロードする。詳細には、オペレーティング・システム48は、ROM44からRAM46にライブラリ135への参照を含むそれら物理ページをロードする。例えば、1実施形態においては、オペレーティング・システム48は、インポート・テーブルまたはこれの1部をRAM46にロードする。
ブロック410においては、オペレーティング・システム48は、RAM46にロードしたアプリケーション135の部分を変更する。オペレーティング・システム48は、このRAMベースの部分を更新して、複製したライブラリ135へのどのような参照も新バージョンをポイントするようにする。1実施形態では、オペレーティング・システム48は、RAM46中にコピーしたインポート・テーブルを変更する。
RAMベースの部分を更新した後、オペレーティング・システム48は、ブロック412に進み、そして希望のソフトウェア・アプリケーション56を実行するのに必要な各ライブラリ135に対しループ403を繰り返す。全ての依存性を調べ終わりまた必要な場合に全てのライブラリ135を更新し終えたとき、オペレーティング・システム48は、ループ403を出てそしてブロック414に進む。
ブロック414においては、オペレーティング・システム48は、アプリケーション56を実行する。アプリケーションを実行するには、オペレーティング・システム56は、アプリケーション56と任意の必要なライブラリ135が消費する物理メモリ・ページにマッピングする1組の仮想メモリ・ページ155を割り当てる。アプリケーション56の部分と必要なライブラリ135をRAM46にコピーした場合、オペレーティング・システム56は、VMシステムに対し命令して、この仮想メモリ・ページ155をその更新した部分にマッピングさせる。一旦仮想メモリ140がROMベースの部分とRAMベースの部分に対し割り当てられると、コンピュータ20は、アプリケーション56をシームレスに実行する。
ソフトウェア・アプリケーション56が実行を完了すると、オペレーティング・システム48は、ブロック416に進み、仮想メモリ・ページ155の割り当てを解除し、そしてRAM46にコピーしたソフトウェア・アプリケーション56の全ての部分およびライブラリ135を除去する。
結び
コンピュータのリードオンリー・デバイスに格納したソフトウェア・モジュールを更新するための種々の実施形態について説明した。本発明は、ユーザが、ROMベースのソフトウェア・モジュールが使用するソフトウェア・モジュールの新たなバージョンのインストールを、ユーザによる新たなROMのインストールを必要とせずに行うことができることとする機構を提供する。本発明により、1次的にリードオンリー・デバイスから実行する一方で、小さな部分のみを更新しそしてリード/ライト・デバイスから実行することが有利にできるようになる。ソフトウェア・モジュールは、スタンドアロンのソフトウェア・アプリケーションであったり共有のソフトウェア・ライブラリとすることができる。
以上、特定の実施形態について図示し説明したが、当業者には分かるように、同一の目的を達成するように計画されたどのような配置も、図示した特定の実施形態と置き換えることができる。したがって、本願は、本発明のどのような適合例あるいは変更例も包含するよう意図している。

Claims (8)

  1. 仮想メモリ・システムを含むオペレーティング・システムを備えたコンピュータ上でソフトウェア・モジュールを実行する方法であって、前記コンピュータは、リードオンリー・デバイスとリード/ライト・デバイスを含み、前記リードオンリー・デバイスはフラッシュメモリであり、前記方法が、前記コンピュータの前記リードオンリー・デバイスに格納された第1のソフトウェア・モジュールを実行するとき、
    前記第1のソフトウェア・モジュールに含まれるインポート・テーブルを前記オペレーティング・システムが調べて、前記第1のソフトウェア・モジュールが参照する前記リードオンリー・デバイスに格納された少なくとも1つの第2のソフトウェア・モジュールを識別するステップであって、前記インポート・テーブルは、前記少なくとも1つの第2のソフトウェア・モジュールに対する参照を少なくともリストしている、前記のステップと、
    各前記第2ソフトウェア・モジュールが前記リードオンリー・デバイスに格納された更新されたバージョンを有するかどうかを、前記オペレーティング・システムが、前記リードオンリー・デバイスが各前記第2ソフトウェア・モジュールと同じネームのソフトウェア・モジュールを格納しているかどうかを判定することによってチェックするステップと、
    各前記第2ソフトウェア・モジュールが前記更新されたバージョンを有する場合、前記第1ソフトウェア・モジュールの前記インポート・テーブルを、前記コンピュータの前記リード/ライト・デバイスに前記オペレーティング・システムがコピーするステップと、
    前記リード/ライト・デバイス内のコピーした前記インポート・テーブルにおける各前記第2ソフトウェア・モジュールに対する参照を、前記更新されたバージョンを参照するように前記オペレーティング・システムが変更して変更されたインポート・テーブルを生成するステップと、
    前記少なくとも1つの第2のソフトウェア・モジュールが更新されたバージョンを有する場合、前記リードオンリー・デバイス及び前記リード/ライト・デバイスに対し仮想メモリを前記仮想メモリ・システムが割り当てるステップであって、前記仮想メモリを、前記リード/ライト・デバイスに格納された前記第1ソフトウェア・モジュールの前記変更されたインポート・テーブルと、前記リードオンリー・デバイスに格納された前記第1ソフトウェア・モジュールの残りとに割り当てることを含む、前記のステップと、
    を備えたソフトウェア・モジュール実行方法。
  2. 請求項1記載の方法において、前記リード/ライト・デバイスはランダム・アクセス・メモリを含む、を特徴とするソフトウェア・モジュール実行方法。
  3. 請求項1記載の方法において、前記コピーするステップは、前記リードオンリー・デバイスからの少なくとも1つの物理メモリ・ページを、前記リード/ライト・デバイスの物理メモリ・ページにコピーすることを含むこと、を特徴とするソフトウェア・モジュール実行方法。
  4. コンピュータ実行可能の命令を有するコンピュータ読み取り可能媒体であって、前記コンピュータが、リードオンリー・デバイスとリード/ライト・デバイスを含み、前記リードオンリー・デバイスはフラッシュメモリであり、前記命令が、前記コンピュータに、コンピュータの前記リードオンリー・デバイスに格納された第1のソフトウェア・モジュールを実行するとき、
    前記第1ソフトウェア・モジュールに含まれるインポート・テーブルを調べて、前記第1ソフトウェア・モジュールが参照する前記リードオンリー・デバイスに格納された少なくとも1つの第2のソフトウェア・モジュールを識別するステップであって、前記インポート・テーブルは、前記少なくとも1つの第2のソフトウェア・モジュールに対する参照を少なくともリストしている、前記のステップと、
    各前記第2ソフトウェア・モジュールが前記リードオンリー・デバイスに格納された更新されたバージョンを有するかどうかを、前記リードオンリー・デバイスが各前記第2ソフトウェア・モジュールと同じネームのソフトウェア・モジュールを格納しているかどうかを判定することによってチェックするステップと、
    各前記第2ソフトウェア・モジュールが前記更新されたバージョンを有する場合、前記第1ソフトウェア・モジュールの前記インポート・テーブルを、前記コンピュータの前記リード/ライト・デバイスにコピーするステップと、
    前記リード/ライト・デバイス内のコピーした前記インポート・テーブルにおける各前記第2ソフトウェア・モジュールに対する参照を、前記更新されたバージョンを参照するように変更して変更されたインポート・テーブルを生成するステップと、
    前記少なくとも1つの第2のソフトウェア・モジュールが更新されたバージョンを有する場合、前記リードオンリー・デバイス及び前記リード/ライト・デバイスに対し仮想メモリを割り当てるステップであって、前記仮想メモリを、前記リード/ライト・デバイスに格納された前記第1ソフトウェア・モジュールの前記変更されたインポート・テーブルと、前記リードオンリー・デバイスに格納された前記第1ソフトウェア・モジュールの残りとに割り当てることを含む、前記のステップと、
    を備えた方法を実行させるコンピュータ読み取り可能媒体。
  5. 仮想メモリ・システムを含むオペレーティング・システムを備えた計算システムであって、
    第1のソフトウェア・モジュールと、該第1ソフトウェア・モジュールが参照する少なくとも1つの第2のソフトウェア・モジュールとを収容するリードオンリー・デバイスであって、該リードオンリー・デバイスはフラッシュメモリであり、前記第1のソフトウェア・モジュールはインポート・テーブルを含み、前記インポート・テーブルは、該リードオンリー・デバイスに格納された前記少なくとも1つの第2のソフトウェア・モジュールに対する参照を少なくともリストしている、前記のリードオンリー・デバイスと、
    インポート・テーブルを収容するリード/ライト・デバイスであって、該リード/ライト・デバイスに収容された前記インポート・テーブルは、前記リードオンリー・デバイスに収容された前記第1のソフトウェア・モジュールの前記インポート・テーブルをコピーすることによって格納されたものであって、前記少なくとも1つの第2ソフトウェア・モジュールの更新されたバージョンを参照するように変更された参照をリストしており、前記少なくとも1つの第2のソフトウェア・モジュールの前記更新されたバージョンは前記リードオンリー・デバイスに格納されており、前記更新されたバージョンは、前記リードオンリー・デバイスが各前記第2ソフトウェア・モジュールと同じネームのソフトウェア・モジュールを格納しているかどうかを判定することによって識別する、前記のリード/ライト・デバイスと、
    を備え、
    前記少なくとも1つの第2のソフトウェア・モジュールが更新されたバージョンを有する場合、前記仮想メモリ・システムは、前記リードオンリー・デバイス及び前記リード/ライト・デバイスに対し仮想メモリを割り当て、該割り当てが、前記仮想メモリを、前記リード/ライト・デバイスに格納された前記第1ソフトウェア・モジュールの前記インポート・テーブルと、前記リードオンリー・デバイスに格納された前記第1ソフトウェア・モジュールの残りとに割り当てることを含む、
    計算システム。
  6. 請求項5記載のシステムにおいて、前記リードオンリー・デバイスはリード・オンリー・メモリであり、前記リード/ライト・デバイスはランダム・アクセス・メモリであること、を特徴とする計算システム。
  7. 請求項5記載のシステムにおいて、さらに、前記オペレーティング・システムは、前記リードオンリー・デバイスからの少なくとも1つの物理メモリ・ページを、前記リード/ライト・デバイスの物理メモリ・ページにコピーすること、を特徴とする計算システム。
  8. 請求項5記載の計算システムであって、該計算システムは、ハンドヘルド・パーソナル・コンピュータである、計算システム。
JP2009007212A 1999-03-03 2009-01-16 ソフトウェア・モジュールを実行する方法及び計算システム Expired - Fee Related JP4608580B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/261,686 US6637023B1 (en) 1999-03-03 1999-03-03 Method and system for updating read-only software modules

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2000602926A Division JP2002538547A (ja) 1999-03-03 2000-03-03 リードオンリー・ソフトウェア・モジュールの更新

Publications (2)

Publication Number Publication Date
JP2009140512A JP2009140512A (ja) 2009-06-25
JP4608580B2 true JP4608580B2 (ja) 2011-01-12

Family

ID=22994416

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000602926A Pending JP2002538547A (ja) 1999-03-03 2000-03-03 リードオンリー・ソフトウェア・モジュールの更新
JP2009007212A Expired - Fee Related JP4608580B2 (ja) 1999-03-03 2009-01-16 ソフトウェア・モジュールを実行する方法及び計算システム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2000602926A Pending JP2002538547A (ja) 1999-03-03 2000-03-03 リードオンリー・ソフトウェア・モジュールの更新

Country Status (9)

Country Link
US (1) US6637023B1 (ja)
EP (1) EP1159677B1 (ja)
JP (2) JP2002538547A (ja)
AT (1) ATE230859T1 (ja)
AU (1) AU3721600A (ja)
DE (1) DE60001153T2 (ja)
DK (1) DK1159677T3 (ja)
ES (1) ES2190408T3 (ja)
WO (1) WO2000052573A2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6795965B1 (en) * 2000-05-10 2004-09-21 Microsoft Corporation Multi-source program module updater
US20050154885A1 (en) * 2000-05-15 2005-07-14 Interfuse Technology, Inc. Electronic data security system and method
US6874139B2 (en) * 2000-05-15 2005-03-29 Interfuse Technology Corporation Method and system for seamless integration of preprocessing and postprocessing functions with an existing application program
US7310800B2 (en) * 2001-02-28 2007-12-18 Safenet, Inc. Method and system for patching ROM code
GB0120594D0 (en) * 2001-08-24 2001-10-17 Koninkl Philips Electronics Nv Upgrading software held in read-only storage
US6968183B2 (en) * 2001-11-02 2005-11-22 Telefonaktiebolaget Lm Ericsson (Publ) Determining a multi-module dependent parameter at a telecommunication node
US7467139B1 (en) * 2001-11-13 2008-12-16 Unisys Corporation Library lock management
US7222258B2 (en) * 2002-12-18 2007-05-22 Intel Corporation Compressing a firmware image
US20040205776A1 (en) * 2003-04-10 2004-10-14 International Business Machines Corporation Method and apparatus for concurrent update and activation of partition firmware on a logical partitioned data processing system
US20050039196A1 (en) * 2003-08-13 2005-02-17 Sasidharan Prasanth Nalini Method and system for using a library
US7562359B1 (en) * 2004-08-26 2009-07-14 Wind River Systems, Inc. User process object code installer
TWI277895B (en) * 2005-01-05 2007-04-01 Lite On Technology Corp Library extracting device and method for automatically extracting libraries of an embedded operating system
US7966612B2 (en) * 2005-04-28 2011-06-21 International Business Machines Corporation Method, system and computer program for installing shared software components
KR100735552B1 (ko) * 2005-09-23 2007-07-04 삼성전자주식회사 코드 메모리 상의 프로그램의 코드 크기를 줄이는 방법
JP4911576B2 (ja) * 2006-03-24 2012-04-04 株式会社メガチップス 情報処理装置および追記型メモリ利用方法
US20080282022A1 (en) * 2007-05-09 2008-11-13 Broadcom Corporation, A California Corporation Partially storing software functions that are not expected to change over time in ROM instead of RAM
AU2014203156B2 (en) * 2009-11-23 2016-02-04 Julian Michael Urbach Stream-based software application delivery and launching system
US8584120B2 (en) * 2009-11-23 2013-11-12 Julian Michael Urbach Stream-based software application delivery and launching system
US10114660B2 (en) 2011-02-22 2018-10-30 Julian Michael Urbach Software application delivery and launching system
CN108494866A (zh) * 2018-03-30 2018-09-04 北京小米移动软件有限公司 信息处理方法及服务器、终端设备
WO2021201914A1 (en) * 2020-03-31 2021-10-07 Arris Enterprises Llc Cloud-based computer with runtime-mapped software versions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04259046A (ja) * 1991-02-13 1992-09-14 Nec Software Ltd Romパッチ方式
JPH04294183A (ja) * 1991-03-25 1992-10-19 Tohoku Ricoh Co Ltd プログラム組込型機器
JPH10157250A (ja) * 1996-11-27 1998-06-16 Toshiba Corp 画像形成装置と画像形成装置の機能拡張方法
JPH10228381A (ja) * 1997-01-27 1998-08-25 Internatl Business Mach Corp <Ibm> 組み込みシステムにライブラリをロードする方法及び装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4542453A (en) * 1982-02-19 1985-09-17 Texas Instruments Incorporated Program patching in microcomputer
US5237669A (en) * 1991-07-15 1993-08-17 Quarterdeck Office Systems, Inc. Memory management method
CA2158848A1 (en) 1993-03-23 1994-09-29 Erik L. Eidt Apparatus and method for a relocatable file format
US5581768A (en) 1995-02-27 1996-12-03 Intel Corporation Method and apparatus for executing applications in place from write once/seldom memories
US5815718A (en) 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US6154878A (en) * 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04259046A (ja) * 1991-02-13 1992-09-14 Nec Software Ltd Romパッチ方式
JPH04294183A (ja) * 1991-03-25 1992-10-19 Tohoku Ricoh Co Ltd プログラム組込型機器
JPH10157250A (ja) * 1996-11-27 1998-06-16 Toshiba Corp 画像形成装置と画像形成装置の機能拡張方法
JPH10228381A (ja) * 1997-01-27 1998-08-25 Internatl Business Mach Corp <Ibm> 組み込みシステムにライブラリをロードする方法及び装置

Also Published As

Publication number Publication date
AU3721600A (en) 2000-09-21
DK1159677T3 (da) 2003-04-07
JP2009140512A (ja) 2009-06-25
EP1159677A2 (en) 2001-12-05
WO2000052573A2 (en) 2000-09-08
ES2190408T3 (es) 2003-08-01
JP2002538547A (ja) 2002-11-12
EP1159677B1 (en) 2003-01-08
ATE230859T1 (de) 2003-01-15
DE60001153T2 (de) 2003-05-15
US6637023B1 (en) 2003-10-21
WO2000052573A3 (en) 2001-02-15
DE60001153D1 (de) 2003-02-13

Similar Documents

Publication Publication Date Title
JP4608580B2 (ja) ソフトウェア・モジュールを実行する方法及び計算システム
JP3314378B2 (ja) 実行可能プログラムに対するメモリ割当を管理するシステムおよび方法
EP2891060B1 (en) Layout and execution of software applications using bpram
US9740500B2 (en) Layout system for operating systems using BPRAM
US7246346B2 (en) System and method for persisting dynamically generated code in a directly addressable and executable storage medium
US7162626B2 (en) Use of common language infrastructure for sharing drivers and executable content across execution environments
JP2006079628A (ja) ユーザデータをパーティションファイルに記憶する、又はユーザデータを含むパーティションファイルを使用するシステム及び方法
JP2022545012A (ja) メモリー・アパーチャのフラッシュ・オーダーを使用したデーター保存
US6438621B1 (en) In-memory modification of computer programs
US8677101B2 (en) Method and apparatus for cooperative software multitasking in a processor system with a partitioned register file
CN114756296A (zh) 可读写挂载启动方法、装置、存储介质及电子设备
US6772296B1 (en) Method and apparatus facilitating automatic persistence in asymmetric storage
KR20000002446A (ko) 주기억장치와 보조기억장치사이의 스와핑 장치및 방법, 그 장치를 채용한 웹비디오 폰
US7234039B1 (en) Method, system, and apparatus for determining the physical memory address of an allocated and locked memory buffer
Okafor et al. Eliminating the operating system via the bare machine computing paradigm
US20050027940A1 (en) Methods and apparatus for migrating a temporary memory location to a main memory location
Abramson Computer hardware to support capability based addressing in a large virtual memory
Yang et al. A RISC-V On-chip Operating System Based on Rust
Darlet Runtime Loader-Linker Technologies
Lee VORTOS: Versatile Object-Oriented Real-Time Operating System
JP2014157434A (ja) プログラム生成方法、プログラム実行方法、プログラム生成装置、プログラム生成プログラム、プログラム実行装置およびプログラム実行プログラム
WO2000077613A2 (en) Method and system for managing and using persistent storage

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100224

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100527

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100909

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101008

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131015

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees