JP5295379B2 - 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム - Google Patents

組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム Download PDF

Info

Publication number
JP5295379B2
JP5295379B2 JP2011536728A JP2011536728A JP5295379B2 JP 5295379 B2 JP5295379 B2 JP 5295379B2 JP 2011536728 A JP2011536728 A JP 2011536728A JP 2011536728 A JP2011536728 A JP 2011536728A JP 5295379 B2 JP5295379 B2 JP 5295379B2
Authority
JP
Japan
Prior art keywords
application program
class
function
pointer
program
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.)
Active
Application number
JP2011536728A
Other languages
English (en)
Other versions
JP2012509531A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=40726014&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP5295379(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Publication of JP2012509531A publication Critical patent/JP2012509531A/ja
Application granted granted Critical
Publication of JP5295379B2 publication Critical patent/JP5295379B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Description

本発明は組み込み技術分野に関し、特に、組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォームに関する。
プログラムのリンキング技術が静的リンキング技術と動的リンキング技術とに分けられることは知られている。静的リンキング技術を採用する際に、コンパイルの段階で、アプリケーションプログラムのアドレスは決定されており、現在複数のアプリケーションプログラムが関数ライブラリ内の関数をコールした場合、メモリにコピーされる関数ライブラリの数が前記アプリケーションプログラムの数と同じである必要があって、メモリ空間を浪費してしまう。ところが、動的リンキング技術ではインポートライブラリを提供して関数ライブラリ内の関数を位置決めており、このようなインポートライブラリには関数間のコール関係に対する記述のみが記憶され、実際のコードは記憶されないため、メモリ空間を節約することができる。
現在、携帯電話などの組み込み製品では、プログラムの動的リンキングを既に実現したが、採用するのは実行可能・リンキングフォーマット(ELF: Executable and Linking Format)動的リンキングの方式であり、具体的には図1を参照する。
図1は従来技術でELFの方式を採用してプログラムの動的リンキングを実現することを示す図である。
図1に示すように、ELF方式を採用してプログラムの動的リンキングを実現する際に、まず、アプリケーションプログラムをELFフォーマットファイルにコンパイルしてから、ELFローダ(ELF LOADER)プログラムを採用して、生成されたELFファイルに対して関数のリロケーションと変数のリロケーションを行い、次に、リロケーション後のELFファイルを組み込みオペレーティングシステム(OS)にロードし、最後に、この組み込みオペレーティングシステムがこのリロケーション後の関数と変数の位置に基づいて各関数と変数にリンクすることにより、プログラムの動的リンキングを実現する。
ELF方式を採用してプログラムの動的リンキングを実現する際に、ELFローダプログラムが重要な役割を果たし、アプリケーションプログラムにおける関数と変数のアドレスを組み込みオペレーティングシステムにおけるアドレスにリロケートすることに用いられる。具体的に、ELFローダプログラムはELFフォーマットファイルから有用な情報を抽出して、ELFフォーマットファイルにおける各関数と変数のリロケーション後のアドレスを算出してから、このアドレスによって関数と変数に対してリロケーションを行う。
ここからわかるように、ELF方式を採用してプログラムの動的リンクを実現する際に、ELFフォーマットファイルから有用な情報を抽出し、これらの有用な情報に対して計算を行う必要があるため、プログラムの動的リンキング速度が遅くなってしまい、一方、計算リソースも浪費してしまう。
本発明は上記に鑑みてなされたものであって、プログラムの動的リンキング速度を向上できる、組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォームを提供することを目的とする。
上記の目的を達成するために、本発明の解決手段は下記のように実現される。
組み込みプラットフォームにおける動的リンキングプログラムの方法であって、前記組み込みプラットフォームは中間層を含み、前記中間層は1つ以上のクラスを含み、各クラスは組み込みオペレーティングシステムの1つ以上の関数インターフェースをカプセル化して得られたものであり、各クラスは1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素は前記1つ以上の関数インターフェースに一々対応され、リンキング対象のアプリケーションプログラムは1つ以上のクラスを含み、各クラスは当該アプリケーションプログラムの1つ以上の関数インターフェースをカプセル化して得られたものであり、各クラスは1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素はそれぞれ前記アプリケーションプログラムの1つ以上の関数インターフェースに一々対応され、当該方法は、
前記アプリケーションプログラムを位置独立のコードセグメントにコンパイルし、かつ当該アプリケーションプログラムの異なる関数をコンパイルして得られたコードセグメントの記憶位置が互いに相交しなく、コンパイルして得られた全てのコードセグメントを組み込みオペレーティングシステムのメモリにコピーし、
クラスポインタを確立し、中間層のクラスと前記アプリケーションプログラムのクラスとの間でクラスポインタを伝送することにより、プログラムの動的リンキングを実現することを含む。
組み込みプラットフォームであって、中間層を含み、
前記中間層は1つ以上のクラスを含み、各クラスは組み込みオペレーティングシステムの1つ以上の関数インターフェースをカプセル化して得られたものであり、各クラスは1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素は前記1つ以上の関数インターフェースに一々対応され、
前記中間層は上記方法を実行できるように構成される。
ここからわかるように、本発明は組み込みオペレーティングシステムから中間層をカプセル化し、この中間層は1つまたは複数のクラスを含み、各クラスは組み込みオペレーティングシステムの複数の関数インターフェースをカプセル化して得られたものであり、各クラスは1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素は前記複数の関数インターフェースに一々対応される。リンキング対象のアプリケーションプログラムは1つまたは複数のクラスを含み、各クラスは当該アプリケーションプログラムの複数の関数インターフェースをカプセル化して得られたものであり、各クラスは1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素はそれぞれ前記アプリケーションプログラムの複数の関数インターフェースに一々対応される。前記アプリケーションプログラムを位置独立のコードセグメントにコンパイルし、かつ当該アプリケーションプログラムの異なる関数をコンパイルして得られたコードセグメントの記憶位置が互いに相交しないことによって、アプリケーションプログラムは任意の記憶空間内で運用でき、かつアプリケーションプログラムの各関数は独立にコールされることができる。コンパイルされた全てのコードセグメントを直接に組み込みオペレーティングシステムのメモリにコピーする。クラスポインタを確立し、中間層のクラスと前記アプリケーションプログラムのクラスとの間でクラスポインタを伝送することにより、プログラムの動的リンキングを実現する。
各クラスポインタが一旦確立されると、このクラスポインタに対応する仮想関数テーブルの各要素に対応する関数インターフェースも実例化され、即ち、これらの関数が相応的に実際のアドレスを付与され、この時、中間層のクラスに対応する各関数とアプリケーションプログラムに対応する各関数の間では仮想関数テーブルを通じて動的リンキングを実現する。従って、本発明ではクラスポインタを確立し、中間層のクラスと前記アプリケーションプログラムのクラスの間でこのクラスポインタを伝送することにより、プログラムの動的リンキングを実現することができる。
そして、クラスポインタを確立し、中間層のクラスとアプリケーションプログラムのクラスとの間で前記クラスポインタを伝送することによりプログラムの動的リンキングを実現するため、アプリケーションプログラムからコンパイルされたファイルをメモリにロードする際に、このファイルから情報を抽出してメモリにおける各コンパイルコードの位置を改めて算出する必要がない。従って、プログラムの動的リンキングを実現するのに必要な時間を減らし、プログラムの動的リンキングの速度を向上させる。
従来技術でELF方式を採用してプログラムの動的リンキングを実現することを示す図である。 本発明に係る組み込みプラットフォームの構成図である。 図2に示す組み込みプラットフォームにおけるアプリケーションプログラムの動的リンキングを示す図である。 本発明に係る中間層とアプリケーションプログラムとの間のやりとりを示す図である。 インスタントメッセンジャー(IM)を核心とする動的アプリケーションプログラムの開発環境を示す図である。
本発明の目的、解決手段とメリットをさらに明確にするために、以下、図面および実施形態を参照して、本発明をさらに詳しく説明する。
図2は本発明に係る組み込みプラットフォームの構成図である。図2に示すように、この組み込みプラットフォームは中間層を含む。
本発明では、組み込みオペレーティングシステムからクラス中間層をカプセル化し、当該中間層はクラスからなり、各クラスは1つの仮想関数テーブルに対応され、仮想関数テーブルの各要素はオペレーティングシステムの各関数インターフェースに対応される。
組み込みオペレーティングシステムから中間層をカプセル化する際に、オペレーティングシステムの全ての関数のうち、アプリケーションプログラムがよく使う関数インターフェースを中間層にカプセル化することができ、ここで、機能が関連の関数のインターフェースを1つのクラスにカプセル化する。例えば、描画関数のインターフェース、文字編集関数のインターフェース、ネットワーク接続関数のインターフェース、および情報送信関数のインターフェースを中間層にカプセル化し、描画関数のインターフェースと文字編集関数のインターフェースを1つのドキュメント処理クラスにカプセル化し、ネットワーク接続関数のインターフェースと情報送信関数のインターフェースとを1つのネットワーククラスにカプセル化する。各クラスが1つのコンポーネントに相当するため、実際に、中間層は複数のコンポーネントからなるものに相当する。
図3は図2に示す組み込みプラットフォームにおいてアプリケーションプログラムの動的リンキングを示す図である。
図3に示すように、本発明に係るプログラムの動的リンキング過程は、BINファイルへのコンパイルと生成段階、BINファイルのダウンロードと記憶段階、BINファイルのロード段階、及びプログラムの動的リンキング段階を含む。
本発明では、図2に示すオペレーティングシステムにおいて動的リンキングを実現するアプリケーションプログラムも1つまたは複数のクラスからなり、各クラスがこのアプリケーションプログラムの複数の関数インターフェースをカプセル化して得られ、各クラスが1つの仮想関数テーブルに対応され、各仮想関数テーブルの各要素がそれぞれ前記アプリケーションプログラムの複数の関数インターフェースに一々対応される。中間層のクラスの構成方式と同じように、アプリケーションプログラムのクラス内の各インターフェースに対応する関数も互いに関連の関数である。アプリケーションプログラムにおいて、各クラスも1つのコンポーネントに相当する。従って、クラスを通じてアプリケーションプログラムを実現するのは、実際にアプリケーションプログラムを複数のコンポーネントに分けることに相当する。
説明すべきところとして、組み込みプラットフォームにおいてプログラムの動的リンキングを実現しようとする場合は、以下の関数インポート問題、関数エクスポート問題、サブ関数コール問題、およびグローバル変数位置決め問題のような4つの問題を解決する必要がある。
関数インポート問題とは、動的リンキングが必要なアプリケーションプログラムが如何に中間層を通じて組み込みオペレーティングシステムの関数をコールするかを指すものであり、関数エクスポート問題とは、組み込みオペレーティングシステムが如何に中間層を通じてアプリケーションプログラムの関数をコールするかを指すものであり、サブ関数コール問題とは、アプリケーションプログラム内のサブ関数が如何にアプリケーションプログラムまたは中間層を通じてコールされるかを指すものであり、グローバル変数位置決め問題とは、アプリケーションプログラムにグローバル変数が含まれる場合、アプリケーションプログラムを組み込みプラットフォームにリンキングした後に、前記組み込みプラットフォームにおいて当該アプリケーションプログラムにおけるグローバル変数のリロケーションを如何に実現するかを指すものである。
関数インポート問題および関数エクスポート問題は主にBINファイルへのコンパイルと生成段階およびプログラムの動的リンキング段階に関し、サブ関数コール問題およびグローバル変数位置決め問題は主にBINファイルへのコンパイルと生成段階に関する。
以下、図3に示す4つの段階を順に、ARM組み込みオペレーティングプラットフォームの特性に応じて、図2に示す組み込みプラットフォームにおいてプログラムの動的リンキングを実現する方法を説明する。
一、BINファイルへのコンパイルと生成段階
まず、アプリケーションプログラムの開発者はクラスの形式でアプリケーションプログラムを書く必要があり、アプリケーションプログラムがクラスからなり、各クラスがこのアプリケーションプログラムの1つまたは複数の関数インターフェースをカプセル化して得られ、各クラスが1つの仮想関数テーブルに対応され、各仮想関数テーブルの各要素がそれぞれ異なる関数インターフェースに対応されることを保証する必要がある。即ち、アプリケーションプログラムを複数のコンポーネントに分け、各コンポーネントを1つのクラスに書くことに相当する。
その後、アプリケーションプログラムをBINファイル形式の位置独立のコード(PIC:Position Independence Code)にコンパイルする。ここで、位置独立のコードとは、その運用が具体的な記憶位置に依存せずに、任意の記憶空間内に運用できるコードを指すものである。
具体的に、ARM ADS1.2コンパイラを採用してアプリケーションプログラムをコンパイルする際に、コンパイルオプションacps/ropiを通じてアプリケーションプログラムのコードセグメントを位置独立のコード(PIC:Position Independence Code)セグメントにコンパイルし生成することができ、ここで、ropiオプションの役割はコンパイルされたリードオンリーセグメントの位置が独立であることを指示する。
アプリケーションプログラムを位置独立のコードにコンパイルするため、BINファイルのロード段階で、BINファイルを組み込みプラットフォームのメモリの任意の記憶位置にロードして運用することができる。
アプリケーションプログラムを複数のコンポーネントに分け、中間層も複数のコンポーネントによって実現されるため、アプリケーションプログラムおよび中間層はコンポーネント間のやりとりにより、言い換えればクラスにより、関数のインポートおよびエクスポートを実現することができる。アプリケーションおよび中間層が如何にクラスにより関数のインポートおよびエクスポートを実現するかについては、プログラムの動的リンキング段階で詳しく説明する。
サブ関数コール問題に対して、本発明ではBINファイルへのコンパイルと生成段階で、このアプリケーション内の各関数を互いに位置独立、かつ互いに交差しないコードセグメントにコンパイルすることにより、各関数が互いに独立して運用するようにすることができ、従って、各異なる関数を便利にコールするが、ほかの関数に影響を与えないようになる。
具体的に、ARM ADS1.2コンパイラを採用してアプリケーションプログラムをコンパイルする際に、ZOコンパイルオプションによりこのアプリケーションプログラム内の各関数を互いに位置独立、かつ互いに交差しないコードセグメントにコンパイルすることができる。
例えば、仮に以下のようなアプリケーションプログラムがある。
int appMain(Ishell*ptr,void**ppobj)

fun1();
return 0;

void fun1(void)

仮にappMain関数がずっとBINファイルの開始アドレス 0x00000000のところにコンパイルされ、acps/ropiとZOコンパイルオプションを採用してこのアプリケーションプログラムをコンパイルするとする場合、コンパイル結果は表1に示すようである。
表1において、PCはBINファイルの開始アドレスであり、0x0Aは関数fun1のオフセットアドレスを代表する。
表1からわかるように、アプリケーションプログラムを位置独立、かつ各関数が互いに独立して交差しないコードセグメントにコンパイルした後、各関数間のジャンプは相対的なジャンプであり、具体的にどこにジャンプするかはオフセットアドレスによって決定される。このようにして、アプリケーションプログラム内の各関数がいずれもこのアプリケーションプログラム内部の関数またはこのアプリケーションプログラム外部の関数により独立にコールされることができるようになる。
グローバル変数位置決め問題については、2つの処理方式を採用することができる。その1はグローバル変数をアプリケーションプログラムの構造体に置き、従って構造体が位置独立のコードセグメントにコンパイルされる場合、構造体内のグローバル変数もこの位置独立のコードセグメントにコンパイルされる。その2はグローバル変数を位置独立のデータ(PID:Position Independence Data)セグメントにコンパイルする。上記1の処理方式を採用する場合は、複数のアプリケーションプログラムを同時に図2に示す組み込みプラットフォーム上にロードすることができるが、グローバル変数がアプリケーションプログラムの構造体に記憶されているため、グローバル変数を使用する場合に、相応の構造体から前記グローバル変数を取る必要があって、操作が比較的複雑である。上記2の処理方式を採用する場合は、グローバル変数が位置独立のデータセグメントにコンパイルされるため、グローバル変数を構造体以外の位置に格納することができ、通常、グローバル変数をコードセグメント所在のランダムアクセスメモリ(RAM)記憶空間の後の記憶空間内に記憶して、データのオーバーフローアクセスを避ける。
ARM ADS1.2コンパイラを採用してアプリケーションプログラムをコンパイルする際に、コンパイルオプションacps/rWpiによりアプリケーションプログラムのデータセグメントを位置独立のデータ(PID:Position Independence Data)セグメントにコンパイルし生成することができ、位置独立のデータセグメントとは、RAMの任意の記憶空間内にコピーして運用できるデータセグメントを指すものである。コンパイルオプションacps/rWpiはアプリケーションプログラムのデータセグメントを位置独立のデータセグメントにコンパイルし、このデータセグメントは([R9]+OFFSET)の記憶空間内に記憶され、ここで、[R9]はレジスタR9の値を表し、OFFSETはオフセットアドレスの値である。データのオーバーフローアクセスを防止するために、レジスタR9の値をメモリバッファ(BUFFER)の開始アドレスとBINファイル大きさとの和の値に設定、即ち、グローバル変数を、アプリケーションプログラムをコンパイルして得られたBINファイルの後に記憶するようにしてよい。
グローバル変数を位置独立のデータセグメントにコンパイルする際に、レジスタR9を使用する必要があるため、上記2のグローバル変数位置決め方法を採用する場合、各アプリケーションプログラムのシングルロードしか実現できず、即ち、複数のアプリケーションプログラムの同時ロードは実現できない。
また、BINファイルへのコンパイルと生成段階で、アプリケーションプログラムのメイン関数、即ち、アプリケーションプログラムの関数入口をBINファイルの開始アドレスのところにコンパイルして、今後、プログラムの動的リンキング時にアプリケーションプログラムの各コンポーネントに位置決めできることを保証する必要がある。具体的に、アプリケーションプログラムをコンパイルする過程中に、アプリケーションプログラムの入口関数を−firstに設定しさえすればいい。
ARM ADS1.2コンパイラを採用してアプリケーションプログラムをコンパイルする際に、thumbモードを採用してアプリケーションプログラムをBINファイルにコンパイルするようにしてよい。thumbモードを採用してコンパイルされたコードの関数アドレスは通常armモードを応用してコンパイルされたコードの関数アドレスよりそのアドレスが後ろに32ビットオフセット(即ち4バイトオフセット)する。組み込みオペレーティングシステムが初回に中間層を通じてアプリケーションプログラムをコールする時、アプリケーションプログラムの入口関数ポインタをアプリケーションプログラムBIN所在のメモリバッファ領域の開始アドレスが4バイトオフセットした位置に指向してアプリケーションプログラムを実行する。例えば、BINファイルの開始アドレスが0x8000であると、確立された入口関数ポインタは0x8004ところに指向すべきである。
thumbモードを採用してアプリケーションプログラムをコンパイルする場合、アプリケーションプログラム内の各指令が2バイト(armモードを採用してコンパイルする場合に、各指令は4バイト)にコンパイルされるため、コンパイルされたBINファイルの大きさを減らすと共に、アプリケーションプログラム運用の速度も向上させ、消費電力を節約することができる。
上記のように、BINファイルへのコンパイルと生成段階で、アプリケーションプログラムをBINファイルにコンパイルし、このアプリケーションの入口関数がBINファイルの開始アドレスのところに位置し、このアプリケーションプログラムを位置独立のコードセグメントにコンパイルし、かつこのアプリケーションプログラムの異なる関数からコンパイルされたコードセグメントの間の記憶空間が交差しなく、アプリケーションプログラム内のグローバル変数を位置独立のデータセグメントにコンパイルし、または、グローバル変数をアプリケーションプログラムの構造体に格納する。
二、BINファイルのダウンロードと記憶段階
BINファイルのダウンロードと記憶段階で、これらのBINファイルを直接にファイルシステムにコピーする。
三、BINファイルのロード段階
BINファイルをロードする必要がある場合は、BINファイルを解析したり、BINファイル内の情報を利用して算出したりする必要がなくて、このBINファイルを直接にファイルシステムからメモリにコピーする。
四、プログラムの動的リンキング段階
プログラムの動的リンキング段階で、実際のクラスポインタを確立し、中間層のクラスとアプリケーションプログラムのクラスとの間にクラスポインタを伝送することにより、関数のインポートおよびエクスポートを実現する。
関数インポート問題に対して、アプリケーションプログラムは中間層のクラスのポインタを確立することにより、確立されたクラスポインタが組み込みオペレーティングシステムの関数所在の中間層クラスに指向するようにし、この中間層クラスに対応する仮想関数テーブルの相応要素により相応の関数を実例化することにより、組み込みオペレーティングシステムの関数をコールする。
例えば、仮に中間層に1つのIFastStringクラスが含まれ、このIFastStringクラスに仮想関数テーブルポインタpvtが含まれ、この仮想関数テーブルに3つのサブ関数IFastString_Realase、IFastringString_GetLengthおよびIfastString_Findが含まれるとする。
表2はIFastStringクラスの構成を示す表である。
アプリケーションプログラムはIFastStringクラスの関数をコールする際に、IFastStringクラスポインタを確立し、このポインタにより指向された仮想関数テーブルの3つのメンバーIFastString_Realase、IFastringString_GetLength、およびIfastString_Findに実際の関数アドレスを付与する。このようにして、アプリケーションプログラムは組み込みオペレーティングシステムにおけるIFastString_Realase、IFastringString_GetLength、およびIfastString_Findの3つの関数に位置決めできるようになる。
そのため、アプリケーションプログラムは組み込みオペレーティングシステムの関数をコールする際に、管理クラス(例えばShellクラス)を通じて中間層におけるそれぞれ異なるクラスポインタを確立し、クラスの識別子(ID)に基づいて相応のクラスを確立しかつこのクラス内の仮想関数テーブルにおける各要素に対応するインターフェース関数を実例化する。アプリケーションプログラムは確立されたクラスポインタを使用して、このポインタにより指向された仮想関数テーブルにおける相応のインターフェースの関数に位置決める。ここで、中間層のクラスIDは中間層を書く時に決定されたものであり、アプリケーションプログラムは中間層のクラスをコールする際に、コール対象のクラスのIDを管理クラスに伝送し、管理クラスはこのIDに基づいて相応のクラスポインタを確立しアプリケーションプログラムに返信する。
従って、アプリケーションプログラムの入口関数は下記の形式を採用してよい。
int appMain(Shell*ptr,void**ppobj)

return 0;
アプリケーションプログラムはクラスポインタおよび仮想関数テーブルの各要素に対応する関数インターフェースIDを確立することにより、このクラスポインタを仮想関数テーブルに指向し、前記関数インターフェースIDを通じて仮想関数テーブルにおける相応の関数インターフェースに対応する関数をコールする。
関数エクスポート問題に対しては、アプリケーションプログラムもクラスの形式を採用して書かれたため、即ち、アプリケーションプログラムがクラスからなり、各クラスが1つの仮想関数テーブルに対応され、この仮想関数テーブルの各要素が各関数インターフェースに対応されるため、アプリケーションプログラムはこのアプリケーションプログラム自身のクラスポインタを確立することにより、このクラス内の仮想関数テーブルの各要素を実例化した後に中間層に伝送して保存し、中間層はアプリケーションプログラムの関数をコールする必要がある場合に、中間層に保存されているアプリケーションプログラムのクラスの相応の関数インターフェースをコールさえすればいい。このように、関数エクスポートの過程が完成される。
関数インポート過程に対して、アプリケーションプログラムは管理クラスを通じてクラスポインタを確立し、中間層のクラスに指向する。関数エクスポート過程に対しては、アプリケーションプログラムを書くときにアプリケーションプログラムの各クラスを実例化したため、アプリケーションプログラムからコンパイルされたBINファイルを中間層にロードする(即ちBINファイルのロード)ことは、アプリケーションプログラムが既に実例化したクラスを直接に中間層にコピーすることに相当し、組み込みオペレーティングシステムがアプリケーションプログラムのクラスをコールしようとする場合は、即ち、関数のエクスポートを実現しようとする場合は、中間層にコピーされたアプリケーションプログラムクラスを直接にコールさえすればいい。
上記のように、本発明では組み込みオペレーティングシステムから中間層をカプセル化し、クラスを利用してアプリケーションプログラムを複数のコンポーネントに分けることにより、中間層とアプリケーションプログラムとの間がコンポーネントによりやりとりを実現できるようになり、具体的には、図4を参照する。
図4は本発明に係る中間層とアプリケーションプログラムとの間のやりとりを示す図である。
図4において、アプリケーションプログラムが中間層を通じて組み込みオペレーティングシステムをコールする必要がある場合、アプリケーションプログラムはクラスポインタを確立することにより中間層における相応のクラスに指向し、コンポーネントのやりとりを実現する。中間層がアプリケーションプログラムをコールする必要がある場合、中間層は既に保存されているアプリケーションプログラムクラスポインタにより相応のアプリケーションプログラムをコールし、このアプリケーションプログラムクラスポインタはアプリケーションプログラム自身が確立して中間層に保存したものである。
オペレーティングシステムから中間層をカプセル化した後、中間層とアプリケーションプログラムがクラスを通じて中間層とアプリケーションプログラムにおける各コンポーネントのやりとりを実現できるため、相応のアプリケーションプログラムは中間層で開発することができる。
図5はインスタントメッセンジャー(IM)を核心とする動的アプリケーションプログラムの開発環境を示す図である。
図5に示すように、この開発環境は組み込みオペレーティングシステムと、動的アプリケーションプログラム中間層プラットフォーム(SDK)と、動的アプリケーションプログラムとを含む。ここでSDKは即ち前述の組み込みオペレーティングシステムからカプセル化された中間層であり、動的アプリケーションプログラムは即ち前述のクラス形式で書かれたアプリケーションプログラムである。
図5の動的アプリケーションプログラムは、基礎のIM機能を実現できるコンポーネントAと、IMゲームを実現するコンポーネントBと、IMペット機能を実現するコンポーネントCと、IMビデオ機能を実現するコンポーネントDと、IM音楽機能を実現するコンポーネントEと、拡張応用のためのコンポーネントFおよびコンポーネントGとを含む。コンポーネントA、コンポーネントFおよびコンポーネントGはクラスを通じて中間層とやりとりし、コンポーネントBからコンポーネントEまではコンポーネントAがロードされた上でロードして運用し、つまり、複数のコンポーネントを同時に運用する場合であり、コンポーネントBからコンポーネントEまではそのクラスを通じてコンポーネントAのクラスと通信して、アプリケーションプログラムのプラグイン化の過程を実現することができる。
図5において、コンパイルの際に、SDKと組み込みオペレーティングシステムとを同時にコンパイルしチップにダウンロードするが、動的アプリケーションプログラムに対しては、クラス形式で具体的なアプリケーション機能を実現できる動的アプリケーションプログラムを書き、また図3に示す方法を採用して動的アプリケーションプログラムを単独にコンパイルした後に、チップにおけるファイルシステムにダウンロードし、アプリケーションプログラムをロードする必要がある場合にそれを直接に組み込みオペレーティングシステムのメモリにコピーし、最後にSDKと動的アプリケーションプログラムとがクラスを通じてやりとりを行う。
上記の解決手段からわかるように、アプリケーションプログラムをBINファイルにコンパイルしてダウンロードした後、アプリケーションプログラムを運用する必要がある場合は、それを直接にメモリにコピーする必要だけであり、後続の関数インポートおよびエクスポート問題は中間層とアプリケーションとが実際のクラスポインタを確立し、相互間にクラスポインタを伝送することにより自動的に実現され、BINファイルに対して解析または算出を行う必要がないため、プログラムの動的リンキングの速度を向上させる。
また、同一のアプリケーションプログラムをELFファイルにコンパイルすることに比べて、BINファイルにコンパイルする場合は、コンパイルされたBINファイルの占める記憶空間がELFファイルの占める記憶空間の3分の1であるため、アプリケーションプログラムをBINファイルにコンパイルすることによってはメモリ空間も節約することができる。
なお、中間層とアプリケーションプログラムとの間はクラスを通じてやりとりを実現し、このようなやりとりがコンポーネントレベルに属するため、アプリケーションプログラムのコンポーネント化のアップデート、および中間層のコンポーネント式のアップデート、または両者の同期のアップデートに有利し、さらには中間層またはアプリケーションプログラムの既存コンポーネントを有効に利用して新しいアプリケーションを構築して、アプリケーションプログラムのプラグイン化を実現することができる。合理なアプリケーション層プラットフォームを構築することによっては、アプリケーションプログラムの開発を簡略化することもできる。これは非スマートフォオペレーティングシステムのアプリケーションプログラムの開発に非常に有益である。
上記は、本発明の好ましい実施例にすぎず、本発明の保護範囲を限定するものではない。本発明の精神と原則内で行われる種々の修正、均等置換え、改善などは全て本発明の保護範囲内に含まれるべきである。

Claims (8)

  1. 組み込みプラットフォームにおけるプログラムの動的リンキング方法であって、前記組み込みプラットフォームが中間層を含み、前記中間層が1つ以上のクラスを含み、各クラスが組み込みオペレーティングシステムの1つ以上の関数インターフェースをカプセル化して得られたものであり、各クラスが1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素が前記1つ以上の関数インターフェースに一々対応され、リンキング対象のアプリケーションプログラムが1つ以上のクラスを含み、各クラスが当該アプリケーションプログラムの1つ以上の関数インターフェースをカプセル化して得られたものであり、各クラスが1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素がそれぞれ前記アプリケーションプログラムの1つ以上の関数インターフェースに一々対応され、当該方法が、
    前記アプリケーションプログラムを位置独立のコードセグメントにコンパイルし、かつ当該アプリケーションプログラムの異なる関数をコンパイルして得られたコードセグメントの記憶位置が互いに相交しなく、コンパイルして得られた全てのコードセグメントを組み込みオペレーティングシステムのメモリにコピーし、
    クラスポインタを確立し、中間層のクラスと前記アプリケーションプログラムのクラスとの間でクラスポインタを伝送することにより、プログラムの動的リンキングを実現する、
    ことを含み、
    前記クラスポインタを確立し、中間層のクラスと前記アプリケーションプログラムのクラスとの間でクラスポインタを伝送することが、
    前記アプリケーションプログラムが組み込みオペレーティングシステムの関数をコールする場合、アプリケーションプログラムが管理クラスを通じて中間層のクラスポインタを確立し、当該ポインタが中間層のクラスに指向し、当該クラスポインタをアプリケーションプログラムのクラスに伝送し、
    アプリケーションプログラムが前記アプリケーションプログラム自身のクラスポインタを確立することにより、前記クラス内の仮想関数テーブルの各要素を実例化した後に中間層に伝送して保存し、中間層がアプリケーションプログラムの関数をコールする必要がある場合に、中間層に保存されているアプリケーションプログラムのクラスの相応の関数インターフェースをコールする、
    ことを含むことを特徴とする方法。
  2. 前記アプリケーションプログラムがグローバル変数を含み、当該方法が、
    前記アプリケーションプログラム内のグローバル変数を位置独立のデータセグメントにコンパイルし、前記データセグメントを前記位置独立のコードセグメントの後ろに記憶して、プログラムの動的リンキング過程中のグローバル変数のリロケーションを実現する、
    ことをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記アプリケーションプログラムがグローバル変数と、構造体とを含み、前記方法が、
    前記アプリケーションプログラム内のグローバル変数を当該アプリケーションプログラムの構造体に記憶することを含み、
    前記位置独立のコードセグメントにコンパイルすることが、前記構造体を位置独立のコードセグメントにコンパイルする、
    ことを含むことを特徴とする請求項1に記載の方法。
  4. 前記アプリケーションプログラムを位置独立のコードセグメントにコンパイルし、かつ前記アプリケーションプログラムの異なる関数をコンパイルして得られたコードセグメントの記憶位置が互いに相交しないことが、
    組み込みオペレーティングシステムARM ADS1.2コンパイラ内のコンパイルオプションACPS/ROPIおよびZOを採用して前記アプリケーションプログラムをコンパイルする、
    ことを含むことを特徴とする請求項1に記載の方法。
  5. 前記アプリケーションプログラム内のグローバル変数を位置独立のデータセグメントにコンパイルすることが、
    組み込みオペレーティングシステムARM ADS1.2コンパイラ内のコンパイルオプションACPS/RWPIを採用して前記アプリケーションプログラムをコンパイルする、
    ことを含むことを特徴とする請求項2に記載の方法。
  6. 前記位置独立のコードセグメントが2値化BINファイルであることを特徴とする請求項1に記載の方法。
  7. 前記コンパイルが、
    thumbモードを採用してアプリケーションプログラムをコンパイルすることを含み、
    前記クラスポインタを確立し、中間層のクラスと前記アプリケーションプログラムのクラスとの間でクラスポインタを伝送することにより、プログラムの動的リンキングを実現することが、
    組み込みオペレーティングシステムが初回に中間層を通じてアプリケーションプログラムをコールする時、アプリケーションプログラムのBINファイル所在のメモリバッファ領域の開始アドレスから4バイトシフトすることによって得られる位置を指すアプリケーションプログラムの入口関数ポインタを確立して、入口関数を実行する、
    ことを含むことを特徴とする請求項に記載の方法。
  8. 組み込みプラットフォームであって、中間層を含み、
    前記中間層が1つ以上のクラスを含み、各クラスが組み込みオペレーティングシステムの1つ以上の関数インターフェースをカプセル化して得られたものであり、各クラスが1つの仮想関数テーブルに対応され、当該仮想関数テーブルの各要素が前記1つ以上の関数インターフェースに一々対応され、
    前記中間層が請求項1〜のいずれか1項に記載の方法を実行できるように構成される、
    ことを特徴とする組み込みプラットフォーム。
JP2011536728A 2008-11-18 2009-08-18 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム Active JP5295379B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN200810180934.2A CN101441566B (zh) 2008-11-18 2008-11-18 一种在嵌入式平台上动态链接程序的方法
CN200810180934.2 2008-11-18
PCT/CN2009/073324 WO2010057388A1 (zh) 2008-11-18 2009-08-18 一种嵌入式平台和在嵌入式平台上动态链接程序的方法

Publications (2)

Publication Number Publication Date
JP2012509531A JP2012509531A (ja) 2012-04-19
JP5295379B2 true JP5295379B2 (ja) 2013-09-18

Family

ID=40726014

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011536728A Active JP5295379B2 (ja) 2008-11-18 2009-08-18 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム

Country Status (9)

Country Link
US (1) US8499291B2 (ja)
JP (1) JP5295379B2 (ja)
KR (1) KR101318313B1 (ja)
CN (1) CN101441566B (ja)
BR (1) BRPI0921579A2 (ja)
CA (1) CA2744108C (ja)
MX (1) MX2011005232A (ja)
RU (1) RU2473111C1 (ja)
WO (1) WO2010057388A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101441566B (zh) 2008-11-18 2012-04-25 腾讯科技(深圳)有限公司 一种在嵌入式平台上动态链接程序的方法
CN101673204A (zh) * 2009-08-13 2010-03-17 上海酷吧信息技术有限公司 一种基于arm的手机应用程序动态加载方法
JP2011123842A (ja) * 2009-12-14 2011-06-23 Ricoh Co Ltd 画像形成装置、機能追加方法、及びプログラム
CN102169432B (zh) * 2010-02-25 2014-09-03 腾讯科技(深圳)有限公司 一种as语言接口函数及调用方法
CN101814020A (zh) * 2010-04-15 2010-08-25 长沙理工大学 一种基于嵌入式的程序快速执行方法及系统
US8522066B2 (en) 2010-06-25 2013-08-27 Intel Corporation Providing silicon integrated code for a system
CN102004638B (zh) * 2010-09-28 2015-07-22 中兴通讯股份有限公司 一种手持式读写器二次的开发方法和开发系统
CN102486735A (zh) * 2010-12-02 2012-06-06 腾讯科技(深圳)有限公司 一种手机软件动态加载方法及装置
CN102591687A (zh) * 2011-12-30 2012-07-18 广东中钰科技有限公司 一种抄表终端切换表计规约的应用系统以及方法
CN102902542B (zh) * 2012-09-27 2016-06-01 Tcl通力电子(惠州)有限公司 虚拟接口配置方法和装置
CN103218428B (zh) * 2013-04-09 2016-07-06 深圳市九洲电器有限公司 一种动态链接方法及系统
US9213531B2 (en) * 2014-05-01 2015-12-15 Google Inc. Methods to eliminate extra memory loads while accessing global variables in position independent code
US20160274878A1 (en) * 2015-03-19 2016-09-22 Google Inc. Methods and systems for removing plt stubs from dynamically linked binaries
CN106990996B (zh) * 2017-04-06 2021-02-02 青岛海信移动通信技术股份有限公司 应用程序调用框架层接口的方法及装置
CN107729085A (zh) * 2017-10-19 2018-02-23 北京空间飞行器总体设计部 一种支持地址重定向的星载软件动态加载方法
CN107943681A (zh) * 2017-12-08 2018-04-20 郑州云海信息技术有限公司 内存占用情况分析方法、装置、设备及计算机存储介质
CN109947460B (zh) * 2017-12-21 2022-03-22 鼎捷软件股份有限公司 程序连结方法及程序连结系统
CN108446149B (zh) * 2018-02-28 2021-07-20 北京凌宇智控科技有限公司 一种第三方动态库接口拦截方法及系统
CN110795200A (zh) * 2018-08-01 2020-02-14 北京钛云物联科技有限公司 一种适用于Java运行环境的装置及其实现方法
DE112019006805A5 (de) * 2019-01-31 2021-11-04 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Ausführen von Programmkomponenten auf einem Steuergerät, ein computerlesbares-Speichermedium, ein Steuergerät und ein System
KR20200116373A (ko) 2019-04-01 2020-10-12 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 그 동작 방법
CN110109703A (zh) * 2019-05-27 2019-08-09 烟台万泉数字科技有限公司 小型plc中实现带静态数据功能的子程序
CN112241271A (zh) * 2019-07-17 2021-01-19 西安旌旗电子股份有限公司 一种嵌入式软件的部分升级方法
US11556458B2 (en) * 2019-07-26 2023-01-17 Vmware, Inc. Efficient fuzz testing of low-level virtual devices
CN110569040A (zh) * 2019-09-17 2019-12-13 深圳市优创亿科技有限公司 一种在嵌入式系统内安装、运行应用程序的方法
CN110659088B (zh) * 2019-09-20 2022-11-25 浙江杰芯科技有限公司 一种嵌入式环境下程序扩展的方法及系统
CN110990018B (zh) * 2019-10-29 2023-03-24 北京全路通信信号研究设计院集团有限公司 一种嵌入式系统的编译方法及编译系统
CN111124610B (zh) * 2019-12-19 2024-01-23 北京炎黄盈动科技发展有限责任公司 一种应用容器中应用程序调用方法、装置及存储介质
CN111190623A (zh) * 2019-12-25 2020-05-22 北京中科晶上超媒体信息技术有限公司 一种嵌入式操作系统的远程更新方法
CN112256281A (zh) * 2020-09-23 2021-01-22 深圳市芯盛智能信息有限公司 一种嵌入式系统应用程序动态加载的方法
CN112559094B (zh) * 2020-12-15 2024-04-02 浙江中控技术股份有限公司 一种c++模块接口的调用方法及装置
CN115617422A (zh) * 2022-12-19 2023-01-17 深圳华大北斗科技股份有限公司 基于内存动态加载的嵌入式开放sdk模组及其搭建方法
CN116700838B (zh) * 2023-06-09 2024-02-02 广州万彩信息技术有限公司 一种as语言接口函数、音视频处理方法和系统

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0656581B2 (ja) * 1987-12-24 1994-07-27 富士通株式会社 オブジェクト指向プログラミング方式
US5640550A (en) * 1994-04-15 1997-06-17 Coker; Drake Computer system for generating SQL statements from COBOL code
US5835743A (en) * 1994-06-30 1998-11-10 Sun Microsystems, Inc. Application binary interface and method of interfacing binary application program to digital computer
JP2005302055A (ja) * 1995-07-14 2005-10-27 Sony Corp データ処理方法および装置
IL129911A0 (en) * 1996-12-13 2000-02-29 Maves Internat Software Inc Method system and data structures for computer software application development and execution
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
GB2368669B (en) * 2000-10-31 2005-06-22 Advanced Risc Mach Ltd Integrated circuit configuration
US7003768B2 (en) * 2001-03-15 2006-02-21 Sun Microsystems, Inc. Method and apparatus for class intialization barriers and access to class variables in multitasking virtual machines
US20030074487A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Dynamic operating system
US6907519B2 (en) * 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US7086049B2 (en) * 2002-02-26 2006-08-01 International Business Machines Corporation Background code update for embedded systems
US20040103073A1 (en) * 2002-11-21 2004-05-27 Blake M. Brian System for and method of using component-based development and web tools to support a distributed data management system
US7103723B2 (en) * 2003-02-25 2006-09-05 Intel Corporation Priority-based code cache management
KR100518584B1 (ko) * 2003-07-12 2005-10-04 삼성전자주식회사 공유 라이브러리 시스템 및 상기 시스템 구축 방법
GB2406663B (en) 2003-10-01 2006-03-22 Toshiba Res Europ Ltd Flexible protocol stack
GB2411494B (en) * 2004-02-27 2006-04-12 Toshiba Res Europ Ltd Protocol stack with modification facility
US7503040B2 (en) * 2004-09-30 2009-03-10 International Business Machines Corporation Configuring a shared library to accommodate relocatable data in a pervasive device
US7512699B2 (en) * 2004-11-12 2009-03-31 International Business Machines Corporation Managing position independent code using a software framework
US7516449B2 (en) * 2005-01-04 2009-04-07 International Business Machines Corporation Run-time type conversion
CN100351788C (zh) * 2005-05-18 2007-11-28 大唐移动通信设备有限公司 嵌入式设备的驱动方法
US7546507B1 (en) * 2005-12-02 2009-06-09 Altera Corporation Method and apparatus for debugging semiconductor devices
US20070180509A1 (en) * 2005-12-07 2007-08-02 Swartz Alon R Practical platform for high risk applications
CN100346303C (zh) * 2006-01-17 2007-10-31 浙江大学 Java操作系统中类装载的实现方法
CN101131635B (zh) * 2006-08-24 2010-04-07 凌阳科技股份有限公司 动态链接函数库与主应用程序共享静态链接函数库的方法
US7930709B2 (en) * 2006-10-02 2011-04-19 Red Hat, Inc. Methods and apparatus for a dynamic linker speed up
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
CN100530108C (zh) * 2007-03-20 2009-08-19 华为技术有限公司 一种调用函数的方法及系统
US8327316B2 (en) * 2008-09-30 2012-12-04 Ics Triplex Isagraf Inc. Compilation model
CN101441566B (zh) * 2008-11-18 2012-04-25 腾讯科技(深圳)有限公司 一种在嵌入式平台上动态链接程序的方法

Also Published As

Publication number Publication date
JP2012509531A (ja) 2012-04-19
BRPI0921579A2 (pt) 2018-10-09
RU2473111C1 (ru) 2013-01-20
CA2744108A1 (en) 2010-05-27
MX2011005232A (es) 2011-11-29
US20110219363A1 (en) 2011-09-08
CN101441566A (zh) 2009-05-27
CN101441566B (zh) 2012-04-25
KR20110086759A (ko) 2011-07-29
US8499291B2 (en) 2013-07-30
WO2010057388A1 (zh) 2010-05-27
KR101318313B1 (ko) 2013-10-15
CA2744108C (en) 2015-03-17

Similar Documents

Publication Publication Date Title
JP5295379B2 (ja) 組み込みプラットフォームにおけるプログラムの動的リンキング方法および組み込みプラットフォーム
JP5639274B2 (ja) 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
US8719839B2 (en) Two way communication support for heterogenous processors of a computer platform
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
US20180074843A1 (en) System, method, and computer program product for linking devices for coordinated operation
CN104380256A (zh) 用于虚拟化与计算机系统关联的硬件资源的方法、系统和执行代码段
CN106909441A (zh) 一种基于jvm的磁盘直接i/o访问的方法
CN114588638A (zh) 基于Lua语言进行游戏开发的方法及程序开发装置
WO2023016481A1 (zh) 一种数据处理方法及相关装置
CN101996082B (zh) 协处理器系统和在本地存储器上加载应用程序的方法
KR100763199B1 (ko) 가상 머신 환경에서의 메소드 호출 방법 및 상기 방법을수행하는 가상 머신이 탑재된 시스템
CN104536740B (zh) 计算平台的异质处理器之间的共享虚拟存储器中的虚函数共享
CN112395083B (zh) 一种资源文件的释放方法、装置和计算机可读存储介质
JP5902273B2 (ja) 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
CN114860382A (zh) 数据处理方法及装置
CN113590166A (zh) 应用程序的更新方法、装置以及计算机可读存储介质
KR20080110199A (ko) 가상 메모리가 없는 임베디드 시스템에서의 기존 공유라이브러리 사용방법
JP2016157445A (ja) 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130502

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: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130611

R150 Certificate of patent or registration of utility model

Ref document number: 5295379

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250