KR20120063960A - Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof - Google Patents

Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof Download PDF

Info

Publication number
KR20120063960A
KR20120063960A KR1020100125152A KR20100125152A KR20120063960A KR 20120063960 A KR20120063960 A KR 20120063960A KR 1020100125152 A KR1020100125152 A KR 1020100125152A KR 20100125152 A KR20100125152 A KR 20100125152A KR 20120063960 A KR20120063960 A KR 20120063960A
Authority
KR
South Korea
Prior art keywords
operating system
user terminal
program
architecture
binary
Prior art date
Application number
KR1020100125152A
Other languages
Korean (ko)
Other versions
KR101211673B1 (en
Inventor
박대혁
김수현
Original Assignee
한국과학기술연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술연구원 filed Critical 한국과학기술연구원
Priority to KR1020100125152A priority Critical patent/KR101211673B1/en
Publication of KR20120063960A publication Critical patent/KR20120063960A/en
Application granted granted Critical
Publication of KR101211673B1 publication Critical patent/KR101211673B1/en

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

Abstract

PURPOSE: A binary compatible system for operating a program of an external terminal having different system environment is provided to change a real-time code by copying a binary file instead of directly changing the film of the program using a virtual operating system. CONSTITUTION: A binary compatible system for operating a program of an external terminal having different system environment comprises the following: a system analysis unit(100) distinguishing a target OS(operating system) and an architecture; a virtual OS unit(200) including an execution library and system configuration information for each a target OS and the architecture; a loader(300) loading a binary file for operating the target OS, and a library and registry information for booting the target OS to a memory area; and a converting unit(400) converting a mechanical code of the binary file to an operational code.

Description

사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법{BINARY COMPATIBILITY SYSTEM FOR EXECUTING PROGRAM OF EXTERNAL TERMINAL WITH DIFFERENT SYSTEM ENVIRONMENT IN USER TERMINAL AND METHOD THEREOF}BINARY COMPATIBILITY SYSTEM FOR EXECUTING PROGRAM OF EXTERNAL TERMINAL WITH DIFFERENT SYSTEM ENVIRONMENT IN USER TERMINAL AND METHOD THEREOF}

본 발명은 바이너리 호환 시스템 및 그 방법에 관한 것으로, 보다 상세하게는 특정의 운영체제와 아키텍처를 갖는 사용자 단말에서 서로 다른 운영체제 및/또는 아키텍처를 갖는 외부 단말의 특정 프로그램을 실행시키기 위해 미리 구축된 가상의 운영체제를 이용하여 해당 프로그램의 바이너리 파일에 직접적인 변화를 가하지 않고 단지 바이너리 파일만을 복사하여 실시간으로 코드 변환함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행하기 위한 바이너리 호환 시스템 및 그 방법에 관한 것이다.
The present invention relates to a binary compatible system and a method thereof, and more particularly, to a virtual terminal built in advance for executing a specific program of an external terminal having a different operating system and / or architecture in a user terminal having a specific operating system and architecture. Binary compatible system and method for effectively executing a program of an external terminal having a different system environment in a user terminal by copying only the binary file in real time without directly changing the binary file of the corresponding program using an operating system. It is about.

일반적으로, 컴퓨터, 전자, 통신 기술이 비약적으로 발전함에 따라 무선통신망(Wireless Network)을 이용한 다양한 무선통신 서비스가 제공되고 있다. 이에 따라, 무선통신망을 이용한 이동통신 시스템에서 제공하는 서비스는 음성 서비스뿐만 아니라, 써킷(Circuit) 데이터, 패킷(Packet) 데이터 등과 같은 데이터를 송신하는 멀티미디어 서비스로 발전해 가고 있다.In general, as computers, electronics, and communication technologies have advanced rapidly, various wireless communication services using wireless networks have been provided. Accordingly, a service provided by a mobile communication system using a wireless communication network is developing into a multimedia service for transmitting not only voice services but also data such as circuit data, packet data, and the like.

이러한, 멀티미디어 서비스를 이용하기 위한 단말기로는 이동통신 단말기, PDA, 스마트폰(Smart phone) 및 MP3 등이 사용되고 있는 바, 국내에서 이용되는 대부분의 스마트폰과 같은 모바일 단말에는 낮은 비용과 전력 소비로 실행 능력이 높은 프로세서인 ARM 아키텍처(Architecture) 즉, ARM CPU(Advanced Risc Machines CPU)가 탑재되어 있으며, 다양한 어플리케이션 실행, 음성/데이터 통신 및 PC 연동 등을 지원하기 위한 운영체제(Operating System, OS)가 탑재되어 있다.As a terminal for using the multimedia service, a mobile communication terminal, a PDA, a smart phone, and an MP3 are used. As a result, low cost and power consumption are required for a mobile terminal such as most smartphones used in Korea. It is equipped with ARM architecture (Advanced Risc Machines CPU), which is a high performance processor, and an operating system (OS) to support various application execution, voice / data communication and PC interworking. It is mounted.

이러한, ARM 아키텍처를 구비한 모바일 단말의 운영체제로는 일반적으로 영국의 심비안사가 개발한 '심비안(Symbian)', 미국의 마이크로소프트사가 개발한 'Windows CE', 안드로이드(Android) 또는 무료로 배포되어 사용되는 '리눅스(Linux)' 등이 대표적으로 이용되고 있다.The operating system of a mobile terminal having an ARM architecture is generally 'Symbian' developed by the British Symbian, 'Windows CE' developed by the US Microsoft, the Android (Android) or distributed for free. 'Linux' is used as a representative.

종래의 모바일 단말에서는 탑재된 운영체제(예컨대, Symbian, 안드로이드, Windows CE 또는 리눅스 등) 및 아키텍처(예컨대, ARM 등)의 종류 및 스펙(Spec)에 따른 실행 프로그램 파일이 탑재되어 있으며, 각각의 실행 프로그램 파일에 대한 어플리케이션(Application)은 모바일 단말에서 실행되는데 있어서 필요한 각종 데이터 등을 운영체제로부터 할당받은 메모리의 특정 영역에 읽고/쓰고/삭제하는 방식으로 이용되었다.In the conventional mobile terminal, executable program files according to the type and specification of the installed operating system (eg, Symbian, Android, Windows CE, or Linux) and architecture (eg, ARM) are mounted. An application for a file has been used in a manner of reading / writing / deleting various data necessary for running in a mobile terminal to a specific area of memory allocated from an operating system.

하지만, 종래의 모바일 단말에서 각각 운영체제 및 아키텍처의 종류 및 스펙에 따라 제작된 실행 프로그램 파일은 이기종 운영체제 및/또는 아키텍처에서는 공유되지 않는다는 단점이 있으며, 이기종 운영체제 및/또는 아키텍처에서 실행 프로그램 파일을 공유하기 위해서는 소스 레벨에서 재컴파일(Recompile)/커스터마이징(Customizing)을 수행해야 한다는 문제점이 있다.However, in the conventional mobile terminal, the executable program files produced according to the type and specification of the operating system and the architecture, respectively, are disadvantageous in that they are not shared in heterogeneous operating systems and / or architectures. In order to solve this problem, recompile / customizing must be performed at the source level.

또한, 아키텍처가 다르거나 운영체제가 다른 경우에는 바이너리 코드가 동작되지 않으며, 동작을 위해서는 소스 코드가 있는 경우는 사용자에 의해서 포팅 작업을 통해서 동작시킬 수 있으며, 혹은 동작시키고자 하는 호스트 디바이스에 맞는 아키텍처 코드로 변환된 바이너리를 동작시켜야 하는 문제점이 있다.
In addition, if the architecture is different or the operating system is different, the binary code does not work. For the operation, if the source code exists, the user can operate it through porting work or the architecture code suitable for the host device to operate. There is a problem that needs to run the binary converted to.

