JP2006525568A - 携帯型データ記憶媒体のメモリ管理 - Google Patents

携帯型データ記憶媒体のメモリ管理 Download PDF

Info

Publication number
JP2006525568A
JP2006525568A JP2006505369A JP2006505369A JP2006525568A JP 2006525568 A JP2006525568 A JP 2006525568A JP 2006505369 A JP2006505369 A JP 2006505369A JP 2006505369 A JP2006505369 A JP 2006505369A JP 2006525568 A JP2006525568 A JP 2006525568A
Authority
JP
Japan
Prior art keywords
program
memory area
memory
data storage
storage medium
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.)
Pending
Application number
JP2006505369A
Other languages
English (en)
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.)
Giesecke and Devrient GmbH
Original Assignee
Giesecke and Devrient GmbH
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 Giesecke and Devrient GmbH filed Critical Giesecke and Devrient GmbH
Publication of JP2006525568A publication Critical patent/JP2006525568A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/0806Details of the card
    • G07F7/0833Card having specific functional components
    • G07F7/084Additional components relating to data transfer and storing, e.g. error detection, self-diagnosis

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

プログラム(30)の実行中に生成されるオブジェクト(38、40、44)を格納するための第1および第2のメモリ領域(34、36)を有する携帯型データ記憶媒体(10)によってプログラム(30)の実行中にメモリを管理する方法において、オブジェクト(38、40、44)の少なくとも一部が第2のメモリ領域(36)に作成される。更なるプログラム実行中に、オブジェクト(38、40、44)への永続リファレンス(42)が生成された場合、オブジェクトは第1のメモリ領域34に転送される。ソースプログラム(80)を実行可能なプログラム(30)に変換するための方法において、コンパイル時に、新たに作成されるオブジェクト(38、40、44)への永続リファレンス(42)が生成されるか否かについての確認が実施される。確認の結果に応じて、オブジェクト(38、40、44)を第1のメモリ領域(34)かまたは少なくとも一部を第2のメモリ領域(36)に作成するプログラムコードが生成される。本発明は、効率的に書き込めるメモリ領域の利用度を向上させる、携帯型データ記憶媒体中のメモリ管理技術を提供する。

Description

本発明は、広義には、プロセッサを有する携帯型データ記憶媒体によるプログラム実行中のメモリ管理の技術分野に関する。そのような種類の携帯型データ記憶媒体は、特に、さまざまな構造形態のチップカードまたはチップモジュールであり得る。さらに詳細には、本発明は、プログラム実行中に生成されるオブジェクトを記憶するために、データ記憶媒体の2つの異なるメモリ領域を使用することに関する。
一般に携帯型データ記憶媒体には、さまざまな記憶技術で構成された複数のメモリ領域が設けられている。一般に、メモリは、揮発性読出し/書込みメモリ(RAM)、不揮発性書込可能メモリ(EEPROM)およびマスクプログラム方式の固定メモリ(ROM)に細分される。RAMへの書込み動作はEEPROMへの書込み動作より大幅に少ない時間(例えば、30分の1の時間)ですむ。他方では、データ記憶媒体の半導体チップ上で、RAM内の1ビットはEEPROM内の1ビットよりもかなり大きなエリアを占めるので、通常、比較的小さいRAMしか設けることができない。このため、高速であるが少ないRAMを最善かつ最大にできる限りフレキシブルに利用するという課題が存在する。
複雑なメモリ管理機能を備えた携帯型データ記憶媒体は、例えばJava Cardという商標で知られている。2002年6月に米国パロアルトの企業サン・マイクロシステム社(Sun Microsystems, Inc.)によって公表され、インターネットでhttp://java.sun.com/products/javacardから入手可能な非特許文献1には、プログラム(「Java Card」Applet)実行用に「Java Card」内に提供される環境について説明されている。第5章に、一般に永続オブジェクトがデータ記憶媒体のEEPROMに格納されるのに対し、一般に一時オブジェクトはRAMに作成されると記載されている。セキュリティ上の理由により、一時オブジェクトをEEPROMに格納することは許されない。
上記の「Java Card」のメモリ管理では、例えば、2002年6月に米国パロアルトの企業サン・マイクロシステム社(Sun Microsystems, Inc.)によって公表され、インターネットで上記アドレスから入手可能な非特許文献2に記載されているように、一時オブジェクトを生成するために特殊なシステムコールが使用されるが、これによって一時オブジェクトの実用限界が制限されている。また、このような一時オブジェクトは潜在的に無限の寿命を備えている。ここで、「一時」という用語は、オブジェクトに格納されるデータを指しているに過ぎない。したがって、一時オブジェクトは、メモリ管理のフレキシビリティをわずかに増加させるだけである。
「Java Card」プログラミングにおいて推奨される一般的な手法は、プログラム(アプレット)の寿命全体を通じて必要な全オブジェクトをプログラムインストール時に静的に生成するというものである。これは、「インストール」という指定名称を有するメソッドで実施される。しかしながら、この手法では、フレキシビリティの低いメモリ管理となり、したがって、最適なものではない。例えば、暗号化動作のための一時データを格納するために一時フィールドが作成されるとき、そのためにRAM内に静的に予約されたメモリスペースは一般に他のプログラムには利用できない。プログラム内で、このような予約メモリスペ―スを他のタスクにも使用できる範囲はプログラマの技量による。
したがって、RAM内の少ないメモリスペースの利用度を向上させ、メモリ管理を自動化することが望まれる。
Java Card(商標)実行環境(JCRE)仕様書(Java CardTM 2.2 Runtime Environment (JCRE) Specification) Java Card(商標)アプリケーション・プログラミング・インタフェース(Java CardTM 2.2 Application Programming Interface)、81〜85ページ
そこで本発明の課題は、従来技術の問題の少なくとも一部分を解消すること、および、効率的に書き込めるメモリ領域(一般にRAMメモリ)の利用度を向上させる、携帯型データ記憶媒体におけるメモリ管理法を提供することである。特に本発明は、プログラマをさほど煩わせずにRAMメモリをフレキシブルに利用できるようにするものである。
本発明によれば、この課題の全体または一部は、請求項1に記載のプログラム実行中のメモリ管理方法、請求項7に記載のソースプログラム変換方法、請求項12に記載の携帯型データ記憶媒体、および請求項13に記載のコンピュータプログラム製品によって解決される。従属請求項は本発明の好ましい実施態様に関係する。
本発明の基礎をなす基本概念は、プログラム実行中に携帯型データ記憶媒体によって生成されるオブジェクトを、例えばRAMなど、効率的に書き込めるメモリ領域に自動的に作成する、というものである。そのために、短寿命しか有しないオブジェクトについて考察した。そのような種類のオブジェクトを、本明細書では「ローカルオブジェクト」と呼ぶ。本発明で理解されるローカルオブジェクトは、例えば、例外発生時に生成される例外オブジェクトであり得る。例外オブジェクトの寿命は、該当の例外がキャッチされるとすぐに終わる。
本発明によれば、一時的に必要とされるメモリスペースを短期間、動的に(すなわち、ローカルオブジェクトの形態で)利用可能とすることができる。ローカルオブジェクトの一部または全体を、RAMまたは他の効率的に書き込めるメモリに作成する。本発明の自動ダイナミックメモリ管理の結果、メモリが十分に利用され、それにより、実行プログラムの処理速度およびこの実行プログラムが効率的に利用できるメモリスペースについて、データ記憶媒体の効率が増加する。
オブジェクトの寿命はオブジェクトへのリファレンスが無くなった時点で一般に終わりとなる。オブジェクトへのアクセスが不可能となるからである。詳細には、ローカルオブジェクトは、オブジェクトへの永続リファレンスが存在しないことによって宣言できる。本明細書では、「永続リファレンス」はオブジェクトへのリファレンスと理解され、このリファレンスはオブジェクトのフィールド、静的フィールド、またはアレイのフィールドに永続的に格納される。オブジェクトへのリファレンスが上記フィールドのうちの1つに書き込まれた途端に、このオブジェクトはもうローカルオブジェクトであり得ない。これに対し、例えばオペランドスタックまたはローカル変数に含まれているオブジェクトへの非永続リファレンスは、ローカルオブジェクトまたは非ローカルオブジェクトというオブジェクト分類に影響を及ぼさない。
オブジェクトをローカルオブジェクトとして処理すべきか、または非ローカルオブジェクトとして処理すべきかに関する判別は、プログラムのコンパイル時、実行時、または一部をコンパイル時で一部を実行時、に行うことができる。実行時に判別を行なう場合は、新たに生成するオブジェクトのうちの少なくともいくつかを、最初に、第2の効率的に書き込めるメモリ領域に作成する。更なるプログラム実行中に、オブジェクトへの永続リファレンスが作成されたかどうかの監視が行われる。オブジェクトへの永続リファレンスが作成された途端に、もうこのオブジェクトはローカルオブジェクトと見なされなくなる。その後、このオブジェクトを第1の不揮発性メモリ領域に転送する。
コンパイル時に判別を行なう場合は、ソースプログラムの一部、すなわち、オブジェクトへの永続リファレンスを作成するか否かのオブジェクト世代を含む部分、をコンパイラによって解析する。引き続きコンパイラは、この解析の結果に基づき、オブジェクトを第1のメモリ領域に作成するプログラムコードかまたは全部または一部を第2のメモリ領域に作成するプログラムコードを生成する。本明細書の用語法では、「コンパイラ」という用語は自動変換手順を実行するすべてのプログラムを含むものとする。したがって、「コンパイラ」は、狭い意味での「Java」コンパイラのほかに、例えば、CAPファイル(カードアプリケーションファイル)および最適化プログラム生成用のコンバータのことも指すものとする。
コンパイル時のソースプログラム解析により、一般に、ただ1つの近似結果が得られる。このことは、不確実性の度合がローカルまたは非ローカルというオブジェクトの2分類のうちの一方と対応していることを意味すると理解される。したがって、確実にローカルであると認識されたオブジェクトだけを第2のメモリ領域に作成し、その他すべてのオブジェクトが第1のメモリ領域に作成するように準備することができる。これに対し、別の実施態様では、確実に非ローカルであると認識されるオブジェクトだけを第1のメモリ領域に作成し、その他すべてのオブジェクトを第2のメモリ領域に作成するように準備することができる。また、少なくとも確実にローカルであると分類できなかったオブジェクトに対して、前述の実行時監視を実施する。実施態様のうちのいくつかの形態において、オブジェクトをローカルまたは非ローカルと特徴付けることができるコンパイラ指示文(プラグラム)が提供される。
好ましい実施態様において、オブジェクトを第1のメモリ領域に作成すべきかまたは最初に第2のメモリ領域に作成すべきかを判断するために、簡素な基準が適用される。例えば、プログラムのインストールメソッドによって生成するオブジェクトを第1のメモリ領域に作成するように準備することができる。実施態様のさまざまな形態において、他のすべてのオブジェクトを最初に第2のメモリ領域に作成することも可能であるし、それぞれの種類のオブジェクトだけをそのようにすることも可能である。そのような種類のオブジェクトは、例えば、例外オブジェクトまたは暗号化動作のために一時的にのみ必要とされるオブジェクトであり得る。
ローカルオブジェクトの寿命は、通常、ローカルオブジェクトを生成したメソッドの−リターンまたは例外に由来する−終了とともに終わる。存在しているはずの、オブジェクトへのローカルリファレンスがこの瞬間に無くなるからである。その後、第2のメモリ領域内のオブジェクトにまだ必要なメモリスペースを解放できる。オブジェクトを生成したメソッドのリターンパラメータとしてオブジェクトを使用するとき、上記規則に対する例外が適用される。この場合、呼出しメソッドがオブジェクトへのリファレンスを受け取るので、少なくともこの呼出しメソッドが終了するまでオブジェクトが削除されることはない。
実施態様のいくつかの形態において、第2のメモリ領域の解放されたメモリスペースを新オブジェクトの作成に利用できるようにするために、メモリのクリーンアップ(カーベージコレクション)を行う。しかし、これはプログラム実行中に時間がかかり、実行時環境を複雑化する。そのため、第2のメモリ領域における占有状態を占有状態指標(Fuellstandszeigers)によって示す、特に簡素な方法が使用されることが好ましい。メソッドの終了時、通常、占有状態指標はメソッド呼出し時の状態にリセットされる。好ましい実施態様において、第2のメモリ領域の、リセットによって解放される部分が、メソッドのリターンパラメータとして使用されるオブジェクトを含んでいるときに限って規則に対する例外が作られる。
そのように要求された場合、オブジェクトを第2のメモリ領域から第1のメモリ領域に確実に転送できるようにするために、好ましくは第2のメモリ領域にオブジェクトが既に生成されているときに、オブジェクトのための十分なスペースが第1のメモリ領域で利用可能かどうかも確認する。また、更なるプログラムの実行中、新しいオブジェクトが作成されるときに、必要と考えられるオブジェクト転送のための十分なスペースが常に確実に第1のメモリ領域に存在していることが好ましい。
好ましい実施態様において、第1のメモリ領域がデータ記憶媒体のEEPROMまたは他の不揮発性書込み可能メモリに置かれるのに対し、第2のメモリ領域はRAMまたは他の効率的に書き込めるメモリに配される。第2のメモリ領域は、特にローカルヒープおよび/またはスタックメモリの形態とすることができる。既にコンパイル時にローカルオブジェクトと識別されたオブジェクトについては、スタックメモリに格納することが有利である。
本発明によるコンピュータプログラム製品は、本発明による変換方法を実施するためにプログラムコマンドを含んでいる。そのような種類のコンピュータプログラム製品は、本発明による方法を実施するためのプログラムを格納する、例えば半導体メモリまたはディスクまたはCD−ROMなどの物理的媒体とすることができる。しかし、コンピュータプログラム製品は、例えばコンピュータネットワークによって転送される信号など、非物理的な媒体とすることもできる。コンピュータプログラム製品は、携帯型記憶媒体用のプログラムを生成するために一般的なワークステーションコンピュータによって実行されるコンパイラであることが好ましい。
好ましい実施態様において、データおよび/またはコンピュータプログラム製品は、前述および/または独立方法クレームに記載の特徴に対応する特徴を有している。
本発明のその他の特徴、利点および機能は、以下の例示実施形態および数多くの他の実施形態の具体的な説明から明らかになるであろう。添付図面を参照されたい。
図1に示されるデータ記憶媒体10は、この例示実施形態では、「Java Card」規格にしたがうチップカードの形態をしている。データ記憶媒体10は、プロセッサ12、さまざまな技術で構成された複数のメモリゾーン、および非接触式または接触式通信のためのインタフェース回路14を1つの半導体チップ上に備えている。この例示実施形態では、固定メモリ16、不揮発性書込み可能メモリ18、および読出し/書込みメモリ20がメモリゾーンとして設けられている。固定メモリ16はマスクプログラム方式のROMの形態をしており、不揮発性メモリ18は電気消去可能プログラマブルEEPROMの形態をしており、読出し/書込みメモリ20はRAMの形態をしている。不揮発性メモリ18への書込み動作は比較的面倒で、例えば、読出し/書込みメモリ20への書込み動作の30倍もの時間を要する。
データ記憶媒体10の動作に必要なシステムプログラム22は固定メモリ16に含まれ、一部分は不揮発性メモリ18にも含まれている。システムプログラム22は、それ自体が公知となっている態様で、オペレーティングシステム24を含み、また、この例示実施形態ではJCVM(Java Card Virtual Machine)の形態をしている仮想マシンを実施するプログラムコード26も含んでいる。また、アプリケーション・プログラミング・インタフェースを利用できるようにするクラスライブラリ28も設けられている。データ記憶媒体10の初期設定時に、「Java Card」アプレットの形態のプログラム30が不揮発性メモリ18にロードされるが、別の実施形態では、プログラムの全体または一部分を固定メモリ16に置くことができる。図1には1つのプログラム30しか示されていないが、もっと多くのプログラムを携帯型データ記憶媒体10のプロセッサ12に実行させるようにすることも可能である。プログラム30は、下記で30.xと総称される複数のメソッド30.1、30.2、30.3、30.4を含んでいる。メソッド30.xは、それ自体が公知となっている態様で、プログラム30をインストールするための「インストール」メソッドと呼ばれるメソッド、受信データパッケージを処理するための「プロセス」メソッドと呼ばれるメソッドを含み、また、データ記憶媒体10の複数のプログラム間の変更時に呼び出される「選択」メソッドおよび「選択解除」メソッドを任意で含んでいる。
読出し/書込みメモリ20にあるスタックメモリ32は、プログラム実行中にオペランド、戻りアドレス、ローカル変数および他のデータ値を格納する。スタックメモリ32の空き領域は、図1に斜線で示されている。不揮発性メモリ18には、それ自体が公知となっている態様で永続ヒープの形態をしている第1のメモリ領域が確保されている。一般的な「Java Card」アーキテクチャによれば、すべてのオブジェクト、静的データフィールドおよび非一時アレイがこの永続ヒープに形成される。これに対し、本例示実施形態では、永続ヒープは選択的にしか使用しない。短寿命しか有さず、永続リファレンスによる参照が行われていないローカルオブジェクトは、第1のメモリ領域34ではなく、読出し/書込みメモリ20の第2のメモリ領域36に作成される。第2のメモリ領域36は、永続ヒープと同様に、オブジェクトを格納する役割を果たすので、ローカルヒープとも呼ばれる。
上記状況を説明するために、一例として、第1のメモリ領域34に形成され、それぞれ複数のデータフィールドを備えている2つのオブジェクト38、40が図1に示されている。第1のオブジェクト38のデータフィールドのうちの1つは、第2のオブジェクト40へのリファレンス42を含んでいる。リファレンス42は、永続格納されるデータフィールドに含まれているので「永続リファレンス」とも呼ばれる。第2のオブジェクト40は、永続リファレンス42によって参照されるため、ローカルオブジェクトではなく永続オブジェクトである。第2のメモリ領域36には、一例として、ローカルオブジェクト44が示されている。例えばスタックメモリ32で形成されたローカル変数に含まれているローカルリファレンス46は、ローカルオブジェクト44を参照する。スタックメモリ32内の別の値は占有状態指標48として、第2のメモリ領域36の空きメモリの開始を示す。この空きメモリは図1に斜線で示されている。
データ記憶媒体10の実行中に、”NEW”コマンドによって新オブジェクトの形成が要求されたときは、図2に示される手順が実施される。まず、ステップ50で、新オブジェクトを作成するために十分なメモリスペースの空きが第1のメモリ領域にあるか否かの確認がなされる。利用できるメモリスペースが不十分な場合、エラーメッセージとともにオブジェクトの生成が中止される。本例示実施形態では、最初に第2のメモリ領域36に作成されたオブジェクトでさえも第1のメモリ領域34に確実に随時転送できるように、ステップ50の確認は、作成されるオブジェクトの性質と無関係に実施される。
本例示実施形態では、プログラム30の「インストール」メソッドによって作成されるオブジェクトは常に永続オブジェクトと見なされ、したがって、第1のメモリ領域34に入れられようになっている。したがって、ステップ52では、プログラムのインストールが現在実施されているか否かの照会が行われる。インストールが実施されていれば、ステップ54で、新オブジェクトが第1のメモリ領域34に永続オブジェクトとして生成される。ステップ54で実施される生成手順は、一般的な「Java Card」の場合に実施される永続ヒープにおけるオブジェクト作成に対応するものである。
ステップ52でプログラム実行がインストールメソッド以外であることが確認された場合、本例示実施形態では、作成される新オブジェクトは、最初はローカルオブジェクトとして扱われる。その後、このオブジェクトは、十分なメモリスペースが空いていること(ステップ56で確認される)を前提として、第2のメモリ領域36(ローカルヒープ)に作成される。ローカルヒープで十分なメモリスペースが利用可能である場合、ステップ58で、次の空き位置(これまで使っていた領域のすぐ隣の)にオブジェクトが作成され、これに応じて占有状態指標48が更新される。しかし、ローカルヒープがすでにいっぱいになっている場合は、ステップ54で、第1のメモリ領域34にオブジェクトを作成するための一般的な手順が実施される。もちろん、この領域には、ステップ50で確認された通り、利用可能な十分な空きメモリスペースがまだ残っている。
データ記憶媒体10による更なるプログラム30実行中、永続リファレンスが生成または変更されるたびに、このリファレンスが第2のメモリ領域36にあるオブジェクトを参照しているか否かの確認が行われる。参照している場合、オブジェクトは第2のメモリ領域36から第1のメモリ領域34に転送される。ステップ50の照会のため、オブジェクト転送が随時可能であることが保証されている。
本例示実施形態では、メソッド30.xの終了後に、このメソッド30.xで生成されたローカルオブジェクトが占有していたメモリスペースを簡単に解放できるように、第2のメモリ領域36がスタックメモリと同様に構成されている。この手順を説明するため、一例として、いくつかのスタックフレーム60.1、60.2、60.3によるスタックメモリ32の占有状態を図3に示す。それ自体が公知となっている態様で、各メソッド30.xが呼び出されると新しいスタックフレーム60.xが作成されるが、メソッド30.xの終了と同時に削除される。スタックフレ―ム60.xには、呼出しメソッドへの戻りアドレス、管理および機密データが格納され、また、呼び出されたメソッドのローカル変数も任意で格納される。
本例示実施形態では、各スタックフレーム60.xに、当該メソッド30.xの実行中に占有状態指標48を入れる占有状態フィールド(Fuellstandsfeld)62.xも設けられている。一例として示されている図3の図では、占有状態フィールド62.3が最新の占有状態指標48を含み、占有状態フィールド62.2がスタックフレーム60.3に対応するメソッドが呼び出された時点で最新であった占有状態を含んでいる。64.3の部分は、呼び出されたために現在実施されているメソッドが新たに占有しているローカルヒープの一部分を指している。ローカルヒープ内の64.1および64.2の部分は、呼び出しによってメモリフレーム60.1および60.2の作成を生じさせたメソッドで埋められている。
ここに記載されている例示実施形態では、メソッドによって占有された、第2のメモリ領域36内のスペースを、メソッドの終了時に完全に解放するようになっている。これは、メソッド終了時に、対応するスタックフレーム60.x(占有状態フィールド62.xを含んでいる)を処分し、占有内容が内部に格納されている次に古いスタックフレーム60.(x−1)の占有状態フィールド62.(x−1)を新占有状態指標48として使用することによって、難なく行われる。したがって、例えば、呼出しによってスタックフレーム60.3の形成を生じさせるメソッドの終了後、占有状態フィールド62.2の内容が新占有状態指標48として使用されるので、メモリ部分64.3全体が解放される。
終了したばかりのメソッドが第2のメモリ領域36に作成されたローカルオブジェクトへのリファレンスを呼出しメソッドにリターンする場合に、上記パラグラフに記載された規則に対する例外が存在する。この場合、ローカルオブジェクトが上書きされないようにするために、最新の占有状態フィールド62.xの内容が次に古いスタックフレーム60.(x−1)にコピーされる。例えば、図3のメモリ占有配置では、メモリフレーム60.3を作成したメソッドが、メモリ領域64.3にあるオブジェクトへのリファレンスをリターンする場合、前のスタックフレーム60.2の占有状態フィールド62.2に占有状態フィールド62.3の値がコピーされる。
メソッド終了時の上記手順を図4に再度図解する。ステップ70の結果に応じて、直前のスタックフレーム60.(x−1)の占有状態フィールド62.(x−1)を復活させられるか(ステップ72)か、または最新の占有状態指標48の値を直前のスタックフレーム60.(x−1)に引き継がされる。
図5は、コンパイラ82によって「Java」ソースプログラム80をCAPファイル(カードアプリケーションファイル)84に変換する、それ自体が公知である変換手順を示す。CAPファイル84は、次に、例えばデータ記憶媒体10の初期設定時に、ローディングプログラム86によってデータ記憶媒体10にプログラム30としてロードされる。本明細書に記載される例示実施形態では、コンパイラ82は、ソースプログラム80をバイトコードに変換するための実際のコンパイルモジュールのほかに、さまざまな正確性チェックを実施する、「オフカード仮想マシン」とも呼ばれるコンバータを備えている。
前述の方法では、新たに作成されるオブジェクトを第1のメモリ領域34に生成すべきか第2のメモリ領域36に作成すべきかを決定するために、ステップ52で、実行時に簡単な照会が実施された。また、永続リファレンスの作成および更新時には、別の実行時チェックが実施された。これに対し、別の実施形態では、前記チェックは、全体的または部分的に、コンパイラ82のレベルに対して行われる。
コンパイラ82は、ソースプログラム80または中間コードの抽象解析により、後のプログラム実行中に新しく作成されるオブジェクトをローカルオブジェクトと見なすべきか、非ローカルオブジェクトと見なすべきかに関する情報を得ることができる。引き続きコンパイラ82は、この分析結果に基づき、第1のメモリ領域34または第2のメモリ領域36にオブジェクトを作成させるプログラムコードを生成する。別の実施形態では、コンパイル時に確実にローカルであると認識された、ローカル変数などのオブジェクトがスタックメモリ32に作成される。これらの実施形態のスタックメモリ32は、ローカルヒープを読出し/書込みメモリ20に付加的に供給するか否かに応じて、第2のメモリ領域36の全体または第2のメモリ領域36の一部分を形成する。
ソースプログラム80は、通常、コンパイル時にローカルオブジェクトまたは非ローカルオブジェクトとはっきり分類できないオブジェクトを生成するためのコマンドを有する。そのようなオブジェクトは、第1のメモリ領域34に直ちに作成することもできるし、前述の態様で、最初に第2のメモリ領域36にローカルオブジェクトとして作成し、必要となったときに第1のメモリ領域34に転送するだけとすることもできる。
本発明の例示実施形態にしたがう携帯型データ記憶媒体のブロック図である。 新オブジェクト作成時に実施される手順の流れ図である。 一例として、プログラム実行中のスタックメモリおよびローカルヒープのメモリ占有状態を示す図である。 メソッド終了時に実施される手順の流れ図である。 実行可能なプログラムへのソースプログラムの変換を示す概略図である。
符号の説明
10 データ記憶媒体
12 プロセッサ
14 インタフェース回路
16 固定メモリ
18 不揮発性メモリ
20 読出し/書込みメモリ
30 プログラム
32 スタックメモリ
34 第1のメモリ領域
36 第2のメモリ領域
38、40、44 オブジェクト
42 永続リファレンス
48 占有状態指標

Claims (13)

  1. プログラム(30)の実行中に生成されるオブジェクト(38、40、44)を格納するための第1および第2のメモリ領域(34、36)を有する携帯型データ記憶媒体(10)によって前記プログラム(30)の実行中にメモリを管理する方法であって、前記第2のメモリ領域(36)への書込み動作が前記第1のメモリ領域(34)への書込み動作よりも効率的に実施される方法であり、
    プログラム実行中に生成されるオブジェクト(38、40、44)の少なくとも一部を前記第2のメモリ領域(36)に作成するステップと、
    更なるプログラム実行中に、前記オブジェクト(38、40、44)への永続リファレンス(42)が生成された場合に、前記オブジェクト(38、40、44)を前記第1のメモリ領域34に転送するステップと
    を備えることを特徴とする方法。
  2. 前記オブジェクト(38、40、44)が前記プログラム(30)のメソッド(30.x)の実行中に生成され、前記メソッド(30.x)の終了時に、少なくとも前記メソッド(30.x)が前記オブジェクトへのリファレンスをリターンしないときに、前記オブジェクト(38、40、44)によってまだ占有されている前記第2のメモリ領域(36)のメモリスペースを解放することを特徴とする請求項1に記載の方法。
  3. 前記メソッド(30.x)の終了時に、少なくともメソッド(30.x)が、前記第2のメモリ領域(36)に置かれたオブジェクト(38、40、44)へのリファレンスをリターンしないときに、第2のメモリ領域(36)の占有状態を示す占有状態指標(48)を、メソッド(30.x)が呼び出された時点の最新レベルにリセットすることを特徴とする請求項2に記載の方法。
  4. オブジェクト(38、40、44)を前記第2のメモリ領域(36)に作成するときに、必要となるであろう前記オブジェクト(38、40、44)の転送のための十分なスペースが第1のメモリ領域(34)内で利用できるか否か確認することを特徴とする請求項1〜3のいずれか1項に記載の方法。
  5. 前記プログラム(30)のインストール中に生成するオブジェクト(38、40、44)を前記第1のメモリ領域(36)に作成することを特徴とする請求項1〜4のいずれか1項に記載の方法。
  6. ソースプログラム(80)からの前記プログラム(30)の生成時にローカルオブジェクトと識別されたオブジェクト(38、40、44)だけを、最初に前記第2のメモリ領域(36)に作成することを特徴とする請求項1〜5のいずれか1項に記載の方法。
  7. ソースプログラム(80)を、携帯型データ記憶媒体(10)によって実行されるようになっているプログラム(30)に変換する方法であって、前記データ記憶媒体(10)が、前記プログラム(30)の実行中に生成されるオブジェクト(38、40、44)を格納するための第1および第2のメモリ領域(34、36)を有し、前記第2のメモリ領域(36)への書込み動作が前記第1のメモリ領域(34)への書込み動作よりも効率的に実施される方法において、
    前記ソースプログラム(80)の、前記オブジェクト(38、40、44)の生成を含む部分の変換時に、前記オブジェクト(38、40、44)への永続リファレンス(42)が前記ソースプログラム(80)の被変換部分に生成されたか否かを少なくともおおよそ確認し、この確認の結果に応じて、前記オブジェクト(38、40、44)を前記第1のメモリ領域(34)に作成するプログラムコードを生成するか、または前記オブジェクト(38、40、44)の少なくとも一部を前記第2のメモリ領域(36)に作成するプログラムコードを生成することを特徴とする方法。
  8. 生成された前記プログラム(30)が、前記携帯型データ記憶媒体(10)による実行時に実行されるようになっていることを特徴とする請求項1〜7のいずれか1項に記載の方法。
  9. 前記第2のメモリ領域(36)に形成されるオブジェクト(38、40、44)が、一時的にのみ必要とされるローカルオブジェクトであることを特徴とする請求項1〜8のいずれか1項に記載の方法。
  10. 前記第2のメモリ領域(36)がローカルヒープとスタックメモリ(32)の両方または一方を備えていることを特徴とする請求項1〜9のいずれか1項に記載の方法。
  11. 前記データ記憶媒体(10)が「Java Card」であり、前記プログラム(30)が「Java Card」アプレットであることを特徴とする請求項1〜10のいずれか1項に記載の方法。
  12. プロセッサ(12)および少なくとも1つのメモリ(16、18、20)を有し、前記メモリ(16、18、20)が、請求項1〜6にしたがう方法を前記プロセッサ(12)に実施させるプログラムコマンドを含んでいることを特徴とする、チップカードまたはチップモジュールなどの携帯型データ記憶媒体(10)。
  13. 請求項7または請求項8に記載の特徴を有する方法をコンピュータに実施させるプログラムコマンドを備えていることを特徴とする、コンパイラ(82)などのコンピュータプログラム製品。
