[go: up one dir, main page]

KR101054596B1 - Memory saving method using Java Card Migrator - Google Patents

Memory saving method using Java Card Migrator Download PDF

Info

Publication number
KR101054596B1
KR101054596B1 KR1020090111207A KR20090111207A KR101054596B1 KR 101054596 B1 KR101054596 B1 KR 101054596B1 KR 1020090111207 A KR1020090111207 A KR 1020090111207A KR 20090111207 A KR20090111207 A KR 20090111207A KR 101054596 B1 KR101054596 B1 KR 101054596B1
Authority
KR
South Korea
Prior art keywords
java
name
nand flash
byte code
specific method
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
KR1020090111207A
Other languages
Korean (ko)
Other versions
KR20090126230A (en
Inventor
권병섭
최정렬
Original Assignee
에스케이씨앤씨 주식회사
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 에스케이씨앤씨 주식회사 filed Critical 에스케이씨앤씨 주식회사
Priority to KR1020090111207A priority Critical patent/KR101054596B1/en
Publication of KR20090126230A publication Critical patent/KR20090126230A/en
Application granted granted Critical
Publication of KR101054596B1 publication Critical patent/KR101054596B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card

Landscapes

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

Abstract

본 발명은 자바로 동작하는 IC카드인 자바카드의 메모리를 절감하는 방법에 관한 것이다.The present invention relates to a method for saving memory of a Java card, which is an IC card operating in Java.

본 발명은, 자바카드용 마이그레이터를 이용한 메모리 절감 방법에 있어서,The present invention, in the memory saving method using the Java Card Migrator,

NAND Flash에, 자바 바이트 코드의 패키지 및 클래스의 이름 별로, 해당 메소드의 이름을 가지는 구분기호와 함께 자바 바이트 코드를 저장하는 단계; 자바카드의 버추얼 머신이 임의의 메소드를 수행 중에 특정 메소드를 호출하는 단계; 현재 수행 중인 임의의 메소드 관련 복구 정보를 저장하는 단계; 상기 호출된 특정 메소드에 대응하는 전체 바이트 코드를, 이 특정 메소드가 속하는 패키지 및 클래스의 이름을 근거로 상기 NAND Flash에서 불러들여서, 인터프리터가 순차적으로 실행하는 단계; 상기 특정 메소드가 종료되면, 저장된 상기 임의의 메소드 관련 복구 정보를 복구하여 상기 임의의 메소드의 나머지 과정을 수행하는 단계를 포함하는 것을 특징으로 한다.Storing, in NAND Flash, the Java bytecode with a delimiter having the name of the method, for each package and class name of the Java bytecode; Calling a specific method while the virtual machine of the Javacard is performing any method; Storing recovery information related to any method currently being executed; Retrieving, by the interpreter, the entire byte code corresponding to the called specific method from the NAND Flash based on the name of a package and a class to which the specific method belongs; When the specific method is terminated, recovering the stored recovery information related to any of the methods, and performing the rest of the arbitrary methods.

이상과 같은 본 발명을 이용하면, 자바카드에서 자바 바이트 코드를 NAND Flash에 저장하기 위한 소프트웨어 모듈(마이그레이터)을 이용하여 메모리를 절감 방법을 제공하는 것이 가능해진다.By using the present invention as described above, it is possible to provide a method for saving memory by using a software module (migrator) for storing Java byte code in a NAND flash in a Java card.

자바카드, 메모리 경감, 마이그레이터, NAND Flash, 메소드  Java Card, Memory Relief, Migrator, NAND Flash, Methods

Description

자바카드용 마이그레이터를 이용한 메모리 절감 방법{Memory Reduction Method using Migrator for Java Card}Memory Reduction Method using Migrator for Java Card

본 발명은 자바로 동작하는 IC카드인 자바카드의 메모리를 절감하는 방법에 관한 것이다.The present invention relates to a method for saving memory of a Java card, which is an IC card operating in Java.

자바로 동작하는 IC카드인 자바카드는 카드 발행 후에 애플리케이션을 추가하거나 삭제 가능하여 새 카드를 발행하지 않고 새로운 서비스를 추가할 수 있고, 하드웨어에 의존하지 않고 애플리케이션을 개발할 수 있는 장점이 있어서, 스마트카드 등으로 널리 사용된다.Java Card, an IC card that operates in Java, can add or delete applications after card issuance, so it is possible to add new services without issuing a new card, and to develop applications without relying on hardware. Widely used as such.

도1은 자바카드의 내부 구조인데, 이러한 자바카드의 구조상 자바카드 버추얼 머신(Virtual Machine : VM)이, 컴파일된 자바 프레임워크의 바이트 코드(Byte Code)를 해석하고 처리하는 역할을 담당한다.1 is an internal structure of a Java card, in which the Java Card Virtual Machine (VM) is responsible for interpreting and processing byte codes of a compiled Java framework.

그래서 이러한 역할을 수행하기 위해, 로마이저(Romizer)가 바이트 코드들이 NOR Flash 안의 코드 영역에 존재하게 해야 한다. 즉, 자바 프레임워크의 자바코드를 VM이 인식할 수 있는 코드 및 프로그램 구조로 변형해야 하고, 이 과정의 결과물이 바로 ROMJava.c이다.So in order to play this role, the ROMizer has to make sure that the byte codes are in the code area in NOR Flash. In other words, the Java code of the Java framework must be transformed into a code and program structure that the VM can recognize, and the result of this process is ROMJava.c.

또한, 자바 코드는 주로 패키지(package), 클래스(class), 메소드(method), 필드(field ) 등으로 구성되고, 각각은 AllClassblocks, AllMethods, AllFields와 같은 구조체 안에서 구성요소를 정의한다. Also, Java code is mainly composed of packages, classes, methods, fields, etc., each of which defines components in structures such as AllClassblocks, AllMethods, AllFields.

그런데, 자바 바이트 코드를 저장하고 있는 자바카드의 NOR Flash는 단지 768 KB 뿐이고, NOR Flash에 논리적인 E2P 영역을 예약해야 하므로 가용한 NOR Flash의 크기는 최대 700 KB 정도이므로, USIM, GP 등의 모든 기능을 구현한 1MB이상의 자바 코드를 저장하기에 공간이 부족하다. However, since NOR Flash of Java Card that stores Java byte code is only 768 KB, and logical E2P area should be reserved in NOR Flash, the available NOR Flash is about 700 KB, so all USIM, GP, etc. There is not enough space to store more than 1MB of Java code that implements the feature.

이런 물리적 어려움을 해소하기 위해, 자바 코드의 30% 이상을 차지하는 자바 바이트 코드를 NAND Flash에 저장하는 모듈(소프트웨어)을 개발하는 것이 시급한 실정이다.In order to solve such physical difficulties, it is urgent to develop a module (software) that stores Java byte code that occupies more than 30% of Java code in NAND Flash.

본 발명은 이상과 같은 종래의 문제점을 감안하여, 자바카드에서 자바 바이트 코드를 NAND Flash에 저장하기 위한 소프트웨어 모듈(마이그레이터)을 이용하여 메모리를 절감 방법을 제공한다.SUMMARY OF THE INVENTION The present invention provides a method of saving memory by using a software module (migrator) for storing Java byte code in a NAND Flash in the Java card.

이상과 같은 기술적 과제를 달성하기 위하여, 본 발명은, 자바카드용 마이그레이터를 이용한 메모리 절감 방법에 있어서,In order to achieve the above technical problem, the present invention provides a memory saving method using a Java Card Migrator,

NAND Flash에, 자바 바이트 코드의 패키지 및 클래스의 이름 별로, 해당 메소드의 이름을 가지는 구분기호와 함께 자바 바이트 코드를 저장하는 단계; 자바카드의 버추얼 머신이 임의의 메소드를 수행 중에 특정 메소드를 호출하는 단계; 현재 수행 중인 임의의 메소드 관련 복구 정보를 저장하는 단계; 상기 호출된 특정 메소드에 대응하는 전체 바이트 코드를, 이 특정 메소드가 속하는 패키지 및 클래스의 이름을 근거로 상기 NAND Flash에서 불러들여서, 인터프리터가 순차적으로 실행하는 단계; 상기 특정 메소드가 종료되면, 저장된 상기 임의의 메소드 관련 복구 정보를 복구하여 상기 임의의 메소드의 나머지 과정을 수행하는 단계를 포함하는 것을 특징으로 한다. Storing, in NAND Flash, the Java bytecode with a delimiter having the name of the method, for each package and class name of the Java bytecode; Calling a specific method while the virtual machine of the Javacard is performing any method; Storing recovery information related to any method currently being executed; Retrieving, by the interpreter, the entire byte code corresponding to the called specific method from the NAND Flash based on the name of a package and a class to which the specific method belongs; When the specific method is terminated, recovering the stored recovery information related to any of the methods, and performing the rest of the arbitrary methods.

이상과 같은 본 발명을 이용하면, 자바카드에서 자바 바이트 코드를 NAND Flash에 저장하기 위한 소프트웨어 모듈(마이그레이터)을 이용하여 메모리를 절감 방법을 제공하는 것이 가능해진다.By using the present invention as described above, it is possible to provide a method for saving memory by using a software module (migrator) for storing Java byte code in a NAND flash in a Java card.

도2는 본 발명과 종래기술에 따른 VM의 동작을 비교한 것이다.Figure 2 compares the operation of the VM according to the present invention and the prior art.

도2에서 알 수 있는 바와 같이, 본 발명에서는 메소드 파인더(Method Finder), 쓰레드 스위처(Thread Switcher), 토큰 상태 저장기(Token Status Saver) 등의 기능이 추가된다. As can be seen in Figure 2, in the present invention, a function such as a method finder (Method Finder), a thread switcher (Thread Switcher), a token status saver (Token Status Saver) is added.

메소드 파인더는 NAND Flash에 위치한 메소드의 바이트 코드를 NOR Flash에 존재하는 RAM 또는 E2P 에 로딩하는 역할을 담당하고, 수행 중인 바이트 코드에서 임의의 메소드를 호출했을 때 작동한다.The method finder is responsible for loading the byte code of a method located in NAND Flash into RAM or E2P in NOR Flash, and works when an arbitrary method is called from the byte code being executed.

쓰레드 스위처는 쓰레드 스위칭이 발생하는 순간에 기존 쓰레드에서 수행되었던 context를 다시 불러오고, 이 정보를 기반으로 이전 실행 시점 이후를 수행할 수 있도록 하는 모듈이고, 이 모듈에서는 NAND Flash에 저장되었던 함수의 몇 번째 바이트 코드가 수행되고 있는지를 정확히 기억하는 것이 핵심이다.The thread switcher is a module that reloads the context that was performed on an existing thread at the moment of thread switching, and based on this information, allows you to execute after the previous execution point. In this module, a number of functions stored in NAND Flash are used. The key is to remember exactly whether the first byte code is being executed.

토큰 상태 저장기는 쓰레드 스위칭(thread switching), 메소드 호출(method invocation) 상황에서 현재 실행 중인 레지스터 값 상태를 저장하고 복구하는 역할을 담당하고, 명령 옵셋(Instruction offset), 스텍 포인터(stack pointer), 프레임 포인트(frame pointer) 등의 포인터 값을 RAM 영역의 논리적인 레지스터 역할을 하는 변수에 저장한다. The token state store is responsible for saving and restoring the state of register values currently executing in thread switching and method invocation situations.Instruction offsets, stack pointers, frames Pointer values such as points (frame pointers) are stored in variables that act as logical registers in the RAM area.

한편, 자바 카드는 부팅 이후, VM을 동작시킴으로써 주로 자바 어플리케이션 을 실행하게 되는데, 이 어플리케이션을 실행하면서 각종 자바 APIs를 호출하고 라이브러리(library)를 사용하고, 이러한 동작은 자바카드 VM 입장에서 보면 미리 컴파일된 바이트 코드를 패치(fetch)-디코드(decode)-실행(execute)하는 과정이다. On the other hand, the Java Card runs a VM after booting, and mainly executes a Java application. While executing this application, various Java APIs are called and a library is used. This operation is precompiled from the point of view of the Java Card VM. This is a process of fetching, decoding, and executing the byte code.

또한, 어플리케이션 개발자가 작성한 자바 코드는 자바 컴파일러(java compiler)를 거쳐 버추얼 머신 사양(virtual machine specification)에서 정의한 바이트 코드로 만들어진다. 이 바이트 코드들은 물리적으로 ROMJava.c의 “All Code”라는 구조에 저장된다.In addition, the Java code written by the application developer is made of byte code defined in the virtual machine specification through a java compiler. These byte codes are physically stored in a structure called "All Code" in ROMJava.c.

그리고, 자바 코드의 실행 단위가 바로 메소드이기 때문에, 자바 바이트 코드는 기본적으로 함수 단위로 만들어진다. 그래서 패키지, 클래스 별로 고유한 함수가 생성되는데, All Code 구조에서도 패키지, 클래스 별로 함수의 바이트 코드가 별도로 저장된다.And since the execution unit of Java code is a method, Java byte code is basically made by function unit. Therefore, unique functions are created for each package and class.In the All Code structure, the byte codes of functions are stored separately for each package and class.

본 발명의 마이그레이터는 바이트 코드를 NOR Flash의 ROMJava.c가 아닌, NAND Flash의 임의의 파일에 저장할 때에, 함수를 구분하는 패키지와 클래스의 이름이 해당 메소드의 바이트 코드를 저장하는 물리적인 파일의 이름이 된다.When the migrator stores the byte code in any file of NAND Flash rather than ROMJava.c of NOR Flash, the name of the package and class separating the function stores the name of the physical file that stores the byte code of the method. Becomes

예를 들면, “org/mortbay/jetty/security” 라는 패키지 아래 “FormAuthenticator”라는 클래스가 있고, 이 클래스를 구성하는 여러 함수 중 “authenticate” 메소드가 있다면, NAND Flash의 웹 영역(WEB Area)의 Root folder와 하위 폴더인 code 아래에 패키지 이름에 따른 폴더 구조를 가지며, 이 폴더 아래에 “FormAuthenticator.byte”라는 파일을 생성한다. 그래서 도3과 같이 파일 Root\code\org\mortbay\jetty\security\FormAuthenticator.byte에는 해당 메소드 이름[Method : authenticate(org.mortbay.jetty.Request), Method : valueUnbound(javax.servlet.http.HttpSessionBindingEvent)] 을 가지는 구분 기호와 함께 컴파일된 바이트 코드들이 저장된다. For example, if you have a class named "FormAuthenticator" under the package "org / mortbay / jetty / security", and there is a "authenticate" method among the functions that make up this class, then you can use the root of the NAND Flash web area. It has a folder structure according to package name under folder and subfolder code and creates a file named “FormAuthenticator.byte” under this folder. So, as shown in Figure 3, the file Root \ code \ org \ mortbay \ jetty \ security \ FormAuthenticator.byte has a corresponding method name [Method: authenticate (org.mortbay.jetty.Request), Method: valueUnbound (javax.servlet.http.HttpSessionBindingEvent The compiled bytecodes are stored with a delimiter with)].

결국, 본 발명의 마이그레이터는 각 클래스별 메소드들의 바이트 코드를 하나의 파일에 정리한 다음, 패키지 폴더 구조에 따라 파일 시스템을 체계적으로 정리하는 기능을 수행한다. 자바카드의 버추얼 머신을 정상적으로 작동시키기 위해서는 자바카드 발급 이전에 마이크레이터의 결과물인 Root 폴더를 NAND Flash의 웹 영역에 복사하면 된다.As a result, the migrator of the present invention organizes the byte codes of the methods of each class into one file, and then performs the function of systematically organizing the file system according to the package folder structure. In order to operate Java Card's virtual machine normally, copy the Root folder, which is the result of the microphone, to the web area of NAND Flash before Java Card is issued.

이제, 본 발명의 마이크레이터에 의해 도3과 같이 각 클래스별 메소드들의 바이트 코드가 NAND Flash에 저장된 후에, 이 NAND Flash에 저장된 메소드의 바이트를 호출하여 사용하는 경우에 대해 도4를 참고로 하여 설명하기로 한다.Now, after the byte code of the method of each class is stored in the NAND Flash by using the microphone of the present invention as described in FIG. Let's do it.

먼저, 종래기술의 방법에 대해 설명하기로 한다.First, the method of the prior art will be described.

자바카드의 버추얼 머신이 특정 시점에서 자바 메소드를 수행한다. 임의의 시점에 어떤 함수를 호출해야 하는지는 클레스의 constant pool에 있는 정보, 즉 메소드 인덱스(method index)를 통해 파악한다. Javacard's virtual machine executes Java methods at a specific point in time. Which function to call at any point is determined by information in the class's constant pool, or method index.

메소드는 패키지, 클래스, 메소드 시그네처(method signature) (파라메터 타입과 카운트, 리턴 타입 등)에 따라 고유하므로, 임의의 메소드를 판별하기 위해서 는 패키지 이름, 클래스 이름, 메소드 시그네처 등에 대한 정보가 필요하다. Methods are unique based on their package, class, and method signature (parameter type, count, return type, etc.), so information about the package name, class name, method signature, etc. is needed to determine any method. Do.

이 정보를 통해 메소드의 바이트 코드가 위치한 NOR Flash 주소 값을 알 수 있다. 그리고, 이 주소 값은 논리적으로 레지스터 역할을 수행하는 global_ip 변수에 저장된다. This information tells you the value of the NOR Flash address where the method's bytecodes are located. This address is then stored in the global_ip variable, which logically acts as a register.

바이트 코드를 해석하고 수행하는 인터프리터(interpreter)는 ip (instruction pointer) 레지스터 값에 따라 메소드의 바이트 코드를 순차적으로 읽고 실행한다. An interpreter that interprets and executes bytecodes sequentially reads and executes the method's bytecodes based on the value of the ip (instruction pointer) register.

그러나, 본 발명의 마이그레이터를 적용하면 global_ip 변수 자체가 레지스터 역할을 수행하지 않는다. 실질적인 수행을 위해서는 해당 메소드의 전체 바이트 코드(full byte code)를 패치(fetch)해서 임시로 저장하는 가변 길이의 변수가 필요하다. 이 변수에 저장된 바이트 코드를 인터프리터가 순차적으로 실행한다.However, when applying the migrator of the present invention, the global_ip variable itself does not serve as a register. For actual execution, variable length variable is needed to fetch and store the full byte code of the method temporarily. The interpreter executes the byte code stored in this variable sequentially.

그래서, 본 발명의 마이크레이터에 의해 도3과 같이 각 클래스별 메소드들의 바이트 코드가 NAND Flash에 저장된 경우에는, 도4에서와 같이, 메소드(A)의 실행 중 임의의 함수(메소드(B))가 호출되었을 경우에는(S41), 현재 수행 중인 메소드(A) 관련 바이트 코드 인덱스와 함수정보를 쓰레드 스텍에 저장하고(S42), 호출된 함수(메소드(B))에 대응하는 전체 바이트 코드를, 이 메소드(B)가 속하는 패키지 및 클래스의 이름을 근거로 NAND Flash에서 불러들여서(S43), 인터프리터가 순차적으로 실행하게 된다.Thus, when the byte code of the methods of each class is stored in the NAND Flash as shown in FIG. If is called (S41), the byte code index and function information related to the method (A) currently being executed are stored in the thread stack (S42), and the entire byte code corresponding to the called function (method (B)) is stored. Based on the name of the package and class to which this method (B) belongs, it is loaded from NAND Flash (S43), and the interpreter executes sequentially.

이제 함수(메소드(B))가 종료되면(S44), 저장된 바이트 코드 인덱스(byte code index)와 함수 정보를 복구하여(S45), 메소드(A)의 나머지 과정을 수행하게 된다.When the function (method B) is terminated (S44), the stored byte code index and the function information are recovered (S45), and the rest of the method A is performed.

다음으로, 본 발명과 종래기술에 따른 NOR Flash 메모리의 절감 효과를 비교해 보도록 한다.Next, compare the savings of the NOR Flash memory according to the present invention and the prior art.

Sun Microsystems에서 발표한 자바카드 표준 스펙을 그대로 구현하는 경우, 실제 테스트 환경인 PC 환경에서 자바 프로그램이 자바 컴파일러를 거쳐 생긴 바이트 코드들의 합은 142KB이다. In the implementation of the Java Card standard specification published by Sun Microsystems, the sum of the byte codes generated by Java programs through the Java compiler in PC environment, which is the actual test environment, is 142KB.

그러나, 프로그램이 구동되는 실제 환경인 자바카드 환경상의 문제로 인하여 자바카드에서 풀 스펙을 그대로 구현하는 것이 불가능하므로 자바 카드에는 반드시 필요한 기능만 남겨두고 나머지 기능은 disable시켜도, 이렇게 하여 생기는 바이트 코드들의 합은 48KB이다.However, it is impossible to implement full specification in Java Card due to the problem of Java Card environment, which is the actual environment in which the program is run. Therefore, even if the necessary functions are left on the Java Card and the remaining functions are disabled, the sum of byte codes generated in this way Is 48KB.

여기에다가, 상기에서 언급한 E2P 영역을 예약하고, USIM, GP 등의 모든 기능을 구현하면, 종래기술에서는 결과적으로 1MB이상의 NOR Flash 저장공간이 필요하게 되어, 768KB밖에 없는 NOR Flash 공간에 저장하기에 부족하다. In addition, if the above-mentioned E2P area is reserved and all functions such as USIM, GP, etc. are implemented, the conventional technology consequently requires more than 1MB of NOR Flash storage space, so that only 768KB of NOR Flash space can be stored. Lack.

그러나, 본 발명의 마이그레이터를 적용하면 이러한 코드들을 NOR Flash(768KB)가 아닌 NAND Flash(256MB)에 저장되므로, NAND Flash에 저장된 자바 바이트 코드의 크기만큼 메모리(NOR Flash)를 절약할 수 있게 된다.However, when the migrator of the present invention is applied, these codes are stored in NAND Flash (256MB) instead of NOR Flash (768KB), thereby saving memory (NOR Flash) by the size of Java byte code stored in NAND Flash.

이상에서는 본 발명의 바람직한 실시예를 설명하였지만, 본 발명은 이러한 실시예에 한정되는 것이 아니라 본 발명의 정신을 벗어나지 않는 범위 내에서 다양한 변형 및 변경이 가능하다는 것을 유의해야 한다.While the preferred embodiments of the present invention have been described above, it should be noted that the present invention is not limited to these embodiments, but various modifications and changes can be made without departing from the spirit of the present invention.

도1은 일반적인 자바카드의 프레임워크를 도시함.1 illustrates a framework of a typical Java card.

도2는 본 발명과 종래기술의 구성을 비교함.Figure 2 compares the configuration of the present invention and the prior art.

도3은 본 발명의 마이그레이터가 자바 바이트 코드를 NAND Flash에 저장하는 방식을 도시함.Figure 3 shows how the migrator of the present invention stores Java byte code in NAND Flash.

도4는 본 발명에서 메소드를 스위칭하는 방법을 도시함.4 shows a method of switching a method in the present invention.

Claims (4)

삭제delete 자바카드용 마이그레이터를 이용한 메모리 절감 방법에 있어서,In the memory saving method using the Java Card Migrator, NAND Flash에, 자바 바이트 코드의 패키지 및 클래스의 이름 별로, 해당 메소드의 이름을 가지는 구분기호와 함께 자바 바이트 코드를 저장하는 단계;Storing, in NAND Flash, the Java bytecode with a delimiter having the name of the method, for each package and class name of the Java bytecode; 자바카드의 버추얼 머신이 임의의 메소드를 수행 중에 특정 메소드를 호출하는 단계;Calling a specific method while the virtual machine of the Javacard is performing any method; 현재 수행 중인 임의의 메소드 관련 복구 정보를 저장하는 단계;Storing recovery information related to any method currently being executed; 상기 호출된 특정 메소드에 대응하는 전체 바이트 코드를, 이 특정 메소드가 속하는 패키지 및 클래스의 이름을 근거로 상기 NAND Flash에서 불러들여서, 인터프리터가 순차적으로 실행하는 단계;Retrieving, by the interpreter, the entire byte code corresponding to the called specific method from the NAND Flash based on the name of a package and a class to which the specific method belongs; 상기 특정 메소드가 종료되면, 저장된 상기 임의의 메소드 관련 복구 정보를 복구하여 상기 임의의 메소드의 나머지 과정을 수행하는 단계를 포함하고,When the specific method ends, recovering the stored recovery information related to any of the methods, and performing the rest of the arbitrary methods; 상기 자바 바이트 코드를 저장하는 단계는, The step of storing the Java byte code, 자바 바이트 코드를 패키지 이름의 폴더 아래에 클래스 이름의 파일명으로 저장하는 것을 특징으로 하는 자바카드용 마이그레이터를 이용한 메모리 절감 방법.Memory saving method using the Java Card Migrator, characterized in that the Java byte code is stored as a file name of the class name under the folder of the package name. 자바카드용 마이그레이터를 이용한 메모리 절감 방법에 있어서,In the memory saving method using the Java Card Migrator, NAND Flash에, 자바 바이트 코드의 패키지 및 클래스의 이름 별로, 해당 메소드의 이름을 가지는 구분기호와 함께 자바 바이트 코드를 저장하는 단계;Storing, in NAND Flash, the Java bytecode with a delimiter having the name of the method, for each package and class name of the Java bytecode; 자바카드의 버추얼 머신이 임의의 메소드를 수행 중에 특정 메소드를 호출하는 단계;Calling a specific method while the virtual machine of the Javacard is performing any method; 현재 수행 중인 임의의 메소드 관련 복구 정보를 저장하는 단계;Storing recovery information related to any method currently being executed; 상기 호출된 특정 메소드에 대응하는 전체 바이트 코드를, 이 특정 메소드가 속하는 패키지 및 클래스의 이름을 근거로 상기 NAND Flash에서 불러들여서, 인터프리터가 순차적으로 실행하는 단계;Retrieving, by the interpreter, the entire byte code corresponding to the called specific method from the NAND Flash based on the name of a package and a class to which the specific method belongs; 상기 특정 메소드가 종료되면, 저장된 상기 임의의 메소드 관련 복구 정보를 복구하여 상기 임의의 메소드의 나머지 과정을 수행하는 단계를 포함하고,When the specific method ends, recovering the stored recovery information related to any of the methods, and performing the rest of the arbitrary methods; 상기 임의의 메소드 관련 복구 정보는, 바이트 코드 인덱스와 함수정보인 것을 특징으로 하는 자바카드용 마이그레이터를 이용한 메모리 절감 방법.The arbitrary method-related recovery information is a byte code index and function information, the memory saving method using the Java Card Migrator. 자바카드용 마이그레이터를 이용한 메모리 절감 방법에 있어서,In the memory saving method using the Java Card Migrator, NAND Flash에, 자바 바이트 코드의 패키지 및 클래스의 이름 별로, 해당 메소드의 이름을 가지는 구분기호와 함께 자바 바이트 코드를 저장하는 단계;Storing, in NAND Flash, the Java bytecode with a delimiter having the name of the method, for each package and class name of the Java bytecode; 자바카드의 버추얼 머신이 임의의 메소드를 수행 중에 특정 메소드를 호출하는 단계;Calling a specific method while the virtual machine of the Javacard is performing any method; 현재 수행 중인 임의의 메소드 관련 복구 정보를 저장하는 단계;Storing recovery information related to any method currently being executed; 상기 호출된 특정 메소드에 대응하는 전체 바이트 코드를, 이 특정 메소드가 속하는 패키지 및 클래스의 이름을 근거로 상기 NAND Flash에서 불러들여서, 인터프리터가 순차적으로 실행하는 단계;Retrieving, by the interpreter, the entire byte code corresponding to the called specific method from the NAND Flash based on the name of a package and a class to which the specific method belongs; 상기 특정 메소드가 종료되면, 저장된 상기 임의의 메소드 관련 복구 정보를 복구하여 상기 임의의 메소드의 나머지 과정을 수행하는 단계를 포함하고,When the specific method ends, recovering the stored recovery information related to any of the methods, and performing the rest of the arbitrary methods; 상기 인터프리터의 순차적인 실행은,Sequential execution of the interpreter, 상기 전체 바이트 코드를 패치해서 임시로 저장하는 가변 길이의 변수에서, 상기 인터프리터가 순차적으로 불러들여서 실행하는 것을 특징으로 하는 자바카드용 마이그레이터를 이용한 메모리 절감 방법.And a variable length variable for patching the entire byte code and temporarily storing the variable byte code, wherein the interpreter sequentially loads and executes the interpreter.
KR1020090111207A 2009-11-18 2009-11-18 Memory saving method using Java Card Migrator Active KR101054596B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090111207A KR101054596B1 (en) 2009-11-18 2009-11-18 Memory saving method using Java Card Migrator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090111207A KR101054596B1 (en) 2009-11-18 2009-11-18 Memory saving method using Java Card Migrator

Publications (2)

Publication Number Publication Date
KR20090126230A KR20090126230A (en) 2009-12-08
KR101054596B1 true KR101054596B1 (en) 2011-08-04

Family

ID=41687459

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090111207A Active KR101054596B1 (en) 2009-11-18 2009-11-18 Memory saving method using Java Card Migrator

Country Status (1)

Country Link
KR (1) KR101054596B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023954A1 (en) * 1996-10-25 2003-01-30 Wilkinson Timothy J. Using a high level programming language with a microcontroller
US20080257967A1 (en) * 2004-05-11 2008-10-23 Hirotaka Nishizawa IC card module

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030023954A1 (en) * 1996-10-25 2003-01-30 Wilkinson Timothy J. Using a high level programming language with a microcontroller
US20080257967A1 (en) * 2004-05-11 2008-10-23 Hirotaka Nishizawa IC card module

Also Published As

Publication number Publication date
KR20090126230A (en) 2009-12-08

Similar Documents

Publication Publication Date Title
US11249758B2 (en) Conditional branch frame barrier
Freund et al. A type system for object initialization in the Java bytecode language
JPH11327916A (en) Cost reduction technique for dynamic class initialization check in already compiled code
CN111324465A (en) Multi-thread calling method, device, computer system and storage medium
Tang et al. Exploring control flow guard in windows 10
US20100017581A1 (en) Low overhead atomic memory operations
JP2022503899A (en) Validating the stack pointer
WO2012010419A1 (en) A string cache file for optimizing memory usage in a java virtual machine
CN101847096B (en) Optimization method of stack variable-containing function
US6934944B2 (en) Computer system and method for constant pool operations
JP5225071B2 (en) Method for verifying pseudo code loaded on embedded systems, especially smart cards
US8407678B2 (en) Method of array interception using data-flow analysis
US6996813B1 (en) Frameworks for loading and execution of object-based programs
CN116150739A (en) Automatic stack overflow defense method based on dynamic protection of key address
CN113760193B (en) Data read-write method and device for resource-restricted device and instruction set
KR101054596B1 (en) Memory saving method using Java Card Migrator
US7577798B1 (en) Space-adaptive lock-free queue using pointer-sized single-target synchronization
CN114625403B (en) Application hot repair method, device, equipment and storage medium
US6978456B1 (en) Methods and apparatus for numeric constant value inlining in virtual machines
Roussel et al. Android 292: implementing invokedynamic in Android
JP2006048186A (en) A language processor that protects code generated by dynamic compilers
US20050147046A1 (en) Method and system for module chaining control in a modular software architecture
EP4291987B1 (en) Consolidated and concurrent remapping and identification for colorless roots
Binder Secure and reliable java-based middleware-challenges and solutions
US7314491B2 (en) Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20091118

PA0201 Request for examination
PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20110214

Patent event code: PE09021S01D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20110726

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20110729

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20110729

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20140722

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20140722

Start annual number: 4

End annual number: 6

FPAY Annual fee payment

Payment date: 20170614

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20170614

Start annual number: 7

End annual number: 9

PR1001 Payment of annual fee

Payment date: 20210707

Start annual number: 11

End annual number: 11

PR1001 Payment of annual fee

Payment date: 20220704

Start annual number: 12

End annual number: 12