KR20230027144A - 차량-내 디바이스 애플리케이션 기동을 위한 풀 관리 - Google Patents

차량-내 디바이스 애플리케이션 기동을 위한 풀 관리 Download PDF

Info

Publication number
KR20230027144A
KR20230027144A KR1020237000314A KR20237000314A KR20230027144A KR 20230027144 A KR20230027144 A KR 20230027144A KR 1020237000314 A KR1020237000314 A KR 1020237000314A KR 20237000314 A KR20237000314 A KR 20237000314A KR 20230027144 A KR20230027144 A KR 20230027144A
Authority
KR
South Korea
Prior art keywords
application
virtual machine
computer
virtual machines
basic
Prior art date
Application number
KR1020237000314A
Other languages
English (en)
Inventor
마사쿠니 오카다
하야토 우에노하라
다쿠야 마쓰나가
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20230027144A publication Critical patent/KR20230027144A/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Electric Propulsion And Braking For Vehicles (AREA)

Abstract

애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리-모으기 하기 위한 방법, 컴퓨터 프로그램 제품, 및 시스템이 제공된다. 상기 방법은 가상 머신 풀 관리자에 의해 가상 머신 풀 적하목록(a virtual machine pool manifest)을 읽는 단계를 포함한다. 상기 가상 머신 풀 적하목록은 시작할 가상 머신들(an initial number of virtual machines to launch)의 초기 수, 자원들을 할당할 가상 머신들 수, 가상 머신 자원 정의에 기초하여 할당할 자원들 양을 포함한다. 상기 방법은 또한 상기 가상 머신 풀 적하목록에 의해 제공된 초기 수에 기초하여 가상 머신 풀로 복수의 기본 가상 머신들을 시작하는 단계를 포함한다. 상기 기본 가상 머신들에는 초기 애플리케이션 할당들이 없다. 상기 방법은 상기 가상 머신 풀 적하목록의 가상 머신 자원 정의에 기초하여 상기 기본 가상 머신들의 일부에 초기 자원들을 할당하는 단계를 더 포함한다. 상기 방법은 코어 프로그램 패키지들을 상기 기본 가상 머신들의 일부로 로드하는 단계를 포함한다.

Description

차량-내 디바이스 애플리케이션 기동을 위한 풀 관리
[0001] 본 발명은 차량-내 디바이스의 애플리케이션 기동 속도(application startup speed in an in-vehicle device)에 관한 것으로, 보다 상세하게는, 효율적인 풀 관리 기술들을 사용하여 애플리케이션 시작 프로세스(the application launch process)를 분할함으로써 애플리케이션 기동 속도를 향상시키는 것에 관한 것이다.
[0002] 사물인터넷(Information of Things: IoT) 기술은 차량-내 디바이스(예: 내비게이션 시스템)에 추가적인 애플리케이션들을 추가할 수 있는 기능을 제공함으로써 기능 확장성을 허용한다. 또한, 차량의 애플리케이션 개발은 애플리케이션들이 차량들 내에서 시스템 기능들(예: 대시보드 카메라, 에어컨, 차량 정보 관리)을 제어할 수 있도록 확장되고 있다. 이들 애플리케이션들은 차량-내 디바이스 안에서 교체 가능한 애플리케이션들(replaceable applications)로 설치될 수 있는 시스템 기능들을 허용하는 차량-내 디바이스의 코어 기능의 필수 부분으로 개발되었다.
[0003] 본 발명의 다양한 실시예들은 애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리-모으기(pre-pooling)하는 컴퓨터 구현 방법에 관한 것이다. 상기 컴퓨터 구현 방법은 가상 머신 풀 관리자에 의해 가상 머신 풀 적하목록(a virtual machine pool manifest)을 읽는 단계를 포함한다. 상기 가상 머신 풀 적하목록은 시작할 가상 머신들(an initial number of virtual machines to launch)의 초기 수를 포함한다. 상기 가상 머신 풀 적하목록은 자원들을 할당할 가상 머신들의 수, 가상 머신 자원 정의에 기초하여 할당할 자원들의 수, 자원 할당이 없는 가상 머신들의 수, 디폴트 환경 및 주어진 시간에 실행 가능한 최대 애플리케이션들의 수 나타내는 파라미터도 포함할 수 있다. 상기 컴퓨터 구현 방법은 또한 상기 가상 머신 풀 적하목록에 의해 제공된 초기 수에 기초하여 가상 머신 풀로 복수의 기본 가상 머신들을 시작하는 단계를 포함한다. 상기 기본 가상 머신들에는 초기 애플리케이션 할당들이 없다. 상기 컴퓨터 구현 방법은 상기 가상 머신 풀 적하목록의 가상 머신 자원 정의에 기초하여 상기 기본 가상 머신들의 일부에 초기 자원들을 할당하는 단계를 더 포함한다. 상기 컴퓨터 구현 방법은 코어 프로그램 패키지들을 상기 기본 가상 머신들의 일부로 로드하는 단계를 포함한다.
[0004] 본 발명의 추가 실시예들은 애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리 모으기 하는 컴퓨터 프로그램 제품을 포함하며, 상기 컴퓨터 프로그램 제품은 프로그램 명령들이 구현된 컴퓨터 판독 가능 스토리지 매체를 포함하고, 상기 프로그램 명령들은 프로세서에 의해 실행 가능하며, 상기 프로세서가 방법을 수행하도록 한다. 상기 방법은 가상 머신 풀 관리자에 의해 가상 머신 풀 적하목록(a virtual machine pool manifest)을 읽는 단계를 포함한다. 상기 가상 머신 풀 적하목록은 시작할 가상 머신들(an initial number of virtual machines to launch)의 초기 수를 포함한다. 상기 가상 머신 풀 적하목록은 자원들을 할당할 가상 머신들의 수, 가상 머신 자원 정의에 기초하여 할당할 자원들의 수, 자원 할당이 없는 가상 머신들의 수, 디폴트 환경 및 주어진 시간에 실행 가능한 최대 애플리케이션들의 수 나타내는 파라미터도 포함할 수 있다. 상기 방법은 또한 상기 가상 머신 풀 적하목록에 의해 제공된 초기 수에 기초하여 가상 머신 풀로 복수의 기본 가상 머신들을 시작하는 단계를 포함한다. 상기 기본 가상 머신들에는 초기 애플리케이션 할당들이 없다. 상기 방법은 상기 가상 머신 풀 적하목록의 가상 머신 자원 정의에 기초하여 상기 기본 가상 머신들의 일부에 초기 자원들을 할당하는 단계를 더 포함한다. 상기 방법은 코어 프로그램 패키지들을 상기 기본 가상 머신들의 일부로 로드하는 단계를 포함한다.
[0005] 추가 실시예들은 애플리케이션 시작 전에 가상 머신 컴포넌트들을 미리-모으기하기 위한 가상 머신 풀 관리 시스템에 관한 것이며 위에서 설명한 방법들을 수행하도록 구성된다. 본 요약은, 본 발명의 모든 구현 및/또는 모든 실시예의, 각 특징을 설명하기 위한 것이 아니다.
[0006] 본 발명의 실시예들의 이들 및 다른 특징들, 측면들 및 이점들은 다음의 설명, 첨부된 청구범위 및 첨부되는 도면들과 관련하여 더 잘 이해될 것이다:
[0007] 도 1은 본 발명의 실시예들에 따른, 차량-내 디바이스의 블록도이다.
[0008] 도 2는 본 발명의 실시예들에 따른, 가상 머신 풀 관리 시스템을 나타내는 블록도이다.
[0009] 도 3은 본 발명의 실시예들에 따라, 애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리-모으기하는 플로 다이어그램이다.
[0010] 도 4는 본 발명의 실시예에 따라, 본 명세서에 기술된 하나 혹은 그 이상의 방법들, 도구들 및 모듈들, 및 모든 관련 기능들을 구현하는 데 사용될 수 있는, 예시적인 컴퓨터 시스템을 나타내는 하이-레벨 블록도이다.
[0011] 도 5는 본 발명의 실시예들에 따른, 클라우드 컴퓨팅 환경을 도시한다.
[0012] 도 6은 본 발명의 실시예들에 따른, 추상적 모델 층들을 도시한다.
[0013] 본 발명은 다양한 변형들 및 대안적 형태들이 가능하지만, 그 구체적인 내용들은 예를 들어, 도면들에 도시하였고 상세하게 설명될 것이다. 그러나, 기술된 특정 실시예들을 제한하려는 의도가 아님을, 이해해야 한다. 반대로, 의도는 본 발명의 범위 내에 속하는 모든 변형들, 등가물들, 및 대안들을 포괄하는 것이다. 첨부된 도면들에서 동일한 참조부호들은 동일한 부분을 지정하기 위해 사용된다.
[0014] 본 발명은 차량-내 디바이스에서의 애플리케이션 기동 속도에 관한 것으로, 보다 상세하게는, 효율적인 풀 관리 기술들을 이용하여 애플리케이션 시작 프로세스를 분할함으로써 애플리케이션 기동 속도를 향상시키는 것에 관한 것이다. 본 발명이 반드시 이러한 애플리케이션들로 제한되는 것은 아니지만, 본 발명의 다양한 특징들은 이러한 맥락을 사용하는 다양한 예들의 논의를 통해 이해될 수 있다.
[0015] 사물인터넷(IoT) 기술은 차량-내 디바이스(예: 내비게이션 시스템)에 추가 애플리케이션들을 추가할 수 있는 기능을 제공하여 기능 확장성을 허용한다. 또한, 차량 내 시스템 기능들(예: 대시보드 카메라, 에어컨, 차량 정보 관리)을 애플리케이션들이 제어할 수 있도록 차량들 내 애플리케이션 개발이 확대되고 있다. 이러한 애플리케이션들은 차량-내 디바이스 내에서 교체 가능한 애플리케이션들로 설치될 수 있는 시스템 기능들을 허용하는 차량-내 디바이스의 코어 기능의 필수 부분으로 개발되었다.
[0016] 차량-내 애플리케이션의 일반적인 기동 절차(typical startup procedure)는, 먼저 초기화될, 애플리케이션을 동작시킬 애플리케이션 플랫폼 또는 코어 프로그램을 포함한다. 초기화 프로세스는 스토리지 디바이스에서 애플리케이션을 읽는 단계, 프로세스를 생성하는 단계, 애플리케이션의 코어 프로그램을 기동하는 단계, 및 애플리케이션에 필요한 자원들을 할당하는 단계를 포함한다. 제어가 애플리케이션 로직으로 전환될 때 애플리케이션이 기동된다(started).
[0017] 그러나, 차량-내 디바이스들에는 자원들(예: 메모리, 스토리지, 프로세서)이 제한되어 있으므로 애플리케이션 기동에 대한 제한들이 남아 있다. 따라서, 차량-내 애플리케이션들은 자원 상한-제한을 가질 수 있다. 애플리케이션 기동을 가속화하는 현재 기술들에는 최대 절전 모드(hibernation)와 같은 기술들이 포함된다. 최대 절전 모드에서, 운영 체제는 전원을 끄기 전에 애플리케이션의 실행 상태를 메모리에 복사할 수 있다. 따라서, 운영 체제는 전원을-켤 때 실행 상태의 복사본을 복원하여 애플리케이션을 다시 시작할 수 있다. 그러나, 차량들에서는, 액세서리 꺼짐 명령(an accessory off command)에 의해 전원 중단이 발생하므로, 운영 체제가 실행 중인 모든 애플리케이션들의 실행 상태 사본을 생성할 수 있는 기회를 제공하지 않을 수 있다. 또한, 기존의 컴퓨팅 디바이스들과 달리, 차량-내 디바이스들에 대한 다양한 유형들의 전원-끄기들 간에는 구별이 없다. 예를 들어, 노트북 컴퓨터들은 전원 끄기 명령들을 구분할 수 있다. 전원 버튼을 누르는 전원-끄기 명령(power-off command from a press of the power button)은 노트북이 닫혀 있을 때의 전원-끄기 명령과 달리 노트북에서 다른 응답을 유도할 수 있다. 서로 다른 유형들의 전원-끄기들을 구별함으로써 대응 디바이스들의 운영 체제가 디바이스가 종료되지 않고 절전 모드로 전환될 때 현재 실행 중인 애플리케이션들을 최대 절전 모드로 전환할 수 있다. 예를 들어, 차량-내 디바이스들은 절전-형 전원-끄기 이벤트와 종료 전원-끄기 이벤트를 구분할 수 없기 때문에, 최대 절전 모드와 같은 기술들은 차량-내 디바이스들에 적용할 수 없다.
[0018] 하드웨어 성능 개선 및 프로그램 실행 속도와 같은, 다른 기술들도 사전 컴파일(ahead-of-time compilation: AOT)를 사용하여, 애플리케이션 시작을 가속화하려고 시도한다. 그러나, 이러한 기술들은 추가 오버헤드 비용들을 발생시킬 수 있으며 차량-내 애플리케이션의 전체 시작 속도에 대한 제한적인 개선만 제공할 수 있다.
[0019] 본 발명의 실시예들은 애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리-모으기(pre-pooling)하기 위한 가상 머신 풀 관리 시스템(a virtual machine pool management system)을 사용함으로써 상기 및 다른 문제들을 극복할 수 있다. 또한, 애플리케이션에 대해 자원 할당 및 애플리케이션 논리 전환들(resource allocation and application logic shifts)도 수행된다. 따라서 애플리케이션 풀 관리 시스템이 차량-내 디바이스에서 애플리케이션의 기동 시간을 가속화할 수 있다. 가상 머신 풀 관리 시스템은 차량-내 디바이스에 필요한 가상 머신들을 관리하고 시작하도록(manage and launch) 구성된 가상 머신 풀 관리자를 포함한다. 가상 머신 풀 관리자는 또한 가상 머신 풀 적하목록(a virtual machine pool manifest)를 기반으로 가상 머신들에 초기 자원들을 할당하도록 구성된다. 가상 머신 풀 관리 시스템은 자원들이 할당된 가상 머신들에 코어 프로그램 패키지들을 설치하고 로드하도록 구성된 애플리케이션 패키지 관리자도 포함한다. 이들 가상 머신들은 가상 머신 풀 내에 머물 수 있으며 차량-내 디바이스에서 애플리케이션 실행을 요청할 때까지 준비 상태를 유지할 수 있다.
[0020] 일부 실시예들에서, 가상 머신 풀 관리 시스템은 자원들 할당을 수신하지 않는 추가 가상 머신들을 시작할 수 있다. 가상 머신 풀 관리 시스템은 이들 가상 머신들을 필요할 때까지 대기 구성으로 배치할 수 있다. 이러한 방식으로, 자원들을 사용할 수 있게 되면, 가상 머신 풀 관리자는 대기 구성의 가상 머신들에 자원들을 할당하고 이들 가상 머신들을 준비된 구성에 배치할 수 있다.
[0021] 일부 실시예들에서, 가상 머신 풀 관리자는 자원 할당 패턴에 기초하여 초기 자원들을 가상 머신들에 할당한다. 자원 할당 패턴은 차량-내 디바이스가 동작하는 동안 갖는 전형적인 패턴을 나타낼 수 있다. 예를 들어, 차량-내 디바이스는 시작 즉시 5개의 애플리케이션들을 실행한 다음 미리 결정된 시간 후에 또 다른 6개의 애플리케이션들을 실행할 수 있다. 자원 할당 패턴은 차량-내 디바이스의 필요성을 모방하여 그 필요성을 예측할 수 있다.
[0022] 본 발명의 실시예들은 차량-내 디바이스에서 실행되는 애플리케이션들의 수명 주기를 관리하도록 구성된 애플리케이션 수명 주기 관리자(an application life cycle manager)를 포함한다. 또한, 애플리케이션 수명 주기 관리자는 애플리케이션들을 할당할 가상 머신들을 결정할 수 있다. 이것은 가상 머신에 로드된 초기 자원들 및 코어 프로그래밍(core programming)에 기초할 수 있다. 예를 들어, 가상 머신에 요청된 애플리케이션의 동작 및 실행을 할 수 있는 충분한 양의 자원들이 할당된 경우, 애플리케이션 수명 주기 관리자는 상기 가상 머신을 선택하여 상기 특정 애플리케이션들에 할당할 수 있다. 그렇지 않으면, 애플리케이션 수명 주기 관리자는 가상 머신 풀 관리자가 추가 가상 머신들을 시작하거나(launch) 적절한 자원들을 재할당하도록(reallocate) 요청할 수 있다.
[0023] 이제 도 1을 참조하면, 내장된 차량-내 디바이스(an embedded in-vehicle device)(105)를 갖는 차량(100)의 하이-레벨 블록도가 도시되어 있다. 또한, 차량(100)은 센서(160), 및 카메라(170)를 포함한다. 차량-내 디바이스(105)는 제어 유닛(110), 스토리지 유닛(120), 통신 유닛(130), 입력 유닛(140), 및 출력 유닛(150)을 포함한다. 입력 유닛(140)는 센서(160) 및 카메라(170)와 통신 가능하게 연결된다.
[0024] 차량-내 디바이스(105)는 차량(100)에 관한 정보를 송수신하도록 구성된 차량(100)의 컴포넌트다. 또한, 차량-내 디바이스(105)는 주행 모드, 크루즈 컨트롤, 카메라들, 센서들, 헤드라이트들, 등과 같은 차량 시스템 기능들을 동작 시킬 수 있다. 차량-내 디바이스(105)는 또한 다양한 차량 제어들을 동작 시킬 수 있다. 이러한 차량 제어들은, 예를 들어, 내비게이션 제어들, 난방, 환기, 및 에어컨(HVAC) 제어들, 및 오디오/비디오(A/V) 엔터테인먼트 제어들을 포함한다.
[0025] 제어 유닛(110)은 하나 또는 복수의 중앙 처리 장치들(CPU) 또는 멀티-코어 CPU를 사용하도록 구성된 차량-내 디바이스(105)의 컴포넌트로서, 읽기-전용 메모리(ROM), 랜덤 엑세스 메모리(RAM), 입/출력 인터페이스, 타이머, 등을 포함한다. 제어 유닛(110)은 내장 ROM에 저장된 프로그램을 실행하여 각 구성 유닛들의 동작들을 제어하는 결정 유닛으로서, 후술하는 가상 머신 풀 관리 시스템(the virtual machine pool management system)(200)을 실행한다.
[0026] 스토리지 유닛(120)은 차량(100) 및 차량-내 디바이스(105)에 관한 정보를 저장하도록 구성된 차량-내 디바이스의 컴포넌트다. 일부 실시예들에서, 스토리지 유닛(120)은 비-휘발성 메모리(예를 들어, 플래시 메모리, 전기적으로 소거 가능한 프로그래밍 가능한 읽기-전용 메모리 EEPROM)이다. 스토리지 유닛(120)은 하나 혹은 그 이상의 메모리들을 포함할 수 있다. 스토리지 유닛(120)의 각 메모리는, 예를 들어, 반도체 메모리, 자기 메모리, 고체-메모리, 또는 광학 메모리이다. 각 메모리는, 예를 들면, 메인 스토리지 디바이스, 보조 스토리지 디바이스, 캐쉬 메모리 등의, 기능들을 한다. 스토리지 유닛(120)는 차량-내 디바이스(105)의 동작에 사용되는 모든 정보를 저장할 수 있다. 예를 들어, 스토리지 유닛(120)는 차량-내 디바이스(105)에서 실행 가능한 애플리케이션들을 저장할 수 있다.
[0027] 통신 유닛(130)은 서버와 데이터를 통신하도록 구성된 차량-내 디바이스(105)의 컴포넌트다. 통신 디바이스(130)는 하나 혹은 그 이상의 통신 모듈들을 갖는다. 상기 통신 모듈은, 예를 들어, 4세대(4G), 5세대(5G), 블루투스, 와이파이, 글로벌 이동통신 시스템(GSM), 코드분할 다중접속(CDMA), 롱-텀 에볼루션(LTE), 적외선(IR), 등의 이동통신 규격에 호환되는 모듈을 포함한다. 또한, 통신 유닛은 데이터 통신 모듈(DCM)과 같은, 통신 디바이스를 가질 수 있다. 통신 유닛(130)은 차량-내 디바이스(105)와 네트워크를 연결하여 서버와 통신한다. 일부 실시예들에서, 통신 유닛(130)은 글로벌 위치정보 시스템(GPS) 수신 모듈인 통신 모듈을 포함하고, 차량-내 디바이스(105)는 통신 유닛(130)에 의해 GPS 신호들을 수신한다.
[0028] 입력 유닛(140)은 차량-내 디바이스(105)의 외부로부터 신호를 입력하는 인터페이스인 차량-내 디바이스(105)의 컴포넌트다. 입력 유닛(140)은 센서(160) 또는 카메라(170)로부터 정보를 수신할 수 있고, 제어 유닛(110)은 센서(160) 및 카메라(170)로부터 정보를 획득할 수 있다.
[0029] 출력 유닛(150)은 차량(100)이 동작 할 수 있는 기능(an operation functionality)을 나타내는 신호를 출력하도록 구성된 차량-내 디바이스의 컴포넌트다. 일부 실시예들에서, 출력 유닛(150)은 근거리 통신망(LAN)에 연결된 통신부(130)이거나 입력 유닛(140)와 결합된 통신 유닛(130)일 수 있다.
[0030] 도 1은 예시적인 차량-내 디바이스(105)의 주요 대표 컴포넌트들을 나타내도록 의도되었다는 점에 유의한다. 그러나, 일부 실시예들에서, 개별 컴포넌트들은 도 1에 표시된 것보다 더 복잡하거나 덜 복잡할 수 있고, 도 1에 표시된 것 이외의 컴포넌트들 또는 추가 컴포넌트들이 존재할 수 있으며, 그러한 컴포넌트들의 수, 유형, 및 구성은 다를 수 있다.
[0031] 도 2는, 본 발명의 실시예들에 따라, 애플리케이션 기동(the application startup) 전에 가상 머신 컴포넌트들을 미리-모으기(pre-pooling)를 하기 위한 가상 머신 풀 관리 시스템(200)을 나타내는 블록도이다. 가상 머신 풀 관리 시스템(200)은 가상 머신 풀 관리자(210), 가상 머신 풀 적하목록(220), 가상 머신 풀(230), 애플리케이션 수명 주기 관리자(240), 애플리케이션(250-1, 250-2, 250-N)(통칭하여 "애플리케이션 (250)")을 포함하고, 여기서 N은 임의의 수의 가능한 애플리케이션들(250) 및 애플리케이션 패키지 관리자(260)를 나타내는 가변 정수이다. 가상 머신 풀 관리 시스템(200)은 가상 머신 풀 관리자(210), 가상 머신 풀 적하목록(220), 가상 머신 풀(230), 애플리케이션 수명 주기 관리자(240), 애플리케이션들 250-1, 250-2, 250-N(집합적으로 "애플리케이션들(250)"), 여기서 N은 임의의 수의 가능한 애플리케이션들(250)을 나타내는 가변 정수이고, 및 애플리케이션 패키지 관리자(260)를 포함한다. 애플리케이션 수명 주기 관리자(240)는 애플리케이션 로직 인젝션 관리자(244) 및 애플리케이션 자원 할당기(248)를 포함한다. 애플리케이션들(250)은 자원 정보(251-1, 251-2, 251-N)(집합적으로 "자원 정보(251)")를 포함하며, 여기서 N은 임의의 수의 가능한 자원 정보(251)를 나타내는 가변 정수이다.
[0032] 가상 머신 풀 관리자(210)는 가상 머신들을 관리 및 시작하도록 구성된 가상 머신 풀 관리 시스템(200)의 컴포넌트다. 가상 머신 풀 관리자(210)는 가상 머신들의 자원 관리를 담당한다. 가상 머신 풀 관리자(210)는 기본 가상 머신들(233)에서 실행되는 지정된 애플리케이션들(250)의 목록을 유지할 수 있다. 예를 들어, 상기 목록은 내비게이션 특정 가상 머신에서 실행되는 내비게이션 소프트웨어를 지정하는 항목(entry)과 비-사용자 인터페이스(UI) 특정 가상 머신들에서 실행되는 비-UI 애플리케이션들을 지정하는 다른 항목(another entry)를 포함할 수 있다.
[0033] 가상 머신 풀 관리자(210)는 일련의 가상 머신 관리 유틸리티들을 실행할 수 있다. 이들 유틸리티들은, 예를 들어, 다음 기능들을 포함한다: 가상 머신들의 생성, 삭제, 절전 모드로 전환, 및 깨우는 기능들. 상기 유틸리티들은 또한 애플리케이션들을 가상 머신들과 매치(match)시키는 목록을 유지할 수 있다.
[0034] 가상 머신 풀 적하목록(220)는 초기 가상 머신 설정 요건들을 제공하도록 구성된 가상 머신 풀 관리 시스템(200)의 컴포넌트이다. 가상 머신 풀 적하목록(220)는 가상 머신 풀(230)에 배치될 기본 가상 머신들(233)의 초기 수(an initial number)를 포함할 수 있다. 예를 들어, 상기 초기 수는 기동 시(at startup) 7개의 기본 가상 머신들(233)이 필요함을 나타낼 수 있다. 추가로, 가상 머신 풀 적하목록(220)는 자원들(235)이 할당될 기본 가상 머신들(233)의 수를 포함할 수 있다.
[0035] 일부 실시예들에서, 가상 머신 풀 적하목록(the virtual machine pool manifest)(220)은 자원 정의에 기초한 자원들 할당(235)을 나타낸다. 자원 정의는 가상 머신(233)에 로드된 애플리케이션 유형에 따라 필요한 자원 유형들을 정의한다. 예를 들어, 자원 정의는 디스플레이 버퍼에 필요한 자원들을 나타낼 수 있다. 디스플레이 버퍼는 애플리케이션에서 UI를 사용해야 함을 나타낼 수 있다. UI들이 필요할 수 있는 애플리케이션들에는, 예를 들어, 내비게이션, 라디오, 시스템 설정들, 속도계, 등이 있다. 다른 자원 정의는 디스플레이 버퍼가 사용되지 않음을 나타낼 수 있으며, 이는 특정 애플리케이션에는 필요한 자원들이 더 적다는 것을 나타낼 수 있다. 이들 유형들의 애플리케이션들은 차량-내 디바이스(105)가 차량(100)의 동작 중에 사용할 수 있는 배경 관련 애플리케이션들(background related applications)일 수 있다.
[0036] 일부 실시예들에서, 가상 머신 풀 적하목록(220)은 디폴트 환경 자원 할당(a default environment resource assignment)을 포함한다. 상기 디폴트 환경 자원 할당은 특정 가상 머신에 대한 자원 정의가 정의되지 않을 때 자원들의 디폴트 할당을 포함할 수 있다. 상기 디폴트 자원 할당은 디폴트 기본 가상 머신(233)에 할당될 메모리, 스토리지, 및 CPU 사용량의 양을 나타낼 수 있다.
[0037] 일부 실시예들에서, 가상 머신 적하목록(220)은 차량-내 디바이스(105)가 임의의 주어진 시간에 실행할 수 있는 애플리케이션들의 임계 수(a threshold number)를 나타내는 파라미터를 포함한다. 상기 임계 수는 차량-내 디바이스(105)에 이용 가능하고 가상 머신 풀 관리 시스템(200)에 의해 관리 가능한 자원들에 기초할 수 있다.
[0038] 가상 머신 풀(230)은 기본 가상 머신들(233)을 저장하도록 구성된 가상 머신 풀 관리 시스템(200)의 컴포넌트이다. 가상 머신 풀(230)은 소프트웨어를 저장할 수 있는 모든 스토리지일 수 있다. 일부 실시예들에서, 가상 머신 풀(230)은 가상 머신 풀 관리자(210)에 의해 구성될 수 있는 단일 가상 머신을 저장한다. 가상 머신 풀(230)은 가상 머신 풀 관리자(210)에 의해 구성될 수 있는 임의의 수의 별개의 기본 가상 머신들(233)을 저장할 수 있다.
[0039] 기본 가상 머신들(233)은 디바이스(예를 들어, 컴퓨터)의 성능을 모방하도록 구성된 가상 머신 풀 관리 시스템(200)의 컴포넌트들이다. 기본 가상 머신들(233)은 가상 머신 풀(230)에서 검색될 수 있다. 기본 가상 머신들(233)은 기본 가상 머신들(233)을 동작시키는 데 필요한 자원들(235)을 포함한다. 예를 들어, 자원들에는 기본 가상 머신들(233)에 필요한 메모리, 스토리지, 및 CPU 사용량이 포함된다. 또한, 기본 가상 머신들(233)은 기본 가상 머신들(233)이 가상 머신 풀(230)에서 실행되면 기본 가상 머신들(233)에 로드되는 코어 프로그램 패키지를 포함할 수 있다. 코어 프로그램 패키지는 애플리케이션들(250)을 지원하고 실행하는 데 필요한 기본 운영 체제와 기본 가상 머신들(233)에 포함된 다양한 애플리케이션 컴포넌트들을 제공할 수 있다.
[0040] 일부 실시예들에서, 기본 가상 머신들(233)은 서버에 대응하는 클라이언트를 포함한다. 클라이언트는 기본 가상 머신들(233)을 통해 서버와 통신하여 가상 머신 풀 적하목록(220)에 포함된 다양한 구성 정의들에 따라 가상 머신 인스턴스(a virtual machine instance)를 생성, 복제 또는 액세스할 수 있다.
[0041] 애플리케이션 수명 주기 관리자(240)는 애플리케이션들(250)의 수명 주기를 관리하도록 구성된 가상 머신 풀 관리 시스템(200)의 컴포넌트이다. 애플리케이션 수명 주기 관리자(240)는 애플리케이션을 로드 할 기본 가상 머신(233)을 요청할 수 있다. 또한, 애플리케이션 수명 주기 관리자(240)는 애플리케이션들이 로드되는 순서에서 어떤 애플리케이션들이 로드되어야 하는지를 결정할 수 있다. 일부 실시예들에서, 애플리케이션 수명 주기 관리자(240)는 추가 기본 가상 머신들(233)이 가상 머신 풀(230)에 추가되도록 요청할 수 있다. 예를 들어, 다수의 애플리케이션들(250)이 작동 중일 수 있고, 작동 속도 저하를 피하기 위해, 애플리케이션 수명 주기 관리자(240)는 대기 모드에 있는 기본 가상 머신들(233)에 자원들을 할당하고 코어 프로그램 패키지들을 로드하도록 요청할 수 있다. 추가 기본 가상 머신들(233)은 또한 가상 머신 풀(230) 내에서 시작될 수 있고 대기 모드 구성에 배치될 수 있다. 이들 기본 가상 머신들(233)은 할당된 자원들 또는 프로그램 로직을 갖지 않을 수 있다.
[0042] 애플리케이션 로직 인젝션 관리자(application logic injection manager)(244)는 고유한 애플리케이션 로직(unique application logic)을 기본 가상 머신들(233)에 로드하도록 구성된 애플리케이션 수명 주기 관리자(240)의 컴포넌트이다. 애플리케이션 로직 인젝션 관리자(244)는 기본 가상 머신(233) 상에 로드될 애플리케이션(250)을 식별하고 애플리케이션(250)의 실행을 허용하기 위해 애플리케이션-특정 정보를 로드할 수 있다. 예를 들어, 애플리케이션 클래스들(application classes)이 로드될 수 있고, 주입 지점들(injection points)이 기본 가상 머신(233)의 수용체들(receptors)에 부착될 수 있다.
[0043] 애플리케이션 자원 할당기(application resource assigner)(248)는 애플리케이션(250)이 요구하는 자원들을 가상 머신(233)에 할당하도록 구성된 애플리케이션 수명 주기 관리자(240)의 컴포넌트이다. 애플리케이션 자원 할당기(248)는 기본 가상 머신(233)에 할당된 초기 자원들을 가상 머신(233)에 로드되는 애플리케이션(250)의 자원 정보(251)와 비교할 수 있다. 만일 자원들(235)이 서로 다르다면, 애플리케이션 자원 할당기(248)는 가상 머신(233)에 자원들을 재할당할 수 있다. 예를 들어, 기본 가상 머신(233)은 50MB의 스토리지를 포함하고 기본 가상 머신(233)에 로드되는 애플리케이션(250)은 65MB의 스토리지를 필요로 하면, 애플리케이션 자원 할당기(248)는 애플리케이션이 로드되고 실행될 수 있도록 적어도 65MB의 스토리지를 기본 가상 머신(250)에 재할당할 수 있다.
[0044] 일부 실시예들에서, 만일 초기 자원들이 애플리케이션(250)에 대한 자원 정보(251)에 기초하여 충분한 자원들을 적절하게 제공한다면, 애플리케이션 자원 할당기(248)는 어떠한 자원들도 재할당하지 않는다. 일부 실시예들에서, 만일 초기 자원들이 애플리케이션(250)에 대한 자원 정보(251)에 기초하여 충분한 자원들을 적절하게 제공하면, 애플리케이션 자원 할당기(248)는 자원들을 평가하고 임의의 불필요한 자원들을 할당 해제한다. 예를 들어, 만일 초기 자원들이 200KB의 메모리를 포함하고 애플리케이션(250)이 100KB의 메모리만 요구한다면, 애플리케이션 자원 할당기(248)는 가상 머신(233)으로부터 최대 100KB의 메모리를 할당 해제할 수 있다.
[0045] 애플리케이션들(250)은 차량-내 디바이스(105)에 의해 실행될 수 있는 가상 머신 풀 관리 시스템(200)의 소프트웨어이다. 애플리케이션들에는 텔레매틱스 서비스들, 도로 정보, 교통 정보, 날씨 정보, 차량 관리, 건강 검진들, 긴급 지원, 음악/비디오, 보험, 뉴스 및 인포테인먼트와 같은 기능들이 포함된다. 각 애플리케이션(250)은 애플리케이션(250)과 관련된 자원 정보(251)를 추가로 포함한다. 자원 정보(251)는 특정 애플리케이션(250)을 실행 및 동작시키는데 필요한 수의 자원들을 포함할 수 있다. 예를 들어, 날씨 정보를 제공하는 애플리케이션(250)은 자원 정보(251)가 저장할 수 있는 일정량의 메모리, 스토리지, CPU 사용량을 요구할 수 있다.
[0046] 애플리케이션 패키지 관리자(260)는 가상 머신 풀 관리 시스템(200)이 제공하는 애플리케이션들(250)을 설치 및 업데이트하도록 구성된 가상 머신 풀 관리 시스템(200)의 컴포넌트이다. 애플리케이션 패키지 관리자(260)는 차량-내 디바이스(105)로부터 애플리케이션들(250)을 설치, 업그레이드, 구성, 및 제거하는 프로세스를 자동화할 수 있다. 애플리케이션 패키지 관리자(260)는 아카이브 파일들의 소프트웨어 및 데이터의 배포 판들(distributions of software and data in archive files)인 패키지들을 처리할 수 있다. 상기 패키지들은 애플리케이션(250)의 이름, 목적에 관한 설명, 버전 번호, 벤더, 체크섬, 및 애플리케이션(250)이 적절하게 실행되는 데 필요한 종속성들의 목록(a list of dependencies)(예: 자원 정보 251)과 같은, 메타데이터를 포함할 수 있다. 설치 시, 메타데이터를 로컬 패키지 데이터베이스에 저장할 수 있다. 애플리케이션 패키지 관리자(260)는 소프트웨어 미스매치들 및 전제조건 누락들을 방지하기 위해 애플리케이션(250) 종속성들 및 버전 정보의 데이터베이스를 유지할 수 있다.
[0047] 도 2는 예시적인 가상 머신 풀 관리 시스템(200)의 주요 대표 컴포넌트들을 나타내기 위한 것임에 유의한다. 그러나, 일부 실시예들에서, 개별 컴포넌트들은 도 2에 표시된 것보다 더 크거나 덜 복잡할 수 있고, 도 2에 표시된 것 이외의 컴포넌트들이 존재할 수 있으며 이러한 컴포넌트들의 수, 유형, 및 구성은 다를 수 있다.
[0048] 도 3은, 본 발명의 실시예들에 따라, 애플리케이션 시작 전에 가상 머신 컴포넌트들을 미리-모으기(pre-pooling) 하는 프로세스(300)를 나타내는 플로 다이어그램이다. 프로세스(300)는 가상 머신 풀 관리 시스템(200)이 시작될 때 가상 머신 풀 적하목록(virtual machine pool manifest)(220)를 읽는 가상 머신 풀 관리자(210)에 의해 시작된다. 이는 단계(310)에 예시되어 있다. 가상 머신 풀 관리자(210)는 초기 가상 머신(233) 요건들을 읽을 수 있다. 이들 요건들은, 예를 들어, 가상 머신 풀(230)에 배치될 기본 가상 머신들(233)의 초기 수, 자원 정의에 기초한 각 가상 머신(233)에 대한 자원들(235)의 할당, 디폴트 환경 자원 할당 및 차량-내 디바이스(105)가 임의의 주어진 시간에 실행할 수 있는 애플리케이션의 최대 수를 나타내는 파라미터를 포함할 수 있다.
[0049] 가상 머신 풀 관리자(210)는 기본 가상 머신들(233)을, 가상 머신 풀 적하목록(220)에 표시된 바와 같은, 가상 머신 풀(230)에서 시작한다(launch). 이것은 단계(320)에 도시되어 있다. 가상 머신 풀(230)은 가상 머신 풀 관리자(210)에 의해 구성될 수 있는 임의의 수의 별개의 기본 가상 머신들(233)을 저장할 수 있다. 시작할 때(Upon launch), 기본 가상 머신들(233)에는 자원 할당이 부족하고 로드된 코어 프로그램 패키지들이 없다. 일부 실시예들에서, 기본 가상 머신들(233)은 가상 머신 풀 적하목록(220)에 의해 표시된 타임라인(a timeline)에 따라 시작된다. 예를 들어, 가상 머신 풀 적하목록(220)은 시작할 때에는 12개의 기본 가상 머신들(233)이 시작되고, 그 다음 미리 결정된 시간 후에 다른 5개의 기본 가상 머신들(233)이 시작될 것임을 표시할 수 있다. 기본 가상 머신들(233)의 이러한 일련의 미리 결정된 시작들(launches)은 가상 머신 풀 적하목록(220)이 시작하도록 구성된 수들만큼 발생할 수 있다.
[0050] 가상 머신 풀 관리자(210)는 초기 자원들(235)을 단계(320)에서 시작된 기본 가상 머신들(233)의 일부에 할당한다. 이는 단계(330)에 도시되어 있다. 자원들(235)이 할당된 기본 가상 머신들(233)은 가상 머신 풀 적하목록(220)에 의해 미리 결정될 수 있다. 또한 자원이 할당되는 기본 가상 머신들(233)의 수는 기동 시 차량(100)에 의해 요구되는 애플리케이션들(250)의 수에 기초하여 최적화된 수일 수 있다. 이들 애플리케이션들에는, 예를 들어, 텔레매틱스 서비스들, 도로 정보, 교통 정보, 날씨 정보, 차량 관리, 건강 검진들, 응급 지원, 음악/비디오, 보험, 뉴스, 및 인포테인먼트(telematics services, road information, traffic information, weather information, fleet management, health checks, emergency assistance, music/video, insurance, news, and infotainment)가 포함된다. 기본 가상 머신들(233)의 나머지 부분은 필요할 때까지 대기 구성(a wait configuration)에 배치될 수 있다.
[0051] 대기 구성에 배치된 기본 가상 머신들(233)을 가짐으로써, 가상 머신 풀 관리 시스템(200)은 애플리케이션(250)이 시작되어야 할 때 가상 머신(233)을 시작하는 추가 시간을 소비할 필요가 없다. 또한, 자원들(235)이 할당된 모든 기본 가상 머신들(233)이 애플리케이션에 즉시 할당되지 않을 수 있고, 대신에 차량-내 디바이스(105)의 작동 동안 버퍼로서 작용할 수 있다. 기본 가상 머신들(233)이 애플리케이션들(250)에 의해 요청되고 사용됨에 따라, 버퍼를 유지하고 애플리케이션(250)의 기동 프로세스를 가속화하기 위해 더 많은 가상 머신들이 가상 머신 풀(230)로 실행될 수 있다.
[0052] 애플리케이션 패키지 관리자(260)는 자원들(235)이 할당된 기본 가상 머신들(233)의 일부에 코어 프로그램 패키지들을 로드한다. 이것은 단계(340)에 도시되어 있다. 코어 프로그램 패키지들에는 애플리케이션 로직이 없는 자바 가상 머신(JVM) 환경이 포함될 수 있다. 다른 코어 프로그램 패키지들에는, 예를 들어, 가상 머신 기본 코드, 클래스 라이브러리들(예: Java), 서비스 애플리케이션 프로그래밍 인터페이스(API), 및 UI 수명 주기 관리 소프트웨어가 포함된다. 코어 프로그램 패키지들에는 로드할 애플리케이션 로직에 대한 쉘들(shells)을 나타낼 수 있는 수용체들(receptors)이 포함될 수 있다. 일단 가상 머신(233)에 자원들(235)이 할당되고 코어 프로그램 패키지들이 로드 되면, 일단 가상 머신(233)은 준비된 구성으로 배치되어 애플리케이션이 할당되고 로드 될 수 있다.
[0053] 애플리케이션 수명 주기 관리자(240)는 준비된 구성에 있는 기본 가상 머신(233)에 애플리케이션(250)을 할당한다. 이것은 단계(350)에 도시되어 있다. 일부 실시예들에서, 애플리케이션 수명 주기 관리자(240)는 애플리케이션들이 로드되는 순서에서 로드되는 애플리케이션들을 결정한다. 애플리케이션 수명 주기 관리자(240)가 애플리케이션(250)을 선택하고 할당하는 순서는 차량-내 디바이스(105)에 의해 필요한 애플리케이션(250)의 긴급도의 필요성에 기초할 수 있다. 예를 들어, 차량(100)의 기동 시 시스템 진단들을 제공하는 애플리케이션(250)은 승객에게 인포테인먼트(infotainment)를 제공하는 애플리케이션(250) 이전에 가상 머신(233)에 할당될 수 있다.
[0054] 일부 실시예들에서, 애플리케이션 수명 주기 관리자(250)는 시작되는 애플리케이션(250)과 관련된 애플리케이션 유형에 기초하여 준비된 구성의 기본 가상 머신(233)에 애플리케이션을 할당한다. 예를 들어, 애플리케이션(250)의 자원들 정보(251)가 기본 가상 머신(233)에 할당된 초기 자원들(235)과 매치하기 때문에 UI가 필요하지 않은 애플리케이션(250)이 먼저 실행될 수 있다. 따라서, 추가 자원들(235)이 가상 머신(233)에 재할당될 필요가 없고, 애플리케이션(250)은 추가 자원들을 필요로 할 수 있는 애플리케이션(250)보다 빠르게 시작할 수 있다.
[0055] 애플리케이션 로직 주입 관리자(244)는 기본 가상 머신(233)에서 애플리케이션(250)을 시작한다. 이것은 단계(360)에 도시되어 있다. 애플리케이션 로직은, 예를 들어, 애플리케이션-특정 클래스들(application-specific classes), 방법들, 및 추가 코드를 포함한다. 애플리케이션 로직 주입 관리자(244)는 애플리케이션(250)과 관련된 애플리케이션 로직을 가상 머신(233)에 로드 할 수 있다. 또한, 주입 지점들은 코어 프로그램 패키지들로 로딩된 가상 머신(233)에 포함된 수용체들에 부착될 수 있다.
[0056] 일부 실시예들에서, 애플리케이션 자원 할당기(248)는 애플리케이션(250)의 자원 정보(251) 및 가상 머신(233)에 할당된 초기 자원들(235)을 분석한다. 분석에 기초하여, 애플리케이션 자원 할당자는 자원들(235)을 가상 머신(233)에 재할당하고 애플리케이션이 성공적으로 시작되도록 할 수 있다. 예를 들어, 초기 자원들(235)이 45KB의 사용 가능한 메모리를 포함하고 애플리케이션(250)이 실행되기 위해 100KB의 메모리가 필요한 경우, 애플리케이션 자원 할당기(248)는 애플리케이션(250)이 적절하게 시작할 수 있도록 추가 메모리를 가상 머신(233)에 재할당할 수 있다.
[0057] 일부 실시예들에서, 애플리케이션 자원 할당기(248)는 애플리케이션(250)의 자원 정보(251) 및 가상 머신(233)에 할당된 초기 자원들(235)을 분석한다. 분석에 기초하여, 애플리케이션 자원 할당자는 불필요한 자원들(235)을 다시 자원 풀에 재할당할 수 있다. 애플리케이션(250)이 애플리케이션 로직을 로드하고 주입 지점들이 부착되면, 애플리케이션 수명 주기 관리자(240)는 애플리케이션(250)을 실행한다. 이것은 단계(370)에 도시되어 있다. 애플리케이션 수명 주기 관리자(240)는 동작 및 실행 중에 애플리케이션(250)을 모니터링하고 애플리케이션(250)을 종료할지 여부와 종료 시점을 결정할 수 있다.
[0058] 이제 도 4를 참조하면, 방법들, 도구들, 및 모듈들, 및 본 발명내용의 실시예들에 따라, 본 명세서(예를 들어, 하나 혹은 그 이상의 프로세서 회로들 또는 컴퓨터의 컴퓨터 프로세서들 사용)에 기술된, 모든 관련 기능들 중 하나 혹은 그 이상을 구현하는 데 사용될 수 있는 예시적인 컴퓨터 시스템(400)(예를 들어, 가상 머신 풀 관리 시스템 100)의 하이-레벨 블록도가 도시되어 있다. 일부 실시예들에서, 컴퓨터 시스템(400)의 주요 컴포넌트들은 하나 혹은 그 이상의 프로세서들(402), 메모리(404), 터미널 인터페이스(412), I/O(입력/출력) 디바이스 인터페이스(414), 스토리지 인터페이스(416), 및 네트워크 인터페이스(418), 모두 통신적으로 결합될 수 있으며, 직접 또는 간접적으로, 메모리 버스(403)를 통한 컴포넌트-간 통신을 위해, I/O 버스(408), 및 I/O 버스 인터페이스(410)을 포함할 수 있다.
[0059] 컴퓨터 시스템(400)은 하나 혹은 그 이상의 일반-프로그래밍 가능 중앙 처리 장치들(CPU들)(402-1, 402-2, 402-3 및 402-N)를 포함할 수 있으며, 여기에서는 일반적으로 프로세서(402)라고 한다. 일부 실시예들에서, 컴퓨터 시스템(400)은 상대적으로 큰 시스템에 전형적인 다수의 프로세서들을 포함할 수 있다; 그러나, 다른 실시예들에서, 컴퓨터 시스템(400)은 대안적으로 단일 CPU 시스템일 수 있다. 각각의 프로세서(401)는 메모리(404)에 저장된 명령들을 실행할 수 있고 하나 혹은 그 이상의 온-보드 캐시 레벨들을 포함할 수 있다.
[0060] 메모리(404)는 랜덤-엑세스 메모리(RAM)(422) 또는 캐시 메모리(424)와 같은 휘발성 메모리 형태의 컴퓨터 시스템 판독 가능 매체를 포함할 수 있다. 컴퓨터 시스템(400)은 다른 이동식/비-이동식, 휘발성/비-휘발성 컴퓨터 시스템 스토리지 매체를 더 포함할 수 있다. 단지 예로서, 스토리지 시스템(426)은, "하드 드라이브"와 같은, 비-착탈식, 비-휘발성 자기 매체로부터 읽고 기록하기 위해 제공될 수 있다. 도시되지는 않았지만, 착탈식에서 읽고 쓰기 위한 자기 디스크 드라이브, 비-휘발성 자기 디스크(예: "플로피 디스크"), 또는 착탈식에서 읽거나 쓰기 위한 광학 디스크 드라이브, CD-ROM, DVD-ROM 또는 기타 광 매체와 같은 비-휘발성 광 디스크가 제공될 수 있다. 또한, 메모리(404)는 플래시 메모리, 예를 들어, 플래시 메모리 스틱 드라이브 또는 플래시 드라이브를 포함할 수 있다. 메모리 디바이스들은 하나 혹은 그 이상의 데이터 미디어 인터페이스들에 의해 메모리 버스(403)에 연결될 수 있다. 메모리(404)는 다양한 실시예들의 기능들을 수행하도록 구성된 프로그램 모듈들 세트(예를 들어, 적어도 하나)를 갖는 적어도 하나의 프로그램 제품을 포함할 수 있다.
[0061] 메모리 버스(403)는 프로세서들(402), 메모리 404, 및 I/O 버스 인터페이스(410) 사이에 직접적인 통신 경로를 제공하는 단일 버스 구조로서 도 4에 도시되어 있지만, 메모리 버스(403)는, 일부 실시예들에서, 다수의 다양한 버스들 또는 통신 경로들을 포함할 수 있고, 이들은 계층 구조, 스타 또는 웹 구성들의 지점-간 링크들, 다수의 계층 버스들, 병렬 및 중복 경로들, 또는 다른 적절한 유형의 구성과 같은, 다양한 형태들로 구성될 수 있다. 뿐만 아니라, I/O 버스 인터페이스(410) 및 I/O 버스(408)가 각각 단일 유닛들로 도시되어 있지만, 컴퓨터 시스템(400)은, 일부 실시예들에서, 다수의 I/O 버스 인터페이스 유닛들, 다수의 I/O 버스, 또는 둘 다를 포함할 수 있다. 또한, 다양한 I/O 디바이스들에 대해 실행되는 다양한 통신들 경로들로부터 I/O 버스(408)를 분리하는, 다수의 I/O 인터페이스 유닛들이 도시되어 있지만, 다른 실시예들에서 일부 또는 모든 I/O 디바이스들은 하나 혹은 그 이상의 시스템 I/O 버스들에 직접 연결될 수 있다.
[0062] 일부 실시예들에서, 컴퓨터 시스템(400)은 멀티-사용자 메인프레임 컴퓨터 시스템, 단일-사용자 시스템, 또는 직접적인 사용자 인터페이스가 거의 없거나 전혀 없지만 다른 컴퓨터 시스템들(클라이언트들)으로부터 요청들을 수신하는 서버 컴퓨터 또는 유사한 디바이스일 수 있다. 또한, 일부 실시예들에서, 컴퓨터 시스템(400)은 데스크탑 컴퓨터, 휴대용 컴퓨터, 랩탑 또는 노트북 컴퓨터, 태블릿 컴퓨터, 포켓 컴퓨터, 전화, 스마트폰, 네트워크 스위치들 또는 라우터들, 또는 임의의 다른 적절한 유형의 전자 디바이스로서 구현될 수 있다.
[0063] 도 4는 예시적인 컴퓨터 시스템(400)의 주요 대표 컴포넌트들을 나타내도록 의도되었다는 점에 유의한다. 그러나, 일부 실시예들에서 개별 컴포넌트들은 도 4에 표시된 것보다 더 크거나 덜 복잡할 수 있고, 도 4에 표시된 것 이외의 컴포넌트들이 존재할 수 있으며, 이러한 컴포넌트들의 수, 유형, 및 구성이 다를 수 있다.
[0064] 각각이 프로그램 모듈들(430)의 적어도 하나의 세트를 갖는 하나 혹은 그 이상의 프로그램들/유틸리티들(428)(예를 들어, 가상 머신 풀 관리 시스템 100)는 메모리(404)에 저장될 수 있다. 프로그램들/유틸리티들(428)는 하이퍼바이저(가상 머신 모니터라고도 함), 하나 혹은 그 이상의 운영 체제들, 하나 혹은 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터를 포함할 수 있다. 각각의 운영 체제들, 하나 혹은 그 이상의 애플리케이션 프로그램들, 기타 프로그램 모듈들, 및 프로그램 데이터 또는 이들의 조합은, 네트워킹 환경의 구현을 포함할 수 있다. 프로그램들(428) 및/또는 프로그램 모듈들(430)은 일반적으로 다양한 실시예들의 기능들 또는 방법들을 수행한다.
[0065] 본 발명은 클라우드 컴퓨팅에 대한 상세한 설명을 포함하지만, 여기에 인용된 기술적 사상의 구현은 클라우드 컴퓨팅 환경에 제한되지 않는다는 것이 이해된다. 오히려, 본 발명의 실시예는 현재 알려져 있거나 나중에 개발될 모든 다른 유형의 컴퓨팅 환경과 함께 구현될 수 있다.
[0066] 클라우드 컴퓨팅은, 최소한의 관리 노력 또는 서비스 제공자와의 상호작용으로 빠르게 제공되고 해제될 수 있는, 구성 가능한(configurable) 컴퓨팅 자원들(예를 들어, 네트워크들, 네트워크 대역폭, 서버들, 처리, 메모리, 스토리지, 애플리케이션들, 가상 머신들, 및 서비스들)의 공유 풀에 대한 편리한 주문형(on-demand) 네트워크 액세스를 가능하게 하는 서비스 전달 모델이다. 이 클라우드 모델은 적어도 5가지의 특성들(characteristics), 적어도 3가지 서비스 모델들(service models), 및 적어도 4가지 배치 모델들(deployment models)을 포함할 수 있다.
[0067] 특성들은 다음과 같다:
[0068] 주문형 셀프-서비스(On-demand self-service): 클라우드 소비자는, 서비스 제공자와의 인적 상호작용을 필요로 하지 않고 필요한 만큼 자동적으로, 서버 시간(server time) 및 네트워크 스토리지 같은 컴퓨팅 용량들을 일방적으로 제공(provision)할 수 있다.
[0069] 광역 네트워크 액세스(Broad network access): 혼성의 씬 또는 씩 클라이언트 플랫폼들(heterogeneous thin or thick client platforms)(예를 들어, 모바일폰들, 랩탑들, 및 PDA들)에 의한 사용을 장려하는 표준 메커니즘들을 통해 액세스되는 기능들을 네트워크를 통해서 이용할 수 있다.
[0070] 자원 풀링(자원 모으기)(Resource pooling): 제공자의 컴퓨팅 자원들은, 각기 다른 물리적 및 가상 자원들을 요구(demand)에 따라 동적으로 할당 및 재할당하는, 멀티-테넌트 모델(a multi-tenant model)을 사용하는 다수의 소비자들에게 서비스할 수 있도록 풀에 넣어둔다(pooled). 소비자는 일반적으로 제공된 자원들의 정확한 위치를 제어할 수 없거나 그에 대한 지식이 없지만 더 높은 추상 수준에서(예를 들어, 국가, 주, 또는 데이터센터) 위치를 명시할 수 있다는 점에서 위치 독립성이 있다.
[0071] 기민한 탄력성(Rapid elasticity): 용량들(capabilities)이 기민하게 탄력적으로 제공되어 (어떤 경우엔 자동으로) 신속히 규모를 확장할 수도 있고(scale out) 그리고 탄력적으로 해제되어 신속히 규모를 축소할 수도 있다(scale in). 소비자에게 제공할 수 있는 가능성이 종종 무제한이고 언제든지 원하는 수량으로 구매할 수 있는 것처럼 보인다.
[0072] 측정 가능한 서비스(Measured service): 클라우드 시스템들은 자원 사용을 자동으로 제어하고 최적화하는데, 서비스의 유형(예를 들어, 스토리지, 처리, 대역폭, 및 활성 사용자 계정)에 적절한 추상화 수준에서(at some level of abstraction) 계측 기능을 이용하여서 그렇게 한다. 자원 사용량은 모니터 되고, 제어되고, 그리고 보고될 수 있으며 이로써 이용하는 서비스의 제공자와 사용자 모두에게 투명성을 제공한다.
[0073] 서비스 모델들(Service Models)은 다음과 같다:
[0074] 소프트웨어 서비스(Software as a Service)(SaaS): 소비자에게 제공되는 서비스는 클라우드 하부구조 상에서 실행되는 제공자의 애플리케이션들을 사용하게 해주는 것이다. 애플리케이션들은 웹 브라우저(예를 들어, 웹기반 이메일) 같은 씬(thin) 클라이언트 인터페이스를 통해 여러 클라이언트 장치들에서 액세스 가능하다. 소비자는 네트워크, 서버들, 운영 체제들, 스토리지, 또는 개별 애플리케이션 능력들을 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 단, 제한된 사용자-특정 애플리케이션 구성 세팅들은 예외로서 가능하다.
[0075] 플랫폼 서비스(Platform as a Service)(PaaS): 소비자에게 제공되는 서비스는 제공자에 의해 지원되는 프로그래밍 언어들 및 도구들을 이용하여 생성된 소비자-생성 또는 획득 애플리케이션들을 클라우드 하부구조에 배치하게 해주는 것이다. 소비자는 네트워크, 서버들, 운영 체제들, 또는 스토리지를 포함하는 하부 클라우드 하부구조를 관리하거나 제어하지 않는다. 그러나 배치된 애플리케이션들에 대해서 그리고 가능한 경우 애플리케이션 호스팅 환경 구성들에 대해서 제어할 수 있다.
[0076] 하부구조 서비스(Infrastructure as a Service)(IaaS): 소비자에게 제공되는 서비스는 처리, 스토리지, 네트워크, 및 기타 기본 컴퓨팅 자원들을 제공하여 주는 것이며, 여기서 소비자는 임의의 소프트웨어를 배치 및 실행할 수 있고, 이 소프트웨어에는 운영 체제들과 애플리케이션들이 포함될 수 있다. 소비자는 하부 클라우드 하부구조를 관리하거나 제어하지 않지만, 운영 체제들, 스토리지, 배치된 애플리케이션들, 및 가능한 경우 선택된 네트워킹 컴포넌트들의 제한적인 제어(예를 들어, 호스트 방화벽들)에 대하여 제어할 수 있다.
[0077] 배치 모델들(Deployment Models)은 다음과 같다:
[0078] 사설 클라우드(Private cloud): 클라우드 하부구조는 오직 한 조직(an organization)을 위해서 운영되고, 그 조직 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0079] 커뮤니티 클라우드(Community cloud): 클라우드 하부구조는 여러 조직들에 의해 공유되고 관심사(예를 들어, 선교, 보안 요건, 정책, 및 규정 준수 심사)를 공유하는 특정 커뮤니티를 지원하며, 여러 조직들 또는 제3자에 의해 관리될 수 있으며 옥내(on-premises) 또는 옥외(off-premises)에 위치할 수 있다.
[0080] 공공 클라우드(Public cloud): 클라우드 하부구조는 일반 대중 또는 대규모 산업 집단에서 이용할 수 있으며 클라우드 서비스를 판매하는 조직이 소유한다.
[0081] 하이브리드 클라우드(Hybrid cloud): 클라우드 하부구조는 둘 또는 그 이상의 클라우드들(사설, 커뮤니티, 또는 공공)이 혼합된 구성이며, 이들은 고유한 주체들로 있지만 데이터 및 애플리케이션 이식가능성(portability)을 가능하게 해주는 표준화된 또는 소유권 있는 기술(예를 들어, 클라우드들 사이의 부하 균형을 위한 클라우드 버스팅(cloud bursting))에 의해 서로 결합되어 있다.
[0082] 클라우드 컴퓨팅 환경은 상태비보존(statelessness), 낮은 결합(low coupling), 모듈 방식(modularity), 및 의미적 상호운용성(semantic interoperability)에 집중하는 서비스를 지향한다. 클라우드 컴퓨팅의 중심에는 상호 연결된 노드들의 네트워크를 포함하는 하부구조가 있다.
[0083] 이제 도 5를 참조하면, 예시적인 클라우드 컴퓨팅 환경(500)이 도시된다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(500)은, 예를 들어, 개인 휴대 정보 단말기(PDA) 또는 휴대폰(520-1), 데스크탑 컴퓨터(520-2), 랩탑 컴퓨터(520-3), 및/또는 자동차용 컴퓨터 시스템(520-4)과 통신할 수 있는 것과 같이, 클라우드 소비자가 사용하는 로컬 컴퓨팅 디바이스가 하나 또는 그 이상의 클라우드 컴퓨팅 노드들(510)을 포함한다. 노드들(510)은 서로 통신할 수 있다. 이들은 여기에 기술된 바와 같은 사설, 커뮤니티, 공공, 또는 하이브리드 클라우드들 또는 이들의 조합 등의 하나 또는 그 이상의 네트워크들에서 물리적으로 또는 가상으로 그룹화될 수 있다(도시되지 않음). 이것은 클라우드 소비자가 로컬 컴퓨팅 장치 상에 자원들을 유지할 필요가 없게 클라우드 컴퓨팅 환경(500)이 하부구조, 플랫폼들 및/또는 소프트웨어를 서비스로서 제공할 수 있게 해준다. 도 5에 도시된 컴퓨팅 장치들(520-1 내지 520-4)의 유형들은 단지 예시의 목적으로 기술한 것이며 컴퓨팅 노드들(510)과 클라우드 컴퓨팅 환경(500)은 모든 유형의 네트워크 및/또는 네트워크 주소지정가능 연결을 통해서 (예를 들어, 웹 브라우저를 사용하여) 모든 유형의 컴퓨터화된 디바이스와 통신할 수 있다는 것을 이해해야 한다.
[0084]이제 도 6을 참조하면, 클라우드 컴퓨팅 환경(500)(도 5)에 의해 제공되는 일 세트의 기능별 추상화 층들이 도시된다. 도 6에 도시된 컴포넌트들, 층들, 및 기능들은 단지 예시의 목적이며 본 발명의 바람직한 실시 예들은 이것에 한정되지 않는다는 것을 미리 이해해야 한다. 도시된 바와 같이, 다음의 층들과 그에 대응하는 기능들이 제공된다:
[0085]하드웨어 및 소프트웨어 층(610)은 하드웨어 및 소프트웨어 컴포넌트들을 포함한다. 하드웨어 컴포넌트들의 예들에는: 메인프레임들(611); RISC(Reduced Instruction Set Computer) 아키텍처 기반 서버들(612); 서버들(613); 블레이드 서버들(614); 스토리지 디바이스들(615); 그리고 네트워크 및 네트워킹 컴포넌트들(616)이 포함된다. 일부 실시 예들에서, 소프트웨어 컴포넌트들은 네트워크 애플리케이션 서버 소프트웨어(617) 및 데이터베이스 소프트웨어(618)를 포함한다.
[0086]가상화 층(620)은 추상화 층을 제공하며 이로부터 다음의 가상 주체들의 예들이 제공될 수 있다: 가상 서버들(621); 가상 스토리지(622); 가상 사설 네트워크들을 포함하는, 가상 네트워크들(623); 가상 애플리케이션들 및 운영 체제들(624); 및 가상 클라이언트들(625).
[0087]일 예에서, 관리 층(630)은 아래에 기술하는 기능들을 제공한다. 자원 제공(Resource provisioning)(631)은 클라우드 컴퓨팅 환경 내에서 작업들을 수행하는 데 이용되는 컴퓨팅 자원들 및 기타 자원들의 동적 조달을 제공한다. 계측 및 가격 책정(Metering and Pricing)(632)은 자원들이 클라우드 컴퓨팅 환경 내에서 이용될 때 비용 추적, 및 이 자원들의 소비에 대한 요금 청구 또는 송장을 제공한다. 한 예에서, 이들 자원들은 애플리케이션 소프트웨어 라이센스를 포함할 수 있다. 보안(Security)은 데이터 및 기타 자원들에 대한 보호뿐 아니라 클라우드 소비자들과 작업들에 대한 신원 확인을 제공한다. 사용자 포털(User portal)(633)은 소비자들 및 시스템 관리자들에게 클라우드 컴퓨팅 환경에 대한 액세스를 제공한다. 서비스 수준 관리(Service level management)(634)는 요구되는 서비스 수준이 충족되도록 클라우드 컴퓨팅 자원 할당 및 관리를 제공한다. 서비스 수준 협약서(SLA) 기획 및 충족(planning and fulfillment)(635)은 SLA에 부합하는 예상되는 미래 요건에 맞는 클라우드 컴퓨팅 자원들의 사전-배치(pre-arrangement) 및 조달(procurement)을 제공한다.
[0088]워크로드 층(640)은 클라우드 컴퓨팅 환경이 이용될 수 있는 기능들의 예들을 제공한다. 이 층에서 제공될 수 있는 워크로드들과 기능들의 예들은 다음을 포함한다: 맵핑 및 네비게이션(641); 소프트웨어 개발 및 수명 주기 관리(642); 가상 교실 교육 전달(643); 데이터 분석 처리(644); 트랜잭션 처리(645); 및 정밀 코어트 분석(precision cohort analytics)(646).
[0089]본 발명의 실시 예들은 통합의 모든 가능한 기술적 수준에서 시스템, 방법, 및/또는 컴퓨터 프로그램 제품이 될 수 있다. 컴퓨터 프로그램 제품은 컴퓨터 판독 가능 스토리지 매체(또는 매체)를 포함할 수 있으며, 이 매체 상에 프로세서가 본 발명의 실시 예들을 수행하도록 하는 컴퓨터 판독 가능 프로그램 명령들을 갖는다.
[0090]상기 컴퓨터 판독 가능 스토리지 매체는 명령 실행 장치에 의해 사용될 명령들을 유지 및 저장할 수 있는 유형의(tangible) 디바이스일 수 있다. 상기 컴퓨터 판독 가능 스토리지 매체는, 예를 들면, 전자 스토리지 디바이스, 자기 스토리지 디바이스, 광 스토리지 디바이스, 전자기 스토리지 디바이스, 반도체 스토리지 디바이스, 또는 전술한 것들의 모든 적절한 조합일 수 있으며, 그러나 이에 한정되지는 않는다. 컴퓨터 판독 가능 스토리지 매체의 더 구체적인 예들의 비포괄적인 목록에는 다음이 포함될 수 있다: 휴대용 컴퓨터 디스켓, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독-전용 메모리(ROM), 소거 및 프로그램가능 판독-전용 메모리(EPROM 또는 플래시 메모리), 정적 랜덤 액세스 메모리(SRAM), 휴대용 컴팩트 디스크 판독-전용 메모리(CD-ROM), 디지털 다용도 디스크(DVD), 메모리 스틱, 플로피 디스크, 천공-카드들 또는 명령들이 기록된 홈에 있는 융기된 구조들 같이 머신적으로 인코드 된 장치, 및 전술한 것들의 모든 적절한 조합. 본 명세서에서 사용될 때, 컴퓨터 판독 가능 스토리지 매체는 무선 전파들이나 다른 자유롭게 전파되는 전자기파들, 도파관이나 기타 전송 매체(예를 들어, 광섬유 케이블을 통해 전달되는 광 펄스들)를 통해 전파되는 전자기파들, 또는 선(wire)을 통해 전송되는 전기 신호들 같이 그 자체로 일시적인(transitory) 신호들로 해석되지는 않는다.
[0091]본 명세서에 기술되는 컴퓨터 판독 가능 명령들은, 예를 들어, 인터넷, 근거리 통신망, 광역 통신망 및/또는 무선 네트워크 등의 통신망(네트워크)을 통해 컴퓨터 판독 가능 스토리지 매체로부터 각각 컴퓨팅/처리 디바이스들로 또는 외부 스토리지 디바이스로부터 외부 컴퓨터로 다운로드 될 수 있다. 상기 통신망은 구리 전송 케이블들, 광 전송 섬유들, 무선 전송, 라우터들, 방화벽들, 스위치들, 게이트웨이 컴퓨터들 및/또는 엣지 서버들을 포함할 수 있다. 각 컴퓨팅/처리 유닛 내 네트워크 어댑터 카드 또는 네트워크 인터페이스는 상기 통신망으로부터 컴퓨터 판독 가능 프로그램 명령들을 수신하고 그 컴퓨터 판독 가능 프로그램 명령들을 각각의 컴퓨팅/처리 디바이스 내의 컴퓨터 판독 가능 스토리지 매체에 저장하기 위해 전송한다.
[0092]본 발명의 연산들을 실행하기 위한 컴퓨터 판독 가능 프로그램 명령들은 Smalltalk, C++ 또는 그와 유사 언어 등의 객체 지향 프로그래밍 언어와 "C" 프로그래밍 언어 또는 그와 유사한 프로그래밍 언어 등의 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 또는 그 이상의 프로그래밍 언어들을 조합하여 작성된(written) 어셈블러 명령들, 명령-세트-아키텍처(ISA) 명령들, 머신 명령들, 머신 종속 명령들, 마이크로코드, 펌웨어 명령들, 상태-셋팅 데이터, 집적회로를 위한 구성 데이터, 또는 소스 코드나 목적 코드일 수 있다. 상기 컴퓨터 판독 가능 프로그램 명령들은 전적으로 사용자의 컴퓨터상에서, 부분적으로 사용자의 컴퓨터상에서, 독립형(stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터상에서 그리고 부분적으로 원격 컴퓨터상에서 또는 전적으로 원격 컴퓨터나 서버상에서 실행될 수 있다. 위에서 마지막의 경우에, 원격 컴퓨터는 근거리 통신망(LAN) 또는 광역 통신망(WAN)을 포함한 모든 종류의 네트워크를 통해서 사용자의 컴퓨터에 접속될 수 있고, 또는 이 접속은 (예를 들어, 인터넷 서비스 제공자를 이용한 인터넷을 통해서) 외부 컴퓨터에 이루어질 수도 있다. 일부 실시 예들에서, 예를 들어 프로그램 가능 로직 회로, 필드-프로그램 가능 게이트 어레이들(FPGA), 또는 프로그램 가능 로직 어레이들(PLA)을 포함한 전자 회로는 본 발명의 실시 예들을 수행하기 위해 전자 회로를 맞춤화하도록 상기 컴퓨터 판독 가능 프로그램 명령들의 상태 정보를 활용하여 상기 컴퓨터 판독 가능 프로그램 명령들을 실행할 수 있다.
[0093] 본 발명의 특징들이 본 발명의 실시 예들에 따른 방법들, 장치들(시스템들), 및 컴퓨터 프로그램 제품들의 플로 차트 예시도들 및/또는 블록도들을 참조하여 기술된다. 플로 차트 예시도들 및/또는 블록도들의 각 블록과 플로 차트 예시도들 및/또는 블록도들 내 블록들의 조합들은 컴퓨터 판독 가능 프로그램 명령들에 의해 구현될 수 있다는 것을 이해할 수 있을 것이다.
[0094]이들 컴퓨터 판독 가능 프로그램 명령들은 범용 컴퓨터, 특수목적용 컴퓨터, 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서에 제공되어 머신(machine)을 생성하고, 그렇게 하여 그 명령들이 상기 컴퓨터 또는 기타 프로그램가능 데이터 처리 유닛의 프로세서를 통해서 실행되어, 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현하기 위한 수단을 생성할 수 있다. 이들 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터 판독 가능 스토리지 매체에 저장될 수 있으며, 컴퓨터, 프로그램가능 데이터 처리 유닛 및/또는 기타 디바이스들에 지시하여 명령들이 저장된 상기 컴퓨터 판독 가능 스토리지 매체가 상기 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능/동작의 특징들을 구현하는 명령들을 포함하는 제조품(an article of manufacture)을 포함하도록 특정한 방식으로 기능하게 할 수 있다.
[0095]상기 컴퓨터 판독 가능 프로그램 명령들은 또한 컴퓨터, 기타 프로그램가능 데이터 처리 장치들, 또는 다른 디바이스에 로드 되어, 상기 컴퓨터, 기타 프로그램가능 장치 또는 다른 디바이스에서 일련의 동작 단계들이 수행되게 하여 컴퓨터 구현 프로세스를 생성하며, 그렇게 하여 상기 컴퓨터, 기타 프로그램가능 장치, 또는 다른 디바이스 상에서 실행되는 명령들이 플로 차트 및/또는 블록도의 블록 또는 블록들에 명시된 기능들/동작들을 구현할 수 있다.
[0096]도면들의 플로차트 및 블록도는 본 발명의 다양한 실시예들에 따른 시스템들, 방법들, 및 컴퓨터 프로그램 제품들의 가능한 구현들의 아키텍처, 기능, 및 동작을 예시한다. 이와 관련하여, 플로차트 또는 블록도들의 각 블록은, 특정 논리 기능(들)을 구현하기 위한 하나 혹은 그 이상의 실행 가능한 명령들을 포함하는, 모듈, 세그먼트, 또는 명령들의 일부를 나타낼 수 있다. 일부 대안적인 구현들에서, 블록들에 언급된 기능들은 도면들에 언급된 순서와 다르게 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록들은, 실제로, 실질적으로 동시에 실행될 수 있거나, 관련된 기능에 따라, 블록들이 때때로 역순으로 실행될 수 있다. 또한 블록도들 및/또는 플로차트의 각 블록, 및 블록도들 및/또는 플로차트 그림의 블록들의 조합들은, 특정 기능들을 수행하거나 특수 목적 하드웨어와 컴퓨터 명령들의 조합들을 수행하거나 수행하는 특수 목적 하드웨어-기반 시스템들에 의해 구현될 수 있다.
[0097] 본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 본 명세서에서 사용된 단수형은 문맥상 명백하게 다르게 나타내지 않는 한 복수형도 포함하는 것으로 의도된다. "포함하다" 및/또는 "포함하는"이라는 용어는 본 명세서에서 사용될 때 명시된 특징, 정수, 단계, 동작, 엘리멘트 및/또는 컴포넌트의 존재를 명시하지만, 하나 또는 그 이상의 다른 기능, 정수, 단계, 작업, 엘리멘트, 컴포넌트 및/또는 이들의 그룹의 존재 또는 추가를 배제하지 않는다. 다양한 실시예들의 예시적인 실시예에 대한 이전의 상세한 설명에서, 첨부된 도면들(동일한 번호는 유사한 엘리멘트를 나타냄)을 참조하였으며, 이는 본 명세서의 일부를 형성하고 특정 예시적 실시예를 예시로 도시되지만, 다양한 실시예들이 실시될 수 있다. 이들 실시예는 당업자가 실시예를 실시할 수 있도록 충분히 상세하게 설명되었지만, 다른 실시예가 사용될 수 있고 다양한 실시예의 범위를 벗어나지 않고 논리적, 기계적, 전기적 및 기타 변경이 이루어질 수 있다. 이전의 설명에서, 다양한 실시예들에 대한 완전한 이해를 제공하기 위해 다수의 구체적인 세부사항이 제시되었다. 그러나 다양한 실시예들은 이러한 특정 세부사항 없이 실시될 수 있다. 다른 경우에, 잘 알려진 회로, 구조 및 기술은 실시예를 모호하게 하지 않기 위해 자세히 도시되지 않았다.
[0098] 서로 다른 참조 번호들이 공통 번호 뒤에 다른 문자들이 오는 경우(예: 100a, 100b, 100c) 또는 구두점 뒤에 다른 숫자들이 오는 경우(예: 100-1, 100-2, 또는 100.1, 100.2), 참조 문자만 사용 문자나 뒤따르는 숫자들(예: 100)이 없으면 전체 엘리먼트들 그룹, 그룹의 서브세트, 또는 그룹의 예시 표본을 나타낼 수 있다.
[0099] 또한, 항목들 목록과 함께 사용될 때 "중 적어도 하나"라는 문구는 나열된 항목들 중 하나 혹은 그 이상의 다른 조합들이 사용될 수 있고, 목록의 각 항목 중 하나만 필요할 수 있음을 의미한다. 즉, "최소한 하나"는 항목들의 조합과 항목들 수를 목록에서 사용할 수 있지만, 목록의 모든 항목들이 필수는 아님을 의미한다. 항목은 특정 개체, 사물, 또는 범주일 수 있다.
[0100] 예를 들어, "항목 A, 항목 B, 또는 항목 C 중 적어도 하나"는 항목 A, 항목 A 및 항목 B, 또는 항목 B를 포함할 수 있으나, 이에 제한되지 않는다. 이 예에는 항목 A, 항목 B, 항목 C 또는 항목 B와 항목 C도 포함될 수 있다. 물론, 이러한 항목들의 모든 조합들이 존재할 수 있다. 일부 도시된 예들에서, "중 적어도 하나"는, 예를 들어, 제한 없이 항목 A 중 2개일 수 있으며; 항목 B 중 하나; 항목 C의 10개; 항목 B의 4개 및 항목 C의 7개; 또는 기타 적합한 조합들 일 수 있다.
[0101] 본 명세서 내에서 사용된 "실시예"라는 단어의 다른 인스턴스들은 반드시 동일한 실시예를 지칭하지는 않지만, 그럴 수도 있다. 본 명세서에 도시되거나 설명된 임의의 데이터 및 데이터 구조들은 단지 예들일 뿐이며, 다른 실시예들에서, 상이한 양들의 데이터, 데이터 유형들, 필드들, 수들 및 필드들의 유형들, 필드 이름들, 행들의 수들 및 유형들, 레코드들, 입력들(entries), 또는 조직들의 데이터를 사용할 수 있다. 또한, 어떠한 데이터도 로직과 결합할 수 있으므로, 별도의 데이터 구조가 필요하지 않을 수 있다. 따라서, 이전의 상세한 설명은, 제한적인 의미로 받아들여져서는 안 된다.
[0102] 본 발명의 다양한 실시예들에 대한 설명들은 도시의 목적들로 제공되었지만 개시된 실시예들로 제한되거나 배타적인 것으로 의도되지는 않는다. 기술된 실시예들의 범위 및 사상을 벗어나지 않고 많은 수정들 및 변형들이 당업자에게 명백할 것이다. 본 명세서에서 사용된 용어는 실시예들의 원리들, 시장에서 발견되는 기술들에 대한 실제 적용 또는 기술적 개선을 가장 잘 설명하거나, 당업자가 본 명세서에 개시된 실시예들을 이해할 수 있도록 선택되었다.
[0103] 비록 본 발명은 특정 실시예들의 관점들에서 설명되었으며, 그의 변경들 및 수정이 당업자에게 자명할 것으로 예상된다. 따라서, 다음의 청구범위들은 본 발명의 진정한 사상 및 범위 내에 있는 이러한 모든 변경들 및 수정들을 포함하는 것으로 해석되는 것으로 의도된다.

Claims (20)

  1. 차량-내 애플리케이션 기동(in-vehicle application startup) 전에 가상 머신 컴포넌트들을 미리-모으기(pre-pooling) 하는 컴퓨터-구현 방법에 있어서, 상기 컴퓨터-구현 방법은:
    가상 머신 풀 관리자에 의해 가상 머신 풀 적하목록(a virtual machine pool manifest)을 읽는 단계 - 상기 가상 머신 풀 적하목록은 시작할 가상 머신들(an initial number of virtual machines to launch)의 초기 수를 포함함 -;
    애플리케이션을 시작하기 전에 가상 머신 풀로 그리고 상기 초기 수에 기초하여 복수의 기본 가상 머신들을 시작하는 단계(launching);
    가상 머신 자원 정의에 기초하여 상기 기본 가상 머신들의 일부에 초기 자원들을 할당하는 단계; 및
    코어 프로그램 패키지들을 상기 기본 가상 머신들의 일부로 로드하는 단계를 포함하는
    컴퓨터-구현 방법.
  2. 제1항에 있어서, 상기 컴퓨터-구현 방법은:
    상기 애플리케이션과 관련된 애플리케이션 유형에 기초하여 상기 기본 가상 머신들의 일부로부터 애플리케이션 수명 주기 관리자(an application life cycle manager)로 제1 기본 가상 머신에 상기 애플리케이션을 할당하는 단계;
    상기 제1 기본 가상 머신에서 애플리케이션을 시작하는 단계; 및
    상기 애플리케이션을 실행하는 단계를 더 포함하는
    컴퓨터-구현 방법.
  3. 제2항에 있어서, 상기 제1 기본 가상 머신에 상기 애플리케이션을 할당하는 단계는 또한 상기 제1 기본 가상 머신에 할당된 초기 자원들에 기초하는
    컴퓨터-구현 방법.
  4. 제1항 내지 제3항의 항들 중 어느 한 항 및 제2항의 특징들을 갖는 컴퓨터-구현 방법에 있어서, 상기 애플리케이션을 시작하는 단계는:
    상기 애플리케이션에 관한 애플리케이션 로직을 로드하는 단계 - 상기 애플리케이션 로직은 주입 지점들(injection points)을 포함함 -;
    상기 주입 지점들을 상기 제1 기본 가상 머신에 포함된 수용체들(receptors)에 부착하는 단계(attaching); 및
    상기 애플리케이션과 관련된 자원 정보에 기초하여 상기 제1 기본 가상 머신에 자원들을 재할당하는 단계를 포함하는
    컴퓨터-구현 방법.
  5. 제1항 내지 제4항의 항들 중 어느 한 항에 있어서, 상기 기본 가상 머신들의 일부가 아닌 상기 복수의 기본 가상 머신들은 대기 구성(a wait configuration)으로 배치되는
    컴퓨터-구현 방법.
  6. 제1항 내지 제5항의 항들 중 어느 한 항에 있어서, 상기 초기 자원들을 할당하는 단계는 자원 할당 패턴(a resource assignment pattern)에 기초하는
    컴퓨터-구현 방법.
  7. 제1항 내지 제7항의 항들 중 어느 한 항에 있어서, 상기 코어 프로그램 패키지들은 자바 런타임 환경을 포함하는
    컴퓨터-구현 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 애플리케이션은 차량-내 애플리케이션(an in-vehicle application)인
    컴퓨터-구현 방법.
  9. 애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리-모으기 하는 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은:
    하나 혹은 그 이상의 컴퓨터 판독 가능 스토리지 매체, 및 상기 하나 혹은 그 이상의 컴퓨터 판독 가능 스토리지 매체에 저장된 프로그램 명령들을 포함하고, 상기 프로그램 명령들은:
    가상 머신 풀 관리자에 의해 가상 머신 풀 적하목록(a virtual machine pool manifest)을 읽는 단계 - 상기 가상 머신 풀 적하목록은 시작할 가상 머신들(an initial number of virtual machines to launch)의 초기 수를 포함함 -;
    애플리케이션을 시작하기 전에 가상 머신 풀로 그리고 상기 초기 수에 기초하여 복수의 기본 가상 머신들을 시작하는 단계(launching);
    가상 머신 자원 정의에 기초하여 상기 기본 가상 머신들의 일부에 초기 자원들을 할당하는 단계; 및
    코어 프로그램 패키지들을 상기 기본 가상 머신들의 일부로 로드하는 단계를 수행하는 프로그램 명령들을 포함하는
    컴퓨터 프로그램 제품.
  10. 제9항에 있어서, 상기 컴퓨터 프로그램 제품은:
    상기 애플리케이션과 관련된 애플리케이션 유형에 기초하여 상기 기본 가상 머신들의 일부로부터 애플리케이션 수명 주기 관리자로 제1 기본 가상 머신에 상기 애플리케이션을 할당하는 단계;
    상기 제1 기본 가상 머신에서 애플리케이션을 시작하는 단계; 및
    상기 애플리케이션을 실행하는 단계를 수행하는 프로그램 명령들을 더 포함하는
    컴퓨터 프로그램 제품.
  11. 제10항에 있어서, 상기 제1 기본 가상 머신에 상기 애플리케이션을 할당하는 단계를 수행하는 프로그램 명령들은 또한 상기 제1 기본 가상 머신에 할당된 초기 자원들에 기초하는
    컴퓨터 프로그램 제품.
  12. 제9항 내지 제11항의 항들 중 어느 한 항 및 제10항의 특징들을 갖는 컴퓨터 프로그램 제품에 있어서, 상기 애플리케이션을 시작하는 단계를 수행하는 프로그램들은:
    상기 애플리케이션에 관한 애플리케이션 로직을 로드하는 단계 - 상기 애플리케이션 로직은 주입 지점들(injection points)을 포함함 -;
    상기 주입 지점들을 상기 제1 기본 가상 머신에 포함된 수용체들(receptors)에 부착하는 단계(attaching); 및
    상기 애플리케이션과 관련된 자원 정보에 기초하여 상기 제1 기본 가상 머신에 자원들을 재할당하는 단계를 수행하는 프로그램 명령들을 포함하는
    컴퓨터 프로그램 제품.
  13. 제9항 내지 제12항의 항들 중 어느 한 항에 있어서, 상기 기본 가상 머신들의 일부가 아닌 상기 복수의 기본 가상 머신들은 대기 구성(a wait configuration)으로 배치되는
    컴퓨터 프로그램 제품.
  14. 제9항 내지 제13항의 항들 중 어느 한 항에 있어서, 상기 초기 자원들을 할당하는 단계를 수행하는 프로그램 명령들은 자원 할당 패턴(a resource assignment pattern)에 기초하는
    컴퓨터 프로그램 제품.
  15. 제9항 내지 제14항의 항들 중 어느 한 항에 있어서, 상기 코어 프로그램 패키지들은 자바 런타임 환경을 포함하는
    컴퓨터 프로그램 제품.
  16. 제9항 내지 제15의 항들 중 어느 한 항에 있어서, 상기 애플리케이션은 차량-내 애플리케이션(an in-vehicle application)인
    컴퓨터 프로그램 제품.
  17. 애플리케이션 기동 전에 가상 머신 컴포넌트들을 미리-모으기 하기 위한 시스템에 있어서, 상기 시스템은:
    메모리;
    프로세서;
    컴퓨터 실행가능 프로그램 코드를 저장하는 스토리지;
    복수의 기본 가상 머신들을 가상 머신 풀로 시작하도록 구성된 가상 머신 풀 관리자(a virtual machine pool manager) - 상기 가상 머신 풀 관리자는 상기 기본 가상 머신들에 초기 자원들을 할당하고 상기 기본 가상 머신들에 코어 프로그램 패키지들을 로드하도록 더 구성됨 -;
    상기 기본 가상 머신들에 애플리케이션들을 할당하도록 구성된 애플리케이션 수명 주기 관리자(an application life cycle manager); 및
    상기 애플리케이션을 설치하고 업데이트하도록 구성된 애플리케이션들 패키지 관리자(an application package manager)를 포함하는
    시스템.
  18. 제17항에 있어서, 상기 기본 가상 머신들의 일부는 대기 구성으로 배치되는
    시스템.
  19. 제17항 내지 제18항의 항들 중 어느 한 항에 있어서, 상기 초기 자원들은 자원 할당 패턴에 기초하는
    시스템.
  20. 제17항 내지 제19항의 항들 중 어느 한 항에 있어서, 기본 가상 머신들에 할당된 애플리케이션들은 또한 기본 가상 머신들에 할당된 초기 자원들에 기초하는
    시스템.
KR1020237000314A 2020-07-16 2021-07-13 차량-내 디바이스 애플리케이션 기동을 위한 풀 관리 KR20230027144A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/930,874 2020-07-16
US16/930,874 US11915024B2 (en) 2020-07-16 2020-07-16 Pool management for in-vehicle device application startup
PCT/IB2021/056289 WO2022013735A1 (en) 2020-07-16 2021-07-13 Pool management for in-vehicle device application startup

Publications (1)

Publication Number Publication Date
KR20230027144A true KR20230027144A (ko) 2023-02-27

Family

ID=79292413

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237000314A KR20230027144A (ko) 2020-07-16 2021-07-13 차량-내 디바이스 애플리케이션 기동을 위한 풀 관리

Country Status (8)

Country Link
US (1) US11915024B2 (ko)
JP (1) JP2023535316A (ko)
KR (1) KR20230027144A (ko)
CN (1) CN116249962A (ko)
AU (1) AU2021308570B2 (ko)
DE (1) DE112021003803T5 (ko)
GB (1) GB2611989A (ko)
WO (1) WO2022013735A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853100B2 (en) * 2021-04-12 2023-12-26 EMC IP Holding Company LLC Automated delivery of cloud native application updates using one or more user-connection gateways
CN114936043B (zh) * 2022-05-20 2024-02-09 浪潮电子信息产业股份有限公司 一种池化异构资源启动方法、装置、设备及存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671403B2 (en) * 2006-05-22 2014-03-11 Infosys Limited Pre-creating virtual machines in a grid environment
US8176486B2 (en) * 2007-02-15 2012-05-08 Clearcube Technology, Inc. Maintaining a pool of free virtual machines on a server computer
US8639787B2 (en) 2009-06-01 2014-01-28 Oracle International Corporation System and method for creating or reconfiguring a virtual server image for cloud deployment
CA2674402C (en) * 2009-07-31 2016-07-19 Ibm Canada Limited - Ibm Canada Limitee Optimizing on demand allocation of virtual machines using a stateless preallocation pool
US9038063B2 (en) * 2011-09-07 2015-05-19 International Business Machines Corporation Determining virtual machine image pattern distributions in a networked computing environment
US9507613B2 (en) 2012-03-30 2016-11-29 Oracle International Corporation Methods and apparatus for dynamically preloading classes
US9507612B1 (en) * 2012-08-31 2016-11-29 United Services Automobile Association (Usaa) Managing dedicated and floating pool of virtual machines based on demand
US9600316B2 (en) 2012-10-17 2017-03-21 Microsoft Technology Licensing, Llc Augmented allocation of virtual machines for application
CN103488495A (zh) 2013-08-13 2014-01-01 广东欧珀移动通信有限公司 一种通过动态调整开机预加载资源加速开机的方法
US20150324216A1 (en) 2014-05-12 2015-11-12 Netapp, Inc. Self-repairing configuration service for virtual machine migration
US20160048409A1 (en) 2014-08-12 2016-02-18 Peter Briel System and method for automatic initiation and management of a guest operating system which enables a restriction of access to the host machine
US9715402B2 (en) * 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9413626B2 (en) * 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US9898307B2 (en) 2015-12-21 2018-02-20 Intel Corporation Starting application processors of a virtual machine
US20180129524A1 (en) * 2016-11-10 2018-05-10 International Business Machines Corporation Managing pre-allocated virtual machine instance pools
US10445126B2 (en) 2017-02-21 2019-10-15 Red Hat, Inc. Preloading enhanced application startup
US11055135B2 (en) * 2017-06-02 2021-07-06 Seven Bridges Genomics, Inc. Systems and methods for scheduling jobs from computational workflows
US10489170B2 (en) 2017-06-19 2019-11-26 Salesforce.Com, Inc. Application warmup engine
US11190599B2 (en) * 2018-06-27 2021-11-30 Oracle International Corporation Method and system for cloud service pre-provisioning
US11175960B2 (en) * 2018-12-05 2021-11-16 Electronics And Telecommunications Research Institute Worker-scheduling method in cloud-computing system and apparatus for the same

Also Published As

Publication number Publication date
GB2611989A (en) 2023-04-19
AU2021308570B2 (en) 2024-05-02
WO2022013735A1 (en) 2022-01-20
CN116249962A (zh) 2023-06-09
JP2023535316A (ja) 2023-08-17
DE112021003803T5 (de) 2023-05-17
US20220019453A1 (en) 2022-01-20
AU2021308570A1 (en) 2023-02-09
US11915024B2 (en) 2024-02-27

Similar Documents

Publication Publication Date Title
US11121915B2 (en) FPGA-enabled compute instances
US11321130B2 (en) Container orchestration in decentralized network computing environments
US11178207B2 (en) Software version control without affecting a deployed container
US9619371B2 (en) Customized application performance testing of upgraded software
CN111527474B (zh) 软件功能的动态交付
US10534596B2 (en) Migrating applications to updated environments
AU2021308570B2 (en) Pool management for in-vehicle device application startup
US11288601B2 (en) Self-learning selection of information-analysis runtimes
CN116917867A (zh) 无服务器运行时容器分配
US20230142148A1 (en) Automated Deployment of Enterprise Archive with Dependency on Application Server Via Script
US11010149B2 (en) Shared middleware layer containers
US20210081247A1 (en) Master image for deploying workloads in a heterogeneous computing environment
US10901798B2 (en) Dependency layer deployment optimization in a workload node cluster
WO2022078060A1 (en) Tag-driven scheduling of computing resources for function execution
CN112148935B (zh) 用于多实例的nbmp功能执行的方法和装置
JP2024502329A (ja) 動的タスク移動を介したクラスタにまたがるエッジ・タイム・シェアリング
US20200301584A1 (en) Cognitively managed storage volumes for container environments
CN115380283A (zh) 高速缓存的可更新top-k索引
US20190069121A1 (en) Direct update of mobile applications based on features used
US11561787B2 (en) Application invocation on specified operating system version
US20220188166A1 (en) Cognitive task scheduler
US11099907B1 (en) Prerequisite driven dynamic infrastructure orchestration
US20170155715A1 (en) Cloud storage of applications for mobile devices
CN118202327A (zh) 基于文件的虚拟磁盘管理
CN115039100A (zh) 为安全访客保留一个或多个安全模块