KR101211673B1 - 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법 - Google Patents

사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법 Download PDF

Info

Publication number
KR101211673B1
KR101211673B1 KR1020100125152A KR20100125152A KR101211673B1 KR 101211673 B1 KR101211673 B1 KR 101211673B1 KR 1020100125152 A KR1020100125152 A KR 1020100125152A KR 20100125152 A KR20100125152 A KR 20100125152A KR 101211673 B1 KR101211673 B1 KR 101211673B1
Authority
KR
South Korea
Prior art keywords
operating system
user terminal
architecture
program
target
Prior art date
Application number
KR1020100125152A
Other languages
English (en)
Other versions
KR20120063960A (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 한국과학기술연구원
Priority to KR1020100125152A priority Critical patent/KR101211673B1/ko
Publication of KR20120063960A publication Critical patent/KR20120063960A/ko
Application granted granted Critical
Publication of KR101211673B1 publication Critical patent/KR101211673B1/ko

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법에 관한 것으로, 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 시스템 분석수단과, 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제수단과, 상기 시스템 분석수단으로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제수단의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 메모리 영역에 로딩하는 로더수단과, 상기 가상의 운영체제수단으로부터 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 변환수단을 포함함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행할 수 있다.

Description

사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법{BINARY COMPATIBILITY SYSTEM FOR EXECUTING PROGRAM OF EXTERNAL TERMINAL WITH DIFFERENT SYSTEM ENVIRONMENT IN USER TERMINAL AND METHOD THEREOF}
본 발명은 바이너리 호환 시스템 및 그 방법에 관한 것으로, 보다 상세하게는 특정의 운영체제와 아키텍처를 갖는 사용자 단말에서 서로 다른 운영체제 및/또는 아키텍처를 갖는 외부 단말의 특정 프로그램을 실행시키기 위해 미리 구축된 가상의 운영체제를 이용하여 해당 프로그램의 바이너리 파일에 직접적인 변화를 가하지 않고 단지 바이너리 파일만을 복사하여 실시간으로 코드 변환함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행하기 위한 바이너리 호환 시스템 및 그 방법에 관한 것이다.
일반적으로, 컴퓨터, 전자, 통신 기술이 비약적으로 발전함에 따라 무선통신망(Wireless Network)을 이용한 다양한 무선통신 서비스가 제공되고 있다. 이에 따라, 무선통신망을 이용한 이동통신 시스템에서 제공하는 서비스는 음성 서비스뿐만 아니라, 써킷(Circuit) 데이터, 패킷(Packet) 데이터 등과 같은 데이터를 송신하는 멀티미디어 서비스로 발전해 가고 있다.
이러한, 멀티미디어 서비스를 이용하기 위한 단말기로는 이동통신 단말기, PDA, 스마트폰(Smart phone) 및 MP3 등이 사용되고 있는 바, 국내에서 이용되는 대부분의 스마트폰과 같은 모바일 단말에는 낮은 비용과 전력 소비로 실행 능력이 높은 프로세서인 ARM 아키텍처(Architecture) 즉, ARM CPU(Advanced Risc Machines CPU)가 탑재되어 있으며, 다양한 어플리케이션 실행, 음성/데이터 통신 및 PC 연동 등을 지원하기 위한 운영체제(Operating System, OS)가 탑재되어 있다.
이러한, ARM 아키텍처를 구비한 모바일 단말의 운영체제로는 일반적으로 영국의 심비안사가 개발한 '심비안(Symbian)', 미국의 마이크로소프트사가 개발한 'Windows CE', 안드로이드(Android) 또는 무료로 배포되어 사용되는 '리눅스(Linux)' 등이 대표적으로 이용되고 있다.
종래의 모바일 단말에서는 탑재된 운영체제(예컨대, Symbian, 안드로이드, Windows CE 또는 리눅스 등) 및 아키텍처(예컨대, ARM 등)의 종류 및 스펙(Spec)에 따른 실행 프로그램 파일이 탑재되어 있으며, 각각의 실행 프로그램 파일에 대한 어플리케이션(Application)은 모바일 단말에서 실행되는데 있어서 필요한 각종 데이터 등을 운영체제로부터 할당받은 메모리의 특정 영역에 읽고/쓰고/삭제하는 방식으로 이용되었다.
하지만, 종래의 모바일 단말에서 각각 운영체제 및 아키텍처의 종류 및 스펙에 따라 제작된 실행 프로그램 파일은 이기종 운영체제 및/또는 아키텍처에서는 공유되지 않는다는 단점이 있으며, 이기종 운영체제 및/또는 아키텍처에서 실행 프로그램 파일을 공유하기 위해서는 소스 레벨에서 재컴파일(Recompile)/커스터마이징(Customizing)을 수행해야 한다는 문제점이 있다.
또한, 아키텍처가 다르거나 운영체제가 다른 경우에는 바이너리 코드가 동작되지 않으며, 동작을 위해서는 소스 코드가 있는 경우는 사용자에 의해서 포팅 작업을 통해서 동작시킬 수 있으며, 혹은 동작시키고자 하는 호스트 디바이스에 맞는 아키텍처 코드로 변환된 바이너리를 동작시켜야 하는 문제점이 있다.
본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 특정의 운영체제와 아키텍처를 갖는 사용자 단말에서 서로 다른 운영체제 및/또는 아키텍처를 갖는 외부 단말의 특정 프로그램을 실행시키기 위해 미리 구축된 가상의 운영체제를 이용하여 해당 프로그램의 바이너리 파일에 직접적인 변화를 가하지 않고 단지 바이너리 파일만을 복사하여 실시간으로 코드 변환함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행하기 위한 바이너리 호환 시스템 및 그 방법을 제공하는데 있다.
전술한 목적을 달성하기 위하여 본 발명의 제1 측면은, 운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 시스템으로서, 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 시스템 분석수단; 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제수단; 상기 시스템 분석수단으로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제수단의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 메모리 영역에 로딩하는 로더수단; 및 상기 가상의 운영체제수단으로부터 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 모바일 단말에 대응되는 실행 코드로 변환하는 변환수단을 포함하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템을 제공하는 것이다.
여기서, 상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식하고, 인식된 이벤트 요청을 상기 변환수단으로 전달하는 프로그램 관리수단을 더 포함하며, 상기 변환수단은 상기 가상의 운영체제수단으로부터 해당 이벤트 요청에 필요한 수행 라이브러리를 제공받아 상기 프로그램 관리수단으로부터 전달된 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환함이 바람직하다.
바람직하게, 상기 프로그램 관리수단은 상기 변환수단으로부터 이벤트 요청에 따라 실시간 변환된 실행 코드를 제공받아 해당 사용자 단말의 화면에 디스플레이 해줄 수 있다.
바람직하게, 상기 프로그램 관리수단은 상기 변환수단을 통해 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장되도록 관리하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제수단보다 우선순위로 상기 변환수단에 제공되도록 관리할 수 있다.
바람직하게, 상기 가상의 운영체제수단은 상기 사용자 단말 내의 프로세스 형태로 이루어지거나 상기 사용자 단말과 유/무선 통신망을 통해 연결되는 별도의 서버로 이루어지며, 상기 가상의 운영체제수단이 별도의 서버로 이루어질 경우, 상기 로더수단은 상기 별도의 서버와 연결하기 위한 통신 인터페이스를 구성하고, 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 별도의 서버로 가동 준비 요청메시지를 전달할 수 있다.
바람직하게, 상기 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어질 수 있다.
바람직하게, 상기 로더수단은 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 가상의 운영체제수단으로 가동 준비 요청메시지를 전달할 수 있다.
바람직하게, 상기 변환수단은 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환될 수 있다.
본 발명의 제2 측면은, 운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 방법으로서, (a) 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제를 구축하는 단계; (b) 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 단계; (c) 상기 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일을 메모리 영역에 로딩함과 아울러 상기 가상의 운영체제로부터 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 제공받아 메모리 영역에 로딩하는 단계; 및 (d) 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 단계를 포함하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 제공하는 것이다.
여기서, 상기 단계(d) 이후에, 상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식한 후, 상기 가상의 운영체제로부터 제공된 해당 이벤트 요청에 필요한 수행 라이브러리를 이용하여 해당 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환하는 단계를 더 포함함이 바람직하다.
바람직하게, 인식된 이벤트 요청에 따라 실시간 변환된 실행 코드를 해당 모바일 단말의 화면에 디스플레이 해주는 단계를 더 포함할 수 있다.
바람직하게, 상기 단계(d)에서 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제보다 우선순위로 이용할 수 있다.
바람직하게, 상기 단계(a)에서 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어질 수 있다.
바람직하게, 상기 단계(c)에서, 상기 가상의 운영체제의 가동을 준비하는 과정은 상기 가상의 운영체제에서 타겟 운영체제를 위한 디렉토리와 파일을 초기화할 수 있다.
바람직하게, 상기 단계(d)는, 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환할 수 있다.
본 발명의 제3 측면은 상기의 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것이다.
이상에서 설명한 바와 같은 본 발명의 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법에 따르면, 특정의 운영체제와 아키텍처를 갖는 사용자 단말에서 서로 다른 운영체제 및/또는 아키텍처를 갖는 외부 단말의 특정 프로그램을 실행시키기 위해 미리 구축된 가상의 운영체제를 이용하여 해당 프로그램의 바이너리 파일에 직접적인 변화를 가하지 않고 단지 바이너리 파일만을 복사하여 실시간으로 코드 변환함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행할 수 있는 이점이 있다.
본 발명에 의하면, 아키텍처와 운영체제에 상관없이 사용자가 원하는 장치에서 프로그램 바이너리 파일의 복사만으로 프로그램이 효과적으로 동작할 수 있으며, 아키텍쳐 호환성과 운영체제 호환성을 확보할 수 있는 이점이 있다.
도 1은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템을 나타낸 블록 구성도이다.
도 2는 일반적인 PE 파일 포맷의 전체 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 적용된 로더모듈을 통해 타겟 프로그램의 바이너리 파일과 타켓 운영체제의 라이브러리가 메모리 영역에 로딩되는 모습을 개략적으로 나타낸 도면이다.
도 4는 도 3의 메모리 영역에 바이너리 파일이 로드된 구조를 구체적으로 나타낸 도면이다.
도 5는 도 3의 메모리 영역에 DLL이 로드된 상태를 테이블화하여 구체적으로 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 설명하기 위한 전체적인 흐름도이다.
이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나, 다음에 예시하는 본 발명의 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것이다.
도 1은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템을 나타낸 블록 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템은, 크게 시스템 분석모듈(100), 가상의 운영체제모듈(200), 로더모듈(300) 및 변환모듈(400) 등을 포함하여 이루어진다.
여기서, 시스템 분석모듈(100)은 사용자 단말(10)에 탑재되어 외부 단말(10)의 타겟(Target) 프로그램(11)을 실행하기 위한 바이너리 파일(Binary File)의 헤더(Header) 정보를 이용하여 외부 단말(10)의 타겟 운영체제(Operating System, OS) 및 아키텍처(Architecture)를 식별하는 기능을 수행한다.
예를 들면, 사용자 단말(10)이 ARM 아키텍처와 안드로이드(Android)/심비안(Symbian) 운영체제(OS)를 사용하고, 외부 단말(20)이 X86 아키텍처와 윈도우즈(Windows) 운영체제를 사용할 경우, 사용자 단말(10)의 ARM 아키텍처는 외부 단말(20)의 X86 실행 바이너리 파일을 읽었을 때 전혀 알 수 없는 데이터가 된다.
따라서, 시스템 분석모듈(100)에서는 먼저, 외부 단말(20)에서 X86 바이너리 코드로 되어 있는 실행하고자 하는 바이너리 파일 즉, 타켓 바이너리 파일이 사용자 단말(10)에서 실행 가능한 파일인지를 체크한다.
이 때, 도 2에 도시된 바와 같이, 통상의 PE 파일 포맷 구조는 근본적으로 윈도 운영체제(OS) 로더가 감춰진 실행 코드를 다루는 데 있어서 필수적인 정보를 은닉해 주는 자료 구조로서, 링크와 API 내보내기/가져오기 테이블, 리소스 관리 데이터, 스레드 로컬 장치 데이터들을 포함하는 동적 라이브러리를 포함한다.
즉, X86 바이너리는 x86 PE(Portable Executable) 파일로서 PE 파일 특성을 갖고 있으므로, 시스템 분석모듈(100)에서는 타겟 바이너리 파일의 헤더(Header)를 분석하고 사용하는 DLL(Dynamic Linking Library)을 조사함으로써, 외부 단말(10)에서 사용하는 타겟 운영체제(OS) 및 아키텍처를 용이하게 식별할 수 있다.
한편, 사용자 단말(10)은 무선 인터넷 또는 휴대 인터넷을 통하여 통신하는 셀룰러폰(Cellular phone), 피씨에스폰(PCS phone : Personal Communications Services phone), 동기식/비동기식 IMT-2000(International Mobile Telecommunication-2000) 등 이동통신 단말기를 포함하고, 이외에도 예컨대, 팜 PC(Palm Personal Computer), 개인용 디지털 보조기(PDA : Personal Digital Assistant), 스마트폰(Smart phone), 왑폰(WAP phone : Wireless application protocol phone), 모바일 게임기(Mobile play-station), 데스크탑 PC, 노트북 PC 등 유/무선 통신망(예컨대, 인터넷, 네트워크, PSTN, PSDN, LAN, PAN, WAN, WPAN, CDMA 등)에 접속하기 위한 사용자 인터페이스를 갖는 모든 유무선 가전/통신 장치를 포괄적으로 의미할 수 있다.
외부 단말(20)은 예컨대, 데스크탑 PC, 노트북 PC 등 컴퓨터인 것이 일반적이지만, 이에 한정되는 것은 아니며, 사용자 단말(10)의 운영체제 및 아키텍처 중 적어도 어느 하나가 서로 다른 운영체제 및/또는 아키텍처의 시스템 환경을 갖는 것이면 어느 것이든 적용 가능하다.
가상의 운영체제모듈(200)은 외부 단말(20)의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 데이터베이스(DB)화하여 구비하고 이를 전체적으로 관리하며, 로더모듈(300) 및/또는 변환모듈(400)로 필요한 수행 라이브러리 및 시스템 구성 정보들(예컨대, Ntdll 실행, Services 실행, Explore 실행 등)을 제공하는 기능을 수행한다.
즉, 가상의 운영체제모듈(200)은 외부 단말(20)의 타겟 운영체제에서 필요로 하는 다수의 라이브러리(Library)와 자원(Resource)을 디렉토리(Directory)와 파일(Files) 단위로 구성함이 바람직하다. 이 때, 상기 타겟 운영체제에 필요한 각각의 디렉토리와 파일을 하나의 이미지 파일로 기록하여 사용할 수도 있다.
이러한 가상의 운영체제모듈(200)은 사용자 단말(10)이 필요로 하는 수행 라이브러리를 지원한다. 이 때, 상기 수행 라이브러리는 레지스트리 관리 라이브러리(예컨대, Create, open_key, get_key, set_key, get_value, set_value, find 등), 프로세스 관리 라이브러리(예컨대, 프로세스, 오브젝트 핸들 관리, 스레드 생성, wait, 실행, close, find , 스레드 정보(TLS) 관리, DLL 메모리에 로드, API 검색, 프로세스간 데이터 교환 관리, 상황 정보(context) 관리 등), 파일 관리 라이브러리(예컨대, 가상 디렉토리 관리, Create, read, write, close, find 등), 폰트 데이터 관리 라이브러리(예컨대, 기본 폰트 적용, 내부 파일 폰트 검색, 다국어 지원 등), 화면 관리 라이브러리(예컨대, 윈도우 화면 정보(property) 관리, 윈도우 트리 구성 관리, 오브젝트의 영역, 윈도우 영역 관리, 화면 그리기, 화면 갱신, 갱신 영역 지정, 영역 숨김, zorder 관리, foreground/background 등), 또는 이벤트 관리 라이브러리(예컨대, 이벤트 후킹, 전달, 보류 등) 등으로 이루어질 수 있다.
한편, 가상의 운영체제모듈(200)은 사용자 단말(10)에 탑재되어 서버 역할을 하는 프로세스(Process) 형태 즉, 바이너리에서 필요로 하는 API(Application Programming Interface)와 리소스(Resource)에 대한 대응을 하는 프로세스로서 구현됨이 바람직하지만, 이에 국한하지 않으며, 사용자 단말(10)과 유/무선 통신망을 통해 연결되는 별도의 네트워크 서버(Server)로 이루어질 수도 있다.
이 때, 가상의 운영체제모듈(200)이 별도의 서버로 이루어질 경우, 후술하는 로더모듈(300)은 상기 별도의 서버와 연결하기 위한 통신 인터페이스를 구성하고, 외부 단말(20)의 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 별도의 서버로 가동 준비 요청메시지를 전달할 수 있다.
로더모듈(300)은 사용자 단말(10)에 탑재되어 시스템 분석모듈(100)로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 가상의 운영체제모듈(200)의 가동을 준비하고, 외부 단말(20)의 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅(booting)시 필요한 라이브러리(Library) 및 레지스트리(Registry) 정보 등을 특정의 메모리 영역에 로딩(Loading)하는 기능을 수행한다.
한편, 모든 운영체제는 특정 디렉토리 구조를 가지고 있다. 예를 들면, 프로그램 파일(Program Files)에 프로그램이 설치되고, 윈도우즈(Windows) 폴더에 운영체제에서 필요로 하는 프로그램이 있으며, "Windows/System" 혹은 "System32"에 주요한 DLL(예컨대, System32 아래에 있는 "ntdll" 혹은 KERNEL32 등)을 가지고 있다.
따라서, 로더모듈(300)은 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 가상의 운영체제모듈(200)로 가동 준비 요청메시지를 전달한 후, 가상의 운영체제모듈(200)로부터 타겟 운영체제(예컨대, 윈도우즈 운영체제)의 부팅 시에 중요 DLL을 먼저 로딩하고, 레지스트리 정보를 가상의 메모리 영역에 로딩한다. 그런 다음, 타겟 프로그램을 실행하기 위한 바이너리 파일을 예컨대, 가상의 메모리 영역에 로딩한다.
한편, 윈도우즈에서 하나의 프로그램이 동작되기 위해서는 많은 컴포넌트(Component)가 필요하다. 이러한 컴포넌트들을 레지스트리에서 관리하고 있는데, 주요하고 자주 사용되는 것은 서비스(Service)로 운영체제 레벨에서 동작시키고, 예컨대, 파일 열기 시에 보여지는 화면, 공통의 다이얼로그들이 있다. 그리고, 프로그램 레벨에서 필요로 하는 컴포넌트들은 프로그램이 실행되면서 동작시킨다(예컨대, 이미지 코덱과 유사함).
도 3은 본 발명의 일 실시예에 적용된 로더모듈을 통해 타겟 프로그램의 바이너리 파일과 타켓 운영체제의 라이브러리가 메모리 영역에 로딩되는 모습을 개략적으로 나타낸 도면이며, 도 4는 도 3의 메모리 영역에 바이너리 파일이 로드된 구조를 구체적으로 나타낸 도면으로서, 예컨대, MS Windows 계열의 경우 프로세스 단위로 4GB 단위의 가상 주소 공간을 가지고 있으며, 바이너리 파일의 경우에는 RVA(Relative Virtual Address)에 의해서 해당 프로세스의 가상 메모리 상의 번지에 상대적인 번지 개념으로 메모리 상에 복사한다.
또한, DOS 헤더(Header), PE 헤더(Header), 섹션 테이블(Section Table), TEXT 섹션(Section), DATA 섹션(Section), RSRC 섹션(Section) 등 기타 섹션(Section)들을 로드한다. 또한, 필요로 하는 라이브러리, DLL 등과 같은 모듈도 가상 메모리에 복사한다.
도 5는 도 3의 메모리 영역에 DLL이 로드된 상태를 테이블화하여 구체적으로 나타낸 도면으로서, 도 5의 (a)는 가상 운영체제 서버 프로세스의 메모리 구조를 나타낸 것이며, 도 5의 (b)는 실행 바이너리 프로세스의 메모리 구조를 나타낸 도면이다.
도 5의 (a)를 참조하면, 타겟 프로그램의 실행 파일을 실행시키기 위해서는 가상의 운영체제모듈(200)의 역할을 수행하는 가상 운영체제 서버 프로세스가 동작하여야 한다. 동작한 메모리 모습을 보면, 상기 가상 운영체제 서버 프로세스의 메모리 구조를 가지고 있으며, "Wineboot"는 현재 동작시키고자 하는 프로그램의 바이너리에서 필요로 하는 서버를 동작시키기 위한 프로세스이다.
도 5의 (b)를 참조하면, 실행 바이너리 프로세스는 내가 실행시키고자 하는 프로그램을 동작시키는 프로세스이며, 동작을 위해서 프로세스가 최소 2개이며, 현재는 3개의 프로세스가 동작된 것을 나타낸다.
각각의 프로세스별로 상당히 많은 dll, 라이브러리, 컴포넌트라고 할 수 있는 것을 포함하고 있으며, 그 조합은 어떤 것을 동작시키고자 하는지에 따라서 다르게 메모리 맵을 갖게 된다.
그리고, 변환모듈(400)은 가상의 운영체제모듈(200)로부터 외부 단말(20)의 타겟 운영체제(OS)와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드로 변환하는 기능을 수행한다.
즉, 변환모듈(400)은 내부 범용 레지스터(예컨대, T0, T1, T2 등)를 미리 준비한 후, 로더모듈(300)로부터 로딩된 바이너리 파일 내의 연산을 분리하고, 명령어를 개별적으로 변환함으로서 해당 사용자 단말(10)에 대응되는 실행 코드로 변환될 수 있다. 이 때, 해당 사용자 단말(10)에 대응되는 실행 코드로 변환하는데 필요한 라이브러리에 대해서는 가상의 운영체제모듈(200)과 통신하여 지원 받는다.
예컨대, X86 계열의 "#r1 = r1 - 16"의 연산이 "addi r1,r1,-16"과 같은 어셈블리어로 표현될 경우, ARM 아키텍처 코드로 변환하기 위해서는 첫째 연산을 분리한다("T0 = r1", "T1 = T0 - 16", "r1 = T0"), 둘째, 프로세스 명령어로 변환한다("mov T0, r1", "sub T1, T0, -16", "mov r1, T0"). 이러한 단계를 거쳐서 변환된다.
추가적으로, 사용자 단말(10)의 운영체제(OS)에서 발생한 이벤트 요청을 인식하고, 인식된 이벤트 요청을 변환모듈(400)로 전달하는 프로그램 관리모듈(500)이 더 포함될 수 있다.
이 때, 변환모듈(400)은 가상의 운영체제모듈(200)로부터 해당 이벤트 요청에 필요한 수행 라이브러리를 제공받아 프로그램 관리모듈(500)로부터 전달된 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드(또는 기계 코드)로 실시간 변환한다.
또한, 프로그램 관리모듈(500)은 변환모듈(400)로부터 이벤트 요청에 따라 실시간 변환된 실행 코드를 제공받아 해당 사용자 단말(10)의 화면에 디스플레이(Display) 해줄 수 있다.
또한, 프로그램 관리모듈(500)은 변환모듈(400)을 통해 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장되도록 관리함이 바람직하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 가상의 운영체제모듈(200)보다 우선순위로 변환모듈(400)에 제공되도록 관리함이 바람직하다.
즉, 프로그램 관리모듈(500)은 사용자에게 그래픽 기반의 화면을 제공하고, 사용자로 하여금 혹은 다른 이벤트에 대해서 가상의 운영체제에 요청을 하고, 그에 따른 응답을 다시 사용자에게 제공하는 역할을 수행한다. 이 때, 프로그램 관리모듈(500)이 요청하는 내용이 선변환이 이루어져 있으면, 변환모듈(400)을 거치지 않지만, 변환이 아직 안되어 있으면 변환모듈(400)을 거처서 요청, 응답을 받아야 한다.
예를 들어, 사용자 단말(10)의 화면에 디스플레이 된 타겟 프로그램(예컨대, 그림판 프로그램)의 초기 메인 화면에서 "파일 열기"를 클릭하면, 프로그램 관리모듈(500)에 클릭 이벤트가 전달되고, 이벤트의 위치에 상하는 메뉴의 파일 열기 메뉴가 선택되어 "FILE_OPEN"과 같은 이벤트가 변환모듈(400)로 전달된다. 그러면, 변환모듈(400)에서는 가상의 운영체제모듈(200)에 "FILE_OPEN"에 상응하는 컴포넌트를 호출하고, 지정되어 있는 디렉토리 위치의 파일 열기 창이 보인다. 파일 열기 창에는 "COMCTL.DLL"(공통적으로 사용되는 컨트롤 묶음)과 "COMDLG.DLL"(공통적으로 사용되는 다이얼로그 묶음)와 같은 컴포넌트들이 상용되며 이 또한 변환모듈(400)과 프로그램 관리모듈(500)간에 이벤트 전달에 의해서 우리에게 익숙한 파일 열기 창이 사용자 단말(10)의 화면에 디스플레이 된다.
본 발명의 바이너리 호환 시스템에 의해서 실시간 변환된 코드에 의해서 현재 디바이스 즉, 사용자 단말(10)의 디바이스 드라이버를 모두 사용할 수 있으며, 프로그램 관리모듈(500)에 의해서 각각의 실행 코드와 디바이스 드라이버 모듈이 연결되며, 그에 따라서 현재 디바이스 즉, 사용자 단말(10)의 화면에 그래픽 디바이스(GUI)를 사용한 다양한 그래픽 화면을 제공할 수 있다.
상기와 같이 구성된 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템은 사용자 단말(10)에 소프트웨어(Software) 및/또는 하드웨어(Hardware) 형태로 탑재되어 구현됨이 바람직하지만, 이에 국한하지 않으며, 사용자 단말(10)에 유/무선으로 연결된 외부의 장치 또는 서버 형태 등으로 구현될 수도 있다.
이하에는 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법에 대하여 상세하게 설명하기로 한다.
도 6은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 설명하기 위한 전체적인 흐름도이다.
도 1 및 도 6을 참조하면, 먼저, 외부 단말(20)의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제모듈(200)을 미리 구축한다(S100).
이후에, 시스템 분석모듈(100)을 통해 외부 단말(20)의 실행하고자 하는 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더(Header) 정보를 이용하여 외부 단말(20)의 타겟 운영체제(OS) 및 아키텍처(Architecture)를 식별한다(S200).
그런 다음, 로더모듈(300)을 통해 상기 단계S200에서 식별된 타겟 운영체제와 아키텍처를 기반으로 가상의 운영체제모듈(200)의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일을 특정의 메모리 영역에 로딩(Loading)함과 아울러 가상의 운영체제모듈(200)로부터 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 제공받아 메모리 영역에 로딩한다(S300).
마지막으로, 변환모듈(400)을 통해 가상의 운영체제모듈(200)로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드로 변환한다(S400).
추가적으로, 상기 단계S400 이후에, 프로그램 관리모듈(500)을 통해 사용자 단말(10)의 운영체제에서 발생한 이벤트 요청을 인식한 후, 가상의 운영체제모듈(200)로부터 제공된 해당 이벤트 요청에 필요한 수행 라이브러리를 이용하여 해당 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드로 실시간 변환하는 단계를 더 포함할 수 있다.
더욱이, 상기 인식된 이벤트 요청에 따라 실시간 변환된 실행 코드를 해당 사용자 단말(10)의 화면에 디스플레이 해주는 단계를 더 포함할 수도 있다.
한편, 프로그램 관리모듈(500)을 통해 상기 단계S400에서 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 가상의 운영체제모듈(200)보다 우선순위로 이용함이 바람직하다.
또한, 상기 단계S300에서, 가상의 운영체제모듈(200)의 가동을 준비하는 과정은 가상의 운영체제모듈(200)에서 타겟 운영체제를 위한 디렉토리와 파일을 초기화할 수 있다.
또한, 상기 단계S400은, 가상의 운영체제모듈(200)로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말(10)에 대응되는 실행 코드로 변환할 수 있다.
한편, 본 발명에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법은 컴퓨터로 판독할 수 있는 기록매체에 컴퓨터로 판독할 수 있는 코드로 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체에는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피 디스크, 이동식 저장장치, 비휘발성 메모리(Flash Memory), 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다.
전술한 본 발명에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법에 대한 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명에 속한다.
10 : 사용자 단말,
20 : 외부 단말,
100 : 시스템 식별모듈,
200 : 가상의 운영체제모듈,
300 : 로더모듈,
400 : 변환모듈,
500 : 프로그램 관리모듈

Claims (12)

  1. 삭제
  2. 운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 시스템으로서,
    외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 시스템 분석수단;
    외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제수단;
    상기 시스템 분석수단으로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제수단의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 메모리 영역에 로딩하는 로더수단;
    상기 가상의 운영체제수단으로부터 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 변환수단; 및
    상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식하고, 인식된 이벤트 요청을 상기 변환수단으로 전달하는 프로그램 관리수단을 포함하되,
    상기 변환수단은 상기 가상의 운영체제수단으로부터 해당 이벤트 요청에 필요한 수행 라이브러리를 제공받아 상기 프로그램 관리수단으로부터 전달된 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
  3. 제2 항에 있어서,
    상기 프로그램 관리수단은 상기 변환수단으로부터 이벤트 요청에 따라 실시간 변환된 실행 코드를 제공받아 해당 사용자 단말의 화면에 디스플레이 해주며,
    상기 변환수단을 통해 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장되도록 관리하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제수단보다 우선순위로 상기 변환수단에 제공되도록 관리하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
  4. 제2 항에 있어서,
    상기 가상의 운영체제수단은 상기 사용자 단말 내의 프로세스 형태로 이루어지거나 상기 사용자 단말과 유/무선 통신망을 통해 연결되는 별도의 서버로 이루어지고, 상기 가상의 운영체제수단이 별도의 서버로 이루어질 경우, 상기 로더수단은 상기 별도의 서버와 연결하기 위한 통신 인터페이스를 구성하고, 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 별도의 서버로 가동 준비 요청메시지를 전달하며,
    상기 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어지며,
    상기 로더수단은 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 가상의 운영체제수단으로 가동 준비 요청메시지를 전달하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
  5. 제2 항에 있어서,
    상기 변환수단은 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환되는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
  6. 삭제
  7. 운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 방법으로서,
    (a) 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제를 구축하는 단계;
    (b) 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 단계;
    (c) 상기 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일을 메모리 영역에 로딩함과 아울러 상기 가상의 운영체제로부터 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 제공받아 메모리 영역에 로딩하는 단계; 및
    (d) 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 단계를 포함하되,
    상기 단계(d) 이후에,
    상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식한 후, 상기 가상의 운영체제로부터 제공된 해당 이벤트 요청에 필요한 수행 라이브러리를 이용하여 해당 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환하는 단계; 및
    인식된 이벤트 요청에 따라 실시간 변환된 실행 코드를 해당 사용자 단말의 화면에 디스플레이 해주는 단계를 더 포함하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
  8. 제7 항에 있어서,
    상기 단계(d)에서 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제보다 우선순위로 이용하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
  9. 제7 항에 있어서,
    상기 단계(a)에서 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어진 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
  10. 제7 항에 있어서,
    상기 단계(c)에서, 상기 가상의 운영체제의 가동을 준비하는 과정은 상기 가상의 운영체제에서 타겟 운영체제를 위한 디렉토리와 파일을 초기화하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
  11. 제7 항에 있어서,
    상기 단계(d)는, 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
  12. 제7 항 내지 제11 항 중 어느 한 항의 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020100125152A 2010-12-08 2010-12-08 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법 KR101211673B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100125152A KR101211673B1 (ko) 2010-12-08 2010-12-08 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100125152A KR101211673B1 (ko) 2010-12-08 2010-12-08 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20120063960A KR20120063960A (ko) 2012-06-18
KR101211673B1 true KR101211673B1 (ko) 2012-12-12

Family

ID=46684257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100125152A KR101211673B1 (ko) 2010-12-08 2010-12-08 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR101211673B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10120663B2 (en) 2014-03-28 2018-11-06 Intel Corporation Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634023B1 (ko) 2005-04-27 2006-10-17 에스케이 텔레콤주식회사 스마트 폰에서 임베디드 어플리케이션 프로그램을 지원하기위한 방법 및 그시스템
KR100860920B1 (ko) 2007-05-14 2008-09-29 주식회사 현대오토넷 제품 식별 코드를 포함하는 다운로드 소프트웨어 데이터의생성 방법 및 제품 식별 코드에 따라 다운로드 소프트웨어데이터를 선택적으로 다운로드 하는 소프트웨어 다운로드시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634023B1 (ko) 2005-04-27 2006-10-17 에스케이 텔레콤주식회사 스마트 폰에서 임베디드 어플리케이션 프로그램을 지원하기위한 방법 및 그시스템
KR100860920B1 (ko) 2007-05-14 2008-09-29 주식회사 현대오토넷 제품 식별 코드를 포함하는 다운로드 소프트웨어 데이터의생성 방법 및 제품 식별 코드에 따라 다운로드 소프트웨어데이터를 선택적으로 다운로드 하는 소프트웨어 다운로드시스템

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
논문1:한국인터넷정보학회
논문2:한국인터넷정보학회

Also Published As

Publication number Publication date
KR20120063960A (ko) 2012-06-18

Similar Documents

Publication Publication Date Title
US11868785B2 (en) Application program page processing method and device
CN108170503B (zh) 一种跨系统运行安卓应用的方法、终端及存储介质
EP2235629B1 (en) Methods and systems for provisioning a virtual disk to diskless virtual and physical machines
WO2021013243A1 (zh) 一种启动小程序的方法、设备和计算机存储介质
US11010355B2 (en) Layer-based file access method and apparatus of virtualization instance
US10019298B2 (en) Middleware interface and middleware interface generator
US20140297999A1 (en) Computer system and method for controlling acpi information
US7730492B1 (en) Method and system for running multiple virtual machines in a single process
CN104603750A (zh) 使用bpram来布局和执行软件应用
KR20130098775A (ko) 다중 운영체제를 지원하는 클라이언트 단말 및 다중 운영체제 지원방법
WO2009100156A1 (en) Automatic connections between application components
US10908948B2 (en) Multiple application instances in operating systems that utilize a single process for application execution
US10360043B2 (en) Installation of device drivers from virtual media
CN104583948A (zh) 使用bpram来布局和执行操作系统
US6961848B2 (en) System and method for supporting legacy operating system booting in a legacy-free system
CN114691300A (zh) 一种虚拟机实例的热迁移方法
US10514940B2 (en) Virtual application package reconstruction
US20200301789A1 (en) File Sharing Among Virtual Containers with Fast Recovery and Self-Consistency
WO2019139740A1 (en) Extensible input stack for processing input device data
KR101211673B1 (ko) 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법
US9804872B1 (en) Method for emulation of a virtual OS bookmark on a host desktop
US20180165136A1 (en) A system, method, computer program and data signal for hosting and executing a program on a mainframe
US8612737B2 (en) System and method for supporting multiple hardware platforms with a single disk image
US9292318B2 (en) Initiating software applications requiring different processor architectures in respective isolated execution environment of an operating system
WO2019139738A1 (en) Extensible input stack for processing input device data

Legal Events

Date Code Title Description
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: 20151126

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161201

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee