KR20160130491A - 애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션 - Google Patents

애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션 Download PDF

Info

Publication number
KR20160130491A
KR20160130491A KR1020167027935A KR20167027935A KR20160130491A KR 20160130491 A KR20160130491 A KR 20160130491A KR 1020167027935 A KR1020167027935 A KR 1020167027935A KR 20167027935 A KR20167027935 A KR 20167027935A KR 20160130491 A KR20160130491 A KR 20160130491A
Authority
KR
South Korea
Prior art keywords
application
call
instance
response
mobile device
Prior art date
Application number
KR1020167027935A
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 KR20160130491A publication Critical patent/KR20160130491A/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/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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

제1 애플리케이션이 호출 동안 디하이드레이션될 수 있도록 하는 방식으로 기능을 수행하기 위해 제1 애플리케이션(즉, 호출자 애플리케이션)이 제2 애플리케이션(즉, 피호출자 애플리케이션)을 호출할 수 있게 하는 방법, 시스템, 및 컴퓨터 프로그램 제품이 제공된다. 이러한 경우에, 제1 애플리케이션이 더 이상 존재하지 않는 동안 제2 애플리케이션은 활성일 수 있다. 제2 애플리케이션은 호출에 응답하기 위해 인에이블되고, 제1 애플리케이션이 리하이드레이션되게 한다. 제1 애플리케이션은 제1 애플리케이션이 디하이드레이션된 위치에서 실행을 계속하고, 호출에 대한 응답을 수신한다.

Description

애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션{APPLICATION DEHYDRATION AND REHYDRATION DURING APPLICATION-TO-APPLICATION CALLS}
스마트폰 및 태블릿 컴퓨터와 같은, 많은 유형의 모바일 디바이스들이 존재한다. 이러한 디바이스들은 휴대용(hand-carriable)이고, 따라서 사용자들에게 상당한 편의성을 제공한다. 게다가, 많은 모바일 디바이스들은 각종의 기능들을 수행하기 위해 수많은 프로그램들 또는 애플리케이션들(예컨대, "앱")을 동시에 실행할 수 있다. 그렇지만, 모바일 디바이스들, 특히 저가 모바일 디바이스들은 멀티태스킹 시나리오들에 의해 심각한 도전을 받고 있다. 이것은 부분적으로는 규모에서 경쟁력을 갖추기 위해 - 이는 저가 또는 저성능 부품들의 사용을 초래함 - 모바일 디바이스들과 연관된 비용을 낮게 유지하려는 노력으로 인한 것이다. 메모리(예컨대, RAM(random access memory))가 비싼 경향이 있기 때문에, 비용을 줄이기 위해 모바일 디바이스들에서 비교적 보다 작은 용량의 메모리 디바이스들이 사용되는 경향이 있다.
모바일 디바이스들의 메모리 용량이 큰 문제가 되지 않았던 과거에는, 어떤 데이터를 검색하기 위해 제1 애플리케이션 A가 제2 애플리케이션 B를 호출할 수 있는 상황이 있었다. 데이터 검색 동작 후에, 애플리케이션 A와 애플리케이션 B 중 하나 또는 둘 다가 더 이상 필요하지 않더라도, 그들 둘 다는 모바일 디바이스의 메모리에 존재하는 채로 있을 것이며, 이로 인해 그들은 메모리 자원의 일부분을 계속하여 소비하게 된다. 이 유형의 사이클이 때때로 계속될 것이고, 이로 인해 더욱 더 많은 수의 애플리케이션들이 불필요하게 메모리에 남아 메모리를 소비하게 된다. 큰 메모리 모듈 및 페이징은 함께 애플리케이션들이 다른 애플리케이션들을 호출하는 많이 중첩된(deeply nested) 시나리오들을 가능하게 하는 데 도움을 준다. Facebook?(미국 캘리포니아주 팰로앨토 소재의 Facebook, Inc.에 의해 운영됨)을 사진 공급자로서 사용하는 써드파티(third party) 애플리케이션과 같은 간단한 것은 3 개의 애플리케이션들이 메모리에 동시에 존재하게 할 수 있다. 애플리케이션들을 메모리에 이와 같이 누적시키는 것은 저가 디바이스들에 대해 메모리 문제를 야기할 수 있다.
이 발명의 내용은 이하에서 발명을 실시하기 위한 구체적인 내용에 추가로 기술되는 선택된 개념들을 간략화된 형태로 소개하기 위해 제공된다. 이 발명의 내용은 청구된 발명 요지의 핵심적인 특징들 또는 필수적인 특징들을 언급하는 것으로 의도되어 있지도 않고, 청구된 발명 요지의 범주를 제한하기 위해 사용되는 것으로 의도되어 있지도 않다.
제1 애플리케이션이 호출 동안 디하이드레이션(dehydrate)될 수 있도록 하는 방식으로 기능을 수행하기 위해 제1 애플리케이션(즉, 호출자 애플리케이션(caller application))이 제2 애플리케이션(즉, 피호출자 애플리케이션(callee application))을 호출할 수 있게 하는 방법, 시스템, 및 컴퓨터 프로그램 제품이 제공된다. 이러한 경우에, 제1 애플리케이션이 더 이상 존재하지 않는 동안 제2 애플리케이션은 활성일 수 있다. 제2 애플리케이션은 호출에 응답하기 위해 인에이블되고, 제1 애플리케이션이 리하이드레이션(rehydrate)되게 한다. 제1 애플리케이션은 제1 애플리케이션이 디하이드레이션된 프로그램 위치에서 실행을 계속하고, 호출에 대한 응답을 수신한다.
예를 들면, 일 구현에서, 제2 애플리케이션으로 보내지는 모바일 디바이스에 포함된 제1 애플리케이션으로부터 발행된 호출을 수신하는 단계 - 이 호출은 제1 애플리케이션에 대한 연속 데이터(continuation data) 및 요청 정보를 포함함 -; 제1 애플리케이션을 디하이드레이션하는 단계; 및 요청 정보를 제2 애플리케이션에 제공하는 단계를 포함하는 모바일 디바이스에서의 방법이 제공된다.
본 방법은 요청 정보에 응답하여 제2 애플리케이션으로부터 응답 정보를 수신하는 단계; 연속 데이터에 기초하여 제1 애플리케이션을 리하이드레이션하는 단계; 및 응답 정보를 제1 애플리케이션에 제공하는 단계를 더 포함할 수 있다.
본 방법의 일 양태에서, 요청 정보를 제2 애플리케이션에 제공하는 단계는, 모바일 디바이스에서 제2 애플리케이션을 호출하는 단계; 및 요청 정보를 제2 애플리케이션에 제공하는 단계를 포함할 수 있다. 게다가, 요청 정보에 응답하여 제2 애플리케이션으로부터 응답 정보를 수신하는 것은 제2 애플리케이션을 종료시키는 것에 이르게 할 수 있다.
본 방법의 추가의 양태에서, 본 방법은 하나 이상의 엔트리들을 포함하는 애플리케이션 리스트를 유지하는 단계 - 애플리케이션 리스트의 각각의 엔트리는 대응하는 애플리케이션에 대한 애플리케이션 식별자 및 대응하는 애플리케이션의 특정의 인스턴스(instance)를 식별해주는 애플리케이션 인스턴스 식별자를 나타냄 -; 및 제1 애플리케이션에 의해 발행된 호출을 수신한 것에 응답하여, 애플리케이션 리스트 내의 엔트리를 연속 데이터로 태깅하는 단계 - 태깅된 엔트리는 호출을 발행한 제1 애플리케이션의 인스턴스에 대응함 - 를 더 포함할 수 있다.
게다가, 연속 데이터에 기초하여 제1 애플리케이션을 리하이드레이션하는 단계는, 응답 정보를 수신한 것에 응답하여 제1 애플리케이션의 인스턴스에 대한 애플리케이션 리스트 내의 엔트리를 식별하는 단계; 및 제1 애플리케이션을 리하이드레이션하기 위해 애플리케이션 리스트 내의 식별된 엔트리에 태깅된 연속 데이터를 사용하는 단계를 포함할 수 있다.
대안의 양태에서, 본 방법은 제공된 요청 정보에 대한 응답이 제2 애플리케이션으로부터 수신되기 전에 사용자가 제1 애플리케이션을 재시작(re-launch)하려고 시도하기 위해 모바일 디바이스의 사용자 인터페이스와 상호작용했다는 표시를 수신하는 단계; 연속 데이터에 의해 식별된 진입점(entry point)과 상이한 제1 애플리케이션에 대한 진입점(예컨대, "주" 진입점("main" entry point))에서 제1 애플리케이션을 재시작하는 단계; 및 연속 데이터를 폐기하는 단계를 포함할 수 있다.
다른 구현에서, 모바일 디바이스가 제공된다. 본 시스템은 모바일 디바이스의 프로세서 회로에서 실행되도록 구성된 브로커 프로세스(broker process)를 포함한다. 브로커 프로세스는 호출 브로커(call broker) 및 하이드레이션 인에이블러 모듈(hydration enabler module)을 포함한다. 호출 브로커는 모바일 디바이스에서 실행되는 제1 애플리케이션의 인스턴스로부터 발행된 호출을 수신하도록 구성되어 있다. 호출은 제2 애플리케이션으로 보내지고, 제1 애플리케이션의 인스턴스에 대한 연속 데이터 및 요청 정보를 포함한다. 호출 브로커는 또한 연속 데이터 없이 요청 정보를 제2 애플리케이션에 제공하도록 구성되어 있다. 하이드레이션 인에이블러 모듈은 제1 애플리케이션의 인스턴스가 디하이드레이션될 수 있게 하는 제1 신호를 제공하도록 구성되어 있다. 호출 브로커는 또한 요청 정보에 응답하여 제2 애플리케이션으로부터 응답 정보를 수신하도록 구성되어 있다. 하이드레이션 인에이블러 모듈은 연속 데이터에 기초하여 제1 애플리케이션의 인스턴스가 리하이드레이션되게 하도록 구성되어 있다. 호출 브로커는 또한 응답 정보를 제1 애플리케이션의 인스턴스에 제공하도록 구성되어 있다.
추가의 양태에서, 호출 브로커는 제2 애플리케이션이 모바일 디바이스에서 호출되게 하고, 요청 정보를 호출된 제2 애플리케이션에 제공하도록 구성될 수 있다. 게다가, 호출 브로커는 응답 정보를 제2 애플리케이션으로부터 수신한 것에 응답하여 제2 애플리케이션이 종료되게 하도록 구성될 수 있다.
제1 애플리케이션의 인스턴스가 디하이드레이션될 때 제1 애플리케이션의 인스턴스에 할당되었던 주 메모리(primary memory)의 메모리 공간이 해제된다. 게다가, 주 메모리 내의 메모리 공간이 제1 애플리케이션의 인스턴스에 재할당(reallocate)되고, 제1 애플리케이션의 인스턴스가 연속 데이터에 기초하여 리하이드레이션될 때 제1 애플리케이션이 연속 데이터에 의해 식별된 진입점에서 재시작된다.
추가의 양태에서, 본 시스템은 또한 포그라운드 관리자(foreground manager)를 포함할 수 있다. 포그라운드 관리자는 하나 이상의 엔트리들을 포함하는 애플리케이션 리스트를 유지하도록 구성되어 있다. 애플리케이션 리스트의 각각의 엔트리는 대응하는 애플리케이션에 대한 애플리케이션 식별자 및 대응하는 애플리케이션의 특정의 인스턴스를 식별해주는 애플리케이션 인스턴스 식별자를 나타낸다. 호출 브로커는 제1 애플리케이션에 의해 발행된 호출을 수신한 것에 응답하여 애플리케이션 리스트 내의 엔트리를 연속 데이터로 태깅하도록 구성될 수 있다. 태깅된 엔트리는 호출을 발행한 제1 애플리케이션의 인스턴스에 대응한다.
게다가, 호출에 관한 응답 정보를 제2 애플리케이션으로부터 수신한 것에 응답하여, 호출 브로커는 제1 애플리케이션의 인스턴스에 대한 애플리케이션 리스트 내의 엔트리를 식별하고, 제1 애플리케이션을 리하이드레이션하기 위해 애플리케이션 리스트 내의 식별된 엔트리에 태깅된 연속 데이터를 사용하도록 구성될 수 있다.
호출자 애플리케이션에 의해 피호출자 애플리케이션에게 발행된 호출이 처리되는 동안 호출자 애플리케이션이 디하이드레이션되게 할 수 있고 호출이 완료될 때 호출자 애플리케이션을 리하이드레이션할 수 있게 하는 것은 물론, 본원에 기술되는 추가의 실시예들을 실시할 수 있는 컴퓨터 프로그램 명령어들이 저장되어 있는 컴퓨터 판독가능 저장 매체가 또한 본원에 개시되어 있다.
본 발명의 추가의 특징들 및 장점들은 물론, 본 발명의 다양한 실시예들의 구조 및 동작이 첨부 도면들을 참조하여 이하에서 상세히 기술된다. 유의할 점은 본 발명이 본원에 기술되는 특정 실시예들로 제한되지 않는다는 것이다. 이러한 실시예들은 단지 예시를 위해 본원에 제시되어 있다. 부가의 실시예들이 본원에 포함된 개시 내용에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
본원에 포함되어 명세서의 일부를 형성하는 첨부 도면들은 본 출원의 실시예들을 예시하고, 설명과 함께, 또한 실시예들의 원리들을 설명하고 관련 기술 분야의 통상의 기술자가 실시예들을 제조 및 사용할 수 있게 하는 역할을 한다.
도 1은 예시적인 실시예에 따른, 호출자 애플리케이션이 피호출자 애플리케이션에게 호출을 발행하는 모바일 디바이스의 블록도.
도 2는 예시적인 실시예에 따른, 애플리케이션이 애플리케이션간 호출(application-to-application call)을 발행할 시에 디하이드레이션될 수 있게 하고 호출이 완료될 때 리하이드레이션될 수 있게 하는 프로세스를 제공하는 플로우차트.
도 3은 예시적인 실시예에 따른, 호출자 애플리케이션이 중간 엔티티를 거쳐 피호출자 애플리케이션에게 호출을 발행하는 모바일 디바이스의 블록도.
도 4는 예시적인 실시예에 따른, 호출자 애플리케이션이 브로커 프로세스에 의해 수신되는 호출을 발행하는 모바일 디바이스의 블록도.
도 5는 예시적인 실시예에 따른, 제1 애플리케이션으로부터 수신되는 제2 애플리케이션에 대한 호출을 처리하기 위한 브로커 프로세스에서의 프로세스를 제공하는 플로우차트.
도 6은 예시적인 실시예에 따른, 호출자 애플리케이션이 디하이드레이션되고 브로커 프로세스가 호출을 처리하기 위해 피호출자 애플리케이션과 상호작용하는 도 4의 모바일 디바이스의 블록도.
도 7은 예시적인 실시예에 따른, 애플리케이션 리스트를 사용하여 제1 애플리케이션의 호출을 추적하는 프로세스를 제공하는 플로우차트.
도 8은 예시적인 실시예에 따른, 호출자 애플리케이션을 디하이드레이션하는 프로세스를 제공하는 플로우차트.
도 9는 예시적인 실시예에 따른, 호출을 처리하기 위해 피호출자 애플리케이션을 호출하는 프로세스를 제공하는 플로우차트.
도 10은 예시적인 실시예에 따른, 호출을 완료하기 위해 호출자 애플리케이션을 리하이드레이션하는 프로세스를 제공하는 플로우차트.
도 11은 예시적인 실시예에 따른, 호출을 완료하기 위해 호출자 애플리케이션이 리하이드레이션되는 도 4의 모바일 디바이스의 블록도.
도 12는 예시적인 실시예에 따른, 호출에 응답한 후에 피호출자 애플리케이션을 종료시키는 프로세스를 제공하는 플로우차트.
도 13은 예시적인 실시예에 따른, 애플리케이션 리스트를 사용하여 제1 애플리케이션에 대한 연속 데이터를 찾아내는 프로세스를 제공하는 플로우차트.
도 14는 예시적인 실시예에 따른, 호출자 애플리케이션을 리하이드레이션하는 프로세스를 제공하는 플로우차트.
도 15는 실시예들이 구현될 수 있는 예시적인 사용자 디바이스의 블록도.
본 발명의 특징들 및 장점들은 도면들과 관련하여 살펴볼 때 이하에 기재되는 상세한 설명으로부터 보다 명백하게 될 것이고, 도면들에서 유사한 참조 문자들은 전체에 걸쳐 대응하는 요소들을 나타낸다. 도면들에서, 유사한 참조 번호들은 일반적으로 동일하고, 기능상 유사하며, 그리고/또는 구조상 유사한 요소들을 나타낸다. 요소가 처음으로 나오는 도면은 대응하는 참조 번호에서 가장 왼쪽 숫자(들)에 의해 나타내어져 있다.
I. 서론
본 명세서 및 첨부 도면들은 본 발명의 특징들을 포함하는 하나 이상의 실시예들을 개시한다. 본 발명의 범주가 개시된 실시예들로 제한되지 않는다. 개시된 실시예들은 본 발명을 예시한 것에 불과하고, 개시된 실시예들의 수정된 버전들도 본 발명에 포함된다. 본 발명의 실시예들은 본원에 첨부된 청구항들에 의해 한정된다.
명세서에서 "하나의 실시예", "일 실시예", "예시적인 실시예" 등으로 언급하는 것들은 기술된 실시예가 특정의 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 그 특정의 특징, 구조, 또는 특성을 꼭 포함하는 것은 아닐 수 있음을 나타낸다. 더욱이, 이러한 문구들이 꼭 동일한 실시예를 지칭하는 것은 아니다. 게다가, 특정의 특징, 구조, 또는 특성이 일 실시예와 관련하여 기술될 때, 명시적으로 기술되어 있든 그렇지 않든 간에, 관련 기술 분야의 통상의 기술자가 이러한 특징, 구조, 또는 특성을 다른 실시예들과 관련하여 실시하는 것을 알고 있는 것으로 생각된다.
수많은 예시적인 실시예들이 이하에서 기술된다. 유의할 점은 본원에서 제공되는 임의의 섹션/서브섹션 제목이 제한하는 것으로 의도되어 있지 않다는 것이다. 실시예들이 본 문서 전체에 걸쳐 기술되어 있고, 임의의 유형의 실시예가 임의의 섹션/서브섹션에 포함될 수 있다. 게다가, 임의의 섹션/서브섹션에 개시되는 실시예들이 동일한 섹션/서브섹션 및/또는 상이한 섹션/서브섹션에 기술되는 임의의 다른 실시예들과 임의의 방식으로 결합될 수 있다.
II. 예시적인 실시예
본원에 기술되는 실시예들은 제1 애플리케이션이 호출 동안 디하이드레이션될 수 있도록 하는 방식으로 기능을 수행하기 위해 제1 애플리케이션(즉, 호출자 애플리케이션)이 제2 애플리케이션(즉, 피호출자 애플리케이션)을 호출할 수 있게 한다. 이러한 경우에, 제1 애플리케이션이 더 이상 존재하지 않는 동안 제2 애플리케이션은 활성일 수 있다. 제2 애플리케이션은 호출에 응답하기 위해 인에이블되고, 제1 애플리케이션이 리하이드레이션(rehydrate)되게 한다. 제1 애플리케이션은 재호출(re-invoke)되고 제1 애플리케이션이 디하이드레이션된 위치에서 실행을 계속하며, 호출에 대한 응답을 수신한다. 제1 애플리케이션에 대한 간단한 상태 정보를 URI(uniform resource indicator)와 같은 통신을 통해 전달하고 보다 복잡한 상태를 서비스 엔티티들을 통해 이 경계들을 가로질러 전달하는 메커니즘들이 개시되어 있다. 이 기법들은 참여측 엔티티들이 동의하기로 할 수 있고 그들의 애플리케이션들이 참여하도록 구성되게 할 수 있는 공개 컨트랙트(public contract)로서 노출될 수 있다.
예를 들면, 도 1은 예시적인 실시예에 따른, 모바일 디바이스(100)의 블록도를 나타낸 것이다. 도 1에 도시된 바와 같이, 모바일 디바이스(100)는 모바일 디바이스(100)의 주 메모리(110)에 존재하는 호출자 애플리케이션(102) 및 피호출자 애플리케이션(104)을 포함한다. 예시의 편의를 위해, 모바일 디바이스(100)에 포함될 수 있는 많은 추가 특징들이 도 1에 도시되어 있지 않고, 이러한 특징들 중 적어도 일부가 본원에서의 다른 곳에서 기술될 수 있다. 모바일 디바이스(100)가 이하에 기술되어 있다.
모바일 디바이스(100)는 모바일 컴퓨터 또는 모바일 컴퓨팅 디바이스(예컨대, Microsoft ? Surface? 디바이스, PDA(personal digital assistant), 랩톱 컴퓨터, 노트북 컴퓨터, Apple iPad™와 같은 태블릿 컴퓨터, 넷북 등), 휴대폰(예컨대, 셀폰, Microsoft Windows? 폰과 같은 스마트폰, Apple iPhone, Google? Android™ 운영 체제를 구현하는 전화기, Palm? 디바이스, Blackberry? 디바이스 등), 웨어러블 컴퓨팅 디바이스(예컨대, 스마트 워치, Google? Glass™와 같은 스마트 안경을 비롯한 헤드 마운티드 디바이스 등), 디지털 카메라, 또는 다른 유형의 모바일 디바이스를 비롯한 임의의 유형의 모바일 컴퓨팅 디바이스일 수 있다.
모바일 디바이스(100)는 모바일 디바이스(100)가 하나 이상의 네트워크들을 거쳐 통신할 수 있게 하는 네트워크 인터페이스를 포함할 수 있다. 예시적인 네트워크들은 LAN(local area network), WAN(wide area network), PAN(personal area network), 및/또는, 인터넷과 같은, 통신 네트워크들의 조합을 포함한다. NIC(network interface card), IEEE 802.11 WLAN(wireless LAN) 무선 인터페이스, Wi-MAX(Worldwide Interoperability for Microwave Access) 인터페이스, 이더넷 인터페이스, USB(Universal Serial Bus) 인터페이스, 셀룰러 네트워크 인터페이스, 블루투스™ 인터페이스, NFC(near field communication) 인터페이스 등을 비롯한, 임의의 유형의 네트워크 인터페이스 중 하나 이상이 존재할 수 있다(유선이거나 무선임).
모바일 디바이스(100)의 주 메모리(110)(또는 "메인 메모리(main memory)" 등)는 모바일 디바이스(100)의 하나 이상의 프로세서들에 의해 액세스가능한 하나 이상의 물리적 하드웨어 메모리 디바이스들을 포함한다. 이러한 메모리 디바이스들은 프로세서(들)에 통합되거나 분리되어 있을 수 있다. 주 메모리(110)는 전형적으로, 그 중에서도 특히, 열려 실행 중인 모바일 디바이스(100)의 애플리케이션들을 저장하는 데 사용된다. 이러한 애플리케이션들은 전형적으로 열려 실행 중이 않을 때에는 모바일 디바이스(100)의 보조 저장소(secondary storage)에 저장될 수 있다. 보조 저장소는 모바일 디바이스(100)의 장기 영구 저장소(long term, persistent storage)인 것으로 간주된다. 보조 저장소에 저장된 애플리케이션들은 실행을 위해 호출될 때 보조 저장소로부터 주 메모리(110)로 복사될 수 있다. 주 메모리(110)로 복사된 애플리케이션의 사본은 애플리케이션의 "인스턴스"인 것으로 간주될 수 있다. 보조 메모리(secondary memory)에 저장된 단일의 애플리케이션은 언제라도 주 메모리(110)로 복사되어 모바일 디바이스(100)에서 실행되는 애플리케이션의 하나 이상의 인스턴스들을 가질 수 있다. 애플리케이션의 인스턴스가 닫혀 있고 따라서 애플리케이션 인스턴스가 더 이상 실행되지 않을 때, 주 메모리(110)에서의 애플리케이션 인스턴스에 의해 사용되는 메모리 공간이 다른 애플리케이션들 및/또는 다른 자원들에 의해 사용되기 위해 해제될 수 있다.
호출자 애플리케이션(102)과 피호출자 애플리케이션(104) 각각은, 적어도 일부 데스크톱 애플리케이션들은 물론, "모바일 앱" 또는 단지 "앱"이라고 지칭될 수 있는 모바일 애플리케이션들을 비롯한, 모바일 디바이스 상에서 실행될 수 있는 임의의 유형의 애플리케이션일 수 있다. 이러한 모바일 애플리케이션의 예는 이메일 애플리케이션, 달력 애플리케이션, 워드 프로세싱 애플리케이션, 데이터베이스 관리 애플리케이션, 연락처 관리 애플리케이션, 주식 시장 애플리케이션, 뉴스 애플리케이션, 날씨 애플리케이션, 게임, 공장 자동화 애플리케이션, 지도 제작 및 위치 기반 서비스 애플리케이션, 뱅킹 애플리케이션, 주문 추적 애플리케이션, 티켓 구매 애플리케이션, 모바일 의료 애플리케이션, 소셜 네트워킹 애플리케이션, 사진 관리 애플리케이션, 음악 관리 애플리케이션, 비디오 관리 애플리케이션 등을 포함한다. 이러한 애플리케이션들은 애플리케이션 기능들의 수행을 돕기 위해 파일 액세스, 파일 저장, 정보 액세스 등을 위한 (예컨대, 서버들에 있는) 네트워크 기반 또는 "클라우드" 기반 서비스와 통신하도록 구성될 수 있다.
실시예들에 따르면, 호출자 애플리케이션(102)과 피호출자 애플리케이션(104)은 호출이 처리되는 전체 시간 동안 호출자 애플리케이션(102)이 주 메모리(110)에 존재할 필요가 없도록 하는 방식으로 호출자 애플리케이션(102)에 의해 발행된 호출을 처리하기 위해 통신할 수 있다. 이러한 실시예들이 다양한 방식들로 수행될 수 있다. 예를 들면, 도 2는 예시적인 실시예에 따른, 애플리케이션이 애플리케이션간 호출을 발행할 시에 디하이드레이션될 수 있게 하고 호출이 완료될 때 리하이드레이션될 수 있게 하는 프로세스를 제공하는 플로우차트(200)를 나타낸 것이다. 플로우차트(200)는 도 1의 모바일 디바이스(100)와 관련하여 이하에 기술된다. 추가적인 구조 및 동작 실시예들이 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(200)는 단계(202)에서 시작된다. 단계(202)에서, 정보를 요청하기 위해 호출이 제1 애플리케이션으로부터 제2 애플리케이션에게 발행된다. 예를 들어, 도 1에 도시된 바와 같이, 호출자 애플리케이션(102)은 피호출자 애플리케이션(104)에 대해 호출(106)을 발행할 수 있다. 호출(106)은 정보를 요청하는 애플리케이션간 호출이다. 예를 들면, 호출(106)은 피호출자 애플리케이션(104)에 대한 파일(예컨대, 문서, 영상, 또는 다른 객체)의 요청 및/또는 기능을 수행하고 반환 데이터 및/또는 기능이 수행되었다는 확인 응답을 제공하라는 피호출자 애플리케이션(104)에 대한 요청을 포함할 수 있다. 호출(106)은, 직렬화된 형태(serialized form) 또는 비직렬화된 형태(non-serialized form)를 비롯한, 임의의 적당한 형태로 발행될 수 있다.
하나의 실시예에서, 호출(106)이 호출자 애플리케이션(102)으로부터 피호출자 애플리케이션(104)에게 직접 제공될 수 있다. 다른 실시예에서, 호출(106)이 호출자 애플리케이션(102)으로부터 모바일 디바이스(100)에 있는 중간 엔티티를 통해 피호출자 애플리케이션(104)에게 제공될 수 있다. 예를 들어, 도 3은 예시적인 실시예에 따른, 호출자 애플리케이션(102)이 중간 엔티티(302)를 거쳐 피호출자 애플리케이션(104)에게 호출을 발행하는 모바일 디바이스(300)의 블록도를 나타낸 것이다. 모바일 디바이스(300)는 도 1의 모바일 디바이스(100)의 일 예이다. 도 3에 도시된 바와 같이, 호출자 애플리케이션(102)은 호출(106)을 발행한다. 도 3의 예에서, 호출(106)이 중간 엔티티(302)에 의해 수신된다. 중간 엔티티(302)는, 브로커 또는 다른 엔티티와 같은 운영 체제 엔티티를 비롯한, 모바일 디바이스(300)에서 동작하는 호출을 위한 임의의 적당한 중간 엔티티일 수 있다. 중간 엔티티(302)는 호출(106)에 서비스하기 위해 피호출자 애플리케이션(104)에 의해 사용될 요청 정보를 호출(106)로부터 추출할 수 있고, 그 추출된 요청 정보를 포워딩된 호출 정보(304)에서 피호출자 애플리케이션(104)으로 포워딩할 수 있다.
그에 따라, 피호출자 애플리케이션(104)은 호출(106)을 호출자 애플리케이션(102)으로부터 직접 수신하거나(도 1), 포워딩된 호출 정보(304)를 중간 엔티티(302)(도 3)로부터 수신한다(도 3). 어느 경우든지, 피호출자 애플리케이션(104)은 수신된 호출 정보에 기초하여 호출을 처리한다.
다시 도 2를 참조하면, 단계(204)에서, 제1 애플리케이션이 제2 애플리케이션에 의한 호출의 처리 동안 디하이드레이션된다. 일 실시예에서, 호출자 애플리케이션(102)이 호출(106)의 처리 동안 디하이드레이션될 수 있다. 호출자 애플리케이션(102)의 디하이드레이션은 호출(106)을 발행한 호출자 애플리케이션(102)의 인스턴스의 실행을 셧다운(shut down)시키는 것, 및 호출자 애플리케이션(102)의 그 인스턴스를 저장했던 주 메모리(110)의 메모리 공간을 해제시키는 것을 수반한다. 이러한 방식으로, 주 메모리(110) 내의 메모리 공간이 절감된다. 하나의 실시예에서, 호출자 애플리케이션(102)의 실행 중인 인스턴스가 디하이드레이션될 수 있고, 피호출자 애플리케이션(104)이 이어서 호출(106)에 서비스하기 위해 호출될 수 있으며, 따라서 호출자 애플리케이션(102)의 인스턴스와 피호출자 애플리케이션(104)의 호출된 인스턴스가 동시에 주 메모리(110)에 존재하지 않게 되어, 주 메모리(110)의 메모리 공간을 더욱 더 절감한다.
단계(206)에서, 제1 애플리케이션이 리하이드레이션된다. 일 실시예에서, 호출자 애플리케이션(102)은 호출(106)이 피호출자 애플리케이션(104)에 의해 처리된 후에 리하이드레이션될 수 있다. 호출자 애플리케이션(102)의 리하이드레이션은 호출자 애플리케이션(102)의 인스턴스를 호출하는 것을 수반하고, 따라서 호출자 애플리케이션(102)의 호출된 인스턴스가 주 메모리(110)의 메모리 공간에 존재한다. 이러한 방식으로, 피호출자 애플리케이션(104)이 호출(106)을 처리한 시간의 적어도 일부분 동안 주 메모리(110) 내의 메모리 공간이 절감되었다. 하나의 실시예에서, 피호출자 애플리케이션(104)의 응답하는 인스턴스의 실행이 종료되고, 피호출자 애플리케이션(104)의 그 인스턴스의 주 메모리(110)의 메모리 공간이 해제되며, 호출자 애플리케이션(102)이 이어서 리하이드레이션될 수 있도록, 피호출자 애플리케이션(104)이 셧다운될 수 있다. 이러한 방식으로, 호출자 애플리케이션(102)의 호출된 인스턴스와 피호출자 애플리케이션(104)의 종료된 인스턴스가 꼭 동시에 주 메모리(110)에 존재하지는 않게 되어, 주 메모리(110)의 메모리 공간을 더욱 더 절감한다.
단계(208)에서, 호출에 대한 응답이 제1 애플리케이션에서 수신된다. 도 1에 도시된 바와 같이, 피호출자 애플리케이션(104)은 호출(106)에 응답하여 호출 응답(108)을 발생시켜 제공한다. 예를 들면, 호출 응답(108)은, 호출(106)에 응답하여 제공되는, 요청된 파일, 요청된 정보, 반환 데이터 등을 포함할 수 있다. 호출 응답(108)이 피호출자 애플리케이션(104)으로부터 직접 호출자 애플리케이션(102)에 의해 수신될 수 있다. 대안적으로, 예컨대, 도 3의 실시예들에 따르면, 호출 응답(108)이 모바일 디바이스(100) 내의 중간 엔티티를 통해 피호출자 애플리케이션(104)으로부터 제공될 수 있다. 예를 들어, 도 3은 피호출자 애플리케이션(104)이 응답 정보(306)를 발생시킨 것을 나타내고 있다. 응답 정보(306)는 요청된 파일, 요청된 정보, 반환 데이터 등을 포함할 수 있다. 응답 정보(306)는 피호출자 애플리케이션(104)으로부터 중간 엔티티(302)에 의해 수신된다. 중간 엔티티(302)는 호출자 애플리케이션(102)을 응답 정보(306)의 의도된 수신자로서 식별할 수 있고, 호출 응답(108)에서 응답 정보(306)를 호출자 애플리케이션(102)으로 포워딩할 수 있다.
일 실시예에서, 중간 엔티티(302)는 호출(106)에서 호출자 애플리케이션(102)에 의해 제공된 상태 정보를 포함하도록 호출 응답(108)을 발생시킬 수 있다. 상태 정보는 호출(106)이 발행되었을 때의 호출자 애플리케이션(102)의 동작 상태를 나타낼 수 있고, 따라서 호출 응답(108)에서 호출자 애플리케이션(102)에 의해 수신될 때, 호출자 애플리케이션(102)이 호출(106)이 발행되었던 때의 지점으로부터 동작을 계속할 수 있게 할 수 있다. 예를 들면, 호출자 애플리케이션(102)의 인스턴스가 리하이드레이션될 수 있고, 상태 정보에 표시된 호출자 애플리케이션(102)의 진입점(entry point)에서 동작을 계속하기 위해 상태 정보를 사용할 수 있다. 호출자 애플리케이션(102)가 특정의 진입점에서 동작을 계속할 수 있게 하는 상태 정보는 "연속 데이터(continuation data)"라고 지칭될 수 있다. 호출자 애플리케이션(102)은 미리 정의되어 있는 임의의 수의 진입점들을 가질 수 있고, 동작이 (예컨대, 리하이드레이션으로부터) 적절한 연속 데이터에 기초하여 진입점들 중 임의의 진입점에서 계속될 수 있다.
유의할 점은, 일부 실시예에서, 호출자 애플리케이션(102)의 리하이드레이션 후에, 호출자 애플리케이션(102)이 연속 데이터에 의해 표시된 진입점에서 동작을 계속할 수 있게 하기 위해 연속 데이터가 (모바일 디바이스(100)의 운영 체제에 의해 다른 곳에 유지되는) 전역 상태 정보(global state information)와 함께 호출자 애플리케이션(102)에 적용될 수 있다는 것이다.
모바일 디바이스들은 실시예들에 따라 호출자 애플리케이션들의 디하이드레이션 및 리하이드레이션을 가능하게 하기 위해 다양한 방식들로 구성될 수 있다. 예를 들면, 도 4는 예시적인 실시예에 따른, 중간 엔티티에 의해 처리되는 애플리케이션간 호출을 발행하는 모바일 디바이스(400)의 블록도를 나타낸 것이다. 모바일 디바이스(400)는 도 3의 모바일 디바이스(300)의 일 예이다. 도 4에 도시된 바와 같이, 모바일 디바이스(400)는 주 메모리(406)를 포함한다. 주 메모리(406)는 주 메모리(110)(도 3)의 일 예이다. 게다가, 주 메모리(406)는 호출자 애플리케이션(102), 브로커 프로세스(402)를 포함하는 운영 체제(404), 및 일시중단 논리(suspension logic)(426)를 저장한다. 일시중단 논리(426)가 도 4에서 운영 체제(402)와 독립적인 것으로 도시되어 있지만, 일 실시예에서, 일시중단 논리(426)가 운영 체제(402)에 포함될 수 있다. 게다가, 호출자 애플리케이션(102)은 호출 핸들러(call handler)(408) 및 연속 데이터 발생기(410)를 포함하고, 브로커 프로세스(402)는 호출 브로커(412), 하이드레이션 인에이블러 모듈(414), 및 포그라운드 관리자(416)를 포함한다. 실시예들에서, 포그라운드 관리자(416)는 도 4에 도시된 바와 같이 브로커 프로세스(402)에 포함될 수 있거나, 브로커 프로세스(402)의 외부에 있을 수 있다. 게다가, 일 실시예에서, 일시중단 논리(426)가 포그라운드 관리자(416)에 포함될 수 있다.
모바일 디바이스(400)는 도 5 내지 도 14와 관련하여 이하에 기술된다. 도 6 및 도 11은 예시적인 실시예들에 따른, 도 4에서 발행된 것으로 도시된 호출의 후속 처리 동안 모바일 디바이스(400)를 나타낸 것이다. 도 5, 도 7 내지 도 10, 및 도 12 내지 도 14는 실시예들에 따른, 애플리케이션간 호출의 처리에 관련된 프로세스들을 제공하는 예시적인 플로우차트들을 나타낸 것이다.
도 4는 도 5와 관련하여 이하에 기술된다. 도 5는 예시적인 실시예에 따른, 제2 애플리케이션으로 보내지는 제1 애플리케이션으로부터 수신된 호출을 처리하기 위한 브로커 프로세스에서의 프로세스를 제공하는 플로우차트(500)를 나타낸 것이다. 예를 들어, 일 실시예에서, 플로우차트(500)는 도 4에 도시된 브로커 프로세스(402)에 의해 수행할 수 있다. 추가적인 구조 및 동작 실시예들이 플로우차트(500)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(500)는 단계(502)에서 시작된다. 단계(502)에서, 제2 애플리케이션으로 보내지는, 모바일 디바이스에 포함된 제1 애플리케이션으로부터 발행된 호출이 수신된다. 예를 들어, 도 4에 도시된 바와 같이, 호출자 애플리케이션(102)의 호출 핸들러(408)는 호출(420)을 발행할 수 있다. 호출(420)은 도 1의 호출(106)의 일 예이다. 호출 핸들러(408)는, 호출자 애플리케이션(102)에 대한, 호출의 발행 및 호출 응답의 수신을 관리하도록 구성되어 있다. 호출 핸들러(408)는, 관련 기술 분야(들)의 통상의 기술자에게 공지된 방식들을 비롯한, 다양한 방식들로 호출을 발행할 수 있다. 예를 들어, 호출 핸들러(408)는 URI(uniform resource indicator), 시스템 호출의 형태, 및/또는 다른 형태로 호출(420)을 발생시킬 수 있다.
게다가, 호출 핸들러(408)는 요청 정보를 포함하도록 호출(420)을 발생시킬 수 있다. 요청 정보는 피호출자 애플리케이션으로부터 어떤 정보 및/또는 응답이 요망되는지를 표시하는 것에 의해 호출(420)의 목적을 정의한다. 예를 들면, 요청 정보는 피호출자 애플리케이션으로부터의 하나 이상의 요청된 파일들 또는 다른 객체들, 피호출자 애플리케이션에 의해 수행될 기능(예컨대, 사용자가 파일을 선택할 수 있도록 파일 선택기 인터페이스(file picker interface)를 여는 것), 호출된 애플리케이션(called application)으로부터 요망되는 데이터 등을 정의할 수 있다.
게다가, 도 4에 도시된 바와 같이, 연속 데이터 발생기(410)는 호출 핸들러(408)에 의해 수신되고 호출 핸들러(408)에 의해 호출(420)에 포함되는 연속 데이터(418)를 발생시킬 수 있다. 연속 데이터 발생기(410)는 호출자 애플리케이션(102)의 현재 상태를 정의하는 데이터를 포함할 연속 데이터(418)를 발생시키도록 구성되어 있다. 연속 데이터(418)는, 키-값 구조(key-value structure) 등을 비롯한, 임의의 적당한 형태로 데이터를 포함할 수 있다. 연속 데이터(418)는 호출자 애플리케이션(102)에 의해 수신되고, 호출(420)이 호출자 애플리케이션(102)으로부터 발행된 지점에서 동작을 계속하기 위해 호출자 애플리케이션(102)에 의해 사용될 수 있다. 예를 들면, 연속 데이터(418)가 호출(420)이 피호출자 애플리케이션에 의해 처리된 후에 리하이드레이션되는 호출자 애플리케이션(102)의 인스턴스에 제공될 수 있다. 이것은 호출자 애플리케이션(102)의 리하이드레이션된 인스턴스가 호출(420)이 발행되었을 때 호출자 애플리케이션(102)이 동작했던 진입점에서 동작을 계속할 수 있게 한다.
예를 들면, 하나의 예시적인 예에서, 호출자 애플리케이션(102)은 사진이 사진 관리자 애플리케이션으로부터 요청될 수 있는 다수의 지점들을 가지는 소셜 네트워킹 애플리케이션(예컨대, 미국 캘리포니아주 팰로앨토 소재의 Facebook, Inc.에 의해 운영되는 Facebook?, 미국 캘리포니아주 마운틴뷰 소재의 Google, Inc.에 의해 운영되는 Google+ 등)일 수 있다. 차례로, 사진 관리자 애플리케이션은 적어도 일부 사진들을 실제로 저장하는 저장 애플리케이션(예컨대, 미국 캘리포니아주 샌프란시스코 소재의 Dropbox, Inc.에 의해 운영되는 Dropbox™ 등)을 호출할 수 있다. 그에 따라, 사용자가 소셜 네트워크 애플리케이션과 상호작용할 때, 2 개 또는 심지어 3 개의 애플리케이션들(예컨대, 소셜 네트워킹 애플리케이션, 사진 관리자 애플리케이션, 및 저장 애플리케이션)이 관여될 수 있다.
소셜 네트워킹 애플리케이션은 그의 프로그램 코드에 다수의 진입점들을 가질 수 있다. 예를 들어, 소셜 네트워킹 애플리케이션에서의 제1 지점에서, 사용자는 사진 관리자 애플리케이션으로부터 그의 프로필(프로필 사진 업데이트 지점)에 포함시킬 사진("영상"이라고도 지칭됨)을 선택하기 위해 소셜 네트워크 애플리케이션과 상호작용할 수 있다. 제2 지점에서, 사용자는 사용자의 개인 타임라인(타임라인 업데이트 지점)에 포함시킬 사진을 선택하기 위해 소셜 네트워크 애플리케이션과 상호작용할 수 있다. 추가의 지점들에서, 사용자는 다른 목적들을 위해 사진들을 선택할 수 있다. 그에 따라, 소셜 네트워킹 애플리케이션은 영상을 요청하기 위해 호출이 사진 관리자 애플리케이션에게 발행될 수 있는 다수의 지점들을 가질 수 있다. 특히 소셜 네트워크가 호출의 발행 시에 디하이드레이션되고 호출의 완료 시에 리하이드레이션되는 경우, 이 지점들 각각은 사진 관리자 애플리케이션에 영상을 요청하는 호출의 완료 시에 소셜 네트워크 애플리케이션이 동작을 다시 시작할 수 있는 "진입점"으로 간주될 수 있다. 소셜 네트워킹 애플리케이션은 리하이드레이션되고, 프로필 영상이 선택된 제1 진입점에서, 타임라인 영상이 선택된 제2 진입점에서, 또는 영상이 어디서 요청되었는지에 따라 다른 진입점에서 계속될 수 있다. 연속 데이터(418)는 이 차후의 사용을 위한 진입점을 기록하는 것에 의해 특정의 진입점에서 동작의 연속이 일어날 수 있게 한다.
연속 데이터(418)는 호출(420)이 발행되는 호출자 애플리케이션(102)의 진입점의 ID(identification), 컨트랙트 식별자(contract identifier), 요청된 파일 또는 다른 객체의 ID, 호출(420)이 발행되는 대상인 피호출자 애플리케이션, 정보, 반환 데이터 등의 ID, 숫자, 영숫자, 또는 다른 형태의 식별자일 수 있는 호출자 애플리케이션(102)에 대한 식별자(예컨대, "애플리케이션 식별자"), 숫자, 영숫자, 또는 다른 형태의 식별자일 수 있는 실행 중이고 호출(420)을 발행한 호출자 애플리케이션(102)의 인스턴스에 대한 인스턴스 식별자("애플리케이션 인스턴스 식별자"), 호출(420)이 발행될 때의 호출자 애플리케이션(102)의 상태를 식별해주는 추가 상태 정보, 및/또는 추가 정보를 비롯하여, 호출자 애플리케이션(102)에 대한 동작 연속을 가능하게 하는 다양한 정보를 포함할 수 있다.
도 4에 도시된 바와 같이, 브로커 프로세스(402)의 호출 브로커(412)는 호출(420)을 수신한다. 연속 데이터(418)를 포함하는 호출(420)은 호출 핸들러(408)에 의해 직렬화된 또는 비직렬화된 형태로 제공될 수 있다. 직렬화(데이터를 직렬화된 형태로 변환하는 것)는 데이터를 저장 및/또는 전송될 수 있고 차후에 재구성될 수 있는 형태로 변환시키는 것을 지칭한다. 브로커 프로세스(402)는 운영 체제(404)의 하나 이상의 프로세스들일 수 있다. 운영 체제(404)는 모바일 디바이스(400)의 운영 체제이고, 모바일 디바이스(400)의 동작 동안 모바일 디바이스(400)의 주 메모리(406)에 존재할 수 있다. 브로커 프로세스(402)의 호출 브로커(412)는 호출자 애플리케이션들로부터 호출들을 수신하고 수신된 호출들의 정보를 대응하는 피호출자 애플리케이션들로 포워딩할 수 있는 것은 물론, 피호출자 애플리케이션들로부터 호출 응답 정보를 수신하고 응답 정보를 대응하는 호출자 애플리케이션들로 포워딩할 수 있는 것을 비롯하여, 모바일 디바이스(400)의 애플리케이션들 사이에서 발행된 호출들을 중개(broker)하도록 구성되어 있다. 예를 들어, 일 실시예에서, 호출 브로커(412)는, 호출자 애플리케이션과 피호출자 애플리케이션이 호출 관련 정보를 송신 및 수신하기 위해 브로커 프로세스(402)와 어떻게 상호작용할 수 있는지를 정의하기 위해, API(application programming interface)(예컨대, 연관된 한 세트의 클래스 메소드(class method)들을 갖는 한 세트의 클래스들로서 표현됨)로서, 또는 다른 형태로 구현될 수 있다. 다른 실시예들에서, 호출 브로커(412)는 다른 방식들로 구현될 수 있다.
일 실시예에서, 호출(420)에서 수신된 연속 데이터(418)를 추적하기 위해 포그라운드 관리자(416)가 존재할 수 있다. 예를 들면, 브로커 프로세스(402)는 호출(420)을 수신하고, 연속 데이터(418)를 추출하여 애플리케이션 리스트(422)에 저장하기 위해 포그라운드 관리자(416)에 제공할 수 있다. 애플리케이션 리스트(422)는 모바일 디바이스(400)에서 실행 중일 수 있는 애플리케이션들의 리스트를 저장하는 데이터 구조(예컨대, 테이블, 데이터 구조, 어레이 등)이다. 예를 들면, 리스트는 복수의 엔트리들을 포함할 수 있고, 각각의 엔트리는 애플리케이션의 특정의 인스턴스에 대응한다 - 인스턴스가 실제로 실행 중이든 디하이드레이션되었든(따라서 현재 실행 중이 아닐 수 있지만 장래에 실행 중이기 위해 리하이드레이션될 수 있음) 관계없음 -. 일 실시예에서, 포그라운드 관리자(416)는 연속 데이터(418)를 애플리케이션 리스트(422)에 저장하거나 호출(420)을 발행한 피호출자 애플리케이션(104)의 인스턴스와 다른 방식으로 연관시킬 수 있다. 이러한 방식으로, 연속 데이터(418)는 호출(420)이 처리된 후에 피호출자 애플리케이션(104)을 계속하기 위해 나중에 사용될 수 있다.
예를 들어, 일 실시예에서, 포그라운드 관리자(416)는 도 7에 따라 동작할 수 있다. 도 7은 예시적인 실시예에 따른, 애플리케이션 리스트를 사용하여 제1 애플리케이션의 호출을 추적하는 프로세스를 제공하는 플로우차트를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(700)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(700)는 단계(702)에서 시작된다. 단계(702)에서, 하나 이상의 엔트리들을 포함하는 애플리케이션 리스트가 유지되고, 애플리케이션 리스트의 각각의 엔트리는 대응하는 애플리케이션에 대한 애플리케이션 식별자 및 대응하는 애플리케이션의 특정의 인스턴스를 식별해주는 애플리케이션 인스턴스 식별자를 나타낸다. 예를 들어, 앞서 기술된 바와 같이, 포그라운드 관리자(416)는 각각이 실행 중인 애플리케이션 인스턴스에 대응하는 하나 이상의 엔트리들을 포함하는 애플리케이션 리스트(422)를 유지할 수 있다.
하나의 실시예에서, 애플리케이션 리스트(422)의 각각의 엔트리는 대응하는 애플리케이션에 대한 애플리케이션 식별자 및 대응하는 애플리케이션의 특정의 인스턴스를 식별해주는 애플리케이션 인스턴스 식별자를 나타낼 수 있다. 예를 들면, 애플리케이션 리스트(422)는 각각이 이하의 예시적인 엔트리와 유사한 복수의 엔트리들을 포함할 수 있다:
[ApplicationIdentifier],[ApplicationInstanceIdentifier]
여기서
[ApplicationIdentifier]는 애플리케이션에 대한 애플리케이션 식별자이고,
[ApplicationInstanceIdentifier]는 [ApplicationIdentifier]에 의해 식별된 애플리케이션의 실행 중인 인스턴스의 식별자이다.
하나의 실시예에서, [ApplicationIdentifier]는 Microsoft? Windows? Store에서 이용되는 바와 같이 "AUMID"(Application User Model ID)로서 식별될 수 있다. 이러한 예에서, [ApplicationIdentifier]는 패키지 패밀리 이름 부분(package family name portion), 그에 뒤이은 느낌표, 그에 뒤이은 애플리케이션 ID로 구성될 수 있다. 예를 들면, 예시적인 AUMID가 이하에 예시되어 있고:
SampleApplicationPackageName!SampleApplicationlD
여기서
SampleApplicationPackageName은 패키지 패밀리 이름 부분이고,
SampleApplicationID는 애플리케이션 ID이다.
다른 실시예들에서, 애플리케이션 리스트(422)는 애플리케이션 인스턴스들을 다른 방식들로 식별해줄 수 있다.
다시 도 7을 참조하면, 단계(704)에서, 제1 애플리케이션에 의해 발행된 호출을 수신한 것에 응답하여 애플리케이션 리스트 내의 엔트리가 연속 데이터로 태깅된다. 일 실시예에서, 포그라운드 관리자(416)가 수신된 호출(420)로부터 연속 데이터(418)를 수신할 때, 포그라운드 관리자(416)는 수신된 연속 데이터(418)를 호출(420)을 발행한 호출자 애플리케이션(102)의 인스턴스에 대한 애플리케이션 리스트(422) 내의 엔트리와 연관시키도록 구성되어 있다. 하나의 실시예에서, 호출(420)은 호출자 애플리케이션(102)의 인스턴스를 식별해줄 수 있다. 대안적으로, 호출(420)은 호출자 애플리케이션(102)의 인스턴스를 식별해주지 않을 수 있다. 이러한 상황에서, 호출 브로커(412)는 호출(420)을 발행한 호출자 애플리케이션(102)의 인스턴스를 결정하도록 구성될 수 있고, 식별된 인스턴스에 대한 애플리케이션 인스턴스 식별자를 포그라운드 관리자(416)에 제공할 수 있다.
호출 브로커(412)는 호출자 애플리케이션(102)의 인스턴스를 임의의 방식으로 식별할 수 있다. 예를 들면, 예시를 위해 제공된 하나의 예에서, 호출 브로커(412)는 호출자 애플리케이션(102)에 대한 UI(user interface)가 실행되는, ASTA(Application Single-Threaded Apartment)라고도 알려져 있는, UI 스레드를 식별할 수 있다. 호출(420)이 호출자 애플리케이션(102)으로부터 수신될 때, 호출 브로커(412)는 호출자 애플리케이션(102)과 연관된 ASTA를 식별할 수 있다. 호출자 애플리케이션(102)과 연관된 ASTA와의 일대일 대응관계가 운영 체제(404)에 저장된다. 그에 따라, 호출 브로커(412)는 호출(420)로부터 결정된 ASTA로부터 호출자 애플리케이션(102)에 대한 애플리케이션 인스턴스 식별자를 결정할 수 있다.
호출자 애플리케이션(102)에 대한 애플리케이션 인스턴스 식별자가 식별되면, 포그라운드 관리자(416)는 식별된 애플리케이션 인스턴스 식별자를 포함하는 애플리케이션 리스트(422) 내의 엔트리를 연속 데이터(418)로 태깅할 수 있다(예컨대, 그 엔트리를 연속 데이터(418)와 연관시킬 수 있다). 포그라운드 관리자(416)는 연속 데이터(418)를 결정된 엔트리와 연관시켜 애플리케이션 리스트(422)에 저장할 수 있거나, 임의의 다른 방식으로 엔트리를 연속 데이터(418)로 태깅할 수 있다.
도 5에서의 플로우차트(500)를 다시 참조하면, 단계(504)에서, 제1 애플리케이션이 디하이드레이션된다. 일 실시예에서, 호출(420)을 수신한 후에, 브로커 프로세스(402)는 호출자 애플리케이션(102)이 디하이드레이션되게 할 수 있다. 예를 들면, 이것은 호출(420)이 처리되고 있는 동안 디바이스 자원들을 절감하기 위해(에컨대, 메모리 소비를 줄이기 위해) 수행될 수 있다. 이러한 실시예에서, 호출 브로커(412)는 호출(420)이 수신되었다는 것을 하이드레이션 인에이블러 모듈(414)에 통지할 수 있다. 그에 응답하여, 하이드레이션 인에이블러 모듈(414)은 호출자 애플리케이션(102)이 디하이드레이션되게 할 수 있다. 예를 들어, 일 실시예에서, 하이드레이션 인에이블러 모듈(414)은 호출자 애플리케이션(102)이 디하이드레이션되게 하도록 구성되어 있는 디하이드레이션 요청(424)을 발행할 수 있다.
하나의 실시예에서, 디하이드레이션 요청(424)은 호출자 애플리케이션(102)으로 보내지고 호출자 애플리케이션(102)에 의해 직접 수신될 수 있다. 그에 응답하여, 호출자 애플리케이션(102)은 셧다운 프로세스(shutdown process)를 수행하도록 구성될 수 있다. 다른 실시예에서, 디하이드레이션 요청(424)은 일시중단 논리(426)로 보내질 수 있다. 일시중단 논리(426)는, 호출자 애플리케이션(102)을 비롯한, 애플리케이션들의 디하이드레이션을 처리하도록 구성될 수 있다. 예를 들면, 도 4에 도시된 바와 같이, 일시중단 논리(426)는 호출자 애플리케이션(102)에 의해 수신되는 셧다운 지시(shutdown instruction)(428)를 발생시킬 수 있다. 그에 응답하여, 호출자 애플리케이션(102)은 셧다운 프로세스를 수행하도록 구성될 수 있다.
일 실시예에서, 도 5의 단계(504)는 도 8에 도시된 프로세스를 포함할 수 있다. 도 8은 예시적인 실시예에 따른, 호출자 애플리케이션을 디하이드레이션하는 프로세스를 제공하는 플로우차트(800)를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(800)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(800)는 단계(802)에서 시작된다. 단계(802)에서, 제1 애플리케이션이 셧다운된다. 예를 들어, 앞서 기술한 바와 같이, 하이드레이션 인에이블러 모듈(414)은 호출자 애플리케이션(102)이 디하이드레이션되게 하도록 구성되어 있는 디하이드레이션 요청(424)을 발행할 수 있다. 호출자 애플리케이션(102)은 디하이드레이션 요청(424) 또는 셧다운 지시(428)를 (일시중단 논리(426)로부터) 수신할 수 있고, 그에 따라 호출자 애플리케이션(102)이 실행을 종료하는 곳에서 셧다운 프로세스를 수행할 수 있다.
단계(804)에서, 제1 애플리케이션에 할당되었던 주 메모리의 메모리 공간이 해제된다. 일 실시예에서, 호출자 애플리케이션(102)이 실행을 종료하였기 때문에, 호출자 애플리케이션(102)에 할당되었던 주 메모리(406)의 메모리 공간이 해제될 수 있다. 실시예들에서, 하이드레이션 인에이블러 모듈(414) 또는 일시중단 논리(426)는 주 메모리(406)에서의 메모리 공간을 관리하는 모바일 디바이스(400)의 메모리 관리자(도 4에 도시되지 않음)에 통지할 수 있다. 그 결과, 메모리 관리자는 주 메모리(406)에서 호출자 애플리케이션(102)에 할당되었던 메모리 공간을 다른 애플리케이션들 및/또는 자원들에 의해 사용되도록 개방할 수 있다.
디하이드레이션의 결과로서, 호출자 애플리케이션(102)이 주 메모리(406)에 더 이상 존재하지 않는다. 예를 들어, 도 6은 예시적인 실시예에 따른, 호출자 애플리케이션(102)이 디하이드레이션되었고 따라서 주 메모리(406)에 나타내어져 있지 않은 모바일 디바이스(400)의 블록도를 나타낸 것이다.
유의할 점은, 일 실시예에서, 호출자 애플리케이션(102)의 이러한 디하이드레이션이 선택적으로 수행될 수 있다는 것이다. 예를 들어, 어떤 경우에, 호출자 애플리케이션(102)이 디하이드레이션될 수 있고, 다른 경우에, 호출자 애플리케이션(102)이 어떤 상황에서 주 메모리(406)에 남아 있도록 허용될 수 있다. 예를 들어, 모바일 디바이스(400)가 충분히 많은 양의 메모리를 가지는 경우(예컨대, 모바일 디바이스(400)가 "고가(high end)" 디바이스인 경우), 호출자 애플리케이션(102)이 호출(420)의 처리 동안 주 메모리(406)에 남아 있도록 허용될 수 있다. 브로커 프로세스(402)가 주 메모리(406)가 미리 결정된 문턱값 양까지 채워질 때(그리고 주 메모리(406)의 얼마간의 해제가 바람직할 때), 미리 결정된 수의 애플리케이션들이 모바일 디바이스(400)에서 실행 중일 때(예컨대, 문턱값 개수의 애플리케이션들을 초과함), 그리고/또는 다른 트리거에 기초하는 것과 같은, 다양한 상황들에서 호출자 애플리케이션(102)을 선택적으로 디하이드레이션하도록 구성될 수 있다.
도 5에서의 플로우차트(500)를 다시 참조하면, 단계(506)에서, 요청 정보가 제2 애플리케이션에 제공된다. 예를 들어, 도 6을 계속하여 참조하면, 호출 브로커(412)는 요청 정보(602)를 피호출자 애플리케이션(104)에 제공한다. 요청 정보(602)는 호출(420)에서 호출자 애플리케이션(102)으로부터 수신된 요청 정보를 포함한다. 그렇지만, 일 실시예에서, 요청 정보(602)는 연속 데이터(418)(도 4)를 포함하지 않는다. 이러한 이유는 피호출자 애플리케이션(104)이 호출자 애플리케이션(102)의 상태(예컨대, 호출자 애플리케이션(102)이 디하이드레이션되어 있는지 하이드레이션되어 있는지)에 관심이 없고, 따라서, 연속 데이터(418)를 비롯한, 호출자 애플리케이션(102)의 어떤 상태 정보도 필요로 하지 않기 때문이다. 그에 따라, 피호출자 애플리케이션(104)은, 하나 이상의 요청된 파일들 또는 객체들을 검색하는 것, 요청된 정보 또는 반환 데이터를 검색 및/또는 결정하는 것 등과 같은, 요청을 이행하기 위해 요청 정보(602)를 처리한다.
유의할 점은, 하나의 실시예에서, 호출(420)이 호출자 애플리케이션(102)에 의해 발행될 때 피호출자 애플리케이션(104)이 이미 실행 중이고 주 메모리(406)에 존재할 수 있을 수 있다는 것이다. 다른 실시예에서, 호출(420)이 호출자 애플리케이션(102)에 의해 발행될 때 피호출자 애플리케이션(104)이 실행 중이 아니거나 주 메모리(406)에 존재하지 않을 수 있다. 이러한 경우에, 요청 정보(602)를 수신하고 그에 응답하기 위해 피호출자 애플리케이션(104)이 호출될 필요가 있다.
그에 따라, 도 9는 예시적인 실시예에 따른, 호출을 처리하기 위해 피호출자 애플리케이션을 호출하는 프로세스를 제공하는 플로우차트(900)를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(900)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(900)는 단계(902)에서 시작된다. 단계(902)에서, 제2 애플리케이션이 모바일 디바이스에서 호출된다. 일 실시예에서, 호출 브로커(412)는 호출(420)을 수신하고, 호출(420)이 피호출자 애플리케이션(104)으로 보내지는 것으로 결정한다. 그에 응답하여, 브로커 프로세스(402)는 피호출자 애플리케이션(104)이 실행 중이 아닌 것으로 결정할 수 있고 피호출자 애플리케이션(104)을 호출할 수 있으며, 그리고/또는 피호출자 애플리케이션(104)이 실행 중인지를 결정하기 위해 그리고/또는 피호출자 애플리케이션(104)이 호출되도록 요청하기 위해 운영 체제(404)의 자원에 대해 요청을 발행할 수 있다. 이 기법들 중 하나에 따라, 또는 임의의 다른 적당한 방식으로, 피호출자 애플리케이션(104)이 호출될 수 있다. 도 6에 도시된 바와 같이, 피호출자 애플리케이션(104)이 호출되었고 주 메모리(406)에 존재하고 있다. 도 4 및 도 6의 실시예들에서, 호출자 애플리케이션(102)과 피호출자 애플리케이션(104)이 주 메모리(406)에 동시에 존재하지 않는다.
단계(904)에서, 요청 정보가 제2 애플리케이션에 제공된다. 도 6에 도시된 바와 같이, 호출 브로커(412)는 요청 정보(602)를 피호출자 애플리케이션(104)에 제공한다. 예를 들어, 호출 브로커(412)는 URI(uniform resource indicator), 시스템 호출의 형태, 및/또는 다른 형태로 요청 정보(602)를 제공할 수 있다.
일 실시예에서, 도 5의 플로우차트(500)는 호출의 처리를 끝마치기 위해 도 10에 도시된 바와 같이 계속될 수 있다. 도 10은 예시적인 실시예에 따른, 호출을 완료하기 위해 호출자 애플리케이션을 리하이드레이션하는 프로세스를 제공하는 플로우차트(1000)를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(1000)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(1000)는 단계(1002)에서 시작된다. 단계(1002)에서, 요청 정보에 응답하여 제2 애플리케이션으로부터 응답 정보가 수신된다. 예를 들어, 도 6에 도시된 바와 같이, 피호출자 애플리케이션(104)은 응답 정보(604)를 발생시킨다. 응답 정보(604)는 호출 브로커(412)에 의해 수신된다. 앞서 기술된 바와 같이, 응답 정보(604)는 요청된 파일, 요청된 정보, 반환 데이터, 완료 확인응답(completion acknowledgment) 등을 포함할 수 있다.
그에 따라, 일 실시예에서, 피호출자 애플리케이션(104)은 더 이상 실행 중이면서 주 메모리(406)에서의 공간을 차지할 필요가 없을 수 있다. 그에 따라, 도 10에서의 단계(1002)가 도 12에 도시된 바와 같이 수행될 수 있다. 도 12는 예시적인 실시예에 따른, 호출에 응답한 후에 피호출자 애플리케이션을 종료시키는 프로세스를 제공하는 플로우차트(1200)를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(1200)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(1200)는 단계(1202)에서 시작된다. 단계(1202)에서, 응답 정보가 제2 애플리케이션으로부터 수신된다. 예를 들어, 앞서 기술된 바와 같이, 피호출자 애플리케이션(104)은 호출 브로커(412)에 의해 수신되는 응답 정보(604)를 발생시킨다.
단계(1204)에서, 제2 애플리케이션이 종료된다. 일 실시예에서, 응답 정보(604)를 수신한 후에, 브로커 프로세스(402)는 피호출자 애플리케이션(104)이 수신된 호출과 관련하여 더 이상 필요하지 ?은 것으로 결정할 수 있다. 그에 따라, 브로커 프로세스(402)는 피호출자 애플리케이션(104)에 의해 직접 수신되는, 또는, 메모리 관리자, 일시중단 논리(426)(도 4), 또는 다른 자원과 같은, 디바이스 자원들을 관리하고 차례로 셧다운 지시를 피호출자 애플리케이션(104)에 직접 제공하는 다른 디바이스 자원에 의해 수신되는 셧다운 신호(shutdown signal)(도 6에 도시되지 않음)를 발생시킬 수 있다. 그에 따라, 피호출자 애플리케이션(104)으로 하여금 브로커 프로세스(402) 또는 다른 자원으로부터 수신되는 셧다운 신호에 의해 셧다운 프로세스를 호출하게 할 수 있다. 셧다운 프로세스의 결과, 호출자 애플리케이션(102)이 실행을 종료한다. 게다가, 메모리 관리자는 주 메모리(406)에서 피호출자 애플리케이션(104)에 할당되었던 메모리 공간을 다른 애플리케이션들 및/또는 자원들에 의해 사용되도록 개방할 수 있다. 대안적으로, 피호출자 애플리케이션(104)이 사용자 및/또는 다른 애플리케이션들에 의해 사용 중인 것으로 결정되는 경우, 피호출자 애플리케이션(104)이 종료되지 않을 수 있다.
단계(1004)에서, 제1 애플리케이션이 연속 데이터에 기초하여 리하이드레이션된다. 일 실시예에서, 응답 정보(604)를 수신할 시에, 하이드레이션 인에이블러 모듈(414)은 호출자 애플리케이션(102)이 응답을 제공받을 수 있도록 호출자 애플리케이션(102)을 리하이드레이션하도록 구성될 수 있다. 호출(420)에서 호출자 애플리케이션(102)로부터 이전에 수신된 연속 데이터(418)는 특정의 진입점에서 연속 애플리케이션(102)을 리하이드레이션하기 위해 하이드레이션 인에이블러 모듈(414)에 의해 사용될 수 있다. 연속 데이터(418)가 임의의 방식으로 찾아내어지고 검색될 수 있다.
예를 들어, 일 실시예에서, 도 13에 도시된 프로세스가 수행될 수 있다. 도 13은 예시적인 실시예에 따른, 애플리케이션 리스트를 사용하여 제1 애플리케이션에 대한 연속 데이터를 찾아내는 프로세스를 제공하는 플로우차트(1300)를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(1300)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(1300)는 단계(1302)에서 시작된다. 단계(1302)에서, 응답 정보를 수신한 것에 응답하여 제1 애플리케이션의 인스턴스에 대한 애플리케이션 리스트 내의 엔트리가 식별된다. 예를 들어, 일 실시예에서, 호출(420)을 발행한 호출자 애플리케이션(102)의 인스턴스를 식별하기 위해 호출자 애플리케이션(102)으로부터 수신된 응답 정보(604)가 호출(420) 및/또는 요청 정보(602)와 상관될 수 있다. 이러한 방식으로, 연관된 연속 데이터(418)를 검색하기 위해 호출자 애플리케이션(102)의 식별된 인스턴스에 대한 애플리케이션 리스트(422) 내의 엔트리가 액세스될 수 있다.
단계(1304)에서, 제1 애플리케이션을 리하이드레이션하기 위해 애플리케이션 리스트 내의 식별된 엔트리에 태깅된 연속 데이터가 사용된다. 일 실시예에서, 하이드레이션 인에이블러 모듈(414)은 호출자 애플리케이션(102)을 리하이드레이션하기 위해 검색된 연속 데이터(418)를 사용할 수 있다. 예를 들면, 도 11은, 예시적인 실시예에 따른, 호출자 애플리케이션(102)이 리하이드레이션된, 도 4의 모바일 디바이스(400)의 블록도를 나타낸 것이다. 일 실시예에서, 그리고 도 11에 도시된 바와 같이, 하이드레이션 인에이블러 모듈(414)은 호출자 애플리케이션(102)이 리하이드레이션되게 하도록 구성되어 있는 하이드레이션 요청(1104)을 발행할 수 있다.
하나의 실시예에서, 리하이드레이션 요청(1104)은 직접 호출자 애플리케이션(102)이 호출되게 하도록 구성될 수 있다. 다른 실시예에서, 디하이드레이션 요청(1104)은 일시중단 논리(426)로 보내질 수 있다. 일시중단 논리(426)는, 호출자 애플리케이션(102)과 같은, 애플리케이션들의 리하이드레이션을 처리하도록 구성될 수 있다. 예를 들면, 도 11에 도시된 바와 같이, 일시중단 논리(426)는 호출자 애플리케이션(102)이 호출되게 하는 리하이드레이션 지시(1106)를 발생시킬 수 있다. 어느 경우든지, 호출자 애플리케이션(102)으로 하여금 호출(420)이 발행된 진입점에서 동작을 계속하게 하기 위해 연속 데이터(418)가 호출자 애플리케이션(102)에 제공된다.
예를 들어, 소셜 네트워킹 애플리케이션 예를 다시 참조하면, 연속 데이터(418)는 소셜 네트워킹 애플리케이션에 대한 프로필 사진 업데이트 진입점, 타임라인 업데이트 진입점, 또는 다른 진입점을 식별해줄 수 있다. 그에 따라, 연속 데이터(418)는 소셜 네트워킹 애플리케이션으로 하여금 표시된 진입점에서 계속하게 할 수 있다.
그에 따라, 제1 애플리케이션을 리하이드레이션하는 도 10의 단계(1004)는 도 14에 도시된 프로세스를 포함할 수 있다. 도 14는 예시적인 실시예에 따른, 호출자 애플리케이션을 리하이드레이션하는 프로세스를 제공하는 플로우차트(1400)를 나타낸 것이다. 추가적인 구조 및 동작 실시예들이 플로우차트(1400)의 이하의 설명에 기초하여 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다.
플로우차트(1400)는 단계(1402)에서 시작된다. 단계(1402)에서, 주 메모리에서의 메모리 공간이 제1 애플리케이션에 재할당된다. 일 실시예에서, 하이드레이션 인에이블러 모듈(414) 또는 일시중단 논리(426)는 주 메모리(406)에서의 메모리 공간을 호출될 호출자 애플리케이션(102)의 인스턴스에 할당하라고 모바일 디바이스(400)의 메모리 관리자(도 11에 도시되지 않음)에 통지할 수 있다.
단계(1404)에서, 제1 애플리케이션이 연속 데이터에 의해 식별된 진입점에서 재시작된다. 앞서 기술된 바와 같이, 하이드레이션 인에이블러 모듈(414) 및/또는 일시중단 논리(426)는 호출자 애플리케이션(102)이 호출되게 할 수 있다.
다시 도 10을 참조하면, 단계(1006)에서, 응답 정보가 제1 애플리케이션에 제공된다. 예를 들어, 도 11에 도시된 바와 같이, 호출 브로커(412)는 응답 정보(1102)를 호출자 애플리케이션(102)의 호출 핸들러(408)에 제공한다. 응답 정보(1102)에서, 호출 브로커(412)는 응답 정보(604)(도 6)에 포함된 응답 정보를 호출자 애플리케이션(102)으로 포워딩한다. 이러한 방식으로, 호출자 애플리케이션(102)은 호출자 애플리케이션(102)에 의해 디스플레이되거나 다른 방식으로 사용될 수 있는, 파일(예컨대, 사진, 비디오, 오디오 파일 등) 또는 다른 객체, 발생된 정보 또는 반환 데이터 등과 같은, 응답 정보에 액세스할 수 있다. 게다가, 연속 데이터(418)(예컨대, 업데이트된 프로필 사진, 새로운 타임라인 사진 등)에 의해 표시된 호출자 애플리케이션(102)의 진입점에서 응답 정보가 제공된다.
유의할 점은 도 4 내지 도 14와 관련하여 제공된 설명이 제1 애플리케이션 및 제2 애플리케이션과 관련하여 제공된다는 것이다. 앞서 기술된 소셜 네트워킹 애플리케이션 예와 관련하여, 사용자가 그의 소셜 네트워킹 프로필 또는 타임라인에 삽입하기 위해 사진을 선택하려고 시도하는 경우에, 제1 애플리케이션 및 제2 애플리케이션은 소셜 네트워킹 애플리케이션(호출자) 및 사진 관리자 애플리케이션(피호출자)일 수 있고, 여기서 소셜 네트워킹 애플리케이션은 사진 관리자 애플리케이션에 사진을 요구한다. 대안적으로 또는 그에 부가하여, 제1 애플리케이션 및 제2 애플리케이션은 사진 관리자 애플리케이션(호출자) 및 저장 애플리케이션(피호출자)일 수 있고, 여기서 사진 관리자 애플리케이션은 저장 애플리케이션에 사진을 요구한다. 그에 따라, 실시예들은 중첩된(nested) 또는 연쇄된(chained) 시나리오들에 적용가능하고, 여기서 제1 애플리케이션은 제2 애플리케이션에게 호출을 발행하고, 이는 제2 애플리케이션이 제3 애플리케이션에게 호출을 발행하는 일을 가져오며, 이는 제3 애플리케이션이 어쩌면 제4 애플리케이션에게 호출을 발행하는 일을 가져오고, 이하 마찬가지이다. 이러한 중첩(nesting)은 임의의 수의 중첩된 호출자-피호출자 쌍을 포함할 수 있다.
게다가, 유의할 점은 도 4 내지 도 14가 호출자 애플리케이션과 피호출자 애플리케이션 사이의 중재자(intermediary)로서 기능하는 브로커와 관련하여 기술되어 있다는 것이다. 다른 실시예들에서, 모바일 디바이스의 다른 자원은 도 4 내지 도 14에 따라 기술된 바와 유사한 방식으로 호출자 애플리케이션과 피호출자 애플리케이션 사이의 중재자로서 동작할 수 있다.
도 10의 플로우차트(1000)와 관련하여 앞서 기술된 실시예들에서, 호출자 애플리케이션이 디하이드레이션되고, 응답 정보가 피호출자 애플리케이션으로부터 수신되며, 호출자 애플리케이션이 리하이드레이션되고 응답 정보를 제공받는다. 유의할 점은, 어떤 경우에, 호출의 처리 동안, 응답 정보가 수신되기 전에 사용자가 디하이드레이션된 호출자 애플리케이션을 재시작할 수 있다는 것이다. 이러한 경우에, 호출 동작이 효과적으로 취소될 수 있고, 임의의 응답 정보가 폐기 및/또는 무시될 수 있다. 그에 따라, 사용자는 호출이 완료되지 않더라도 호출자 애플리케이션과 계속하여 상호작용할 수 있다.
예를 들어, 일 실시예에서, 사용자가 제1 애플리케이션을 재시작하려고 시도하기 위해 모바일 디바이스의 사용자 인터페이스와 상호작용했다는 표시가 수신된다. 예를 들면, 사용자는 실행을 위한 애플리케이션을 선택했을 수 있거나, "뒤로" 버튼을 선택했을 수 있거나, 제1 애플리케이션을 다른 방식으로 재시작했을 수 있다. 제공된 요청 정보에 대한 응답이 제2 애플리케이션으로부터 수신되기 전에 그 표시가 수신될 수 있다. 그에 따라, 제1 애플리케이션이 연속 데이터에 의해 식별된 진입점이 아니라 제1 애플리케이션에 대한 주 진입점(main entry point)(또는 마지막 진입점)에서 재시작될 수 있다. 제1 애플리케이션이 모바일 디바이스 상에 포그라운드 애플리케이션으로서 제시될 수 있다. 게다가, 연속 데이터가 폐기될 수 있다.
게다가, 어떤 다른 경우에, 피호출자 애플리케이션이 호출자 애플리케이션으로부터의 호출에 대해 응답하지 못할 수 있다. 예를 들면, 도 6 및 도 10의 플로우차트(1000)와 관련하여, 피호출자 애플리케이션(104)이 단계(1002)에서 수신될 응답 정보(604)를 제공하지 않을 수 있다. 피호출자 애플리케이션이 작동 중단(crash)되는 것, 사용자가 뒤로 버튼을 사용하여 제2 애플리케이션을 빠른 해제(light dismiss)시키는 것 등을 비롯하여, 피호출자 애플리케이션이 응답하지 않는 많은 가능한 이유들이 있다. 이러한 상황에서, 호출자 애플리케이션이 리하이드레이션될 수 있고(플로우차트(1000)의 단계(1004)), 연속 데이터가 호출자 애플리케이션에 제공될 수 있으며, 브로커 프로세스(402)는 (플로우차트(1000)의 단계(1006)를 수행하기보다는) 호출이 취소되었다는 것을 호출자 애플리케이션에게 알려줄 수 있다. 예를 들면, 호출이 피호출자 애플리케이션에 대한 하나 이상의 파일들의 요청("파일 선택(file pick)" 동작)인 예에서, 어떤 파일들도 호출자 애플리케이션에게 반환되지 않을 것이다.
III. 예시적인 모바일 디바이스 및 고정식 디바이스 실시예
모바일 디바이스(100), 호출자 애플리케이션(102), 피호출자 애플리케이션(104), 모바일 디바이스(300), 중간 엔티티(302), 모바일 디바이스(400), 브로커 프로세스(402), 운영 체제(404), 호출 핸들러(408), 연속 데이터 발생기(410), 호출 브로커(412), 하이드레이션 인에이블러 모듈(414), 포그라운드 관리자(416), 일시중단 논리(426), 플로우차트(200), 플로우차트(500), 플로우차트(700), 플로우차트(800), 플로우차트(900), 플로우차트(1000), 플로우차트(1200), 플로우차트(1300), 및 플로우차트(1400)는 하드웨어, 또는 소프트웨어 및/또는 펌웨어 중 하나 또는 둘 다와 결합된 하드웨어로 구현될 수 있다. 예를 들어, 호출자 애플리케이션(102), 피호출자 애플리케이션(104), 중간 엔티티(302), 브로커 프로세스(402), 운영 체제(404), 호출 핸들러(408), 연속 데이터 발생기(410), 호출 브로커(412), 하이드레이션 인에이블러 모듈(414), 포그라운드 관리자(416), 일시중단 논리(426), 플로우차트(200), 플로우차트(500), 플로우차트(700), 플로우차트(800), 플로우차트(900), 플로우차트(1000), 플로우차트(1200), 플로우차트(1300), 및 플로우차트(1400)는 하나 이상의 프로세서들에서 실행되고 컴퓨터 판독가능 저장 매체에 저장되도록 구성된 컴퓨터 프로그램 코드/명령어들로서 구현될 수 있다. 모바일 디바이스(100), 호출자 애플리케이션(102), 피호출자 애플리케이션(104), 중간 엔티티(302), 모바일 디바이스(300), 중간 엔티티(302), 모바일 디바이스(400), 브로커 프로세스(402), 운영 체제(404), 호출 핸들러(408), 연속 데이터 발생기(410), 호출 브로커(412), 하이드레이션 인에이블러 모듈(414), 포그라운드 관리자(416), 일시중단 논리(426)는 물론, 플로우차트(200), 플로우차트(500), 플로우차트(700), 플로우차트(800), 플로우차트(900), 플로우차트(1000), 플로우차트(1200), 플로우차트(1300), 및 플로우차트(1400)의 하나 이상의 단계들이 그에 부가하여 및/또는 대안적으로 하드웨어 논리/전기 회로부로서 구현될 수 있다.
예를 들어, 일 실시예에서, 호출자 애플리케이션(102), 피호출자 애플리케이션(104), 중간 엔티티(302), 브로커 프로세스(402), 운영 체제(404), 호출 핸들러(408), 연속 데이터 발생기(410), 호출 브로커(412), 하이드레이션 인에이블러 모듈(414), 포그라운드 관리자(416), 일시중단 논리(426), 플로우차트(200), 플로우차트(500), 플로우차트(700), 플로우차트(800), 플로우차트(900), 플로우차트(1000), 플로우차트(1200), 플로우차트(1300), 및/또는 플로우차트(1400) 중 하나 이상은, 결합하여, SoC에 함께 구현될 수 있다. SoC는 프로세서(예컨대, CPU(central processing unit), 마이크로컨트롤러, 마이크로프로세서, DSP(digital signal processor) 등), 메모리, 하나 이상의 통신 인터페이스들, 및/또는 추가적인 회로들 중 하나 이상을 포함하는 집적 회로 칩을 포함할 수 있고, 기능들을 수행하기 위해 수신된 프로그램 코드를 선택적으로 실행하고 그리고/또는 임베디드 펌웨어(embedded firmware)를 포함할 수 있다.
도 15는 각종의 선택적인 하드웨어 및 소프트웨어 컴포넌트들(전체적으로 컴포넌트들(1502)로서 도시되어 있음)을 포함하는 예시적인 모바일 디바이스(1500)의 블록도를 나타낸 것이다. 예를 들면, 모바일 디바이스(1500)의 컴포넌트들(1502)은, 모바일 디바이스 실시예들에서, 모바일 디바이스(100), 모바일 디바이스(300), 및/또는 모바일 디바이스(400)에 포함될 수 있는 컴포넌트들의 예이다. 관련 기술 분야(들)의 통상의 기술자라면 알고 있을 것인 바와 같이, 임의의 수 및 조합의 컴포넌트들(1502)의 특징들/요소들은 물론, 부가의 및/또는 대안의 특징들/요소들이 모바일 디바이스 실시예에 포함될 수 있다. 이러한 특징들/요소들이 또한 고정식 디바이스 실시예들에 포함될 수 있다. 유의할 점은 컴포넌트들(1502) 중 임의의 컴포넌트가 컴포넌트들(1502)들 중 임의의 다른 컴포넌트와 통신할 수 있지만, 예시의 편의상, 연결들 모두가 도시되어 있지는 않다. 모바일 디바이스(1500)는 본원의 다른 곳에 기술되거나 언급된 또는 다른 방식으로 공지되어 있는 각종의 모바일 디바이스들(예컨대, 셀폰, 스마트폰, 핸드헬드 컴퓨터, PDA(Personal Digital Assistant) 등) 중 임의의 것일 수 있고, 셀룰러 또는 위성 네트워크와 같은, 하나 이상의 통신 네트워크들(1504)과의 또는 LAN(local area network) 또는 WAN(wide area network)과의 무선 양방향 통신을 가능하게 할 수 있다.
예시된 모바일 디바이스(1500)는 신호 코딩, 영상 처리, 데이터 처리, 입출력 처리, 전력 제어, 및/또는 다른 기능들과 같은 작업들을 수행하기 위한 프로세서 회로(1510)라고 지칭되는 제어기 또는 프로세서를 포함할 수 있다. 프로세서 회로(1510)는 하나 이상의 물리적 하드웨어 전기 회로 디바이스 요소들 및/또는 집적 회로 디바이스들에 CPU(central processing unit), 마이크로컨트롤러, 마이크로프로세서, 및/또는 다른 물리적 하드웨어 프로세서 회로로서 구현된 전기 및/또는 광학 회로이다. 프로세서 회로(1510)는 하나 이상의 애플리케이션들(1514), 운영 체제(1512), 메모리(1520)에 저장된 임의의 프로그램 코드 등과 같은, 컴퓨터 판독가능 매체에 저장된 프로그램 코드를 실행할 수 있다. 운영 체제(1512)는 컴포넌트들(1502)의 할당 및 사용과 하나 이상의 애플리케이션 프로그램들(1514)(애플리케이션, "앱" 등이라고도 함)에 대한 지원을 제어할 수 있다. 애플리케이션 프로그램들(1514)은 통상의 모바일 컴퓨팅 애플리케이션들(예컨대, 이메일 애플리케이션, 달력, 연락처 관리자, 웹 브라우저, 메시징 애플리케이션) 및 임의의 다른 컴퓨팅 애플리케이션들(예컨대, 워드 프로세싱 애플리케이션, 지도 제작 애플리케이션, 미디어 플레이어 애플리케이션)을 포함할 수 있다.
예시된 바와 같이, 모바일 디바이스(1500)는 메모리(1520)를 포함할 수 있다. 메모리(1520)는 비분리식 메모리(1522) 및/또는 분리식 메모리(1524)를 포함할 수 있다. 비분리식 메모리(1522)는 RAM, ROM, 플래시 메모리, 하드 디스크, 또는 다른 널리 공지된 메모리 저장 기술들을 포함할 수 있다. 분리식 메모리(1524)는 플래시 메모리 또는 GSM 통신 시스템에서 널리 공지되어 있는 SIM(Subscriber Identity Module) 카드, 또는 "스마트 카드"와 같은 다른 널리 공지된 메모리 저장 기술들을 포함할 수 있다. 메모리(1520)는 운영 체제(1512) 및 애플리케이션들(1514)을 실행하기 위한 데이터 및/또는 코드를 저장하는 데 사용될 수 있다. 예시적인 데이터는 하나 이상의 유선 또는 무선 네트워크들을 통해 하나 이상의 네트워크 서버들 또는 다른 디바이스들로 송신되고 그리고/또는 그로부터 수신될 웹 페이지, 텍스트, 영상, 사운드 파일, 비디오 데이터, 또는 다른 데이터 세트를 포함할 수 있다. 메모리(1520)는 IMSI(International Mobile Subscriber Identity)와 같은 가입자 식별자(subscriber identifier), 및 IMEI(International Mobile Equipment Identifier)와 같은 장비 식별자(equipment identifier)를 저장하는 데 사용될 수 있다. 이러한 식별자들은 사용자들 및 장비를 식별하기 위해 네트워크 서버로 전송될 수 있다.
다수의 프로그램들이 메모리(1520)에 저장될 수 있다. 이 프로그램들은 운영 체제(1512), 하나 이상의 애플리케이션 프로그램들(1514), 그리고 다른 프로그램 모듈들 및 프로그램 데이터를 포함한다. 이러한 애플리케이션 프로그램들 또는 프로그램 모듈들의 예는, 예를 들어, 호출자 애플리케이션(102), 피호출자 애플리케이션(104), 중간 엔티티(302), 브로커 프로세스(402), 운영 체제(404), 호출 핸들러(408), 연속 데이터 발생기(410), 호출 브로커(412), 하이드레이션 인에이블러 모듈(414), 포그라운드 관리자(416), 일시중단 논리(426), 플로우차트(200), 플로우차트(500), 플로우차트(700), 플로우차트(800), 플로우차트(900), 플로우차트(1000), 플로우차트(1200), 플로우차트(1300), 및/또는 플로우차트(1400)(플로우차트들(200, 500, 700, 900, 1000, 1200, 1300, 및 1400)의 임의의 적당한 단계를 포함함), 그리고/또는 본원에 기술되는 추가의 실시예들을 구현하기 위한 컴퓨터 프로그램 논리(예컨대, 컴퓨터 프로그램 코드 또는 명령어들)를 포함할 수 있다.
모바일 디바이스(1500)는 터치 스크린(1532), 마이크로폰(1534), 카메라(1536), 물리 키보드(1538) 및/또는 트랙볼(1540)과 같은 하나 이상의 입력 디바이스들(1530), 그리고 스피커(1552) 및 디스플레이(1554)와 같은 하나 이상의 출력 디바이스들(1550)을 지원할 수 있다. 터치 스크린(1532)과 같은, 터치 스크린은 상이한 방식들로 입력을 검출할 수 있다. 예를 들어, 용량성 터치 스크린은, 물체(예컨대, 손가락 끝)가 표면을 가로질러 지나는 전류를 왜곡시키거나 차단시킬 때, 터치 입력을 검출한다. 다른 예로서, 터치 스크린은 광 센서들로부터의 빔들이 차단될 때 터치 입력을 검출하기 위해 광 센서들을 사용할 수 있다. 입력이 일부 터치 스크린에 의해 검출되기 위해 스크린의 표면과의 물리적 접촉이 필요하지 않다. 예를 들어, 터치 스크린(1532)은, 본 기술 분야에서 잘 이해되는 바와 같이, 정전용량 감지(capacitive sensing)를 사용하여 손가락 호버링 검출(finger hover detection)을 지원하도록 구성될 수 있다. 이미 앞서 기술된 바와 같이, 카메라 기반 검출 및 초음파 기반 검출을 비롯한, 다른 검출 기법들이 사용될 수 있다. 손가락 호버링을 구현하기 위해, 사용자의 손가락이 전형적으로 터치 스크린 위쪽으로 미리 결정된 이격 거리(spaced distance) - 0.1 인치와 0.25 인치 사이, 또는 0.25 인치와 0.5 인치 사이, 또는 0.5 인치와 0.75 인치 사이, 또는 0.75 인치와 1 인치 사이, 또는 1 인치와 1.5 인치 사이, 기타 등등 - 내에 있다.
터치 스크린(1532)은 예시를 위해 제어 인터페이스(1592)를 포함하는 것으로 도시되어 있다. 제어 인터페이스(1592)는 터치 스크린(1532) 상에 디스플레이되는 가상 요소(virtual element)와 연관된 콘텐츠를 제어하도록 구성되어 있다. 예시적인 실시예에서, 제어 인터페이스(1592)는 애플리케이션들(1514) 중 하나 이상에 의해 제공되는 콘텐츠를 제어하도록 구성되어 있다. 예를 들면, 모바일 디바이스(1500)의 사용자가 애플리케이션을 이용할 때, 사용자가 이러한 콘텐츠를 제어하는 컨트롤들에 액세스할 수 있게 하기 위해 제어 인터페이스(1592)가 터치 스크린(1532) 상에서 사용자에게 제시될 수 있다. 제어 인터페이스(1592)의 제시는 터치 스크린(1532)으로부터 지정된 거리 내에서의 움직임 또는 이러한 움직임의 부재의 검출에 기초할 수 있다(예컨대, 그 검출에 의해 트리거될 수 있다). 움직임 또는 움직임의 부재에 기초하여 제어 인터페이스(예컨대, 제어 인터페이스(1592))가 터치 스크린(예컨대, 터치 스크린(1532)) 상에 제시되게 하는 예시적인 실시예들이 이하에서 보다 상세히 기술된다.
다른 가능한 출력 디바이스들(도시되지 않음)은 압전 또는 다른 햅틱 출력 디바이스들을 포함할 수 있다. 일부 디바이스들은 복수의 입출력 기능을 제공할 수 있다. 예를 들어, 터치 스크린(1532) 및 디스플레이(1554)가 단일의 입출력 디바이스에서 결합되어 있을 수 있다. 입력 디바이스들(1530)은 NUI(Natural User Interface)를 포함할 수 있다. NUI는 사용자가, 마우스, 키보드, 리모콘 등과 같은 입력 디바이스들에 의해 부과되는 인위적 제약조건들 없이, "자연스러운" 방식으로 디바이스와 상호작용할 수 있게 하는 임의의 인터페이스 기술이다. NUI 방법의 예들은 음성 인식, 터치 및 스타일러스 인식, 스크린 상에서의 제스처 인식 및 스크린에 인접한 제스처 인식 둘 다, 에어 제스처(air gesture), 머리 및 눈 추적, 음성(voice) 및 발화(speech), 시각(vision), 터치, 제스처, 및 기계 지능(machine intelligence)에 의존하는 것들을 포함한다. NUI의 다른 예들은 가속도계/자이로스코프, 얼굴 인식, 3D 디스플레이, 머리, 눈, 및 시선 추적(gaze tracking), 몰입형 증강 현실 및 가상 현실 시스템(이들 모두는 보다 자연스러운 인터페이스를 제공함)을 사용하는 움직임 제스처 검출은 물론, 전기장 감지 전극들을 사용하여 뇌 활동을 감지하기 위한 기술들(EEG 및 관련 방법들)을 포함한다. 이와 같이, 하나의 구체적인 예에서, 운영 체제(1512) 또는 애플리케이션들(1514)은 사용자가 음성 명령을 통해 디바이스(1500)를 작동시킬 수 있게 하는 음성 제어 인터페이스의 일부로서 음성 인식 소프트웨어를 포함할 수 있다. 게다가, 디바이스(1500)는, 게임 애플리케이션에 입력을 제공하기 위해 제스처들을 검출하고 해석하는 것과 같은, 사용자의 공간 제스처들을 통한 사용자 상호작용을 가능하게 하는 입력 디바이스들 및 소프트웨어를 포함할 수 있다.
본 기술 분야에서 잘 이해되는 바와 같이, 무선 모뎀(들)(1560)은 안테나(들)(도시되지 않음)에 결합될 수 있고, 프로세서(1510)와 외부 디바이스들 사이의 양방향 통신을 지원할 수 있다. 모뎀(들)(1560)은 총칭하여 도시되어 있고, 이동 통신 네트워크(1504)와 통신하기 위한 셀룰러 모뎀(1566) 및/또는 다른 무선 기반 모뎀들(예컨대, 블루투스(1564) 및/또는 Wi-Fi(1562))을 포함할 수 있다. 셀룰러 모뎀(1566)은, GSM, 3G, 4G, 5G 등과 같은, 임의의 적당한 통신 표준 또는 기술에 따라 전화 통화를 가능하게 하도록(그리고 선택적으로 데이터를 전송하도록) 구성될 수 있다. 무선 모뎀(들)(1560) 중 적어도 하나는 전형적으로, 단일의 셀룰러 네트워크 내에서의 데이터 및 음성 통신을 위한 GSM 네트워크와 같은, 하나 이상의 셀룰러 네트워크들과의, 셀룰러 네트워크들 간의, 또는 모바일 디바이스와 PSTN(public switched telephone network) 간의 통신을 위해 구성되어 있다.
모바일 디바이스(1500)는 적어도 하나의 입출력 포트(1580), 전원(1582), GPS(Global Positioning System) 수신기와 같은, 위성 항법 시스템 수신기(satellite navigation system receiver)(1584), 가속도계(1586), 및/또는 USB 포트, IEEE 1394(Fire Wire) 포트, 및/또는 RS-232 포트일 수 있는, 물리적 커넥터(1590)를 더 포함할 수 있다. 본 기술 분야의 통상의 기술자라면 잘 알 것인 바와 같이, 임의의 컴포넌트들이 존재하지 않을 수 있고 다른 컴포넌트들이 부가적으로 존재할 수 있기 때문에, 예시된 컴포넌트들(1502)이 필수적인 것도 아니고 모두 포함되는 것도 아니다.
본원에서 사용되는 바와 같이, "컴퓨터 프로그램 매체", "컴퓨터 판독가능 매체" 및 "컴퓨터 판독가능 저장 매체"라는 용어들은 일반적으로, 하드 디스크 드라이브와 연관된 하드 디스크, 분리식 자기 디스크, 분리식 광 디스크, 다른 물리적 하드웨어 매체 - RAM, ROM, 플래시 메모리 카드, 디지털 비디오 디스크, 집 디스크(zip disk), MEM, 나노기술 기반 저장 디바이스 등 -, 및 추가의 유형의 물리적/유형적 하드웨어 저장 매체(도 15의 메모리(1520)를 포함함)와 같은 물리적 하드웨어 매체를 지칭하는 데 사용된다. 이러한 컴퓨터 판독가능 저장 매체는 통신 매체와 구별되고 그것과 중복하지 않는다(통신 매체를 포함하지 않음). 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 반송파와 같은 피변조 데이터 신호(modulated data signal)에 구현한다. "피변조 데이터 신호"라는 용어는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정되거나 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체는 물론, 유선 매체도 포함한다. 실시예들은 또한 이러한 통신 매체에 관한 것이다.
앞서 살펴본 바와 같이, 컴퓨터 프로그램들 및 모듈들(애플리케이션들(1514)을 포함함)은 하드 디스크, 자기 디스크, 광 디스크, ROM, RAM, 또는 다른 하드웨어 저장 매체 상에 저장될 수 있다. 이러한 컴퓨터 프로그램들은 또한 무선 모뎀(1560), 물리적 커넥터(1590), 또는 임의의 다른 인터페이스 유형의 네트워크 인터페이스(들)을 통해 수신될 수 있다. 이러한 컴퓨터 프로그램들은, 애플리케이션에 의해 실행되거나 로딩될 때, 모바일 디바이스(1500)가 본원에서 논의되는 실시예들의 특징들을 구현할 수 있게 한다. 그에 따라, 이러한 컴퓨터 프로그램들은 모바일 디바이스(1500)의 제어기들을 나타낸다.
실시예들은 또한 임의의 컴퓨터 판독가능 매체 상에 저장되는 컴퓨터 코드 또는 명령어들을 포함하는 컴퓨터 프로그램 제품들에 관한 것이다. 이러한 컴퓨터 프로그램 제품들은 하드 디스크 드라이브, 광 디스크 드라이브, 메모리 디바이스 패키지, 휴대용 메모리 스틱, 메모리 카드, 및 다른 유형의 물리적 저장 하드웨어를 포함한다.
IV. 결론
본 발명의 다양한 실시예들이 앞서 기술되었지만, 그 실시예들이 제한이 아니라 단지 예로서 제시되어 있다는 것을 잘 알 것이다. 첨부된 청구항들에 한정된 바와 같은 발명의 사상 및 범주를 벗어남이 없이 형태 및 상세에 있어서의 다양한 변경들이 그에 행해질 수 있다는 것이 관련 기술 분야(들)의 통상의 기술자에게는 명백할 것이다. 그에 따라, 본 발명의 폭 및 범주는 앞서 기술된 예시적인 실시예들 중 임의의 것에 의해 제한되어서는 안되고, 이하의 청구항들 및 그의 등가물들에 따라서만 한정되어야 한다.

Claims (15)

  1. 모바일 디바이스에서의 방법으로서,
    제2 애플리케이션으로 보내지는 상기 모바일 디바이스에 포함된 제1 애플리케이션으로부터 발행된 호출을 수신하는 단계 - 상기 호출은 상기 제1 애플리케이션에 대한 연속 데이터(continuation data) 및 요청 정보를 포함함 -;
    상기 제1 애플리케이션을 디하이드레이션(dehydrate)하는 단계; 및
    상기 요청 정보를 상기 제2 애플리케이션에 제공하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 요청 정보에 응답하여 상기 제2 애플리케이션으로부터 응답 정보를 수신하는 단계;
    상기 연속 데이터에 기초하여 상기 제1 애플리케이션을 리하이드레이션(rehydrate)하는 단계; 및
    상기 응답 정보를 상기 제1 애플리케이션에 제공하는 단계를 더 포함하는, 방법.
  3. 제2항에 있어서, 상기 요청 정보를 상기 제2 애플리케이션에 제공하는 상기 단계는
    상기 모바일 디바이스에서 상기 제2 애플리케이션을 호출하는 단계; 및
    상기 요청 정보를 상기 제2 애플리케이션에 제공하는 단계를 포함하고;
    상기 요청 정보에 응답하여 상기 제2 애플리케이션으로부터 응답 정보를 수신하는 상기 단계는
    상기 응답 정보를 상기 제2 애플리케이션으로부터 수신하는 단계; 및
    상기 제2 애플리케이션을 종료시키는 단계를 포함하는, 방법.
  4. 제2항에 있어서, 상기 디하이드레이션하는 단계는
    상기 제1 애플리케이션을 종료(shut down)시키는 단계; 및
    상기 제1 애플리케이션에 할당되었던 주 메모리(primary memory)의 메모리 공간을 해제시키는 단계를 포함하는, 방법.
  5. 제4항에 있어서, 상기 리하이드레이션하는 단계는
    상기 주 메모리 내의 메모리 공간을 상기 제1 애플리케이션에 재할당(reallocate)하는 단계; 및
    상기 연속 데이터에 의해 식별된 진입점에서 상기 제1 애플리케이션을 재시작(re-launch)하는 단계를 포함하는, 방법.
  6. 제2항에 있어서,
    하나 이상의 엔트리들을 포함하는 애플리케이션 리스트를 유지하는 단계 - 상기 애플리케이션 리스트의 각각의 엔트리는 대응하는 애플리케이션에 대한 애플리케이션 식별자 및 상기 대응하는 애플리케이션의 특정의 인스턴스를 식별해주는 애플리케이션 인스턴스 식별자를 나타냄 -; 및
    상기 제1 애플리케이션에 의해 발행된 상기 호출을 수신한 것에 응답하여, 상기 애플리케이션 리스트 내의 엔트리를 상기 연속 데이터로 태깅하는 단계 - 상기 태깅된 엔트리는 상기 호출을 발행한 상기 제1 애플리케이션의 상기 인스턴스에 대응함 - 를 더 포함하는, 방법.
  7. 제6항에 있어서, 상기 연속 데이터에 기초하여 상기 제1 애플리케이션을 리하이드레이션하는 상기 단계는
    상기 응답 정보를 수신한 것에 응답하여 상기 제1 애플리케이션의 상기 인스턴스에 대한 상기 애플리케이션 리스트 내의 상기 엔트리를 식별하는 단계; 및
    상기 제1 애플리케이션을 리하이드레이션하기 위해 상기 애플리케이션 리스트 내의 상기 식별된 엔트리에 태깅된 상기 연속 데이터를 사용하는 단계를 포함하는, 방법.
  8. 제1항에 있어서,
    사용자가 상기 제1 애플리케이션을 재시작하려고 시도하기 위해 상기 모바일 디바이스의 사용자 인터페이스와 상호작용했다는 표시를 수신하는 단계 - 상기 표시는 상기 제공된 요청 정보에 대한 응답이 상기 제2 애플리케이션으로부터 수신되기 전에 수신됨 -;
    상기 연속 데이터에 의해 식별된 다른 진입점(entry point)이 아닌 상기 제1 애플리케이션에 대한 주 진입점(main entry point)에서 상기 제1 애플리케이션을 재시작하는 단계; 및
    상기 연속 데이터를 폐기하는 단계를 더 포함하는, 방법.
  9. 모바일 디바이스에서의 시스템으로서,
    상기 모바일 디바이스의 프로세서 회로에서 실행되도록 구성된 브로커 프로세스(broker process) - 상기 브로커 프로세스는
    상기 모바일 디바이스에서 실행되는 제1 애플리케이션의 인스턴스로부터 발행된 호출을 수신하도록 구성된 호출 브로커(call broker) - 상기 호출은 제2 애플리케이션으로 보내지고 상기 제1 애플리케이션의 상기 인스턴스에 대한 연속 데이터 및 요청 정보를 포함하고, 상기 호출 브로커는 또한 상기 연속 데이터 없이 상기 요청 정보를 상기 제2 애플리케이션에 제공하도록 구성되어 있음 -; 및
    상기 제1 애플리케이션의 상기 인스턴스가 디하이드레이션될 수 있게 하는 제1 신호를 제공하도록 구성된 하이드레이션 인에이블러 모듈(hydration enabler module)을 포함함 - 를 포함하고;
    상기 호출 브로커는 또한 상기 요청 정보에 응답하여 상기 제2 애플리케이션으로부터 응답 정보를 수신하도록 구성되어 있으며;
    상기 하이드레이션 인에이블러 모듈은 상기 연속 데이터에 기초하여 상기 제1 애플리케이션의 상기 인스턴스가 리하이드레이션되게 하도록 구성되어 있고;
    상기 호출 브로커는 또한 상기 응답 정보를 상기 제1 애플리케이션의 상기 인스턴스에 제공하도록 구성되어 있는, 시스템.
  10. 제9항에 있어서, 상기 호출 브로커는 또한 상기 제2 애플리케이션이 상기 모바일 디바이스에서 호출되게 하고, 상기 요청 정보를 상기 호출된 제2 애플리케이션에 제공하도록 구성되어 있고;
    상기 호출 브로커는 상기 응답 정보를 상기 제2 애플리케이션으로부터 수신한 것에 응답하여 상기 제2 애플리케이션이 종료되게 하도록 구성되어 있는, 시스템.
  11. 제9항에 있어서, 상기 제1 애플리케이션의 상기 인스턴스가 디하이드레이션될 때 상기 제1 애플리케이션의 상기 인스턴스에 할당되었던 주 메모리의 메모리 공간이 해제되는, 시스템.
  12. 제11항에 있어서, 상기 주 메모리 내의 메모리 공간이 상기 제1 애플리케이션의 상기 인스턴스에 재할당되고, 상기 제1 애플리케이션의 상기 인스턴스가 상기 연속 데이터에 기초하여 리하이드레이션될 때 상기 제1 애플리케이션이 상기 연속 데이터에 의해 식별된 진입점에서 재시작되는, 시스템.
  13. 제9항에 있어서,
    하나 이상의 엔트리들을 포함하는 애플리케이션 리스트를 유지하도록 구성된 포그라운드 관리자(foreground manager) - 상기 애플리케이션 리스트의 각각의 엔트리는 대응하는 애플리케이션에 대한 애플리케이션 식별자 및 상기 대응하는 애플리케이션의 특정의 인스턴스를 식별해주는 애플리케이션 인스턴스 식별자를 나타냄 - 를 더 포함하고;
    상기 호출 브로커는 상기 제1 애플리케이션에 의해 발행된 상기 호출을 수신한 것에 응답하여 상기 애플리케이션 리스트 내의 엔트리를 상기 연속 데이터로 태깅하도록 - 상기 태깅된 엔트리는 상기 호출을 발행한 상기 제1 애플리케이션의 상기 인스턴스에 대응함 - 구성되어 있는, 시스템.
  14. 제13항에 있어서, 상기 호출 브로커는 상기 응답 정보를 수신한 것에 응답하여 상기 제1 애플리케이션의 상기 인스턴스에 대한 상기 애플리케이션 리스트 내의 상기 엔트리를 식별하고, 상기 제1 애플리케이션을 리하이드레이션하기 위해 상기 애플리케이션 리스트 내의 상기 식별된 엔트리에 태깅된 상기 연속 데이터를 사용하도록 구성되어 있는, 시스템.
  15. 컴퓨터 프로그램 논리가 기록되어 있는 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품으로서,
    프로세서로 하여금 제1항 내지 제8항 중 어느 한 항을 수행할 수 있게 하는 컴퓨터 프로그램 논리를 포함하는, 컴퓨터 프로그램 제품.
KR1020167027935A 2014-03-10 2015-02-27 애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션 KR20160130491A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461950799P 2014-03-10 2014-03-10
US61/950,799 2014-03-10
US14/322,647 2014-07-02
US14/322,647 US9760417B2 (en) 2014-03-10 2014-07-02 Application dehydration and rehydration during application-to-application calls
PCT/US2015/017891 WO2015138151A1 (en) 2014-03-10 2015-02-27 Application dehydration and rehydration during application-to-application calls

Publications (1)

Publication Number Publication Date
KR20160130491A true KR20160130491A (ko) 2016-11-11

Family

ID=54017472

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027935A KR20160130491A (ko) 2014-03-10 2015-02-27 애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션

Country Status (5)

Country Link
US (1) US9760417B2 (ko)
EP (1) EP3117313A1 (ko)
KR (1) KR20160130491A (ko)
CN (1) CN106104482A (ko)
WO (1) WO2015138151A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10616327B2 (en) 2016-09-20 2020-04-07 Microsoft Technology Licensing, Llc Policy based hydration behavior in cloud storage synchronization
US11368528B2 (en) 2016-09-20 2022-06-21 Microsoft Technology Licensing, Llc Dynamic storage management in cloud storage synchronization
CN109936512B (zh) * 2017-12-15 2021-10-01 华为技术有限公司 流量分析方法、公共服务流量归属方法及相应的计算机系统
US11803656B2 (en) 2019-10-04 2023-10-31 Microsoft Technology Licensing, Llc Supplying personal information between different devices using different platforms
FR3103291A1 (fr) 2019-11-18 2021-05-21 Psa Automobiles Sa Méthode de traitement de données reçues de capteurs configurés pour être embaqués dans un véhicule
CN111061492B (zh) * 2019-12-16 2023-12-29 连尚(新昌)网络科技有限公司 一种应用程序的处理方法、设备和计算机存储介质
US11409517B2 (en) 2020-06-08 2022-08-09 Microsoft Technology Licensing, Llc Intelligent prefetching for OS components
CN113590134A (zh) * 2021-08-16 2021-11-02 北京字节跳动网络技术有限公司 一种项目生成方法及装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512952B1 (en) * 2001-04-06 2009-03-31 Palmsource, Inc. Task switching with state preservation for programs running on an electronic device
US7484220B2 (en) 2004-05-26 2009-01-27 Qualcomm Incorporated Method, software and apparatus for using application state history information when re-launching applications
US8595356B2 (en) 2006-09-28 2013-11-26 Microsoft Corporation Serialization of run-time state
US8510743B2 (en) 2007-10-31 2013-08-13 Google Inc. Terminating computer applications
US8327329B2 (en) 2008-06-06 2012-12-04 Microsoft Corporation Application dehydration, synchronization, and rehydration
JP5137781B2 (ja) * 2008-10-30 2013-02-06 株式会社エヌ・ティ・ティ・ドコモ 移動機及びアプリケーションの切替方法
CN101859261B (zh) * 2010-06-09 2015-05-13 中兴通讯股份有限公司 一种释放内存的控制方法及控制设备
US9021436B2 (en) * 2010-12-08 2015-04-28 Microsoft Technology Licensing Llc Automatic reconnection of debugger to a reactivated application
US10631246B2 (en) 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices
US9785470B2 (en) 2011-06-20 2017-10-10 Microsoft Technology Licensing, Llc Memory management model and interface for unmodified applications
US20130031490A1 (en) 2011-07-26 2013-01-31 Microsoft Corporation On-demand tab rehydration
CN103294559B (zh) * 2012-02-28 2017-11-17 宇龙计算机通信科技(深圳)有限公司 移动终端的应用交互方法和系统
US9003299B2 (en) 2012-06-08 2015-04-07 Apple Inc. Extensible application state preservation architecture
US9405556B2 (en) * 2012-06-28 2016-08-02 Microsoft Technology Licensing, Llc Dynamic addition and removal of operating system components
CN103218307B (zh) * 2013-04-18 2016-03-30 海信集团有限公司 内存管理系统和内存管理方法

Also Published As

Publication number Publication date
CN106104482A (zh) 2016-11-09
EP3117313A1 (en) 2017-01-18
US9760417B2 (en) 2017-09-12
WO2015138151A1 (en) 2015-09-17
US20150254119A1 (en) 2015-09-10

Similar Documents

Publication Publication Date Title
US9760417B2 (en) Application dehydration and rehydration during application-to-application calls
US11385935B2 (en) Task scheduling method and electronic device for implementing same
TWI573075B (zh) 持續及有彈性之工作處理
KR102237373B1 (ko) 전자 장치의 태스크 스케줄링 방법 및 이를 사용하는 전자 장치
TW201833792A (zh) 用戶介面渲染方法及裝置
WO2018045934A1 (zh) 应用进程的管理方法和终端设备
US9785465B2 (en) Method for task group migration and electronic device supporting the same
US20160371124A1 (en) Method and apparatus for controlling a plurality of operating systems
US20180329501A1 (en) Gesture sensing method and electronic device supporting same
US20210256427A1 (en) Automated Computer Operating System Optimization
US10089019B2 (en) Minimizing latency from peripheral devices to compute engines
US10466856B2 (en) Electronic device having two displays and a method for executing a different application on each display of the electronic device based on simultaneous inputs into a plurality of application icons
KR20160143453A (ko) 전자 장치 및 전자 장치의 메모리 관리 방법
US20170017373A1 (en) Electronic device and method for controlling the same
US10089159B2 (en) Processing non-spatial input by multiple program elements of a computer program executed on a computer
CN115421787A (zh) 指令执行方法、装置、设备、系统、程序产品及介质
US10599444B2 (en) Extensible input stack for processing input device data
EP3048519A1 (en) Electronic device and method for displaying object in electronic device
KR20180004956A (ko) 전자 장치 및 전자 장치의 동작 방법
US20160100100A1 (en) Method for Configuring Screen, Electronic Device and Storage Medium
CN113641929B (zh) 页面渲染的方法、装置、电子设备和计算机可读存储介质
US20190213015A1 (en) Extensible input stack for processing input device data
CN115904745A (zh) 进程间通信方法及相关设备
US10089262B2 (en) Reduced overhead safepoint mechanism using signals
US20240061726A1 (en) Efficient connection pooling