KR101444070B1 - 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체 - Google Patents

저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체 Download PDF

Info

Publication number
KR101444070B1
KR101444070B1 KR1020100031121A KR20100031121A KR101444070B1 KR 101444070 B1 KR101444070 B1 KR 101444070B1 KR 1020100031121 A KR1020100031121 A KR 1020100031121A KR 20100031121 A KR20100031121 A KR 20100031121A KR 101444070 B1 KR101444070 B1 KR 101444070B1
Authority
KR
South Korea
Prior art keywords
memory
storage device
host terminal
program
terminal
Prior art date
Application number
KR1020100031121A
Other languages
English (en)
Other versions
KR20110013194A (ko
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/ko
Application granted granted Critical
Publication of KR101444070B1 publication Critical patent/KR101444070B1/ko

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

본 발명은 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체에 관한 것으로, 프로그램 실행 중에 저장장치가 프로그램으로부터 메모리 할당 요청을 수신하면, 요청된 메모리 사이즈가 저장장치의 가용 메모리 사이즈를 초과함을 확인하여 호스트 단말로 메모리 할당 요청메시지를 전송하고, 호스트 단말이 메모리를 할당하여 할당된 메모리 주소값을 저장장치로 전송하는 구성을 포함하며, 본 발명에 따르면 저장장치에서 호스트 단말의 메모리를 사용함으로써, 저장장치에서도 복잡도 높은 모듈이나 컨텐츠를 제공할 수 있으며, 저장장치 내에 컨텐츠 를 저장하여 보안을 향상시킬 수 있다.

Description

저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체{System and method for using memory of host terminal in storage device, host terminal and storage device, and recording medium thereof}
본 발명은 저장장치에서 호스트 단말의 메모리 이용 방법에 관한 것으로, 특히 저장장치 내 프로그램 실행 시 호스트 단말의 메모리를 이용하여 저장장치의 메모리를 보완하는 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체에 관한 것이다.
최근 메모리의 가격이 내려갔지만, 그래도 아직 낮은 가격은 아니어서 USB 메모리, 스마트 카드 등 보조 저장장치에서 사용되는 메모리는 아직 높은 가격대를 형성하고 있다. 이로 인해서 큰 용량의 메모리가 필요한 컨텐츠 및 모듈 개발이 제한이 될 수 밖에 없었다. 저장장치 사업은 보안이라는 초점아래 좁은 개발범위에서의 컨텐츠들만 개발이 되고 있다.
하지만 저장장치 산업의 발전은 기존 호스트 단말에 개발되었던 시스템 및 컨텐츠를 요구하게 되었고, 이러한 요구사항을 수용하기에는 저장장치의 하드웨어는 스펙과 성능에 문제점이 있다. 게다가 저장장치는 하드웨어적으로 대부분 호스트 단말의 전력 없이는 구동이 될 수 없고, 대부분의 모듈과 컨텐츠도 호스트 단말에 의지적인 부분이 많다.
본 발명은 상술한 종래의 문제점을 해결하기 위해 제안된 것으로서, 저장장치 내 프로그램을 실행할 때 호스트 단말에 있는 대용량 메모리를 사용하여 프로그램을 저장장치 내에서 구현할 수 있게 하는 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체를 제공하는데 그 목적이 있다.
상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템은, 실행 중인 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 메모리 할당 요청메시지를 전송하고, 할당된 메모리 주소값을 수신하는 저장장치 및 저장장치로부터 메모리 할당 요청메시지를 수신하면, 메모리를 할당하고, 저장장치로 할당된 메모리 주소값을 전송하는 호스트 단말을 포함한다.
상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치는, 데이터 송수신을 위한 통신부, 프로그램을 저장하는 저장부 및 프로그램 실행 중에 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 통신부를 통해 호스트 단말로 메모리 할당 요청메시지를 전송하고, 통신부를 통해 호스트 단말로부터 할당된 메모리 주소값을 수신하는 제어부를 포함한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 프로그램이 참조한 메모리 사이즈가 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하면 메모리 할당 요청메시지를 전송하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 통신부를 통해 할당된 메모리 주소값을 전송하며, 실행 중인 프로그램의 데이터를 전달하거나 전달한 데이터의 반환, 삭제 또는 변경을 요청하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 실행 중인 프로그램이 할당된 메모리 참조를 해제하거나 프로그램이 종료되는 경우, 통신부를 통해 호스트 단말로 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 실행 중인 프로그램이 할당된 메모리 참조를 해제하거나 프로그램이 종료되는 경우, 호스트 단말의 메모리가 프로그램에 할당됨을 확인하여 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 통신부를 통해 호스트 단말로부터 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 체크메시지에 대한 응답으로 통신부를 통해 호스트 단말로 메모리 할당 요청메시지를 전송하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 호스트 단말로부터 패킹된 스택 정보 및 레지스터 정보를 수신하면, 분리 실행 대상 코드 블록의 시작점(entry point)을 호출하여 분리 실행 대상 코드 블록의 실행을 시작하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 제어부는, 분리 실행 대상 코드 블록을 실행한 후, 결과값을 호스트 단말로 반환하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치에 있어서, 분리 실행 대상 코드 블록은 권리객체(Rights Object)에 포함되어 호스트 단말로부터 수신한 것을 특징으로 한다.
상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말은, 데이터 송수신을 위한 단말통신부 및 저장장치 내에서 프로그램 실행 중 단말통신부를 통해 저장장치로부터 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지를 참조하여 메모리를 할당하고, 단말통신부를 통해 저장장치로 할당된 메모리 주소값을 전송하는 단말제어부를 포함한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 단말제어부는, 저장장치가 접속됨을 확인하거나 또는 프로그램이 실행됨을 확인하면, 주기적으로 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 단말제어부는, 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지를 참조하여 프로그램이 참조한 메모리 사이즈가 호스트 단말의 가용 메모리 사이즈 또는 호스트 단말에서 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 메모리를 할당하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말은, 정보표현을 하는 출력부를 더 포함하고, 단말제어부는, 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지를 참조하여 프로그램이 요청한 메모리 사이즈가 호스트 단말의 가용 메모리 사이즈 또는 호스트 단말에서 프로그램에 할당된 가용 메모리 사이즈를 초과하는 경우, 출력부를 통해 메모리부족메시지를 출력하며, 단말통신부를 통해 저장장치로 에러메시지를 전송하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 단말제어부는, 단말통신부를 통해 저장장치로부터 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 할당된 메모리를 해제하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말에 있어서, 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 한다.
상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 저장장치가, 실행 중인 프로그램이 참조한 메모리 사이즈가 저장장치의 가용 메모리 사이즈를 초과함을 확인하는 확인단계, 저장장치가 호스트 단말로 메모리 할당 요청메시지를 전송하는 제1 전송단계 및 저장장치가 호스트 단말로부터 호스트 단말에 할당된 메모리 주소값을 수신하는 주소값 수신단계를 포함한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 확인단계는, 저장장치가, 프로그램이 참조한 메모리 사이즈가 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 주소값 수신단계 이후에, 저장장치가, 실행 중인 프로그램이 할당된 메모리 참조를 해제하거나 프로그램이 종료되는 경우, 호스트 단말로 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 제2 전송단계를 더 포함하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 제1 전송단계는, 저장장치가, 호스트 단말로부터 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 체크메시지에 대한 응답으로 메모리 할당 요청메시지를 전송하는 것을 특징으로 한다.
상술한 목적을 달성하기 위한 본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 호스트 단말이, 저장장치 내에서 프로그램 실행 중 저장장치로부터 메모리 할당 요청메시지를 수신하는 수신단계, 호스트 단말이 메모리 할당 요청메시지를 참조하여 메모리를 할당하는 할당단계 및 호스트 단말이 저장장치로 할당된 메모리 주소값을 전송하는 제1 전송단계를 포함한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 할당단계는, 호스트 단말이 메모리 할당 요청메시지를 참조하여 프로그램이 참조하는 메모리 사이즈가 호스트 단말의 가용 메모리 사이즈 또는 호스트 단말에서 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 메모리를 할당하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 수신단계 이전에, 호스트 단말이, 저장장치가 접속됨을 확인하거나 또는 프로그램이 실행됨을 확인하면, 주기적으로 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 제2 전송단계를 더 포함하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법은, 제1 전송단계 이후에, 호스트 단말이, 저장장치로부터 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 할당된 메모리를 해제하는 것을 특징으로 한다.
본 발명의 저장장치에서 호스트 단말의 메모리 이용 방법에 있어서, 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 한다.
본 발명은 또한 전술한 저장장치에서 호스트 단말의 메모리 이용 방법을 구현하는 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체를 제공한다.
본 발명에 의하면, 호스트 단말의 메모리를 사용하는 방법을 제공함으로써, 저장장치에서도 호스트 단말처럼 복잡도 높은 모듈이나 컨텐츠를 제공할 수 있으며, 다양한 서비스 컨텐츠 사업과 특화된 서비스들의 발전을 꾀할 수 있다.
또한, 저장장치 내에서 구현된 프로그램, 미디어, 이미지, 게임엔진 등은 저장장치 보안정책에 의해 보호됨으로써, 컨텐츠 보안을 향상 시킬 수 있는 이점이 있다.
도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 구성도이다.
도 2는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠의 데이터 구조를 보여주는 구성도이다.
도 3은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠의 구조를 나타내는 구성도이다.
도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠 구성 모듈을 나타내는 구성도이다.
도 5는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 도면이다.
도 6은 본 발명이 적용되는 디지털 저작권 관리 시스템의 분리 실행 기반 컨텐츠에서 보조 실행 기능부의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.
도 7은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 코드 복호화 기능부의 동작 흐름도이다.
도 8은 본 발명이 적용되는 디지털 저작권 관리 시스템의 저장 장치에서의 보조 실행 모듈의 구조를 나타낸 구성도이다.
도 9는 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 저장장치를 나타내는 구성도이다.
도 10은 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 호스트 단말을 나타내는 구성도이다.
도 11은 본 발명의 일 실시예에 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다.
도 12는 본 발명의 다른 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있는 바람직한 실시예를 상세히 설명한다. 다만, 본 발명의 바람직한 실시예에 대한 동작 원리를 상세하게 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략한다. 또한, 도면 전체에 걸쳐 유사한 기능 및 작용을 하는 부분에 대해서는 동일한 도면 부호를 사용한다.
본 명세서에 있어서 어느 하나의 구성요소가 다른 구성요소로 데이터 또는 신호를 '전송'하는 경우에는, 직접 데이터 또는 신호를 전송할 수 있으며 적어도 하나의 또 다른 구성요소를 통하여 데이터 또는 신호를 전송할 수 있음을 의미한다.
도 1은 본 발명이 적용되는 디지털 저작권 관리 시스템의 구성도이다.
도 1을 참조하면, 본 발명의 적용되는 디지털 저작권 관리 시스템은 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(30), DRM(Digital Rights Management) 서버(40), 호스트 단말(50) 및 호스트 단말(50)에 유무선 인터페이스를 매개로 연결된 저장장치(60)를 포함하여 구성된다. 본 발명의 저장장치에서 호스트 단말의 메모리 이용 시스템은 호스트 단말(50) 및 저장장치(60)를 포함하여 구성된다.
본 발명에 있어서, 실행형 컨텐츠(11)는 디지털 형태로 저장되고 유통되는 디지털 저작물로서, 실행되는 장치로 하여금 어떠한 기능을 할 수 있도록 복수의 명령어들을 포함하는 응용프로그램, 게임 프로그램, 각종 소프트웨어를 포함할 수 있다.
또한, '분리 실행'은 실행형 컨텐츠(11)가 두 개의 서로 다른 장치, 더 구체적으로는 호스트 단말(50)과 저장장치(60)의 연동을 통해 실행되는 것을 의미한다. 이러한 분리 실행을 구현하기 위해서, 호스트 단말(50)에는 코드 영역에서 선택된 코드 블록(이하 분리 실행 대상 코드 블록이라 함)이 제거된 분리 실행 기반 컨텐츠(37)가 저장되고, 저장장치(60)에는 실행형 컨텐츠(11)에서 제거되어 저장장치(60)에서 실행 가능하도록 변환한 분리 실행 대상 코드 블록(35)이 저장된 상태에서 호스트 단말(50)이 분리 실행 기반 컨텐츠(37)에서 제거된 부분(분리 실행 대상 코드 블록)에 대한 결과값을 저장장치(60)에 요청하여 반환 받는 형태로 이루어진다.
도 1에서, 네트워크(70)는 컨텐츠 제공 단말(10), 컨텐츠 등록 서버(30), DRM 서버(40) 및 호스트 단말(50)간의 데이터 전송 및 정보 교환을 위한 일련의 데이터 송수신 동작을 수행한다. 네트워크(70)는 IP를 통하여 대용량 데이터의 송수신 서비스 및 끊김없는 데이터 서비스를 제공하는 IP망으로, IP를 기반으로 서로 다른 망을 통합한 IP망 구조인 ALL-IP망일 수 있다. 또한 네트워크(70)는 유선통신망, 이동통신망, WiBro(Wireless Broadband)망, HSDPA(High-Speed Downlink Packet Access)망, 위성통신망 또는 기타 널리 공지되었거나 향후 개발될 유무선 또는 이들의 결합망을 포함한다.
컨텐츠 제공 단말(10)은 컨텐츠 제공자가 운용하는 단말로서, 네트워크(70)를 통하여 컨텐츠 등록 서버(30)와 통신을 수행하고, 컨텐츠 제공자가 개발한 실행형 컨텐츠(11)를 저장하고 있으며, 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)를 전송한다.
컨텐츠 제공 단말(10)은 컨텐츠 등록 서버(30)로부터 내려 받은 프로파일링 및 분석 툴(33)을 실행하여 등록할 실행형 컨텐츠(11)에 대해 동적 프로파일링(dynamic profiling) 및 정적 분석(static analysis)(이하, '프로파일링 및 분석'이라 함)을 통하여 분리 실행 될 실행형 컨텐츠(11)에서 프로파일 데이터(Profile Data)를 생성하고, 코드 블록 선택 규칙을 입력 받으며, 생성한 프로파일 데이터, 입력 받은 코드 블록 선택 규칙 및 분리 실행 될 실행형 컨텐츠(11)를 컨텐츠 등록 서버(30)로 전송한다.
더 구체적으로, 프로파일링 및 분석 툴(33)은 사용자 우선 (User Preference) 정보를 읽어와 어떠한 부분을 중심으로 프로파일링할 지를 결정한 후, 해당하는 PIN 툴을 로드한다. 그 후, 대상 실행형 컨텐츠(11)를 메모리에 로드하고, PIN 툴을 삽입하여 실행시키고, 그 결과(프로파일 데이터)를 저장한다.
프로파일 데이터는, 필수적으로, 코드 블록 시작 주소, 코드 블록 종료 주소, 코드 블록 호출 회수(프로파일 중에 호출되는 횟수임), 코드 블록 크기, 및 플로팅 포인트 연산 유무를 포함한다. 이외에, 선택적으로, 코드 블록의 호스트 메모리 참조 회수, 코드 블록의 OS API를 호출하는 회수, 코드 블록의 실행 시간, 코드 블록에서 수행되는 전체 명령어(instruction) 개수, 코드 블록의 실행을 위해 전달되는 파라미터 개수 및 타입, 코드 블록의 실행 후에 반환되는 값의 종류가 포함될 수 있다.
코드 블록 선택 규칙은, 프로파일 데이터의 각 항목에 대해 부여되는 가중치를 설정하기 위한 것으로서, 가중치를 설정할 수 있는 사용자 우선 정보로는, 프로파일링에 의해 선택될 분리 실행 대상 코드 블록(35)에 대한 호출 빈도, 호출 위치, 호스트 메모리 참조 빈도, 및 OS API 참조 빈도 및 분리 실행 대상 코드 블록(35)이 저장될 저장장치(60)의 하드웨어 요소를 포함한다.
여기서, 호출 빈도는 실행형 컨텐츠(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 속도 등을 포함한다.
이상과 같은 코드 블록 선택 규칙에 따라서 프로파일 데이터의 각 항목에 가중치를 달리 부여함으로써, 추출되는 분리 실행 대상 코드 블록(35)이 달라지며, 그에 따라서 보안 레벨이 달라진다.
한편, 코드 블록 선택 규칙은 실행형 컨텐츠(11)의 성격에 따라서 설정할 수 있다. 예를 들어, 실행형 컨텐츠(11)가 게임 프로그램인 경우 실행 속도가 중요하므로, 호스트 메모리 참조 빈도 및 OS API 참조 빈도를 최소로 낮추는 것이 바람직하며, 이 경우, 호스트 메모리 및 OS API를 최소로 참조하는 베이식 코드 블록을 분리 실행 대상 코드 블록(35)으로 선택함으로써, 실행형 컨텐츠(11)의 실행 속도 저하를 최소화시킬 수 있다. 또한, 분리 실행 기반 컨텐츠(37)의 판매에 있어서, 저장장치(60)의 가격을 최대한 낮추고 싶은 경우, 저장장치(60)의 하드웨어 요소에 대한 가중치를 낮게 지정하면 된다. 이에 의하면, 저장장치(60)의 가격은 낮출 수 있는 반면, 실행 속도가 다소 낮아질 수 있음을 감안하여야 한다.
상술한 코드 블록 선택 규칙은, 그 설정 가능한 항목을 더 다양화시킬 수 있음은 물론이다.
컨텐츠 등록 서버(30)는 컨텐츠 제공 단말(10)로부터 수신한 실행형 컨텐츠(11) 정보를 웹페이지를 통해 호스트 단말(50)로 제공하고, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)을 생성하여 DRM서버(40)로 전송한다. 이때, 분리 실행 대상 코드 블록(35)은 애플릿(applet)과 같은 저장장치(60)용 프로그램에 포함되어 저장장치(60)로 제공될 수도 있다.
한편, 실행형 컨텐츠(11)는 분리 실행 기반 컨텐츠(37)로 변환되며, 후술하는 DRM서버(40)는 분리 실행 기반 컨텐츠(37)를 암호화된 컨텐츠(41)로 패키징하여 호스트 단말(50)로 제공하므로, 사용자에게 제공되는 객체는 암호화된 컨텐츠(41)가 될 수 있으나, 이하 설명의 편의를 위해 사용자가 웹페이지를 통해 확인하고 구매 등을 결정하는 객체는 실행형 컨텐츠(11)라 한다.
컨텐츠 등록 서버(30)는 분리 실행 기반 컨텐츠 구성 모듈(31)을 통해, 실행형 컨텐츠(11) 기반으로 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 생성하며 상세한 과정은 후술한다.
컨텐츠 등록 서버(30)는 사용자가 웹페이지를 통해 실행형 컨텐츠(11)를 구매할 수 있도록 실행형 컨텐츠(11) 리스트와 해당 실행형 컨텐츠(11)에 대한 상세 정보를 제공한다.
구체적으로, 호스트 단말(50)로부터 웹페이지 상에 나타난 실행형 컨텐츠(11)의 다운로드를 요청신호를 수신하면, 컨텐츠 등록 서버(30)는 해당 실행형 컨텐츠(11)의 DD(Download Descriptor)정보를 호스트 단말(50)로 전송한다.
DD정보는 실행형 컨텐츠(11) 또는 권리객체(43)에 대한 간략 정보 예컨대 파일명, 파일사이즈, 파일제공업체, 해당 실행형 컨텐츠(11) 또는 권리객체(43)의 URL정보 등을 말하며, 실행형 컨텐츠(11) 또는 권리객체(43)의 다운로드 이전에 수신하여 버퍼에 임시 저장되고, 해당 실행형 컨텐츠(11) 또는 권리객체(43) 다운로드 완료 시 자동으로 삭제된다.
또한, 컨텐츠 등록 서버(30)는 호스트 단말(50)로부터 선택한 실행형 컨텐츠(11)에 대한 권리객체(43)의 구매, 재구매 요청신호를 수신하면, DRM서버(40)로 구매 또는 재구매 트리거(Trigger)를 요청하고, DRM서버(40)로부터 해당 권리객체(43)에 대한 트리거 및 DD정보를 수신하면 호스트 단말(50)로 전송한다. 또한, 컨텐츠 등록 서버(30)는 호스트 단말(50)로부터 선택한 실행형 컨텐츠(11)에 대한 권리객체(43)의 환불 또는 양도 요청신호를 수신하면, DRM서버(40)로 환불 또는 양도 트리거를 요청하고 DRM서버(40)로부터 해당 트리거를 수신하면 호스트 단말(50)로 전송한다.
트리거(Trigger)는 DRM서버(40)와 호스트 단말(50) 간의 권리객체(43)의 구매 또는 재구매, 환불 또는 양도, 저장장치(60)의 등록 등을 위한 프로토콜 수행을 시작 시키는 메시지이다.
DRM서버(40)는 컨텐츠 등록 서버(30)로부터 수신한 분리 실행 기반 컨텐츠(37)를 패키징하며, 권리객체(43)를 생성, 관리, 발행하고 발행한 권리객체(43)에 대한 내역을 저장하는 서버이다.
여기서, 권리객체(43)는 사용자가 구매한 실행형 컨텐츠(11)에 대해 실행형 컨텐츠(11)와 사용자 사이 구매 관계 및 사용 권한을 명시하고 있다.
구체적으로, 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)에 포함시켜 생성할 수 있다.
즉, 암호화된 컨텐츠(41)는 원본인 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 스터브 코드로 대체한 분리 실행 기반 컨텐츠(37)를 패키징한 결과물이다.
여기서, CEK를 생성하며 암호화된 컨텐츠(41)로 패키징할 때, AES(Advanced Encryption Standard), RSA(Rivest-Shamir-Adelman), ECC(Elliptic Curve Cryptosystem), 시드(SEED) 블록 암호 알고리즘, DES(Data Encryption Standard) 등 암호화 알고리즘이 사용될 수 있으나, 이에 한정되는 것은 아니다.
또한, DRM서버(40)는 컨텐츠 등록 서버(30)로부터 사용자가 구매, 재구매 하고자 하는 권리객체(43)에 대한 구매 또는 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거 및 DD정보를 생성하여 컨텐츠 등록 서버(30)로 전송하고, 컨텐츠 등록 서버(30)로부터 사용자가 환불 또는 양도 하고자 하는 권리객체(43)에 대한 환불 또는 양도 트리거를 요청 받으면, 해당 권리객체(43)에 대한 트리거를 생성하여 컨텐츠 등록 서버(30)로 전송한다.
이어, 호스트 단말(50)로부터 컨텐츠 다운로드를 요청 받으면 해당 암호화된 컨텐츠(41)를 전송하고, 권리객체(43)의 구매 또는 재구매 요청을 받으면 해당 권리객체(43)를 전송하며, 권리객체(43)의 환불 또는 양도 요청을 받으면 저장장치(60)에 저장된 권리객체(43)의 삭제를 요청한다.
호스트 단말(50)은 실행형 컨텐츠(11)의 실행이 가능한 독립된 CPU(Central Processing Unit)를 가진 컴퓨팅 장치, 예컨대 PC, 노트북, 워크스테이션, 키오스크(Kiosk), ATM(Automated Teller Machine), PDA(Personal Digital Assistants) 등을 통칭하며, 다수의 사용자들에 의해 접근이 자유로운 공용 컴퓨터를 포함한다. 호스트 단말(50)은 네트워크(70)를 통하여 컨텐츠 등록 서버(30) 및 DRM서버(40)와 통신을 수행하고, 유무선 인터페이스를 매개로 연결된 저장장치(60)와 통신을 수행한다.
여기서 유무선 인터페이스는 USB, USB2, Serial/Parallel Port, Ethernet, TCP/IP, 통신 케이블 등을 이용한 유선 통신 방식과 블루투스(Bluetooth), 지그비(zigbee), 루비(Rubee), 적외선데이터통신(IrDA; Infrared Data Association), 초광대역방식(UWB; Ultra Wide Broadband), NFC(Near Field Communication), 와이브로(Wibro) 등을 이용한 근거리 무선통신 방식이 사용될 수 있다.
구체적으로, 호스트 단말(50)은 컨텐츠 등록 서버(30)가 제공하는 웹페이지에 접속하여, 웹페이지 상에 나타난 실행형 컨텐츠(11)를 선택하고 컨텐츠 등록 서버(30)로 다운로드를 요청한다. 이어, 컨텐츠 등록 서버(30)로부터 해당 실행형 컨텐츠(11)의 DD정보를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)를 수신한다.
또한, 사용자가 권리객체(43)를 구매, 재구매 하고자 할 때, 호스트 단말(50)은 컨텐츠 등록 서버(30)로 실행형 컨텐츠(11)에 대한 권리객체(43)의 구매 또는 재구매 요청신호를 전송한다. 이어서, 컨텐츠 등록 서버(30)로부터 해당 권리객체(43)에 대한 트리거(Trigger) 및 DD정보를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 해당 권리객체(43)를 요청한다. 이후, 수신한 권리객체(43)를 유무선 인터페이스를 매개로 연결된 저장장치(60)로 전달한다. 덧붙여, 사용자가 권리객체(43)를 구매, 재구매 하고자 할 때, 호스트 단말(50)은 컨텐츠 등록 서버(30)로 권리객체(43)에 대한 환불 또는 양도 요청신호를 전송한다. 이어서, 컨텐츠 등록 서버(30)로부터 해당 권리객체(43)에 대한 트리거(Trigger)를 수신하면, 이를 이용하여 DRM서버(40)에 접속하여 환불 또는 양도를 요청한다.
예를 들어, 호스트 단말(50)의 사용자는 사용하고자 하는 실행형 컨텐츠(11)에 대한 권리객체(43)를 이미 보유하고 있어 해당 실행형 컨텐츠(11)에 대한 암호화된 컨텐츠(41)만을 필요로 할 수 있으며, 처음 실행형 컨텐츠(11)를 구매하는 경우나 권리객체(43)가 만료되어 재구매하는 경우와 같이 해당 실행형 컨텐츠(11)에 대한 권리객체(43)만을 필요로 할 수 있고, 또한 암호화된 컨텐츠(41) 및 권리객체(43) 모두를 필요로 할 수 있다.
또한, 호스트 단말(50)은 암호화된 컨텐츠(41) 실행을 시작하면, 저장장치(60)에 권리객체(43)의 저장 여부를 확인한다. 저장장치(60)에 권리객체(43)가 저장되어 있는 경우, 저장장치(60)로부터 권리객체(43)에 포함된 복호화키를 요청하여 암호화된 컨텐츠(41)를 복호화하게 된다. 반면, 저장장치(60)에 권리객체(43)가 저장되어 있지 않은 경우 컨텐츠 등록 서버(30)로 구매 또는 재구매 요청신호를 전송할 수 있다. 또한, 저장장치(60)에 분리 실행 대상 코드 블록(35)이 저장되어 있는 경우, 호스트 단말(50)은 복호화키를 이용하여 암호화된 컨텐츠(41)를 분리 실행 기반 컨텐츠(37)로 복호화한 후, 유무선 인터페이스를 통해 연결된 저장 장치(60)와 연동하여 암호화된 컨텐츠(41)에 대한 분리 실행을 수행할 수 있다.
저장장치(60)는 프로세서를 내장하고 있는 각종 휴대식 장치, 예컨대 USB 메모리, 플래시 메모리 카드, 이에 상응하는 각종 이동식, 휴대식 저장매체(예컨대, SD(Secure Digital) 메모리 카드, microSD 메모리 카드, ISO 7816 표준의 휴대형 저장장치 등)를 통칭한다. 저장장치(60)는 유무선 인터페이스를 매개로 호스트 단말(50)과 연결되며, 호스트 단말(50)에 설치된 암호화된 컨텐츠(41)에 대한 권리객체(43)를 저장한다.
상술한 바와 같이, 권리객체(43)에는 암호화된 컨텐츠(41)를 복호화 할 수 있는 복호화키를 포함하며, 이때 분리 실행 기반 컨텐츠(37)에 대한 분리 실행 대상 코드 블록(35)을 포함할 수 있다. 이때, 저장장치(60)는 호스트 단말(50)의 요청에 따라 분리 실행 대상 코드 블록(35)에 대한 연산을 수행하여 결과값을 호스트 단말(50)로 반환한다.
상술한 분리 실행 기반 컨텐츠(37)에 대한 기본 개념을 도 2 및 도 3을 참조하여 설명한다.
도 2는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠의 데이터 구조를 보여주는 구성도이다.
도 2을 참조하면, 본 발명이 적용되는 실행형 컨텐츠(11)는 복수 개의 파일, 예컨대 운영체제에서 제공하는 API(application program interface), 개발사에서 제공하는 API 또는 DLL(dynamic linking library)과 같은 파일을 포함한다. 이와 같은 복수의 파일을 포함하는 실행형 컨텐츠(11)는 코드 영역(21)과 데이터 영역(23)으로 나눌 수 있으며, 실제 실행형 컨텐츠(11)는 코드 영역(21)과 데이터 영역(23)이 서로 섞여 있다. 코드 영역(21)은 복수의 베이식 블록(25; basic block)을 포함하며, 분리 실행 대상 코드 블록(35)의 추출을 위하여 선정되는 복수의 베이식 블록 그룹(27)을 포함한다.
여기서, 베이식 블록(25)은 단일 입력(single input) 및 단일 출력(single output)의 속성을 갖는 명령어의 열(sequence of instruction)로서, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 코드 블록으로 정의할 수 있다. 즉 베이식 블록(25)은 항상 시작부터 끝까지 한번에 실행되는 연속적인 문장(코드의 모임)을 의미하며, 중간에 흐름 제어로 인해 실행이 중지되지 않는 문장 그룹이다.
도 3은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠의 구조를 나타내는 구성도이다.
도 1 및 도 3을 참조하면, 본 발명이 적용되는 분리 실행 기반 컨텐츠(37)는 하나 이상의 분리 실행 대상 코드 블록(35)을 대신하여 스터브 코드(26; stub code)가 삽입된 코드 영역(21a)과, 데이터 영역(23)을 포함한다. 이때 스터브 코드(26)는 분리 실행을 위해 추출된 분리 실행 대상 코드 블록(35)을 대신하여 삽입된 코드로서, 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)을 연결한다. 구체적으로 스터브 코드(26)는 실행형 컨텐츠(11)에 대한 분리 실행을 수행할 때, 분리 실행 대상 코드 블록(37)을 호출하고, 분리 실행 대상 코드 블록(37)에 대한 연산을 수행하여 산출된 결과값을 반환 받는다.
분리 실행 대상 코드 블록(35)은 실행형 컨텐츠(11)에 대한 프로파일링 및 분석을 통하여 실행형 컨텐츠(11)의 코드 영역(21)에서 추출된 복수의 베이식 블록 그룹(27)을 포함한다. 바람직하게, 분리 실행 대상 코드 블록(35)은 분리 실행 대상 코드 블록(35)의 시작점(entry point)을 통한 제어 신호의 진입 및 베이식 블록(25) 간의 제어 신호의 이동은 허용하지만, 분리 실행 대상 코드 블록(35)의 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 없는 서로 관련된 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)이다.
이와 달리 시작점을 제외한 베이식 블록(25)으로의 제어 신호의 진입이 있는 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선정할 경우, 해당 분리 실행 대상 코드 블록(35)을 추출한 후 삽입되는 스터브 코드(26)에 시작 부분이 아닌 중간으로 제어 신호가 진입할 수 있으며, 이 경우 스터브 코드(26)는 해당 제어 신호에 대한 처리를 수행하지 못하여 결국 실행형 컨텐츠(11)의 실행이 중지되거나 에러가 발생될 수 있다.
상술한 분리 실행 대상 코드 블록은 다음과 같이 추출될 수 있다.
먼저, 분리 실행할 실행형 컨텐츠(11)의 코드 영역(21)에 대한 동적 프로파일링 및 정적 분석을 통하여 복수의 베이식 블록 그룹(27)을 선정한다. 복수의 베이식 블록 그룹(27)의 선정은, 분리 실행할 실행형 컨텐츠(11)의 실행을 시작하여, 런-타임 동안 코드 영역(21)에 대한 기초 정보를 수집하고, 수집한 기초 정보를 이용하여 분석 범위를 확장한 동적 프로파일링을 통해 코드 영역(21)에 대한 정적 분석을 수행함에 의해 이루어진다. 기초 정보는, 브랜치 어드레스, 점프 어드레스, 콜 어드레스 및 RET의 간접 주소 중에 적어도 하나의 간접 주소이다. 이러한 기초 정보 중에서 실행형 컨텐츠(11)의 공개된 API와 관련된 기초 정보를 제거하고, 공개된 API와 관련된 기초 정보가 제거된 기초 정보를 기반으로 실행형 컨텐츠(11)의 코드 영역(21)에 대한 정적 분석을 수행함으로써, 분석 범위를 확장할 수 있다. 수집한 기초 정보 중 간접 주소를 컨트롤 플로우 상에 대입함으로써, 분석 범위를 확장하여 단독으로 동적 프로파일링 또는 정적 분석을 수행하는 것에 비하여 더 많은 베이식 블록 그룹(27)을 선정할 수 있다.
더하여, 선정된 복수의 베이식 블록 그룹(27) 중에서, 베이식 블록 그룹(27)의 내부로 진입하는 제어 신호가 발생하면, 제어 신호의 명령어 주소를 기준으로 해당 베이식 블록 그룹(27)을 분할하여 재정의한다. 이때 재정의 대상이 되는 베이식 블록 그룹(27)은 제어 신호의 명령어 주소를 기준으로 이전의 제1 베이식 블록 그룹과, 제어 신호의 명령어 주소를 포함하는 이후의 제2 베이식 블록 그룹으로 재정의한다.
이와 같은 재정의 과정을 반복함으로써, 최종적으로 단일 입력 및 단일 출력의 속성과, 외부에서 내부로의 진입을 허용하지 않는 속성을 갖는 복수의 베이식 블록(25)을 포함하는 베이식 블록 그룹(27)을 정의한다.
이어서 복수의 베이식 블록 그룹(27) 중에서 분리 실행 대상 코드 블록(35)을 선정하여, 분리 실행 대상 코드 블록(35)을 코드 영역(21)에서 분리하고, 분리 실행 대상 코드 블록(35) 대신에 스터브 코드(26)를 삽입한다.
이때 분리 실행 대상 코드 블록(35)은 복수의 베이식 블록 그룹(27) 중에서 실행형 컨텐츠(11)의 중요 경로(Critical path) 상에 있는 베이식 블록 그룹(27)을 선택하는 것이 바람직하다. 또한, 복수의 베이식 블록 그룹(27) 중에서 콜 횟수, 크기 및 실행 시간을 함께 고려하여 분리 실행 대상 코드 블록(35)을 선출할 수 있다. 예컨대 콜 횟수가 많고, 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 분리 실행 대상 코드 블록(35)으로 선출한다.
이에 따르면, 실행형 컨텐츠(11)에 있어서, 중요 경로 상에 존재하고, 콜 횟수가 많고 크기가 작고, 실행 시간이 짧은 베이식 블록 그룹(27)을 보안을 위한 분리 실행 대상 코드 블록(35)으로 선정하여, 분리 실행 대상 코드 블록(35)이 실행형 컨텐츠(11)에서 분리 실행되도록 함으로써, 실행형 컨텐츠(11)의 복제 방지와 관련된 보안 성능을 향상시킬 수 있다.
또한, 동적 프로파일링(dynamic profiling)을 통하여 수집한 코드 영역(21)의 기초 정보를 이용한 정적 분석(static analysis)을 수행하여 베이식 블록 그룹(27)을 추출함으로써, 실행형 컨텐츠(11)의 코드 영역(21)의 분석 범위를 확장하여 베이식 블록 그룹(27)의 추출율을 향상시킬 수 있다.
또한, 한 번 정의된 베이식 블록 그룹(27)에 대해서 재정의할 수 있는 유연성을 제공함으로써, 분리 실행 대상 코드 블록(35)의 후보가 될 수 있는 단일 입력(single input) 및 단일 출력(single output)을 갖는 베이식 블록 그룹(27)을 생성할 수 있고, 시작점(entry point)을 제외한 내부로의 제어 신호의 진입이 있는 부적합한 베이식 블록 그룹(27)이 분리 실행 대상 코드 블록(35)으로 선출되는 것을 억제할 수 있으며, 그 결과, 분리 실행 대상 코드 블록(35)을 분리하여 실행하는 중의 오류 발생을 억제할 수 있다.
도 4는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 분리 실행 기반 컨텐츠 구성 모듈을 나타내는 블록 구성도이다. 도 5는 본 발명이 적용되는 디지털 저작권 관리 시스템에서 실행형 컨텐츠에 삽입될 스터브 코드를 예시한 도면이다.
이하에서 설명할 분리 실행 기반 컨텐츠 구성 모듈(31)는, 도 1에 보인 DRM 시스템에 있어서, 호스트 단말(50)과 저장 장치(50)에 각각 저장될 분리 실행 기반 컨텐츠(37)와 분리 실행 대상 코드 블록(35)를 생성하기 위한 모듈이다.
도 1, 도 4 및 도 5를 참조하면, 분리 실행 기반 컨텐츠 구성 모듈(31)은, 모듈 제어부(311)와, 코드 분석부(313)와, 코드 조작부(315)와, 코드 변환부(317) 및 코드 암호화부(319)를 포함한다.
모듈 제어부(311)는 분리 실행 기반 컨텐츠(37)의 생성을 위한 전체적인 과정을 제어한다. 즉, 입력된 분리 실행될 실행형 컨텐츠(11)에서 분리 실행 대상 코드 블록(35)을 선택하여, 선택한 분리 실행 대상 코드 블록(35)을 실행형 컨텐츠(11)에서 분리하고, 분리 실행 대상 코드 블록(35)의 분리 실행이 가능하도록 실행형 컨텐츠(11)를 변환하며, 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 처리 가능한 형태로 변환하고, 실행형 컨텐츠(11)의 코드 영역에서 초기 코드 블록을 추출해 초기 코드 블록을 암호화하여 실행형 컨텐츠(11)의 실행시 암호화된 초기 코드 블록을 복호화하여 실행하도록 코드 분석부(313)와 코드 조작부(315)와 코드 변환부(317) 및 코드 암호화부(319)를 제어한다.
코드 분석부(313)는, 실행형 컨텐츠(11)의 코드 영역을 분석하여, 코드 영역으로부터 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다. 더 구체적으로, 코드 분석부(313)는 컨텐츠 제공 단말(10)로부터 수신한 분리 실행될 컨텐츠, 컨텐츠에 대한 프로파일 데이터(Profile Data) 및 코드 블록 선택 규칙을 입력 받아, 프로파일 데이터 및 코드 블록 선택 규칙을 기반으로 컨텐츠의 코드 영역에서 분리 실행 대상 코드 블록(35)을 결정한다.
구체적으로, 코드 분석부는 프로파일 데이터 및 분리 실행 대상 코드 블록(35)의 선택 규칙을 내부 데이터 포맷으로 변환한다. 예를 들어, 프로파일 데이터 및 규칙은 XML 형태로 구현될 수 있는데, 이 경우, 프로파일 데이터 및 분리 실행 대상 코드 블록의 선택 규칙은 XML 형태에서 내부 데이터 포맷으로 변환하는 것으로서, XML 파서가 된다. 이어, 프로파일 데이터 및 코드 블록 선택 규칙을 로드하며, 로드된 프로파일 데이터 및 코드 블록 선택 규칙에 근거하여, 실행형 컨텐츠(11)의 코드 영역에서 하나 이상의 분리 실행 대상 코드 블록(35)을 선택한다.
또한, 코드 분석부(313)는 분리 실행 대상 코드 블록(35)의 선택 시 기준이 될 코드 블록 선택 규칙을 갱신한다. 코드 블록 선택 규칙은 프로파일 데이터의 정보 중에서 어느 항목에 가장 큰 비중을 두어 분리 실행 대상 코드 블록을 선택할 것인지를 의미하는 것으로서, 앞서 설명한 바와 같이, 프로파일 데이터의 각 항목 별 가중치로 나타낼 수 있다. 그런데, 이러한 코드 블록 선택 규칙은, 컨텐츠의 종류, 크기 등에 따라서 변경될 가능성이 크기 때문에 선택된 분리 실행 대상 코드 블록(35)에 대한 검증 결과를 피드백 받아 분리 실행 대상 코드 블록의 선택 규칙을 지속적으로 갱신한다. 예를 들어, 선택된 분리 실행 대상 코드 블록(35)에 대한 테스트를 진행하여 실행 속도 등의 이슈가 발생하면, 이를 기준으로 분리 실행 대상 코드 블록(35)의 선택 규칙의 세부적인 가중치를 변경한다.
코드 조작부(315)는, 코드 분석부(313)에서 선택된 분리 실행 대상 코드 블록(35)과 분리 실행 대상 코드 블록이 분리된 분리 실행 기반 컨텐츠(37)를 연결하도록 실행형 컨텐츠(11)를 변환한다.
더 구체적으로 코드 조작부(315)는, 분리된 분리 실행 대상 코드 블록(35)과의 상호 연동을 위한 보조 실행 기능부를 생성하고, 분리 실행 대상 코드 블록(35)이 맨 앞에서 보조 실행 기능부로 점프한 후 보조 실행 기능부의 실행이 완료되면 분리 실행 대상 코드 블록(35) 다음으로 실행되어야 할 위치로 점프하는 스터브 코드를 생성하여 분리 실행 대상 코드 블록(35)의 위치에 삽입한다.
여기서, 보조 실행 기능부는 스터브 코드로부터 전달되는 파라미터, 즉, 스택과 레지스터의 정보를 패킹하여 분리 실행 대상 코드 블록(35)을 호출하고, 호출이 종료되면 분리 실행 대상 코드 블록(35)의 결과값으로 스택과 레지스터의 정보를 리스토어한다.
예를 들어, 저장 장치(60)에 저장되는 분리 실행 대상 코드 블록(35)은 저장 장치(60)의 플랫폼에 기반한 Java 바이트코드, 더 구체적으로는 Java 애플릿 및 ARM 인스트럭션을 내장한 Java 애플릿으로 구현되는데, 이때 보조 실행 기능부는 상술한 Java 애플릿을 실행하는 Native launcher로 구현된다. 더하여, 보조 실행 기능부는 필요 시에만 로딩되어 실행될 수 있도록 DLL(Dynamic Link Library) 파일로 구현된다. 이러한 보조 실행 기능부에 대해서는 다음에 더 구체적으로 설명하기로 한다.
도 5를 참조하면, (a)는 스터브 코드의 삽입 전의 실행형 컨텐츠(11), 즉, 분리 실행 대상 코드 블록(35)을 나타내며, (b)는 분리 실행 대상 코드 블록(35) 위치에 삽입된 스터브 코드를 나타낸 것이다.
도 5의 (a)와 (b)를 비교하면, 스터브 코드는 분리 실행 대상 코드 블록(35)의 맨 앞 위치에서 보조 실행 기능부의 특정 함수로 점프하고(jmp NativeLauncher), 보조 실행 기능부의 함수 호출 이후에는 함수 값을 반환할 엔드 포인트로 점프하도록 생성되어, 분리 실행 대상 코드 블록(35)의 위치에 삽입된다. 이에 의하면, caller code의 변경 없이 코드 변환이 가능하다.
코드 조작부(315)는, 스터브 코드의 삽입과 더불어, 보조 실행 기능부의 로딩을 위하여 임포트 영역(idata section)의 임포트 테이블(import table) 내에 보조 실행 기능부(Native Launcher DLL)을 삽입한다. 임포트 테이블에 대한 보조 실행 기능부의 삽입은, 호스트 단말(50)에서 분리 실행 기반 컨텐츠(37)가 구동될 때, OS의 로더(loader)에 의하여 보조 실행 기능부가 로딩되도록 하기 위한 것이다.
이러한 방식을 통하여, 분리 실행 기반 컨텐츠(37)의 소스 코드 수정 없이, 분리된 분리 실행 대상 코드 블록(35)과의 상호 작용이 가능해진다.
코드 변환부(317)는 분리 실행 기반 컨텐츠(37)에서 분리된 분리 실행 대상 코드 블록(35)을 저장장치(60)에서 실행 가능한 형태로 변환한다. 이때, 분리 실행 대상 코드 블록(35)은, 분리 실행 속도의 향상을 위하여, 저장장치(60)에 구비된 프로세서의 명령어로 변환되는 것이 바람직하다. 예를 들면, 저장 장치(60)가 Java 기반 스마트 카드인 경우, 분리 실행 대상 코드 블록(35)은, Java 바이트 코드로 변환되는데, 특히, ARM 명령어를 내장한 Java 바이트 코드로 변환된다. 즉, 호스트 단말(50)이 X86 계열의 프로세서 구조를 가지며, 저장장치(60)가 ARM 구조의 프로세서로 이루어진 경우, 코드 변환부(317)는, 분리 실행 대상 코드 블록(35)의 X86 명령어를 Java 바이트코드 및 ARM 명령어를 내장한 Java 바이트코드로 변환한다.
이때, 코드 변환부(317)는, 실행형 컨텐츠(11)의 분리 실행을 다양한 프로세서 환경에 적용할 수 있도록, 분리 실행 대상 코드 블록(35)을 복수의 머신 코드로 변환하는 것이 바람직하다. 이를 위하여, 코드 변환부(317)는 compiler infrastructure, 특히 LLVM(Low Level Virtual Machine)를 이용하여 구현될 수 있다. LLVM을 이용할 경우, 검증된 다양한 오픈 소스 솔루션을 이용할 수 있으며, 타겟, 즉, 저장장치(60)의 프로세서와는 독립적으로 코드 최적화가 가능하고, 코드 재사용성이 높아, 다양한 소스를 다양한 머신 코드로 변환할 수 있다.
구체적으로 코드 변환부(317)는 소스, 즉, 호스트 단말(50)의 플랫폼에 기반한 언어로 구성된 분리 실행 대상 코드 블록을 중간 단계 언어(LLVM IR: LLVM Intermediate Representation)로 변환하고, 이어 중간 단계 언어로 변환된 분리 실행 대상 코드 블록(35)을 최적화하며, 마지막으로 최적화된 중간 단계 언어의 분리 실행 대상 코드 블록(35)을 저장 장치(140)의 프로세서에 기반한 복수의 머신 코드, 예를 들어, Java 바이트 코드, ARM 명령어로 변환한다.
코드 암호화부(319)는, 모듈 제어부(311)의 제어에 따라서 선정된 초기 코드 블록을 특정 키로 암호화하여, 해당 실행형 컨텐츠(11)의 실행시 특정 키를 통해 초기 코드 블록을 복호화하여 실행하도록 실행형 컨텐츠(11)를 변환한다.
구체적으로 코드 암호화부(319)는, 선정된 초기 코드 블록을 지정된 키로 암호화한 후, 암호화된 초기 코드 블록을 실행형 컨텐츠(11)에 추가 생성된 보안 영역에 삽입하고, 초기 코드 블록의 위치에는 키를 획득하여 암호화된 초기 코드 블록을 복호화한 후 실행시키는 보조 실행 기능부를 로드하게 하는 시동 스터브 코드를 삽입한다.
보다 구체적으로, 코드 암호화부(319)는, 암호화되어 이동될 초기 코드 블록 대신에 암호화된 초기 코드 블록의 복호화한 후 실행시키는 보조 실행 기능부의 함수를 호출하는 시동 스터브 코드를 생성하여, 초기 코드 블록의 위치에 삽입한다. 코드 암호화부(319)는, 실행형 컨텐츠(11)에 보안 영역(secure section)을 새로 생성하고, 선정된 초기 블록 코드를 지정된 키로 암호화한 후, 생성된 보안 영역에 암호화된 초기 코드 블록을 적재한다.
이때 암호화에 사용되는 키는 실행형 컨텐츠(11)의 실행시에 복호화를 위하여 필요하므로, 권리객체(43)의 CEK(Contents Encryption key) 형태로 관리되어, 저장장치(60)에 저장될 수 있다.
이와 같이 코드 암호화부(319)를 통하여 암호화된 초기 코드 블록은 이후, 분리 실행 대상 코드 블록(35)의 경우와 마찬가지로, 보조 실행 기능부에 의하여 복호화되고, 온 메모리(On-Memory) 상태에서 구동(Running)된다. 이에 의하면, 실행형 컨텐츠(11)에 대하여, 초기 구동 시 1단계 보안 기술을 적용하고, 분리 실행을 통해 2단계 보안 기술을 적용함으로써, 실행형 컨텐츠(11)의 불법 사용 및 복제를 더 강력하게 차단할 수 있게 된다.
도 6은 본 발명이 적용되는 디지털 저작권 관리 시스템의 분리 실행 기반 컨텐츠에서 보조 실행 기능부의 구성 및 이를 통한 분리 실행 과정을 나타낸 도면이다.
도 6을 참조하면, 본 발명에 따른 호스트 단말(50)에 저장된 분리 실행 기반 디지털 컨텐츠(37)와, 저장 장치(60)에 저장되며 저장 장치(60)에서 실행 가능한 형태로 변환된 분리 실행 대상 코드 블록(35)은, 보조 실행 기능부(300)를 통해 상호 연동한다. 특히, 보조 실행 기능부(300)는, 이종 프로세서로 구현된 호스트 단말(50)과 저장 장치(60)가 연동하여 분리 실행을 구현할 수 있도록 한다.
이를 위하여 보조 실행 기능부(300)는, 인터페이스 기능부(310)와, 패킹(packing) 기능부(320)와, 언패킹(unpacking) 기능부(330)와, 메모리 매핑 기능부(340)와, OS API 매핑 기능부(350)를 포함하고, 더하여, 코드 복호화 기능부(360)를 더 포함할 수 있다.
인터페이스 기능부(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 함수들과 동일한 형태의 함수를 갖는다.
패킹 기능부(320)는 스터브 코드(234)로부터 스택과 레지스터의 정보를 전달받아 패킹하여, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로 전달한다. 여기서, 스택 정보는, SP 레지스터에 의해 지정된 스택 포지션에서부터 시작하여 파라미터로 이용되는 스택 값들의 모임이고, 레지스터 정보는, 스터브 코드(234)에서 분리 실행 대상 코드 블록(35)를 호출할 때 전달되는 레지스터 정보이다.
언패킹 기능부(330)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 전달된 패킹된 데이터를 언패킹하여, 스터브 코드(234)로 반환한다. 언패킹 기능부(330)는, 분리 실행 대상 코드 블록(35)의 반환 값이 Primitive Data Type인 경우에는 단순히 해당 레지스터의 값에 반환 값을 설정하고, 반환 값이 메모리 주소인 경우, 해당 주소에 해당하는 값들을 반환 값에 따라서 변경한다.
메모리 매핑 기능부(340)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)에서 전달된 데이터를 호스트 단말(50)의 메모리에 기록하거나, 호스트 단말(50)의 메모리에서 데이터를 디스패치하여 분리 실행 대상 코드 블록(35)으로 전달한다. 메모리 매핑 기능부(340)를 통해 저장 장치(60)의 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 메모리를 참조하여 실행될 수 있다.
OS API 매핑 기능부(350)는, 인터페이스 기능부(310)를 통해 분리 실행 대상 코드 블록(35)으로부터 API 명 및 파라미터 값을 전달받아, 호스트 단말(50)의 OS API를 호출하고, 그 결과를 반환 받아 분리 실행 대상 코드 블록(35)으로 전달한다. 이에 의하여, 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)이 호스트 단말(50)의 OS API를 호출하여 그 결과를 반환 받을 수 있다.
그리고, 코드 복호화 기능부(360)는, 저장장치(60)로부터 특정 키를 획득하여 보안 영역(270)에 적재된 암호화된 초기 코드 블록(271)을 복호화하고, 복호화된 초기 코드 블록을 실행시킨다.
도 7은 본 발명이 적용되는 디지털 저작권 관리 시스템에서 코드 복호화 기능부의 동작 흐름도이다. 도 7을 참조하면, 코드 복호화 기능부(360)는, 암호화된 초기 코드 블록과 암호화에 사용된 키(CEK)를 입력 받아, 키로 초기 코드 블록을 복호화한다(S361). 그리고, 복호화된 초기 코드 블록을 런타임 코드 실행자(Runtime code executioner)가 메모리 상에서 바로 실행시킨다(S362). 더 구체적으로, 런타임 코드 실행자가 복호화된 초기 코드 블록으로 인스트럭션 포인터(Instruction Pointer)를 매핑하여 점프시켜, 복호화된 초기 코드 블록을 실행한다. 이에 의하면, 초기 코드 블록의 실행 시에만, 복호화된 초기 코드 블록이 메모리에 존재하고, 실행이 후에는 바로 소멸되며, 이를 통해 보안 효과를 더 높일 수 있다.
도 6 및 도 7을 참조하여, 보조 실행 기능부(300)를 이용한 분리 실행 동작을 설명하면 다음과 같다.
먼저, 분리 실행 기반 컨텐츠(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)로 반환한다(⑦).
이에 의하면, 분리 실행 기반 컨텐츠(37) 및 분리 실행 대상 코드 블록(35)이 호스트 단말(50)과 저장 장치(60)의 연동을 통해 정상적으로 동작할 수 있게 된다.
도 8은 본 발명이 적용되는 디지털 저작권 관리 시스템의 저장 장치에서의 보조 실행 모듈의 구조를 나타낸 구성도이다. 도 6 및 도 8을 참조하면, 본 발명이 적용되는 저장 장치(60)에 저장된 분리 실행 대상 코드 블록(35)과 호스트 단말(50)에 저장된 분리 실행 기반 컨텐츠(37)는, 보조 실행 기능부(300)와 보조 실행 모듈(610)을 통해 상호 연동된다.
보조 실행 모듈(610)은 실행 기능부(611), 작업 관리 기능부(613), 로딩 기능부(615), 장치 메모리 매핑 기능부(617), 장치 OS API 매핑 기능부(619), 장치 메모리 관리 기능부(621), ROM 관리 기능부(623)을 포함한다.
로딩 기능부(615)는 분리 실행 대상 코드 블록(35)을 로드하여, fix되지 않은 reference들을 모두 fix하고(이하 Linking이라고 함) reference들을 메모리 상의 임의의 영역에 로드한다. unresolved reference를 Linking하기 위해서는 reference information을 참조한다.
실행기능부(611)는 호스트 단말(50)과 통신을 담당하여, 호스트 단말(40)로부터 수신한 데이터를 파싱하여 해당 내용을 실행 후, 다시 호스트 단말(50)로 전송한다. 이때, 프로토콜은 보조 실행 기능부(300)과 보조 실행 모듈(610)사이에 규격화 시켜서 처리할 수 있다.
구체적으로, RO에 포함된 분리 실행 대상 코드 블록(35)을 전달 받아, 로딩 기능부(615)를 통해 분리 실행 대상 코드 블록(35)을 로드하고, IP(interrupt priority) 레지스트를 조작하여 분리 실행 대상 코드 블록(35)의 시작점(entry point)를 강제로 호출해 실행한다. 또한, 장치 메모리 매핑 기능부(619) 또는 장치 OS API 매핑 기능부(621)의 호출로 인해 호스트 단말(50)의 응답을 기다려야 하는 경우, 현재 실행 중이던 인스트럭션 포인터(Instruction Pointer) 및 레지스터 값들을 컨텍스트(context) 형태로 임시 저장하고 있다가, 호스트 단말(50)로부터 응답이 도착하면, 해당 위치(position)부터 재 실행한다.
장치 메모리 매핑 기능부(617)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 메모리 참조하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.
여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 메모리 참조가 있는 코드가 장치 메모리 매핑 기능부(617)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 메모리 참조를 하는 경우 장치 메모리 매핑 기능부(617)를 호출하게 된다.
장치 OS API 매핑 기능부(619)는 로딩 기능부(615)에 의해 로드된 명령어(instruction)가 호스트 단말(50)의 OS API를 호출하는 경우 패킹하여 호스트 단말(50)의 보조 실행 기능부(300)에 전달하며, 보조 실행 기능부(300)로부터 응답을 수신하는 경우 언패킹하여 실행 기능부(611)에 전달한다.
여기서, 로딩 기능부(615)는 초기 로드하는 과정에서 호스트 단말(50)의 OS API를 호출하는 코드가 장치 OS API 매핑 기능부(619)을 호출하도록 링크(link)하며, 이에 따라 로드된 코드에서 호스트 단말(50)의 OS API를 호출하는 경우 장치 OS API 매핑 기능부(619)를 호출하게 된다.
작업 관리 기능부(613)는 호스트 단말(50)에서 실행되는 분리 실행 기반 컨텐츠(37)는 복수일 수 있으며, 복수의 분리 실행 기반 컨텐츠(37)가 동시에 실행되는 경우 저장장치(60)의 Task와 1:1로 매칭되도록 Task를 생성한다. 또한, 실행 기능부(611)와 보조 실행 모듈(610)의 타 구성요소와 연결한다.
장치 메모리 관리 기능부(621)는 보조 실행 모듈(610)이 실행되면, 저장장치(60) OS로부터 보조 실행 모듈(610)에게 할당한 Heap의 시작 번지와 사용 가능한 메모리 사이즈를 수신하여, 분리 실행 대상 코드 블록(35)의 실행을 위한 메모리를 할당, 해제, 데이터 삽입, 삭제 등을 한다. 이때, 할당되는 메모리는 고정되며, 보조 실행 모듈(610)만 사용 가능하도록 할당되는 것이 바람직하다. 또한, 메모리 관리 기능부(621)는 분리 실행 대상 코드 블록(35)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈보다 큰 경우 작업 관리 기능부(613)에게 요청하여 호스트 단말(50)의 메모리를 할당 받는다.
ROM 관리 기능부(623) 저장장치(60)에서 NOR 또는 NAND 메모리의 쓰기 횟수 가 제한되는 경우, RAM의 적은 용량 때문에 NOR 또는 NAND 메모리를 참조할 때 접근을 최소화하기 위해 OEM(Original Equipment Manufacturer)에서 ROM의 일정영역을 할당 받아 Cash를 구현할 수 있는 파일 시스템(file system)을 제공한다. 이러한 파일 시스템은 기존의 파일 시스템과 같이 파일을 open, read, write 등의 API가 제공된다.
도 9는 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 저장장치를 나타내는 구성도이다. 도 1 및 도 9를 참조하면, 본 실시예의 저장장치(60)는 통신부(61), 저장부(63), 통신버스(67), 제어부(69)를 포함하여 구성된다.
통신부(61)는 유선 또는 무선으로 접속된 호스트 단말(50)와 데이터 송수신을 수행하기 위한 인터페이스를 가진다.
저장부(63)는 프로그램(65)을 저장하는 저장소이다.
프로그램(65)은 각종 컨텐츠 또는 응용프로그램을 포함하며, 제어부(69)에 저장장치(60)의 메모리에 적재되어 실행될 수 있다.
통신버스(67)는 저장장치(60)의 각 구성요소들간의 신호전송 경로를 제공한다.
제어부(69)는 통신부(61), 저장부(63)의 동작을 전반적으로 제어하며, 프로그램(65)의 명령어를 읽어 들이고(fetch), 명령어를 해석(decode), 명령어를 수행(execute)하면서 프로그램(65)을 실행한다.
제어부(69)는 프로그램(65) 실행 중에, 프로그램(65)이 메모리를 참조하는 경우, 현재 저장장치(60)의 가용 메모리 사이즈를 확인하고, 저장장치(60)의 가용 메모리 사이즈와 프로그램(65)이 참조하는 메모리 사이즈를 비교한다.
제어부(69)는 프로그램(65)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈를 초과하는 것을 확인하면, 통신부(61)를 통해 호스트 단말(50)로 메모리 할당 요청메시지를 전송한다.
메모리 할당 요청메시지는 프로그램(65)에 사용된 논리 주소(logical address) 또는 가상 주소(virtual address) 등을 포함하며 프로그램(65)이 요청한 메모리 사이즈를 호스트 단말(50)이 인식할 수 있도록 전송하는 메시지를 말한다.
이때, 저장장치(60) 내에는 복수의 프로그램이 저장되어 있을 수 있으며, 사용자에 의해 복수의 프로그램이 함께 실행될 수 있다. 제어부(69)는 복수의 프로그램을 함께 실행할 때, 각 프로그램마다 참조하도록 저장장치(60)의 메모리를 할당하게 된다. 제어부(69)는 프로그램(65) 실행 중에, 프로그램(65) 실행 중에 프로그램(65)이 메모리를 참조하는 경우, 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 확인하고, 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈와 프로그램(65)이 참조하는 메모리 사이즈를 비교할 수 있다. 이어서, 제어부(69)는 프로그램(65)이 참조하는 메모리 사이즈가 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 초과하는 것을 확인하면, 통신부(61)를 통해 호스트 단말(50)로 메모리 할당 요청메시지를 전송할 수 있다.
예를 들면, 제어부(69)는 프로그램(65)을 실행하게 되면, 각 프로그램에 메모리 시작 주소인 베이스 레지스터(base register) 및 메모리 공간 크기를 나타내는 리미트 레지스터(limit register)를 설정할 수 있다. 프로그램(65)의 논리 주소(logical address) 또는 가상 주소(virtual address)가 베이스 레지스터 값 이상 베이스 레지스터 및 리미트 레지스터를 합한 값 미만을 참조하게 되면 유효하게 저장장치(60)의 메모리를 할당하고, 베이스 레지스터 및 리미트 레지스터를 합한 값 이상을 참조하게 되면, 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 초과한 것으로 확인할 수 있다.
본 발명의 다른 실시예에서, 제어부(69)는 호스트 단말(50)로부터 저장장치(60)의 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 이에 대한 응답으로 메모리 할당 요청메시지를 전송할 수 있다.
체크메시지는 호스트 단말(50)이 저장장치(60)의 가용 메모리 사이즈를 체크하는 메시지로, 특정 커맨드(command)가 없이 주기적으로 전송하는 메시지이다.
제어부(69)는 통신부(61)를 통해 호스트 단말(50)로부터 호스트 단말(50)의 할당된 메모리 주소값을 수신한다.
이때, 실행 중인 프로그램(65)의 데이터를 메모리에 기록하는 경우, 제어부(69)는 프로그램(65)이 참조하는 메모리가 저장장치(60)에 할당되었는지 호스트 단말(50)에 할당되었는지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 실행 중인 프로그램(65)의 데이터를 통신부(61)를 통해 호스트 단말(50)로 전달할 수 있다. 또한, 프로그램(65)이 호스트 단말(50)로 전달한 데이터를 이용하거나 삭제 또는 변경을 하는 경우, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 호스트 단말(50)에 전달된 데이터의 반환을 요청하거나, 삭제 또는 변경을 요청할 수 있다.
또한, 제어부(69)는 프로그램(65) 실행 중에, 프로그램(65)이 호스트 단말(50)에 할당된 메모리 참조를 해제하거나, 프로그램(65)의 실행이 종료되는 경우, 프로그램(65)이 참조한 메모리가 저장장치(60)에 할당되었는지 호스트 단말(50)에 할당되었는지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로 호스트 단말(50)로부터 수신한 메모리 주소값 및 메모리 해제 요청메시지를 전송할 수 있다.
메모리 해제 요청메시지는 호스트 단말(50)의 프로그램(65)에 할당된 메모리를 가용 공간으로 이용할 수 있도록 메모리 할당의 해제를 요청하는 매시지를 말한다.
본 발명의 다른 실시예에서, 제어부(69)는 호스트 단말(50)로부터 프로그램(65)이 참조하는 메모리 사이즈만큼 호스트 단말(50)의 가용 메모리가 없어 에러메시지를 수신할 수 있으며, 에러메시지를 수신하는 경우, 제어부(69)는 프로그램(65)의 실행을 강제적으로 종료할 수 있다.
도 10은 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 시스템에서 호스트 단말을 나타내는 구성도이다. 설명의 편의를 위해 전술한 도 9에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1 및 도 10을 참조하면, 본 실시예의 호스트 단말(50)는 단말통신부(51), 단말제어부(57)를 포함하여 구성되며, 출력부(55)를 더 포함할 수 있다.
단말통신부(51)는 유선 또는 무선을 접속된 저장장치(60)와 데이터 송수신을 수행하기 위한 인터페이스를 가진다.
출력부(55)는 단말제어부(57)의 제어에 따라 정보를 표현하는 기능을 한다. 출력부(55)는 정보를 디스플레이하는데 이용되는 브라운관 화면, LCD(Liquid Crystal Display), LED(Light Emitting Diode) 액정과 같은 표현장치를 포함한다.
단말제어부(57)는 단말통신부(51), 출력부(55)를 포함한 호스트 단말(50)의 전반적인 동작을 제어한다.
단말제어부(57)는 단말통신부(51)를 통해 저장장치(60)로부터 메모리 할당 요청메시지를 수신하면, 메모리 할당 요청메시지에 포함된 논리 주소(logical address) 또는 가상 주소(virtual address) 등을 인식하여 프로그램(65)이 참조한 메모리 사이즈를 인식한다.
단말제어부(57)는 프로그램(65)이 참조한 메모리 사이즈만큼 메모리를 할당하고, 할당된 메모리 주소값을 단말통신부(51)를 통해 저장장치(60)로 전송한다.
본 발명의 다른 실시예에서, 단말제어부(57)는 현재 가용 메모리 사이즈를 확인하고, 프로그램(65)이 요청한 메모리 사이즈가 가용 메모리 사이즈 이하임을 확인하면, 즉 메모리에 프로그램이 요청한 사이즈만큼 공간이 있다면 메모리를 할당할 수 있다.
또한, 호스트 단말(50)은 복수의 프로그램이 실행이 가능하고, 단말제어부(57)는 복수의 프로그램과 함께 저장장치(60)에서 실행되는 각 프로그램(65)마다 이용할 수 있도록 메모리를 할당할 수 있다. 단말제어부(57)는 프로그램(65) 실행 중 저장장치(60)로부터 메모리 할당 요청메시지를 수신하면, 호스트 단말(50)에서 프로그램(65)에 할당된 가용 메모리 사이즈를 확인하고, 프로그램(65)에서 참조한 메모리 사이즈와 비교한다. 단말제어부(57)는 프로그램(65)에서 참조한 메모리 사이즈가 호스트 단말(50)에서 프로그램(65)에 할당된 가용 메모리 사이즈 이하임을 확인하면, 메모리를 할당하게 된다.
이때, 단말제어부(57)는 프로그램(65)에서 요청된 메모리 사이즈가 호스트 단말(50)의 가용 메모리 사이즈 또는 호스트 단말(60)에서 프로그램(65)에 할당된 가용 메모리 사이즈를 초과함을 확인하면, 저장장치(60)로 에러메시지를 전송하며, 사용자가 인식할 수 있도록 출력부(55)를 통해 메모리부족메시지를 출력할 수 있다.
한편, 단말제어부(57)는 프로그램(65)이 실행 중에 호스트 단말(50)에 할당된 메모리에 데이터를 기록하기 위해 저장장치(60)로부터 호스트 단말(50)에 할당된 메모리 주소값과 함께 데이터를 수신하면, 해당 메모리 주소값을 참조하여 데이터를 메모리에 기록한다. 또한, 저장장치(60)가 프로그램(65) 실행 중에 호스트 단말(50)의 메모리에 기록된 데이터를 삭제, 변경, 반환을 요청하면서 할당된 메모리 주소값을 전송하면, 단말제어부(57)는 해당 주소값을 참조하여 데이터를 반환하거나, 삭제 또는 변경한다.
또한, 단말제어부(57)는 저장장치(60)로부터 호스트 단말(50)에 할당된 메모리 주소값과 함께 메모리 해제 요청메시지를 수신하면, 수신한 메모리 주소값을 참조하여 메모리(53)에서 프로그램(65)에 할당되었던 메모리를 해제한다.
본 발명의 다른 실시예에서, 단말제어부(57)는 저장장치(60)가 접속됨을 확인하거나 또는 프로그램(65)이 실행됨을 확인하면, 주기적으로 저장장치(60)의 메모리 가용상태를 체크하는 체크메시지를 전송할 수 있다.
예를 들어, ISO/IEC 7816-3에서 정의된 바와 같이, 저장장치(60)에 전원이 공급되면 단말제어부(57)는 저장장치(60)로부터 서비스 제공할 준비가 되었음을 알리는 ATR(Answer to Reset) 신호를 수신하여 저장장치(60)가 접속됨을 확인할 수 있으며, 또한 사용자로부터 저장장치(60) 내의 프로그램(65)의 실행을 위한 입력신호를 수신할 때 프로그램(65)이 실행됨을 확인할 수 있다.
도 11은 본 발명의 일 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다. 설명의 편의를 위해 전술한 도 1 내지 도 10에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1 및 도 11을 참조하면, 저장장치(60)는 프로그램(65)을 실행하는 중에 프로그램(65)이 저장장치(60)의 메모리를 참조하는 것을 확인한다(S71).
단계(S71)에서 프로그램이 메모리를 참조하는 것을 확인한 저장장치(60)는 현재 저장장치(60)의 가용 메모리 사이즈를 확인하고, 프로그램(65)이 참조하는 메모리 사이즈와 저장장치(60)의 가용 메모리 사이즈를 비교한다(S73).
이때, 저장장치(60) 내에 복수의 프로그램이 실행되는 경우, 저장장치(60)는 각 프로그램마다 이용할 수 있도록 저장장치(60)의 메모리를 할당할 수 있으며, 저장장치(60)는 프로그램(65)에 할당된 저장장치(60)의 가용 메모리 사이즈를 확인하고, 프로그램(65)이 참조하는 메모리 사이즈와 비교할 수 있다.
단계(S73)에서 프로그램(65)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈 이하인 경우, 단계(S71) 이전으로 분기하여 상술한 단계를 반복한다.
단계(S73)에서 프로그램(65)이 참조하는 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈를 초과한 경우, 저장장치(60)는 호스트 단말(50)로 메모리 할당 요청메시지를 전송한다(S75).
단계(S75)에서 메모리 할당 요청메시지를 수신한 호스트 단말(50)은 메모리 할당 요청메시지를 참조하여, 프로그램(65)이 참조하는 메모리 사이즈만큼 메모리를 할당한다(S77).
단계(S77)에서 메모리를 할당한 호스트 단말(50)은 할당된 메모리 주소값을 저장장치(60)로 전송한다(S79).
이때, 실행 중인 프로그램(65)의 데이터를 메모리에 기록하는 경우, 저장장치(60)는 프로그램(65)이 참조하는 메모리가 저장장치(60)에 할당되었는지 호스트 단말(50)에 할당되었는지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 실행 중인 프로그램(65)의 데이터를 호스트 단말(50)로 전달할 수 있다. 또한, 프로그램(65)이 호스트 단말(50)로 전달한 데이터를 이용하거나 삭제 또는 변경을 하는 경우, 호스트 단말(50)로부터 수신한 메모리 주소값을 전송하면서, 호스트 단말(50)에 전달된 데이터의 반환을 요청하거나, 삭제 또는 변경을 요청할 수 있다.
단계(S79)에서 메모리 주소값을 수신한 저장장치(60)는 프로그램(65)이 호스트 단말(50)에 할당된 메모리 참조를 해제하거나, 프로그램(65)의 실행이 종료됨을 확인한다(S81).
단계(S81)에서 프로그램(65)이 호스트 단말(50)에 할당된 메모리 참조를 해제하거나, 프로그램(65)의 실행이 종료됨을 확인한 저장장치(60)는 호스트 단말(50)로 메모리 주소값과 함께 메모리 해제 요청메시지를 전송한다(S83).
이때, 저장장치(60)는 프로그램(65)이 더 이상 할당된 메모리 참조를 하지 않거나, 프로그램이 종료되는 경우, 프로그램(65)에 할당된 메모리가 저장장치(60)의 메모리인지 호스트 단말(50)의 메모리인지 확인하여, 호스트 단말(50)의 메모리가 할당되었음을 확인하면, 호스트 단말(50)로 메모리 해제 요청메시지를 전송할 수 있다.
단계(S83)에서 메모리 주소값과 함께 메모리 해제 요청메시지를 수신한 호스트 단말(50)은 수신한 메모리 주소값을 참조하여 메모리(53)에서 프로그램(65)에 할당되었던 메모리를 해제한다(S85).
도 12는 본 발명의 다른 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법의 흐름도이다. 설명의 편의를 위해 전술한 도 1 내지 도 10에 도시된 구성은 해당 참조번호를 언급하여 설명한다. 도 1, 도 11 및 도 12를 참조하면, 단계(S91) 및 단계(S93)는 도 11의 단계(S71) 및 단계(S73)와 동일한 과정이므로 이하 설명을 생략한다.
호스트 단말(50)은 저장장치(60)가 접속됨을 확인하거나 또는 프로그램(65)이 실행됨을 확인한다(S95).
단계(S95)에서 저장장치(60)가 접속됨을 확인하거나 또는 프로그램(65)이 실행됨을 확인한 호스트 단말(50)은 저장장치(60)의 가용 메모리 사이즈를 체크하는 체크메시지를 전송한다(S97).
단계(S97)에서 체크메시지를 수신한 저장장치(60)는 단계(S93)에서 프로그램(65)에서 요청된 메모리 사이즈가 저장장치(60)의 가용 메모리 사이즈를 초과한 경우, 체크메시지에 대한 응답으로 호스트 단말(50)로 메모리 할당 요청메시지를 전송한다(S99).
단계(S99)에서 메모리 할당 요청메시지를 수신한 호스트 단말(50)은 현재 호스트 단말(50)의 가용 메모리 사이즈를 확인하여, 프로그램(65)이 요청한 메모리 사이즈가 호스트 단말(50)의 가용 메모리 사이즈 이하임을 확인한다(S101).
이때, 호스트 단말(50)은 복수의 프로그램이 실행이 가능하고, 호스트 단말(50)는 별개의 복수의 프로그램과 함께 저장장치(60)에서 실행되는 각 프로그램(65)마다 이용할 수 있도록 메모리를 할당할 수 있으며, 호스트 단말(50)은 프로그램(65)에 할당된 가용 메모리 사이즈를 확인하여, 프로그램(65)이 참조하는 메모리 사이즈가 프로그램(65)에 할당된 가용 메모리 사이즈 이하임을 확인할 수 있다.
단계(S101)에서 호스트 단말(50)의 가용 메모리를 확인한 호스트 단말(50)은 메모리 할당 요청메시지를 참조하여, 프로그램(65)이 참조하는 메모리 사이즈만큼 메모리를 할당한다(S103).
이때, 단계(S101)에서 프로그램(65)에서 참조하는 메모리 사이즈가 가용 메모리 사이즈 또는 프로그램(65)에 할당된 가용 메모리 사이즈를 초과함을 확인하면, 저장장치(60)로 에러메시지를 전송하며, 사용자가 인식할 수 있도록 출력부(55)를 통해 메모리부족메시지를 출력할 수 있다.
이하 단계(S105) 내지 단계(S111)는 도 11의 단계(S79) 내지 단계(S85)와 동일한 과정이므로 설명을 생략한다.
한편, 도 9 내지 도 12에서 상술한 프로그램(65)은 실행형 컨텐츠(11)에서 분리된 분리 실행 대상 코드 블록(35)일 수 있으며, 이와 같은 분리 실행 대상 코드 블록(35)은 권리객체(43)에 포함되어 호스트 단말(50)로부터 저장장치(60)로 전송되고, 호스트 단말(50)에 저장된 분리 실행 기반 컨텐츠(37)와 연동되어 실행될 수 있다. 이에 대한 자세한 설명은 도 1 내지 도 8에 상술하였으므로 설명을 생략한다.
또한, 본 실시예에 따른 저장장치에서 호스트 단말의 메모리 이용 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록매체에 기록될 수 있다. 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 예컨대 기록매체는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 이러한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것은 아니며, 기술적 사상의 범주를 일탈함 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.
본 발명에 의하면 저장장치에서 호스트 단말의 메모리를 이용하기 위해 기존에 비해 별도의 장치를 필요로 하지 않아 추가적인 비용 발생을 최소화한다. 특히, 현대인은 시간, 장소에 구애 받지 않고 컨텐츠에 접근할 수 있길 원하는 점을 감안하면, 본 발명의 저장장치에서 호스트 단말의 메모리를 이용하는 방안은 그 활용도가 적지 않을 것이다.
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 관리 기능부

Claims (27)

  1. 실행 중인 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 메모리 할당 요청메시지를 전송하고, 할당된 메모리 주소값을 수신하는 저장장치;
    상기 저장장치로부터 상기 메모리 할당 요청메시지를 수신하면, 메모리를 할당하고, 상기 저장장치로 상기 할당된 메모리 주소값을 전송하는 호스트 단말;
    을 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템.
  2. 데이터 송수신을 위한 통신부;
    프로그램을 저장하는 저장부;
    상기 프로그램 실행 중에 상기 프로그램이 참조한 메모리 사이즈가 가용 메모리 사이즈를 초과함을 확인하면, 상기 통신부를 통해 호스트 단말로 메모리 할당 요청메시지를 전송하고, 상기 통신부를 통해 상기 호스트 단말로부터 할당된 메모리 주소값을 수신하는 제어부;
    를 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  3. 제2항에 있어서, 상기 제어부는,
    상기 프로그램이 참조한 메모리 사이즈가 상기 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하면 상기 메모리 할당 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  4. 제2항에 있어서, 상기 제어부는,
    상기 통신부를 통해 상기 할당된 메모리 주소값을 전송하며, 상기 실행 중인 프로그램의 데이터를 전달하거나 상기 전달한 데이터의 반환, 삭제 또는 변경을 요청하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  5. 제2항에 있어서, 상기 제어부는,
    상기 실행 중인 프로그램이 상기 할당된 메모리 참조를 해제하거나 상기 프로그램이 종료되는 경우, 상기 통신부를 통해 상기 호스트 단말로 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  6. 제5항에 있어서, 상기 제어부는,
    상기 실행 중인 프로그램이 상기 할당된 메모리 참조를 해제하거나 상기 프로그램이 종료되는 경우, 상기 호스트 단말의 메모리가 상기 프로그램에 할당됨을 확인하여 상기 메모리 주소값 및 상기 메모리 해제 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  7. 제2항에 있어서, 상기 제어부는,
    상기 통신부를 통해 상기 호스트 단말로부터 상기 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 상기 체크메시지에 대한 응답으로 상기 통신부를 통해 상기 호스트 단말로 상기 메모리 할당 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  8. 제2항에 있어서,
    상기 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  9. 제8항에 있어서, 상기 제어부는,
    상기 호스트 단말로부터 패킹된 스택 정보 및 레지스터 정보를 수신하면, 상기 분리 실행 대상 코드 블록의 시작점(entry point)을 호출하여 상기 분리 실행 대상 코드 블록의 실행을 시작하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  10. 제8항에 있어서, 상기 제어부는,
    상기 분리 실행 대상 코드 블록을 실행한 후, 결과값을 상기 호스트 단말로 반환하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  11. 제8항에 있어서,
    상기 분리 실행 대상 코드 블록은 권리객체(Rights Object)에 포함되어 상기 호스트 단말로부터 수신한 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 저장장치.
  12. 데이터 송수신을 위한 단말통신부;
    저장장치 내에서 프로그램 실행 중 상기 단말통신부를 통해 상기 저장장치로부터 메모리 할당 요청메시지를 수신하면, 상기 메모리 할당 요청메시지를 참조하여 메모리를 할당하고, 상기 단말통신부를 통해 상기 저장장치로 상기 할당된 메모리 주소값을 전송하는 단말제어부;
    를 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
  13. 제12항에 있어서, 상기 단말제어부는,
    상기 저장장치가 접속됨을 확인하거나 또는 상기 프로그램이 실행됨을 확인하면, 주기적으로 상기 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
  14. 제12항에 있어서, 상기 단말제어부는,
    상기 메모리 할당 요청메시지를 수신하면, 상기 메모리 할당 요청메시지를 참조하여 상기 프로그램이 참조한 메모리 사이즈가 상기 호스트 단말의 가용 메모리 사이즈 또는 상기 호스트 단말에서 상기 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 상기 메모리를 할당하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
  15. 제12항에 있어서, 정보표현을 하는 출력부;를 더 포함하고,
    상기 단말제어부는, 상기 메모리 할당 요청메시지를 수신하면, 상기 메모리 할당 요청메시지를 참조하여 상기 프로그램이 요청한 메모리 사이즈가 상기 호스트 단말의 가용 메모리 사이즈 또는 상기 호스트 단말에서 상기 프로그램에 할당된 가용 메모리 사이즈를 초과하는 경우, 상기 출력부를 통해 메모리부족메시지를 출력하며, 상기 단말통신부를 통해 상기 저장장치로 에러메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
  16. 제12항에 있어서, 상기 단말제어부는,
    상기 단말통신부를 통해 상기 저장장치로부터 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 상기 할당된 메모리를 해제하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
  17. 제16항에 있어서,
    상기 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 시스템에서의 호스트 단말.
  18. 저장장치가, 실행 중인 프로그램이 참조한 메모리 사이즈가 상기 저장장치의 가용 메모리 사이즈를 초과함을 확인하는 확인단계;
    상기 저장장치가 호스트 단말로 메모리 할당 요청메시지를 전송하는 제1 전송단계;
    상기 저장장치가 상기 호스트 단말로부터 상기 호스트 단말에 할당된 메모리 주소값을 수신하는 주소값 수신단계;
    를 포함하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  19. 제18항에 있어서, 상기 확인단계는,
    상기 저장장치가, 상기 프로그램이 참조한 메모리 사이즈가 상기 프로그램에 할당된 가용 메모리 사이즈를 초과함을 확인하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  20. 제18항에 있어서, 상기 주소값 수신단계 이후에,
    상기 저장장치가, 상기 실행 중인 프로그램이 상기 할당된 메모리 참조를 해제하거나 상기 프로그램이 종료되는 경우, 상기 호스트 단말로 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 전송하는 제2 전송단계;
    를 더 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  21. 제18항에 있어서, 상기 제1 전송단계는,
    상기 저장장치가, 상기 호스트 단말로부터 상기 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 수신하면, 상기 체크메시지에 대한 응답으로 상기 메모리 할당 요청메시지를 전송하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  22. 호스트 단말이, 저장장치 내에서 프로그램 실행 중 상기 저장장치로부터 메모리 할당 요청메시지를 수신하는 수신단계;
    상기 호스트 단말이 상기 메모리 할당 요청메시지를 참조하여 메모리를 할당하는 할당단계;
    상기 호스트 단말이 상기 저장장치로 상기 할당된 메모리 주소값을 전송하는 제1 전송단계;
    를 포함하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  23. 제22항에 있어서, 상기 할당단계는,
    상기 호스트 단말이 상기 메모리 할당 요청메시지를 참조하여 상기 프로그램이 참조하는 메모리 사이즈가 상기 호스트 단말의 가용 메모리 사이즈 또는 상기 호스트 단말에서 상기 프로그램에 할당된 가용 메모리 사이즈 이하임 확인하고, 상기 메모리를 할당하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  24. 제22항에 있어서, 상기 수신단계 이전에,
    상기 호스트 단말이, 상기 저장장치가 접속됨을 확인하거나 또는 상기 프로그램이 실행됨을 확인하면, 주기적으로 상기 저장장치의 가용 메모리 사이즈를 체크하는 체크메시지를 전송하는 제2 전송단계;
    를 더 포함하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  25. 제22항에 있어서, 상기 제1 전송단계 이후에,
    상기 호스트 단말이, 상기 저장장치로부터 상기 할당된 메모리 주소값 및 메모리 해제 요청메시지를 수신하면, 상기 할당된 메모리를 해제하는 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  26. 제18항 내지 제25항 중 어느 하나의 항에 있어서,
    상기 프로그램은 분리 실행 대상 코드 블록인 것을 특징으로 하는 저장장치에서 호스트 단말의 메모리 이용 방법.
  27. 제18항 내지 제25항 중 어느 하나의 항에 기재된 방법을 실행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020100031121A 2009-07-30 2010-04-05 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체 KR101444070B1 (ko)

Applications Claiming Priority (6)

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

Publications (2)

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

Family

ID=43772987

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020100031121A KR101444070B1 (ko) 2009-07-30 2010-04-05 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체
KR1020100032361A KR101366669B1 (ko) 2009-07-30 2010-04-08 Ums 기반 통신 방법, 호스트 단말, 이를 위한 프로그램을 기록한 기록매체
KR1020100032320A KR101498919B1 (ko) 2009-07-30 2010-04-08 저장장치 기반 디지털 저작권 관리 시스템 및 방법, 이를 위한 기록매체
KR1020100033191A KR101384536B1 (ko) 2009-07-30 2010-04-12 스마트 카드에서 호스트 단말의 api 호출 시스템 및 방법, 그 호스트 단말 및 스마트 카드, 이를 위한 기록매체

Family Applications After (3)

Application Number Title Priority Date Filing Date
KR1020100032361A KR101366669B1 (ko) 2009-07-30 2010-04-08 Ums 기반 통신 방법, 호스트 단말, 이를 위한 프로그램을 기록한 기록매체
KR1020100032320A KR101498919B1 (ko) 2009-07-30 2010-04-08 저장장치 기반 디지털 저작권 관리 시스템 및 방법, 이를 위한 기록매체
KR1020100033191A KR101384536B1 (ko) 2009-07-30 2010-04-12 스마트 카드에서 호스트 단말의 api 호출 시스템 및 방법, 그 호스트 단말 및 스마트 카드, 이를 위한 기록매체

Country Status (1)

Country Link
KR (4) KR101444070B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101397666B1 (ko) * 2011-09-30 2014-05-26 주식회사 케이티 어플리케이션별 접근 권한 제어 방법 및 이를 구현한 사용자 단말
KR101499890B1 (ko) * 2013-05-15 2015-03-06 주식회사 코스콤 Low Latency 프레임워크 시스템
KR101490424B1 (ko) * 2013-07-17 2015-02-09 양진호 단말인증을 통한 디지털 컨텐츠의 전송 장치 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0475914B2 (ko) * 1984-08-16 1992-12-02 Takeda Chemical Industries Ltd
JP2004070467A (ja) 2002-08-02 2004-03-04 Kozo Niimura 外部記憶装置及びそれを利用したコンピュータシステム
KR20040054210A (ko) * 2002-12-18 2004-06-25 삼성전자주식회사 호스트 컴퓨터의 메모리를 이용한 프린터의 가상 메모리관리방법
KR20090033975A (ko) * 2007-10-02 2009-04-07 엘지전자 주식회사 복수개의 메모리를 구비한 영상표시기기 및 그 제어 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6547150B1 (en) 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
KR100496506B1 (ko) * 2003-10-21 2005-06-21 주식회사 텔레칩스 표준 ums 통신을 이용한 usb 장치의 확장기능제공방법
KR100704701B1 (ko) * 2005-05-20 2007-04-06 주식회사 케이티프리텔 Drm을 이용한 사용자 컴퓨팅 장치에서 음원 편집 방법및 장치
KR100739715B1 (ko) 2005-07-12 2007-07-13 삼성전자주식회사 웹서비스 정책 합의를 수행하는 장치 및 방법
CN100517236C (zh) * 2006-04-03 2009-07-22 北京握奇数据系统有限公司 智能卡嵌入式操作系统及其控制方法
KR100794345B1 (ko) * 2006-07-04 2008-01-15 주식회사 모빌탑 유엠에스 데이터 통신 기능을 갖는 이동통신 단말기 및 그데이터 전송 방법
US8317096B2 (en) * 2006-07-14 2012-11-27 Microsoft Corporation Smart card terminal side data and management framework
KR20080057015A (ko) * 2006-12-19 2008-06-24 삼성전자주식회사 휴대단말의 디지털콘텐츠파일 재생 방법, 장치 및 기록매체
KR101413064B1 (ko) * 2007-01-15 2014-07-08 삼성전자주식회사 휴대단말의 콘텐츠 권리객체 획득방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0475914B2 (ko) * 1984-08-16 1992-12-02 Takeda Chemical Industries Ltd
JP2004070467A (ja) 2002-08-02 2004-03-04 Kozo Niimura 外部記憶装置及びそれを利用したコンピュータシステム
KR20040054210A (ko) * 2002-12-18 2004-06-25 삼성전자주식회사 호스트 컴퓨터의 메모리를 이용한 프린터의 가상 메모리관리방법
KR20090033975A (ko) * 2007-10-02 2009-04-07 엘지전자 주식회사 복수개의 메모리를 구비한 영상표시기기 및 그 제어 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
US7165727B2 (en) Method and apparatus for installing an application onto a smart card
TW476914B (en) Using a high level programming language with a microcontroller
US20050184165A1 (en) Method and appatatus for selecting a desired application on a smart card
EP2549380B1 (en) Information processing device, virtual machine generation method, and application software distribution system
RU2488888C2 (ru) Способ доступа к приложениям в защищенной мобильной среде
KR101544731B1 (ko) 실행형 컨텐츠의 분리 실행이 가능한 저장 장치 및 그의 네이티브 실행 환경 구현 장치
US20050184163A1 (en) Method and apparatus for processing an application identifier from a smart card
CN101980160B (zh) 一种.net程序加密后的执行方法
US20060130128A1 (en) Process for compiling and executing software applications in a multi-processor environment
US20070124365A1 (en) Method, apparatus and program storage device that provides a user mode device interface
US9392051B2 (en) Application distribution supplying a dedicated application to a terminal from an application deposited by the developer
EP1575005B1 (en) Method and apparatus for processing an application identifier from a smart card
CN111078279B (zh) 字节码文件的处理方法、装置、设备及存储介质
KR101444070B1 (ko) 저장장치에서 호스트 단말의 메모리 이용 시스템 및 방법, 그 호스트 단말 및 저장장치, 이를 위한 기록매체
CZ423598A3 (cs) Přenosný bezpečný transakční systém pro programovatelná inteligentní zařízení
WO2022017242A1 (zh) 在第一系统运行第二系统应用的方法、装置、设备及介质
CN106127092B (zh) 一种cos系统应用剥离的智能卡及其工作方法
CN101593258B (zh) 一种在软件保护装置中实现.Net虚拟机的系统和方法
KR20110013176A (ko) 분리 실행 기반의 컨텐츠 등록 서버, 그 방법 및 그 방법을 수행하기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록매체
Akram et al. An Introduction to Java Card Programming
CN108345461A (zh) 应用更新方法和装置以及计算机可读存储介质
Hansmann et al. Introduction to Smart Card Software
Markantonakis Java card technology and security
Ma et al. Implementing FISC IC card specification and developing health care application using Java Card

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