(57)【特許請求の範囲】
【請求項１】
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
ことを特徴とするアプリケーションロード方法。
【請求項２】
前記プログラマブル読み取り専用メモリはフラッシュメモリである
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記実行可能ファイルはＥＬＦファイルであり、前記所定のデータセグメントはマシン命令データセグメントと、読み取り専用データデータセグメントとを含み、
前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップには、
前記ＥＬＦファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索するステップと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置するステップと、
前記ＥＬＦファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索するステップと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置するステップと、を含む
ことを特徴とする請求項１から２のいずれか１項に記載の方法。
【請求項４】
前記ＥＬＦファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーするステップと、
未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を０として設定するステップと、
前記ＥＬＦファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するステップと、
初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及び前記アドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するステップと、をさらに含む
ことを特徴とする請求項３に記載の方法。
【請求項５】
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択する選択ユニットと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置する再配置ユニットと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするロードユニットと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶する記憶ユニットと、を含む
ことを特徴とするアプリケーションロード装置。
【請求項６】
前記プログラマブル読み取り専用メモリはフラッシュメモリである
ことを特徴とする請求項５に記載の装置。
【請求項７】
前記再配置ユニットは、
前記実行可能ファイルがＥＬＦファイルであり、前記所定のデータセグメントがマシン命令データセグメントと、読み取り専用データデータセグメントとを含む場合、前記ＥＬＦファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索する第１の検索サブユニットと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置する第１の計算サブユニットと、
前記ＥＬＦファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索する第２の検索サブユニットと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置する第２の計算サブユニットと、を含む
ことを特徴とする請求項５から６のいずれか１項に記載の装置。
【請求項８】
前記ＥＬＦファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーするコピーユニットと、
未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を０として設定する設定ユニットと、
前記ＥＬＦファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するオフセット量検索ユニットと、
初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及び前記アドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するロードアドレス計算ユニットと、をさらに含む
ことを特徴とする請求項７に記載の装置。
【請求項９】
プロセッサと、
メモリと、を備えており、
前記メモリに前記プロセッサにより実行可能なコンピュータ可読命令が記憶され、前記コンピュータ可読命令が実行される場合、前記プロセッサがアプリケーションロード方法を実行し、前記方法は、
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
ことを特徴とする機器。
【請求項１０】
不揮発性コンピュータ記憶媒体であって、
プロセッサにより実行可能なコンピュータ可読命令が記憶され、前記コンピュータ可読命令がプロセッサに実行される場合、前記プロセッサがアプリケーションロード方法を実行し、前記方法は、
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
ことを特徴とする不揮発性コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
［優先権主張］
本願は２０１５年１２月２５日に提出した、出願番号が２０１５１０９９４２６１．４である中国特許出願に基づく優先権を主張し、当該出願の全文を引用により本願に組み込む。
【０００２】
［技術分野］
本願はコンピュータ分野に関し、具体的にアプリケーション分野に関し、特にアプリケーションロード方法及び装置に関する。
【背景技術】
【０００３】
組み込みシステムにおいて、アプリケーションをロードする時に、一般的に、フラッシュメモリに実行可能ファイルの二進法コードを記憶し、フラッシュメモリに命令を直接実行する方式を用いる。アプリケーションをロードする過程で、アプリケーションのアセンブラコードにおけるシンボルを再配置（relocate）して、シンボルに絶対アドレスを有させ、アプリケーションをロードする必要がある。
【０００４】
しかしながら、上記方式でアプリケーションをロードする時に、シンボルに対する再配置ごとに当該シンボルの所在するメモリの記憶ブロック全体に対して消去操作を行う必要があり、さらにシステムオーバーヘッド及びフラッシュメモリの損耗を大幅に増加する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願はアプリケーションロード方法及び装置を提供し、上記背景技術部分に存在する技術問題を解決する。
【課題を解決するための手段】
【０００６】
第１の態様では、本願はアプリケーションロード方法を提供し、この方法は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に、前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む。
【０００７】
第２の態様では、本願はアプリケーションロード装置を提供し、この装置は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に、前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択する選択ユニットと、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置する再配置ユニットと、再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするロードユニットと、前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶する記憶ユニットと、を含む。
【０００８】
本願の提供するアプリケーションロード方法及び装置は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択するステップと、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、再配置された前記所定のデータセグメントを前記記憶空間にコピーするステップと、によって、メモリに実行可能ファイルのコード部分を再配置することを実現し、その後に、再配置後のコード部分をプログラマブル読み取り専用メモリに書き戻し、それにより、記憶ブロックに対する１回の消去操作だけでコード部分の再配置を完了することができ、アプリケーションロード過程のシステムオーバーヘッドを減少させとともに、プログラマブル読み取り専用メモリの損耗を低下させる。
【０００９】
以下の図面を参照しながら行った非限定的な実施例についての詳細な説明に基づいて、本願の他の特徴、目的や利点はより明瞭になる。
【図面の簡単な説明】
【００１０】
【図１】本願を適用できる例示的なシステムアーキテクチャー図である。
【図２】本願に係るアプリケーションロード方法の一実施例のフローチャートを示す。
【図３】本実施例におけるアプリケーションをロードする一例示的原理図を示す。
【図４】本願のアプリケーションロード方法の一例示的フローチャートを示す。
【図５】本願に係るアプリケーションロード装置の一実施例の構造模式図を示す。
【図６】本願の実施例を実現するための端末装置又はサーバに適用されるコンピュータシステムの構造模式図である。
【発明を実施するための形態】
【００１１】
以下、図面及び実施例を参照しながら本発明をより詳細に説明する。ここで説明する具体的な実施例は、かかる発明を説明するものに過ぎず、当該発明を限定するものではないと理解すべきである。ただし、説明の便宜上、図面に発明に関連する部分のみが示されている。
【００１２】
なお、衝突しない場合、本願の実施例及び実施例の特徴を相互に組み合せてもよい。以下、図面及び実施例を参照しながら本願を詳細に説明する。
【００１３】
図１は本願の情報抽出方法又は情報抽出装置を適用できる実施例の例示的なシステムアーキテクチャー１００を示す。
【００１４】
図１に示されるように、システムアーキテクチャー１００は、端末装置１０１、１０２、１０３、ネットワーク１０４及びサーバ１０５を備えてもい。ネットワーク１０４は端末装置１０１、１０２、１０３とサーバ１０５の間に通信リンクを提供する媒体に用いられている。ネットワーク１０４は様々な接続タイプ、例えば有線、無線通信リンク又は光ファイバーケーブル等を含んでもよい。
【００１５】
ユーザは端末装置１０１、１０２、１０３を用いてネットワーク１０４を介してサーバ１０５とインタラクションして、それによりメッセージなどを送受信することができる。端末装置１０１、１０２、１０３に、様々な通信クライアントアプリケーション、例えばネットワークセキュリティアプリケーション、インスタントメッセージングツール等がインストールされてもよい。
【００１６】
端末装置１０１、１０２、１０３はディスプレーを有し且つネットワーク通信をサポートする各種の電子機器であってもよく、スマートフォン、タブレットＰＣ、ｅ−Ｂｏｏｋリーダー、ＭＰ３プレーヤー (Moving Picture Experts Group Audio Layer III、ムービング・ピクチャー・エクスパーツ・グループオーディオレイヤーIII)、ＭＰ４プレーヤー(Moving Picture Experts Group Audio LayerＩＶ、ムービング・ピクチャー・エクスパーツ・グループオーディオレイヤーＩＶ)、ラップトップ型コンピュータ及びデスクトップコンピュータなどを含むが、それらに限定されるものではない。
【００１７】
サーバ１０５は各種のサービスを提供するサーバ、例えば端末装置１０１、１０２、１０３におけるアプリケーションにデータサポートを提供するサーバであってもよい。サーバ１０５は端末装置１０１、１０２、１０３から送信される検索要求を受信して検索要求を処理することができ、処理結果（アプリケーションの実行可能ファイルの再配置情報）を端末装置にフィードバックする。
【００１８】
なお、図１における端末装置、ネットワーク及びサーバの数は例示的なものに過ぎない。必要に応じて、端末装置、ネットワーク及びサーバの数が任意であってもよい。
【００１９】
本願に係るアプリケーションロード方法の一実施例のプロセス２００を示す図２を参照する。本実施例で提供されるアプリケーションロード方法は図１の端末装置１０１、１０２、１０３によって実行されることができる。当該方法は以下のステップを含む。
【００２０】
ステップ２０１：プログラマブル読み取り専用メモリにおいてアプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択する。
【００２１】
本実施例では、アプリケーションの実行可能ファイルはプログラマブル読み取り専用メモリに記憶されることができる。実行可能ファイルが複数のデータセグメントを含み、アプリケーションをロードする時に、即ち、アプリケーションの実行可能ファイルをロードする時に、所定のデータセグメントは、プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである。本実施例では、プログラマブル読み取り専用メモリにおいて所定のデータセグメントを記憶するための記憶空間を選択することができ、当該記憶空間は再配置された所定のデータセグメントを記憶することに用いられる。
【００２２】
本実施例のいくつかの選択可能な実施形態では、プログラマブル読み取り専用メモリはフラッシュメモリである。本実施例では、アプリケーションの実行可能ファイルはフラッシュメモリに記憶されることができ、フラッシュメモリにおいて再配置された所定のデータセグメントを記憶するための記憶空間を予め選択することができる。
【００２３】
ステップ２０２：所定のデータセグメントをメモリにコピーし、且つ記憶空間の開始アドレスに基づいて所定のデータセグメントを再配置する。
【００２４】
本実施例では、アプリケーションをロードする時に、まず、所定のデータセグメントをメモリにコピーすることができ、次に、プログラマブル読み取り専用メモリにおいて予め選択された記憶空間の開始アドレスに基づいて当該所定のデータセグメントを再配置し、即ち、所定のデータセグメントにおけるシンボルのロードアドレスを確定することができる。
【００２５】
以下、まずアセンブラ命令ｊｍｐ  ｅｘｐ及びｅｘｐ：ｐｕｓｈを例として、再配置の原理を説明する。アセンブラ命令ｅｘｐ：ｐｕｓｈはシンボルｅｘｐに対応するアドレスにプッシュ命令（即ちｐｕｓｈ命令）が記憶されていることを示す。アセンブラ命令ｊｍｐ  ｅｘｐの作用はシンボルｅｘｐに対応するアドレスにジャンプし、当該アドレスにおけるプッシュ命令を実行することである。仮にシンボルｅｘｐのコンパイル時のコンパイルアドレスが１０００ｈであるとすると、アセンブラ命令をコンパイルした後に、ｊｍｐ  ｅｘｐがｊｍｐ  １０００ｈに変換される。アプリケーションをロードする時に、アセンブラ命令をコンパイルする時にアドレス０を開始アドレスとして統一的に用いてコンパイルし、ロード時に任意の位置にロードされて実行する可能性があるため、シンボルを再配置し、即ち、アセンブラ命令におけるシンボルに対応するロードアドレス（絶対アドレスとも呼ばれる）を改めて確定し、且つアセンブラ命令におけるシンボル（即ちｅｘｐシンボル）に対応するアドレスを確定されたロードアドレスに修正する必要があり、それにより、当該命令を実行する。
【００２６】
本実施例のいくつかの選択可能な実施形態では、実行可能ファイルはＥＬＦファイルであり、所定のデータセグメントはマシン命令データセグメントと、読み取り専用データデータセグメントとを含み、記憶空間の開始アドレスに基づいて所定のデータセグメントを再配置するステップには、ＥＬＦファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索するステップと、開始アドレス及びアドレスオフセット量に基づいて、オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置するステップと、ＥＬＦファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索するステップと、開始アドレス及びアドレスオフセット量に基づいて、読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置するステップと、を含む。
【００２７】
本実施例では、アプリケーションの組み込み機器（例えばモノのインターネット機器）でのロードをサポートするために、実行可能ファイルは再配置可能なファイル形式であるＥＬＦ形式のファイル（ＥＬＦファイルと略称）であってもよい。まず、ＥＬＦファイルの構成を説明する。ＥＬＦファイルにおいて、データセグメント（ｓｅｃｔｉｏｎ）でファイルの内容を記述する。ＥＬＦファイルにおいて、データがコンパイル済みのアプリケーションのマシンコードであるマシン命令データセグメント（．ｔｅｘｔ）と、データが読み取り専用データである読み取り専用データデータセグメント（．ｒｏｄａｔａ）と、データが初期化済みのグローバル変数である初期化済みのグローバル変数データセグメント（．ｄａｔａ）と、未初期化のグローバル変数データセグメント（．ｂｓｓ）と、を含む。アプリケーションの実行可能ファイルはＥＬＦファイルである場合、アプリケーションをロードする時に、即ち、アプリケーションのＥＬＦファイルをロードする時に、ＥＬＦファイルにおけるマシン命令データセグメント（．ｔｅｘｔ）及び読み取り専用データデータセグメント（．ｒｏｄａｔａ）がフラッシュメモリにロードされることができ、ＥＬＦファイルにおける初期化済みのグローバル変数データセグメント（．ｄａｔａ）及び未初期化のグローバル変数データセグメント（．ｂｓｓ）がメモリにロードされることができる。
【００２８】
本実施例では、マシン命令データセグメント（．ｔｅｘｔ）と読み取り専用データデータセグメント（．ｒｏｄａｔａ）を総称してコード部分（ｃｏｄｅ）ということができる。初期化済みのグローバル変数データセグメント（．ｄａｔａ）と未初期化のグローバル変数データセグメント（．ｂｓｓ）を総称してデータ部分（ｄａｔａ）ということができる。ＥＬＦファイルをロードする時に、コード部分（ｃｏｄｅ）とデータ部分（ｄａｔａ）を再配置する必要があり、即ち、ＥＬＦファイルにおけるコード部分（ｃｏｄｅ）とデータ部分（ｄａｔａ）のうちのシンボルのロードアドレスを計算する必要がある。コード部分（ｃｏｄｅ）とデータ部分（ｄａｔａ）を再配置する過程において、ＥＬＦファイルにおけるマシン命令アドレスオフセットデータセグメント（．ｒｅｌ．ｔｅｘｔ）、読み取り専用データアドレスオフセットデータセグメント（．ｒｅｌ．ｒｏｄａｔａ）、初期化済みのグローバル変数アドレスオフセットデータセグメント（．ｒｅｌ．ｄａｔａ）を利用して、コード部分とデータ部分を再配置することができる。
【００２９】
本実施例のいくつかの選択可能な実施形態では、ＥＬＦファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーするステップと、未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を０として設定するステップと、ＥＬＦファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するステップと、初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及びアドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するステップと、をさらに含む。
【００３０】
以下、プログラマブル読み取り専用メモリがフラッシュメモリであることを例として、それぞれＥＬＦファイルにおけるコード部分（ｃｏｄｅ）及びデータ部分（ｄａｔａ）の再配置過程を説明する。本実施例では、以下の方式でＥＬＦファイルにおけるコード部分（ｃｏｄｅ）を再配置することができる。まず、フラッシュメモリにおいてコード部分（ｃｏｄｅ）、即ちマシン命令データセグメント（．ｔｅｘｔ）及び読み取り専用データデータセグメント（．ｒｏｄａｔａ）にコード部分（ｃｏｄｅ）が占用する記憶空間の大きさを有する記憶空間を予め割り当て、且つ当該記憶空間の開始アドレスを記録する。その後に、メモリに上記記憶空間の大きさと等しい記憶空間を割り当て、マシン命令データセグメント（．ｔｅｘｔ）及び読み取り専用データデータセグメント（．ｒｏｄａｔａ）をメモリにコピーする。メモリにおいてマシン命令データセグメント（．ｔｅｘｔ）を再配置する時に、マシン命令アドレスオフセットデータセグメント（．ｒｅｌ．ｔｅｘｔ）からマシン命令データセグメントにおけるマシン命令のオペランド、即ち命令に引用されるシンボルに対応するアドレスオフセット量を検索し、上記開始アドレス及びアドレスオフセット量に基づいて、オペランドに対応するロードアドレスを計算し、それにより、命令におけるオペランドのロードアドレス、即ち命令に引用されるシンボルに対応するロードアドレスを算出する。マシン命令における全てのシンボルに対応するロードアドレスを算出した後に、マシン命令データセグメントの再配置を完了する。メモリにおいて読み取り専用データデータセグメント（．ｒｏｄａｔａ）を再配置する時に、読み取り専用データアドレスオフセットデータセグメント（．ｒｅｌ．ｒｏｄａｔａ）から読み取り専用データデータセグメントの読み取り専用データに対応するアドレスオフセット量を検索し、開始アドレス及びアドレスオフセット量に基づいて、読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置することができる。
【００３１】
本実施例では、以下の方式でＥＬＦファイルにおけるデータ部分（ｄａｔａ）を再配置することができる。メモリにおいて初期化済みのグローバル変数データセグメント（．ｄａｔａ）と未初期化のグローバル変数データセグメント（．ｂｓｓ）の２つのデータセグメントが占用する記憶空間の大きさを有する記憶空間を割り当て、初期化済みのグローバル変数データセグメント（．ｄａｔａ）及び未初期化のグローバル変数データセグメント（．ｂｓｓ）を割り当てられたメモリにコピーする。未初期化のグローバル変数データセグメント（．ｂｓｓ）が占用するメモリにおける記憶空間のうちの数値を全部０に初期化する。その後に、初期化済みのグローバル変数アドレスオフセットデータセグメント（．ｒｅｌ．ｄａｔａ）から初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索し、初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及びアドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算し、それにより、初期化済みのグローバル変数データセグメント（．ｄａｔａ）を再配置する。
【００３２】
ステップ２０３：再配置された所定のデータセグメントを記憶空間にコピーして、アプリケーションをロードする。
【００３３】
本実施例では、メモリに所定のデータセグメント（例えばマシン命令データセグメント、読み取り専用データデータセグメント）の再配置を完了した後に、プログラマブル読み取り専用メモリ（例えばフラッシュメモリ）に予め選択された、再配置後の所定のデータセグメントを記憶するための記憶空間に再配置された所定のデータセグメントをコピーすることができ、それにより、再配置された所定のデータセグメントがプログラマブル読み取り専用メモリにロードされ、同時に、メモリにおける初期化済みのグローバル変数データセグメント（．ｄａｔａ）及び未初期化のグローバル変数データセグメント（．ｂｓｓ）を再配置してからロードすることにより、アプリケーションのロードを完了することができる。
【００３４】
本実施例のいくつかの選択可能な実施形態では、再配置された所定のデータセグメントを記憶空間にコピーした後に、さらに、プログラマブル読み取り専用メモリに記憶空間の開始アドレスを記憶することにより、プログラマブル読み取り専用メモリに記憶された、再配置後の所定のデータセグメントを開始アドレスによって検索し、所定のデータセグメントをロードするステップをさらに含む。
【００３５】
本実施例では、再配置過程でＥＬＦファイルにおける各データセグメントのＥＬＦファイルでのオフセット、大きさを同時に記録することもでき、その後に、各データセグメントのＥＬＦファイルでのオフセット、大きさと、再配置されたＥＬＦのコード部分（ｃｏｄｅ）のフラッシュメモリでの開始アドレス及びＥＬＦファイルの名称とともにファイル形式でフラッシュメモリに記憶することができ、当該ファイルを再配置情報ファイルと称することができる。それにより、アプリケーションを再びロードする時に、アプリケーションのＥＬＦファイルの名称によって、再配置情報ファイルを検索する。その後に、再配置情報ファイルに記録されたデータ部分（ｄａｔａ）、即ち初期化済みのグローバル変数データセグメント（．ｄａｔａ）及び未初期化のグローバル変数データセグメント（．ｂｓｓ）のＥＬＦファイルでのオフセット及び大きさに基づいて、ＥＬＦファイルにおけるデータ部分（ｄａｔａ）のうちのデータを直接読み取って、データ部分（ｄａｔａ）を再配置してロードすることができる。
【００３６】
図３は、本実施例におけるアプリケーションをロードする一例示的原理図を示す。図３において、フラッシュメモリに記憶されているＥＬＦファイルにおけるマシン命令データセグメント（．ｔｅｘｔ）、マシン命令アドレスオフセットデータセグメント（．ｒｅｌ．ｔｅｘｔ）、読み取り専用データデータセグメント（．ｒｏｄａｔａ）、初期化済みのグローバル変数データセグメント（．ｄａｔａ）、初期化済みのグローバル変数アドレスオフセットデータセグメント（．ｒｅｌ．ｄａｔａ）、未初期化のグローバル変数データセグメント（．ｂｓｓ）を示す。マシン命令データセグメント（．ｔｅｘｔ）、読み取り専用データデータセグメント（．ｒｏｄａｔａ）、初期化済みのグローバル変数データセグメント（．ｄａｔａ）、未初期化のグローバル変数データセグメント（．ｂｓｓ）はまずメモリにコピーされ、同時に、フラッシュメモリにおいて再配置されたマシン命令データセグメント（．ｔｅｘｔ）、読み取り専用データデータセグメント（．ｒｏｄａｔａ）を記憶するための記憶空間を選択する。当該記憶空間は現在で所定のデータセグメントを記憶するフラッシュメモリの記憶空間と異なり、当該記憶空間の役割は、再配置された所定のデータセグメントを記憶することである。その後に、メモリにおいて、当該記憶空間の開始アドレスに基づいて、マシン命令アドレスオフセットデータセグメント（．ｒｅｌ．ｔｅｘｔ）及び読み取り専用データアドレスオフセットデータセグメント（．ｒｅｌ．ｒｏｄａｔａ）を参照してマシン命令データセグメント（．ｔｅｘｔ）、読み取り専用データデータセグメント（．ｒｏｄａｔａ）を再配置し、最後に、１回のコピーによってフラッシュメモリに選択された再配置後のマシン命令データセグメント（．ｔｅｘｔ）、読み取り専用データデータセグメント（．ｒｏｄａｔａ）を記憶するための記憶空間に書き戻す。同時に、未初期化のグローバル変数データセグメント．ｂｓｓを０に初期化し、且つ、初期化済みのグローバル変数アドレスオフセットデータセグメント（．ｒｅｌ．ｄａｔａ）を参照して初期化済みのグローバル変数データセグメント（．ｄａｔａ）を再配置する。
【００３７】
図４は、本願のアプリケーションロード方法の一例示的フローチャートを示す。以下のステップを含む。
【００３８】
ステップ４０１：システムはアプリケーションのロードを開始する。
【００３９】
ステップ４０２：フラッシュメモリにコード部分が占用する記憶空間の大きさを有する記憶空間を予め割り当てる。
【００４０】
ステップ４０３：メモリにおいてコード部分に同じ大きさのメモリを割り当てる。
【００４１】
ステップ４０４：メモリにおいて、再配置セグメント及びコードセグメントのフラッシュメモリでの予め割り当てられた記憶空間の開始アドレスを利用してコード部分を再配置する。再配置セグメントは、マシン命令アドレスオフセットデータセグメント、読み取り専用データアドレスオフセットデータセグメントを含む。
【００４２】
ステップ４０５：再配置されたコード部分をフラッシュメモリにおける予め割り当てられた記憶空間にコピーする。
【００４３】
ステップ４０６：メモリにおいてデータ部分に必要な大きさのメモリを割り当てる。
【００４４】
ステップ４０７：再配置情報、アプリケーション名称、再配置コードセグメントのフラッシュメモリでのアドレスをフラッシュメモリに記憶し、再配置情報ファイルと命名する。再配置情報は、フラッシュメモリに予め割り当てられた記憶空間の開始アドレスを含む。
【００４５】
以下、プログラマブル読み取り専用メモリがフラッシュメモリであることを例として、本実施例のアプリケーションのロード方式と従来技術の区別を説明する。従来技術では、アプリケーションのコード部分（ｃｏｄｅ）を再配置する過程で、シンボルに対する再配置ごとにシンボルの所在するフラッシュメモリにおける記憶ブロックに対して消去操作を行う必要があるため、システムオーバーヘッド及びｆｌａｓｈ損耗の増加を引き起こす。本実例では、アプリケーションのコード部分（ｃｏｄｅ）を最初のロード時に１回ロードするだけでよい。アプリケーションを再びロードする時に、例えば、システムを再起動する場合、フラッシュメモリにおいて最初のロード時にフラッシュメモリに記憶された再配置後のＥＬＦファイルのコード部分（ｃｏｄｅ）の開始アドレスが予め記憶されたので、当該開始アドレスに基づいて再配置されたＥＬＦファイルのコード部分（ｃｏｄｅ）を直接実行して、ＥＬＦのコード部分（ｃｏｄｅ）のロードを完了することができ、ＥＬＦファイルのコード部分（ｃｏｄｅ）を再配置する必要がない。また、ＥＬＦファイルのデータ部分（ｄａｔａ）を再配置してロードするだけで、アプリケーションのロードを完了することができ、それにより、アプリケーションのロード過程でのフラッシュメモリの損耗を減少させるとともに、アプリケーションのロード速度を向上させる。また、再配置情報ファイルに記録されたデータ部分（ｄａｔａ）のＥＬＦファイルでのオフセット及び大きさに基づいてＥＬＦファイルにおけるデータ部分（ｄａｔａ）のデータを直接読み取って、補助再配置情報を改めて取得する必要がないため、アプリケーションのロード速度をさらに向上させる。
【００４６】
図５は、本願に係るアプリケーションロード装置の一実施例の構造模式図を示す。装置５００は、選択ユニット５０１、再配置ユニット５０２、ロードユニット５０３を含む。選択ユニット５０１は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択し、ここで、所定のデータセグメントが、アプリケーションがロードされる時に、プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである。再配置ユニット５０２は、所定のデータセグメントをメモリにコピーし、且つ記憶空間の開始アドレスに基づいて所定のデータセグメントを再配置する。ロードユニット５０３は、再配置された所定のデータセグメントを記憶空間にコピーして、アプリケーションをロードする。
【００４７】
本実施例では、選択ユニット５０１は、プログラマブル読み取り専用メモリにおいて所定のデータセグメントを記憶するための記憶空間を選択することができ、当該記憶空間のアドレスは現在の所定のデータセグメントの所在するプログラマブル読み取り専用メモリにおける記憶空間のアドレスと異なり、当該記憶空間の役割は再配置された所定のデータセグメントを記憶することである。
【００４８】
本実施例では、再配置ユニット５０２は、プログラマブル読み取り専用メモリに記憶された所定のデータセグメントをメモリにコピーすることができ、その後に、プログラマブル読み取り専用メモリにおいて予め選択された記憶空間の開始アドレスに基づいて当該所定のデータセグメントを再配置し、即ち、所定のデータセグメントにおける命令のうちのシンボルのロードアドレス及び所定のデータセグメントにおけるデータのロードアドレスを確定することができる。
【００４９】
本実施例では、ロードユニット５０３は、プログラマブル読み取り専用メモリに予め選択された、再配置後の所定のデータセグメントを記憶するための記憶空間に再配置された所定のデータセグメントをコピーすることができ、それにより、再配置された所定のデータセグメントをプログラマブル読み取り専用メモリにロードし、同時に、メモリにおける初期化済みのグローバル変数データセグメント及び未初期化のグローバル変数データセグメントを再配置してからロードすることにより、アプリケーションのロードを完了することができる。
【００５０】
本実施例のいくつかの選択可能な実施形態では、プログラマブル読み取り専用メモリはフラッシュメモリである。
【００５１】
本実施例のいくつかの選択可能な実施形態では、再配置ユニット５０２は、実行可能ファイルがＥＬＦファイルであり、所定のデータセグメントがマシン命令データセグメントと、読み取り専用データデータセグメントとを含む場合、ＥＬＦファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索する第１の検索サブユニット（図示せず）と、開始アドレス及びアドレスオフセット量に基づいて、オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置する第１の計算サブユニット（図示せず）と、ＥＬＦファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索する第２の検索サブユニット（図示せず）と、開始アドレス及びアドレスオフセット量に基づいて、読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置する第２の計算サブユニット（図示せず）と、を含む。
【００５２】
本実施例のいくつかの選択可能な実施形態では、装置５００は、ＥＬＦファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーする（図示せず）と、未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を０として設定する設定ユニット（図示せず）と、ＥＬＦファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するオフセット量検索ユニット（図示せず）と、初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及びアドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するロードアドレス計算ユニット（図示せず）と、をさらに含む。
【００５３】
本実施例のいくつかの選択可能な実施形態では、装置５００は、再配置された所定のデータセグメントを記憶空間にコピーした後に、プログラマブル読み取り専用メモリに記憶空間の開始アドレスを記憶することにより、プログラマブル読み取り専用メモリに記憶された、再配置後の所定のデータセグメントを開始アドレスによって検索し、所定のデータセグメントをロードする記憶ユニット（図示せず）をさらに含む。
【００５４】
図６は本願の実施例を実現するための端末装置又はサーバに適用されるコンピュータシステム６００の構造模式図を示す。
【００５５】
図６に示すように、コンピュータシステム６００は、読み出し専用メモリ（ＲＯＭ）６０２に記憶されているプログラム又は記憶部６０８からランダムアクセスメモリ（ＲＡＭ）６０３にロードされたプログラムに基づいて様々な適切な動作及び処理を実行することができる中央処理装置（ＣＰＵ）６０１を備える。ＲＡＭ６０３には、システム６００の操作に必要な様々なプログラム及びデータがさらに記憶されている。ＣＰＵ６０１、ＲＯＭ６０２及びＲＡＭ６０３は、バス６０４を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インターフェース６０５もバス６０４に接続されている。
【００５６】
キーボード、マウスなどを含む入力部６０６、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）など、及びスピーカなどを含む出力部６０７、ハードディスクなどを含む記憶部６０８、及びＬＡＮカード、モデムなどを含むネットワークインターフェースカードの通信部６０９は、Ｉ／Ｏインターフェース６０５に接続されている。通信部６０９は、例えばインターネットのようなネットワークを介して通信処理を実行する。ドライバ６１０は、必要に応じてＩ／Ｏインターフェース６０５に接続される。リムーバブルメディア６１１は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ６１０に取り付けられ、したがって、ドライバ６１０から読み出されたコンピュータプログラムが必要に応じて記憶部６０８にインストールされる。
【００５７】
特に、本発明の実施例によれば、上記フローチャートを参照しながら記載されたプロセスは、コンピュータのソフトウェアプログラムとして実現されてもよい。例えば、本発明の実施例は、コンピュータプログラム製品を含み、当該コンピュータプログラム製品は、機械可読媒体に有形に具現化されるコンピュータプログラムを含み、前記コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含む。このような実施例では、当該コンピュータプログラムは、通信部６０９を介してネットワークからダウンロードされてインストールされてもよく、及び／又はリムーバブルメディア６１１からインストールされてもよい。
【００５８】
図面におけるフローチャート及びブロック図は、本発明の各実施例に係るシステム、方法及びコンピュータプログラム製品により実現可能なアーキテクチャ、機能及び操作を示す。ここで、フローチャート又はブロック図における各枠は、１つのモジュール、プログラムセグメント、又はコードの一部を代表してもよく、前記モジュール、プログラムセグメント、又はコードの一部は、規定された論理機能を実現するための１つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様として、枠に示された機能は、図面に示された順番と異なる順番で実行されてもよい。例えば、連続して示された２つの枠は、関連する機能に応じて、実際にほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図及び／又はフローチャートにおける各枠と、ブロック図及び／又はフローチャートにおける枠の組合せは、規定された機能又は操作を実行する、ハードウェアに基づく専用システムで実現されてもよく、あるいは、専用ハードウェアとコンピュータの命令との組合せで実行されてもよい。
【００５９】
一方、本発明は、不揮発性コンピュータ記憶媒体をさらに提供し、当該不揮発性コンピュータ記憶媒体は、上記実施例の前記装置に含まれる不揮発性コンピュータ記憶媒体であってもよく、独立に存在して端末に組み立てられていない不揮発性コンピュータ記憶媒体であってもよい。前記不揮発性コンピュータ記憶媒体は、１つ以上のプログラムが記憶され、前記１つ以上のプログラムが１つの機器により実行された場合、上記機器に、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択し、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置し、再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするようにさせ、ここで、所定のデータセグメントが、アプリケーションがロードされる時に、プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである。
【００６０】
以上の記載は、本発明の好ましい実施例、及び使用された技術的原理の説明に過ぎない。本発明に係る特許請求の範囲が、上記技術的特徴の特定な組合せからなる技術案に限定されることではなく、本発明の趣旨を逸脱しない範囲で、上記技術的特徴又は同等の特徴の任意の組合せからなる他の技術案も含むべきであることを、当業者は理解すべきである。例えば、上記特徴と、本発明に開示された類似の機能を持っている技術的特徴（これらに限定されていない）とを互いに置き換えてなる技術案が挙げられる。
【図１】
0006506412.tif 000002
【図２】
0006506412.tif 000003
【図３】
0006506412.tif 000004
【図４】
0006506412.tif 000005
【図５】
0006506412.tif 000006
【図６】
0006506412.tif 000007