特許第6506412号(P6506412)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッドの特許一覧

<>
  • 特許6506412-アプリケーションロード方法及び装置 図000002
  • 特許6506412-アプリケーションロード方法及び装置 図000003
  • 特許6506412-アプリケーションロード方法及び装置 図000004
  • 特許6506412-アプリケーションロード方法及び装置 図000005
  • 特許6506412-アプリケーションロード方法及び装置 図000006
  • 特許6506412-アプリケーションロード方法及び装置 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6506412
(24)【登録日】2019年4月5日
(45)【発行日】2019年4月24日
(54)【発明の名称】アプリケーションロード方法及び装置
(51)【国際特許分類】
   G06F 9/445 20180101AFI20190415BHJP
【FI】
   G06F9/445 150
【請求項の数】10
【全頁数】16
(21)【出願番号】特願2017-552148(P2017-552148)
(86)(22)【出願日】2016年6月17日
(65)【公表番号】特表2018-511132(P2018-511132A)
(43)【公表日】2018年4月19日
(86)【国際出願番号】CN2016086217
(87)【国際公開番号】WO2017107415
(87)【国際公開日】20170629
【審査請求日】2017年10月4日
(31)【優先権主張番号】201510994261.4
(32)【優先日】2015年12月25日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】513224353
【氏名又は名称】バイドゥ オンライン ネットワーク テクノロジー (ベイジン) カンパニー リミテッド
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】パン、ハイジュン
(72)【発明者】
【氏名】ジョウ、ファ
(72)【発明者】
【氏名】ドゥアン、リアン
(72)【発明者】
【氏名】ワン、チンシン
(72)【発明者】
【氏名】チャン、グオファ
(72)【発明者】
【氏名】ス、ハオ
【審査官】 北元 健太
(56)【参考文献】
【文献】 特開2006−48431(JP,A)
【文献】 特開2000−89961(JP,A)
【文献】 米国特許第6505297(US,B1)
【文献】 特開平10−3385(JP,A)
【文献】 特開2005−284963(JP,A)
【文献】 Enabling efficient reprogramming through reduction of executable modules in networked embedded systems,Ad Hoc Networks 11,2013年,PP.473-489,[検索日:2018年10月16日]
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00 − 8/77
G06F 9/44 − 9/455
G06F 12/02 − 12/128
G06F 13/16 − 13/18
(57)【特許請求の範囲】
【請求項1】
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
ことを特徴とするアプリケーションロード方法。
【請求項2】
前記プログラマブル読み取り専用メモリはフラッシュメモリである
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記実行可能ファイルはELFファイルであり、前記所定のデータセグメントはマシン命令データセグメントと、読み取り専用データデータセグメントとを含み、
前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップには、
前記ELFファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索するステップと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置するステップと、
前記ELFファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索するステップと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置するステップと、を含む
ことを特徴とする請求項1から2のいずれか1項に記載の方法。
【請求項4】
前記ELFファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーするステップと、
未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を0として設定するステップと、
前記ELFファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するステップと、
初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及び前記アドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するステップと、をさらに含む
ことを特徴とする請求項3に記載の方法。
【請求項5】
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択する選択ユニットと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置する再配置ユニットと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするロードユニットと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶する記憶ユニットと、を含む
ことを特徴とするアプリケーションロード装置。
【請求項6】
前記プログラマブル読み取り専用メモリはフラッシュメモリである
ことを特徴とする請求項に記載の装置。
【請求項7】
前記再配置ユニットは、
前記実行可能ファイルがELFファイルであり、前記所定のデータセグメントがマシン命令データセグメントと、読み取り専用データデータセグメントとを含む場合、前記ELFファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索する第1の検索サブユニットと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置する第1の計算サブユニットと、
前記ELFファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索する第2の検索サブユニットと、
前記開始アドレス及び前記アドレスオフセット量に基づいて、前記読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置する第2の計算サブユニットと、を含む
ことを特徴とする請求項からのいずれか1項に記載の装置。
【請求項8】
前記ELFファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーするコピーユニットと、
未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を0として設定する設定ユニットと、
前記ELFファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するオフセット量検索ユニットと、
初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及び前記アドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するロードアドレス計算ユニットと、をさらに含む
ことを特徴とする請求項に記載の装置。
【請求項9】
プロセッサと、
メモリと、を備えており、
前記メモリに前記プロセッサにより実行可能なコンピュータ可読命令が記憶され、前記コンピュータ可読命令が実行される場合、前記プロセッサがアプリケーションロード方法を実行し、前記方法は、
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
ことを特徴とする機器。
【請求項10】
不揮発性コンピュータ記憶媒体であって、
プロセッサにより実行可能なコンピュータ可読命令が記憶され、前記コンピュータ可読命令がプロセッサに実行される場合、前記プロセッサがアプリケーションロード方法を実行し、前記方法は、
プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、
前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、
再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、
前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
ことを特徴とする不揮発性コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[優先権主張]
本願は2015年12月25日に提出した、出願番号が201510994261.4である中国特許出願に基づく優先権を主張し、当該出願の全文を引用により本願に組み込む。
【0002】
[技術分野]
本願はコンピュータ分野に関し、具体的にアプリケーション分野に関し、特にアプリケーションロード方法及び装置に関する。
【背景技術】
【0003】
組み込みシステムにおいて、アプリケーションをロードする時に、一般的に、フラッシュメモリに実行可能ファイルの二進法コードを記憶し、フラッシュメモリに命令を直接実行する方式を用いる。アプリケーションをロードする過程で、アプリケーションのアセンブラコードにおけるシンボルを再配置(relocate)して、シンボルに絶対アドレスを有させ、アプリケーションをロードする必要がある。
【0004】
しかしながら、上記方式でアプリケーションをロードする時に、シンボルに対する再配置ごとに当該シンボルの所在するメモリの記憶ブロック全体に対して消去操作を行う必要があり、さらにシステムオーバーヘッド及びフラッシュメモリの損耗を大幅に増加する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本願はアプリケーションロード方法及び装置を提供し、上記背景技術部分に存在する技術問題を解決する。
【課題を解決するための手段】
【0006】
第1の態様では、本願はアプリケーションロード方法を提供し、この方法は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に、前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択するステップと、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするステップと、前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶するステップと、を含む
【0007】
第2の態様では、本願はアプリケーションロード装置を提供し、この装置は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける、アプリケーションがロードされる時に、前記プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである所定のデータセグメントを記憶するための記憶空間を選択する選択ユニットと、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置する再配置ユニットと、再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするロードユニットと、前記プログラマブル読み取り専用メモリに記憶された、再配置後の前記所定のデータセグメントを開始アドレスによって検索し、前記所定のデータセグメントをロードするために、前記プログラマブル読み取り専用メモリに前記記憶空間の開始アドレスを記憶する記憶ユニットと、を含む
【0008】
本願の提供するアプリケーションロード方法及び装置は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択するステップと、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置するステップと、再配置された前記所定のデータセグメントを前記記憶空間にコピーするステップと、によって、メモリに実行可能ファイルのコード部分を再配置することを実現し、その後に、再配置後のコード部分をプログラマブル読み取り専用メモリに書き戻し、それにより、記憶ブロックに対する1回の消去操作だけでコード部分の再配置を完了することができ、アプリケーションロード過程のシステムオーバーヘッドを減少させとともに、プログラマブル読み取り専用メモリの損耗を低下させる。
【0009】
以下の図面を参照しながら行った非限定的な実施例についての詳細な説明に基づいて、本願の他の特徴、目的や利点はより明瞭になる。
【図面の簡単な説明】
【0010】
図1】本願を適用できる例示的なシステムアーキテクチャー図である。
図2】本願に係るアプリケーションロード方法の一実施例のフローチャートを示す。
図3】本実施例におけるアプリケーションをロードする一例示的原理図を示す。
図4】本願のアプリケーションロード方法の一例示的フローチャートを示す。
図5】本願に係るアプリケーションロード装置の一実施例の構造模式図を示す。
図6】本願の実施例を実現するための端末装置又はサーバに適用されるコンピュータシステムの構造模式図である。
【発明を実施するための形態】
【0011】
以下、図面及び実施例を参照しながら本発明をより詳細に説明する。ここで説明する具体的な実施例は、かかる発明を説明するものに過ぎず、当該発明を限定するものではないと理解すべきである。ただし、説明の便宜上、図面に発明に関連する部分のみが示されている。
【0012】
なお、衝突しない場合、本願の実施例及び実施例の特徴を相互に組み合せてもよい。以下、図面及び実施例を参照しながら本願を詳細に説明する。
【0013】
図1は本願の情報抽出方法又は情報抽出装置を適用できる実施例の例示的なシステムアーキテクチャー100を示す。
【0014】
図1に示されるように、システムアーキテクチャー100は、端末装置101、102、103、ネットワーク104及びサーバ105を備えてもい。ネットワーク104は端末装置101、102、103とサーバ105の間に通信リンクを提供する媒体に用いられている。ネットワーク104は様々な接続タイプ、例えば有線、無線通信リンク又は光ファイバーケーブル等を含んでもよい。
【0015】
ユーザは端末装置101、102、103を用いてネットワーク104を介してサーバ105とインタラクションして、それによりメッセージなどを送受信することができる。端末装置101、102、103に、様々な通信クライアントアプリケーション、例えばネットワークセキュリティアプリケーション、インスタントメッセージングツール等がインストールされてもよい。
【0016】
端末装置101、102、103はディスプレーを有し且つネットワーク通信をサポートする各種の電子機器であってもよく、スマートフォン、タブレットPC、e−Bookリーダー、MP3プレーヤー (Moving Picture Experts Group Audio Layer III、ムービング・ピクチャー・エクスパーツ・グループオーディオレイヤーIII)、MP4プレーヤー(Moving Picture Experts Group Audio LayerIV、ムービング・ピクチャー・エクスパーツ・グループオーディオレイヤーIV)、ラップトップ型コンピュータ及びデスクトップコンピュータなどを含むが、それらに限定されるものではない。
【0017】
サーバ105は各種のサービスを提供するサーバ、例えば端末装置101、102、103におけるアプリケーションにデータサポートを提供するサーバであってもよい。サーバ105は端末装置101、102、103から送信される検索要求を受信して検索要求を処理することができ、処理結果(アプリケーションの実行可能ファイルの再配置情報)を端末装置にフィードバックする。
【0018】
なお、図1における端末装置、ネットワーク及びサーバの数は例示的なものに過ぎない。必要に応じて、端末装置、ネットワーク及びサーバの数が任意であってもよい。
【0019】
本願に係るアプリケーションロード方法の一実施例のプロセス200を示す図2を参照する。本実施例で提供されるアプリケーションロード方法は図1の端末装置101、102、103によって実行されることができる。当該方法は以下のステップを含む。
【0020】
ステップ201:プログラマブル読み取り専用メモリにおいてアプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択する。
【0021】
本実施例では、アプリケーションの実行可能ファイルはプログラマブル読み取り専用メモリに記憶されることができる。実行可能ファイルが複数のデータセグメントを含み、アプリケーションをロードする時に、即ち、アプリケーションの実行可能ファイルをロードする時に、所定のデータセグメントは、プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである。本実施例では、プログラマブル読み取り専用メモリにおいて所定のデータセグメントを記憶するための記憶空間を選択することができ、当該記憶空間は再配置された所定のデータセグメントを記憶することに用いられる。
【0022】
本実施例のいくつかの選択可能な実施形態では、プログラマブル読み取り専用メモリはフラッシュメモリである。本実施例では、アプリケーションの実行可能ファイルはフラッシュメモリに記憶されることができ、フラッシュメモリにおいて再配置された所定のデータセグメントを記憶するための記憶空間を予め選択することができる。
【0023】
ステップ202:所定のデータセグメントをメモリにコピーし、且つ記憶空間の開始アドレスに基づいて所定のデータセグメントを再配置する。
【0024】
本実施例では、アプリケーションをロードする時に、まず、所定のデータセグメントをメモリにコピーすることができ、次に、プログラマブル読み取り専用メモリにおいて予め選択された記憶空間の開始アドレスに基づいて当該所定のデータセグメントを再配置し、即ち、所定のデータセグメントにおけるシンボルのロードアドレスを確定することができる。
【0025】
以下、まずアセンブラ命令jmp exp及びexp:pushを例として、再配置の原理を説明する。アセンブラ命令exp:pushはシンボルexpに対応するアドレスにプッシュ命令(即ちpush命令)が記憶されていることを示す。アセンブラ命令jmp expの作用はシンボルexpに対応するアドレスにジャンプし、当該アドレスにおけるプッシュ命令を実行することである。仮にシンボルexpのコンパイル時のコンパイルアドレスが1000hであるとすると、アセンブラ命令をコンパイルした後に、jmp expがjmp 1000hに変換される。アプリケーションをロードする時に、アセンブラ命令をコンパイルする時にアドレス0を開始アドレスとして統一的に用いてコンパイルし、ロード時に任意の位置にロードされて実行する可能性があるため、シンボルを再配置し、即ち、アセンブラ命令におけるシンボルに対応するロードアドレス(絶対アドレスとも呼ばれる)を改めて確定し、且つアセンブラ命令におけるシンボル(即ちexpシンボル)に対応するアドレスを確定されたロードアドレスに修正する必要があり、それにより、当該命令を実行する。
【0026】
本実施例のいくつかの選択可能な実施形態では、実行可能ファイルはELFファイルであり、所定のデータセグメントはマシン命令データセグメントと、読み取り専用データデータセグメントとを含み、記憶空間の開始アドレスに基づいて所定のデータセグメントを再配置するステップには、ELFファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索するステップと、開始アドレス及びアドレスオフセット量に基づいて、オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置するステップと、ELFファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索するステップと、開始アドレス及びアドレスオフセット量に基づいて、読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置するステップと、を含む。
【0027】
本実施例では、アプリケーションの組み込み機器(例えばモノのインターネット機器)でのロードをサポートするために、実行可能ファイルは再配置可能なファイル形式であるELF形式のファイル(ELFファイルと略称)であってもよい。まず、ELFファイルの構成を説明する。ELFファイルにおいて、データセグメント(section)でファイルの内容を記述する。ELFファイルにおいて、データがコンパイル済みのアプリケーションのマシンコードであるマシン命令データセグメント(.text)と、データが読み取り専用データである読み取り専用データデータセグメント(.rodata)と、データが初期化済みのグローバル変数である初期化済みのグローバル変数データセグメント(.data)と、未初期化のグローバル変数データセグメント(.bss)と、を含む。アプリケーションの実行可能ファイルはELFファイルである場合、アプリケーションをロードする時に、即ち、アプリケーションのELFファイルをロードする時に、ELFファイルにおけるマシン命令データセグメント(.text)及び読み取り専用データデータセグメント(.rodata)がフラッシュメモリにロードされることができ、ELFファイルにおける初期化済みのグローバル変数データセグメント(.data)及び未初期化のグローバル変数データセグメント(.bss)がメモリにロードされることができる。
【0028】
本実施例では、マシン命令データセグメント(.text)と読み取り専用データデータセグメント(.rodata)を総称してコード部分(code)ということができる。初期化済みのグローバル変数データセグメント(.data)と未初期化のグローバル変数データセグメント(.bss)を総称してデータ部分(data)ということができる。ELFファイルをロードする時に、コード部分(code)とデータ部分(data)を再配置する必要があり、即ち、ELFファイルにおけるコード部分(code)とデータ部分(data)のうちのシンボルのロードアドレスを計算する必要がある。コード部分(code)とデータ部分(data)を再配置する過程において、ELFファイルにおけるマシン命令アドレスオフセットデータセグメント(.rel.text)、読み取り専用データアドレスオフセットデータセグメント(.rel.rodata)、初期化済みのグローバル変数アドレスオフセットデータセグメント(.rel.data)を利用して、コード部分とデータ部分を再配置することができる。
【0029】
本実施例のいくつかの選択可能な実施形態では、ELFファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーするステップと、未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を0として設定するステップと、ELFファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するステップと、初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及びアドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するステップと、をさらに含む。
【0030】
以下、プログラマブル読み取り専用メモリがフラッシュメモリであることを例として、それぞれELFファイルにおけるコード部分(code)及びデータ部分(data)の再配置過程を説明する。本実施例では、以下の方式でELFファイルにおけるコード部分(code)を再配置することができる。まず、フラッシュメモリにおいてコード部分(code)、即ちマシン命令データセグメント(.text)及び読み取り専用データデータセグメント(.rodata)にコード部分(code)が占用する記憶空間の大きさを有する記憶空間を予め割り当て、且つ当該記憶空間の開始アドレスを記録する。その後に、メモリに上記記憶空間の大きさと等しい記憶空間を割り当て、マシン命令データセグメント(.text)及び読み取り専用データデータセグメント(.rodata)をメモリにコピーする。メモリにおいてマシン命令データセグメント(.text)を再配置する時に、マシン命令アドレスオフセットデータセグメント(.rel.text)からマシン命令データセグメントにおけるマシン命令のオペランド、即ち命令に引用されるシンボルに対応するアドレスオフセット量を検索し、上記開始アドレス及びアドレスオフセット量に基づいて、オペランドに対応するロードアドレスを計算し、それにより、命令におけるオペランドのロードアドレス、即ち命令に引用されるシンボルに対応するロードアドレスを算出する。マシン命令における全てのシンボルに対応するロードアドレスを算出した後に、マシン命令データセグメントの再配置を完了する。メモリにおいて読み取り専用データデータセグメント(.rodata)を再配置する時に、読み取り専用データアドレスオフセットデータセグメント(.rel.rodata)から読み取り専用データデータセグメントの読み取り専用データに対応するアドレスオフセット量を検索し、開始アドレス及びアドレスオフセット量に基づいて、読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置することができる。
【0031】
本実施例では、以下の方式でELFファイルにおけるデータ部分(data)を再配置することができる。メモリにおいて初期化済みのグローバル変数データセグメント(.data)と未初期化のグローバル変数データセグメント(.bss)の2つのデータセグメントが占用する記憶空間の大きさを有する記憶空間を割り当て、初期化済みのグローバル変数データセグメント(.data)及び未初期化のグローバル変数データセグメント(.bss)を割り当てられたメモリにコピーする。未初期化のグローバル変数データセグメント(.bss)が占用するメモリにおける記憶空間のうちの数値を全部0に初期化する。その後に、初期化済みのグローバル変数アドレスオフセットデータセグメント(.rel.data)から初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索し、初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及びアドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算し、それにより、初期化済みのグローバル変数データセグメント(.data)を再配置する。
【0032】
ステップ203:再配置された所定のデータセグメントを記憶空間にコピーして、アプリケーションをロードする。
【0033】
本実施例では、メモリに所定のデータセグメント(例えばマシン命令データセグメント、読み取り専用データデータセグメント)の再配置を完了した後に、プログラマブル読み取り専用メモリ(例えばフラッシュメモリ)に予め選択された、再配置後の所定のデータセグメントを記憶するための記憶空間に再配置された所定のデータセグメントをコピーすることができ、それにより、再配置された所定のデータセグメントがプログラマブル読み取り専用メモリにロードされ、同時に、メモリにおける初期化済みのグローバル変数データセグメント(.data)及び未初期化のグローバル変数データセグメント(.bss)を再配置してからロードすることにより、アプリケーションのロードを完了することができる。
【0034】
本実施例のいくつかの選択可能な実施形態では、再配置された所定のデータセグメントを記憶空間にコピーした後に、さらに、プログラマブル読み取り専用メモリに記憶空間の開始アドレスを記憶することにより、プログラマブル読み取り専用メモリに記憶された、再配置後の所定のデータセグメントを開始アドレスによって検索し、所定のデータセグメントをロードするステップをさらに含む。
【0035】
本実施例では、再配置過程でELFファイルにおける各データセグメントのELFファイルでのオフセット、大きさを同時に記録することもでき、その後に、各データセグメントのELFファイルでのオフセット、大きさと、再配置されたELFのコード部分(code)のフラッシュメモリでの開始アドレス及びELFファイルの名称とともにファイル形式でフラッシュメモリに記憶することができ、当該ファイルを再配置情報ファイルと称することができる。それにより、アプリケーションを再びロードする時に、アプリケーションのELFファイルの名称によって、再配置情報ファイルを検索する。その後に、再配置情報ファイルに記録されたデータ部分(data)、即ち初期化済みのグローバル変数データセグメント(.data)及び未初期化のグローバル変数データセグメント(.bss)のELFファイルでのオフセット及び大きさに基づいて、ELFファイルにおけるデータ部分(data)のうちのデータを直接読み取って、データ部分(data)を再配置してロードすることができる。
【0036】
図3は、本実施例におけるアプリケーションをロードする一例示的原理図を示す。図3において、フラッシュメモリに記憶されているELFファイルにおけるマシン命令データセグメント(.text)、マシン命令アドレスオフセットデータセグメント(.rel.text)、読み取り専用データデータセグメント(.rodata)、初期化済みのグローバル変数データセグメント(.data)、初期化済みのグローバル変数アドレスオフセットデータセグメント(.rel.data)、未初期化のグローバル変数データセグメント(.bss)を示す。マシン命令データセグメント(.text)、読み取り専用データデータセグメント(.rodata)、初期化済みのグローバル変数データセグメント(.data)、未初期化のグローバル変数データセグメント(.bss)はまずメモリにコピーされ、同時に、フラッシュメモリにおいて再配置されたマシン命令データセグメント(.text)、読み取り専用データデータセグメント(.rodata)を記憶するための記憶空間を選択する。当該記憶空間は現在で所定のデータセグメントを記憶するフラッシュメモリの記憶空間と異なり、当該記憶空間の役割は、再配置された所定のデータセグメントを記憶することである。その後に、メモリにおいて、当該記憶空間の開始アドレスに基づいて、マシン命令アドレスオフセットデータセグメント(.rel.text)及び読み取り専用データアドレスオフセットデータセグメント(.rel.rodata)を参照してマシン命令データセグメント(.text)、読み取り専用データデータセグメント(.rodata)を再配置し、最後に、1回のコピーによってフラッシュメモリに選択された再配置後のマシン命令データセグメント(.text)、読み取り専用データデータセグメント(.rodata)を記憶するための記憶空間に書き戻す。同時に、未初期化のグローバル変数データセグメント.bssを0に初期化し、且つ、初期化済みのグローバル変数アドレスオフセットデータセグメント(.rel.data)を参照して初期化済みのグローバル変数データセグメント(.data)を再配置する。
【0037】
図4は、本願のアプリケーションロード方法の一例示的フローチャートを示す。以下のステップを含む。
【0038】
ステップ401:システムはアプリケーションのロードを開始する。
【0039】
ステップ402:フラッシュメモリにコード部分が占用する記憶空間の大きさを有する記憶空間を予め割り当てる。
【0040】
ステップ403:メモリにおいてコード部分に同じ大きさのメモリを割り当てる。
【0041】
ステップ404:メモリにおいて、再配置セグメント及びコードセグメントのフラッシュメモリでの予め割り当てられた記憶空間の開始アドレスを利用してコード部分を再配置する。再配置セグメントは、マシン命令アドレスオフセットデータセグメント、読み取り専用データアドレスオフセットデータセグメントを含む。
【0042】
ステップ405:再配置されたコード部分をフラッシュメモリにおける予め割り当てられた記憶空間にコピーする。
【0043】
ステップ406:メモリにおいてデータ部分に必要な大きさのメモリを割り当てる。
【0044】
ステップ407:再配置情報、アプリケーション名称、再配置コードセグメントのフラッシュメモリでのアドレスをフラッシュメモリに記憶し、再配置情報ファイルと命名する。再配置情報は、フラッシュメモリに予め割り当てられた記憶空間の開始アドレスを含む。
【0045】
以下、プログラマブル読み取り専用メモリがフラッシュメモリであることを例として、本実施例のアプリケーションのロード方式と従来技術の区別を説明する。従来技術では、アプリケーションのコード部分(code)を再配置する過程で、シンボルに対する再配置ごとにシンボルの所在するフラッシュメモリにおける記憶ブロックに対して消去操作を行う必要があるため、システムオーバーヘッド及びflash損耗の増加を引き起こす。本実例では、アプリケーションのコード部分(code)を最初のロード時に1回ロードするだけでよい。アプリケーションを再びロードする時に、例えば、システムを再起動する場合、フラッシュメモリにおいて最初のロード時にフラッシュメモリに記憶された再配置後のELFファイルのコード部分(code)の開始アドレスが予め記憶されたので、当該開始アドレスに基づいて再配置されたELFファイルのコード部分(code)を直接実行して、ELFのコード部分(code)のロードを完了することができ、ELFファイルのコード部分(code)を再配置する必要がない。また、ELFファイルのデータ部分(data)を再配置してロードするだけで、アプリケーションのロードを完了することができ、それにより、アプリケーションのロード過程でのフラッシュメモリの損耗を減少させるとともに、アプリケーションのロード速度を向上させる。また、再配置情報ファイルに記録されたデータ部分(data)のELFファイルでのオフセット及び大きさに基づいてELFファイルにおけるデータ部分(data)のデータを直接読み取って、補助再配置情報を改めて取得する必要がないため、アプリケーションのロード速度をさらに向上させる。
【0046】
図5は、本願に係るアプリケーションロード装置の一実施例の構造模式図を示す。装置500は、選択ユニット501、再配置ユニット502、ロードユニット503を含む。選択ユニット501は、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択し、ここで、所定のデータセグメントが、アプリケーションがロードされる時に、プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである。再配置ユニット502は、所定のデータセグメントをメモリにコピーし、且つ記憶空間の開始アドレスに基づいて所定のデータセグメントを再配置する。ロードユニット503は、再配置された所定のデータセグメントを記憶空間にコピーして、アプリケーションをロードする。
【0047】
本実施例では、選択ユニット501は、プログラマブル読み取り専用メモリにおいて所定のデータセグメントを記憶するための記憶空間を選択することができ、当該記憶空間のアドレスは現在の所定のデータセグメントの所在するプログラマブル読み取り専用メモリにおける記憶空間のアドレスと異なり、当該記憶空間の役割は再配置された所定のデータセグメントを記憶することである。
【0048】
本実施例では、再配置ユニット502は、プログラマブル読み取り専用メモリに記憶された所定のデータセグメントをメモリにコピーすることができ、その後に、プログラマブル読み取り専用メモリにおいて予め選択された記憶空間の開始アドレスに基づいて当該所定のデータセグメントを再配置し、即ち、所定のデータセグメントにおける命令のうちのシンボルのロードアドレス及び所定のデータセグメントにおけるデータのロードアドレスを確定することができる。
【0049】
本実施例では、ロードユニット503は、プログラマブル読み取り専用メモリに予め選択された、再配置後の所定のデータセグメントを記憶するための記憶空間に再配置された所定のデータセグメントをコピーすることができ、それにより、再配置された所定のデータセグメントをプログラマブル読み取り専用メモリにロードし、同時に、メモリにおける初期化済みのグローバル変数データセグメント及び未初期化のグローバル変数データセグメントを再配置してからロードすることにより、アプリケーションのロードを完了することができる。
【0050】
本実施例のいくつかの選択可能な実施形態では、プログラマブル読み取り専用メモリはフラッシュメモリである。
【0051】
本実施例のいくつかの選択可能な実施形態では、再配置ユニット502は、実行可能ファイルがELFファイルであり、所定のデータセグメントがマシン命令データセグメントと、読み取り専用データデータセグメントとを含む場合、ELFファイルのマシン命令アドレスオフセットデータセグメントにおいてマシン命令データセグメントにおけるマシン命令のオペランドに対応するアドレスオフセット量を検索する第1の検索サブユニット(図示せず)と、開始アドレス及びアドレスオフセット量に基づいて、オペランドに対応するロードアドレスを計算して、マシン命令データセグメントを再配置する第1の計算サブユニット(図示せず)と、ELFファイルの読み取り専用データアドレスオフセットデータセグメントにおいて読み取り専用データデータセグメントにおける読み取り専用データに対応するアドレスオフセット量を検索する第2の検索サブユニット(図示せず)と、開始アドレス及びアドレスオフセット量に基づいて、読み取り専用データに対応するロードアドレスを計算して、読み取り専用データデータセグメントを再配置する第2の計算サブユニット(図示せず)と、を含む。
【0052】
本実施例のいくつかの選択可能な実施形態では、装置500は、ELFファイルにおける未初期化のグローバル変数データセグメント及び初期化済みのグローバル変数データセグメントをメモリにコピーする(図示せず)と、未初期化のグローバル変数データセグメントに対応する記憶空間の記憶値を0として設定する設定ユニット(図示せず)と、ELFファイルの初期化済みのグローバル変数アドレスオフセットデータセグメントから初期化済みのグローバル変数データセグメントにおける初期化済みのグローバル変数に対応するアドレスオフセット量を検索するオフセット量検索ユニット(図示せず)と、初期化済みのグローバル変数データセグメントのメモリにおける開始アドレス及びアドレスオフセット量に基づいて、初期化済みのグローバル変数のロードアドレスを計算して、初期化済みのグローバル変数データセグメントを再配置するロードアドレス計算ユニット(図示せず)と、をさらに含む。
【0053】
本実施例のいくつかの選択可能な実施形態では、装置500は、再配置された所定のデータセグメントを記憶空間にコピーした後に、プログラマブル読み取り専用メモリに記憶空間の開始アドレスを記憶することにより、プログラマブル読み取り専用メモリに記憶された、再配置後の所定のデータセグメントを開始アドレスによって検索し、所定のデータセグメントをロードする記憶ユニット(図示せず)をさらに含む。
【0054】
図6は本願の実施例を実現するための端末装置又はサーバに適用されるコンピュータシステム600の構造模式図を示す。
【0055】
図6に示すように、コンピュータシステム600は、読み出し専用メモリ(ROM)602に記憶されているプログラム又は記憶部608からランダムアクセスメモリ(RAM)603にロードされたプログラムに基づいて様々な適切な動作及び処理を実行することができる中央処理装置(CPU)601を備える。RAM603には、システム600の操作に必要な様々なプログラム及びデータがさらに記憶されている。CPU601、ROM602及びRAM603は、バス604を介して互いに接続されている。入力/出力(I/O)インターフェース605もバス604に接続されている。
【0056】
キーボード、マウスなどを含む入力部606、陰極線管(CRT)、液晶ディスプレイ(LCD)など、及びスピーカなどを含む出力部607、ハードディスクなどを含む記憶部608、及びLANカード、モデムなどを含むネットワークインターフェースカードの通信部609は、I/Oインターフェース605に接続されている。通信部609は、例えばインターネットのようなネットワークを介して通信処理を実行する。ドライバ610は、必要に応じてI/Oインターフェース605に接続される。リムーバブルメディア611は、例えば、マグネチックディスク、光ディスク、光磁気ディスク、半導体メモリなどのようなものであり、必要に応じてドライバ610に取り付けられ、したがって、ドライバ610から読み出されたコンピュータプログラムが必要に応じて記憶部608にインストールされる。
【0057】
特に、本発明の実施例によれば、上記フローチャートを参照しながら記載されたプロセスは、コンピュータのソフトウェアプログラムとして実現されてもよい。例えば、本発明の実施例は、コンピュータプログラム製品を含み、当該コンピュータプログラム製品は、機械可読媒体に有形に具現化されるコンピュータプログラムを含み、前記コンピュータプログラムは、フローチャートで示される方法を実行するためのプログラムコードを含む。このような実施例では、当該コンピュータプログラムは、通信部609を介してネットワークからダウンロードされてインストールされてもよく、及び/又はリムーバブルメディア611からインストールされてもよい。
【0058】
図面におけるフローチャート及びブロック図は、本発明の各実施例に係るシステム、方法及びコンピュータプログラム製品により実現可能なアーキテクチャ、機能及び操作を示す。ここで、フローチャート又はブロック図における各枠は、1つのモジュール、プログラムセグメント、又はコードの一部を代表してもよく、前記モジュール、プログラムセグメント、又はコードの一部は、規定された論理機能を実現するための1つ以上の実行可能な命令を含む。なお、いくつかの代替実施態様として、枠に示された機能は、図面に示された順番と異なる順番で実行されてもよい。例えば、連続して示された2つの枠は、関連する機能に応じて、実際にほぼ並行に実行されてもよく、逆の順番で実行されてもよい。なお、ブロック図及び/又はフローチャートにおける各枠と、ブロック図及び/又はフローチャートにおける枠の組合せは、規定された機能又は操作を実行する、ハードウェアに基づく専用システムで実現されてもよく、あるいは、専用ハードウェアとコンピュータの命令との組合せで実行されてもよい。
【0059】
一方、本発明は、不揮発性コンピュータ記憶媒体をさらに提供し、当該不揮発性コンピュータ記憶媒体は、上記実施例の前記装置に含まれる不揮発性コンピュータ記憶媒体であってもよく、独立に存在して端末に組み立てられていない不揮発性コンピュータ記憶媒体であってもよい。前記不揮発性コンピュータ記憶媒体は、1つ以上のプログラムが記憶され、前記1つ以上のプログラムが1つの機器により実行された場合、上記機器に、プログラマブル読み取り専用メモリにおいて、アプリケーションの実行可能ファイルにおける所定のデータセグメントを記憶するための記憶空間を選択し、前記所定のデータセグメントをメモリにコピーし、且つ前記記憶空間の開始アドレスに基づいて前記所定のデータセグメントを再配置し、再配置された前記所定のデータセグメントを前記記憶空間にコピーして、アプリケーションをロードするようにさせ、ここで、所定のデータセグメントが、アプリケーションがロードされる時に、プログラマブル読み取り専用メモリにロードされて実行されるデータセグメントである。
【0060】
以上の記載は、本発明の好ましい実施例、及び使用された技術的原理の説明に過ぎない。本発明に係る特許請求の範囲が、上記技術的特徴の特定な組合せからなる技術案に限定されることではなく、本発明の趣旨を逸脱しない範囲で、上記技術的特徴又は同等の特徴の任意の組合せからなる他の技術案も含むべきであることを、当業者は理解すべきである。例えば、上記特徴と、本発明に開示された類似の機能を持っている技術的特徴(これらに限定されていない)とを互いに置き換えてなる技術案が挙げられる。
図1
図2
図3
図4
図5
図6