JP2006505369A 2003-05-06 2004-05-04 携帯型データ記憶媒体のメモリ管理 Pending JP2006525568A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10320062A DE10320062A1 (de) 2003-05-06 2003-05-06 Speicherverwaltung bei einem tragbaren Datenträger
PCT/EP2004/004723 WO2004100090A1 (de) 2003-05-06 2004-05-04 Speicherverwaltung bei einem tragbaren datenträger

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012105134A Division JP5457496B2 (ja) 2003-05-06 2012-05-02 携帯型データ記憶媒体のメモリ管理

Publications (1)

Publication Number Publication Date
JP2006525568A true JP2006525568A (ja) 2006-11-09

Family

ID=33426673

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006505369A Pending JP2006525568A (ja) 2003-05-06 2004-05-04 携帯型データ記憶媒体のメモリ管理
JP2012105134A Expired - Fee Related JP5457496B2 (ja) 2003-05-06 2012-05-02 携帯型データ記憶媒体のメモリ管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012105134A Expired - Fee Related JP5457496B2 (ja) 2003-05-06 2012-05-02 携帯型データ記憶媒体のメモリ管理

Country Status (6)

Country Link
US (1) US8819373B2 (ja)
EP (1) EP1623394A1 (ja)
JP (2) JP2006525568A (ja)
CN (1) CN1781127B (ja)
DE (1) DE10320062A1 (ja)
WO (1) WO2004100090A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063264A (ja) * 2012-09-20 2014-04-10 Toshiba Corp Icカード

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100801894B1 (ko) * 2006-06-15 2008-02-12 삼성전자주식회사 휴대용 단말기에서 메모리 용량을 고려한 프로그램 실행을위한 장치 및 방법
DE102006034375A1 (de) * 2006-07-25 2008-01-31 Giesecke & Devrient Gmbh Personalisierung von tragbaren Datenträgern
US8917165B2 (en) * 2007-03-08 2014-12-23 The Mitre Corporation RFID tag detection and re-personalization
US9196346B2 (en) * 2008-01-23 2015-11-24 Micron Technology, Inc. Non-volatile memory with LPDRAM
EP2196934A1 (en) * 2008-12-09 2010-06-16 Gemalto SA Method for securing java bytecode
EP3369033A4 (en) * 2015-10-28 2019-05-22 HRL Laboratories, LLC SYSTEM AND METHOD FOR SAVING SAFETY LABELS AND REFERENCE COUNTS FOR OBJECTS IN A COMPUTER MEMORY
WO2021120140A1 (en) 2019-12-20 2021-06-24 Intel Corporation Managing runtime apparatus for tiered object memory placement
DE102022001682A1 (de) 2022-05-12 2023-11-16 Giesecke+Devrient ePayments GmbH Secure Element mit Heap-Speicher

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056982A (ja) * 1998-05-04 2000-02-25 Internatl Business Mach Corp <Ibm> 非持続メモリ内にオブジェクトを作成する方法および装置、ならびにオブジェクトへのアクセス可能性を維持する方法
JP2001067210A (ja) * 1999-08-30 2001-03-16 Toshiba Corp Icカードとicカードにおけるアプリケーションのインストール方法
WO2001041058A1 (fr) * 1999-11-30 2001-06-07 Kabushiki Kaisha Toshiba Carte a circuit integre et procede de gestion de la memoire volatile de la carte a circuit integre
JP2004508620A (ja) * 2000-08-22 2004-03-18 ギーゼッケ ウント デフリエント ゲーエムベーハー 携帯型データ記憶媒体のスタックの仮想拡張方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829169A (en) * 1985-07-01 1989-05-09 Toppan Moore Company, Inc. IC card having state marker for record access
DE69817333T2 (de) 1998-06-05 2004-06-09 International Business Machines Corp. Verfahren und Vorrichtung zum Laden von Befehlskodes in einen Speicher und zum Verbinden dieser Befehlskodes
JP3749798B2 (ja) 1998-12-01 2006-03-01 株式会社東芝 Icカードにおけるデータ書込方法およびicカードにおけるデータ読込方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000056982A (ja) * 1998-05-04 2000-02-25 Internatl Business Mach Corp <Ibm> 非持続メモリ内にオブジェクトを作成する方法および装置、ならびにオブジェクトへのアクセス可能性を維持する方法
JP2001067210A (ja) * 1999-08-30 2001-03-16 Toshiba Corp Icカードとicカードにおけるアプリケーションのインストール方法
WO2001041058A1 (fr) * 1999-11-30 2001-06-07 Kabushiki Kaisha Toshiba Carte a circuit integre et procede de gestion de la memoire volatile de la carte a circuit integre
JP2004508620A (ja) * 2000-08-22 2004-03-18 ギーゼッケ ウント デフリエント ゲーエムベーハー 携帯型データ記憶媒体のスタックの仮想拡張方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014063264A (ja) * 2012-09-20 2014-04-10 Toshiba Corp Icカード

Also Published As

Publication number Publication date
CN1781127A (zh) 2006-05-31
DE10320062A1 (de) 2004-12-16
WO2004100090A1 (de) 2004-11-18
EP1623394A1 (de) 2006-02-08
JP2012164350A (ja) 2012-08-30
US20070016744A1 (en) 2007-01-18
US8819373B2 (en) 2014-08-26
JP5457496B2 (ja) 2014-04-02
CN1781127B (zh) 2010-10-20

Similar Documents

Publication Publication Date Title
JP5457496B2 (ja) 携帯型データ記憶媒体のメモリ管理
EP0665496B1 (en) Method and apparatus for run-time error checking using dynamic patching
JP4571710B2 (ja) ディスパッチテーブル構造のための方法と装置
US7107579B2 (en) Preserving program context when adding probe routine calls for program instrumentation
US7406684B2 (en) Compiler, dynamic compiler, and replay compiler
US7386843B2 (en) Method and system for register allocation
US8056061B2 (en) Data processing device and method using predesignated register
US7721275B2 (en) Data-flow based post pass optimization in dynamic compilers
EP2341441B1 (en) Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments
US20040015972A1 (en) Executing native code in place of non-native code
CN116661910B (zh) 一种应用调用的方法及装置
WO2002091175A1 (en) Specialized heaps for creation of objects in object-oriented environments
US7025261B2 (en) Method and system for managing data designed to be stored in a programmable smart card
US20070168951A1 (en) Java smart card chip having memory area reserved for global variables
US6772171B1 (en) Method and device for creating an object in a non-persistent memory and/or keeping accessibility to said object
US6275985B1 (en) Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support
US6275982B1 (en) Method and device enabling a fixed program to be developed
US6736325B1 (en) Codelets
US9898268B2 (en) Enhanced local commoning
KR101140522B1 (ko) 객체 관리 시스템 및 방법
KR20000062382A (ko) 응용 프로그램을 칩 카드 내에 로딩하기 위한 방법
JP2003256215A (ja) プログラム変換方法、これを用いたデータ処理装置及びプログラム
CN116382785B (zh) 用于数据处理的方法及装置、计算设备及存储介质
US6954926B1 (en) Label address translating device
CN115269119A (zh) 一种多系统智能卡及应用实现方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100824

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101117

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101125

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110124

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110223

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110907

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110914

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111004

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111012

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111107

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111114

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111207

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120104

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120502