KR20110089942A - 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법 - Google Patents

포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법 Download PDF

Info

Publication number
KR20110089942A
KR20110089942A KR1020100009459A KR20100009459A KR20110089942A KR 20110089942 A KR20110089942 A KR 20110089942A KR 1020100009459 A KR1020100009459 A KR 1020100009459A KR 20100009459 A KR20100009459 A KR 20100009459A KR 20110089942 A KR20110089942 A KR 20110089942A
Authority
KR
South Korea
Prior art keywords
portable medium
virtualized
resource
software
virtual
Prior art date
Application number
KR1020100009459A
Other languages
English (en)
Other versions
KR101103795B1 (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 KR1020100009459A priority Critical patent/KR101103795B1/ko
Publication of KR20110089942A publication Critical patent/KR20110089942A/ko
Application granted granted Critical
Publication of KR101103795B1 publication Critical patent/KR101103795B1/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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

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

Abstract

포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법이 개시된다. 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은, 소프트웨어 가상화 시스템이 소정의 애플리케이션으로부터 실행 요청을 수신하는 단계, 수신된 상기 실행 요청이 가상화된 자원에 대한 요청인지를 판단하는 단계, 및 판단결과 상기 실행 요청이 가상화된 자원에 대한 요청인 경우 상기 소프트웨어 가상화 시스템은 상기 실행 요청에 응답하여 호스트에 연결된 포터블 매체에 설치되어 있는 가상화 자원을 리턴하고, 판단결과 상기 실행 요청이 가상화된 자원에 대한 요청이 아닌 경우 호스트에 존재하는 로컬 자원을 리턴할 수 있다.

Description

포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법{Method for providing software virtualization system using portable medium}
본 발명은 포터블(portable) 매체를 이용한 소프트웨어 가상화 시스템 제공방법에 관한 것으로, 보다 상세하게는 포터블 매체에 소프트웨어를 가상화하여 설치하고, 가상화된 소프트웨어를 호스트의 특성 및 환경에 무관하게 용이하게 실행하여 사용하면서도 호스트 시스템의 환경과 가상화 환경이 통합되어 제공될 수 있는 방법에 관한 것이다.
컴퓨팅 기술의 발달과 함께 컴퓨팅 리소스의 추상화를 통해 실제환경과 독립적인 가상의 컴퓨팅 환경을 제공하기 위한 가상화(virtualization) 기술들이 소개되고 있다.
가상화는 크게 하드웨어 가상화와 소프트웨어 가상화로 구분되고, 소프트웨어 가상화는 다시 커널 레벨 가상화와 유저 레벨 가상화로 구분될 수 있다.
유저 레벨 가상화 중 소프트웨어 가상화는 소프트웨어가 실행되는 환경 및/또는 리소스를 가상화하여 호스트 시스템의 환경과 무관하게 상기 소프트웨어가 실행이 되고, 실행결과가 호스트 시스템에 영향을 미치지 않도록 할 수 있어 최근에 각광받고 있는 기술이다.
종래의 소프트웨어 가상화 기술들로는 소프트웨어 설치 전 후의 호스트 시스템의 사용환경을 이미지로 스캔하여 가상 환경을 생성하는 방법 또는 네이티브 API 호출을 처리하기 위한 라이브러리들을 가상 환경상에 같이 패키징하는 방법들이 존재하였다.
하지만, 이러한 종래의 방법들은 이미지 스캔 또는 API 별 라이브러리의 패키징에 많은 시간과 자원이 소모된다.
또한, 생성된 가상 환경과 호스트 시스템의 로컬 환경은 논리적으로 분리될 뿐만 아니라, 사용 측면에서도 완전히 분리되었다. 즉, 소프트웨어 가상화가 이루어지고 나면, 사용자에게는 가상화된 환경과 로컬 환경이 완전히 분리되어 제공되고, 사용자는 어느 하나의 환경을 의식적으로 선택하여 실행하게 된다.
하지만, 가상환경과 로컬환경이 논리적/물리적으로 분리된다고 하더라도 유저에게 반드시 이를 인식시킬 필요는 없다. 유저는 자신이 원하는 소프트웨어를 선택하여 사용만 하면 되지, 자신이 사용하는 소프트웨어가 가상화된 소프트웨어인지로컬 환경에 존재하는 소프트웨어인지 구분할 필요가 없는 것이 효과적일 수 있다.
따라서, 본 발명이 이루고자 하는 기술적인 과제는 이미지 스캔 또는 라이브러리 패키징 등과 같은 시간과 자원의 소모가 많은 가상화 방법이 아니라 효율적으로 가상 환경상에 소프트웨어를 가상화하여 설치할 수 있는 방법을 제공하는 것이다.
또한, 소프트웨어 가상화가 이루어진 후에도, 유저 레벨에서는 로컬환경과 가상 환경이 통합된 인터페이스를 제공받을 수 있는 방법을 제공하는 것이다.
또한, 가상 환경이 포터블 한 매체에 효율적으로 생성되고, 생성된 가상 환경에 설치된 가상화된 소프트웨어가 호스트 환경에 무관하게 그리고 호스트 환경에 영향을 미치지 않고 실행될 수 있도록 하는 방법을 제공하는 것이다.
상기 기술적 과제를 달성하기 위한 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 소프트웨어 가상화 시스템이 소정의 애플리케이션으로부터 실행 요청을 수신하는 단계, 수신된 상기 실행 요청이 가상화된 자원에 대한 요청인지를 판단하는 단계, 및 판단결과 상기 실행 요청이 가상화된 자원에 대한 요청인 경우 상기 소프트웨어 가상화 시스템은 상기 실행 요청에 응답하여 호스트에 연결된 포터블 매체에 설치되어 있는 가상화 자원을 리턴하고, 판단결과 상기 실행 요청이 가상화된 자원에 대한 요청이 아닌 경우 호스트에 존재하는 로컬 자원을 리턴하는 단계를 포함한다.
상기 소프트웨어 가상화 시스템은 상기 호스트의 시스템 폴더 구조가 소정의 가상화 규칙에 따라 표준화된 가상화 시스템 폴더 구조로 매핑하며, 상기 가상화 자원 중 적어도 일부는 매핑된 상기 가상화 시스템 폴더 구조에 따라 상기 포터블 매체에 설치된 것을 특징으로 할 수 있다.
상기 소프트웨어 가상화 시스템은 상기 호스트의 시스템 폴더 구조와 상기 가상화 시스템 폴더 구조를 통합한 통합 폴더 구조를 제공할 수 있다.
상기 소프트웨어 가상화 시스템은 상기 호스트의 쉘(shell) 폴더를 소정의 규칙에 의해 표준화된 가상화 쉘 폴더로 생성하고, 상기 가상화 자원 중 적어도 일부는 생성된 가상화 쉘 폴더에 따라 상기 포터블 매체에 설치된 것을 특징으로 할 수 있다.
상기 소프트웨어 가상화 시스템은 상기 호스트의 환경변수가 소정의 규칙에 의해 표준화된 가상화 환경변수를 생성하고, 상기 가상화 자원 중 적어도 일부는 생성된 가상화 환경변수에 따라 상기 포터블 매체에 설치된 것을 특징으로 할 수 있다.
수신된 상기 실행 요청이 상기 가상화된 자원에 대한 요청인지를 판단하는 단계는 상기 포터블 매체에 설치되어 있는 가상화 자원에 대한 정보를 포함하는 소정의 가상화 자원 테이블에 기초하여 판단하는 것을 특징으로 할 수 있다.
상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 상기 가상화 자원의 작업결과 생성되는 생성 데이터가 상기 가상화 자원 테이블에 포함되는지를 판단하는 단계 및 판단 결과 상기 가상화 자원 테이블에 포함되지 않은 경우, 상기 가상화 자원 테이블을 상기 데이터가 포함되도록 업데이트 하는 단계를 더 포함할 수 있다.
상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 상기 생성 데이터가 상기 포터블 매체에 가상화되어 설치되는 단계를 더 포함할 수 있다.
상기 가상화 자원은 상기 애플리케이션에 상응하는 가상화된 서비스, 컴(COM), 파일, 또는 레지스트리 중 적어도 하나일 수 있다.
상기 소프트웨어 가상화 시스템이 애플리케이션으로부터 실행 요청을 수신하는 단계는, 상기 애플리케이션으로부터 상기 호스트로 출력된 상기 실행 요청을 상기 소프트웨어 가상화 시스템이 API 후킹하는 단계를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 호스트와 포터블 매체가 연결된 상태에서 소프트웨어 가상화 모듈이 로딩되는 단계 및 상기 호스트에 설치된 로컬 환경과 상기 포터블 매체에 설치된 가상 환경이 통합된 통합 UI 구조로 제공되는 단계를 포함한다.
상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 제공된 상기 통합 UI 구조에 의해 사용자로부터 소정의 자원이 요청되는 단계, 요청된 자원이 가상화된 자원인지 판단하는 단계, 및 판단결과 가상화된 자원인 경우 상기 포터블 매체에 설치된 가상환경 내의 가상화 자원이 리턴되고, 판단결과 가상화된 자원이 아닌 경우 상기 로컬 환경 내의 로컬 자원이 리턴되는 단계를 더 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 소프트웨어 가상화 모듈이 실행되는 단계, 가상화될 애플리케이션이 선택되는 단계, 및 선택된 애플리케이션에 상응하는 가상화될 자원이 소정의 가상화 규칙에 따라 상기 포터블 매체에서 가상 환경으로 설치되는 단계를 포함한다.
상기 소정의 가상화 규칙은 상기 호스트에 설치된 로컬 환경이 표준화되도록 설정되기 위한 시스템 폴더 구조에 대한 규칙, 쉘(shell) 폴더에 대한 규칙, 또는 환경변수에 대한 규칙 중 적어도 하나를 포함할 수 있다.
상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 상기 호스트의 시스템 폴더 구조와 상기 포터블 매체에 설치된 가상 환경의 시스템 폴더 구조를 통합한 통합 폴더 구조를 제공하는 단계를 더 포함할 수 있다.
상기 선택된 애플리케이션이 상기 포터블 매체에서 가상환경으로 설치되는 단계는, 사용자로부터 상기 애플리케이션이 설치될 지정 경로를 수신하거나 또는 디폴트(default)로 설치될 디폴트 경로가 로컬환경에 상응하는 경로인 경우에도, 상기 가상 환경 경로에 상기 선택된 애플리케이션이 설치되는 것을 특징으로 할 수 있다.
상기 선택된 애플리케이션이 상기 포터블 매체에서 가상환경으로 설치되는 단계는, 상기 지정 경로 또는 상기 디폴트 경로로 상기 애플리케이션이 설치되기 위한 API 함수를 후킹하여 상기 가상 환경 경로로 리디렉션 하는 단계를 포함할 수 있다.
상기 선택된 애플리케이션이 상기 포터블 매체에서 가상환경으로 설치되는 단계는, 상기 포터블 매체에 설치되어 있는 가상화 자원에 대한 정보를 포함하는 가상화 자원 테이블을 참조하여 상기 선택된 애플리케이션이 설치되는 단계를 포함할 수 있다.
상기 가상화 자원 테이블을 참조하여 상기 선택된 애플리케이션이 설치되는 단계는 상기 가상화될 자원에 대한 정보가 상기 가상화 자원 테이블에 포함되는지를 판단하는 단계 및 판단결과 포함되지 않은 경우, 상기 가상화될 자원을 상기 포터블 매체에 설치하고 상기 가상화 자원 테이블에 상기 가상화될 자원에 대한 정보를 포함시키는 단계를 포함할 수 있다.
상기 가상화될 자원은 상기 애플리케이션에 상응하는 서비스, 컴(COM), 파일, 또는 레지스트리 중 적어도 하나를 포함할 수 있다.
상기 기술적 과제를 해결하기 위한 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 포터블 매체에 설치된 가상화 되어 있는 자원에 대한 정보를 포함하는 가상화 자원 테이블이 유지되는 단계, 상기 포터블 매체가 호스트에 연결되고, 소프트웨어 가상화 모듈이 실행되는 단계, 가상화될 애플리케이션이 상기 포터블 매체의 가상환경으로 설치되면, 상기 소프트웨어 가상화 모듈은 새롭게 상기 포터블 매체에 설치되는 가상화 자원에 대한 정보를 상기 가상화 자원 테이블에 업데이트 하는 단계를 포함한다.
상기 기술적 과제를 해결하기 위한 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 호스트의 시스템 폴더 구조와 상기 호스트와 연결된 포터블 매체에 설치된 가상 환경의 시스템 폴더 구조가 통합된 통합 폴더 구조로 제공되는 단계, 제공되는 상기 통합 폴더 구조에 기초하여 사용자로부터 가상화될 애플리케이션이 설치될 경로를 지정받은 지정경로 또는 디폴트로 설치될 디폴트 경로가 특정되는 단계, 및 상기 지정 경로 또는 상기 디폴트 경로가 상기 호스트의 로컬환경에 상응하는 경로인 경우, 상기 로컬환경에 대응되는 가상 환경 경로에 상기 선택된 애플리케이션이 가상화되어 설치되는 단계를 포함한다. 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 프로그램을 기록한 컴퓨터 판독 가능한 기록매체에 저장될 수 있다.
본 발명에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 소정의 가상화 규칙을 설정하여 소프트웨어를 가상화하여 설치할때 뿐만 아니라 가상화된 소프트웨어를 실행할 때에도 이를 참조하도록 함으로써, 호스트의 운영 환경에 무관하게 효율적으로 가상화된 소프트웨어가 설치 및 실행될 수 있는 효과가 있다.
또한, 소프트웨어를 가상화할때 스캔된 이미지나 API 별 라이브러리를 패키징 하는 것이 아니라, 소프트웨어가 설치될때 호출되는 API를 후킹을 통해 포터블 매체로 리디렉션(redirection)하기만 하면 되므로, 소프트웨어 가상화에 걸리는 시간이나 자원의 소모가 적은 효과가 있다.
또한, 소프트웨어가 가상화 된 후에도, 사용자는 가상환경과 로컬환경이 통합된 인터페이스를 제공받음으로써, 유저레벨에서 추상화가 증대되는 효과가 있다.
또한, 포터블 매체에 구비되는 가상환경내에 가상화되는 자원들에 대한 목록이 항상 유지되도록 함으로써, 이러한 목록을 참고하는 것만으로 가상화된 소프트웨어의 실행이 용이하게 수행될 수 있고, 로컬환경과 가상환경의 통합적 인터페이스가 제공되는 경우에도 가상환경의 리소스에 먼저 접근할 수 있게 되는 효과가 있다.
또한, 로컬환경과 가상환경이 통합되는 통합적 인터페이스를 제공받으면서도 가상 환경은 포터블한 매체에만 생성되도록 할 수 있고, 포터블한 매체에 생성되는 가상환경은 용이하게 다른 호스트 환경에서도 통합될 수 있어서 호스트에 디펜던트(dependent) 하지 않은 이동성 있는 소프트웨어 실행환경을 제공할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위한 물리적 구성을 개략적으로 나타낸다.
도 2는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템의 개략적인 논리적 구성을 나타낸다.
도 3은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법으로 소프트웨어를 가상화하는 과정을 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위해 가상화 시스템 폴더가 표준화되는 규칙을 설명하기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위해 쉘(shell) 폴더 및 환경변수가 표준화되는 규칙을 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법에 의해 로컬 환경과 가상 환경이 통합적 인터페이스로 제공되는 것을 설명하기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위한 가상화 자원 테이블을 개략적으로 나타내는 도면이다.
도 8은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법에 의해 가상화된 소프트웨어가 실행되는 방법을 설명하기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법으로 가상화된 소프트웨어가 실행되는 과정을 설명하기 위한 도면이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
또한, 본 명세서에 있어서는 어느 하나의 구성요소가 다른 구성요소로 데이터를 '전송'하는 경우에는 상기 구성요소는 상기 다른 구성요소로 직접 상기 데이터를 전송할 수도 있고, 적어도 하나의 또 다른 구성요소를 통하여 상기 데이터를 상기 다른 구성요소로 전송할 수도 있는 것을 의미한다.
반대로 어느 하나의 구성요소가 다른 구성요소로 데이터를 '직접 전송'하는 경우에는 상기 구성요소에서 다른 구성요소를 통하지 않고 상기 다른 구성요소로 상기 데이터가 전송되는 것을 의미한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위한 물리적 구성을 개략적으로 나타낸다.
도 1을 참조하면, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템을 위해서는 포터블 매체(100) 및 호스트(200)가 구비될 수 있다.
상기 포터블 매체(100)는 상기 호스트(200)와 유무선으로 연결될 수 있다. 예컨대, 상기 포터블 매체(100)는 USB(Universal Serial Bus) 인터페이스를 갖는 소정의 저장매체로 구현되어 상기 USB 인터페이스를 통해 상기 호스트(200)와 연결될 수 있다. 구현 예에 따라 상기 포터블 매체(100)는 소정의 근거리 통신(Near Field Communication)을 통해 상기 호스트(200)와 무선으로 연결될 수도 있다. 상기 포터블 매체(100)와 상기 호스트(200)가 연결되어 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위한 소정의 데이터를 송수신할 수만 있으면, 상기 포터블 매체(100)와 상기 호스트(200)간의 네트워크의 종류에 의해 본 발명의 권리범위가 한정되지는 않는다.
상기 포터블 매체(100)에는 본 발명의 기술적 사상에 따라 소정의 가상 환경이 설치될 수 있다. 상기 가상 환경은 소프트웨어 가상화를 위해 필요한 자원들이 포함되어 있다.
상기 호스트(200)는 상기 호스트(200)의 로컬 환경에 따라 운영되는 모든 데이터처리 시스템을 포함하는 의미로 사용될 수 있다. 상기 로컬환경은 상기 호스트(200)를 운영하는 운영체제(OS : Operating System)에 따른 OS 환경 및/또는 사용자가 상기 호스트(200)를 사용하면서 설정된 사용자 환경을 포함하는 의미로 사용될 수 있다.
도 2는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템의 개략적인 논리적 구성을 나타낸다.
도 2를 참조하면, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 적어도 소프트웨어 가상화 모듈(310)을 포함한다. 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 상기 소프트웨어 가상화 모듈(310)에 의해 생성될 수 있는 가상 환경 시스템(320)을 더 포함할 수 있다. 또한, 상기 가상 환경 시스템(320)에 설치된 가상화된 자원 즉, 가상화 자원에 대한 정보를 포함하는 소정의 가상화 자원 테이블(Virtual Object Description Table, 이하 'VDT', 330)을 더 포함할 수 있다.
도 2에 도시된 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 어느 하나의 물리적 장치를 의미하는 것은 아니다. 도 2는 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)의 각각의 구성은 기능 및 논리적으로 분리될 수 있음을 나타내는 것이며, 반드시 각각의 구성이 별도의 물리적 장치로 구분되거나 별도의 코드로 작성됨을 의미하는 것은 아님을 본 발명의 기술분야의 평균적 전문가는 용이하게 추론할 수 있을 것이다.
예컨대, 상기 소프트웨어 가상화 모듈(310), 가상 환경 시스템(320), 및 가상화 자원 테이블(330)은 모두 상기 포터블 매체(100)에 포함되어 구현될 수 있다. 구현 예에 따라서는 상기 소프트웨어 가상화 모듈(310)은 별도의 장치에 설치된 구성일 수도 있다.
또한, 상기 소프트웨어 가상화 모듈(310)이 복수의 기능을 수행하는 경우, 상기 소프트웨어 가상화 모듈(310) 자체도 서로 다른 물리적 장치에 이격되어 설치될 수 있으며, 이격되어 설치된 구성간에 통신을 통해 상기 복수의 기능을 수행할 수도 있다.
또한, 본 명세서에서 모듈이라 함은, 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적, 구조적 결합을 의미할 수 있다. 예컨대, 상기 모듈은 소정의 코드와 상기 소정의 코드가 수행되기 위한 하드웨어 리소스의 논리적인 단위를 의미할 수 있으며, 반드시 물리적으로 연결된 코드를 의미하거나, 한 종류의 하드웨어를 의미하는 것이 아님은 본 발명의 기술분야의 평균적 전문가에게는 용이하게 추론될 수 있다.
본 발명의 일 실시 예에 따르면, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 상기 포터블 매체(100)에 저장되어 있다가, 상기 호스트(200)와 연결된 후 유저에 의해 상기 소프트웨어 가상화 모듈(310)이 실행되면, 실행된 상기 소프트웨어 가상화 모듈(310)은 상기 호스트(200)의 메모리 상에 로딩될 수 있다. 로딩된 상기 소프트웨어 가상화 모듈(310)은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위해 상기 호스트(200) 및/또는 상기 포터블 매체(100)에 포함되는 하드웨어 및/또는 소프트웨어 리소스를 제어할 수 있다. 상기 소프트웨어 가상화 모듈(310)은 소정의 실행 가능한 파일의 형태로 구현될 수 있지만, 이에 한정되는 것은 아니다.
상기 가상 환경 시스템(320)은 상기 소프트웨어 가상화 모듈(310)에 의해 소정의 애플리케이션(소프트웨어)가 가상화된 결과 즉, 가상화된 자원이 저장된 시스템을 의미할 수 있다. 상기 가상 환경 시스템(320)에는 상기 애플리케이션이 설치되어서 실행될 때 필요한 모든 자원이 가상화되어 저장될 수 있다. 본 명세서에서 가상화된 자원은 가상화 자원으로 정의될 수 있다. 상기 애플리케이션이 실행될때 필요한 자원은 서비스, 콤(COM, DCOM을 포함함), 파일, 및/또는 레지스트리를 포함할 수 있으며, 상기 애플리케이션의 종류에 따라 이들 중 일부만이 상기 애플리케이션이 실행될때 필요한 자원일 수도 있다. 이처럼 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300) 제공방법은 단순히 파일 및 레지스트리 만을 가상화하는 것이 아니라, 서비스와 콤도 가상화함으로써 로컬 환경과 가상환경에서의 애플리케이션 실행이 완전히 독립될 수 있다. 예컨대, 동일한 애플리케이션이 로컬 환경 및 가상 환경에서 독립적으로 실행될 수 있다. 즉, 서로 다른 프로세스로 실행되어 복수의 창(window)에 의해 로딩될 수 있다.
상기 가상화 자원 테이블(330)은 상기 가상 환경 시스템(320)에 포함되는 가상화 자원에 대한 정보를 포함한다. 상기 가상화 자원에 대한 정보는 적어도 상기 가상화 자원의 경로에 대한 정보를 포함할 수 있다. 또한, 상기 가상화 자원 테이블(330)은 소정의 자원이 가상화되어 있는지 여부를 나타낼 수 있는 소정의 필드를 더 포함할 수도 있다. 이러한 필드는 상기 가상화 자원 테이블(330)이 업데이트될때 이용될 수 있다.
상기 가상화 자원 테이블(330)은 논리적으로 테이블의 형태로 구현될 수 있음을 나타내는 것이지, 상기 가상화 자원 테이블(330)에 포함된 정보를 유지하기 위해 반드시 테이블 형태의 데이터 스트럭쳐를 이용하여야 하는 것을 의미하지는 않는다. 상기 가상화 자원 테이블(330)에 포함된 정보를 저장하기 위한 데이터 스트럭쳐는 구현 예에 따라 다양할 수 있음을 본 발명의 기술분야의 평균적 전문가는 용이하게 추론할 수 있을 것이다.
도 3은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법으로 소프트웨어를 가상화하는 과정을 설명하기 위한 도면이다.
먼저, 도 3a를 참조하면, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)에 포함된 상기 소프트웨어 가상화 모듈(310)이 실행되면, 도 3a에 도시된 바와 같은 소정의 UI인 콘솔(10)이 활성화될 수 있다. 또한, 상기 소프트웨어 가상화 모듈(310)이 실행되면, 상기 소프트웨어 가상화 모듈(310)은 상기 호스트(200)의 메모리에 로딩될 수 있다. 또한, 상기 소프트웨어 가상화 모듈(310)이 실행되면, 상기 가상 환경 시스템(320)이 생성된다. 초기에 상기 가상 환경 시스템(320)에는 아무런 가상 자원이 포함되지 않을 수도 있다.
상기 가상 환경 시스템(320)이 생성되고, 도 3b에 도시된 바와 같이 소정의 애플리케이션 설치 파일이 선택되고, 선택된 설치파일을 실행함으로써 도3c에 도시된 바와 같이 상기 애플리케이션이 설치되기 시작한다.
상기 소프트웨어 가상화 모듈(310)에 의해 상기 애플리케이션이 가상화가 되지 않는다면, 상기 애플리케이션을 구성하는 객체(object)들 각각은 상기 호스트(200)의 로컬 환경상에 미리 설정된 디폴트 경로에 설치되거나, 사용자에 의해 지정된 지정 경로에 설치된다. 하지만, 상기 소프트웨어 가상화 모듈(310)에 의해 상기 애플리케이션을 구성하는 객체들은 상기 가상 환경 시스템(320)에 설치되게 된다.
이때, 상기 소프트웨어 가상화 모듈(310)은 상기 다양한 호스트별 로컬 환경의 차이에 무관하게, 가상화된 상기 애플리케이션이 각각의 호스트에서 실행되도록 하기 위해 소정의 가상화 규칙에 맞도록 가상 환경을 설치할 수 있다.
상기 가상화 규칙은 다양한 호스트의 로컬 환경(예컨대, OS 환경, 사용자 가 정의한 환경 등)에서도 가상화된 소프트웨어가 실행될 수 있도록 하기 위한 소정의 표준화 규칙을 의미할 수 있다.
예컨대, 상기 애플리케이션에 포함되는 객체들 각각은 자신이 상기 호스트(200)상에 설치되어야 할 경로로 설치되기 위해 로컬 API를 호출하게 되는데, 즉, 상기 소프트웨어 가상화 모듈(310)은 상기 애플리케이션의 가상화를 위해 상기 로컬 API를 후킹하여 상기 가상 환경 시스템(320)으로 리디렉션(redirection)하는 기능을 수행할 수 있다. 이러한 리디렉션은 가상화된 상기 애플리케이션이 호스트(200)에 대해 범용성을 갖도록 하기 위해 표준화될 필요가 있다. 또한, 이러한 리디렉션이 소정의 규칙에 의해 표준화됨으로써, 후술하는 바와 같이 로컬환경과 가상환경이 통합적 인터페이스로 사용자에게 제공될 수 있다.
이처럼, 상기 소프트웨어 가상화 모듈(310)이 가상화된 애플리케이션의 호스트(200)에 대한 범용성 및 로컬환경과 가상환경의 통합적 인터페이스 제공을 위해 표준화 하는 규칙들 즉, 상기 가상화 규칙은 시스템 폴더 구조에 대한 표준화, 쉘 폴더 구조에 대한 표준화, 또는 환경변수에 대한 표준화 중 적어도 하나를 포함할 수 있다. 이러한 가상화 규칙에 대한 표준화 방법은 도 4 및 도 5에 도시될 수 있다.
도 4는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위해 가상화 시스템 폴더가 표준화되는 규칙을 설명하기 위한 도면이다. 또한, 도 5는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위해 쉘(shell) 폴더 및 환경변수가 표준화되는 규칙을 설명하기 위한 도면이다.
먼저 도 4를 참조하면, 호스트(200)의 로컬 시스템은 로컬 시스템의 운영을 위해 미리 사용하기로 결정되어 있는 소정의 폴더 즉, 시스템 폴더를 포함하고 있다. 예컨대, 도 4a에 도시된 바와 같은 시스템 루트 폴더(C:\), 윈도즈 폴더(C:\WINDOWS\), 프로그램 파일 폴더(C:\Program Files\), 모든 유저 프로파일 폴더(\All User Profile\), 또는 유저 프로파일 폴더(\User Profile\) 등이 이러한 시스템 폴더에 해당할 수 있다. 이러한 시스템 폴더는 상기 애플리케이션을 구성하는 객체들이 원래 설치되어야 하거나 설치될 경우가 많은 폴더들일 수 있다. 또는 상기 객체들이 호출하거나 참조하는 자원들이 존재할 수 있는 폴더들일 수 있다.
하지만, 이러한 시스템 폴더들은 호스트(200)별로 서로 다른 경로를 가질 수 있다. 예컨대, 도 4b에 도시된 바와 같이 다른 호스트에서는 이러한 시스템 폴더들이 다른 경로를 가지고 있을 수 있다.
따라서, 도 4a에 도시된 바와 같이 로컬 환경의 각각의 시스템 폴더들 각각은 가상환경에서는 표준화된 가상화 시스템 폴더들(예컨대, $#sd#, $#sr#, $#pf#, $#aup#, $#up#)로 매핑되게 된다. 이처럼 상기 소프트웨어 가상화 모듈(310)은 표준화된 가상화 시스템 폴더로 로컬 환경의 시스템 폴더를 매핑하므로, 서로 다른 시스템 폴더의 경로를 가지는 호스트들에서도 가상화된 애플리케이션의 실행이 가능해지게 된다. 이러한 매핑 규칙은 상기 소프트웨어 가상화 모듈(310)이 실행되면, 상기 호스트(200)의 로컬 환경을 참조하여 결정되게 된다.
예컨대, 도 4a에 도시된 바와 같은 표준화 규칙에 의해 가상화된 애플리케이션이 상기 가상 환경 시스템(320)에 설치될 수 있다. 이 후, 포터블 매체(100)가 시스템 폴더의 경로가 도 4b에 도시된 바와 같이 설정된 호스트에 연결되고 상기 소프트웨어 가상화 모듈(310)이 실행되면, 상기 소프트웨어 가상화 모듈(310)은 상기 호스트의 로컬 환경을 참조하여 상기 매핑 규칙을 업데이트 함으로써, 로컬 API 호출을 후킹하여 원하는 가상화 자원에 접근하도록 제어할 수 있게 된다.
즉, 도 4a와 같은 매핑규칙을 가지는 환경에서는 표준화된 가상화 시스템 폴더는 C 드라이브의 경로를 갖는 시스템 폴더가 호출될 때 접근되며, 도 4b와 같은 환경에서는 D 드라이브의 경로를 갖는 시스템 폴더가 호출될 때 표준화된 가상화 시스템 폴더가 접근되게 된다.
전술한 바와같은 매핑규칙은 상기 소프트웨어 가상화 모듈(310)에 저장될 수 있다.
또한, 이러한 시스템 폴더 간의 매핑 규칙에 의해 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템은 가상환경과 로컬환경의 통합적 인터페이스를 제공할 수 있게 되어 유저 레벨에서 시스템 환경의 추상화가 이루어 지게 되는데, 이에 대해서는 후술하도록 한다.
도 5는 상기 호스트(200)의 쉘 폴더 또는 상기 호스트(200)의 환경변수들을 표준화함으로써 도 4에서 설명한 바와 같이 가상화된 애플리케이션이 호스트별 범용성을 갖도록 하는 경우를 나타낸다. 도 5a는 쉘 폴더(예컨대, 내문서 폴더(\내문서\), 바탕화면 폴더(\바탕화면\), 로컬 데이터 폴더(\local_data\), 로컬 에이피피 데이터 폴더(\local_app_data\)가 소정의 표준화 규칙(매핑 규칙)에 의해 표준화 되는 경우를 도시하고 있으며, 이러한 쉘 폴더들 역시 OS의 버전 등에 따라 차이가 날 수 있다. 이러한 쉘 폴더들이 달라지면 레지스트리 역시 달라질 수 있는데, 도 5a와 같이 가상환경에서는 이러한 쉘 폴더들을 표준화함으로써, 로컬 환경이 다른 호스트에서는 표준화 규칙을 재설정해 줌으로써 가상화된 애플리케이션의 범용성을 제공할 수 있다. 도 5b 역시 애플리케이션 객체들이 참조하는 환경변수가 로컬 환경에 따라 다를 수 있으므로, 이를 소정의 규칙에 의해 표준화함으로써 가상환경의 호스트에 대한 범용성을 제공할 수 있는 효과가 있다. 도 4 내지 도 5에서 설명한 표준화된 폴더 또는 변수의 이름은 구현 예에 따라 다양할 수 있음은 물론이다.
다시 도 3을 참조하면, 상기 소프트웨어 가상화 모듈(310)이 실행되는 경우, 전술한 바와 같은 가상화 규칙(표준화 규칙)이 로컬환경을 참조하여 새롭게 업데이트되거나 새롭게 설정될 수 있으며, 이러한 가상화 규칙에 의해 상기 애플리케이션은 상기 가상 환경 시스템(320)에 설치될 수 있다. 즉, 도 3d에 도시된 바와 같이 가상화된 자원(예컨대, 레지스트리, 파일, 서비스 또는 콤 등)이 상기 가상 환경 시스템(320)에 설치될 수 있다.
한편, 도 3b에 도시된 바와 같이 사용자는 상기 콘솔(10)을 이용하여 설치할 애플리케이션을 선택하고, 선택된 애플리케이션을 설치할 경로를 지정할 수도 있다. 또는 상기 콘솔(10)을 이용하여 설치할 애플리케이션만 선택하면 상기 애플리케이션이 설치될 경로는 디폴트(default)로 결정될 수도 있다. 물론, 사용자가 선설치할 경로를 지정하는 경우에도, 상기 애플리케이션에 포함되는 객체별로는 미리 지정된 디폴트 경로가 있을 수도 있다. 상기 애플리케이션 또는 상기 애플리케이션의 객체가 설치될 경로가 디폴트로 결정되는 경우에는 당연히 호스트(200)의 로컬 환경에 설치될 경로가 설정되어 있을 수 있다. 따라서, 상기 소프트웨어 가상화 모듈(310)은 로컬 환경으로 설정된 설치 경로를 API 후킹을 통하여 리디렉션할 수 있다.
뿐만 아니라, 사용자가 로컬 환경으로 설치 경로를 지정한 경우에도, 상기 소프트웨어 가상화 모듈(310)은 설치 경로를 상기 가상 환경 시스템(320)으로 리디렉션할 수 있다. 이는 후술하는 바와 같이 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 로컬환경과 가상환경을 통합한 통합 UI(예컨대, 폴더 구조)를 제공할 수 있으므로, 애플리케이션이 자신이 설치되는 위치를 알지 못하게 할 뿐만 아니라, 사용자도 직접 로컬환경과 가상환경을 구분할 필요가 없도록 할 수 있다.
즉, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 실제로는 상기 포터블 매체(100)에 상기 애플리케이션이 가상환경으로 설치되더라도 사용자의 입장에서는 자신이 지정한 설치경로에 상기 애플리케이션이 설치된 것처럼 느끼도록 함으로써 유저레벨에서는 시스템의 구조를 추상화하도록 하는 효과를 제공할 수 있다.
또한, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 사용자가 설치 경로를 지정하도록 소정의 UI를 제공할때, 도 6에서 후술하는 바와 같은 통합 폴더 구조를 제공할 수도 있다. 따라서, 사용자가 지정하는 설치 경로는 통합 폴더 구조에 기초하여 지정될 수도 있다.
도 6은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법에 의해 로컬 환경과 가상 환경이 통합적 인터페이스로 제공되는 것을 설명하기 위한 도면이다.
도 6을 참조하면, 도 6a는 로컬 환경의 폴더 구조를 나타내는 인터페이스를 도시하고 있다. 도 6a와 같은 폴더 구조를 갖는 로컬 환경에서 소정의 애플리케이션이 설치되는 경우, 상기 애플리케이션은 상기 소프트웨어 가상화 모듈(310)에 의해 가상 환경 시스템(320)에 가상화되어 설치된다. 따라서, 상기 로컬 환경의 폴더구조는 아무런 변화가 없을 수 있다.
상기 애플리케이션이 가상화되어 설치되면, 상기 가상 환경 시스템(320)은 도 6b에 도시된 바와 같은 폴더 구조를 갖게 될 수 있다. 도 6b를 참조하면, 전술한 바와 같이 로컬 환경의 시스템 폴더에 대응되는 폴더들이 소정의 규칙으로 표준화 되어 있음을 알 수 있다. 즉, 도 6a는 호스트(200)의 로컬 환경의 폴더 구조를 나타내며 도 6b는 가상환경의 폴더 구조를 나타내는데, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 상기 로컬 환경의 폴더 구조(도 6a에 도시된 구조)와 상기 가상 환경의 폴더구조(도 6b에 도시된 구조)를 통합하여 통합 폴더 구조를 생성할 수 있다. 생성된 통합 폴더 구조는 도 6c에 도시된다.
도 6c를 참조하면, 로컬 환경의 시스템 폴더(C:\Program Files\)와 상기 시스템 폴더(C:\Program Files\)에 대응되는 가상 환경의 표준화된 시스템 폴더($#pf#)가 하나의 폴더구조로 통합되어 있음을 알 수 있다. 즉, 통합 폴더 구조에서는 통합되는 두 개의 폴더(도 6a의 (C:\Program Files\) 및 도 6b의 ($#pf#)) 각각의 자(child) 폴더들은 통합된 폴더(도 6c의 (\Program Files\))의 자 폴더로 생성되게 된다. 이처럼 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 가상환경과 로컬환경을 통합 또는 더블 레이어링(double layering)함으로써, 사용자에게 가상환경과 로컬환경이 구분할 필요가 없는 추상화된 시스템을 제공할 수 있게 되는 효과가 있다.
또한, 도 6에 도시된 바와 같은 폴더 구조를 나타내는 UI 외에도 구현 예에 따라 로컬 환경의 파일 및 폴더를 나타낼 수 있는 다양한 형태의 UI가 존재할 수 있으며, 이때에도 그 형태의 UI에 상응하도록 통합 UI가 생성될 수 있다.
또한, 사용자는 도 6c에 도시된 바와 같은 통합 UI(폴더 구조)를 이용하여 호스트에 자원(예컨대, 파일 및 폴더 등)을 요청할 수 있는데, 이때에도 상기 소프트웨어 가상화 모듈(310)은 요청된 자원이 가상화 자원인지를 판단하고, 판단결과에 따라 가상환경(예컨대, 도 6b의 환경)내의 자원을 리턴하거나, 로컬 환경(예컨대, 도 6a의 환경)내의 자원을 리턴할 수 있다.
한편, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 VDT(330)를 더 포함할 수 있는데, 상기 VDT(330)는 포터블 매체(100)에 구비되는 가상환경 내에 설치된 가상화 자원들에 대한 목록이 항상 유지되도록 할 수 있다. 따라서 이러한 목록을 참고하는 것만으로 가상화된 소프트웨어의 실행이 용이하게 수행될 수 있고, 로컬환경과 가상환경의 통합적 인터페이스가 제공되는 경우에도 가상환경의 리소스에 먼저 접근할 수 있게 되는 효과가 있다.
도 7은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법을 구현하기 위한 가상화 자원 테이블을 개략적으로 나타내는 도면이다.
도 7을 참조하면, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 가상 환경 시스템(320) 내에 가상화된 가상화 자원(예컨대, 파일, 콤, 서비스, 또는 레지스트리 중 적어도 하나)에 대한 목록을 유지할 수 있는데, 이러한 목록은 가상화 자원 테이블(330) 즉, VDT(Virtual Object Discriptor Table)에 의해 유지될 수 있다. 이처럼 가상화 자원에 대한 목록을 유지함으로써, 가상화된 애플리케이션이 실행될 때 로컬 API가 호출하는 자원이 가상화된 자원인지 아닌지 여부를 효율적으로 판단할 수 있다. 또한, 이러한 VDT를 유지함으로써, 도 6에서 설명한 바와 같이 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)은 로컬 환경과 가상 환경이 통합되어 추상화된 시스템을 제공할 수 있는데, 이러한 추상화된 시스템에서 사용자가 실행하고자 하는 애플리케이션이 가상화된 애플리케이션인지 아닌지를 모르는 상태에서도 요청된 애플리케이션이 가상화된 애플리케이션인 경우에는 상기 가상 환경 시스템(320)에 설치된 가상화 자원에 먼저 접근하게 할 수 있다.
상기 VDT는 상기 소프트웨어 가상화 모듈(310)에 의해 업데이트(update) 될 수 있으며, 도 3에서 설명한 바와 같이 애플리케이션이 가상화될 때 업데이트 될 수 있다. 또한, 가상화된 애플리케이션을 사용하여 새롭게 생성되는 생성 데이터는 상기 호스트(200)에 영향을 미치지 않기 위해 가상화 될 수 있는데, 이러한 생성 데이터가 가상화되는 경우에도 상기 VDT는 업데이트 될 수 있다.
상기 VDT는 도 7에 도시된 바와 같이 가상 환경에 설치된 가상화 자원의 경로에 대한 정보를 포함할 수 있다. 또한, 상기 VDT에 포함된 자원이 가상화되었는지 여부에 대한 정보가 더 포함될 수도 있다. 이러한 가상화 여부에 대한 정보는 상기 가상 환경 시스템(320)에 새롭게 설치될 자원 또는 객체가 상기 VDT에 미리 기록되는 경우에 사용되거나, 필요에 따라 상기 가상 환경 시스템(320)에 상기 애애플리케이션을 구성하는 객체에 상응하는 가상화 자원이 아닌 다른 자원 또는 객체가 포함될 필요가 있는 경우, 상기 가상화 자원이 아닌 다른 자원 또는 객체를 구분하기 위해 사용될 수 있다. 예컨대, 애플리케이션을 구성하는 모든 객체 또는 자원이 먼저 VDT에 기록될 수 있다. 이때에는 아직 가상화가 되지 않은 자원이므로 가상화가 되지 않은 자원으로 표시될 수 있다. 그 후 VDT에 기록된 객체 또는 자원 중 상기 가상 환경 시스템(320)에 write되는 API가 호출된 후에는 가상화된 자원으로 표시될 수 있다.
상기 소프트웨어 가상화 모듈(310)은 VDT를 참고하여 요청된 자원이 가상화 자원인 경우에는 가상화 자원을 리턴하고, 그렇지 않은 경우에는 로컬 자원을 리턴하게 된다. 가상화 자원 또는 로컬 자원을 리턴한다고 함은, 호출된 요청에 상응하는 자원의 접근을 허락하거나, 접근경로를 호출한 프로세스에 전달하는 것을 의미할 수 있다.
예컨대, 상기 소프트웨어 가상화 모듈(310)이 실행되어 가상 환경이 생성 및/또는 실행된 후, 사용자에 의해 소정의 애플리케이션이 실행이 요청될 수 있다. 예컨대, 상기 애플리케이션이 실행되기 위해 호출된 경로가 C:\Program Files\a.exe라고 가정할 수 있다. 그러면 상기 소프트웨어 가상화 모듈(310)은 호출된 자원(C:\Program Files\a.exe)이 가상화 자원인지 여부를 상기 VDT를 참조하여 판단할 수 있다. 이때 상기 VDT는 전술한 바와 같은 가상화 규칙에 의해 표준화된 경로를 가질 수 있다. 예컨대, 상기 경로(C:\Program Files\a.exe)가 표준화된 가상환경의 경로는 $#pf#a.exe일 수 있다. 상기 표준화된 경로($#pf#a.exe)는 상기 VDT에 포함되어 있으므로, 상기 소프트웨어 가상화 모듈(310)은 상기 표준화된 경로($#pf#a.exe)에 존재하는 자원 즉, 상기 가상 환경 시스템(320)에 가상화된 자원에 접근하게 된다. 만약 표준화된 경로가 상기 VDT에 포함되어 있지 않은 자원인 경우에는 상기 로컬 환경에 상기 경로(C:\Program Files\a.exe)로 접근을 하게 된다. 이러한 VDT를 이용한 자원의 접근제어는 소정의 애플리케이션이 실행될 때 뿐만 아니라, 소정의 애플리케이션이 실행되는 중에 요청되는 자원에 대해서도 동일하게 적용될 수 있다.
또한, 상기 애플리케이션의 소정의 객체가 설치되는 경로가 상기 가상 환경 시스템(320)으로 리디렉션될 때, 상기 소프트웨어 가상화 모듈(310)은 상기 VDT에 상기 소정의 객체가 포함되어 있는지를 판단하고, 판단결과 상기 소정의 객체가 포함되어 있지 않은 경우 즉, 가상화 되어 있지 않은 경우에만 상기 소정의 객체를 상기 가상 환경 시스템(320)으로 설치할 수 있다. 물론, 동일한 가상환경 경로에 다시 설치할 수도 있으며, 이때에는 종래의 가상화 자원이 새로운 가상화 자원으로 대체될 수도 잇다.
도 8은 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법에 의해 가상화된 소프트웨어가 실행되는 방법을 설명하기 위한 도면이다.
도 8을 참조하면, 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템(300)에 포함되는 소프트웨어 가상화 모듈(310)이 실행되면, 상기 소프트웨어 가상화 모듈(310)은 상기 호스트(200)의 메모리상에 로딩될 수 있다(S100). 상기 소프트웨어 가상화 모듈(310)이 로딩된 후 소정의 프로세스가 상기 메모리상에 로딩될 수 있다(S110). 그러면, 상기 소프트웨어 가상화 모듈(310)은 상기 프로세스로부터 상기 호스트(200)의 로컬환경으로 출력되는 API를 모니터링할 수 있다.
이를 위해 상기 소프트웨어 가상화 모듈(310)은 상기 프로세스가 소정의 로컬 API를 출력하면(S120), 상기 로컬 API를 후킹(hooking)할 수 있다(S130). 그러면, 상기 소프트웨어 가상화 모듈(310)은 후킹한 정보에 기초하여 상기 로컬 API가 가상화 자원에 대한 요청인지 아닌지를 판단할 수 있다. 이는 전술한 바와 같이 VDT를 참조하여 이루어질 수 있다. 또한, 상술한 바와 같은 가상화 규칙에 기초하여 상기 VDT를 참조할 수 있다. 참조결과 가상자원에 대한 접근이라고 판단한 경우, 즉 요청된 자원이 가상화된 경우에는 가상자원을 리턴하게 되고, 그러면 상기 프로세스는 가상 자원에 접근할 수 있다(S140). 만약 요청된 자원이 가상화 자원이 아닌 경우에는 로컬 자원을 리턴하게 되며, 이는 원래 요청된 로컬 API의 요청이 처리되어 상기 프로세스가 로컬 자원에 접근할 수 있다(S140-1).
도 9는 본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법으로 가상화된 소프트웨어가 실행되는 과정을 설명하기 위한 도면이다.
먼저, 도 9a를 참조하면, 애플리케이션이 가상화된 후, 상기 호스트(200) 또는 별도의 호스트에서 상기 소프트웨어 가상화 모듈(310)이 실행된다. 그러면 가상환경이 실행되며, 콘솔이 디스플레이된다.
사용자는 디스플레이된 콘솔을 이용하여 도 9b에 도시된 바와 같이 소정의 애플리케이션을 선택할 수 있다. 상기 도 9b에 도시된 풀 다운(pull-down) 메뉴는 가상환경에 설치된 애플리케이션만을 포함하도록 설정될 수 있다. 또는 도 6에서 설명한 바와 같이 로컬 환경과 가상환경에 설치된 애플리케이션이 통합적으로 디스플레이될 수도 있다.
디스플레이된 애플리케이션 중 어느 하나가 선택되면, 선택된 애플리케이션이 가상화 되었는지를 판한하고, 판단 결과에 따라 상기 가상 환경 시스템(320)에 설치된 가상화 자원 또는 로컬 자원이 리턴될 수 있다.
그 결과 도 9c에서와 같이 선택된 애플리케이션이 설치될 수 있다.
본 발명의 실시 예에 따른 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 하드 디스크, 플로피 디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
본 발명은 도면에 도시된 일 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (23)

  1. 소프트웨어 가상화 시스템이 소정의 애플리케이션으로부터 실행 요청을 수신하는 단계;
    수신된 상기 실행 요청이 가상화된 자원에 대한 요청인지를 판단하는 단계; 및
    판단결과 상기 실행 요청이 가상화된 자원에 대한 요청인 경우 상기 소프트웨어 가상화 시스템은 상기 실행 요청에 응답하여 호스트에 연결된 포터블 매체에 설치되어 있는 가상화 자원을 리턴하고, 판단결과 상기 실행 요청이 가상화된 자원에 대한 요청이 아닌 경우 호스트에 존재하는 로컬 자원을 리턴하는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  2. 제 1항에 있어서, 상기 소프트웨어 가상화 시스템은,
    상기 호스트의 시스템 폴더 구조가 소정의 가상화 규칙에 따라 표준화된 가상화 시스템 폴더 구조로 매핑하며, 상기 가상화 자원 중 적어도 일부는 매핑된 상기 가상화 시스템 폴더 구조에 따라 상기 포터블 매체에 설치된 것을 특징으로 하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  3. 제 2항에 있어서, 상기 소프트웨어 가상화 시스템은,
    상기 호스트의 시스템 폴더 구조와 상기 가상화 시스템 폴더 구조를 통합한 통합 폴더 구조를 제공하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  4. 제 1항에 있어서, 상기 소프트웨어 가상화 시스템은,
    상기 호스트의 쉘(shell) 폴더를 소정의 규칙에 의해 표준화된 가상화 쉘 폴더로 생성하고, 상기 가상화 자원 중 적어도 일부는 생성된 가상화 쉘 폴더에 따라 상기 포터블 매체에 설치된 것을 특징으로 하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  5. 제 1항에 있어서, 상기 소프트웨어 가상화 시스템은,
    상기 호스트의 환경변수가 소정의 규칙에 의해 표준화된 가상화 환경변수를 생성하고, 상기 가상화 자원 중 적어도 일부는 생성된 가상화 환경변수에 따라 상기 포터블 매체에 설치된 것을 특징으로 하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  6. 제 1항에 있어서, 수신된 상기 실행 요청이 상기 가상화된 자원에 대한 요청인지를 판단하는 단계는,
    상기 포터블 매체에 설치되어 있는 가상화 자원에 대한 정보를 포함하는 소정의 가상화 자원 테이블에 기초하여 판단하는 것을 특징으로 하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  7. 제 6항에 있어서, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은,
    상기 가상화 자원의 작업결과 생성되는 생성 데이터가 상기 가상화 자원 테이블에 포함되는지를 판단하는 단계; 및
    판단 결과 상기 가상화 자원 테이블에 포함되지 않은 경우, 상기 가상화 자원 테이블을 상기 데이터가 포함되도록 업데이트 하는 단계를 더 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  8. 제 7항에 있어서, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은,
    상기 생성 데이터가 상기 포터블 매체에 가상화되어 설치되는 단계를 더 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  9. 제 1항에 있어서, 상기 가상화 자원은,
    상기 애플리케이션에 상응하는 가상화된 서비스, 컴(COM), 파일, 또는 레지스트리 중 적어도 하나인 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  10. 제 1항에 있어서, 상기 소프트웨어 가상화 시스템이 애플리케이션으로부터 실행 요청을 수신하는 단계는,
    상기 애플리케이션으로부터 상기 호스트로 출력된 상기 실행 요청을 상기 소프트웨어 가상화 시스템이 API 후킹하는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법..
  11. 호스트와 포터블 매체가 연결된 상태에서 소프트웨어 가상화 모듈이 로딩되는 단계; 및
    상기 호스트에 설치된 로컬 환경과 상기 포터블 매체에 설치된 가상 환경이 통합된 통합 UI 구조로 제공되는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  12. 제 11항에 있어서, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은,
    제공된 상기 통합 UI 구조에 의해 사용자로부터 소정의 자원이 요청되는 단계;
    요청된 자원이 가상화된 자원인지 판단하는 단계; 및
    판단결과 가상화된 자원인 경우 상기 포터블 매체에 설치된 가상환경 내의 가상화 자원이 리턴되고, 판단결과 가상화된 자원이 아닌 경우 상기 로컬 환경 내의 로컬 자원이 리턴되는 단계를 더 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  13. 소프트웨어 가상화 모듈이 실행되는 단계;
    가상화될 애플리케이션이 선택되는 단계; 및
    선택된 애플리케이션에 상응하는 가상화될 자원이 소정의 가상화 규칙에 따라 상기 포터블 매체에서 가상 환경으로 설치되는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  14. 제 13항에 있어서, 상기 소정의 가상화 규칙은,
    상기 호스트에 설치된 로컬 환경이 표준화되도록 설정되기 위한 시스템 폴더 구조에 대한 규칙, 쉘(shell) 폴더에 대한 규칙, 또는 환경변수에 대한 규칙 중 적어도 하나를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  15. 제 13항에 있어서, 상기 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법은,
    상기 호스트의 시스템 폴더 구조와 상기 포터블 매체에 설치된 가상 환경의 시스템 폴더 구조를 통합한 통합 폴더 구조를 제공하는 단계를 더 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  16. 제 13항에 있어서, 상기 선택된 애플리케이션이 상기 포터블 매체에서 가상환경으로 설치되는 단계는,
    사용자로부터 상기 애플리케이션이 설치될 지정 경로를 수신하거나 또는 디폴트(default)로 설치될 디폴트 경로가 로컬환경에 상응하는 경로인 경우에도, 상기 가상 환경 경로에 상기 선택된 애플리케이션이 설치되는 것을 특징으로 하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  17. 제 16항에 있어서, 상기 선택된 애플리케이션이 상기 포터블 매체에서 가상환경으로 설치되는 단계는,
    상기 지정 경로 또는 상기 디폴트 경로로 상기 애플리케이션이 설치되기 위한 API 함수를 후킹하여 상기 가상 환경 경로로 리디렉션 하는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  18. 제 13항에 있어서, 상기 선택된 애플리케이션이 상기 포터블 매체에서 가상환경으로 설치되는 단계는,
    상기 포터블 매체에 설치되어 있는 가상화 자원에 대한 정보를 포함하는 가상화 자원 테이블을 참조하여 상기 선택된 애플리케이션이 설치되는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  19. 제 18항에 있어서, 상기 가상화 자원 테이블을 참조하여 상기 선택된 애플리케이션이 설치되는 단계는,
    상기 가상화될 자원에 대한 정보가 상기 가상화 자원 테이블에 포함되는지를 판단하는 단계; 및
    판단결과 포함되지 않은 경우, 상기 가상화될 자원을 상기 포터블 매체에 설치하고 상기 가상화 자원 테이블에 상기 가상화될 자원에 대한 정보를 포함시키는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  20. 제 13항에 있어서, 상기 가상화될 자원은,
    상기 애플리케이션에 상응하는 서비스, 컴(COM), 파일, 또는 레지스트리 중 적어도 하나를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  21. 포터블 매체에 설치된 가상화 되어 있는 자원에 대한 정보를 포함하는 가상화 자원 테이블이 유지되는 단계;
    상기 포터블 매체가 호스트에 연결되고, 소프트웨어 가상화 모듈이 실행되는 단계;
    가상화될 애플리케이션이 상기 포터블 매체의 가상환경으로 설치되면, 상기 소프트웨어 가상화 모듈은 새롭게 상기 포터블 매체에 설치되는 가상화 자원에 대한 정보를 상기 가상화 자원 테이블에 업데이트 하는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  22. 호스트의 시스템 폴더 구조와 상기 호스트와 연결된 포터블 매체에 설치된 가상 환경의 시스템 폴더 구조가 통합된 통합 폴더 구조로 제공되는 단계; 및
    제공되는 상기 통합 폴더 구조에 기초하여 사용자로부터 가상화될 애플리케이션이 설치될 경로를 지정받은 지정경로 또는 디폴트로 설치될 디폴트 경로가 특정되는 단계; 및
    상기 지정 경로 또는 상기 디폴트 경로가 상기 호스트의 로컬환경에 상응하는 경로인 경우, 상기 로컬환경에 대응되는 가상 환경 경로에 상기 선택된 애플리케이션이 가상화되어 설치되는 단계를 포함하는 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법.
  23. 제 1항 내지 제 22항 중 어느 한 항에 기재된 방법을 수행하기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020100009459A 2010-02-02 2010-02-02 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법 KR101103795B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100009459A KR101103795B1 (ko) 2010-02-02 2010-02-02 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100009459A KR101103795B1 (ko) 2010-02-02 2010-02-02 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법

Publications (2)

Publication Number Publication Date
KR20110089942A true KR20110089942A (ko) 2011-08-10
KR101103795B1 KR101103795B1 (ko) 2012-01-06

Family

ID=44927814

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100009459A KR101103795B1 (ko) 2010-02-02 2010-02-02 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법

Country Status (1)

Country Link
KR (1) KR101103795B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122504B2 (en) 2012-11-30 2015-09-01 Electronics And Telecommunications Research Institute Apparatus and method for encryption in virtualized environment using auxiliary medium
KR102141850B1 (ko) * 2020-02-19 2020-08-06 주식회사 커넥션소프트 모바일 가상화 서비스를 위한 시스템, 서버, 단말, 및 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6944790B2 (en) * 2001-04-05 2005-09-13 International Business Machines Corporation System and method for collecting and restoring user environment data using removable storage
KR100654675B1 (ko) * 2004-12-04 2006-12-08 소프트온넷(주) 호스트 컴퓨터상에서 응용프로그램 수행을 위한 휴대용디지털 저장장치 시스템 및 방법
US7712086B2 (en) * 2004-12-15 2010-05-04 Microsoft Corporation Portable applications
NZ575535A (en) 2006-09-11 2012-04-27 Commw Scient Ind Res Org A portable device for use in establishing trust

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9122504B2 (en) 2012-11-30 2015-09-01 Electronics And Telecommunications Research Institute Apparatus and method for encryption in virtualized environment using auxiliary medium
KR102141850B1 (ko) * 2020-02-19 2020-08-06 주식회사 커넥션소프트 모바일 가상화 서비스를 위한 시스템, 서버, 단말, 및 방법

Also Published As

Publication number Publication date
KR101103795B1 (ko) 2012-01-06

Similar Documents

Publication Publication Date Title
US10992758B2 (en) Virtualizing device management services on a multi-session platform
US10284416B2 (en) Workload deployment with infrastructure management agent provisioning
CA2761563C (en) Annotating virtual application processes
US8910163B1 (en) Seamless migration of non-native application into a virtual machine
TWI478063B (zh) 於虛擬機器提供應用程式之系統以及方法以及儲存其之電腦可讀取記錄媒體
KR101540798B1 (ko) 가상화 환경에서 보안 정보를 제공하기 위한 장치 및 방법
US8589918B1 (en) Multi-platform compatible portable virtual machine player
JP5847734B2 (ja) 仮想化のための拡張ポイントの宣言的登録
CN111475227B (zh) 业务插件加载实现方法、装置和终端设备
JP2008524686A (ja) コンピュータ装置においてアプリケーションを保守する方法
US9959136B2 (en) Optimizations and enhancements of application virtualization layers
CN110780930A (zh) 启动Android系统的方法、装置、电子设备及存储介质
US20220121472A1 (en) Vm creation by installation media probe
JP5951002B2 (ja) 選択的ポリシーによるホストと複数のゲストとの間での構成要素伝播の実現
US11675964B2 (en) Management of remote access user application layouts
KR101103795B1 (ko) 포터블 매체를 이용한 소프트웨어 가상화 시스템 제공방법
EP3543849A1 (en) Driver management method and host machine
KR102572383B1 (ko) 애플리케이션 관리 방법 및 장치
KR101089792B1 (ko) 애플리케이션 가상화를 위한 보안 제공방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20141224

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170102

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee