KR20140046402A - 라이브러리 운영체제들과의 애플리케이션 호환성 - Google Patents

라이브러리 운영체제들과의 애플리케이션 호환성 Download PDF

Info

Publication number
KR20140046402A
KR20140046402A KR1020137023212A KR20137023212A KR20140046402A KR 20140046402 A KR20140046402 A KR 20140046402A KR 1020137023212 A KR1020137023212 A KR 1020137023212A KR 20137023212 A KR20137023212 A KR 20137023212A KR 20140046402 A KR20140046402 A KR 20140046402A
Authority
KR
South Korea
Prior art keywords
operating system
library
application
library operating
host
Prior art date
Application number
KR1020137023212A
Other languages
English (en)
Other versions
KR101963912B1 (ko
Inventor
갈렌 씨 헌트
루벤 알 올린스키
마이클 알 포르틴
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140046402A publication Critical patent/KR20140046402A/ko
Application granted granted Critical
Publication of KR101963912B1 publication Critical patent/KR101963912B1/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
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/45575Starting, stopping, suspending or resuming 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)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

라이브러리 운영체제들의 사용을 통해 애플리케이션 호환성이 용이해진다. 라이브러리 운영체제들은 애플리케이션 호환성을 파괴할 가능성이 있는 애플리케이션의 일부를 캡슐화할 수 있다. 애플리케이션은 호스트 운영체제 상위에서 동작하는 호환 가능한 라이브러리 운영체제에 결합될 수 있다. 또한 라이브러리 운영체제 버전은 호스트 운영체제 버전보다 높거나, 동일하거나 낮을 수 있다. 결과적으로 하위 및 상위 호환성 모두가 가능하게 된다.

Description

라이브러리 운영체제들과의 애플리케이션 호환성{APPLICATION COMPATIBILITY WITH LIBRARY OPERATING SYSTEMS}
운영체제(OS) 구축에 대한 라이브러리 접근 방법이 1990년대에 몇몇 운영체제 디자인에 의해 지지되었다. 라이브러리 OS라는 아이디어는 애플리케이션이 의존하는 OS의 전체 특성이 라이브러리로서 그 어드레스 공간 안에 전해진다는 것이다. OS 특성(personality)은 OS의 애플리케이션 프로그래밍 인터페이스들(APIs) 및 애플리케이션 가시적 시맨틱스 - 애플리케이션이 구축되는 OS 서비스들 - 의 구현이다. 라이브러리 OS 접근 방법의 초기 주창자들은 기본적으로 라이브러리 OS가 각 애플리케이션에 대한 맞춤화를 통해 보다 나은 성능을 가능하게 할 수 있을 것이라고 주장하였다. 예를 들어, 특이한 파일 액세스 패턴을 가진 디스크 I/O 관련 애플리케이션은 디폴트 직렬 선인출 휴리스틱스(sequential prefetching heuristics)를 이용하기보다 맞춤 파일 시스템 저장 스택을 이용함으로써 보다 나은 성능을 구현할 수 있다.
그와 동시대의 것들 중 많은 것들과 같이, 라이브러리 OS 접근 방법은 현재의 가상 머신의 부상으로 인해 거의 잊혀지고 있다. 라이브러리 OS 디자인을 포함해서 당대의 가장 새로운 OS 디자인이 작은 연구 프로토타입들 상에서 소수의 커스텀 애플리케이션들만을 구동하는 반면에, 가상 머신 시스템들은 기존의 피처 리치(feature-rich) 운영체제를 재사용함으로써 주요 애플리케이션들을 구동할 수 있었기 때문에 확산되었다. 라이브러리 OS 디자인에 의해 제공되는 성능의 이점들은 레거시(legacy) 호환성에 대한 필요를 극복하지 못하였다.
이하에서는 개시된 발명 대상의 일부 양태들에 대한 기초적 이해를 제공하기 위해 간략화된 요약을 제시한다. 이 요약은 광범위한 개괄이 아니다. 그것은 주요/결정적 구성요소들을 식별하거나 청구된 발명 대상의 범위를 정확히 서술하도록 의도된 것이 아니다. 그 유일한 목적은 나중에 제시되는 보다 상세한 설명에 대한 서두로서 몇몇 개념들을 단순화된 형식으로 제시하는 것이다.
간단히 설명하면, 주제 개시는 라이브러리 운영체제를 이용한 애플리케이션 호환성에 관한 것이다. 애플리케이션들은 호환 가능한 라이브러리 운영체제들에 결합될 수 있다. 라이브러리 운영체제는 애플리케이션 호환성을 파괴할 가능성이 가장 많은 운영체제의 일부를 캡슐화할 수 있으며 호스트 운영체제의 상위에서 운영될 수 있다. 라이브러리 운영체제들은 호스트 운영체제의 버전보다 낮거나 그와 같거나 높은 버전을 가질 수 있다. 그에 따라, 애플리케이션을 적절한 라이브러리 운영체제에 결합함으로써 하위 및 상위 호환성이 가능하게 된다.
상기 관련 목적의 달성을 위해, 이하의 설명 및 첨부된 도면과 관련하여 청구된 발명 대상의 소정의 예시적 양태들이 여기에 기술된다. 이 양태들은 발명의 대상이 실시될 수 있으며 청구된 발명 대상의 범위 안에 있도록 의도되는 다양한 방식들을 나타낸다. 도면과 연계하여 고려되는 이하의 상세한 설명으로부터 기타의 이점 및 신규한 특징이 자명해질 수 있다.
도 1은 애플리케이션 호환성을 돕는 시스템의 블록도이다.
도 2는 전형적인 라이브러리 운영체제 구조의 블록도이다.
도 3은 애플리케이션 호환성을 돕는 시스템의 블록도이다.
도 4는 호환성을 돕는 방법의 흐름도이다.
도 5는 호스트 운영체제 교체 방법의 흐름도이다.
도 6은 본 개시의 양태들에 대한 적절한 운영 환경을 예시한 개략적 블록도이다.
운영 시스템은 애플리케이션 프로그램 또는 간단히 애플리케이션이 컴퓨터 하드웨어와 상호작용할 수 있게 하기 위해 애플리케이션과 하드웨어 사이에 인터페이스를 제공한다. 애플리케이션들이 특정 운영체제를 타깃으로 하도록 개발된다. 그러나, 다양한 운영 체제들은 다양한 출시물들(예를 들어, 윈도우즈 비스타, 윈도우즈 7, 다른 서비스 팩들...)을 통해 변화하며, 그 결과 애플리케이션들과의 호환성 유지가 중대한 과제이다. 예를 들어, 운영체제의 버전 1에 대한 애플리케이션이 개발되며 컴퓨터가 버전 2로 업데이트되는 경우, 애플리케이션은 더 이상 올바른 방식으로 작동하거나 기능을 하지 않을 수도 있다. 운영 체제 판매자들이 호환성을 유지하는 데 상당한 자원들을 소모하지만, 각각의 운영체제 출시물은 불가피하게 많은 수의 오작동 애플리케이션들을 발생시킨다. 이것은 특히, 많은 중요한 업종(line-of-business(LOB)) 애플리케이션들이 새로운 운영체제 출시물에 의해 오작동되는 경우 기업들에게 부담이 된다.
호환성 문제를 처리하기 위한 하나의 방식은 가상 머신 기술을 이용하는 것이다. 서로 다른 운영체제들이 별개의 가상 머신들 안에서 동시에 운영될 수 있으며, 애플리케이션들은 호한가능한 가상 머신 안에서 구동될 수 있다. 여기서, 애플리케이션들은 특정 풀-피처(full-featured) 운영체제와 함께 단일 유닛 안에 패키징되며, 따라서 애플리케이션들은 가상 머신이 작동하는 호스트 운영체제와 무관하게 상기 패키징된 운영체제 상에서 항상 구동될 것이다. 또한, 전적으로 별개인 운영체제 사본을 실행한다는 엄격한 성능 및 자원 부담이 존재한다. 실제로, 소비자 장치는 한 번에 하나나 두 개의 가상 머신들만을 실행할 수 있으며, 이것이 많은 상이한 애플리케이션들을 실행하는 것을 어렵게 만든다.
이하의 상세 내용은 일반적으로 라이브러리 운영체제들과의 애플리케이션 호환성에 관한 것이다. 라이브러리 운영체제의 사용은 약간의 오버헤드 및 성능 비용으로 가상 머신 기술의 동일한 이점들을 성취할 수 있다. 또한, 종래에 행하여지는 것과 같이 애플리케이션이 운영체제와 함께 패키징될 필요가 없다. 그보다 애플리케이션은 특정 운영체제나 그것의 버전에 대한 견고한 종속성이 존재할지라도 운영체제와 별개로 패키징될 수 있다. 그 결과, 별개의 운영체제 버전 인스턴스들 상에서 다양한 서로 다른 애플리케이션들을 실행하는 것이 가능하다.
보다 구체적으로, 애플리케이션은 애플리케이션 호환성을 파괴할 가능성이 높은 운영체제의 일부를 캡슐화하는 호환 가능한 라이브러리 운영체제에 결합될 수 있다. 일 실시예에서 복수의 라이브러리 운영 체제들이 호스트 운영 시스템과 함께 패키징될 수 있다. 애플리케이션의 초기 실행시, 호환 가능한 라이브러리 운영체제가 그 애플리케이션에 결합되어 그 애플리케이션의 어드레스 공간 안으로 로딩될 수 있다. 호환 가능한 라이브러리 운영체제는 호스트 운영체제의 버전보다 낮거나 그와 같거나 높은 버전을 가질 수 있다. 결과적으로, 무엇보다 운영체제의 앞선, 또는 옛 버전과의 하위(backward) 호환성(호환성이라 알려짐) 및 운영체제의 나중 버전과의 상위(forward) 호환성(역호환성이라 알려짐)이 가능하게 된다.
이제 본 개시의 다양한 양태들이 전체적으로 유사 참조부호가 유사하거나 대응하는 구성요소들을 나타내는 첨부된 도면들을 참조하여 보다 상세히 기술될 것이다. 그러나, 도면들 및 그와 관련된 상세한 설명이 청구된 발명 대상을 개시된 특정 형태로 한정하고자 의도하는 것이 아니라는 것을 알아야 한다. 그보다 상기 의도는 청구된 발명 대상의 개념 및 범위 안에 들어오는 모든 변형, 균등물, 및 대안을 포괄하는 데 있다.
최초로 도 1을 참조하면, 애플리케이션 호환성을 돕는 시스템(100)이 예시된다. 시스템(100)은 선택 요소(110) 및 결합(bind) 요소(120)를 포함한다. 선택 요소(110)는 다른 무엇보다 소프트웨어 애플리케이션, 또는 단순히 애플리케이션, 및/또는 애플리케이션에 관한 정보를 수신, 검색, 또는 획득하거나 포착한다. 또한 선택 요소(110)는 예컨대 애플리케이션 및/또는 애플리케이션에 관한 정보에 기반하여 애플리케이션과 호환되는 라이브러리 운영 시스템을 식별, 결정, 또는 추정하도록 구성된다. 결합 요소(120)는 애플리케이션을 선택 요소(110)에 의해 식별된 호환 가능한 라이브러리 운영 체제와 결합(바인드)시키거나 다시 말해 연관시키도록 구성된다. 한 양태에 따라, 적어도 결합 요소(120)와 결합된 기능이 런타임에 수행될 수 있다. 예를 들어, 애플리케이션의 초기 실행 시, 애플리케이션은 호환 가능한 라이브러리 운영체제와 동적으로 결합될 수 있다.
선택 요소(110)는 호환 가능한 라이브러리 운영체제를 다양한 방식에 따라 선택할 수 있다. 일 실시예에서 애플리케이션은 호환 가능한 운영체제 및/또는 라이브러리 운영체제를 식별하는 매니페스트(manifest) 파일이나 유사 구조를 포함하거나 그와 연관될 수 있다. 이 경우, 선택 요소(110)는 매니페스트 파일로부터 호환 가능한 라이브러리 운영체제를 식별하도록 구성될 수 있다. 다른 실시예에서, 애플리케이션 및 관련 기능이 분석될 수 있고 그에 기반하여 호환 가능한 라이브러리 운영체제가 결정되거나 추정될 수 있다. 또 다른 실시예에서, 선택 요소(110)는 어떤 라이브러리 운영체제가 애플리케이션과 호환 가능한지에 관해 애플리케이션 사용자, 관리자, 또는 다른 개인에게 질의하도록 구성될 수 있다. 한 특정 예에서, 복수의 라이브러리 운영체제들이 시험될 수 있으며 사용자는 어느 라이브러리 운영체제가 가장 잘 동작했는지를 식별할 수 있다. 또한 애플리케이션과 호환 가능한 라이브러리 운영체제를 추정하고 애플리케이션 사용자가 상기 추정된 호환 가능한 라이브러리 운영체제를 승인하거나 거부할 수 있게 하는 것과 같은 복합 접근 방법이 사용될 수 있다. 더 나아가, 애플리케이션이 하나를 넘는 운영체제와 호환되거나 어느 정도까지 호환될 수 있다. 어떤 이벤트에서, 선택 요소(110)는 하나 이상의 호환 가능한 라이브러리 운영체제들을 식별할 수 있다.
위에서 언급한 바와 같이 결합 요소(120)는 애플리케이션을 호환 가능한 라이브러리 운영체제에 결합하도록 구성된다. 예를 들어, 이용 가능한 라이브러리 운영체제들로부터 호환 가능한 운영체제가 애플리케이션과 결합된다. 이어서, 그 라이브러리 운영체제가 예컨대 애플리케이션의 어드레스 공간 안으로 로딩될 수 있다. 그러한 로딩 역시 결합 요소(120)나 어떤 다른 요소에 의해 런타임에 수행될 수 있다.
한 양태에 따르면, 라이브러리 운영체제는 애플리케이션 호환성을 파괴할 가능성이 높은 운영체제의 일부를 캡슐화할 수 있다. 결과적으로 라이브러리 운영체제들은 애플리케이션 호환성 문제들을 해결하기 위한 메커니즘을 제공한다. 특히 라이브러리 운영체제들은 호스트 운영체제의 상위에서 동작할 수 있으며 필요 시 애플리케이션들에 의해 이용될 수 있다. 어떤 맥락에서는 각각의 애플리케이션이 선택한 라이브러리 운영체제를 통해 실행됨으로써 호환성 문제를 없앨 수 있다.
그러한 라이브러리 운영체제는 종래의 라이브러리 운영체제를 특정 방식으로 변경함으로써 생성될 수 있다. 보다 상세하게 말하면, 애플리케이션 서비스들(예를 들어, 프레임워크들, 렌더링 엔진들, 일반 사용자 인터페이스 콘트롤들, 언어 런타임들...)이 라이브러리 운영체제 안에 패키징될 수 있으며 사용자 서비스들(예를 들어, 그래픽 사용자 인터페이스, 클립보드, 서치 인덱서들...) 및 하드웨어 서비스들(예를 들어, OS 커널, 장치 드라이버들, 파일 시스템들...)은 호스트 운영체제와 함께 패키징된다. 일례에서 전체 운영체제 사이즈의 1750분의 1인 라이브러리 운영체제가 생성될 수 있다. 이러한 라이브러리 운영체제는 하위 레벨 하드웨어 앱스트랙션들(abstractions)을 애플리케이션들에 노출시킴으로써 애플리케이션 맞춤화된 성능 개선을 제공하는 것을 목표로 했던 이전 라이브러리 운영체제 디자인들과 구분된다. 그러한 이전 디자인들은 애플리케이션들에 페이지 테이블들, 네트워크 패킷들, 및 디스크 블록들과 같은 하드웨어 자원들의 세분된 맞춤 제어를 제공한다. 여기서 사용되는 라이브러리 운영체제는 다른 무엇보다 그 목적에 있어 상이하며 그에 따라 애플리케이션 호환성을 돕는 상위 레벨 앱스트랙션들을 제공한다.
도 2를 살펴보면, 전형적인 라이브러리 운영체제 구조(200)가 예시된다. 도시된 것과 같이, 구조(200)는 컴퓨터 상에 인스톨된 기본 운영체제인 호스트 운영체제(210)를 포함한다. 대부분의 경우 호스트 운영체제(210)가 유일한 운영체제이다. 여기서는 그러나 몇몇 라이브러리 운영체제들(220)(라이브러리 운영체제1 - 라이브러리 운영체제M, 여기서 M은 양의 정수)은 호스트 운영체제(210) 상위 혹은 그 안에서 동작하는 게스트들이다. 다수의 애플리케이션들(230)(애플리케이션1- 애플리케이션N, 여기서 N은 양의 정수)이 호환 가능한 라이브러리 운영체제들(220) 상에서 실행된다. 복수의 라이브러리 운영체제들(220) 각각은 애플리케이션이 의존하고 애플리케이션의 어드레스 공간 안에서 라이브러리로서 구동될 수 있는 운영체제의 특성(예를 들어, 애플리케이션이 구축되는 애플리케이션 프로그래밍 인터페이스들 및 애플리케이션 의미구조들(시멘틱스))을 캡처한다. 그에 따라 라이브러리 운영체제는 애플리케이션 호환성을 파괴할 가능성이 큰 운영체제의 일부(예를 들어, 애플리케이션 서비스들)을 캡슐화할 수 있다.
구조(200)는 종래의 가상 머신 구조와 유사하나, 전체 운영체제를 사용하기 보다 라이브러리 운영체제가 사용된다. 따라서 자원 오버헤드가 극적으로 감소된다. 예를 들어 운영체제의 전적으로 별개인 사본을 실행하기 위해 512MB의 RAM(random access memory) 및 5GB의 디스크 공간을 소비하기보다 16MB의 RAM과 64MB의 디스크 공간 미만이 라이브러리 운영체제에 의해 소비될 수 있다. 실제로 통상적 소비자 장치는 전체 종래 운영체제의 하나나 두 개의 사본들만을 실행할 수 있으며, 이것이 많은 상이한 애플리케이션들의 실행을 어렵게 한다. 그러나 종래 운영체제에 대한 라이브러리 운영체제 대체를 통해, 다양한 버전의 운영체제를 필요로하는 많은 상이한 애플리케이션들이 매우 쉽게 지원된다.
라이브러리 운영체제(220)는 호스트 운영체제(210)의 버전보다 낮거나 그와 같거나 높은 버전을 가질 수 있다. 그에 따라 라이브러리 운영체제들을 이용하는 애플리케이션들에 대한 하위 및 상위 호환이 가능하게 된다.
일 실시예에 따르면, 호스트 운영체제(210)는 하나 이상의 라이브러리 운영체제들(220)과 함께 패키징될 수 있다. 다시 말하면, 호스트 운영체제(210)는 예컨대 라이브러리 운영체제 스토어(212) 안에 하나 이상의 라이브러리 운영체제들의 집합을 포함할 수 있다. 예를 들어, 다른 무엇보다 라이브러리 운영체제들은 호스트 운영체제와 관련하여 디스크 상에서 병렬 디렉토리들 안에 저장될 수 있다. 애플리케이션은 호스트 운영체제(210)와 관련하여 포함된 라이브러리 운영체제들 중 하나와 결합될 수 있다. 그러한 운영체제는 계속해서 애플리케이션의 어드레스 공간 안에 로딩되거나 복제될 수 있다. 이것이 하위 호환성(호환성이라고도 알려진)을 처리하는데, 이는 호스트 운영체제(210)가 이전 혹은 구 라이브러리 운영체제들의 적어도 한 부분집합을 포함할 수 있기 때문이다. 예를 들어, 이전 버전의 운영체제를 위해 설계된 애플리케이션은 가장 최신 버전의 운영체제와 함께 패키징된 라이브러리 운영체제를 사용함으로써 가장 최신 버전의 운영체제 상에서 구동될 수 있다. 상위 호환성(역 호환성이라도 알려진) 역시 처리된다.
이전 버전 운영체제에 대해 작성되었던 애플리케이션을 보다 최신 버전의 운영체제 상에서 실행하는 것과 반대로, 보다 최신 운영체제 버전에 대해 작성된 애플리케이션 또한 이전 버전의 운영체제 상에서 실행될 수 있다. 통상적으로, 애플리케이션들은 애플리케이션 프로그래밍 인터페이스들(APIs)을 통해 특정 버전의 호스트 운영체제와 결부된다. 그에 따라 개발자들은 상당수의 소비자들이 새 운영체제로 업그레이드하지 못했을 때 새 호스트 운영체제를 타깃으로 할지 여부에 대한 딜레마와 마주친다. 그 결과, 개발자들이 새 운영체제를 타깃으로 하는 API들을 채택할 때 운영체제가 새 운영체제를 타깃으로 하는 것을 정당화할 만큼 충분한 사용자들을 얻을 때까지(일반적으로 인스톨드 베이스(installed base)라 칭함) 통상적으로 시간이 경과된다. 라이브러리 운영체제들을 활용함으로써, 개발자들은 최신 운영체제를 타깃으로 하며, 애플리케이션을 한 레벨 다운하여 또는 다시 말해 구버전 운영체제를 구동하는 컴퓨터 상에서 실행할 수 있다. 호환성 문제들이 라이브러리 운영체제 안에 있기 때문에, 새 버전의 운영체제와 관련하여 라이브러리 운영체제를 사용할 수 있으며, 그 결과 애플리케이션이 가장 최신의 API들을 타깃으로 할 수 있다. 일례로, 보다 새로운 라이브러리 OS 안에 최신 운영체제 특성들의 타깃화를 가능하게 하기 위한 라이센싱 비용이 부과될 수 있다.
또한 호스트 및 애플리케이션이 각자 진화하는 것을 허용함으로써 호스트 운영체제의 변화가 애플리케이션들을 중단하지 않아도 된다. 예를 들어 호스트 운영체제가 새 버전으로 업그레이드되는 것을 가정할 수 있다. 업그레이드 시점에, 컴퓨터에 인스톨된 애플리케이션들은 이전 버전의 운영체제와 매칭하는 라이브러리 운영체제 상에서 실행되도록 재구성될 수 있다.
일 실시예에 따르면, 애플리케이션(230) 및 라이브러리 운영체제(220)의 각각의 조합이 운영체제 프로세스 어드레스 공간으로부터 구축된 경량의 보안 분리 컨테이너인 피코프로세스(240) 안에서 호스트 운영체제(210)의 풀 서비스들에 대한 액세스 없이 동작될 수 있다. 다시 말해, 애플리케이션들은 불량 작동 애플리케이션이 다른 애플리케이션들이나 그 호스트를 손상시킬 수 없도록 샌드박스화될 수 있다. 피코프로세스 내에서 실행되는 코드는 하드웨어 가상 머신들의 디자인 패턴들을 따라 도 2의 화살표로 나타낸 호스트 운영체제(210)와의 인터페이스를 이용할 수 있다. 인터페이스 호출들(calls)이 기능상 종래의 하드웨어 가상 머신들과 관련하여 하이퍼바이저나 가상 머신 모니터와 유사할 수 있는 호스트 운영체제(210)의 보안 모니터 요소(미도시)에 의해 서비스될 수 있다.
라이브러리 운영체제들이 호스트 운영체제들과 함께 예컨대 라이브러리 운영체제 스토어(212) 안에 패키징되는 경우, 관리가 수월해진다. 호스트 운영체제(210)를 업데이트하는 데 사용되는 메커니즘들이 호스트 운영체제와 함께 패키징된 라이브러리 운영체제들을 업데이트하는 데 활용될 수 있다. 예를 들어, 라이브러리 운영체제는 호스트 운영체제(210) 내 업데이트 설비에 의해 보안 업데이트 및 정확도 해법을 위해 개조될 수 있다. 더 나아가, 라이브러리 운영체제들을 런타임에 애플리케이션들과 결합시킴으로써, 최신 운영체제를 그것의 어떤 다른 버전과 결합하기 보다 그 최신 운영체제가 사용될 수 있다.
또한, 호스트 운영체제(210)를 업데이트하는 데 사용되는 메커니즘들이 호스트 운영체제가 소비자들에게 발송 또는 다시 말해 배달된 이후 새로운 라이브러리 운영체제들을 설치하는 데 사용될 수 있다. 예를 들어, 호스트 운영체제의 서비스 시, 새 버전의 라이브러리 운영체제가 사용가능한 경우, 새 라이브러리 운영체제가 획득되어 저장될 수 있다.
도 3은 애플리케이션 호환성을 돕는 시스템(300)을 예시한다. 도 1의 시스템(100)과 유사하게, 시스템(300)은 앞서 기술한 바와 같이 선택 요소(110) 및 결합 요소(120)를 포함한다. 간단히, 선택 요소(110)는 애플리케이션과 호환 가능한 라이브러리 운영체제를 선택하거나 식별하도록 구성되며, 결합 요소(120)는 상기 애플리케이션을 상기 라이브러리 운영체제에 결합하도록 구성된다. 앞서 시스템(100)은 애플리케이션에 대한 필수 라이브러리 운영체제의 내부적 이용 가능성을 가정하였다. 그러나 어떤 경우 그러한 것은 사실이 아닐 수 있다. 획득 요소(320)가 이러한 문제에 대처한다. 특히 획득 요소(320)는 예컨대 공개적으로 또는 다른 경우 액세스 가능한 웹사이트로부터 라이브러리 운영체제를 획득하도록 구성될 수 있다. 하나의 특정한 예에서, 획득 요소(320)는 호스트 운영체제 업데이트 메커니즘을 통해 라이브러리 운영체제의 다운로드를 유발하도록 구성될 수 있다. 요컨데, 선택 요소(110)가 시스템 상에 존재하지 않는 애플리케이션에 대한 라이브러리 운영체제를 식별한다면, 결합 요소(120)는 획득 요소(320)를 통해 라이브러리 운영체제를 획득하도록 구성된다.
다양한 라이브러리 운영체제들 및 호스트 운영체제가 컴퓨터 상에 공존할 수 있다. 예로서, 호스트 운영체제와 함께 라이브러리 운영체제들의 한 가지 가능한 레이아웃을 고려할 수 있다:
Figure pct00001
이 예에서 "System32" 디렉토리 트리는 64 비트 호스트 운영체제를 포함한다. 디렉토리 트리 "SysWOW64"는 64 비트 호스트 운영체제 상에서 실행되는 호스트 운영체제의 32 비트 파일들을 포함한다. 나머지 디렉토리 트리들은 이전 운영체제(Win7SPl, Win7RTM, VistaSP2, VistaSP1, VistaRTM, WinXPSP3)나 이후 운영체제(Win8BUILD)로부터 라이브러리 운영체제들을 포함한다.
상술한 시스템, 구조, 환경 등은 여러 구성요소들 간 상호작용과 관련하여 기술되었다. 그러한 시스템들과 구성요소들이 상기 내용의 다양한 치환 및 조합에 따라 그러한 구성요소들이나 그 안에 특정된 서브 구성요소들, 특정 구성요소들이나 서브 구성요소들의 일부, 및/또는 추가 구성요소들을 포함할 수 있다는 것을 예상할 수 있다. 서브 구성요소들은 또한 부모 구성요소들 안에 포함되기 보다 다른 구성요소들과 통신 가능하게 연결되는 구성요소들로서 구현될 수 있다. 더 나아가 하나 이상의 구성요소들 및/또는 서브 구성요소들은 집합적 기능을 제공하기 위해 하나의 구성요소로 결합될 수 있다. 시스템들, 구성요소들 및/또는 서브 구성요소들 사이의 통신은 푸쉬 및/또는 풀 모델에 따라 수행될 수 있다. 구성요소들은 여기에 간결성을 위해 특정하여 기술되지는 않았지만 당업자라면 알 수 있는 한 개 이상의 다른 구성요소들과 상호작용할 수도 있다.
또한 상기 개시된 시스템들 및 이하의 방법들 중 다양한 부분들이 인공지능, 기계 학습, 또는 지식이나 규칙 기반 구성요소들, 서브 구성요소들, 프로세스들, 수단들, 방법론들, 또는 메커니즘들을 포함하거나 활용할 수 있다(예를 들어, 벡터 머신들, 신경망, 전문가 시스템들, 베이지안 신뢰 망들, 퍼지 로직, 데이터 융합 엔진, 분류기들...을 지원함). 그러한 구성요소들은 특히 수행되는 소정 메커니즘들이나 프로세스들을 자동화할 수 있고 그에 따라 시스템들 및 방법들의 일부가 보다 적응적이고 효율적이며 지능적이 되게 할 수 있다. 비한정적 예로서, 선택 구성요소(110)는 호환 가능한 라이브러리 운영체제를 결정하기 위해 그러한 메커니즘을 활용할 수 있다.
상술한 예시적 시스템들에 비추어, 개시된 발명 대상에 따라 구현될 수 있는 방법론들이 도 4의 흐름도를 참조하여 보다 잘 이해될 수 있다. 설명의 단순함을 목적으로 방법론들이 일련의 블록들로서 도시되어 기술되지만, 청구되는 발명 대상은 이 블록들의 순서에 국한되지 않으며 일부 블록들은 여기 도시되고 기술된 것과 다른 순서 및/또는 다른 블록들과 동시에 발생할 수 있다는 것을 이해하고 예상해야 한다. 또한, 도시된 블록들 모두가 이후 기술되는 방법들을 구현하는 데에 요구되지 않을 수 있다.
도 4를 참조하면, 호환성을 돕는 방법(400)이 예시된다. 참조부호 410에서, 애플리케이션에 대해 호환 가능한 라이브러리 운영체제가 결정되며, 여기서 라이브러리 운영체제들은 애플리케이션 호환성을 파괴할 가능성이 높은 종래의 운영체제의 일부를 캡슐화한다. 일례에서 라이브러리 운영체제는 애플리케이션과 연관된 매니페스트 파일로부터 식별되고 개인(예를 들어, 엔드 유저, 프로그래머, 관리자...)으로부터 획득되거나 그렇지 않은 경우 애플리케이션의 분석으로부터 판단 또는 추정될 수 있다. 참조부호 420에서, 결정된 라이브러리 운영체제가 이용 가능한지 여부에 대한 판단이 이루어진다. 라이브러리 운영체제가 컴퓨터 상에서 내부적으로 이용 가능하지 않은 경우("아니오") 라이브러리 운영체제는 430에서 원격 위치로부터 획득된다. 그렇지 않고, 라이브러리 운영체제가 이용 가능한 경우("예") 방법(400)은 애플리케이션이 라이브러리 운영체제에 결합되는 참조부호 440에서 계속된다. 여기에 도시되지는 않았으나 애플리케이션이 원격으로 라이브러리 운영체제를 획득하기 보다 다수의 운영체제들과 호환되는 경우, 다른 로컬 라이브러리 운영체제들 중 하나가 사용될 수 있다. 애플리케이션의 초기 실행 시, 결합된 라이브러리 체제가 애플리케이션의 어드레스 공간 안으로 로딩될 수 있다.
도 5는 호스트 운영체제 교체 방법(500)의 흐름도이다. 참조부호 510에서 애플리케이션은 호스트 운영체제로부터 동일 버전의 라이브러리 운영체제로 재결합된다. 참조부호 520에서 호스트 운영체제가 교체된다. 이런 방식으로 애플리케이션들을 호환 가능한 라이브러리 운영체제로 이동함으로써 애플리케이션을 중지하지 않고 호스트 운영체제가 업그레이드/업데이트될 수 있다.
여기 사용된 용어들인 "구성요소(요소)", "시스템", "구조" 및 그들의 다양한 형태들(예를 들어, 구성요소들, 시스템들, 서브 시스템들...)은 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어인 컴퓨터 관련 개체를 지칭하도록 의도된다. 예를 들어, 어떤 구성요소는 비한정적인 것으로서, 프로세서 상에 실행되는 프로세스, 프로세서, 오브젝트, 인스턴스, 실행파일, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있다. 예로서 컴퓨터 상에서 실행되는 애플리케이션 및 컴퓨터 둘 모두가 구성요소가 될 수 있다. 한 개 이상의 구성요소가 프로세스 및/또는 실행 스레드 안에 상주할 수 있으며, 하나의 구성요소가 한 대의 컴퓨터 상에 있도록 제한되고/거나 둘 이상의 컴퓨터들 사이에 분산될 수 있다.
"예시적인"이라는 말 또는 그것의 다양한 형태들은 여기에서 예, 경우, 또는 예시로서 기능한다는 것을 의미하기 위해 사용된다. 여기에 "예시적인" 것이라고 기술된 어떤 양태나 디자인이 반드시 다른 양태들이나 디자인들에 비해 바람직하거나 유리한 것으로 간주되는 것은 아니다. 또한, 예들은 단지 간결성 및 이해를 목적으로 주어지는 것으로 청구된 발명 대상이나 이 개시의 관련 부분들을 어떤 방식으로든 제한 또는 한정하고자 의도된 것이 아니다. 가변하는 범주에 대한 수많은 추가적 혹은 대안적 예들이 제공되었을 수 있으나 간결성을 위해 생략되었을 수 있다는 것을 알아야 한다.
상세한 설명과 부가된 청구범위에 사용되는 것과 같은 접속사 "또는"은 달리 특정되거나 문맥으로부터 명백한 것이 아니라면 배타적 "또는"이라기 보다는 포괄적 "또는"을 의미하도록 의도된다. 달리 말하면, "'X' 또는 'Y'"는 "X" 및 "Y"의 어떤 포괄적 치환들을 의미하는 것으로 의도된다. 예를 들어 "'A'가 'X'를 이용하거나", "'A'가 'Y'를 이용하거나", "'A'가 'A' 및 'B' 모두를 이용하는" 경우, "'A'는 'X'나 'Y'를 이용한다"는 것이 상술한 예들 중 어느 하나의 전제하에서 만족된다.
여기 사용된 바와 같은 "추정" 또는 "추정한다"는 용어는 일반적으로 이벤트들 및/또는 데이터를 통해 캡처된 것과 같은 일련의 관찰로부터 시스템, 환경, 및/또는 사용자의 상태들에 대한 추론의 과정 또는 추정하는 상태들을 나타낸다. 추정은 특정 정황이나 액션을 식별하는 데 사용되거나, 예컨대 상태들에 대한 확률분포를 생성할 수 있다. 추정은 확률적일 수 있다-즉, 데이터 및 이벤트들의 고려를 기반으로 해당 상태들에 대한 확률 분포의 계산이다. 추정은 또한 일련의 이벤트들 및/또는 데이터로부터 상위 레벨 이벤트들을 구성하기 위해 사용되는 기법들을 나타낸다. 그러한 추정은 이벤트들이 밀접한 시간적 근접성에 있어 상관적인지 그렇지 않은지 여부 및 이벤트들 및 데이터가 하나나 여러 이벤트 및 데이터 소스들로부터 나오는지 여부와 무관하게 일련의 관찰된 이벤트들 및/또는 저장된 이벤트 데이터로부터 새로운 이벤트들이나 액션들의 구조를 파생한다. 다양한 분류 방식들 및/또는 시스템들(예를 들어, 벡터 머신들, 신경망들, 전문가 시스템들, 베이지언 신뢰 네트워크들, 퍼지 로직, 데이터 융합 엔진들...을 지원)이 청구된 발명 대상과 관련한 자동화 및/또는 추정된 액션의 수행과 관련하여 사용될 수 있다.
또한, "포함한다", "내포한다", "가진다", "가지는"이나 그 변형 용어가 상세한 설명이나 청구범위에 사용되는 한, 그 용어는 "구비한다"는 용어가 "구비한다"가 청구범위에서 접속사로서 사용될 때 해석되는 것과 비슷한 방식으로 포괄적인 것으로 의도된다.
청구된 발명 대상에 대한 정황을 제공하기 위해 도 6 및 이하의 논의는 본 발명 대상의 다양한 양태들이 구현될 수 있는 적절한 환경에 대한 간략하고 일반적인 설명을 제공하고자 한다. 그러나 그 적절한 환경은 다만 예일 뿐으로 사용 혹은 기능의 범주에 대한 어떠한 한정사항을 제안하고자 하는 것이 아니다.
상기 개시된 시스템 및 방법들은 하나 이상의 컴퓨터들 상에서 실행되는 프로그램의 컴퓨터 실행 가능 명령어들의 일반적 맥락에 따라 기술될 수 있지만, 당업자는 양태들이 다른 프로그램 모듈들 등과의 조합을 통해 구현될 수도 있다는 것을 인지할 수 있을 것이다. 일반적으로 프로그램 모듈은 다른 무엇보다 특정 작업을 수행하거나 특정한 추상적 데이터 유형들을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조들을 포함한다. 또한 당업자는 상기 시스템들 및 방법들이 단일 프로세서, 다중 프로세서 또는 멀티 코어 프로세서 컴퓨터 시스템들, 미니 컴퓨팅 장치들, 메인프레임 컴퓨터들 및 퍼스널 컴퓨터들, 핸드헬드 컴퓨팅 장치들(예를 들어, PDA(personal digital assistant), 전화기, 시계...), 마이크로프로세서 기반 혹은 프로그래머블 소비자나 산업용 전자기기 등을 포함하는 다양한 컴퓨터 시스템 구성들을 이용하여 실시될 수 있다는 것을 예상할 수 있을 것이다. 양태들은 또한, 작업들이 통신 네트워크를 통해 링크되는 원격 프로세싱 장치들에 의해 수행되는 분산형 컴퓨팅 환경 안에서 실시될 수 있다. 그러나 청구된 발명 대상의 전체 양태들이 아닌 일부가 단독형 컴퓨터들 상에서 실시될 수 있다. 분산형 컴퓨팅 환경에서 프로그램 모듈들은 로컬 및/또는 원격 컴퓨터 저장 장치들 중 하나 혹은 둘 모두에 위치될 수 있다.
도 6을 참조하면, 전형적 범용 컴퓨터(610)나 컴퓨팅 장치(예를 들어, 데스크탑, 랩탑, 서버, 핸드헬드, 프로그래머블 소비자나 산업용 전자기기들, 세톱박스, 게임 시스템...)이 도시된다. 컴퓨터(610)는 하나 이상의 프로세서(들)(620), 메모리(630), 시스템 버스(640), 대량 스토리지(650) 및 하나 이상의 인터페이스 요소들(670)을 포함한다. 시스템 버스(640)는 적어도 상기 시스템 구성요소들을 통신 가능하게 연결한다. 그러나 가장 단순한 형태로서 컴퓨터(610)가 메모리(630)에 연결되어 메모리(630)에 저장된 다양한 컴퓨터 실행 가능 액션들, 명령어들 및/또는 컴포넌트들을 실행하는 하나 이상의 프로세서들(620)을 포함할 수 있다.
프로세서(들)(620)은 여기 기술된 기능들을 수행하도록 설계된 범용 프로세서, DSP(digital signal processor), ASIC(application specific integrated circuit), FPGA(field programmable gate array) 또는 다른 프로그래머블 로직 장치, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 이들의 어떤 조합을 이용하여 구현될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있으나, 대안적으로 이 프로세서가 임의의 프로세서, 컨트롤러, 마이크로컨트롤러, 또는 상태 머신일 수 있다. 프로세서(들)(620)은 또한 컴퓨팅 장치들의 조합, 예컨대 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, 멀티 코어 프로세서들, DSP 코어와 연계한 하나 이상의 마이크로프로세서들, 또는 어떤 다른 그러한 구성으로서 구현될 수 있다.
컴퓨터(610)는 컴퓨터(610)의 제어가 청구된 발명 대상의 하나 이상의 양태들을 구현하는 것을 돕는 다양한 컴퓨터 판독가능 매체를 포함하거나 그렇지 않은 경우 그와 상호동작할 수 있다. 컴퓨터 판독가능 매체는 컴퓨터(610)에 의해 액세스될 수 있는 어떤 가용 매체일 수 있으며, 휘발성 및 비휘발성 매체와 착탈형 및 비착탈형 매체를 포함한다. 한정이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈이나 기타 데이터 같은 정보의 저장을 위해 어떤 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈형 및 비착탈형 매체를 포함한다. 컴퓨터 저장 매체는 비한정적으로 메모리 소자들(예를 들어, RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory)...), 자기 저장 소자들(예를 들어, 하드 디스크, 플로피 디스크, 카세트, 테이프...), 광 디스크들(예를 들어, 컴팩트 디스크(CD), DVD(digital versatile disk)...), 및 고체 상태 소자들(예를 들어, 고체 상태 드라이브(SSD), 플래시 메모리 드라이브(예를 들어, 카드, 스틱, 키 드라이브...)...) 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(610)에 의해 액세스될 수 있는 모든 다른 매체를 포함한다.
통신 매체는 통상적으로 반송파나 다른 전송 메커니즘 같은 변조된 데이터 신호를 통해 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 구현하며 어떤 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 안에 정보를 인코딩하기 위한 방식으로 세팅되거나 변경되는 신호의 특성들 중 한 개 이상을 가지는 신호를 의미한다. 한정하는 것이 아닌 예로서, 통신 매체는 유선 네트워크나 직접 유선 연결 같은 유선 매체, 및 청각, RF, 적외선 및 다른 무선 매체 같은 무선 매체를 포함한다. 위의 것 중 어느 조합 역시 컴퓨터 판독가능 매체의 범위 안에 포함될 수 있을 것이다.
메모리(630) 및 대량 스토리지(650)는 컴퓨터 판독가능 저장 매체의 예들이다. 컴퓨팅 장치의 정확한 구성 및 타입에 따라, 메모리(630)가 (RAM과 같은) 휘발성이거나, (ROM, 플래시 메모리...와 같은) 비휘발성이거나 이들 둘의 어떤 조합일 수 있다. 예로서, 시동 도중과 같이 컴퓨터(610) 내에서 구성요소들 사이에 정보를 전송하기 위한 기본 루틴들을 포함하는 기본 입출력 시스템(BIOS)이 비휘발성 메모리에 저장될 수 있는 한편, 휘발성 메모리는 다른 무엇보다 프로세서(들)(620)에 의한 처리를 돕기 위한 외부 캐시 메모리로서 기능할 수 있다.
대량 스토리지(650)는 메모리(630)에 비해 많은 양의 데이터를 저장하기 위한 착탈형/비착탈형 휘발성/비휘발성 컴퓨터 스토리지 매체를 포함한다. 예를 들어 대량 스토리지(650)는 비한정적으로 자기나 광 디스크 드라이브, 플로피 디스크 드라이브, 플래시 메모리, 고체 상태 드라이브, 또는 메모리 스틱과 같은 하나 이상의 소자들을 포함한다.
메모리(630) 및 대량 스토리지(650)는 운영체제(660), 하나 이상의 애플리케이션들(662), 하나 이상의 프로그램 모듈들(664) 및 데이터(666)를 포함하거나 그 안에 저장할 수 있다. 운영체제(660)는 컴퓨터(610)의 자원들을 제어 및 할당하는 기능을 한다. 여기서 운영체제(660)는 다수의 라이브러리 운영체제들(220)을 지원할 수 있는 호스트 운영 시스템(210)에 해당할 수 있다. 애플리케이션들(662)은 시스템 및 애플리케이션 소프트웨어 중 하나 또는 둘 모두를 포함하고, 하나 이상의 액션을 수행하기 위해 메모리(630) 및/또는 대량 스토리지(650) 안에 저장된 프로그램 모듈들(664) 및 데이터(666)를 통해 운영체제(660)에 의한 자원들의 관리를 활용할 수 있다. 따라서 애플리케이션들(662)은 그에 따라 제공되는 로직에 의해 범용 컴퓨터(610)를 특수 머신으로 전환시킬 수 있다.
청구된 발명 대상의 전체나 일부는 표준 프로그래밍 및/또는 엔지니어링 기법들을 이용하여 개시된 기능을 실현하도록 컴퓨터를 제어하기 위한 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 어떤 조합을 생성하도록 구현될 수 있다. 한정이 아닌 예로서, 시스템(100) 또는 그 일부는 애플리케이션(662)이거나 그 일부를 형성할 수 있고, 하나 이상의 프로세서(들)(620)에 의해 실행 시 그 기능이 실현될 수 있는 메모리 및/또는 대량 스토리지(650)에 저장된 하나 이상의 모듈들(664) 및 데이터(666)를 포함할 수 있다.
한 특정 실시예에 따르면, 프로세서(들)(620)은 단일 집적 회로 기판 상에 하드웨어 및 소프트웨어 둘 모두를 포함하거나 달리 말해 집적하는 SOC(system on a chip) 또는 유사 구조에 해당할 수 있다. 여기서 프로세서(들)(620)은 다른 무엇보다 적어도 프로세서(들)(620) 및 메모리(630)와 유사한 하나 이상의 프로세서들 및 메모리를 포함할 수 있다. 종래의 프로세서들은 하드웨어 및 소프트웨어의 최소량을 포함할 수 있고 외부 하드웨어 및 소프트웨어를 확장방식으로 의존한다. 반대로, 프로세서의 SOC 구현방식은 보다 강력한데, 이는 그것이 그 안에 하드웨어 및 소프트웨어를 내장하여 외부 하드웨어 및 소프트웨어에 대한 의존을 최소화하거나 전혀 의존하지 않은 채 특정 기능을 이행하기 때문이다. 예를 들어 시스템(100) 및/또는 관련 기능은 SOC 구조의 하드웨어 안에 내장될 수 있다.
컴퓨터(610)는 시스템 버스(640)에 통신가능하게 연결되고 컴퓨터(610)와의 상호동작을 돕는 하나 이상의 인터페이스 요소들(670)을 또한 포함한다. 예로서, 인터페이스 요소(670)는 포트(예를 들어, 직렬, 병렬, PCMCIA, USB, 파이어 와이어(Fire Wire)...) 또는 인터페이스 카드(예를 들어, 사운드, 비디오...) 등일 수 있다. 한 전형적 구현예에서, 인터페이스 요소(670)는 사용자가 하나 이상의 입력 장치들(예를 들어, 마우스, 트랙볼, 스타일러스, 터치 패드, 키보드, 마이크, 조이스틱, 게임 패드, 위성 접시, 스캐너, 카메라, 다른 컴퓨터...와 같은 포인팅 장치)를 통해 컴퓨터(610) 안으로 명령들과 정보를 입력하게 할 수 있는 사용자 입출력 인터페이스로서 구현될 수 있다. 다른 전형적 구현예에서 인터페이스 요소(670)는 다른 무엇보다 출력을 디스플레이들(예를 들어, CRT, LCD, 플라즈마...), 스피커들, 프린터들 및/또는 다른 컴퓨터들로 제공하는 출력 주변기기 인터페이스로서 구현될 수 있다. 더 나아가 인터페이스 요소(670)는 유무선 통신 링크를 통하는 것과 같이 다른 컴퓨팅 장치들(미도시)과 통신하게 할 수 있는 네트워크 인터페이스로서 구현될 수 있다.
위에서 기술된 내용은 청구된 발명 대상의 양태들의 예들을 포함한다. 당연히 청구된 발명 대상을 기술할 목적으로 구성요소들 또는 방법들의 모든 인지 가능한 조합을 기술하는 것은 불가능하지만, 당업자는 개시된 발명 대상의 많은 추가적인 조합과 치환이 가능하다는 것을 인식할 수 있을 것이다. 따라서, 개시된 발명 대상은 첨부된 청구범위의 개념과 범위에 속하는 모든 그러한 변형, 수정 및 변경들을 포괄하도록 의도된다.

Claims (10)

  1. 호환성을 용이하게 하는 방법으로서,
    메모리에 저장된 컴퓨터 실행 가능 명령어를 실행하도록 구성된 적어도 하나의 프로세서를 사용하여 애플리케이션 호환성을 파괴할 가능성이 있는 운영체제의 일부를 캡슐화하는 호환 가능한 라이브러리 운영체제에 애플리케이션을 결합하는 동작을 수행하는
    방법.
  2. 제1항에 있어서,
    매니페스트(manifest) 파일로부터 상기 호환 가능한 라이브러리 운영체제를 결정하는 동작을 더 수행하는
    방법.
  3. 제1항에 있어서,
    호스트 운영체제 업데이트 프로세스의 일부로서 상기 라이브러리 운영체제를 획득하는 동작을 더 수행하는
    방법.
  4. 제1항에 있어서,
    호스트 운영체제 업데이트 프로세스의 일부로서 상기 라이브러리 운영체제를 업데이트하는 동작을 더 수행하는
    방법.
  5. 제1항에 있어서,
    제1버전의 호스트 운영체제를 제2버전으로 교체하며 상기 제1버전의 호스트 운영체제와 앞서 결합된 상기 애플리케이션을 상기 제1버전의 호스트 운영체제에 상응하는 상기 라이브러리 운영체제와 결합하는 동작을 더 수행하는
    방법.
  6. 호환성을 용이하게 하는 시스템으로서,
    메모리와 결합되며 상기 메모리에 저장된 컴퓨터 실행 가능 요소를 실행하도록 구성된 프로세서를 포함하되, 상기 컴퓨터 실행 가능 요소는
    애플리케이션을 런타임 시 호환 가능한 라이브러리 운영체제와 결합하도록 구성된 제1요소인
    시스템.
  7. 제6항에 있어서,
    상기 라이브러리 운영체제는 호스트 운영체제와 함께 패키징되는
    시스템.
  8. 제6항에 있어서,
    상기 라이브러리 운영체제는 호스트 운영체제보다 최신 버전의 운영체제인
    시스템.
  9. 제6항에 있어서,
    상기 라이브러리 운영체제는 호스트 운영체제보다 오래된 버전의 운영체제인
    시스템.
  10. 제6항에 있어서,
    상기 호환 가능한 라이브러리 운영체제를 결정하도록 구성된 제2요소를 더 포함하는
    시스템.
KR1020137023212A 2011-03-03 2012-03-03 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법 KR101963912B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161449072P 2011-03-03 2011-03-03
US61/449,072 2011-03-03
US13/314,512 2011-12-08
US13/314,512 US9891939B2 (en) 2011-03-03 2011-12-08 Application compatibility with library operating systems
PCT/US2012/027635 WO2012119139A2 (en) 2011-03-03 2012-03-03 Application compatibility with library operating systems

Publications (2)

Publication Number Publication Date
KR20140046402A true KR20140046402A (ko) 2014-04-18
KR101963912B1 KR101963912B1 (ko) 2019-03-29

Family

ID=46754122

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137023212A KR101963912B1 (ko) 2011-03-03 2012-03-03 라이브러리 운영체제들과의 애플리케이션 호환성을 가능하게 하는 기법

Country Status (6)

Country Link
US (3) US9891939B2 (ko)
EP (1) EP2681654A4 (ko)
JP (1) JP6018590B2 (ko)
KR (1) KR101963912B1 (ko)
CN (1) CN103493011B (ko)
WO (1) WO2012119139A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102100323B1 (ko) * 2019-11-01 2020-04-13 주식회사 엔쓰리엔클라우드 머신러닝 플랫폼 서비스 방법 및 서버

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8261342B2 (en) * 2008-08-20 2012-09-04 Reliant Security Payment card industry (PCI) compliant architecture and associated methodology of managing a service infrastructure
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US20120198436A1 (en) * 2011-01-27 2012-08-02 Preimesberger Lee A Compatible Operating System
US8938643B1 (en) * 2011-04-22 2015-01-20 Symantec Corporation Cloning using streaming restore
US20120278747A1 (en) * 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for user interface in a system having two operating system environments
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US9009212B2 (en) * 2011-06-29 2015-04-14 Cisco Technology, Inc. Optimized transfer of applications between computing environments
US8909912B2 (en) * 2011-07-29 2014-12-09 Cisco Technology, Inc. Apparatus and method for configuring a target machine with captured operational state comprising a static machine profile and a dynamic machine state to continue operations of a source machine
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
JP5855131B2 (ja) * 2011-12-13 2016-02-09 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、情報処理方法、プログラム及び情報記憶媒体
US9489184B2 (en) * 2011-12-30 2016-11-08 Oracle International Corporation Adaptive selection of programming language versions for compilation of software programs
US9015702B2 (en) * 2012-01-13 2015-04-21 Vasanth Bhat Determining compatibility of an application with different versions of an operating system
US9069607B1 (en) * 2012-01-31 2015-06-30 Vmware, Inc. Selective migration of virtualized applications and configuration settings thereof
US20130293573A1 (en) 2012-05-02 2013-11-07 Motorola Mobility, Inc. Method and Apparatus for Displaying Active Operating System Environment Data with a Plurality of Concurrent Operating System Environments
CN102707990B (zh) * 2012-05-14 2015-04-08 华为技术有限公司 基于容器的处理方法和装置
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
US9507612B1 (en) * 2012-08-31 2016-11-29 United Services Automobile Association (Usaa) Managing dedicated and floating pool of virtual machines based on demand
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9166865B2 (en) * 2012-11-07 2015-10-20 International Business Machines Corporation Mobility operation resource allocation
GB2507779A (en) 2012-11-09 2014-05-14 Ibm Terminating a virtual machine in response to user inactivity in a cloud computing environment
US9195294B2 (en) 2012-11-13 2015-11-24 International Business Machines Corporation Cooperatively managing enforcement of energy related policies between virtual machine and application runtime
US9189619B2 (en) * 2012-11-13 2015-11-17 International Business Machines Corporation Runtime based application security and regulatory compliance in cloud environment
US10162873B2 (en) * 2012-12-21 2018-12-25 Red Hat, Inc. Synchronization of physical disks
US20140188977A1 (en) * 2012-12-28 2014-07-03 Futurewei Technologies, Inc. Appratus, method for deploying applications in a virtual desktop interface system
US10860303B2 (en) * 2013-04-24 2020-12-08 Nintendo Co., Ltd. Selective operating system patching/updating
US9710291B2 (en) * 2013-06-19 2017-07-18 Empire Technology Development Llc Processor-optimized library loading for virtual machines
US9294282B1 (en) * 2013-07-01 2016-03-22 Amazon Technologies, Inc. Cryptographically verified repeatable virtualized computing
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9946889B2 (en) * 2013-11-27 2018-04-17 Nakivo, Inc. Systems and methods for multi-tenant data protection application
US9448827B1 (en) * 2013-12-13 2016-09-20 Amazon Technologies, Inc. Stub domain for request servicing
US10664297B2 (en) * 2014-02-24 2020-05-26 Hewlett Packard Enterprise Development Lp Activating pre-created VNFCs when a monitored performance level of a VNF exceeds a maximum value attainable by the combined VNFCs that form a VNF
US9202046B2 (en) 2014-03-03 2015-12-01 Bitdefender IPR Management Ltd. Systems and methods for executing arbitrary applications in secure environments
US20150264157A1 (en) * 2014-03-13 2015-09-17 Rockwell Automation Technologies, Inc. Industrial automation system web application performance enhancement system and method
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
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
US9430268B2 (en) * 2014-05-02 2016-08-30 Cavium, Inc. Systems and methods for supporting migration of virtual machines accessing remote storage devices over network via NVMe controllers
US9348625B2 (en) 2014-05-23 2016-05-24 Google Inc. Application access to native and bundled libraries
US20160036923A1 (en) * 2014-08-03 2016-02-04 Microsoft Corporation Efficient Migration of Application State Information
US9594591B2 (en) 2014-09-26 2017-03-14 International Business Machines Corporation Dynamic relocation of applications in a cloud application service model
EP3202091B1 (en) * 2014-10-03 2020-06-24 British Telecommunications public limited company Operation of data network
US9329907B1 (en) 2014-12-18 2016-05-03 International Business Machines Corporation Automated exploitation of virtual machine resource modifications
FR3030827B1 (fr) * 2014-12-19 2017-01-27 Stmicroelectronics (Grenoble 2) Sas Procede et dispositif de traitement securise de donnees cryptees
US9760113B2 (en) 2015-02-20 2017-09-12 Sony Interactive Entertainment America Llc Backward compatibility through use of spoof clock and fine grain frequency control
US20160285958A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Application container for live migration of mobile applications
US9563446B2 (en) 2015-04-30 2017-02-07 Microsoft Technology Licensing, Llc Binary file generation
US9971622B2 (en) * 2015-06-25 2018-05-15 Intel Corporation Technologies for application migration using lightweight virtualization
US9996377B2 (en) 2015-06-30 2018-06-12 International Business Machines Corporation Virtual machine migration via a mobile device
US9912400B1 (en) * 2015-08-31 2018-03-06 Rockwell Collins, Inc. Concurrent mobile user objective system streaming
GB201516227D0 (en) * 2015-09-14 2015-10-28 Horne Stephen And Hemmer Fabian And Von Oven Peter Running applications on a computer device
US10212255B2 (en) * 2015-09-28 2019-02-19 Microsoft Technology Licensing, Llc Processing requests for multi-versioned service
US10310893B2 (en) 2016-04-05 2019-06-04 Microsoft Technology Licensing, Llc Managing container pause and resume
US10512053B2 (en) 2016-05-10 2019-12-17 Servicenow, Inc. System and method for selectively hibernating and restarting a node of an application instance
US10346457B2 (en) 2016-07-27 2019-07-09 Microsoft Technology Licensing, Llc Platform support clusters from computer application metadata
US10387435B2 (en) 2016-07-27 2019-08-20 Microsoft Technology Licensing, Llc Computer application query suggestions
US10339148B2 (en) 2016-07-27 2019-07-02 Microsoft Technology Licensing, Llc Cross-platform computer application query categories
CN107797807B (zh) * 2016-08-29 2021-04-06 阿里巴巴集团控股有限公司 生成容器的方法、装置、终端、服务器与系统
CN107885748B (zh) * 2016-09-30 2021-10-26 华为技术有限公司 虚拟化实例的文件分层访问方法和装置
US10333985B2 (en) 2017-01-09 2019-06-25 Microsoft Technology Licensing, Llc Distribution and management of services in virtual environments
JP2018116462A (ja) * 2017-01-18 2018-07-26 株式会社東芝 仮想環境実行装置及びプログラム
CN108345496B (zh) * 2017-01-23 2020-12-15 华为技术有限公司 一种运行应用程序的方法及装置
US11281625B1 (en) * 2017-06-05 2022-03-22 Amazon Technologies, Inc. Resource management service
US11347295B2 (en) * 2017-07-19 2022-05-31 Citrix Systems, Inc. Virtual machine power management
US10401816B2 (en) * 2017-07-20 2019-09-03 Honeywell International Inc. Legacy control functions in newgen controllers alongside newgen control functions
CN108008953B (zh) * 2017-12-01 2021-05-07 麒麟软件有限公司 一种动态适配操作系统主题风格的Qt图形程序设计方法
US11474849B2 (en) * 2018-01-29 2022-10-18 Walmart Apollo, Llc Distribution of applications among machines in a cloud
US10540175B2 (en) * 2018-03-05 2020-01-21 Appzero Software Corp. Up-level applications to a new OS
JP2021521530A (ja) * 2018-04-11 2021-08-26 コーネル ユニヴァーシティ ソフトウェアコンテナの性能および分離を改善するための方法およびシステム
US10606632B2 (en) * 2018-05-15 2020-03-31 Vmware, Inc. Preventing interruption during virtual machine reboot
US11218364B2 (en) * 2018-06-25 2022-01-04 Amazon Technologies, Inc. Network-accessible computing service for micro virtual machines
US10929162B2 (en) * 2018-07-27 2021-02-23 Futurewei Technologies, Inc. Virtual machine container for applications
US10963282B2 (en) 2018-12-11 2021-03-30 Amazon Technologies, Inc. Computing service with configurable virtualization control levels and accelerated launches
US10949239B2 (en) 2018-12-14 2021-03-16 Hewlett Packard Enterprise Development Lp Application deployment in a container management system
KR102099118B1 (ko) * 2019-04-29 2020-04-09 래블업(주) 사용자가 요청한 다수개의 라이브러리를 탑재한 세션 컨테이너 제공방법
US11010212B2 (en) * 2019-06-13 2021-05-18 Microsoft Technology Licensing, Llc System and method for supporting and negotiating multiple API versions across multiple products
US11103780B2 (en) * 2019-11-06 2021-08-31 Microsoft Technology Licensing, Llc Saving and restoring virtual machine states and hardware states for application content
KR102211655B1 (ko) 2019-12-26 2021-02-04 한양대학교 에리카산학협력단 프록시 서버 및 이를 이용한 웹 오브젝트 예측 방법
US10983782B1 (en) * 2020-01-31 2021-04-20 Sap Se User interface upgrade analyzer
CN113297566B (zh) * 2020-05-15 2024-04-02 阿里巴巴集团控股有限公司 沙箱实现方法、装置、设备和存储介质
US11809910B2 (en) 2020-10-14 2023-11-07 Bank Of America Corporation System and method for dynamically resizing computational infrastructure to accommodate unexpected demands
US11550553B2 (en) * 2020-11-23 2023-01-10 Red Hat, Inc. Usage-based software library decomposition
US11853783B1 (en) * 2021-03-29 2023-12-26 Amazon Technologies, Inc. Identifying hosts for dynamically enabling specified features when resuming operation of a virtual compute instance
US11561787B2 (en) * 2021-05-13 2023-01-24 International Business Machines Corporation Application invocation on specified operating system version
US20230076488A1 (en) * 2021-09-03 2023-03-09 Microsoft Technology Licensing, Llc Machine-learning-based replenishment of interruptible workloads in cloud environment
US20240192965A1 (en) * 2022-12-13 2024-06-13 Ati Technologies Ulc Continuity of service for virtualized device after resumption from hibernation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019972A1 (en) * 2000-04-24 2002-02-14 Grier Michael J. Isolating assembly versions for binding to application programs
US20100306270A1 (en) * 2009-05-26 2010-12-02 Microsoft Corporation Generating a local copy of a virtualized application package from a local installation
US20120222025A1 (en) * 2011-02-25 2012-08-30 Red Hat, Inc. Version compatibility determination

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981268B2 (en) 2001-12-05 2005-12-27 Microsoft Corporation System and method for persisting and resolving application assembly binds
US7577722B1 (en) 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US6954852B2 (en) 2002-04-18 2005-10-11 Ardence, Inc. System for and method of network booting of an operating system to a client computer using hibernation
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US20080222160A1 (en) * 2003-09-15 2008-09-11 Macdonald Craig Method and system for providing a program for execution without requiring installation
US7774762B2 (en) * 2003-09-15 2010-08-10 Trigence Corp. System including run-time software to enable a software application to execute on an incompatible computer platform
US20060174252A1 (en) * 2004-11-18 2006-08-03 Besbris David G Service versioning
US9450966B2 (en) * 2004-11-29 2016-09-20 Kip Sign P1 Lp Method and apparatus for lifecycle integrity verification of virtual machines
US7451435B2 (en) 2004-12-07 2008-11-11 Microsoft Corporation Self-describing artifacts and application abstractions
US7721138B1 (en) 2004-12-28 2010-05-18 Acronis Inc. System and method for on-the-fly migration of server from backup
US7685593B2 (en) 2005-05-12 2010-03-23 Microsoft Corporation Systems and methods for supporting multiple gaming console emulation environments
US20070283324A1 (en) 2005-08-30 2007-12-06 Geisinger Nile J System and method for creating programs that comprise several execution layers
US7523323B2 (en) 2005-09-15 2009-04-21 Intel Corporation Method and apparatus for quick resumption
US7627728B1 (en) 2005-12-29 2009-12-01 Symantec Operating Corporation System and method for efficient generation of application snapshots
US8104041B2 (en) 2006-04-24 2012-01-24 Hewlett-Packard Development Company, L.P. Computer workload redistribution based on prediction from analysis of local resource utilization chronology data
US20080127348A1 (en) * 2006-08-31 2008-05-29 Kenneth Largman Network computer system and method using thin user client and virtual machine to provide immunity to hacking, viruses and spy ware
US20080127182A1 (en) * 2006-11-29 2008-05-29 Newport William T Managing Memory Pages During Virtual Machine Migration
US8037039B2 (en) 2007-04-20 2011-10-11 Microsoft Corporation Runtime class database operation
US20090210871A1 (en) 2008-02-20 2009-08-20 Zak Dechovich System and method for software application migration
US8359593B2 (en) 2008-04-21 2013-01-22 Vmware, Inc. Computer machine migration of file system images using a redo-log file
US8195774B2 (en) * 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
WO2009147468A2 (en) 2008-05-27 2009-12-10 Telefonaktiebolaget L M Ericsson (Publ) System and method for backwards compatible multi-access with proxy mobile internet protocol
US7886183B2 (en) * 2008-08-07 2011-02-08 Symantec Operating Corporation Providing fault tolerant storage system to a cluster
CN101655798B (zh) 2008-08-18 2013-03-27 联想(北京)有限公司 一种虚拟机环境中应用程序部署和运行的装置及方法
JP4966942B2 (ja) * 2008-10-01 2012-07-04 株式会社日立製作所 仮想pc管理方法、仮想pc管理システム、および仮想pc管理プログラム
US8291261B2 (en) 2008-11-05 2012-10-16 Vulcan Technologies Llc Lightweight application-level runtime state save-and-restore utility
US8214829B2 (en) 2009-01-15 2012-07-03 International Business Machines Corporation Techniques for placing applications in heterogeneous virtualized systems while minimizing power and migration cost
US8019861B2 (en) * 2009-01-29 2011-09-13 Vmware, Inc. Speculative virtual machine resource scheduling
US10203993B2 (en) 2009-02-18 2019-02-12 International Business Machines Corporation Method and system for continuous optimization of data centers by combining server and storage virtualization
JP5289153B2 (ja) 2009-04-14 2013-09-11 キヤノン株式会社 情報処理装置及びその制御方法、並びにコンピュータプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019972A1 (en) * 2000-04-24 2002-02-14 Grier Michael J. Isolating assembly versions for binding to application programs
US20100306270A1 (en) * 2009-05-26 2010-12-02 Microsoft Corporation Generating a local copy of a virtualized application package from a local installation
US20120222025A1 (en) * 2011-02-25 2012-08-30 Red Hat, Inc. Version compatibility determination

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Dawson R. Engler 외 2명. Exokernel: An Operating System Architecture for Application-Level Resource Management. 1995년. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102100323B1 (ko) * 2019-11-01 2020-04-13 주식회사 엔쓰리엔클라우드 머신러닝 플랫폼 서비스 방법 및 서버

Also Published As

Publication number Publication date
US20120227038A1 (en) 2012-09-06
JP6018590B2 (ja) 2016-11-02
CN103493011A (zh) 2014-01-01
US9891939B2 (en) 2018-02-13
US9606822B2 (en) 2017-03-28
KR101963912B1 (ko) 2019-03-29
CN103493011B (zh) 2016-12-07
EP2681654A4 (en) 2014-11-26
WO2012119139A3 (en) 2013-01-03
EP2681654A2 (en) 2014-01-08
US8875160B2 (en) 2014-10-28
WO2012119139A2 (en) 2012-09-07
US20120227061A1 (en) 2012-09-06
JP2014510343A (ja) 2014-04-24
US20120227058A1 (en) 2012-09-06

Similar Documents

Publication Publication Date Title
US9891939B2 (en) Application compatibility with library operating systems
CN106227579B (zh) 一种Docker容器构建方法及Docker管理控制台
US8726255B2 (en) Recompiling with generic to specific replacement
EP3336690B1 (en) Extensible data transformation authoring and validation system
JP5007046B2 (ja) コンポーネントベースのソフトウェア・プロダクトの保守
JP5663006B2 (ja) ランタイム環境を構築するためのシステムおよび方法
US8738589B2 (en) Classloading technique for an application server that provides dependency enforcement
US9841953B2 (en) Pluggable components for runtime-image generation
US20110307858A1 (en) Pre-compiling hosted managed code
US10268476B2 (en) System and method for fast restarting of user apps
WO2013165459A1 (en) Control flow graph operating system configuration
US9959103B2 (en) Code deployment assistance
CN110362301B (zh) 一种终端应用行为反射的处理方法
EP4055477A1 (en) Just-in-time containers
US10409567B2 (en) Trimming unused dependencies using package graph and module graph
RU2635891C2 (ru) Механизм инсталляции и формат пакета для распараллеливаемых надежных инсталляций
US9009667B2 (en) Application server that supports multiple component models
US9841982B2 (en) Locating import class files at alternate locations than specified in classpath information
US20170083298A1 (en) Resilient format for distribution of ahead-of-time compiled code components
US20120102473A1 (en) Abstract method removal for reduced memory footprint with optimizer tool
TWI549056B (zh) 以函式庫作業系統達成之應用程式相容性
Al-Bokhaiti et al. Customization and Optimization of Android Operating System for Custom Board with the Implementation of an Administrative Tool
US11954023B2 (en) Garbage collection prefetching state machine
Kumar et al. Porting and BSP Customization of Linux on ARM Platform
JP2013058270A (ja) マルチタスク仮想マシンのためのヒープ組織

Legal Events

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