JP6201521B2 - 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム - Google Patents

情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム Download PDF

Info

Publication number
JP6201521B2
JP6201521B2 JP2013173506A JP2013173506A JP6201521B2 JP 6201521 B2 JP6201521 B2 JP 6201521B2 JP 2013173506 A JP2013173506 A JP 2013173506A JP 2013173506 A JP2013173506 A JP 2013173506A JP 6201521 B2 JP6201521 B2 JP 6201521B2
Authority
JP
Japan
Prior art keywords
byte code
processing unit
virtual machine
volatile memory
bytecode
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
JP2013173506A
Other languages
English (en)
Other versions
JP2015041349A (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.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing 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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2013173506A priority Critical patent/JP6201521B2/ja
Publication of JP2015041349A publication Critical patent/JP2015041349A/ja
Application granted granted Critical
Publication of JP6201521B2 publication Critical patent/JP6201521B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

本発明は、バイトコードを実行する仮想マシンを備えるICカードの技術に関する。
近年、数十Kバイトから100Kバイトを超える不揮発性メモリの容量を有するICチップがリリースされていることもあり、Java(登録商標)言語に代表されるプログラム言語の解釈機能を備えた仮想マシン(VM:Virtual Machine)が組み込まれ、アプリケーションの追加/削除が可能なマルチアプリケーションICカードが普及しつつある(例えば、特許文献1)。ICカードに搭載されるICチップに格納されるプログラム(アプリケーション)の開発言語や実行環境は、通常、採用するICチップのハードウェア仕様に依存して変化する。ICチップがサポートするアセンブリ命令は、ICチップごとに異なっているため、アセンブリ言語により開発を行う場合はもちろん、C言語のような高級言語であっても、開発環境はICチップごとに異なっている(コンパイラやアセンブラの仕様はICチップによって相違する)のが通例であった。これに対し、マルチアプリケーションICカードは、ICチップに依存しない中間コード(バイトコード)を実行可能な環境を用意し、当該バイトコードによってアプリケーションを提供することで、開発者がICチップの相違を意識することなく、アプリケーションの実装、搭載を可能とする。例えば、JavaCardでは、Java実行環境としてJavaCard API/JavaCard VMを搭載し、Java言語によるアプリケーション開発を実現している。このようなアプリケーション開発では、アプリケーションは、コンパイラによって、中間コードであるバイトコードに変換された後、ICチップにインストールされる。そして、各アプリケーションを構成するバイトコードは、仮想マシンによって解釈、実行される。このような実行環境を再現したICチップであれば、開発者は採用ICチップの相違を意識することなく、アプリケーションを開発することが可能となる。
ところで、バイトコードを用いた仮想マシン上のプログラムの実行には、ネイティブコード(機械語)と比較して処理速度が低下する問題がある。仮想マシン上でバイトコードを実行する場合、仮想マシンがインタプリタ機能を搭載し、バイトコードを対象ICチップのネイティブコードに逐次変換し、対応するネイティブコードを実行していく方式が一般的である。仮想マシンにおけるバイトコードの処理では、バイトコード→ネイティブコードの変換が、バイトコード実行毎に必要である。このため、ネイティブコードを直接実行する場合と比して、変換のための処理時間を余分に必要とする。このようなバイトコード実行における処理速度低下の問題は早くから指摘されており、対応法として、JIT(Just-In-Time)コンパイラによる解決法が提案、実現されている。JITコンパイラとは、バイトコードで記述されたプログラムの実行を行う前に、当該プログラムの一部又は全部をバイトコードからネイティブコードに一括変換するコンパイラである。インタプリタによるバイトコード実行では、1つのバイトコードを実行するたびにインタプリタによるバイトコード解釈を実行する必要がある。一方、JITコンパイラでは、バイトコード実行前にまとめてネイティブコードへの変換を行うため、プログラム実行中にはバイトコードを解釈する処理が発生せず、結果、プログラムの処理速度が高速化する、というメリットがある。このようなメリットにより、パーソナルコンピュータや携帯端末といった、ある程度潤沢なメモリリソースを有するデバイスでは、JITコンパイル方式による仮想マシン実装が採用されている。
特開2007−206765号公報
上述したJITコンパイル方式では、プログラム本体とは別に、JITコンパイル結果を保持しておくメモリ領域が必要となる。しかしながら、ICチップ上のリソースは他のデバイスに比べて貧弱であり、動的に変化する可能性があるJITコンパイル結果を適切に保持するのは困難である(実装メモリサイズを超過する可能性がある)。また、JITコンパイル方式では、JITコンパイル実行時に、コンパイル処理を伴うため、コマンド処理速度が著しく低下する可能性がある。ICチップにおけるコマンド処理では、一定の処理時間制約が設けられることが多く、処理時間にばらつきが発生したり、処理時間制約を満たせない実装の採用は困難である。
また、ICカードに搭載されるICチップ上でプログラムを記憶可能な記憶素子としては、主としてROM、RAM、EEPROM(登録商標)、フラッシュメモリが挙げられる。従来のICチップでは、ROM、RAM、及びEEPROMの組み合わせが多く、主として仮想マシンの実装はROMに格納されてきた。一方で近年のICチップでは、利便性、集積度等の観点から、ROM、及びEEPROMの代わりにフラッシュメモリが搭載されるケースが多い。このようなICチップでは、仮想マシンはフラッシュメモリに格納され、フラッシュメモリ上から実行される。一般に、プログラムを高速化する手段のひとつとして、ICチップの動作クロック周波数を上げる方法があるが、フラッシュメモリ上のコード実行は、ROMやEEPROM上のコード実行と比して、周波数の増加に当たり、チップの消費電流値が大きくなる特性を有することがある。このような高速化に伴う消費電流値増加は、特にUSIM(Universal Subscriber Identification Module)のように、消費電流値制限が国際標準規格により定められている等の制約がある場合、許容することが困難となる。
本発明は、以上のような事情等に鑑みてなされたものであり、ICカード等の情報記憶媒体に搭載された仮想マシンの高速化を実現することが可能な情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラムを提供することを課題とする。
上記課題を解決するために、請求項1に記載の発明は、揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体であって、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、前記揮発性メモリにロードされた仮想マシンを動作させる制御手段と、を備え、前記仮想マシンは、前記バイトコードを取得するバイトコード取得処理部と、前記バイトコードを解釈するバイトコード解釈処理部と、前記バイトコードを実行するバイトコード実行処理部と、を含んで構成され、前記ロード手段は、前記バイトコード実行処理部の全部又は一部を前記揮発性メモリにロードし、前記仮想マシンは、前記不揮発性メモリに記憶されているバイトコード取得処理部により前記バイトコードを取得し、当該取得したバイトコードを前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈し、当該解釈したバイトコードを前記揮発性メモリに記憶されているバイトコード実行処理部により実行することを特徴とする。
請求項に記載の発明は、請求項に記載の情報記憶媒体において、前記ロード手段は、前記不揮発性メモリに記憶されているバイトコード取得処理部により取得されたバイトコードが所定のロード条件を満たしている場合に、当該バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードすることを特徴とする。
請求項に記載の発明は、請求項に記載の情報記憶媒体において、前記ロード手段は、前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈されたバイトコードが所定のバイトコードである場合に、当該バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードすることを特徴とする。
請求項に記載の発明は、請求項に記載の情報記憶媒体において、前記ロード手段は、前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈されたバイトコードが所定のバイトコードである場合で、且つ当該バイトコードが所定のロード条件を満たしている場合に、当該バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードすることを特徴とする。
請求項に記載の発明は、請求項またはの何れか一項に記載の情報記憶媒体において、前記ロード手段は、前記バイトコードの実行回数が所定回数以上である場合に、前記ロード条件を満たしていると判定することを特徴とする。
請求項に記載の発明は、揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体であって、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、前記揮発性メモリにロードされた仮想マシンを動作させる制御手段と、を備え、前記ロード手段は、外部端末から受信したコマンドが前記情報記憶媒体のリセット後の最初のコマンドである場合に、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードすることを特徴とする。
請求項に記載の発明は、請求項乃至の何れか一項に記載の情報記憶媒体において、前記ロード手段は、前記バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードする際に、ロード対象の当該バイトコード実行処理部が記憶されている前記不揮発性メモリ上のアドレスを示すアドレステーブルにおいて、当該バイトコード実行処理部が記憶されている前記不揮発性メモリ上のアドレスを、当該バイトコード実行処理部が当該ロードにより記憶される前記揮発性メモリ上のアドレスに変更することを特徴とする。
請求項に記載の発明は、請求項に記載の情報記憶媒体において、前記ロード手段は、乱数生成器により生成された乱数に基づいて、前記ロード対象の前記バイトコード実行処理部が当該ロードにより記憶される前記揮発性メモリ上のアドレスを変更することを特徴とする。
請求項に記載の発明は、揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体におけるバイトコード実行方法であって、前記バイトコード実行方法は、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロードステップと、前記揮発性メモリにロードされた仮想マシンを動作させるステップと、を含み、前記仮想マシンは、前記バイトコードを取得するバイトコード取得処理部と、前記バイトコードを解釈するバイトコード解釈処理部と、前記バイトコードを実行するバイトコード実行処理部と、を含んで構成され、前記ロードステップにおいては、前記バイトコード実行処理部の全部又は一部を前記揮発性メモリにロードし、前記仮想マシンが、前記不揮発性メモリに記憶されているバイトコード取得処理部により前記バイトコードを取得し、当該取得したバイトコードを前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈し、当該解釈したバイトコードを前記揮発性メモリに記憶されているバイトコード実行処理部により実行することを特徴とする。請求項10に記載の発明は、揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体におけるバイトコード実行方法であって、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロードステップと、前記揮発性メモリにロードされた仮想マシンを動作させるステップと、を含み、前記ロードステップにおいては、外部端末から受信したコマンドが前記情報記憶媒体のリセット後の最初のコマンドである場合に、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードすることを特徴とする。
請求項11に記載の情報記憶媒体用プログラムの発明は、揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体に含まれるコンピュータを、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、前記揮発性メモリにロードされた仮想マシンを動作させる制御手段として機能させる情報記憶媒体用プログラムであって、前記仮想マシンは、前記バイトコードを取得するバイトコード取得処理部と、前記バイトコードを解釈するバイトコード解釈処理部と、前記バイトコードを実行するバイトコード実行処理部と、を含んで構成され、前記ロード手段は、前記バイトコード実行処理部の全部又は一部を前記揮発性メモリにロードし、前記仮想マシンは、前記不揮発性メモリに記憶されているバイトコード取得処理部により前記バイトコードを取得し、当該取得したバイトコードを前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈し、当該解釈したバイトコードを前記揮発性メモリに記憶されているバイトコード実行処理部により実行することを特徴とする。請求項12に記載の情報記憶媒体用プログラムの発明は、揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体に含まれるコンピュータを、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、前記揮発性メモリにロードされた仮想マシンを動作させる制御手段として機能させる情報記憶媒体用プログラムであって、前記ロード手段は、外部端末から受信したコマンドが前記情報記憶媒体のリセット後の最初のコマンドである場合に、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードすることを特徴とする。
本発明によれば、不揮発性メモリに記憶されている仮想マシンの全部又は一部を揮発性メモリにロードし、揮発性メモリにロードされた仮想マシンを動作させるように構成したので、当該仮想マシンの高速化を実現することができる。
ICカード1のハードウェア構成例を示す図である。 (A)は、ICチップ1aにおけるシステム構成例を示す図であり、(B)は、ICチップ1aにおけるメモリ構成例を示す図である。 (A)は、外部端末2からのコマンド受信時に、ICチップ制御用ソフトウェア102により実行される処理例を示すフローチャートであり、(B)は、仮想マシン104がロードされる際のメモリ構成例を示す図である。 実施例1におけるバイトコードの処理例を示すフローチャートである。 (A)は、外部端末2からのコマンド受信時に、ICチップ制御用ソフトウェア102により実行される処理例を示すフローチャートであり、(B)は、バイトコード実行処理部がロードされる際のメモリ構成例を示す図である。 (A)は、実施例3におけるバイトコードの処理例を示すフローチャートであり、(B)は、(A)のステップS33におけるロード判定処理の一例を示すフローチャートである。 (A)は、実施例4におけるバイトコードの処理例を示すフローチャートであり、(B)は、(A)のステップS44におけるロード判定処理の一例を示すフローチャートである。 (A)は、バイトコード実行処理部のロード前のアドレステーブル及びメモリ構成例を示す図であり、(B)は、バイトコード実行処理部がロードされる際のアドレステーブル及びメモリ構成例を示す図である。 バイトコード実行処理部がロードされる際のアドレステーブル及びメモリ構成例を示す図である。
以下、図面を参照して本発明の実施形態について詳細に説明する。
先ず、図1等を参照して、ICカード1の概要構成及び機能について説明する。図1は、ICカード1のハードウェア構成例を示す図である。なお、ICカード1は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等の通信機器に組み込まれる。ICカード1は本発明における情報記憶媒体を構成するが、このICカード1は通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
図1に示すように、ICカード1には、ICチップ1aが搭載されている。ICチップ1aは、CPU(Central Processing Unit)10、揮発性メモリであるRAM(Random Access Memory)11、不揮発性メモリであるフラッシュメモリ12、乱数生成器13、及びI/O回路14等を備えて構成される。なお、フラッシュメモリの代わりにEEPROMであっても構わない。CPU10は、各種プログラムを構成するネイティブコードを実行する。RAM11は、作業用メモリとしてデータ及びプログラムを一時的に記憶する。フラッシュメモリ12は、各種データ及び各種プログラムを記憶する。フラッシュメモリ12に記憶される各種プログラムには、ICチップ制御用ソフトウェア(本発明の情報記憶媒体用プログラムを含む)、仮想マシン、API(Application Program Interface)、及びアプリケーションが含まれる。乱数生成器13は、乱数を生成する。I/O回路14は、外部端末2とのインターフェイスを担う。I/O回路14には、例えばISO/IEC7816によって定められたC1〜C8の8個の端子が設けられている。例えば、C1端子は電源端子、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部端末2とのデータ通信を行う端子である。外部端末2の例としてはATM、改札機、認証用ゲート等が挙げられる。或いは、ICカード1が通信機器に組み込まれる場合、外部端末2には通信機器の機能を担うコントローラが該当する。
図2(A)は、ICチップ1aにおけるシステム構成例を示す図であり、図2(B)は、ICチップ1aにおけるメモリ構成例を示す図である。図2(A)の例において、ICチップハードウェア101は、CPU10、及び論理回路(図示せず)等により構成される。ICチップ制御用ソフトウェア102は、ICチップ1aの動作を直接コントロールするソフトウェアモジュールであり、複数のネイティブコード(ICチップ1a固有のアセンブリ命令から構成されるコード)により構成される。API103は、アプリケーション105からICチップ制御用ソフトウェアの機能を利用するためのインターフェースである。アプリケーション105は、複数のバイトコードにより構成されるソフトウェアモジュールである。バイトコードは、ソースコードとネイティブコードとの間の中間コード(中間言語)である。バイトコードは、例えばアプリケーション105のインストール時に、当該アプリケーション105をコンパイルすることで得られる。
仮想マシン104は、アプリケーション105を構成する複数のバイトコードの処理を行うソフトウェアモジュールである。仮想マシン104は、バイトコードを取得するバイトコード取得処理部104a、バイトコードを解釈するバイトコード解釈処理部104b、及びバイトコードを実行するバイトコード実行処理部104cにより構成される。バイトコード取得処理部104aは、仮想マシン104により保持されるプログラムカウンタが示すアドレスに格納されたバイトコードを取得する(バイトコード取得処理)。バイトコード解釈処理部104bは、バイトコード取得処理部104aにより取得されたバイトコードがどのような命令であるかを解釈してバイトコードの種類を判定(つまり、実行すべきバイトコードを決定)する(バイトコード解釈処理)。バイトコード実行処理部104cは、複数のバイトコードそれぞれに対応するバイトコード実行処理部により構成される。つまり、バイトコード実行処理部104cは、複数のバイトコードそれぞれに対応するネイティブ処理部により構成される。そして、バイトコード実行処理部104cは、バイトコード解釈処理部104bにより解釈されたバイトコードに対応するネイティブ処理を実行する(バイトコード実行処理)。このネイティブ処理では、バイトコードに対応するネイティブコードがCPU10により実行されることになる。なお、仮想マシン104は、それぞれのバイトコードに対応するネイティブ処理部が記憶されているフラッシュメモリ12上のアドレスを示すアドレステーブルを保持している。
以上の構成において、CPU10は、本発明におけるロード手段及び制御手段として機能することで、フラッシュメモリ12に記憶されている仮想マシン104の全部又は一部をRAM11にロードし、RAM11にロードされた仮想マシン104を動作させる。これにより、ICカード1に搭載された仮想マシン104の高速化を実現することができる。ここで、仮想マシン104の全部又は一部をRAM11にロードするタイミングの例としては、電源投入直後、電源投入後の最初のコマンド実行直後、バイトコードの初回実行時等が挙げられる。仮想マシン104の一部とは、例えば、バイトコード実行処理部104cの全部又は一部である。バイトコード実行処理部104cの一部とは、例えば、バイトコード解釈処理部104bにより解釈されたバイトコードに対応するネイティブ処理である。
以下、ICチップ1aの動作を、実施例1〜実施例6に分けて説明する。
(実施例1)
先ず、図3〜図4を参照して、実施例1におけるICチップ1aの動作を説明する。実施例1では、電源投入(Cold reset)後、ICカード1が最初にコマンドを実行する際に、仮想マシン104の全てをRAM11上にロードした後、仮想マシン104を動作させる。
図3(A)は、外部端末2からのコマンド受信時に、ICチップ制御用ソフトウェア102により実行される処理例を示すフローチャートであり、図3(B)は、仮想マシン104がロードされる際のメモリ構成例を示す図である。図3(A)に示す処理は、外部端末2からコマンドが受信された時に開始される。図3(A)に示すステップS1では、外部端末2から受信されたコマンドが、電源投入後(つまり、ICカード1のリセット後)の最初のコマンド(最初に受信したコメンド)であるかが判定される。受信されたコマンドが最初のコマンドであると判定された場合(ステップS1:YES)、ステップS2へ進む。一方、受信されたコマンドが最初のコマンドでないと判定された場合(ステップS1:NO)、ステップS3へ進む。ステップS2では、フラッシュメモリ12上に記憶(格納)されている仮想マシン104の記憶領域をコピー元、RAM11をコピー先として、メモリコピーが実行され、ステップS3に進む。これにより、図3(B)に示すように、フラッシュメモリ12に記憶されている仮想マシン104の全部がRAM11にロードされる。こうして、RAM11に記憶された仮想マシン104を構成するプログラム及びデータは電源断まで保持される。ステップS3では、受信されたコマンドの処理が開始(図4に示す処理が開始)される。
図4は、実施例1におけるバイトコードの処理例を示すフローチャートである。図4に示すステップS11では、仮想マシン104は、プログラムカウンタを初期設定する。次いで、仮想マシン104は、プログラムカウンタが示すアドレスに格納されたバイトコードを、RAM11にロード(つまり、展開)されたバイトコード取得処理部104aにより取得(アプリケーション105から取得)する(ステップS12)。次いで、仮想マシン104は、ステップS12で取得されたバイトコードを、RAM11にロードされたバイトコード解釈処理部104bにより解釈して当該バイトコードの種類を判定する(ステップS13)。次いで、仮想マシン104は、ステップS13で種類が判定されたバイトコードに対応するネイティブ処理を、RAM11にロードされたバイトコード実行処理部104cにより実行し(ステップS14)、ステップS15に進む。このように、実施例1では、仮想マシン104におけるインタプリタ処理の全てがRAM11上から実行される。ステップS15では、仮想マシン104は、プログラムカウンタをインクリメントし、ステップS12に戻り、上記処理を繰り返す。なお、受信されたコマンドに関するバイトコードの全てが実行されると、図4に示す処理は終了する。
このように、実施例1によれば、ICチップ1aは、フラッシュメモリ12に記憶されている仮想マシン104の全部をRAM11にロードし、RAM11にロードされた仮想マシン104を動作させるように構成したので、当該仮想マシン104の高速化を実現することができる。すなわち、一般に、RAM11は、フラッシュメモリ12よりもデータ読み出し速度が高速である。さらに、RAM11は、クロック周波数増加に伴う消費電流値特性が、フラッシュメモリ12と比して良好であり、高速化による消費電流値増加を許容しやすい。したがって、バイトコードの処理をフラッシュメモリ12上から実行するよりも高速に実行することが可能となる。実施例1では、電源投入後、ICカード1が最初にコマンドを実行する際の1回だけ、仮想マシン104がRAM11にロードされ、電源断まで保持されるので、仮想マシン104のロードの効率化を図ることができる。
(実施例2)
次に、図5を参照して、実施例2におけるICチップ1aの動作を説明する。上述した実施例1では、仮想マシン104機能全てをRAM11上にロードするように構成したが、仮想マシン104自体は比較的大きなソフトウェアモジュールであり、全てをRAM11上に展開する場合、RAM11上の空き領域を消費するため、RAM11の記憶領域を圧迫するおそれがある。そこで、実施例2では、電源投入(Cold reset)後、ICカード1が最初にコマンドを実行する際に、仮想マシン104の一部機能(この例では、バイトコード実行処理部104cのみ)を選択的にRAM11上にロードさせる。
図5(A)は、外部端末2からのコマンド受信時に、ICチップ制御用ソフトウェア102により実行される処理例を示すフローチャートであり、図5(B)は、バイトコード実行処理部がロードされる際のメモリ構成例を示す図である。図5(A)に示す処理は、図3(A)と同様、外部端末2からコマンドが受信された時に開始される。図5(A)に示すステップS21では、外部端末2から受信されたコマンドが、電源投入後の最初のコマンドであるかが判定される。受信されたコマンドが最初のコマンドであると判定された場合(ステップS21:YES)、ステップS22へ進む。一方、受信されたコマンドが最初のコマンドでないと判定された場合(ステップS21:NO)、ステップS23へ進む。ステップS22では、フラッシュメモリ12上に記憶されている仮想マシン104のバイトコード実行処理部104cの記憶領域のみをコピー元、RAM11をコピー先として、メモリコピーが実行され、ステップS23に進む。これにより、図5(B)に示すように、フラッシュメモリ12に記憶されている仮想マシン104のバイトコード実行処理部104cのみがRAM11にロードされる。こうして、RAM11に記憶されたバイトコード実行処理部104cを構成するプログラム及びデータは電源断まで保持される。ステップS23では、受信されたコマンドの処理が開始される。実施例2におけるコマンドの処理の流れは、実施例1で説明した図4に示す処理の流れと同様であるが、ステップS12の処理は、フラッシュメモリ12に記憶されているバイトコード取得処理部104aにより実行され、ステップS13の処理は、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより実行される。そして、ステップS14及びS15の処理のみが、RAM11にロードされた(つまり、RAM11に記憶されている)バイトコード実行処理部104cにより実行されることになる。このように、実施例2では、仮想マシン104におけるバイトコード実行処理部104cの処理のみがRAM11上から実行される。
このように、実施例2によれば、ICチップ1aは、フラッシュメモリ12に記憶されている仮想マシン104の一部(この例では、バイトコード実行処理部104c)をRAM11にロードし、当該RAM11にロードされた仮想マシン104の一部についてはRAM11上から動作させるように構成したので、ロード対象を限定することにより、処理速度向上と消費メモリ量節約の両立を実現することができる。特に、最も処理時間がかかるバイトコード実行処理部104cをロード対象とすることで、この効果がより顕著になる。
(実施例3)
次に、図6を参照して、実施例3におけるICチップ1aの動作を説明する。実施例3では、仮想マシン104により特定のバイトコードを実行する際に、仮想マシン104の一部機能(この例では、当該バイトコードを実行するバイトコード実行処理部)を選択的にRAM11上にロードさせる。
図6(A)は、実施例3におけるバイトコードの処理例を示すフローチャートであり、図6(B)は、図6(A)のステップS33におけるロード判定処理の一例を示すフローチャートである。図6(A)に示す処理は、外部端末2からコマンドが受信された時に開始される。図6(A)に示すステップS31では、仮想マシン104は、プログラムカウンタを初期設定する。次いで、仮想マシン104は、プログラムカウンタが示すアドレスに格納されたバイトコードを、フラッシュメモリ12に記憶されているバイトコード取得処理部104aにより取得する(ステップS32)。そして、仮想マシン104によりロード判定処理が実行される(ステップS33)。このロード判定処理では、図6(B)に示すように、ステップS32により取得されたバイトコードが、ロード対象のバイトコード(所定のバイトコードの一例)であるか否かが判定される(ステップS331)。ここで、ロード対象のバイトコードは、例えば仮想マシン104を開発した者(例えば、ICカードのOS開発者)により予め決定される。取得されたバイトコードがロード対象のバイトコードでないと判定された場合(ステップS331:NO)、バイトコード実行処理部104cのロードが行われることなく、ステップS34に進む。この場合のステップS34の処理は、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより実行され、この場合のステップS35及びS36の処理は、フラッシュメモリ12に記憶されているバイトコード実行処理部104cにより実行される。
一方、取得されたバイトコードがロード対象のバイトコードであると判定された場合(ステップS331:YES)、当該ロード対象のバイトコードを実行するバイトコード実行処理部(つまり、当該バイトコードに対応するネイティブ処理部)がRAM11にロード済であるか否かが判定される(ステップS332)。ロード対象のバイトコードを実行するバイトコード実行処理部がRAM11にロード済であると判定された場合(ステップS332:YES)、ステップS34に進む。この場合のステップS34の処理は、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより実行され、この場合のステップS35及びS36の処理は、RAM11に記憶されている当該バイトコード実行処理部により実行される。
一方、ロード対象のバイトコードを実行するバイトコード実行処理部がRAM11にロード済でないと判定された場合(ステップS332:NO)、ステップS333に進む。ステップS333では、ステップS32により取得されたバイトコードが、所定のロード条件を満たしているか否かが判定される。ステップS32により取得されたバイトコードが、所定のロード条件を満たしていないと判定された場合(ステップS333:NO)、ステップS34に進む。この場合のステップS34の処理は、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより実行され、この場合のステップS35及びS36の処理は、フラッシュメモリ12に記憶されているバイトコード実行処理部104cにより実行される。
一方、ステップS32により取得されたバイトコードが、所定のロード条件を満たしていると判定された場合(ステップS333:YES)、ステップS334に進む。ステップS334では、ステップS32により取得されたバイトコードを実行するバイトコード実行処理部が、フラッシュメモリ12からRAM11にロードされ、ステップS34に進む。この場合のステップS34の処理は、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより実行され、この場合のステップS35及びS36の処理は、RAM11にロードされた当該バイトコード実行処理部により実行される。つまり、バイトコードが所定のロード条件を満たすまでは、フラッシュメモリ12上から当該バイトコードが実行されるが、バイトコードが所定のロード条件を満たした後は、RAM11上から当該バイトコードが実行されることになる。例えば、電源投入後にバイトコードの実行回数を、ロード対象のバイトコードごとに区別して1からカウントし記憶しておき、当該実行回数が所定回数(例えば、10回)以上である場合(つまり、カウントしていった実行回数が所定回数に達した場合)に、ロード条件を満たしていると判定するように構成するとよい。例えば、ロード対象のバイトコードを「aastore」とし、ロード条件を「10回」とすると、「aastore」が10回実行された場合、「aastore」を実行するバイトコード実行処理部(つまり、「aastore」に対応するネイティブ処理部)がフラッシュメモリ12からRAM11にロードされ(メモリ配置が変更され)、その後、「aastore」はフラッシュメモリ12上ではなくRAM11上から実行されることになる。一方、この場合、「aastore」以外の他のバイトコードは、そのままフラッシュメモリ12上から実行されることになる。
このように、実施例3によれば、ICチップ1aは、フラッシュメモリ12に記憶されているバイトコード取得処理部104aにより取得されたバイトコードが所定のロード条件(例えば、実行回数が所定回数以上)を満たしている場合に、当該バイトコードを実行するバイトコード実行処理部をRAM11にロードするように構成したので、例えば頻繁に実行される命令を局所的に高速化しつつ、メモリ占有量を節約することができる。
(実施例4)
次に、図7を参照して、実施例4におけるICチップ1aの動作を説明する。上述した実施例3では、バイトコード解釈処理部104bによるバイトコードの解釈に先立って、ロード判定処理(ステップS33)を実行するように構成したが、この場合、ロード対象とならないバイトコードに対してもロード判定処理を実行することによるオーバーヘッドが発生する。そこで、実施例4では、バイトコード解釈処理部104bによりバイトコードが解釈された後に、当該解釈により決定されたバイトコードがロード対象のバイトコードである場合にロード判定処理を実行するように構成される。
図7(A)は、実施例4におけるバイトコードの処理例を示すフローチャートであり、図7(B)は、図7(A)のステップS44におけるロード判定処理の一例を示すフローチャートである。図7(A)に示す処理は、図6(A)と同様、外部端末2からコマンドが受信された時に開始される。図7(A)に示すステップS41では、仮想マシン104は、プログラムカウンタを初期設定する。次いで、仮想マシン104は、プログラムカウンタが示すアドレスに格納されたバイトコードを、フラッシュメモリ12に記憶されているバイトコード取得処理部104aにより取得する(ステップS42)。次いで、仮想マシン104は、ステップS42で取得されたバイトコードを、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより解釈して当該バイトコードの種類を判定する(ステップS43)。そして、ステップS43により決定されたバイトコードがロード対象のバイトコードである場合、ロード判定処理が実行される(ステップS44)。このロード判定処理では、図7(B)に示すように、当該ロード対象のバイトコード(この例では、「aastore」)を実行するバイトコード実行処理部(つまり、当該バイトコードに対応するネイティブ処理部)がRAM11にロード済であるか否かが判定される(ステップS441)。ロード対象のバイトコードを実行するバイトコード実行処理部がRAM11にロード済であると判定された場合(ステップS441:YES)、ステップS45に進む。一方、ロード対象のバイトコードを実行するバイトコード実行処理部がRAM11にロード済でないと判定された場合(ステップS441:NO)、ステップS442に進む。ステップS442では、ロード対象のバイトコードが、所定のロード条件(例えば、実施例3と同様のロード条件)を満たしているか否かが判定される。ロード対象のバイトコードが、所定のロード条件を満たしていないと判定された場合(ステップS442:NO)、ステップS45に進む。この場合のステップS45の処理は、フラッシュメモリ12に記憶されているバイトコード実行処理部104cにより実行される。一方、ロード対象のバイトコードが、所定のロード条件を満たしていると判定された場合(ステップS442:YES)、ステップS443に進む。ステップS443では、ロード対象のバイトコードを実行するバイトコード実行処理部が、フラッシュメモリ12からRAM11にロードされ、ステップS45に進む。この場合のステップS45の処理は、RAM11にロードされた当該バイトコード実行処理部により実行される。なお、「aastore」以外の他のバイトコードは、そのままフラッシュメモリ12上から実行されることになる。
このように、実施例4によれば、ICチップ1aは、フラッシュメモリ12に記憶されているバイトコード解釈処理部104bにより解釈されたバイトコードがロード対象のバイトコードである場合で、且つ当該バイトコードが所定のロード条件を満たしている場合に、当該バイトコードを実行するバイトコード実行処理部をRAM11にロードするように構成したので、上述したオーバーヘッドが発生することを防止しつつ、局所的な高速化とメモリ占有量の節約を実現することができる。
(実施例5)
次に、図8を参照して、実施例5におけるICチップ1aの動作を説明する。上述したように、フラッシュメモリ12からRAM11上に実行先を切り替えた場合(特に、フラッシュメモリ12とRAM11の双方から実行可能な構成とする場合)、実行先を制御し、適切に切り替えるメカニズムが必要である。フラッシュメモリ12とRAM11の実行先切り替え方法は複数存在するが、バイトコードそれぞれに対応するバイトコード実行処理部が記憶されているメモリのアドレスを示すアドレステーブルによる切り替え方法が好適である。実施例5では、実施例4で説明したように、バイトコード「aastore」を実行するバイトコード実行処理部のみ、選択的にRAM11上にロードされる場合を例に取る。そのため、図7(A)及び(B)の処理は、実施例5においても適用される。
図8(A)は、バイトコード実行処理部のロード前のアドレステーブル及びメモリ構成例を示す図であり、図8(B)は、バイトコード実行処理部がロードされる際のアドレステーブル及びメモリ構成例を示す図である。仮想マシン104は、バイトコードを実行する際には、アドレステーブルを参照し、ロード対象となるバイトコード実行処理部を特定する。図8(A)の例では、バイトコード「aastore」に対応するバイトコード実行処理部は、フラッシュメモリ12上のアドレス「0x120001」に格納されている。仮想マシン104は、アドレステーブルにおいて、バイトコード「aastore」に対応するバイトコード実行処理部のアドレスが登録されている箇所を参照し、アドレス「0x120001」を特定した上で、特定したアドレスに格納されているバイトコード実行処理部により当該「aastore」を実行する。
これに対し、フラッシュメモリ12上の「aastore」に対応するバイトコード実行処理部をRAM11にロードする際には、当該バイトコード実行処理部をRAM11上にメモリコピーすると共に、アドレステーブルにおいて当該バイトコード実行処理部が記憶されているフラッシュメモリ12上のアドレスを、当該バイトコード実行処理部が当該ロードにより記憶されるRAM11上のアドレスに変更し、参照先を切り替える。図8(B)の例は、「aastore」に対応するバイトコード実行処理部がRAM11上にロードされつつ、アドレステーブル内のアドレスが「0x120001」(フラッシュメモリ12)から「0x230000」(RAM11)に書き換えられた状態を示している。この状態では、仮想マシン104は、アドレステーブルにおいて、バイトコード「aastore」に対応するバイトコード実行処理部のアドレスが格納されている箇所を参照し、アドレス「0x230000」を特定した上で、特定したアドレスに格納されたバイトコード実行処理部により当該「aastore」を実行する。
このように、実施例5によれば、ICチップ1aは、バイトコード実行処理部をRAM11にロードする際に、ロード対象の当該バイトコード実行処理部が記憶されているフラッシュメモリ12上のアドレスを示すアドレステーブルにおいて、当該バイトコード実行処理部が記憶されているフラッシュメモリ12上のアドレスを、当該バイトコード実行処理部が当該ロードにより記憶されるRAM11上のアドレスに変更するように構成したので、RAM11上から仮想マシン104を効率良く動作させることができる。
(実施例6)
次に、図9を参照して、実施例6におけるICチップ1aの動作を説明する。上述した実施例5では、バイトコード「aastore」に対応するバイトコード実行処理部のコピー先となるアドレスを、「0x230000」のように固定値で示しているが、実施例6では、この値を、RAM11のアドレス範囲内に限定しつつ乱数要素を加えて決定することで、バイトコードをRAM11上にロードするたびにロード先を変更するように構成される。なお、図7(A)及び(B)の処理は、実施例6においても適用される。
図9は、バイトコード実行処理部がロードされる際のアドレステーブル及びメモリ構成例を示す図である。図9の例では、乱数生成器13によって生成された乱数値「0x3327」と、RAM11の先頭アドレス「0x210000」とが加算され、バイトコード「aastore」に対応するバイトコード実行処理部のロード先が決定されている。
このように、実施例6によれば、アドレステーブルによる実行先の切り替えと乱数の生成を併用し、ICチップ1aは、乱数生成器13により生成された乱数に基づいて、ロード対象のバイトコード実行処理部が当該ロードにより記憶されるRAM11上のアドレスを変更するように構成したので、バイトコード実行処理部をターゲットとしたセキュリティアタックに対して効果的に対抗でき、セキュリティを向上させることができる。すなわち、バイトコード実行処理部をロードするたびにロード先が変わる(展開するRAM11上のアドレスをランダム化する)ことにより、攻撃者はバイトコード実行処理部の場所を特定することができなくなり、当該攻撃者によるバイトコードの処理への攻撃を困難にすることが可能となる。
なお、実施例6では、ロード対象としてバイトコード実行処理部を例として示したが、同一の方式は仮想マシン104全体またはバイトコード実行処理部以外の部位に対しても適用可能である。したがって、本発明は乱数要素をRAM11上のコピー先のアドレスに加えることにより、仮想マシン104の全部又は一部を動的、かつランダムに変更することができる効果を有しており、セキュリティの向上に寄与することができる。
1 ICカード
2 外部端末
1a ICチップ
10 CPU
11 RAM
12 フラッシュメモリ
13 乱数生成器
14 I/O回路

Claims (12)

  1. 揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体であって、
    前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、
    前記揮発性メモリにロードされた仮想マシンを動作させる制御手段と、
    を備え
    前記仮想マシンは、前記バイトコードを取得するバイトコード取得処理部と、前記バイトコードを解釈するバイトコード解釈処理部と、前記バイトコードを実行するバイトコード実行処理部と、を含んで構成され、
    前記ロード手段は、前記バイトコード実行処理部の全部又は一部を前記揮発性メモリにロードし、
    前記仮想マシンは、前記不揮発性メモリに記憶されているバイトコード取得処理部により前記バイトコードを取得し、当該取得したバイトコードを前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈し、当該解釈したバイトコードを前記揮発性メモリに記憶されているバイトコード実行処理部により実行することを特徴とする情報記憶媒体。
  2. 前記ロード手段は、前記不揮発性メモリに記憶されているバイトコード取得処理部により取得されたバイトコードが所定のロード条件を満たしている場合に、当該バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードすることを特徴とする請求項に記載の情報記憶媒体。
  3. 前記ロード手段は、前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈されたバイトコードが所定のバイトコードである場合に、当該バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードすることを特徴とする請求項に記載の情報記憶媒体。
  4. 前記ロード手段は、前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈されたバイトコードが所定のバイトコードである場合で、且つ当該バイトコードが所定のロード条件を満たしている場合に、当該バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードすることを特徴とする請求項に記載の情報記憶媒体。
  5. 前記ロード手段は、前記バイトコードの実行回数が所定回数以上である場合に、前記ロード条件を満たしていると判定することを特徴とする請求項またはの何れか一項に記載の情報記憶媒体。
  6. 揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体であって、
    前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、
    前記揮発性メモリにロードされた仮想マシンを動作させる制御手段と、
    を備え、
    前記ロード手段は、外部端末から受信したコマンドが前記情報記憶媒体のリセット後の最初のコマンドである場合に、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードすることを特徴とする情報記憶媒体。
  7. 前記ロード手段は、前記バイトコードを実行するバイトコード実行処理部を前記揮発性メモリにロードする際に、ロード対象の当該バイトコード実行処理部が記憶されている前記不揮発性メモリ上のアドレスを示すアドレステーブルにおいて、当該バイトコード実行処理部が記憶されている前記不揮発性メモリ上のアドレスを、当該バイトコード実行処理部が当該ロードにより記憶される前記揮発性メモリ上のアドレスに変更することを特徴とする請求項乃至の何れか一項に記載の情報記憶媒体。
  8. 前記ロード手段は、乱数生成器により生成された乱数に基づいて、前記ロード対象の前記バイトコード実行処理部が当該ロードにより記憶される前記揮発性メモリ上のアドレスを変更することを特徴とする請求項に記載の情報記憶媒体。
  9. 揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体におけるバイトコード実行方法であって、
    前記バイトコード実行方法は、
    前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロードステップと、
    前記揮発性メモリにロードされた仮想マシンを動作させるステップと、
    を含み、
    前記仮想マシンは、前記バイトコードを取得するバイトコード取得処理部と、前記バイトコードを解釈するバイトコード解釈処理部と、前記バイトコードを実行するバイトコード実行処理部と、を含んで構成され、
    前記ロードステップにおいては、前記バイトコード実行処理部の全部又は一部を前記揮発性メモリにロードし、
    前記仮想マシンが、前記不揮発性メモリに記憶されているバイトコード取得処理部により前記バイトコードを取得し、当該取得したバイトコードを前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈し、当該解釈したバイトコードを前記揮発性メモリに記憶されているバイトコード実行処理部により実行することを特徴とするバイトコード実行方法。
  10. 揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体におけるバイトコード実行方法であって、
    前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロードステップと、
    前記揮発性メモリにロードされた仮想マシンを動作させるステップと、
    を含み、
    前記ロードステップにおいては、外部端末から受信したコマンドが前記情報記憶媒体のリセット後の最初のコマンドである場合に、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードすることを特徴とするバイトコード実行方法。
  11. 揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体に含まれるコンピュータを、
    前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、
    前記揮発性メモリにロードされた仮想マシンを動作させる制御手段として機能させる情報記憶媒体用プログラムであって、
    前記仮想マシンは、前記バイトコードを取得するバイトコード取得処理部と、前記バイトコードを解釈するバイトコード解釈処理部と、前記バイトコードを実行するバイトコード実行処理部と、を含んで構成され、
    前記ロード手段は、前記バイトコード実行処理部の全部又は一部を前記揮発性メモリにロードし、
    前記仮想マシンは、前記不揮発性メモリに記憶されているバイトコード取得処理部により前記バイトコードを取得し、当該取得したバイトコードを前記不揮発性メモリに記憶されているバイトコード解釈処理部により解釈し、当該解釈したバイトコードを前記揮発性メモリに記憶されているバイトコード実行処理部により実行することを特徴とする情報記憶媒体用プログラム。
  12. 揮発性メモリと、アプリケーションを構成する複数のバイトコードの処理を行う仮想マシンを記憶する不揮発性メモリと、を備える情報記憶媒体に含まれるコンピュータを、
    前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードするロード手段と、
    前記揮発性メモリにロードされた仮想マシンを動作させる制御手段として機能させる情報記憶媒体用プログラムであって、
    前記ロード手段は、外部端末から受信したコマンドが前記情報記憶媒体のリセット後の最初のコマンドである場合に、前記不揮発性メモリに記憶されている前記仮想マシンの全部又は一部を前記揮発性メモリにロードすることを特徴とする情報記憶媒体用プログラム。
JP2013173506A 2013-08-23 2013-08-23 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム Active JP6201521B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013173506A JP6201521B2 (ja) 2013-08-23 2013-08-23 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013173506A JP6201521B2 (ja) 2013-08-23 2013-08-23 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム

Publications (2)

Publication Number Publication Date
JP2015041349A JP2015041349A (ja) 2015-03-02
JP6201521B2 true JP6201521B2 (ja) 2017-09-27

Family

ID=52695448

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013173506A Active JP6201521B2 (ja) 2013-08-23 2013-08-23 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム

Country Status (1)

Country Link
JP (1) JP6201521B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11720383B2 (en) 2017-09-07 2023-08-08 Sony Corporation Information processing apparatus and information processing method
CN112925613A (zh) * 2021-03-29 2021-06-08 恒宝股份有限公司 一种Java智能卡及其RAM复用方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4467246B2 (ja) * 2003-03-13 2010-05-26 パナソニック株式会社 メモリカード
JP2007226277A (ja) * 2004-04-02 2007-09-06 Matsushita Electric Ind Co Ltd 仮想マシン改ざん検査方法、および仮想マシン改ざん検査装置
JP5200664B2 (ja) * 2008-05-28 2013-06-05 大日本印刷株式会社 メモリの内容を改竄する故障攻撃の検知方法、セキュリティデバイス及びコンピュータプログラム

Also Published As

Publication number Publication date
JP2015041349A (ja) 2015-03-02

Similar Documents

Publication Publication Date Title
US7039904B2 (en) Frameworks for generation of Java macro instructions for storing values into local variables
EP2519908B1 (en) Jcvm bytecode execution protection against fault attacks
US20110239307A1 (en) Method for securing java bytecode
US8943486B2 (en) Multiple instruction execution mode resource-constrained device
JP5225071B2 (ja) 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法
US20060015678A1 (en) Virtual memory device including a bridge circuit
US6988261B2 (en) Frameworks for generation of Java macro instructions in Java computing environments
JP4378459B2 (ja) 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化
JP6201521B2 (ja) 情報記憶媒体、バイトコード実行方法、及び情報記憶媒体用プログラム
US20170371595A1 (en) Preemptive decompression scheduling for a nand storage device
Lee et al. Bootless boot: Reducing device boot latency with byte addressable NVRAM
EP1421475B1 (en) Frameworks for generation of java macro instructions for instantiating java objects
CN114490503A (zh) 一种高性能低功耗的eSIM卡芯片系统
KR101140522B1 (ko) 객체 관리 시스템 및 방법
EP3026551A1 (en) Methods and devices for compressing byte code for smart cards
JP2006338311A (ja) 複数のアプリケーションを搭載したデバイスを処理するコンピュータシステム、デバイスおよびコンピュータプログラム
Azevedo et al. High performance annotation-aware JVM for Java cards
CN115495392B (zh) 多级启动中内存复用方法、装置、存储介质和处理器
CN111966443B (zh) 一种智能卡及其工作方法
JP6447219B2 (ja) 電子情報記憶媒体、アプリケーション置換方法、プログラム、及びicカード
JP6175882B2 (ja) 情報記憶媒体、icカード、バイトコード実行方法
JP6822158B2 (ja) 電子情報記憶媒体、icカード、削除処理方法、及び削除処理プログラム
Asgari et al. Classification of Smart Card Operating Systems
CN114968278A (zh) 应用程序的安装方法和装置、电子设备、可读存储介质
Elliott The MAOS trap

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160624

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170814

R150 Certificate of patent or registration of utility model

Ref document number: 6201521

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150