KR20180034963A - 프로세스 클라우드 시스템 및 방법 - Google Patents

프로세스 클라우드 시스템 및 방법 Download PDF

Info

Publication number
KR20180034963A
KR20180034963A KR1020160124861A KR20160124861A KR20180034963A KR 20180034963 A KR20180034963 A KR 20180034963A KR 1020160124861 A KR1020160124861 A KR 1020160124861A KR 20160124861 A KR20160124861 A KR 20160124861A KR 20180034963 A KR20180034963 A KR 20180034963A
Authority
KR
South Korea
Prior art keywords
cloud
cloud server
terminal
process image
image
Prior art date
Application number
KR1020160124861A
Other languages
English (en)
Inventor
김성민
김태석
김규식
Original Assignee
광운대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광운대학교 산학협력단 filed Critical 광운대학교 산학협력단
Priority to KR1020160124861A priority Critical patent/KR20180034963A/ko
Publication of KR20180034963A publication Critical patent/KR20180034963A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 프로세스 클라우드 시스템 및 방법에 관한 것으로, 클라우드 시스템의 단말기는 프로세스를 클라우드 서버에 저장하는 요청을 감지하면 요청된 프로세스에 관한 프로세스 이미지를 생성하고, 프로세스 이미지를 클라우드 서버로 송신하면, 클라우드 시스템의 클라우드 서버는 수신한 프로세스 이미지를 저장하고, 단말기로부터 프로세스 이미지의 복구를 요청 받으면 프로세스 이미지를 단말기로 송신하고, 단말기는 프로세스 이미지를 수신하면 프로세스를 복구한다.

Description

프로세스 클라우드 시스템 및 방법{Process cloud system and method}
이하의 일 실시 예들은 클라우드 시스템을 통해서 클라우드 서비스를 제공하는 방법에 관한 것이다.
최근 차세대 통신 기술로 부상하고 있는 5G 네트워크는 종전 LTE보다 최대 1000배 빠른 통신망으로, 고용량의 데이터를 거의 실시간으로 내려받을 수 있다. 5G 네트워크가 널리 보급되어 네트워크 병목현상이 사라진다면 다양한 모바일 기기들이 클라우드의 능력을 활용할 수 있는 폭이 훨씬 넓어져, 클라우드가 모바일 기기의 연산과 저장을 완전히 대체하는 클라우드 스트리밍이라는 형태의 클라우드 구현이 현실화된다. 즉, 클라우드에서 모든 연산처리 및 데이터 저장을 담당하고, 모바일 기기에서는 클라우드 서버가 보내는 화면 이미지만을 받아 출력하는 과거 메인프레임 시대의 터미널 역할을 수행하는 것이다.
이러한 클라우드 스트리밍 방식은 성능이 우수한 클라우드 서버에서 모든 일을 처리하는 궁극의 클라우드 구현방식이라 할 수 있지만, 클라우드 중심으로 동작하기 때문에 클라우드 서비스 업체에 의존할 수밖에 없고, 서비스의 품질이 네트워크에 의해 크게 영향을 받게 되고, 또한 지속적인 네트워크 통신이 필요해 전력소모가 극심하다.
한편, 동작중인 시스템 상태를 스토리지에 저장한 후 복원하는 기법에 대한 연구들이 여러 차례 진행되어왔다. 국내의 대학에서는 커널 및 유저 프로세스 정보를 비휘발성 메모리에 저장하고 복원함으로써 시스템의 빠른 인스턴트 on/off를 구현하였다. 또한, 국내의 다른 대학에서는 부팅에 필요한 커널 이미지 관련 정보를 비휘발성 메모리에 저장하고 복원함으로써 빠른 부팅에 성공하였다. 하지만, 위의 대학에서 구현한 방법은 클라우드나 네트워크 환경을 고려한 것은 아니고 단일 장치에서 프로세스 저장 및 복원에 관한 것으로 STT-RAM(Spin Transfer Torque RAM) 등의 비휘발성을 활용한 기술이다. 애플사에서는 아이폰, 아이패드 등 자사 제품들 간의 연속성을 지원하기 위하여 네트워크로 관련 정보를 전송하여 다른 장치에서 재실행하는 기법을 상용화하였다. 하지만 애플의 기법은 실행 중이었던 위치를 공유하는 것에 불과한 것으로, 일부 응용에 국한될 뿐만 아니라 무엇보다 자사 제품군을 위한 것으로 개방형 플랫폼이 아니다.
따라서, 클라우드 스트리밍 방식이 아닌 행 중인 프로세스를 클라우드에 저장하고 필요할 때 다시 복원해서 재개할 수 있는 새로운 클라우드 시스템이 요구된다.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 단말기에서 실행중인 프로세스를 클라우드 서버에 저장하고, 이후 복원하는 클라우드 시스템 및 방법을 제공하는 것을 목적으로 한다.
구체적으로, 본 발명은 단말기에서 프로세스를 클라우드 서버에 저장하는 요청을 감지하면, 요청된 프로세스에 관한 프로세스 이미지를 생성하고, 프로세스 이미지를 클라우드 서버로 송신하여 저장하도록 요청하는 프로세스를 클라우드 처리하는 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 단말기에서 프로세스를 복구하는 요청을 감지하면, 상기 클라우드 서버로 프로세스 이미지의 복구를 요청하고, 클라우드 서버에 저장된 프로세스 이미지를 수신하여 복구하고 실행하는 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명은 클라우드 서버에서 클라우드 저장소를 생성하여 단말기로부터 수신하는 프로세스 이미지를 저장하고, 복구요청에 따라 프로세스 이미지를 단말기로 제공하고, 실행요청을 받으면 프로세스 이미지를 클라우드 서버에서 실행하는 방법을 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 클라우드 처리하는 방법은, 프로세스를 클라우드 서버에 저장하는 요청을 감지하면, 요청된 프로세스에 관한 프로세스 이미지를 생성하는 단계; 및 상기 프로세스 이미지를 상기 클라우드 서버로 송신하여 저장하도록 요청하는 단계를 포함한다.
이때, 상기 프로세스 이미지는, 프로세스의 복원에 필요한 정보인 메모리 주소공간(memory address space), CPU 레지스터의 값, 커널 내 자료구조(task_struct)를 포함할 수 있다.
이때, 상기 프로세스 이미지를 생성하는 단계는, 상기 프로세스를 저장하는 요청을 감지하는 단계; 상기 프로세스가 입출력 중이지 않은 안전한 상태인지 확인하는 단계; 확인결과 상기 프로세스가 안전한 상태이면, 상기 프로세스를 복원하는데 필요한 정보를 수집하는 단계; 및 상기 프로세스를 복원하는데 필요한 정보를 포함하는 상기 프로세스 이미지를 생성하는 단계를 포함할 수 있다.
이때, 단말기에서 프로세스를 클라우드 처리하는 방법은, 상기 프로세스 이미지를 상기 클라우드 서버로 송신하여 저장하도록 요청하는 단계 이전에, 상기 프로세스 이미지를 저장할 공간인 상기 클라우드 저장소를 생성할 것을 상기 클라우드 서버로 요청하는 단계를 더 포함할 수 있다.
이때, 상기 프로세스 이미지를 저장할 공간인 상기 클라우드 저장소를 생성할 것을 상기 클라우드 서버로 요청하는 단계는, 상기 클라우드 저장소에 저장된 프로세스 이미지의 목록을 열람할 수 있는 사용자를 설정하는 단계를 포함할 수 있다.
이때, 단말기에서 프로세스를 클라우드 처리하는 방법은, 상기 프로세스를 복구하는 요청을 감지하면, 상기 클라우드 서버로 상기 프로세스 이미지의 복구를 요청하는 단계; 상기 클라우드 서버로부터 상기 클라우드 서버에 저장된 상기 프로세스 이미지를 수신하는 단계; 및 상기 수신한 프로세스 이미지를 복구하여 실행하는 단계를 더 포함할 수 있다.
이때, 단말기에서 프로세스를 클라우드 처리하는 방법은, 상기 클라우드 서버에 저장된 상기 프로세스 이미지를 상기 클라우드 서버에서 실행하는 요청을 감지하면, 상기 클라우드 서버로 상기 프로세스 이미지의 실행을 요청하는 단계를 더 포함할 수 있다.
이때, 상기 프로세스 이미지를 상기 클라우드 서버로 송신하여 저장하도록 요청하는 단계는, 상기 프로세스 이미지에 접근 권한을 부여하는 단계를 포함할 수 있다.
본 발명의 일 실시 예에 따른 클라우드 서버에서 프로세스를 클라우드 처리하는 방법은, 단말기로부터 프로세스 이미지를 저장하는 저장공간의 생성을 요청받으면, 클라우드 저장소를 생성하는 단계; 상기 단말기로 프로세스 이미지를 수신하면, 수신한 상기 프로세스 이미지를 상기 클라우드 저장소에 저장하는 단계를 포함할 수 있다.
이때, 상기 프로세스 이미지는, 프로세스의 복원에 필요한 정보인 메모리 주소공간(memory address space), CPU 레지스터의 값, 커널 내 자료구조(task_struct)를 포함할 수 있다.
이때, 클라우드 서버에서 프로세스를 클라우드 처리하는 방법은, 상기 단말기로부터 상기 프로세스 이미지의 복원을 요청 받으면, 상기 클라우드 저장소에 상기 프로세스 이미지를 검색하여 상기 단말기로 송신하는 단계를 더 포함할 수 있다.
이때, 클라우드 서버에서 프로세스를 클라우드 처리하는 방법은, 상기 단말기로부터 상기 프로세스 이미지의 실행을 요청 받으면, 상기 클라우드 저장소에 상기 프로세스 이미지를 검색하여 상기 클라우드 서버에서 실행하는 단계를 더 포함할 수 있다.
이때, 상기 클라우드 저장소를 생성하는 단계는, 요청에 따라 설정된 사용자만이 상기 클라우드 저장소에 저장된 프로세스 이미지의 목록을 열람할 수 있도록 설정하는 단계를 포함할 수 있다.
이때, 수신한 상기 프로세스 이미지를 상기 클라우드 저장소에 저장하는 단계는, 상기 프로세스 이미지에 관한 접근 권한을 수신하여 저장하는 단계를 포함할 수 있다.
본 발명은 단말기에서 실행 중인 프로세스를 클라우드 서버에 저장하고 필요할 때 다시 복원해서 재개할 수 있고, 단말기에서 실행중인 프로세스를 클라우드 서버에 저장한 후에 다른 단말기에서 복원하여 재개하는 단말기 간의 프로세스의 연속 실행을 제공할 수 있고, 클라우드 서버에 저장된 프로세스를 단말기가 아닌 클라우드 서버에서 직접 실행할 수 있도록 하여 단말기의 배터리 소모량을 줄이는 연산 오프로딩(computation offloading) 기법을 제공할 수 있다.
도 1은 본 발명의 일 실시 예에 따른 클라우드 시스템의 개략적인 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 클라우드 시스템에서 프로세스를 저장하고 복원하는 과정을 도시한 흐름도이다.
도 3은 본 발명의 일 실시 예에 따른 클라우드 시스템에서 프로세스를 저장하고 다른 단말기에서 복원하는 과정을 도시한 흐름도이다.
도 4는 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 저장하는 과정을 도시한 흐름도이다.
도 5는 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 복원하는 과정을 도시한 흐름도이다.
도 6은 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 클라우드 서버에서 실행하는 과정을 도시한 흐름도이다.
도 7은 본 발명의 일 실시 예에 클라우드 서버에서 프로세스를 저장하는 과정을 도시한 흐름도이다.
도 8은 본 발명의 일 실시 예에 클라우드 서버에서 프로세스를 복원하는 과정을 도시한 흐름도이다.
도 9는 본 발명의 일 실시 예에 클라우드 서버에서 단말기의 요청에 따라 프로세스를 실행하는 과정을 도시한 흐름도이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시 예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시 예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 프로세스 클라우드 시스템 및 방법을 첨부된 도 1 내지 도 9를 참조하여 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 클라우드 시스템의 개략적인 구성을 도시한 도면이다.
도 1을 참조하면, 클라우드 시스템은 제1 단말기(110)에서 실행 중이던 프로세스를 클라우드 서버(100)에 저장하고, 필요할 때, 동일한 제1 단말기(110) 또는 다른 단말기인 제2 단말기(120)에서 복원하여 실행할 수 있다.
프로세스를 클라우드 서버(100)에 저장하기 위해서, 먼저 클라우드 서버에 프로세스 이미지를 저장하는 공간인 클라우드 저장소(cloud repository)를 생성한다.
클라우드 저장소는 클라우드 서버(100)의 메인 메모리가 아닌 저장장치에 물리적으로 할당되는 공간으로, 응용 프로그램이나 데이터 파일을 저장하는 파일시스템과는 별개의 공간이다. 사용자가 저장하고자 하는 각 프로세스 이미지는 클라우드 저장소에 파일 형태로 저장되고, 파일명은 사용자가 지정하는 이름과 버전이 결합된 형태로 구성될 수 있다.
제1 단말기(110)에서 실행 중이던 프로세스를 클라우드 서버(100)에 저장하는 기법의 핵심은 정지된 프로세스를 재개할 때 필요한 모든 정보를 하나도 빠짐없이 수집하여 잘 정의된 클라우드 내 자료구조에 저장한 후, 필요할 때 그대로 복원하는 것이다. 기본적으로 복원에 필요한 프로세스 관련 정보는 메모리 주소공간(memory address space), CPU 레지스터의 값, 커널 내 자료구조(task_struct) 등이다. 복원에 필요한 프로세스 관련 정보들을 파일(프로세스 이미지)로 구성하여 클라우드 저장소에 저장한다. 이때, 프로세스의 메모리 주소공간은 코드, 데이터, 스택, 힙 등을 의미하는데, 이에 해당하는 페이지는 모바일 기기의 메인 메모리나 스왑 영역에 존재한다. 따라서 페이지 테이블을 참고해서 메인 메모리나 스왑 영역에 있는 해당 프로세스 관련 페이지를 모두 클라우드 저장소로 복사한다. 해당 프로세스를 관리하는 커널 내 자료구조도 매우 중요한데, 특히 프로세스가 사용 중인 파일 정보는 반드시 저장되어 복원되어야 한다. 따라서 프로세스가 사용 중인 파일들을 관리하는 파일 테이블 정보(file descriptor table 등)도 클라우드 저장소에 함께 저장해야 한다. 또한 현재 수행중인 프로세스의 상태를 포함하고 있는 CPU 레지스터 값들도 반드시 클라우드에 저장되어야 하는데, 이는 컴퓨터 아키텍처에 따라 저장/복원 방법이 다르지만 커널 내 자료구조나 스택으로 복사한 후 클라우드 저장소에 저장한다.
클라우드 저장소에 저장된 프로세스 이미지는 필요할 때 언제든 임의의 단말기(110, 120)에서 복원되어 다시 실행하는 것이 가능하다. 이를 위해서는 저장중인 프로세스 이미지 내에 있는 정보를 단말기(110, 120)로 가져온 후, 이 정보를 활용하여 단말기(110, 120)에서 프로세스를 생성하여야 한다. 재개될 프로세스의 커널 자료구조를 먼저 생성한 후, 파일 테이블 정보를 통해 해당 프로세스가 사용 중인 파일 정보를 설정하고 저장된 CPU 레지스터 값들을 아키텍처에 따라 복원하면 된다. 다만 페이지 테이블은 처음부터 새로 작성되어야 하는데, 코드, 데이터, 스택, 힙 등의 페이지들은 프로세스를 재개할 단말기(110, 120)로 미리 가져올 필요는 없다. 즉, 관련 페이지들을 그대로 클라우드 저장소에 둔 채 페이지 테이블을 구성하면 되고, 요구시 페이징 방식으로 단말기(110, 120)가 해당 페이지를 적재할 때마다 페이지 테이블을 갱신하면 된다.
프로세스의 저장과 복원시 CPU 레지스터 값이나 메모리 주소공간 이외에도 프로세스의 수행상태에 따라 처리해야 할 여러 사항들이 있다. 대표적인 예를 들면, 프로세스가 요청한 입출력 처리를 어떻게 할 것인지, 쓰기 요청한 데이터가 버퍼캐시에 존재할 경우 어떻게 할 것인지, 네트워크 통신 중인 경우 소켓을 어떻게 다룰 것인지 등이다. 프로세스가 디바이스에 입출력을 요청하고 아직 인터럽트를 받지 않은 상태에서 사용자가 프로세스의 저장을 요구할 경우, 디바이스의 상태 정보도 함께 저장해야 하는 어려움이 있다. 따라서 본 발명에서는 프로세스가 입출력 중이지 않은 상태를 나타내는 안전한 상태(safe state)에서만 클라우드 서버(100)에 프로세스를 저장한다. 안전한 상태마다 프로세스 이미지를 단말기(110, 120)의 스토리지에 주기적으로 업데이트하다가 입출력 요청 후에 클라우드 서버(100)로의 저장 명령을 받으면 바로 직전의 프로세스 이미지로 롤백(rollback)할 수도 있겠지만, 이는 빈번한 업데이트로 인한 오버헤드가 크다. 따라서 이보다는 입출력 처리 중에 클라우드 저장 명령을 받으면 일단 그 입출력 요청까지 처리한 후 안전한 상태에 진입하면 프로세스 이미지를 클라우드 서버(100)에 저장하는 것이 더 바람직하다.
한편, 프로세스가 쓰기 요청한 데이터가 클라우드 서버(100)에 있는 파일시스템에 아직 기록되지 않고 단말기(110, 120)의 DRAM 버퍼 캐시에 존재할 수 있다. 이 또한, 프로세스 저장명령을 받으면 클라우드 서버(100)의 파일시스템에 기록되어야 한다. 이 경우에는 저장하고자 하는 프로세스에 해당하는 버퍼만 찾아 플러시하거나, 간단히 버퍼캐시에 있는 모든 버퍼들을 클라우드 서버(100)의 파일시스템에 반영하여 처리할 수 있다. 프로세스가 소켓을 이용해 데이터 통신을 진행하고 있는 상황에서 프로세스 저장명령을 받을 경우는, 이를 대비해 클라우드 서버(100)에서도 동일한 소켓을 유지할 수도 있다. 프로세스를 클라우드 서버(100)에 저장한 후에도 소켓으로 오는 데이터를 클라우드 서버(100)가 대신 받을 수 있게 함으로써 차후 단말기(110, 120)에서 프로세스가 복원되었을 때, 클라우드 서버(100)가 대신 받은 데이터를 사용할 수 있도록 한다.
클라우드 시스템에서 프로세스를 저장하고 복구하기 위해서 아래의 <표 1>과 같은 함수를 단말기의 커널에 구현할 수 있다.
먼저 클라우드 서버(100)에 프로세스 이미지를 저장하기 위한 클라우드 저장소를 생성하는 함수(make_repository)가 필요한데, 이를 통해 클라우드 서버(100)에 저장 공간을 할당하고 앞으로 저장될 프로세스 이미지를 관리하기 위해 공간을 초기화할 수 있다. 단말기(110, 120)에서 수행중인 프로세스를 클라우드 저장소에 저장하는 함수(cloud_store)는 프로세스 식별자와 클라우드 저장소에서 사용될 이름을 인자로 사용하여 클라우드 저장소에 프로세스 이미지를 파일로 생성할 수 있다. 상술한 바와 같이 프로세스 이미지를 클라우드 저장소에 저장하기 전에 프로세스가 입출력 요청을 하지 않는 안전한 상태에서 저장을 진행하며, 버퍼는 저장된 정보를 비우는 플러시(flush)를 수행하고 사용 중인 소켓이나 세마포어(semaphore) 등을 처리한다.
클라우드 저장소로부터 프로세스 이미지를 복원하기 위해서 어떤 프로세스 이미지들이 클라우드 저장소에 존재하는지 확인해야 하므로 클라우드 저장소에 저장된 프로세스 이미지 목록을 확인하는 함수(cloud_list)가 필요하다. 또한 필요할 경우 저장된 프로세스 이미지의 이름을 변경하거나(cloud_rename), 프로세스 이미지를 삭제할 수도 있다(cloud_delete). 클라우드 저장소에서 프로세스 이미지를 하나 선택하여 모바일 기기로 복원하는 함수(cloud_restore)가 필요하며 복원한 정보를 바탕으로 프로세스 실행을 재개하는 함수(cloud_execute)도 필요로 한다.
자료구조 및 함수 기능
typedef struct cloud_tcb; 클라우드 저장소에 저장될 프로세스 이미지를 기술하는 자료구조로, 메모리 주소공간, 레지스터값, 파일 테이블 등의 정보를 포함한다.
typedef struct repository; 프로세스 이미지들이 저장될 클라우드 저장소를 기술하는 자료구조이다.
repository*
make_repository(void);
클라우드에 클라우드 저장소를 생성한다.
int cloud_store(int pid, char* name); pid 프로세스를 name이라는 이름으로 클라우드 저장소에 저장한다. 클라우드에 저장된 프로세스 이미지의 식별자를 반환한다.
int cloud_restore(char* name); name의 이름을 가진 프로세스 이미지를 가져온다.
int cloud_execute(char* name, int priority); name의 이름을 가진 프로세스를 priority 우선순위로 실행한다.
char** cloud_list(void); 클라우드 저장소에 존재하는 프로세스 이미지의 이름 목록을 얻어온다.
int cloud_rename(char* old_name, char* new_name); 클라우드 저장소에 존재하는 old_name의 프로세스 이미지 이름을 new_name으로 변경한다.
int cloud_delete(char* name); name의 이름을 가진 프로세스 이미지를 클라우드 저장소에서 삭제한다.
한편, 제1 단말기(110)에서 실행 중이던 프로세스를 클라우드 서버(100)에 저장하고, 클라우드 서버(100)에서 실행되도록 할 수 있다.
클라우드 서버(100)는 고성능의 프로세서 및 대용량의 저장 공간을 가지고 있는데 반해 단말기(110, 120)는 상대적으로 낮은 성능의 프로세서 및 작은 저장 공간을 가지고 있을 뿐만 아니라 배터리로 전원을 공급받기도 한다. 따라서 단말기(110, 120)에서 수행할 작업을 고성능 클라우드 서버(100)가 대신함으로써 단말기(110, 120)에서의 전력 소모량을 최소화하는 한편, 프로그램의 수행시간을 줄일 수 있다. 이를 연산 오프로딩(computation offloading) 이라 하는데, 이미지 렌더링이나 실시간 인코딩과 같이 많은 계산량을 요구하는 응용프로그램의 일부나 주기적으로 수행하는 백그라운드 프로그램, 사용자의 입출력을 요하지 않으면서 오랜 시간이 걸리는 파일 다운로드 및 파일 복사 응용에 매우 적합하다.
상술한 <표 1>에서 언급한 함수들을 이용해서 연산 오프로딩 기법에 필요한 함수를 아래 <표 2>와 같이 설계할 수 있다. 즉, 단말기(110, 120)는 클라우드 연산을 원하는 프로세스를 먼저 클라우드 저장소에 저장한 다음(cloud_store), 이를 클라우드 서버(100)에서 실행(cloud_execute)하는 것이다. 따라서 <표 2>에는 <표 1>에서 상술한 저장 및 복원 함수를 통합하여 프로세스를 클라우드에 보내 실행하도록 하는 함수(cloud_delegate)를 새로이 추가할 수 있다. 또한, 클라우드 서버(100)에서 실행 중인 프로세스를 다시 단말기(110, 120)로 가져와 실행해야 하는 경우도 있기 때문에 이를 위한 함수(cloud_withdraw)도 추가로 필요하며, 이는 복원(cloud_restore) 함수와 실행(cloud_execute)함수를 통합하여 생성될 수 있다.
또한, 클라우드 서버(100)에서 실행 중인 프로세스를 정지하기를 원할 때 필요한 정지(cloud_stop) 함수, 정지된 프로세스를 다시 재개하는 재개(cloud_resume)함수도 추가 가능하고 프로세스를 단말기(110, 120)로 다시 가져오지 않고 클라우드 서버(100)에서 아예 종료하는 종료(cloud_terminate) 함수도 연산 오프로딩 기법을 위해 새로이 추가될 수 있다. 한편, 현재 클라우드 서버(100)에서 실행 중이거나 정지된 프로세스들의 목록을 확인하는 함수(cloud_ps)와 특정 프로세스의 상태 즉, 실행 중인지 정지되었는지를 확인하는 함수(cloud_ status)도 추가될 수 있다.
자료구조 및 함수 기능
int cloud_delegate(int pid, char* name, int priority); pid를 가진 프로세스의 실행을 클라우드에게 priority 우선순위로 실행하도록 맡긴다. cloud_store()+cloud_execute()와 동등하다.
int cloud_withdraw(char* name, int priority); name을 가진 프로세스를 가져와서 모바일 기기에서 priority 우선순위로 실행한다. cloud_restore()+cloud_execute()와 동등하다.
int cloud_status(char* name); name을 가진 프로세스의 실행 또는 중지 상태를 확인한다.
int cloud_stop(char* name); name을 가진 프로세스의 실행을 일시 정지시킨다.
int cloud_resume(char* name); name을 가진 정지된 프로세스의 실행을 재개한다.
int cloud_terminate(char* name); 클라우드 서버에서 실행 또는 정지중인 프로세스를 종료한다.
char** cloud_ps(void); 클라우드 서버에서 실행 또는 정지중인 프로세스들의 목록을 확인한다.
한편, 클라우드 서버(100)는 클라우드 서버(100)에서 실행 중인 프로세스가 사용자의 입력을 받아야 하거나 단말기로 출력할 필요가 있는 경우를 위해 단말기로부터 위임받아 실행중인 프로세스를 모니터링하면서 입출력이 필요할 경우 프로세스 실행을 정지하고 프로세스의 실행을 위임했던 단말기로 알릴 수 있다. 단말기에서 입출력이 필요함을 알리는 알림을 수신하면, 클라우드 서버(100)에서 실행 중인 프로세스를 단말기로 가져와 프로세스 수행을 재개하거나 클라우드 서버(100)로부터 발생하는 출력을 바로 단말기에서 디스플레이하도록 할 수도 있다.
본 발명의 클라우드 시스템의 경우 클라우드 서버(100)의 손상으로 발생하는 문제를 최소화 하기 위해서 클라우드 저장소에 저장된 프로세스 이미지를 백업하여 저장함으로써 클라우드 시스템의 신뢰성을 높일 수 있다.
한편, 본 발명은 다중 사용자 지원을 위해 클라우드 서버에서 사용자 별로 클라우드 저장소를 할당 할 수 있다. 사용자가 제1 단말기(110)에서 make_repository()를 통해 클라우드 저장소 생성을 요청할 경우, 클라우드 서버(100)는 제1 단말기(110)의 사용자 정보도 함께 받아 해당 사용자의 클라우드 저장소를 생성한다. 또한 클라우드 저장소에 저장된 프로세스 이미지들을 사용자의 요청에 따라 다른 사용자와 공유하는 것을 허용하거나 불허하는 프로세스 이미지에 대한 접근 권한을 제어 할 수 있다. 이와 관련해 아래 <표 3>과 같은 함수를 추가로 정의할 수 있다.
다른 사용자의 클라우드 저장소 내 프로세스 이미지 목록을 열람 가능한지 불가능 한지 설정하는 허가(cloud_grant) 함수, 프로세스 이미지 별로 실행 가능/불가 등의 권한을 부여하는 접근권한 설정(cloud_chmod)함수 등이 새로이 정의될 수 있다.
자료구조 및 함수 기능
int cloud_grant(char* user, int access ); user의 사용자에게 클라우드 저장소의 목록을 열람하는 권한을 부여한다. (access가 1일 경우 열람 가능, 0일 경우 열람 불가)
int cloud_chmod(char *name, int permission); name을 가진 프로세스에게 permission에 해당하는 접근을 부여한다. (permission에서 정보열람 권한 부여는 100, 프로세스 이미지 삭제는 010, 프로세스 실행은 001)
이하, 상기와 같이 구성된 본 발명에 따른 프로세스 클라우드 시스템에서 프로세스를 저장하고 복원하고 클라우드 서버에서 실행하는 방법을 아래에서 도면을 참조하여 설명한다.
도 2는 본 발명의 일 실시 예에 따른 클라우드 시스템에서 프로세스를 저장하고 복원하는 과정을 도시한 흐름도이다.
도 2를 참조하면, 제1 단말기(110)는 클라우드 서버(100)로 프로세스 이미지를 저장할 수 있는 클라우드 저장소의 생성을 요청한다(210).
클라우드 서버(100)는 클라우드 저장소의 생성을 요청받으면, 클라우드 저장소를 생성한다(212).
그리고, 제1 단말기(110)는 사용자의 요청에 따라 클라우드 서버(100)에 저장할 프로세서를 복원하는데 필요한 정보를 수집하여 프로세스 이미지를 생성하고(214), 생성한 프로세스 이미지를 클라우드 서버(100)로 송신한다(216).
클라우드 서버(100)는 제1 단말기(110)로부터 프로세스 이미지를 수신하면(216), 수신한 프로세스 이미지를 이전에 생성한 클라우드 저장소에 저장한다(218).
이후, 제1 단말기(110)는 사용자 요청에 따라 클라우드 서버(100)에 저장된 프로세스의 복구를 요청할 수 있다(220).
클라우드 서버(100)는 제1 단말기(110)로부터 프로세스의 복구를 요청 받으면, 복구를 요청받은 프로세스에 대응하는 프로세스 이미지를 검색하여 제1 단말기(110)로 송신한다(222).
제1 단말기(110)는 클라우드 서버(100)로부터 프로세스 이미지를 수신하면, 프로세스 이미지에 포함된 프로세스 복구를 위한 정보들을 이용해서 프로세스를 복구한다(224).
도 3은 본 발명의 일 실시 예에 따른 클라우드 시스템에서 프로세스를 저장하고 다른 단말기에서 복원하는 과정을 도시한 흐름도이다.
도 3을 참조하면, 제1 단말기(110)는 클라우드 서버(100)로 프로세스 이미지를 저장할 수 있는 클라우드 저장소의 생성을 요청한다(310).
클라우드 서버(100)는 클라우드 저장소의 생성을 요청받으면, 클라우드 저장소를 생성한다(312).
그리고, 제1 단말기(110)는 사용자의 요청에 따라 클라우드 서버(100)에 저장할 프로세서를 복원하는데 필요한 정보를 수집하여 프로세스 이미지를 생성하고(314), 생성한 프로세스 이미지를 클라우드 서버(100)로 송신한다(316).
클라우드 서버(100)는 제1 단말기(110)로부터 프로세스 이미지를 수신하면(316), 수신한 프로세스 이미지를 이전에 생성한 클라우드 저장소에 저장한다(318).
이후, 제2 단말기(120)는 사용자 요청에 따라 클라우드 서버(100)에 저장된 프로세스의 복구를 요청할 수 있다(320).
클라우드 서버(100)는 제2 단말기(120)로부터 프로세스의 복구를 요청 받으면, 복구를 요청받은 프로세스에 대응하는 프로세스 이미지를 검색하여 제2 단말기(120)로 송신한다(322).
제2 단말기(120)는 클라우드 서버(100)로부터 프로세스 이미지를 수신하면, 프로세스 이미지에 포함된 프로세스 복구를 위한 정보들을 이용해서 프로세스를 복구한다(324).
한편, 제2 단말기(120)의 사용자는 제1 단말기(110)의 사용자와 동일한 사용자 일 수도 있고, 다른 사용자일 수도 있다.
따라서, 322단계에서 클라우드 서버(100)는 제2 단말기(120)로부터 프로세스의 복구를 요청 받으면, 요청받은 프로세스에 대응하는 프로세스 이미지를 제2 단말기(120)로 송신하기에 앞서, 기설정된 접근 권한을 확인하여 제2 단말기(120)의 사용자가 접근 권한을 가진 사용자인지 확인하여 접근 권한을 가진 경우에 프로세스 이미지를 제2 단말기(120)로 송신할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 저장하는 과정을 도시한 흐름도이다.
도 4를 참조하면, 단말기는 사용자로부터 클라우드 저장소의 생성을 요청받으면, 클라우드 서버로 클라우드 저장소의 생성을 요청한다(410)
그리고, 단말기는 사용자로부터 프로세스를 저장하는 요청을 감지하면(412), 저장할 프로세스가 입출력이 없는 상태를 나타내는 안전한 상태인지 여부를 확인한다(414). 이때, 저장할 프로세스는 현재 실행 중이던 프로세스 이거나 백그라운드로 실행 중이던 프로세스 중에서 사용자가 선택한 프로세스 일 수 있다.
414단계의 확인결과 저장할 프로세스가 안전한 상태이면, 단말기는 프로세스를 복원하는데 필요한 정보를 수집한다(416). 이때, 프로세스를 복원하는데 필요한 정보는 메모리 주소공간(memory address space), CPU 레지스터의 값, 커널 내 자료구조(task_struct) 등을 포함할 수 있다.
그리고, 단말기는 수집한 프로세스를 복원하는데 필요한 정보를 포함하는 프로세스 이미지를 생성한다(418).
그리고, 단말기는 생성한 프로세스 이미지를 클라우드 서버로 송신한다(420).
도 5는 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 복원하는 과정을 도시한 흐름도이다.
도 5를 참조하면, 단말기는 사용자의 요청에 따라서 클라우드 서버로 클라우드 저장소에 저장된 프로세스 목록을 요청한다(510).
그리고, 단말기는 클라우드 서버로부터 저장된 프로세스 목록을 수신하면(512), 저장된 프로세스 목록 중에서 복구할 프로세스의 선택을 감지한다(514).
514단계의 확인결과 사용자의 입력에 따른 복구할 프로세서의 선택이 감지되면, 단말기는 클라우드 서버로 선택된 프로세스의 복구를 요청한다(516).
그리고, 단말기는 클라우드 서버로부터 선택된 프로세스에 대응하는 프로세스 이미지를 수신하면(518), 수신한 프로세스 이미지에 포함된 정보를 이용해서 프로세스를 복구한다(520).
도 6은 본 발명의 일 실시 예에 따른 단말기에서 프로세스를 클라우드 서버에서 실행하는 과정을 도시한 흐름도이다.
도 6을 참조하면, 단말기는 사용자의 요청에 따라서 클라우드 서버로 클라우드 저장소에 저장된 프로세스 목록을 요청한다(610).
그리고, 단말기는 클라우드 서버로부터 저장된 프로세스 목록을 수신하면(612), 저장된 프로세스 목록 중에서 실행할 프로세스의 선택을 감지한다(614).
614단계의 확인결과 사용자의 입력에 따른 실행할 프로세서의 선택이 감지되면, 단말기는 클라우드 서버로 클라우드 서버에서 선택된 프로세스를 실행하도록 요청한다(616).
그리고, 단말기는 클라우드 서버에서 실행중인 프로세스를 관리한다(618). 이때, 클라우드 서버에서 실행중인 프로세스의 관리에는 실행중인 프로세스의 출력화면을 단말기로 수신, 프로세스의 결과를 단말기로 수신, 실행중인 프로세스의 종료, 프로세스의 삭제 등이 될 수 있다.
도 7은 본 발명의 일 실시 예에 클라우드 서버에서 프로세스를 저장하는 과정을 도시한 흐름도이다.
도 7을 참조하면, 클라우드 서버는 단말기로부터 클라우드 저장소의 생성을 요청 받으면(710), 프로세스 이미지를 저장하는데 이용되는 클라우드 저장소를 생성한다(712). 이때, 클라우드 서버는 단말기로부터 클라우드 저장소를 열람할 수 있는 권한을 가진 사용자들의 정보를 함께 수신할 수 있으며, 이 경우 해당 사용자만이 클라우드 저장소에 저장된 프로세스 이미지들의 목록을 열람할 수 있도록 할 수 있다.
그리고, 클라우드 서버는 단말기로부터 프로세스 이미지를 수신하면(714), 프로세스 이미지를 클라우드 저장소에 저장한다(716). 이때, 클라우드 서버는 단말기로부터 해당 프로세스 이미지의 접근 권한 정보를 함께 수신할 수 있다. 그리고, 접근 권한은 프로세스 이미지를 열람할 수 있는 권한, 프로세스 이미지를 삭제할 수 있는 권한, 프로세스 이미지를 실행할 수 있는 권한 등이 존재할 수 있다.
도 8은 본 발명의 일 실시 예에 클라우드 서버에서 프로세스를 복원하는 과정을 도시한 흐름도이다.
도 8을 참조하면, 클라우드 서버는 단말기로부터 클라우드 저장소에 저장된 프로세스 이미지들의 목록인 프로세스 목록을 요청 받으면(810), 요청한 단말기의 사용자가 권한을 가진 사용자인지 확인한다(812).
812단계의 확인결과 프로세스 목록을 요청한 사용자가 권한을 가진 사용자이면, 클라우드 서버는 클라우드 저장소에 저장된 프로세스 이미지들의 목록인 프로세스 목록을 단말기로 송신한다(814).
그리고, 클라우드 서버는 단말기로부터 프로세스 복구 요청을 수신하면(816), 프로세스 복구를 요청한 사용자가 요청한 프로세스로의 접근 권한을 가진 사용자인지 확인한다(818).
818단계의 확인결과 프로세스 복구를 요청한 사용자가 해당 프로세스로의 접근 권한을 가진 경우, 클라우드 서버는 요청받은 프로세스 이미지를 단말기로 송신한다(820).
도 9는 본 발명의 일 실시 예에 클라우드 서버에서 단말기의 요청에 따라 프로세스를 실행하는 과정을 도시한 흐름도이다.
도 9를 참조하면, 클라우드 서버는 단말기로부터 클라우드 저장소에 저장된 프로세스 이미지들의 목록인 프로세스 목록을 요청 받으면(910), 요청한 단말기의 사용자가 권한을 가진 사용자인지 확인한다(912).
912단계의 확인결과 프로세스 목록을 요청한 사용자가 권한을 가진 사용자이면, 클라우드 서버는 클라우드 저장소에 저장된 프로세스 이미지들의 목록인 프로세스 목록을 단말기로 송신한다(914).
그리고, 클라우드 서버는 단말기로부터 프로세스의 실행 요청을 수신하면(916), 프로세스 실행을 요청한 사용자가 요청한 프로세스를 실행할 권한을 가졌는지 확인한다(918).
918단계의 확인결과 프로세스 실행을 요청한 사용자가 해당 프로세스를 실행할 권한을 가진 경우, 클라우드 서버는 요청된 프로세스 이미지를 실행한다(920).
그리고, 클라우드 서버는 단말기로의 요청에 따라 클라우드 서버에서 실행중인 프로세스를 관리한다(922). 이때, 클라우드 서버에서 실행중인 프로세스의 관리에는 실행중인 프로세스의 출력화면을 단말기로 송신, 프로세스의 결과를 단말기로 송신, 실행중인 프로세스의 종료, 프로세스의 삭제 등이 될 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 실시 예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시 예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시 예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시 예들이 비록 한정된 실시 예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시 예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
100; 클라우드 서버
110; 제1 단말기
120; 제2 단말기
130; 프로세스 이미지

Claims (15)

  1. 프로세스를 클라우드 서버에 저장하는 요청을 감지하면, 요청된 프로세스에 관한 프로세스 이미지를 생성하는 단계; 및
    상기 프로세스 이미지를 상기 클라우드 서버로 송신하여 저장하도록 요청하는 단계
    를 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  2. 제1항에 있어서,
    상기 프로세스 이미지는,
    프로세스의 복원에 필요한 정보인 메모리 주소공간(memory address space), CPU 레지스터의 값, 커널 내 자료구조(task_struct)를 포함하는
    단말기에서 프로세스를 클라우드 처리하는 방법.
  3. 제1항에 있어서,
    상기 프로세스 이미지를 생성하는 단계는,
    상기 프로세스를 저장하는 요청을 감지하는 단계;
    상기 프로세스가 입출력 중이지 않은 안전한 상태인지 확인하는 단계;
    확인결과 상기 프로세스가 안전한 상태이면, 상기 프로세스를 복원하는데 필요한 정보를 수집하는 단계; 및
    상기 프로세스를 복원하는데 필요한 정보를 포함하는 상기 프로세스 이미지를 생성하는 단계
    를 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  4. 제1항에 있어서,
    상기 프로세스 이미지를 상기 클라우드 서버로 송신하여 저장하도록 요청하는 단계 이전에,
    상기 프로세스 이미지를 저장할 공간인 상기 클라우드 저장소를 생성할 것을 상기 클라우드 서버로 요청하는 단계
    를 더 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  5. 제4항에 있어서,
    상기 프로세스 이미지를 저장할 공간인 상기 클라우드 저장소를 생성할 것을 상기 클라우드 서버로 요청하는 단계는,
    상기 클라우드 저장소에 저장된 프로세스 이미지의 목록을 열람할 수 있는 사용자를 설정하는 단계
    를 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  6. 제1항에 있어서,
    상기 프로세스를 복구하는 요청을 감지하면, 상기 클라우드 서버로 상기 프로세스 이미지의 복구를 요청하는 단계;
    상기 클라우드 서버로부터 상기 클라우드 서버에 저장된 상기 프로세스 이미지를 수신하는 단계; 및
    상기 수신한 프로세스 이미지를 복구하여 실행하는 단계
    를 더 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  7. 제1항에 있어서,
    상기 클라우드 서버에 저장된 상기 프로세스 이미지를 상기 클라우드 서버에서 실행하는 요청을 감지하면, 상기 클라우드 서버로 상기 프로세스 이미지의 실행을 요청하는 단계
    를 더 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  8. 제1항에 있어서,
    상기 프로세스 이미지를 상기 클라우드 서버로 송신하여 저장하도록 요청하는 단계는,
    상기 프로세스 이미지에 접근 권한을 부여하는 단계
    를 포함하는 단말기에서 프로세스를 클라우드 처리하는 방법.
  9. 단말기로부터 프로세스 이미지를 저장하는 저장공간의 생성을 요청받으면, 클라우드 저장소를 생성하는 단계; 및
    상기 단말기로 프로세스 이미지를 수신하면, 수신한 상기 프로세스 이미지를 상기 클라우드 저장소에 저장하는 단계
    를 포함하는 클라우드 서버에서 프로세스를 클라우드 처리하는 방법.
  10. 제9항에 있어서,
    상기 프로세스 이미지는,
    프로세스의 복원에 필요한 정보인 메모리 주소공간(memory address space), CPU 레지스터의 값, 커널 내 자료구조(task_struct)를 포함하는
    클라우드 서버에서 프로세스를 클라우드 처리하는 방법.
  11. 제9항에 있어서,
    상기 단말기로부터 상기 프로세스 이미지의 복원을 요청 받으면, 상기 클라우드 저장소에 상기 프로세스 이미지를 검색하여 상기 단말기로 송신하는 단계
    를 더 포함하는 클라우드 서버에서 프로세스를 클라우드 처리하는 방법.
  12. 제9항에 있어서,
    상기 단말기로부터 상기 프로세스 이미지의 실행을 요청 받으면, 상기 클라우드 저장소에 상기 프로세스 이미지를 검색하여 상기 클라우드 서버에서 실행하는 단계
    를 더 포함하는 클라우드 서버에서 프로세스를 클라우드 처리하는 방법.
  13. 제9항에 있어서,
    상기 클라우드 저장소를 생성하는 단계는,
    요청에 따라 설정된 사용자만이 상기 클라우드 저장소에 저장된 프로세스 이미지의 목록을 열람할 수 있도록 설정하는 단계
    를 포함하는 클라우드 서버에서 프로세스를 클라우드 처리하는 방법.
  14. 제9항에 있어서,
    수신한 상기 프로세스 이미지를 상기 클라우드 저장소에 저장하는 단계는,
    상기 프로세스 이미지에 관한 접근 권한을 수신하여 저장하는 단계
    를 포함하는 클라우드 서버에서 프로세스를 클라우드 처리하는 방법.
  15. 제1항 내지 제14항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020160124861A 2016-09-28 2016-09-28 프로세스 클라우드 시스템 및 방법 KR20180034963A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160124861A KR20180034963A (ko) 2016-09-28 2016-09-28 프로세스 클라우드 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160124861A KR20180034963A (ko) 2016-09-28 2016-09-28 프로세스 클라우드 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR20180034963A true KR20180034963A (ko) 2018-04-05

Family

ID=61977410

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160124861A KR20180034963A (ko) 2016-09-28 2016-09-28 프로세스 클라우드 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR20180034963A (ko)

Similar Documents

Publication Publication Date Title
Kim et al. Hyperloop: group-based NIC-offloading to accelerate replicated transactions in multi-tenant storage systems
CN102594849B (zh) 数据备份、恢复方法、虚拟机快照删除、回滚方法及装置
RU2606052C2 (ru) Согласованные с приложениями снимки общего тома
US9588844B2 (en) Checkpointing systems and methods using data forwarding
US9354907B1 (en) Optimized restore of virtual machine and virtual disk data
US20110107344A1 (en) Multi-core apparatus and load balancing method thereof
CN108469982B (zh) 一种容器在线迁移方法
US9864772B2 (en) Log-shipping data replication with early log record fetching
JP6123626B2 (ja) 処理再開方法、処理再開プログラムおよび情報処理システム
US11093332B2 (en) Application checkpoint and recovery system
US20220050753A1 (en) System and method for cloning as sql server ag databases in a hyperconverged system
US10963182B2 (en) System and method for on-demand recovery points
WO2016045428A1 (zh) 一种创建虚拟机的方法和创建虚拟机的装置
US20210109822A1 (en) Systems and methods for backup and restore of container-based persistent volumes
US10795708B1 (en) Transparent disk caching for virtual machines and applications
US9280383B2 (en) Checkpointing for a hybrid computing node
US20130074073A1 (en) Virtual machine
CN111414240B (zh) 内核态进程复制方法以及装置、容器扩容方法以及装置
US9323475B2 (en) Control method and information processing system
EP3396553B1 (en) Method and device for processing data after restart of node
KR20180034963A (ko) 프로세스 클라우드 시스템 및 방법
JP6312837B2 (ja) コンピューティングデバイスにおける消費電力の低減
US11726885B2 (en) Efficient method and system of intelligent deploying file level restore agent in multicloud
JP2010231295A (ja) 解析システム
TWI501588B (zh) 使用輔助處理器存取本地儲存裝置之技術

Legal Events

Date Code Title Description
E601 Decision to refuse application