KR20200089984A - 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치 - Google Patents

전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치 Download PDF

Info

Publication number
KR20200089984A
KR20200089984A KR1020190006966A KR20190006966A KR20200089984A KR 20200089984 A KR20200089984 A KR 20200089984A KR 1020190006966 A KR1020190006966 A KR 1020190006966A KR 20190006966 A KR20190006966 A KR 20190006966A KR 20200089984 A KR20200089984 A KR 20200089984A
Authority
KR
South Korea
Prior art keywords
application program
electronic device
external server
processor
user input
Prior art date
Application number
KR1020190006966A
Other languages
English (en)
Other versions
KR102648102B1 (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 삼성전자주식회사
Priority to KR1020190006966A priority Critical patent/KR102648102B1/ko
Priority to PCT/KR2020/000958 priority patent/WO2020149722A1/en
Priority to US16/748,414 priority patent/US10893124B2/en
Publication of KR20200089984A publication Critical patent/KR20200089984A/ko
Application granted granted Critical
Publication of KR102648102B1 publication Critical patent/KR102648102B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/70Services for machine-to-machine communication [M2M] or machine type communication [MTC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Telephone Function (AREA)
  • Computer Hardware Design (AREA)

Abstract

본 발명의 다양한 실시예들에 따르면, 전자 장치는, 디스플레이, 무선 통신을 제공하도록 구성된 무선 통신 회로, 상기 디스플레이 및 상기 무선 통신 회로와 작동적으로 연결된 적어도 하나의 프로세서, 및 상기 프로세서와 작동적으로 연결되고, 제1 사용자 인터페이스를 포함하는 제1 어플리케이션 프로그램을 저장하도록 구성되는 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 적어도 하나의 프로세서가, 상기 무선 통신 회로를 통해, 상기 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버와 연결하고, 상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 상기 디스플레이 상에 상기 제1 어플리케이션 프로그램의 상기 제1 사용자 인터페이스를 표시하고, 상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하도록 하는 인스트럭션들을 저장할 수 있다. 다양한 실시예들이 가능하다.

Description

전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치{APPARATUS AND MEHTOD FOR PROVIDING WORK ENVIRONMENT FOR APPLICATION PROGRAM BETWEEN ELECTRONIC DEVICE AND EXTERNAL SERVER}
본 발명의 다양한 실시예들은 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하기 위한 방법 및 장치에 관하여 개시한다.
최근 디지털 기술의 발달과 함께 이동통신 단말기, 스마트폰(smart phone), 태블릿(tablet) PC(personal computer), 노트북(notebook), 또는 개인용 컴퓨터(personal computer)와 같은 다양한 유형의 전자 장치가 널리 사용되고 있다. 전자 장치는 전자 장치에 구비된 컴퓨팅 자원(computing resource)(예: 프로세서 및 메모리)을 이용하여 어플리케이션 프로그램을 실행하고, 그 결과물(예: 비디오 및/또는 오디오 데이터)을 사용자에게 제공할 수 있다. 하지만, 전자 장치에서 어플리케이션 프로그램의 실행을 위한 컴퓨팅 자원은 전자 장치에 고정될 수 있고, 이에 따라, 전자 장치를 통해 사용자가 경험할 수 있는 어플리케이션 프로그램의 컴퓨팅 품질은 제한적일 수 있다. 따라서, 사용자는 전자 장치의 성능에 따라 고성능이 필요한 어플리케이션 프로그램의 실행에 있어서, 배터리 소모 및 처리 시간, 또는 반응 속도와 같은 제약을 받을 수 있고, 고성능이 필요한 어플리케이션 프로그램을 실행하기 위해서는 고성능의 전자 장치를 사용하거나, 사용상의 서비스 품질(예: 해상도, 그래픽 가속 능력)을 저사양으로 조절한 후 사용할 수 있다. 예를 들면, 어플리케이션 프로그램은, 전자 장치에 설치되더라도 컴퓨팅 자원의 부족으로 제대로 실행되지 못할 수 있고, 해당 어플리케이션 프로그램에 관련된 서비스를 사용자에게 제공하지 못할 수 있다.
최근에는, 원격지(예: 외부 서버)의 컴퓨팅 장치의 컴퓨팅 자원을 이용하여, 어플리케이션 프로그램을 실행하는 가상 모바일 환경(VMI, virtual mobile infrastructure)에 관한 기술이 서비스 되고 있다. 하지만, 사용자가 가상 모바일 환경을 사용하기 위해서는, 전자 장치에 가상 모바일 환경을 사용하기 위한 사용 환경의 복잡한 설정을 구성해야 함에 따라, 환경 구성에 많은 노력이 필요하고 많은 불편함이 따를 수 있다. 또한, 전자 장치에 사용 환경이 구성 되더라도, 전자 장치와 외부 서버 간에 독립적인 작업 환경(예: 독립적이고 개별적인 어플리케이션 프로그램 실행 및 그 결과물 저장)으로 인해, 사용자에게 어플리케이션 프로그램에 관한 작업의 연속성을 보장(또는 확보)할 수 없으며, 사용자의 접근이 용이하지 못할 수 있다. 또한, 원격지에서 외부 서버에 의한 작업 환경에서의 작업은, 만약 네트워크가 단절되는 경우 작업을 수행할 수 없으며, 작업의 결과물의 손실이 발생될 수 있다.
다양한 실시예들에서는, 원격의 컴퓨팅 자원에 기반하여 어플리케이션 프로그램을 실행하고, 실행의 결과물(예: 데이터)을 전자 장치에서 출력하도록 하는 가상 모바일 환경을 제공하는 방법 및 장치에 관하여 개시한다.
다양한 실시예들에서는, 외부 서버의 컴퓨팅 자원을 이용하여, 전자 장치를 대신하여 어플리케이션 프로그램을 실행하고, 실행의 결과물을 전자 장치에서 제공할 때, 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 연속적인 작업 환경을 제공할 수 있는 방법 및 장치에 관하여 개시한다.
다양한 실시예들에서는, 외부 서버의 컴퓨팅 자원을 활용하여, 전자 장치의 성능에 따른 어플리케이션 프로그램의 실행 제약 사항을 극복하고, 외부 서버의 컴퓨팅 자원을 할당 받을 때, 전자 장치와 외부 서버 간의 사용자 데이터를 미리 동기화 하여, 어플리케이션 프로그램이 외부 서버에서 실행될 시점에 작업의 연속성을 확보할 수 있는 방법 및 장치에 관하여 개시한다.
다양한 실시예들에서는, 외부 서버에서 어플리케이션 프로그램의 실행 결과에 관한 결과물을 전자 장치와 동기화 하여, 전자 장치가 네트워크 연결이 되지 않는 환경에서도 연속적인 작업 환경을 제공할 수 있는 방법 및 장치에 관하여 개시한다.
본 발명의 다양한 실시예들에 따른 전자 장치는, 디스플레이, 무선 통신을 제공하도록 구성된 무선 통신 회로, 상기 디스플레이 및 상기 무선 통신 회로와 작동적으로 연결된 적어도 하나의 프로세서, 및 상기 프로세서와 작동적으로 연결되고, 제1 사용자 인터페이스를 포함하는 제1 어플리케이션 프로그램을 저장하도록 구성되는 메모리를 포함하고, 상기 메모리는, 실행 시에, 상기 적어도 하나의 프로세서가, 상기 무선 통신 회로를 통해, 상기 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버와 연결하고, 상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 상기 디스플레이 상에 상기 제1 어플리케이션 프로그램의 상기 제1 사용자 인터페이스를 표시하고, 상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하도록 하는 인스트럭션들을 저장할 수 있다.
본 발명의 다양한 실시예들에 따른 전자 장치의 동작 방법은, 무선 통신 회로를 통해, 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버와 연결하는 동작, 상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 디스플레이 상에 상기 제1 어플리케이션 프로그램의 제1사용자 인터페이스를 표시하는 동작, 상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하는 동작을 포함할 수 있다.
상기와 같은 과제를 해결하기 위하여 본 발명의 다양한 실시예들에서는, 상기 방법을 프로세서에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 판독 가능한 기록 매체를 포함할 수 있다.
다양한 실시예들에 따른 전자 장치 및 그의 동작 방법에 따르면, 전자 장치에 고정된 컴퓨팅 자원에 독립적이고 고성능의 컴퓨팅 자원을 요구하는 다양한 어플리케이션 프로그램의 서비스를, 시간 및 장소에 제한을 두지 않고, 사용자에게 제공할 수 있다. 다양한 실시예들에 따르면, 외부 서버의 컴퓨팅 자원을 이용하여, 전자 장치를 대신하여 어플리케이션 프로그램을 실행하고, 실행의 결과물을 전자 장치에서 제공할 때, 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 연속적인 작업 환경을 제공할 수 있다. 다양한 실시예들에 따르면, 외부 서버에서 실행되는 어플리케이션 프로그램의 입출력을 전자 장치와 동기화 함으로써, 사용자에게 전자 장치에서 어플리케이션 프로그램이 실행되는 것과 동일한 경험을 제공하며, 연속적인 작업을 수행할 수 있는 환경을 제공할 수 있다. 다양한 실시예들에 따르면, 사용자는 네트워크 상황에 따라 전자 장치와 네트워크가 단절된 상황에서도 어플리케이션 프로그램의 실행 자체를 연속적으로 수행할 수 있다.
다양한 실시예들에 따르면, 어플리케이션 프로그램을 외부 서버에서 실행시키는 환경(예: 컴퓨팅 자원)에 대해서 사용자가 선택할 수 있고, 사용자가 얻게 되는 이득에 대해 사전에 인지할 수 있는 정보를 제공함으로써, 사용자에게 어플리케이션 프로그램의 가상화 실행(예: 외부 서버의 컴퓨터 자원을 이용한 어플리케이션 프로그램 실행)에 관한 선택을 용이하게 할 수 있다. 다양한 실시예들에 따르면, 사용자가 어플리케이션 프로그램이 실행되는 외부 서버에서 실행되는 환경을 상황(예: 비용, 또는 전자 장치의 컴퓨팅 자원(또는 능력))에 따라 가변적으로 선택할 수 있도록 하여, 사용자의 상황에 맞는 선택에 용이성을 제공할 수 있다. 다양한 실시예들에 따르면, 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 연속적인 작업 환경을 제공하여, 전자 장치의 배터리 사용량 증가, 어플리케이션 프로그램의 빠른 처리, 및 전자 장치의 성능으로 인한 제약된 실행 환경을 극복할 수 있다.
도 1은 다양한 실시예들에 따른 네트워크 환경 내의 전자 장치의 블록도이다.
도 2는 다양한 실시예들에 따른 레거시 네트워크 통신 및 5G 네트워크 통신을 지원하기 위한 전자 장치의 블록도이다.
도 3은 다양한 실시예들에 따른 가상 모바일 환경에 기반하여 어플리케이션 프로그램을 실행하는 네트워크 환경을 도시하는 도면이다.
도 4는 다양한 실시예들에 따른 가상 모바일 환경에 기반하여 어플리케이션 프로그램을 실행하는 네트워크 환경의 예를 도시한다.
도 5는 다양한 실시예들에 따른 전자 장치와 외부 서버 간의 동작을 도시하는 흐름도이다.
도 6은 다양한 실시예들에 따른 전자 장치의 동작 방법을 도시하는 흐름도이다.
도 7은 다양한 실시예들에 따른 전자 장치에서 제공하는 사용자 인터페이스의 예를 설명하기 위한 도면이다.
도 8은 다양한 실시예들에 따른 외부 서버의 동작 방법을 도시하는 흐름도이다.
도 9는 다양한 실시예들에 따른 전자 장치의 동작 방법을 도시하는 흐름도이다.
도 10은 다양한 실시예들에 따른 전자 장치와 외부 서버 간의 동작을 도시하는 흐름도이다.
도 11은 다양한 실시예들에 따른 전자 장치의 동작 방법을 도시하는 흐름도이다.
도 12a 및 도 12b는 다양한 실시예들에 따른 전자 장치에서 제공하는 사용자 인터페이스의 예를 설명하기 위한 도면들이다.
도 13a 및 도 13b는 다양한 실시예들에 따른 전자 장치에서 제공하는 사용자 인터페이스의 예를 설명하기 위한 도면들이다.
도 1은 다양한 실시예들에 따른 네트워크 환경(100) 내의 전자 장치(101)의 블록도이다.
도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성 요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성 요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드(embedded)된 채 구현될 수 있다.
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성 요소(예: 하드웨어 또는 소프트웨어 구성 요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성 요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(volatile memory)(132)에 로드(load)하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(non-volatile memory)(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치(CPU, central processing unit) 또는 어플리케이션 프로세서(AP, application processor)), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치(GPU, graphic processing unit), 이미지 시그널 프로세서(ISP, image signal processor), 센서 허브 프로세서(sensor hub processor), 또는 커뮤니케이션 프로세서(CP, communication processor))를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)는 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(inactive)(예: 슬립(sleep)) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(active)(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성 요소들 중 적어도 하나의 구성 요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))과 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성 요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(OS, operating system)(142), 미들웨어(middleware)(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성 요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)는, 예를 들면, 마이크, 마우스, 키보드, 또는 디지털 펜(예: 스타일러스 펜)을 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커(speaker) 또는 리시버(receiver)를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)는, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서(pressure sensor))를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102))(예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서(gesture sensor), 자이로 센서(gyro sensor), 기압 센서(barometer sensor), 마그네틱 센서(magnetic sensor), 가속도 센서(acceleration sensor), 그립 센서(grip sensor), 근접 센서(proximity sensor), 컬러 센서(color sensor)(예: RGB(red, green, blue) 센서), IR(infrared) 센서, 생체 센서(biometric sensor), 온도 센서(temperature sensor), 습도 센서(humidity sensor), 또는 조도 센서(illuminance sensor)를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)의 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜(protocol)들을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD(secure digital) 카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(connection terminal)(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(178)는, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(haptic module)(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터(motor), 압전 소자(piezoelectric element), 또는 전기 자극 장치(electrical stimulation device)를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시예에 따르면, 전력 관리 모듈(188)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일 실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지(fuel cell)를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108)) 간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제1 네트워크(198)(예: 블루투스, Wi-Fi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN(wide area network))와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다.
무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI, international mobile subscriber identity))를 이용하여 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 하나의 안테나를 포함할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들을 포함할 수 있다. 이런 경우, 제1 네트워크(198) 또는 제2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC)가 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
상기 구성 요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고, 신호(예: 명령 또는 데이터)를 상호 간에 교환할 수 있다.
일 실시예에 따르면, 명령 또는 데이터는 제2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104) 간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다.
일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104 또는 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들(102, 104)에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들(102, 104)은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅(cloud computing), 분산 컴퓨팅(distributed computing), 또는 클라이언트-서버 컴퓨팅(client-server computing) 기술이 이용될 수 있다.
도 2는 다양한 실시예들에 따른 레거시 네트워크 통신 및 5G 네트워크 통신을 지원하기 위한 전자 장치(101)의 블록도(200)이다.
도 2를 참조하면, 전자 장치(101)는 제1 커뮤니케이션 프로세서(212), 제2 커뮤니케이션 프로세서(214), 제1 RFIC(222), 제2 RFIC(224), 제3 RFIC(226), 제4 RFIC(228), 제1 RFFE(radio frequency front end)(232), 제2 RFFE(234), 제1 안테나 모듈(242), 제2 안테나 모듈(244), 및 안테나(248)를 포함할 수 있다. 전자 장치(101)는 프로세서(120) 및 메모리(130)를 더 포함할 수 있다.
네트워크(199)는 제1 네트워크(292)와 제2 네트워크(294)를 포함할 수 있다. 다른 실시예에 따르면, 전자 장치(101)는 도 1에 기재된 부품들 중 적어도 하나의 부품을 더 포함할 수 있고, 네트워크(199)는 적어도 하나의 다른 네트워크를 더 포함할 수 있다. 일 실시예에 따르면, 제1 커뮤니케이션 프로세서(212), 제2 커뮤니케이션 프로세서(214), 제1 RFIC(222), 제2 RFIC(224), 제4 RFIC(228), 제1 RFFE(232), 및 제2 RFFE(234)는 무선 통신 모듈(192)의 적어도 일부를 형성할 수 있다. 다른 실시예에 따르면, 제4 RFIC(228)는 생략되거나, 제3 RFIC(226)의 일부로서 포함될 수 있다.
제1 커뮤니케이션 프로세서(212)는 제1 네트워크(292)와의 무선 통신에 사용될 대역의 통신 채널의 수립, 및 수립된 통신 채널을 통한 레거시 네트워크(legacy network) 통신을 지원할 수 있다. 다양한 실시예들에 따르면, 제1 네트워크(292)는 2세대(2G), 3G, 4G, 또는 LTE(long term evolution) 네트워크를 포함하는 레거시 네트워크일 수 있다.
제2 커뮤니케이션 프로세서(214)는 제2 네트워크(294)와의 무선 통신에 사용될 대역 중 지정된 대역(예: 약 6GHz ~ 약 60GHz)에 대응하는 통신 채널의 수립, 및 수립된 통신 채널을 통한 5G 네크워크 통신을 지원할 수 있다. 다양한 실시예들에 따르면, 제2 네트워크(294)는 3GPP에서 정의하는 5G 네트워크일 수 있다.
추가적으로, 일 실시예에 따르면, 제1 커뮤니케이션 프로세서(212) 또는 제2 커뮤니케이션 프로세서(214)는 제2 네트워크(294)와의 무선 통신에 사용될 대역 중 다른 지정된 대역(예: 약 6GHz 이하)에 대응하는 통신 채널의 수립, 및 수립된 통신 채널을 통한 5G 네크워크 통신을 지원할 수 있다. 일 실시예에 따르면, 제1 커뮤니케이션 프로세서(212)와 제2 커뮤니케이션 프로세서(214)는 단일(single) 칩 또는 단일 패키지 내에 구현될 수 있다. 다양한 실시예들에 따르면, 제1 커뮤니케이션 프로세서(212) 또는 제2 커뮤니케이션 프로세서(214)는 프로세서(120), 보조 프로세서(123), 또는 통신 모듈(190)과 단일 칩 또는 단일 패키지 내에 형성될 수 있다.
제1 RFIC(222)는, 송신 시에, 제1 커뮤니케이션 프로세서(212)에 의해 생성된 기저대역(baseband) 신호를 제1 네트워크(292)(예: 레거시 네트워크)에 사용되는 약 700MHz 내지 약 3GHz의 라디오 주파수(RF) 신호로 변환할 수 있다. 수신 시에는, RF 신호가 안테나(예: 제1 안테나 모듈(242))를 통해 제1 네트워크(292)(예: 레거시 네트워크)로부터 획득되고, RFFE(예: 제1 RFFE(232))를 통해 전처리(preprocess)될 수 있다. 제1 RFIC(222)는 전처리된 RF 신호를 제1 커뮤니케이션 프로세서(212)에 의해 처리될 수 있도록 기저대역 신호로 변환할 수 있다.
제2 RFIC(224)는, 송신 시에, 제1 커뮤니케이션 프로세서(212) 또는 제2 커뮤니케이션 프로세서(214)에 의해 생성된 기저대역 신호를 제2 네트워크(294)(예: 5G 네트워크)에 사용되는 Sub6 대역(예: 약 6GHz 이하)의 RF 신호(이하, 5G Sub6 RF 신호)로 변환할 수 있다. 수신 시에는, 5G Sub6 RF 신호가 안테나(예: 제2 안테나 모듈(244))를 통해 제2 네트워크(294)(예: 5G 네트워크)로부터 획득되고, RFFE(예: 제2 RFFE(234))를 통해 전처리될 수 있다. 제2 RFIC(224)는 전처리된 5G Sub6 RF 신호를 제1 커뮤니케이션 프로세서(212) 또는 제2 커뮤니케이션 프로세서(214) 중 대응하는 커뮤니케이션 프로세서에 의해 처리될 수 있도록 기저대역 신호로 변환할 수 있다.
제3 RFIC(226)는 제2 커뮤니케이션 프로세서(214)에 의해 생성된 기저대역 신호를 제2 네트워크(294)(예: 5G 네트워크)에서 사용될 5G Above6 대역(예: 약 6GHz ~ 약 60GHz)의 RF 신호(이하, 5G Above6 RF 신호)로 변환할 수 있다. 수신 시에는, 5G Above6 RF 신호가 안테나(예: 안테나(248))를 통해 제2 네트워크(294)(예: 5G 네트워크)로부터 획득되고 제3 RFFE(236)를 통해 전처리될 수 있다. 제3 RFIC(226)는 전처리된 5G Above6 RF 신호를 제2 커뮤니케이션 프로세서(214)에 의해 처리될 수 있도록 기저대역 신호로 변환할 수 있다. 일 실시예에 따르면, 제3 RFFE(236)는 제3 RFIC(226)의 일부로서 형성될 수 있다.
전자 장치(101)는, 일 실시예에 따르면, 제3 RFIC(226)와 별개로 또는 적어도 그 일부로서, 제4 RFIC(228)를 포함할 수 있다. 이런 경우, 제4 RFIC(228)는 제2 커뮤니케이션 프로세서(214)에 의해 생성된 기저대역 신호를 중간(intermediate) 주파수 대역(예: 약 9GHz ~ 약 11GHz)의 RF 신호(이하, IF 신호)로 변환한 뒤, 상기 IF 신호를 제3 RFIC(226)로 전달할 수 있다. 제3 RFIC(226)는 IF 신호를 5G Above6 RF 신호로 변환할 수 있다. 수신 시에, 5G Above6 RF 신호가 안테나(예: 안테나(248))를 통해 제2 네트워크(294)(예: 5G 네트워크)로부터 수신되고 제3 RFIC(226)에 의해 IF 신호로 변환될 수 있다. 제4 RFIC(228)는 IF 신호를 제2 커뮤니케이션 프로세서(214)가 처리할 수 있도록 기저대역 신호로 변환할 수 있다.
일 실시예에 따르면, 제1 RFIC(222)와 제2 RFIC(224)는 단일 칩 또는 단일 패키지의 적어도 일부로 구현될 수 있다. 일 실시예에 따르면, 제1 RFFE(232)와 제2 RFFE(234)는 단일 칩 또는 단일 패키지의 적어도 일부로 구현될 수 있다. 일 실시예에 따르면, 제1 안테나 모듈(242) 또는 제2 안테나 모듈(244) 중 적어도 하나의 안테나 모듈은 생략되거나 다른 안테나 모듈과 결합되어 대응하는 복수의 대역들의 RF 신호들을 처리할 수 있다.
일 실시예에 따르면, 제3 RFIC(226)와 안테나(248)는 동일한 서브스트레이트에 배치되어 제3 안테나 모듈(246)을 형성할 수 있다. 예를 들어, 무선 통신 모듈(192) 또는 프로세서(120)가 제1 서브스트레이트(예: main PCB)에 배치될 수 있다. 이런 경우, 제1 서브스트레이트와 별도의 제2 서브스트레이트(substrate)(예: sub PCB)의 일부 영역(예: 하면)에 제3 RFIC(226)가, 다른 일부 영역(예: 상면)에 안테나(248)가 배치되어, 제3 안테나 모듈(246)이 형성될 수 있다. 제3 RFIC(226)와 안테나(248)를 동일한 서브스트레이트에 배치함으로써 그 사이의 전송 선로의 길이를 줄이는 것이 가능하다. 이는, 예를 들면, 5G 네트워크 통신에 사용되는 고주파 대역(예: 약 6GHz ~ 약 60GHz)의 신호가 전송 선로에 의해 손실(예: 감쇄)되는 것을 줄일 수 있다. 이로 인해, 전자 장치(101)는 제2 네트워크(294)(예: 5G 네트워크)와의 통신의 품질 또는 속도를 향상시킬 수 있다.
일 실시예에 따르면, 안테나(248)는 빔포밍(beamforming)에 사용될 수 있는 복수개의 안테나 엘리먼트들(antenna elements)을 포함하는 안테나 어레이(antenna array)로 형성될 수 있다. 이런 경우, 제3 RFIC(226)는, 예를 들면, 제3 RFFE(236)의 일부로서, 복수개의 안테나 엘리먼트들에 대응하는 복수개의 위상 변환기(phase shifter)(238)들을 포함할 수 있다. 송신 시에, 복수개의 위상 변환기(238)들 각각은 대응하는 안테나 엘리먼트를 통해 전자 장치(101)의 외부(예: 5G 네트워크의 베이스 스테이션)로 송신될 5G Above6 RF 신호의 위상을 변환할 수 있다. 수신 시에, 복수개의 위상 변환기(238)들 각각은 대응하는 안테나 엘리먼트를 통해 상기 외부로부터 수신된 5G Above6 RF 신호의 위상을 동일한 또는 실질적으로 동일한 위상으로 변환할 수 있다. 이것은 전자 장치(101)와 상기 외부 간의 빔포밍을 통한 송신 또는 수신을 가능하게 한다.
제2 네트워크(294)(예: 5G 네트워크)는 제1 네트워크(292)(예: 레거시 네트워크)와 독립적으로 운영되거나(예: Stand-Alone(SA)), 연결되어 운영될 수 있다(예: Non-Stand Alone(NSA)). 예를 들면, 5G 네트워크에는 액세스 네트워크(예: 5G radio access network(RAN) 또는 next generation RAN(NG RAN))만 있고, 코어 네트워크(예: next generation core(NGC))는 없을 수 있다. 이런 경우, 전자 장치(101)는 5G 네트워크의 액세스 네트워크에 액세스한 후, 레거시 네트워크의 코어 네트워크(예: evolved packed core(EPC))의 제어 하에 외부 네트워크(예: 인터넷)에 액세스할 수 있다. 레거시 네트워크와 통신을 위한 프로토콜 정보(예: LTE 프로토콜 정보) 또는 5G 네트워크와 통신을 위한 프로토콜 정보(예: New Radio(NR) 프로토콜 정보)는 메모리(230)에 저장되어, 다른 부품(예: 프로세서(120), 제1 커뮤니케이션 프로세서(212), 또는 제2 커뮤니케이션 프로세서(214))에 의해 액세스될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치(101)는 다양한 형태의 장치가 될 수 있다. 전자 장치(101)는, 예를 들면, 휴대용 통신 장치(예: 스마트폰), 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치(wearable device), 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치(101)는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경(modifications), 균등물(equivalents), 또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성 요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다.
본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나", “A 또는 B 중 적어도 하나”, "A, B 또는 C", "A, B 및 C 중 적어도 하나" 및 “A, B, 또는 C 중 적어도 하나”와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제1", "제2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성 요소를 다른 해당 구성 요소와 구분하기 위해 사용될 수 있으며, 해당 구성 요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제1) 구성 요소가 다른(예: 제2) 구성 요소에 "기능적으로” 또는 “통신적으로"라는 용어와 함께 또는 이런 용어 없이, “커플드” 또는 “커넥티드”라고 언급된 경우, 그것은 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로(예: 유선으로), 무선으로, 또는 제3 구성 요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어(firmware)로 구현된 유닛(unit)을 포함할 수 있으며, 예를 들면, 로직(logic), 논리 블록(logic block), 부품(component), 또는 회로(circuit)의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(101))에 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들(instructions)을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러(compiler) 생성된 코드 또는 인터프리터(interpreter)에 의해 실행될 수 있는 코드(code)를 포함할 수 있다. 기기로 읽을 수 있는 저장 매체는, 비일시적(non-transitory) 저장 매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장 매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장 매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: CD-ROM, compact disc read only memory)의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성 요소들의 각각의 구성 요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성 요소들 중 하나 이상의 구성 요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성 요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성 요소들(예: 모듈 또는 프로그램)은 하나의 구성 요소로 통합될 수 있다. 이런 경우, 통합된 구성 요소는 상기 복수의 구성 요소들 각각의 구성 요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성 요소들 중 해당 구성 요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱(heuristic)하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 3은 다양한 실시예들에 따른 가상 모바일 환경에 기반하여 어플리케이션 프로그램을 실행하는 네트워크 환경을 도시하는 도면이다.
도 3에 도시한 바와 같이, 가상 모바일 환경(VMI, virtual mobile infrastructure)에 기반하여 어플리케이션 프로그램을 실행하는 네트워크 환경(300)은, 전자 장치(101)(또는 사용자 장치 또는 사용자 단말)와 외부 서버(201)(또는 원격 컴퓨팅 장치(remote computing device), 모바일 엣지 컴퓨팅(MEC, mobile edge computing) 서버, 원격 서버, 클라우드 서버(cloud server), 또는 VMI 모듈)를 포함할 수 있다.
다양한 실시예들에 따라, 전자 장치(101)는 프로세서(120)(예: 도 1의 프로세서(120)), 메모리(130)(예: 도 1의 메모리(130)), 디스플레이(310)(예: 도 1의 표시 장치(160)), 무선 통신 회로(320)(예: 도 1의 무선 통신 모듈(192))를 포함할 수 있다. 다양한 실시예들에 따른, 메모리(130)는 전자 장치(101)의 어플리케이션 프로그램(330)(이하, ‘제1 어플리케이션 프로그램(330)’이라 한다)을 포함할 수 있다. 일 실시예에 따른, 메모리(130)에 관하여 후술하는 도 4를 참조하여 설명된다.
다양한 실시예들에 따라, 전자 장치(101)의 프로세서(120)는 네트워크(예: 도 1 또는 도 2의 네트워크(199))를 통하여 통신하거나, 네트워크 내부에 있는 외부 서버(201)와 통신하고, 사용자 요청에 기반하여, 전자 장치(101)에 가상 모바일 환경을 실행할 수 있다. 일 실시예에 따라, 가상 모바일 환경은, 예를 들면, 외부 서버(201)에서 전자 장치(101)의 제1 어플리케이션 프로그램(330)과 적어도 일부 동일한 기능을 수행하는 외부 서버(201)의 어플리케이션 프로그램(380)(이하, ‘제2 어플리케이션 프로그램(380)’이라 한다)을 실행하고, 외부 서버(201)의 제2 어플리케이션 프로그램(380)을 실행하는 결과를 전자 장치(101)의 디스플레이(310)를 통해 사용자에게 제공하는 환경을 포함할 수 있다. 예를 들면, 가상 모바일 환경은 외부 서버(201)에서 실행되는 가상 장치(virtual device)(390)(또는 가상 머신(virtual machine))가 전자 장치(101)(예: 모바일 장치, 사용자 단말, 또는 데스크톱 장치)에서 제1 어플리케이션 프로그램(330)을 실행하는 것과 실질적으로 동일 또는 유사하게 제2 어플리케이션 프로그램(380)을 실행하여 그 결과를 전자 장치(101)를 통해 출력하거나, 전자 장치(101)에서 원격으로 외부 서버(201)의 제2 어플리케이션 프로그램(380)에 액세스(access)할 수 있는 환경을 포함할 수 있다. 일 실시예에 따라, 외부 서버(201)의 가상 장치(390)는, 예를 들면, 외부 서버(201)에 구비된 적어도 하나의 프로세서(370)에 의해 실행되는 소프트웨어(예: VDI, virtual desktop infrastructure)로 구현되거나, 또는 소프트웨어를 포함할 수 있다.
다양한 실시예들에 따르면, 프로세서(120)는, 무선 통신 회로(320)를 이용하여, 다양한 서비스 프로파일(service profiles)을 외부 서버(201)로부터 수신할 수 있다. 일 실시예에 따라, 프로세서(120)는 서비스 프로파일을 설정하기 위한 인터페이스(예: 사용자 인터페이스(UI, user interface), 또는 그래픽 사용자 인터페이스(GUI, graphical user interface))(이하, ‘프로파일 설정 인터페이스’라 한다)를 디스플레이(310)를 통해 표시할 수 있다. 일 실시예에 따라, 프로세서(120)는 프로파일 설정 인터페이스에 기반하여 사용자로부터 서비스 프로파일의 선택을 수신할 수 있고, 선택된 서비스 프로파일의 정보를 무선 통신 회로(320)를 통해 외부 서버(201)로 전송할 수 있다. 일 실시예에 따라, 프로세서(120)는 외부 서버(201)에서 전자 장치(101)에 의해 전송된 서비스 프로파일에 따라 정의된 컴퓨팅 자원(computing resource)을 이용하여 실행한 제2 어플리케이션 프로그램(380)의 실행에 관한 결과물(예: 비디오 및/또는 오디오 데이터(또는 정보))을 수신(예: 스트리밍(streaming) 수신(예: downstream))할 수 있다. 일 실시예에 따라, 프로세서(120)는 수신된 결과물을 그대로, 또는 추가적으로 처리(예: 디코딩(decoding))하여 출력 장치(예: 디스플레이(310) 및/또는 스피커)를 통해 사용자에게 제공할 수 있다.
다양한 실시예들에서, 컴퓨팅 자원은, 외부 서버(201)의 가상 장치(390)가 제2 어플리케이션 프로그램(380)을 실행할 때 이용하는 하드웨어 자원을 포함할 수 있다. 예를 들어, 하드웨어 자원은 적어도 하나의 프로세서(370)(예: AP, CPU, 또는 GPU) 또는 메모리(360)(예: 저장 장치(storage)(예: 명령 및/또는 데이터가 로드(load)되는 휘발성 메모리, 또는 가상 장치(390)가 처리하여 획득한 결과를 저장하는 비휘발성 메모리)를 포함할 수 있다. 일 실시예에 따라, 가상 장치(390)는 할당된 하드웨어 자원을 이용하여 제2 어플리케이션 프로그램(380)을 실행할 수 있다. 다양한 실시예들에서, 컴퓨팅 자원은, 외부 서버(201)(또는 네트워크)와 전자 장치(101) 간에 통신할 때 이용하는 네트워크 자원을 포함할 수 있다. 예를 들어, 네트워크 자원은, 네트워크의 타입(예: 3G, 4G, LTE, 또는 5G), 전자 장치(101)가 업로드 및/또는 다운로드 가능한 데이터 양(일 예로, 5G 40GB + unlimited 4G, 또는 unlimited 5G), 또는 네트워크 서비스 품질(QoS, quality of service)(예: 데이터 전송 속도(예: FPS(frame per second), 대역폭(bandwidth), 또는 지연 시간(latency))을 포함할 수 있다. 일 실시예에 따라, 외부 서버(201)(예: 외부 서버(201)의 프로세서(370))는 가상 장치(390)에 의해 실행된 결과를, 전자 장치(101)의 선택된 서비스 프로파일에 해당하는 네트워크 자원을 이용하여, 전자 장치(101)에 전송하도록 네트워크를 제어(또는 네트워크에 요청)할 수 있다.
다양한 실시예들에서, 서비스 프로파일은 사용 가능한 컴퓨팅 자원의 종류 및/또는 성능을 나타내는 정보를 포함할 수 있다. 예를 들면, 서비스 프로파일은 외부 서버(201)의 가상 장치(390)에 관한 리소스 정보를 포함할 수 있다. 일 실시예에 따라, 서비스 프로파일에 포함되는 리소스 정보는, 예를 들면, 제2 어플리케이션 프로그램(380)에 관한 처리 장치의 종류 및 개수, 저장 장치(예: 메모리(360))의 크기 및 입출력 속도, 또는 그래픽 가속기의 할당 유무 및 종류에 관한 정보 중 적어도 하나를 포함할 수 있다. 일 실시예에 따르면, 리소스는 정보는, 제2 어플리케이션 프로그램(380)이 병렬 처리가 가능한 경우 다수의 가상 장치들(390)에서 분산되어 처리 될 수 있는지 여부에 관한 정보를 더 포함할 수 있다. 일 실시예에 따르면, 서비스 프로파일은 해당 컴퓨팅 자원의 사용 요금제(예: 한달 사용료)를 나타내는 정보를 포함할 수 있다. 일 실시예에 따르면, 외부 서버(201)는 사용 가능한 컴퓨팅 자원의 종류 및/또는 성능을 다르게 보여주는 복수의 서비스 프로파일들을 생성하여 제공할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 전자 장치(101)에 설치되어 있는 어플리케이션 프로그램(예: 도 1의 프로그램(140)) 중에서 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 외부 서버(201)에서 실행 가능한(또는 서비스 가능한) 제1 어플리케이션 프로그램(330)을 식별할 수 있다. 일 실시예에 따라, 프로세서(120)가 제1 어플리케이션 프로그램이 있는지 식별하는 동작은, 예를 들면, 외부 서버(201)로 어플리케이션 리스트(application list)를 요청하고, 외부 서버(201)로부터 어플리케이션 리스트를 수신하여 확인할 수 있다. 일 실시예에 따라, 프로세서(120)는 외부 서버(201)에 어플리케이션 리스트를 요청할 때, 전자 장치(101)에 설치(install)된 어플리케이션 프로그램에 관한 어플리케이션 리스트를 포함하여 전송할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 가용한 서버(예: 외부 서버(201))를 스캔(scan)할 수 있다. 일 실시예에 따르면, 프로세서(120)는 지정된 시간 정보(예: 지정된 시간 간격, 또는 지정된 시간)에 기반하여 가용한 서버를 스캔할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체(또는 인디케이션)를 선택하는 사용자 입력을 수신하거나, 또는 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)의 실행을 외부 서버(201)에 요청하는 시점에 가용한 서버를 스캔할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)을 실행하는 동안에도 가용한 서버를 스캔할 수 있다. 일 실시예에 따라, 가용한 서버를 스캔(예: 외부 서버(201)에 대한 탐색(discovering))하는 동작은, 예를 들면, 네트워크(예: 기지국) 또는 트래킹 영역(TA, tracking area) 단위(예: 기지국의 셀(cell) 단위가 아닌, 기지국들의 그룹(또는 셀들의 그룹) 단위)로, 전자 장치(101)가 이동 시 연결 가능한 외부 서버(201)가 있는지 탐색하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)이 외부 서버(201)에서 실행 가능할 경우, 제1 어플리케이션 프로그램(330)의 아이콘 상에 관련 객체(또는 인디케이션)(예: 구름(또는 클라우드) 모양의 배지 이미지)를 표시할 수 있다. 일 실시예에 따라, 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 상에 객체를 제공할 때, 아이콘과 적어도 일부 영역을 겹쳐(또는 중첩하여) 제공할 수 있다. 일 실시예에 따르면, 프로세서(120)는 외부 서버(201)로부터 외부 서버(201)에서 실행 가능한 어플리케이션 프로그램 리스트를 수신하고, 어플리케이션 프로그램 리스트에 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)이 포함되어 있으면 객체를 표시할 수 있다. 일 실시예에 따르면, 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)은 제1 어플리케이션 프로그램(330)의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 어플리케이션 프로그램을 포함할 수 있다. 다른 실시예에 따르면, 프로세서(120)는 외부 서버(201)에 의해 제2 어플리케이션 프로그램(380)에 대한 인증(예: 제2 어플리케이션 프로그램(380)에 관한 사용 인증, 또는 접근 권한 인증)이 완료되는 경우, 외부 서버(201)에 의한 응답(예: ACK)에 기반하여 객체를 표시할 수 있다. 일 실시예에 따르면, 전자 장치(101)의 프로세서(120) 또는 외부 서버(201)의 프로세서(370)는 어플리케이션 프로그램에 관한 고유 정보(예: 어플리케이션 식별자(AID, application ID)에 기반하여 어플리케이션 프로그램들 간 대응 관계를 식별할 수 있다.
다양한 실시예들에서, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)의 실행 가능한 상황은, 예를 들면, 외부 서버(201)와 전자 장치(101) 간의 네트워크 상태(예: 지연시간, 대역폭)와, 외부 서버(201)의 가용 자원 상태와 같은 환경적인 요소에 기반하여 판단될 수 있다. 예를 들면, 제2 어플리케이션 프로그램(380)의 실행 가능한 상황은, 컴퓨팅 자원에 기반하여 판단될 수 있다. 일 실시예에 따르면, 객체는 사용자의 요금제, 사용자의 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))의 동기화 여부와 같은 전자 장치(101)의 상태에 관한 정보(예: 요금제 정보, 동기화 정보)를 포함하여 표시할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행할 수 있는 경우, 제1 어플리케이션 프로그램(330)에 관한 전자 장치(101)의 데이터와 제2 어플리케이션 프로그램(380)에 관한 외부 서버(201)의 데이터를 동기화 할 수 있다. 일 실시예에 따라, 데이터의 동기화는 전자 장치(101)에 어플리케이션 프로그램이 설치(install)되거나, 또는 전자 장치(101)에서 어플리케이션 프로그램이 실행되는 것과 같은 이벤트가 있을 때 수행될 수 있다. 예를 들면, 전자 장치(101)와 외부 서버(201) 간에 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))에 관한 데이터가 차이가 발생하는 경우 동기화를 수행할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 외부 서버(201)에서 대신하여 실행 가능한 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체(또는 인디케이션)에 대한 사용자 입력을 감지(또는 수신)하고, 사용자 입력에 따라 제1 어플리케이션 프로그램(330)을 전자 장치(101)에서 실행하거나, 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)의 실행을 외부 서버(201)에 요청)하거나, 또는 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스(예: 컨텍스트 메뉴(context menu))를 제공(또는 표시)할 수 있다.
일 실시예에 따라, 전자 장치(101)의 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체에 대한 제1 사용자 입력(예: 제1 어플리케이션 프로그램(330)의 실행과 관련된 사용자 입력(예: 터치, 더블 터치(double touch), 롱 터치))을 수신할 수 있다. 프로세서(120)는 제1 사용자 입력에 기반하여, 전자 장치(101)의 제1 어플리케이션 프로그램(330)을 실행하거나, 또는 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)을 실행하도록 하는 요청을 외부 서버(201)로 전송할 수 있다.
일 실시예에 따라, 전자 장치(101)의 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체에 대한 제2 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 제2 사용자 입력은 제1 사용자 입력과 다른 방식의 사용자 입력일 수 있다. 예를 들어, 제1 사용자 입력이 터치인 경우, 제2 사용자 입력은 롱 터치일 수 있다. 프로세서(120)는 제2 사용자 입력에 기반하여, 어플리케이션 프로그램에 관한 사용자 인터페이스(예: 컨텍스트 메뉴)를 표시할 수 있다. 일 실시예에 따르면, 어플리케이션 프로그램에 관한 사용자 인터페이스는, 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)과 관련된 사용자 인터페이스를 나타낼 수 있다. 예를 들면, 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스는 외부 서버(201)가 전자 장치(101)의 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)을 포함함을 지시하는 정보를 포함하며, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행하거나, 설정할 수 있는 메뉴(또는 옵션)를 제공하는 사용자 인터페이스를 포함할 수 있다. 일 실시예에 따라, 사용자 인터페이스(예: 컨텍스트 메뉴)는, 예를 들면, 제1 아이템(예: 원격지 실행(Run on Remote), 또는 서버 실행(Run on Server)), 및/또는 제2 아이템(예: 원격지 설정(Remote configuration), 또는 서버 설정(Server configuration))을 포함할 수 있다.
일 실시예에 따라, 사용자 인터페이스에서, 제1 아이템(예: 원격지 실행 아이템)은, 제2 어플리케이션 프로그램(380)이 실행될 환경을 선택할 수 있는 아이템일 수 있다. 일 실시예에 따라, 사용자 인터페이스에서, 제2 아이템(예: 원격지 서버 설정 아이템)은, 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행할 경우, 제2 어플리케이션 프로그램(380)을 실행할 환경(예: 서비스 프로파일(service profile))에 대한 설정을 할 수 있는 아이템일 수 있다. 일 실시예에 따르면, 사용자 인터페이스 상에 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행할 경우 얻게 되는 이득에 관한 정보(예: 제3 아이템)를 제공(또는 표시)하여, 사용자가 제공된 정보를 참조하여 제2 어플리케이션 프로그램(380)의 실행 환경을 선택하도록 할 수 있다. 예를 들면, 프로세서(120)는 사용자 인터페이스를 통해, "1시간 배터리 사용 시간 증가", 또는 "반응속도 30msec"와 같은 메시지를 제공할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 외부 서버(201)로 제2 어플리케이션 프로그램(380)에 관한 실행 요청 시에, 전자 장치(101)의 특성에 관한 특성 정보를 외부 서버(201)로 전송할 수 있다. 일 실시예에 따르면, 프로세서(120)는 전자 장치(101)의 화면 특성(예: 해상도, 컬러 뎁스(color depth)) 및/또는 하드웨어 특성(예: 지원되는 센서의 종류, 프로세서(120)의 능력, 또는 배터리 용량), 또는 네트워크 특성(예: 최대 속도, 지연 속도)과 같은 특성 정보(예: 전자 장치(101)에 관한 컴퓨팅 자원)를 외부 서버(201)에 전송할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는, 무선 통신 회로(320)를 이용하여, 외부 서버(201)에 제2 어플리케이션 프로그램(380)의 실행을 요청하고, 외부 서버(201)에서 실행되는 제2 어플리케이션 프로그램(380)의 실행에 관한 실행 결과물(예: 비디오 및/또는 오디오 데이터)을 외부 서버(201)로부터 수신할 수 있다. 일 실시예에 따라, 프로세서(120)는 외부 서버(201)로부터 수신된 결과물을 출력(예: 비디오 표시 및/또는 오디오 출력)할 수 있다(예: downstream). 일 실시예에 따르면, 외부 서버(201)는 제2 어플리케이션 프로그램(380)을 실행하는 결과(예: 비디오(또는 화면) 데이터)에 대한 렌더링(rendering)을 통해 사용자가 인지 가능한 데이터(예: 영상 정보)를 생성하고, 생성된 데이터를 전자 장치(101)로 전달(예: streaming)하고, 전자 장치(101)는 수신된 데이터를 출력할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)의 프로세서(120)는 외부 서버(201)에서 실행된 제2 어플리케이션 프로그램(380)에 관련된 이벤트를 감지하는 경우, 외부 서버(201)로 이벤트에 관한 처리를 요청할 수 있다. 예를 들면, 프로세서(120)는 감지된 이벤트에 대해, 외부 서버(201)를 통해 실행하는 제2 어플리케이션 프로그램(380)으로 전송할 수 있다(예: upstream). 일 실시예에 따라, 프로세서(120)는 터치 스크린(예: 도 1의 표시 장치(160)), 키보드, 또는 물리적 키(예: 도 1의 입력 장치(150))에 의한 입력 정보, 각종 센서(예: 도 1의 센서 모듈(176))에 의한 센서 정보, 마이크(예: 도 1의 입력 장치(150))에 의한 음성 입력 정보, 또는 카메라(예: 도 1의 카메라 모듈(180))에 의한 촬영 정보와 같은 입력 이벤트, 또는 조도 센서에 의한 조도 정보, 네트워크 신호 세기 정보, 위치 데이터 정보, 또는 전자 장치(101)의 온도 정보와 같은 환경 변경 이벤트를 감지할 수 있다. 일 실시예에 따르면, 프로세서(120)는 전자 장치(101)의 컨텍스트 정보(예: 전화 수신, 다른 어플리케이션 프로그램의 일부 기능 실행 결과)에 관련된 이벤트를 감지할 수 있다. 일 실시예에 따라, 프로세서(120)는 감지된 이벤트를 외부 서버(201)로 전송하는 경우, 전자 장치(101)의 고유 식별 정보(예: DID(device ID), IMEI(international mobile equipment identity), TMSI(temporary mobile subscriber identity), IMSI(international mobile station identity))도 포함하여 외부 서버(201)로 전송할 수 있다. 일 실시예에 따라, 프로세서(120)는 이벤트 전송에 대응되는 결과물을 외부 서버(201)로부터 수신할 수 있다.
다양한 실시예들에 따라, 전자 장치(101)의 무선 통신 회로(320)(예: 도 1의 무선 통신 모듈(192))는 무선 통신을 제공하도록 구성될 수 있다. 일 실시예에 따라, 무선 통신 회로(320)는 프로세서(120)와 작동적으로 연결되고, 제1 어플리케이션 프로그램(330)의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램(380)을 포함하는 외부 서버(201)와 연결할 수 있다. 일 실시예에 따라, 무선 통신 회로(320)는 외부 서버(201) 상에서 제2 어플리케이션 프로그램(380)이 실행되도록 하는 요청을 외부 서버(201)로 전송할 수 있다.
다양한 실시예들에 따라, 전자 장치(101)의 디스플레이(310)(예: 도 1의 표시 장치(160))는 제1 어플리케이션 프로그램(330) 및/또는 제2 어플리케이션 프로그램(380)과 관련된 사용자 인터페이스를 표시할 수 있다. 일 실시예에 따라, 디스플레이(310)는 프로세서(120)와 작동적으로 연결되고, 제1 어플리케이션 프로그램(330)의 제1 사용자 인터페이스를 표시하거나, 제2 어플리케이션 프로그램(380)과 관련된 제2 사용자 인터페이스를 표시할 수 있다. 일 실시예에 따라, 디스플레이(310)는 제1 어플리케이션 프로그램(330) 및/또는 제2 어플리케이션 프로그램(380)에 관한 데이터(예: 비디오 데이터)를 표시할 수 있다. 일 실시예에 따라, 디스플레이(310)는 제1 어플리케이션 프로그램(330)과 관련된 아이콘 및 제2 어플리케이션 프로그램(380)과 관련되고, 제1 어플리케이션 프로그램(330)의 아이콘과 적어도 일부 영역이 겹치는 인디케이션을 표시할 수 있다.
다양한 실시예들에 따라, 외부 서버(201)는 네트워크(예: 도 1 또는 도 2의 네트워크(199))를 통하여 전자 장치(101)와 통신하고, 전자 장치(101)의 요청에 기반하여, 전자 장치(101)에 가상 모바일 환경을 제공할 수 있다. 일 실시예에 따라, 외부 서버(201)는, 예를 들어, 네트워크)(예: 도 2의 제1 네트워크(292) 또는 제2 네트워크(294))의 기지국 또는 코어 네트워크(core network 내에 위치한 클라우드 서버일 수 있다. 예를 들어, 외부 서버(201)는 네트워크의 기지국(또는, 액세스 네트워크(access network))(예: 도 2의 제1 네트워크(292) 또는 제2 네트워크(294))의 기지국) 내에 위치한 모바일 엣지 컴퓨팅(MEC, mobile edge computing) 서버일 수 있다. 또는, MEC 서버는 네트워크의 가장 자리(edge)(예: 기지국(예: eNodeB, RNC(radio network controller))에 인접하게 위치할 수 있다.
다양한 실시예들에 따라, 외부 서버(201)는 프로세서(370), 메모리(360), 통신 회로(350)를 포함할 수 있다. 다양한 실시예들에 따른, 메모리(360)는 외부 서버(201)의 어플리케이션 프로그램(380)(이하, ‘제2 어플리케이션 프로그램(380)’이라 한다)과, 가상 장치(390)를 포함할 수 있다. 일 실시예에 따르면, 제2 어플리케이션 프로그램(380)은 전자 장치(101)의 제1 어플리케이션 프로그램(330)의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 어플리케이션 프로그램을 포함할 수 있다. 일 실시예에 따른, 메모리(360)와 메모리(360)에 포함된 가상 장치(390)에 관하여 후술하는 도 4를 참조하여 설명된다.
다양한 실시예들에 따르면, 외부 서버(201)의 프로세서(370)는 전자 장치(101)에서 선택된 서비스 프로파일에 기반하여 전자 장치(101)에 관한 가상 장치(virtual device)(390)를 할당(예: 자원 설정)하고, 할당된 가상 장치(390)를 실행할 수 있다. 예를 들면, 가상 장치(390)는 외부 서버(201)에 구비된 적어도 하나의 프로세서(370)에 의해 실행되는 소프트웨어(예: VDI)를 포함할 수 있다. 일 실시예에 따라, 프로세서(370)는, 가상 장치(390)로 하여금, 전자 장치(101)에서 선택된 서비스 프로파일에 포함된 컴퓨팅 자원(computing resource)을 이용하여, 제2 어플리케이션 프로그램(380)을 실행하도록 할 수 있다. 프로세서(370)는, 통신 회로(350)를 이용하여, 제2 어플리케이션 프로그램(380)의 실행에 관한 결과물(예: 오디오 및/또는 비디오 데이터(또는 정보))을 전자 장치(101)로 전송(예: 스트리밍(streaming))할 수 있다.
다양한 실시예들에 따르면, 외부 서버(201)의 프로세서(370)는, 제2 어플리케이션 프로그램(380) 별로, 실행될 때 요구되는 컴퓨팅 자원(예: 하드웨어 자원)을 결정할 수 있다. 또는, 프로세서(370)는, 제2 어플리케이션 프로그램(380)의 실행에 따른 결과물을 전자 장치(101)로 전송할 때 요구되는 컴퓨팅 자원(예: 네트워크 자원)을 결정할 수 있다. 예를 들어, 프로세서(370)는, 제2 어플리케이션 프로그램(380) 별로, 통계적으로 수집된 하드웨어 서비스 품질(예: 실행 시간(runtime) 및/또는 네트워크 서비스 품질(예: 지연 시간(latency))에 기반하여, 권장 사양(recommended specifications)으로 요구되는 컴퓨팅 자원과 최적 사양(optimum specifications)으로 요구되는 컴퓨팅 자원 중 적어도 하나를 결정할 수 있다.
일 실시예에 따르면, 외부 서버(201)의 프로세서(370)는, 가상 장치(390)로 하여금, 선택된 컴퓨팅 자원으로 제2 어플리케이션 프로그램(380)을 실행하도록 하고, 실행 시 획득된 데이터 전송 속도(예: FPS)와 관련된 제2 어플리케이션 프로그램(380) 별 통계 자료에 기반하여, 제2 어플리케이션 프로그램(380)을 실행할 때 요구되는 권장 사양과 최적 사양을 결정할 수 있다. 예를 들어, 통계 자료는 네트워크 자원의 서비스 품질을 나타내는 지표로서 지연 시간을 포함할 수 있다. 지연 시간은 데이터 패킷(packet)(예: 실행의 결과물)을 소스(예: 외부 서버(201))에서 목적지(예: 전자 장치(101))로 전송한 제1 시점과 패킷이 목적지(예: 전자 장치(101))에 도달한 제2 시점 사이의 시간으로 정의될 수 있다. 제2 시점은 패킷의 전송에 대한 목적지로부터의 응답(예: ACK(acknowledgment))을 통해 소스가 인지할 수 있다. 다른 예로, 지연 시간은 패킷(예: 소스가 전송한 패킷에 대한 목적지의 ACK)이 목적지에서 소스로 되돌아오는데 걸리는 시간이 더 추가되어 정의될 수도 있다. 일 실시예에 따르면, 통계 자료는 하드웨어 자원의 서비스 품질을 나타내는 지표로서 런타임(runtime)을 포함할 수 있다. 일 실시예에 따라, 외부 서버(201)는 런타임을 고려하여, 제2 어플리케이션 프로그램(380)을 실행할 때 요구되는 권장 사양과 최적 사양을 결정할 수 있다.
다양한 실시예들에 따르면, 외부 서버(201)의 프로세서(370)는, 전자 장치(101)에 의해 선택된 서비스 프로파일에 대응하는 컴퓨팅 자원에 기반하여 제2 어플리케이션 프로그램(380)에 관한 정보(예: 상태 정보)를 전자 장치(101)로 전송할 수 있다.
다양한 실시예들에 따르면, 외부 서버(201)의 프로세서(370)는 전자 장치(101)로부터 제2 어플리케이션 프로그램(380)에 관한 실행 요청을 수신하고, 실행 요청에 응답하여, 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)에 기반하여, 제2 어플리케이션 프로그램(380)의 실행을 위한 자원을 할당(또는 설정)할 수 있다.
다양한 실시예들에 따르면, 외부 서버(201)의 프로세서(370)는 전자 장치(101)(또는 제1 어플리케이션 프로그램(330))에 대해 미리 동기화된 데이터를 이용하여, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 동작하던 마지막 환경과 실질적으로 동일한 환경으로 제2 어플리케이션 프로그램(380)을 실행할 수 있다.
일 실시예에 따르면, 외부 서버(201)의 프로세서(370)는, 통신 회로(350)를 이용하여, 전자 장치(101)로부터 제2 어플리케이션 프로그램(380)의 실행 요청을 수신할 수 있고, 실행 요청과 함께 전자 장치(101)의 특성에 관한 특성 정보(또는 전자 장치(101)에 관한 컴퓨팅 자원)를 수신할 수 있다. 일 실시예에 따라, 프로세서(370)는 전자 장치(101)의 특성 정보, 네트워크의 특성 정보, 또는 서비스 프로파일 중 적어도 하나에 기반하여, 전자 장치(101)(또는 제2 어플리케이션 프로그램(380))에 맞는 가상 장치(390)를 구성(또는 할당)할 수 있다.
다양한 실시예들에 따르면, 외부 서버(201)의 프로세서(370)는, 통신 회로(350)를 이용하여, 외부 서버(201)에서 실행되는 제2 어플리케이션 프로그램(380)의 실행에 관한 결과물(예: 비디오 및/또는 오디오 데이터)을 전자 장치(101)로 전송할 수 있다. 일 실시예에 따라, 프로세서(370)는 제2 어플리케이션 프로그램(380)을 실행하는 동안, 전자 장치(101)로부터 제2 어플리케이션 프로그램(380)에 관한 전자 장치(101)의 이벤트를 수신하고, 수신된 이벤트에 기반하여 제2 어플리케이션 프로그램(380)을 전자 장치(101)에서 동작하는 것과 실질적으로 동일한 컨텍스트에서 기능을 수행(또는 처리)하고, 이에 대응되는 결과물을 생성하여 전자 장치(101)에 전송할 수 있다.
다양한 실시예들에 따라, 외부 서버(201)의 통신 회로(350)는 무선 통신을 제공하도록 구성될 수 있다. 일 실시예에 따라, 통신 회로(350)는 프로세서(370)와 작동적으로 연결되고, 제1 어플리케이션 프로그램(330)을 포함하는 전자 장치(101)와 연결할 수 있다. 일 실시예에 따라, 통신 회로(350)는 전자 장치(101)로부터 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)이 실행되도록 하는 요청을 수신할 수 있다. 일 실시예에 따라, 통신 회로(350)는 제2 어플리케이션 프로그램(380)의 실행에 관한 결괄물(예: 비디오 및/또는 오디오 데이터)을 전자 장치(101)로 전송할 수 있다.
도 4는 다양한 실시예들에 따른 가상 모바일 환경에 기반하여 어플리케이션 프로그램을 실행하는 네트워크 환경(300)의 예를 도시한다.
도 4에 도시한 바와 같이, 네트워크 환경(300)은 전자 장치(101)와 외부 서버(201)를 포함할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101) 및 외부 서버(201)는 도 3의 전자 장치(101) 및 외부 서버(201)와 적어도 일부가 동일할 수 있다.
도 4를 참조하면, 다양한 실시예들에 따른, 전자 장치(101)는, 프로세서(120)와 메모리(130)를 포함할 수 있다. 다양한 실시예들에 따른, 메모리(130)는 전자 장치(101)의 어플리케이션 프로그램(330)(이하, ‘제1 어플리케이션 프로그램(330)’이라 한다)과, 제1 어플리케이션 프로그램(330)에 대응하는 외부 서버(201)의 어플리케이션 프로그램(380)(이하, ‘제2 어플리케이션 프로그램(380)’이라 한다)을 외부 서버(201)에서 실행(예: 원격 실행, 가상 머신(예: VDI)을 통한 실행, 또는 가상화 실행)을 위한 가상 모듈(490)을 저장할 수 있다. 일 실시예에 따르면, 가상 모듈(490)은 명령어와 같은 소프트웨어(예: VDI)로 구현되거나, 또는 소프트웨어를 포함할 수 있다. 일 실시예에 따르면, 가상 모듈(490)은 메모리(130)에 저장되고, 프로세서(120)에 의해 실행될 수 있다.
일 실시예에 따르면, 제1 어플리케이션 프로그램(330)은 전자 장치(101)의 호스트 운영 체제(host OS) 내에 설치되거나, 호스트 운영 체제에 가상화된 가상 모듈(490)(예: 가상 머신 또는 클라이언트 운영 체제(client OS)) 내에 설치되거나, 또는 런타임 모듈(예: 어플리케이션 런타임 모듈(493))을 포함하는 컨테이너(container)에 설치되는 어플리케이션 프로그램을 포함할 수 있다. 일 실시예에 따르면, 제2 어플리케이션 프로그램(380)은 외부 서버(201)의 호스트 운영 체제 내에 설치되거나, 호스트 운영 체제에 가상화된 가상 장치(390)(예: 가상 머신 또는 클라이언트 운영 체제) 내에 설치되거나, 또는 런타임 모듈(예: 어플리케이션 런타임 모듈(463))을 포함하는 컨테이너(예: 컨테이너 엔진(450))에 설치되는 어플리케이션 프로그램을 포함할 수 있다.
일 실시예에 따르면, 제 1 어플리케이션 프로그램(330)에 대응하는 제 2 어플리케이션 프로그램(380)은 제 1 어플리케이션 프로그램(330)의 동작을 적어도 부분적으로 대신하여 실행할 수 있다.
일 실시예에 따라, 전자 장치(101)의 가상 모듈(490)은, 읽기 전용 데이터(read only data) 모듈(491), 사용자 수정 가능 데이터(user modifiable data) 모듈(492), 어플리케이션 런타임(application runtime) 모듈(493), 인터페이스 모듈(494), 스토리지 데이터 동기화(storage data sync) 모듈(495), 원격 리소스 프로비저닝 에이전트(remote resource provisioning agent)(496), 및 데이터 수신 모듈(497)을 포함할 수 있다. 다양한 실시예들이 이에 한정하는 것은 아니며, 구성 요소들의 적어도 일부가 병합되거나 다른 추가 모듈이 포함될 수 있다.
일 실시예에 따라, 읽기 전용 데이터 모듈(491)은 제1 어플리케이션 프로그램(330)이 설치되는 시점에 메모리(130)에 저장되는 변경되지 않는 데이터, 예를 들면, 제1 어플리케이션 프로그램(330)의 실행 프로그램, 또는 고유 리소스 파일과 같이, 사용자 별로 다르지 않고, 공통적으로 사용되는 데이터를 관리할 수 있다. 일 실시예에 따르면, 변경되지 않는 데이터는 메모리(130)에 저장될 수 있다.
일 실시예에 따라, 사용자 수정 가능 데이터 모듈(492)은 제1 어플리케이션 프로그램(330)이 사용자 별로 변경 가능한 데이터를 관리하고, 메모리(130)에 저장할 수 있다.
일 실시예에 따라, 어플리케이션 런타임 모듈(493)은 제1 어플리케이션 프로그램(330)이 동작하기 위한 환경을 구성할 수 있다. 일 실시예에 따르면, 어플리케이션 런타임 모듈(493)은 Java 가상 머신(VM, virtual machine)과 운영 체제(예: 안드로이드, 리눅스) 라이브러리 및/또는 시스템 서비스들을 구성할 수 있다.
일 실시예에 따라, 인터페이스 모듈(494)(예: device interface sync layer)은 사용자 입력 정보(예: 터치 정보, 센서 정보) 및/또는 전자 장치(101)의 고유 식별 정보를 외부 서버(201)로 전송할 수 있다. 일 실시예에 따르면, 인터페이스 모듈(494)은 전자 장치(101)에서의 사용자 입력과 관련하여 외부 서버(201)의 가상 장치(390)(예: 도 3의 가상 장치(390)) 상에서 동작하도록, 사용자 입력 정보를 외부 서버(201)로 전송할 수 있다.
일 실시예에 따라, 스토리지 데이터 동기화 모듈(495)은 외부 서버(201)와 제1 어플리케이션 프로그램(330)에 관한 데이터를 동기화 할 수 있다. 일 실시예에 따라, 데이터의 동기화는 전자 장치(101)에 제1 어플리케이션 프로그램(330)이 설치(install)되거나, 또는 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 실행되는 것과 같은 이벤트가 있을 때 수행될 수 있다. 일 실시예에 따라, 데이터의 동기화는 외부 서버(201)(예: 가상 장치(390))에서 제2 어플리케이션 프로그램(380)에 관한 실행의 결과물(예: 결과 데이터)을 생성하는 것과 같은 이벤트가 있을 때 수행될 수 있다. 일 실시예에 따라, 데이터의 동기화는 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행하는 동안 지정된 인터럽트(예: 지정된 시간, 지정된 동작(예: 저장, 또는 종료))에 기반하여 수행될 수 있다. 예를 들면, 스토리지 데이터 동기화 모듈(495)은 전자 장치(101)와 외부 서버(201) 간에 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))에 관한 데이터가 차이가 발생하는 경우 동기화를 수행할 수 있다. 일 실시예에 따라, 스토리지 데이터 동기화 모듈(495)은 외부 서버(201)로부터 동기화 데이터를 수신하고, 수신된 데이터를 메모리(130)에 저장할 수 있다. 다양한 실시예들에 따르면, 스토리지 데이터 동기화 모듈(495)은 전자 장치(101)의 제1 어플리케이션 프로그램(330)에 관한 데이터를 관리할 수 있다. 예를 들어, 제1 어플리케이션 프로그램(330)에 관한 데이터는, 사용자 입력에 기반하여 또는 자동으로 제1 어플리케이션 프로그램(330)을 실행함으로써 생성하여 메모리(130)에 저장한 것일 수 있고, 스토리지 데이터 동기화 모듈(495)에 의해 관리될 수 있다.
일 실시예에 따라, 원격 리소스 프로비저닝 에이전트(496)는 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행하기 위한 실행 요청을 처리할 수 있다. 일 실시예에 따라, 원격 리소스 프로비저닝 에이전트(496)는 제2 어플리케이션 프로그램(380)에 관한 실행 요청 시에, 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)(예: 서비스 프로파일에 정의된 컴퓨팅 자원으로, 예를 들면, 16 CPUs, 128GB memory, 64GB storage)을 기반으로 컴퓨팅 자원을 할당할 것을 외부 서버(201)로 요청할 수 있다.
일 실시예에 따라, 데이터 수신 모듈(497)(예: network frame buffer)(예: 디코더(decoder) 포함)은 외부 서버(201)에서 실행된 제2 어플리케이션 프로그램(380)의 결과물(예: 비디오 및/또는 오디오 데이터)을 수신(또는 streaming)할 수 있다.
일 실시예에 따라, 전자 장치(101)는, 제1 어플리케이션 프로그램(330) 또는 제2 어플리케이션 프로그램(380)에 관한 데이터(예: 비디오 및/또는 오디오 데이터)의 출력을 위한 출력 장치(예: 디스플레이(예: 도 3의 디스플레이(310), 스피커(예: 도 1의 음향 출력 장치(155))와 외부 서버(201)와 무선 통신을 제공하도록 구성된 무선 통신 회로(예: 도 3의 무선 통신 회로(320))를 포함할 수 있다.
다양한 실시예들에 따른, 외부 서버(201)는, 프로세서(370)와 메모리(360)를 포함할 수 있다. 다양한 실시예들에 따른, 메모리(360)는 전자 장치(101)의 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380), 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행하기 위한 가상 장치(390), 사용자 정보(user information) 모듈(410), 서비스 프로파일 매니저(service profile manager) 모듈(420), 리소스 프로비전(resource provision) 모듈(430), 스토리지 데이터 동기화 매니저(storage data sync manager) 모듈(440), 및 컨테이너 엔진(container engine)(450)을 저장할 수 있다.
다양한 실시예들에 따르면, 프로세서(370)와 메모리(360)는 컴퓨팅 자원으로서 가상 장치(390)(또는 가상 머신)(예: 소프트웨어(예: VDI)로 구현되거나, 또는 가상 머신 내에 설치된 소프트웨어)에 의해 이용될 수 있다. 예를 들어, 프로세서(370)는 모듈들(410~450) 및 가상 장치(390)와 작동적으로(operatively) 연결될 수 있다. 일 실시예에 따라, 프로세서(370)는 하나 또는 복수의 프로세서들을 포함할 수 있다. 메모리(360)는 프로세서(370)와 작동적으로 연결될 수 있다. 메모리(360)는, 복수의 프로세서들 중 적어도 하나가 실행할, 모듈들(410~450) 및 가상 장치(390)를 포함하는 인스트럭션들(instructions), 가상 장치(390)가 실행할 어플리케이션 프로그램들(예: 제2 어플리케이션 프로그램(380)), 및 어플리케이션 프로그램에 관한 실행의 결과물을 저장하도록 구성될 수 있다.
다양한 실시예들에 따르면, 사용자 정보 모듈(410)은 사용자의 기본 정보(예: 전자 장치(101)로부터 수신된 사용자(또는 가입자) 정보)를 메모리(360)에 저장할 수 있다.
다양한 실시예들에 따르면, 서비스 프로파일 매니저 모듈(420)은 사용자 별로, 해당 사용자 정보(예: 가입된 통신사, 이용 중인 요금제(예: 네트워크의 타입 또는 가용 데이터 양))에 기반하여, 사용 가능한 컴퓨팅 자원의 종류 및/또는 성능을 서비스 프로파일로 관리(예: 서비스 프로파일 생성, 변경, 또는 갱신)할 수 있다. 예를 들면, 서비스 프로파일 매니저 모듈(420)은 사용자 요청에 따라 컴퓨팅 자원의 종류를 변경(예: 추가 또는 삭제)하거나 컴퓨팅 자원의 해당 성능을 조정할 수 있다. 서비스 프로파일 매니저 모듈(420)은 서비스 프로파일들(예: 사용 가능한 컴퓨팅 자원의 종류 및/또는 성능을 다르게 보여주는 복수의 서비스 프로파일들)을 전자 장치(101)로 제공할 수 있고, 선택된 서비스 프로파일에 대한 정보를 전자 장치(101)로부터 수신할 수 있다. 서비스 프로파일 매니저 모듈(420)은 사용된 컴퓨팅 자원에 대한 요금 정산을 수행할 수 있다. 일 실시예에 따라, 서비스 프로파일 매니저 모듈(420)은 사용자(또는 전자 장치(101)) 별로 사용할 수 있는 컴퓨팅 자원의 종류 및/또는 성능에 대해 서비스 프로파일로 정의하고, 사용자(또는 전자 장치(101))가 요청한 컴퓨팅 자원의 종류 및/또는 성능을 사용할 권한(plan)이 있는지 여부를 인증하는 기능을 제공할 수 있다.
다양한 실시예들에 따르면, 리소스 프로비전 모듈(430)은 선택된 서비스 프로파일에 기반하여 가상 장치(예: 가상 장치(390))의 실행을 제어할 수 있다. 일 실시예에 따르면, 리소스 프로비전 모듈(430)은, 전자 장치(101)에 의해 선택된 서비스 프로파일에 정의된 컴퓨팅 자원의 종류 및/또는 성능을 서비스 프로파일 매니저 모듈(420)을 통해 확인할 수 있고, 가상 장치들(390) 중 하나(예: 구동되고 있지 않은 가상 장치)에 확인된 종류 및/또는 성능의 컴퓨팅 자원을 할당함으로써 제2 어플리케이션 프로그램(380)을 실행하도록 가상 장치(390)에 지시할 수 있다.
다양한 실시예들에 따르면, 스토리지 데이터 동기화 매니저 모듈(440)은 전자 장치(101)와 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))에 관한 데이터를 동기화 할 수 있다. 일 실시예에 따라, 데이터의 동기화는 전자 장치(101)에 제1 어플리케이션 프로그램(330)이 설치(install)되거나, 또는 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 실행되는 것과 같은 이벤트가 있을 때 수행될 수 있다. 일 실시예에 따라, 데이터의 동기화는 외부 서버(201)(예: 가상 장치(390))에서 제2 어플리케이션 프로그램(380)에 관한 실행의 결과물(예: 결과 데이터)을 생성하는 것과 같은 이벤트가 있을 때 수행될 수 있다. 일 실시예에 따라, 데이터의 동기화는 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330) 또는 제2 어플리케이션 프로그램(380))을 실행하는 동안 지정된 인터럽트(예: 지정된 시간, 지정된 동작(예: 저장, 또는 종료))에 기반하여 수행될 수 있다. 예를 들면, 스토리지 데이터 동기화 매니저 모듈(440)은 전자 장치(101)와 외부 서버(201) 간에 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))에 관한 데이터가 차이가 발생하는 경우 동기화를 수행할 수 있다. 일 실시예에 따라, 스토리지 데이터 동기화 매니저 모듈(440)은 전자 장치(101)로부터 동기화 데이터를 수신하고, 수신된 데이터는 사용자 수정 가능 데이터 모듈(462)에 의해 관리되고, 메모리(360)에 저장될 수 있다.
다양한 실시예들에 따르면, 스토리지 데이터 동기화 매니저 모듈(440)은 메모리(360)에 저장된 데이터를 관리할 수 있다. 예를 들어, 저장된 데이터는, 가상 장치(390)가 전자 장치(101)로부터 수신된 사용자 입력에 기반하여 또는 자동으로 제2 어플리케이션 프로그램(380)을 실행함으로써 생성하여 메모리(360)(예: 비휘발성 메모리)에 저장한 것일 수 있고, 스토리지 데이터 동기화 매니저 모듈(440)에 의해 관리될 수 있다. 예를 들어, 스토리지 데이터 동기화 매니저 모듈(440)은 전자 장치(101)로부터 수신된 데이터를 보관하다가 기 정해진 시간이 경과될 시 삭제할 수 있다. 다른 예로, 스토리지 데이터 동기화 매니저 모듈(440)은, 해당 서비스 프로파일에 정의된 메모리(360)(예: 비휘발성 메모리)의 할당 량을 확인하고, 해당 사용자 데이터의 보관 량이 할당 량을 상회할 경우, 보관된 일부 데이터를 자동으로 또는 사용자의 확인을 통해 삭제((예: 시기적으로 맨 처음 보관된 데이터를 우선적으로 삭제 또는 사용자에 의해 지정된 데이터를 삭제)할 수 있다.
다양한 실시예들에 따르면, 컨테이너 엔진(450)(또는 가상화 엔진(VE, virtual engine))은 외부 서버(201)에서 가상 장치(390)에 필요한 컴퓨팅 자원을 할당하고, 컴퓨팅 자원을 독립화 하여 실행시키는 환경을 제공할 수 있다. 일 실시예에 따르면, 컨테이너 엔진(450)은 가상 장치(390)를 실행시키는 하이퍼바이저(hypervisor)(예: 서로 다른 다수의 운영 체제(OS)를 외부 서버(201)에서 가동할 수 있도록 하는 소프트웨어), 운영 체제를 프로세스(process) 단위로 동작시키는 컨테이너(container)를 포함할 수도 있다.
다양한 실시예들에 따르면, 가상 장치(390)는 컴퓨팅 자원을 할당 받아 어플리케이션 프로그램(예: 제2 어플리케이션 프로그램(380))을 실행할 수 있다. 일 실시예에 따르면, 가상 장치(390)는 하나 또는 그 이상의 소프트웨어(또는 가상 머신 내에 설치된 소프트웨어)로 구현될 수 있다. 예를 들면, 가상 장치(390)는 제1 가상 장치, 제2 가상 장치, 또는 제3 가상 장치와 같이 복수로 구현될 수 있다. 일 실시예에 따라, 제1 가상 장치는 제1 서비스 프로파일에 정의된 컴퓨팅 자원을 이용하여 해당 어플리케이션 프로그램을 실행할 수 있고, 제2 가상 장치는 제2 서비스 프로파일에 정의된 컴퓨팅 자원을 이용하여 관련 어플리케이션 프로그램을 실행할 수 있고, 제3 가상 장치는 제3 서비스 프로파일에 정의된 컴퓨팅 자원을 이용하여 관련 어플리케이션 프로그램을 실행할 수 있다.
일 실시예에 따르면, 제1 서비스 프로파일, 제2 서비스 프로파일, 및 제3 서비스 프로파일은 동일한 전자 장치(101)가 다른 어플리케이션 프로그램의 실행을 위해 선택한 것일 수 있다. 예를 들어, 제1 서비스 프로파일, 제2 서비스 프로파일, 및 제3 서비스 프로파일은 동일할 수 있고, 이에 따라, 제1 가상 장치, 제2 가상 장치, 및 제3 가상 장치는 동일한 컴퓨팅 자원을 이용하여 각각 다른 어플리케이션 프로그램을 실행할 수 있다. 다른 예로, 제1 서비스 프로파일, 제2 서비스 프로파일, 및 제3 서비스 프로파일은 다를 수 있고, 이에 따라, 제1 가상 장치, 제2 가상 장치, 및 제3 가상 장치에 각각 할당된 컴퓨팅 자원의 성능 및/또는 종류가 다를 수 있다. 예를 들어, 외부 서버(201)는, 제1 가상 장치에 할당된 프로세서의 종류, 프로세서의 개수, 휘발성 메모리의 할당 량, 비휘발성 메모리의 할당 량, 또는 대역폭 중 적어도 하나를 다르게 하여 제2 가상 장치에 할당할 수 있다. 이에 따라, 가상 장치들은, 다른 어플리케이션 프로그램을 실행할 시, 서로 다른 성능을 발휘할 수 있다.
일 실시예에 따르면, 제1 서비스 프로파일, 제2 서비스 프로파일, 및 제3 서비스 프로파일은 다른 전자 장치들이 동일한(또는 다른) 어플리케이션 프로그램의 실행을 위해 선택한 것일 수 있다. 예를 들어, 제1 전자 장치와 제2 전자 장치가 동일한(또는 다른) 서비스 프로파일을 선택함으로써, 제1 가상 장치와 제2 가상 장치가, 동시에(또는 다른 시간대에), 동일한(또는 다른) 컴퓨팅 자원을 이용하여 동일한(또는 다른) 어플리케이션 프로그램을 실행할 수 있다.
다양한 실시예들에 따르면, 가상 장치(390)는, 예를 들면, 읽기 전용 데이터(read only data) 모듈(461), 사용자 수정 가능 데이터(user modifiable data) 모듈(462), 어플리케이션 런타임(application runtime) 모듈(463), 인터페이스 모듈(464), 볼륨 마운트(volume mount) 모듈(465), 및 데이터 전송 모듈(466)을 포함할 수 있다.
일 실시예에 따라, 읽기 전용 데이터 모듈(461)은 제2 어플리케이션 프로그램(380)이 설치되는 시점에 메모리(360)에 저장되는 변경되지 않는 데이터, 예를 들면, 제2 어플리케이션 프로그램(380)의 실행 프로그램, 또는 고유 리소스 파일과 같이, 사용자 별로 다르지 않고, 공통적으로 사용되는 데이터를 관리할 수 있다. 일 실시예에 따르면, 변경되지 않는 데이터는 메모리(360)에 저장될 수 있다.
일 실시예에 따라, 사용자 수정 가능 데이터 모듈(462)은 제2 어플리케이션 프로그램(380)이 사용자 별로 변경 가능한 데이터를 관리하고, 메모리(360)에 저장할 수 있다.
일 실시예에 따라, 어플리케이션 런타임 모듈(463)은 제2 어플리케이션 프로그램(380)이 동작하기 위한 환경을 구성할 수 있다. 일 실시예에 따르면, 어플리케이션 런타임 모듈(463)은 Java 가상 머신과 운영 체제(예: 안드로이드, 리눅스) 라이브러리 및/또는 시스템 서비스들을 구성할 수 있다.
일 실시예에 따라, 인터페이스 모듈(464)(예: device interface sync layer)은 전자 장치(101)로부터 수신된 사용자 입력 정보(예: 터치 정보, 센서 정보) 및/또는 전자 장치(101)의 고유 식별 정보를 가상 장치(390)의 다른 구성 요소(예: 읽기 전용 데이터 모듈(461))로 전달 할 수 있다. 이에 따라, 가상 장치(390)는 할당된 컴퓨팅 자원을 이용하여, 수신된 사용자 입력에 대응하는 제2 어플리케이션 프로그램(380)의 기능 및/또는 서비스를 실행할 수 있다.
일 실시예에 따라, 볼륨 마운트 모듈(465)은 제2 어플리케이션 프로그램(380)의 데이터를 유지하기 위한 볼륨(volume)을 생성하여 다른 구성 요소(예: 읽기 전용 데이터 모듈(461), 사용자 수정 가능 데이터 모듈(462))로 마운트(mount)할 수 있다. 일 실시예에 따르면, 볼륨 마운트 모듈(465)은 제2 어플리케이션 프로그램(380)이 동작 시에 사용자 데이터를 동일한 위치(예: 폴더, 파일)에 마운트 할 수 있다.
일 실시예에 따라, 데이터 전송 모듈(466)(예: network frame buffer)(예: 엔코더(encoder) 포함)은 가상 장치(390)에 의해 실행된 제2 어플리케이션 프로그램(380)의 결과물(예: 비디오 및/또는 오디오 데이터)을 전자 장치(101)로 전송(또는 streaming)할 수 있다.
일 실시예에 따라, 외부 서버(201)는, 서비스 프로파일에 정의된 컴퓨팅 자원에 대한 사용 요금을 결정하는 요금 정책 모듈, 또는 가상 장치(390)의 동작에 필요한 정보를 저장 및 관리할 수 있는 인스턴스 매니저 모듈, 및 전자 장치(101)와 무선 통신을 제공하도록 구성된 통신 회로(예: 무선 통신 회로)를 더 포함할 수 있다.
다양한 실시예들에 따른 전자 장치(101)는, 디스플레이(예: 도 1의 표시 장치(160)), 무선 통신을 제공하도록 구성된 무선 통신 회로(예: 도 1의 통신 모듈(190), 도 2의 무선 통신 모듈(192)), 상기 디스플레이 및 상기 무선 통신 회로와 작동적으로 연결된 적어도 하나의 프로세서(예: 도 1 또는 도 2의 프로세서(120)), 및 상기 프로세서(120)와 작동적으로 연결되고, 제1 사용자 인터페이스를 포함하는 제1 어플리케이션 프로그램을 저장하도록 구성되는 메모리(예: 도 1의 메모리(130))를 포함하고, 상기 메모리(130)는, 실행 시에, 상기 적어도 하나의 프로세서(120)가, 상기 무선 통신 회로를 통해, 상기 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버(201)와 연결하고, 상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 상기 디스플레이 상에 상기 제1 어플리케이션 프로그램의 상기 제1 사용자 인터페이스를 표시하고, 상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하도록 하는 인스트럭션들을 저장할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 외부 서버(201)와 연결할 때 또는 연결한 후에, 상기 외부 서버(201)가 상기 제2 어플리케이션 프로그램을 포함함을 지시하는 정보를 수신하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 디스플레이 상에, 상기 제1 어플리케이션 프로그램과 관련된 아이콘(예: 도 7의 아이콘(710)) 및 상기 제2 어플리케이션 프로그램과 관련되고, 상기 아이콘과 적어도 일부 영역이 겹치는 인디케이션(예: 도 7의 객체(720))을 표시하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제1 사용자 입력을 수신하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제2 사용자 입력을 수신하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 제2 사용자 인터페이스를 통해 제3 사용자 입력을 수신하고, 상기 제3 사용자 입력에 적어도 일부 기반하여, 상기 무선 통신 회로를 통해, 상기 외부 서버(201) 상에서 상기 제2 어플리케이션 프로그램이 실행되도록 하는 요청을 상기 외부 서버(201)로 전송하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 전자 장치(101)의 상기 제1 어플리케이션 프로그램에 관한 제1 데이터와, 상기 외부 서버(201)의 상기 제2 어플리케이션 프로그램에 관한 제2 데이터 간에 데이터 동기화를 수행하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 전자 장치(101) 상에서 상기 제1 어플리케이션 프로그램을 실행하고, 상기 제1 어플리케이션 프로그램을 실행하는 동안, 상기 제1 어플리케이션 프로그램에 관한 실행 가능한 외부 서버(201)를 스캔하고, 상기 외부 서버(201)의 스캔하는 결과에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 객체(예: 도 12b의 객체(1200))를 표시하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 상기 객체에 관련된 사용자 입력을 수신하고, 상기 사용자 입력에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 상태 정보를 포함하는 사용자 인터페이스(예: 도 13a의 사용자 인터페이스(1310), 도 13b의 사용자 인터페이스(1320))를 표시하도록 할 수 있다.
다양한 실시예들에 따르면, 상기 인스트럭션들은, 상기 프로세서(120)가, 기지국 내에 또는 상기 기지국과 연결된 코어 네트워크 내에 배치되는 상기 외부 서버(201)와 연결하도록 할 수 있다.
도 5는 다양한 실시예들에 따른 전자 장치(101)와 외부 서버(201) 간의 동작을 도시하는 흐름도이다.
일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 전자 장치(101)의 적어도 하나의 프로세서(120)(예: 프로세싱 회로를 포함하는 적어도 하나의 프로세서), 또는 메모리(130)에 저장되고, 실행 시에, 프로세서(120)가 동작하도록 하는 인스트럭션들에 의해 실행될 수 있다. 일 실시예에 따라, 외부 서버(201)에서 수행하는 동작들은, 외부 서버(201)의 적어도 하나의 프로세서(370)(예: 프로세싱 회로를 포함하는 적어도 하나의 프로세서), 또는 메모리(380)에 저장되고, 실행 시에, 프로세서(370)가 동작하도록 하는 인스트럭션들에 의해 실행될 수 있다.
도 5를 참조하면, 일 실시예에 따라, 동작 501에서, 전자 장치(101)는 어플리케이션 프로그램(예: 도 3 또는 도 4의 제1 어플리케이션 프로그램(330))의 상태를 체크할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 외부 서버(201)를 스캔하고, 어플리케이션 프로그램의 실행을 위한 가용한 서버가 있는지 여부를 판단할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 전자 장치(101) 내에 설치된 적어도 하나의 어플리케이션 프로그램에 대하여 외부 서버(201)에서 실행(예: 전자 장치(101)의 어플리케이션 프로그램(예: 도3 또는 도 4의 제1 어플리케이션 프로그램(330))에 대응하는 외부 서버(201)의 어플리케이션 프로그램(예: 도 3 또는 도 4의 제2 어플리케이션(380)) 실행)(예: 가상화 실행)이 가능한지 여부를 체크할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 어플리케이션 프로그램(이하, ‘제1 어플리케이션 프로그램(330)’이라 한다)이 전자 장치(101)에 설치(install)되는 시점에, 제1 어플리케이션 프로그램(330)과 관련된 외부 서버(201)의 어플리케이션 프로그램(이하, ‘제2 어플리케이션 프로그램(380)’이라 한다)이 외부 서버(201)에서 실행 가능한지 여부를 체크할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)을 외부 서버(201)에서 실행하는 사용자 입력을 수신(또는 감지)하는 경우, 제1 어플리케이션 프로그램(330)과 대응되는 제2 어플리케이션 프로그램(380)이 외부 서버(201)에서 실행 가능한지 여부를 체크할 수 있다. 일 실시예에 따라, 제1 어플리케이션 프로그램(330)의 상태를 체크하는 동작은, 제1 어플리케이션 프로그램(330)이, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)으로 대신하여 실행이 가능한 어플리케이션 프로그램(예: 전자 장치(101) 또는 외부 서버(201)에서 실행 가능한 하이브리드(hybrid) 어플리케이션 프로그램, 또는 외부 서버(201)를 통해서만 실행되는 가상화(virtualization) 어플리케이션)인지 여부를 판단하는 동작을 포함할 수 있다. 예를 들면, 제1 어플리케이션 프로그램(330)의 상태를 체크하는 동작은, 하이브리드 어플리케이션 프로그램에 대해 수행될 수 있다.
일 실시예에 따라, 동작 503에서, 전자 장치(101)는 상태 정보를 표시할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)과 관련된 제2 어플리케이션 프로그램(380)이 외부 서버(201)에 의해 실행 가능한 경우, 제1 어플리케이션 프로그램(330)의 아이콘 상에 지정된 객체(또는 인디케이션)(예: 구름(또는 클라우드) 모양의 배지 이미지)를 표시할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 어플리케이션 프로그램(330)의 아이콘 상에 객체를 표시할 때, 아이콘과 적어도 일부 영역을 겹쳐(또는 중첩하여) 제공할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 외부 서버(201)로부터 외부 서버(201)에서 실행 가능한 어플리케이션 프로그램 리스트를 수신하고, 어플리케이션 프로그램 리스트에 제1 어플리케이션 프로그램(330)이 포함되어 있으면 객체를 표시할 수 있다. 다른 실시예에 따르면, 전자 장치(101)는 외부 서버(201)에 의해 제1 어플리케이션 프로그램(330)에 대한 인증이 완료되는 경우, 외부 서버(201)에 의한 응답(예: ACK)에 기반하여 객체를 표시할 수 있다. 일 실시예에 따르면, 전자 장치(101) 또는 외부 서버(201)는 어플리케이션 프로그램에 관한 고유 정보(예: 어플리케이션 식별자(AID, application ID)에 기반하여 어플리케이션 프로그램들 간 대응 관계를 식별할 수 있다. 일 실시예에 따라, 아이콘 상에 객체가 표시되는 예시가 후술하는 도면을 참조하여 설명된다. 다양한 실시예들에서, 어플리케이션 프로그램이 외부 서버(201)에서 실행 가능한 상황은, 예를 들면, 외부 서버(201)와 전자 장치(101) 간의 네트워크 상태(예: 지연시간, 대역폭)와, 외부 서버(201)의 가용 자원 상태와 같은 환경적인 요소에 기반하여 판단될 수 있다. 예를 들면, 어플리케이션 프로그램의 실행 가능한 상황은, 컴퓨팅 자원에 기반하여 판단될 수 있다.
일 실시예에 따라, 동작 505에서, 전자 장치(101)는 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))에 관한 데이터를 외부 서버(201)와 동기화 할 수 있다. 일 실시예에 따라, 전자 장치(101)와 외부 서버(201)는, 어플리케이션 프로그램에 관한 서로 간의 데이터(예: 전자 장치(101)에 저장된 제1 어플리케이션 프로그램(330)에 관한 제1 데이터와 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)에 관한 제2 데이터)가 차이가 있는 경우 동기화를 수행할 수 있다.
일 실시예에 따라, 동작 507에서, 전자 장치(101)는 어플리케이션 프로그램에 관한 실행을 감지할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체(또는 인디케이션)에 대한 사용자 입력을 수신하고, 사용자 입력에 따라 제1 어플리케이션 프로그램(330)을 전자 장치(101)에서 실행하거나, 제1 어플리케이션 프로그램(330)과 관련된 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체에 대한 제1 사용자 입력(예: 터치, 더블 터치, 롱 터치)을 수신할 수 있다. 전자 장치(101)는 제1 사용자 입력에 기반하여, 전자 장치(101)의 제1 어플리케이션 프로그램(330)을 실행할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체에 대한 제2 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 제2 사용자 입력은 제1 사용자 입력과 다른 방식의 사용자 입력일 수 있다. 예를 들어, 제1 사용자 입력이 터치인 경우, 제2 사용자 입력은 롱 터치일 수 있다. 전자 장치(101)는 제2 사용자 입력에 기반하여, 제1 어플리케이션 프로그램(330)과 관련된 외부 서버(201)의 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스(예: 컨텍스트 메뉴)를 표시할 수 있다. 일 실시예에 따르면, 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스는, 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)과 관련된 사용자 인터페이스를 나타낼 수 있다. 예를 들면, 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스는 외부 서버(201)가 전자 장치(101)의 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)을 포함하며, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행하거나, 설정할 수 있는 메뉴(또는 옵션)를 제공하는 사용자 인터페이스를 포함할 수 있다. 일 실시예에 따라, 전자 장치(101)는 사용자 인터페이스(예: 컨텍스트 메뉴)에서 제2 어플리케이션 프로그램(380)의 외부 서버(201)에서 실행하는 아이템을 선택하는 제3 사용자 입력에 기반하여, 제2 어플리케이션 프로그램(380)의 외부 서버(201)에서 실행을 판단할 수 있다.
일 실시예에 따라, 동작 509에서, 전자 장치(101)는 제2 어플리케이션 프로그램(380)의 실행에 관한 실행 요청을 외부 서버(201)로 전송할 수 있다. 예를 들면, 전자 장치(101)는 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)을 실행하도록 하는 요청을 외부 서버(201)로 전송할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 외부 서버(201)로 제2 어플리케이션 프로그램(380)에 관한 실행 요청 시에, 전자 장치(101)의 다양한 특성에 관한 특성 정보를 외부 서버(201)로 전송할 수 있다. 일 실시예에 따라, 전자 장치(101)의 특성 정보는, 예를 들면, 전자 장치(101)의 화면 특성(예: 해상도, 컬러 뎁스(color depth)) 및/또는 하드웨어 특성(예: 지원되는 센서의 종류, 프로세서의 능력, 또는 배터리 용량), 또는 네트워크 특성(예: 최대 속도, 지연 속도)과 같은 정보를 포함할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제2 어플리케이션 프로그램(380)에 관한 실행 요청 시에, 선택된 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)을 외부 서버(201)로 전송할 수 있다. 다양한 실시예들에서, 서비스 프로파일은 사용 가능한 컴퓨팅 자원의 종류 및/또는 성능을 나타내는 정보를 포함할 수 있다. 예를 들면, 서비스 프로파일은 외부 서버(201)의 가상 장치(예: 도 3 또는 도 4의 가상 장치(390))에 관한 리소스 정보를 포함할 수 있다. 일 실시예에 따라, 서비스 프로파일에 포함되는 리소스 정보는, 예를 들면, 제2 어플리케이션 프로그램(380)에 관한 처리 장치의 종류 및 개수, 저장 장치(예: 메모리)의 크기 및 입출력 속도, 또는 그래픽 가속기의 할당 유무 및 종류에 관한 정보를 포함할 수 있다.
일 실시예에 따라, 동작 511에서, 외부 서버(201)는 제2 어플리케이션 프로그램(380)의 실행 요청에 기반하여, 제2 어플리케이션 프로그램(380)에 대한 컴퓨팅 자원을 할당할 수 있다. 일 실시예에 따라, 외부 서버(201)는 전자 장치(101)로부터 수신된 서비스 프로파일에 기반하여 컴퓨팅 자원을 할당할 수 있다. 예를 들면, 외부 서버(201)는 전자 장치(101)의 제2 어플리케이션 프로그램(380)에 관한 실행 요청에 따라, 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)에 기반하여, 제2 어플리케이션 프로그램(380)의 실행을 위한 자원을 할당(또는 설정)할 수 있다. 다양한 실시예들에서, 컴퓨팅 자원은, 예를 들면, 외부 서버(201)의 가상 장치(예: 도 3 또는 도 4의 가상 장치(390))가 제2 어플리케이션 프로그램(380)을 실행할 때 이용하는 하드웨어 자원을 포함할 수 있다. 예를 들어, 하드웨어 자원은 적어도 하나의 프로세서(예: AP, CPU, 또는 GPU) 또는 저장 장치(storage)(예: 명령 및/또는 데이터가 로드(load)되는 휘발성 메모리, 또는 가상 장치가 처리하여 획득한 결과를 저장하는 비휘발성 메모리)를 포함할 수 있다. 다양한 실시예들에서, 컴퓨팅 자원은, 외부 서버(201)와 전자 장치(101) 간에 통신할 때 이용하는 네트워크 자원을 포함할 수 있다. 예를 들어, 네트워크 자원은, 네트워크의 타입(예: 3G, 4G, LTE, 또는 5G), 전자 장치(101)가 업로드 및/또는 다운로드 가능한 데이터 양(일 예로, 5G 40GB + unlimited 4G, 또는 unlimited 5G), 또는 네트워크 서비스 품질(QoS, quality of service)(예: 데이터 전송 속도(예: FPS(frame per second), 대역폭(bandwidth), 또는 지연 시간(latency))을 포함할 수 있다.
일 실시예에 따라, 동작 513에서, 외부 서버(201)는 제2 어플리케이션 프로그램(380)을 실행할 수 있다. 일 실시예에 따라, 외부 서버(201)는 전자 장치(101)의 특성 정보, 네트워크의 특성 정보, 또는 서비스 프로파일에 적어도 기반하여, 전자 장치(101)(또는 제2 어플리케이션 프로그램(380))에 맞는 가상 장치를 구성(또는 할당)하고, 해당 가상 장치에 할당된 하드웨어 자원을 이용하여 제2 어플리케이션 프로그램(380)을 실행할 수 있다. 다양한 실시예들에 따르면, 외부 서버(201)는 전자 장치(101)(또는 제2 어플리케이션 프로그램(380))에 대해 미리 동기화된 데이터를 이용하여, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 동작하던 마지막 환경과 실질적으로 동일한 환경으로 제2 어플리케이션 프로그램(380)을 실행할 수 있다.
일 실시예에 따라, 동작 515에서, 외부 서버(201)는 제2 어플리케이션 프로그램(380)의 실행에 관련된 실행 데이터(예: 오디오 및/또는 비디오 데이터(또는 정보))를 전자 장치(101)로 전송할 수 있다. 일 실시예에 따르면, 외부 서버(201)는 전자 장치(101)에 의해 전송된 서비스 프로파일에 따라 정의된 컴퓨팅 자원(computing resource)을 이용하여 실행한 제2 어플리케이션 프로그램(380)의 실행 결과로서 획득된 결과물(예: 오디오 및/또는 비디오 데이터)을 전자 장치(101)로 전송(예: streaming) 할 수 있다.
일 실시예에 따라, 동작 517에서, 전자 장치(101)는 외부 서버(201)로부터 실행 데이터를 수신하고, 수신된 실행 데이터를 출력할 수 있다. 일 실시예에 따라, 전자 장치(101)는 수신된 실행 데이터를 그대로, 또는 추가적으로 처리(예: 디코딩(decoding))하여 출력 장치(예: 디스플레이 및/또는 스피커)를 통해 사용자에게 제공할 수 있다.
일 실시예에 따라, 동작 519에서, 전자 장치(101)는 이벤트를 감지할 수 있다. 예를 들면, 전자 장치(101)는 터치, 센서, 또는 카메라를 포함한 다양한 입력 장치에 의한 입력 데이터에 기반하여 이벤트를 감지할 수 있다. 일 실시예에 따라, 전자 장치(101)는 터치 스크린(예: 도 1의 표시 장치(160)), 키보드, 또는 물리적 키(예: 도 1의 입력 장치(150))에 의한 입력 정보, 각종 센서(예: 도 1의 센서 모듈(176))에 의한 센서 정보, 마이크(예: 도 1의 입력 장치(150))에 의한 음성 입력 정보, 또는 카메라(예: 도 1의 카메라 모듈(180))에 의한 촬영 정보와 같은 입력 이벤트, 조도 센서에 의한 조도 정보, 네트워크 신호 세기 정보, 위치 데이터 정보, 또는 전자 장치(101)의 온도 정보와 같은 환경 변경 이벤트, 또는 컨텍스트 정보(예: 전화 수신, 다른 어플리케이션 프로그램의 일부 기능 실행 결과)에 관련된 이벤트를 감지할 수 있다.
일 실시예에 따라, 동작 521에서, 전자 장치(101)는 감지된 이벤트에 관한 이벤트 정보를 외부 서버(201)로 전송할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 외부 서버(201)에서 실행된 제2 어플리케이션 프로그램(380)에 관련된 이벤트를 감지하는 경우, 외부 서버(201)로 이벤트에 관한 처리를 요청할 수 있다. 예를 들면, 전자 장치(101)는 감지된 이벤트에 대해, 외부 서버(201)에서 실행하는 제2 어플리케이션 프로그램(380)으로 전송할 수 있다(예: upstream). 일 실시예에 따르면, 이벤트 정보를 외부 서버(201)로 전송할 때, 전자 장치(101)의 고유 식별 정보를 포함하여 외부 서버(201)에 전송할 수 있다.
일 실시예에 따라, 동작 523에서, 외부 서버(201)는 전자 장치(101)로부터 수신된 이벤트 정보에 대한 이벤트를 처리할 수 있다. 일 실시예에 따라, 외부 서버(201)는 이벤트 정보에 따라 요구되는 컴퓨팅(computing)을 수행할 수 있다. 일 실시예에 따라, 외부 서버(201)는 제2 어플리케이션 프로그램(380)을 실행하는 동안, 전자 장치(101)로부터 제2 어플리케이션 프로그램(380)에 관한 전자 장치(101)의 이벤트 정보를 수신하고, 수신된 이벤트 정보에 기반하여 제2 어플리케이션 프로그램(380)을 전자 장치(101)에서 제1 어플리케이션 프로그램(330)을 동작하는 것과 실질적으로 동일한 컨텍스트에서 기능을 수행(또는 처리)할 수 있다.
일 실시예에 따라, 동작 525에서, 외부 서버(201)는 이벤트 처리에 따른 결과 데이터를 생성할 수 있다. 일 실시예에 따르면, 외부 서버(201)는 이벤트 정보에 따라 요구되는 컴퓨팅의 수행 결과로서 결과 데이터(예: 비디오 및/또는 오디오 데이터)를 생성할 수 있다.
일 실시예에 따라, 동작 527에서, 외부 서버(201)는 결과 데이터를 전자 장치(101)로 전송할 수 있다. 일 실시예에 따라, 외부 서버(201)는 컴퓨팅 수행 결과로서 획득된 결과 데이터를 전자 장치(101)로 스트리밍(streaming) 할 수 있다.
일 실시예에 따라, 동작 529에서, 전자 장치(101)는 외부 서버(201)로부터 수신된 결과 데이터를 출력할 수 있다. 일 실시예에 따라, 전자 장치(101)는 이벤트 정보 전송에 대응되는 결과 데이터를 외부 서버(201)로부터 수신하고, 수신된 결과 데이터를 그대로, 또는 추가적으로 처리(예: 디코딩(decoding))하여 출력 장치(예: 디스플레이 및/또는 스피커)를 통해 사용자에게 제공할 수 있다.
도 6은 다양한 실시예들에 따른 전자 장치(101)의 동작 방법을 도시하는 흐름도이다.
일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 도 1의 전자 장치(101)의 적어도 하나의 프로세서(120)(예: 프로세싱 회로를 포함하는 적어도 하나의 프로세서)에 의해 실행될 수 있다. 일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 메모리(예: 도 1의 메모리(130))에 저장되고, 실행 시에, 프로세서(120)가 동작하도록 하는 인스트럭션들에 의해 실행될 수 있다.
도 6을 참조하면, 일 실시예에 따라, 동작 601에서, 전자 장치(101)의 프로세서(120)는 외부 서버(201)에서 실행 가능한 어플리케이션 프로그램을 확인(또는 모니터링)할 수 있다. 일 실시예에 따르면, 프로세서(120)는 전자 장치(101)에 설치된 어플리케이션 프로그램들 중, 외부 서버(201)에 의해 실행이 가능한 어플리케이션 프로그램(예: 전자 장치(101)의 제1 어플리케이션 프로그램(330))(이하, ‘제1 어플리케이션 프로그램(330)’이라 한다)에 기반하여, 제1 어플리케이션 프로그램(330)과 적어도 일부 동일한 기능을 수행하는 외부 서버(201)의 어플리케이션 프로그램(이하, ‘제2 어플리케이션 프로그램(380)’이라 한다)이 외부 서버(201)에서 실행 가능한지 여부를 판단(또는 모니터링)할 수 있다. 일 실시예에 따르면, 프로세서(120)는 지정된 시간 정보(예: 지정된 시간 간격, 또는 지정된 시간)에 기반하여 제2 어플리케이션 프로그램(380)의 외부 서버(201)에서 실행 가능 여부를 판단할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)이 전자 장치(101)에 설치(install)되는 시점에, 제1 어플리케이션 프로그램(330)에 대하여 외부 서버(201)에서 제2 어플리케이션 프로그램(380)으로 실행 가능한지 여부를 판단할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)과 관련하여 외부 서버(201)의 제2 어플리케이션 프로그램(380)으로 대신하여 실행하는 사용자 입력을 수신(또는 감지)하는 경우, 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)이 외부 서버(201)에서 실행 가능한지 여부를 판단할 수 있다. 일 실시예에 따라, 프로세서(120)는 다양한 외부 서버를 스캔할 수 있고, 외부 서버(201)에 의해 실행 가능하다고 판단된 제1 어플리케이션 프로그램(330)에 대해, 현재 적용(또는 설정)된 외부 서버(201) 외에 보다 나은 품질을 제공하는 다른 외부 서버가 존재하는지 여부를 판단하는 동작을 포함할 수 있다.
일 실시예에 따라, 동작 603에서, 프로세서(120)는 확인하는 결과에 기반하여 외부 서버(201)에 의해 실행 가능한 제1 어플리케이션 프로그램(330)에 관한 아이콘에 기반하여 상태 정보(예: 객체 또는 인디케이션)를 표시할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)에 대응하는 외부 서버(201)의 제2 어플리케이션 프로그램(380)이 실행 가능한 경우, 제1 어플리케이션 프로그램(330)의 아이콘 상에 지정된 객체(또는 인디케이션)(예: 구름(또는 클라우드) 모양의 배지 이미지)를 표시할 수 있다. 일 실시예에 따라, 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 상에 객체를 표시할 때, 아이콘과 적어도 일부 영역을 겹쳐(또는 중첩하여) 제공할 수 있다. 일 실시예에 따르면, 프로세서(120)는 외부 서버(201)로부터 외부 서버(201)에서 실행 가능한 어플리케이션 프로그램 리스트를 수신하고, 어플리케이션 프로그램 리스트에 제1 어플리케이션 프로그램(330)과 관련된 제2 어플리케이션 프로그램(380)이 포함되어 있으면 객체를 표시할 수 있다. 일 실시예에 따르면, 전자 장치(101) 또는 외부 서버(201)는 어플리케이션 프로그램에 관한 고유 정보(예: 어플리케이션 식별자(AID, application ID)에 기반하여 어플리케이션 프로그램들 간 대응 관계를 식별할 수 있다. 다른 실시예에 따르면, 프로세서(120)는 외부 서버(201)에 의해 제1 어플리케이션 프로그램(330)에 대한 인증이 완료되는 경우, 외부 서버(201)에 의한 응답(예: ACK)에 기반하여 객체를 표시할 수 있다. 이의 예시가 후술하는 도면을 참조하여 설명된다.
일 실시예에 따라, 동작 605에서, 프로세서(120)는 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330)과 제2 어플리케이션 프로그램(380))에 관한 데이터를 외부 서버(201)와 동기화 할 수 있다. 일 실시예에 따라, 프로세서(120)는 전자 장치(101)와 외부 서버(201) 간에, 어플리케이션 프로그램에 관한 각 데이터(예: 전자 장치(101)에 저장된 제1 어플리케이션 프로그램(330)의 제1 데이터와 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)의 제2 데이터)가 차이가 있는 경우 동기화를 수행할 수 있다.
일 실시예에 따라, 동작 607에서, 프로세서(120)는 제1 어플리케이션 프로그램(330)에 관련된 사용자 입력을 감지(또는 수신)할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체(또는 인디케이션)에 대한 사용자 입력의 입력 방식을 식별할 수 있고, 사용자 입력에 따라 어플리케이션 프로그램을 실행(예: 전자 장치(101) 또는 외부 서버(201)에서 실행)하거나, 어플리케이션 프로그램에 관한 사용자 인터페이스(예: 컨텍스트 메뉴(context menu))를 제공(또는 표시)할 수 있다. 도 6의 예시에서는, 사용자 입력이, 외부 서버(201)의 제2 어플리케이션 프로그램(380)을 실행하는 제1 사용자 입력과, 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스(예: 컨텍스트 메뉴)를 표시하는 제2 사용자 입력인 것을 예로 설명한다.
일 실시예에 따라, 동작 609에서, 프로세서(120)는 사용자 입력이 제1 사용자 입력에 대응하는지, 또는 제2 사용자 입력에 대응하는지 판단할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램(330)의 아이콘 및/또는 객체에 대한 사용자 입력이 외부 서버(201)의 제2 어플리케이션 프로그램을 실행하도록 지정된 제1 사용자 입력(예: 터치, 더블 터치, 또는 롱 터치)인지, 또는 사용자 인터페이스(예: 컨텍스트 메뉴)의 실행(또는 호출)하도록 지정된 제2 사용자 입력인지 판단할 수 있다. 일 실시예에 따라, 제2 사용자 입력은 제1 사용자 입력과 다른 방식의 사용자 입력일 수 있다. 예를 들어, 제1 사용자 입력이 터치인 경우, 제2 사용자 입력은 롱 터치일 수 있다.
일 실시예에 따라, 동작 609에서, 프로세서(120)는 외부 서버(201)의 제2 어플리케이션 프로그램(380)을 실행하는 것과 관련된 제1 사용자 입력인 것을 판단하면(예: 동작 609의 ‘예’), 동작 611에서, 제2 어플리케이션 프로그램(380)의 실행에 관한 실행 요청을 외부 서버(201)로 전송할 수 있다. 예를 들면, 프로세서(120)는 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)을 외부 서버(201)를 통해 실행할 수 있다. 일 실시예에 따르면, 프로세서(120)는 외부 서버(201)로 제2 어플리케이션 프로그램(380)에 관한 실행 요청 시에, 전자 장치(101)의 다양한 특성에 관한 특성 정보를 포함하여 외부 서버(201)로 전송할 수 있다. 일 실시예에 따라, 프로세서(120)는 제2 어플리케이션 프로그램(380)에 관한 실행 요청 시에, 선택된 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)을 포함하여 외부 서버(201)로 전송할 수 있다.
일 실시예에 따라, 동작 613에서, 프로세서(120)는 외부 서버(201)로부터 제2 어플리케이션 프로그램(380)의 실행에 관한 데이터(예: 비디오 및/또는 오디오 데이터)를 수신(예: streaming)할 수 있다.
일 실시예에 따라, 동작 619에서, 프로세서(120)는 외부 서버(201)로부터 수신된 데이터를 출력할 수 있다. 일 실시예에 따르면, 프로세서(120)는 수신된 데이터를 그대로, 또는 추가적으로 처리(예: 디코딩(decoding))하여 출력 장치(예: 디스플레이 및/또는 스피커)를 통해 사용자에게 제공할 수 있다.
일 실시예에 따라, 동작 609에서, 프로세서(120)는 제2 어플리케이션 프로그램(380)과 관련된 사용자 인터페이스를 표시하는 것과 관련된 제2 사용자 입력인 것을 판단하면(예: 동작 609의 ‘아니오’), 동작 617에서, 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스(예: 컨텍스트 메뉴)를 표시할 수 있다. 일 실시예에 따라, 사용자 인터페이스(예: 컨텍스트 메뉴)는, 예를 들면, 제1 아이템(예: 원격지 실행(Run on Remote), 또는 서버 실행(Run on Server)), 제2 아이템(예: 원격지 설정(Remote configuration), 또는 서버 설정(Server configuration)), 및/또는 제3 아이템(예: 이득 정보)을 포함할 수 있다. 이의 예시가 후술하는 도면을 참조하여 설명된다.
일 실시예에 따라, 동작 619에서, 프로세서(120)는 사용자 인터페이스에 기반한 사용자 입력에 관련된 동작을 수행할 수 있다. 일 실시예에 따르면, 프로세서(120)는 표시된 사용자 인터페이스(예: 컨텍스트 메뉴)에서, 외부 서버(201)의 제2 어플리케이션 프로그램(380)을 실행하기 위한 제1 아이템을 선택하는 사용자 입력에 기반하여, 제2 어플리케이션 프로그램(380)의 외부 서버(201)에서 실행할 수 있다. 일 실시예에 따르면, 프로세서(120)는 표시된 사용자 인터페이스에서, 어플리케이션 프로그램을 실행할 환경(예: 서비스 프로파일(service profile))의 설정을 위한 제2 아이템을 선택하는 사용자 입력에 기반하여, 설정에 관련된 사용자 인터페이스(또는 설정 인터페이스)를 표시할 수 있다. 예를 들면, 프로세서(120)는 외부 서버(201)로 설정에 관련된 사용자 인터페이스를 요청하고, 외부 서버(201)로부터 사용자 인터페이스를 수신하여 표시할 수 있다. 일 실시예에 따라, 프로세서(120)는 제2 어플리케이션 프로그램(380)에 관한 사용자 인터페이스를, 설정 메뉴를 포함하는 설정 인터페이스로 화면 전환하는 방식으로, 설정 인터페이스를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다.
도 7은 다양한 실시예들에 따른 전자 장치(101)에서 제공하는 사용자 인터페이스의 예를 설명하기 위한 도면이다.
도 7에 도시한 바와 같이, 제1 화면 예시(A)는, 전자 장치(101)의 디스플레이(예: 도 1의 표시 장치(160))를 통해, 전자 장치(101)에 설치된 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램(330))에 대응하는 아이콘 및/또는 객체(또는 인디케이션)가 제공되는 예를 나타낼 수 있다. 제2 화면 예시(B)는, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)의 실행 결과로 수신된 데이터(예: 비디오 데이터)가 제공되는 예를 나타낼 수 있다. 제3 화면 예시(C)는, 외부 서버(201)에서 실행할 제2 어플리케이션 프로그램(380)에 관한 설정 메뉴를 포함하는 사용자 인터페이스(예: 설정 인터페이스)가 제공되는 예를 나타낼 수 있다.
일 실시예에 따른, 제1 화면 예시(A)를 참조하면, 전자 장치(101)에 설치된 어플리케이션 프로그램에 대응하는 아이콘 중, 외부 서버(201)를 통해 실행이 가능한 어플리케이션 프로그램(이하, ‘제1 어플리케이션 프로그램(330)’이라 한다)의 아이콘(710)은, 제1 어플리케이션 프로그램(330)에 대응되는 외부 서버(201)의 제2 어플리케이션 프로그램(이하, ‘제2 어플리케이션 프로그램(380)’이라 한다)이 외부 서버(201)에 의해 실행될 수 있음을 지시(또는 가이드)하는 객체(720)(또는 인디케이션)을 포함할 수 있다. 일 실시예 따라, 객체(720)는 구름(또는 클라우드) 모양의 배지 이미지로 제공될 수 있으며, 이에 한정하지 않으며, 다양한 모양의 이미지 또는 텍스트를 이용할 수 있다. 일 실시예에 따라, 객체(720)는 아이콘(710)과 적어도 일부 영역이 겹쳐진(또는 중첩된) 형태로 제공할 수 있다.
다양한 실시예들에 따르면, 전자 장치(101)는 외부 서버(201)를 통해 실행 가능한 제1 어플리케이션 프로그램(330)의 아이콘(710) 및/또는 객체(720)에 대한 사용자 입력에 기반하여, 제1 화면 예시(A) 상태에서 제2 화면 예시(B)로 화면 전환하여 제1 사용자 인터페이스(770)를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다. 예를 들어,전자 장치(101)는 전자 장치(101)에서 실행되는 제1 어플리케이션 프로그램(330)의 데이터, 또는 외부 서버(201)에서 실행되는 제2 어플리케이션 프로그램(380)의 데이터를 디스플레이 상에 표시할 수 있다. 또는, 제1 화면 예시(A)의 화면 상에(또는 화면 전환을 통해), 제2 사용자 인터페이스(730)를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다.
일 실시예에 따라, 전자 장치(101)는 제1 화면 예시(A)의 상태에서, 아이콘(710) 및/또는 객체(720)의 적어도 일부를 통해, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)을 실행하는 것과 관련된 제1 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 사용자 입력에 기반하여, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)을 실행하고, 제2 화면 예시(B)와 같은 제1 어플리케이션 프로그램(330)의 실행과 관련된 제1 사용자 인터페이스(예: 실행 화면)을 표시할 수 있다. 다른 실시예에 따르면, 전자 장치(101)는 아이콘(710) 및/또는 객체(720)에 대한 제1 사용자 입력에 대해, 어플리케이션 프로그램의 실행 주체를 선택하기 위한 가이드 인터페이스(또는 팝업 윈도우)를 표시할 수 있다. 예를 들면, 사용자는 가이드 인터페이스를 통해, 아이콘(710) 및/또는 객체(720)에 대응하는 제1 어플리케이션 프로그램(330)을 전자 장치(101)에서 실행할 지, 또는 제1 어플리케이션 프로그램(330)에 대응하는 외부 서버(201)의 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행할 지 선택할 수 있다. 전자 장치(101)는 사용자의 선택에 대응하여, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)을 실행하거나, 또는 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행할 수 있다.
일 실시예에 따라, 전자 장치(101)는 제1 화면 예시(A)의 상태에서, 아이콘(710) 및/또는 객체(720)의 적어도 일부를 통해, 제2 사용자 인터페이스(730)(예: 컨텍스트 메뉴)의 실행(또는 호출)과 관련된 제2 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제2 사용자 입력에 기반하여, 외부 서버(201)의 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스(730)(예: 컨텍스트 메뉴)를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다. 일 실시예에 따라, 제2 사용자 인터페이스(730)(예: 컨텍스트 메뉴)는, 예를 들면, 제1 아이템(740)(예: ‘Run on Server’), 제2 아이템(750)(예: ‘Server configuration’), 및/또는 제3 아이템(760)(예: ‘Run 1 hour extends battery’)을 포함할 수 있다.
일 실시예에 따라, 제2 사용자 인터페이스(730)에서, 제1 아이템(740)은, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)의 실행을 선택할 수 있는 아이템일 수 있다. 일 실시예에 따라, 제2 사용자 인터페이스(730)에서, 제2 아이템(750)은, 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행할 경우, 제2 어플리케이션 프로그램(380)을 실행할 환경(예: 서비스 프로파일(service profile))을 설정할 수 있는 아이템일 수 있다. 일 실시예에 따라, 제2 사용자 인터페이스(730)에서, 제3 아이템(760)은, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행할 경우 얻게 되는 이득에 관한 정보를 제공하는 아이템일 수 있다. 예를 들면, 제3 아이템(760)은 사용자가 제공된 정보를 참조하여 어플리케이션 프로그램의 실행 환경을 선택하도록 할 수 있다. 일 예로, 전자 장치(101)는 제2 사용자 인터페이스(730)의 제3 아이템(760)을 통해, "1시간 배터리 사용 시간 증가(예: “Run 1 hour extends battery”)", 또는 "반응속도 30msec"와 같은 메시지를 제공할 수 있다.
일 실시예에 따라, 전자 장치(101)는 제2 사용자 인터페이스(730)에서 제1 아이템(740)을 통해 제3 사용자 입력을 수신할 수 있다. 전자 장치(101)는 제3 사용자 입력에 기반하여, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)이 실행되도록 하는 요청을 외부 서버(201)로 전송할 수 있다. 전자 장치(101)는 외부 서버(201)에서 제2 어플리케이션 프로그램(380)의 실행 결과 데이터를 수신하고, 제2 화면 예시(B)와 같은 제1 사용자 인터페이스(770)에 기반하여, 수신된 데이터를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다.
일 실시예에 따른, 제3 화면 예시(C)를 참조하면, 외부 서버(201)를 통해 실행할 제2 어플리케이션 프로그램(380)에 관한 설정 메뉴를 포함하는 제3 사용자 인터페이스(780)의 예를 나타낼 수 있다. 일 실시예에 따라, 사용자는 제2 사용자 인터페이스(730)에서 제2 아이템(750)을 선택할 수 있다. 전자 장치(101)는 제2 사용자 인터페이스(730)에서 제2 아이템(750)을 선택하는 사용자 입력에 기반하여, 제3 화면 예시(C)로 화면 전환하여, 제3 사용자 인터페이스(780)를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다. 일 실시예에 따라, 제3 사용자 인터페이스(780)는 서비스 프로파일을 사용자가 선택할 수 있는 다양한 설정 메뉴를 포함할 수 있다. 일 실시예에 따르면, 제3 사용자 인터페이스(780)는 서비스 프로파일(781a, 781b, 781c)을 설정하는 메뉴(781)(예: “Configuration”), 선택된 서비스 프로파일(예: 서비스 프로파일(781a)(예: “Done within 1 min (32 [email protected]) $1.5”)에 관한 가격 정보(예: “Estimated fee. $1.5/Hour”) 및 선택된 서비스 프로파일에 기반한 품질 정보(또는 이득 정보)(예: “You can extend 1 hour battery life”)를 제공하는 메뉴(783), 서비스 프로파일의 선택(예: 선택 확정)을 위한 메뉴(785)(예: “Select Profile” 버튼), 사용자 정보(예: 사용자의 서비스 가입 정보(예: “Your balance: $30 free (Tariff included)”) 및/또는 요금 사용 정보(예: “$20 used in this month”))를 제공하는 메뉴(787), 및 요금제 변경을 위한 메뉴(789)(예: “Change Tariff” 버튼)를 포함할 수 있다. 일 실시예에 따르면, 서비스 프로파일(781a, 781b, 781c)에 예시한 바와 같이, 사용 가능한 컴퓨팅 자원들의 종류는 CPU, RAM, storage, 및 네트워크 타입(예: 3G, 4G, LTE, 또는 5G)을 포함할 수 있고, 컴퓨팅 자원들 각각의 성능은, 예를 들면, CPU의 동작 속도(예: 3.4GHz), RAM 용량(예: 4GB), GPU의 메모리 용량(예: 256MB), 및 해당 네트워크 타입에서 사용 가능한 데이터 양(예: 5G에서 40GB, 4G에서 무제한(unlimited))을 포함할 수 있다.
일 실시예에 따르면, 사용자는 외부 서버(201)의 자원 사용을 요청(예: 제2 어플리케이션 프로그램(380)에 관한 실행 요청)하는 동작에서, 제3 사용자 인터페이스(780)를 통해 외부 서버(201)가 제공할 수 있는 자원(예: 서비스 프로파일(781a, 781b, 781c))의 종류를 확인하고, 이를 선택할 수 있다. 예를 들면, 제3 사용자 인터페이스(780)는 서비스 프로파일(781a, 781b, 781c) 별로 제공할 수 있는 자원(예: 처리 장치의 속도 및 개수, 메모리의 크기, 및/또는 저장 공간의 크기를 포함)에 관한 정보를 제공할 수 있다.
일 실시예에 따라, 제3 사용자 인터페이스(780)는 서비스 프로파일(781a, 781b, 781c)의 사용에 따라 획득될 수 있는 이득에 관한 정보(예: 783)를 서비스 프로파일 별로 제공할 수 있다. 예를 들면, 사용자는 제3 사용자 인터페이스(780)를 통해 서비스 프로파일을 선택함으로써 얻을 수 있는 이득에 관한 정보를 확인할 수 있다. 예를 들면, 제3 사용자 인터페이스(780)는 제1 어플리케이션 프로그램(330)을 전자 장치(101) 상에서 실행하는 것 보다 제2 어플리케이션 프로그램(380)을 외부 서버(201)에서 실행하는 경우 늘어나는 배터리 사용량(또는 사용 시간), 및/또는 단축되는 처리 시간(예: 처리 완료 시간)을 표시하고, 이를 바탕으로 사용자가 보다 적절한 서비스 프로파일을 선택하도록 할 수 있다. 일 실시예에 따르면, 배터리 사용량은, 예를 들어, 제1 어플리케이션 프로그램(330)의 배터리 사용 프로파일과, 스트리밍(streaming)을 위해 사용되는 자원에 따른 배터리 사용 예측치를 참고하여 표시할 수 있다. 일 실시예에 따르면, 처리 시간은, 예를 들어, 전자 장치(101)의 처리 장치의 종류(예: 코어 수, 및/또는 최대 처리 속도)를 기반으로, 외부 서버(201)의 자원 설정을 비교하여 예측치를 제공할 수 있다. 일 실시예에 따르면, 제3 사용자 인터페이스(780)는 현재 사용자가 가입중인 요금제(plan)에 따라 외부 서버(201)에서 사용 가능한 종류에 따른 최대 이득을 다양한 객체(예: 색상 및/또는 숫자(예: 단축 처리 시간))를 통해 표시하여, 사용자에게 보다 직관적인 경험을 제공하도록 할 수 있다.
다양한 실시예들이 이에 한정하는 것은 아니며, 제3 사용자 인터페이스(780)를 통해, 전술된 이득 이외에도, 얻을 수 있는 이득에 대한 다양한 정보를 표시할 수 있다. 다양한 실시예들에 따르면, 이득에 관한 정보는, 사용자가 이득에 관한 정보를 보다 직관적으로 확인할 수 있도록, 제1 어플리케이션 프로그램(330)의 아이콘(710) 및/또는 객체(720)에 부가 아이콘을 추가하여 늘어나는 배터리 사용 시간과 같은 정보를 표시하도록 할 수도 있다.
일 실시예에 따라, 전자 장치(101)는 제1 화면 예시(A)의 상태에서, 아이콘(710) 및/또는 객체(720)의 적어도 일부를 통해, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)을 실행하는 것과 관련된 제4 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제4 사용자 입력에 기반하여, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)이 실행되도록 요청할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제2 어플리케이션 프로그램(380)의 실행 요청에 대응하여, 외부 서버(201)로부터 제2 어플리케이션 프로그램(380)의 실행 결과로 데이터가 수신되는 경우, 제2 화면 예시(B)를 사용자에게 제공할 수 있다.
도 8은 다양한 실시예들에 따른 외부 서버(201)의 동작 방법을 도시하는 흐름도이다.
일 실시예에 따라, 외부 서버(201)에서 수행하는 동작들은, 외부 서버(201)의 복수의 프로세서들 중 적어도 하나의 프로세서(예: 도 4의 프로세서(370))에 의해 실행될 수 있다. 일 실시예에 따라, 외부 서버(201)에서 수행하는 동작들은, 메모리(예: 도 4의 메모리(360))에 저장되고, 실행 시에, 프로세서(370)가 동작하도록 하는 인스트럭션들에 의해 실행될 수 있다.
도 8을 참조하면, 일 실시예에 따라, 동작 801에서, 외부 서버(201)의 프로세서(370)는 어플리케이션 프로그램(예: 외부 서버(201)의 제2 어플리케이션 프로그램(380))에 관한 데이터를 전자 장치(101)(예: 전자 장치(101)의 제1 어플리케이션 프로그램(330))와 동기화 할 수 있다. 일 실시예에 따라, 프로세서(370)는 외부 서버(201)와 전자 장치(101) 간에, 어플리케이션 프로그램에 관한 각 데이터(예: 전자 장치(101)에 저장된 제1 어플리케이션 프로그램(330)의 제1 데이터와 외부 서버(201)에 저장된 제2 어플리케이션 프로그램(380)의 제2 데이터)가 차이가 있는 경우 동기화를 수행할 수 있다.
일 실시예에 따라, 동작 803에서, 프로세서(370)는 전자 장치(101)로부터 제2 어플리케이션 프로그램(380)이 실행되도록 하는 요청을 수신할 수 있다. 일 실시예에 따르면, 프로세서(370)는 제2 어플리케이션 프로그램(380)에 관한 실행 요청을 수신 시에, 전자 장치(101)의 특성 정보, 및/또는 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)을 전자 장치(101)로부터 수신할 수 있다.
일 실시예에 따라, 동작 805에서, 프로세서(370)는 제2 어플리케이션 프로그램(380)의 실행 요청에 기반하여, 제2 어플리케이션 프로그램(380)에 대한 컴퓨팅 자원을 할당하기 위한 서비스 프로파일(예: 사용 가능한 컴퓨팅 자원의 종류 및/또는 성능)을 확인할 수 있다. 일 실시예에 따라, 서비스 프로파일은, 예를 들면, 외부 서버(201)의 가상 장치(예: 도 3 또는 도 4의 가상 장치(390))에 관한 리소스 정보를 포함할 수 있다. 일 실시예에 따라, 리소스 정보는, 예를 들면, 제2 어플리케이션 프로그램(380)에 관한 처리 장치의 종류 및 개수, 저장 장치(예: 메모리)의 크기 및 입출력 속도, 또는 그래픽 가속기의 할당 유무 및 종류에 관한 정보를 포함할 수 있다.
일 실시예에 따라, 동작 807에서, 프로세서(370)는 서비스 프로파일에 기반하여 컴퓨팅 자원을 할당할 수 있다. 예를 들면, 프로세서(370)는 제2 어플리케이션 프로그램(380)에 관한 실행 요청에 따라, 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)에 기반하여, 제2 어플리케이션 프로그램(380)의 실행을 위한 자원을 할당(또는 설정)할 수 있다. 다양한 실시예들에서, 컴퓨팅 자원은, 예를 들면, 외부 서버(201)의 가상 장치(예: 도 3 또는 도 4의 가상 장치(390))가 제2 어플리케이션 프로그램(380)을 실행할 때 이용하는 하드웨어 자원, 및/또는 외부 서버(201)와 전자 장치(101) 간에 통신할 때 이용하는 네트워크 자원을 포함할 수 있다.
일 실시예에 따라, 동작 809에서, 프로세서(370)는 제2 어플리케이션 프로그램(380)을 실행할 수 있다. 일 실시예에 따라, 프로세서(370)는 전자 장치(101)의 특성 정보, 네트워크의 특성 정보, 또는 서비스 프로파일에 적어도 기반하여, 전자 장치(101)(또는 제2 어플리케이션 프로그램(380))에 맞는 가상 장치를 구성(또는 할당)하고, 해당 가상 장치에 할당된 하드웨어 자원을 이용하여 제2 어플리케이션 프로그램(380)을 실행할 수 있다. 다양한 실시예들에 따르면, 프로세서(370)는 전자 장치(101)(또는 제2 어플리케이션 프로그램(380))에 대해 미리 동기화된 데이터를 이용하여, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 동작하던 마지막 환경과 실질적으로 동일한 환경으로 제2 어플리케이션 프로그램(380)을 실행할 수 있다.
일 실시예에 따라, 동작 811에서, 프로세서(370)는 어플리케이션 프로그램의 실행에 관련된 데이터(예: 오디오 및/또는 비디오 데이터(또는 정보))를 생성할 수 있다. 일 실시예에 따르면, 프로세서(370)는 전자 장치(101)에 의해 전송된 서비스 프로파일에 따라 정의된 컴퓨팅 자원을 이용하여 실행한 어플리케이션 프로그램의 실행 결과로서 데이터를 획득할 수 있다.
일 실시예에 따라, 동작 813에서, 프로세서(370)는 생성된 데이터(예: 오디오 및/또는 비디오 데이터)를 전자 장치(101)로 전송(예: streaming) 할 수 있다.
도 9는 다양한 실시예들에 따른 전자 장치(101)의 동작 방법을 도시하는 흐름도이다.
일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 도 1 의 전자 장치(101)의 적어도 하나의 프로세서(120)(예: 프로세싱 회로를 포함하는 적어도 하나의 프로세서)에 의해 실행될 수 있다. 일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 메모리(예: 도 1의 메모리(130))에 저장되고, 실행 시에, 프로세서(120)가 동작하도록 하는 인스트럭션들에 의해 실행될 수 있다.
도 9를 참조하면, 일 실시예에 따라, 동작 901에서, 프로세서(120)는 외부 서버(201)와 연결할 수 있다. 일 실시예에 따르면, 프로세서(120)는 무선 통신 회로(예: 도 1의 통신 모듈(190), 도 2의 무선 통신 모듈(192))를 통해, 네트워크 내에(예: 기지국 내에 또는 기지국과 연결된 코어 네트워크 내에) 배치되고, 제1 어플리케이션 프로그램(예: 도 3 또는 도 4의 전자 장치(101)의 제1 어플리케이션 프로그램(330))의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램(예: 도 3 또는 도 4의 외부 서버(201)의 제2 어플리케이션 프로그램(380))을 포함하는 외부 서버(201)와 연결할 수 있다. 일 실시예에 따라, 제1 어플리케이션 프로그램과 제2 어플리케이션 프로그램은, 적어도 일부 동일한 기능을 제공하는 어플리케이션 프로그램일 수 있고, 실행하는 동작의 주체(예: 전자 장치(101), 또는 외부 서버(201))에 각각 포함(또는 설치)될 수 있다.
일 실시예에 따르면, 프로세서(120)는 전자 장치(101)와 외부 서버(201) 간에 연결할 때, 또는 연결한 이후에, 외부 서버(201)로부터 외부 서버(201)가 제2 어플리케이션 프로그램을 지시하는 정보를 수신할 수 있다. 예를 들면, 제2 어플리케이션 프로그램을 지시하는 정보는, 외부 서버(201)가 전자 장치(101)의 제1 어플리케이션 프로그램과 관련된 외부 서버(201)의 제2 어플리케이션 프로그램을 외부 서버(201)에서 실행 가능함을 지시하는 정보를 포함할 수 있다. 일 실시예에 따라, 외부 서버(201)는 제1 어플리케이션 프로그램에 대응하는(또는 적어도 일부 동일한) 제2 어플리케이션 프로그램을 실행하여, 전자 장치(101)에서 제1 어플리케이션 프로그램을 실행하는 것과 적어도 일부가 동일한 환경을 제공할 수 있다.
일 실시예에 따르면, 프로세서(120)는 전자 장치(101)와 외부 서버(201) 간에 연결할 때, 또는 연결한 이후에, 디스플레이(예: 도 1의 표시 장치(160)) 상에, 제1 어플리케이션 프로그램과 관련된 아이콘(예: 도 7의 아이콘(710)) 및 제2 어플리케이션 프로그램과 관련되고, 아이콘(예: 도 7의 아이콘(710))과 적어도 일부 영역이 겹치는 인디케이션(또는 객체)(예: 도 7의 객체(720))을 표시할 수 있다.
일 실시예에 따라, 동작 903에서, 프로세서(120)는 제1 어플리케이션 프로그램과 관련된 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 프로세서(120)는 제1 어플리케이션 프로그램의 아이콘 및/또는 인디케이션(또는 객체)에 대한 사용자 입력의 입력 방식을 식별할 수 있고, 사용자 입력에 따라 제1 어플리케이션 프로그램을 전자 장치(101)에서 실행하거나, 제2 어플리케이션 프로그램에 관한 제2 사용자 인터페이스(예: 컨텍스트 메뉴)를 제공(또는 표시)할 수 있다. 도 9의 예시에서는, 사용자 입력이, 전자 장치(101)의 제1 어플리케이션 프로그램을 실행하기 위한 제1 사용자 입력 및 제1 어플리케이션 프로그램에 대응하는 외부 서버(201)에 설치(또는 저장)된 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스(예: 컨텍스트 메뉴)를 실행(또는 호출)하기 위한 제2 사용자 입력을 포함하는 것을 예로 할 수 있다. 일 실시예에 따르면, 제1 사용자 입력과 제2 사용자 입력은 아이콘(예: 도 7의 아이콘(710)) 및/또는 인디케이션(예: 도 7의 객체(720))를 통해 수신될 수 있다. 일 실시예에 따르면, 제 1 사용자 입력 및 제 2 사용자 입력은 입력 방식이 다를 수 있다. 예를 들어, 제 1 사용자 입력은 터치 입력이고 제 2 사용자 입력은 롱 터치 입력일 수 있다.
일 실시예에 따라, 동작 905에서, 프로세서(120)는 제1 어플리케이션 프로그램과 관련된 사용자 입력이, 제1 사용자 입력에 대응하는지, 또는 제2 사용자 입력에 대응하는지 판단할 수 있다.
일 실시예에 따라, 동작 905에서, 프로세서(120)는 사용자 입력이 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력인 것을 판단하면(예: 동작 905의 ‘예’), 동작 907에서, 전자 장치(101) 상에서 제1 어플리케이션 프로그램을 실행할 수 있다.
일 실시예에 따라, 동작 909에서, 프로세서(120)는 디스플레이(예: 도 1의 표시 장치(160)) 상에 제1 어플리케이션 프로그램의 제1사용자 인터페이스를 표시할 수 있다. 일 실시예에 따라, 프로세서(120)는 전자 장치(101) 상에 제1 어플리케이션 프로그램을 실행하고, 실행하는 제1 어플리케이션 프로그램에 관련된 제1 사용자 인터페이스를 전자 장치(101)의 디스플레이 상에 표시할 수 있다.
일 실시예에 따라, 동작 905에서, 프로세서(120)는 사용자 입력이 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력인 것을 판단하면(예: 동작 905의 ‘아니오’), 동작 911에서, 디스플레이(예: 도 1의 표시 장치(160)) 상에 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스(예: 컨텍스트 메뉴(예: 도 7의 사용자 인터페이스(730)))를 표시할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제2 사용자 인터페이스(예: 컨텍스트 메뉴)를 표시한 이후에, 제2 사용자 인터페이스를 통해 제3 사용자 입력을 수신할 수 있다. 일 실시예에 따라, 프로세서(120)는 제2 사용자 인터페이스의 어플리케이션 프로그램이 실행될 환경(예: 외부 서버(201)에 의한 실행)을 선택할 수 있는 아이템(예: 도 7의 제1 아이템(740))을 통해 제3 사용자 입력을 수신할 수 있고, 제3 사용자 입력에 적어도 일부 기반하여, 무선 통신 회로(예: 도 1의 통신 모듈(190), 도 2의 무선 통신 모듈(192))를 통해, 외부 서버(201) 상에서 제2 어플리케이션 프로그램이 실행되도록 하는 요청을 외부 서버(201)로 전송할 수 있다. 일 실시 예에 따라, 프로세서(120)는 외부 서버(201)로부터 제2 어플리케이션 프로그램의 실행 결과에 관련된 데이터를 수신하고, 수신된 데이터를 포함하는 사용자 인터페이스를 전자 장치(101)의 디스플레이 상에 표시할 수 있다.
도 10은 다양한 실시예들에 따른 전자 장치(101)와 외부 서버(201) 간의 동작을 도시하는 흐름도이다.
일 실시예에 따라, 도 10에서 수행하는 동작들은, 전자 장치(101)의 프로세서(120)(또는 실행 시에, 프로세서(120)가 동작하도록 하는 인스트럭션들)와 외부 서버(201)의 프로세서(370)(또는 실행 시에, 프로세서(370)가 동작하도록 하는 인스트럭션들)에 의해 실행될 수 있다. 일 실시예에 따라, 도 10에서는, 전자 장치(101) 내에서 어플리케이션 프로그램이 실행되고, 어플리케이션 프로그램의 사용에 따라 가상화 실행 시에 가변되는 정보를 전자 장치(101)를 통해 사용자에게 제공하는 예를 나타낼 수 있다.
도 10을 참조하면, 일 실시예에 따라, 동작 1001에서, 전자 장치(101)는 어플리케이션 프로그램(예: 도 3 또는 도 4의 전자 장치(101)의 제1 어플리케이션 프로그램(330)과 관련된 외부 서버(201)의 제2 어플리케이션 프로그램(380))의 외부 서버(201)에 의한 실행 가능 여부를 확인(또는 모니터링)할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 전자 장치(101)에 설치된 어플리케이션 프로그램들 중, 외부 서버(201)에 의해 실행이 가능한 어플리케이션 프로그램(예: 전자 장치(101)의 제1 어플리케이션 프로그램(330))에 기반하여 적어도 일부 동일한 기능을 수행하는 외부 서버(201)의 어플리케이션 프로그램(예: 외부 서버(201)의 제2 어플리케이션 프로그램(380))이 외부 서버(201)에서 실행 가능한지 여부를 판단할 수 있다.
일 실시예에 따르면, 프로세서(120)는 지정된 시간 정보(예: 지정된 시간 간격, 또는 지정된 시간)에 기반하여 제2 어플리케이션 프로그램(380)의 외부 서버(201)에서 실행 가능 여부를 판단할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)이 전자 장치(101)에 설치되는 시점에, 제1 어플리케이션 프로그램(330)에 대하여 외부 서버(201)에서 제2 어플리케이션 프로그램(380)으로 실행 가능한지 여부를 판단할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)과 관련하여 외부 서버(201)의 제2 어플리케이션 프로그램(380)으로 대신하여 실행하는 사용자 입력을 수신(또는 감지)하는 경우, 제1 어플리케이션 프로그램(330)에 대응하는 제2 어플리케이션 프로그램(380)이 외부 서버(201)에서 실행 가능한지 여부를 판단할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 외부 서버(201)로부터 외부 서버(201)에서 실행 가능한 어플리케이션 프로그램 리스트를 수신하고, 어플리케이션 프로그램 리스트에 해당 어플리케이션 프로그램이 포함되어 있으면, 제2 어플리케이션 프로그램(380)이 실행 가능한 상태인 것으로 판단할 수 있다. 다른 실시예에 따르면, 전자 장치(101)는 외부 서버(201)에 의해 제1 어플리케이션 프로그램(330)에 대한 인증이 완료되는 경우, 외부 서버(201)에 의한 응답(예: ACK)에 기반하여 제2 어플리케이션 프로그램(380)이 실행 가능한 상태인 것으로 판단할 수 있다.
일 실시예에 따르면, 전자 장치(101) 또는 외부 서버(201)는 어플리케이션 프로그램에 관한 고유 정보(예: 어플리케이션 식별자(AID, application ID)에 기반하여 어플리케이션 프로그램들 간 대응 관계를 식별할 수 있다. 다양한 실시예들에서, 외부 서버(201)에서 제2 어플리케이션 프로그램(380)의 실행 가능한 상황은, 예를 들면, 외부 서버(201)와 전자 장치(101) 간의 네트워크 상태(예: 지연시간, 대역폭)와, 외부 서버(201)의 가용 자원 상태와 같은 환경적인 요소에 기반하여 판단될 수 있다. 예를 들면, 제2 어플리케이션 프로그램(380)의 실행 가능한 상황은, 컴퓨팅 자원에 기반하여 판단될 수 있다.
일 실시예에 따라, 동작 1003에서, 전자 장치(101)는 제2 어플리케이션 프로그램(380)에 관한 자원의 사용을 외부 서버(201)로 요청할 수 있다. 일 실시예에 따라, 전자 장치(101)는 자원의 사용을 요청할 때, 선택된 서비스 프로파일(예: 사용자가 설정하거나, 또는 기본 설정된 서비스 프로파일)을 외부 서버(201)로 전송할 수 있다. 일 실시예에 따라, 전자 장치(101)는 자원의 사용을 요청할 때, 전자 장치(101)의 고유 식별 정보(또는 사용자 정보)를 포함하여 외부 서버(201)로 전송할 수 있다.
일 실시예에 따라, 동작 1005에서, 외부 서버(201)는 전자 장치(101)에 대한 자원을 설정할 수 있다. 일 실시예에 따르면, 외부 서버(201)는 서비스 프로파일에 기반하여 컴퓨팅 자원을 할당할 수 있다. 예를 들면, 외부 서버(201)는 전자 장치(101)로부터 수신된 서비스 프로파일에 기반하여, 제2 어플리케이션 프로그램(380)의 실행을 위한 자원을 할당(또는 설정)할 수 있다. 다양한 실시예들에서, 컴퓨팅 자원은, 예를 들면, 외부 서버(201)의 가상 장치(예: 도 3 또는 도 4의 가상 장치(390))가 제2 어플리케이션 프로그램(380)을 실행할 때 이용하는 하드웨어 자원, 및/또는 외부 서버(201)와 전자 장치(101) 간에 통신할 때 이용하는 네트워크 자원을 포함할 수 있다.
일 실시예에 따라, 동작 1007에서, 외부 서버(201)는 자원 설정에 관한 상태 정보를 생성할 수 있다. 일 실시예에 따르면, 외부 서버(201)는 네트워크 상태(예: 지연 시간, 대역폭), 및/또는 외부 서버(201)의 가용 자원 상태와 같은 환경적인 요소를 확인하고, 사용자의 요금제, 사용자의 어플리케이션 프로그램의 동기화 여부와 같은 전자 장치(101)의 상태에 기반하여, 현재 상태를 제공할 수 있는 제1 상태 정보(또는 어플리케이션 프로그램의 가상화 실행에 따른 이득에 관한 정보)를 생성할 수 있다.
일 실시예에 따라, 동작 1009에서, 외부 서버(201)는 제1 상태 정보를 전자 장치(101)로 전송할 수 있다. 일 실시예에 따라, 외부 서버(201)가 전자 장치(101)로 제공하는 제1 상태 정보는, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 실행되기 이전의 전자 장치(101)의 상태에 관련된 정보를 나타내며, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)의 실행에 따른 전자 장치(101)의 성능 변화(예: 전자 장치(101)의 성능 저하)에 따라 변경될 수 있다. 예를 들면, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 실행되는 동안에, 제2 어플리케이션 프로그램(380)을 해당 시점에서 외부 서버(201)에서 가상화 실행 시, 제1 상태 정보에 따른(또는 제1 상태 정보를 제공하는 시점의) 이득에 비해 보다 향상된 이득이 획득될 수 있다. 예를 들면, 전자 장치(101)의 성능 변화에 따라, 제1 상태 정보는 보다 향상된 상태 정보(이하, ‘제2 상태 정보’라 한다)(예: 해당 시점에서 제2 어플리케이션 프로그램(380)의 가상화 실행에 따른 이득에 관한 정보)로 변경될 수 있다.
일 실시예에 따라, 동작 1011에서, 전자 장치(101)는 외부 서버(201)로부터 수신하는 제1 상태 정보를 표시할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램의 아이콘에 기반하여 상태 정보에 대응하는 지정된 객체(또는 인디케이션)를 표시할 수 있다. 일 실시예에 따라, 지정된 객체는 제1 어플리케이션 프로그램(330)이 외부 서버(201)에서 가상화 실행될 수 있음을 지시하고, 가상화 실행 시의 이득에 관한 정보를 포함할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 어플리케이션 프로그램(330)의 아이콘과 적어도 일부 영역을 겹쳐(또는 중첩하여) 제1 상태 정보를 제공할 수 있다.
일 실시예에 따라, 동작 1013에서, 전자 장치(101)는 제1 어플리케이션 프로그램(330)을 전자 장치(101) 상에서 실행하는 것과 관련된 사용자 입력에 기반하여, 제1 어플리케이션 프로그램(330)을 실행할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 어플리케이션 프로그램(330)을 실행하는 동안, 제1 어플리케이션 프로그램(330)에 관련된 실행 화면(또는 사용자 인터페이스)을 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 어플리케이션 프로그램(330)에 관련된 실행 화면(또는 사용자 인터페이스)의 적어도 일부 영역을 통해, 실행(또는 사용) 중인 제1 어플리케이션 프로그램이 외부 서버(201)에서 가상화 실행(예: 제1 어플리케이션 프로그램(330)과 관련된 제2 어플리케이션 프로그램(380)이 외부 서버(201)에서 실행)될 수 있음을 지시하고, 가상화 실행 시의 이득에 관한 정보를 포함하는 제1 상태 정보를 표시할 수 있다.
일 실시예에 따라, 동작 1015에서, 전자 장치(101)는 제1 어플리케이션 프로그램(330)을 실행하는 동안, 제1 어플리케이션 프로그램(330)에 관련된 사용 정보를 확인할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제1 어플리케이션 프로그램(330)의 실행에 따라 사용되는 전자 장치(101)의 컴퓨팅 자원의 상태를 판단할 수 있다. 예를 들면, 전자 장치(101)는 배터리 자원(예: 사용량 및/또는 잔량), 처리 시간, 전자 장치(101)의 온도, 또는 네트워크 신호 세기와 같은 컴퓨팅 자원의 상태를 판단할 수 있다.
일 실시예에 따라, 동작 1017에서, 전자 장치(101)는 제1 어플리케이션 프로그램(330)에 관련된 사용 정보를 외부 서버(201)로 전송할 수 있다.
일 실시예에 따라, 동작 1019에서, 외부 서버(201)는 전자 장치(101)로부터 수신된 사용 정보에 기반하여 제2 상태 정보를 판단할 수 있다. 일 실시예에 따르면, 외부 서버(201)가, 동작 1009에서 전자 장치(101)로 제공한 제1 상태 정보는, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)의 실행에 따른 전자 장치(101)의 성능 변화(예: 전자 장치(101)의 성능 저하)에 따라 변경될 수 있다. 예를 들면, 전자 장치(101)에서 제1 어플리케이션 프로그램(330)이 실행되는 동안에, 제2 어플리케이션 프로그램(380)을 현재 시점(예: 사용 정보가 외부 서버(201)에 수신된 시점)에서 외부 서버(201)에서 가상화 실행 시, 제1 상태 정보에 따른(또는 제1 상태 정보를 제공하는 시점의) 이득에 비해 보다 향상된 이득이 획득될 수 있다. 예를 들면, 전자 장치(101)의 성능 변화에 따라, 제1 상태 정보는 보다 향상된 상태 정보(이하, ‘제2 상태 정보’라 한다)(예: 현재 시점에서 제2 어플리케이션 프로그램의 가상화 실행에 따른 이득에 관한 정보)로 변경될 수 있다. 일 실시예에 따라, 외부 서버(201)는 사용 정보에 기반하여, 전자 장치(101)의 현재 상태를 판단할 수 있고, 전자 장치(101)의 현재 상태에 기반하여, 제2 어플리케이션 프로그램(380)을 가상화 실행 시에 늘어나는 배터리 사용 시간, 단축되는 처리 완료 시간을 판단할 수 있다.
일 실시예에 따라, 동작 1021에서, 외부 서버(201)는 사용 정보에 기반하여 갱신된 제2 상태 정보를 생성할 수 있다. 일 실시예에 따르면, 외부 서버(201)는 전자 장치(101)의 상태 변화에 따라 변경되는(예: 향상되는) 이득에 관한 정보를 포함하는 제2 상태 정보(예: 현재 시점에서 제2 어플리케이션 프로그램(380)의 가상화 실행에 따른 이득에 관한 정보)를 생성할 수 있다.
일 실시예에 따라, 동작 1023에서, 외부 서버(201)는 제2 상태 정보를 전자 장치로(101)로 전송할 수 있다.
일 실시예에 따라, 동작 1025에서, 전자 장치(101)는 어플리케이션 프로그램에 관련된 실행 화면(또는 사용자 인터페이스)에 기반하여 제2 상태 정보를 표시할 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 어플리케이션 프로그램(330)에 관련된 실행 화면(또는 사용자 인터페이스)의 적어도 일부 영역을 통해, 표시된 제1 상태 정보를 수신된 제2 상태 정보로 갱신하여 표시할 수 있다.
도 11은 다양한 실시예들에 따른 전자 장치(101)의 동작 방법을 도시하는 흐름도이다.
일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 도 1의 전자 장치(101)의 적어도 하나의 프로세서(120)(예: 프로세싱 회로를 포함하는 적어도 하나의 프로세서)에 의해 실행될 수 있다. 일 실시예에 따라, 전자 장치(101)에서 수행하는 동작들은, 메모리(예: 도 1의 메모리(130))에 저장되고, 실행 시에, 프로세서(120)가 동작하도록 하는 인스트럭션들에 의해 실행될 수 있다.
일 실시예에 따라, 도 11에서는 전자 장치(101) 내에서 어플리케이션 프로그램(예: 제1 어플리케이션 프로그램)이 실행되고, 전자 장치(101)에서 어플리케이션 프로그램(예: 도 3 또는 도 4의 전자 장치(101)의 제1 어플리케이션 프로그램(330))(이하, ‘제1 어플리케이션 프로그램’이라 한다)을 실행하는 동안 제1 어플리케이션 프로그램과 관련된 외부 서버(201)의 어플리케이션 프로그램(예: 도 3 또는 도 4의 외부 서버(201)의 제2 어플리케이션 프로그램(380))(이하, ‘제2 어플리케이션 프로그램’이라 한다)이 외부 서버(201)에서 실행(예: 외부 서버(201)의 제2 어플리케이션 프로그램을 통해 전자 장치(101)의 제1 어플리케이션 프로그램을 대신하여 실행)(또는 가상화 실행)이 가능함을 지시하는 정보를 제공하고, 제공된 정보에 대한 사용자 입력에 기반하여, 전자 장치(101)의 제1 어플리케이션 프로그램을 외부 서버(201)의 제2 어플리케이션 프로그램으로 전환하여 실행하는 예를 나타낼 수 있다.
도 11을 참조하면, 일 실시예에 따라, 동작 1101에서, 전자 장치(101)의 프로세서(120)는 제1 어플리케이션 프로그램을 실행할 수 있다. 일 실시예에 따라, 프로세서(120)는 전자 장치(101)에 저장(또는 설치)된 어플리케이션 프로그램 중, 사용자 입력에 대응하여 실행 요청된 제1 어플리케이션 프로그램을 전자 장치(101) 상에서 실행하고, 제1 어플리케이션 프로그램의 실행 결과에 따른 데이터(또는 실행 화면)를 디스플레이(예: 도 1의 표시 장치(160))를 통해 표시할 수 있다.
일 실시예에 따라, 동작 1103에서, 프로세서(120)는 제1 어플리케이션 프로그램을 실행하는 동안, 제1 어플리케이션 프로그램과 관련된 외부 서버의 제2 어플리케이션 프로그램이 실행 가능한 외부 서버(예: 외부 서버(201))를 스캔할 수 있다. 일 실시예에 따라, 프로세서(120)는 제1 어플리케이션 프로그램이 실행되는 동안에, 실행 중인 제1 어플리케이션 프로그램과 관련된 제2 어플리케이션 프로그램에 관한 가용한 서버(예: 외부 서버(201))를 스캔할 수 있다. 일 실시예에 따라, 프로세서(120)는 실행 중인 제1 어플리케이션 프로그램이 외부 서버(201)를 통해 실행 가능한 어플리케이션 프로그램인 경우에, 제1 어플리케이션 프로그램과 관련된 제2 어플리케이션 프로그램에 관한 가용한 서버를 스캔하도록 할 수 있다.
일 실시예에 따라, 동작 1105에서, 프로세서(120)는 스캔하는 결과에 기반하여 제2 어플리케이션 프로그램의 실행 가능한 외부 서버가 있는지 여부를 판단할 수 있다.
일 실시예에 따라, 동작 1105에서, 프로세서(120)는 제2 어플리케이션 프로그램의 실행 가능한 외부 서버가 판단되지 않는 경우(또는 스캔되지 않는 경우)(예: 동작 1105의 ‘아니오’), 동작 1103으로 진행하여, 제1 어플리케이션 프로그램을 실행하는 동안, 동작 1103 이하의 동작을 수행할 수 있다.
일 실시예에 따라, 동작 1105에서, 프로세서(120)는 제2 어플리케이션 프로그램의 실행 가능한 외부 서버가 판단되는 경우(또는 스캔되는 경우)(예: 동작 1105의 ‘예’), 동작 1107에서, 제2 어플리케이션 프로그램의 실행에 관한 객체(또는 인디케이션)를 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제2 어플리케이션 프로그램이 외부 서버(201)에서 가상화 실행이 가능한 경우, 가상화 실행에 관한 객체(예: 배지 이미지)를, 제1 어플리케이션 프로그램의 실행 화면의 적어도 일 영역(예: 실행 화면의 상단, 또는 인디케이터 영역)을 통해 표시하여 사용자에게 제공할 수 있다.
일 실시예에 따라, 동작 1109에서, 프로세서(120)는 객체에 관련된 사용자 입력을 수신할 수 있다.
일 실시예에 따라, 동작 1111에서, 프로세서(120)는 사용자 입력이 제1 사용자 입력에 대응하는지, 또는 제2 사용자 입력에 대응하는지 판단할 수 있다. 일 실시예에 따르면, 프로세서(120)는 객체에 대한 사용자 입력이 제2 어플리케이션 프로그램의 가상화 실행과 관련된 제1 사용자 입력(예: 터치, 더블 터치, 롱 터치, 스와이프 제스처(swipe gesture))인지, 또는 객체에 대한 사용자 입력이 제2 어플리케이션 프로그램의 가상화 실행에 관련된 정보를 포함하는 사용자 인터페이스(예: 가이드 메뉴)의 표시(또는 호출)와 관련된 제2 사용자 입력인지 판단할 수 있다. 일 실시예에 따라, 제2 사용자 입력은 제1 사용자 입력과 다른 방식의 사용자 입력일 수 있다. 예를 들어, 제1 사용자 입력이 터치인 경우, 제2 사용자 입력은 스와이프 제스처(예: swipe down/up/left/right))일 수 있다.
일 실시예에 따라, 동작 1111에서, 프로세서(120)는 객체에 관련된 제1 사용자 입력인 것을 판단하면(예: 동작 1111의 ‘예’), 동작 1113에서, 외부 서버(201)에 제2 어플리케이션 프로그램에 관한 실행 요청을 전송할 수 있다.
일 실시예에 따라, 동작 1115에서, 프로세서(120)는 어플리케이션 프로그램에 관한 데이터를 동기화 할 수 있다. 일 실시예에 따르면, 프로세서(120)는 전자 장치(101) 상에서 실행된 제1 어플리케이션 프로그램의 현재 상태(또는 현재 데이터, 또는 저장된 데이터)를 외부 서버(201)의 제2 어플리케이션 프로그램에 관한 데이터와 데이터 동기화를 수행할 수 있다.
일 실시예에 따라, 동작 1117에서, 프로세서(120)는 외부 서버(201)에 의해 제2 어플리케이션 프로그램이 동작(또는 실행)하기 위한 가상 실행 환경이 구축되는 것을 확인할 수 있다. 일 실시예에 따라, 외부 서버(201)는 전자 장치(101)로부터 제2 어플리케이션 프로그램에 관한 실행 요청에 대응하여, 가상 실행 환경을 구축(예: 가상 장치 설정)하고 그에 대한 응답(예: ACK)을 전자 장치(101)로 전송할 수 있다. 일 실시예에 따라, 프로세서(120)는 무선 통신 회로(예: 도 3의 무선 통신 회로(320))를 통해, 외부 서버(201)로부터 제2 어플리케이션 프로그램에 관한 실행 요청에 대응하는 응답을 수신하는 것에 기반하여, 가상 실행 환경이 구축(예: 제2 어플리케이션 프로그램에 관한 가상 장치가 설정)됨을 판단할 수 있다.
일 실시예에 따라, 동작 1119에서, 프로세서(120)는 외부 서버(201)에 의한 가상 실행 환경이 구축되는 것에 기반하여, 전자 장치(101) 상에서 실행 중인 제1 어플리케이션 프로그램을 종료할 수 있다.
일 실시예에 따라, 동작 1121에서, 프로세서(120)는 외부 서버(201)로부터 제2 어플리케이션 프로그램에 관한 데이터를 수신하여 출력할 수 있다. 일 실시예에 따라, 프로세서(120)는 제1 어플리케이션 프로그램은 내부적으로(또는 백그라운드로) 종료할 수 있고, 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시되는 상태는, 외부 서버(201)로부터 수신된 데이터를 대체하여 출력(예: 비디오 표시 및/또는 오디오 출력)함으로써, 사용자의 제1 어플리케이션 프로그램에 의한 작업 환경에 연속성(예: 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시되는 사용자의 작업 상태가 유지되는 효과)을 제공할 수 있다. 예를 들면, 어플리케이션 프로그램에 관한 실행 환경의 전환(예: 전자 장치(101)에서 외부 서버(201)로 전환) 시에, 사용자가 전자 장치(101) 상에서 실행 중이던 제1 어플리케이션 프로그램의 제1 작업 화면과, 실행 환경의 전환에 따라 외부 서버(201)로부터 수신된 데이터가 표시되는 제2 어플리케이션 프로그램의 제2 작업 화면이 동일한(또는 적어도 일부가 동일한) 화면으로 제공될 수 있다. 이를 통해, 다양한 실시예들에 따르면, 어플리케이션 프로그램에 관한 실행 환경의 전환 시에, 사용자에게 실행 환경 전환에 따른 비연속성에 따른 이질감을 최소화 하도록 할 수 있다.
일 실시예에 따라, 동작 1111에서, 프로세서(120)는 객체에 관련된 제2 사용자 입력인 것을 판단하면(예: 동작 1111의 ‘아니오’), 동작 1123에서, 제2 어플리케이션 프로그램의 외부 서버(201)의 실행에 관한 상태 정보를 표시할 수 있다. 일 실시예에 따라, 프로세서(120)는 디스플레이 상의 제1 어플리케이션 프로그램의 실행 화면의 적어도 일 영역을 통해, 외부 서버(201)에서 제2 어플리케이션 프로그램을 실행할 경우(또는 가상화 실행에 따라) 얻게 되는 이득에 관한 정보를 지정된 사용자 인터페이스를 통해 제공할 수 있다. 예를 들면, 프로세서(120)는 "1시간 배터리 사용 시간 증가", 또는 "반응속도 30msec"와 같은 제2 어플리케이션 프로그램의 가상화 실행에 따른 이득에 관한 정보를 제공할 수 있다.
일 실시예에 따라, 동작 1125에서, 프로세서(120)는 사용자 입력에 기반하여 해당 동작을 수행할 수 있다. 일 실시예에 따르면, 프로세서(120)는 사용자 인터페이스를 통해 제2 어플리케이션 프로그램의 가상화 실행을 요청하는 사용자 입력을 수신하고, 사용자 입력에 기반하여, 제2 어플리케이션 프로그램의 가상화 실행을 위한 동작을 수행할 수 있다. 일 실시예에 따르면, 프로세서(120)는 제1 어플리케이션 프로그램의 전자 장치(101) 상에서의 실행을 요청하는 사용자 입력을 수신하고, 사용자 입력에 기반하여 이득에 관한 정보를 표시하는 사용자 인터페이스를 실행 화면 상에서 제거하고, 전자 장치(101) 상에서 제1 어플리케이션 프로그램의 실행(또는 운영)에 관한 동작을 수행할 수 있다.
도 12a, 도 12b, 도 13a, 및 도 13b는 다양한 실시예들에 따른 전자 장치에서 제공하는 사용자 인터페이스의 예를 설명하기 위한 도면들이다.
일 실시예에 따르면, 도 12a, 도 12b, 도 13a, 및 도 13b는 전술된 도 11에 대응하는 동작들에 관한 사용자 인터페이스의 예를 나타낸 것으로, 예를 들면, 도 12a 및 도 12b는 전자 장치(101) 내에서 제1 어플리케이션 프로그램이 실행되고, 전자 장치(101)에서 제1 어플리케이션 프로그램을 실행하는 동안 제1 어플리케이션 프로그램과 관련된 제2 어플리케이션 프로그램이 외부 서버(201)에서 실행(예: 외부 서버(201)의 제2 어플리케이션 프로그램을 통해 전자 장치(101)의 제1 어플리케이션 프로그램을 대신하여 실행)(또는 가상화 실행)이 가능함을 지시하는 객체(1200)를 제공하는 예를 나타낼 수 있다. 일 실시예에 따라, 도 13a 및 도 13b는 도 12b의 예시에서 객체(1200)에 관련된 사용자 입력에 기반하여, 제2 어플리케이션 프로그램의 외부 서버(201)의 실행에 관한 상태 정보를 포함하는 사용자 인터페이스(1310, 1320)를 제공하는 예를 나타낼 수 있다.
도 12a 및 도 12b를 참조하면, 도 12a는, 전자 장치(101) 상에서 제1 어플리케이션 프로그램이 실행되어 제1 어플리케이션 프로그램의 사용자 인터페이스가 디스플레이(예: 도 1의 표시 장치(160)) 상에 표시되는 예를 나타낼 수 있다. 일 실시예에 따라, 전자 장치(101)는 제1 어플리케이션 프로그램을 실행하는 동안, 제1 어플리케이션 프로그램과 관련된 제2 어플리케이션 프로그램에 관한 실행이 가능한 가용한 서버(예: 외부 서버(201))를 스캔할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 외부 서버(201)로부터 외부 서버(201)에서 실행 가능한 어플리케이션 프로그램 리스트를 수신하고, 어플리케이션 프로그램 리스트에 제1 어플리케이션 프로그램이 포함되어 있으면, 제2 어플리케이션 프로그램이 실행 가능한 상태인 것으로 판단할 수 있다. 다른 실시예에 따르면, 전자 장치(101)는 외부 서버(201)에 의해 제1 어플리케이션 프로그램(330)에 대한 인증이 완료되는 경우, 외부 서버(201)에 의한 응답(예: ACK)에 기반하여 제2 어플리케이션 프로그램이 실행 가능한 상태인 것으로 판단할 수 있다. 다양한 실시예들에서, 외부 서버(201)에서 제2 어플리케이션 프로그램의 실행 가능한 상황은, 예를 들면, 외부 서버(201)와 전자 장치(101) 간의 네트워크 상태(예: 지연시간, 대역폭)와, 외부 서버(201)의 가용 자원 상태와 같은 환경적인 요소에 기반하여 판단될 수 있다. 예를 들면, 제2 어플리케이션 프로그램의 실행 가능한 상황은, 컴퓨팅 자원에 기반하여 판단될 수 있다.
일 실시예에 따라, 전자 장치(101)는 외부 서버(201)에 관한 스캔하는 결과에 기반하여 제2 어플리케이션 프로그램의 실행이 가능한 외부 서버(201)가 판단되는 경우(또는 스캔되는 경우), 도 12b에 도시한 바와 같이, 제2 어플리케이션 프로그램의 실행에 관한 객체(1200)를 디스플레이(예: 도 1의 표시 장치(160)) 상에 일 영역을 통해 표시할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 제2 어플리케이션 프로그램이 외부 서버(201)에 의한 가상화 실행이 가능한 경우, 가상화 실행에 관한 객체(1200)(예: 배지 이미지)를, 제1 어플리케이션 프로그램의 실행 화면의 적어도 일 영역(예: 실행 화면의 상단, 또는 인디케이터 영역)을 통해 표시하여 사용자에게 제공할 수 있다. 일 실시예에 따르면, 가상화 실행에 관한 객체(1200)는, 예를 들면, 외부 서버(201)에서 제2 어플리케이션 프로그램을 실행하는 것이 사용자에게 보다 유리한 조건임을 사용자가 인지하도록 알림하기 위한 객체일 수 있다.
다양한 실시예들에 따라, 도 12b에 예시된 바와 같은 상태에서, 전자 장치(101)는 객체(1200)에 관련된 사용자 입력에 따라, 제2 어플리케이션 프로그램의 가상화 실행에 관련된 동작을 바로 수행하거나, 도 13a 또는 도 13b의 화면 예시와 같은 가상화 실행에 따른 이득에 관한 정보를 포함하는 사용자 인터페이스(1310, 1320)를 표시하여 사용자에게 제공할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 객체(1200)에 대한 사용자 입력이 제2 어플리케이션 프로그램의 가상화 실행과 관련된 제1 사용자 입력인 경우, 제2 어플리케이션 프로그램의 가상화 실행에 관련된 동작을 수행할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 객체(1200)에 대한 사용자 입력이 제2 어플리케이션 프로그램의 가상화 실행에 관련된 정보를 포함하는 사용자 인터페이스(예: 가이드 메뉴)의 표시(또는 호출)와 관련된 제2 사용자 입력인 경우, 도 13a 또는 도 13b에 예시된 바와 같은 사용자 인터페이스(1310, 1320)을 통해 제2 어플리케이션 프로그램의 외부 서버(201)의 실행에 관한 상태 정보를 표시할 수 있다.
일 실시예에 따라, 도 13a를 참조하면, 전자 장치(101)는 디스플레이(예: 도 1의 표시 장치(160), 또는 도 3의 디스플레이(310)) 상의 실행 화면의 적어도 일 영역을 통해, 외부 서버(201)에서 제2 어플리케이션 프로그램을 실행할 경우 얻게 되는 이득에 관한 정보(1315)(예: 작업 시간 단축에 관한 정보)를 사용자 인터페이스(1310)를 통해 제공할 수 있다. 예를 들면, 이득에 관한 정보(1315)는 제2 어플리케이션 프로그램을 전자 장치(101)에서 실행하는 경우에 소요되는 제1 예상 시간과, 외부 서버(201)에서 실행하는 경우에 소요되는 제2 예상 시간을 제공하고, 제1 예상 시간과 제2 예상 시간 간의 차이에 기반하여 작업 시간의 예상 단축(예: 20분 단축)에 관한 정보를 시각적으로 제공할 수 있다.
일 실시예에 따라, 도 13b를 참조하면, 전자 장치(101)는 디스플레이(예: 도 1의 표시 장치(160), 또는 도 3의 디스플레이(310)) 상의 실행 화면의 적어도 일 영역을 통해, 외부 서버(201)에서 제2 어플리케이션 프로그램을 실행할 경우 얻게 되는 이득에 관한 정보(1325)(예: 전자 장치(101)의 사용 시간(예: 배터리 시간)의 확장에 관한 정보)를 사용자 인터페이스(1320)를 통해 제공할 수 있다. 예를 들면, 이득에 관한 정보(1325)는 제2 어플리케이션 프로그램을 전자 장치(101)에서 실행하는 경우에 전자 장치(101)의 사용 가능한 제1 예상 시간과, 외부 서버(201)에서 실행하는 경우에 전자 장치(101)의 사용 가능한 제2 예상 시간을 제공하고, 제1 예상 시간과 제2 예상 시간 간의 차이에 기반하여 전자 장치(101)의 사용 시간의 예상 증가(예: 2시간 증가)에 관한 정보를 시각적으로 제공할 수 있다.
일 실시예에 따르면, 도 13a 또는 도 13b에 예시된 바와 같은, 사용자 인터페이스(1310, 1320)는, 전자 장치(101)의 디스플레이 상의 제1 어플리케이션 프로그램의 실행 화면(또는 사용자 인터페이스)의 적어도 일부 영역에 중첩(예: 오버레이(overlay))하여 제공할 수 있다. 다양한 실시예들에 따르면, 사용자 인터페이스(1310, 1320)를 통해 제공되는 이득에 관한 정보(1315, 1325)는 도 13a 또는 도 13b의 예시에 한정하지 않으며, 전술된 이득 이외에도, 얻을 수 있는 이득에 대한 다양한 정보를 제공할 수 있다.
일 실시예에 따르면, 전자 장치(101)는 도 13a 또는 도 13b의 사용자 인터페이스(1310, 1320)에서, 제2 어플리케이션 프로그램의 가상화 실행을 요청하는 사용자 입력을 수신할 수도 있다. 예를 들면, 사용자 인터페이스(1310, 1320)에서 제2 어플리케이션 프로그램의 가상화 실행을 위한 객체(1350)(예: ‘실행하기’ 버튼)에 관련된 사용자 입력을 수신하고, 사용자 입력에 기반하여, 제2 어플리케이션 프로그램을 외부 서버(201)를 통해 실행할 수 있다.
다양한 실시예들에 따른 전자 장치(101)의 동작 방법은, 무선 통신 회로(예: 도 1의 통신 모듈(190), 도 2의 무선 통신 모듈(192))를 통해, 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버(201)와 연결하는 동작, 상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 디스플레이(예: 도 1의 표시 장치(160)) 상에 상기 제1 어플리케이션 프로그램의 제1사용자 인터페이스를 표시하는 동작, 상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 전자 장치(101)의 동작 방법은, 상기 외부 서버(201)와 연결할 때 또는 연결한 후에, 상기 외부 서버(201)가 상기 제2 어플리케이션 프로그램을 포함함을 지시하는 정보를 수신하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 전자 장치(101)의 동작 방법은, 상기 디스플레이 상에, 상기 제1 어플리케이션 프로그램과 관련된 아이콘(예: 도 7의 아이콘(710)) 및 상기 제2 어플리케이션 프로그램과 관련되고, 상기 아이콘과 적어도 일부 영역이 겹치는 인디케이션(예: 도 7의 객체(720))을 표시하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 제1 사용자 입력을 수신하는 동작은, 상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제1 사용자 입력을 수신하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 제2 사용자 입력을 수신하는 동작은, 상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제2 사용자 입력을 수신하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 전자 장치(101)의 동작 방법은, 상기 제2 사용자 인터페이스를 통해 제3 사용자 입력을 수신하는 동작, 상기 제3 사용자 입력에 적어도 일부 기반하여, 상기 무선 통신 회로를 통해, 상기 외부 서버(201) 상에서 상기 제2 어플리케이션 프로그램이 실행되도록 하는 요청을 상기 외부 서버(201)로 전송하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 전자 장치(101)의 동작 방법은, 상기 전자 장치(101)의 상기 제1 어플리케이션 프로그램에 관한 제1 데이터와, 상기 외부 서버(201)의 상기 제2 어플리케이션 프로그램에 관한 제2 데이터 간에 데이터 동기화를 수행하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 전자 장치(101)의 동작 방법은, 상기 전자 장치(101) 상에서 상기 제1 어플리케이션 프로그램을 실행하는 동작, 상기 제1 어플리케이션 프로그램을 실행하는 동안, 상기 제1 어플리케이션 프로그램에 관한 실행 가능한 외부 서버(201)를 스캔하는 동작, 상기 외부 서버(201)의 스캔하는 결과에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 객체(예: 도 12b의 객체(1200))를 표시하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 전자 장치(101)의 동작 방법은, 상기 객체에 관련된 사용자 입력을 수신하는 동작, 상기 사용자 입력에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 상태 정보를 포함하는 사용자 인터페이스(예: 도 13a의 사용자 인터페이스(1310), 도 13b의 사용자 인터페이스(1320))를 표시하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면, 상기 외부 서버(201)는, 기지국 내에 또는 상기 기지국과 연결된 코어 네트워크 내에 배치될 수 있다.본 명세서와 도면에 개시된 본 발명의 다양한 실시예들은 본 발명의 기술 내용을 쉽게 설명하고 본 발명의 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
101: 전자 장치
120: 프로세서
130: 메모리
330: 제1 어플리케이션 프로그램
490: 가상 모듈
201: 외부 서버
360: 메모리
370: 가상 장치
380: 제2 어플리케이션 프로그램
390: 가상 장치
1200: 객체 (또는 인디케이션)

Claims (20)

  1. 전자 장치에 있어서,
    디스플레이;
    무선 통신을 제공하도록 구성된 무선 통신 회로;
    상기 디스플레이 및 상기 무선 통신 회로와 작동적으로 연결된 적어도 하나의 프로세서; 및
    상기 프로세서와 작동적으로 연결되고, 제1 사용자 인터페이스를 포함하는 제1 어플리케이션 프로그램을 저장하도록 구성되는 메모리를 포함하고,
    상기 메모리는, 실행 시에, 상기 적어도 하나의 프로세서가,
    상기 무선 통신 회로를 통해, 상기 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버와 연결하고,
    상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 상기 디스플레이 상에 상기 제1 어플리케이션 프로그램의 상기 제1 사용자 인터페이스를 표시하고,
    상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하도록 하는 인스트럭션들을 저장하는 전자 장치.
  2. 제1항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 외부 서버와 연결할 때 또는 연결한 후에, 상기 외부 서버가 상기 제2 어플리케이션 프로그램을 포함함을 지시하는 정보를 수신하도록 하는 전자 장치.
  3. 제1항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 디스플레이 상에, 상기 제1 어플리케이션 프로그램과 관련된 아이콘 및 상기 제2 어플리케이션 프로그램과 관련되고, 상기 아이콘과 적어도 일부 영역이 겹치는 인디케이션을 표시하도록 하는 전자 장치.
  4. 제3항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제1 사용자 입력을 수신하도록 하는 전자 장치.
  5. 제3항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제2 사용자 입력을 수신하도록 하는 전자 장치.
  6. 제1항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 제2 사용자 인터페이스를 통해 제3 사용자 입력을 수신하고,
    상기 제3 사용자 입력에 적어도 일부 기반하여, 상기 무선 통신 회로를 통해, 상기 외부 서버 상에서 상기 제2 어플리케이션 프로그램이 실행되도록 하는 요청을 상기 외부 서버로 전송하도록 하는 전자 장치.
  7. 제1항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 전자 장치의 상기 제1 어플리케이션 프로그램에 관한 제1 데이터와, 상기 외부 서버의 상기 제2 어플리케이션 프로그램에 관한 제2 데이터 간에 데이터 동기화를 수행하도록 하는 전자 장치.
  8. 제1항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 전자 장치 상에서 상기 제1 어플리케이션 프로그램을 실행하고,
    상기 제1 어플리케이션 프로그램을 실행하는 동안, 상기 제1 어플리케이션 프로그램에 관한 실행 가능한 외부 서버를 스캔하고,
    상기 외부 서버의 스캔하는 결과에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 객체를 표시하도록 하는 전자 장치.
  9. 제8항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    상기 객체에 관련된 사용자 입력을 수신하고,
    상기 사용자 입력에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 상태 정보를 포함하는 사용자 인터페이스를 표시하도록 하는 전자 장치.
  10. 제1항에 있어서, 상기 인스트럭션들은, 상기 프로세서가,
    기지국 내에 또는 상기 기지국과 연결된 코어 네트워크 내에 배치되는 상기 외부 서버와 연결하도록 하는 전자 장치.
  11. 전자 장치의 동작 방법에 있어서,
    무선 통신 회로를 통해, 제1 어플리케이션 프로그램의 동작을 적어도 부분적으로 대신하여 실행할 수 있는 제2 어플리케이션 프로그램을 포함하는 외부 서버와 연결하는 동작,
    상기 제1 어플리케이션 프로그램과 관련된 제1 사용자 입력을 수신하면, 상기 제1 어플리케이션 프로그램을 실행하여, 디스플레이 상에 상기 제1 어플리케이션 프로그램의 제1사용자 인터페이스를 표시하는 동작,
    상기 제1 어플리케이션 프로그램과 관련된 제2 사용자 입력을 수신하면, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램과 관련된 제2 사용자 인터페이스를 표시하는 동작을 포함하는 방법.
  12. 제11항에 있어서,
    상기 외부 서버와 연결할 때 또는 연결한 후에, 상기 외부 서버가 상기 제2 어플리케이션 프로그램을 포함함을 지시하는 정보를 수신하는 동작을 포함하는 방법.
  13. 제11항에 있어서,
    상기 디스플레이 상에, 상기 제1 어플리케이션 프로그램과 관련된 아이콘 및 상기 제2 어플리케이션 프로그램과 관련되고, 상기 아이콘과 적어도 일부 영역이 겹치는 인디케이션을 표시하는 동작을 포함하는 방법.
  14. 제13항에 있어서, 상기 제1 사용자 입력을 수신하는 동작은,
    상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제1 사용자 입력을 수신하는 동작을 포함하는 방법.
  15. 제13항에 있어서, 상기 제2 사용자 입력을 수신하는 동작은,
    상기 아이콘 및/또는 상기 인디케이션을 통해 상기 제2 사용자 입력을 수신하는 동작을 포함하는 방법.
  16. 제11항에 있어서,
    상기 제2 사용자 인터페이스를 통해 제3 사용자 입력을 수신하는 동작,
    상기 제3 사용자 입력에 적어도 일부 기반하여, 상기 무선 통신 회로를 통해, 상기 외부 서버 상에서 상기 제2 어플리케이션 프로그램이 실행되도록 하는 요청을 상기 외부 서버로 전송하는 동작을 포함하는 방법.
  17. 제11항에 있어서,
    상기 전자 장치의 상기 제1 어플리케이션 프로그램에 관한 제1 데이터와, 상기 외부 서버의 상기 제2 어플리케이션 프로그램에 관한 제2 데이터 간에 데이터 동기화를 수행하는 동작을 포함하는 방법.
  18. 제11항에 있어서,
    상기 전자 장치 상에서 상기 제1 어플리케이션 프로그램을 실행하는 동작,
    상기 제1 어플리케이션 프로그램을 실행하는 동안, 상기 제1 어플리케이션 프로그램에 관한 실행 가능한 외부 서버를 스캔하는 동작,
    상기 외부 서버의 스캔하는 결과에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 객체를 표시하는 동작을 포함하는 방법.
  19. 제18항에 있어서,
    상기 객체에 관련된 사용자 입력을 수신하는 동작,
    상기 사용자 입력에 기반하여, 상기 디스플레이 상에 상기 제2 어플리케이션 프로그램의 실행에 관한 상태 정보를 포함하는 사용자 인터페이스를 표시하는 동작을 포함하는 방법.
  20. 제11항에 있어서, 상기 외부 서버는,
    기지국 내에 또는 상기 기지국과 연결된 코어 네트워크 내에 배치되는 방법.
KR1020190006966A 2019-01-18 2019-01-18 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치 KR102648102B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190006966A KR102648102B1 (ko) 2019-01-18 2019-01-18 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치
PCT/KR2020/000958 WO2020149722A1 (en) 2019-01-18 2020-01-20 Working environment provisioning method and apparatus for execution of application program between electronic device and external server
US16/748,414 US10893124B2 (en) 2019-01-18 2020-01-21 Working environment provisioning method and apparatus for execution of application program between electronic device and external server

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190006966A KR102648102B1 (ko) 2019-01-18 2019-01-18 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200089984A true KR20200089984A (ko) 2020-07-28
KR102648102B1 KR102648102B1 (ko) 2024-03-18

Family

ID=71608501

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190006966A KR102648102B1 (ko) 2019-01-18 2019-01-18 전자 장치와 외부 서버 간에 어플리케이션 프로그램에 관한 작업 환경을 제공하는 방법 및 장치

Country Status (3)

Country Link
US (1) US10893124B2 (ko)
KR (1) KR102648102B1 (ko)
WO (1) WO2020149722A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI811560B (zh) 2020-08-17 2023-08-11 宏碁股份有限公司 資源整合系統及資源整合方法
CN115129284A (zh) * 2021-03-29 2022-09-30 西安青松光电技术有限公司 Led显示设备的控制方法、装置、存储介质以及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160068531A (ko) * 2014-12-05 2016-06-15 삼성전자주식회사 어플리케이션 제어 방법 및 전자 장치
KR20160071897A (ko) * 2014-12-12 2016-06-22 삼성전자주식회사 전자장치 및 전자장치의 어플리케이션 실행 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3729023C2 (de) * 1986-08-29 1995-03-16 Canon Kk Bildbearbeitungsgerät
US6304277B1 (en) * 1999-01-15 2001-10-16 Colorcentric.Com, Inc. Remote modification of digital images using scripts
JP2002099529A (ja) * 2000-07-18 2002-04-05 Sanno Consulting Corp 出版物編集システム及びその方法
JP3646931B2 (ja) * 2001-08-29 2005-05-11 セイコーエプソン株式会社 イメージレタッチプログラム
KR100501173B1 (ko) * 2003-08-07 2005-07-18 에스케이 텔레콤주식회사 이동 통신 단말기에서 고해상도 화상을 디스플레이하기위한 방법과 이를 위한 이동 통신 단말기 및 화상 포맷변환 시스템
KR100571961B1 (ko) * 2004-01-10 2006-04-17 삼성전자주식회사 이미지를 가공/편집하여 일괄적으로 인쇄 출력하는 방법및 그 장치
US20060072166A1 (en) * 2004-09-24 2006-04-06 Nikon Corporation Image processing device, method and program
US7631252B2 (en) * 2006-05-05 2009-12-08 Google Inc. Distributed processing when editing an image in a browser
US10061620B2 (en) 2012-07-02 2018-08-28 Paypal, Inc. System and method for clustering of mobile devices and applications
US9148473B1 (en) * 2012-08-27 2015-09-29 Amazon Technologies, Inc. Dynamic resource expansion of mobile devices
JP2014123347A (ja) * 2012-11-22 2014-07-03 Panasonic Corp クライアント端末、サーバ、及び分散処理方法
US10205769B2 (en) * 2013-05-31 2019-02-12 Itron, Inc. Distributed applications across platforms
US9451043B2 (en) * 2013-09-13 2016-09-20 Evie Labs, Inc. Remote virtualization of mobile apps
FR3012895B1 (fr) 2013-11-05 2015-12-25 Commissariat Energie Atomique Procede et programme d'ordinateur pour l'execution deportee de taches informatiques d'un equipement sans fil
US9967757B2 (en) 2013-12-17 2018-05-08 Adaptive Spectrum And Signal Alignment, Inc. Systems methods and apparatuses for implementing distributed wireless data sharing and control systems
US9626227B2 (en) 2015-03-27 2017-04-18 Intel Corporation Technologies for offloading and on-loading data for processor/coprocessor arrangements
US10067893B2 (en) 2015-04-03 2018-09-04 Futurewei Technologies, Inc. Acceleration framework with direct data transfer mechanism
US10048977B2 (en) 2015-12-22 2018-08-14 Intel Corporation Methods and apparatus for multi-stage VM virtual network function and virtual service function chain acceleration for NFV and needs-based hardware acceleration
US10210030B2 (en) * 2017-07-13 2019-02-19 Cyberark Software Ltd. Securely operating remote cloud-based applications

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160068531A (ko) * 2014-12-05 2016-06-15 삼성전자주식회사 어플리케이션 제어 방법 및 전자 장치
KR20160071897A (ko) * 2014-12-12 2016-06-22 삼성전자주식회사 전자장치 및 전자장치의 어플리케이션 실행 방법

Also Published As

Publication number Publication date
US10893124B2 (en) 2021-01-12
US20200236194A1 (en) 2020-07-23
KR102648102B1 (ko) 2024-03-18
WO2020149722A1 (en) 2020-07-23

Similar Documents

Publication Publication Date Title
US20200366516A1 (en) Electronic device and method for registering smart home device in smart home system
US10492173B2 (en) Electronic device and method for performing wireless communication of the same
US11903062B2 (en) Method for operating application requiring communication with external device, and electronic device therefor
US11210056B2 (en) Electronic device and method of controlling thereof
KR20200062793A (ko) 베어러를 관리하는 전자 장치 및 그 동작 방법
EP4195870B1 (en) Data transmission method and terminal
US11900168B2 (en) Electronic device supporting virtual mobile environment enabling user to select computing resources and performing application with selected computing resources
US10893124B2 (en) Working environment provisioning method and apparatus for execution of application program between electronic device and external server
KR20200031900A (ko) Pdu 세션 제어 방법 및 장치
KR20150028588A (ko) 스트리밍 서비스를 위한 전자 장치 및 방법
US11252784B2 (en) Electronic device for scheduling wireless network service according to application and method of operating same
KR102665291B1 (ko) 전자 장치 및 전자 장치의 제어 방법
KR20210017030A (ko) 전력 소모를 줄이기 위한 전자 장치 및 그의 동작 방법
EP4024840B1 (en) Electronic device for transmitting audio data to plurality of external electronic devices, and method for controlling same
US9787746B2 (en) Method and apparatus for processing multimedia content on a graphic cloud
CN110677456A (zh) 一种资源配置的方法及设备
KR102648507B1 (ko) 전자 장치 및 전자 장치의 무선랜 중계기능 제어 방법
EP3758384B1 (en) Method for controlling video sharing through rich communication suite service and electronic device therefor
CN112260845B (zh) 进行数据传输加速的方法和装置
KR20210044695A (ko) 부분 복조 참조 신호 전송을 위한 레이트 매칭 패턴을 설계하기 위한 방법 및 장치
KR20200114707A (ko) 전자 장치 및 전자 장치에서의 스트리밍 어플리케이션 처리 방법
KR102582483B1 (ko) 무선 통신 방법 및 이를 지원하는 전자 장치
WO2024114267A1 (zh) 应用跨设备流转方法、相关装置及通信***
US11695982B2 (en) Content casting method and electronic device therefor
KR20220054103A (ko) 전자 장치 및 통화 중 사용자 인터페이스 제공 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant