KR20140046402A - 라이브러리 운영체제들과의 애플리케이션 호환성 - Google Patents
라이브러리 운영체제들과의 애플리케이션 호환성 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, 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
운영체제(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은 본 개시의 양태들에 대한 적절한 운영 환경을 예시한 개략적 블록도이다.
도 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)를 통해 라이브러리 운영체제를 획득하도록 구성된다.
다양한 라이브러리 운영체제들 및 호스트 운영체제가 컴퓨터 상에 공존할 수 있다. 예로서, 호스트 운영체제와 함께 라이브러리 운영체제들의 한 가지 가능한 레이아웃을 고려할 수 있다:
이 예에서 "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항에 있어서,
매니페스트(manifest) 파일로부터 상기 호환 가능한 라이브러리 운영체제를 결정하는 동작을 더 수행하는
방법.
- 제1항에 있어서,
호스트 운영체제 업데이트 프로세스의 일부로서 상기 라이브러리 운영체제를 획득하는 동작을 더 수행하는
방법.
- 제1항에 있어서,
호스트 운영체제 업데이트 프로세스의 일부로서 상기 라이브러리 운영체제를 업데이트하는 동작을 더 수행하는
방법.
- 제1항에 있어서,
제1버전의 호스트 운영체제를 제2버전으로 교체하며 상기 제1버전의 호스트 운영체제와 앞서 결합된 상기 애플리케이션을 상기 제1버전의 호스트 운영체제에 상응하는 상기 라이브러리 운영체제와 결합하는 동작을 더 수행하는
방법.
- 호환성을 용이하게 하는 시스템으로서,
메모리와 결합되며 상기 메모리에 저장된 컴퓨터 실행 가능 요소를 실행하도록 구성된 프로세서를 포함하되, 상기 컴퓨터 실행 가능 요소는
애플리케이션을 런타임 시 호환 가능한 라이브러리 운영체제와 결합하도록 구성된 제1요소인
시스템.
- 제6항에 있어서,
상기 라이브러리 운영체제는 호스트 운영체제와 함께 패키징되는
시스템.
- 제6항에 있어서,
상기 라이브러리 운영체제는 호스트 운영체제보다 최신 버전의 운영체제인
시스템.
- 제6항에 있어서,
상기 라이브러리 운영체제는 호스트 운영체제보다 오래된 버전의 운영체제인
시스템.
- 제6항에 있어서,
상기 호환 가능한 라이브러리 운영체제를 결정하도록 구성된 제2요소를 더 포함하는
시스템.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102100323B1 (ko) * | 2019-11-01 | 2020-04-13 | 주식회사 엔쓰리엔클라우드 | 머신러닝 플랫폼 서비스 방법 및 서버 |
Families Citing this family (98)
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)
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)
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 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにコンピュータプログラム |
-
2011
- 2011-12-08 US US13/314,512 patent/US9891939B2/en active Active
- 2011-12-20 US US13/331,078 patent/US9606822B2/en active Active
-
2012
- 2012-01-06 US US13/345,031 patent/US8875160B2/en active Active
- 2012-03-03 CN CN201280011551.7A patent/CN103493011B/zh active Active
- 2012-03-03 KR KR1020137023212A patent/KR101963912B1/ko active IP Right Grant
- 2012-03-03 JP JP2013556669A patent/JP6018590B2/ja active Active
- 2012-03-03 WO PCT/US2012/027635 patent/WO2012119139A2/en unknown
- 2012-03-03 EP EP12752531.9A patent/EP2681654A4/en not_active Ceased
Patent Citations (3)
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)
Title |
---|
Dawson R. Engler 외 2명. Exokernel: An Operating System Architecture for Application-Level Resource Management. 1995년. * |
Cited By (1)
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 |