본 발명은 전술한 문제점을 해결하기 위하여 안출된 것으로서, 본 발명의 목적은 특정의 운영체제와 아키텍처를 갖는 사용자 단말에서 서로 다른 운영체제 및/또는 아키텍처를 갖는 외부 단말의 특정 프로그램을 실행시키기 위해 미리 구축된 가상의 운영체제를 이용하여 해당 프로그램의 바이너리 파일에 직접적인 변화를 가하지 않고 단지 바이너리 파일만을 복사하여 실시간으로 코드 변환함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행하기 위한 바이너리 호환 시스템 및 그 방법을 제공하는데 있다.
SUMMARY OF THE INVENTION The present invention has been made to solve the above-described problems, and an object of the present invention is to pre-construct a specific program of an external terminal having a different operating system and / or architecture in a user terminal having a specific operating system and architecture. Binary compatible system for effectively executing programs of external terminal having different system environment in user terminal by copying only binary file and converting in real time without directly changing binary file of corresponding program using virtual operating system, and To provide that method.

전술한 목적을 달성하기 위하여 본 발명의 제1 측면은, 운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 시스템으로서, 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 시스템 분석수단; 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제수단; 상기 시스템 분석수단으로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제수단의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 메모리 영역에 로딩하는 로더수단; 및 상기 가상의 운영체제수단으로부터 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 모바일 단말에 대응되는 실행 코드로 변환하는 변환수단을 포함하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템을 제공하는 것이다.In order to achieve the above object, a first aspect of the present invention provides a target of an external terminal configured with a target operating system and an architecture having a system environment different from at least one of the operating system and the architecture in a user terminal having a system environment configured with an operating system and an architecture. A binary compatible system for executing a program, comprising: system analyzing means for identifying a target operating system and architecture of an external terminal using header information of a binary file for executing a target program of an external terminal; Virtual operating system means for providing the performance library and system configuration information provided by the target operating system and architecture of the external terminal for each operating system and architecture, and overall management thereof; Preparing the operation of the virtual operating system means based on the target operating system and architecture identified from the system analysis means, and loading a binary file for executing the target program, libraries and registry information required for booting the target operating system to the memory area Loader means; And a converting means for receiving the execution library corresponding to the target operating system and the architecture from the virtual operating system means and converting the mechanical code in the binary file for executing the target program into execution code corresponding to the corresponding mobile terminal. To provide a binary compatible system for executing a program of an external terminal having a different system environment.

여기서, 상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식하고, 인식된 이벤트 요청을 상기 변환수단으로 전달하는 프로그램 관리수단을 더 포함하며, 상기 변환수단은 상기 가상의 운영체제수단으로부터 해당 이벤트 요청에 필요한 수행 라이브러리를 제공받아 상기 프로그램 관리수단으로부터 전달된 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환함이 바람직하다.The apparatus may further include program managing means for recognizing an event request generated by an operating system of the user terminal and transferring the recognized event request to the converting means, wherein the converting means performs the necessary event request from the virtual operating system means. In response to an event request received from the program manager, the library may be configured to convert the mechanical code in the binary file into executable code corresponding to the user terminal in real time.

바람직하게, 상기 프로그램 관리수단은 상기 변환수단으로부터 이벤트 요청에 따라 실시간 변환된 실행 코드를 제공받아 해당 사용자 단말의 화면에 디스플레이 해줄 수 있다.Preferably, the program management means may receive the execution code converted in real time according to the event request from the conversion means and display it on the screen of the corresponding user terminal.

바람직하게, 상기 프로그램 관리수단은 상기 변환수단을 통해 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장되도록 관리하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제수단보다 우선순위로 상기 변환수단에 제공되도록 관리할 수 있다.Preferably, the program managing means converts a previously used performance library or a frequently used performance library to be stored in a separate memory area through the conversion means, and stores the performance library stored in the separate memory area in the virtual memory. It may be managed to be provided to the conversion means in a priority over the operating system means of.

바람직하게, 상기 가상의 운영체제수단은 상기 사용자 단말 내의 프로세스 형태로 이루어지거나 상기 사용자 단말과 유/무선 통신망을 통해 연결되는 별도의 서버로 이루어지며, 상기 가상의 운영체제수단이 별도의 서버로 이루어질 경우, 상기 로더수단은 상기 별도의 서버와 연결하기 위한 통신 인터페이스를 구성하고, 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 별도의 서버로 가동 준비 요청메시지를 전달할 수 있다.Preferably, the virtual operating system means is made of a process form in the user terminal or a separate server connected to the user terminal through a wired / wireless communication network, when the virtual operating system means is made of a separate server, The loader means may configure a communication interface for connecting to the separate server, and transmit a start preparation request message to the separate server so that directories and files for the target operating system are initialized.

바람직하게, 상기 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어질 수 있다.Preferably, the performance library may include at least one of a registry management, a process management, a file management, a font data management, a screen management, or an event management library.

바람직하게, 상기 로더수단은 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 가상의 운영체제수단으로 가동 준비 요청메시지를 전달할 수 있다.Preferably, the loader means may transmit a start preparation request message to the virtual operating system means to initialize the directory and file for the target operating system.

바람직하게, 상기 변환수단은 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환될 수 있다.
Preferably, the converting means may be converted into executable code corresponding to the user terminal by separating an operation in a binary file and converting instructions individually after preparing an internal general purpose register.

본 발명의 제2 측면은, 운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 방법으로서, (a) 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제를 구축하는 단계; (b) 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 단계; (c) 상기 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일을 메모리 영역에 로딩함과 아울러 상기 가상의 운영체제로부터 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 제공받아 메모리 영역에 로딩하는 단계; 및 (d) 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 단계를 포함하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 제공하는 것이다.A second aspect of the present invention is binary compatibility for executing a target program of an external terminal having a target operating system and architecture having a system environment different from at least one of the operating system and architecture in a user terminal having a system environment composed of an operating system and an architecture. A method comprising: (a) constructing a virtual operating system including performance libraries and system configuration information provided by a target operating system and an architecture of an external terminal for each operating system and architecture, and managing the overall operating system; (b) identifying a target operating system and an architecture of the external terminal using header information of a binary file for executing the target program of the external terminal; (c) preparing to operate the virtual operating system based on the identified target operating system and architecture, loading a binary file for executing the target program into a memory area, and booting the target operating system from the virtual operating system; Receiving library and registry information and loading the same into a memory area; And (d) converting the mechanical code in the binary file for executing the target program into execution code corresponding to the corresponding user terminal using an execution library corresponding to the target operating system and architecture provided from the virtual operating system. It is to provide a binary compatibility method for executing a program of an external terminal having a different system environment in a user terminal.

여기서, 상기 단계(d) 이후에, 상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식한 후, 상기 가상의 운영체제로부터 제공된 해당 이벤트 요청에 필요한 수행 라이브러리를 이용하여 해당 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환하는 단계를 더 포함함이 바람직하다.Here, after the step (d), after recognizing the event request occurred in the operating system of the user terminal, by using the execution library required for the corresponding event request provided from the virtual operating system mechanical in the binary file according to the corresponding event request Preferably, the method further includes converting the code into executable code corresponding to the corresponding user terminal.

바람직하게, 인식된 이벤트 요청에 따라 실시간 변환된 실행 코드를 해당 모바일 단말의 화면에 디스플레이 해주는 단계를 더 포함할 수 있다.Preferably, the method may further include displaying the execution code converted in real time according to the recognized event request on the screen of the corresponding mobile terminal.

바람직하게, 상기 단계(d)에서 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제보다 우선순위로 이용할 수 있다.Preferably, the performance library already used in step (d) or the frequently used performance library are converted in advance and stored in a separate memory area, and the performance library stored in the separate memory area has priority over the virtual operating system. It is available.

