KR102076379B1 - 지속적이고 회복력 있는 워커 프로세스 - Google Patents

지속적이고 회복력 있는 워커 프로세스 Download PDF

Info

Publication number
KR102076379B1
KR102076379B1 KR1020147027267A KR20147027267A KR102076379B1 KR 102076379 B1 KR102076379 B1 KR 102076379B1 KR 1020147027267 A KR1020147027267 A KR 1020147027267A KR 20147027267 A KR20147027267 A KR 20147027267A KR 102076379 B1 KR102076379 B1 KR 102076379B1
Authority
KR
South Korea
Prior art keywords
application
worker
worker process
virtual environment
execution
Prior art date
Application number
KR1020147027267A
Other languages
English (en)
Other versions
KR20140138803A (ko
Inventor
아르카스 블레이스 어거에라 이
헨 피투시
베니 쉴레싱어
에란 야리브
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20140138803A publication Critical patent/KR20140138803A/ko
Application granted granted Critical
Publication of KR102076379B1 publication Critical patent/KR102076379B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

컴퓨팅 분야에서, 다수의 시나리오는 가상 환경 내에서의 애플리케이션의 실행을 포함한다(예로서, 웹 브라우저 내에서 실행되는 웹 애플리케이션). 백그라운드 프로세싱을 수행하기 위해, 이러한 애플리케이션은 가상 환경 내의 워커 프로세스를 호출할 수 있지만, 이러한 구성은 워커 프로세스의 라이프사이클을 애플리케이션 및/또는 가상 환경의 라이프사이클에 연결시킨다. 본 명세서에는 애플리케이션 및/또는 가상 환경이 종료된 후에 그리고 컴퓨팅 환경이 재시작한 후에도 백그라운드 전산이 지속될 수 있도록 애플리케이션의 라이프사이클에 대해 독립적으로 가상 환경 밖에서 워커 프로세스를 실행하고, 워커 프로세스가 실행 이벤트를 획득하면 이를 애플리케이션에 통지하기 위한 기술이 개시된다(예를 들어, 애플리케이션이 실행하고 있지 않은 동안에도 디바이스 이벤트를 검출). 이러한 기술은 워커 프로세스의 회복력 및 지속성을 높일 수 있으며, 가상 환경 내에서 실행되는 애플리케이션의 성능을 확대할 수 있다.

Description

지속적이고 회복력 있는 워커 프로세스{PERSISTENT AND RESILIENT WORKER PROCESSES}
컴퓨팅 분야에서, 다수의 시나리오는 웹 브라우저 내에서 실행되는 웹 애플리케이션; 디바이스에 의해 제공되는 것이 아니라 컴퓨터 환경을 위해 개발된 코드(예로서, 자바(Java) 가상 머신을 위해 설계된 자바 코드); 및 분리된 가상 머신 내에서 실행되는 신뢰할 수 없는 코드(untrusted code)와 같은 디바이스의 가상 환경 내에서의 애플리케이션의 실행을 포함한다. 디바이스의 자연적인 프로세스로서가 아닌 가상 머신 내에서의 애플리케이션의 실행은 실행 중에 애플리케이션의 호환가능성 및 보안성을 용이하게 할 수 있다.
이러한 애플리케이션은 종종 장시간 계속되는, 계산 집약적 프로세스와 같은 백그라운드 프로세싱을 포함한다. 예를 들어, 애플리케이션은 모바일폰 상에서의 착신 호출과 같은 특정한 타입의 이벤트에 대해 디바이스의 하드웨어 구성요소를 모니터하도록 시도할 수 있다. 그러나, 이러한 프로세싱이 애플리케이션에 의해 수행되면, 애플리케이션의 다른 책무들이 원치않게 지연될 수 있으며, 예를 들어 계산 집약적 프로세싱이 그래픽 사용자 인터페이스(GUI) 메시지의 핸들링을 선점(preempt)할 수 있으며, 애플리케이션이 감소된 상호작용성 또는 성능을 나타내게 할 수 있다. 애플리케이션의 다른 프로세싱 책무들의 중단을 감소시키는 동시에 이러한 백그라운드 프로세싱을 획득하기 위해서, 애플리케이션은 가상 환경 내에서 하나 이상의 워커 프로세스(worker process)를 호출할 수 있다. 예를 들어, HTML(Hypertext Markup Language)의 최근 버전에서 제공된 "웹 워커(web worker)" 모델은 애플리케이션이 웹 브라우저 내에서의 개별적인 워커 프로세스를 개시하도록 웹 브라우저에 요청할 수 있게 하며, 그에 따라 보증되고 성능 기준에 맞는 방식으로 애플리케이션 대신 백그라운드 프로세싱을 달성하게 할 수 있다.
본 요약부는 아래의 상세한 설명에서 추가로 기술되는 개념들의 선택을 간략한 형태로 소개하도록 제공되었다. 본 요약부는 청구된 청구사항의 중요 인자 또는 기본 특성을 식별하기 위한 것이 아니며, 청구된 청구사항의 범주를 한정하도록 사용되는 것 또한 아니다.
가상 환경 내에서 실행되는 애플리케이션을 대신하는 워커 프로세스의 인스턴스화가 일부 장점을 나타내는 반면, 가상 환경 내에서 그러한 워커 프로세스를 실행하는 모델은 상당한 단점을 나타낼 수 있다. 제 1 예시로서, "웹 워커(web worker)" 모델은 전형적으로 웹 애플리케이션의 라이프사이클에 웹 워커의 라이프사이클을 연결시키는데, 즉 (예로서 웹 애플리케이션을 호스팅하는 페이지를 닫음으로써) 웹 애플리케이션이 중지 또는 종료될 때 웹 워커도 종료된다. 또한 워커 프로세스는 워커 프로세스를 호스팅하는 가상 환경의 종료(예로서, 웹 브라우저 닫기) 및/또는 디바이스의 컴퓨팅 환경 재시작(예로서, 디바이스의 운영 시스템 중지 또는 재부팅)에 따라 종료될 수도 있다. 일부 시나리오에서, 워커 프로세스의 라이프사이클을 애플리케이션 및/또는 가상 환경의 라이프사이클과 연관시키는 것이 바람직할 수 있다. 하지만 다른 시나리오에서는, 워커 프로세스를 이러한 이벤트 후에도 지속시킬 수 있게 하는 것 및/또는 운영 시스템의 재부팅과 같은 디바이스 이벤트를 통해 지속시킬 수 있게 하는 것이 바람직할 수 있다.
본 명세서에는 웹 브라우저 또는 가상 머신과 같은 가상 환경 내의 애플리케이션을 대신하여 실행하는 워커 프로세스의 회복력을 확장시키기 위한 기술이 개시되었다. 이러한 기술에 따르면, 가상 환경 내에서 워커 프로세스를 실행하기보다는, 디바이스가 가상 환경 밖에서 워커 프로세스를 실행할 수 있다. 애플리케이션 및/또는 가상 환경이 종료될 때, 디바이스는 워커 프로세스가 종료하지 않게 할 수 있으며, 따라서 애플리케이션의 라이프사이클로부터 워커 프로세스의 라이프사이클을 분리한다. 선택적으로, 워커 프로세스는 워커 프로세스를 호스팅하는 프로세스에서의 결함 또는 운영 시스템 재부팅과 같이 가상 환경 밖에서 발생하는 잠재적인 중단 이벤트를 통과해 지속되도록 구성될 수도 있다. 워커 프로세스가 실행 이벤트를 획득할 때(예로서, 복잡한 전산 처리를 완료하거나 특정한 타입의 디바이스 이벤트를 검출), 워커 프로세스에 의해 획득된 실행 이벤트의 처리를 완료하기 위해 가상 환경 내에서 실행되는 애플리케이션에 이것이 통지될 수 있다(선택적으로, 만약 애플리케이션이 현재 실행중이지 않다면 애플리케이션을 재개시한다). 워커 프로세스의 실행을 가상 환경 내의 애플리케이션의 실행으로부터 분리함으로써, 본 명세서에 개시된 기술은 가상 환경 내에서 애플리케이션에 의해 획득가능한 백그라운드 프로세싱의 성능 및 회복력을 확대시킬 수 있다.
전술된 목적 및 관련 목적을 달성하기 위해서, 아래의 설명과 첨부된 도면들이 예시적인 측면 및 구현을 개시한다. 이들은 하나 이상의 측면들이 사용될 수 있는 다양한 방법들 중 일부만을 나타낸다. 본 발명의 다른 측면, 장점 및 신규한 특성들이 첨부된 도면과 함께 아래의 상세한 설명으로부터 명백해질 것이다.
도 1은 웹 브라우저 내의 웹 애플리케이션을 대신하는 워커 프로세스의 실행을 특징으로 하는 예시적인 시나리오를 도시한 도면.
도 2는 본 명세서에 제시된 기술에 따라 애플리케이션을 대신하는 워커 프로세스의 실행을 특징으로 하는 예시적인 시나리오를 도시한 도면.
도 3은 본 명세서에 제시된 기술에 따라 로컬 이벤트와 관련된 클라이언트 애플리케이션의 요청을 만족시키기 위해 디바이스를 구성하는 예시적인 방법을 도시한 도면.
도 4는 본 명세서에 제시된 기술에 따라 로컬 이벤트와 관련된 클라이언트 애플리케이션의 요청을 만족시키기 위한 예시적인 시스템을 도시한 구성요소 블록도.
도 5는 본 명세서에 개시된 하나 이상의 규정을 구현하도록 구성된 프로세서 실행가능한 명령을 포함하는 예시적인 컴퓨터 판독가능한 매체를 도시한 도면.
도 6은 디바이스 메시 내의 디바이스 상에서 실행되는 애플리케이션의 워커 프로세스를 특징으로 하며, 워커 프로세스가 본 명세서에 제시된 기술에 따라 애플리케이션의 서버, 다른 서버 및 디바이스 메시 내의 다른 디바이스의 원격 프로세스와 통신하고자 시도할 수 있는 예시적인 시나리오를 도시한 도면.
도 7은 본 명세서에 제시된 기술에 따라 가상 환경 내에서 실행되는 애플리케이션을 대신하여 지속적인 워커 프로세스의 실행을 보여주는 예시적인 시나리오를 도시한 도면.
도 8은 본 명세서에 개시된 하나 이상의 규정들이 구현될 수 있는 예시적인 컴퓨팅 환경을 도시한 도면.
이제 청구사항이 도면을 참조하여 기술될 것이며, 도면들에 걸쳐서 동일한 참조번호는 동일한 요소를 지칭하도록 사용되었다. 아래의 설명에서, 설명을 위해 청구된 청구사항에 대한 철저한 이해를 제공하도록 다수의 특정한 세부사항이 개시되었다. 그러나, 청구된 청구사항이 이러한 특정한 세부사항 없이도 실시될 수 있음이 명백하다. 다른 예시에서, 청구된 청구사항을 기술하기에 용이하도록 구조 및 디바이스가 블록도로 도시되었다.
A. 도입
컴퓨팅 분야에서, 다수의 시나리오가 디바이스의 자연적인 컴퓨팅 환경에서가 아닌 가상 환경에서의 디바이스 상의 애플리케이션 실행을 포함한다. 이것의 제 1 예시로서, 웹 브라우저는 자바스크립트 및 HTML 콘텐츠와 같은 디바이스 독립적인 코드를 실행하기 위해 표준화된 플랫폼을 제공할 수 있다. 이것의 제 2 예시로서, 자바 가상 머신(JVM)이 자바 애플리케이션을 대신하여 디바이스의 자연적인 능력과 일반화된 컴퓨팅 디바이스 사이에서의 다리를 제공할 수 있다(예를 들어, 일반화된 메모리 할당 요청을 디바이스의 메모리 모델로 번역). 이것의 제 3 예시로서, 제 1 디바이스의 자연적인 환경을 위해 설계된 코드는 제 2 디바이스 내에서 제 1 디바이스의 시뮬레이션을 제공하는 에뮬레이터(emulator)를 통해 완전히 제 2 디바이스 상에서 실행될 수 있다. 이것의 제 4 예시로서, 악의적인 동작이 인위적인 머신(artificial machine)에서 분리될 수 있고 인위적인 머신 상의 신뢰할 수 없는 코드의 영향이 디바이스에 손상을 입힐 위험 없이 디바이스에 의해 평가될 수 있도록, 신뢰할 수 없는 코드는 "샌드박스(sandbox)" 또는 인위적인 머신 내에서 실행될 수 있다.
이러한 시나리오 및 그외의 시나리오는 가상 환경 내에서의 애플리케이션의 실행을 나타낸다. 다수의 이러한 시나리오에서, 애플리케이션은 성능 기준에 맞는 방식으로 처리되어야 할 일부 포어그라운드(foreground) 책무들을 포함할 수 있으며, 예를 들어 그래픽 사용자 인터페이스(GUI)를 제시하는 애플리케이션은 작은 지연이라 할지라도 사용자의 눈에 잘 띌 수 있기 때문에 높은 책임 정도를 갖는 시각적 제어를 이용하여 상호작용을 만족시키도록 설계될 수 있다. 또한 이러한 애플리케이션은 오랜 시간 계속되는 계산, 유휴 기간 동안 수행되는 유지 태스크(maintenance task) 및 디바이스의 이벤트 모니터링과 같이 보다 여유 있는 방식으로 수행될 수 있는 집중적인 백그라운드 프로세싱도 포함할 수 있다.
포어그라운드 프로세싱 및 백그라운드 프로세싱의 처리의 균형을 유지하기 위해서, 가상 환경과 애플리케이션이 선점권이 있는(preemptive) 멀티태스킹과 같은 기술을 제공할 수 있으며, 이때 애플리케이션은 각각의 태스크에 대한 우선순위를 지정할 수 있다. 그러나, 이러한 기술은 애플리케이션 내에 포함된 다양한 프로세싱 태스크를 스케줄링하기에 완전히 적합하지 않을 수 있다. 이러한 제 1 예시로서, 포어그라운드 프로세싱을 처리하기 위해 일부 타입의 백그라운드 프로세싱(예를 들어, 리소스의 독점적인 잠금을 포함하는 백그라운드 프로세싱)을 선점하는 것이 가능하지 않거나 효율적이지 않을 수 있다. 이러한 제 2 예시로서, 만약 백그라운드 프로세싱이 디바이스 이벤트의 모니터링을 포함한다면, 이러한 백그라운드 프로세싱의 중단은 이러한 디바이스 이벤트의 검출 실패를 발생시킬 수 있다.
이러한 어려움을 고려해서, 일부 가상 환경은 애플리케이션이 가상 환경 내에서 개별적인 워커 프로세스를 개시하는 것을 허용한다. 애플리케이션의 실행 스레드로부터 워커 프로세스를 분리함으로써, 가상 환경은 컴퓨팅 환경의 동시발생 프로세싱 성능(예를 들어, 운영 시스템에 의해 제공되는 더욱 정교한 선점권이 있는 스케줄러) 및/또는 디바이스의 전산 하드웨어(예를 들어, 멀티프로세서 디바이스 내의 서로 다른 프로세서 또는 멀티코어 프로세서의 서로 다른 코어 상의 애플리케이션 스레드 및 워커 프로세스의 동시발생 실행)를 사용할 수 있다. 또한, 동일한 가상 환경 내에서의 애플리케이션으로서의 워커 프로세스의 실행은 보안상 장점(예를 들어, 애플리케이션에 적용하는 것과 같은 동일한 보안 정책을 워커 프로세스에 적용) 및/또는 효율성(예를 들어, 가상 환경 내에서의 피어(peer)로서 워커 프로세스와 애플리케이션의 타이트 커플링을 가능하게 함)을 제공할 수 있다.
도 1은 가상 환경(110)(예로서, 웹 브라우저)을 포함하는 컴퓨팅 환경(108)(예로서, 운영 시스템)을 나타내는 사용자(106)의 디바이스(104)를 특징으로 하는 예시적인 시나리오(100)를 도시한다. 디바이스(104)는 하나 이상의 서버(102)(예로서, 웹서버)와 통신할 수 있고, 사용자(106)를 대신하여 실행될 하나 이상의 애플리케이션(112)을 검색할 수 있다(예를 들어, 사용자(106)에 의해 요청된 웹페이지 내에 포함된 웹 애플리케이션). 따라서 디바이스(104)는 가상 환경(110) 내에서 애플리케이션(112)의 실행을 개시할 수 있다. 또한, 가상 환경(110)은 애플리케이션(112)이 애플리케이션(112)에 의한 포어그라운드 프로세싱의 실행 중단 없이 애플리케이션(112)을 대신하여 수행될 백그라운드 유지 태스크와 같은 워커 프로세스(114)의 실행을 요청할 수 있게 하도록 구성될 수 있다. 따라서 가상 환경(110)은 애플리케이션(112)과 함께 가상 환경(110) 내에서 워커 프로세스(114)의 실행을 개시할 수 있다. 예를 들어, 워커 프로세스(114)는 착신 호출 또는 모바일폰과 같은 모바일 통신 디바이스를 통해 수신되는 메시지와 같은 다양한 디바이스 이벤트(116)를 통지받도록 요청할 수 있다. 디바이스(104)는 컴퓨팅 환경(108) 내에서 일부 디바이스 이벤트 모니터링(118)을 적용할 수 있으며, 디바이스 이벤트(116)를 검출함에 따라 가상 환경(110) 내의 워커 프로세스(114)에 디바이스 이벤트 통지(120)를 전달할 수 있다. 이러한 방식으로, 디바이스(104)는 애플리케이션(112)이 가상 환경(110) 내의 워커 프로세스(114)를 호출하여 애플리케이션(112)의 포어그라운드 프로세싱을 방해하지 않고 다양한 타입의 백그라운드 프로세싱을 달성하도록 할 수 있다. 도 1의 예시적인 시나리오(100)에 도시된 모델은 HTML의 최신 버전에서 제시된 "웹 워커" 모델을 정확하게 기술하는 것이며, 자바스크립트(JavaScript) 스크립트는 스크립트와 함께 웹 브라우저 내에서 실행되는 "웹 워커" 프로세스에서 백그라운드 프로세싱을 호출할 수 있음이 이해될 수 있을 것이다.
도 1의 예시적인 시나리오(100)에 제시된 아키텍처가 일부 장점을 나타낼 수 있지만, 일부 단점도 발생할 수 있음이 이해될 것이다. 특히, 애플리케이션(112)과 함께 가상 환경(110) 내에서 워커 프로세스(114)를 실행하는 것은 일부 측면에서 바람직하지 않을 수 있다. 예를 들어, 일부 시나리오에서 애플리케이션(112)의 중지 또는 종료가 워커 프로세스(114)의 중지 또는 종료도 발생시키도록 워커 프로세스(114)의 라이프사이클을 애플리케이션(112)과 커플링 하는 것이 바람직할 수도 있다. 그러나, 다른 시나리오에서는 애플리케이션(112)과 워커 프로세스(114)를 분리시키는 것이 바람직할 수도 있다. 예를 들어, 워커 프로세스(114)는 사용자(106)가 완료하기를 원하는 오랜 시간 계속되는 프로세스를 포함할 수 있지만, 사용자(106)는 가상 환경(110) 내에 애플리케이션(112)을 유지하길 원치 않을 수 있다(예를 들어, 사용자(106)는 의도적으로 또는 무심코 웹 애플리케이션을 호스팅하는 웹페이지로부터 다른 곳으로 이동하게 될 수 있으며, 그에 따라 웹 애플리케이션과 연관된 웹 워커의 종료를 야기할 수 있다). 다른 예시로서, 사용자(106)는 디바이스(104) 상에서 발생하는 특정한 타입의 디바이스 이벤트(116)를 위한 핸들러(handler)와 같이 워커 프로세스(114)가 무기한으로 지속되길 원할 수도 있다(예를 들어, 텍스트 메시지 또는 착신 전화 호출의 수신 시 사용자(106)에게 통지하기 위한 통지 프로세스). 또한 일부 시나리오에서, 워커 프로세스(114)가 애플리케이션(112)의 중지 또는 종료 후에도 지속되게 할 뿐만 아니라 가상 환경(110)의 중지 또는 종료 후에도(예를 들어, 사용자(106)가 웹 브라우저를 완전히 종료한 후에도) 및/또는 컴퓨팅 환경(108)의 중단 후에도(디바이스(104)를 재부팅 또는 다른 방식으로 재시작한 후에도) 지속되게 하는 것이 바람직할 수 있다. 그러나, 워커 프로세스(114)의 라이프사이클을 애플리케이션(112)의 라이프사이클과 커플링하는 것을 엄격하게 포함하는 모델은 이러한 지속적이고 회복력 있는 워커 프로세스(114)를 제공할 수 없다.
B. 제시된 기술
본 명세서에는 가상 환경 내에서 실행되는 애플리케이션(112)을 대신하여 실행되는 워커 프로세스(114)의 지속성(persistence) 및/또는 회복력(resilience)을 향상시키기 위한 기술이 개시된다. 이러한 기술에 따르면(도 1의 예시적인 시나리오(100)에서 도시된 것과 같은 다른 기술들과는 상반되게), 가상 환경(110) 내에서 워커 프로세스(114)를 실행하기보다는, 디바이스(104)가 애플리케이션(112)을 대신하여 그러나 가상 환경(110) 외부에서 워커 프로세스(114)를 실행할 수 있다. 또한, 디바이스가 애플리케이션(112)을 종료할 때(예를 들어, 애플리케이션(112)을 일시적으로 또는 무기한으로 중지하거나, 또는 애플리케이션(112)의 실행을 완료 또는 포기할 때), 디바이스(104)는 애플리케이션(112)과 연관된 하나 이상의 워커 프로세스(114)를 종료하지 않도록 할 수 있다. 이러한 방식으로, 디바이스(104)는 애플리케이션(112)이 현재 실행중이지 않은 동안에도 애플리케이션(112)의 전산처리를 수행하는 것을 계속하는 지속적인 워커 프로세스(114)의 실행을 가능하게 할 수 있다.
도 2는 본 명세서에 개시된 기술의 예시적인 적용을 특징으로 하는 예시적인 시나리오(200)를 도시한다. 이러한 예시적인 시나리오(200)에서, 디바이스(104)는 다시 가상 환경(110)을 포함하는 컴퓨팅 환경(108)을 포함하며, 서버(102)로부터 수신되는 애플리케이션(112)이 실행될 수 있다(예를 들어, 웹서버로부터 수신된 웹 애플리케이션이 웹 브라우저 내에서 실행된다). 애플리케이션(112)은 일부 백그라운드 프로세싱을 요청할 수 있으며, 가상 환경(110)은 애플리케이션(112)을 대신하는 워커 프로세스(114)를 개시함으로써 이에 응할 수 있다. 그러나, 본 명세서에서 제시된 기술에 따르면, 워커 프로세스(114)는 가상 환경(110)에 의한 애플리케이션(112)의 라이프사이클 및 리소스 요청 관리에 대해 독립적으로 워커 프로세스(114)의 라이프사이클 및 리소스 요청을 관리할 수 있는 워커 프로세스 호스트(202)에 의해 가상 환경(110) 밖에서 실행될 수 있다. 특히, 애플리케이션(112)의 종료를 검출하였을 때 디바이스 워커 프로세스 호스트(202)는 워커 프로세스(114)가 종료하지 않게 할 수 있는데, 즉 워커 프로세스(114)의 라이프사이클이 애플리케이션(112)의 라이프사이클로부터 분리되어 독립적으로 관리될 수 있다. 또한 워커 프로세스 호스트(202)는 워커 프로세스(114)가 실행 이벤트를 획득하였을 때 워커 프로세스(114)가 애플리케이션(112)에 통지하는 것을 가능하게 할 수 있다. 예를 들어, 워커 프로세스(114)에 의해 구현되는 백그라운드 프로세싱은 모바일폰으로부터의 착신 호출과 같은 클라이언트 디바이스 이벤트(116)를 검출하는 것을 포함할 수 있다. 디바이스는 워커 프로세스(114)를 대신하여 디바이스 이벤트(116)를 검출하도록 일부 디바이스 이벤트 모니터링(118)을 사용할 수 있으며, 이러한 디바이스 이벤트(116)를 검출하면 워커 프로세스(114)에 디바이스 이벤트 통지(120)를 전달할 수 있다. 특히, 이러한 검출 및 전달은 애플리케이션(112)이 현재 실행중이지 않다고 해도(그리고 선택적으로, 가상 환경(110)이 디바이스(104) 상에서 실행중이지 않다고 해도) 워커 프로세스(114)가 동작하는 동안 성공적으로 완료될 수 있다. 또한, 워커 프로세스 호스트(202)는 워커 프로세스(114)가 디바이스 이벤트(116)를 애플리케이션(112)에 통지하는 것을 용이하게 할 수 있다(예를 들어, 만약 애플리케이션(112) 및/또는 가상 환경(110)이 현재 실행중이 아니라면, 디바이스(104)는 애플리케이션(112) 및/또는 가상 환경(110)을 재개시할 수 있거나, 또는 이러한 프로세스가 이후에 사용자(106)에 의해 재개시될 때까지 단순히 디바이스 이벤트 통지(120)를 인큐(enqueue)할 수 있다. 이러한 방식으로, 디바이스(104)는 애플리케이션(112)의 실행에 대해 독립적으로 워커 프로세스(114)의 지속적인 실행을 달성한다. 이러한 장점 및 다른 장점들이 도 2의 예시적인 시나리오(220)에 도시된 아키텍처 및 본 명세서에서 제시된 기술을 통해 달성가능할 수 있다.
C. 예시적인 실시예
도 3은 디바이스(104)의 가상 환경(110) 내에서 실행되는 애플리케이션(112)을 대신하여 프로세싱을 수행하는 예시적인 방법(300)으로서 나타내어진, 본 명세서에서 제시된 기술의 예시적인 제 1 실시예를 도시한다. 예시적인 방법(300)은 예를 들어 메모리 회로, 하드 디스크 드라이브의 플래터(platter), 고체 상태 저장 디바이스, 자기 또는 광학 디스크와 같은 디바이스의 메모리 구성요소 내에 저장되고, 디바이스의 프로세서 상에서 실행되었을 때 디바이스가 본 명세서에 제시된 기술에 따라 동작하게 하도록 조직화된 명령들의 세트로서 구현될 수 있다. 예시적인 방법(300)은 단계(302)에서 시작하여 디바이스의 프로세서 상에서 명령을 실행하는 단계(304)를 포함한다. 특히, 이러한 명령은 실행 이벤트를 포함하는 워커 프로세스(114)를 실행하라는 요청을 애플리케이션(112)으로부터 수신함에 따라 가상 환경(110) 밖에서의 워커 프로세스(114)의 실행을 개시(306)하도록 구성될 수 있다. 또한 명령은, 애플리케이션(112)의 종료 검출 시 워커 프로세스(114)를 종료하지 않도록(308) 구성된다. 또한 명령은 워커 프로세스(114)가 실행 이벤트를 획득함에 따라 워커 프로세스(114)의 실행 이벤트를 애플리케이션(112)에 통지(310)하도록 구성된다. 애플리케이션(112)을 대신하여 프로세싱이 완료되면, 예시적인 방법(300)은 본 명세서에서 제시된 기술에 따라 애플리케이션(112)을 대신하는 워커 프로세스(114)의 실행을 나타내며, 블록(312)에서 종료된다.
도 4는 본 명세서에서 제시된 기술의 예시적인 제 2 실시예를 디바이스(104)의 가상 환경(110) 내에서 실행되는 애플리케이션을 대신하여 프로세싱을 수행하도록 구성된 예시적인 시스템(408)을 특징으로 하는 예시적인 시나리오(400)로서 나타낸다. 예시적인 시스템(408)은 예를 들어 디바이스(402)의 메모리 구성요소 내에 저장된 명령으로서 구현될 수 있으며, 디바이스(402)의 프로세서(404) 상에서 실행될 때 디바이스(402)가 본 명세서에 개시된 기술에 따라 동작하게 하도록 구성될 수 있다. 예시적인 시스템(408)은 적어도 하나의 애플리케이션(112)이 디바이스(104) 상에서 실행되는 가상 환경(110)을 포함한다. 또한 예시적인 시스템(408)은 가상 환경(110) 밖의 디바이스(104) 상에서 실행하고 실행 이벤트(406)를 포함하는 워커 프로세스(114)를 실행하라는 요청을 애플리케이션(112)으로부터 수신함에 따라 가상 환경(110) 밖에서 워커 프로세스(114)의 실행을 개시하도록 구성되는 워커 호스트 구성요소(410)를 포함한다. 워커 호스트 구성요소(410)는 애플리케이션(112)의 종료를 검출했을 때 워커 프로세스(114)를 종료하지 않고; 워커 프로세스(114)가 실행 이벤트(406)를 획득함에 따라 워커 프로세스(114)의 실행 이벤트(406)를 애플리케이션(112)에 통지하도록 추가로 구성된다. 이러한 방식으로, 예시적인 시스템(408)은 본 명세서에 개시된 기술에 따라 디바이스(402)의 가상 환경(110) 내에서 실행되는 애플리케이션(112)을 대신하는 워커 프로세스(114)의 실행을 달성한다.
또 다른 실시예는 본 명세서에 개시된 기술을 적용하도록 구성된 프로세서 실행가능한 명령을 포함하는 컴퓨터 판독가능한 매체를 포함한다. 이러한 컴퓨터 판독가능한 매체는 예를 들어 메모리 반도체(예로서, 정적 랜덤 액세스 메모리(SRAM), 동적 랜덤 액세스 메모리(DRAM) 및/또는 동기식 동적 랜덤 액세스 메모리(SDRAM) 기술), 하드 디스크 드라이브의 플래터, 플래시 메모리 디바이스, 자기 또는 광학 디스크(예로서 CD-R, DVD-R, 또는 플로피 디스크), 디바이스의 프로세서에 의해 실행되었을 때 디바이스로 하여금 본 명세서에 개시된 기술을 구현하게 하는 컴퓨터 판독가능한 명령들의 세트 인코딩과 같은 실체적인 디바이스를 포함하는 컴퓨터 판독가능한 저장 매체를 포함할 수 있다. 또한 이러한 컴퓨터 판독가능한 매체는 (컴퓨터 판독가능한 저장 매체와는 완전히 다른 기술 분류로서) 다양한 물리적 현상(예를 들어, 전자기적 신호, 음파 신호, 또는 광학 신호)을 통해 다양한 유선 시나리오(예로서, 이더넷 또는 광섬유 케이블) 및/또는 무선 시나리오(예로서, WiFi와 같은 무선 로컬 영역 네트워크(WLAN), 블루투스와 같은 개인 영역 네트워크(PAN), 또는 셀룰러 또는 무선 네트워크)로 전파될 수 있는 신호와 같은, 디바이스의 프로세서에 의해 실행되었을 때 디바이스로 하여금 본 명세서에 개시된 기술을 구현하게 하는 컴퓨터 판독가능한 명령들의 세트를 인코딩하는 다양한 타입의 통신 매체도 포함할 수 있다.
이러한 방식으로 고안될 수 있는 예시적인 컴퓨터 판독가능한 매체가 도 5에 도시되었으며, 구현(500)은 컴퓨터 판독가능한 데이터(504)가 인코딩되는 컴퓨터 판독가능한 매체(502)(예로서, CD-R, DVD-R, 또는 하드 디스크 드라이브의 플래터)를 포함한다. 이러한 컴퓨터 판독가능한 데이터(504)는 본 명세서에 개시된 원리에 따라 동작하도록 구성된 컴퓨터 명령들의 세트(506)를 포함한다. 이러한 일 실시예에서, 프로세서 실행가능한 명령(506)은 도 3의 예시적인 방법(300)과 같이 로컬 이벤트(105)와 관련된 클라이언트 애플리케이션(108)의 요청을 만족시키는 방법(508)을 수행하도록 구성될 수 있다. 이러한 다른 실시예에서, 프로세서 실행가능한 명령(506)은 도 4의 예시적인 시스템(408)과 같이 로컬 이벤트(206)와 관련된 클라이언트 애플리케이션(108)의 요청을 만족시키기 위한 시스템을 구현하도록 구성될 수 있다. 이러한 컴퓨터 판독가능한 매체의 일부 실시예는 이러한 방식으로 구성된 프로세서 실행가능한 명령을 저장하도록 구성된 컴퓨터 판독가능한 저장 매체(예를 들어, 하드 디스크 드라이브, 광학 디스크, 또는 플래시 메모리 디바이스)를 포함할 수 있다. 본 명세서에 개시된 기술에 따라 동작하도록 구성된 다수의 이러한 컴퓨터 판독가능한 매체가 당업자에 의해 고안될 수 있다.
D. 변형
본 명세서에서 논의되는 기술은 다수의 측면에서의 변형을 가지고 고안될 수 있으며, 일부 변형은 이러한 기술과 다른 기술들의 다른 변형과 관련된 추가적인 장점을 제시하고/하거나 단점을 감소시킬 수 있다. 또한, 일부 변형들이 조합하여 구현될 수 있으며, 일부 조합은 시너지 효과를 내는 협력을 통해 추가된 장점 및/또는 감소된 단점을 특징으로 할 수 있다. 변형들은 이러한 실시예들에 대한 개별적인 및/또는 시너지 효과를 내는 장점을 부여하도록 다양한 실시예(예를 들어, 도 3의 예시적인 방법(300) 및 도 4의 예시적인 시스템(408))에서 포함될 수 있다.
D1. 시나리오
이러한 기술의 실시예들 사이에서 달라질 수 있는 제 1 측면은 이러한 기술이 활용될 수 있는 시나리오와 관련된다.
이러한 제 1 측면의 제 1 변형으로서, 본 명세서에 개시된 기술은 서버, 서버 팜, 워크스테이션, 랩탑, 태블릿, 모바일폰, 게임 콘솔 및 네트워크 어플라이언스와 같은 다수의 타입의 디바이스(402)와 함께 활용될 수 있다. 이러한 디바이스(402)는 또한 유선 또는 무선 통신 디바이스; 키보드, 마우스, 터치패드, 터치 민감성 디스플레이, 마이크로폰 및 제스처 기반 입력 구성요소와 같은 휴먼 입력 디바이스; 스틸 또는 모션 카메라, 글로벌 위치확인 서비스(GPS) 디바이스 및 그외의 센서와 같은 자동화된 입력 디바이스; 디스플레이 및 스피커와 같은 출력 디바이스; 및 유선 및/또는 무선 네트워크 구성요소와 같은 통신 디바이스와 같은 다양한 컴퓨팅 구성요소를 제공할 수 있다.
이러한 제 1 측면의 제 2 변형으로서, 본 명세서에 개시된 기술은 웹서버, 파일 서버, 애플리케이션 서버, 미디어 서버, 피어-투-피어(peer-to-peer) 공유 좌표 서버, 데이터베이스 서버, 이메일 서버, 물리적 메트릭 모니터링 서버 및 감시 제어 및 데이터 획득(SCADA) 자동화 서버와 같은 다양한 타입의 서버(102)와 활용될 수 있다.
이러한 제 1 측면의 제 3 변형으로서, 본 명세서에 개시된 기술은 웹 브라우저, 시뮬레이트된(simulated) 및/또는 이뮬레이트된(emulated) 가상 머신, 미들웨어 플랫폼, 및/또는 분리 구조와 같은 다수의 타입의 가상 환경(110)에서 실행되는 애플리케이션(112)을 서비스하도록 활용될 수 있다.
이러한 제 1 측면의 제 4 변형으로서, 본 명세서에 개시된 기술은 해석된 및/또는 컴파일된 다양한 언어로 기록된 애플리케이션, 파일-공유 애플리케이션, 미디어 렌더링 애플리케이션 및 데이터-구동 클라이언트 애플리케이션과 같은 다수의 타입의 애플리케이션(112)을 서비스하도록 활용될 수 있다.
이러한 제 1 측면의 제 5 변형으로서, 본 명세서에 개시된 기술은 다수의 타입의 워커 프로세스 호스트(202) 내에서 다수의 타입의 워커 프로세스(114)를 실행하는 것을 포함할 수 있다. 예를 들어, 워커 프로세스(114)는 HTML 5 "웹 워커" 모델에 따라 실행되지만, 애플리케이션(112)을 호스팅하는 웹 브라우저 밖의 개별적인 쉘(shell) 내에서 실행되는 자바스크립트(JavaScript) 스크립트를 포함할 수 있다. 이와 달리, 워커 프로세스(114)는 부분적으로 또는 전체적으로 컴파일되고 자연적으로 디바이스(104) 내의 관리되는 컨텍스트(관리 런타임은 워커 프로세스 호스트(202)를 포함한다)로 실행되는 애플리케이션을 실행하는 것을 포함할 수 있다. 다른 대안으로서, 워커 프로세스 호스트(202)는 동일한 디바이스 상의 웹 브라우저 내에서 실행되는 애플리케이션(112)을 대신하여 지속적인 백그라운드 프로세싱을 수행하도록 구성된 로컬 웹서버를 포함할 수 있다. 또한, 워커 프로세스(114)는 Node.js 서버측 자바스크립트 환경을 활용하는 자바스크립트 스크립트를 포함할 수 있다.
이러한 제 1 측면의 제 6 변형으로서, 워커 프로세스(114)는 애플리케이션(112)을 대신하여 다수의 타입의 백그라운드 프로세싱을 수행할 수 있으며, 이는 오랜시간 계속되는 전산처리(실행 이벤트가 전상처리의 완료를 포함함); 스케줄링 또는 타이머 프로세스(실행 이벤트가 타임아웃 또는 타이머의 경과를 포함함); 데몬(daemon) 프로세스와 같이 지속적으로 이용가능한 기능(실행 이벤트는 디바이스(104) 상에서 실행되는 다른 프로세스에 의한 기능의 호출을 포함함); 및/또는 다양한 타입의 디바이스 이벤트(116) 모니터링(실행 이벤트는 디바이스(104)의 사용자(106)로부터의 사용자 입력 검출과 같은 디바이스 이벤트(116)의 검출된 인스턴스, 또는 모바일폰 디바이스의 착신 호출 또는 메시지의 수신과 같은 컴퓨팅 환경(108) 내에서 발생하는 하드웨어 또는 소프트웨어 이벤트를 포함함)을 포함한다. 워커 프로세스(114)는 이러한 디바이스 이벤트(116)에 애플리케이션(112)에 디바이스 이벤트(116)를 보고하는 것, 디바이스 이벤트(116)의 발생을 로깅(logging)하는 것, 또는 디바이스 이벤트(116)의 처리 동안 추가적인 로직을 적용하는 것과 같은 다양한 타입의 프로세싱을 적용할 수 있다. 이러한 시나리오 및 다른 시나리오들이 본 명세서에 개시된 기술과 호환가능할 수 있으며 개시된 기술을 바람직하게 활용할 수 있다.
D2. 워커 프로세스 호스팅
본 명세서에 개시된 기술의 실시예들 사이에서 달라질 수 있는 제 2 측면은 가상 환경(110) 밖에서 워커 프로세스(114)의 실행을 호스팅하는 방식을 포함한다. 즉, 워커 프로세스(114)가 애플리케이션(112)으로부터 수신되어 가상 환경(110) 밖에서 실행되지만, 이것은 디바이스(104)의 컴퓨팅 환경(108) 내에서의 자연적인 프로세스로서 제멋대로인 신뢰할 수 없는 코드의 실행을 발생시킬 수 있기 때문에 일부 타입의 프로세스 호스트 없이 워커 프로세스(114)가 가상 환경(110) 밖에서 실행하도록 허용하는 것이 바람직하지 않고/않거나 어려울 수 있다. 따라서, 가상 환경(110)으로부터 분리되었지만, 워커 프로세스(114)의 실행에는 다양한 타입의 호스팅 서비스를 워커 프로세스(114)에 제공하는 워커 호스트 구성요소(410)가 수반될 수 있다.
이러한 제 2 측면의 제 1 변형으로서, 워커 호스트 구성요소(410)는 워커 프로세스(114)에 다양한 형태의 호스팅을 적용할 수 있다. 이것의 제 1 예시로서, 워커 호스트 구성요소(410)는 워커 프로세스(114)를 위해 제공된 가상 환경(110)이 애플리케이션(112)을 위해 제공된 가상 환경(110)으로부터 분리되어 있는 한 워커 프로세스(114)를 위해 가상 환경(110)을 제공할 수 있다. 실제로, 워커 프로세스(114)를 위해 제공된 가상 환경(110)은 애플리케이션(112)을 위해 제공된 가상 환경(110)과 상당히 유사할 수 있으며(예로서, 두 프로세스 모두 웹 브라우저의 컨텍스트 내에서 실행할 수 있다), 가상 환경(110)의 분리는 본 명세서에 제공된 바와 같은 애플리케이션(112)의 라이프사이클과는 독립적인 워커 프로세스(114)의 지속을 가능하게 한다. 또한, 애플리케이션(112)을 위해 제공된 제 1 가상 환경(110)과 워커 프로세스(114)를 위해 제공된 제 2 (분리된) 가상 환경(110) 사이의 유사성은 일부 편의성과 효율성을 가능하게 할 수 있으며, 예를 들어 애플리케이션(112)에 적용된 동일한 보안 정책이 워커 프로세스(114)에도 적용될 수 있다. 예를 들어, 웹 브라우저 내에서 실행되는 웹 애플리케이션은 종종 크로스-도메인 보안 정책에 따라 제한되며, 예를 들어 이것은 웹 애플리케이션이 오직 웹 애플리케이션이 수신되는 도메인하고만 인터넷 상에서 통신할 수 있게 한다. 워커 호스트 구성요소(410)는 웹 브라우저 내에서 실행하고 워커 프로세스(114)와 연관된 웹 애플리케이션에 적용되는 것과 동일한 크로스-도메인 보안 정책에 따라 워커 프로세스(114)의 실행을 제한할 수 있으며, 예를 들어 워커 프로세스(114)가 애플리케이션(112)을 디바이스(104)에 제공한 도메인 외의 임의의 도메인, 서버, 또는 디바이스와 통신하는 것을 제한한다.
이와 달리, 워커 호스트 구성요소(410)는 상이한 세부사항을 갖는 워커 프로세스(114)에 상이한 실행 모델을 제시할 수 있다. 이러한 차이는 애플리케이션(112)(예로서, 사용자 인터페이스를 나타내는 애드 혹(adhoc) 프론트-엔드 코드에 적합한 실행 환경)과 워커 프로세스(114)(예로서, 사용자 인터페이스 없이 전산상 복잡하고 오랜 시간 계속되는 프로세싱에 적합한 실행 환경)의 서로 다른 컨텍스트의 관점에서 선택 및/또는 설계될 수 있다. 이러한 제 1 예시로서, 워커 프로세스(114)가 애플리케이션(112)보다 전산상 더 복잡한 프로세스를 활용할 수 있기 때문에, 워커 호스트 구성요소(410)는 실행 이전에 또는 실행 동안에 워커 프로세스(114)를 부분적으로 및/또는 전체적으로 컴파일할 수 있고, 따라서 코드 최적화 기술을 이용하여 보다 성능 기준에 맞는 실행을 제공하는 반면, 애플리케이션(112)은 해석가능한 스크립트로서 실행될 수 있다. 제 2 예시로서, 워커 호스트 구성요소(410)는 가상 환경(110) 내의 애플리케이션(112)의 스케줄링과는 다르게 컴퓨팅 환경(108) 내의 워커 프로세스(114)의 실행을 스케줄링할 수 있다. 예를 들어, 워커 프로세스(114)는 디바이스(104)의 유휴기간 동안 비교적 중단되지 않는 긴 프로세싱에 특히 적합한, 오랜 시간 계속되는 프로세스로서 스케줄링될 수 있는 반면, 애플리케이션(112)은 사용자 인터페이스 이벤트에 대한 응답과 같이 높은 응답성을 갖지만 짧게 지속되는 코드의 호출들의 세트로서 스케줄링될 수 있다. 제 3 예시로서, 워커 프로세스(114)는 예를 들어 워커 프로세스(114)를 위한 낮은 레벨의 하드웨어 및 네트워크 통신 모듈과 애플리케이션(112)을 위한 사용자 인터페이스 타입 모듈과 같이, 애플리케이션(112)과 상이한 애플리케이션 프로그래밍 인터페이스(API)의 세트가 제공될 수 있다. 제 4 예시로서, 워커 호스트 구성요소(410)는 애플리케이션(112)의 가상 환경(110)과 상이한 보안 모델을 나타낼 수 있다(예를 들어, 가상 환경(110) 밖에서 실행되는 워커 프로세스(114)의 확장된 성능의 관점에서, 워커 호스트 구성요소(410)는 악의적인 동작을 검출 및 차단하기 위해 실행 이전에 및/또는 실행 중에 보다 철저한 코드 평가를 적용할 수 있다). 역으로 다른 측면에서, 예를 들어 워커 프로세스(114)와 다른 디바이스 사이의 통신이 통신 대기의 허용가능한 증가로 더욱 면밀히 조사될 수 있기 때문에, 워커 프로세스(114)의 보안 모델은 가상 환경(110) 내에서 실행되는 애플리케이션(112)보다 더 완화된 것일 수 있으며, 워커 프로세스(114)는 애플리케이션(112)에 적용되는 크로스-도메인 보안 정책에 따라 제한되지 않을 수 있다. 예를 들어, 디바이스(104)가 제 2 디바이스 상에서 실행되는 원격 프로세스에 액세스 가능한 경우, 워커 호스트 구성요소(410)는 제 2 디바이스 상에서 실행되는 원격 프로세스를 워커 프로세스와 접속하라는 요청을 수신함에 따라 원격 프로세스를 워커 프로세스(114)와 접속시킬 수 있다. 기능의 확장은 애플리케이션(112)보다 높은 레벨의 신뢰도를 워커 프로세스(114) 내에 반영할 수 있고 사용자 동의 여부에 따를 수 있으며, 예를 들어 워커 호스트 구성요소(410)는 가상 환경(110) 밖의 워커 프로세스(114)의 실행을 개시하라는 제안을 사용자(106)에게 제시할 수 있고, 사용자(106)로부터 제안의 수용을 수신했을 때에만 이러한 실행을 개시할 수 있다. 사용자(106)는 또한 연관된 애플리케이션(112)의 종료 후에도 지속하는 워커 프로세스(114)를 검사하고, 그의 실행을 변경하도록 허용될 수 있다(예를 들어, 워커 프로세스(114)를 중지 및/또는 종료하라는 사용자(106)에 의한 요청을 만족시킴).
이러한 방식과 그외의 방식으로, 워커 프로세스(114)를 위해 제공되는 실행 모델이 애플리케이션(112)을 위해 제공되는 실행 모델과 뚜렷하게 다를 수 있다. 이러한 제 1 예시로서, 워커 호스트 구성요소(410)는 워커 프로세스(114)의 관리된 실행을 가능하게 하는 관리 런타임을 포함할 수 있다(예를 들어, 디바이스(104)의 아키텍처에 따른 구성요소 액세스 요청 및 메모리 할당을 용이하게 함). 이러한 제 2 예시로서, 워커 호스트 구성요소(410)는 디바이스 상에서 디바이스의 웹 브라우저 내에서도 실행되는 웹 애플리케이션의 서비스 내에 배치되고, 로컬 웹서버 프로세스로서 워커 프로세스(114)를 실행하도록 구성된 로컬 웹서버를 포함할 수 있다. 예를 들어, 워커 호스트 구성요소(410)는 로컬 웹서버의 Node.js 서버측 스크립팅 모듈을 타겟팅하는 자바스크립트 스크립트로서 설계될 수 있다. 이러한 제 3 예시로서, 워커 호스트 구성요소(410)는 자바 가상 머신과 같이 워커 프로세스(114)의 라이프사이클을 애플리케이션(112)의 라이프사이클로부터 분리하기 위해 가상 환경(110)과 별개로 실행하는 가상 머신을 제공할 수 있다. 워커 호스트 구성요소(410)에 의해 워커 프로세스(114)에 제공되는 실행 환경에서의 다수의 선택은 본 명세서에 개시된 기술로 이용가능하고 호환가능할 수 있다.
도 6은 본 발명에서 제공되는 워커 호스트 구성요소(410)에 의한 워커 프로세스(114)의 호스팅에서의 다양한 변형을 특징으로 하는 예시적인 시나리오(600)를 도시한다. 이러한 예시적인 시나리오(600)와 본 명세서에 개시된 기술에 따르면, 디바이스(104)는 애플리케이션(112)을 실행하는 가상 환경(110)뿐 아니라, 애플리케이션(112)을 대신하여 가상 환경(110) 밖에서 워커 프로세스(114)를 실행하는 워커 호스트 구성요소(410)를 제공한다. 제 1 예시로서, 일부 측면에서 워커 프로세스(114)의 호스팅은 가상 환경(110) 내의 애플리케이션(112)의 호스팅과 유사한 크로스-도메인 제한 정책과 같은 유사성을 공유할 수 있다. 예를 들어, 만약 애플리케이션(112)이 먼저 제 1 서비스(예로서, 웹 애플리케이션 서비스)를 제공하는 서비스(102)로부터 수신되고 이후에 워커 프로세스(114)가 동일한 서버(102)와의 통신(610)을 개시한다면, 워커 호스트 구성요소(410)는 제 1 서비스를 제공하는 서버(102)와의 통신(610)을 허용할 수 있다. 그러나, 만약 워커 프로세스(114)가 제 1 서비스를 제공하는 서버(102) 외의 다른 서버(614)에 의해 제공되는 서비스와의 통신(612)을 개시하고자 시도하면, 워커 호스트 구성요소(410)는 이러한 통신(612)을 차단(616)할 수 있다. 이와 달리 또는 이에 더하여, 워커 프로세스(114)에 적용되는 보안 정책은 애플리케이션(112)에 적용되는 보안 정책과 동일한 또는 다른 측면에서 상이할 수 있다. 예를 들어 예시적인 시나리오(600)에서, 디바이스(104)는 예를 들어, 복수의 디바이스(104)에 걸쳐 사용자(106)에게 일관적이고 매끄러운 사용자 경험을 제공하기 위해 광범위한 데이터 공유를 이용하는 연동 방식으로 동일한 사용자(106)에 의해 작동되는 디바이스(104)들의 세트를 포함하는 디바이스 메시(mesh)(602)의 일부로서 동작한다. 따라서, 애플리케이션(112)이 애플리케이션(112)을 제공하는 서버(102) 밖의 원격 프로세스(606)와 통신하도록 허용되지 않는다고 해도, 워커 프로세스(114)는 디바이스 메시(602) 내의 제 2 디바이스(604) 상에서 실행되는 원격 프로세스(606)와 통신(608)하도록 허용될 수 있다.
D3. 워커 프로세스 지속성 및 회복력
이러한 기술의 실시예들 사이에서 달라질 수 있는 제 3 측면은 워커 프로세스(114)의 지속성을 포함한다. 애플리케이션(112)의 종료를 검출하였을 때 워커 프로세스(114)의 실행 종료를 하지 않는 것에 더하여, 본 명세서에 개시된 기술은 워커 프로세스(114)의 지속성 및 회복력을 용이하게 하도록 추가적인 기술을 이용할 수 있다.
이러한 제 3 측면의 제 1 변형으로서, 워커 호스트 구성요소(410)는 애플리케이션(112) 뿐만 아니라 가상 환경(110)이 종료함에도 불구하고 워커 프로세스(114)가 지속하게 할 수 있다(예를 들어, 사용자(106)가 애플리케이션(112)을 호스팅하는 웹페이지를 닫은 후에 지속될 뿐 아니라 웹 브라우저가 완전히 종료되어 메모리로부터 언로딩(unloading)된 후에도 지속된다). 따라서, 디바이스(104)는 가상 환경(110)이 종료했을 때 워커 프로세스(114)가 종료하지 않도록 할 수 있다.
이러한 제 3 측면의 제 2 변형으로서, 워커 호스트 구성요소(410)는 워커 호스트 구성요소(410) 내의 결함(예를 들어, 워커 프로세스(114)를 관리하는 구성요소의 제외, 충돌, 또는 종료)에도 불구하고 워커 프로세스(114)가 지속하게 할 수 있다. 예를 들어, 워커 호스트 구성요소(410)는 실행중인 워커 프로세스(114) 및 그의 소스들의 리스트를 주기적으로 기록할 수 있다. 만약 워커 호스트 구성요소(410) 내에서 결함이 발생하면, 디바이스(104)는 워커 호스트 구성요소(410)를 종료하고, 디바이스의 컴퓨팅 환경 내에서의 워커 호스트 구성요소의 실행을 재개시하고, 결함 발생시에 워커 호스트 구성요소(10) 내에서 실행 중이던 워커 프로세스(114)의 실행을 재개시할 수 있다.
이러한 제 3 측면의 제 3 변형으로서, 워커 호스트 구성요소(410)는 디바이스(104)의 컴퓨팅 환경(108)에서의 뚜렷한 변화에도 불구하고 워커 프로세스(114)를 지속하게 할 수 있다. 예를 들어, 애플리케이션(112) 및/또는 가상 환경(110)의 종료가 재부팅과 같은 디바이스(104)의 컴퓨팅 환경(108)의 재시작 프로세스 동안 발생할 수 있다. 따라서, 컴퓨팅 환경(108)을 재시작한 후에, 디바이스는 가상 환경(110) 밖에서 워커 프로세스(114)의 실행을 재개시할 수 있다. 이것의 제 1 예시로서, 디바이스(104)는 컴퓨팅 환경(108)을 재시작한 후에 디바이스(104)가 비교적 최근 상태로 워커 프로세스(114)의 실행을 재개시할 수 있도록 디바이스(104)가 워커 프로세스(114)를 저장하고 주기적으로 그의 상태를 기록할 수 있다. 이것의 제 2 예시로서, 만약 워커 프로세스(114)가 서비스와의 통신으로부터 수신되고/되거나 서비스와의 통신에서 유지된다면, 디바이스(104)는 컴퓨팅 환경(108)을 재시작한 후에 서비스로부터 제 2 워커 프로세스(114)(예로서, 제 1 워커 프로세스(114)의 상태 보고 또는 최근의 관찰에 기초하여 실행을 재개하도록 구성된 워커 프로세스(114))를 요청할 수 있고, 서비스로부터 제 2 워커 프로세스(114)를 수신함에 따라 디바이스(104)의 가상 환경(110) 밖에서 제 2 워커 프로세스(114)를 실행할 수 있다. 이러한 지속성은 상이한 디바이스(104) 상에서 컴퓨팅 환경(108)을 재시작 또는 인계할 때에도, 예를 들어 사용자(106)의 디바이스 메시(602) 내의 제 2 디바이스(104)로 워커 프로세스(114)를 인계할 때에도 워커 프로세스(114)를 지속하게 할 수 있다.
이러한 제 3 측면의 제 4 변형으로서, 워커 프로세스(114)의 회복력은 애플리케이션(112)과 공유될 수 있다. 예를 들어, 애플리케이션(112)을 종료할 때 워커 프로세스(114)를 종료하지 않는 것에 더하여, 워커 호스트 구성요소(410)는 가상 환경(110) 내에서의 애플리케이션(112)의 실행 재개시를 검출함에 따라 종료 이전에 애플리케이션(112)에 의해 개시된 임의의 현재 실행중인 워커 프로세스(114)를 식별하여 애플리케이션(112)을 식별된 워커 프로세스(114)와 재접속시킬 수 있다. 예를 들어, 워커 프로세스(114)는 애플리케이션(112)의 종료 기간 동안 디바이스(104) 상에서 발생하는 임의의 관련 디바이스 이벤트(116)를 애플리케이션(112)에 통지할 수 있다. 워커 프로세스(114)의 지속성 및 회복력을 확대하기 위한 이러한 기술 및 다른 기술들이 본 명세서에 개시된 기술의 구현 중에 호환가능하게 고안될 수 있다.
D4. 애플리케이션 통지
이러한 기술의 실시예들 사이에서 달라질 수 있는 제 4 측면은 연관된 워커 프로세스(114)가 실행 이벤트(406)를 획득함에 따라 이를 애플리케이션(112)에 통지하는 방식을 포함할 수 있다.
이러한 제 4 측면의 제 1 변형으로서, 애플리케이션(112)에 통지하는 것은 다수의 타입의 통지 메커니즘을 통해 획득될 수 있다. 이것의 제 1 예시로서, 워커 호스트 구성요소(410)는 단순히 실행 이벤트(406)를 로그할 수 있으며, 애플리케이션(112)은 워커 프로세스(114)에 의해 획득되는 실행 이벤트(406)의 로그를 주기적으로 검사할 수 있다. 이것의 제 2 예시로서, 통지는 메시지 전달(message-passing)을 통해 이루어질 수 있으며, 예를 들어 워커 프로세스(114)는 실행 이벤트(406)를 식별하고 기술하는 실행 이벤트 통지(412)를 생성할 수 있고 가상 환경(110)은 이러한 실행 이벤트 통지(412)를 애플리케이션(112)에 제시할 수 있다. 이것의 제 3 예시로서, 통지는 콜백(callback) 메커니즘을 통해 이루어질 수 있으며, 이때 애플리케이션(112)은 워커 프로세스(114)가 실행 이벤트(406)를 획득할 때 호출될 코드의 메모리 위치를 나타낸다. 이러한 코드는 예를 들어 가상 환경(110) 내에서 실행될 애플리케이션(112)의 일부분; 워커 호스트 구성요소(410)에 의해 실행될 워커 프로세스(114)의 일부분; API 호출과 같은 컴퓨팅 환경(108)의 기능; 또는 모바일 에이전트, 추상 구문 트리(abstract syntax tree), 또는 스크립트와 같은 별개의 코드 부분을 포함할 수 있다.
이러한 제 4 측면의 제 2 변형으로서, 워커 프로세스(114)의 회복력이 통지 동안에 애플리케이션(112)에까지 미칠 수 있다. 이것의 제 1 예시로서, 만약 애플리케이션(112)이 종료된 후에 워커 프로세스(114)가 실행 이벤트(406)를 획득하였다면, 디바이스(104)는 예를 들어 웹 워커를 생성한 웹 애플리케이션의 웹페이지를 재로딩함으로써 통지 프로세스의 일부로서 가상 환경(110) 내의 애플리케이션(112)을 재개시할 수 있다. 이것의 제 2 예시로서, 애플리케이션(112)은 통지 프로세스의 일부로서 사용자(106)에게 자동으로 제시될 수 있다. 예를 들어, 실행 이벤트(406)를 획득하면, 디바이스(104)는 가상 환경(110) 및/또는 애플리케이션(112)을 컴퓨팅 환경(108) 내의 포어그라운드 프레젠테이션으로 올릴 수 있다(예를 들어, 웹 브라우저를 포어그라운드에 가져가서 애플리케이션(112)을 포함하는 탭으로 전환한다).
도 7은 디바이스(104)의 컴퓨팅 환경(108) 내에서 실행되는 지속적이고 회복력 있는 워커 프로세스를 특징으로 하는 예시적인 시나리오를 도시한다. 이러한 예시적인 시나리오에서, 제 1 시점(700)에서 (컴퓨팅 환경(108) 내의 가상 환경(110)을 포함하는) 웹 브라우저(702)는 서버(102)로부터 애플리케이션(112)을 수신할 수 있고, 웹 브라우저(702) 내에서 애플리케이션(112)의 실행을 개시할 수 있다. 이러한 실행은 컴퓨팅 환경(108)이 로컬 웹서버(704)의 서버 프로세스로서 실행할 수 있는 일부 백그라운드 프로세싱을 제공하기 위한 워커 프로세스(114)를 포함할 수 있다. 또한, 로컬 웹서버(704)는 워커 프로세스(114), 워커 프로세스(114) 및 애플리케이션(112)의 소스를 포함하는 서버(102) 및 주기적으로 워커 프로세스(114)의 상태를 기록할 수 있다.
제 2 시점(706)에서, 웹 브라우저(702)의 종료(708)가 사용자(106) 및/또는 디바이스(104)에 의해 개시될 수 있으며, 이러한 종료(708)는 웹 브라우저(702) 내에서 실행중인 애플리케이션(112)의 종료를 포함할 수 있다. 그러나, 본 명세서에 개시된 기술에 따라, 웹 브라우저(702) 밖의 워커 프로세스(114)의 실행은 애플리케이션(112) 및 가상 환경(110)의 종료(708)에도 불구하고 워커 프로세스(114)가 지속되게 한다.
제 3 시점(710)에서, 컴퓨팅 환경(108) 또한 종료(712)를 경험할 수 있다(예를 들어, 디바이스(104)의 재부팅 동안). 종료(712)에 이은 제 4 시점(714)에서, 컴퓨팅 환경(108)이 재시작될 수 있다. 재시작은 로컬 웹서버(704)의 자동적인 재개시를 포함할 수 있으며, 이는 컴퓨팅 환경(108)의 종료(712)시에 로컬 웹서버(704)에 의해 호스팅된 워커 프로세스(114)의 기록을 검사할 수 있다. 그 다음 로컬 웹서버(704)는 서버(102)에 접속할 수 있고, 서버(102)로부터 제 2 워커 프로세스(114)(예를 들어, 제 1 시점(700)에서 개시된 워커 프로세스(114)와 동일한 인스턴스, 또는 종료(712) 시점에서의 워커 프로세스(114)의 상태를 반영한 변경된 워커 프로세스)를 수신(716)할 수 있다. 따라서 컴퓨팅 환경(108)은 컴퓨팅 환경(108)의 재시작에 이어서 워커 프로세스(114)의 실행을 자동으로 재개시할 수 있다.
제 5 시점(718)에서, 디바이스 이벤트(116)(예로서, 사용자(106)에 대한 착신 호출)가 컴퓨팅 환경(108) 내에서 발생할 수 있다. 만약 워커 프로세스(114)가 (예를 들어 워커 프로세스(114)의 실행 이벤트(406)로서) 디바이스 이벤트(116)와 연관되었다면, 로컬 웹서버(704)는 워커 프로세스(114)에 디바이스 이벤트(116)를 통지할 수 있다. 또한, 워커 프로세스(114)는 애플리케이션(112)에 디바이스 이벤트(116)를 통지(720)할 수 있다. 또한, 만약 애플리케이션(112) 및/또는 웹 브라우저(702)가 현재 실행중이 아니라면, 디바이스(104)는 (예를 들어, 웹 브라우저(702) 내의 페이지를 재로딩함으로써) 웹 브라우저(702) 및/또는 애플리케이션(112)을 재개시할 수 있으며, 또한 웹 브라우저(702)를 컴퓨팅 환경(108) 내의 포어그라운드 프레젠테이션으로 가져갈 수 있다. 이러한 방식으로, 디바이스(104)는 본 명세서에 개시된 기술의 응용을 통해 애플리케이션(112)의 종료, 가상 환경(110)의 종료 및 컴퓨팅 환경(108)의 재시작에도 불구하고 워커 프로세스(114)가 지속되는 회복력 있는 실행을 획득할 수 있다.
E. 컴퓨팅 환경
도 8과 아래의 논의는 본 명세서에 개시된 하나 이상의 규정의 실시예들을 구현하기에 적합한 컴퓨팅 환경에 대한 간략하고 일반적인 설명을 제공한다. 도 8의 운영 환경은 단지 적절한 운영 환경의 하나의 예시이며, 운영 환경의 용도 또는 기능의 범주에 대한 어떠한 제한을 두기 위한 것이 아니다. 예시적인 컴퓨팅 디바이스는 개인 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, (모바일폰, PDA, 미디어 플레이어 등과 같은) 모바일 디바이스, 멀티프로세서 시스템, 고객 전자기기, 미니컴퓨터, 메인프레임 컴퓨터, 전술된 임의의 시스템 또는 디바이스를 포함하는 분산 컴퓨팅 환경 등을 포함하지만, 이것으로 한정되는 것은 아니다.
필수적인 것은 아니지만, 실시예들은 하나 이상의 컴퓨팅 디바이스에 의해 실행되는 "컴퓨터 판독가능한 명령"의 일반적인 맥락으로 기술되었다. 컴퓨터 판독가능한 명령은 (아래에서 기술되는) 컴퓨터 판독가능한 매체를 통해 배포될 수 있다. 컴퓨터 판독가능한 명령은 특정한 태스크를 수행하거나 특정한 추출 데이터 타입을 구현하는 함수, 객체, 애플리케이션 프로그래밍 인터페이스(API), 데이터 구조 등과 같은 프로그램 모듈로서 구현될 수 있다. 전형적으로, 컴퓨터 판독가능한 명령의 기능은 다양한 실시예에서 바람직하게 결합되거나 분산될 수 있다.
도 8은 본 발명에서 제공되는 하나 이상의 실시예를 구현하도록 구성된 컴퓨팅 디바이스(802)를 포함하는 예시적인 시스템(800)을 도시한다. 일 구성에서, 컴퓨팅 디바이스(802)는 적어도 하나의 처리 장치(806) 및 메모리(808)를 포함한다. 컴퓨팅 디바이스의 정확한 구성 및 타입에 따라, 메모리(808)는 휘발성(예를 들어, RAM), 비휘발성(예를 들어 ROM, 플래시 메모리 등), 또는 이들의 일부 조합일 수 있다. 이러한 구성은 도 8에서 점선(804)에 의해 나타내어졌다.
다른 실시예에서, 디바이스(802)는 추가적인 특성 및/또는 기능을 포함할 수 있다. 예를 들어, 디바이스(802)는 자기적 스토리지, 광학적 스토리지 등을 포함하는 (예로서 제거가능 및/또는 제거 불가능한) 추가적인 스토리지도 포함할 수 있지만, 이것으로 제한되는 것은 아니다. 이러한 추가적인 스토리지는 도 8에서 스토리지(810)에 의해 나타내어졌다. 일 실시예에서, 본 발명에서 제공된 하나 이상의 실시예를 구현하기 위한 컴퓨터 판독가능한 명령은 스토리지(810) 내에 존재할 수 있다. 스토리지(810)는 운영 시스템, 애플리케이션 프로그램 등을 구현하기 위한 다른 컴퓨터 판독가능한 명령도 저장할 수 있다. 컴퓨터 판독가능한 명령은 예를 들어 처리 장치(806)에 의한 실행을 위해 메모리(808) 내에 로딩될 수 있다.
본 명세서에서 사용되는 "컴퓨터 판독가능한 매체"라는 표현은 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 제거가능 및 제거 불가능한 매체를 포함한다. 메모리(808) 및 스토리지(810)는 컴퓨터 저장 매체의 예시이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 스토리지, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 또는 원하는 정보를 저장하도록 사용될 수 있고 디바이스(802)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이것으로 제한되는 것은 아니다. 임의의 이러한 컴퓨터 저장 매체는 디바이스(802)의 일부일 수 있다.
또한 디바이스(802)는 디바이스(802)가 다른 디바이스와 통신할 수 있게 하는 통신 접속(들)(816)을 포함할 수 있다. 통신 접속(들)(816)은 모뎀, 네트워크 인터페이스 카드(NIC), 통합 네트워크 인터페이스, 무선 주파수 송신기/수신기, 적외선 포트, USB 접속, 또는 컴퓨팅 디바이스(802)를 다른 컴퓨팅 디바이스에 접속시키기 위한 다른 인터페이스를 포함할 수 있지만, 이것으로 한정되는 것은 아니다. 통신 접속(들)(816)은 유선 접속 또는 무선 접속을 포함할 수 있다. 통신 접속(들)(816)은 통신 매체를 전송 및/또는 수신할 수 있다.
"컴퓨터 판독가능한 매체"라는 표현은 통신 매체를 포함할 수 있다. 통신 매체는 전형적으로 컴퓨터 판독가능한 명령 또는 반송파 또는 다른 수송 메커니즘과 같은 "변조된 데이터 신호" 내의 다른 신호를 구현하며 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 표현은 신호 내의 정보를 인코딩하는 것과 같은 방식으로 설정 또는 변경된 하나 이상의 자신의 특징을 갖는 신호를 포함할 수 있다.
디바이스(802)는 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스, 적외선 카메라, 비디오 입력 디바이스, 및/또는 임의의 다른 입력 디바이스와 같은 입력 디바이스(들)(814)를 포함할 수 있다. 하나 이상의 디스플레이, 스피커, 프린터, 및/또는 임의의 다른 출력 디바이스와 같은 출력 디바이스(들)(812)도 디바이스(802) 내에 포함될 수 있다. 입력 디바이스(들)(814) 및 출력 디바이스(들)(812)는 유선 접속, 무선 접속, 또는 이들의 임의의 조합을 통해 디바이스(802)에 접속될 수 있다. 일 실시예에서, 다른 컴퓨팅 디바이스로부터의 입력 디바이스 또는 출력 디바이스가 컴퓨팅 디바이스(802)를 위한 입력 디바이스(들)(814) 또는 출력 디바이스(들)(812)로서 사용될 수 있다.
컴퓨팅 디바이스(802)의 구성요소들은 버스와 같은 다양한 상호접속에 의해 접속될 수 있다. 이러한 상호접속은 PCI Express와 같은 주변 구성요소 상호접속(PCI), USB, Firewire(IEEE 1394), 광학 버스 구조 등을 포함할 수 있다. 다른 실시예에서, 컴퓨팅 디바이스(802)의 구성요소들은 네트워크에 의해 상호접속될 수 있다. 예를 들어, 메모리(808)는 네트워크에 의해 상호접속된 서로 다른 물리적 장소에 위치된 복수의 물리적 메모리 장치들로 구성될 수 있다.
당업자는 컴퓨터 판독가능한 명령을 저장하기 위해 사용되는 저장 디바이스들이 네트워크를 가로질러 분산될 수 있음을 인식할 것이다. 예를 들어, 네트워크(818)를 통해 액세스 가능한 컴퓨팅 디바이스(820)는 본 발명에서 제공된 하나 이상의 실시예를 구현하기 위한 컴퓨터 판독가능한 명령을 저장할 수 있다. 컴퓨팅 디바이스(802)는 컴퓨팅 디바이스(820)에 액세스할 수 있고 실행을 위해 컴퓨터 판독가능한 명령의 일부 또는 전부를 다운로드할 수 있다. 이와 달리, 컴퓨팅 디바이스(802)는 필요에 따라 컴퓨터 판독가능한 명령의 조각들을 다운로드할 수 있거나, 또는 일부 명령이 컴퓨팅 디바이스(802)에서 실행되고 일부는 컴퓨팅 디바이스(820)에서 실행될 수도 있다.
F. 용어들의 사용
청구사항이 구조적 특성 및/또는 방법론적 동작들에 대해 특정한 언어로 기술되었지만, 첨부된 특허청구범위에서 정의된 청구 사항이 전술된 특정한 특성 또는 동작들로 반드시 제한되지는 않음이 이해될 것이다. 오히려, 전술된 특정한 특성 및 동작들은 특허청구범위를 구현하는 예시적인 형태로서 개시된다.
이 명세서에서 사용되는 "구성요소," "모듈," "시스템," "인터페이스" 등과 같은 용어는 일반적으로 컴퓨터 관련 엔티티, 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어를 지칭하기 위한 것이다. 예를 들어, 구성요소는 프로세서 상에서 구동하는 프로세스, 프로세서, 객체, 실행가능물, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이것으로 한정되는 것은 아니다. 예시로서, 컨트롤러 상에서 구동하는 애플리케이션과 컨트롤러 모두가 구성요소일 수 있다. 하나 이상의 구성요소는 프로세스 및/또는 실행 스레드 내에 존재할 수 있으며 구성요소는 하나의 컴퓨터 상에 로컬화될 수 있고/있거나 둘 이상의 컴퓨터 사이에서 분산될 수 있다.
또한, 청구된 청구사항은 개시된 청구사항을 구현하도록 컴퓨터를 제어하기 위해 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생산하기 위한 표준 프로그래밍 및/또는 엔지니어링 기술을 이용한 방법, 장치, 또는 제조물품으로서 구현될 수 있다. 본 명세서에서 사용된 "제조물품(article of manufacture)"이라는 표현은 임의의 컴퓨터 판독가능한 디바이스, 캐리어, 또는 매체로부터 액세스 가능한 컴퓨터 프로그램을 포함하는 것이다. 물론, 당업자는 청구된 청구사항의 범주 또는 사상으로부터 벗어나지 않고 이러한 구성에 대한 다수의 수정이 이루어질 수 있음을 인지할 것이다.
실시예들의 다양한 동작이 본 명세서에서 제공된다. 일 실시예에서, 기술된 하나 이상의 동작이 하나 이상의 컴퓨터 판독가능한 매체 상에 저장된 컴퓨터 판독가능한 명령을 구성할 수 있으며, 이러한 컴퓨터 판독가능한 명령이 컴퓨팅 디바이스에 의해 실행되면 컴퓨팅 디바이스로 하여금 기술된 동작들을 수행하게 할 것이다. 일부 또는 전체 동작들이 기술된 순서가 이러한 동작들이 반드시 순서에 의존한다는 것을 의미하는 것으로 해석되어서는 안된다. 바람직한 다른 순서화가 당업자에 의해 이해될 수 있을 것이다. 또한, 반드시 모든 동작들이 본 명세서에서 제공된 각각의 실시예에서 존재하는 것은 아님이 이해될 것이다.
또한, 본 명세서에서 사용된 "예시적인"이라는 표현은 예시, 사례, 또는 실례로서의 역할을 수행함을 의미한다. 본 명세서에서 "예시적인" 것으로서 기술된 임의의 측면 또는 설계가 반드시 다른 측면 또는 설계들에 대해서도 바람직한 것으로 해석되어서는 안된다. 오히려, 예시적이라는 표현의 사용은 구체적인 방식으로 개념을 나타내기 위한 것이다. 본 명세서에서 사용된 "또는"이라는 용어는 배타적인 "또는"이 아닌 포괄적인 "또는"을 의미하는 것이다. 즉, 달리 명시되거나 맥락으로부터 명백한 것이 아닌 한, "X는 A 또는 B를 사용한다"는 자연의 포괄적인 순열을 의미하는 것이다. 즉, 만약 X가 A를 사용하고; X가 B를 사용하고; 또는 X가 A 및 B 모두를 사용하면, "X는 A 또는 B를 사용한다"가 임의의 전술된 사례 하에서 만족된다. 또한, 본 명세서 및 첨부된 특허청구범위에서 사용된 단수 명사는 달리 명시되거나 단수 형태와 관련된 맥락으로부터 명백하지 않다면 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석될 수 있다.
또한, 본 발명이 하나 이상의 구현과 관련하여 도시되고 기술되었지만, 등가의 변경 및 수정이 이러한 명세 및 첨부된 도면의 해석 및 이해에 기초하여 당업자에게 발생할 것이다. 본 발명은 이러한 모든 수정 및 변경을 포함하며, 아래의 특허청구범위의 범주에 의해서만 제한된다. 특히 전술된 구성요소(예로서, 요소, 리소스 등)에 의해 수행되는 다양한 기능들과 관련하여, 이러한 구성요소를 기술하도록 사용된 용어들은 달리 표시되지 않는 한, 본 명세서에서 개시된 본 발명의 예시적인 구현에서 기능을 수행하는 개시된 구조와 구조적으로 동등하지 않다고 하더라도 (예로서, 기능적으로 동등한) 기술된 구성요소의 명시된 기능을 수행하는 임의의 구성요소에 상응한다. 또한, 본 발명의 특정한 특성이 몇몇 구현들 중 오직 하나와 관련하여 개시되었을 수 있지만, 이러한 특성은 임의의 주어진 또는 특정한 적용에 대해 바람직하고 유리할 수 있게 다른 구현들의 하나 이상의 다른 특성들과 결합될 수 있다. 또한, "포함하는," "구비하는," "갖는," "가지고 있는" 또는 이들의 변형어와 같은 표현들이 상세한 설명 또는 특허청구범위에서 사용된 경우에, 이들은 "포함하는"과 유사한 방식의 포괄적인 표현이다.

Claims (20)

  1. 프로세서를 구비한 디바이스의 가상 환경 내에서 애플리케이션을 대신하여 프로세싱을 수행하는 방법으로서,
    상기 프로세서 상에서 명령어를 실행하는 단계를 포함하되, 상기 명령어는
    실행 이벤트를 포함하는 워커 프로세스(worker process)를 실행하라는 요청을 애플리케이션으로부터 수신하면, 상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 개시하고,
    상기 애플리케이션의 종료를 검출할 경우, 상기 워커 프로세스가 종료되지 않게 하고,
    상기 워커 프로세스가 상기 실행 이벤트를 달성할 경우, 상기 워커 프로세스의 상기 실행 이벤트를 상기 애플리케이션에 통지하도록 구성된
    방법.
  2. 제 1 항에 있어서,
    상기 실행 이벤트는 실행 이벤트 세트로부터 선택되고,
    상기 실행 이벤트 세트는
    연산 프로세스의 완료,
    타임아웃,
    상기 디바이스의 사용자로부터의 사용자 입력의 검출, 및
    상기 디바이스의 디바이스 이벤트의 검출을 포함하는
    방법.
  3. 제 1 항에 있어서,
    상기 명령어는 상기 가상 환경이 종료되는 경우, 상기 워커 프로세스가 종료되지 않게 하도록 구성된
    방법.
  4. 제 1 항에 있어서,
    상기 명령어는 상기 애플리케이션의 종료를 검출한 이후 상기 애플리케이션의 재시작을 검출하면,
    종료 이전에 상기 애플리케이션에 의해 개시된 적어도 하나의 식별된 워커 프로세스를 식별하고,
    상기 애플리케이션을 상기 적어도 하나의 식별된 워커 프로세스에 연결하도록 더 구성된
    방법.
  5. 제 1 항에 있어서,
    상기 애플리케이션에 통지하는 것은
    상기 애플리케이션이 종료되었는지 여부를 결정하는 것과,
    상기 애플리케이션이 종료되었다고 결정되면, 상기 가상 환경에서 상기 애플리케이션을 재시작하는 것을 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 애플리케이션으로부터의 상기 요청은 콜백을 지정하고,
    상기 애플리케이션에 통지하는 것은 상기 워커 프로세스가 상기 실행 이벤트를 달성한 경우, 상기 애플리케이션의 상기 콜백을 호출하는 것을 포함하는
    방법.
  7. 제 1 항에 있어서,
    상기 디바이스는 컴퓨팅 환경을 포함하고,
    상기 애플리케이션을 종료하는 것은 상기 디바이스의 상기 컴퓨팅 환경을 재시작하는 동안 상기 애플리케이션을 종료하는 것을 포함하는
    방법.
  8. 제 7 항에 있어서,
    상기 명령어는 상기 디바이스의 상기 컴퓨팅 환경을 재시작한 후에, 상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 재개시하도록 더 구성된
    방법.
  9. 제 1 항에 있어서,
    상기 디바이스는 제 2 디바이스 상에서 실행되는 원격 프로세스에 액세스가능하고,
    상기 명령어는 상기 제 2 디바이스 상에서 실행되는 상기 원격 프로세스를 상기 워커 프로세스에 연결하라는 요청을 수신하면, 상기 원격 프로세스를 상기 워커 프로세스에 연결하도록 더 구성된
    방법.
  10. 디바이스의 애플리케이션을 대신하여 프로세싱을 수행하는 시스템으로서,
    적어도 하나의 애플리케이션이 상기 디바이스 상에서 실행되는 가상 환경과,
    상기 가상 환경 밖의 상기 디바이스 상에서 실행되는 워커 호스트 컴포넌트(worker host component)를 포함하되,
    상기 워커 호스트 컴포넌트는,
    실행 이벤트를 포함하는 워커 프로세스를 실행하라는 요청을 애플리케이션으로부터 수신하면, 상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 개시하고,
    상기 애플리케이션의 종료를 검출할 경우, 상기 워커 프로세스가 종료되지 않게 하고,
    상기 워커 프로세스가 상기 실행 이벤트를 달성할 경우, 상기 워커 프로세스의 상기 실행 이벤트를 상기 애플리케이션에 통지하도록 구성된
    시스템.
  11. 제 10 항에 있어서,
    상기 가상 환경은 웹 브라우저를 포함하고,
    상기 애플리케이션은 웹 애플리케이션을 포함하며,
    상기 워커 프로세스는 상기 웹 브라우저 밖에서 실행되는 웹 워커(web worker)를 포함하는
    시스템.
  12. 제 11 항에 있어서,
    상기 워커 호스트 컴포넌트는 상기 웹 브라우저의 크로스-도메인 제한 정책cross-domain restriction policy)에 따라 상기 워커 프로세스의 상기 실행을 제한하도록 구성되는
    시스템.
  13. 제 11 항에 있어서,
    상기 워커 호스트 컴포넌트는 상기 워커 프로세스를 로컬 웹서버 프로세스로서 실행하도록 구성된 로컬 웹서버를 포함하는
    시스템.
  14. 제 10 항에 있어서,
    상기 워커 호스트 컴포넌트는 상기 디바이스의 컴퓨팅 환경 내에서 실행되는 백그라운드 서비스를 포함하고,
    상기 워커 호스트 컴포넌트는 상기 디바이스가 상기 컴퓨팅 환경을 재시작할 때 자동으로 재시작되도록 구성되는
    시스템.
  15. 제 10 항에 있어서,
    워커 호스트 관리 컴포넌트를 더 포함하되,
    상기 워커 호스트 관리 컴포넌트는, 상기 워커 호스트 컴포넌트의 워커 호스트 컴포넌트 결함을 검출하면,
    상기 워커 호스트 컴포넌트를 종료하고,
    상기 디바이스의 컴퓨팅 환경 내에서 상기 워커 호스트 컴포넌트의 실행을 재개시하고,
    상기 워커 호스트 컴포넌트 결함 동안에 상기 워커 호스트 컴포넌트에 의해 실행된 워커 프로세스를 재개시하도록 구성된
    시스템.
  16. 제 15 항에 있어서,
    상기 워커 프로세스는 서비스를 제공하는 서버로부터 제공되고,
    상기 워커 프로세스의 실행을 재개시하는 것은,
    상기 컴퓨팅 환경을 재시작한 후에, 상기 서비스를 제공하는 서버에 제 2 워커 프로세스를 요청하는 것과,
    상기 서비스를 제공하는 서버로부터 상기 제 2 워커 프로세스를 제공받으면, 상기 가상 환경 밖에서 상기 제 2 워커 프로세스의 실행을 개시하는 것
    을 포함하는
    시스템.
  17. 제 10 항에 있어서,
    상기 워커 프로세스는 제 1 서비스를 제공하는 서버로부터 제공되고,
    상기 가상 환경 밖에서 상기 워커 프로세스를 실행하는 것은 상기 워커 프로세스와 상기 제 1 서비스 이외의 서비스 사이의 통신을 제한하는 것을 포함하는
    시스템.
  18. 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 명령어는 가상 환경을 포함하는 디바이스의 프로세서 상에서 실행되는 경우 상기 디바이스로 하여금,
    실행 이벤트를 포함하는 워커 프로세스를 실행하라는 요청을 애플리케이션으로부터 수신하면, 상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 개시하고,
    상기 애플리케이션의 종료를 검출할 경우, 상기 워커 프로세스가 종료되지 않게 하며,
    상기 워커 프로세스가 상기 실행 이벤트를 달성할 경우, 상기 워커 프로세스의 상기 실행 이벤트를 상기 애플리케이션에 통지함으로써,
    상기 가상 환경 내에서 애플리케이션을 대신하여 프로세싱을 수행하게 하는
    컴퓨터 판독가능 저장 매체.
  19. 제 18 항에 있어서,
    상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 개시하는 것은
    상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 개시하라는 제안을 사용자에게 제시하는 것과,
    상기 사용자로부터 상기 제안의 수용을 수신했을 경우, 상기 가상 환경 밖에서 상기 워커 프로세스의 실행을 개시하는 것을 포함하는
    컴퓨터 판독가능 저장 매체.
  20. 제 18 항에 있어서,
    상기 디바이스는 컴퓨팅 환경을 포함하고,
    상기 워커 프로세스의 상기 실행 이벤트를 상기 애플리케이션에 통지하는 것은 상기 가상 환경 및 상기 애플리케이션을 상기 디바이스의 상기 컴퓨팅 환경 내의 포어그라운드 프레젠테이션(foreground presentation)으로 가져오는 것을 포함하는
    컴퓨터 판독가능 저장 매체.
KR1020147027267A 2012-03-29 2013-03-14 지속적이고 회복력 있는 워커 프로세스 KR102076379B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261617474P 2012-03-29 2012-03-29
US61/617,474 2012-03-29
US13/713,536 2012-12-13
US13/713,536 US9092247B2 (en) 2012-03-29 2012-12-13 Persistent and resilient worker processes
PCT/US2013/031115 WO2013148223A1 (en) 2012-03-29 2013-03-14 Persistent and resilient worker processes

Publications (2)

Publication Number Publication Date
KR20140138803A KR20140138803A (ko) 2014-12-04
KR102076379B1 true KR102076379B1 (ko) 2020-02-11

Family

ID=49236850

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027267A KR102076379B1 (ko) 2012-03-29 2013-03-14 지속적이고 회복력 있는 워커 프로세스

Country Status (7)

Country Link
US (2) US9092247B2 (ko)
EP (1) EP2831796B1 (ko)
JP (1) JP6285905B2 (ko)
KR (1) KR102076379B1 (ko)
CN (2) CN106127036B (ko)
TW (2) TWI573075B (ko)
WO (1) WO2013148223A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110179303A1 (en) * 2010-01-15 2011-07-21 Microsoft Corporation Persistent application activation and timer notifications
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US9600351B2 (en) 2012-12-14 2017-03-21 Microsoft Technology Licensing, Llc Inversion-of-control component service models for virtual environments
US9700240B2 (en) 2012-12-14 2017-07-11 Microsoft Technology Licensing, Llc Physical activity inference from environmental metrics
US11397520B2 (en) 2013-08-01 2022-07-26 Yogesh Chunilal Rathod Application program interface or page processing method and device
US20150199312A1 (en) * 2014-01-14 2015-07-16 Futurewei Technologies Inc. System and method to share a web thread during page transitions in a web browser
US9430212B2 (en) * 2014-02-10 2016-08-30 Netflix, Inc. Automatically generating volume images and launching virtual computing instances
US9189264B1 (en) * 2014-06-09 2015-11-17 Western Digital Technologies, Inc. Notification propagation in virtual computing environment
CN105335171B (zh) * 2014-06-24 2019-05-10 北京奇虎科技有限公司 应用程序常驻操作系统后台的方法及装置
US9619773B2 (en) * 2014-09-15 2017-04-11 Sap Portals Israel Ltd. Systems and methods for code instrumentation for analytics
US9361140B1 (en) * 2014-12-11 2016-06-07 International Business Machines Corporation Isolating applications in server environment
US9870266B2 (en) * 2015-07-30 2018-01-16 Nasdaq, Inc. Background job processing framework
US10659340B2 (en) 2016-01-28 2020-05-19 Oracle International Corporation System and method for supporting VM migration between subnets in a high performance computing environment
KR102138421B1 (ko) * 2018-05-30 2020-07-28 주식회사 티파이브온라인 멀티스레드 지원을 위한 크로스플랫폼 시스템 및 운용방법
US11055110B2 (en) * 2018-06-05 2021-07-06 Microsoft Technology Licensing, Llc Operating system service for persistently executing programs
KR102492996B1 (ko) 2018-06-08 2023-01-31 삼성전자주식회사 외부 입력을 이용하여 백그라운드 태스크를 처리하는 전자 장치 및 그 저장 매체
US11422829B1 (en) 2021-11-17 2022-08-23 Morgan Stanley Services Group Inc. Systems and methods for resilient service worker bridge

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011040849A1 (en) * 2009-10-01 2011-04-07 Telefonaktiebolaget L M Ericsson (Publ) A method and arrangement for managing persistent rich internet applications

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463446B1 (en) * 1998-02-26 2002-10-08 Sun Microsystems, Inc. Method and apparatus for transporting behavior in an event-based distributed system
TW200404449A (en) * 2002-06-12 2004-03-16 Vuico L L C System and method for implementing virtual mobile messaging services
JP4112319B2 (ja) * 2002-09-06 2008-07-02 日本電信電話株式会社 プロセス再開方法、プロセス再開装置、プロセス再開プログラム
US7559065B1 (en) * 2003-12-31 2009-07-07 Emc Corporation Methods and apparatus providing an event service infrastructure
US7730479B2 (en) * 2004-03-30 2010-06-01 Kyocera Corporation Cell-phone terminal, program management method and computer program of same
US20060136933A1 (en) * 2004-12-17 2006-06-22 Microsoft Corporation Server-side eventing for managed server applications
US7877101B1 (en) 2006-12-28 2011-01-25 Marvell International Ltd. Locating a WLAN station using signal propagation delay
US20070240157A1 (en) * 2006-04-10 2007-10-11 Nokia Corporation Method, apparatus, mobile terminal and computer program product for safe application termination in a virtual machine
DE102006049646B3 (de) 2006-10-20 2008-06-19 Siemens Ag Verfahren und Sendevorrichtung zum gesicherten Erstellen und Versenden einer elektronischen Nachricht sowie Verfahren und Empfangsvorrichtung zum gesicherten Empfangen und Verarbeiten einer elektronischen Nachricht
US8065659B1 (en) 2007-05-30 2011-11-22 Google Inc. Method and apparatus for executing scripts within a web browser
KR101478619B1 (ko) 2008-02-27 2015-01-06 삼성전자주식회사 가상화 기술을 이용한 데이터 입출력 방법 및 장치
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8024732B2 (en) * 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
CN101414277B (zh) 2008-11-06 2010-06-09 清华大学 一种基于虚拟机的按需增量恢复容灾系统及方法
US20110154441A1 (en) 2009-12-18 2011-06-23 Electronics And Telecommunications Research Institute Online development environment server, online marketplace server, online development environment constituting method, and developed application providing method
US8621628B2 (en) * 2010-02-25 2013-12-31 Microsoft Corporation Protecting user mode processes from improper tampering or termination
US8468542B2 (en) 2010-03-04 2013-06-18 Microsoft Corporation Virtual environment for server applications, such as web applications
US8370899B2 (en) 2010-08-11 2013-02-05 Emc Corporation Disposable browser for commercial banking
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US9075672B2 (en) 2011-10-21 2015-07-07 Microsoft Technology Licensing, Llc Monadic evaluation of injected query compositions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011040849A1 (en) * 2009-10-01 2011-04-07 Telefonaktiebolaget L M Ericsson (Publ) A method and arrangement for managing persistent rich internet applications

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Douglas C. Schmidt, "Asynchronous Completion Token"(1999.11.)*

Also Published As

Publication number Publication date
CN104205109A (zh) 2014-12-10
WO2013148223A1 (en) 2013-10-03
US9600353B2 (en) 2017-03-21
KR20140138803A (ko) 2014-12-04
JP2015515682A (ja) 2015-05-28
TW201349118A (zh) 2013-12-01
US20150331726A1 (en) 2015-11-19
CN106127036A (zh) 2016-11-16
TW201709059A (zh) 2017-03-01
TWI573075B (zh) 2017-03-01
EP2831796A4 (en) 2016-01-13
TWI587219B (zh) 2017-06-11
JP6285905B2 (ja) 2018-02-28
CN106127036B (zh) 2019-05-10
US20130263127A1 (en) 2013-10-03
EP2831796B1 (en) 2019-01-09
CN104205109B (zh) 2017-12-19
US9092247B2 (en) 2015-07-28
EP2831796A1 (en) 2015-02-04

Similar Documents

Publication Publication Date Title
KR102076379B1 (ko) 지속적이고 회복력 있는 워커 프로세스
US10810071B2 (en) Systems and methods of detecting power bugs
CN109032706B (zh) 智能合约执行方法、装置、设备和存储介质
US10503371B2 (en) Virtual tabs supporting web content suspension
US8082464B2 (en) Managing availability of a component having a closed address space
US20160055066A1 (en) Fault tolerance for complex distributed computing operations
US20220083364A1 (en) Reconciler sandboxes for secure kubernetes operators
US20150095758A1 (en) Web content suspension compatibility and suspended web content lifetime
JP6088531B2 (ja) ローカルサーバーを通じたローカルクライアントアプリケーションのためのイベントサービス
TWI590073B (zh) 用於提供存取虛擬命名空間中資源的虛擬整合呼叫
Sahraei et al. Xfaas: Hyperscale and low cost serverless functions at meta
JP6385471B2 (ja) 移行および遠隔ランタイム統合
KR102225476B1 (ko) 임베디드 웹 콘텐츠 실행의 애플리케이션 제어
US9304780B2 (en) User initiated data rollback using operating system partitions
US11036551B2 (en) Durable program execution
US11537682B1 (en) Experience convergence for multiple platforms
US9032425B1 (en) System and method to boost application performance by using a proxy for executing synchronous application programming interface calls
US20220398126A1 (en) Dynamically assigning applications to workspaces based on context

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