KR101331897B1 - 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법 - Google Patents

모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법 Download PDF

Info

Publication number
KR101331897B1
KR101331897B1 KR1020110135155A KR20110135155A KR101331897B1 KR 101331897 B1 KR101331897 B1 KR 101331897B1 KR 1020110135155 A KR1020110135155 A KR 1020110135155A KR 20110135155 A KR20110135155 A KR 20110135155A KR 101331897 B1 KR101331897 B1 KR 101331897B1
Authority
KR
South Korea
Prior art keywords
component
server
application
mobile device
data
Prior art date
Application number
KR1020110135155A
Other languages
English (en)
Other versions
KR20130070663A (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 KR1020110135155A priority Critical patent/KR101331897B1/ko
Publication of KR20130070663A publication Critical patent/KR20130070663A/ko
Application granted granted Critical
Publication of KR101331897B1 publication Critical patent/KR101331897B1/ko

Links

Images

Classifications

    • 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
    • G06F15/161Computing infrastructure, e.g. computer clusters, blade chassis or hardware partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • 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
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명은 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법에 관한 것이다. 모바일 디바이스에 설치된 어플리케이션의 동적 오프로딩 장치에 있어서, 상기 모바일 디바이스의 자원을 모니터링하는 모니터링부; 상기 모니터링 결과 상기 어플리케이션을 실행할 자원이 부족한 경우 상기 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 서버로 전송하는 전송부; 및 상기 서버로부터 상기 적어도 하나의 컴포넌트의 실행 결과를 수신하는 수신부를 포함하는 것을 특징으로 한다. 본 발명에 따르면, 제한된 자원을 가지는 노드에서 복잡도가 높은 어플리케이션을 실행시킬 수 있으며, 노드의 자원이 부족해지는 경우 일부 컴포넌트를 다른 노드로 동적 오프로딩 하여 해당 컴포넌트를 실행 시킴으로써 어플리케이션의 실행 속도를 단축시킬 수 있다.

Description

모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법{DEVICE AND METHOD TO DYNAMICALLY OFFLOAD MOBILE DEVICE APPLICATION}
본 발명의 실시예들은 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법에 관한 것으로서, 더욱 상세하게는 모바일 디바이스의 자원 상태를 모니터링하고, 자원 결핍 문제가 발생할 때, 어플리케이션에 포함된 컴포넌트 중의 일부를 서버로 오프로딩 시키는 장치 및 방법에 관한 것이다.
최근들어 iPhone이나 안드로이드 장비와 같은 모바일 장비의 활용이 본격화되고 있다. 모바일 디바이스는 기본적으로 휴대폰으로서의 전화기능을 제공함은 물론, 다양한 소트프웨어 어플리케이션을 설치 운영할 수 있는 컴퓨터의 기능도 제공한다.
따라서, 모바일 디바이스는 퍼스널 컴퓨팅 용도뿐만 아니라, 기업의 엔터프라이즈 에플리케이션의 클라이언트 단말로도 사용되고 있다. 또한, 모바일 디바이스는 이동성(mobility)을 제공하고, 위치 파악, 가속 측정 등 주변 상황을 인지하는 기능도 제공하므로 다양한 어플리케이션 개발과 응용을 가능케 한다.
그러나 모바일 디바이스는 물리적인 작은 크기로 인하여, 컴퓨팅 파워, 메모리, 화면 크기, 베터리 수명 등의 자원(Resource) 측면에서의 제약점이 있다.
따라서, 사용자가 필요로 하는 전체 기능이 모바일 디바이스에 설치 실행되는 독립형 모바일 어플리케이션의 경우 모바일 디바이스의 제한된 자원으로 인해 실행 속도가 저하되거나, 정상적인 실행이 안 되는 경우가 발생할 수 있다.
이의 해결을 위해 "안드로이드 기반 모바일 서비스 어플리케이션의 아키텍쳐" 정보과학회지 제28권 제6호 통권 제253호(2010년6월)에는 서비스 기반의 모바일 어플리케이션(Service-based Moblie Application, SMA)을 개시하고 있다.
서비스 기반의 모바일 어플리케이션은 사용자가 필요로 하는 가능의 일부는 서버 측에 배포하고, 모바일 디바이스에 설치된 클라이언트 어플리케이션과 네트워크를 통한 상호작용을 통하여 전체 기능을 실행한다.
예를 들어, 전체 어플리케이션 기능 중 비교적 적은 자원을 필요로 하는 간단한 기능은 클라이언트 측에서 실행이 되며, 복잡한 계산 및 데이터 조작을 요구하는 기능은 서버 측에서 실행이 된다.
즉, 성능 좋은 서버에서 제공되는 서비스를 사용함으로써, 모바일 디바이스의 단점인 부족한 자원 문제를 해결하고, 복잡한 기능의 어플리케이션을 모바일 디바이스에서 사용할 수 있도록 한다.
그러나, 기능 중 일부가 서버에서 실행되기 때문에, 네트워크 안정성이 보장이 되어야만 서버에서 실행된 결과를 모바일 디바이스에서 수신할 수 있는 문제가 있다. 즉 반드시 네트워크 통신을 필요로 하기 때문에 독립형 모바일 어플리케이션만큼 빠른 시간 내에 응답을 받지 못한다.
또한, 일시적인 서버 장애 또는 서버에서의 데이터 처리의 과부하로 인한 서버의 장애와 같은 문제가 생기는 경우에도 모바일 디바이스에서 어플리케이션 실행에 대한 응답을 정상적으로 받지 못하는 문제가 발생한다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 모바일 디바이스의 자원 상태를 모니터링하고, 자원 결핍 문제가 발생할 때, 어플리케이션에 포함된 컴포넌트 중의 일부를 서버로 오프로딩시키는 장치 및 방법을 제안하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 모바일 디바이스에 설치된 어플리케이션의 동적 오프로딩 장치에 있어서, 상기 모바일 디바이스의 자원을 모니터링하는 모니터링부; 상기 모니터링 결과 상기 어플리케이션을 실행할 자원이 부족한 경우 상기 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 서버로 전송하는 전송부; 및 상기 서버로부터 상기 적어도 하나의 컴포넌트의 실행 결과를 수신하는 수신부를 포함하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 장치가 제공된다.
상기 자원은 상기 모바일 디바이스의 CPU 사용량, 메모리 사용량, 네트워크 대역폭 및 배터리 량 중 적어도 하나를 포함할 수 있다.
상기 수신부는 상기 모바일 디바이스와 통신 가능한 복수의 서버로부터 상기 복수의 서버 각각에 대한 품질 정보를 더 수신하며, 상기 전송부는 상기 복수의 서버 중 상기 품질 정보가 기 설정된 값 이상인 서버를 선택하여 상기 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 전송할 수 있다.
상기 수신부는 상기 서버로부터 상기 적어도 하나의 컴포넌트가 상기 서버에 설치되었는지에 대한 정보를 더 수신하며, 상기 전송부는 상기 서버에 상기 적어도 하나의 컴포넌트가 이미 설치되어 있는 경우 상기 데이터를 상기 서버로 전송하며, 상기 서버에 상기 적어도 하나의 컴포넌트가 미 설치된 경우 상기 적어도 하나의 컴포넌트 및 상기 데이터를 상기 서버로 전송할 수 있다.
또한, 상기 어플리케이션은 오프로딩 가능한 컴포넌트와 오프로딩 불가능한 컴포넌트를 포함하며, 상기 전송부는 상기 오프로딩 가능한 컴포넌트 중 상기 적어도 하나의 컴포넌트를 선택하여 전송할 수 있다.
상기 어플리케이션이 상기 모바일 디바이스에 설치되는 경우, 상기 어플리케이션에 포함된 컴포넌트 중 적어도 하나의 컴포넌트가 상기 서버로 오프로딩 가능한지 여부 및 상기 어플리케이션의 실행에 필요한 자원양 중 적어도 하나를 등록하는 저장부를 더 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 모바일 디바이스와 통신 가능한 서버에 있어서, 상기 모바일 디바이스에 설치된 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 수신하는 수신부; 상기 데이터를 이용하여 상기 적어도 하나의 컴포넌트를 실행하는 실행부; 및 상기 실행결과를 상기 모바일 디바이스로 전송하는 전송부를 포함하는 것을 특징으로 하는 서버를 개시한다.
본 발명의 또 다른 실시예에 따르면, 모바일 디바이스에 설치된 어플리케이션의 동적 오프로딩 방법에 있어서, 상기 모바일 디바이스의 자원을 모니터링하는 단계(a); 상기 모니터링 결과 상기 어플리케이션을 실행할 자원이 부족한 경우 상기 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 서버로 전송하는 단계(b); 및 상기 서버로부터 상기 적어도 하나의 컴포넌트의 수행 결과를 수신하는 단계(c)를 포함하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 방법을 개시한다.
본 발명에 따르면, 제한된 자원을 가지는 노드에서 복잡도가 높은 어플리케이션을 실행시킬 수 있으며, 노드의 자원이 부족해지는 경우 일부 컴포넌트를 다른 노드로 동적 오프로딩 하여 해당 컴포넌트를 실행 시킴으로써 어플리케이션의 실행 속도를 단축시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 모바일 디바이스에서 컴포넌트의 동적 오프로딩이 일어나는 흐름을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 동적 오프로딩 장치의 상세구성을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 동적 오프로딩 가능한 어플리케이션을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 서버의 상세구성을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 동적 오프로딩 방법에 대한 전체적인 흐름을 도시한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 모바일 디바이스와 서버의 프레임워크 아키텍처의 일례를 도시한 도면이다.
도 7은 본 발명의 일 실시예에 따른 동적 오프로딩 프레임워크의 일례를 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따른 Agent.Moblie에서 컴포넌트를 오프로딩 매니저로 전송하는 과정을 도시한 시퀀스 다이어그램이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
모바일 디바이스에서 특정 작업을 실행하는 행위는 일정 이상의 자원을 소모하며, 디바이스가 보유한 여유 자원량은 고정된 것이 아닌 실시간으로 변화한다. 예를 들어 모바일 디바이스에서 실행되는 어플리케이션의 개수와 대응하여 여유 자원량이 변화될 수 있다.
여기서 모바일 디바이스의 자원은 CPU 사용량, 메모리 사용량, 베터리량, 네트워크 대역폭 중 적어도 하나를 포함할 수 있다.
모바일 디바이스가 보유한 여유 자원량이 작업을 수행하기에 충분하지 못할 때 작업의 수행 속도는 저하되며, 이런 자원 부족 상황은 해당 모바일 디바이스에서 같은 시각 수행되고 있는 타 어플리케이션의 수행 속도에 영향을 미친다.
따라서, 본 발명에서는 자원이 한정된 모바일 디바이스에서 특정 작업을 수행할 때, 해당 시점에서의 자원 상황을 판단하고, 여유 자원량이 부족하면 실시간으로 자원이 풍부한 다른 노드로 어플리케이션의 일부 컴포넌트를 오프로딩(offloading)하여 컴포넌트의 실행을 대신 처리하게 하고, 그 결과를 수신 받아 작업을 진행할 수 있도록 하는 동적 오프로딩 장치 및 방법을 제안토록 한다.
도 1은 본 발명의 일 실시예에 따른 모바일 디바이스에서 컴포넌트의 동적 오프로딩이 일어나는 흐름을 도시한 도면이다.
도 1을 참조하면, 모바일 디바이스(101)에 설치된 어플리케이션은 제1 컴포넌트(111)와 제2 컴포넌트(113)을 포함할 수 있다. 만약 모바일 디바이스(101)의 자원이 부족하다 판단되는 경우 모바일 디바이스(101)는 모바일 디바이스(101)와 네트워크로 연결된 외부 장치(103)로 제2 컴포넌트(113) 및 제2 컴포넌트를 실행하기 위한 데이터를 전송한다.
제2 컴포넌트(113)를 수신한 외부 장치(103)는 제2 컴포넌트(113)를 외부 장치(103)에 설치하고, 제2 컴포넌트(103)의 실행결과를 모바일 디바이스(101)로 전송한다.
여기서 외부 장치(103)는 어플리케이션이 실행 가능한 모바일 디바이스(103)와 네트워크로 연결된 장치를 의미하며, 설명의 편의를 위해 이하에서는 외부 장치(103)를 서버(103)인 것으로 하여 설명하나 이에 한정되지 않음은 당업자에게 있어 자명할 것이다.
하기에서는 도 2를 참조하여, 본 발명에 따른 모바일 디바이스에 설치된 어플리케이션의 동적 오프로딩 장치(200)의 구성을 상세하게 살펴본다.
도 2는 본 발명의 일 실시예에 따른 동적 오프로딩 장치의 상세구성을 도시한 도면이다.
도 2에 도시된 바와 같이 동적 오프로딩 장치(200)는 제어부(201), 저장부(203), 모니터링부(205), 전송부(207) 및 수신부(209)를 포함할 수 있다.
제어부(201)는 동적 오프로딩 장치(200)의 구성 요소들의 동작을 전반적으로 제어한다.
저장부(203)는 어플리케이션이 모바일 디바이스(101)에 설치되는 경우 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트가 서버(103)로 오프로딩 가능한지 여부 및 어플리케이션의 실행에 필요한 최소 자원양을 저장한다.
도 3은 본 발명의 일 실시예에 따른 동적 오프로딩 가능한 어플리케이션을 설명하기 위한 도면이다.
도 3 에서는 설명의 편의를 위해 모바일 디바이스(101)에 설치되는 어플리케이션은 모마일용 OS인 안드로이드를 이용하여 설계되며, 서버에 실행되는 컴포넌트는 자바 클래스를 이용하여 설계된 것으로 설명하나 이에 한정되는 것은 아니며, 다양한 모바일용 OS 가 이용될 수 있음은 당업자에게 있어 자명할 것이다.
도 3을 참조하면, 어플리케이션은 오프로딩 가능한 컴포넌트 및 오프로딩 불가능한 컴포넌트를 포함한다.
오프로딩 가능한 컴포넌트는 순수한 자바 클래스로 구현될 수 있으며, 자바 가상 머신(Java Virtual Machine, JVM)을 통해 실행된다. JVM은 자바 프로그램을 실행하기 위한 도구로써 자바 클래스로 구현된 컴포넌트는 JVM을 이용하여 어떤 플랫폼이든 구애 받지 않고 실행될 수 있다. 따라서, 자바 클래스로 구현된 컴포넌트는 서버(103)에서 실행이 가능하다.
오프로딩 불가능한 컴포넌트는 엑티비티(Activity), 서비스(Service), 컨텐츠 프로바이더(Content Provider) 및 브로드캐스트 리시버(Broadcast Recevier)를 포함하는 안드로이드 컴포넌트를 이용하여 구현되며, 이 컴포넌트들은 안드로이드 Dalvik VM에서만 실행이 가능하다. 따라서, 서버(103)로 오프로딩이 불가능한 컴포넌트들이다.
즉, 오프로딩 가능한 컴포넌트는 모바일 디바이스 외의 다른 장치로 오프로딩 되더라도 실행 가능한 컴포넌트를 의미하며, 오프로딩 불가능한 컴포넌트는 모바일 디바이스에서만 실행 가능한 컴포넌트를 의미한다.
따라서, 저장부(203)는 어플리케이션이 오프로딩 가능한 컴포넌트를 포함하고 있는 경우 상기 어플리케이션을 오프로딩 가능한 어플리케이션으로 등록한다.
본 발명의 일 실시예에 따르면, 어플리케이션이 모바일 디바이스(203)에 설치될 때 이러한 오프로딩 가능한 구조를 사전에 Manifest 파일에 기술하여 저장부(203)에 저장할 수 있다.
해당 Manifest 파일에는 다음과 같은 정보를 기술하며, 이는 XML을 이용하여 기술된다.
1. 동적 오프로딩의 실행에 필요한 오프로딩 가능한 어플리케이션 이름 및 패키지 구조
2. 오프로딩 가능한 컴포넌트 이름 및 실행 가능한 Public 오퍼레이션 정보
3. 이를 실행하기 위한 최저 필요 자원량 정보
다시 도 2를 참조하여, 동적 오프로딩 장치(200)의 상세한 구성에 대해 설명하도록 한다.
모니터링부(205)는 저장부(203)에 모바일 디바이스(101)의 가용 자원을 모니터링 한다. 보다 상세하게 모니터링부(205)는 모바일 디바이스의 CPU 사용량, 메모리 사용량, 배터리 잔량 및 네트워크 대역폭등을 종합적으로 고려하여 어플리케이션의 실행에 필요한 최소 자원양 이상의 자원이 가용한지 여부를 모니터링 한다.
이때, 모니터링부(205)는 기 설정된 시간에 따라 모바일 디바이스(101)의 사용 가능한 자원 여부를 모니터링 할 수 있다.
전송부(207)는 모니티링 결과 어플리케이션을 실행할 자원이 부족한 경우 어플리케이션에 포함된 오프로딩 가능한 컴포넌트 중 적어도 하나의 컴포넌트 및 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 서버로 전송한다.
수신부(209)는 서버로부터 적어도 하나의 컴포넌트의 수행결과를 수신한다.
본 발명의 일 실시예에 따르면, 수신부(209)는 모바일 디바이스와 통신 가능한 복수의 서버로부터 복수의 서버 각각에 대한 품질 정보를 더 수신할 수 있다.
서버의 품질 정보란 서버(103)와 모바일 디바이스(101)간의 네트워크 통신 상태, 서버 자체의 자원 가용량 중 적어도 하나를 포함할 수 있다.
이 경우, 전송부(207)는 복수의 서버 중 품질 정보가 기 설정된 값 이상인 서버를 선택하여 컴포넌트 및 컴포넌트의 실행을 위한 데이터를 전송할 수 있다.
또한, 수신부(209)는 서버(103)로부터 전송부(207)에서 전송하려는 오프로딩 가능한 적어도 하나의 컴포넌트가 서버(103)에 설치되었는지에 대한 정보를 수신할 수 있다.
이를 위해 전송부(207)가 적어도 하나의 컴포넌트에 대한 정보를 서버(103)로 전송하며, 서버(103)는 적어도 하나의 컴포넌트가 서버(103)에 설치되어 있는지를 판단하여 이에 대한 판단 정보를 수신부(209)로 전송한다.
만약 서버(103)에 적어도 하나의 컴포넌트가 이미 설치되어 있다면, 전송부(207)는 적어도 하나의 컴포넌트의 실행을 위한 데이터만을 서버(207)로 전송하게 된다.
도 4는 본 발명의 일 실시예에 따른 서버의 상세구성을 도시한 도면이다.
도 4에 도시된 바와 같이 서버(200)는 제어부(401), 수신부(403), 설치부(405), 실행부(407) 및 전송부(409), 판단부(411) 및 전송부(413)를 포함할 수 있다.
제어부(401)는 동적 오프로딩 장치(200)의 구성 요소들의 동작을 전반적으로 제어한다.
수신부(403)는 모바일 디바이스(101)에 설치된 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 수신한다.
설치부(405)는 수신부(401)에 적어도 하나의 컴포넌트가 수신되는 경우 적어도 하나의 컴포넌트를 서버에 설치 한다.
실행부(407)는 수신부(403)에 수신된 데이터를 이용하여 적어도 하나의 컴포넌트를 실행하고 실행 결과를 생성한다.
이어서, 전송부(409)는 상기 실행 결과를 모바일 디바이스(101)로 전송한다.
본 발명의 일 실시예에 따르면, 판단부(411)는 모바일 디바이스(101)에서 전송되는 적어도 하나의 컴포넌트에 대한 정보를 이용하여 컴포넌트가 서버(103)에 설치되어 있는지 여부를 판단할 수 있다.
판단부(411)에서 적어도 하나의 컴포넌트가 이미 설치되어 있다 판단되는 경우 전송부(409)는 이에 대한 정보를 모바일 디바이스(101)의 수신부(203)로 전송하며, 이 경우, 모바일 디바이스(101)는 적어도 하나의 컴포넌트의 실행을 위한 데이터를 서버(103)로 전송한다.
저장부(413)는 서버(103)와 통신하는 모바일 디바이스(101)에 대한 정보, 오프로딩 가능한 어플리케이션의 정보, 전송된 오프로딩 가능한 컴포넌트 정보, 전체 프레임워크에서 발생한 오프로딩 로그 정보 등을 저장할 수 있다.
도 5는 본 발명의 일 실시예에 따른 동적 오프로딩 방법에 대한 전체적인 흐름을 도시한 순서도이다.
이하, 도 5를 참조하여 각 단계에서 수행되는 과정을 살펴보도록 한다.
도 5를 참조하면, 단계(S500)에서 모바일 디바이스(101)는 모바일 디바이스의 자원량을 모니터링 한다.
이어서, 단계(S505)에서 모바일 디바이스(101)에 설치된 어플리케이션을 실행할 자원이 모바일 디바이스의 가용 자원보다 큰지 판단한다. 만약, 가용 자원보다 어플리케이션을 실행할 자원보다 큰 경우 단계(S510)에서 어플리케이션에 포함된 컴포넌트 중 오프로딩 가능한 컴포넌트의 정보를 서버(103)로 전송한다.
서버(103)는 단계(S515)에선 오프로딩 가능한 컴포넌트가 서버(103)에 설치되었는지를 판단하고, 단계(S520)에서 설치 여부 판단에 대한 정보를 모바딜 디바이스(101)로 전송한다.
이어서, 단계(S525)에서는 설치 여부 판단에 대한 정보를 파악하고, 서버에 오프로딩 가능한 컴포넌트가 미 설치된 경우 단계(S530)에서 오프로딩 가능한 컴포넌트 및 상기 컴포넌트를 실행하기 위한 데이터를 서버(103)로 전송한다.
단계(S534)에서 서버(103)는 오프로딩 가능한 컴포넌트를 수신하여 서버(103)에 설치한다.
서버에 오프로딩 가능한 컴포넌트가 기 설치된 경우에는 단계(S540)에서 오프로딩 가능한 컴포넌트의 실행을 위한 데이터만을 서버(103)로 전송한다.
단계(S545)에서는 오프로딩 가능한 컴포넌트를 실행한다. 이어서, 단계(S550)에서는 그 실행에 대한 결과값을 모바일 디바이스(101)로 전송한다.
상기에서 설명한 바와 같이 본 발명의 모바일 디바이스(101)에 설치되는 어플리케이션은 오프로딩 가능한 컴포넌트와 불가능한 컴포넌트를 동시에 포함한다. 따라서 모바일 디바이스(101)의 자원이 풍부한 경우에는 모바일 디바이스(101)에서 어플리케이션에 포함된 모든 컴포넌트에 대한 작업을 실행함으로써 서버와의 네트워크 연결할 필요 없이 빠르게 작업을 수행할 수 있다. 또한, 모바일 디바이스(101)의 자원이 부족한 상황이 발생하더라도, 오프로딩 가능한 컴포넌트를 서버(103)로 오프로딩 시켜 해당 작업을 서버에서 실행되게 함으로써, 동적으로 변하는 모바일 디바이스의 자원 상황에 능동적으로 대처하며 어플리케이션을 빠르게 실행시킬 수 있는 장점이 있다.
도 6은 본 발명의 일 실시예에 따른 모바일 디바이스와 서버의 프레임워크 아키텍처의 일례를 도시한 도면이다.
도 6에서 Agent.Mobile(601)은 도 2의 모니터링부(205), 전송부(207), 수신부(209)의 구성과 대응되며, 각 모바일 디바이스(101)에 설치되어 동적 오프로딩 관련 작업인 모바일 디바이스(101)의 현재 자원 상태 측정, 오프로딩 여부 결정, 오프로딩 가능한 컴포넌트 전송 등을 수행한다.
Agent.DB(603)는 도 2의 저장부(203)의 구성과 대응되며, 오프로딩 가능한 어플리케이션, 오프로딩 가능한 컴포넌트 정보, 해당 모바일 디바이스(101)에서 일어난 오프로딩 로그 정보 등을 저장한다.
오프로딩 매니저(611)는 도 4의 수신부(403), 설치부(405), 실행부(407), 전송부(409) 및 판단부(411)의 구성과 대응되며, 각 서버(103) 노드에 설치되어 오프로딩된 컴포넌트와 데이터를 받아 서버에 서버(103)에 설치 및 실행하여 결과를 해당 Agent.Mobile(601)로 전송하는 역할을 수행한다.
Server.DB(613)은 도 4의 저장부(413)의 구성과 대응되며, 서버(103)측과 통신하는 Agent.Moblie(603) 정보, 오프로딩 가능한 어플리케이션 정보, 전송된 오프로딩 가능한 컴포넌트 정보, 전체 프레임워크에서 발생한 오프로딩 로그 정보 등을 저장하는 역할을 수행한다.
도 7은 본 발명의 일 실시예에 따른 동적 오프로딩 프레임워크의 일례를 도시한 도면이다.
Agent.Moblie(601)은 MVC(Model, View, Controller) 패턴을 적용하여 안드로이드 환경에서 실행되도록 설계되었다. 도 7(a)는 Agent.Moblie의 구조를 보여주는 클래스 다이어그램이다.
도 7(a)를 참조하면, 컨트롤 계층은 3개의 클래스로 구성된다. Agent.OffloadingHandler는 오프로딩 기능을 담당하는 컨트롤러로 안드로이드의 Service를 이용하도록 설계된다. RegisterApplicationReceiver는 어플리케이션 설치시 발생하는 브로드캐스트를 받기 위한 클래스이다. RegisterApplication은 RegisterApplicationReceiver에 의해 호출되며, 오프로딩이 가능한 어플리케이션의 정보를 Agent.DB(603)에 저장하기 위한 클래스로서 안드로이드의 Sevice를 사용한다.
모델 계층은 어플리케이션 정보(Agent_Application), 어플리케이션에 포함된 오프로딩 가능한 클래스 정보(RemotableComponent), 오프로딩 과거기록(Agent_Offload), 모바일 디바이스에서 실행된 과거기록(Agetn_NonOffload)을 다루기 위한 클래스로 구성된다.
오프로딩 매니저(611)는 JVM(Java Virtual Machine)에서 실행되며 서버(103)에서 오프로딩을 관리하도록 그림 7(b)의 클래스 다이어그램을 이용하여 설계된다.
컨트롤 계층은 Agent.Mobile(601)에서 전송한 오프로딩 가능한 컴포넌트를 받아 실행하고, 그 결과값을 해당 Agent.Mobile(601)에 전송하는 컨트롤러인 Server.OffloadingHandler와 더이상 사용되지 않는 오프로드된 컴포넌트를 삭제하는 Server_OffloadingCoomponentDeleteManager로 구성된다.
모델 계층은 서버로 오프로딩된 어플리케이션과 컴포넌트 정보(Server_Application, OffloadComponent), 어플리케이션이 설치되었던 모바일 디바이스 정보(MobileDevice), 서버로 전송된 오프로드 기록(Server_Offload)을 관리하는 클래스로 구성된다.
모바일 디바이스는 매 어플리케이션이 전송되어 설치될 때마다 해당 이벤트를 발생시키고, Agent.Mobile(601)은 설치에 해당하는 이벤트를 처리할 수 있는 onRecevier()를 구현하여 어플리케이션의 Manifest 파일을 읽어 오프로딩 가능한 컴포넌트 등에 대한 정보를 알아낸다.
아래의 표 1은 이에 해당하는 소스코드의 일부를 나타낸다.
1. public class RegisterApplicationReceiver
extends BroadcastReceiver{
2. @Override
3. public void onReceive(Context context, Intent intent) {
4.
5. //모바일 어플리케이션 패키지가 설치될 때마다 실행됨.
6. if(intent.getAction().equals("android.intent.action. PACKAGE_ADDED")){
7. //Retrieve package name form intent
8. String packageName =
intent.getDataString().substring(8);
9. Intent registerAppInfo_Intent =
new Intent(context,RegisterApplication.class);
10. registerAppInfo_Intent.putExtra("packageName", packageName);
11.
12. //오프로딩 가능한 모바일 어플리케이션 정보를 등록함.
13. context.startService(registerAppInfo_Intent);
14. }
Agent.Mobile(601)은 오프로딩 가능한 모바일 어플리케이션이 실행될 때마다 현재 사용 가능한 자원 정보를 획득한다. 이때 "오류! 참조 원본을 찾을 수 없습니다." 와 같은 품질 메트릭을 이용할 수 있다.
아래의 표2는 속성별 품질 메트릭으 나타낸다.
속성 메트릭
CPU
사용량
Figure 112011099666732-pat00001
메모리
사용량
Figure 112011099666732-pat00002
배터리량
Figure 112011099666732-pat00003
이어서, Agent.Moblie(601)은 모니터링한 사용 가능한 자원양을 이용하여 동적 오프로딩을 수행할지 여부를 결정한다. 아래의 표 3은 현재 이용 가능한 자원양과 오프로딩 실행 과거 히스토리를 이용하여 동적 오프로딩 여부를 결정하는 알고리즘을 나타낸다.
If ( the needed resource ( Available CPU Utilization , Available Memory , Available Battery Capacity ) is insufficient ),
If ( the history of offloading the component shows a positive result ,
Then Offloading
Else
No Offloading
Else
No offloading
If ( available CPU utilization > threshold value of available CPU ) || ( available memory capacity > threshold value of available memory capacity ) || ( available battery capacity > threshold value of available battery capacity ) )
If average of response time with offloading < average of response time without offloading
Then offloading
Else
No offloading
Else
No offloading
Agent.Moblie(601)에서 오프로딩 가능한 컴포넌트의 동적 오프로딩 여부가 결정되며, 해당 컴포넌트를 오프로딩 매니저(611)에게 전달한다.
도 8은 본 발명의 일 실시예에 따른 Agent.Moblie에서 컴포넌트를 오프로딩 매니저로 전송하는 과정을 도시한 시퀀스 다이어그램이다.
도 8을 참조하면, Agent.Moblie(601)은 실시간으로 모바일 디바이스의 자원을 측정하여 오프로딩 여부를 결정한 후, 오프로딩 가능한 컴포넌트를 오프로딩 매니저로 전송한다. 이 과정은 사용자의 직접적인 입력 없이 이루어진다.
Agent.Mobile(601)에서 오프로딩이 결정되면 해당 오프로딩 가능한 컴포넌트 정보, 어플리케이션 정보를 Agent.DB(603)으로부터 가져와 오프로딩 매니저(611)로 보낸다. 이는 서버에 오프로딩 가능한 컴포넌트가 존재하는지 여부를 확인하기 위함이다. 서버에 동일한 오프로딩 가능한 컴포넌트가 설치되어 있다면 컴포넌트의 실행을 위한 데이터만 전송한다. 이어서, 서버로부터 온 결과값만을 전달하고, 오프로딩 된 과거 기록을 저장한다.
아래의 표 4는 상기 과정을 위해 Agent.Moblie(601)측에서 오프로딩 가능한 컴포넌트를 오프로딩하는 부분의 소스코드의 일부를 나타낸다.
15. public String offloadToServer(int serverID, int componentID,
Bundle data) throws ClassNotFoundException{
16.
17. ObjectOutputStream oOut = new ObjectOutputStream(out);
18. ComponentMessage compoMsg
=this.sendMessage(oOut,in,componentID); //메시지 전송
19. // 동일한 컴포넌트가 있는지 서버 측에 확인
20. Boolean componentExistCheck=dIn.readBoolean();
21. //서버에 컴포넌트가 없으면, 해당 컴포넌트 파일 전송
22. if(componentExistCheck == false) {
23. this.sendComponentFile(manager,compoMsg,out,in);
24. }
25. this.sendDataFile(manager, compoMsg, out, in);//관련데이터전송
26.
27. Object obj = oIn.readObject(); // 서버에서 실행된 결과 받음.
그리고 아래의 표 5는 오프로딩 매니저 측에서 전달받은 오프로딩 가능한 컴포넌트를 설치하고 실행하는 부분을 나타낸다.
1. private Object executeComponent(MobileMessage agentMsg, ApplicationMessage appMsg, ComponentMessage compoMsg, Object data) throws IOException {
. . . //Remotable 컴포넌트 파일 객체를 생성한다.
2. ClassLoader cl = new URLClassLoader(urls);
3. // 컴포넌트 클래스 로드함.
4. Class<?> cls = Class.forName(compoMsg.packageName+"."+compoMsg.componentName, true, cl);
5. //로드된 클래스에 정의된 생성자 정보 읽음.
6. Constructor<?> constructor1 = cls.getConstructor(new Class{});
7. //생성자 이용하여 객체 생성
8. Object object1 = constructor1.newInstance();
9. // 호출할 메소드 정보 읽음.
10. Method method = cls.getMethod(compoMsg.methodName, new Class {Object.class});
11. // Remotable 컴포넌트 실행
12. Object resultObj = method.invoke(object1, data);
13. return resultObj;
또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
101: 모바일 디바이스 103: 서버
111: 제1 컴포넌트 113: 제2 컴포넌트
200: 동적 오프로딩 장치 201: 제어부
203: 저장부 205: 모니터링부
207: 전송부 209: 수신부
401: 제어부 403: 수신부
405: 설치부 407: 실행부
409: 전송부 411: 판단부
413: 저장부
601: Agent.DB 603: Agent.DB
611: 오프로딩 매니저 613: Server.DB

Claims (13)

  1. 모바일 디바이스에 설치된 어플리케이션의 동적 오프로딩 장치에 있어서,
    상기 모바일 디바이스의 자원을 모니터링하는 모니터링부;
    상기 모니터링 결과 상기 어플리케이션을 실행할 자원이 부족한 경우 상기 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 서버로 전송하는 전송부; 및
    상기 서버로부터 상기 적어도 하나의 컴포넌트의 실행 결과를 수신하는 수신부를 포함하되,
    상기 어플리케이션은 오프로딩 가능한 컴포넌트와 오프로딩 불가능한 컴포넌트를 포함하며, 상기 전송부는 상기 오프로딩 가능한 컴포넌트 중 상기 적어도 하나의 컴포넌트를 선택하여 전송하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 장치.
  2. 제1항에 있어서,
    상기 자원은 상기 모바일 디바이스의 CPU 사용량, 메모리 사용량, 네트워크 대역폭 및 배터리 량 중 적어도 하나를 포함하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 장치.
  3. 제1항에 있어서,
    상기 수신부는 상기 모바일 디바이스와 통신 가능한 복수의 서버로부터 상기 복수의 서버 각각에 대한 품질 정보를 더 수신하며,
    상기 전송부는 상기 복수의 서버 중 상기 품질 정보가 기 설정된 값 이상인 서버를 선택하여 상기 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 전송하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 장치.
  4. 제1항에 있어서,
    상기 수신부는 상기 서버로부터 상기 적어도 하나의 컴포넌트가 상기 서버에 설치되었는지에 대한 정보를 더 수신하며,
    상기 전송부는 상기 서버에 상기 적어도 하나의 컴포넌트가 이미 설치되어 있는 경우 상기 데이터를 상기 서버로 전송하며, 상기 서버에 상기 적어도 하나의 컴포넌트가 미 설치된 경우 상기 적어도 하나의 컴포넌트 및 상기 데이터를 상기 서버로 전송하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 장치.
  5. 삭제
  6. 제1항에 있어서,
    상기 어플리케이션이 상기 모바일 디바이스에 설치되는 경우, 상기 어플리케이션에 포함된 컴포넌트 중 적어도 하나의 컴포넌트가 상기 서버로 오프로딩 가능한지 여부 및 상기 어플리케이션의 실행에 필요한 자원양 중 적어도 하나를 등록하는 저장부를 더 포함하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 장치.
  7. 모바일 디바이스와 통신 가능한 서버에 있어서,
    상기 모바일 디바이스에 설치된 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 수신하는 수신부;
    상기 데이터를 이용하여 상기 적어도 하나의 컴포넌트를 실행하는 실행부; 및
    상기 실행결과를 상기 모바일 디바이스로 전송하는 전송부를 포함하되,
    상기 수신부는 상기 적어도 하나의 컴포넌트에 대한 정보를 수신하며,
    상기 적어도 하나의 컴포넌트에 대한 정보를 이용하여 상기 적어도 하나의 컴포넌트가 상기 서버에 설치되었는지 여부를 판단하는 판단부를 더 포함하며,
    상기 전송부는 상기 적어도 하나의 컴포넌트의 설치 여부에 대한 정보를 상기 모바일 디바이스로 전송하는 것을 특징으로 하는 서버.
  8. 삭제
  9. 제7항에 있어서,
    상기 모바일 디바이스는 상기 서버에 상기 적어도 하나의 컴포넌트가 이미 설치되어 있는 경우 상기 데이터를 상기 수신부로 전송하며, 상기 서버에 상기 적어도 하나의 컴포넌트가 미 설치된 경우 상기 적어도 하나의 컴포넌트 및 상기 데이터를 상기 수신부로 전송하는 것을 특징으로 하는 서버.
  10. 청구항 10은(는) 설정등록료 납부시 포기되었습니다.
    제9항에 있어서,
    상기 적어도 하나의 컴포넌트를 상기 서버에 설치하는 설치부를 더 포함하는 것을 특징으로 하는 서버.
  11. 모바일 디바이스에 설치된 어플리케이션의 동적 오프로딩 방법에 있어서,
    상기 모바일 디바이스의 자원을 모니터링하는 단계(a);
    상기 모니터링 결과 상기 어플리케이션을 실행할 자원이 부족한 경우 상기 어플리케이션에 포함된 복수의 컴포넌트 중 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 서버로 전송하는 단계(b); 및
    상기 서버로부터 상기 적어도 하나의 컴포넌트의 수행 결과를 수신하는 단계(c)를 포함하되,
    상기 어플리케이션은 오프로딩 가능한 컴포넌트와 오프로딩 불가능한 컴포넌트를 포함하며, 상기 전송하는 단계는 상기 오프로딩 가능한 컴포넌트 중 상기 적어도 하나의 컴포넌트를 선택하여 전송하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 방법.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제11항에 있어서,
    상기 모바일 디바이스와 통신 가능한 복수의 서버로부터 상기 복수의 서버 각각에 대한 품질 정보를 수신하는 단계를 더 포함하되,
    상기 전송하는 단계는 상기 복수의 서버 중 상기 품질 정보가 기 설정된 값 이상인 서버를 선택하여 상기 적어도 하나의 컴포넌트 및 상기 적어도 하나의 컴포넌트의 실행을 위한 데이터 중 적어도 하나를 전송하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 방법.
  13. 청구항 13은(는) 설정등록료 납부시 포기되었습니다.
    제11항에 있어서,
    상기 서버로 상기 적어도 하나의 컴포넌트에 대한 정보를 전송하는 단계; 및
    상기 서버로부터 상기 적어도 하나의 컴포넌트가 상기 서버에 설치되었는지에 대한 정보를 수신하는 단계를 더 포함하되,
    상기 전송하는 단계는 상기 서버에 상기 적어도 하나의 컴포넌트가 이미 설치되어 있는 경우 상기 데이터를 상기 서버로 전송하며, 상기 서버에 상기 적어도 하나의 컴포넌트가 미 설치된 경우 상기 적어도 하나의 컴포넌트 및 상기 데이터를 상기 서버로 전송하는 것을 특징으로 하는 어플리케이션의 동적 오프로딩 방법.
KR1020110135155A 2011-12-15 2011-12-15 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법 KR101331897B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110135155A KR101331897B1 (ko) 2011-12-15 2011-12-15 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110135155A KR101331897B1 (ko) 2011-12-15 2011-12-15 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130070663A KR20130070663A (ko) 2013-06-28
KR101331897B1 true KR101331897B1 (ko) 2013-11-21

Family

ID=48865332

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110135155A KR101331897B1 (ko) 2011-12-15 2011-12-15 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101331897B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104981793B (zh) * 2013-01-31 2017-08-08 惠普发展公司,有限责任合伙企业 成像设备、资源服务器及操作该成像设备的方法
US20160292009A1 (en) * 2013-12-20 2016-10-06 David Kaplan Execution offloading through syscall trap interface
KR102237385B1 (ko) * 2019-10-17 2021-04-06 고려대학교 산학협력단 신뢰성을 보장하는 단말 간 오프로딩 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050115761A (ko) * 2004-06-05 2005-12-08 소프트온넷(주) 컴퓨터에 설치, 실행 혹은 사용중인 프로그램에 대한 정보분석, 추출, 저장 관리 및 통계를 위한 장치, 시스템,방법 및 이를 프로그램화하여 수록한 컴퓨터로 읽을 수있는 기록매체
KR20060134477A (ko) * 2005-06-22 2006-12-28 (주)메타브레인 데이터파일 원격 실행 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050115761A (ko) * 2004-06-05 2005-12-08 소프트온넷(주) 컴퓨터에 설치, 실행 혹은 사용중인 프로그램에 대한 정보분석, 추출, 저장 관리 및 통계를 위한 장치, 시스템,방법 및 이를 프로그램화하여 수록한 컴퓨터로 읽을 수있는 기록매체
KR20060134477A (ko) * 2005-06-22 2006-12-28 (주)메타브레인 데이터파일 원격 실행 시스템 및 방법

Also Published As

Publication number Publication date
KR20130070663A (ko) 2013-06-28

Similar Documents

Publication Publication Date Title
US11467890B2 (en) Processing event messages for user requests to execute program code
US10437629B2 (en) Pre-triggers for code execution environments
US9760387B2 (en) Programmatic event detection and message generation for requests to execute program code
US11870702B1 (en) Dynamic resource allocation of cloud instances and enterprise application migration to cloud architecture
US8209417B2 (en) Dynamic resource profiles for clusterware-managed resources
US7996525B2 (en) Systems and methods for dynamically provisioning cloud computing resources
US9185179B2 (en) Re-establishing push notification channels via user identifiers
US9800673B2 (en) Service compiler component and service controller for open systems interconnection layer 4 through layer 7 services in a cloud computing system
US9110844B2 (en) State maintenance as a service
US20170199766A1 (en) Low latency computational capacity provisioning
US20170353397A1 (en) Offloading Execution of an Application by a Network Connected Device
CN107135279B (zh) 一种处理长连接建立请求的方法和装置
EP2641419B1 (en) A method and system for cell recovery in telecommunication networks
US8738775B1 (en) Managing resource dependent workflows
EP2630576B1 (en) Goal state communication in computer clusters
CN111858054A (zh) 一种异构环境下基于边缘计算的资源调度系统及方法
CN115328752B (zh) 一种用于Kubernetes控制面测试的集群模拟方法及系统
KR101331897B1 (ko) 모바일 디바이스 어플리케이션의 동적 오프로딩 장치 및 방법
US10348814B1 (en) Efficient storage reclamation for system components managing storage
JP2005531061A (ja) モバイルアプリケーションのための実行環境
KR101608859B1 (ko) 클라우드 기반의 지능형 전력제어 시스템
US11080083B1 (en) Providing physical host hardware state information to virtual machines deployed on the physical host
KR101378350B1 (ko) 서비스 컴포넌트의 동적 이주 장치 및 방법
US10860347B1 (en) Virtual machine with multiple content processes
La et al. Dynamic architecture for autonomously managing service-based applications

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161024

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181022

Year of fee payment: 6