바람직하게, 상기 단계(a)에서 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어질 수 있다.Preferably, the library performed in the step (a) may be made of at least one library among registry management, process management, file management, font data management, screen management, and event management library.

바람직하게, 상기 단계(c)에서, 상기 가상의 운영체제의 가동을 준비하는 과정은 상기 가상의 운영체제에서 타겟 운영체제를 위한 디렉토리와 파일을 초기화할 수 있다.Preferably, in the step (c), the process of preparing to operate the virtual operating system may initialize a directory and a file for a target operating system in the virtual operating system.

바람직하게, 상기 단계(d)는, 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환할 수 있다.
Preferably, the step (d) may be performed by preparing an internal general register using a performance library corresponding to a target operating system and an architecture provided from the virtual operating system, and then separating operations in a binary file and converting instructions individually. Can be converted into executable code corresponding to

본 발명의 제3 측면은 상기의 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것이다.
A third aspect of the present invention is to provide a computer-readable recording medium having recorded thereon a program capable of executing a binary compatible method for executing a program of an external terminal having a different system environment in the user terminal.

이상에서 설명한 바와 같은 본 발명의 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법에 따르면, 특정의 운영체제와 아키텍처를 갖는 사용자 단말에서 서로 다른 운영체제 및/또는 아키텍처를 갖는 외부 단말의 특정 프로그램을 실행시키기 위해 미리 구축된 가상의 운영체제를 이용하여 해당 프로그램의 바이너리 파일에 직접적인 변화를 가하지 않고 단지 바이너리 파일만을 복사하여 실시간으로 코드 변환함으로써, 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 효과적으로 실행할 수 있는 이점이 있다.According to a binary compatible system and method for executing a program of an external terminal having a different system environment in a user terminal of the present invention as described above, different operating systems and / or architectures in a user terminal having a specific operating system and architecture In order to execute a specific program of an external terminal having a pre-built virtual operating system, by copying only the binary file and converting in real time without directly changing the binary file of the corresponding program, a different system environment is used in the user terminal. There is an advantage that can effectively execute the program of the external terminal having.

본 발명에 의하면, 아키텍처와 운영체제에 상관없이 사용자가 원하는 장치에서 프로그램 바이너리 파일의 복사만으로 프로그램이 효과적으로 동작할 수 있으며, 아키텍쳐 호환성과 운영체제 호환성을 확보할 수 있는 이점이 있다.
According to the present invention, regardless of architecture and operating system, the program can be effectively operated by simply copying the program binary file on the device desired by the user, and there is an advantage of ensuring architecture compatibility and operating system compatibility.

도 1은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템을 나타낸 블록 구성도이다.
도 2는 일반적인 PE 파일 포맷의 전체 구조를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 적용된 로더모듈을 통해 타겟 프로그램의 바이너리 파일과 타켓 운영체제의 라이브러리가 메모리 영역에 로딩되는 모습을 개략적으로 나타낸 도면이다.
도 4는 도 3의 메모리 영역에 바이너리 파일이 로드된 구조를 구체적으로 나타낸 도면이다.
도 5는 도 3의 메모리 영역에 DLL이 로드된 상태를 테이블화하여 구체적으로 나타낸 도면이다.
도 6은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 설명하기 위한 전체적인 흐름도이다.
1 is a block diagram illustrating a binary compatible system for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention.
2 is a diagram showing the overall structure of a general PE file format.
FIG. 3 is a view schematically showing how a binary file of a target program and a library of a target operating system are loaded into a memory area through a loader module applied to an embodiment of the present invention.
4 is a diagram illustrating a structure in which a binary file is loaded in the memory area of FIG. 3.
FIG. 5 is a diagram illustrating a state in which a DLL is loaded in a memory area of FIG. 3 in a table.
6 is a flowchart illustrating a binary compatibility method for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention.

이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나, 다음에 예시하는 본 발명의 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것이다.
Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, embodiments of the present invention illustrated below may be modified in many different forms, and the scope of the present invention is not limited to the embodiments described below. The embodiments of the present invention are provided to more completely explain the present invention to those skilled in the art.

도 1은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템을 나타낸 블록 구성도이다.1 is a block diagram illustrating a binary compatible system for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템은, 크게 시스템 분석모듈(100), 가상의 운영체제모듈(200), 로더모듈(300) 및 변환모듈(400) 등을 포함하여 이루어진다.Referring to FIG. 1, a binary compatible system for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention is largely a system analysis module 100 and a virtual operating system module 200. , Loader module 300, and conversion module 400.

여기서, 시스템 분석모듈(100)은 사용자 단말(10)에 탑재되어 외부 단말(10)의 타겟(Target) 프로그램(11)을 실행하기 위한 바이너리 파일(Binary File)의 헤더(Header) 정보를 이용하여 외부 단말(10)의 타겟 운영체제(Operating System, OS) 및 아키텍처(Architecture)를 식별하는 기능을 수행한다.Here, the system analysis module 100 is mounted on the user terminal 10 and uses header information of a binary file for executing the target program 11 of the external terminal 10. It performs a function of identifying a target operating system (OS) and an architecture of the external terminal 10.

예를 들면, 사용자 단말(10)이 ARM 아키텍처와 안드로이드(Android)/심비안(Symbian) 운영체제(OS)를 사용하고, 외부 단말(20)이 X86 아키텍처와 윈도우즈(Windows) 운영체제를 사용할 경우, 사용자 단말(10)의 ARM 아키텍처는 외부 단말(20)의 X86 실행 바이너리 파일을 읽었을 때 전혀 알 수 없는 데이터가 된다.For example, when the user terminal 10 uses an ARM architecture and an Android / Symbian operating system (OS), and the external terminal 20 uses an X86 architecture and a Windows operating system, the user terminal The ARM architecture of (10) becomes unknown data when the X86 executable binary file of the external terminal 20 is read.

따라서, 시스템 분석모듈(100)에서는 먼저, 외부 단말(20)에서 X86 바이너리 코드로 되어 있는 실행하고자 하는 바이너리 파일 즉, 타켓 바이너리 파일이 사용자 단말(10)에서 실행 가능한 파일인지를 체크한다.Therefore, the system analysis module 100 first checks whether the binary file to be executed in the external terminal 20, that is, the target binary file in X86 binary code, is the executable file in the user terminal 10.

이 때, 도 2에 도시된 바와 같이, 통상의 PE 파일 포맷 구조는 근본적으로 윈도 운영체제(OS) 로더가 감춰진 실행 코드를 다루는 데 있어서 필수적인 정보를 은닉해 주는 자료 구조로서, 링크와 API 내보내기/가져오기 테이블, 리소스 관리 데이터, 스레드 로컬 장치 데이터들을 포함하는 동적 라이브러리를 포함한다.In this case, as shown in FIG. 2, the general PE file format structure is essentially a data structure that conceals information essential for handling the hidden executable code of the Windows operating system (OS) loader. Contains a dynamic library containing import tables, resource management data, and thread local device data.

즉, X86 바이너리는 x86 PE(Portable Executable) 파일로서 PE 파일 특성을 갖고 있으므로, 시스템 분석모듈(100)에서는 타겟 바이너리 파일의 헤더(Header)를 분석하고 사용하는 DLL(Dynamic Linking Library)을 조사함으로써, 외부 단말(10)에서 사용하는 타겟 운영체제(OS) 및 아키텍처를 용이하게 식별할 수 있다.That is, since the X86 binary has a PE file characteristic as an x86 PE (Portable Executable) file, the system analysis module 100 analyzes the header of the target binary file and examines the DLL (Dynamic Linking Library) used, A target operating system (OS) and an architecture used by the external terminal 10 can be easily identified.

한편, 사용자 단말(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 등)에 접속하기 위한 사용자 인터페이스를 갖는 모든 유무선 가전/통신 장치를 포괄적으로 의미할 수 있다.Meanwhile, the user terminal 10 may be a cellular phone, a PCS phone (PCS phone), a synchronous / asynchronous IMT-2000 (International Mobile Telecommunication-2000) that communicates through a wireless Internet or a portable Internet. Including a mobile communication terminal, and the like, in addition to, for example, Palm Personal Computer (PDA), Personal Digital Assistant (PDA), Smart Phone, Wireless Phone Protocol (WAP phone), Mobile Game Machine All wired and wireless appliances with a user interface for accessing wired / wireless communication networks (e.g., Internet, network, PSTN, PSDN, LAN, PAN, WAN, WPAN, CDMA, etc.) Can mean a generic communication device.

외부 단말(20)은 예컨대, 데스크탑 PC, 노트북 PC 등 컴퓨터인 것이 일반적이지만, 이에 한정되는 것은 아니며, 사용자 단말(10)의 운영체제 및 아키텍처 중 적어도 어느 하나가 서로 다른 운영체제 및/또는 아키텍처의 시스템 환경을 갖는 것이면 어느 것이든 적용 가능하다.For example, the external terminal 20 may be a computer such as a desktop PC or a notebook PC, but is not limited thereto. At least one of an operating system and an architecture of the user terminal 10 may have a different operating system and / or architecture. Any having may be applicable.

가상의 운영체제모듈(200)은 외부 단말(20)의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 데이터베이스(DB)화하여 구비하고 이를 전체적으로 관리하며, 로더모듈(300) 및/또는 변환모듈(400)로 필요한 수행 라이브러리 및 시스템 구성 정보들(예컨대, Ntdll 실행, Services 실행, Explore 실행 등)을 제공하는 기능을 수행한다.The virtual operating system module 200 is provided with a database (DB) for performance libraries and system configuration information provided by the target operating system and architecture of the external terminal 20 for each operating system and architecture, and overall management thereof, and the loader module 300 And / or perform the function of providing necessary performance libraries and system configuration information (eg, Ntdll execution, Services execution, Explore execution, etc.) to the conversion module 400.

즉, 가상의 운영체제모듈(200)은 외부 단말(20)의 타겟 운영체제에서 필요로 하는 다수의 라이브러리(Library)와 자원(Resource)을 디렉토리(Directory)와 파일(Files) 단위로 구성함이 바람직하다. 이 때, 상기 타겟 운영체제에 필요한 각각의 디렉토리와 파일을 하나의 이미지 파일로 기록하여 사용할 수도 있다.That is, the virtual operating system module 200 preferably configures a plurality of libraries and resources required by the target operating system of the external terminal 20 in units of directories and files. . In this case, each directory and file required for the target operating system may be recorded and used as one image file.

이러한 가상의 운영체제모듈(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 등), 또는 이벤트 관리 라이브러리(예컨대, 이벤트 후킹, 전달, 보류 등) 등으로 이루어질 수 있다.The virtual operating system module 200 supports a performance library required by the user terminal 10. At this time, the execution library may be a registry management library (eg, Create, open_key, get_key, set_key, get_value, set_value, find, etc.), process management library (eg, process, object handle management, thread creation, wait, execution, close, find, manage thread information (TLS), load into DLL memory, search APIs, manage data exchange between processes, manage context, etc., file management libraries (e.g., virtual directory management, Create, read, write, close, find, etc.), font data management library (e.g. applying basic fonts, internal file font search, multi-language support, etc.), screen management library (e.g., window screen property management, window tree composition management, object area, window area, etc.) Management, drawing screens, refreshing, specifying update regions, hiding regions, zorder management, foreground / background, etc., or event management libraries (e.g., Event hooking, forwarding, hold, etc.).

한편, 가상의 운영체제모듈(200)은 사용자 단말(10)에 탑재되어 서버 역할을 하는 프로세스(Process) 형태 즉, 바이너리에서 필요로 하는 API(Application Programming Interface)와 리소스(Resource)에 대한 대응을 하는 프로세스로서 구현됨이 바람직하지만, 이에 국한하지 않으며, 사용자 단말(10)과 유/무선 통신망을 통해 연결되는 별도의 네트워크 서버(Server)로 이루어질 수도 있다.On the other hand, the virtual operating system module 200 is mounted on the user terminal 10 is a process (Server) form that acts as a server, that is, to correspond to the API (Application Programming Interface) and resources required by the binary (Resource) Although preferably implemented as a process, the present invention is not limited thereto, and may be configured as a separate network server connected to the user terminal 10 through a wired / wireless communication network.

이 때, 가상의 운영체제모듈(200)이 별도의 서버로 이루어질 경우, 후술하는 로더모듈(300)은 상기 별도의 서버와 연결하기 위한 통신 인터페이스를 구성하고, 외부 단말(20)의 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 별도의 서버로 가동 준비 요청메시지를 전달할 수 있다.At this time, when the virtual operating system module 200 is made of a separate server, the loader module 300 to be described later forms a communication interface for connecting to the separate server, for the target operating system of the external terminal 20 A start preparation request message may be delivered to the separate server so that directories and files are initialized.

로더모듈(300)은 사용자 단말(10)에 탑재되어 시스템 분석모듈(100)로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 가상의 운영체제모듈(200)의 가동을 준비하고, 외부 단말(20)의 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅(booting)시 필요한 라이브러리(Library) 및 레지스트리(Registry) 정보 등을 특정의 메모리 영역에 로딩(Loading)하는 기능을 수행한다.The loader module 300 is mounted on the user terminal 10 to prepare for operation of the virtual operating system module 200 based on the target operating system and architecture identified from the system analysis module 100, and targets the external terminal 20. It loads a binary file for executing a program, a library and registry information necessary for booting a target operating system into a specific memory area.

한편, 모든 운영체제는 특정 디렉토리 구조를 가지고 있다. 예를 들면, 프로그램 파일(Program Files)에 프로그램이 설치되고, 윈도우즈(Windows) 폴더에 운영체제에서 필요로 하는 프로그램이 있으며, "Windows/System" 혹은 "System32"에 주요한 DLL(예컨대, System32 아래에 있는 "ntdll" 혹은 KERNEL32 등)을 가지고 있다.On the other hand, every operating system has a specific directory structure. For example, the program is installed in Program Files, the program is needed by the operating system in the Windows folder, and the major DLL in "Windows / System" or "System32" (eg under System32). "ntdll" or KERNEL32).

따라서, 로더모듈(300)은 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 가상의 운영체제모듈(200)로 가동 준비 요청메시지를 전달한 후, 가상의 운영체제모듈(200)로부터 타겟 운영체제(예컨대, 윈도우즈 운영체제)의 부팅 시에 중요 DLL을 먼저 로딩하고, 레지스트리 정보를 가상의 메모리 영역에 로딩한다. 그런 다음, 타겟 프로그램을 실행하기 위한 바이너리 파일을 예컨대, 가상의 메모리 영역에 로딩한다.Accordingly, the loader module 300 transmits a start preparation request message to the virtual operating system module 200 so that directories and files for the target operating system are initialized, and then the target operating system (eg, Windows operating system) from the virtual operating system module 200. At boot time, the critical DLL is loaded first, and the registry information is loaded into the virtual memory area. Then, a binary file for executing the target program is loaded into, for example, a virtual memory area.

한편, 윈도우즈에서 하나의 프로그램이 동작되기 위해서는 많은 컴포넌트(Component)가 필요하다. 이러한 컴포넌트들을 레지스트리에서 관리하고 있는데, 주요하고 자주 사용되는 것은 서비스(Service)로 운영체제 레벨에서 동작시키고, 예컨대, 파일 열기 시에 보여지는 화면, 공통의 다이얼로그들이 있다. 그리고, 프로그램 레벨에서 필요로 하는 컴포넌트들은 프로그램이 실행되면서 동작시킨다(예컨대, 이미지 코덱과 유사함).On the other hand, many components are required for one program to run on Windows. These components are managed in the registry, the main and frequently used service is a service operating at the operating system level, for example, the screen shown when opening a file, and common dialogs. The components required at the program level operate while the program is executed (for example, similar to the image codec).

도 3은 본 발명의 일 실시예에 적용된 로더모듈을 통해 타겟 프로그램의 바이너리 파일과 타켓 운영체제의 라이브러리가 메모리 영역에 로딩되는 모습을 개략적으로 나타낸 도면이며, 도 4는 도 3의 메모리 영역에 바이너리 파일이 로드된 구조를 구체적으로 나타낸 도면으로서, 예컨대, MS Windows 계열의 경우 프로세스 단위로 4GB 단위의 가상 주소 공간을 가지고 있으며, 바이너리 파일의 경우에는 RVA(Relative Virtual Address)에 의해서 해당 프로세스의 가상 메모리 상의 번지에 상대적인 번지 개념으로 메모리 상에 복사한다.3 is a view schematically showing a binary file of a target program and a library of a target operating system loaded in a memory area through a loader module applied to an embodiment of the present invention, and FIG. 4 is a binary file in the memory area of FIG. 3. Specifically, this loaded structure is shown. For example, MS Windows has a virtual address space of 4 GB in process units, and in the case of binary files, RVA (Relative Virtual Address) is used for the virtual memory of the process. Copies into memory with address concept relative to address.

또한, DOS 헤더(Header), PE 헤더(Header), 섹션 테이블(Section Table), TEXT 섹션(Section), DATA 섹션(Section), RSRC 섹션(Section) 등 기타 섹션(Section)들을 로드한다. 또한, 필요로 하는 라이브러리, DLL 등과 같은 모듈도 가상 메모리에 복사한다.It also loads DOS headers, PE headers, section tables, TEXT sections, DATA sections, RSRC sections, and other sections. In addition, modules such as libraries, DLLs, etc. required are also copied to virtual memory.

도 5는 도 3의 메모리 영역에 DLL이 로드된 상태를 테이블화하여 구체적으로 나타낸 도면으로서, 도 5의 (a)는 가상 운영체제 서버 프로세스의 메모리 구조를 나타낸 것이며, 도 5의 (b)는 실행 바이너리 프로세스의 메모리 구조를 나타낸 도면이다.FIG. 5 is a diagram illustrating a state in which a DLL is loaded in the memory area of FIG. 3 in detail. FIG. 5A illustrates a memory structure of a virtual operating system server process, and FIG. 5B illustrates execution. A diagram showing the memory structure of a binary process.

도 5의 (a)를 참조하면, 타겟 프로그램의 실행 파일을 실행시키기 위해서는 가상의 운영체제모듈(200)의 역할을 수행하는 가상 운영체제 서버 프로세스가 동작하여야 한다. 동작한 메모리 모습을 보면, 상기 가상 운영체제 서버 프로세스의 메모리 구조를 가지고 있으며, "Wineboot"는 현재 동작시키고자 하는 프로그램의 바이너리에서 필요로 하는 서버를 동작시키기 위한 프로세스이다.Referring to FIG. 5A, in order to execute an executable file of a target program, a virtual operating system server process serving as a virtual operating system module 200 should operate. In operation, the memory has a memory structure of the virtual operating system server process, and "Wineboot" is a process for operating a server required by a binary of a program to be operated at present.

도 5의 (b)를 참조하면, 실행 바이너리 프로세스는 내가 실행시키고자 하는 프로그램을 동작시키는 프로세스이며, 동작을 위해서 프로세스가 최소 2개이며, 현재는 3개의 프로세스가 동작된 것을 나타낸다.Referring to FIG. 5B, the execution binary process is a process for operating a program that I want to run, and at least two processes are present for operation, and three processes are currently operated.

각각의 프로세스별로 상당히 많은 dll, 라이브러리, 컴포넌트라고 할 수 있는 것을 포함하고 있으며, 그 조합은 어떤 것을 동작시키고자 하는지에 따라서 다르게 메모리 맵을 갖게 된다.Each process contains quite a few dlls, libraries, and components, and the combination will have a different memory map depending on what you want to run.

그리고, 변환모듈(400)은 가상의 운영체제모듈(200)로부터 외부 단말(20)의 타겟 운영체제(OS)와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드로 변환하는 기능을 수행한다.In addition, the conversion module 400 receives a performance library corresponding to the target operating system (OS) and the architecture of the external terminal 20 from the virtual operating system module 200 and executes the mechanical code in the binary file for executing the target program. Performs a function of converting into executable code corresponding to the user terminal 10.

즉, 변환모듈(400)은 내부 범용 레지스터(예컨대, T0, T1, T2 등)를 미리 준비한 후, 로더모듈(300)로부터 로딩된 바이너리 파일 내의 연산을 분리하고, 명령어를 개별적으로 변환함으로서 해당 사용자 단말(10)에 대응되는 실행 코드로 변환될 수 있다. 이 때, 해당 사용자 단말(10)에 대응되는 실행 코드로 변환하는데 필요한 라이브러리에 대해서는 가상의 운영체제모듈(200)과 통신하여 지원 받는다.That is, the conversion module 400 prepares internal general registers (for example, T0, T1, T2, etc.) in advance, then separates operations in the binary file loaded from the loader module 300, and converts the instructions individually to the corresponding user. It may be converted into executable code corresponding to the terminal 10. At this time, the library required to convert the executable code corresponding to the user terminal 10 is supported by communicating with the virtual operating system module 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"). 이러한 단계를 거쳐서 변환된다.For example, if the X86 sequence of operations "# r1 = r1-16" is expressed in assembly language such as "addi r1, r1, -16", the first operation is separated to convert to ARM architecture code ("T0 = r1 "," T1 = T0-16 "," r1 = T0 "), and second, convert to process instructions (" mov T0, r1 "," sub T1, T0, -16 "," mov r1, T0 "). This step takes place.

추가적으로, 사용자 단말(10)의 운영체제(OS)에서 발생한 이벤트 요청을 인식하고, 인식된 이벤트 요청을 변환모듈(400)로 전달하는 프로그램 관리모듈(500)이 더 포함될 수 있다.In addition, the program management module 500 for recognizing an event request generated in the operating system (OS) of the user terminal 10 and transferring the recognized event request to the conversion module 400 may be further included.

이 때, 변환모듈(400)은 가상의 운영체제모듈(200)로부터 해당 이벤트 요청에 필요한 수행 라이브러리를 제공받아 프로그램 관리모듈(500)로부터 전달된 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드(또는 기계 코드)로 실시간 변환한다.At this time, the conversion module 400 receives the execution library required for the corresponding event request from the virtual operating system module 200 and receives the mechanical code in the binary file in response to the event request transmitted from the program management module 500. The execution code (or machine code) corresponding to (10) is converted in real time.

또한, 프로그램 관리모듈(500)은 변환모듈(400)로부터 이벤트 요청에 따라 실시간 변환된 실행 코드를 제공받아 해당 사용자 단말(10)의 화면에 디스플레이(Display) 해줄 수 있다.In addition, the program management module 500 may receive the execution code converted in real time according to an event request from the conversion module 400 and display the screen on the screen of the corresponding user terminal 10.

또한, 프로그램 관리모듈(500)은 변환모듈(400)을 통해 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장되도록 관리함이 바람직하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 가상의 운영체제모듈(200)보다 우선순위로 변환모듈(400)에 제공되도록 관리함이 바람직하다.In addition, the program management module 500 preferably converts a previously used execution library or a frequently used execution library through the conversion module 400 so that the program management module 500 is stored in a separate memory area, and stored in the separate memory area. It is preferable to manage the execution library to be provided to the conversion module 400 at a higher priority than the virtual OS module 200.

즉, 프로그램 관리모듈(500)은 사용자에게 그래픽 기반의 화면을 제공하고, 사용자로 하여금 혹은 다른 이벤트에 대해서 가상의 운영체제에 요청을 하고, 그에 따른 응답을 다시 사용자에게 제공하는 역할을 수행한다. 이 때, 프로그램 관리모듈(500)이 요청하는 내용이 선변환이 이루어져 있으면, 변환모듈(400)을 거치지 않지만, 변환이 아직 안되어 있으면 변환모듈(400)을 거처서 요청, 응답을 받아야 한다.That is, the program management module 500 provides a graphic screen to the user, makes a request to the virtual operating system for the user or another event, and provides a response back to the user. At this time, if the content requested by the program management module 500 is pre-conversion, it does not go through the conversion module 400, but if the conversion is not yet through the conversion module 400 to receive the request, response.

예를 들어, 사용자 단말(10)의 화면에 디스플레이 된 타겟 프로그램(예컨대, 그림판 프로그램)의 초기 메인 화면에서 "파일 열기"를 클릭하면, 프로그램 관리모듈(500)에 클릭 이벤트가 전달되고, 이벤트의 위치에 상하는 메뉴의 파일 열기 메뉴가 선택되어 "FILE_OPEN"과 같은 이벤트가 변환모듈(400)로 전달된다. 그러면, 변환모듈(400)에서는 가상의 운영체제모듈(200)에 "FILE_OPEN"에 상응하는 컴포넌트를 호출하고, 지정되어 있는 디렉토리 위치의 파일 열기 창이 보인다. 파일 열기 창에는 "COMCTL.DLL"(공통적으로 사용되는 컨트롤 묶음)과 "COMDLG.DLL"(공통적으로 사용되는 다이얼로그 묶음)와 같은 컴포넌트들이 상용되며 이 또한 변환모듈(400)과 프로그램 관리모듈(500)간에 이벤트 전달에 의해서 우리에게 익숙한 파일 열기 창이 사용자 단말(10)의 화면에 디스플레이 된다.For example, when "Open File" is clicked on an initial main screen of a target program (eg, a paint program) displayed on the screen of the user terminal 10, a click event is transmitted to the program management module 500, and the event The open file menu of the upper and lower menu is selected, and an event such as "FILE_OPEN" is transmitted to the conversion module 400. Then, the conversion module 400 calls the component corresponding to "FILE_OPEN" to the virtual operating system module 200, the file open window of the specified directory location is shown. In the file open window, components such as "COMCTL.DLL" (commonly used control bundle) and "COMDLG.DLL" (commonly used dialog bundle) are commonly used. Also, the conversion module 400 and the program management module 500 The open file window familiar to us by the event delivery is displayed on the screen of the user terminal 10.

본 발명의 바이너리 호환 시스템에 의해서 실시간 변환된 코드에 의해서 현재 디바이스 즉, 사용자 단말(10)의 디바이스 드라이버를 모두 사용할 수 있으며, 프로그램 관리모듈(500)에 의해서 각각의 실행 코드와 디바이스 드라이버 모듈이 연결되며, 그에 따라서 현재 디바이스 즉, 사용자 단말(10)의 화면에 그래픽 디바이스(GUI)를 사용한 다양한 그래픽 화면을 제공할 수 있다.By the code converted in real time by the binary compatible system of the present invention, all the device drivers of the current device, that is, the user terminal 10 can be used, and each execution code and the device driver module are connected by the program management module 500. Accordingly, various graphic screens using a graphic device (GUI) may be provided on the screen of the current device, that is, the user terminal 10.

상기와 같이 구성된 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템은 사용자 단말(10)에 소프트웨어(Software) 및/또는 하드웨어(Hardware) 형태로 탑재되어 구현됨이 바람직하지만, 이에 국한하지 않으며, 사용자 단말(10)에 유/무선으로 연결된 외부의 장치 또는 서버 형태 등으로 구현될 수도 있다.
A binary compatible system for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention configured as described above is in the form of software and / or hardware in the user terminal 10. Although it is preferable to be mounted and implemented, the present invention is not limited thereto and may be implemented in the form of an external device or a server connected to the user terminal 10 by wire / wireless.

이하에는 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법에 대하여 상세하게 설명하기로 한다.Hereinafter, a binary compatibility method for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention will be described in detail.

도 6은 본 발명의 일 실시예에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법을 설명하기 위한 전체적인 흐름도이다.6 is a flowchart illustrating a binary compatibility method for executing a program of an external terminal having a different system environment in a user terminal according to an embodiment of the present invention.

도 1 및 도 6을 참조하면, 먼저, 외부 단말(20)의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제모듈(200)을 미리 구축한다(S100).1 and 6, first, a virtual operating system module 200 having performance libraries and system configuration information provided by a target OS and an architecture of an external terminal 20 for each OS and architecture, and managing them as a whole Build in advance (S100).

이후에, 시스템 분석모듈(100)을 통해 외부 단말(20)의 실행하고자 하는 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더(Header) 정보를 이용하여 외부 단말(20)의 타겟 운영체제(OS) 및 아키텍처(Architecture)를 식별한다(S200).Subsequently, the target operating system (OS) and architecture of the external terminal 20 using the header information of the binary file for executing the target program to be executed by the external terminal 20 through the system analysis module 100. (Architecture) is identified (S200).

그런 다음, 로더모듈(300)을 통해 상기 단계S200에서 식별된 타겟 운영체제와 아키텍처를 기반으로 가상의 운영체제모듈(200)의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일을 특정의 메모리 영역에 로딩(Loading)함과 아울러 가상의 운영체제모듈(200)로부터 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 제공받아 메모리 영역에 로딩한다(S300).Then, based on the target operating system and architecture identified in step S200 through the loader module 300 to prepare the operation of the virtual operating system module 200, a binary file for executing the target program to a specific memory area In addition to loading (Loading) and receives the library and registry information required for booting the target operating system from the virtual operating system module 200 (S300).

마지막으로, 변환모듈(400)을 통해 가상의 운영체제모듈(200)로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드로 변환한다(S400).Finally, the user terminal 10 receives the mechanical code in the binary file for executing the target program using the execution library corresponding to the target operating system and architecture provided from the virtual operating system module 200 through the conversion module 400. Convert to the executable code corresponding to (S400).

추가적으로, 상기 단계S400 이후에, 프로그램 관리모듈(500)을 통해 사용자 단말(10)의 운영체제에서 발생한 이벤트 요청을 인식한 후, 가상의 운영체제모듈(200)로부터 제공된 해당 이벤트 요청에 필요한 수행 라이브러리를 이용하여 해당 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말(10)에 대응되는 실행 코드로 실시간 변환하는 단계를 더 포함할 수 있다.In addition, after step S400, after recognizing an event request generated in the operating system of the user terminal 10 through the program management module 500, the execution library required for the corresponding event request provided from the virtual operating system module 200 is used. The method may further include converting, in real time, the mechanical code in the binary file into execution code corresponding to the corresponding user terminal 10 according to the corresponding event request.

더욱이, 상기 인식된 이벤트 요청에 따라 실시간 변환된 실행 코드를 해당 사용자 단말(10)의 화면에 디스플레이 해주는 단계를 더 포함할 수도 있다.Furthermore, the method may further include displaying the execution code converted in real time according to the recognized event request on the screen of the corresponding user terminal 10.

한편, 프로그램 관리모듈(500)을 통해 상기 단계S400에서 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 가상의 운영체제모듈(200)보다 우선순위로 이용함이 바람직하다.Meanwhile, the program management module 500 converts the execution library already used in the step S400 or the frequently used execution library in advance into a separate memory area, and stores the execution library stored in the separate memory area as a virtual operating system. It is preferable to use the module 200 as priority.

또한, 상기 단계S300에서, 가상의 운영체제모듈(200)의 가동을 준비하는 과정은 가상의 운영체제모듈(200)에서 타겟 운영체제를 위한 디렉토리와 파일을 초기화할 수 있다.In operation S300, the process of preparing to operate the virtual operating system module 200 may initialize a directory and a file for the target operating system in the virtual operating system module 200.

또한, 상기 단계S400은, 가상의 운영체제모듈(200)로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말(10)에 대응되는 실행 코드로 변환할 수 있다.
In addition, the step S400, by preparing an internal general purpose register using the performance library corresponding to the target operating system and architecture provided from the virtual operating system module 200, after separating the operations in the binary file and convert the instructions individually, the corresponding user terminal Can be converted into executable code corresponding to (10).

한편, 본 발명에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법은 컴퓨터로 판독할 수 있는 기록매체에 컴퓨터로 판독할 수 있는 코드로 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체에는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.On the other hand, the binary compatible method for executing a program of an external terminal having a different system environment in the user terminal according to the present invention can be implemented in a computer-readable code on a computer-readable recording medium. Computer-readable recording media include all types of recording devices that store data that can be read by a computer system.

예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피 디스크, 이동식 저장장치, 비휘발성 메모리(Flash Memory), 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다.
For example, a computer-readable recording medium may be a ROM, a RAM, a CD-ROM, a magnetic tape, a hard disk, a floppy disk, a removable storage device, a nonvolatile memory (Flash memory). Optical data storage, and the like, and also implemented in the form of a carrier wave (eg, transmission over the Internet).

전술한 본 발명에 따른 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템 및 그 방법에 대한 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명에 속한다.
Although the above-described exemplary embodiments of a binary compatible system and method for executing a program of an external terminal having a different system environment in a user terminal according to the present invention have been described, the present invention is not limited thereto, and the claims and It is possible to carry out various modifications within the scope of the invention and the accompanying drawings, which also belong to the invention.

10 : 사용자 단말,
20 : 외부 단말,
100 : 시스템 식별모듈,
200 : 가상의 운영체제모듈,
300 : 로더모듈,
400 : 변환모듈,
500 : 프로그램 관리모듈
10: user terminal,
20: external terminal,
100: system identification module,
200: virtual operating system module,
300: loader module,
400: conversion module,
500: program management module

Claims (12)

운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 시스템으로서,
외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 시스템 분석수단;
외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제수단;
상기 시스템 분석수단으로부터 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제수단의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일, 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 메모리 영역에 로딩하는 로더수단; 및
상기 가상의 운영체제수단으로부터 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 제공받아 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 변환수단을 포함하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
A binary compatible system for executing a target program of an external terminal having a target operating system and architecture having a system environment different from at least one of the operating system and architecture, in a user terminal having a system environment composed of an operating system and an architecture,
System analysis means for identifying a target operating system and architecture of the external terminal by using header information of a binary file for executing a target program of the external terminal;
Virtual operating system means for providing the performance library and system configuration information provided by the target operating system and architecture of the external terminal for each operating system and architecture, and overall management thereof;
Preparing the operation of the virtual operating system means based on the target operating system and architecture identified from the system analysis means, and loading a binary file for executing the target program, libraries and registry information required for booting the target operating system to the memory area Loader means; And
In the user terminal comprising a conversion means for receiving the execution library corresponding to the target operating system and architecture from the virtual operating system means for converting the mechanical code in the binary file for executing the target program into executable code corresponding to the corresponding user terminal Binary compatible system for executing a program of an external terminal having a different system environment.
제1 항에 있어서,
상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식하고, 인식된 이벤트 요청을 상기 변환수단으로 전달하는 프로그램 관리수단을 더 포함하며,
상기 변환수단은 상기 가상의 운영체제수단으로부터 해당 이벤트 요청에 필요한 수행 라이브러리를 제공받아 상기 프로그램 관리수단으로부터 전달된 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
The method according to claim 1,
Program management means for recognizing an event request generated by an operating system of the user terminal and transferring the recognized event request to the conversion means,
The converting means receives the execution library required for the corresponding event request from the virtual operating system means and converts the mechanical code in the binary file into execution code corresponding to the user terminal in real time according to the event request transmitted from the program management means. Binary compatible system for executing a program of an external terminal having a different system environment in the user terminal.
제2 항에 있어서,
상기 프로그램 관리수단은 상기 변환수단으로부터 이벤트 요청에 따라 실시간 변환된 실행 코드를 제공받아 해당 사용자 단말의 화면에 디스플레이 해주며,
상기 변환수단을 통해 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장되도록 관리하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제수단보다 우선순위로 상기 변환수단에 제공되도록 관리하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
The method of claim 2,
The program management means receives the execution code converted in real time according to the event request from the conversion means and displays on the screen of the user terminal,
Through the converting means, a previously used performance library or frequently used performance library is converted in advance and managed to be stored in a separate memory area, and the performance library stored in the separate memory area is prioritized over the virtual operating system means. Binary compatible system for executing a program of the external terminal having a different system environment in the user terminal characterized in that the management provided to the conversion means.
제1 항에 있어서,
상기 가상의 운영체제수단은 상기 사용자 단말 내의 프로세스 형태로 이루어지거나 상기 사용자 단말과 유/무선 통신망을 통해 연결되는 별도의 서버로 이루어지고, 상기 가상의 운영체제수단이 별도의 서버로 이루어질 경우, 상기 로더수단은 상기 별도의 서버와 연결하기 위한 통신 인터페이스를 구성하고, 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 별도의 서버로 가동 준비 요청메시지를 전달하며,
상기 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어지며,
상기 로더수단은 타겟 운영체제를 위한 디렉토리와 파일이 초기화되도록 상기 가상의 운영체제수단으로 가동 준비 요청메시지를 전달하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
The method according to claim 1,
The virtual operating system means is made of a process form in the user terminal or made of a separate server connected to the user terminal through a wired / wireless communication network, when the virtual operating system means is made of a separate server, the loader means Configures a communication interface for connecting to the separate server, delivers a start preparation request message to the separate server so that directories and files for a target operating system are initialized,
The execution library is composed of at least one library among registry management, process management, file management, font data management, screen management, and event management library.
The loader means is a binary compatible system for executing a program of an external terminal having a different system environment in the user terminal, characterized in that for transmitting the operation preparation request message to the virtual operating system means to initialize the directory and file for the target operating system .
제1 항에 있어서,
상기 변환수단은 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환되는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 시스템.
The method according to claim 1,
The converting means prepares an internal general purpose register and then separates the operations in the binary file and converts the instructions individually to be converted into executable code corresponding to the corresponding user terminal. Binary compatible system for running.
운영체제와 아키텍처로 구성된 시스템 환경을 갖는 사용자 단말에서 상기 운영체제와 아키텍처 중 적어도 하나와 다른 시스템 환경을 갖는 타겟 운영체제와 아키텍처로 구성된 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 호환 방법으로서,
(a) 외부 단말의 타겟 운영체제와 아키텍처에서 제공하는 수행 라이브러리 및 시스템 구성 정보들을 운영체제별 및 아키텍처별로 구비하고 이를 전체적으로 관리하는 가상의 운영체제를 구축하는 단계;
(b) 외부 단말의 타겟 프로그램을 실행하기 위한 바이너리 파일의 헤더 정보를 이용하여 외부 단말의 타겟 운영체제 및 아키텍처를 식별하는 단계;
(c) 상기 식별된 타겟 운영체제와 아키텍처를 기반으로 상기 가상의 운영체제의 가동을 준비하고, 타겟 프로그램을 실행하기 위한 바이너리 파일을 메모리 영역에 로딩함과 아울러 상기 가상의 운영체제로부터 타겟 운영체제의 부팅시 필요한 라이브러리 및 레지스트리 정보를 제공받아 메모리 영역에 로딩하는 단계; 및
(d) 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 타겟 프로그램을 실행하기 위한 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 변환하는 단계를 포함하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
A binary compatibility method for executing a target program of an external terminal having a target operating system and architecture having a system environment different from at least one of the operating system and architecture, in a user terminal having a system environment composed of an operating system and an architecture,
(a) constructing a virtual operating system including performance libraries and system configuration information provided by a target operating system and an architecture of an external terminal for each operating system and architecture, and managing them as a whole;
(b) identifying a target operating system and an architecture of the external terminal using header information of a binary file for executing the target program of the external terminal;
(c) preparing to operate the virtual operating system based on the identified target operating system and architecture, loading a binary file for executing the target program into a memory area, and booting the target operating system from the virtual operating system; Receiving library and registry information and loading the same into a memory area; And
(d) a user comprising converting mechanical code in a binary file for executing a target program into execution code corresponding to a corresponding user terminal by using an execution library corresponding to a target operating system and an architecture provided from the virtual operating system Binary compatibility method for executing a program of an external terminal having a different system environment in the terminal.
제6 항에 있어서,
상기 단계(d) 이후에,
상기 사용자 단말의 운영체제에서 발생한 이벤트 요청을 인식한 후, 상기 가상의 운영체제로부터 제공된 해당 이벤트 요청에 필요한 수행 라이브러리를 이용하여 해당 이벤트 요청에 따라 바이너리 파일 내의 기계적인 코드를 해당 사용자 단말에 대응되는 실행 코드로 실시간 변환하는 단계; 및
인식된 이벤트 요청에 따라 실시간 변환된 실행 코드를 해당 사용자 단말의 화면에 디스플레이 해주는 단계를 더 포함하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
The method of claim 6,
After step (d),
After recognizing the event request generated by the operating system of the user terminal, using the execution library required for the event request provided from the virtual operating system to execute the mechanical code in the binary file corresponding to the corresponding event request corresponding to the user terminal Real-time conversion to; And
Binary compatibility method for executing a program of an external terminal having a different system environment in the user terminal, characterized in that it further comprises the step of displaying the execution code converted in real time according to the recognized event request on the screen of the user terminal.
제6 항에 있어서,
상기 단계(d)에서 이미 사용된 수행 라이브러리나 자주 사용되는 수행 라이브러리를 미리 변환하여 별도의 메모리 영역에 저장하며, 상기 별도의 메모리 영역에 저장된 수행 라이브러리를 상기 가상의 운영체제보다 우선순위로 이용하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
The method of claim 6,
In the step (d), the previously used performance library or frequently used performance library is converted in advance and stored in a separate memory area, and the performance library stored in the separate memory area is used as a priority over the virtual operating system. Binary compatibility method for executing a program of an external terminal having a different system environment in the user terminal.
제6 항에 있어서,
상기 단계(a)에서 수행 라이브러리는 레지스트리 관리, 프로세스 관리, 파일 관리, 폰트 데이터 관리, 화면 관리 또는 이벤트 관리 라이브러리 중 적어도 어느 하나의 라이브러리로 이루어진 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
The method of claim 6,
The external library having a different system environment in the user terminal, characterized in that the library performed in the step (a) comprises at least one library among registry management, process management, file management, font data management, screen management, or event management library. Binary compatibility for running your own programs.
제6 항에 있어서,
상기 단계(c)에서, 상기 가상의 운영체제의 가동을 준비하는 과정은 상기 가상의 운영체제에서 타겟 운영체제를 위한 디렉토리와 파일을 초기화하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
The method of claim 6,
In the step (c), the process of preparing to operate the virtual operating system initializes a directory and a file for a target operating system in the virtual operating system. Binary compatibility method to run.
제6 항에 있어서,
상기 단계(d)는, 상기 가상의 운영체제로부터 제공된 타겟 운영체제와 아키텍처에 해당하는 수행 라이브러리를 이용하여 내부 범용 레지스터를 준비한 후 바이너리 파일 내의 연산을 분리하고 명령어를 개별적으로 변환함으로서 해당 사용자 단말에 대응되는 실행 코드로 변환하는 것을 특징으로 하는 사용자 단말에서 다른 시스템 환경을 갖는 외부 단말의 프로그램을 실행하기 위한 바이너리 호환 방법.
The method of claim 6,
The step (d) corresponds to a corresponding user terminal by preparing an internal general register using a performance library corresponding to a target operating system and an architecture provided from the virtual operating system, separating operations in a binary file, and converting instructions individually. Binary compatibility method for executing a program of an external terminal having a different system environment in the user terminal, characterized in that the conversion to executable code.
제6 항 내지 제11 항 중 어느 한 항의 방법을 컴퓨터로 실행시킬 수 있는 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.A computer-readable recording medium having recorded thereon a program capable of executing the method of any one of claims 6 to 11.
KR1020100125152A 2010-12-08 2010-12-08 Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof KR101211673B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100125152A KR101211673B1 (en) 2010-12-08 2010-12-08 Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100125152A KR101211673B1 (en) 2010-12-08 2010-12-08 Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof

Publications (2)

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

Family

ID=46684257

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100125152A KR101211673B1 (en) 2010-12-08 2010-12-08 Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof

Country Status (1)

Country Link
KR (1) KR101211673B1 (en)

Cited By (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

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100634023B1 (en) 2005-04-27 2006-10-17 에스케이 텔레콤주식회사 Method and system for applying embeded application program in smart phone
KR100860920B1 (en) 2007-05-14 2008-09-29 주식회사 현대오토넷 Formation method of download software data including product identification code, and a software download system for downloading the download software data selectively according to the product identification code

Cited By (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

Also Published As

Publication number Publication date
KR101211673B1 (en) 2012-12-12

Similar Documents

Publication Publication Date Title
US11868785B2 (en) Application program page processing method and device
CN108170503B (en) Method, terminal and storage medium for cross-system android application running
EP2235629B1 (en) Methods and systems for provisioning a virtual disk to diskless virtual and physical machines
US10019298B2 (en) Middleware interface and middleware interface generator
US10067777B2 (en) Supporting multiple operating system environments in computing device without contents conversion
US11010355B2 (en) Layer-based file access method and apparatus of virtualization instance
US8589918B1 (en) Multi-platform compatible portable virtual machine player
US7730492B1 (en) Method and system for running multiple virtual machines in a single process
US20140297999A1 (en) Computer system and method for controlling acpi information
CN104603750A (en) Layout and execution of software applications using BPRAM
KR20130098775A (en) Client terminal and method for supporting multiple operating system
US9256447B2 (en) Integrated application launching in heterogeneous cloud computing environment
US10908948B2 (en) Multiple application instances in operating systems that utilize a single process for application execution
CN104583948A (en) Layout and execution of operating systems using BPRAM
US11138028B1 (en) Hot growing a cloud hosted block device
CN114691300A (en) Hot migration method of virtual machine instance
US20140351833A1 (en) Multi-computing environment operating on a single native operating system
US11182347B2 (en) File sharing among virtual containers with fast recovery and self-consistency
WO2019139740A1 (en) Extensible input stack for processing input device data
Ming Analysis and a case study of transparent computing implementation with UEFI
US9804872B1 (en) Method for emulation of a virtual OS bookmark on a host desktop
KR101211673B1 (en) Binary compatibility system for executing program of external terminal with different system environment in user terminal and method thereof
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
US20190213015A1 (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