KR101356453B1 - 편재형 컴퓨팅 시스템 및 방법 - Google Patents

편재형 컴퓨팅 시스템 및 방법 Download PDF

Info

Publication number
KR101356453B1
KR101356453B1 KR1020127007739A KR20127007739A KR101356453B1 KR 101356453 B1 KR101356453 B1 KR 101356453B1 KR 1020127007739 A KR1020127007739 A KR 1020127007739A KR 20127007739 A KR20127007739 A KR 20127007739A KR 101356453 B1 KR101356453 B1 KR 101356453B1
Authority
KR
South Korea
Prior art keywords
client device
application program
execution
server
user
Prior art date
Application number
KR1020127007739A
Other languages
English (en)
Other versions
KR20120049374A (ko
Inventor
스타니슬라브 보노그
타라 레미
니콜레이 수린
바딤 슈타유라
Original Assignee
네트 파워 앤드 라이트 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 네트 파워 앤드 라이트 인코포레이티드 filed Critical 네트 파워 앤드 라이트 인코포레이티드
Publication of KR20120049374A publication Critical patent/KR20120049374A/ko
Application granted granted Critical
Publication of KR101356453B1 publication Critical patent/KR101356453B1/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

편재형 컴퓨팅 방법 및 시스템이 개시된다. 일 실시예에 따르면, 컴퓨터로 구현되는 방법은, 클라우드 컴퓨팅 환경에서 주변 장치를 검출할 수 있는 제1 장치와 통신하는 서버와, 서버에 의해 실행가능한 애플리케이션 프로그램을 포함하며, 애플리케이션 프로그램은 제1 장치에 의해 제어되고, 애플리케이션 프로그램의 출력은, 서버에 의해, 제1 장치에 의해 검출된 장치 중 하나로 향한다.

Description

편재형 컴퓨팅 시스템 및 방법{A SYSTEM AND METHOD FOR PERVASIVE COMPUTING}
본 시스템은 대체로 컴퓨터 애플리케이션에 관한 것으로, 더욱 상세하게는, 편재형 컴퓨팅 시스템 및 방법에 관한 것이다.
사용자는 다수의 컴퓨터 및 전자 장치에 의해 점점 더 둘러싸이고 있다. 사용자는 일반적으로 가정에서의 다수의 컴퓨터, 직장에서의 다수의 컴퓨터, 다수의 디스플레이, 다양한 휴대 전화, 휴대용 컴퓨터, 음악 플레이어, TV, 게임 콘솔, 사진 카메라 및 독서 장치를 가진다.
최근에 개발된 장치 제어 방법은 멀티 터치 폰 또는 표면, 음성 명령, 모션 감지 컨트롤러(예를 들어, Wii 리모트), 몸체 추적 시스템(예를 들어, 프로젝트 나탈(Project Natal)), 응시 추적 및 게임 콘솔형 컨트롤러를 포함한다.
종래의 사용자 인터페이스는 한 시점에서의 단일 컴퓨터 또는 휴대 장치의 사용자를 가정한다. GUI 패러다임은 여전히 종종 데스크탑이다. 데스크탑 GUI와 전통적인 단일 기계 운영 체계는 여러 장치와 마우스와 키보드를 뛰어 넘는 새로운 UI 성능과 다중 기계의 새로운 세상에 잘 작동하지 않는다.
컴퓨팅 장치에는 대부분이 사용되지 않는 많은 소프트웨어 애플리케이션이 로딩된다. 애플리케이션은 특정 하드웨어 기계에 종속되고, 이동형이 아니며, 유지하고 업그레이드하는데 어렵고 비용이 소요된다.
다수의 장치를 갖는 사용자는 한 장치의 성능을(예를 들어, 아이폰(iPhone)의 멀티 터치 성능) 다른 장치(예를 들어 대화면의 플라즈마 TV)를 사용하기 위하여 결합할 수 없다.
컴퓨터 및 장치가 수십 만개의 사설 로컬 네트워크 내에서 또는 인터넷의 일부로서 연결되어 있지만, 장치는 서로 충분히 알지 못한다. 그들 사이의 데이터(즉, 사진)의 전송 및 동기화는 종종 길고 힘든 작업이다.
종래의 웹 애플리케이션은 이러한 문제점의 일부를 해결하는 것을 목적으로 한다. 웹 애플리케이션은 전통적인 소프트웨어 애플리케이션과 유사한 기능을 제공하기 위하여 작성될 수 있지만, 이를 설치하여 물리적 컴퓨터를 느리게 하는 필요성을 제거한다. 또한, 웹 애플리케이션은 사용자의 장치의 전부로부터 서버에 저장된 데이터에 대한 액세스를 이네이블하도록 구축되어, 데이터 동기화를 위한 필요성을 제거할 수 있다.
그러나, 웹 애플리케이션 및 브라우저 기반의 모델은 다음을 포함하는 소정의 한계를 가진다:
· html/javascript로 구축된 사용자 경험이 기본적이고 제한됨
· Flash/Siverlight는 멀티쓰레딩 모델을 가지지 않으며, 모든 특성을 가진 애플리케이션을 구축하게 하지 않음
· 통신/협업 소프트웨어는 웹 애플리케이션 모델 또는 RIA 모델을 효율적으로 이용하여 구축될 수 없음.
다중 기계 컴퓨팅 환경은 소프트웨어 배치, 공급 및 관리를 위한 기업의 요구를 해결하고, 그리고/또는 데이터 센터(VMWare vSphere, Cirix Cloud Center, Amazon Elastic Compute Cloud, Microsoft Windows Azure 및 기타)를 운영하기 위하여 최근에 개발되었다. 그러나, 이러한 컴퓨팅 환경의 어느 것도 소비자/다중 장치 시나리오를 가정하지 않았으며, 또한 사용자 인터페이스를 제공하지 않는다(환경은 웹 애플리케이션 또는 데스크탑 운영 체계로 가상 기계를 운영하는데 사용된다).
편재형 컴퓨팅 방법 및 시스템이 개시된다. 일 실시예에 따르면, 컴퓨터로 구현되는 방법은, 클라우드 컴퓨팅 환경에서 주변 장치를 검출할 수 있는 제1 장치와 통신하는 서버와, 서버에 의해 실행가능한 애플리케이션 프로그램을 포함하며, 애플리케이션 프로그램은 제1 장치에 의해 제어되고, 애플리케이션 프로그램의 출력은, 서버에 의해, 제1 장치에 의해 검출된 장치 중 하나로 향한다.
본 출원은 본 명세서에 참조로서 편입되는 2009년 8월 27일 출원되고 명칭이 "Operating Environment and User Interface for Pervasive Computing"인 미국 가특허 출원 No. 61/237,611의 이익 및 그에 대한 우선권을 요구한다.
본 명세서의 일부로서 포함되는 첨부된 도면은 현재 바람직한 실시예를 예시하며, 전술한 일반적인 설명 및 후술되는 발명을 실시하기 위한 구체적인 내용과 함께 본 발명의 원리를 설명하고 교시하는 역할을 한다.
도 1은 일 실시예에 따라 본 시스템과 함께 사용하기 위한 예시적인 컴퓨터 아키텍쳐를 도시한다.
도 2는 일 실시예에 따른 편재형 컴퓨팅 환경의 예시적인 시스템 레벨 도면이다.
도 3a는 일 실시예에 따른 단일 서버를 이용하는 편재형 컴퓨팅 환경의 예시적인 시스템 레벨 도면이다.
도 3b는 일 실시예에 따른 다중 서버를 이용하는 편재형 컴퓨팅 환경의 예시적인 시스템 레벨 도면이다.
도 4a는 일 실시예에 따른 편재형 컴퓨팅 환경 내의 예시적인 장치 통신 그래프를 도시한다.
도 4b 및 4c는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 애플리케이션 전송 전후의 예시적인 장치 통신 그래프를 도시한다.
도 5는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 클라이언트 아키텍쳐를 도시한다.
도 6a는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 간단한 출력 장치 아키텍쳐를 도시한다.
도 6b는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 장치 컨트롤러를 도시한다.
도 6c는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 성능 컴퓨팅 장치를 도시한다.
도 6d는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 넷북형 장치 아키텍쳐를 도시한다.
도 6e는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 간단한 운영 체계 아키텍쳐를 도시한다.
도 7은 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 클라우드 아키텍쳐를 도시한다.
도 8a 내지 8c는 일 실시예에 따른, 임의의 컴퓨터가 임의의 사용자에 의해 사용될 수 있는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
도 9a 내지 9c는 일 실시예에 따른, 애플리케이션이 사용자를 따르는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
도 10a 내지 10c는 일 실시예에 따른, 소프트웨어 애플리케이션이 하드웨어 장치로부터 독립적인, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
도 11a 내지 11e는 일 실시예에 따른, 애플리케이션이 전자 신문으로부터 테이블 표면으로 이동하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
도 12는 일 실시예에 따른, 제어 장치가 다른 장치 및 애플리케이션을 제어하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
도 13a 내지 13d는 일 실시예에 따른, 장치가 제어 장치로부터의 입력에 응답하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
도 14a 및 14b는 다른 실시예에 따른, 장치가 제어 장치로부터의 입력에 응답하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다.
편재형 컴퓨팅 방법 및 시스템이 개시된다. 일 실시예에 따르면, 컴퓨터로 구현되는 방법은, 클라우드 컴퓨팅 환경에서 주변 장치를 검출할 수 있는 제1 장치와 통신하는 서버와, 서버에 의해 실행가능한 애플리케이션 프로그램을 포함하며, 애플리케이션 프로그램은 제1 장치에 의해 제어되고, 애플리케이션 프로그램의 출력은, 서버에 의해, 제1 장치에 의해 검출된 장치 중 하나로 향한다.
본 방법 및 시스템은 본 명세서에 전문이 참조로서 편입되는 2009년 9월 29일 출원된 미국 특허 출원 No. 12/569,876에 충분히 설명된 전송 프로토콜을 포함한다.
본 명세서 전체를 통해 사용된 용어 및 수반하는 정의는 다음을 포함한다:
장치(device): 입력, 출력 또는 컴퓨팅을 할 수 있는 임의의 전자적, 생체 전자적(bio-electronic) 또는 나노 전자적(nono-electronic) 장치. 장치의 예는 랩톱 컴퓨터, 서버, 개인용 컴퓨터, 넷북, 휴대 장치, 스마트폰, 프로젝터, 텔레비젼을 포함하지만 이에 한정되지 않는다.
애플리케이션(application): 클라이언트에 의해 사용되는 소프트웨어. 애플리케이션의 예는 Microsoft Office 애플리케이션, 사진 편집 소프트웨어 및 미디어 플레이어를 포함하지만 이에 한정되지 않는다.
입력 성능(input capability): 장치가 인간 또는 장치, 또는 다른 애플리케이션으로부터 입력 정보를 수신하는 능력. 입력 성능의 예는 인간의 음성, 비디오 데이터, 모션 검출, 가속도계 센서, 온도 센서, 압력 센서(예를 들어, 기압 또는 터치로부터의 압력), 눈 운동, 키보드와 마우스, 데이터 파일, 다른 애플리케이션으로부터 수신된 데이터 스트림을 포함하지만 이에 한정되지 않는다.
출력 성능(output capability): 장치가 출력으로서의 데이터를 다른 장치 또는 애플리케이션에 전송하거나 인간에 의해 인지될 수 있는 방법으로 출력을 렌더링하는 능력. 출력 성능의 예는 크거나 작은 스크린, 3D 디스플레이, 소리 상의 디스플레이 능력이다.
컴퓨팅 성능(computing capability): 장치가 프로그래밍 언어 중 하나로 작성된 프로그램을 실행하여 컴퓨팅을 수행하는 능력.
I/O/C 그래프: 입력, 출력 및 컴퓨팅 성능 그래프. 이 그래프는 임의의 주어진 시간에서 사용자에 의해 사용되는 모든 장치 및 이들의 관계에 대한 논리 표현이다. I/O/C 그래프는 어느 장치가 임의의 주어진 사용자에 의해 사용되고 있는지를 특정한다. 또한, 이는 어느 장치가 컴퓨팅 성능을 제공하고, 어느 장치가 입력 및 출력 성능을 제공하고, 어떻게 이러한 장치가 서로의 사이에서 입력 및 출력의 절차를 정하는지(또한, 입력 및 출력 스트림을 복사하는지)를 특정한다. I/O/C 그래프는 편재형 운영 환경을 이용하고 있을 때마다 시스템에서 모든 사용자에 대하여 생성되는 그래프이다.
I/O/C 수퍼바이저(supervisor): 장치가 통신하는 엔티티(entity). 장치는 성능을 수퍼바이저에 통신하고, 수퍼바이저는 각 사용자에 대하여 고유하다. 수퍼바이저는 편재형 운영 환경을 이용하는 임의의 주어진 시간에 각 사용자에 대하여 I/O/C 그래프를 유지하고 편성한다. I/O/C 수퍼바이저는 각 사용자에 대하여 데이터, 애플리케이션 및 장치에 대한 액세스를 유지한다.
네임 서비스(name service): 물리적 네트워크 어드레스(예를 들어, IP 어드레스)로부터 추출하기 위하여 고정된 이름을 장치에 관련시키는 능력을 사용자에게 제공한다.
장치 에이전트(device agent): 본 시스템 내에서의 사용을 위한 각 장치 상의 편재형 컴퓨팅 에이전트.
데이터 프로바이더(data provider): 사용자 데이터를 탐색하기 위하여 데이터 스토리지 프로바이더와 통신하는 책임이 있는 엔티티.
데이터 스토리지 프로바이더(data storage provider): 원격 사용자 데이터 스토리지 서비스.
인증 및 보안 게이트웨이(authentiction and security gateway): 사용자를 인증하는 엔티티.
가상 컴퓨팅 장치 프로바이더(virtual computing device provider): 사용자의 I/O/C 수퍼바이저와 같은 시스템의 다른 요소로부터의 요청에 따라 가상 컴퓨팅 장치를 제공하는 책임이 있는 엔티티.
애플리케이션 스트리머(application streamer): 애플리케이션 스트리밍 기술을 이용하여 애플리케이션을 가상 또는 물리적 컴퓨팅 장치에 배치하는 책임이 있는 엔티티.
애플리케이션 이미지 스토리지: 애플리케이션 스트리밍 기술을 이용하여 물리적 또는 가상 컴퓨팅 장치에 배치된 애플리케이션의 이미지에 대한 스토리지. 이 대신에, 애플리케이션 스토리지는 주어진 운영 체계 내에서 소프트웨어 설치의 표준 처리를 통해 가상 또는 물리적 컴퓨팅 장치에 설치될 패키지된 애플리케이션을 포함할 수 있다.
가상 기계 프로바이더(virtual machine provider): 요청에 따라 가상 기계를 제공하는 책임이 있는 엔티티.
입력 인코더(input encoder): 수신된 입력을 인코딩할 수 있는 엔티티.
입력 디코더(input decoder): 수신된 입력을 디코딩할 수 있는 엔티티.
입력 큐(input queue): 수신된 입력을 위한 버퍼.
출력 캡쳐러(output capturer): 출력을 캡쳐할 수 있는 엔티티.
출력 렌더러(output renderer): 출력을 알맞게 렌더링할 수 있는 엔티티.
출력 인코더(output encoder): 전송될 출력을 인코딩할 수 있는 엔티티.
출력 디코더(output decoder): 전송될 출력을 디코딩할 수 있는 엔티티.
네트워크 스택(network stack): 편재형 컴퓨팅 환경 내에서의 장치 통신을 위한 엔티티. 네트워크 스택은 높은 성능과 낮은 대기 시간의 데이터 통신을 가능하게 하여야 한다.
사용자 인터페이스 쉘(User Interface(UI) shell): 편재형 컴퓨팅 환경과 상호 작용하는 사용자를 위한 장치 상의 사용자 인터페이스.
장치 포착(device acquisition): 각 장치는 주변 장치를 발견하고 이들을 포착할 수 있다(아니면, 클라이언트 요구에 따라). 포착은 사용자의 개인적인 편재형 컴퓨팅 환경에서 장치를 배치한다.
본 편재형 컴퓨팅 시스템은 장치가 자신의 OS 및 하드웨어에 관계없이 애플리케이션을 실행하게 한다. 사용자는 임의의 장치로부터 데이터, 애플리케이션 및 가상 기계를 액세스할 수 있으며, 다양한 컴퓨팅 장치가 지원될 수 있다. 애플리케이션은 장치 사이에 거의 순간적으로(즉, 네트워크 상태 및 다른 인자에 따라 수백 밀리초에서 수초 사이의 범위의 매우 짧은 구간에서) 이동할 수 있다. 편재형 컴퓨팅 시스템 내의 개인 컴퓨팅 환경은 데이터, 애플리케이션, 가상 및 물리적 장치를 관리하기 위한 사용자 인터페이스(UI) 쉘을 포함한다. 장치들은 서로 발견할 수 있으며, 다른 장치에 상주하는 성능을 활용할 수 있다. 애플리케이션 스트리밍 기술과 조합하여 "핫(hot)" 가상 기계의 풀을 이용하는 것은 준비 상태가 될 필요가 있는 가상 설비(즉, 특정 애플리케이션을 실행하는 가상 기계)의 수를 최소화한다.
본 편재형 운영 환경은 로보틱 장치(robotic device)뿐만 아니라 다중 입력, 출력 및 컴퓨팅 장치를 운영할 수 있다. 장치는 물리적 및 가상적일 수 있으며, 예는 랩톱, 컴퓨터(맥(mac) 또는 PC), TV, 접철가능한 전자 스크린, 로보틱 장치, 휴대 장치, 휴대 전화, 아이폰, 태블릿, 추적 카메라, 모션 감지, 선글라스나 헬멧 또는 콘택트 렌즈로 구축된 증강 현실 디스플레이, 가속도 감지, 모션 추적 시스템, 멀티 터치 표면, 3D 디스플레이 시스템(홀로그래픽이거나 아님), 프로젝션 테이블 및 부착된 컴퓨팅 유닛을 갖는 벽, 및 RFID 리더 및 태그를 포함하지만 이에 한정되지 않는다.
본 시스템에 따르면, 사용자는 자신의 컴퓨팅 환경 내에 제한되지 않은 개수의 장치를 가질 수 있다.
본 시스템의 사용자 인터페이스는, 일 실시예에 따르면, 전통적인 입력 성능과 함께 모션 감지, 몸체 추적, 멀티 터치, 음성 및 응시 입력 성능을 지원한다.
사용자 데이터 및 애플리케이션은 임의의 장치로부터 액세스가능하며, 스크린, 컴퓨터 및 장치 사이에서 이동할 수 있다. 애플리케이션은 다중 사용자 사이에서 공유될 수 있다 - 즉, 임의의 수의 사용자는 동시에 애플리케이션을 보고 작업할 수 있다. 이것은 심리스(seamless) 협업을 가능하게 한다; 예는 프리젠테이션과 함께 하는 비디오 채팅이다. 다른 예는 오디오 채팅 및 문자 채팅을 포함한다.
장치는 서로 발견할 수 있으며, 서로의 디스플레이, 입력 및 컴퓨팅 성능을 발견할 수 있다. 장치는 자신의 입력 성능과 디스플레이 성능을 서로 공유할 수 있다.
본 시스템은 여러 운영 체계를 지원하며, 심지어 운영 체계가 없는 장치도 지원한다. 또한, 본 시스템은 다중 데이터 스토리지 프로바이더 및 컴퓨팅 프로바이더를 지원한다. 사용자는 지리적 요소, 비용, 대역폭 및 다른 인자에 기초하여 자신의 개인용 편재형 컴퓨팅 환경에 대하여 컴퓨팅 프로바이더를 선택한다.
전술된 수신기의 일 실시예는 콘택트 렌즈 디스플레이일 수 있다는 것이 이해될 것이다. 콘택트 렌즈 디스플레이는 본 명세서에 참조로서 편입되는 IEEE Spectrum, 2009년 9월, "Augmented Reality in Contact Lens"에서 논의된다. 이러한 콘택트 렌즈는 착용자에게 정보를 디스플레이하고, 무선 장치를 통해서 통신할 수 있다. 이러한 장치는 전술한 바와 같은 수신기로서의 역할을 할 수 있고, 착용자의 시야에 그래픽을 중첩하여 사용자의 현실감을 증강할 수 있다. 컴팩트한 장치이지만, 이러한 장치는 단지 예를 들어 그래픽 명령과 문자를 렌더링만 하여 기능성에 있어서 제한될 수 있다. 이러한 장치의 일 실시예는 착용자가 자신의 환경에서 물체에 초점을 맞출 때 관련 문자를 디스플레이할 수 있다.
전술한 그래픽 출력은 3D 그래픽을 포함할 수 있다는 것이 이해될 것이다. 3D 그래픽은 다중 카메라에 의해 촬영되고, 그 다음 홀로그램 또는 다른 3D 이미지를 형성하기 위하여 함께 병합되는 특수 그래픽일 수 있다. 이러한 3D 그래픽은 전술한 시스템에 의해 쉽게 지원될 수 있다: 3D 그래픽은 서버에 의해 적절히 압축되고, 렌더링을 위하여 수신기에 전송된다. 수신기가 적절한 컴퓨팅 리소스와 렌더링 성능을 가진다고 가정하면, 3D 그래픽은 사용자에게 렌더링될 수 있다. 3D 그래픽은 본 명세서에 참조로서 편입되는 The Economist - Technology Quarterly, 2009년 9월 5일, p. 22, "3D: It's Nearly There"에서 논의된다.
하기의 설명에서, 설명의 목적으로, 특정 전문 용어가 본 명세서에 개시된 다양한 발명 개념에 대한 완전한 이해를 제공하기 위하여 설명된다. 그러나, 이러한 특정 상세는 본 명세서에 개시된 다양한 발명 개념을 실시하기 위하여는 필요하지 않다는 것이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명할 것이다.
이어지는 발명을 실시하기 위한 구체적인 내용의 일부 부분은 컴퓨터 메모리 내에서의 데이터 비트에 대한 동작을 나타내는 알고리즘 및 부호를 이용하여 제공된다. 이러한 알고리즘의 설명 및 표현은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자신의 작업 내용을 가장 효율적으로 전달하기 위하여 데이터 처리 분야에서 통상의 지식을 가진 자에 의해 사용되는 수단이다. 여기에서 그리고 전체적으로, 방법은 원하는 결과에 이르게 하는 자기 모순이 없는 처리인 것으로 생각된다. 처리는 물리량의 물리적 조작을 포함한다. 보통, 반드시 필요하지는 않지만, 이러한 양은 저장되고, 전송되고, 결합되고, 비교되고, 아니면 조작될 수 있는 전기 또는 자기 신호의 형태를 취한다. 비트, 값, 요소, 부호, 문자, 용어, 개수 또는 기타로서의 이러한 신호를 참조하는 것은 주로 일반적인 사용의 이유로 가끔 편리한 것으로 증명되었다.
그러나, 이러한 또는 유사한 모든 용어는 적절한 물리량과 관련된 것이며, 이러한 양에 적용된 단지 편리한 표지(label)라는 것을 유념하여야 한다. 다음의 논의로부터 자명한 바와 같이 특별히 달리 기술되지 않는다면, 발명을 실시하기 위한 구체적인 내용의 전체를 통하여, "처리(processing)" 또는 "컴퓨팅(computing)" 또는 "계산(calculating)" 또는 "결정(determining)" 또는 "디스플레이(displaying)" 등과 같은 용어를 이용하는 논의는 컴퓨터 시스템의 레지스터 및 메모리 내의 물리(전자)량으로서 표현되는 데이터를 컴퓨터 시스템 메모리나 레지스터 또는 정보 스토리지, 전송 또는 디스플레이 장치와 같은 다른 것 내에서 물리량으로서 유사하게 표현되는 다른 데이터로 조작하고 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 동작 및 처리를 말한다는 것이 이해된다.
또한, 본 방법 및 시스템은 본 명세서에서의 동작을 수행하기 위한 장치에 관련된다. 본 장치는 필요한 목적을 위하여 특별히 구축될 수 있거나, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은 플로피 디스크, 광 디스크, CD-ROM 및자기 광 디스크를 포함하는 임의의 종류의 디스크, ROM(read only memory), RAM(ramdom access memory), EPROM, EEPROOM, 자기 또는 광 카드, 또는 전자 명령어를 저장하기에 적합하고 컴퓨터 시스템 버스에 각각 연결된 임의의 종류의 매체와 같은, 그러나 이에 한정되지 않는, 컴퓨터 판독가능한 저장 매체에 저장될 수 있다.
본 명세서에 제공된 알고리즘 및 디스플레이이는 본질적으로 임의의 특정 컴퓨터 또는 다른 장치에 관련되지 않는다. 다양한 범용 컴퓨터 시스템이 본 명세서의 교시에 따라 프로그램과 함께 사용될 수 있거나, 또는 원하는 방법 단계를 수행하기 위하여 더욱 전문화된 장치를 구축하는 것이 편리한 것으로 증명될 수 있다. 이러한 다양한 시스템에 대한 필요한 구조는 아래의 설명에서 나타날 것이다. 또한, 본 발명은 임의의 특정 프로그래밍 언어를 참조하여 설명되지 않는다. 다양한 프로그래밍 언어가 본 명세서에서 설명된 방법 및 시스템의 교시를 구현하는데 사용될 수 있다는 것이 이해될 것이다.
도 1은 일 실시예에 따라 본 시스템과 함께 사용하기 위한 예시적인 컴퓨터 아키텍쳐를 도시한다. 아키텍쳐(100)의 일 실시예는 정보를 통신하기 위한 시스템 버스(120) 및 정보를 처리하기 위하여 버스(120)에 연결된 프로세서(110)를 포함한다. 아키텍처(100)는 프로세서(110)에 의해 실행될 정보 및 명령어를 저장하기 위하여 버스(120)에 연결된 RAM(random access memory) 또는 다른 동적 저장 장치(125)(본 명세서에서 주 메모리라 함)를 더 포함한다. 또한, 주 메모리(125)는 프로세서(110)에 의해 명령어를 실행하는 동안 임시 변수 또는 다른 중간 정보를 저장하는데 사용될 수 있다. 또한, 아키텍쳐(100)는 프로세서(110)에 의해 정적 정보 및 명령어를 저장하기 위하여 버스(120)에 연결된 ROM(read only memory) 및/또는 다른 정적 저장 장치(126)를 포함할 수 있다.
또한, 자기 디스크 또는 광학 디스크와 같은 데이터 저장 장치(127) 및 대응하는 드라이브는 정보 및 명령어를 저장하기 위한 컴퓨터 시스템(100)에 연결될 수 있다. 또한, 아키텍쳐(100)는 I/O 인터페이스(130)를 통해 제2 I/O 버스(150)에 연결될 수 있다. 디스플레이 장치(143), 입력 장치(예를 들어, 문자 입력 장치(142) 및/또는 커서 제어 장치(141))를 포함하는 복수의 I/O 장치는 I/O 버스(150)에 연결될 수 있다.
통신 장치(140)는 네트워크를 통해 다른 컴퓨터(서버 또는 클라이언트)에 대한 액세스를 허용한다. 통신 장치(140)는 하나 이상의 모뎀, 네트워크 인터페이스 카드, 무선 통신 인터페이스 또는 이더넷이나 토큰 링 또는 다른 종류의 네트워크에 연결하는데 사용되는 것과 같은 다른 널리 알려진 인터페이스 장치를 포함할 수 있다.
도 2는 일 실시예에 따라 편재형 컴퓨팅 환경의 예시적인 시스템 레벨 도면이다. 편재형 컴퓨팅 시스템(200)은 인터넷(207)을 통해 데이터 센터("클라우드(cloud)")(208)와 통신하는 클라이언트(209)를 갖는다. 클라이언트(209)는 사용자 엔진(202)을 실행하는 장치(201)를 가지며, 장치는 장치(201)에 설치되지 않은 애플리케이션(204)을 디스플레이한다. 클라우드(208)는 클라우드 엔진(205)과 애플리케이션(204)을 실행하는 서버(203)를 갖는다. 또한, 클라우드는 서버(203) 또는 장치(201)에 저장되지 않은 사용자 데이터(206)에 대한 액세스를 갖는다.
도 3a는 일 실시예에 따른 단일 서버를 이용하는 편재형 컴퓨팅 환경의 예시적인 시스템 레벨 도면이다. 편재형 컴퓨팅 환경(300)은 클라우드(311) 및 하나 이상의 장치(장치_1(301), 장치_2(302), 장치_N(303))를 포함한다. 장치_1(301)은 입력 성능(304), 출력 성능(305), 컴퓨팅 성능(306), 입력 인코더 및 디코더(307), 출력 인코더 및 디코더(308), 장치 에이전트(309) 및 네트워크 스택(310)을 가질 수 있다. 일 실시예에 따르면, 장치는 참조된 요소의 임의의 조합을 가질 수 있으며, 그 모두를 가질 필요는 없다. 클라우드(311)는 수퍼바이저(313)(입력, 출력 및 컴퓨팅에 대하여, I/O/C 수퍼바이저라고 함), 네임 서비스(312), 스토리지 프로바이더(316, 317)와 통신하는 데이터 프로바이더(314), 및 인증 및 보안 게이트웨이(315)를 갖는다.
도 3b는 일 실시예에 따른 다중 서버를 이용하는 편재형 컴퓨팅 환경의 예시적인 시스템 레벨 도면이다. 편재형 컴퓨팅 환경(340)은 클라우드(328)와 하나 이상의 장치(장치_1(318), 장치_2(319), 장치_N(320))를 포함한다. 장치_1(318)는 입력 성능(321), 출력 성능(322), 컴퓨팅 성능(323), 입력 인코더 및 디코더(324), 출력 인코더 및 디코더(325), 장치 에이전트(326) 및 네트워크 스택(327)을 가질 수 있다. 일 실시예에 따르면, 장치는 참조된 요소의 임의의 조합을 가질 수 있으며, 그 모두를 가질 필요는 없다. 클라우드(328)는 수퍼바이저(329)(입력, 출력 및 컴퓨팅에 대하여, I/O/C 수퍼바이저라고 함), 네임 서비스(330), 스토리지 프로바이더(336, 337)와 통신하는 데이터 프로바이더(331), 및 인증 및 보안 게이트웨이(335)를 갖는다. 또한, 클라우드(328)는 가상 기계 매니저(33) 및 애플리케이션 스트리머(334)와 통신하는 가상 컴퓨팅 장치 프로바이더(332)를 포함한다. 가상 기계 매니저(333)는 가상 기계(VM) 프로바이더(338)와 통신하며, 애플리케이션 스트리머(334)는 애플리케이션 이미지 스토리지(339)와 통신한다.
도 4a는 일 실시예에 따른 편재형 컴퓨팅 환경 내의 예시적인 장치 통신 그래프를 도시한다. 입력/출력/컴퓨팅 수퍼바이저(401)(본 명세서에서 "수퍼바이저(supervisor)"라 함)는 모두 서로의 근처 내에 있는 다수의 장치(402, 403, 404, 405, 406, 407)와 통신한다. 장치는 입력, 출력 및/또는 컴퓨팅 성능을 가질 수 있다. 장치는 서로 발견할 수 있으며, 다른 장치 상에서 종래의 기능을 강화하기 위하여 서로 선택적으로 포착한다. 장치 4(402)는 출력 장치이고, 포착되지 않았다. 장치 1(406)은 입력 장치이고, 포착되었다. 장치 2(407)도 입력 장치이고, 포착되었다. 장치 3(405)은 컴퓨팅 장치이고, 포착되었다. 장치 5(407)는 출력 장치이고, 포착되었다. 장치 6(407)은 입력 및 출력 장치이고, 포착되었다.
장치 1로 사용될 입력 장치의 예는 입력 인코드를 갖는 애플 아이폰일 수 있다. 장치 2로 사용될 입력 장치의 예는 입력 인코더를 갖는 전신(full-body) 모션 감지 카메라일 수 있다. 장치 3으로 사용될 컴퓨팅 장치의 예는 8-코어 CPU와 강력한 GPU를 구비하고, 출력 인코더 및 입력 인코더를 갖는 서버일 수 있다. 장치 4로 사용될 출력 장치의 예는 출력 인코더를 구비한 프로젝터를 갖는 프로젝션 표면일 수 있다. 장치 5로 사용될 입력 및 출력 장치의 예는 출력 디코더를 갖는 텔레비젼 세트일 수 있다. 장치 6으로 사용될 입력 및 출력 장치의 예는 입력 인코더 및 출력 디코더룰 갖는 멀티 터치 테이블탑 표면일 수 있다.
도 4b 및 4c는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 애플리케이션 전송 전후의 예시적인 장치 통신 그래프를 도시한다. 도 4b에서, 수퍼바이저(408)는 모두 포착된 4개의 장치(409, 410, 411, 412)와 통신한다. 입력 장치인 장치 1(409)(예를 들어, 애플 아이폰)은 입력/출력 장치인 장치 2(410)(예를 들어, 넷북)의 근처에 있다. 컴퓨팅 장치인 장치 4(412)(예를 들어, 8 core CPU 및 강력한 GPU를 갖는 서버)는 애플리케이션을 실행하고, 장치 2(410)로의 그리고 그로부터 스트리밍한다. 입력 및 출력 장치인 장치 3(411)(예를 들어, 노트북)은 포착되지만, 진행 중인 애플리케이션을 디스플레이하지 않는다.
또한, 도 4c는 모두 포착된 4개의 장치(409, 410, 411, 412)와 통신하는 수퍼바이저(413)를 포함한다. 그러나. 장치 1(409)은 장치 2(410) 상에 디스플레이된 애플리케이션을 장치 3(411)에 대신에 디스플레이되도록 전송하게 요청한다. 이제, 장치 4(412)는 장치 3(411)에 스트리밍하지 않는다.
도 5는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 클라이언트 아키텍쳐를 도시한다. 장치(501)는 장치 에이전트(516)와 네트워크 스택(517)을 가진다. 또한, 장치(501)는 입력 캡쳐러(508), 입력 인코더(512), 입력 디코더(513), 입력 큐(509), 출력 캡쳐러(510), 출력 렌더러(511), 출력 인코더(514), 출력 디코더(515) 및 컴퓨팅 요소(502, 503, 504, 505) 중 적어도 하나를 가진다. 장치(501)는 사용자 인터페이스(UI) 쉘(506) 및 애플리케이션(507)을 선택적으로 포함할 수 있다.
도 6a는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 간단한 출력 장치 아키텍쳐를 도시한다. 간단한 출력 장치(601)는 장치 에이전트(604)와 네트워크 스택(605)을 가진다. 또한, 간단한 출력 장치는 출력 디코더(603)와 출력 렌더러(602) 중 적어도 하나를 가진다.
도 6b는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 장치 컨트롤러를 도시한다. 장치 컨트롤러(606)는 장치 에이전트(610)와 네트워크 스택(611)을 가진다. 또한, 장치 컨트롤러(606)는 입력 캡쳐러(607)와 입력 인코더(608) 중 적어도 하나를 가진다. 장치 컨트롤러는 선택적으로 사용자 인터페이스(UI) 쉘(609)을 가질 수 있다.
도 6c는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 성능 컴퓨팅 장치를 도시한다. 성능 컴퓨팅 장치(또는 클라우드 서버)(612)는 장치 에이전트(620)와 네트워크 스택(621)을 가진다. 성능 컴퓨팅 장치는 CPU(613), GPU(614), 입력 디코더(616), 입력 큐(618), 출력 캡쳐러(617) 및 출력 인코더(619) 중 적어도 하나를 가진다. 성능 컴퓨팅 장치(612)는 선택적으로 애플리케이션(615)을 가질 수 있다.
도 6d는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 넷북형 장치 아키텍쳐를 도시한다. 넷북형 장치(622)는 장치 에이전트(629) 및 네트워크 스택(630)을 가진다. 또한, 넷북형 장치(622)는 출력 디코더(627), 입력 디코더(624), CPU(625), 그래픽스(626) 및 출력 렌더러(623) 중 적어도 하나를 가진다. 넷북형 장치(622)는 선택적으로 사용자 인터페이스(UI) 쉘(628)을 가진다.
도 6e는 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 간단한 운영 체계 아키텍쳐를 도시한다. 간단한 운영 체계(631)는 장치 에이전트(634)와 네트워크 스택(633)을 가진다. 간단한 운영 체계(631)는 비디오 코덱(632)를 가지며, 선택적으로 사용자 인터페이스(UI) 쉘(635)을 가진다.
도 7은 일 실시예에 따른 편재형 컴퓨팅 환경 내에서의 사용을 위한 예시적인 클라우드 아키텍쳐를 도시한다. 클라우드 아키텍처(700)는 수퍼바이저(701)와 네임 서비스(702)를 가진다. 클라우드 아키텍처(700)는 스토리지 프로바이더(705, 707)와 통신하는 데이터 프로바이더(706)와 가상 통신 장치 프로바이더(710)를 가진다. 가상 컴퓨팅 장치 프로바이더(710)는 가상 기계 매니저(709) 및 애플리케이션 스트리머(711)와 통신한다. 가상 기계 매니저(709)는 가상 기계 프로바이더(708)와 통신하고, 애플리케이션 스트리머(711)는 애플리케이션 이미지 스토리지(712)와 통신한다. 클라우드 아키텍쳐(700)는 인증 및 보안 게이트웨이(713)를 가진다.
또한, 클라우드 아키텍쳐(700)는 일 실시예에 따라 지불(payment) 엔진(703)과 라이센스 관리 엔진(704)을 가진다. 지불 엔진(703)은 서비스를 위한 클라이언트로부터의 지불을 조정하고, 라이센스 관리 엔진(704)은 편재형 컴퓨팅 환경에서 사용되는 애플리케이션을 위한 프로토콜 및 요건을 인가하는 것을 관리한다.
도 8a 내지 8c는 일 실시예에 따른, 임의의 컴퓨터가 임의의 사용자에 의해 사용될 수 있는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 컴퓨터는 사용자가 데이터, 애플리케이션, 가상 및 물리적 컴퓨팅 장치, 및 로봇을 관리하도록 사용자 인터페이스 쉘을 제공한다. 사용자는 작업을 완료하고 인증을 해제하며, 컴퓨터는 사용자의 개인 컴퓨팅 환경을 숨긴다. 그 다음, 이후의 사용자는 컴퓨터를 액세서하고, 인증되고, 자신의 데이터, 애플리케이션, 가상 컴퓨터와 로컬 및 공용 장치를 액세스할 수 있다. 시나리오는 클라우드 운영 환경 및 상기 참조된 프로토콜을 이용하여 가능하게 된다. 컴퓨터가 모든 사용자의 데이터를 저장하고 그들의 애플리케이션을 사용 가능하게 하는 것은 불가능할 수 있다.
예시적인 편재형 컴퓨팅 환경(800)은 인증 장치(802)를 갖는 컴퓨터(801)를 포함한다. 컴퓨터(801)는 무선 네트워크 어댑터(803)를 이용하여 네트워크에 연결된다. 예시적인 편재형 컴퓨팅 환경(810)은 인증 장치(802)를 갖는 컴퓨터(801)를 포함하고, 컴퓨터(801)는 무선 네트워크 어댑터(803)를 이용하여 네트워크에 연결된다. 환경(810)은 인증 장치(805)를 갖는 사용자 1(804)을 포함한다. 사용자 1(804)은 인증 장치(802)의 적절한 근처에 인증 장치(805)를 배치하고, 사용자 1(804)의 데이터는 컴퓨터 1(801)에 유입된다. 결과에 따른 환경(811)은 컴퓨터 1(801) 상에 사용자 1의 데이터, 애플리케이션 및 장치에 대한 디스플레이(806)를 포함한다. 사용자 1(804)이 근처를 떠난다면(더욱 구체적으로는, 사용자 1(804)의 인증 장치(805)는 더 이상 인증 장치(802)의 근처에 있지 않는다), 사용자 1(804)의 데이터는 컴퓨터 1(801)에 더 이상 디스플레이되지 않아 액세스가능하지 않으며, 환경은 800에 도시된 상태로 복귀한다.
그 다음, 사용자 2(807)는 예시적인 컴퓨팅 환경(812)에서와 같이 컴퓨터 1(801)을 액세스할 수 있다. 예시적인 컴퓨팅 환경(812)은 인증 장치(802)를 갖는 컴퓨터 1(801)을 포함하고, 컴퓨터 1(801)은 무선 네트워크 어댑터(803)를 이용하여 네트워크에 연결된다. 환경(810)은 인증 장치(808)를 갖는 사용자 2(807)를 포함한다. 사용자 2(807)는 인증 장치(802)의 적절한 근처에 인증 장치(808)를 배치하고, 사용자 2(807)의 데이터는 컴퓨터 1(801)에 유입된다. 결과에 따른 환경(813)은 컴퓨터 1(801) 상에 사용자 2의 데이터, 애플리케이션 및 장치에 대한 디스플레이(809)를 포함한다. 사용자 2(807)가 근처를 떠난다면(더욱 구체적으로는, 사용자 2(807)의 인증 장치(808)는 더 이상 인증 장치(802)의 근처에 있지 않는다), 사용자 2(807)는 컴퓨터 1(801)에 더 이상 디스플레이되지 않아 액세스가능하지 않으며, 환경은 800에 도시된 상태로 복귀한다.
도 9a 내지 9c는 일 실시예에 따른, 애플리케이션이 사용자를 따르는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 사용자는 랩탑에서 자신의 개인 컴퓨팅 환경에 로그인하고, 애플리케이션을 실행시킨다. 애플리케이션은 사실 클라우드 운영 환경에서 실행하고, 임의의 운영 체계 또는 애플리케이션일 수 있다. 사용자는 자신의 랩탑으로부터 떨어져서 이동하여 텔레비전에 접근하고(RFID 리더는 사용자를 감지하고 부착된 PC는 사용자를 인증한다), 애플리케이션은 즉시 텔레비전으로 이동한다. 예시적인 편재형 컴퓨팅 환경(900)은 인증 장치(905)를 갖는 사용자 1(904)을 포함한다. 사용자 1(904)은 인증 장치(906)에 의해(인증 장치(906)의 적절한 근처에 인증 장치(905)를 배치함으로써) 인증되고, 컴퓨터 1(901)에서 애플리케이션을 실행한다. 컴퓨터 1(901)은 무선 네트워크 어댑터(903)를 이용하여 네트워크에 연결된다.
사용자(904)는 편재형 컴퓨팅 환경(907)에서 컴퓨터 1(901)로부터 컴퓨터 2(908)로 이동한다. 컴퓨터 1(908)은 무선 네트워크 어댑터(903)를 이용하여 네트워크에 연결된다. 사용자 1(904)은 인증 장치(911)의 적절한 근처에 인증 장치(905)를 배치함으로써 인증되고, 애플리케이션 1(902)은 사용자 1(904)이 걸어가기 전에 컴퓨터 1(901)에 있는 상태와 동일한 상태로 컴퓨터 1(908)을 자동으로 전송한다.
사용자 1(904)은 무선 네트워크 어댑터(903)를 이용하여 네트워크에 연결된 HDTV(910)를 포함하는 다른 환경(909)을 향하여 여전히 걸어갈 수 있다. HDTV(910)는 인증 장치(912)를 포함하며, 사용자 1(904)의 인증 강치가 근처에 들어 갈 때 사용자 1(904)이 인증된다. 사용자 1(904)이 인증되기만 하면, 사용자 1(904)이 걸어가기 전에 컴퓨터 2(908)에 있는 상태와 동일한 상태로 애플리케이션 1(902)이 HDTV(910) 상에 디스플레이된다.
도 10a 내지 10c는 일 실시예에 따른, 소프트웨어 애플리케이션이 하드웨어 장치로부터 독립적인, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 랩탑은 애플리케이션을 '실행할(running)' 수 있고 셧다운될 수 있으며, 애플리케이션은 동작 상태를 유지한다. 예시적인 편재형 운영 환경(1000)은 제어 장치(1004)(예를 들어 아이폰 또는 Wii-mote), 컴퓨터 1(1001) 및 컴퓨터 2(1003)를 포함한다. 컴퓨터 1(1001)은 애플리케이션 1(1002)을 '실행한다'. 제어 장치(1004)는, 예를 들어 컴퓨터 2(1003)를 향한 웨이브 동작과 같은 입력을 제공할 수 있으며, 환경은 1005에 도시된 환경으로 시프트한다. 환경(1005)은 컴퓨터 1(1001), 제어 장치(1004) 및 컴퓨터 2(1003)를 포함하지만, 컴퓨터 2(1003)가 이제 애플리케이션 1(1002)을 '실행한다'. 애플리케이션 1(1002)은 컴퓨터 1(1001)을 떠날 때와 동일한 상태로 디스플레이된다/실행한다.
또 다른 예시적인 환경(1006)은 컴퓨터 1(1001), 컴퓨터 2(1003) 및 제어 장치(1004)를 포함한다. 컴퓨터 1(1001)은 셧다운될 수 있고, 애플리케이션 1(1002)은 여전히 컴퓨터 2(1003)에서 실행된다.
도 11a 내지 11e는 일 실시예에 따른, 애플리케이션이 전자 신문으로부터 테이블 표면으로 이동하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 사용자는 개인 컴퓨팅 환경으로 들어가고, 클라우드 운영 환경에서 휴면 상태에서 저장된 애플리케이션(프리젠테이션)을 재개한다. 레거시 애플리케이션 및 가요성 스크린은 레거시 운영 체계의 결핍 때문에 통상적으로 실행할 수 없을 것이다. 그러나, 이는 클라우드 운영 환경으로부터 시각적으로 스트리밍되고, 전자 신문의 빌트인 디코더 디스플레이가 있다. 사용자 인터페이스(UI) 쉘은 원격 애플리케션을 실행하는 대기 시간 효과를 약화하기 위하여 온스크린 객체의 지역 드래깅(dragging) 및 리사이징(resizing)을 가능하게 한다. 사용자는 애플리케이션을 (네트워크 연결성을 구비한 부착된 컴퓨팅 유닛을 가지는) 발견된 공용 프로젝션 장치로 드래그한다. 클라우드 운영 환경은 이를 인지하고, 새로운 장치로 애플리케이션을 스트리밍하기 시작한다.
예시적인 환경(1100)은 사용자 1(1102), 가요성 스크린(1101)(예를 들어, 전자 신문), 및 무선 네트워크 어댑터(1103)를 포함한다. 예시적인 환경(1104)에서, 사용자 1(1102)의 데이터(1105)는 상기 참조된 프로토콜 및 클라우드 운영 환경을 이용하여 가요성 스크린(1101)으로 스트리밍된다. 예시적인 환경(1106)에 도시된 바와 같이, 사용자 1(1102)은 가요성 스크린(1101)에 스트리밍된 애플리케이션(1109)을 가질 수 있다.
또 다른 예시적인 환경(1110, 1114)은 프로젝터(1107) 및 프로젝션 표면(1108)을 더 포함한다. 사용자 1은 애플리케이션 1(1109)을 프로젝션 표면(1108)으로 드래그할 수 있으며, 클라우드 운영 환경은 상기 참조된 프로토콜을 이용하여 애플리케이션을 프로젝션 장치(1108)로 스트리밍하기 시작한다. 사용자 1(1102)은 입력(1112)을 제어 장치(1111)로 제공할 수 있으며, 프로젝션 표면(1108)으로 스티리밍하는 애플리케이션이 1113에 응답한다
도 12는 일 실시예에 따른, 제어 장치가 다른 장치 및 애플리케이션을 제어하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 제어 장치의 예는 아이폰일 수 있다. 애플리케이션은 프로젝션 테이블에서 실행된다. 사용자는 애플리케이션에 대한 입력 장치로서 아이폰을 설정하고, 사용자는 애플리케이션 내에서 타이핑하기 위하여 아이폰 키보드를 호출한다. 아이폰 입력은 클라우드 운영 환경으로, 가상 기계로, 그리고 그 다음 새로운 글자와 문장을 디스플레이하는 애플리케이션 코드로 리디렉션된다. 이러한 새로운 시각적 정보는 인터셉트되고 프로젝션 장치로 전송된다. 프로젝터에 부착된 컴퓨팅 장치에서의 디코더는 테이블에 디스플레이 되는 시각적 정보를 디코딩한다. 예시적인 편재형 환경(1200)은 입력 수단(예를 들어, 키보드)을 갖는 제어 장치(1201)를 이용하는 사용자 1(1202)을 포함하며, 제어 장치(1201)는 무선 네트워크 어댑터(1203)를 이용하여 무선 네트워크에 연결된다. 또한, 프로젝터(1207)와 프로젝션 표면(1205)은 무선 네트워크 어댑터(1203)를 이용하여 무선 네트워크에 연결된다. 사용자 1(1202)에 의해 제어 장치 1(1201)로 입력된 입력(1204)은 프로젝션 표면(1205)에 디스플레이된다(1205).
도 13a 내지 13d는 일 실시예에 따른, 장치가 제어 장치로부터의 입력에 응답하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 예시적인 편재형 컴퓨팅 환경(1300)은 무선 네트워크 어댑터(1303)를 이용하여 무선 네트워크에 연결된 제어 장치(1301)를 이용하는 사용자 1(1302)을 포함한다. 또한, HDTV(1304)는 무선 네트워크(1303)에 연결된다. 다른 예시적인 환경(1307)은 제어 장치 1(1301)로 입력 1(1305)을 입력하는 사용자 1(1302)을 포함하고, 입력 1(1306)의 디스플레이는 HDTV(1304)에 나타난다.
다른 예시적인 환경(1312)은 제어 장치 2(1310)(예를 들어, Wii-mote)로 입력 2(1310)를 입력하는 사용자 1(1302)을 포함한다. 제어 장치 트래커(1308)는 제어 장치 2(1310)의 움직임을 추적하고, 입력 2(1311)의 디스플레이는 HDTV(1304)에 나타난다. 또 다른 예시적인 환경은 제어 장치 3(1314)으로 입력 3(1315)을 입력하는 사용자 1(1302)을 포함하고, 입력 3(1316)에 대한 응답은 HDTV(1304)에 디스플레이된다. 입력 3(1316)의 예는 멀티터치라 하는 아이폰의 예시적인 특징을 이용하여 애플리케이션의 프레임의 크기를 재조정할 수 있다.
도 14a 및 14b는 다른 실시예에 따른, 장치가 제어 장치로부터의 입력에 응답하는, 예시적인 편재형 컴퓨팅 환경 시나리오를 도시한다. 예시적인 편재형 컴퓨팅 환경(1400)은 무선 네트워크 어댑터(1403)를 이용하여 무선 네트워크에 연결된 제어 장치 1(1401)을 이용하는 사용자 1(1403)을 포함한다. 사용자 1(1402)은 제어 장치 1(1401)을 이용하여 장치 2(1404)를 제어할 수 있고, 장치 2(1404)는 무선 네트워크 어댑터(1403)를 이용하여 무선 네트워크에 연결된다. 예시적인 환경(1405)에서, 사용자 1(1402)은 입력 1(1406)을 제어 장치(1401)에 제공하고, 장치 2는 입력 1(1407)에 응답한다. 이러한 장치의 시나리오의 예는 아이폰과 룸바(Roomba)를 포함한다. 사용자는 아이폰을 흔들거나 제스쳐를 할 수 있으며, 룸바는 이에 따라 움직일 것이다. 이 시나리오는 상기 참조된 프로토콜과 클라우드 운영 환경을 이용하여 가능해진다.
다음은 본 시스템의 여러 실시예에 따른 예시적인 시나리오이다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 2개의 예시적인 실시예를 이용하여 설명되었지만, 다른 시나리오가 본 개시 내용에 비추어 가능하다는 것이 이해될 것이다. 예를 들어, 요소의 역할 및 관계는 본 발명의 원리에 따라 교체되거나 확장될 수 있다. 예시적인 용어와 정의는 다음을 포함한다.
<id> - 지속적인 속성을 갖는 객체.
[id] - 시스템의 어디엔가 현재 실행되는 지정된 에이전트.
출력 = [송신자] => [수신자](변수) - [송신자] 에이전트가 [수신자]에게 메시지를 전송사고, [수신자] 에이전트는 출력으로 응답한다.
시나리오 1
참가자:
○ <user>의 id를 갖는 사용자 및 그의 수퍼바이저 [supervisor].
○ <phone>의 id를 갖는 아이폰 및 그 상에 실행되는 에이전트 [phone].
○ 장치 <dev> 및 그 상에 실행되는 에이전트 [dev].
○ 가상 기계 매니저 [VMManager].
○ 애플리케이션 id <app>.
○ 애플리케이션이 실행되고 있는 가상 설비: <va>.
시나리오:
● 사용자가 아이폰을 런칭하여 사용자 인증을 입력한다.
● 아이폰은 id <phone>를 가지며, 사용자는 id <user>를 가진다.
● 아이폰은 액세스 포인트에 연결하여 사용자의 수퍼바이저 요청을 전송한다:
● [phone] => [supervisor]('acquire', {device:<phone>})
● 수퍼바이저는 다음을 수행한다:
● return acquire(<phone>)
● 아이폰은 수퍼바이저에게 "<user>의 현재 상태 취득"의 요청을 전송한다.
● state = [phone] => [supervisor]('getState')
● 수퍼바이저는 다음을 수행한다:
● return getState()
● 아이폰은 일부가 온라인이며 사용가능한 사용자에게 알려진 모든 장치의 리스트를 보여 준다.
● 아이폰은 위에서 얻어진 상태에 대한 정보를 이용한다.
● 사용자는 사용가능한 장치를 선택하고, "애플리케이션 런칭"을 선택한다.
● 선택된 장치는 id <dev>를 가진다.
● 아이폰은 "<dev>에 런칭될 수 있는 애플리케이션을 리스트하기" 요청을 전송한다:
● apps = [phone] => [supervisor]('getApps', {device:<dev>})
● 수퍼바이저는 다음을 수행한다:
● capabilities = <dev>.capabilities['consume', 'output']
● appList = [supervisor] => [VMManager]('compatibleApps', capabilities)
● return appList
● 아이폰은 이 장치에 런칭될 수 있는 사용가능한 애플리케이션의 리스트를 보여 준다.
● 아이폰은 위에서 획득된 애플리케이션을 사용한다.
● 사용자는 애플리케이션을 선택하고 이를 런칭한다.
● 선택된 애플리케이션은 id <app>를 가진다.
● 아이폰은 수퍼바이저에게 "<dev>에 <app>를 런칭"을 요청한다:
● [phone] => [supervisor]('launch', {app:<app>, device:<dev>})
● 수퍼바이저는 VM 매니저에게 비밀 문구(phrase)로 <user> 대신에 <app>를 런칭하도록 요청한다.
● acquire(<dev>)
● <va> = [supervisor] => [VMManager]('launch', {app:<app>, user:<user>})
● acquire(<va>)
● return Ok
● 수퍼바이저는 <dev>에게 "<va>에 연결"이라 한다:
● connect('output', <va>, <dev>)
● 애플리케이션이 장치 스크린 상에 나타난다.
● 아이폰 입력은 장치에 그리고 궁극적으로 애플리케이션에 리디렉션된다.
● 수퍼바이저는 <phone>에게 입력을 <dev>에 리디렉션하라고 한다.
● connect('input', <phone>, <dev>)
● <dev> 상의 장치 에이전트는 수신된 입력을 HVTP를 통해 시스템 및 원격 애플리케이션으로 브로드캐스트한다.
시나리오 2
참가자:
● id <user>를 갖는 사용자 및 그의 수퍼바이저 [supervisor].
● id <phone>을 갖는 아이폰 및 그 상에 실행되는 에이전트 [phone].
● id <mac>을 갖는 Mac 및 에이젼트 [mac], 원격 애플리케이션을 보여 주고, 아이폰 입력을 유지한다.
● id <pc>를 갖는 PC 및 에이전트 [pc].
시나리오:
● 사용자는 장치(Mac)에서 실행되는 애플리케이션을 가지며, 아이폰 입력은 이 장치에도 리디렉션된다.
● 사용자는 id <user> 및 관련된 수퍼바이저 [supervisor]를 가진다.
● 장치 id는 <mac>이고, 에이전트 id는 [mac]이다.
● 아이폰 <phone> 및 에이전트 [phone].
● 애플리케이션은 가상 설비 <va>에서 실행된다.
● 사용자는 다른 장치(PC)로 걸어가서, 이 장치 상에서 인증하기 위하여 자신의 RFID 카드를 사용한다.
● 장치의 id는 <pc>이고, 이는 그 상에서 실행되는 에이전트 [pc]를 가진다.
● RFlD 하드웨어는 사용자 id <user>를 포함하는 신호를 [pc]에 전송한다.
● [pc]는 사용자가 PC에 접근하였다는 것을 통지한다:
● state = [pc] => [supervisor]('acquire', {device:<pc>})
● ... ("아이폰으로부터 애플리케이션을 런칭"에서와 동일한 단계)
● PC는 모든 사용자 장치의 현재 상태를 디스플레이할 수 있다.
● 애플리케이션은 Mac으로부터 PC로 이동한다.
● PC는 수퍼바이자에게 모든 출력을 자신에게 이동시키도록 요청한다:
● [pc] => [supervisor]('redirectAll', {type:'output', device:<pc>})
● 모든 소유된 장치로부터 PC로 출력을 리디렉션한다:
● redirectAll('output', <pc>)
● 아이폰 입력은 이제 PC로 리디렉션되고 있다.
● PC는 모든 소유된 장치로부터 입력을 얻도록 수퍼바이저에게 요청한다:
● [pc] => [supervisor]('redirectAll', {type:'input', device:<pc>})
● 수퍼바이저는 모든 입력 장치를 PC에 연결하도록 요청한다:
● redirectAll('input', <pc>)
일 실시예에 따르면, 수퍼바이저는 다음을 포함하는 그러나 이에 한정되지 않는 여러 기능을 이용할 수 있다.:
●acquire(device):
● <device>.online = True
● <device>.currentOwner = <user>
● <user>.ownedDevices.append(<device>)
●return Ok
● release(device):
● if <device>.currentOwner != <user>: return Ok
● <device>.currentOwner = None
● <user>.ownedDevices.remove(<device>)
● return Ok
●getState():
● devices = <user>.knownDevices
● output = []
● 장치에 있는 각 <device>에 대하여: output.append({id:<device>, location:<device>.location, name:<device>.name, available: <device>.online and <device>.currentOwner = None, ...})
● return output
●connect(type, producer, consumer):
● secret = randomStringO
● if <producer>.role[type] == Both and <consumer>.role[typc] == Both: server = <producer>, client = <consumer>
● if <producer>.role[type] == Both and <consumer>.role[type] == Passive: server = <consumer>, client = <producer>
● if <producer>.role[type] == Both and <consumer>.role[type] == Active: server - <producer>, client = <consumer>
● ...
● if <producer>.role[type] == <consumer>.role[type]: return Error
● [supervisor] => [server]('acceptConnection', {type:type, from:client, secret:secret})
● [supervisor] => [client]('makeConnection', {type:type, to:server, secret:secret})
● <user>.connections.append({type:type, producer:<produccr>, consumer:<consumer>}
● return Ok
●disconnect(type, producer, consumer):
● [supervisor] => [producer]('disconnect', {role:'producer'. type:type, with:<consumer>})
● [supervisor] => [consumer]('disconnect', {role:'consumer', type:type, with:<producer>})
● <user>.connections.remove({type:type, producer:<producer>, consumer:<consumer>}
● return Ok
●redirectAll(type, consumer):
● <user>.connections에서 각 {conType, conProducer, conConsumcr}에 대하여: if conType = type and conConsumer != consumer: disconnect(conType, conProducer, conConsumer); connect(conType, conProducer, consumer)
편재형 컴퓨팅 방법 및 시스템이 개시된다. 본 명세서에서 설명된 실시예는 설명의 목적을 위한 것이고, 본 실시예의 내용을 한정하는 것으로 고려되어서는 안된다. 본 발명의 기술적 사상을 벗어나지 않으면서 다양한 수정, 사용, 대체, 조합, 제조 방법이 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명할 것이다.

Claims (28)

  1. 클라우드 컴퓨팅 환경에 연결된 복수의 클라이언트 장치; 및
    상기 클라우드 컴퓨팅 환경을 통하여 상기 복수의 클라이언트 장치와 통신하는 서버
    를 포함하고,
    상기 서버는,
    상기 복수의 클라이언트 장치의 제1 클라이언트 장치에서 애플리케이션 프로그램을 실행시키는 단계;
    상기 제1 클라이언트 장치로부터, 상기 제1 클라이언트 장치의 근처 내에서 검출된 제2 클라이언트 장치의 표시를 수신하는 단계;
    상기 클라우드 컴퓨팅 환경과 관련하여 상기 제2 클라이언트 장치를 인증하는 단계; 및
    상기 제2 클라이언트 장치를 인증하는 단계에 이어서, 상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 이동시키는 단계
    를 포함하는 복수의 동작을 실행하기 위한 프로세서 하드웨어를 포함하고,
    상기 제1 및 제2 클라이언트 장치는, 상기 클라우드 컴퓨팅 환경과 통신할 수 있고, 지리적 근처 내에서 다른 클라이언트 장치의 존재를 검출할 수 있는 장치 에이전트를 포함하는,
    시스템.
  2. 제1항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 인증에 이어서, 상기 제1 클라이언트 장치 또는 상기 제2 클라이언트 장치의 사용자로부터 어떠한 입력도 요구하지 않으면서, 상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 자동으로 이동시키는 단계
    를 더 포함하는,
    시스템.
  3. 제1항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 이동시키기 위한 의도를 나타내는 사용자가 개시한 제스쳐를 상기 제1 클라이언트 장치로부터 수신하는 단계
    를 더 포함하는,
    시스템.
  4. 제1항에 있어서,
    상기 제2 클라이언트 장치의 표시를 수신하는 단계는,
    상기 제1 클라이언트 장치가 상기 제2 클라이언트 장치로부터의 특정의 물리적 거리 내에 있을 때, 상기 제1 클라이언트 장치에 의하여, 상기 제2 클라이언트 장치의 존재를 자동으로 인식하는 단계
    를 더 포함하는,
    시스템.
  5. 제1항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 서버에 의해, 상기 이동 전에 상기 애플리케이션 프로그램의 실행이 정지한 상기 애플리케이션 프로그램의 상태 포인트를 검출하는 단계; 및
    상기 서버에 의해, 상기 제2 클라이언트 장치에서 상기 애플리케이션 프로그램의 실행을 개시하는 단계
    를 더 포함하고,
    상기 개시된 실행은 검출된 상기 상태 포인트에서 시작하는,
    시스템.
  6. 제1항에 있어서,
    상기 복수의 동작은,
    상기 서버에 의해, 상기 제1 클라이언트 장치가 이전에 검출된 상기 제2 클라이언트 장치의 근처 내에 있지 않다는 표시를 수신하는 단계; 및
    상기 애플리케이션 프로그램의 실행을 상기 제1 클라이언트 장치로 다시 이동시키는 단계
    를 더 포함하는,
    시스템.
  7. 복수의 클라이언트 장치를 클라우드 컴퓨팅 환경에 연결하는 단계;
    상기 클라우드 컴퓨팅 환경을 통하여 상기 복수의 클라이언트 장치와 통신하는 서버에 의해, 상기 복수의 클라이언트 장치의 제1 클라이언트 장치에서 애플리케이션 프로그램을 실행시키는 단계;
    상기 제1 클라이언트 장치로부터, 상기 제1 클라이언트 장치의 근처 내에서 검출된 제2 클라이언트 장치의 표시를 수신하는 단계;
    상기 클라우드 컴퓨팅 환경과 관련하여 상기 제2 클라이언트 장치를 인증하는 단계; 및
    상기 제2 클라이언트 장치를 인증하는 단계에 이어서, 상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 이동시키는 단계
    를 포함하고,
    상기 클라우드 컴퓨팅 환경은 상기 서버를 포함하고, 상기 서버는 프로세서 하드웨어를 포함하며,
    상기 제1 및 제2 클라이언트 장치는, 상기 클라우드 컴퓨팅 환경과 통신할 수 있고, 지리적 근처 내에서 다른 클라이언트 장치의 존재를 검출할 수 있는 장치 에이전트를 포함하는,
    편재형 컴퓨팅 환경 동작 방법.
  8. 제7항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 인증에 이어서, 상기 제1 클라이언트 장치 또는 상기 제2 클라이언트 장치의 사용자로부터 어떠한 입력도 요구하지 않으면서, 상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 자동으로 이동시키는 단계
    를 더 포함하는,
    편재형 컴퓨팅 환경 동작 방법.
  9. 제7항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 이동시키기 위한 의도를 나타내는 사용자가 개시한 제스쳐를 상기 제1 클라이언트 장치로부터 수신하는 단계
    를 더 포함하는,
    편재형 컴퓨팅 환경 동작 방법.
  10. 제7항에 있어서,
    상기 제2 클라이언트 장치의 표시를 수신하는 단계는,
    상기 제1 클라이언트 장치가 상기 제2 클라이언트 장치로부터의 특정의 물리적 거리 내에 있을 때, 상기 제1 클라이언트 장치에 의하여, 상기 제2 클라이언트 장치의 존재를 자동으로 인식하는 단계
    를 더 포함하는,
    편재형 컴퓨팅 환경 동작 방법.
  11. 제7항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 서버에 의해, 상기 이동 전에 상기 애플리케이션 프로그램의 실행이 정지한 상기 애플리케이션 프로그램의 상태 포인트를 검출하는 단계; 및
    상기 서버에 의해, 상기 제2 클라이언트 장치에서 상기 애플리케이션 프로그램의 실행을 개시하는 단계
    를 더 포함하고,
    상기 개시된 실행은 검출된 상기 상태 포인트에서 시작하는,
    편재형 컴퓨팅 환경 동작 방법.
  12. 제7항에 있어서,
    상기 서버에 의해, 상기 제1 클라이언트 장치가 이전에 검출된 상기 제2 클라이언트 장치의 근처 내에 있지 않다는 표시를 수신하는 단계; 및
    상기 애플리케이션 프로그램의 실행을 상기 제1 클라이언트 장치로 다시 이동시키는 단계
    를 더 포함하는,
    편재형 컴퓨팅 환경 동작 방법.
  13. 편재형 컴퓨팅 시스템에 있어서,
    상기 편재형 컴퓨팅 시스템에 연결된 복수의 클라이언트 장치; 및
    상기 편재형 컴퓨팅 시스템을 통하여 상기 복수의 클라이언트 장치와 통신하는 서버
    를 포함하고,
    상기 서버는,
    상기 복수의 클라이언트 장치의 제1 클라이언트 장치에서 애플리케이션 프로그램을 실행시키는 단계;
    상기 제1 클라이언트 장치로부터, 상기 제1 클라이언트 장치의 근처 내에서 검출된 제2 클라이언트 장치의 표시를 수신하는 단계;
    상기 편재형 컴퓨팅 시스템과 관련하여 상기 제2 클라이언트 장치를 인증하는 단계; 및
    상기 제2 클라이언트 장치를 인증하는 단계에 이어서, 상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 이동시키는 단계
    를 포함하는 복수의 동작을 실행하기 위한 프로세서 하드웨어를 포함하고,
    상기 제1 및 제2 클라이언트 장치는 상기 편재형 컴퓨팅 시스템과 통신할 수 있고, 지리적 근처 내에서 다른 클라이언트 장치의 존재를 검출할 수 있는 장치 에이전트를 포함하는,
    편재형 컴퓨팅 시스템.
  14. 제13항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 인증에 이어서, 상기 제1 클라이언트 장치 또는 상기 제2 클라이언트 장치의 사용자로부터 어떠한 입력도 요구하지 않으면서, 상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 자동으로 이동시키는 단계
    를 더 포함하는,
    편재형 컴퓨팅 시스템.
  15. 제13항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 제1 클라이언트 장치로부터 상기 제2 클라이언트 장치로 상기 애플리케이션 프로그램의 실행을 이동시키기 위한 의도를 나타내는 사용자가 개시한 제스쳐를 상기 제1 클라이언트 장치로부터 수신하는 단계
    를 더 포함하는,
    편재형 컴퓨팅 시스템.
  16. 제13항에 있어서,
    상기 제2 클라이언트 장치의 표시를 수신하는 단계는,
    상기 제1 클라이언트 장치가 상기 제2 클라이언트 장치로부터의 특정의 물리적 거리 내에 있을 때, 상기 제1 클라이언트 장치에 의하여, 상기 제2 클라이언트 장치의 존재를 자동으로 인식하는 단계
    를 더 포함하는,
    편재형 컴퓨팅 시스템.
  17. 제13항에 있어서,
    상기 애플리케이션 프로그램의 실행을 이동시키는 단계는,
    상기 서버에 의해, 상기 이동 전에 상기 애플리케이션 프로그램의 실행이 정지한 상기 애플리케이션 프로그램의 상태 포인트를 검출하는 단계; 및
    상기 서버에 의해, 상기 제2 클라이언트 장치에서 상기 애플리케이션 프로그램의 실행을 개시하는 단계
    를 더 포함하고,
    상기 개시된 실행은 검출된 상기 상태 포인트에서 시작하는,
    편재형 컴퓨팅 시스템.
  18. 제13항에 있어서,
    상기 복수의 동작은,
    상기 서버에 의해, 상기 제1 클라이언트 장치가 이전에 검출된 상기 제2 클라이언트 장치의 근처 내에 있지 않다는 표시를 수신하는 단계; 및
    상기 애플리케이션 프로그램의 실행을 상기 제1 클라이언트 장치로 다시 이동시키는 단계
    를 더 포함하는,
    편재형 컴퓨팅 시스템.
  19. 제18항에 있어서,
    상기 복수의 동작은,
    상기 서버에 의해, 상기 제1 클라이언트 장치가 이전에 검출된 상기 제2 클라이언트 장치의 근처 내에 있지 않다는 표시를 수신하는 단계; 및
    상기 애플리케이션 프로그램의 실행을 제3 클라이언트 장치로 이동시키는 단계
    를 더 포함하는,
    편재형 컴퓨팅 시스템.
  20. 제19항에 있어서,
    상기 제3 클라이언트 장치는 상기 편재형 컴퓨팅 시스템과 관련하여 인증된 클라이언트로 이전에 등록된,
    편재형 컴퓨팅 시스템.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
KR1020127007739A 2009-08-27 2010-08-27 편재형 컴퓨팅 시스템 및 방법 KR101356453B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US23761109P 2009-08-27 2009-08-27
US61/237,611 2009-08-27
US12/569,884 2009-09-29
US12/569,884 US8060560B2 (en) 2009-08-27 2009-09-29 System and method for pervasive computing
PCT/US2010/047047 WO2011025989A1 (en) 2009-08-27 2010-08-27 A system and method for pervasive computing

Publications (2)

Publication Number Publication Date
KR20120049374A KR20120049374A (ko) 2012-05-16
KR101356453B1 true KR101356453B1 (ko) 2014-02-03

Family

ID=43626448

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127007739A KR101356453B1 (ko) 2009-08-27 2010-08-27 편재형 컴퓨팅 시스템 및 방법

Country Status (8)

Country Link
US (2) US8060560B2 (ko)
EP (1) EP2471221A4 (ko)
JP (1) JP2013506170A (ko)
KR (1) KR101356453B1 (ko)
CN (1) CN102577251A (ko)
AU (1) AU2010286543A1 (ko)
CA (1) CA2771785C (ko)
WO (1) WO2011025989A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503834A (zh) * 2014-12-29 2015-04-08 联想(北京)有限公司 一种信息处理方法及第一电子设备

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9401937B1 (en) 2008-11-24 2016-07-26 Shindig, Inc. Systems and methods for facilitating communications amongst multiple users
US8390670B1 (en) 2008-11-24 2013-03-05 Shindig, Inc. Multiparty communications systems and methods that optimize communications based on mode and available bandwidth
US9344745B2 (en) 2009-04-01 2016-05-17 Shindig, Inc. Group portraits composed using video chat systems
US9712579B2 (en) 2009-04-01 2017-07-18 Shindig. Inc. Systems and methods for creating and publishing customizable images from within online events
US8779265B1 (en) 2009-04-24 2014-07-15 Shindig, Inc. Networks of portable electronic devices that collectively generate sound
US8060560B2 (en) 2009-08-27 2011-11-15 Net Power And Light, Inc. System and method for pervasive computing
US8571939B2 (en) * 2010-07-07 2013-10-29 Toshiba Global Commerce Solutions Holdings Corporation Two phase payment link and authorization for mobile devices
US9569771B2 (en) 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US9137250B2 (en) 2011-04-29 2015-09-15 Stephen Lesavich Method and system for electronic content storage and retrieval using galois fields and information entropy on cloud computing networks
US9037564B2 (en) 2011-04-29 2015-05-19 Stephen Lesavich Method and system for electronic content storage and retrieval with galois fields on cloud computing networks
US9361479B2 (en) 2011-04-29 2016-06-07 Stephen Lesavich Method and system for electronic content storage and retrieval using Galois fields and geometric shapes on cloud computing networks
US8812601B2 (en) * 2011-05-09 2014-08-19 Google Inc. Transferring application state across devices with checkpoints
US8224894B1 (en) 2011-05-09 2012-07-17 Google Inc. Zero-click sharing of application context across devices
US8171137B1 (en) 2011-05-09 2012-05-01 Google Inc. Transferring application state across devices
US8971572B1 (en) 2011-08-12 2015-03-03 The Research Foundation For The State University Of New York Hand pointing estimation for human computer interaction
US8938550B2 (en) * 2011-12-15 2015-01-20 Microsoft Corporation Autonomous network streaming
US8775638B2 (en) * 2012-02-02 2014-07-08 Siemens Aktiengesellschaft Method, computer readable medium and system for scaling medical applications in a public cloud data center
US9098357B2 (en) * 2012-04-11 2015-08-04 Nokia Technologies Oy Method and apparatus for activity management across multiple devices
US8798332B2 (en) 2012-05-15 2014-08-05 Google Inc. Contact lenses
US9184800B2 (en) 2012-07-16 2015-11-10 Google Inc. Automated sharing of application data over a near field communication link
US9298020B1 (en) 2012-07-26 2016-03-29 Verily Life Sciences Llc Input system
US8857981B2 (en) 2012-07-26 2014-10-14 Google Inc. Facilitation of contact lenses with capacitive sensors
US9158133B1 (en) 2012-07-26 2015-10-13 Google Inc. Contact lens employing optical signals for power and/or communication
US9523865B2 (en) 2012-07-26 2016-12-20 Verily Life Sciences Llc Contact lenses with hybrid power sources
US8919953B1 (en) 2012-08-02 2014-12-30 Google Inc. Actuatable contact lenses
US8971978B2 (en) 2012-08-21 2015-03-03 Google Inc. Contact lens with integrated pulse oximeter
US9696564B1 (en) 2012-08-21 2017-07-04 Verily Life Sciences Llc Contact lens with metal portion and polymer layer having indentations
US9111473B1 (en) 2012-08-24 2015-08-18 Google Inc. Input system
US8820934B1 (en) 2012-09-05 2014-09-02 Google Inc. Passive surface acoustic wave communication
US20140192315A1 (en) 2012-09-07 2014-07-10 Google Inc. In-situ tear sample collection and testing using a contact lens
US9398868B1 (en) 2012-09-11 2016-07-26 Verily Life Sciences Llc Cancellation of a baseline current signal via current subtraction within a linear relaxation oscillator-based current-to-frequency converter circuit
US10010270B2 (en) 2012-09-17 2018-07-03 Verily Life Sciences Llc Sensing system
US9326710B1 (en) 2012-09-20 2016-05-03 Verily Life Sciences Llc Contact lenses having sensors with adjustable sensitivity
US8870370B1 (en) 2012-09-24 2014-10-28 Google Inc. Contact lens that facilitates antenna communication via sensor impedance modulation
US8960898B1 (en) 2012-09-24 2015-02-24 Google Inc. Contact lens that restricts incoming light to the eye
US8989834B2 (en) 2012-09-25 2015-03-24 Google Inc. Wearable device
US20140088372A1 (en) 2012-09-25 2014-03-27 Google Inc. Information processing method
US8979271B2 (en) 2012-09-25 2015-03-17 Google Inc. Facilitation of temperature compensation for contact lens sensors and temperature sensing
US8985763B1 (en) 2012-09-26 2015-03-24 Google Inc. Contact lens having an uneven embedded substrate and method of manufacture
US8821811B2 (en) 2012-09-26 2014-09-02 Google Inc. In-vitro contact lens testing
US8960899B2 (en) 2012-09-26 2015-02-24 Google Inc. Assembling thin silicon chips on a contact lens
US9884180B1 (en) 2012-09-26 2018-02-06 Verily Life Sciences Llc Power transducer for a retinal implant using a contact lens
US9063351B1 (en) 2012-09-28 2015-06-23 Google Inc. Input detection system
US8965478B2 (en) 2012-10-12 2015-02-24 Google Inc. Microelectrodes in an ophthalmic electrochemical sensor
US9176332B1 (en) 2012-10-24 2015-11-03 Google Inc. Contact lens and method of manufacture to improve sensor sensitivity
US9757056B1 (en) 2012-10-26 2017-09-12 Verily Life Sciences Llc Over-molding of sensor apparatus in eye-mountable device
CN102970280B (zh) * 2012-10-30 2015-11-18 青岛百灵信息科技有限公司 基于云计算和普适计算的多态视频业务系统
CN102945539B (zh) * 2012-10-30 2015-07-29 青岛百灵信息科技有限公司 基于云计算和普适计算的多态移动查房方法
US11237719B2 (en) * 2012-11-20 2022-02-01 Samsung Electronics Company, Ltd. Controlling remote electronic device with wearable electronic device
US10185416B2 (en) 2012-11-20 2019-01-22 Samsung Electronics Co., Ltd. User gesture input to wearable electronic device involving movement of device
US10551928B2 (en) 2012-11-20 2020-02-04 Samsung Electronics Company, Ltd. GUI transitions on wearable electronic device
US8994827B2 (en) 2012-11-20 2015-03-31 Samsung Electronics Co., Ltd Wearable electronic device
US10423214B2 (en) 2012-11-20 2019-09-24 Samsung Electronics Company, Ltd Delegating processing from wearable electronic device
US11372536B2 (en) 2012-11-20 2022-06-28 Samsung Electronics Company, Ltd. Transition and interaction model for wearable electronic device
US11157436B2 (en) 2012-11-20 2021-10-26 Samsung Electronics Company, Ltd. Services associated with wearable electronic device
KR102097578B1 (ko) * 2012-12-10 2020-04-07 삼성전자 주식회사 애플리케이션 실행 방법 및 장치
US10033773B2 (en) * 2012-12-10 2018-07-24 Samsung Electronics Co., Ltd. Application execution method and apparatus
US8874182B2 (en) 2013-01-15 2014-10-28 Google Inc. Encapsulated electronics
US9289954B2 (en) 2013-01-17 2016-03-22 Verily Life Sciences Llc Method of ring-shaped structure placement in an eye-mountable device
US20140209481A1 (en) 2013-01-25 2014-07-31 Google Inc. Standby Biasing Of Electrochemical Sensor To Reduce Sensor Stabilization Time During Measurement
US9636016B1 (en) 2013-01-25 2017-05-02 Verily Life Sciences Llc Eye-mountable devices and methods for accurately placing a flexible ring containing electronics in eye-mountable devices
US9526120B2 (en) 2013-03-15 2016-12-20 Google Inc. Techniques for context-based application invocation for short-range wireless communication interactions
US9161712B2 (en) 2013-03-26 2015-10-20 Google Inc. Systems and methods for encapsulating electronics in a mountable device
US9113829B2 (en) 2013-03-27 2015-08-25 Google Inc. Systems and methods for encapsulating electronics in a mountable device
KR101306556B1 (ko) * 2013-04-08 2013-09-09 한성대학교 산학협력단 스마트 기기 기반 통합 로봇 제어 시스템
CN103297501A (zh) * 2013-05-07 2013-09-11 杭州玄鸟数字技术有限公司 全息投影实时交互系统
US9451456B2 (en) 2013-06-03 2016-09-20 The Aerospace Corporation Smart phone server sleeve
US20140371560A1 (en) 2013-06-14 2014-12-18 Google Inc. Body-Mountable Devices and Methods for Embedding a Structure in a Body-Mountable Device
US9084561B2 (en) 2013-06-17 2015-07-21 Google Inc. Symmetrically arranged sensor electrodes in an ophthalmic electrochemical sensor
US9948895B1 (en) 2013-06-18 2018-04-17 Verily Life Sciences Llc Fully integrated pinhole camera for eye-mountable imaging system
US9685689B1 (en) 2013-06-27 2017-06-20 Verily Life Sciences Llc Fabrication methods for bio-compatible devices
US9028772B2 (en) 2013-06-28 2015-05-12 Google Inc. Methods for forming a channel through a polymer layer using one or more photoresist layers
US9492118B1 (en) 2013-06-28 2016-11-15 Life Sciences Llc Pre-treatment process for electrochemical amperometric sensor
US9307901B1 (en) 2013-06-28 2016-04-12 Verily Life Sciences Llc Methods for leaving a channel in a polymer layer using a cross-linked polymer plug
US9814387B2 (en) 2013-06-28 2017-11-14 Verily Life Sciences, LLC Device identification
US9225375B2 (en) * 2013-09-23 2015-12-29 Johnson & Johnson Vision Care, Inc. Ophthalmic lens system capable of wireless communication with multiple external devices
JP6248528B2 (ja) * 2013-10-11 2017-12-20 セイコーエプソン株式会社 放電灯駆動装置、光源装置、プロジェクターおよび放電灯駆動方法
US10271010B2 (en) 2013-10-31 2019-04-23 Shindig, Inc. Systems and methods for controlling the display of content
US9662199B2 (en) 2013-11-26 2017-05-30 Strathspey Crown Holdings, LLC Intraocular lens having input and output electronics
US9654674B1 (en) 2013-12-20 2017-05-16 Verily Life Sciences Llc Image sensor with a plurality of light channels
US9572522B2 (en) 2013-12-20 2017-02-21 Verily Life Sciences Llc Tear fluid conductivity sensor
US9910884B2 (en) 2014-01-13 2018-03-06 Microsoft Technology Licensing, Llc Resuming items in their last-used presentation modes
US10691332B2 (en) 2014-02-28 2020-06-23 Samsung Electronics Company, Ltd. Text input on an interactive display
US9366570B1 (en) 2014-03-10 2016-06-14 Verily Life Sciences Llc Photodiode operable in photoconductive mode and photovoltaic mode
US9184698B1 (en) 2014-03-11 2015-11-10 Google Inc. Reference frequency from ambient light signal
US9789655B1 (en) 2014-03-14 2017-10-17 Verily Life Sciences Llc Methods for mold release of body-mountable devices including microelectronics
US9952751B2 (en) 2014-04-17 2018-04-24 Shindig, Inc. Systems and methods for forming group communications within an online event
US9733333B2 (en) 2014-05-08 2017-08-15 Shindig, Inc. Systems and methods for monitoring participant attentiveness within events and group assortments
JP6358847B2 (ja) * 2014-05-14 2018-07-18 オリンパス株式会社 表示処理装置および撮像装置
US9711181B2 (en) 2014-07-25 2017-07-18 Shindig. Inc. Systems and methods for creating, editing and publishing recorded videos
KR102264050B1 (ko) 2014-11-28 2021-06-11 삼성전자주식회사 전자 장치들 간에 기능을 공유하는 방법 및 장치
US9734410B2 (en) 2015-01-23 2017-08-15 Shindig, Inc. Systems and methods for analyzing facial expressions within an online classroom to gauge participant attentiveness
KR102306536B1 (ko) * 2015-04-01 2021-09-29 삼성전자주식회사 위젯 제공 시스템 및 방법
US10133916B2 (en) 2016-09-07 2018-11-20 Steven M. Gottlieb Image and identity validation in video chat events
CN108446151B (zh) * 2017-02-14 2022-01-25 阿里巴巴集团控股有限公司 通讯方法及装置
US10877960B2 (en) 2017-10-16 2020-12-29 Citrix Systems, Inc. Normalizing user identification across disparate systems
CN109032804B (zh) * 2018-08-01 2020-12-11 创新先进技术有限公司 数据处理方法和装置、服务器
US11843593B2 (en) 2020-06-01 2023-12-12 Citrix Systems, Inc. Application integration using multiple user identities

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089078A1 (en) 2007-09-28 2009-04-02 Great-Circle Technologies, Inc. Bundling of automated work flow
US20090187654A1 (en) 2007-10-05 2009-07-23 Citrix Systems, Inc. Silicon Valley Systems and methods for monitoring components of a remote access server farm

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
WO2002033541A2 (en) * 2000-10-16 2002-04-25 Tangis Corporation Dynamically determining appropriate computer interfaces
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
KR101277016B1 (ko) * 2004-11-05 2013-07-30 텔코디아 테크놀로지스, 인코포레이티드 네트워크 발견 메커니즘
US7654462B2 (en) * 2005-02-16 2010-02-02 Casey Steven M Mobile device base station for enhanced signal strength for on-demand media services
US8023499B2 (en) * 2005-02-17 2011-09-20 Sharp Kabushiki Kaisha Communication network control system, communication terminal, and communication network control method
US20060239190A1 (en) * 2005-04-25 2006-10-26 Matsushita Electric Industrial Co., Ltd. Policy-based device/service discovery and dissemination of device profile and capability information for P2P networking
DE102005033211A1 (de) * 2005-07-13 2007-01-18 Deutsche Thomson-Brandt Gmbh Verfahren zur Feststellung der Aktivität eines Gerätes in einem Netzwerk verteilter Stationen sowie Netzwerkstation für die Durchführung des Verfahrens
CN100401707C (zh) * 2006-05-31 2008-07-09 北京和利时系统工程有限公司 一种分布式控制系统中的远程过程调用方法及系统
JP4627284B2 (ja) * 2006-07-20 2011-02-09 シャープ株式会社 装置選択制御システム、処理装置、制御装置及び装置選択制御方法
US20080189700A1 (en) * 2007-02-02 2008-08-07 Vmware, Inc. Admission Control for Virtual Machine Cluster
TWI363993B (en) * 2007-10-31 2012-05-11 Ibm Method for auto-deploying an application from a mobile device to a host in a pervasive computing environment and the mobile device implementing the method
US8689115B2 (en) * 2008-09-19 2014-04-01 Net Power And Light, Inc. Method and system for distributed computing interface
US9344401B2 (en) * 2009-02-04 2016-05-17 Citrix Systems, Inc. Methods and systems for providing translations of data retrieved from a storage system in a cloud computing environment
US8060560B2 (en) 2009-08-27 2011-11-15 Net Power And Light, Inc. System and method for pervasive computing

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090089078A1 (en) 2007-09-28 2009-04-02 Great-Circle Technologies, Inc. Bundling of automated work flow
US20090187654A1 (en) 2007-10-05 2009-07-23 Citrix Systems, Inc. Silicon Valley Systems and methods for monitoring components of a remote access server farm

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503834A (zh) * 2014-12-29 2015-04-08 联想(北京)有限公司 一种信息处理方法及第一电子设备
CN104503834B (zh) * 2014-12-29 2018-02-27 联想(北京)有限公司 一种信息处理方法及第一电子设备

Also Published As

Publication number Publication date
CA2771785C (en) 2013-02-05
JP2013506170A (ja) 2013-02-21
AU2010286543A1 (en) 2012-04-19
EP2471221A1 (en) 2012-07-04
EP2471221A4 (en) 2013-05-01
KR20120049374A (ko) 2012-05-16
CA2771785A1 (en) 2011-03-03
US8959141B2 (en) 2015-02-17
US20110055317A1 (en) 2011-03-03
US8060560B2 (en) 2011-11-15
US20120124128A1 (en) 2012-05-17
CN102577251A (zh) 2012-07-11
WO2011025989A1 (en) 2011-03-03

Similar Documents

Publication Publication Date Title
KR101356453B1 (ko) 편재형 컴퓨팅 시스템 및 방법
US11494010B2 (en) Touch support for remoted applications
TWI537827B (zh) 應用軟體試用系統、方法及其伺服器與使用者裝置
WO2021086598A1 (en) Unified interfaces for paired user computing devices
US9699262B2 (en) Integrated viewing of local and remote applications in various multiplatform environments
RU2700188C2 (ru) Представление вычислительной среды на множественных устройствах
KR102393739B1 (ko) 복수의 장치 상에 분할된 애플리케이션 제시
KR20170061675A (ko) 타겟 장치 리소스를 호스트 장치의 컴퓨팅 환경에 대여하는 방법
CN114616813A (zh) 用于配对的用户计算设备的电话会议接口和控件
US10715584B2 (en) Multiuser application platform
US20180196584A1 (en) Execution of multiple applications on a device
CN113268212A (zh) 投屏方法、装置、存储介质及电子设备
JP7101313B2 (ja) コンピューティング環境内での仮想デスクトップの提供
US11016717B1 (en) Selective electronic content casting
EP3285143A1 (en) Ar/vr device virtualisation
CN111949150B (zh) 控制外设切换方法、装置、存储介质及电子设备
US11487559B2 (en) Dynamically switching between pointer modes
WO2023169157A1 (zh) 子应用程序的运行方法、装置、电子设备、程序产品及存储介质

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: 20161220

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee