KR20110013194A - System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof - Google Patents

System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof Download PDF

Info

Publication number
KR20110013194A
KR20110013194A KR1020100031121A KR20100031121A KR20110013194A KR 20110013194 A KR20110013194 A KR 20110013194A KR 1020100031121 A KR1020100031121 A KR 1020100031121A KR 20100031121 A KR20100031121 A KR 20100031121A KR 20110013194 A KR20110013194 A KR 20110013194A
Authority
KR
South Korea
Prior art keywords
memory
storage device
host terminal
program
terminal
Prior art date
Application number
KR1020100031121A
Other languages
Korean (ko)
Other versions
KR101444070B1 (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 에스케이텔레콤 주식회사
Publication of KR20110013194A publication Critical patent/KR20110013194A/en
Application granted granted Critical
Publication of KR101444070B1 publication Critical patent/KR101444070B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • 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
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • 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/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation

Abstract

PURPOSE: A memory use system of a host terminal, a method thereof, a storage device and a recording medium for the same for replacing the memory using the memory of the host terminal are provided to supply a module of high complexity such as the host terminal by using the memory of the host terminal. CONSTITUTION: A communication unit(61) performs data transceiving. A storage unit(63) stores a program. A controller(69) transmits a memory allocation request message to a host terminal through the communications unit. The controller receives a memory address value from the host terminal through the communication unit.

Description

저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체{System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof}A system and method for using a memory of a host terminal in a storage device, the host terminal and the storage device, and a recording medium therefor {host and storage device, and a recording medium}

본 발명은 저장장치에서 호스트 단말의 메모리 이용 방법에 관한 것으로, 특히 저장장치 내 프로그램 실행 시 호스트 단말의 메모리를 이용하여 저장장치의 메모리를 보완하는 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체에 관한 것이다. The present invention relates to a method of using a memory of a host terminal in a storage device, and more particularly, to a system and method for using a memory of a host terminal in a storage device that complements a memory of the storage device by using the memory of the host terminal when executing a program in the storage device. It relates to a host terminal and a storage device, and a recording medium therefor.

최근 메모리의 가격이 내려갔지만, 그래도 아직 낮은 가격은 아니어서 USB 메모리, 스마트 카드 등 보조 저장장치에서 사용되는 메모리는 아직 높은 가격대를 형성하고 있다. 이로 인해서 큰 용량의 메모리가 필요한 컨텐츠 및 모듈 개발이 제한이 될 수 밖에 없었다. 저장장치 사업은 보안이라는 초점아래 좁은 개발범위에서의 컨텐츠들만 개발이 되고 있다. Although the price of memory has recently fallen, it is still not low, and memory used in auxiliary storage devices such as USB memory and smart cards is still forming a high price range. This limits the development of content and modules that require large amounts of memory. The storage business is only developing contents in a narrow development scope under the security focus.

하지만 저장장치 산업의 발전은 기존 호스트 단말에 개발되었던 시스템 및 컨텐츠를 요구하게 되었고, 이러한 요구사항을 수용하기에는 저장장치의 하드웨어는 스펙과 성능에 문제점이 있다. 게다가 저장장치는 하드웨어적으로 대부분 호스트 단말의 전력 없이는 구동이 될 수 없고, 대부분의 모듈과 컨텐츠도 호스트 단말에 의지적인 부분이 많다.However, the development of the storage industry requires systems and contents that have been developed in existing host terminals, and storage hardware has problems in specifications and performance to accommodate such requirements. In addition, most of the storage devices can not be driven without the power of the host terminal in hardware, and most modules and contents are also dependent on the host terminal.

본 발명은 상술한 종래의 문제점을 해결하기 위해 제안된 것으로서, 저장장치 내 프로그램을 실행할 때 호스트 단말에 있는 대용량 메모리를 사용하여 프로그램을 저장장치 내에서 구현할 수 있게 하는 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체를 제공하는데 그 목적이 있다.SUMMARY OF THE INVENTION The present invention has been proposed to solve the above-mentioned conventional problems, and uses a memory of a host terminal in a storage device that enables a program to be implemented in the storage device using a large memory in the host terminal when executing the program in the storage device. It is an object of the present invention to provide a system and method, a host terminal and a storage device thereof, and a recording medium therefor.

상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템은, 실행 중인 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 메모리 할당 요청메시지를 전송하고, 할당된 메모리 주소값을 수신하는 저장장치 및 저장장치로부터 메모리 할당 요청메시지를 수신하면, 메모리를 할당하고, 저장장치로 할당된 메모리 주소값을 전송하는 호스트 단말을 포함한다. In the storage device of the present invention for achieving the above object, the memory using system of the host terminal, if it is confirmed that the memory size referenced by the running program exceeds the available memory size, and transmits a memory allocation request message, the allocated memory And a host terminal for allocating memory and transmitting the allocated memory address value to the storage device upon receiving the memory allocation request message from the storage device receiving the address value and the storage device.

상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치는, 데이터 송수신을 위한 통신부, 프로그램을 저장하는 저장부 및 프로그램 실행 중에 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 통신부를 통해 호스트 단말로 메모리 할당 요청메시지를 전송하고, 통신부를 통해 호스트 단말로부터 할당된 메모리 주소값을 수신하는 제어부를 포함한다.In the storage device of the present invention for achieving the above object, a storage device in a memory using system of a host terminal includes a communication unit for data transmission and reception, a storage unit for storing a program, and a memory size referred to by a program during program execution. If it is confirmed that the exceeded, and transmits the memory allocation request message to the host terminal via the communication unit, and comprises a control unit for receiving the allocated memory address value from the host terminal through the communication unit.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 프로그램이 참조한 메모리 사이즈가 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하면 메모리 할당 요청메시지를 전송하는 것을 특징으로 한다.In the storage device of the memory utilization system of the host terminal in the storage device of the present invention, the control unit transmits a memory allocation request message when it is confirmed that the memory size referred to by the program exceeds the available memory size allocated to the program. It is done.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 통신부를 통해 할당된 메모리 주소값을 전송하며, 실행 중인 프로그램의 데이터를 전달하거나 전달한 데이터의 반환, 삭제 또는 변경을 요청하는 것을 특징으로 한다.In the storage device of the memory using system of the host terminal in the storage device of the present invention, the control unit transmits the memory address value allocated through the communication unit, and transfers, deletes, or changes the data of the program being executed or transmitted. Characterized in that request.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 실행 중인 프로그램이 할당된 메모리 참조를 해제하거나 프로그램이 종료되는 경우, 통신부를 통해 호스트 단말로 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 것을 특징으로 한다.In the storage device of the memory using system of the host terminal in the storage device of the present invention, the control unit, when the program releases the allocated memory reference or terminates the program, the memory address value allocated to the host terminal through the communication unit And a memory release request message.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 실행 중인 프로그램이 할당된 메모리 참조를 해제하거나 프로그램이 종료되는 경우, 호스트 단말의 메모리가 프로그램에 할당됨을 확인하여 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 것을 특징으로 한다.In the storage device of the memory utilization system of the host terminal in the storage device of the present invention, the controller, when the program being released releases the reference to the memory allocated or terminates the program, confirms that the memory of the host terminal is allocated to the program The memory address value and the memory release request message are transmitted.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 통신부를 통해 호스트 단말로부터 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 체크메시지에 대한 응답으로 통신부를 통해 호스트 단말로 메모리 할당 요청메시지를 전송하는 것을 특징으로 한다.In the storage device of the memory using system of the host terminal in the storage device of the present invention, when the control unit receives a check message for checking the available memory size from the host terminal through the communication unit, the control unit in response to the check message, the host through the communication unit; The memory allocation request message is transmitted to the terminal.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 한다.In the storage device of the memory utilization system of the host terminal in the storage device of the present invention, the program is a separate execution target code block.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 호스트 단말로부터 패킹된 스택 정보 및 레지스터 정보를 수신하면, 분리 실행 대상 코드 블록의 시작점(entry point)을 호출하여 분리 실행 대상 코드 블록의 실행을 시작하는 것을 특징으로 한다.In the storage device of the memory using system of the host terminal in the storage device of the present invention, the control unit, upon receiving the packed stack information and register information from the host terminal, calls the entry point of the separation execution target code block (entry point) The execution of the separate execution target code block is started.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 분리 실행 대상 코드 블록을 실행한 후, 결과값을 호스트 단말로 반환하는 것을 특징으로 한다.In the storage device of the memory using system of the host terminal in the storage device of the present invention, the control unit is characterized in that after executing the separate execution target code block, returning the result value to the host terminal.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 분리 실행 대상 코드 블록은 권리객체(Rights Object)에 포함되어 호스트 단말로부터 수신한 것을 특징으로 한다.In the storage device of the memory using system of the host terminal in the storage device of the present invention, the separate execution target code block is included in a Rights Object and received from the host terminal.

상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말은, 데이터 송수신을 위한 단말통신부 및 저장장치 내에서 프로그램 실행 중 단말통신부를 통해 저장장치로부터 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지를 참조하여 메모리를 할당하고, 단말통신부를 통해 저장장치로 할당된 메모리 주소값을 전송하는 단말제어부를 포함한다.In the storage device of the present invention for achieving the above object, the host terminal in the memory using system of the host terminal, a memory allocation request message from the storage device via the terminal communication unit during the execution of the program in the terminal communication unit and storage for data transmission and reception And a terminal control unit for allocating memory by referring to the memory allocation request message and transmitting the allocated memory address value to the storage device through the terminal communication unit.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 단말제어부는, 저장장치가 접속됨을 확인하거나 또는 프로그램이 실행됨을 확인하면, 주기적으로 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 것을 특징으로 한다.In a host terminal in a memory using system of a host terminal in a storage device of the present invention, the terminal controller checks periodically the available memory size of the storage device when the storage device is connected or the program is executed. Characterized in that the transmission of the message.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 단말제어부는, 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지를 참조하여 프로그램이 참조한 메모리 사이즈가 호스트 단말의 가용 메모리 사이즈 또는 호스트 단말에서 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 메모리를 할당하는 것을 특징으로 한다.In the storage terminal of the present invention, in the host terminal in the memory using system of the host terminal, when the terminal controller receives the memory allocation request message, the memory size referred to by the program with reference to the memory allocation request message is the available memory size of the host terminal. Alternatively, the host terminal may determine whether or not the available memory size is allocated to the program, and allocate the memory.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말은, 정보표현을 하는 출력부를 더 포함하고, 단말제어부는, 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지를 참조하여 프로그램이 요청한 메모리 사이즈가 호스트 단말의 가용 메모리 사이즈 또는 호스트 단말에서 프로그램에 할당된 가용 메모리 사이즈를 초과하는 경우, 출력부를 통해 메모리부족메시지를 출력하며, 단말통신부를 통해 저장장치로 에러메시지를 전송하는 것을 특징으로 한다.In the storage device of the present invention, the host terminal in the memory using system of the host terminal further includes an output unit for expressing information, and when the terminal controller receives the memory allocation request message, the program request is made by referring to the memory allocation request message. When the memory size exceeds the available memory size of the host terminal or the available memory size allocated to the program in the host terminal, the memory short message is output through the output unit, and an error message is transmitted to the storage device through the terminal communication unit. do.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 단말제어부는, 단말통신부를 통해 저장장치로부터 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 할당된 메모리를 해제하는 것을 특징으로 한다.In the storage device of the present invention, in the host terminal in the memory using system of the host terminal, the terminal control unit releases the allocated memory when the memory address value and the memory release request message allocated from the storage unit are received through the terminal communication unit. It is characterized by.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 한다.In a host terminal in a memory using system of a host terminal in the storage device of the present invention, the program is a separate execution target code block.

상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 저장장치가, 실행 중인 프로그램이 참조한 메모리 사이즈가 저장장치의 가용 메모리 사이즈를 초과함을 확인하는 확인단계, 저장장치가 호스트 단말로 메모리 할당 요청메시지를 전송하는 제1 전송단계 및 저장장치가 호스트 단말로부터 호스트 단말에 할당된 메모리 주소값을 수신하는 주소값 수신단계를 포함한다.Memory storage method of the host terminal in the storage device of the present invention for achieving the above object, the storage device, the step of confirming that the memory size referenced by the running program exceeds the available memory size of the storage device, storage device A first transmission step of transmitting a memory allocation request message to the host terminal, and an address value receiving step of the storage device receiving a memory address value allocated to the host terminal from the host terminal.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 확인단계는, 저장장치가, 프로그램이 참조한 메모리 사이즈가 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하는 것을 특징으로 한다.In the memory using method of the host terminal in the storage device of the present invention, the checking step is characterized in that the storage device confirms that the memory size referenced by the program exceeds the available memory size allocated to the program.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 주소값 수신단계 이후에, 저장장치가, 실행 중인 프로그램이 할당된 메모리 참조를 해제하거나 프로그램이 종료되는 경우, 호스트 단말로 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 제2 전송단계를 더 포함하는 것을 특징으로 한다.In the storage device of the present invention, the method of using a memory of the host terminal includes, after the address value receiving step, the storage device releases a memory reference to which the program being executed is allocated or terminates the memory address value allocated to the host terminal. And a second transmitting step of transmitting a memory release request message.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 제1 전송단계는, 저장장치가, 호스트 단말로부터 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 체크메시지에 대한 응답으로 메모리 할당 요청메시지를 전송하는 것을 특징으로 한다.In the method of using the memory of the host terminal in the storage device of the present invention, in the first transmission step, when the storage device receives a check message for checking the available memory size of the storage device from the host terminal, the memory is returned in response to the check message. And transmitting an allocation request message.

상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 호스트 단말이, 저장장치 내에서 프로그램 실행 중 저장장치로부터 메모리 할당 요청메시지를 수신하는 수신단계, 호스트 단말이 메모리 할당 요청메시지를 참조하여 메모리를 할당하는 할당단계 및 호스트 단말이 저장장치로 할당된 메모리 주소값을 전송하는 제1 전송단계를 포함한다.Memory storage method of the host terminal in the storage device of the present invention for achieving the above object, the receiving step of the host terminal receives a memory allocation request message from the storage device during execution of the program in the storage device, the host terminal memory allocation An allocating step of allocating memory with reference to the request message, and a first transmitting step of transmitting a memory address value allocated by the host terminal to the storage device.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 할당단계는, 호스트 단말이 메모리 할당 요청메시지를 참조하여 프로그램이 참조하는 메모리 사이즈가 호스트 단말의 가용 메모리 사이즈 또는 호스트 단말에서 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 메모리를 할당하는 것을 특징으로 한다.In the memory using method of the host terminal in the storage device of the present invention, in the allocating step, the memory size referenced by the program by the host terminal with reference to the memory allocation request message is allocated to the available memory size of the host terminal or the program in the host terminal. It is characterized by identifying that the available memory size or less and allocating memory.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 수신단계 이전에, 호스트 단말이, 저장장치가 접속됨을 확인하거나 또는 프로그램이 실행됨을 확인하면, 주기적으로 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 제2 전송단계를 더 포함하는 것을 특징으로 한다.In the storage device of the present invention, the method of using the memory of the host terminal, before the receiving step, checks that the host terminal periodically checks the available memory size of the storage device when the host terminal confirms that the storage device is connected or the program is executed. And a second transmitting step of transmitting a message.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 제1 전송단계 이후에, 호스트 단말이, 저장장치로부터 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 할당된 메모리를 해제하는 것을 특징으로 한다.In the storage device of the present invention, the method of using a memory of the host terminal, after the first transmission step, when the host terminal receives the memory address value and the memory release request message allocated from the storage device, the memory is released. It is done.

본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 한다.In the method of using the memory of the host terminal in the storage device of the present invention, the program is a separate execution target code block.

본 발명은 또한 전술한 저장장치에서 호스트 단말의 메모리 이용 방법을 구현하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공한다.The present invention also provides a computer-readable recording medium having recorded thereon a program for implementing a method of using a memory of the host terminal in the storage device described above.

본 발명에 의하면, 호스트 단말의 메모리를 사용하는 방법을 제공함으로써, 저장장치에서도 호스트 단말처럼 복잡도 높은 모듈이나 컨텐츠를 제공할 수 있으며, 다양한 서비스 컨텐츠 사업과 특화된 서비스들의 발전을 꾀할 수 있다. According to the present invention, by providing a method of using the memory of the host terminal, it is possible to provide a module or content with a high complexity as a host terminal in the storage device, and to develop various service contents businesses and specialized services.

또한, 저장장치 내에서 구현된 프로그램, 미디어, 이미지, 게임엔진 등은 저장장치 보안정책에 의해 보호됨으로써, 컨텐츠 보안을 향상 시킬 수 있는 이점이 있다. In addition, the programs, media, images, game engines, etc. implemented in the storage device are protected by the storage device security policy, thereby improving the content security.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 구성도이다.
도 2는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠의 데이터 구조를 보여주는 구성도이다.
도 3은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠의 구조를 나타내는 구성도이다.
도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠 구성 모듈을 나타내는 구성도이다.
도 5는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 도면이다.
도 6은 본 발명이 적용되는 디지털 저작권 관리 시스템의 분리 실행 기반 컨텐츠에서 보조 실행 기능부의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.
도 7은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 코드 복호화 기능부의 동작 흐름도이다.
도 8은 본 발명이 적용되는 디지털 저작권 관리 시스템의 저장 장치에서의 보조 실행 모듈의 구조를 나타낸 구성도이다.
도 9는 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 저장장치를 나타내는 구성도이다.
도 10은 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 호스트 단말을 나타내는 구성도이다.
도 11은 본 발명의 일 실시예에 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다.
1 is a block diagram of a digital rights management system to which the present invention is applied.
2 is a block diagram showing a data structure of executable content in a digital rights management system to which the present invention is applied.
3 is a block diagram showing the structure of the separated execution based content in the digital rights management system to which the present invention is applied.
4 is a block diagram illustrating a separation execution based content composition module in a digital rights management system to which the present invention is applied.
5 is a diagram illustrating a stub code to be inserted into the executable content in the digital rights management system to which the present invention is applied.
FIG. 6 is a diagram illustrating a configuration of an auxiliary execution function unit in a separation execution based content of a digital rights management system to which the present invention is applied and a separation execution process through the same.
7 is an operation flowchart of a code decoding function unit in a digital rights management system to which the present invention is applied.
8 is a block diagram showing the structure of an auxiliary execution module in a storage device of a digital rights management system to which the present invention is applied.
9 is a block diagram illustrating a storage device in a memory using system of a host terminal in a storage device according to an exemplary embodiment of the present invention.
10 is a block diagram illustrating a host terminal in a memory using system of the host terminal in a storage device according to an exemplary embodiment of the present invention.
11 is a flowchart illustrating a method of using a memory of a host terminal in a storage device in accordance with an embodiment of the present invention.
12 is a flowchart illustrating a method of using a memory of a host terminal in a storage device according to another exemplary embodiment of the present invention.

이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. However, in describing in detail the operating principle of the preferred embodiment of the present invention, if it is determined that the detailed description of the related known functions or configurations may unnecessarily obscure the subject matter of the present invention, the detailed description thereof will be omitted. In addition, the same reference numerals are used for parts having similar functions and functions throughout the drawings.

본 명세서에 있어서 어느 하나의 구성요소가 다른 구성요소로 데이터 또는 신호를 '전송'하는 경우에는, 직접 데이터 또는 신호를 전송할 수 있으며 적어도 하나의 또 다른 구성요소를 통하여 데이터 또는 신호를 전송할 수 있음을 의미한다.In the present specification, when one component 'transmits' data or a signal to another component, it may directly transmit data or a signal, and may transmit data or a signal through at least one other component. it means.

도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 구성도이다. 1 is a block diagram of a digital rights management system to which the present invention is applied.

도 1을 참조하면, 본 발명의 적용되는 디지털 저작권 관리 시스템은 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(30), DRM(Digital Rights Management) 서버(40), 호스트 단말(50) 및 호스트 단말(50)에 유무선 인터페이스를 매개로 연결된 저장장치(60)를 포함하여 구성된다. 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템은 호스트 단말(50) 및 저장장치(60)를 포함하여 구성된다. Referring to FIG. 1, the digital rights management system to which the present invention is applied includes a content providing terminal 10, a content registration server 30, a digital rights management server 40, a host terminal 50, and a host terminal ( 50) is configured to include a storage device 60 connected via a wired or wireless interface. In the storage device of the present invention, the memory using system of the host terminal includes the host terminal 50 and the storage device 60.

본 발명에 있어서, 실행형 컨텐츠(11)는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 실행되는 장치로 하여금 어떠한 기능을 할 수 있도록 복수의 명령어들을 포함하는 응용프로그램, 게임 프로그램, 각종 소프트웨어를 포함할 수 있다. In the present invention, the executable content 11 is a digital work that is stored and distributed in a digital form, and includes an application program, a game program, and a variety of software including a plurality of instructions to enable the executed device to perform any function. can do.

또한, '분리 실행'은 실행형 컨텐츠(11)가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(50)과 저장장치(60)의 연동을 통해 실행되는 것을 의미한다. 이러한 분리 실행을 구현하기 위해서, 호스트 단말(50)에는 코드 영역에서 선택된 코드 블록(이하 분리 실행 대상 코드 블록이라 함)이 제거된 분리 실행 기반 컨텐츠(37)가 저장되고, 저장장치(60)에는 실행형 컨텐츠(11)에서 제거되어 저장장치(60)에서 실행 가능하도록 변환한 분리 실행 대상 코드 블록(35)이 저장된 상태에서 호스트 단말(50)이 분리 실행 기반 컨텐츠(37)에서 제거된 부분(분리 실행 대상 코드 블록)에 대한 결과값을 저장장치(60)에 요청하여 반환 받는 형태로 이루어진다.In addition, "separate execution" means that the executable content 11 is executed through the interworking of two different devices, more specifically, the host terminal 50 and the storage device 60. In order to implement such separation execution, the host terminal 50 stores the separation execution base content 37 from which a selected code block (hereinafter referred to as a separation execution target code block) in the code area is removed, and the storage device 60 stores the separation execution base content 37. A portion of the host terminal 50 removed from the separated execution based content 37 in a state in which the separated execution target code block 35 removed from the executable content 11 and converted into executable in the storage device 60 is stored ( Request to the storage device 60 a result value for the separation execution target code block).

도 1에서, 네트워크(70)는 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(30), DRM 서버(40) 및 호스트 단말(50)간의 데이터 전송 및 정보 교환을 위한 일련의 데이터 송수신 동작을 수행한다. 네트워크(70)는 IP를 통하여 대용량 데이터의 송수신 서비스 및 끊김없는 데이터 서비스를 제공하는 IP망으로, IP를 기반으로 서로 다른 망을 통합한 IP망 구조인 ALL-IP망일 수 있다. 또한 네트워크(70)는 유선통신망, 이동통신망, WiBro(Wireless Broadband)망, HSDPA(High-Speed Downlink Packet Access)망, 위성통신망 또는 기타 널리 공지되었거나 향후 개발될 유무선 또는 이들의 결합망을 포함한다.In FIG. 1, the network 70 performs a series of data transmission / reception operations for data transmission and information exchange between the content providing terminal 10, the content registration server 30, the DRM server 40, and the host terminal 50. . The network 70 is an IP network providing a large data transmission / reception service and a seamless data service through IP, and may be an ALL-IP network, which is an IP network structure integrating different networks based on IP. In addition, the network 70 includes a wired communication network, a mobile communication network, a wireless broadband network (WiBro), a high-speed downlink packet access (HSDPA) network, a satellite communication network, or other well-known or future-developed wired or wireless networks or a combination thereof.

컨텐츠 제공 단말(10)은 컨텐츠 제공자가 운용하는 단말로서, 네트워크(70)를 통하여 컨텐츠 등록 서버(30)와 통신을 수행하고, 컨텐츠 제공자가 개발한 실행형 컨텐츠(11)를 저장하고 있으며, 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)를 전송한다.The content providing terminal 10 is a terminal operated by a content provider. The content providing terminal 10 communicates with the content registration server 30 through the network 70 and stores the executable content 11 developed by the content provider. The executable content 11 is transmitted to the registration server 30.

컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(30)로부터 내려 받은 프로파일링 및 분석 툴(33)을 실행하여 등록할 실행형 컨텐츠(11)에 대해 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)(이하, '프로파일링 및 분석'이라 함)을 통하여 분리 실행 될 실행형 컨텐츠(11)에서 프로파일 데이터(Profile Data)를 생성하고, 코드 블록 선택 규칙을 입력 받으며, 생성한 프로파일 데이터, 입력 받은 코드 블록 선택 규칙 및 분리 실행 될 실행형 컨텐츠(11)를 컨텐츠 등록 서버(30)로 전송한다. The content providing terminal 10 executes the profiling and analysis tool 33 downloaded from the content registration server 30 to perform dynamic profiling and static analysis on the executable content 11 to be registered. Profile data is generated from the executable content 11 to be separated and executed through the following (hereinafter, referred to as 'profiling and analysis'), the code block selection rule is input, the generated profile data and the received data are received. The code block selection rule and the executable content 11 to be separated are transmitted to the content registration server 30.

더 구체적으로, 프로파일링 및 분석 툴(33)은 사용자 우선 (User Preference) 정보를 읽어와 어떠한 부분을 중심으로 프로파일링할 지를 결정한 후, 해당하는 PIN 툴을 로드한다. 그 후, 대상 실행형 컨텐츠(11)를 메모리에 로드하고, PIN 툴을 삽입하여 실행시키고, 그 결과(프로파일 데이터)를 저장한다. More specifically, the profiling and analysis tool 33 reads user preference information, determines which part to profile, and loads the corresponding PIN tool. Thereafter, the target executable content 11 is loaded into the memory, the PIN tool is inserted and executed, and the result (profile data) is stored.

프로파일 데이터는, 필수적으로, 코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수(프로파일 중에 호출되는 횟수임), 코드 블록 크기, 및 플로팅 포인트 연산 유무를 포함한다. 이외에, 선택적으로, 코드 블록의 호스트 메모리 참조 회수, 코드 블록의 OS API를 호출하는 회수, 코드 블록의 실행 시간, 코드 블록에서 수행되는 전체 명령어(instruction) 개수, 코드 블록의 실행을 위해 전달되는 파라미터 개수 및 타입, 코드 블록의 실행 후에 반환되는 값의 종류가 포함될 수 있다.Profile data essentially includes a code block start address, a code block end address, a code block call count (which is the number of times called during a profile), a code block size, and the presence or absence of a floating point operation. In addition, optionally, the number of host memory references of a code block, the number of calls to an OS API of the code block, the execution time of the code block, the total number of instructions performed on the code block, the parameters passed for the execution of the code block. The number and type, and the type of the value returned after execution of the code block may be included.

코드 블록 선택 규칙은, 프로파일 데이터의 각 항목에 대해 부여되는 가중치를 설정하기 위한 것으로서, 가중치를 설정할 수 있는 사용자 우선 정보로는, 프로파일링에 의해 선택될 분리 실행 대상 코드 블록(35)에 대한 호출 빈도, 호출 위치, 호스트 메모리 참조 빈도, 및 OS API 참조 빈도 및 분리 실행 대상 코드 블록(35)이 저장될 저장장치(60)의 하드웨어 요소를 포함한다. The code block selection rule is for setting weights to be given for each item of profile data. The user priority information for which weights can be set is a call to the separated execution target code block 35 to be selected by profiling. Frequency, call location, host memory reference frequency, and OS API reference frequency, and the hardware element of storage 60 in which the separate execution target code block 35 is to be stored.

여기서, 호출 빈도는 실행형 컨텐츠(11)의 실행 중에서 분리 실행 대상 코드 블록(35)이 선정될 코드 블록의 호출 빈도 정도를 나타내는 것으로서, 보통 호출 빈도가 높을 수록 보안 효과를 높일 수 있는 반면에 저장장치(60)의 부하가 증가하여 실행형 컨텐츠(11)의 전체 실행 속도를 저하시킬 수 있다. 따라서, 실행형 컨텐츠(11)의 특성에 맞추어 적절한 호출 빈도를 설정하는 것이 바람직하다. 호출 위치는 분리 실행 대상 코드 블록(35)의 선택에 있어서 실행 초기에 호출되는 코드 블록을 선택할 것인지, 특정 기능 설정 시에 호출되는 코드 블록을 선택할 것인지를 나타낸다. 호스트 메모리 참조 빈도는 분리 실행 대상 코드 블록(35)으로 선택될 코드 블록이 호스트 단말(50)의 메모리를 참조하는 횟수를 나타내며, OS API 참조 빈도는 코드 블록에서 호스트 단말(50)의 OS API 참조 빈도를 나타낸다. 일반적으로, 메모리 참조 빈도 및 OS API 참조 빈도가 높을수록 호스트 단말(50)에 대한 의존성이 높다는 것을 의미하며, 메모리 참조 빈도 및 OS API 참조 빈도가 높은 코드 블록을 분리 실행 대상 코드 블록(35)으로 선정할 경우 보안 효율이 높아지지만, 그 반대로, 실행 속도는 저하되기 때문에, 원하는 보안 레벨에 따라서 메모리 참조 빈도 및 OS API 참조 빈도를 적절하게 설정하여야 한다. 저장장치(60)의 하드웨어 요소는, 예를 들어, 분리 실행 대상 코드 블록(35)이 저장되고 실행될, 저장장치(60)의 DRAM 양이나 NAND 플래쉬 크기, CPU 속도 등을 포함한다.Here, the call frequency indicates the degree of the call frequency of the code block to which the separate execution target code block 35 is selected among the executions of the executable content 11. In general, the higher the call frequency, the higher the security effect. The load on the device 60 may increase to reduce the overall execution speed of the executable content 11. Therefore, it is desirable to set an appropriate call frequency in accordance with the characteristics of the executable content 11. The call position indicates whether to select a code block to be called at the beginning of execution or to select a code block to be called at the time of setting a specific function in the selection of the separate execution target code block 35. The host memory reference frequency indicates the number of times the code block to be selected as the separated execution target code block 35 refers to the memory of the host terminal 50, and the OS API reference frequency refers to the OS API reference of the host terminal 50 in the code block. Frequency. In general, the higher the memory reference frequency and the OS API reference frequency, the higher the dependency on the host terminal 50. The code block having the high memory reference frequency and the OS API reference frequency is referred to as the separated execution code block 35. When selected, the security efficiency increases, but on the contrary, the execution speed decreases. Therefore, the memory reference frequency and the OS API reference frequency should be appropriately set according to the desired security level. The hardware elements of storage 60 include, for example, the amount of DRAM, NAND flash size, CPU speed, etc. of storage 60 in which separate execution target code block 35 is stored and executed.

이상과 같은 코드 블록 선택 규칙에 따라서 프로파일 데이터의 각 항목에 가중치를 달리 부여함으로써, 추출되는 분리 실행 대상 코드 블록(35)이 달라지며, 그에 따라서 보안 레벨이 달라진다. By differently weighting each item of the profile data according to the above code block selection rule, the extracted execution target code block 35 is different, and thus the security level is changed.

한편, 코드 블록 선택 규칙은 실행형 컨텐츠(11)의 성격에 따라서 설정할 수 있다. 예를 들어, 실행형 컨텐츠(11)가 게임 프로그램인 경우 실행 속도가 중요하므로, 호스트 메모리 참조 빈도 및 OS API 참조 빈도를 최소로 낮추는 것이 바람직하며, 이 경우, 호스트 메모리 및 OS API를 최소로 참조하는 베이식 코드 블록을 분리 실행 대상 코드 블록(35)으로 선택함으로써, 실행형 컨텐츠(11)의 실행 속도 저하를 최소화시킬 수 있다. 또한, 분리 실행 기반 컨텐츠(37)의 판매에 있어서, 저장장치(60)의 가격을 최대한 낮추고 싶은 경우, 저장장치(60)의 하드웨어 요소에 대한 가중치를 낮게 지정하면 된다. 이에 의하면, 저장장치(60)의 가격은 낮출 수 있는 반면, 실행 속도가 다소 낮아질 수 있음을 감안하여야 한다.Meanwhile, the code block selection rule may be set according to the nature of the executable content 11. For example, if the executable content 11 is a game program, execution speed is important, so it is desirable to reduce the host memory reference frequency and the OS API reference frequency to a minimum, in which case, the host memory and the OS API are referred to as a minimum. By selecting the basic code block to be the separated execution target code block 35, the execution speed of the executable content 11 can be minimized. In addition, in the sale of the separated execution based content 37, if the price of the storage device 60 is to be lowered as much as possible, the weight of the hardware element of the storage device 60 may be specified as low. According to this, while the price of the storage device 60 can be lowered, it should be taken into account that the execution speed can be somewhat lowered.

상술한 코드 블록 선택 규칙은, 그 설정 가능한 항목을 더 다양화시킬 수 있음은 물론이다.Of course, the above-described code block selection rules can further diversify the settable items.

컨텐츠 등록 서버(30)는 컨텐츠 제공 단말(10)로부터 수신한 실행형 컨텐츠(11) 정보를 웹페이지를 통해 호스트 단말(50)로 제공하고, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)을 생성하여 DRM서버(40)로 전송한다. 이때, 분리 실행 대상 코드 블록(35)은 애플릿(applet)과 같은 저장장치(60)용 프로그램에 포함되어 저장장치(60)로 제공될 수도 있다.The content registration server 30 provides the executable content 11 information received from the content providing terminal 10 to the host terminal 50 through a web page, and the separated execution based content 37 and the separated execution target code block. Create 35 and transmit it to the DRM server 40. In this case, the separated execution target code block 35 may be included in a program for the storage device 60 such as an applet and provided to the storage device 60.

한편, 실행형 컨텐츠(11)는 분리 실행 기반 컨텐츠(37)로 변환되며, 후술하는 DRM서버(40)는 분리 실행 기반 컨텐츠(37)를 암호화된 컨텐츠(41)로 패키징하여 호스트 단말(50)로 제공하므로, 사용자에게 제공되는 객체는 암호화된 컨텐츠(41)가 될 수 있으나, 이하 설명의 편의를 위해 사용자가 웹페이지를 통해 확인하고 구매 등을 결정하는 객체는 실행형 컨텐츠(11)라 한다.Meanwhile, the executable content 11 is converted into the separated execution based content 37, and the DRM server 40, which will be described later, packages the separated execution based content 37 into the encrypted content 41 and the host terminal 50. Since the object provided to the user may be the encrypted content 41, an object that the user checks through a web page and decides to purchase is referred to as the executable content 11 for convenience of description below. .

컨텐츠 등록 서버(30)는 분리 실행 기반 컨텐츠 구성 모듈(31)을 통해, 실행형 컨텐츠(11) 기반으로 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 생성하며 상세한 과정은 후술한다. The content registration server 30 generates the separation execution base content 37 and the separation execution target code block 35 based on the execution content 11 through the separation execution base content configuration module 31, and a detailed process will be described later. do.

컨텐츠 등록 서버(30)는 사용자가 웹페이지를 통해 실행형 컨텐츠(11)를 구매할 수 있도록 실행형 컨텐츠(11) 리스트와 해당 실행형 컨텐츠(11)에 대한 상세 정보를 제공한다. The content registration server 30 provides a list of the executable content 11 and detailed information about the corresponding executable content 11 so that a user can purchase the executable content 11 through a web page.

구체적으로, 호스트 단말(50)로부터 웹페이지 상에 나타난 실행형 컨텐츠(11)의 다운로드를 요청신호를 수신하면, 컨텐츠 등록 서버(30)는 해당 실행형 컨텐츠(11)의 DD(Download Descriptor)정보를 호스트 단말(50)로 전송한다. Specifically, upon receiving a request signal for downloading the executable content 11 displayed on the web page from the host terminal 50, the content registration server 30 downloads DD (Download Descriptor) information of the corresponding executable content 11. To the host terminal 50.

DD정보는 실행형 컨텐츠(11) 또는 권리객체(43)에 대한 간략 정보 예컨대 파일명, 파일사이즈, 파일제공업체, 해당 실행형 컨텐츠(11) 또는 권리객체(43)의 URL정보 등을 말하며, 실행형 컨텐츠(11) 또는 권리객체(43)의 다운로드 이전에 수신하여 버퍼에 임시 저장되고, 해당 실행형 컨텐츠(11) 또는 권리객체(43) 다운로드 완료 시 자동으로 삭제된다. The DD information refers to brief information about the executable content 11 or the rights object 43 such as a file name, file size, file provider, URL information of the corresponding executable content 11 or the rights object 43, and the like. It is received before downloading the type content 11 or the rights object 43 and temporarily stored in a buffer, and is automatically deleted when the execution type content 11 or the rights object 43 is downloaded.

또한, 컨텐츠 등록 서버(30)는 호스트 단말(50)로부터 선택한 실행형 컨텐츠(11)에 대한 권리객체(43)의 구매, 재구매 요청신호를 수신하면, DRM서버(40)로 구매 또는 재구매 트리거(Trigger)를 요청하고, DRM서버(40)로부터 해당 권리객체(43)에 대한 트리거 및 DD정보를 수신하면 호스트 단말(50)로 전송한다. 또한, 컨텐츠 등록 서버(30)는 호스트 단말(50)로부터 선택한 실행형 컨텐츠(11)에 대한 권리객체(43)의 환불 또는 양도 요청신호를 수신하면, DRM서버(40)로 환불 또는 양도 트리거를 요청하고 DRM서버(40)로부터 해당 트리거를 수신하면 호스트 단말(50)로 전송한다.In addition, when the content registration server 30 receives a purchase and repurchase request signal of the rights object 43 for the selected executable content 11 from the host terminal 50, the content registration server 30 triggers a purchase or repurchase to the DRM server 40 ( Trigger and, upon receiving the trigger and DD information for the rights object 43 from the DRM server 40, transmits to the host terminal 50. In addition, when the content registration server 30 receives a refund or transfer request signal of the rights object 43 for the selected executable content 11 from the host terminal 50, the content registration server 30 triggers a refund or transfer trigger to the DRM server 40. When the request is received and the corresponding trigger is received from the DRM server 40, the host device 50 transmits the trigger.

트리거(Trigger)는 DRM서버(40)와 호스트 단말(50) 간의 권리객체(43)의 구매 또는 재구매, 환불 또는 양도, 저장장치(60)의 등록 등을 위한 프로토콜 수행을 시작 시키는 메시지이다. The trigger is a message for starting the protocol execution for the purchase or repurchase, refund or transfer of the rights object 43 between the DRM server 40 and the host terminal 50, and the registration of the storage device 60.

DRM서버(40)는 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 기반 컨텐츠(37)를 패키징하며, 권리객체(43)를 생성, 관리, 발행하고 발행한 권리객체(43)에 대한 내역을 저장하는 서버이다. The DRM server 40 packages the separated execution based content 37 received from the content registration server 30, and stores the details of the rights object 43 that created, managed, issued and issued the rights object 43. Server.

여기서, 권리객체(43)는 사용자가 구매한 실행형 컨텐츠(11)에 대해 실행형 컨텐츠(11)와 사용자 사이 구매 관계 및 사용 권한을 명시하고 있다. Here, the rights object 43 specifies a purchase relation and usage rights between the executable content 11 and the user with respect to the executable content 11 purchased by the user.

구체적으로, DRM서버(40)는 CEK(Contents Encryption key)를 생성하고, 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 기반 컨텐츠(37)를 OMA(Open Mobile Alliance), DMP(Digital Media Project), MPEG(Moving Picture Experts Group)-21, ISMA(Internet Streaming Media Alliance) 등 DRM 표준화 단체에서 제시된 기술규격에 따라 암호화된 컨텐츠(41)로 패키징한다. 이때, DRM서버(40)는 패키징 시 사용되는 CEK와 같이 암호화된 컨텐츠(41)를 복호화할 수 있는 복호화키를 권리객체(43)에 포함시켜 생성한다. 이때, 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 대상 코드 블록(35)을 권리객체(43)에 포함시켜 생성할 수 있다. Specifically, the DRM server 40 generates a Contents Encryption Key (CEK), and separates execution based content 37 received from the content registration server 30 from an Open Mobile Alliance (OMA), a Digital Media Project (DMP), The package is packaged into encrypted content 41 according to technical standards set forth by DRM standardization organizations such as Moving Picture Experts Group (MPEG) -21 and Internet Streaming Media Alliance (ISMA). At this time, the DRM server 40 generates the decryption key included in the rights object 43 for decrypting the encrypted content 41, such as CEK used during packaging. In this case, the separation execution target code block 35 received from the content registration server 30 may be included in the rights object 43 and generated.

즉, 암호화된 컨텐츠(41)는 원본인 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 스터브 코드로 대체한 분리 실행 기반 컨텐츠(37)를 패키징한 결과물이다. In other words, the encrypted content 41 is a result of packaging the separated execution based content 37 in which the original executable content 11 replaces the separated execution target code block 35 with the stub code.

여기서, CEK를 생성하며 암호화된 컨텐츠(41)로 패키징할 때, AES(Advanced Encryption Standard), RSA(Rivest-Shamir-Adelman), ECC(Elliptic Curve Cryptosystem), 시드(SEED) 블록 암호 알고리즘, DES(Data Encryption Standard) 등 암호화 알고리즘이 사용될 수 있으나, 이에 한정되는 것은 아니다. Here, when generating a CEK and packaging it with encrypted content 41, Advanced Encryption Standard (AES), Rivet-Shamir-Adelman (RSA), Elliptic Curve Cryptosystem (ECC), SEED block encryption algorithm, and DES (DES) Encryption algorithms such as Data Encryption Standard) may be used, but are not limited thereto.

또한, DRM서버(40)는 컨텐츠 등록 서버(30)로부터 사용자가 구매, 재구매 하고자 하는 권리객체(43)에 대한 구매 또는 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거 및 DD정보를 생성하여 컨텐츠 등록 서버(30)로 전송하고, 컨텐츠 등록 서버(30)로부터 사용자가 환불 또는 양도 하고자 하는 권리객체(43)에 대한 환불 또는 양도 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거를 생성하여 컨텐츠 등록 서버(30)로 전송한다.In addition, the DRM server 40 generates a trigger and DD information for the rights object 43 when the user requests a purchase or trigger for the rights object 43 to be purchased or repurchased from the content registration server 30. When a request is made to the content registration server 30 and a refund or transfer trigger for the rights object 43 to be refunded or transferred from the content registration server 30 is requested, the trigger for the rights object 43 is triggered. It generates and transmits to the content registration server 30.

이어, 호스트 단말(50)로부터 컨텐츠 다운로드를 요청 받으면 해당 암호화된 컨텐츠(41)를 전송하고, 권리객체(43)의 구매 또는 재구매 요청을 받으면 해당 권리객체(43)를 전송하며, 권리객체(43)의 환불 또는 양도 요청을 받으면 저장장치(60)에 저장된 권리객체(43)의 삭제를 요청한다. Subsequently, when the content download request is received from the host terminal 50, the corresponding encrypted content 41 is transmitted. When the request for purchase or repurchase of the rights object 43 is received, the rights object 43 is transmitted, and the rights object 43 is transmitted. When request for a refund or transfer of) is requested to delete the rights object 43 stored in the storage device (60).

호스트 단말(50)은 실행형 컨텐츠(11)의 실행이 가능한 독립된 CPU(Central Processing Unit)를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션, 키오스크(Kiosk), ATM(Automated Teller Machine), PDA(Personal Digital Assistants) 등을 통칭하며, 다수의 사용자들에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(50)은 네트워크(70)를 통하여 컨텐츠 등록 서버(30) 및 DRM서버(40)와 통신을 수행하고, 유무선 인터페이스를 매개로 연결된 저장장치(60)와 통신을 수행한다. The host terminal 50 may be a computing device having an independent central processing unit (CPU) capable of executing the executable content 11, such as a PC, a laptop, a workstation, a kiosk, an automated teller machine, an PDA, and a PDA. Personal Digital Assistants) and the like, and include a public computer that is accessible by a large number of users. The host terminal 50 communicates with the content registration server 30 and the DRM server 40 through the network 70, and communicates with the storage device 60 connected via a wired or wireless interface.

여기서 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신 방식과 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband), NFC(Near Field Communication), 와이브로(Wibro) 등을 이용한 근거리 무선통신 방식이 사용될 수 있다.Here, the wired / wireless interface is a wired communication method using USB, USB2, Serial / Parallel Port, Ethernet, TCP / IP, communication cable, Bluetooth, Zigbee, Rubee, Infrared; A short range wireless communication method using Data Association, Ultra Wide Broadband (UWB), Near Field Communication (NFC), Wibro, or the like may be used.

구체적으로, 호스트 단말(50)은 컨텐츠 등록 서버(30)가 제공하는 웹페이지에 접속하여, 웹페이지 상에 나타난 실행형 컨텐츠(11)를 선택하고 컨텐츠 등록 서버(30)로 다운로드를 요청한다. 이어, 컨텐츠 등록 서버(30)로부터 해당 실행형 컨텐츠(11)의 DD정보를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)를 수신한다.Specifically, the host terminal 50 accesses a web page provided by the content registration server 30, selects the executable content 11 displayed on the web page, and requests a download from the content registration server 30. Subsequently, when the DD information of the executable content 11 is received from the content registration server 30, the encrypted content 41 for the executable content 11 is obtained by accessing the DRM server 40 using the DD information. Receive.

또한, 사용자가 권리객체(43)를 구매, 재구매 하고자 할 때, 호스트 단말(50)은 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)에 대한 권리객체(43)의 구매 또는 재구매 요청신호를 전송한다. 이어서, 컨텐츠 등록 서버(30)로부터 해당 권리객체(43)에 대한 트리거(Trigger) 및 DD정보를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 해당 권리객체(43)를 요청한다. 이후, 수신한 권리객체(43)를 유무선 인터페이스를 매개로 연결된 저장장치(60)로 전달한다. 덧붙여, 사용자가 권리객체(43)를 구매, 재구매 하고자 할 때, 호스트 단말(50)은 컨텐츠 등록 서버(30)로 권리객체(43)에 대한 환불 또는 양도 요청신호를 전송한다. 이어서, 컨텐츠 등록 서버(30)로부터 해당 권리객체(43)에 대한 트리거(Trigger)를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 환불 또는 양도를 요청한다. In addition, when the user wants to purchase and repurchase the rights object 43, the host terminal 50 transmits a request for purchase or repurchase of the rights object 43 to the executable content 11 to the content registration server 30. send. Subsequently, when the trigger and DD information for the rights object 43 are received from the content registration server 30, the rights object 43 is requested by accessing the DRM server 40 using the trigger. Thereafter, the received right object 43 is transmitted to the storage device 60 connected through the wired / wireless interface. In addition, when the user wants to purchase and repurchase the rights object 43, the host terminal 50 transmits a refund or transfer request signal for the rights object 43 to the content registration server 30. Subsequently, when a trigger for the rights object 43 is received from the content registration server 30, the trigger is connected to the DRM server 40 to request a refund or transfer.

예를 들어, 호스트 단말(50)의 사용자는 사용하고자 하는 실행형 컨텐츠(11)에 대한 권리객체(43)를 이미 보유하고 있어 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)만을 필요로 할 수 있으며, 처음 실행형 컨텐츠(11)를 구매하는 경우나 권리객체(43)가 만료되어 재구매하는 경우와 같이 해당 실행형 컨텐츠(11)에 대한 권리객체(43)만을 필요로 할 수 있고, 또한 암호화된 컨텐츠(41) 및 권리객체(43) 모두를 필요로 할 수 있다.For example, the user of the host terminal 50 already has the rights object 43 for the executable content 11 to be used, so only the encrypted content 41 for the executable content 11 is needed. It may be necessary, such as when purchasing the first executable content (11) or when the right object 43 expires and repurchases, only the rights object 43 for the executable content (11) may be needed. It may also require both encrypted content 41 and rights object 43.

또한, 호스트 단말(50)은 암호화된 컨텐츠(41) 실행을 시작하면, 저장장치(60)에 권리객체(43)의 저장 여부를 확인한다. 저장장치(60)에 권리객체(43)가 저장되어 있는 경우, 저장장치(60)로부터 권리객체(43)에 포함된 복호화키를 요청하여 암호화된 컨텐츠(41)를 복호화하게 된다. 반면, 저장장치(60)에 권리객체(43)가 저장되어 있지 않은 경우 컨텐츠 등록 서버(30)로 구매 또는 재구매 요청신호를 전송할 수 있다. 또한, 저장장치(60)에 분리 실행 대상 코드 블록(35)이 저장되어 있는 경우, 호스트 단말(50)은 복호화키를 이용하여 암호화된 컨텐츠(41)를 분리 실행 기반 컨텐츠(37)로 복호화한 후, 유무선 인터페이스를 통해 연결된 저장 장치(60)와 연동하여 암호화된 컨텐츠(41)에 대한 분리 실행을 수행할 수 있다. In addition, when the host terminal 50 starts to execute the encrypted content 41, the host terminal 50 checks whether the right object 43 is stored in the storage device 60. When the rights object 43 is stored in the storage device 60, the decryption key included in the rights object 43 is requested from the storage device 60 to decrypt the encrypted content 41. On the other hand, if the rights object 43 is not stored in the storage device 60, the content registration server 30 may transmit a purchase or repurchase request signal. In addition, when the separation execution target code block 35 is stored in the storage device 60, the host terminal 50 decrypts the encrypted content 41 using the decryption key as the separation execution based content 37. Thereafter, in association with the storage device 60 connected through the wired / wireless interface, separation of the encrypted content 41 may be performed.

저장장치(60)는 프로세서를 내장하고 있는 각종 휴대식 장치, 예컨대 USB 메모리, 플래시 메모리 카드, 이에 상응하는 각종 이동식, 휴대식 저장매체(예컨대, SD(Secure Digital) 메모리 카드, microSD 메모리 카드, ISO 7816 표준의 휴대형 저장장치 등)를 통칭한다. 저장장치(60)는 유무선 인터페이스를 매개로 호스트 단말(50)과 연결되며, 호스트 단말(50)에 설치된 암호화된 컨텐츠(41)에 대한 권리객체(43)를 저장한다. The storage device 60 may be any of a variety of portable devices incorporating a processor, such as a USB memory, a flash memory card, and various portable and portable storage media (e.g., a Secure Digital (SD) memory card, a microSD memory card, an ISO 7816 standard). Portable storage devices). The storage device 60 is connected to the host terminal 50 through a wired or wireless interface, and stores the rights object 43 for the encrypted content 41 installed in the host terminal 50.

상술한 바와 같이, 권리객체(43)에는 암호화된 컨텐츠(41)를 복호화 할 수 있는 복호화키를 포함하며, 이때 분리 실행 기반 컨텐츠(37)에 대한 분리 실행 대상 코드 블록(35)을 포함할 수 있다. 이때, 저장장치(60)는 호스트 단말(50)의 요청에 따라 분리 실행 대상 코드 블록(35)에 대한 연산을 수행하여 결과값을 호스트 단말(50)로 반환한다.As described above, the rights object 43 may include a decryption key for decrypting the encrypted content 41, and may include a separate execution target code block 35 for the separated execution based content 37. have. At this time, the storage device 60 performs an operation on the separation execution target code block 35 at the request of the host terminal 50 and returns a result value to the host terminal 50.

상술한 분리 실행 기반 컨텐츠(37)에 대한 기본 개념을 도 2 및 도 3을 참조하여 설명한다.The basic concept of the above-described separation execution based content 37 will be described with reference to FIGS. 2 and 3.

도 2는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠의 데이터 구조를 보여주는 구성도이다. 2 is a block diagram showing a data structure of executable content in a digital rights management system to which the present invention is applied.

도 2을 참조하면, 본 발명이 적용되는 실행형 컨텐츠(11)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 복수의 파일을 포함하는 실행형 컨텐츠(11)는 코드 영역(21)과 데이터 영역(23)으로 나눌 수 있으며, 실제 실행형 컨텐츠(11)는 코드 영역(21)과 데이터 영역(23)이 서로 섞여 있다. 코드 영역(21)은 복수의 베이식 블록(25; basic block)을 포함하며, 분리 실행 대상 코드 블록(35)의 추출을 위하여 선정되는 복수의 베이식 블록 그룹(27)을 포함한다.Referring to FIG. 2, the executable content 11 to which the present invention is applied may include a plurality of files, for example, a file such as an API provided by an operating system, an API provided by a developer, or a dynamic linking library (DLL). Include. The executable content 11 including the plurality of files may be divided into a code region 21 and a data region 23, and the actual executable content 11 may include a code region 21 and a data region 23. Are mixed with each other. The code area 21 includes a plurality of basic blocks 25, and includes a plurality of basic block groups 27 selected for extraction of the separated execution target code block 35.

여기서, 베이식 블록(25)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(25)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.Here, the basic block 25 is a sequence of instructions having attributes of a single input and a single output, and a code block having an attribute that does not allow entry from the outside to the inside. Can be defined as That is, the basic block 25 means a continuous sentence (a collection of codes) that is always executed all the time from the beginning to the end, and is a group of statements in which execution is not stopped due to flow control.

도 3은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠의 구조를 나타내는 구성도이다. 3 is a block diagram showing the structure of the separated execution based content in the digital rights management system to which the present invention is applied.

도 1 및 도 3을 참조하면, 본 발명이 적용되는 분리 실행 기반 컨텐츠(37)는 하나 이상의 분리 실행 대상 코드 블록(35)을 대신하여 스터브 코드(26; stub code)가 삽입된 코드 영역(21a)과, 데이터 영역(23)을 포함한다. 이때 스터브 코드(26)는 분리 실행을 위해 추출된 분리 실행 대상 코드 블록(35)을 대신하여 삽입된 코드로서, 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 연결한다. 구체적으로 스터브 코드(26)는 실행형 컨텐츠(11)에 대한 분리 실행을 수행할 때, 분리 실행 대상 코드 블록(37)을 호출하고, 분리 실행 대상 코드 블록(37)에 대한 연산을 수행하여 산출된 결과값을 반환 받는다. 1 and 3, the detached execution based content 37 to which the present invention is applied includes a code region 21a in which stub codes are inserted in place of one or more detached execution target code blocks 35. ) And a data area 23. In this case, the stub code 26 is inserted in place of the separated execution target code block 35 extracted for the separation execution and connects the separation execution based content 37 and the separation execution target code block 35. Specifically, when the stub code 26 performs a separate execution on the executable content 11, the stub code 26 calls the separate execution target code block 37 and calculates by performing an operation on the separated execution target code block 37. Return the result.

분리 실행 대상 코드 블록(35)은 실행형 컨텐츠(11)에 대한 프로파일링 및 분석을 통하여 실행형 컨텐츠(11)의 코드 영역(21)에서 추출된 복수의 베이식 블록 그룹(27)을 포함한다. 바람직하게, 분리 실행 대상 코드 블록(35)은 분리 실행 대상 코드 블록(35)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(25) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(35)의 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)이다. The separated execution target code block 35 includes a plurality of basic block groups 27 extracted from the code area 21 of the executable content 11 through profiling and analysis of the executable content 11. Preferably, the separate execution target code block 35 allows the entry of the control signal through the entry point of the separation execution target code block 35 and the movement of the control signal between the basic block 25, but the separation execution target. The basic block group 27 includes a plurality of basic blocks 25 associated with each other without entry of a control signal to the basic block 25 except for the start point of the code block 35.

이와 달리 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(35)을 추출한 후 삽입되는 스터브 코드(26)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(26)는 해당 제어 신호에 대한 처리를 수행하지 못하여 결국 실행형 컨텐츠(11)의 실행이 중지되거나 에러가 발생될 수 있다. On the contrary, when the basic block group 27 in which the control signal enters the basic block 25 except for the starting point is selected as the separate execution target code block 35, the corresponding separation execution code block 35 is extracted. The control signal may enter the middle of the inserted stub code 26, not at the beginning. In this case, the stub code 26 may not process the control signal, and thus execution of the executable content 11 may not be performed. It may be stopped or an error may occur.

상술한 분리 실행 대상 코드 블록은 다음과 같이 추출될 수 있다.The above-described separated execution target code block may be extracted as follows.

먼저, 분리 실행할 실행형 컨텐츠(11)의 코드 영역(21)에 대한 동적 프로파일링 및 정적 분석을 통하여 복수의 베이식 블록 그룹(27)을 선정한다. 복수의 베이식 블록 그룹(27)의 선정은, 분리 실행할 실행형 컨텐츠(11)의 실행을 시작하여, 런-타임 동안 코드 영역(21)에 대한 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 분석 범위를 확장한 동적 프로파일링을 통해 코드 영역(21)에 대한 정적 분석을 수행함에 의해 이루어진다. 기초 정보는, 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소이다. 이러한 기초 정보 중에서 실행형 컨텐츠(11)의 공개된 API와 관련된 기초 정보를 제거하고, 공개된 API와 관련된 기초 정보가 제거된 기초 정보를 기반으로 실행형 컨텐츠(11)의 코드 영역(21)에 대한 정적 분석을 수행함으로써, 분석 범위를 확장할 수 있다. 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 분석 범위를 확장하여 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(27)을 선정할 수 있다.First, a plurality of basic block groups 27 are selected through dynamic profiling and static analysis of the code area 21 of the executable content 11 to be separated. The selection of the plurality of basic block groups 27 starts execution of the executable content 11 to be separated, collects basic information about the code area 21 during run-time, and uses the collected basic information. This is accomplished by performing a static analysis of the code region 21 through dynamic profiling that extends the scope of analysis. The basic information is at least one indirect address among a branch address, a jump address, a call address, and an indirect address of the RET. From the basic information, the basic information related to the published API of the executable content 11 is removed, and based on the basic information from which the basic information related to the published API is removed, the code region 21 of the executable content 11 is removed. By performing a static analysis of the analysis, the scope of analysis can be extended. By substituting indirect addresses from among the collected basic information on the control flow, more basic block groups 27 can be selected as compared to performing dynamic profiling or static analysis by extending the analysis range alone.

더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.In addition, when a control signal entering the basic block group 27 is generated among the plurality of selected basic block groups 27, the basic block group 27 is divided and redefined based on the instruction address of the control signal. do. At this time, the basic block group 27 to be redefined is redefined as a first basic block group before and a second basic block group after including the command address of the control signal based on the command address of the control signal.

이와 같은 재정의 과정을 반복함으로써, 최종적으로 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)을 정의한다.By repeating this redefinition process, a basic block group 27 including a plurality of basic blocks 25 having properties of a single input and a single output and an attribute which does not allow entry from outside to inside is finally obtained. define.

이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(35)을 선정하여, 분리 실행 대상 코드 블록(35)을 코드 영역(21)에서 분리하고, 분리 실행 대상 코드 블록(35) 대신에 스터브 코드(26)를 삽입한다. Subsequently, the separation execution target code block 35 is selected from the plurality of basic block groups 27, and the separation execution target code block 35 is separated from the code area 21, instead of the separation execution target code block 35. Insert the stub cord 26.

이때 분리 실행 대상 코드 블록(35)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(11)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹(27)을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(35)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선출한다.In this case, the separate execution target code block 35 may select a basic block group 27 on a critical path of the executable content 11 among the plurality of basic block groups 27. In addition, the separate execution target code block 35 may be selected from the plurality of basic block groups 27 in consideration of the number of calls, the size, and the execution time. For example, a basic block group 27 having a large number of calls, a small size, and a short execution time is selected as the separate execution target code block 35.

이에 따르면, 실행형 컨텐츠(11)에 있어서, 중요 경로 상에 존재하고, 콜 횟수가 많고 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 보안을 위한 분리 실행 대상 코드 블록(35)으로 선정하여, 분리 실행 대상 코드 블록(35)이 실행형 컨텐츠(11)에서 분리 실행되도록 함으로써, 실행형 컨텐츠(11)의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.According to this, in the executable content 11, the basic block group 27 existing on the critical path, having a large number of calls, a small size, and a short execution time is separated into the target block of execution code 35 for security. By selecting and separating the execution target code block 35 from the executable content 11, the security performance related to copy protection of the executable content 11 can be improved.

또한, 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역(21)의 기초 정보를 이용한 정적 분석(static analysis)을 수행하여 베이식 블록 그룹(27)을 추출함으로써, 실행형 컨텐츠(11)의 코드 영역(21)의 분석 범위를 확장하여 베이식 블록 그룹(27)의 추출율을 향상시킬 수 있다.In addition, by performing a static analysis using the basic information of the code area 21 collected through dynamic profiling to extract the basic block group 27, the code of the executable content 11 The extraction range of the basic block group 27 may be improved by extending the analysis range of the region 21.

또한, 한 번 정의된 베이식 블록 그룹(27)에 대해서 재정의할 수 있는 유연성을 제공함으로써, 분리 실행 대상 코드 블록(35)의 후보가 될 수 있는 단일 입력(single input) 및 단일 출력(single output)을 갖는 베이식 블록 그룹(27)을 생성할 수 있고, 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹(27)이 분리 실행 대상 코드 블록(35)으로 선출되는 것을 억제할 수 있으며, 그 결과, 분리 실행 대상 코드 블록(35)을 분리하여 실행하는 중의 오류 발생을 억제할 수 있다.In addition, by providing the flexibility to redefine the once defined basic block group 27, a single input and a single output that can be candidates for the separate execution target code block 35 It is possible to generate a basic block group 27 having an inadequate basic block group 27 with the entry of the control signal to the inside except for the entry point (entry point) is selected as a separate execution target code block 35 As a result, it is possible to suppress the occurrence of an error while separating and executing the separated execution target code block 35.

도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠 구성 모듈을 나타내는 블록 구성도이다. 도 5는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 도면이다. 4 is a block diagram illustrating a separation execution based content composition module in a digital rights management system to which the present invention is applied. 5 is a diagram illustrating a stub code to be inserted into the executable content in the digital rights management system to which the present invention is applied.

이하에서 설명할 분리 실행 기반 컨텐츠 구성 모듈(31)는, 도 1에 보인 DRM 시스템에 있어서, 호스트 단말(50)과 저장 장치(50)에 각각 저장될 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)를 생성하기 위한 모듈이다. In the DRM system illustrated in FIG. 1, the separation execution based content configuration module 31 to be described below includes a separation execution based content 37 and a separation execution target to be stored in the host terminal 50 and the storage device 50, respectively. The module for generating the code block 35.

도 1, 도 4 및 도 5를 참조하면, 분리 실행 기반 컨텐츠 구성 모듈(31)은, 모듈 제어부(311)와, 코드 분석부(313)와, 코드 조작부(315)와, 코드 변환부(317) 및 코드 암호화부(319)를 포함한다. 1, 4, and 5, the separation execution based content composition module 31 includes a module control unit 311, a code analysis unit 313, a code operation unit 315, and a code conversion unit 317. And a code encryption unit 319.

모듈 제어부(311)는 분리 실행 기반 컨텐츠(37)의 생성을 위한 전체적인 과정을 제어한다. 즉, 입력된 분리 실행될 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 선택하여, 선택한 분리 실행 대상 코드 블록(35)을 실행형 컨텐츠(11)에서 분리하고, 분리 실행 대상 코드 블록(35)의 분리 실행이 가능하도록 실행형 컨텐츠(11)를 변환하며, 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 처리 가능한 형태로 변환하고, 실행형 컨텐츠(11)의 코드 영역에서 초기 코드 블록을 추출해 초기 코드 블록을 암호화하여 실행형 컨텐츠(11)의 실행시 암호화된 초기 코드 블록을 복호화하여 실행하도록 코드 분석부(313)와 코드 조작부(315)와 코드 변환부(317) 및 코드 암호화부(319)를 제어한다.The module controller 311 controls the overall process for generating the separated execution based content 37. That is, the separated execution target code block 35 is selected from the inputted executable content 11 to be separated, and the selected separated execution target code block 35 is separated from the executable content 11, and the separated execution target code block is executed. Converts the executable content 11 to enable separate execution of the 35, converts the separated executable execution code block 35 into a form that can be processed in the storage device 60, The code analyzing unit 313, the code manipulating unit 315, and the code converting unit extract the initial code block from the code area and encrypt the initial code block to decrypt and execute the encrypted initial code block when executing the executable content 11. 317 and the code encryption unit 319 is controlled.

코드 분석부(313)는, 실행형 컨텐츠(11)의 코드 영역을 분석하여, 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다. 더 구체적으로, 코드 분석부(313)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행될 컨텐츠, 컨텐츠에 대한 프로파일 데이터(Profile Data) 및 코드 블록 선택 규칙을 입력 받아, 프로파일 데이터 및 코드 블록 선택 규칙을 기반으로 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록(35)을 결정한다.The code analyzer 313 analyzes a code region of the executable content 11 and selects one or more separated execution target code blocks 35 from the code region. More specifically, the code analyzing unit 313 receives the content to be separated, the profile data for the content, and the code block selection rule received from the content providing terminal 10 to receive the profile data and the code block selection rule. Based on the determination, the code block 35 to be separated is executed in the code area of the content.

구체적으로, 코드 분석부는 프로파일 데이터 및 분리 실행 대상 코드 블록(35)의 선택 규칙을 내부 데이터 포맷으로 변환한다. 예를 들어, 프로파일 데이터 및 규칙은 XML 형태로 구현될 수 있는데, 이 경우, 프로파일 데이터 및 분리 실행 대상 코드 블록의 선택 규칙은 XML 형태에서 내부 데이터 포맷으로 변환하는 것으로서, XML 파서가 된다. 이어, 프로파일 데이터 및 코드 블록 선택 규칙을 로드하며, 로드된 프로파일 데이터 및 코드 블록 선택 규칙에 근거하여, 실행형 컨텐츠(11)의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다.Specifically, the code analyzer converts the selection rule of the profile data and the separation target code block 35 into an internal data format. For example, the profile data and rules may be implemented in XML form, in which case the selection rule of the profile data and the separated execution code block is an XML parser that converts the XML data into an internal data format. Then, the profile data and code block selection rules are loaded, and one or more separate execution target code blocks 35 are selected in the code area of the executable content 11 based on the loaded profile data and code block selection rules.

또한, 코드 분석부(313)는 분리 실행 대상 코드 블록(35)의 선택 시 기준이 될 코드 블록 선택 규칙을 갱신한다. 코드 블록 선택 규칙은 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 의미하는 것으로서, 앞서 설명한 바와 같이, 프로파일 데이터의 각 항목 별 가중치로 나타낼 수 있다. 그런데, 이러한 코드 블록 선택 규칙은, 컨텐츠의 종류, 크기 등에 따라서 변경될 가능성이 크기 때문에 선택된 분리 실행 대상 코드 블록(35)에 대한 검증 결과를 피드백 받아 분리 실행 대상 코드 블록의 선택 규칙을 지속적으로 갱신한다. 예를 들어, 선택된 분리 실행 대상 코드 블록(35)에 대한 테스트를 진행하여 실행 속도 등의 이슈가 발생하면, 이를 기준으로 분리 실행 대상 코드 블록(35)의 선택 규칙의 세부적인 가중치를 변경한다. In addition, the code analyzing unit 313 updates a code block selection rule, which becomes a reference when the separation target code block 35 is selected. The code block selection rule means to select a code block to be separated with the largest weight among the information of the profile data. As described above, the code block selection rule may be represented by a weight for each item of the profile data. However, since the code block selection rule is highly likely to change according to the type, size, etc. of the content, the rule for selecting the code block to be separated is continuously updated by receiving a verification result of the selected code to be separated. do. For example, if an issue such as execution speed occurs by performing a test on the selected separated execution target code block 35, the detailed weight of the selection rule of the separated execution target code block 35 is changed based on this.

코드 조작부(315)는, 코드 분석부(313)에서 선택된 분리 실행 대상 코드 블록(35)과 분리 실행 대상 코드 블록이 분리된 분리 실행 기반 컨텐츠(37)를 연결하도록 실행형 컨텐츠(11)를 변환한다. The code manipulation unit 315 converts the executable content 11 to connect the separated execution target code block 35 selected by the code analysis unit 313 and the separated execution based content 37 in which the separated execution target code block is separated. do.

더 구체적으로 코드 조작부(315)는, 분리된 분리 실행 대상 코드 블록(35)과의 상호 연동을 위한 보조 실행 기능부를 생성하고, 분리 실행 대상 코드 블록(35)이 맨 앞에서 보조 실행 기능부로 점프한 후 보조 실행 기능부의 실행이 완료되면 분리 실행 대상 코드 블록(35) 다음으로 실행되어야 할 위치로 점프하는 스터브 코드를 생성하여 분리 실행 대상 코드 블록(35)의 위치에 삽입한다. More specifically, the code operation unit 315 generates an auxiliary execution function unit for interworking with the separated separated execution target code block 35, and the separated execution target code block 35 jumps to the auxiliary execution function unit from the front. After the execution of the auxiliary execution function unit is completed, the stub code that jumps to the position to be executed next to the separation execution target code block 35 is generated and inserted into the position of the separation execution target code block 35.

여기서, 보조 실행 기능부는 스터브 코드로부터 전달되는 파라미터, 즉, 스택과 레지스터의 정보를 패킹하여 분리 실행 대상 코드 블록(35)을 호출하고, 호출이 종료되면 분리 실행 대상 코드 블록(35)의 결과값으로 스택과 레지스터의 정보를 리스토어한다.Here, the auxiliary execution function calls the separate execution target code block 35 by packing the parameters passed from the stub code, that is, the information of the stack and the register, and when the call ends, the result value of the separate execution target code block 35. Restore the stack and register information.

예를 들어, 저장 장치(60)에 저장되는 분리 실행 대상 코드 블록(35)은 저장 장치(60)의 플랫폼에 기반한 Java 바이트코드, 더 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현되는데, 이때 보조 실행 기능부는 상술한 Java 애플릿을 실행하는 Native launcher로 구현된다. 더하여, 보조 실행 기능부는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현된다. 이러한 보조 실행 기능부에 대해서는 다음에 더 구체적으로 설명하기로 한다.For example, the separate executable code block 35 stored in the storage device 60 is implemented as Java bytecode based on the platform of the storage device 60, more specifically, a Java applet embedded with a Java applet and ARM instructions. In this case, the auxiliary execution function unit is implemented as a native launcher for executing the above-described Java applet. In addition, the auxiliary execution function is implemented as a DLL (Dynamic Link Library) file so that it can be loaded and executed only when necessary. This auxiliary execution function will be described in more detail later.

도 5를 참조하면, (a)는 스터브 코드의 삽입 전의 실행형 컨텐츠(11), 즉, 분리 실행 대상 코드 블록(35)을 나타내며, (b)는 분리 실행 대상 코드 블록(35) 위치에 삽입된 스터브 코드를 나타낸 것이다.Referring to FIG. 5, (a) shows the executable content 11 before inserting the stub code, that is, the separated execution target code block 35, and (b) is inserted at the position of the separated execution target code block 35. Shows the stub code.

도 5의 (a)와 (b)를 비교하면, 스터브 코드는 분리 실행 대상 코드 블록(35)의 맨 앞 위치에서 보조 실행 기능부의 특정 함수로 점프하고(jmp NativeLauncher), 보조 실행 기능부의 함수 호출 이후에는 함수 값을 반환할 엔드 포인트로 점프하도록 생성되어, 분리 실행 대상 코드 블록(35)의 위치에 삽입된다. 이에 의하면, caller code의 변경 없이 코드 변환이 가능하다.When comparing (a) and (b) of Fig. 5, the stub code jumps to a specific function of the auxiliary execution function unit (jmp NativeLauncher) from the front position of the separate execution target code block 35, and calls the function of the auxiliary execution function unit. After that, it is generated to jump to the endpoint to return a function value, and is inserted at the position of the separated execution code block 35. According to this, code conversion is possible without changing the caller code.

코드 조작부(315)는, 스터브 코드의 삽입과 더불어, 보조 실행 기능부의 로딩을 위하여 임포트 영역(idata section)의 임포트 테이블(import table) 내에 보조 실행 기능부(Native Launcher DLL)을 삽입한다. 임포트 테이블에 대한 보조 실행 기능부의 삽입은, 호스트 단말(50)에서 분리 실행 기반 컨텐츠(37)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 기능부가 로딩되도록 하기 위한 것이다.The code manipulation unit 315 inserts a native launcher function unit (Native Launcher DLL) into an import table of an idata section for the insertion of the stub code and for loading the auxiliary execution function unit. The insertion of the auxiliary execution function into the import table is for the auxiliary execution function to be loaded by the loader of the OS when the separate execution base content 37 is driven in the host terminal 50.

이러한 방식을 통하여, 분리 실행 기반 컨텐츠(37)의 소스 코드 수정 없이, 분리된 분리 실행 대상 코드 블록(35)과의 상호 작용이 가능해진다.In this way, the interaction with the separated separate execution target code block 35 is possible without modifying the source code of the separated execution based content 37.

코드 변환부(317)는 분리 실행 기반 컨텐츠(37)에서 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 실행 가능한 형태로 변환한다. 이때, 분리 실행 대상 코드 블록(35)은, 분리 실행 속도의 향상을 위하여, 저장장치(60)에 구비된 프로세서의 명령어로 변환되는 것이 바람직하다. 예를 들면, 저장 장치(60)가 Java 기반 스마트 카드인 경우, 분리 실행 대상 코드 블록(35)은, Java 바이트 코드로 변환되는데, 특히, ARM 명령어를 내장한 Java 바이트 코드로 변환된다. 즉, 호스트 단말(50)이 X86 계열의 프로세서 구조를 가지며, 저장장치(60)가 ARM 구조의 프로세서로 이루어진 경우, 코드 변환부(317)는, 분리 실행 대상 코드 블록(35)의 X86 명령어를 Java 바이트코드 및 ARM 명령어를 내장한 Java 바이트코드로 변환한다.The code conversion unit 317 converts the separation execution target code block 35 separated from the separation execution base content 37 into an executable form in the storage device 60. In this case, the separation execution target code block 35 may be converted into instructions of a processor included in the storage device 60 in order to improve the separation execution speed. For example, when the storage device 60 is a Java-based smart card, the separate execution target code block 35 is converted to Java byte code, in particular, to Java byte code containing an ARM instruction. That is, when the host terminal 50 has an X86 series processor structure and the storage device 60 is an ARM structured processor, the code conversion unit 317 may execute the X86 instruction of the separate execution target code block 35. Convert Java bytecode and ARM instructions to embedded Java bytecode.

이때, 코드 변환부(317)는, 실행형 컨텐츠(11)의 분리 실행을 다양한 프로세서 환경에 적용할 수 있도록, 분리 실행 대상 코드 블록(35)을 복수의 머신 코드로 변환하는 것이 바람직하다. 이를 위하여, 코드 변환부(317)는 compiler infrastructure, 특히 LLVM(Low Level Virtual Machine)를 이용하여 구현될 수 있다. LLVM을 이용할 경우, 검증된 다양한 오픈 소스 솔루션을 이용할 수 있으며, 타겟, 즉, 저장장치(60)의 프로세서와는 독립적으로 코드 최적화가 가능하고, 코드 재사용성이 높아, 다양한 소스를 다양한 머신 코드로 변환할 수 있다.At this time, the code conversion unit 317 preferably converts the separation execution target code block 35 into a plurality of machine codes so that the separation execution of the executable content 11 can be applied to various processor environments. To this end, the code conversion unit 317 may be implemented using a compiler infrastructure, in particular, a low level virtual machine (LLVM). With LLVM, you can use a variety of proven open source solutions, code optimization independent of the target, i.e., the processor of the storage device 60, high code reusability, and a variety of source code I can convert it.

구체적으로 코드 변환부(317)는 소스, 즉, 호스트 단말(50)의 플랫폼에 기반한 언어로 구성된 분리 실행 대상 코드 블록을 중간 단계 언어(LLVM IR: LLVM Intermediate Representation)로 변환하고, 이어 중간 단계 언어로 변환된 분리 실행 대상 코드 블록(35)을 최적화하며, 마지막으로 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록(35)을 저장 장치(140)의 프로세서에 기반한 복수의 머신 코드, 예를 들어, Java 바이트 코드, ARM 명령어로 변환한다.In detail, the code conversion unit 317 converts a separate execution target code block formed of a source, that is, a language based on the platform of the host terminal 50, into an intermediate level language (LLVM IR), and then the intermediate level language. Optimizes the separate execution target code block 35 converted into a second, and finally separates the optimized execution target code block 35 of the intermediate language into a plurality of machine codes based on the processor of the storage device 140, for example, Java bytecode, converted to ARM instructions.

코드 암호화부(319)는, 모듈 제어부(311)의 제어에 따라서 선정된 초기 코드 블록을 특정 키로 암호화하여, 해당 실행형 컨텐츠(11)의 실행시 특정 키를 통해 초기 코드 블록을 복호화하여 실행하도록 실행형 컨텐츠(11)를 변환한다. The code encryptor 319 encrypts the initial code block selected under the control of the module controller 311 with a specific key, and decrypts and executes the initial code block through the specific key when executing the executable content 11. The executable content 11 is converted.

구체적으로 코드 암호화부(319)는, 선정된 초기 코드 블록을 지정된 키로 암호화한 후, 암호화된 초기 코드 블록을 실행형 컨텐츠(11)에 추가 생성된 보안 영역에 삽입하고, 초기 코드 블록의 위치에는 키를 획득하여 암호화된 초기 코드 블록을 복호화한 후 실행시키는 보조 실행 기능부를 로드하게 하는 시동 스터브 코드를 삽입한다.Specifically, the code encryptor 319 encrypts the selected initial code block with a designated key, and then inserts the encrypted initial code block into the security area additionally generated in the executable content 11, and at the position of the initial code block. A start stub code is inserted which causes the secondary execution function to be loaded to obtain the key, decrypt and execute the encrypted initial code block.

보다 구체적으로, 코드 암호화부(319)는, 암호화되어 이동될 초기 코드 블록 대신에 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 기능부의 함수를 호출하는 시동 스터브 코드를 생성하여, 초기 코드 블록의 위치에 삽입한다. 코드 암호화부(319)는, 실행형 컨텐츠(11)에 보안 영역(secure section)을 새로 생성하고, 선정된 초기 블록 코드를 지정된 키로 암호화한 후, 생성된 보안 영역에 암호화된 초기 코드 블록을 적재한다. More specifically, the code encryptor 319 generates a startup stub code that calls a function of an auxiliary execution function to decrypt and execute the encrypted initial code block instead of the initial code block to be encrypted and moved, thereby initial block. Insert it in the position of. The code encryptor 319 creates a new secure section in the executable content 11, encrypts the selected initial block code with a specified key, and loads the encrypted initial code block in the generated secure area. do.

이때 암호화에 사용되는 키는 실행형 컨텐츠(11)의 실행시에 복호화를 위하여 필요하므로, 권리객체(43)의 CEK(Contents Encryption key) 형태로 관리되어, 저장장치(60)에 저장될 수 있다.In this case, since the key used for encryption is necessary for decryption at the time of execution of the executable content 11, the key used for encryption may be managed in the form of a Contents Encryption Key (CEK) of the rights object 43 and stored in the storage device 60. .

이와 같이 코드 암호화부(319)를 통하여 암호화된 초기 코드 블록은 이후, 분리 실행 대상 코드 블록(35)의 경우와 마찬가지로, 보조 실행 기능부에 의하여 복호화되고, 온 메모리(On-Memory) 상태에서 구동(Running)된다. 이에 의하면, 실행형 컨텐츠(11)에 대하여, 초기 구동 시 1단계 보안 기술을 적용하고, 분리 실행을 통해 2단계 보안 기술을 적용함으로써, 실행형 컨텐츠(11)의 불법 사용 및 복제를 더 강력하게 차단할 수 있게 된다.
The initial code block encrypted through the code encryption unit 319 is then decrypted by the auxiliary execution function unit as in the case of the separate execution target code block 35 and driven in an on-memory state. (Running) According to this, the first-level security technology is applied to the executable content 11 at the time of initial driving, and the two-level security technology is applied through separate execution, thereby more illegally using and copying the executable content 11. You can block.

도 6은 본 발명이 적용되는 디지털 저작권 관리 시스템의 분리 실행 기반 컨텐츠에서 보조 실행 기능부의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.FIG. 6 is a diagram illustrating a configuration of an auxiliary execution function unit in a separation execution based content of a digital rights management system to which the present invention is applied and a separation execution process through the same.

도 6을 참조하면, 본 발명에 따른 호스트 단말(50)에 저장된 분리 실행 기반 디지털 컨텐츠(37)와, 저장 장치(60)에 저장되며 저장 장치(60)에서 실행 가능한 형태로 변환된 분리 실행 대상 코드 블록(35)은, 보조 실행 기능부(300)를 통해 상호 연동한다. 특히, 보조 실행 기능부(300)는, 이종 프로세서로 구현된 호스트 단말(50)과 저장 장치(60)가 연동하여 분리 실행을 구현할 수 있도록 한다.Referring to FIG. 6, a separate execution target digital content 37 stored in the host terminal 50 and a separate execution target stored in the storage device 60 and converted into an executable form in the storage device 60 according to the present invention. The code blocks 35 interoperate with each other via the auxiliary execution function unit 300. In particular, the auxiliary execution function unit 300 allows the host terminal 50 implemented as a heterogeneous processor and the storage device 60 to implement separate execution.

이를 위하여 보조 실행 기능부(300)는, 인터페이스 기능부(310)와, 패킹(packing) 기능부(320)와, 언패킹(unpacking) 기능부(330)와, 메모리 매핑 기능부(340)와, OS API 매핑 기능부(350)를 포함하고, 더하여, 코드 복호화 기능부(360)를 더 포함할 수 있다.To this end, the auxiliary execution function unit 300 may include an interface function unit 310, a packing function unit 320, an unpacking function unit 330, a memory mapping function unit 340, and the like. In addition, the OS API mapping function 350 may be included, and in addition, the code decoding function 360 may be further included.

인터페이스 기능부(310)는, 분리 실행 대상 코드 블록(35)과의 통신 채널을 제공하여, 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)과 데이터를 교환한다. 예를 들어, 인터페이스 기능부(310)는 ISO-7816에 정의된 APDU(Application Protocol Data Unit)을 통해 분리 실행 대상 코드 블록(35)과의 통신 채널을 제공할 수 있다. 인터페이스 기능부(310)는, 향후 TCP/IP Over USB와 같은 다른 종류의 인터페이스가 적용되더라도, 보조 실행 기능부(300)의 다른 기능부가 변경되지 않도록, Network bearer transparent한 인터페이스를 제공하는 것이 바람직하다. 인터페이스 기능부(310)는 일반적인 I/O 함수들과 동일한 형태의 함수를 갖는다.The interface function unit 310 provides a communication channel with the separation execution target code block 35 to exchange data with the separation execution target code block 35 stored in the storage device 60. For example, the interface function unit 310 may provide a communication channel with the separate execution target code block 35 through an application protocol data unit (APDU) defined in ISO-7816. The interface function unit 310 may provide a network bearer transparent interface so that the other function unit of the auxiliary execution function unit 300 is not changed even when another type of interface such as TCP / IP Over USB is applied in the future. . The interface function 310 has a function of the same type as general I / O functions.

패킹 기능부(320)는 스터브 코드(234)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라미터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(234)에서 분리 실행 대상 코드 블록(35)를 호출할 때 전달되는 레지스터 정보이다.The packing function unit 320 receives the stack and register information from the stub code 234 and packs it, and transmits the packing function unit 320 to the separate execution target code block 35 through the interface function unit 310. Here, the stack information is a collection of stack values used as parameters starting from the stack position designated by the SP register, and the register information is transmitted when the separate execution target code block 35 is called in the stub code 234. Register information.

언패킹 기능부(330)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 전달된 패킹된 데이터를 언패킹하여, 스터브 코드(234)로 반환한다. 언패킹 기능부(330)는, 분리 실행 대상 코드 블록(35)의 반환 값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 값에 반환 값을 설정하고, 반환 값이 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환 값에 따라서 변경한다.The unpacking function unit 330 unpacks the packed data transferred from the separate execution target code block 35 through the interface function unit 310 and returns the packed data to the stub code 234. The unpacking function unit 330 simply sets a return value to a value of a corresponding register if the return value of the separated execution target code block 35 is a Primitive Data Type, and if the return value is a memory address, Change the corresponding values according to the return value.

메모리 매핑 기능부(340)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)에서 전달된 데이터를 호스트 단말(50)의 메모리에 기록하거나, 호스트 단말(50)의 메모리에서 데이터를 디스패치하여 분리 실행 대상 코드 블록(35)으로 전달한다. 메모리 매핑 기능부(340)를 통해 저장 장치(60)의 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 메모리를 참조하여 실행될 수 있다.The memory mapping function unit 340 records the data transmitted from the separate execution target code block 35 through the interface function unit 310 in the memory of the host terminal 50, or the data in the memory of the host terminal 50. And dispatch to the separate execution target code block 35. The separate execution target code block 35 of the storage device 60 may be executed by referring to the memory of the host terminal 50 through the memory mapping function 340.

OS API 매핑 기능부(350)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 API 명 및 파라미터 값을 전달받아, 호스트 단말(50)의 OS API를 호출하고, 그 결과를 반환 받아 분리 실행 대상 코드 블록(35)으로 전달한다. 이에 의하여, 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.The OS API mapping function unit 350 receives the API name and parameter values from the separate execution target code block 35 through the interface function unit 310, calls the OS API of the host terminal 50, and as a result, Received is returned to the code execution target block 35 to be separated. As a result, the separated execution target code block 35 stored in the storage device 60 may call the OS API of the host terminal 50 to receive the result.

그리고, 코드 복호화 기능부(360)는, 저장장치(60)로부터 특정 키를 획득하여 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 복호화하고, 복호화된 초기 코드 블록을 실행시킨다. The code decryption function 360 obtains a specific key from the storage device 60, decrypts the encrypted initial code block 271 loaded in the security area 270, and executes the decrypted initial code block. .

도 7은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 코드 복호화 기능부의 동작 흐름도이다. 도 7을 참조하면, 코드 복호화 기능부(360)는, 암호화된 초기 코드 블록과 암호화에 사용된 키(CEK)를 입력 받아, 키로 초기 코드 블록을 복호화한다(S361). 그리고, 복호화된 초기 코드 블록을 런타임 코드 실행자(Runtime code executioner)가 메모리 상에서 바로 실행시킨다(S362). 더 구체적으로, 런타임 코드 실행자가 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시켜, 복호화된 초기 코드 블록을 실행한다. 이에 의하면, 초기 코드 블록의 실행 시에만, 복호화된 초기 코드 블록이 메모리에 존재하고, 실행이 후에는 바로 소멸되며, 이를 통해 보안 효과를 더 높일 수 있다.7 is an operation flowchart of a code decoding function unit in a digital rights management system to which the present invention is applied. Referring to FIG. 7, the code decryption function unit 360 receives an encrypted initial code block and a key CEK used for encryption, and decrypts an initial code block with a key (S361). The runtime code executioner directly executes the decoded initial code block on the memory (S362). More specifically, the runtime code executor maps an instruction pointer to the decoded initial code block and jumps to execute the decoded initial code block. According to this, only when the initial code block is executed, the decrypted initial code block exists in the memory, and after execution, it is immediately destroyed, thereby increasing the security effect.

도 6 및 도 7을 참조하여, 보조 실행 기능부(300)를 이용한 분리 실행 동작을 설명하면 다음과 같다.6 and 7, the separation execution operation using the auxiliary execution function unit 300 will be described as follows.

먼저, 분리 실행 기반 컨텐츠(37)가 구동되기 시작하면, 코드 영역(230)의 초기에 위치한 시동 스터브 코드(233)에 의하여 보조 실행 기능부(300)가 로딩되고(①), 코드 복호화 기능부(360)가 호출되어, 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 가져오고(②), 복호화에 필요한 키(CEK)를 획득하여(③), 초기 코드 블록(271)을 복호화한 후 실행한다(④). 이후 이어서 코드 영역의 다음 프로그램 코드가 순서대로 실행되다가, 스터브 코드(234)에 진입하면, 스터브 코드(234)에 의하여 패킹 기능부(320)가 호출되고, 호출된 패킹 기능부(320)가 스터브 코드(234)에서 전달된 스택 및 레지스터 정보를 패킹하여 인터페이스 기능부(310)를 통해 저장 장치(60)의 분리 실행 대상 코드 블록(35)으로 전달한다(⑤). 이에 분리 실행 대상 코드 블록(35)이 실행되는데, 이때, 분리 실행 대상 코드 블록(35)은 메모리 매핑 기능부(340) 및 OS API 매핑 기능부(350)를 통해 호스트 단말(50)의 메모리 및 OS API에 접근할 수 있다(⑥). 분리 실행 대상 코드 블록(35)의 실행이 완료되면, 그 결과값이 인터페이스 기능부(330)를 통해 보조 실행 기능부(300)로 전달되고, 언패킹 기능부(330)가 결과값을 다시 언패킹하여 스터브 코드(234)로 반환한다(⑦).First, when the separated execution based content 37 starts to be driven, the auxiliary execution function unit 300 is loaded by the start stub code 233 located at the beginning of the code region 230 (①), and the code decoding function unit is executed. 360 is called to retrieve an encrypted initial code block 271 loaded in the secure area 270 (2), obtain a key (CEK) necessary for decryption (3), and initialize the initial code block 271. Decode and execute (④). Subsequently, the next program code of the code area is executed in order, and when the stub code 234 is entered, the packing function 320 is called by the stub code 234, and the called packing function 320 is stubbed. The stack and register information delivered from the code 234 is packed and transferred to the separate execution target code block 35 of the storage device 60 through the interface function unit 310 (⑤). In this case, the separate execution target code block 35 is executed. In this case, the separate execution target code block 35 is executed by the memory of the host terminal 50 through the memory mapping function 340 and the OS API mapping function 350. You can access the OS API (⑥). When the execution of the separate execution target code block 35 is completed, the result value is transmitted to the auxiliary execution function unit 300 through the interface function unit 330, and the unpacking function unit 330 freezes the result value again. It is packed and returned to the stub code 234 (⑦).

이에 의하면, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)이 호스트 단말(50)과 저장 장치(60)의 연동을 통해 정상적으로 동작할 수 있게 된다.According to this, the separation execution based content 37 and the separation execution target code block 35 may operate normally through interworking between the host terminal 50 and the storage device 60.

도 8은 본 발명이 적용되는 디지털 저작권 관리 시스템의 저장 장치에서의 보조 실행 모듈의 구조를 나타낸 구성도이다. 도 6 및 도 8을 참조하면, 본 발명이 적용되는 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)과 호스트 단말(50)에 저장된 분리 실행 기반 컨텐츠(37)는, 보조 실행 기능부(300)와 보조 실행 모듈(610)을 통해 상호 연동된다.8 is a block diagram showing the structure of an auxiliary execution module in a storage device of a digital rights management system to which the present invention is applied. 6 and 8, the separated execution target code block 35 stored in the storage device 60 to which the present invention is applied and the separated execution based content 37 stored in the host terminal 50 may include an auxiliary execution function unit. It is interlocked through the 300 and the auxiliary execution module 610.

보조 실행 모듈(610)은 실행 기능부(611), 작업 관리 기능부(613), 로딩 기능부(615), 장치 메모리 매핑 기능부(617), 장치 OS API 매핑 기능부(619), 장치 메모리 관리 기능부(621), ROM 관리 기능부(623)을 포함한다. The auxiliary execution module 610 includes an execution function unit 611, a task management function unit 613, a loading function unit 615, a device memory mapping function unit 617, a device OS API mapping function unit 619, and a device memory. The management function unit 621 and the ROM management function unit 623 are included.

로딩 기능부(615)는 분리 실행 대상 코드 블록(35)을 로드하여, fix되지 않은 reference들을 모두 fix하고(이하 Linking이라고 함) reference들을 메모리 상의 임의의 영역에 로드한다. unresolved reference를 Linking하기 위해서는 reference information을 참조한다.The loading function 615 loads the separate execution target code block 35 to fix all unfixed references (hereinafter referred to as linking) and load the references to an arbitrary area in the memory. Refer to reference information to link unresolved reference.

실행기능부(611)는 호스트 단말(50)과 통신을 담당하여, 호스트 단말(40)로부터 수신한 데이터를 파싱하여 해당 내용을 실행 후, 다시 호스트 단말(50)로 전송한다. 이때, 프로토콜은 보조 실행 기능부(300)과 보조 실행 모듈(610)사이에 규격화 시켜서 처리할 수 있다.The execution function unit 611 communicates with the host terminal 50, parses the data received from the host terminal 40, executes the contents, and transmits the contents to the host terminal 50. In this case, the protocol may be processed by standardizing between the auxiliary execution function unit 300 and the auxiliary execution module 610.

구체적으로, RO에 포함된 분리 실행 대상 코드 블록(35)을 전달 받아, 로딩 기능부(615)를 통해 분리 실행 대상 코드 블록(35)을 로드하고, IP(interrupt priority) 레지스트를 조작하여 분리 실행 대상 코드 블록(35)의 시작점(entry point)를 강제로 호출해 실행한다. 또한, 장치 메모리 매핑 기능부(619) 또는 장치 OS API 매핑 기능부(621)의 호출로 인해 호스트 단말(50)의 응답을 기다려야 하는 경우, 현재 실행 중이던 인스트럭션 포인터(Instruction Pointer) 및 레지스터 값들을 컨텍스트(context) 형태로 임시 저장하고 있다가, 호스트 단말(50)로부터 응답이 도착하면, 해당 위치(position)부터 재 실행한다.Specifically, the separation execution target code block 35 included in the RO is received, the separation execution target code block 35 is loaded through the loading function unit 615, and the separation execution is performed by manipulating an IP (interrupt priority) resist. The entry point of the target code block 35 is forcibly called and executed. In addition, when it is necessary to wait for a response from the host terminal 50 due to a call of the device memory mapping function 619 or the device OS API mapping function 621, an instruction pointer and register values that are currently being executed are contextually displayed. After temporary storage in the form of (context), when a response arrives from the host terminal 50, the process is executed again from the corresponding position.

장치 메모리 매핑 기능부(617)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 메모리 참조하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.The device memory mapping function 617 packs the instructions loaded by the loading function 615 to the auxiliary execution function 300 of the host terminal 50 when the instructions refer to the memory of the host terminal 50. When the response is received from the auxiliary execution function unit 300, the packet is unpacked and transferred to the execution function unit 611.

여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 메모리 참조가 있는 코드가 장치 메모리 매핑 기능부(617)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 메모리 참조를 하는 경우 장치 메모리 매핑 기능부(617)를 호출하게 된다.Here, the loading function 615 links the code having the memory reference of the host terminal 50 to call the device memory mapping function 617 during the initial loading process, and thus the host in the loaded code. When the memory reference of the terminal 50 is made, the device memory mapping function unit 617 is called.

장치 OS API 매핑 기능부(619)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 OS API를 호출하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.The device OS API mapping function 619 packs an instruction loaded by the loading function 615 when the OS API of the host terminal 50 calls the OS execution function of the host terminal 50. 300, and when receiving a response from the auxiliary execution function unit 300, unpacks and transmits the response to the execution function unit 611.

여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 OS API를 호출하는 코드가 장치 OS API 매핑 기능부(619)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 OS API를 호출하는 경우 장치 OS API 매핑 기능부(619)를 호출하게 된다.Here, the loading function unit 615 links the code that calls the OS API of the host terminal 50 to call the device OS API mapping function unit 619 during the initial loading process, and thus the loaded code When calling the OS API of the host terminal 50 in the device OS API mapping function unit 619 is called.

작업 관리 기능부(613)는 호스트 단말(50)에서 실행되는 분리 실행 기반 컨텐츠(37)는 복수일 수 있으며, 복수의 분리 실행 기반 컨텐츠(37)가 동시에 실행되는 경우 저장장치(60)의 Task와 1:1로 매칭되도록 Task를 생성한다. 또한, 실행 기능부(611)와 보조 실행 모듈(610)의 타 구성요소와 연결한다.The task management function unit 613 may include a plurality of separated execution based content 37 executed in the host terminal 50, and when the plurality of separated execution based content 37 are executed at the same time, a task of the storage device 60 may be executed. Create a task to match 1: 1 with. In addition, it is connected to other components of the execution function unit 611 and the auxiliary execution module 610.

장치 메모리 관리 기능부(621)는 보조 실행 모듈(610)이 실행되면, 저장장치(60) OS로부터 보조 실행 모듈(610)에게 할당한 Heap의 시작 번지와 사용 가능한 메모리 사이즈를 수신하여, 분리 실행 대상 코드 블록(35)의 실행을 위한 메모리를 할당, 해제, 데이터 삽입, 삭제 등을 한다. 이때, 할당되는 메모리는 고정되며, 보조 실행 모듈(610)만 사용 가능하도록 할당되는 것이 바람직하다. 또한, 메모리 관리 기능부(621)는 분리 실행 대상 코드 블록(35)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈보다 큰 경우 작업 관리 기능부(613)에게 요청하여 호스트 단말(50)의 메모리를 할당 받는다.When the auxiliary execution module 610 is executed, the device memory management function 621 receives the start address of the heap allocated to the auxiliary execution module 610 and the available memory size from the storage device 60 OS, and performs separate execution. Memory for execution of the target code block 35 is allocated, released, data inserted, deleted, and the like. In this case, the allocated memory is fixed and preferably allocated such that only the auxiliary execution module 610 may be used. In addition, the memory management function unit 621 requests the job management function unit 613 when the memory size referred to by the separated execution target code block 35 is larger than the available memory size of the storage device 60, and the host terminal 50. ) Memory is allocated.

ROM 관리 기능부(623) 저장장치(60)에서 NOR 또는 NAND 메모리의 쓰기 횟수 가 제한되는 경우, RAM의 적은 용량 때문에 NOR 또는 NAND 메모리를 참조할 때 접근을 최소화하기 위해 OEM(Original Equipment Manufacturer)에서 ROM의 일정영역을 할당 받아 Cash를 구현할 수 있는 파일 시스템(file system)을 제공한다. 이러한 파일 시스템은 기존의 파일 시스템과 같이 파일을 open, read, write 등의 API가 제공된다. When the number of writes of the NOR or NAND memory in the ROM management function unit 623 storage device 60 is limited, the original equipment manufacturer (OEM) may minimize the access when referring to the NOR or NAND memory due to the small amount of RAM. Provides a file system that can implement cash by allocating a certain area of ROM. Such a file system is provided with APIs such as open, read, and write files as in the existing file system.

도 9는 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 저장장치를 나타내는 구성도이다. 도 1 및 도 9를 참조하면, 본 실시예의 저장장치(60)는 통신부(61), 저장부(63), 통신버스(67), 제어부(69)를 포함하여 구성된다.9 is a block diagram illustrating a storage device in a memory using system of a host terminal in a storage device according to an exemplary embodiment of the present invention. 1 and 9, the storage device 60 of the present embodiment includes a communication unit 61, a storage unit 63, a communication bus 67, and a control unit 69.

통신부(61)는 유선 또는 무선으로 접속된 호스트 단말(50)와 데이터 송수신을 수행하기 위한 인터페이스를 가진다. The communication unit 61 has an interface for performing data transmission and reception with the host terminal 50 connected by wire or wirelessly.

저장부(63)는 프로그램(65)을 저장하는 저장소이다. The storage unit 63 is a reservoir for storing the program 65.

프로그램(65)은 각종 컨텐츠 또는 응용프로그램을 포함하며, 제어부(69)에 저장장치(60)의 메모리에 적재되어 실행될 수 있다.The program 65 may include various contents or application programs, and may be loaded into the memory of the storage device 60 in the controller 69 and executed.

통신버스(67)는 저장장치(60)의 각 구성요소들간의 신호전송 경로를 제공한다.The communication bus 67 provides a signal transmission path between the components of the storage device 60.

제어부(69)는 통신부(61), 저장부(63)의 동작을 전반적으로 제어하며, 프로그램(65)의 명령어를 읽어 들이고(fetch), 명령어를 해석(decode), 명령어를 수행(execute)하면서 프로그램(65)을 실행한다. The control unit 69 controls overall operations of the communication unit 61 and the storage unit 63, fetches instructions of the program 65, decodes the instructions, and executes the instructions. The program 65 is executed.

제어부(69)는 프로그램(65) 실행 중에, 프로그램(65)이 메모리를 참조하는 경우, 현재 저장장치(60)의 가용 메모리 사이즈를 확인하고, 저장장치(60)의 가용 메모리 사이즈와 프로그램(65)이 참조하는 메모리 사이즈를 비교한다. When the program 65 refers to the memory while the program 65 is running, the controller 69 checks the available memory size of the current storage device 60, and checks the available memory size of the storage device 60 and the program 65. Compares the memory size referenced by).

제어부(69)는 프로그램(65)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈를 초과하는 것을 확인하면, 통신부(61)를 통해 호스트 단말(50)로 메모리 할당 요청메시지를 전송한다.When the controller 69 confirms that the memory size referenced by the program 65 exceeds the available memory size of the storage device 60, the controller 69 transmits a memory allocation request message to the host terminal 50 through the communication unit 61. .

메모리 할당 요청메시지는 프로그램(65)에 사용된 논리 주소(logical address) 또는 가상 주소(virtual address) 등을 포함하며 프로그램(65)이 요청한 메모리 사이즈를 호스트 단말(50)이 인식할 수 있도록 전송하는 메시지를 말한다. The memory allocation request message includes a logical address or a virtual address used in the program 65 and transmits the memory size requested by the program 65 so that the host terminal 50 can recognize the memory size. Say a message.

이때, 저장장치(60) 내에는 복수의 프로그램이 저장되어 있을 수 있으며, 사용자에 의해 복수의 프로그램이 함께 실행될 수 있다. 제어부(69)는 복수의 프로그램을 함께 실행할 때, 각 프로그램마다 참조하도록 저장장치(60)의 메모리를 할당하게 된다. 제어부(69)는 프로그램(65) 실행 중에, 프로그램(65) 실행 중에 프로그램(65)이 메모리를 참조하는 경우, 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 확인하고, 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈와 프로그램(65)이 참조하는 메모리 사이즈를 비교할 수 있다. 이어서, 제어부(69)는 프로그램(65)이 참조하는 메모리 사이즈가 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 초과하는 것을 확인하면, 통신부(61)를 통해 호스트 단말(50)로 메모리 할당 요청메시지를 전송할 수 있다.In this case, a plurality of programs may be stored in the storage device 60, and a plurality of programs may be executed together by a user. When the controller 69 executes a plurality of programs together, the controller 69 allocates a memory of the storage device 60 to refer to each program. The controller 69 checks the available memory size of the storage device 60 allocated to the program 65 when the program 65 refers to the memory while the program 65 is running and the program 65 is running. The available memory size of the storage device 60 allocated to 65 can be compared with the memory size referenced by the program 65. Subsequently, when the controller 69 confirms that the memory size referenced by the program 65 exceeds the available memory size of the storage device 60 allocated to the program 65, the control unit 69 transmits the host terminal 50 through the communication unit 61. ) Can be used to send a memory allocation request message.

예를 들면, 제어부(69)는 프로그램(65)을 실행하게 되면, 각 프로그램에 메모리 시작 주소인 베이스 레지스터(base register) 및 메모리 공간 크기를 나타내는 리미트 레지스터(limit register)를 설정할 수 있다. 프로그램(65)의 논리 주소(logical address) 또는 가상 주소(virtual address)가 베이스 레지스터 값 이상 베이스 레지스터 및 리미트 레지스터를 합한 값 미만을 참조하게 되면 유효하게 저장장치(60)의 메모리를 할당하고, 베이스 레지스터 및 리미트 레지스터를 합한 값 이상을 참조하게 되면, 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 초과한 것으로 확인할 수 있다. For example, when executing the program 65, the control section 69 may set a base register, which is a memory start address, and a limit register indicating a memory space size, for each program. When the logical address or the virtual address of the program 65 refers to the base register value or more than the combined value of the base register and the limit register, the memory of the storage device 60 is effectively allocated, and the base When the reference value is greater than the sum of the registers and the limit registers, it is confirmed that the available memory size of the storage device 60 allocated to the program 65 is exceeded.

본 발명의 다른 실시예에서, 제어부(69)는 호스트 단말(50)로부터 저장장치(60)의 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 이에 대한 응답으로 메모리 할당 요청메시지를 전송할 수 있다.In another embodiment of the present invention, when the controller 69 receives a check message for checking the available memory size of the storage device 60 from the host terminal 50, the controller 69 may transmit a memory allocation request message in response thereto.

체크메시지는 호스트 단말(50)이 저장장치(60)의 가용 메모리 사이즈를 체크하는 메시지로, 특정 커맨드(command)가 없이 주기적으로 전송하는 메시지이다. The check message is a message for checking the available memory size of the storage device 60 by the host terminal 50 and is a message periodically transmitted without a specific command.

제어부(69)는 통신부(61)를 통해 호스트 단말(50)로부터 호스트 단말(50)의 할당된 메모리 주소값을 수신한다. The control unit 69 receives an allocated memory address value of the host terminal 50 from the host terminal 50 through the communication unit 61.

이때, 실행 중인 프로그램(65)의 데이터를 메모리에 기록하는 경우, 제어부(69)는 프로그램(65)이 참조하는 메모리가 저장장치(60)에 할당되었는지 호스트 단말(50)에 할당되었는지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 실행 중인 프로그램(65)의 데이터를 통신부(61)를 통해 호스트 단말(50)로 전달할 수 있다. 또한, 프로그램(65)이 호스트 단말(50)로 전달한 데이터를 이용하거나 삭제 또는 변경을 하는 경우, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 호스트 단말(50)에 전달된 데이터의 반환을 요청하거나, 삭제 또는 변경을 요청할 수 있다.At this time, when recording the data of the program 65 being executed in the memory, the controller 69 checks whether the memory referenced by the program 65 is allocated to the storage device 60 or the host terminal 50, When confirming that the memory of the host terminal 50 is allocated, the data of the program 65 being executed is transmitted to the host terminal 50 through the communication unit 61 while transmitting the memory address value received from the host terminal 50. Can be. In addition, when the program 65 uses, deletes, or changes the data transmitted to the host terminal 50, the program 65 transmits the memory address value received from the host terminal 50 to the host terminal 50. You can request a return, delete or change it.

또한, 제어부(69)는 프로그램(65) 실행 중에, 프로그램(65)이 호스트 단말(50)에 할당된 메모리 참조를 해제하거나, 프로그램(65)의 실행이 종료되는 경우, 프로그램(65)이 참조한 메모리가 저장장치(60)에 할당되었는지 호스트 단말(50)에 할당되었는지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로 호스트 단말(50)로부터 수신한 메모리 주소값 및 메모리 해제 요청메시지를 전송할 수 있다. In addition, the controller 69 releases the memory reference allocated to the host terminal 50 during the execution of the program 65, or when the execution of the program 65 ends, the program 65 refers to it. After confirming that the memory is allocated to the storage device 60 or the host terminal 50 and confirming that the memory of the host terminal 50 is allocated, the memory address received from the host terminal 50 to the host terminal 50 is determined. A value and memory release request message can be sent.

메모리 해제 요청메시지는 호스트 단말(50)의 프로그램(65)에 할당된 메모리를 가용 공간으로 이용할 수 있도록 메모리 할당의 해제를 요청하는 매시지를 말한다.The memory release request message refers to a message for requesting release of memory allocation so that the memory allocated to the program 65 of the host terminal 50 can be used as available space.

본 발명의 다른 실시예에서, 제어부(69)는 호스트 단말(50)로부터 프로그램(65)이 참조하는 메모리 사이즈만큼 호스트 단말(50)의 가용 메모리가 없어 에러메시지를 수신할 수 있으며, 에러메시지를 수신하는 경우, 제어부(69)는 프로그램(65)의 실행을 강제적으로 종료할 수 있다.In another embodiment of the present invention, the controller 69 may receive an error message from the host terminal 50 because there is no available memory of the host terminal 50 as much as the memory size referred to by the program 65. When receiving, the control section 69 may forcibly terminate the execution of the program 65.

도 10은 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 호스트 단말을 나타내는 구성도이다. 설명의 편의를 위해 전술한 도 9에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1 및 도 10을 참조하면, 본 실시예의 호스트 단말(50)는 단말통신부(51), 단말제어부(57)를 포함하여 구성되며, 출력부(55)를 더 포함할 수 있다.10 is a block diagram illustrating a host terminal in a memory using system of the host terminal in a storage device according to an exemplary embodiment of the present invention. For convenience of description, the configuration shown in FIG. 9 described above will be described with reference to the corresponding reference numeral. 1 and 10, the host terminal 50 according to the present embodiment includes a terminal communication unit 51 and a terminal control unit 57, and may further include an output unit 55.

단말통신부(51)는 유선 또는 무선을 접속된 저장장치(60)와 데이터 송수신을 수행하기 위한 인터페이스를 가진다. The terminal communication unit 51 has an interface for performing data transmission and reception with the storage device 60 connected by wire or wirelessly.

출력부(55)는 단말제어부(57)의 제어에 따라 정보를 표현하는 기능을 한다. 출력부(55)는 정보를 디스플레이하는데 이용되는 브라운관 화면, LCD(Liquid Crystal Display), LED(Light Emitting Diode) 액정과 같은 표현장치를 포함한다. The output unit 55 functions to express information under the control of the terminal controller 57. The output unit 55 includes a display device such as a CRT screen, a liquid crystal display (LCD), and a light emitting diode (LED) liquid crystal used to display information.

단말제어부(57)는 단말통신부(51), 출력부(55)를 포함한 호스트 단말(50)의 전반적인 동작을 제어한다.The terminal controller 57 controls the overall operation of the host terminal 50 including the terminal communication unit 51 and the output unit 55.

단말제어부(57)는 단말통신부(51)를 통해 저장장치(60)로부터 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지에 포함된 논리 주소(logical address) 또는 가상 주소(virtual address) 등을 인식하여 프로그램(65)이 참조한 메모리 사이즈를 인식한다. When the terminal controller 57 receives the memory allocation request message from the storage device 60 through the terminal communication unit 51, the terminal controller 57 recognizes a logical address or a virtual address included in the memory allocation request message. The memory size referred to by the program 65 is recognized.

단말제어부(57)는 프로그램(65)이 참조한 메모리 사이즈만큼 메모리를 할당하고, 할당된 메모리 주소값을 단말통신부(51)를 통해 저장장치(60)로 전송한다. The terminal controller 57 allocates memory as much as the memory size referred to by the program 65 and transmits the allocated memory address value to the storage device 60 through the terminal communication unit 51.

본 발명의 다른 실시예에서, 단말제어부(57)는 현재 가용 메모리 사이즈를 확인하고, 프로그램(65)이 요청한 메모리 사이즈가 가용 메모리 사이즈 이하임을 확인하면, 즉 메모리에 프로그램이 요청한 사이즈만큼 공간이 있다면 메모리를 할당할 수 있다. In another embodiment of the present invention, the terminal controller 57 checks the current available memory size, and if the program 65 confirms that the requested memory size is less than or equal to the available memory size, that is, if there is space in the memory as long as the size requested by the program. You can allocate memory.

또한, 호스트 단말(50)은 복수의 프로그램이 실행이 가능하고, 단말제어부(57)는 복수의 프로그램과 함께 저장장치(60)에서 실행되는 각 프로그램(65)마다 이용할 수 있도록 메모리를 할당할 수 있다. 단말제어부(57)는 프로그램(65) 실행 중 저장장치(60)로부터 메모리 할당 요청메시지를 수신하면, 호스트 단말(50)에서 프로그램(65)에 할당된 가용 메모리 사이즈를 확인하고, 프로그램(65)에서 참조한 메모리 사이즈와 비교한다. 단말제어부(57)는 프로그램(65)에서 참조한 메모리 사이즈가 호스트 단말(50)에서 프로그램(65)에 할당된 가용 메모리 사이즈 이하임을 확인하면, 메모리를 할당하게 된다. In addition, the host terminal 50 may execute a plurality of programs, and the terminal controller 57 may allocate a memory to be used for each program 65 executed in the storage device 60 together with the plurality of programs. have. When the terminal controller 57 receives a memory allocation request message from the storage device 60 while executing the program 65, the terminal controller 57 checks the available memory size allocated to the program 65 in the host terminal 50, and the program 65. Compare with the memory size referenced in. When the terminal controller 57 determines that the memory size referred to by the program 65 is equal to or smaller than the available memory size allocated to the program 65 by the host terminal 50, the terminal controller 57 allocates the memory.

이때, 단말제어부(57)는 프로그램(65)에서 요청된 메모리 사이즈가 호스트 단말(50)의 가용 메모리 사이즈 또는 호스트 단말(60)에서 프로그램(65)에 할당된 가용 메모리 사이즈를 초과함을 확인하면, 저장장치(60)로 에러메시지를 전송하며, 사용자가 인식할 수 있도록 출력부(55)를 통해 메모리부족메시지를 출력할 수 있다.In this case, the terminal controller 57 confirms that the memory size requested by the program 65 exceeds the available memory size of the host terminal 50 or the available memory size allocated to the program 65 in the host terminal 60. In addition, an error message may be transmitted to the storage device 60, and a memory shortage message may be output through the output unit 55 so that the user can recognize the error message.

한편, 단말제어부(57)는 프로그램(65)이 실행 중에 호스트 단말(50)에 할당된 메모리에 데이터를 기록하기 위해 저장장치(60)로부터 호스트 단말(50)에 할당된 메모리 주소값과 함께 데이터를 수신하면, 해당 메모리 주소값을 참조하여 데이터를 메모리에 기록한다. 또한, 저장장치(60)가 프로그램(65) 실행 중에 호스트 단말(50)의 메모리에 기록된 데이터를 삭제, 변경, 반환을 요청하면서 할당된 메모리 주소값을 전송하면, 단말제어부(57)는 해당 주소값을 참조하여 데이터를 반환하거나, 삭제 또는 변경한다.On the other hand, the terminal controller 57 stores the data together with the memory address value assigned to the host terminal 50 from the storage device 60 to record the data in the memory allocated to the host terminal 50 while the program 65 is running. Receives the data, records the data in the memory by referring to the memory address. In addition, when the storage device 60 transmits the allocated memory address value while requesting to delete, change, or return data recorded in the memory of the host terminal 50 while the program 65 is running, the terminal controller 57 responds. The data is returned, deleted or changed by referring to the address value.

또한, 단말제어부(57)는 저장장치(60)로부터 호스트 단말(50)에 할당된 메모리 주소값과 함께 메모리 해제 요청메시지를 수신하면, 수신한 메모리 주소값을 참조하여 메모리(53)에서 프로그램(65)에 할당되었던 메모리를 해제한다. In addition, when the terminal controller 57 receives the memory release request message together with the memory address value allocated to the host terminal 50 from the storage device 60, the terminal controller 57 refers to the received memory address value and stores the program in the memory 53. Release the memory allocated for 65).

본 발명의 다른 실시예에서, 단말제어부(57)는 저장장치(60)가 접속됨을 확인하거나 또는 프로그램(65)이 실행됨을 확인하면, 주기적으로 저장장치(60)의 메모리 가용상태를 체크하는 체크메시지를 전송할 수 있다. In another embodiment of the present invention, when the terminal controller 57 confirms that the storage device 60 is connected or confirms that the program 65 is executed, the terminal controller 57 periodically checks the memory availability of the storage device 60. You can send a message.

예를 들어, ISO/IEC 7816-3에서 정의된 바와 같이, 저장장치(60)에 전원이 공급되면 단말제어부(57)는 저장장치(60)로부터 서비스 제공할 준비가 되었음을 알리는 ATR(Answer to Reset) 신호를 수신하여 저장장치(60)가 접속됨을 확인할 수 있으며, 또한 사용자로부터 저장장치(60) 내의 프로그램(65)의 실행을 위한 입력신호를 수신할 때 프로그램(65)이 실행됨을 확인할 수 있다. For example, as defined in ISO / IEC 7816-3, when power is supplied to the storage device 60, the terminal controller 57 notifies the ATR (Answer to Reset) indicating that the storage device 60 is ready for service. It can be confirmed that the storage device 60 is connected by receiving the signal, and that the program 65 is executed when the user receives an input signal for executing the program 65 in the storage device 60 from the user. .

도 11은 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다. 설명의 편의를 위해 전술한 도 1 내지 도 10에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1 및 도 11을 참조하면, 저장장치(60)는 프로그램(65)을 실행하는 중에 프로그램(65)이 저장장치(60)의 메모리를 참조하는 것을 확인한다(S71).11 is a flowchart illustrating a method of using a memory of a host terminal in a storage device according to an embodiment of the present invention. For convenience of description, the configuration shown in FIGS. 1 to 10 described above will be described with reference to the corresponding reference numerals. 1 and 11, the storage device 60 confirms that the program 65 refers to the memory of the storage device 60 while executing the program 65 (S71).

단계(S71)에서 프로그램이 메모리를 참조하는 것을 확인한 저장장치(60)는 현재 저장장치(60)의 가용 메모리 사이즈를 확인하고, 프로그램(65)이 참조하는 메모리 사이즈와 저장장치(60)의 가용 메모리 사이즈를 비교한다(S73).The storage device 60 confirming that the program refers to the memory in step S71 checks the available memory size of the current storage device 60, and the memory size and the available storage device 60 that the program 65 refers to. The memory size is compared (S73).

이때, 저장장치(60) 내에 복수의 프로그램이 실행되는 경우, 저장장치(60)는 각 프로그램마다 이용할 수 있도록 저장장치(60)의 메모리를 할당할 수 있으며, 저장장치(60)는 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 확인하고, 프로그램(65)이 참조하는 메모리 사이즈와 비교할 수 있다. In this case, when a plurality of programs are executed in the storage device 60, the storage device 60 may allocate a memory of the storage device 60 to be used for each program, and the storage device 60 may use the program 65. The available memory size of the storage device 60 allocated to the C) can be checked and compared with the memory size referenced by the program 65.

단계(S73)에서 프로그램(65)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈 이하인 경우, 단계(S71) 이전으로 분기하여 상술한 단계를 반복한다. If the memory size referenced by the program 65 in step S73 is less than or equal to the available memory size of the storage device 60, the process branches to step S71 and repeats the above-described steps.

단계(S73)에서 프로그램(65)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈를 초과한 경우, 저장장치(60)는 호스트 단말(50)로 메모리 할당 요청메시지를 전송한다(S75).If the memory size referenced by the program 65 in step S73 exceeds the available memory size of the storage device 60, the storage device 60 transmits a memory allocation request message to the host terminal 50 (S75). ).

단계(S75)에서 메모리 할당 요청메시지를 수신한 호스트 단말(50)은 메모리 할당 요청메시지를 참조하여, 프로그램(65)이 참조하는 메모리 사이즈만큼 메모리를 할당한다(S77).The host terminal 50 receiving the memory allocation request message in step S75 refers to the memory allocation request message, and allocates the memory as much as the memory size referred to by the program 65 (S77).

단계(S77)에서 메모리를 할당한 호스트 단말(50)은 할당된 메모리 주소값을 저장장치(60)로 전송한다(S79).The host terminal 50 allocating the memory in step S77 transmits the allocated memory address value to the storage device 60 (S79).

이때, 실행 중인 프로그램(65)의 데이터를 메모리에 기록하는 경우, 저장장치(60)는 프로그램(65)이 참조하는 메모리가 저장장치(60)에 할당되었는지 호스트 단말(50)에 할당되었는지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 실행 중인 프로그램(65)의 데이터를 호스트 단말(50)로 전달할 수 있다. 또한, 프로그램(65)이 호스트 단말(50)로 전달한 데이터를 이용하거나 삭제 또는 변경을 하는 경우, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 호스트 단말(50)에 전달된 데이터의 반환을 요청하거나, 삭제 또는 변경을 요청할 수 있다.In this case, when data of the program 65 being executed is recorded in the memory, the storage device 60 checks whether the memory referenced by the program 65 is allocated to the storage device 60 or the host terminal 50. When confirming that the memory of the host terminal 50 is allocated, the data of the program 65 being executed may be transmitted to the host terminal 50 while transmitting the memory address value received from the host terminal 50. In addition, when the program 65 uses, deletes, or changes the data transmitted to the host terminal 50, the program 65 transmits the memory address value received from the host terminal 50 to the host terminal 50. You can request a return, delete or change it.

단계(S79)에서 메모리 주소값을 수신한 저장장치(60)는 프로그램(65)이 호스트 단말(50)에 할당된 메모리 참조를 해제하거나, 프로그램(65)의 실행이 종료됨을 확인한다(S81). The storage device 60 receiving the memory address value in step S79 confirms that the program 65 releases the memory reference allocated to the host terminal 50 or the execution of the program 65 ends (S81). .

단계(S81)에서 프로그램(65)이 호스트 단말(50)에 할당된 메모리 참조를 해제하거나, 프로그램(65)의 실행이 종료됨을 확인한 저장장치(60)는 호스트 단말(50)로 메모리 주소값과 함께 메모리 해제 요청메시지를 전송한다(S83).In operation S81, when the program 65 releases the memory reference allocated to the host terminal 50 or confirms that the execution of the program 65 is terminated, the storage device 60 transmits the memory address value to the host terminal 50. The memory release request message is transmitted together (S83).

이때, 저장장치(60)는 프로그램(65)이 더 이상 할당된 메모리 참조를 하지 않거나, 프로그램이 종료되는 경우, 프로그램(65)에 할당된 메모리가 저장장치(60)의 메모리인지 호스트 단말(50)의 메모리인지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로 메모리 해제 요청메시지를 전송할 수 있다. At this time, the storage device 60 does not refer to the memory allocated to the program 65 any more, or when the program is terminated, the host terminal 50 determines whether the memory allocated to the program 65 is the memory of the storage device 60. Check whether the memory is allocated to the host terminal 50, the memory release request message may be transmitted to the host terminal 50.

단계(S83)에서 메모리 주소값과 함께 메모리 해제 요청메시지를 수신한 호스트 단말(50)은 수신한 메모리 주소값을 참조하여 메모리(53)에서 프로그램(65)에 할당되었던 메모리를 해제한다(S85).
The host terminal 50 receiving the memory release request message together with the memory address value in step S83 releases the memory allocated to the program 65 in the memory 53 by referring to the received memory address value in step S85. .

도 12는 본 발명의 다른 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다. 설명의 편의를 위해 전술한 도 1 내지 도 10에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1, 도 11 및 도 12를 참조하면, 단계(S91) 및 단계(S93)는 도 11의 단계(S71) 및 단계(S73)와 동일한 과정이므로 이하 설명을 생략한다. 12 is a flowchart illustrating a method of using a memory of a host terminal in a storage device according to another exemplary embodiment of the present invention. For convenience of description, the configuration shown in FIGS. 1 to 10 described above will be described with reference to the corresponding reference numerals. 1, 11, and 12, step S91 and step S93 are the same processes as steps S71 and S73 of FIG. 11, and thus descriptions thereof will be omitted.

호스트 단말(50)은 저장장치(60)가 접속됨을 확인하거나 또는 프로그램(65)이 실행됨을 확인한다(S95).The host terminal 50 confirms that the storage device 60 is connected or confirms that the program 65 is executed (S95).

단계(S95)에서 저장장치(60)가 접속됨을 확인하거나 또는 프로그램(65)이 실행됨을 확인한 호스트 단말(50)은 저장장치(60)의 가용 메모리 사이즈를 체크하는 체크메시지를 전송한다(S97).The host terminal 50 confirming that the storage device 60 is connected in step S95 or confirming that the program 65 is executed transmits a check message for checking the available memory size of the storage device 60 (S97). .

단계(S97)에서 체크메시지를 수신한 저장장치(60)는 단계(S93)에서 프로그램(65)에서 요청된 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈를 초과한 경우, 체크메시지에 대한 응답으로 호스트 단말(50)로 메모리 할당 요청메시지를 전송한다(S99).The storage device 60 receiving the check message in step S97 responds to the check message if the memory size requested by the program 65 in step S93 exceeds the available memory size of the storage device 60. In step S99, the memory allocation request message is transmitted to the host terminal 50.

단계(S99)에서 메모리 할당 요청메시지를 수신한 호스트 단말(50)은 현재 호스트 단말(50)의 가용 메모리 사이즈를 확인하여, 프로그램(65)이 요청한 메모리 사이즈가 호스트 단말(50)의 가용 메모리 사이즈 이하임을 확인한다(S101).The host terminal 50 that has received the memory allocation request message in step S99 checks the available memory size of the current host terminal 50, so that the memory size requested by the program 65 is the available memory size of the host terminal 50. Confirm that the following (S101).

이때, 호스트 단말(50)은 복수의 프로그램이 실행이 가능하고, 호스트 단말(50)는 별개의 복수의 프로그램과 함께 저장장치(60)에서 실행되는 각 프로그램(65)마다 이용할 수 있도록 메모리를 할당할 수 있으며, 호스트 단말(50)은 프로그램(65)에 할당된 가용 메모리 사이즈를 확인하여, 프로그램(65)이 참조하는 메모리 사이즈가 프로그램(65)에 할당된 가용 메모리 사이즈 이하임을 확인할 수 있다. In this case, the host terminal 50 may execute a plurality of programs, and the host terminal 50 may allocate a memory to be used for each program 65 executed in the storage device 60 together with a plurality of separate programs. The host terminal 50 may check the available memory size allocated to the program 65 to confirm that the memory size referenced by the program 65 is less than or equal to the available memory size allocated to the program 65.

단계(S101)에서 호스트 단말(50)의 가용 메모리를 확인한 호스트 단말(50)은 메모리 할당 요청메시지를 참조하여, 프로그램(65)이 참조하는 메모리 사이즈만큼 메모리를 할당한다(S103).After checking the available memory of the host terminal 50 in step S101, the host terminal 50 allocates the memory as much as the memory size referred to by the program 65 by referring to the memory allocation request message (S103).

이때, 단계(S101)에서 프로그램(65)에서 참조하는 메모리 사이즈가 가용 메모리 사이즈 또는 프로그램(65)에 할당된 가용 메모리 사이즈를 초과함을 확인하면, 저장장치(60)로 에러메시지를 전송하며, 사용자가 인식할 수 있도록 출력부(55)를 통해 메모리부족메시지를 출력할 수 있다.At this time, if it is determined in step S101 that the memory size referenced by the program 65 exceeds the available memory size or the available memory size allocated to the program 65, an error message is transmitted to the storage device 60, The memory shortage message may be output through the output unit 55 to be recognized by the user.

이하 단계(S105) 내지 단계(S111)는 도 11의 단계(S79) 내지 단계(S85)와 동일한 과정이므로 설명을 생략한다. Since the steps S105 to S111 are the same processes as the steps S79 to S85 in FIG. 11, description thereof will be omitted.

한편, 도 9 내지 도 12에서 상술한 프로그램(65)은 실행형 컨텐츠(11)에서 분리된 분리 실행 대상 코드 블록(35)일 수 있으며, 이와 같은 분리 실행 대상 코드 블록(35)은 권리객체(43)에 포함되어 호스트 단말(50)로부터 저장장치(60)로 전송되고, 호스트 단말(50)에 저장된 분리 실행 기반 컨텐츠(37)와 연동되어 실행될 수 있다. 이에 대한 자세한 설명은 도 1 내지 도 8에 상술하였으므로 설명을 생략한다. Meanwhile, the program 65 described above with reference to FIGS. 9 to 12 may be a separate execution target code block 35 separated from the executable content 11, and such a separate execution target code block 35 may be a right object ( 43 may be transmitted to the storage device 60 from the host terminal 50 and linked with the separated execution based content 37 stored in the host terminal 50. Detailed description thereof has been described above with reference to FIGS. 1 to 8, and thus description thereof will be omitted.

또한, 본 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.In addition, the memory using method of the host terminal in the storage device according to the present embodiment may be implemented in the form of program instructions that may be executed by various computer means, and may be recorded on a computer-readable recording medium. The recording medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the recording medium may be those specially designed and constructed for the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. For example, the recording medium may be magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, or magnetic-optical media such as floptical disks. magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. Such hardware devices may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것은 아니며, 기술적 사상의 범주를 일탈함 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.As described above and described with reference to a preferred embodiment for illustrating the technical idea of the present invention, the present invention is not limited to the configuration and operation as shown and described as such, without departing from the scope of the technical idea It will be understood by those skilled in the art that many changes and modifications to the present invention are possible. And all such modifications and changes as fall within the scope of the present invention are therefore to be regarded as being within the scope of the present invention.

본 발명에 의하면 저장장치에서 호스트 단말의 메모리를 이용하기 위해 기존에 비해 별도의 장치를 필요로 하지 않아 추가적인 비용 발생을 최소화한다. 특히, 현대인은 시간, 장소에 구애 받지 않고 컨텐츠에 접근할 수 있길 원하는 점을 감안하면, 본 발명의 저장장치에서 호스트 단말의 메모리를 이용하는 방안은 그 활용도가 적지 않을 것이다.According to the present invention, additional costs are minimized because a separate device is not required to use the memory of the host terminal in the storage device. In particular, considering that modern people want to be able to access content regardless of time and place, the method of using the memory of the host terminal in the storage device of the present invention may not be useful.

10: 컨텐츠 제공 단말 11: 실행형 컨텐츠
21: 코드 영역 23: 데이터 영역
25: 베이식 블록 26: 스터브 코드
27: 베이식 블록 그룹 30: 컨텐츠 등록 서버
31: 분리 실행 기반 컨텐츠 구성 모듈 33: 프로파일링 및 분석 툴
35: 분리 실행 대상 코드 블록 37: 분리 실행 기반 컨텐츠
40: DRM서버 41: 암호화된 컨텐츠
43: 권리객체 44: 권리객체 발행이력
45: 서버송수신부 47: 서버저장부
49: 서버제어부 50: 호스트 단말
51: 단말통신부 55: 출력부
57: 단말제어부 60: 저장장치
61: 통신부 63: 저장부
65: 프로그램 67: 통신버스
69: 제어부 70: 네트워크
210: DOS 헤더 220: PE 헤더
233: 시동스터브 코드 230: 코드 영역
234: 스터브 코드 240: 데이터 영역
250: 임포트 영역 251: 시동 DLL
260: 익스포트 영역 270: 보안 영역
271: 암호화된 초기 코드 블록 300: 보조 실행 기능부
310: 인터페이싱 기능부 311: 모듈 제어부
313: 코드 분석부 315: 코드 조작부
317: 코드 변환부 319: 코드 암호화부
320: 패킹 기능부 330: 언패킹 기능부
340: 메모리 맵핑 기능부 350: OS API 매핑 기능부
360: 코드 복호화 기능부 610: 보조 실행 모듈
611: 실행 기능부 613: 작업 관리 기능부
615: 로딩 기능부 617: 장치 메모리 매핑 기능부
619: 장치 OS API 매핑 기능부 621: 장치 메모리 관리 기능부
623: ROM 관리 기능부
10: content providing terminal 11: executable content
21: code area 23: data area
25: basic block 26: stub cord
27: basic block group 30: content registration server
31: Separation run based content configuration module 33: Profiling and analysis tool
35: Detach Execution Target Code Block 37: Detach Execution Based Content
40: DRM server 41: encrypted content
43: rights object 44: history of rights object issuance
45: server transmission and reception unit 47: server storage unit
49: server control unit 50: host terminal
51: terminal communication unit 55: output unit
57: terminal controller 60: storage device
61: communication unit 63: storage unit
65: Program 67: Communication bus
69: control unit 70: network
210: DOS header 220: PE header
233: start stub code 230: code area
234: stub code 240: data area
250: Import region 251: Startup DLL
260: export area 270: security area
271: Initial encrypted code block 300: Secondary execution functionality
310: interfacing function unit 311: module control unit
313: code analysis unit 315: code operation unit
317: code conversion unit 319: code encryption unit
320: packing function unit 330: unpacking function unit
340: memory mapping function 350: OS API mapping function
360: code decoding function unit 610: auxiliary execution module
611: execution function unit 613: job management function unit
615: loading function 617: device memory mapping function
619: Device OS API mapping function 621: Device memory management function
623: ROM management function

Claims (27)

실행 중인 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 메모리 할당 요청메시지를 전송하고, 할당된 메모리 주소값을 수신하는 저장장치;
상기 저장장치로부터 상기 메모리 할당 요청메시지를 수신하면, 메모리를 할당하고, 상기 저장장치로 상기 할당된 메모리 주소값을 전송하는 호스트 단말;
을 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템.
A storage device which transmits a memory allocation request message and receives an allocated memory address value when it is confirmed that the memory size referenced by the executing program exceeds the available memory size;
A host terminal for allocating a memory and transmitting the allocated memory address value to the storage device upon receiving the memory allocation request message from the storage device;
The memory utilization system of the host terminal in a storage device comprising a.
데이터 송수신을 위한 통신부;
프로그램을 저장하는 저장부;
상기 프로그램 실행 중에 상기 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 상기 통신부를 통해 호스트 단말로 메모리 할당 요청메시지를 전송하고, 상기 통신부를 통해 상기 호스트 단말로부터 할당된 메모리 주소값을 수신하는 제어부;
를 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
Communication unit for transmitting and receiving data;
A storage unit for storing a program;
If the memory size referred to by the program exceeds the available memory size during execution of the program, the memory allocation request message is transmitted to the host terminal through the communication unit, and the memory address value allocated from the host terminal is transmitted through the communication unit. Receiving control unit;
Storage device in the memory using system of the host terminal in the storage device comprising a.
제2항에 있어서, 상기 제어부는,
상기 프로그램이 참조한 메모리 사이즈가 상기 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하면 상기 메모리 할당 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 2, wherein the control unit,
And when the memory size referred to by the program exceeds the available memory size allocated to the program, transmitting the memory allocation request message.
제2항에 있어서, 상기 제어부는,
상기 통신부를 통해 상기 할당된 메모리 주소값을 전송하며, 상기 실행 중인 프로그램의 데이터를 전달하거나 상기 전달한 데이터의 반환, 삭제 또는 변경을 요청하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 2, wherein the control unit,
The memory device transmits the allocated memory address value through the communication unit, and transmits the data of the executing program or requests to return, delete or change the transferred data. Storage.
제2항에 있어서, 상기 제어부는,
상기 실행 중인 프로그램이 상기 할당된 메모리 참조를 해제하거나 상기 프로그램이 종료되는 경우, 상기 통신부를 통해 상기 호스트 단말로 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 2, wherein the control unit,
When the running program releases the allocated memory reference or when the program ends, the allocated memory address value and a memory release request message are transmitted to the host terminal through the communication unit. Storage device in the memory utilization system of the terminal.
제5항에 있어서, 상기 제어부는,
상기 실행 중인 프로그램이 상기 할당된 메모리 참조를 해제하거나 상기 프로그램이 종료되는 경우, 상기 호스트 단말의 메모리가 상기 프로그램에 할당됨을 확인하여 상기 메모리 주소값 및 상기 메모리 해제 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 5, wherein the control unit,
When the running program releases the allocated memory reference or when the program is terminated, confirming that the memory of the host terminal is allocated to the program and transmitting the memory address value and the memory release request message. Storage device in the memory utilization system of the host terminal in the storage device.
제2항에 있어서, 상기 제어부는,
상기 통신부를 통해 상기 호스트 단말로부터 상기 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 상기 체크메시지에 대한 응답으로 상기 통신부를 통해 상기 호스트 단말로 상기 메모리 할당 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 2, wherein the control unit,
When the check message to check the available memory size from the host terminal via the communication unit, the storage device, characterized in that for transmitting the memory allocation request message to the host terminal through the communication unit in response to the check message Storage device in the memory utilization system of the host terminal.
제2항에 있어서,
상기 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 2,
The program storage device in a memory using system of the host terminal in the storage device, characterized in that the separate execution target code block.
제8항에 있어서, 상기 제어부는,
상기 호스트 단말로부터 패킹된 스택 정보 및 레지스터 정보를 수신하면, 상기 분리 실행 대상 코드 블록의 시작점(entry point)을 호출하여 상기 분리 실행 대상 코드 블록의 실행을 시작하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 8, wherein the control unit,
When receiving the packed stack information and the register information from the host terminal, the host terminal in the storage device to start the execution of the separation execution target code block by calling the entry point (entry point) of the separation execution target code block. Storage in the system of memory utilization.
제8항에 있어서, 상기 제어부는,
상기 분리 실행 대상 코드 블록을 실행한 후, 결과값을 상기 호스트 단말로 반환하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 8, wherein the control unit,
And a result value is returned to the host terminal after the separation execution target code block is executed.
제8항에 있어서,
상기 분리 실행 대상 코드 블록은 권리객체(Rights Object)에 포함되어 상기 호스트 단말로부터 수신한 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
The method of claim 8,
The separation execution target code block is included in a Rights Object and is received from the host terminal.
데이터 송수신을 위한 단말통신부;
저장장치 내에서 프로그램 실행 중 상기 단말통신부를 통해 상기 저장장치로부터 메모리 할당 요청메시지를 수신하면, 상기 메모리 할당 요청메시지를 참조하여 메모리를 할당하고, 상기 단말통신부를 통해 상기 저장장치로 상기 할당된 메모리 주소값을 전송하는 단말제어부;
를 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
Terminal communication unit for transmitting and receiving data;
When a memory allocation request message is received from the storage device through the terminal communication unit during program execution in a storage device, the memory is allocated with reference to the memory allocation request message, and the allocated memory is stored in the storage device through the terminal communication unit. Terminal control unit for transmitting the address value;
The host terminal in the memory using system of the host terminal in the storage device comprising a.
제12항에 있어서, 상기 단말제어부는,
상기 저장장치가 접속됨을 확인하거나 또는 상기 프로그램이 실행됨을 확인하면, 주기적으로 상기 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
The method of claim 12, wherein the terminal control unit,
When the storage device is connected or the program is executed, the storage device periodically transmits a check message for checking the available memory size of the storage device. Terminal.
제12항에 있어서, 상기 단말제어부는,
상기 메모리 할당 요청메시지를 수신하면, 상기 메모리 할당 요청메시지를 참조하여 상기 프로그램이 참조한 메모리 사이즈가 상기 호스트 단말의 가용 메모리 사이즈 또는 상기 호스트 단말에서 상기 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 상기 메모리를 할당하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
The method of claim 12, wherein the terminal control unit,
When the memory allocation request message is received, the memory allocation request message is checked to determine whether the memory size referenced by the program is equal to or less than the available memory size of the host terminal or the available memory size allocated to the program by the host terminal. A host terminal in a memory using system of a host terminal in a storage device, characterized by allocating memory.
제12항에 있어서, 정보표현을 하는 출력부;를 더 포함하고,
상기 단말제어부는, 상기 메모리 할당 요청메시지를 수신하면, 상기 메모리 할당 요청메시지를 참조하여 상기 프로그램이 요청한 메모리 사이즈가 상기 호스트 단말의 가용 메모리 사이즈 또는 상기 호스트 단말에서 상기 프로그램에 할당된 가용 메모리 사이즈를 초과하는 경우, 상기 출력부를 통해 메모리부족메시지를 출력하며, 상기 단말통신부를 통해 상기 저장장치로 에러메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
13. The apparatus of claim 12, further comprising an output unit for expressing information.
The terminal controller, when the memory allocation request message is received, refers to the memory allocation request message so that the memory size requested by the program is equal to the available memory size of the host terminal or the available memory size allocated to the program at the host terminal. If exceeded, a memory shortage message is output through the output unit, and an error message is transmitted to the storage device through the terminal communication unit.
제12항에 있어서, 상기 단말제어부는,
상기 단말통신부를 통해 상기 저장장치로부터 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 상기 할당된 메모리를 해제하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
The method of claim 12, wherein the terminal control unit,
And when the allocated memory address value and the memory release request message are received from the storage device through the terminal communication unit, release the allocated memory.
제16항에 있어서,
상기 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
The method of claim 16,
The program terminal is a host terminal in the memory using system of the host terminal in the storage device, characterized in that the separate execution target code block.
저장장치가, 실행 중인 프로그램이 참조한 메모리 사이즈가 상기 저장장치의 가용 메모리 사이즈를 초과함을 확인하는 확인단계;
상기 저장장치가 호스트 단말로 메모리 할당 요청메시지를 전송하는 제1 전송단계;
상기 저장장치가 상기 호스트 단말로부터 상기 호스트 단말에 할당된 메모리 주소값을 수신하는 주소값 수신단계;
를 포함하는 저장장치에서 호스트 단말의 메모리 이용 방법.
Confirming, by the storage device, that the memory size referenced by the running program exceeds the available memory size of the storage device;
A first transmission step of the storage device transmitting a memory allocation request message to a host terminal;
An address value receiving step of the storage device receiving a memory address value allocated to the host terminal from the host terminal;
Memory usage method of the host terminal in a storage device including a.
제18항에 있어서, 상기 확인단계는,
상기 저장장치가, 상기 프로그램이 참조한 메모리 사이즈가 상기 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
The method of claim 18, wherein the checking step,
And the storage device confirms that the memory size referred to by the program exceeds the available memory size allocated to the program.
제18항에 있어서, 상기 주소값 수신단계 이후에,
상기 저장장치가, 상기 실행 중인 프로그램이 상기 할당된 메모리 참조를 해제하거나 상기 프로그램이 종료되는 경우, 상기 호스트 단말로 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 제2 전송단계;
를 더 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
19. The method of claim 18, wherein after the address value receiving step,
Transmitting, by the storage device, the allocated memory address value and a memory release request message to the host terminal when the running program releases the allocated memory reference or when the program ends;
Method of using a memory of the host terminal in the storage device further comprising a.
제18항에 있어서, 상기 제1 전송단계는,
상기 저장장치가, 상기 호스트 단말로부터 상기 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 상기 체크메시지에 대한 응답으로 상기 메모리 할당 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
The method of claim 18, wherein the first transmission step,
When the storage device receives a check message for checking an available memory size of the storage device from the host terminal, the storage device transmits the memory allocation request message in response to the check message. How memory is used.
호스트 단말이, 저장장치 내에서 프로그램 실행 중 상기 저장장치로부터 메모리 할당 요청메시지를 수신하는 수신단계;
상기 호스트 단말이 상기 메모리 할당 요청메시지를 참조하여 메모리를 할당하는 할당단계;
상기 호스트 단말이 상기 저장장치로 상기 할당된 메모리 주소값을 전송하는 제1 전송단계;
를 포함하는 저장장치에서 호스트 단말의 메모리 이용 방법.
A receiving step of receiving, by the host terminal, a memory allocation request message from the storage device during program execution in the storage device;
An allocating step of allocating a memory by the host terminal by referring to the memory allocation request message;
A first transmission step of transmitting, by the host terminal, the allocated memory address value to the storage device;
Memory usage method of the host terminal in a storage device including a.
제21항에 있어서, 상기 할당단계는,
상기 호스트 단말이 상기 메모리 할당 요청메시지를 참조하여 상기 프로그램이 참조하는 메모리 사이즈가 상기 호스트 단말의 가용 메모리 사이즈 또는 상기 호스트 단말에서 상기 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 상기 메모리를 할당하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
The method of claim 21, wherein the assigning step,
The host terminal determines that the memory size referenced by the program is equal to or smaller than the available memory size of the host terminal or the available memory size allocated to the program in the host terminal by referring to the memory allocation request message, and allocates the memory. Method of using a memory of the host terminal in a storage device, characterized in that.
제22항에 있어서, 상기 수신단계 이전에,
상기 호스트 단말이, 상기 저장장치가 접속됨을 확인하거나 또는 상기 프로그램이 실행됨을 확인하면, 주기적으로 상기 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 제2 전송단계;
를 더 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
The method of claim 22, wherein before the receiving step,
A second transmission step of, when the host terminal confirms that the storage device is connected or confirms that the program is executed, periodically transmitting a check message for checking an available memory size of the storage device;
Method of using a memory of the host terminal in the storage device further comprising a.
제22항에 있어서, 상기 제1 전송단계 이후에,
상기 호스트 단말이, 상기 저장장치로부터 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 상기 할당된 메모리를 해제하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
The method of claim 22, wherein after the first transmission step,
And when the host terminal receives the allocated memory address value and a memory release request message from the storage device, releases the allocated memory.
제18항 내지 제25항 중 어느 하나의 항에 있어서,
상기 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
The method according to any one of claims 18 to 25,
The program is a method of using a memory of the host terminal in the storage device, characterized in that the separate execution target code block.
제18항 내지 제25항 중 어느 하나의 항에 기재된 방법을 실행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.A computer-readable recording medium having recorded thereon a program for executing the method according to any one of claims 18 to 25.
KR1020100031121A 2009-07-30 2010-04-05 System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof KR101444070B1 (en)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR20090070229 2009-07-30
KR1020090070230 2009-07-30
KR20090070231 2009-07-30
KR1020090070229 2009-07-30
KR1020090070231 2009-07-30
KR20090070230 2009-07-30

Publications (2)

Publication Number Publication Date
KR20110013194A true KR20110013194A (en) 2011-02-09
KR101444070B1 KR101444070B1 (en) 2014-09-26

Family

ID=43772987

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020100031121A KR101444070B1 (en) 2009-07-30 2010-04-05 System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof
KR1020100032320A KR101498919B1 (en) 2009-07-30 2010-04-08 System and method for digital rights management based on storage device, and recording medium thereof
KR1020100032361A KR101366669B1 (en) 2009-07-30 2010-04-08 Method for communicating based on UMS, host terminal, and medium recorded program thereof
KR1020100033191A KR101384536B1 (en) 2009-07-30 2010-04-12 System and method for calling API of host terminal in smart-card, host terminal and smart-card, and recording medium thereof

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020100032320A KR101498919B1 (en) 2009-07-30 2010-04-08 System and method for digital rights management based on storage device, and recording medium thereof
KR1020100032361A KR101366669B1 (en) 2009-07-30 2010-04-08 Method for communicating based on UMS, host terminal, and medium recorded program thereof
KR1020100033191A KR101384536B1 (en) 2009-07-30 2010-04-12 System and method for calling API of host terminal in smart-card, host terminal and smart-card, and recording medium thereof

Country Status (1)

Country Link
KR (4) KR101444070B1 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397666B1 (en) * 2011-09-30 2014-05-26 주식회사 케이티 Method for controlling access right of application, and user device
KR101499890B1 (en) * 2013-05-15 2015-03-06 주식회사 코스콤 Low Latency Framework System
KR101490424B1 (en) * 2013-07-17 2015-02-09 양진호 Apparatus and method for transmitting digital contents using termial authentication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6150979A (en) * 1984-08-16 1986-03-13 Takeda Chem Ind Ltd Pyridine derivative and preparation thereof
US6547150B1 (en) 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
JP2004070467A (en) 2002-08-02 2004-03-04 Kozo Niimura External storage device and computer system using same
KR100538219B1 (en) * 2002-12-18 2005-12-21 삼성전자주식회사 Virtual memory management method for printer using memory of host computer
KR100496506B1 (en) * 2003-10-21 2005-06-21 주식회사 텔레칩스 Method For Providing Extended USB Functions Using Standard UMS Communication
KR100704701B1 (en) * 2005-05-20 2007-04-06 주식회사 케이티프리텔 Method and Apparatus for editing music source using DRM in PC
KR100739715B1 (en) 2005-07-12 2007-07-13 삼성전자주식회사 Method and apparatus for performing an agreement of web services policy
CN100517236C (en) * 2006-04-03 2009-07-22 北京握奇数据系统有限公司 Intelligent card embedded operation system and its control method
KR100794345B1 (en) * 2006-07-04 2008-01-15 주식회사 모빌탑 Mobile Terminal Having UMS Data Communication Function and Method of Data Transmission Using The Same
US8317096B2 (en) * 2006-07-14 2012-11-27 Microsoft Corporation Smart card terminal side data and management framework
KR20080057015A (en) * 2006-12-19 2008-06-24 삼성전자주식회사 Method, apparatus and medium for playing of digital contents file in mobile terminal
KR101413064B1 (en) * 2007-01-15 2014-07-08 삼성전자주식회사 A method and an apparatus for obtaining right objects of contents in a mobile terminal
KR20090033975A (en) * 2007-10-02 2009-04-07 엘지전자 주식회사 Dispaly device and controlling method with plural memory

Also Published As

Publication number Publication date
KR20110013197A (en) 2011-02-09
KR101366669B1 (en) 2014-02-24
KR101498919B1 (en) 2015-03-09
KR20110013198A (en) 2011-02-09
KR101384536B1 (en) 2014-04-11
KR101444070B1 (en) 2014-09-26
KR20110013196A (en) 2011-02-09

Similar Documents

Publication Publication Date Title
US20050184165A1 (en) Method and appatatus for selecting a desired application on a smart card
US20050184164A1 (en) Method and apparatus for installing an application onto a smart card
US20050188360A1 (en) Method and apparatus for providing an application on a smart card
US9400668B2 (en) Computer program product containing instructions for providing a processor the capability of executing an application derived from a compiled form
KR101374159B1 (en) System and method for managing rights object using storage device, DRM-server and terminal, and recording medium thereof
US20050184163A1 (en) Method and apparatus for processing an application identifier from a smart card
CN101980160B (en) Implementing method for encrypted .NET program
US20060130128A1 (en) Process for compiling and executing software applications in a multi-processor environment
US9754104B2 (en) Method for securing Java bytecode
EP1575005B1 (en) Method and apparatus for processing an application identifier from a smart card
KR101444070B1 (en) System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof
CN114398029A (en) Operating system based on C language virtual machine
WO2022017242A1 (en) Method and apparatus for running second system application in first system, device, and medium
KR101442000B1 (en) Server for registering separating execution based contents, method thereof and computer recordable medium storing program performing the method
CN101593258B (en) System for realizing.Net virtual machine in software protection device and method thereof
Akram et al. An Introduction to Java Card Programming
KR20190060181A (en) Apparatus and Method of Providing Security, and Apparatus and Method of Executing Security for Protecting Code of Shared Object
Hansmann et al. Introduction to Smart Card Software
Guo Smart Cards and their Operating Systems
Markantonakis Java card technology and security

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170830

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180830

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190819

Year of fee payment: 6