WO2007026484A1 - 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
WO2007026484A1
WO2007026484A1 PCT/JP2006/314694 JP2006314694W WO2007026484A1 WO 2007026484 A1 WO2007026484 A1 WO 2007026484A1 JP 2006314694 W JP2006314694 W JP 2006314694W WO 2007026484 A1 WO2007026484 A1 WO 2007026484A1
Authority
WO
WIPO (PCT)
Prior art keywords
execution
execution binary
program
binary
binary image
Prior art date
Application number
PCT/JP2006/314694
Other languages
English (en)
French (fr)
Inventor
Kazuomi Kato
Teruto Hirota
Tetsuji Yamamoto
Original Assignee
Matsushita Electric Industrial 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
Application filed by Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to CN200680027056XA priority Critical patent/CN101228509B/zh
Priority to US11/996,687 priority patent/US8281289B2/en
Priority to JP2007533135A priority patent/JP4944033B2/ja
Publication of WO2007026484A1 publication Critical patent/WO2007026484A1/ja

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

Landscapes

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

Abstract

 実行バイナリイメージのデータ量を削減する。  実行バイナリ読み取り部1は、コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を読み取り、削除可能領域検出部2は、実行バイナリプログラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決を実施しない場合に実行バイナリプログラムの中で削除可能となる領域を検出し、実行バイナリ書き換え部3は、実行バイナリプログラムの削除可能領域を特定のデータに書き換え、実行バイナリイメージ作成部4は、実行バイナリプログラムに含まれる特定のデータのデータ量を削減し、コンピュータ上で認識可能な形式である実行バイナリイメージに実行バイナリプログラムを変換する。

Description

実行バイナリイメージの作成及ぴ実行を行う装置、 方法、 プログラム 該
プログラムを記録したコンピュータ読み取り可能な記録媒体
技術分野
[0001] 本発明は、コンピュータ上で実行される種々の実行バイナリイメージを作成する情 報処理システム、情報処理方法、実行バイナリイメージ作成装置、実行バイナリィメー ジ作成方法、実行バイナリイメージ作成プログラム、実行バイナリイメージ作成プログ ラムを記録したコンピュータ読み取り可能な記録媒体、実行バイナリイメージ実行装 置、実行バイナリイメージ実行方法、実行バイナリイメージ実行プログラム及び実行バ イナリイメージ実行プログラムを記録したコンピュータ読み取り可能な記録媒体に関 するものである。
背景技術
[0002] Linux (登録商標)や Windows (登録商標)などのようなマルチタスク型の OS (オペ レーティングシステム)が搭載されている機器やコンピュータでは、多くの場合、動的 ローデイングシステムを採用している。これは、実行バイナリプログラムの実行時に初 めて、そのプログラム本体や使用する共有ライブラリのアドレスを決定するシステムで あり、再配置処理、すなわち使用するシンボルのアドレス解決を行う必要がある。その ため、実行バイナリプログラムの情報の中に、再配置情報やシンボル情報が含まれる 。プログラムを実行すると、動的ローダがこれらの再配置情報やシンボル情報を使用 して、関数や変数のアドレスを確定するので、これらの情報は動的ローデイングシス テムの実行バイナリプログラムでは必須であった。したがって、実行バイナリプロダラ ムの実行コードであるテキスト情報やデータ情報などとともに、それらの再配置情報 やシンボル情報を、実行バイナリイメージの中に含める必要があった。 [0003] 上記背景のもとで、 ROM (リードオンリメモリ)のサイズ削減のための従来技術として 、組み込んだローダを用いて一度プログラムを実行した上で、共用ライブラリのァドレ ス解決に必要な構造を、 ROMとは別の記憶装置に保存し、かつ実行バイナリプログ ラム力もその構造を削除した上で、二度目に実行する際には、記憶装置に保存され たアドレス解決に必要な情報を使用して、ポインタを再配置してアドレス解決を行う技 術が開示されている (例えば、特許文献 1参照)。
[0004] し力しながら、前記従来の技術では、共用ライブラリのアドレス解決に必要な構造を 、外部あるいは別の記憶装置に持つという点で、 ROMに載せる実行バイナリプログ ラムのデータサイズを減らしては ヽるが、別途構造データを保持する記憶容量が必 要になる。そのため、結局余分な記憶領域を使用するという問題が残る。
[0005] また、動的ローデイングシステム上で動作させるためには、実行バイナリプログラム が持つ再配置情報やシンボル情報のうち、どのような条件下でどの箇所を本当に削 除できるのか明らかではな!/ヽと 、う課題があった。
[0006] さらに、上記問題とは別に、実行バイナリプログラムの情報を一部編集してしまった り削除してしまったりすることによって、実行バイナリプログラムの内部構成が変化して 、実行コード本体であるテキスト情報やデータ情報の配置アドレスが変化する可能性 がある。その場合、全ての実行バイナリプログラムの中で、元々変化が生じた実行バ イナリプログラムを利用するためにその位置を指していた箇所を検出し、変化した分 だけアドレスを補正する必要が生じる。この補正がな!、と実行バイナリプログラムはプ ログラムとして動作しない。し力しながら、実行バイナリプログラム力 変化したアドレス 位置を検出することは非常に困難であり、単純に実行バイナリプログラムの持つ再配 置情報やシンボル情報を削除できな 、と 、う課題があった。
特許文献 1:特開平 10— 228381号公報
発明の開示
[0007] 本発明は、上記の問題を解決するためになされたもので、実行バイナリイメージの データ量を削減することができる情報処理システム、情報処理方法、実行バイナリィ メージ作成装置、実行バイナリイメージ作成方法、実行バイナリイメージ作成プロダラ ム、実行バイナリイメージ作成プログラムを記録したコンピュータ読み取り可能な記録 媒体、実行バイナリイメージ実行装置、実行バイナリイメージ実行方法、実行バイナリ イメージ実行プログラム及び実行バイナリイメージ実行プログラムを記録したコンビュ ータ読み取り可能な記録媒体を提供することを目的とするものである。
[0008] 本発明の一局面に係る情報処理システムは、コンピュータ上で実行される実行バイ ナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読み取り部と、前 記実行バイナリ読み取り部によって読み取られた前記実行バイナリプログラムの構成 情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決を実 施しない場合に前記実行バイナリプログラムの中で削除可能となる領域を検出する 削除可能領域検出部と、前記削除可能領域検出部によって検出された前記実行バ イナリブログラムの削除可能領域を特定のデータに書き換える実行バイナリ書き換え 部と、前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプロダラ ムに含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な 形式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイ ナリイメージ変換部と、前記実行バイナリイメージ変換部によって変換された前記実 行バイナリイメージを記憶する実行バイナリイメージ記憶部と、前記実行バイナリィメ ージ記憶部に記憶されている前記実行バイナリイメージを仮想アドレス空間に展開し て実行する実行部とを備える。
[0009] 本発明の他の局面に係る情報処理方法は、コンピュータ上で実行される実行バイ ナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読み取りステップ と、前記実行バイナリ読み取りステップにお!、て読み取られた前記実行バイナリプロ グラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アド レス解決を実施しない場合に前記実行バイナリプログラムの中で削除可能となる領域 を検出する削除可能領域検出ステップと、前記削除可能領域検出ステップにおいて 検出された前記実行バイナリプログラムの削除可能領域を特定のデータに書き換え る実行バイナリ書き換えステップと、前記実行バイナリ書き換えステップにおいて書き 換えられた前記実行バイナリプログラムに含まれる前記特定のデータのデータ量を 削減し、コンピュータ上で認識可能な形式である実行バイナリイメージに前記実行バ イナリプログラムを変換する実行バイナリイメージ変換ステップと、前記実行バイナリィ メージ変換ステップにおいて変換された前記実行バイナリイメージを実行バイナリィメ ージ記憶部に記憶する実行バイナリイメージ記憶ステップと、前記実行バイナリィメー ジ記憶ステップにおいて前記実行バイナリイメージ記憶部に記憶された前記実行バ イナリイメージを仮想アドレス空間に展開して実行する実行ステップとを含む。
[0010] これらの構成によれば、コンピュータ上で実行される実行バイナリプログラムの内部 構成を表す構成情報が読み取られる。そして、読み取られた実行バイナリプログラム の構成情報が取得され、実行時にアドレス解決に使用される情報が解析され、ァドレ ス解決が実施されない場合に実行バイナリプログラムの中で削除可能となる領域が 検出される。続いて、検出された実行バイナリプログラムの削除可能領域が特定のデ ータに書き換えられる。そして、書き換えられた実行バイナリプログラムに含まれる特 定のデータのデータ量が削減され、コンピュータ上で認識可能な形式である実行バ イナリイメージに実行バイナリプログラムが変換される。変換された実行バイナリィメー ジが実行バイナリイメージ記憶部に記憶され、実行バイナリイメージ記憶部に記憶さ れている実行バイナリイメージが仮想アドレス空間に展開されて実行される。
[0011] 本発明の他の局面に係る実行バイナリイメージ作成装置は、コンピュータ上で実行 される実行バイナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読 み取り部と、前記実行バイナリ読み取り部によって読み取られた前記実行バイナリプ ログラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、ァ ドレス解決を実施しな 、場合に前記実行バイナリプログラムの中で削除可能となる領 域を検出する削除可能領域検出部と、前記削除可能領域検出部によって検出され た前記実行バイナリプログラムの削除可能領域を特定のデータに書き換える実行バ イナリ書き換え部と、前記実行バイナリ書き換え部によって書き換えられた前記実行 バイナリプログラムに含まれる前記特定のデータのデータ量を削減し、コンピュータ 上で認識可能な形式である実行バイナリイメージに前記実行バイナリプログラムを変 換する実行バイナリイメージ変換部とを備える。
[0012] 本発明の他の局面に係る実行バイナリイメージ作成方法は、コンピュータ上で実行 される実行バイナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読 み取りステップと、前記実行バイナリ読み取りステップにお 、て読み取られた前記実 行バイナリプログラムの構成情報を取得し、実行時にアドレス解決に使用される情報 を解析し、アドレス解決を実施しない場合に前記実行バイナリプログラムの中で削除 可能となる領域を検出する削除可能領域検出ステップと、前記削除可能領域検出ス テツプにおいて検出された前記実行バイナリプログラムの削除可能領域を特定のデ ータに書き換える実行バイナリ書き換えステップと、前記実行バイナリ書き換えステツ プにおいて書き換えられた前記実行バイナリプログラムに含まれる前記特定のデータ のデータ量を削減し、コンピュータ上で認識可能な形式である実行バイナリイメージ に前記実行バイナリプログラムを変換する実行バイナリイメージ変換ステップとを含む
[0013] 本発明の他の局面に係る実行バイナリイメージ作成プログラムは、コンピュータ上で 実行される実行バイナリプログラムの内部構成を表す構成情報を読み取る実行バイ ナリ読み取り部と、前記実行バイナリ読み取り部によって読み取られた前記実行バイ ナリプログラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析 し、アドレス解決を実施しない場合に前記実行バイナリプログラムの中で削除可能と なる領域を検出する削除可能領域検出部と、前記削除可能領域検出部によって検 出された前記実行バイナリプログラムの削除可能領域を特定のデータに書き換える 実行バイナリ書き換え部と、前記実行バイナリ書き換え部によって書き換えられた前 記実行バイナリプログラムに含まれる前記特定のデータのデータ量を削減し、コンビ ユータ上で認識可能な形式である実行バイナリイメージに前記実行バイナリプロダラ ムを変換する実行バイナリイメージ変換部としてコンピュータを機能させる。
[0014] 本発明の他の局面に係る実行バイナリイメージ作成プログラムを記録したコンビュ ータ読み取り可能な記録媒体は、コンピュータ上で実行される実行バイナリプロダラ ムの内部構成を表す構成情報を読み取る実行バイナリ読み取り部と、前記実行バイ ナリ読み取り部によって読み取られた前記実行バイナリプログラムの構成情報を取得 し、実行時にアドレス解決に使用される情報を解析し、アドレス解決を実施しない場 合に前記実行バイナリプログラムの中で削除可能となる領域を検出する削除可能領 域検出部と、前記削除可能領域検出部によって検出された前記実行バイナリプログ ラムの削除可能領域を特定のデータに書き換える実行バイナリ書き換え部と、前記 実行バイナリ書き換え部によって書き換えられた前記実行バイナリプログラムに含ま れる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な形式であ る実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイナリィメー ジ変換部としてコンピュータを機能させる実行バイナリイメージ作成プログラムを記録 している。
[0015] これらの構成によれば、コンピュータ上で実行される実行バイナリプログラムの内部 構成を表す構成情報が読み取られる。そして、読み取られた実行バイナリプログラム の構成情報が取得され、実行時にアドレス解決に使用される情報が解析され、ァドレ ス解決が実施されない場合に実行バイナリプログラムの中で削除可能となる領域が 検出される。続いて、検出された実行バイナリプログラムの削除可能領域が特定のデ ータに書き換えられる。そして、書き換えられた実行バイナリプログラムに含まれる特 定のデータのデータ量が削減され、コンピュータ上で認識可能な形式である実行バ イナリイメージに実行バイナリプログラムが変換される。変換された実行バイナリィメー ジが実行バイナリイメージ記憶部に記憶され、実行バイナリイメージ記憶部に記憶さ れている実行バイナリイメージが仮想アドレス空間に展開されて実行される。
[0016] 本発明の他の局面に係る実行バイナリイメージ実行装置は、コンピュータ上で実行 される実行バイナリプログラムの削除可能領域が特定のデータに書き換えられ、書き 換えられた実行バイナリプログラムに含まれる前記特定のデータのデータ量が削減さ れ、コンピュータ上で認識可能な形式に変換された実行バイナリイメージを記憶する 実行バイナリイメージ記憶部と、前記実行バイナリイメージ記憶部に記憶されて ヽる 前記実行バイナリイメージを仮想アドレス空間に展開して実行する実行部とを備える
[0017] 本発明の他の局面に係る実行バイナリイメージ実行方法は、コンピュータ上で実行 される実行バイナリプログラムの削除可能領域が特定のデータに書き換えられ、書き 換えられた実行バイナリプログラムに含まれる前記特定のデータのデータ量が削減さ れ、コンピュータ上で認識可能な形式に変換された実行バイナリイメージを実行バイ ナリイメージ記憶部に記憶する実行バイナリイメージ記憶ステップと、前記実行バイナ リイメージ記憶ステップにお!、て前記実行バイナリイメージ記憶部に記憶された前記 実行バイナリイメージを仮想アドレス空間に展開して実行する実行ステップとを含む。
[0018] 本発明の他の局面に係る実行バイナリイメージ実行プログラムは、コンピュータ上で 実行される実行バイナリプログラムの削除可能領域が特定のデータに書き換えられ、 書き換えられた実行バイナリプログラムに含まれる前記特定のデータのデータ量が削 減され、コンピュータ上で認識可能な形式に変換された実行バイナリイメージを記憶 する実行バイナリイメージ記憶部と、前記実行バイナリイメージ記憶部に記憶されて V、る前記実行バイナリイメージを仮想アドレス空間に展開して実行する実行部として コンピュータを機能させる。
[0019] 本発明の他の局面に係る実行バイナリイメージ実行プログラムを記録したコンビュ ータ読み取り可能な記録媒体は、コンピュータ上で実行される実行バイナリプロダラ ムの削除可能領域が特定のデータに書き換えられ、書き換えられた実行バイナリプロ グラムに含まれる前記特定のデータのデータ量が削減され、コンピュータ上で認識可 能な形式に変換された実行バイナリイメージを記憶する実行バイナリイメージ記憶部 と、前記実行バイナリイメージ記憶部に記憶されて 、る前記実行バイナリイメージを仮 想アドレス空間に展開して実行する実行部としてコンピュータを機能させる実行バイ ナリイメージ実行プログラムを記録して 、る。
[0020] これらの構成によれば、コンピュータ上で実行される実行バイナリプログラムの削除 可能領域が特定のデータに書き換えられ、書き換えられた実行バイナリプログラムに 含まれる特定のデータのデータ量が削減され、コンピュータ上で認識可能な形式に 変換された実行バイナリイメージが実行バイナリイメージ記憶部に記憶される。そして 、実行バイナリイメージ記憶部に記憶されて 、る実行バイナリイメージが仮想アドレス 空間に展開されて実行される。
[0021] 本発明によれば、実行バイナリプログラムの中から再配置情報やシンボル情報など の削除可能領域を検出し、検出した削除可能領域を特定のデータに書き換え、特定 のデータのデータ量が削減されるので、実行バイナリプログラムに含まれるテキスト情 報やデータ情報などの実行コード本体の配置アドレスを変化させることなぐ実行バ イナリイメージのデータ量を削減することができる。
[0022] 本発明の目的、特徴及び利点は、以下の詳細な説明と添付図面とによって、より明 白となる。
図面の簡単な説明
[図 1]本実施の形態における実行バイナリイメージ作成装置の構成を示すブロック図 である。
[図 2]実行バイナリプログラムの内部構成の一例を示す図である。
[図 3]実行バイナリプログラムの代表的なセクションについて説明するための図である
[図 4]実行バイナリ読み取り部が管理する実行バイナリプログラムの情報の内部管理 構造の一例を示す図である。
[図 5]シンボルのアドレス解決の処理の流れを説明するための模式図である。
[図 6]アドレス解決済みである実行バイナリプログラムの関数呼び出しについて説明 するための模式図である。
[図 7]". rel"系セクションど'. dynsym"セクションと". dynstr"セクションとの関係を 示す図である。
[図 8]シンボル情報の内部管理構造の一例を示す図である。
[図 9]実行バイナリプログラムの複数のシンボルが文字列を共用する場合の動作を説 明するための模式図である。
[図 10]シンボル情報の内部管理構造を作成する処理手順の一例を示す第 1のフロー チャートである。
[図 11]シンボル情報の内部管理構造を作成する処理手順の一例を示す第 2のフロー チャートである。
[図 12]実行バイナリ書き換え部が特定データに書き換える領域を集約しない場合の 動作を説明するための模式図である。
[図 13]実行バイナリ書き換え部が特定データに書き換える領域を集約する場合の動 作を説明するための模式図である。
[図 14]実行バイナリ書き換え部が特定データに書き換える領域を実行バイナリプログ ラム全体で集約する場合の動作を説明するための模式図である。
[図 15] (A)は、 2つの実行バイナリプログラム力も成り立つ通常の実行バイナリィメー ジの一例を示す図であり、(B)は、共用ページを利用した実行バイナリイメージの一 例を示す図である。
[図 16]共用ページを利用した実行バイナリイメージと、実行バイナリプログラムが実行 される際のアドレス空間との関係を説明するための模式図である。
[図 17]本実施の形態における情報処理システムの構成を示す図である。
[図 18]本実施の形態における情報処理システムの別の構成を示す図である。
発明を実施するための最良の形態
[0024] 以下、本発明の実施の形態について、図面を参照しながら説明する。
[0025] 図 1は、本実施の形態における実行バイナリイメージ作成装置の構成を示すブロッ ク図である。本実施の形態における実行バイナリイメージ作成装置は、コンピュータ 上で実行される実行バイナリプログラムを入力とし、実行バイナリプログラムの内部構 成を表す構成情報を読み取る実行バイナリ読み取り部 1と、実行バイナリ読み取り部 1で読み取られた実行バイナリプログラムの構成情報を取得し、実行時にアドレス解 決に使用される情報を解析し、実行バイナリプログラムの中で削除可能となる領域を 検出する削除可能領域検出部 2と、削除可能領域検出部 2において検出された実行 ノイナリブログラムの削除可能領域を、特定のデータに書き換えて実行バイナリプロ グラムを再構成する実行バイナリ書き換え部 3と、実行バイナリ書き換え部 3から受け 取った少なくとも一つの実行バイナリプログラムをコンピュータ上で認識し実行できる 形式に変換する実行バイナリイメージ作成部 4とを備えて構成される。
[0026] なお、本明細書における実行バイナリプログラムは、バイナリ形式の実行コード及び 実行データを含む。また、本実施の形態において、実行バイナリ読み取り部 1が実行 バイナリ読み取り部の一例に相当し、削除可能領域検出部 2が削除可能領域検出部 の一例に相当し、実行バイナリ書き換え部 3が実行バイナリ書き換え部の一例に相当 し、実行バイナリイメージ作成部 4が実行バイナリイメージ変換部の一例に相当する。 さら〖こ、本実施の形態において、実行バイナリイメージ作成プログラムが例えば ROM (リードオンリメモリ)に記憶されており、実行バイナリイメージ作成プログラムが実行バ イナリ読み取り部 1、削除可能領域検出部 2、実行バイナリ書き換え部 3及び実行バ イナリイメージ作成部 4として CPU (中央演算処理装置)を機能させる。 [0027] 以上のように構成された実行バイナリイメージ作成装置にっ 、て、その構成の詳細 と動作とを以下に述べる。まず、実行バイナリ読み取り部 1は、コンピュータ上で動作 する実行バイナリプログラム、すなわち実行形式のファイルを入力とする。まず、この 実行バイナリプログラムの形式に関して以下に説明する。
[0028] 現在、種々の実行形式が存在する。例えば、 ELF (Executable and Linking Format)开式、 a. out形式、 COFF (Common Object File Format)形式、 E COFF (Extended COFF)形式、及び PE (Portable Executable)形式などが代 表的な実行形式である。これ力も本実施の形態の説明を容易にするために、 Unix( 登録商標)や Linux (登録商標)で使用され、実行形式として代表的な ELF形式の実 行バイナリプログラムを例に挙げて説明を行うが、本実施の形態は ELF形式の実行 ノイナリブログラムに限定されるものではなぐ他の実行形式に対しても同様に実施 することができる。
[0029] 実行バイナリプログラムの内部構成を、 ELF形式の構成を例にして図 2を用いて説 明する。図 2は、実行バイナリプログラムの内部構成の一例を示す図である。実行バ イナリブログラムの先頭には、実行バイナリプログラム全体の情報を管理する ELFへ ッダ 101が存在する。この ELFヘッダには、アプリケーションプログラムか共有ライブ ラリかを区別する情報や、後続するプログラムヘッダ 102やセクションヘッダ 104への オフセット情報や、その他実行バイナリプログラム全体に関わる情報が格納されてい る。
[0030] 後続するプログラムヘッダ 102には、複数のセグメントと呼ばれる領域を管理する情 報が格納されている。この各セグメントには、 1つあるいは複数のセクションが属する 構成になっている。そして、実行バイナリプログラムの実データとなるセクション 103が 、役割ごとにセクション 1からセクション Nまで複数個存在し、それらの各セクションを 管理するためのセクションヘッダ 104が存在する。
[0031] ここで、実行バイナリプログラムの実データとなる代表的な各セクションについて説 明する。図 3は、実行バイナリプログラムの実データとなる代表的な各セクションにつ いて説明するための図である。図 3のセクション名 111は、各セクションの名称を表し ている。セクションの概要 112は、各セクション名 111に対応する各セクションの働き を説明している。動的ローデイングシステムは、プログラムの実行時に初めて、使用す る実行バイナリプログラムである共有ライブラリのアドレスを決定するシステムである。 そのため、動的ローデイングシステムでは、再配置処理、すなわち使用するシンボル のアドレス解決を行う必要がある。この再配置処理や、シンボルのアドレス解決のた めに、図 3に示す複数のセクションが利用される。
[0032] 例えば、その中でも代表的なセクションを挙げて説明すると、 ". dynstr"セクション は、実行バイナリプログラム中の動的リンクに使用するシンボルの文字列そのものを 保持する。 ". dynsym"セクションは、実行バイナリプログラム中の動的リンクに関する シンボル情報を、各シンボルに対して管理していて、 ". dynstr"セクションに存在す る文字列を指し、その他のシンボル情報 (値やサイズ情報)なども保持している。 ". re 1"の接頭語から成り立つ一連のセクションは、再配置情報を管理する再配置セクショ ンであり、実行バイナリプログラム中の再配置すべき領域を指し、また再配置の対象 となるシンボルを特定するために". dynsym"セクションの所定のエントリを指して!/ヽ る。また、その他、シンボルを検索するための". hash"セクションや、各シンボルのバ 一ジョンタイプを示す". gnu. version"系のセクションなどがシンボル情報に関連す るセクションである。
[0033] なお、 ELF形式の実行形式を例に挙げて説明したが、他の実行形式でも同様の構 成を採用しており、同様の働きを持つセクション力も構成されている。
[0034] 実行バイナリ読み取り部 1は、これまでに述べた構成を持つ実行バイナリプログラム が入力されると、実行バイナリプログラムの情報を実行形式に応じて読み取り、その 構造を内部で管理する。これにより、実行バイナリプログラムを解析しやすぐあるい は再構成しやすくなる。図 4は、実行バイナリ読み取り部 1が管理する実行バイナリプ ログラムの情報の内部管理構造の一例を示す図である。
[0035] 図 4に示す通り、実行バイナリ読み取り部 1は、実行バイナリプログラムの中に一つ しかな 、ELFヘッダやプログラムヘッダの情報を各々読み取って、実行バイナリプロ グラム全体に関わる情報を管理する。また、複数存在するセクションに対しては、実 行バイナリ読み取り部 1は、セクションごとに生成するセクション管理構造 121を利用 して各セクションを管理する。このセクション管理構造 121は、独自セクション管理情 報 122、セクションヘッダ 123及びセクションデータ管理部 124で構成される。セクシ ヨンデータ管理部 124は、セクションの実データが存在するセクションデータ部 125を 管理する。独自セクション管理情報 122は、セクションデータ管理部 124及びセクショ ンデータ部 125とセクションヘッダ 123とを含めてセクションに関わる情報を管理する
[0036] なお、ここで挙げた実行バイナリプログラムの内部管理構造は、あくまで一例に過ぎ ず、実行バイナリプログラム全体に関わる情報や、各セクションを管理できる構造であ れば他の構造でも力まわな 、。
[0037] 実行バイナリ読み取り部 1は、実行バイナリプログラムが入力されると実行バイナリプ ログラムの内部の構成情報を読み取り、図 4に例示するように実行バイナリプログラム の内部情報の内部管理構造を構築して削除可能領域検出部 2に渡す。この内部管 理構造によって、削除可能領域検出部 2は、各セクションの情報を取得し解析するこ とが可能になる。
[0038] 削除可能領域検出部 2は、実行バイナリ読み取り部 1から実行バイナリプログラムの 内部の構成情報(内部管理構造)を受け取り、シンボルのアドレス解決に利用される 再配置情報やシンボル情報を解析し、それらのうち削除可能な領域を検出して、実 行バイナリプログラムの内部の構成情報とともに削除可能と検出した情報を、実行バ イナリ書き換え部 3に渡す。
[0039] 通常、一般的な動的ローデイングシステムにおいて、実行バイナリプログラムの実行 時に初めて、そのプログラム本体や使用する共有ライブラリのアドレスを決定し、シン ボルのアドレス解決を行う。シンボルのアドレス解決を行う際に、再配置情報やシンポ ル情報を利用するため、通常それらの情報を削除すると、プログラムとして動作しなく なる恐れがある。
[0040] 図 5を用いて、シンボルのアドレス解決の処理の流れを説明する。図 5は、シンボル のアドレス解決の処理の流れを説明するための模式図である。あるプログラム Aが共 有ライブラリ Aに存在する liba—func関数 134を呼ぶ場合、プログラム Aが実行され るまで共有ライブラリ Aのアドレス空間上の位置は不定である。プログラム Aが実行さ れて、共有ライブラリ Aの位置が決定されると、初めて liba func関数 134の位置が 決定される。そこで、プログラム Aの中で liba— func関数を呼んでいる領域 131が、 プログラム Aの再配置情報やシンボル情報 132により特定され、さらに共有ライブラリ Aの中にある liba— func関数の位置力 共有ライブラリ Aの再配置情報やシンボル 情報 133によって決定される。そして、プログラム A力も正しく liba— func関数にジャ ンプできるように設定される。
[0041] 上記のようにシンボルのアドレスが未解決の実行バイナリプログラムでは、再配置情 報やシンボル情報をプログラムの実行時に使用する可能性がある。しかし、本実施の 形態の実行バイナリ読み取り部 1では、すでにシンボルのアドレス解決を実施済みの 実行バイナリプログラムを入力とすることができる。
[0042] また、実行バイナリ読み取り部 1は、実行バイナリプログラムが入力された時に、その 実行バイナリプログラムがすでにアドレス解決済みである力否かを確認し、アドレス解 決済みであるか否力を表すアドレス解決情報を削除可能領域検出部 2に渡す。削除 可能領域検出部 2は、実行バイナリ読み取り部 1によって読み取られたアドレス解決 情報がアドレス解決済みであるか否かを判定し、実行バイナリプログラムがアドレス解 決済みでな 、と判定された場合、その実行バイナリプログラムの再配置情報やシンポ ル情報を削除可能領域として検出しな 、。
[0043] そのような実行バイナリプログラムの関数呼び出しの例について説明する。図 6は、 アドレス解決済みである実行バイナリプログラムの関数呼び出しについて説明するた めの模式図である。図 6のプログラム Bでは、元々共有ライブラリ Bの libb— func関数 144を呼ぶ領域 141がある。し力しながら、プログラム Bや共有ライブラリ Bを実行する 前に、あら力じめ共有ライブラリ Bのアドレス空間上の位置が決定している。そのため 、プログラム Bの関数呼び出し領域 141には、実行する前に libb— func関数にジヤン プするためのアドレス(図 6では" Ox ?? ? ?? ? ??")が直接書かれている。した がって、この場合、図 5においてアドレス解決のために利用していたプログラム Bの再 配置情報やシンボル情報 142、及び共有ライブラリ Bの再配置情報やシンボル情報 143を使用することはない。
[0044] したがって、実行バイナリ読み取り部 1にシンボルのアドレス解決を実施済みの実行 バイナリプログラムが入力され、削除可能領域検出部 2がシンボルのアドレス解決に 必要な再配置情報やシンボル情報の一部を削除可能な領域として検出して、実行 ノイナリ書き換え部 3に渡しても、実行バイナリ書き換え部 3は正常に動作する実行 バイナリプログラムを出力する。
[0045] なお、本実施の形態では、関数呼び出しに関して例を挙げて説明したが、変数参 照のためのアドレス解決やその他のアドレス解決なども関数呼出しと同様の仕組みに よって実施される。
[0046] シンボルのアドレス解決を実施済みの実行バイナリプログラムは、元々動的ローデ イングシステム用に作成された実行バイナリプログラムを利用して作成することが可能 である。シンボルのアドレス解決が実施済みの実行バイナリプログラムを作るための 方法の一例を以下に示す。
[0047] まず、全ての共有ライブラリのアドレス空間を重複しないようにあら力じめ定める必 要がある。なぜなら、共有ライブラリは複数のアプリケーションプログラムや別の共有ラ イブラリから参照される可能性があり、共有ライブラリのアドレス空間上の位置はシス テム全体で一意に定める必要があるためである。もし、複数の共有ライブラリのァドレ ス空間が重複すると、それらを利用するアプリケーションプログラムが特定のアドレス 空間を指した時に、いずれの共有ライブラリを指しているの力判別できなくなり、共有 ライブラリのアドレスの再配置が必要になる。
[0048] もちろん、全てのアプリケーションプログラムが特定のアドレス空間を指した時に、共 有ライブラリが一意に特定できるのであれば、一部の共有ライブラリのアドレス空間が 重複していてもかまわない。
[0049] また、全ての共有ライブラリのアドレス空間を重複しないようにするだけではなぐ全 てのアプリケーションプログラムのアドレス空間を重複しな!、ように設定しても良 、し、 逆にアプリケーションプログラムのアドレス空間は重複するように設定しても力まわな い。
[0050] 全ての共有ライブラリのアドレス空間が設定されると、共有ライブラリの持つシンボル などのアドレスが全て決まるので、全ての実行バイナリプログラム(アプリケーションプ ログラムと共有ライブラリ)のシンボルのアドレス解決を事前に行うことができる。
[0051] 実施方法の一例を挙げると、アプリケーションプログラムをアドレス空間上にロードし 、さらにそのアプリケーションプログラムが使用する共有ライブラリもアドレス空間上に ロードする。そして、実際にアプリケーションプログラムの持つ再配置情報やシンボル 情報、及びロードしている共有ライブラリの再配置情報やシンボル情報を利用して、 事前に設定したアドレス通りにシンボルのアドレス解決を行う。アドレス解決を行った 結果を実行バイナリプログラムの情報に書き戻せばょ 、。これを全てのアプリケーショ ンプログラムに対して実施し、アドレス解決を行った結果を全ての実行バイナリプログ ラムの情報に書き戻せばよい。上記方法により、図 6に示すようなシンボルのアドレス 解決を実施済みの実行バイナリプログラムを得ることができる。
[0052] 削除可能領域検出部 2は、実行バイナリ読み取り部 1から実行バイナリプログラムの 内部構成情報を取得し、まず再配置情報やシンボル情報を解析し、削除可能かどう 力の判定条件に照らし合わせて削除可能領域を検出する。
[0053] 削除可能かどうかの判定は、基本的にシンボルのアドレス解決に使用される再配置 情報やシンボル情報であるかどうかに基づいて行われる。再配置情報であり、 ". rel" の接頭語から始まるセクションである". rel"系セクションと、シンボル情報を管理する ". dynsym"セクションと、シンボル名となる文字列を持つ". dynstr"セクションとの 関係の例を図 7に示して、削除可能かどうかの判定条件に関して説明する。図 7は、 " . rel,,系セクションど'. dynsym"セクションど'. dynstr"セクションとの関係を示す図 である。
[0054] 図 7の例では、 ". rel,,系セクションに 3つのエントリ 151が存在し、それぞれ別々の" . dynsym"セクションのエントリを指している。また、 ". dynsym"セクションのエントリ は、シンボルの文字列を特定するために". dynstr"セクションの文字列を指している
[0055] 図 7の例では、 ". rel"系セクションのエントリ 152は、 ". dynsym"セクションのェント リ 153を指し、 ". dynsym"セクションのエントリ 153は、 ". dynstr"セクションの文字 列" XYZ"を指している。
[0056] 削除可能領域検出部 2は、シンボルのアドレス解決に使用される再配置情報である ". rel"系セクションの全てのエントリを削除可能領域として検出する。また、その". re 1"系セクションからたどることが可能な". dynsym"セクションの全てのエントリも削除 可能領域として検出する。さらに、削除可能と検出された". dynsym"セクションが指 している". dynstr"セクションの文字列を削除可能領域として検出する。
[0057] 図 7の例では、 3つのエントリ力もなる". rel"系セクション 151と、そこから指されてい る". dynsym"セクションの 3つのエントリ 153, 154, 155と、そこ力ら旨されて! /、る", dynstr"セクションの 3つの文字列" ABC", "XYZ", "DEF"とが削除可能領域とし て検出される。
[0058] 削除可能領域検出部 2は、上記の通り". rel"系セクション力もたどって". dynstr" セクションの文字列を参照し、その文字列がアルファベット以外力 始まる文字列で あった場合に、その文字列とその文字列を指していたセクションを削除可能領域と見 なさないという判定条件を備えることも可能である。これは、アンダースコア"—"のよう にアルファベット以外力 始まる文字列は内部生成用のものであり、シンボルのァドレ ス解決と関係ない可能性があるからである。文字列の削除可能領域の検出に関する この削除対象外とする基準は、今後同様に文字列の削除を考える時に実施すること が可能である。
[0059] また、削除可能領域検出部 2は、さらに上記再配置情報である". rel"系セクション 力 たどって得られたシンボル情報だけではなく、 ". rel"系セクションからは指されず ". dynsym"セクションから直接指される". dynstr"セクションの文字列と、それを指 している". dynsym"セクションのエントリとを削除可能領域として検出する判定条件 を備えることも可能である。
[0060] この場合、 ". dynsym"セクションのエントリには、実行バイナリプログラム自身が持 つ関数を、外部の別の実行バイナリプログラムが使用できるようにエクスポートしてい るシンボルが登録されている。このシンボルは、別の実行バイナリプログラム力もシン ボルのアドレス解決の際に検索される対象となる。したがって、アドレス解決のための シンボル情報として上記の通り". dynsym"セクションから直接指される文字列と、そ の". dynsym"セクションを削除可能と見なすことができる。
[0061] ただし、 ". dynsym"セクションには、実行バイナリプログラムに固有でアドレス解決 とは無関係のシンボル情報も存在する。したがって、 ". dynsym"セクションから直接 指される文字列と、その". dynsym"セクションを削除可能領域とする判定条件を用 いる際には、アドレス解決とは無関係のシンボル情報を削除対象外とすればよい。例 えば、シンボルのタイプ属性が" NOTYPE"のものを削除対象外とする方法が考えら れる。また、シンボルのタイプ属性がデータオブジェクトあるいはコードオブジェクトの シンボル情報のみを削除可能領域として検出してもよい。
[0062] その他にも例えば、グローバルスコープのシンボルであること、あるいは関連セクシ ヨンが". text", ". rodata"、 ". data"及び". bss"のいずれかのセクションであること などを削除可能であることの判定条件にしてもよい。
[0063] また、削除可能領域検出部 2は、上記に述べてきた通りシンボル情報が削除可能 領域かどうかの判定を容易にするために、実行バイナリプログラムのシンボル情報を 解析し管理することもできる。
[0064] シンボル情報を削除するためには、 1つのシンボルに対する情報を管理すると、シ ンボルの削除可能かどうかの判定やシンボル情報に対する操作を管理しやすくなる 。また、このシンボル情報の内部管理構造がある場合、実行バイナリ書き換え部 3は、 実行バイナリプログラムを書き換えて容易に再構成することができる。
[0065] 図 8は、シンボル情報の内部管理構造の一例を示す図である。図 8に示すシンボル 情報の内部管理構造は、あるシンボルに対するシンボル情報を管理するものであり、 次のシンボル情報の内部管理構造へのポインタ 166を持ち、各シンボル情報の内部 管理構造をリンク構造でつないでたどることができる。
[0066] 図 8のシンボル情報の内部管理構造には、シンボル削除可能力どうかの可否情報 161がある。シンボル情報が削除可能力どうかの判定条件にしたがって、管理するシ ンボル情報が削除可能かどうかの可否情報 161を更新し管理することができる。
[0067] また、シンボル情報の内部管理構造には、何のシンボルに関して管理して 、るかを 判別するために、シンボル文字列へのポインタ 162がある。そして、シンボルを参照し ているセクションに関する情報 163及びそのセクションのセクション内における位置情 報 164を備える。これらの情報により、今管理しているシンボルがどのセクションから 参照されて 、る力、またセクションのどの位置力 参照されて 、るかを管理することが できる。
[0068] このシンボル情報の内部管理構造には、さらに、文字列を他のシンボルと共用して いることを判断するための情報を備えることができる。これは、複数のシンボル力 実 行バイナリプログラムの". dynstr"セクションにある文字列を共用する可能性がある ためである。図 9は、実行バイナリプログラムの複数のシンボルが文字列を共用する 場合の動作を説明するための模式図である。
[0069] 図 9では、実行バイナリプログラムのシンボルの文字列そのものを保持する". dyns tr"セクションに、 "unsetenv"という文字列が存在する。そして、この実行バイナリプ ログラムには、 "setenv"というシンボル 172及び" unsetenv"というシンボル 173が存 在する。この場合、 "setenv"というシンボル 172は、 "unsetenv"というシンボル 173 の末尾部分の文字列と一致する。このように、実行バイナリプログラムでシンボルの文 字列を共用する場合がある。
[0070] 文字列を共用する場合、図 9に示す通り" unsetenv"というシンボル 173は、通常 通り実行バイナリプログラムのシンボルの文字列" unsetenv"の先頭 171を指すが、 " setenv"というシンボル 172はシンボルの文字列" unsetenv"のうちの" setenv"の先 頭 174を指す。
[0071] 以上のように、複数のシンボルが実行バイナリプログラムにある文字列を共用する 場合、一方のシンボルのみが削除可能と判定できても、他方のシンボルが削除可能 と判定されて 、なければ、実行バイナリプログラムにあるシンボルの文字列及び関連 するシンボル情報は削除できない。例えば、図 9の例では、 "unsetenv"というシンポ ル 173が削除可能と判定されても、実行バイナリプログラムのシンボルの文字列" uns etenv"を削除してしまうと、文字列を共用して!/、るシンボル" setenv"の指すべき文 字列がなくなるという問題が起こる。
[0072] 上記問題を解決するために、シンボル情報の内部管理構造は、文字列を他のシン ボルと共用していることを判断するための共用情報 165を持つ。例えば、その文字列 を共用して 、るシンボルの数を記録しても良 、し、文字列の先頭力 指して 、るか途 中から指しているかを管理してもよい。削除可能領域検出部 2は、削除可能であるか どうかを判定する際に、シンボル情報の内部管理構造にあるこの文字列の共用情報 165を参照し、文字列を共用している全てのシンボルに対して削除可能であると判定 した時に、それらのシンボル情報を削除可能として検出する。その他にも、共用して いる文字列全体のうち一部の部分文字列に関して削除可能であると判定した時に、 その部分の文字列とそれに関するシンボル情報とを削除可能領域として検出するこ とも可能である。
[0073] ここで、削除可能領域検出部 2が、実行バイナリ読み取り部 1から実行バイナリプロ グラムの内部の構成情報を受け取って、シンボル情報の内部管理構造を作成する処 理について説明する。図 10及び図 11は、シンボル情報の内部管理構造を作成する 処理手順の一例を示すフローチャートである。
[0074] まず、削除可能領域検出部 2は、実行バイナリ読み取り部 1から実行バイナリプログ ラムの構成情報を取得する (ステップ Sl)。そして、削除可能領域検出部 2は、 ". dy nstr"セクションを解析し文字列単位でシンボル情報の内部管理構造を作成する (ス テツプ S2)。これにより、実行バイナリプログラムが保持する文字列一つ一つに対する シンボル情報の内部管理構造が作成される。
[0075] そして、次に削除可能領域検出部 2は、シンボル情報の内部管理構造によってシ ンボルを参照するセクション情報を管理するために、各セクション力 アクセスするシ ンボル名との照合を行う。
[0076] まず、削除可能領域検出部 2は、 ". dynsym"セクションを解析し、得られたシンポ ル名をシンボル情報の内部管理構造の中で検索する (ステップ S3)。そして、削除可 能領域検出部 2は、 ". dynsym"セクション力 アクセスするシンボル名と完全一致す る文字列がシンボル情報の内部管理構造の中にあるかどうかを判定する (ステップ S 4)。シンボル名と完全一致する文字列が存在する場合 (ステップ S4で YES)、削除 可能領域検出部 2は、シンボル情報を削除できるようにするため、一致した文字列を 管理するシンボル情報の内部管理構造に、 ". dynsym"セクション力 の参照がある ことを表す参照情報及び参照元の位置を表す位置情報を記録する (ステップ S5)。
[0077] 一方、シンボル名と完全一致する文字列が存在せず部分一致する場合 (ステップ S 4で NO)、このシンボルは他のシンボルと文字列を共用していると見なすことができる 。そこで、削除可能領域検出部 2は、文字列に部分一致するシンボルのために新規 に内部管理構造を作成する (ステップ S6)。そして、削除可能領域検出部 2は、部分 一致したシンボルの双方の内部管理構造に". dynsym"セクションからの参照情報 及び参照位置とともに共用に関する情報を記録する (ステップ S7)。
[0078] なお、削除可能領域検出部 2は、 ". rel"系セクションに対しても、 ". dynsym"セク シヨンに対して行ったステップ S4からステップ S7の処理と同様の処理を行う。すなわ ち、削除可能領域検出部 2は、まず". rel"系セクションを解析し、得られたシンボル 名をシンボル情報の内部管理構造の中で検索する (ステップ S8)。
[0079] そして、削除可能領域検出部 2は、 ". rel"系セクションから". dynsym"セクション 経由でアクセスするシンボル名と完全一致する文字列がシンボル情報の内部管理構 造の中にあるかどうかを判定する (ステップ S 9)。シンボル名と完全一致する文字列 が存在する場合 (ステップ S9で YES)、削除可能領域検出部 2は、シンボル情報を 削除できるようにするため、一致した文字列を管理するシンボル情報の内部管理構 造に、 ". rel"系セクションからの参照があることを表す参照情報及び参照元の位置を 表す位置情報を記録する (ステップ S 10)。必要であれば、削除可能領域検出部 2は 、アクセスの際に経由した". dynsym"セクションの情報も記録する。
[0080] 一方、シンボル名と完全一致する文字列が存在せず部分一致する場合 (ステップ S 9で NO)、このシンボルは他のシンボルと文字列を共用していると見なすことができる 。そこで、削除可能領域検出部 2は、文字列に部分一致するシンボルのために新規 に内部管理構造を作成する (ステップ Sl l)。そして、削除可能領域検出部 2は、部 分一致したシンボルの双方の内部管理構造に". rel"系セクションからの参照情報及 び参照位置とともに共用に関する情報を記録する (ステップ S12)。必要であれば、 削除可能領域検出部 2は、アクセスの際に経由する". dynsym"セクションに関する 情報も記録する。
[0081] 最後に、削除可能領域検出部 2は、削除可能力どうかの判定条件にしたがって削 除可能かどうかの可否情報を、シンボル情報の内部管理構造に記録する (ステップ S 13)。
[0082] なお、削除可能かどうかの判定条件によっては、図 10に示す". dynsym"セクショ ンに関するステップ S3からステップ S7までの一連の処理、あるいは図 11に示す". r el"系セクションに関するステップ S8からステップ S12までの一連の処理のどちらか一 方の処理のみでもかまわな 、。 [0083] 例えば、削除可能力どうかの判定条件力 ". rel"系セクション力もたどれるシンポ ル情報であり、かつ共有して 、るシンボル全てが削除できる場合と 1、う条件であれば 、図 10の処理のうち". dynsym"セクションに関するステップ S3からステップ S7まで の一連の処理を行わなくてよい。また、逆に他のセクションに関して、図 10の". dyns ym"セクションに関するステップ S3からステップ S7までの一連の処理と同様の処理 を、図 11に示すステップ S 13の処理の前に追加することも可能である。
[0084] すなわち、プログラムの実行時にシンボルにアクセスする他のセクションに関して、 同様の一連の処理を追カ卩して、そのセクション力もの参照情報をシンボル情報の内 部管理構造に記録しておくことが有効となる。なぜなら、そのようなセクションは、シン ボルのアドレス解決とは関係なくプログラムの実行時にシンボル情報にアクセスする。 そのため、そのシンボル情報が例えば". rel"系セクションから参照されているという 理由のみで削除すると、プログラムの実行時にシンボルが存在しないため動作しなく なる恐れがある。具体的にそのようなセクションの例を挙げると、種々の動的リンク情 報を管理している". dynamic"セクションや、シンボルのバージョンを管理する". gn u. version"系セクションや、ライブラリ情報を保持する". gnu. liblist"セクションなど がある。
[0085] 削除可能領域検出部 2は、削除可能かどうかの判定条件として、上記のようなセク シヨン力 の参照があるシンボル情報を削除対象外とする条件を採用することができ 、より精密なシンボル情報の削除を行うことができる。
[0086] 削除可能領域検出部 2は、削除可能かどうかの判定条件として、さらに他の実行バ イナリプログラム力もの参照があるシンボル情報を削除対象外とすることもできる。例 えば、事前にシンボル情報を使用する実行バイナリプログラムのリストがあり、実行バ イナリ読み取り部 1は、そのリストの実行バイナリプログラムを読み取る。削除可能領 域検出部 2は、その実行バイナリプログラムのシンボル情報を受け取って解析し、参 照する他の実行バイナリプログラムのシンボル情報を検出して、削除対象外とする。
[0087] 削除可能領域検出部 2は、以上に述べた種々の判定条件を用いることができ、設 定された判定条件を満たしたシンボル情報の内部管理構造に、シンボル削除可能で あることを記録し、そのシンボル情報の内部管理構造を実行バイナリ書き換え部 3に 渡す。
[0088] なお、削除可能領域検出部 2で実行バイナリプログラムのシンボル情報の解析を容 易にするために上記のシンボル情報の内部管理構造を説明した力 再配置情報や シンボル情報をたどって解析できればよぐその他の方法を採用しても本発明の実施 に問題はない。
[0089] 実行バイナリ書き換え部 3は、これまでに解析した実行バイナリプログラムの情報と 、削除可能領域として検出した情報とを削除可能領域検出部 2から取得する。実行 ノイナリ書き換え部 3は、削除可能領域の情報として、例えばこれまでに説明したシ ンボル情報の内部管理構造と、そこに記録されている削除可能かどうかの可否情報 とを受け取る。
[0090] 実行バイナリ書き換え部 3は、受け取った実行バイナリプログラムの情報と削除可能 領域の情報とに基づいて、削除可能な再配置情報やシンボル情報を特定できる。例 えば、実行バイナリ書き換え部 3は、実行バイナリプログラムの各セクション及び各セ クシヨン内の削除可能領域であるシンボル情報の内部管理構造を 1要素ずつ取得し て、削除可能力どうかの可否情報を確認する。そのシンボル情報に対して削除可能 である情報があれば、シンボル情報の内部管理構造に記録されて 、る参照セクショ ンの情報やシンボル文字列へのポインタをたどって、実行バイナリプログラムの中で 削除すべき領域を特定できる。それをシンボル情報の内部管理構造の全ての要素に 対して行えば、 1つの実行バイナリプログラムに対する削除可能領域を全て特定でき る。
[0091] しかし、実行バイナリプログラムの中で削除可能領域の実データそのものを削除し てしまうと、実行バイナリプログラムの内部構成が変化して、実行バイナリプログラムの コード本体であるテキスト情報やデータ情報の配置アドレスが変化する可能性がある
。ある実行バイナリプログラムのテキスト情報やデータ情報は、別の複数の実行バイ ナリプログラム力も参照されている可能性がある。したがって、全ての実行バイナリプ ログラムの中で、配置アドレスの変化が生じた実行バイナリプログラムを参照する領域 を検出し、変化した分だけ参照するアドレスを補正する必要が生じる。この補正がな いと実行バイナリプログラムはプログラムとして動作しない。しかし、実行バイナリプロ グラムのコードの中から、別の実行バイナリプログラムの特定のアドレスを参照してい るかどうかを検出することは非常に困難であるという問題があった。
[0092] そのような配置アドレスの変化が好ましくないセクションを例に挙げると、セクション 属性が" PROGBITS"であるセクション、あるいはそのような情報がなければ、実行バ イナリプログラムの実データを形成する". pit", ". text", ". fini"、 ". rodata"、 ". d ata"、 ". ctors"、 ". dtors"、 ". got"及び". bss"などのセクションが代表的なもので ある。
[0093] 上記問題に対処するため、実行バイナリ書き換え部 3は、削除可能領域として検出 された再配置情報及びシンボル情報に対して、実データそのものを削除するのでは なぐ特定データに書き換える。
[0094] 例えば、実行バイナリ書き換え部 3は、削除可能と検出されているシンボル情報の 内部管理構造を取得して、そこ力 参照するセクション、参照元を示す位置及びシン ボル文字列の位置を取得できれば、実行バイナリプログラム中のその領域を特定デ ータで書き換える。ここで、特定データは、ある同一のデータ、例えば 0あるいは OxF Fなどでよい。また、特定データは、ある一定の規則に基づくデータでも力まわない。
[0095] 実行バイナリ書き換え部 3が、実行バイナリプログラムの中の実データそのものを削 除するのではなぐ特定データに書き換えることにより、実行バイナリプログラムのテキ スト情報やデータ情報の配置アドレスが変化しなくなり、上記問題を回避できる。
[0096] また、最終的に実行バイナリイメージ作成部 4は、実行バイナリ書き換え部 3によつ て書き換えられた実行バイナリプログラムを機器やシステム上で認識可能な実行バイ ナリイメージに変換する。この実行バイナリイメージを、圧縮技術を用いて作成すれば 、特定データ例えば同一データで書き換えられた領域は、他のデータと比較して一 般的に圧縮率が高くなるので、実行バイナリイメージのデータサイズを削減することが できる。
[0097] また、実行バイナリ書き換え部 3は、実行バイナリプログラムの削除可能領域を特定 データで書き換えて、実行バイナリ読み取り部 1で読み取った実行バイナリプログラム の内部構成である ELFヘッダやプログラムヘッダや各セクション構造を構成し直して 、実行バイナリプログラムの形式で出力する。 [0098] 一つ一つの実行バイナリプログラムが、実行バイナリ読み取り部 1に入力されて、再 配置情報及びシンボル情報が削除可能な状態になって、実行バイナリ書き換え部 3 力も出力される。次に、実行バイナリイメージ作成部 4は、これらの実行バイナリプログ ラムを、機器やシステム上で動作できる状態にするために実行バイナリイメージを作 成する。例えば、ファイルシステムなどが導入され、そのファイルシステム用の実行バ イナリイメージが作成される。
[0099] この実行バイナリイメージを作成するにあたって、圧縮技術を用いれば、上述した 通り、特定データに書き換えた領域の圧縮率が高まり、実行バイナリイメージのデー タサイズを削減することができる。例えば、実行バイナリプログラムを圧縮することがで きるファイルシステムを導入することが考えられる。ファイルシステムについては、 FA T(File Allocation Table)、 VFAT (Virtual FAT)ゝ FAT32、 NTFS (NT Fi le System)、 HFS (High— performance File System)、 ext2、 ext3、 Reiser FS、 JFS Qournaling File System)、 XFS、JFFS (Jo urnaling Flash File S ystem) 2、 CRAMFSなどが使用できる。その他、独自の圧縮技術、あるいは独自の ファイルシステムを使用しても力まわな 、。
[0100] これまで実行バイナリ書き換え部 3が、実行バイナリプログラムの削除可能領域を特 定データに書き換える方式を説明してきたが、それだけではなぐさらに実行バイナリ プログラムの削除可能領域、すなわち特定データに書き換える領域をセクション内で 集約することも可能である。特定データへの書き換え領域を集約することにより、圧縮 技術によってより高い圧縮率による実行バイナリイメージのサイズ削減の効果が得ら れる。書き換え領域を集約する例について、図 12及び図 13の例を用いて説明する。
[0101] 図 12は、実行バイナリ書き換え部 3が特定データに書き換える領域を集約しない場 合の動作を説明するための模式図である。図 13は、実行バイナリ書き換え部 3が特 定データに書き換える領域を集約する場合の動作を説明するための模式図である。
[0102] 図 12において、 ". rel"系セクションの 3つのエントリ 181は、それぞれ". dynsym" セクションの 3つのエントリ 182, 183, 184に対応付けられている。 ". dynsym"セク シヨンのエントリ 182は、 ". dynstr"セクションの文字列" XYZ"を指しており、エントリ 183は文字列" ABC"を指しており、エントリ 184は文字列" DEF"を指している。図 1 2において、実行バイナリ書き換え部 3は、シンボル情報が削除可能であることを表す 可否' |·青報にした力 Sつて、 ". dynsym"セクションのエントリ 182, 183, 184、及び". d ynstr"セクションの 3つの文字列を特定データに書き換えることになる。この場合、特 定データは、 ". dynsym"セクション及び". dynstr"セクションの中で複数領域に分 散してしまう。
[0103] そこで、図 13に示すように、実行バイナリ書き換え部 3は、特定データに書き換える ". dynsym"セクションの 3つのエントリ 185, 186, 187を一箇所に集約する。また、 実行バイナリ書き換え部 3は、 ". dynstr"セクションの 3つの文字列も一箇所に集約 する。なお、図 13の例では、書き換える領域を各セクションの末尾に集約しているが 、一箇所に集約するのであれば、セクション内のどの位置でも力まわない。また、特定 データへの書き換えと、書き換え領域の集約との処理順序は問わな 、。
[0104] 実行バイナリ書き換え部 3が、特定データに書き換える領域を一箇所に集約するこ とによって、セクション内の残りのデータも位置が変化する可能性がある。そこで実行 バイナリ書き換え部 3は、残りのデータの位置が変化すると、それに関連するセクショ ンの参照先を補正する。
[0105] まず、 ". dynstr"セクション内の書き換え領域を集約する場合、実行バイナリプログ ラムの残りの文字列の位置が変化することに伴って、その文字列を参照するセクショ ンの各エントリの位置を補正する。これは、削除可能領域検出部 2から取得したシン ボル情報の内部管理構造から、そのシンボル文字列を参照するセクションの情報を 取得して、それぞれのセクションの位置を変更すればよ!、。
[0106] 例えば、 ". dynstr"セクションの書き換え領域が集約されて文字列の位置が変更さ れると、実行バイナリ書き換え部 3は、文字列を参照している". dynsym"セクション や". rel"系セクションの各エントリの位置を補正する。また、実行バイナリ書き換え部 3は、その他、動的リンク情報を管理している". dynamic"セクション、シンボルのバ 一ジョンを管理している". gnu. version"系セクション、ライブラリ情報を保持する", gnu. liblist"セクション、及びシンボル文字列を検索するためのハッシュ構造を管理 する". hash"セクションなどにおいて、文字列を参照している領域の位置を補正する [0107] 実行バイナリ書き換え部 3は、さらに実行バイナリプログラムの削除可能領域、すな わち特定データに書き換える領域をセクション内だけではなぐ実行バイナリプロダラ ム全体で集約することも可能である。特定データへの書き換え領域を実行バイナリプ ログラム全体で集約することにより、セクション単位で集約するよりもさらに大きく集約 することができる。さらに、書き換え領域が実行バイナリプログラム全体で集約された 実行バイナリイメージを圧縮した場合、セクション単位で集約された実行バイナリィメ ージを圧縮するよりも、実行バイナリイメージのデータサイズをより削減することができ る。ここで、書き換え領域を実行バイナリプログラム全体で集約する例を、図 14を用 いて説明する。
[0108] 図 14は、実行バイナリ書き換え部が特定データに書き換える領域を実行バイナリプ ログラム全体で集約する場合の動作を説明するための模式図である。図 14では、例 として". dynsym"セクションど'. dynstr"セクションど'. gnu. version"系セクション とを、削除可能領域を特定データに書き換えるセクションとして挙げている。この 3つ のセクションの中で、実行バイナリ書き換え部 3が特定データに書き換える部分をそ れぞれ領域 191, 192, 193とすると、それらを実行バイナリプログラム全体で集約す ると領域 194に集約される。ただし、この時実行バイナリプログラムの中にあるテキスト 情報やデータ情報に関しては、配置アドレスを変化させない。
[0109] 実行バイナリプログラム全体で特定データの書き換え部分を集約する方法としては 、例えば、直前のセクションの末尾(セクションの特定データではない部分の末尾)に 続いて次のセクションを配置するように、対象セクションの位置を補正し、その際セク シヨンの移動によって上書きされた特定データの部分 (削除可能領域)を、移動後の セクションの末尾に特定データのデータサイズ分まとめて書き出せばよい。実行バイ ナリ書き換え部 3は、この動作を全てのセクションに対して行えばよい。セクションの位 置の補正は、例えばセクションヘッダ等にあるセクションの位置情報を変更すればよ い。なお、ここに挙げた方法は一例であり、特定データを実行バイナリプログラム全体 で集約する図 14に示す動作が実現できれば他の方法でも力まわない。
[0110] 実行バイナリ書き換え部 3が実行バイナリプログラム全体で書き換え領域を集約す る場合、各セクションの位置が変化する可能性がある。そこで、実行バイナリ書き換え 部 3は、セクションの位置の変化にしたがって、実行バイナリプログラム全体の情報を 補正する必要がある。
[0111] 例えば、セクションヘッダにはセクションの配置アドレスとオフセットとが存在するの で、実行バイナリ書き換え部 3は、セクションの位置の変化にしたがって、それらを補 正する必要がある。また、プログラムヘッダもそのプログラムヘッダに属するセクション サイズの合計値を求め、求めた合計値に基づ 、てプログラムヘッダに含まれるフアイ ルサイズ及びメモリサイズを必要あれば補正する。
[0112] その他にも、実行バイナリ書き換え部 3は、削除可能領域検出部 2から取得した削 除可能領域の情報で、あるセクション全てが削除可能になっている場合、セクション そのものを削除することができる。この場合にも上述した実行バイナリプログラム全体 に関して情報を補正する必要があれば行う。また、各セクションには他のセクションを 参照することを示す情報があるので、実行バイナリ書き換え部 3は、この情報を必要 があれば補正する。その他にも ELFヘッダは存在するセクション数を管理して!/、るの で、実行バイナリ書き換え部 3は、セクション数の情報を補正する必要がある。
[0113] これまで、実行バイナリ書き換え部 3が削除可能領域を特定データに書き換えること により、圧縮率を高めて、実行バイナリイメージのデータサイズを削減する方法を説 明してきた。その方法とは別に、実行バイナリイメージ作成部 4は、さらに特定データ で書き換えられた一定のメモリ領域単位 (ページ単位)を、ある実行バイナリプロダラ ムの中で、あるいは全ての実行バイナリプログラムで共用してもよい。この場合、実行 バイナリイメージのサイズをより削減することが可能である。この方法に関して、図 15 の例を用いて説明する。
[0114] 図 15は、特定データに書き換えられたページを全ての実行バイナリプログラムで共 用する動作について説明するための模式図である。図 15 (A)は、 2つの実行バイナ リプログラムから成り立つ通常の実行バイナリイメージの一例を示す図であり、図 15 (
B)は、共用ページを利用した実行バイナリイメージの一例を示す図である。図 15 (A )では、実行バイナリプログラム Aと実行バイナリプログラム Bの 2つの実行バイナリプ ログラム力も成り立つ通常の実行バイナリイメージの例を挙げている。実行バイナリプ ログラムのファイルデータは、ページ単位で管理されている。そして、実行バイナリプ ログラム A及び実行バイナリプログラム Bともに図 15 (A)では" 0"で表されている特定 データに書き換えられたページ 201を持つ。通常、実行バイナリイメージは、この" 0" で表されたページ 201を含む所定のサイズのファイルデータ 202, 203力ら成り立つ
[0115] しかし、本実施の形態における実行バイナリイメージ作成部 4は、図 15 (B)に示す 通り共用ページを利用した実行バイナリイメージを作成することが可能である。実行 バイナリイメージ作成部 4は、実行バイナリプログラムのファイルデータをページ単位 で管理するためのページ管理情報 204を作成し、作成したページ管理情報 204を各 実行バイナリプログラムに持たせる。実行バイナリイメージ作成部 4は、特定データで 書き換えられたページ(図 15 (A)で" 0"と表されているページ)が、 1つの実行バイナ リプログラムの複数の領域力 共用される一つの共用ページ 206を指すようにページ 管理情報 204を設定し、また他の実行バイナリプログラムからもページ管理情報 204 によって同一の共用ページ 206を指すようにページ管理情報 204を設定して、実行 ノイナリイメージを作成する。
[0116] ここで、ページ管理情報 204は、ページ単位ではなぐ何らかの物理メモリの管理 単位に従って管理すればよい。また、必ずしも特定データで書き換えられたページ( 図 15 (A)で" 0"と表されているページ)個々に対して共用ページへのポインタを管理 する必要はない。例えば、ファイルデータの中で、共用ページに割り当てる領域を、 ファイルの先頭からのアドレスのオフセット値によって範囲を指定してもよ!/、し、絶対 アドレス値によって範囲を指定してもよ 、。
[0117] そのように設定することにより、従来 5ページ分のサイズのファイルデータ 202, 203 を含めていた実行バイナリイメージ力 2ページ分のサイズのファイルデータ 205, 20 7と 1ページ分のサイズの共用ページ 206とを含めるだけでよぐ実行バイナリィメー ジのサイズを削減することができる。
[0118] プログラムを実行する際には、以上のように作成した実行バイナリイメージを、機器 やシステムが認識する必要がある。典型的には、オペレーティングシステム (OS)や 基本ソフトウェアと呼ばれるソフトウェアが、記憶媒体に格納されている実行バイナリィ メージを読み取って解析し、実行するための実行バイナリプログラムを認識して実行 のための環境を整える。
[0119] 図 16は、共用ページを利用した実行バイナリイメージと、実行バイナリプログラムが 実行される際のアドレス空間との関係を説明するための模式図である。図 16の実行 バイナリプログラム Aが起動されると、 OSは実行バイナリプログラム Aの情報や実体 1S 実行バイナリイメージが持つ管理情報、例えば、図 16の inode211から特定され る。ページ管理情報 212は、前述した通り、実行バイナリプログラムの実体を指し示 す管理情報、あるいは共用ページ 213を使用する領域を特定するための情報を含 む。
[0120] OSは、ページ管理情報 212を読み取り、実行バイナリイメージの物理的な領域を、 プログラムを実行するアドレス空間に割り当てる。ここで、プログラムのアドレス空間上 で、実行バイナリプログラムの". text"セクションなどの位置を変えないために、仮想 記憶管理機構 214により仮想的なアドレス空間が作成される。すなわち、仮想記憶管 理機構 214は、実行バイナリプログラムに対して特定データで書き換えたページ領域 と、書き換えていないページ領域とを認識し、仮想的なアドレス空間上で元の実行バ イナリブログラムの実体の配置を実現する。
[0121] ここで、具体的な例について図 16を用いて説明する。実行バイナリプログラム Aを 仮想的なアドレス空間に展開する場合、 OSは、ファイルデータ 218の最初のページ を、プログラムの仮想的なアドレス空間上における最初の位置 215に割り当てるように 仮想記憶管理機構 214を設定する。そして、 OSは、ページ管理情報 212を参照し、 後続する 3つのページが共用ページ 213を使用していることを認識する。 OSは、仮 想的なアドレス空間上における 2番目力も 4番目の位置 217にそれぞれ共用ページ 2 13を割り当てるように仮想記憶管理機構 214を設定する。そして、 OSは、ファイルデ ータ 218の最後のページを、仮想的なアドレス空間上における最後の位置 216に割 り当てるように仮想記憶管理機構 214を設定する。実行プログラム Aは、仮想記憶管 理機構 214が管理する仮想的なアドレス空間上で動作する。
[0122] 同様に、実行バイナリプログラム Bを仮想的なアドレス空間に展開する場合、 OSは 、ページ管理情報 212を参照し、 1番目と 2番目のページが共用ページ 213を使用し ていることを認識する。 OSは、仮想的なアドレス空間上における 1番目と 2番目の位 置 219にそれぞれ共用ページ 213を割り当てるように仮想記憶管理機構 214を設定 する。次に、 OSは、ファイルデータ 223の最初のページを、プログラムの仮想的なァ ドレス空間上における 3番目の位置 220に割り当てるように仮想記憶管理機構 214を 設定する。そして、 OSは、ページ管理情報 212を参照し、後続する 4番目のページ が共用ページ 213を使用していることを認識する。 OSは、仮想的なアドレス空間上 における 4番目の位置 221に共用ページ 213を割り当てるように仮想記憶管理機構 214を設定する。そして、 OSは、ファイルデータ 223の最後のページを、仮想的なァ ドレス空間上における最後の位置 222に割り当てるように仮想記憶管理機構 214を 設定する。実行プログラム Bは、仮想記憶管理機構 214が管理する仮想的なアドレス 空間上で動作する。
[0123] 以上の動作により、例えば、図 16の仮想的なアドレス空間上の位置 216に実行バ イナリプログラム中の実行コード本体であるテキスト情報やデータ情報が配置される ので、アドレス空間上の配置アドレスを変化させることなくテキスト情報やデータ情報 を配置することができ、他の実行コードからも問題なくアクセスすることが可能になる。
[0124] なお、図 16の例では、仮想記憶管理機構 214は、仮想的なアドレス空間上におけ る位置 217に、物理的な実行バイナリイメージの共用ページ 213を割り当てているが 、共用ページに全くアクセスしないことが予めわ力つている場合、仮想的なアドレス空 間上の位置 217を共用ページの物理的な領域に割り当てなくても動作に問題はない 。また、どのプログラムも特定データで書き換えたページ領域にアクセスしないことが わ力つている場合、さらに実行バイナリイメージの中から共用ページを除くことも可能 である。
[0125] 本実施の形態における実行バイナリイメージ作成装置は、情報機器、 AV機器、通 信機器及び家電機器などの種々の機器に搭載されるコンピュータで実行される実行 バイナリプログラムに適用するものであり、コンピュータが認識するための実行バイナ リイメージを出力する。
[0126] 図 17は、本実施の形態における情報処理システムの構成を示す図である。図 17に 示す情報処理システム 10は、実行バイナリイメージ作成装置 11とコンピュータ 12とを 備える。実行バイナリイメージ作成装置 11の構成は、図 1に示す実行バイナリィメー ジ作成装置と同じである。コンピュータ 12は、記憶部 21及びプログラム実行部 22を 備える。
[0127] 記憶部 21は、例えば ROM等で構成され、実行バイナリイメージ作成装置 11によつ て作成された実行バイナリイメージを記憶する。プログラム実行部 22は、例えば CPU 等で構成され、記憶部 21に記憶されて ヽる実行バイナリイメージを仮想アドレス空間 に展開して実行する。なお、本実施の形態において、記憶部 21が実行バイナリィメ ージ記憶部の一例に相当し、プログラム実行部 22が実行部の一例に相当する。また 、本実施の形態において、実行バイナリイメージ実行プログラムが例えば ROMに記 憶されており、実行バイナリイメージ実行プログラムが記憶部 21及びプログラム実行 部 22として CPU及び EEPROMを機能させる。
[0128] 図 17に示すように、実行バイナリイメージ作成装置 11はコンピュータ 12の外部にあ り、実行バイナリイメージ作成装置 11から出力される実行バイナリイメージをコンビュ ータ 12上で認識し動作せることが可能である。
[0129] また、別の実施の形態として、実行バイナリプログラムが実行されるコンピュータ上 で、実行バイナリイメージ作成装置と同様の機能を動作させることも可能である。図 1 8は、本実施の形態における情報処理システムの別の構成を示す図である。図 18に 示すコンピュータ 12'は、実行バイナリイメージ作成処理部 11 '、記憶部 21、プロダラ ム実行部 22及び通信部 23を備える。情報処理システム 10'は、実行バイナリィメー ジ作成処理部 11 '、記憶部 21及びプログラム実行部 22で構成される。なお、図 18に 示す情報処理システム 10'において、図 17に示す情報処理システム 10と同じ構成 については同じ符号を付し、説明を省略する。
[0130] 通信部 23は、例えばインターネットなどのネットワークを介して実行バイナリプロダラ ムを受信し、受信した実行バイナリプログラムを実行バイナリイメージ作成処理部 11 ' の実行バイナリ読み取り部 1へ出力する。実行バイナリイメージ作成処理部 11 '及び プログラム実行部 22は、例えば CPU等で構成され、記憶部 21は、例えば EEPRO M (Electrically Erasable Programmable Read Only Memoryノ等で構成 される。実行バイナリイメージ作成処理部 11 'の構成は、図 1に示す実行バイナリィメ ージ作成装置の構成と同じである。 [0131] このように、ネットワークを介して実行バイナリプログラムが受信され、コンピュータ内 で実行バイナリイメージが作成されるので、実行バイナリイメージをアップデートするこ とがでさる。
[0132] なお、本実施の形態ではネットワークを介して実行バイナリプログラムを受信して実 行バイナリイメージを作成している力 本発明は特にこれに限定されず、 CD-ROM などのコンピュータ読み取り可能な記録媒体から実行バイナリプログラムを読み出し て実行バイナリイメージを作成してもよい。この場合、コンピュータ 12'は、記録媒体を 駆動する記録媒体駆動部を備える。記録媒体駆動部は、記録媒体力も実行バイナリ プログラムを読み出し、読み出した実行バイナリプログラムを実行バイナリイメージ作 成処理部 11 'の実行バイナリ読み取り部 1へ出力する。
[0133] 以上、本実施の形態では、実行バイナリプログラムの形式として ELF形式を代表例 に挙げて説明してきた力 ELF形式の実行バイナリプログラムのみに実施の範囲を 限定するものではなぐ他の実行バイナリプログラムの形式においても、これまで説明 した再配置情報とシンボル情報とを同様に備え、これまでの説明通り同様に実施する ことができる。
[0134] また、本実施の形態では、実行バイナリイメージ作成装置を中心に説明してきたが 、情報処理システム、情報処理方法、実行バイナリイメージ作成方法、実行バイナリィ メージ作成プログラム、実行バイナリイメージ作成プログラムを記録したコンピュータ 読み取り可能な記録媒体、実行バイナリイメージ実行装置、実行バイナリイメージ実 行方法、実行バイナリイメージ実行プログラム及び実行バイナリイメージ実行プロダラ ムを記録したコンピュータ読み取り可能な記録媒体に関しても、同様に実施すること ができる。
[0135] さらにまた、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を 限定しょうとするものではない。本発明の範囲を逸脱することなく種々の改良や変形 を行うことができることは言うまでもない。
[0136] また、例えば、実行バイナリ読み取り部 1、削除可能領域検出部 2、実行バイナリ書 き換え部 3及び実行バイナリイメージ作成部 4のうちの少なくとも 1つ力 1チップ化さ れた LSI (大規模集積回路)に含まれ得る。実行バイナリ読み取り部 1、削除可能領 域検出部 2、実行バイナリ書き換え部 3及び実行バイナリイメージ作成部 4のうちの少 なくとも 1つを LSIに含めることによって、実行バイナリイメージ作成装置の製造工程 を容易にすることができる。
[0137] なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている
[0138] 本発明の一局面に係る情報処理システムは、コンピュータ上で実行される実行バイ ナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読み取り部と、前 記実行バイナリ読み取り部によって読み取られた前記実行バイナリプログラムの構成 情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決を実 施しない場合に前記実行バイナリプログラムの中で削除可能となる領域を検出する 削除可能領域検出部と、前記削除可能領域検出部によって検出された前記実行バ イナリブログラムの削除可能領域を特定のデータに書き換える実行バイナリ書き換え 部と、前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプロダラ ムに含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な 形式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイ ナリイメージ変換部と、前記実行バイナリイメージ変換部によって変換された前記実 行バイナリイメージを記憶する実行バイナリイメージ記憶部と、前記実行バイナリィメ ージ記憶部に記憶されている前記実行バイナリイメージを仮想アドレス空間に展開し て実行する実行部とを備える。
[0139] 本発明の他の局面に係る情報処理方法は、コンピュータ上で実行される実行バイ ナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読み取りステップ と、前記実行バイナリ読み取りステップにお!、て読み取られた前記実行バイナリプロ グラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アド レス解決を実施しない場合に前記実行バイナリプログラムの中で削除可能となる領域 を検出する削除可能領域検出ステップと、前記削除可能領域検出ステップにおいて 検出された前記実行バイナリプログラムの削除可能領域を特定のデータに書き換え る実行バイナリ書き換えステップと、前記実行バイナリ書き換えステップにおいて書き 換えられた前記実行バイナリプログラムに含まれる前記特定のデータのデータ量を 削減し、コンピュータ上で認識可能な形式である実行バイナリイメージに前記実行バ イナリプログラムを変換する実行バイナリイメージ変換ステップと、前記実行バイナリィ メージ変換ステップにおいて変換された前記実行バイナリイメージを実行バイナリィメ ージ記憶部に記憶する実行バイナリイメージ記憶ステップと、前記実行バイナリィメー ジ記憶ステップにおいて前記実行バイナリイメージ記憶部に記憶された前記実行バ イナリイメージを仮想アドレス空間に展開して実行する実行ステップとを含む。
[0140] これらの構成によれば、コンピュータ上で実行される実行バイナリプログラムの内部 構成を表す構成情報が読み取られる。そして、読み取られた実行バイナリプログラム の構成情報が取得され、実行時にアドレス解決に使用される情報が解析され、ァドレ ス解決が実施されない場合に実行バイナリプログラムの中で削除可能となる領域が 検出される。続いて、検出された実行バイナリプログラムの削除可能領域が特定のデ ータに書き換えられる。そして、書き換えられた実行バイナリプログラムに含まれる特 定のデータのデータ量が削減され、コンピュータ上で認識可能な形式である実行バ イナリイメージに実行バイナリプログラムが変換される。変換された実行バイナリィメー ジが実行バイナリイメージ記憶部に記憶され、実行バイナリイメージ記憶部に記憶さ れている実行バイナリイメージが仮想アドレス空間に展開されて実行される。
[0141] したがって、実行バイナリプログラムの中から再配置情報やシンボル情報などの削 除可能領域を検出し、検出した削除可能領域を特定のデータに書き換え、特定のデ ータのデータ量が削減されるので、実行バイナリプログラムに含まれるテキスト情報や データ情報などの実行コード本体の配置アドレスを変化させることなぐ実行バイナリ イメージのデータ量を削減することができる。
[0142] また、上記の情報処理システムにお 、て、前記実行バイナリ読み取り部は、シンポ ルのアドレス解決を実施済みの前記実行バイナリプログラムを読み取ることが好まし い。
[0143] この構成によれば、シンボルのアドレス解決を実施済みの実行バイナリプログラムが 読み取られるので、シンボルに関するシンボル情報及びシンボルのアドレス解決に 使用される再配置情報を削除することができる。
[0144] また、上記の情報処理システムにお 、て、前記特定のデータは、前記実行バイナリ プログラム内の他のデータよりも圧縮率の高いデータであり、前記実行バイナリィメー ジ変換部は、前記実行バイナリプログラムを前記実行バイナリイメージに変換する際 に、前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプロダラ ムを圧縮することが好まし 、。
[0145] この構成によれば、実行バイナリプログラムを実行バイナリイメージに変換する際に 、削除可能領域が特定のデータに書き換えられた実行バイナリプログラムが圧縮され るので、実行バイナリプログラムにおける特定のデータの圧縮率が他のデータよりも 高くなり、実行バイナリイメージのデータ量を削減することができる。
[0146] また、上記の情報処理システムにお 、て、前記実行バイナリプログラムは、セクショ ン単位で分割され、前記削除可能領域は、前記セクション内の所定の領域であり、前 記実行バイナリ書き換え部は、前記特定のデータに書き換えた領域を前記実行バイ ナリプログラムのセクション単位で集約することが好ましい。
[0147] この構成によれば、実行バイナリプログラムは、セクション単位で分割され、削除可 能領域は、セクション内の所定の領域であり、特定のデータに書き換えた領域が実行 バイナリプログラムのセクション単位で集約され、実行バイナリプログラムが圧縮される ので、実行バイナリプログラムにおける集約された特定のデータの圧縮率が他のデ ータよりも高くなり、実行バイナリイメージのデータ量をさらに削減することができる。
[0148] また、上記の情報処理システムにお 、て、前記実行バイナリプログラムは、セクショ ン単位で分割され、前記削除可能領域は、前記セクションであり、前記実行バイナリ 書き換え部は、前記特定のデータに書き換えた領域を前記実行バイナリプログラム 全体で集約することが好まし ヽ。
[0149] この構成によれば、実行バイナリプログラムは、セクション単位で分割され、削除可 能領域は、セクションであり、特定のデータに書き換えた領域が実行バイナリプロダラ ム全体で集約され、実行バイナリプログラムが圧縮されるので、実行バイナリプロダラ ムにおける集約された特定のデータの圧縮率が他のデータよりも高くなり、実行バイ ナリイメージのデータ量をさらに削減することができる。
[0150] また、上記の情報処理システムにお!/、て、前記実行バイナリイメージ変換部は、前 記実行バイナリプログラムを前記実行バイナリイメージに変換する際に、前記実行バ イナリ書き換え部によって特定のデータに書き換えられた領域を削除するとともに、 前記実行バイナリプログラム内で共用する前記特定のデータを格納した共用領域を 作成し、削除された前記領域の前記実行バイナリプログラム内における位置と前記 共用領域とを関連付けて管理する管理情報を作成することが好ましい。
[0151] この構成によれば、実行バイナリプログラムを実行バイナリイメージに変換する際に 、特定のデータに書き換えられた領域が削除されるとともに、実行バイナリプログラム 内で共用する特定のデータを格納した共用領域が作成され、削除された領域の実行 ノ^ナリプログラム内における位置と共用領域とを関連付けて管理する管理情報が 作成される。したがって、特定のデータに書き換えられた領域が削除され、特定のデ ータが共用領域にのみ格納されるので、実行バイナリイメージが含む特定のデータ のデータ量を削減することができ、実行バイナリイメージ全体のデータ量を削減する ことができる。
[0152] また、上記の情報処理システムにおいて、前記実行バイナリイメージ記憶部に記憶 されている前記実行バイナリイメージを仮想アドレス空間に展開する際に、前記管理 情報を参照し、削除された前記領域の前記実行バイナリプログラム内における位置 を認識し、認識した位置に対応する前記仮想的なアドレス空間に、前記共有領域に 格納されて 、る特定のデータを割り当てることが好ま U、。
[0153] この構成によれば、実行バイナリイメージ記憶部に記憶されている実行バイナリィメ ージが仮想アドレス空間に展開される際に、管理情報が参照され、削除された領域 の実行バイナリプログラム内における位置が認識され、認識された位置に対応する仮 想的なアドレス空間に、共有領域に格納されている特定のデータが割り当てられる。 したがって、実行バイナリプログラムに含まれるテキスト情報やデータ情報などの実行 コード本体の配置アドレスを変化させることなく、仮想的なアドレス空間に実行バイナ リイメージを配置することができる。
[0154] また、上記の情報処理システムにお!/、て、前記実行バイナリ読み取り部は、前記実 行バイナリプログラムがアドレス解決済みであるカゝ否かを表すアドレス解決情報を前 記実行バイナリプログラム力も読み取り、前記削除可能領域検出部は、前記実行バ イナリ読み取り部によって読み取られた前記アドレス解決情報がアドレス解決済みで ある力否かを判定し、アドレス解決済みでないと判定された場合、前記実行バイナリ プログラムの中から削除可能領域を検出しな 、ことが好まし 、。
[0155] この構成によれば、実行バイナリプログラムがアドレス解決済みである力否かを表す アドレス解決情報が実行バイナリプログラム力 読み取られ、読み取られたアドレス解 決情報がアドレス解決済みであるか否かが判定され、アドレス解決済みでな 、と判定 された場合、実行バイナリプログラムの中から削除可能領域が検出されない。したが つて、アドレス解決済みであると判定された場合にのみ、削除可能領域を検出するこ とができ、シンボル情報や再配置情報を削除可能領域として検出することができる。
[0156] また、上記の情報処理システムにお 、て、前記実行バイナリプログラムは、セクショ ン単位で分割され、前記削除可能領域検出部は、前記実行バイナリプログラムの中 でアドレス解決に使用される情報であっても、当該情報が他のセクション力 参照さ れる場合、当該情報を削除の対象外とすることが好ましい。
[0157] この構成によれば、実行バイナリプログラムの中でアドレス解決に使用される情報で あっても、当該情報が他のセクション力 参照される場合、当該情報が削除の対象外 とされるので、他のセクション力 参照される情報は削除されずに残り、参照先のデー タが存在しな 、と 、う不具合を防止することができる。
[0158] また、上記の情報処理システムにお 、て、前記実行バイナリプログラムは、複数の 実行バイナリプログラムを含み、前記削除可能領域検出部は、前記実行バイナリプロ グラムの中でアドレス解決に使用される情報であっても、当該情報が他の実行バイナ リプログラム力 参照される場合、当該情報を削除の対象外とすることが好ましい。
[0159] この構成によれば、実行バイナリプログラムの中でアドレス解決に使用される情報で あっても、当該情報が他の実行バイナリプログラム力も参照される場合、当該情報が 削除の対象外とされるので、他の実行バイナリプログラム力も参照される情報は削除 されずに残り、参照先のデータが存在しないという不具合を防止することができる。
[0160] また、上記の情報処理システムにお 、て、前記削除可能領域検出部は、前記実行 バイナリプログラムの中で複数のシンボルが同一の文字列を共用していることを検出 し、文字列を共用しているシンボル全てが削除可能である場合にのみ、前記複数の シンボル及び前記文字列に対応する領域を削除可能領域として検出することが好ま しい。
[0161] この構成によれば、実行バイナリプログラムの中で複数のシンボルが同一の文字列 を共用していることが検出され、文字列を共用しているシンボル全てが削除可能であ る場合にのみ、複数のシンボル及び文字列に対応する領域が削除可能領域として 検出される。複数のシンボルが実行バイナリプログラム内の文字列を共用している場 合、一のシンボルが削除可能と判定されても、他のシンボルが削除可能と判定されて V、なければ、実行バイナリプログラム内のシンボルの文字列及びシンボル情報は削 除されない。したがって、一のシンボルが削除可能と判定されて文字列が削除されて しま 、、文字列を共用して 、る他のシンボルが文字列を指定することができな ヽと ヽ う不具合を防止することができる。
[0162] 本発明の他の局面に係る実行バイナリイメージ作成装置は、コンピュータ上で実行 される実行バイナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読 み取り部と、前記実行バイナリ読み取り部によって読み取られた前記実行バイナリプ ログラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、ァ ドレス解決を実施しな 、場合に前記実行バイナリプログラムの中で削除可能となる領 域を検出する削除可能領域検出部と、前記削除可能領域検出部によって検出され た前記実行バイナリプログラムの削除可能領域を特定のデータに書き換える実行バ イナリ書き換え部と、前記実行バイナリ書き換え部によって書き換えられた前記実行 バイナリプログラムに含まれる前記特定のデータのデータ量を削減し、コンピュータ 上で認識可能な形式である実行バイナリイメージに前記実行バイナリプログラムを変 換する実行バイナリイメージ変換部とを備える。
[0163] 本発明の他の局面に係る実行バイナリイメージ作成方法は、コンピュータ上で実行 される実行バイナリプログラムの内部構成を表す構成情報を読み取る実行バイナリ読 み取りステップと、前記実行バイナリ読み取りステップにお 、て読み取られた前記実 行バイナリプログラムの構成情報を取得し、実行時にアドレス解決に使用される情報 を解析し、アドレス解決を実施しない場合に前記実行バイナリプログラムの中で削除 可能となる領域を検出する削除可能領域検出ステップと、前記削除可能領域検出ス テツプにおいて検出された前記実行バイナリプログラムの削除可能領域を特定のデ ータに書き換える実行バイナリ書き換えステップと、前記実行バイナリ書き換えステツ プにおいて書き換えられた前記実行バイナリプログラムに含まれる前記特定のデータ のデータ量を削減し、コンピュータ上で認識可能な形式である実行バイナリイメージ に前記実行バイナリプログラムを変換する実行バイナリイメージ変換ステップとを含む
[0164] 本発明の他の局面に係る実行バイナリイメージ作成プログラムは、コンピュータ上で 実行される実行バイナリプログラムの内部構成を表す構成情報を読み取る実行バイ ナリ読み取り部と、前記実行バイナリ読み取り部によって読み取られた前記実行バイ ナリプログラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析 し、アドレス解決を実施しない場合に前記実行バイナリプログラムの中で削除可能と なる領域を検出する削除可能領域検出部と、前記削除可能領域検出部によって検 出された前記実行バイナリプログラムの削除可能領域を特定のデータに書き換える 実行バイナリ書き換え部と、前記実行バイナリ書き換え部によって書き換えられた前 記実行バイナリプログラムに含まれる前記特定のデータのデータ量を削減し、コンビ ユータ上で認識可能な形式である実行バイナリイメージに前記実行バイナリプロダラ ムを変換する実行バイナリイメージ変換部としてコンピュータを機能させる。
[0165] 本発明の他の局面に係る実行バイナリイメージ作成プログラムを記録したコンビュ ータ読み取り可能な記録媒体は、コンピュータ上で実行される実行バイナリプロダラ ムの内部構成を表す構成情報を読み取る実行バイナリ読み取り部と、前記実行バイ ナリ読み取り部によって読み取られた前記実行バイナリプログラムの構成情報を取得 し、実行時にアドレス解決に使用される情報を解析し、アドレス解決を実施しない場 合に前記実行バイナリプログラムの中で削除可能となる領域を検出する削除可能領 域検出部と、前記削除可能領域検出部によって検出された前記実行バイナリプログ ラムの削除可能領域を特定のデータに書き換える実行バイナリ書き換え部と、前記 実行バイナリ書き換え部によって書き換えられた前記実行バイナリプログラムに含ま れる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な形式であ る実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイナリィメー ジ変換部としてコンピュータを機能させる実行バイナリイメージ作成プログラムを記録 している。
[0166] これらの構成によれば、コンピュータ上で実行される実行バイナリプログラムの内部 構成を表す構成情報が読み取られる。そして、読み取られた実行バイナリプログラム の構成情報が取得され、実行時にアドレス解決に使用される情報が解析され、ァドレ ス解決が実施されない場合に実行バイナリプログラムの中で削除可能となる領域が 検出される。続いて、検出された実行バイナリプログラムの削除可能領域が特定のデ ータに書き換えられる。そして、書き換えられた実行バイナリプログラムに含まれる特 定のデータのデータ量が削減され、コンピュータ上で認識可能な形式である実行バ イナリイメージに実行バイナリプログラムが変換される。変換された実行バイナリィメー ジが実行バイナリイメージ記憶部に記憶され、実行バイナリイメージ記憶部に記憶さ れている実行バイナリイメージが仮想アドレス空間に展開されて実行される。
[0167] したがって、実行バイナリプログラムの中から再配置情報やシンボル情報などの削 除可能領域を検出し、検出した削除可能領域を特定のデータに書き換え、特定のデ ータのデータ量が削減されるので、実行バイナリプログラムに含まれるテキスト情報や データ情報などの実行コード本体の配置アドレスを変化させることなぐ実行バイナリ イメージのデータ量を削減することができる。
[0168] 本発明の他の局面に係る実行バイナリイメージ実行装置は、コンピュータ上で実行 される実行バイナリプログラムの削除可能領域が特定のデータに書き換えられ、書き 換えられた実行バイナリプログラムに含まれる前記特定のデータのデータ量が削減さ れ、コンピュータ上で認識可能な形式に変換された実行バイナリイメージを記憶する 実行バイナリイメージ記憶部と、前記実行バイナリイメージ記憶部に記憶されて ヽる 前記実行バイナリイメージを仮想アドレス空間に展開して実行する実行部とを備える
[0169] 本発明の他の局面に係る実行バイナリイメージ実行方法は、コンピュータ上で実行 される実行バイナリプログラムの削除可能領域が特定のデータに書き換えられ、書き 換えられた実行バイナリプログラムに含まれる前記特定のデータのデータ量が削減さ れ、コンピュータ上で認識可能な形式に変換された実行バイナリイメージを実行バイ ナリイメージ記憶部に記憶する実行バイナリイメージ記憶ステップと、前記実行バイナ リイメージ記憶ステップにお!、て前記実行バイナリイメージ記憶部に記憶された前記 実行バイナリイメージを仮想アドレス空間に展開して実行する実行ステップとを含む。
[0170] 本発明の他の局面に係る実行バイナリイメージ実行プログラムは、コンピュータ上で 実行される実行バイナリプログラムの削除可能領域が特定のデータに書き換えられ、 書き換えられた実行バイナリプログラムに含まれる前記特定のデータのデータ量が削 減され、コンピュータ上で認識可能な形式に変換された実行バイナリイメージを記憶 する実行バイナリイメージ記憶部と、前記実行バイナリイメージ記憶部に記憶されて V、る前記実行バイナリイメージを仮想アドレス空間に展開して実行する実行部として コンピュータを機能させる。
[0171] 本発明の他の局面に係る実行バイナリイメージ実行プログラムを記録したコンビュ ータ読み取り可能な記録媒体は、コンピュータ上で実行される実行バイナリプロダラ ムの削除可能領域が特定のデータに書き換えられ、書き換えられた実行バイナリプロ グラムに含まれる前記特定のデータのデータ量が削減され、コンピュータ上で認識可 能な形式に変換された実行バイナリイメージを記憶する実行バイナリイメージ記憶部 と、前記実行バイナリイメージ記憶部に記憶されて 、る前記実行バイナリイメージを仮 想アドレス空間に展開して実行する実行部としてコンピュータを機能させる実行バイ ナリイメージ実行プログラムを記録して 、る。
[0172] これらの構成によれば、コンピュータ上で実行される実行バイナリプログラムの削除 可能領域が特定のデータに書き換えられ、書き換えられた実行バイナリプログラムに 含まれる特定のデータのデータ量が削減され、コンピュータ上で認識可能な形式に 変換された実行バイナリイメージが実行バイナリイメージ記憶部に記憶される。そして 、実行バイナリイメージ記憶部に記憶されて 、る実行バイナリイメージが仮想アドレス 空間に展開されて実行される。したがって、データ量が削減された実行バイナリィメ ージが記憶されるので、実行バイナリイメージを記憶するために必要な記憶容量を削 減することができる。
産業上の利用可能性
[0173] 本発明に係る情報処理システム、情報処理方法、実行バイナリイメージ作成装置、 実行バイナリイメージ作成方法、実行バイナリイメージ作成プログラム、実行バイナリ イメージ作成プログラムを記録したコンピュータ読み取り可能な記録媒体、実行バイ ナリイメージ実行装置、実行バイナリイメージ実行方法、実行バイナリイメージ実行プ ログラム及び実行バイナリイメージ実行プログラムを記録したコンピュータ読み取り可 能な記録媒体は、コンピュータ上で実行されるプログラムのデータサイズを削減する ことができ、コンピュータを搭載する種々の機器において、メモリサイズを抑えることが できるので産業上有用である。

Claims

請求の範囲
[1] コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を 読み取る実行バイナリ読み取り部と、
前記実行バイナリ読み取り部によって読み取られた前記実行バイナリプログラムの 構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決 を実施しない場合に前記実行バイナリプログラムの中で削除可能となる領域を検出 する削除可能領域検出部と、
前記削除可能領域検出部によって検出された前記実行バイナリプログラムの削除 可能領域を特定のデータに書き換える実行バイナリ書き換え部と、
前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプログラム に含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な形 式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイナリ イメージ変換部と、
前記実行バイナリイメージ変換部によって変換された前記実行バイナリイメージを 記憶する実行バイナリイメージ記憶部と、
前記実行バイナリイメージ記憶部に記憶されて!、る前記実行バイナリイメージを仮 想アドレス空間に展開して実行する実行部とを備えることを特徴とする情報処理シス テム。
[2] 前記実行バイナリ読み取り部は、シンボルのアドレス解決を実施済みの前記実行バ イナリプログラムを読み取ることを特徴とする請求項 1記載の情報処理システム。
[3] 前記特定のデータは、前記実行バイナリプログラム内の他のデータよりも圧縮率の 高いデータであり、
前記実行バイナリイメージ変換部は、前記実行バイナリプログラムを前記実行バイ ナリイメージに変換する際に、前記実行バイナリ書き換え部によって書き換えられた 前記実行バイナリプログラムを圧縮することを特徴とする請求項 1又は 2記載の情報 処理システム。
[4] 前記実行バイナリプログラムは、セクション単位で分割され、
前記削除可能領域は、前記セクション内の所定の領域であり、 前記実行バイナリ書き換え部は、前記特定のデータに書き換えた領域を前記実行 ノイナリブログラムのセクション単位で集約することを特徴とする請求項 3記載の情報 処理システム。
[5] 前記実行バイナリプログラムは、セクション単位で分割され、
前記削除可能領域は、前記セクションであり、
前記実行バイナリ書き換え部は、前記特定のデータに書き換えた領域を前記実行 バイナリプログラム全体で集約することを特徴とする請求項 3記載の情報処理システ ム。
[6] 前記実行バイナリイメージ変換部は、前記実行バイナリプログラムを前記実行バイ ナリイメージに変換する際に、前記実行バイナリ書き換え部によって特定のデータに 書き換えられた領域を削除するとともに、前記実行バイナリプログラム内で共用する 前記特定のデータを格納した共用領域を作成し、削除された前記領域の前記実行 ノ^ナリプログラム内における位置と前記共用領域とを関連付けて管理する管理情 報を作成することを特徴とする請求項 1又は 2記載の情報処理システム。
[7] 前記実行部は、前記実行バイナリイメージ記憶部に記憶されている前記実行バイ ナリイメージを仮想アドレス空間に展開する際に、前記管理情報を参照し、削除され た前記領域の前記実行バイナリプログラム内における位置を認識し、認識した位置 に対応する前記仮想的なアドレス空間に、前記共有領域に格納されて ヽる特定のデ ータを割り当てることを特徴とする請求項 6記載の情報処理システム。
[8] 前記実行バイナリ読み取り部は、前記実行バイナリプログラムがアドレス解決済み であるか否力を表すアドレス解決情報を前記実行バイナリプログラム力も読み取り、 前記削除可能領域検出部は、前記実行バイナリ読み取り部によって読み取られた 前記アドレス解決情報がアドレス解決済みであるカゝ否かを判定し、アドレス解決済み でないと判定された場合、前記実行バイナリプログラムの中から削除可能領域を検出 しな 、ことを特徴とする請求項 1〜7の 、ずれかに記載の情報処理システム。
[9] 前記実行バイナリプログラムは、セクション単位で分割され、
前記削除可能領域検出部は、前記実行バイナリプログラムの中でアドレス解決に使 用される情報であっても、当該情報が他のセクション力 参照される場合、当該情報 を削除の対象外とすることを特徴とする請求項 1〜8のいずれかに記載の情報処理 システム。
[10] 前記実行バイナリプログラムは、複数の実行バイナリプログラムを含み、
前記削除可能領域検出部は、前記実行バイナリプログラムの中でアドレス解決に使 用される情報であっても、当該情報が他の実行バイナリプログラム力 参照される場 合、当該情報を削除の対象外とすることを特徴とする請求項 1〜9のいずれかに記載 の情報処理システム。
[11] 前記削除可能領域検出部は、前記実行バイナリプログラムの中で複数のシンボル が同一の文字列を共用していることを検出し、文字列を共用しているシンボル全てが 削除可能である場合にのみ、前記複数のシンボル及び前記文字列に対応する領域 を削除可能領域として検出することを特徴とする請求項 1〜10のいずれかに記載の 情報処理システム。
[12] コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を 読み取る実行バイナリ読み取りステップと、
前記実行バイナリ読み取りステップにおいて読み取られた前記実行バイナリプログ ラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、ァドレ ス解決を実施しな 、場合に前記実行バイナリプログラムの中で削除可能となる領域 を検出する削除可能領域検出ステップと、
前記削除可能領域検出ステップにおいて検出された前記実行バイナリプログラム の削除可能領域を特定のデータに書き換える実行バイナリ書き換えステップと、 前記実行バイナリ書き換えステップにおいて書き換えられた前記実行バイナリプロ グラムに含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能 な形式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バ イナリイメージ変換ステップと、
前記実行バイナリイメージ変換ステップにおいて変換された前記実行バイナリィメ ージを実行バイナリイメージ記憶部に記憶する実行バイナリイメージ記憶ステップと、 前記実行バイナリイメージ記憶ステップにおいて前記実行バイナリイメージ記憶部 に記憶された前記実行バイナリイメージを仮想アドレス空間に展開して実行する実行 ステップとを含むことを特徴とする情報処理方法。
[13] コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を 読み取る実行バイナリ読み取り部と、
前記実行バイナリ読み取り部によって読み取られた前記実行バイナリプログラムの 構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決 を実施しない場合に前記実行バイナリプログラムの中で削除可能となる領域を検出 する削除可能領域検出部と、
前記削除可能領域検出部によって検出された前記実行バイナリプログラムの削除 可能領域を特定のデータに書き換える実行バイナリ書き換え部と、
前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプログラム に含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な形 式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイナリ イメージ変換部とを備えることを特徴とする実行バイナリイメージ作成装置。
[14] コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を 読み取る実行バイナリ読み取りステップと、
前記実行バイナリ読み取りステップにおいて読み取られた前記実行バイナリプログ ラムの構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、ァドレ ス解決を実施しな 、場合に前記実行バイナリプログラムの中で削除可能となる領域 を検出する削除可能領域検出ステップと、
前記削除可能領域検出ステップにおいて検出された前記実行バイナリプログラム の削除可能領域を特定のデータに書き換える実行バイナリ書き換えステップと、 前記実行バイナリ書き換えステップにおいて書き換えられた前記実行バイナリプロ グラムに含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能 な形式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バ イナリイメージ変換ステップとを含むことを特徴とする実行バイナリイメージ作成方法。
[15] コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を 読み取る実行バイナリ読み取り部と、
前記実行バイナリ読み取り部によって読み取られた前記実行バイナリプログラムの 構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決 を実施しない場合に前記実行バイナリプログラムの中で削除可能となる領域を検出 する削除可能領域検出部と、
前記削除可能領域検出部によって検出された前記実行バイナリプログラムの削除 可能領域を特定のデータに書き換える実行バイナリ書き換え部と、
前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプログラム に含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な形 式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイナリ イメージ変換部としてコンピュータを機能させることを特徴とする実行バイナリイメージ 作成プログラム。
[16] コンピュータ上で実行される実行バイナリプログラムの内部構成を表す構成情報を 読み取る実行バイナリ読み取り部と、
前記実行バイナリ読み取り部によって読み取られた前記実行バイナリプログラムの 構成情報を取得し、実行時にアドレス解決に使用される情報を解析し、アドレス解決 を実施しない場合に前記実行バイナリプログラムの中で削除可能となる領域を検出 する削除可能領域検出部と、
前記削除可能領域検出部によって検出された前記実行バイナリプログラムの削除 可能領域を特定のデータに書き換える実行バイナリ書き換え部と、
前記実行バイナリ書き換え部によって書き換えられた前記実行バイナリプログラム に含まれる前記特定のデータのデータ量を削減し、コンピュータ上で認識可能な形 式である実行バイナリイメージに前記実行バイナリプログラムを変換する実行バイナリ イメージ変換部としてコンピュータを機能させることを特徴とする実行バイナリイメージ 作成プログラムを記録したコンピュータ読み取り可能な記録媒体。
[17] コンピュータ上で実行される実行バイナリプログラムの削除可能領域が特定のデー タに書き換えられ、書き換えられた実行バイナリプログラムに含まれる前記特定のデ ータのデータ量が削減され、コンピュータ上で認識可能な形式に変換された実行バ イナリイメージを記憶する実行バイナリイメージ記憶部と、
前記実行バイナリイメージ記憶部に記憶されて!、る前記実行バイナリイメージを仮 想アドレス空間に展開して実行する実行部とを備えることを特徴とする実行バイナリィ メージ実行装置。
[18] コンピュータ上で実行される実行バイナリプログラムの削除可能領域が特定のデー タに書き換えられ、書き換えられた実行バイナリプログラムに含まれる前記特定のデ ータのデータ量が削減され、コンピュータ上で認識可能な形式に変換された実行バ イナリイメージを実行バイナリイメージ記憶部に記憶する実行バイナリイメージ記憶ス テツプと、
前記実行バイナリイメージ記憶ステップにおいて前記実行バイナリイメージ記憶部 に記憶された前記実行バイナリイメージを仮想アドレス空間に展開して実行する実行 ステップとを含むことを特徴とする実行バイナリイメージ実行方法。
[19] コンピュータ上で実行される実行バイナリプログラムの削除可能領域が特定のデー タに書き換えられ、書き換えられた実行バイナリプログラムに含まれる前記特定のデ ータのデータ量が削減され、コンピュータ上で認識可能な形式に変換された実行バ イナリイメージを記憶する実行バイナリイメージ記憶部と、
前記実行バイナリイメージ記憶部に記憶されて!、る前記実行バイナリイメージを仮 想アドレス空間に展開して実行する実行部としてコンピュータを機能させることを特徴 とする実行バイナリイメージ実行プログラム。
[20] コンピュータ上で実行される実行バイナリプログラムの削除可能領域が特定のデー タに書き換えられ、書き換えられた実行バイナリプログラムに含まれる前記特定のデ ータのデータ量が削減され、コンピュータ上で認識可能な形式である実行バイナリィ メージに変換された実行バイナリイメージを記憶する実行バイナリイメージ記憶部と、 前記実行バイナリイメージ記憶部に記憶されて!、る前記実行バイナリイメージを仮 想アドレス空間に展開して実行する実行部としてコンピュータを機能させることを特徴 とする実行バイナリイメージ実行プログラムを記録したコンピュータ読み取り可能な記 録媒体。
PCT/JP2006/314694 2005-07-27 2006-07-25 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体 WO2007026484A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200680027056XA CN101228509B (zh) 2005-07-27 2006-07-25 生成执行二进制图像的装置及方法
US11/996,687 US8281289B2 (en) 2005-07-27 2006-07-25 Device, method, and program for generating and executing execution binary image, and computer-readable recording medium containing the execution binary image execution program
JP2007533135A JP4944033B2 (ja) 2005-07-27 2006-07-25 情報処理システム、情報処理方法、実行バイナリイメージ作成装置、実行バイナリイメージ作成方法、実行バイナリイメージ作成プログラム、実行バイナリイメージ作成プログラムを記録したコンピュータ読み取り可能な記録媒体、実行バイナリイメージ実行装置、実行バイナリイメージ実行方法、実行バイナリイメージ実行プログラム及び実行バイナリイメージ実行プログラムを記録したコンピュータ読み取り可能な記録媒体

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005216715 2005-07-27
JP2005-216715 2005-07-27

Publications (1)

Publication Number Publication Date
WO2007026484A1 true WO2007026484A1 (ja) 2007-03-08

Family

ID=37808587

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/314694 WO2007026484A1 (ja) 2005-07-27 2006-07-25 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体

Country Status (4)

Country Link
US (1) US8281289B2 (ja)
JP (1) JP4944033B2 (ja)
CN (1) CN101228509B (ja)
WO (1) WO2007026484A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419020B2 (en) 2015-06-18 2019-09-17 International Business Machines Corporation Increasing storage capacity and data transfer speed in genome data backup

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510723B2 (en) * 2009-05-29 2013-08-13 University Of Maryland Binary rewriting without relocation information
TW201128383A (en) * 2009-07-29 2011-08-16 Reversinglabs Corp Portable executable file analysis
JP5754264B2 (ja) * 2011-06-24 2015-07-29 富士ゼロックス株式会社 プログラム実行装置、画像処理装置およびプログラム
CN104063234B (zh) * 2013-03-19 2017-06-27 华为技术有限公司 一种兼容方法及装置
WO2016162075A1 (en) * 2015-04-09 2016-10-13 Longsand Limited Removing library objects from a static library
US10430266B2 (en) * 2016-06-13 2019-10-01 Vmware, Inc. Full state session reviving, forking, and snapshoting based on an application data dump
US11221835B2 (en) * 2020-02-10 2022-01-11 International Business Machines Corporation Determining when to perform and performing runtime binary slimming

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869381A (ja) * 1994-08-30 1996-03-12 Nec Ic Microcomput Syst Ltd コンパイル方式
JP2002529849A (ja) * 1998-11-06 2002-09-10 ブル・セー・ペー・8 データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL91221A (en) * 1989-08-04 1995-03-30 Ibm Israel Binary text compression method
JPH04160537A (ja) 1990-10-25 1992-06-03 Toshiba Corp 情報処理装置
JPH04308927A (ja) * 1991-04-05 1992-10-30 Nec Corp ページテーブル格納方式
US5898795A (en) * 1995-12-08 1999-04-27 Ricoh Company, Ltd. Character recognition method using a method for deleting ruled lines
US6363436B1 (en) 1997-01-27 2002-03-26 International Business Machines Corporation Method and system for loading libraries into embedded systems
US6014513A (en) * 1997-12-23 2000-01-11 University Of Washington Discovering code and data in a binary executable program
US6110227A (en) * 1998-06-24 2000-08-29 Microsoft Corporation Systems and methods for pre-processing variable initializers
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
JP2002225395A (ja) 2001-02-02 2002-08-14 Ricoh Co Ltd 画像形成装置
JP2003174404A (ja) * 2001-12-07 2003-06-20 Matsushita Electric Ind Co Ltd 携帯無線端末装置及び携帯無線システム
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
US6996699B2 (en) * 2002-09-10 2006-02-07 Microsoft Corporation Secondary processor execution kernel framework
US7549042B2 (en) * 2003-12-16 2009-06-16 Microsoft Corporation Applying custom software image updates to non-volatile storage in a failsafe manner
JP2008503011A (ja) * 2004-06-08 2008-01-31 ダートデバイセズ コーポレーション ユニバーサルデバイスインタオペラビリティプラットフォームのためのデバイスチームリクルートメントおよびコンテンツレンディションのアーキテクチャ装置および方法
JP4160537B2 (ja) 2004-06-23 2008-10-01 Krh株式会社 連結具
US7823137B2 (en) * 2004-10-21 2010-10-26 International Business Machines Corporation Process and implementation for using byte code insertion to modify a class definition to define and use probes for application components
US7260713B2 (en) * 2004-12-14 2007-08-21 Lsi Corporation Apparatus and method for building, storing, uploading, relocating and executing DOS based software module during system startup time

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0869381A (ja) * 1994-08-30 1996-03-12 Nec Ic Microcomput Syst Ltd コンパイル方式
JP2002529849A (ja) * 1998-11-06 2002-09-10 ブル・セー・ペー・8 データ処理リソースを供給された内蔵システムにおいて実行可能な中間オブジェクトコードプログラムのためのデータ圧縮方法、および、この方法に対応しかつマルチアプリケーションを備えた内蔵システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419020B2 (en) 2015-06-18 2019-09-17 International Business Machines Corporation Increasing storage capacity and data transfer speed in genome data backup
US11018691B2 (en) 2015-06-18 2021-05-25 International Business Machines Corporation Increasing storage capacity and data transfer speed in genome data backup

Also Published As

Publication number Publication date
CN101228509A (zh) 2008-07-23
CN101228509B (zh) 2010-05-26
US8281289B2 (en) 2012-10-02
JP4944033B2 (ja) 2012-05-30
JPWO2007026484A1 (ja) 2009-03-26
US20100131932A1 (en) 2010-05-27

Similar Documents

Publication Publication Date Title
US7631022B2 (en) Information processing apparatus and recording medium
JP4388078B2 (ja) ファイルシステムと互換性を維持するシンボリックリンクを生成する方法、前記シンボリックリンクを用いてファイル/ディレクトリにアクセスする方法および装置
US8370835B2 (en) Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
KR101359834B1 (ko) 압축 버전을 포함하는 내용을 업데이트하는 방법 및시스템들
JP4944033B2 (ja) 情報処理システム、情報処理方法、実行バイナリイメージ作成装置、実行バイナリイメージ作成方法、実行バイナリイメージ作成プログラム、実行バイナリイメージ作成プログラムを記録したコンピュータ読み取り可能な記録媒体、実行バイナリイメージ実行装置、実行バイナリイメージ実行方法、実行バイナリイメージ実行プログラム及び実行バイナリイメージ実行プログラムを記録したコンピュータ読み取り可能な記録媒体
US8549271B1 (en) Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device
JP4777426B2 (ja) Non−execute−in−placeフラッシュメモリ内の持続性ファイルにアクセスするための装置、システムおよび方法
US7836105B2 (en) Converting file-systems that organize and store data for computing systems
US20070276848A1 (en) Apparatus and method for managing data
KR20080097196A (ko) Fat 볼륨 상의 개별적인 파일들은 압축하고, 그 외의 파일들은 비압축 상태로 유지하기 위한 컴퓨터 구현 방법, 시스템 및 컴퓨터 판독 가능 매체
JP5483116B2 (ja) メンテナンスシステム、メンテナンス方法、及びメンテナンス用プログラム
JPH1069408A (ja) ホールを利用するファイルシステムレベルでのデータ格納方法及びデータ格納装置
CN105468686A (zh) 减少冗余数据的方法及装置
US20090254575A1 (en) Apparatus and method for manipulating nested archive files and folders
JPWO2007026484A6 (ja) 実行バイナリイメージの作成及び実行を行う装置、方法、プログラム、該プログラムを記録したコンピュータ読み取り可能な記録媒体
KR20150125012A (ko) 저장된 데이터 유닛들의 동작 관리
JP5376258B2 (ja) メンテナンスシステム、メンテナンス方法、及びメンテナンス用プログラム
KR20150125010A (ko) 저장된 데이터 유닛들의 동작 관리
US8667035B2 (en) Method of converting a filesystem while the filesystem remains in an active state
US8977657B2 (en) Finding lost objects in a file system having a namespace
JP2008503818A (ja) コンピュータ・デバイスにおけるファイルシステムの性能を改善するための方法
JP5217155B2 (ja) ファイル圧縮自動判定方式および方法、並びに、プログラム
KR100637787B1 (ko) 파일 정보의 기록 처리 방법 및 프로그램
CN109918346A (zh) 一种文件的创建方法及装置
CN111258503B (zh) 一种cirros文件系统的管理方法和装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680027056.X

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007533135

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 11996687

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06781606

Country of ref document: EP

Kind code of ref document: A1