KR101831478B1 - 임베디드 디바이스의 가상화 - Google Patents
임베디드 디바이스의 가상화 Download PDFInfo
- Publication number
- KR101831478B1 KR101831478B1 KR1020137016864A KR20137016864A KR101831478B1 KR 101831478 B1 KR101831478 B1 KR 101831478B1 KR 1020137016864 A KR1020137016864 A KR 1020137016864A KR 20137016864 A KR20137016864 A KR 20137016864A KR 101831478 B1 KR101831478 B1 KR 101831478B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtualization
- embedded
- embedded device
- processing
- input
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Hardware Redundancy (AREA)
Abstract
디바이스의 적어도 일부 기능이 서버 또는 다른 컴퓨팅 디바이스에 오프로딩되게 하기 위해 임베디드 디바이스의 애플리케이션 특정 주변 장치로부터 임베디드 디바이스의 공통 컴퓨터 프로세싱 작업을 분리하는 디바이스 가상화 시스템이 본 명세서에 설명된다. 디바이스 가상화 시스템은 가상 임베디드 디바이스의 관리, 구성 및 제어를 상당히 간단화한다. 디바이스의 많은 소프트웨어가 가상화 서버 상에서 실행되기 때문에, 정보 기술(IT) 요원은 가상화 서버를 관리하고 임의의 업데이트를 적용하고 발생하는 임의의 문제점을 진단하도록 할당될 수 있다. 더욱이, 단일 서버 또는 서버의 그룹은 광범위한 사용자를 위한 광범위한 가상화된 임베디드 디바이스를 위한 가상화 서비스를 제공하는데 사용될 수 있다. 따라서, 시스템은 임베디드 디바이스의 유용성을 향상시키고 현재의 임베디드 디바이스보다 긴 수명 및 광범위한 사용을 허용한다.
Description
임베디드 디바이스(embedded device)는 가정, 일터, 몰(mall) 등에서 현재 어디서나 사용되고 있다. 임베디드 디바이스는 케이블 서비스용 셋탑 박스로부터, 게임 콘솔, 냉장고, 병원 장비, 전력 모니터링 디바이스, 소매 매점, 정보 부스 등에 이르기까지 모든 것을 포함한다. 임베디드 디바이스는 통상적으로 데스크탑 컴퓨터에 유사한 부품, 즉 중앙 프로세싱 유닛(CPU), 메모리, 저장 디바이스, 때때로 그래픽 프로세싱 유닛(GPU) 및 디바이스의 용도에 특정한 주변 장치를 포함한다. 예를 들어, 디지털 비디오 레코딩(DVR) 셋탑 박스는 튜너 주변 장치를 포함할 수 있고, 반면에 병원 x-레이 기계는 x-레이 캡처 주변 장치를 포함할 수 있다.
임베디드 디바이스는 강력하지만, 종종 용도가 제한되어 있다. 임베디드 디바이스 제조업자는 종종 디바이스를 구성하는데 사용된 제조 원가(COG) 및 자재 명세서(BOM)를 절감하기 위한 다수의 타협을 행한다. 임베디드 디바이스의 업데이트는 다수의 사용자들이 수행하는데 불편한 작업인 펌웨어 플래싱을 수반할 수 있다. 따라서, 임베디드 디바이스는 종종 일단 단일 용도로 판매되고, 제조업자가 새로운 기능성 또는 고속의 프로세싱을 가능하게 하기를 원하면, 제조업자는 종종 더 새로운 버전인 교체용 임베디드 디바이스를 사용자에게 판매하도록 시도한다.
임베디드 디바이스는 사용자가 그 특정 용도로 더 이상 소용되지 않을 때 종종 디바이스를 폐기하기 때문에 많은 폐기물을 생성한다. 예를 들어, DVR은 더 많은 저장 용량을 갖는 새로운 DVR로 교체될 수 있고, 또는 병원은 컬러 프린터 또는 3차원 영상을 포함하는 것으로 초음파 기계를 교체할 수도 있다. 임베디드 디바이스에서 에러가 발견되면, 문제점을 갖는 모든 인스턴스를 식별하고 에러를 교정하기 위한 펌웨어 업데이트를 제공하는 것은 시간 소비적이고 어렵다. 따라서, 임베디드 디바이스의 관리 및 제어가 종종 문제가 된다. 게다가, 몇몇 디바이스의 구성 및 설치는 일반 사용자의 숙련의 레벨을 넘을 수 있어, 고비용의 기술자 시간이 디바이스의 초기 셋업에 포함되어 있다.
디바이스의 적어도 일부 기능이 서버 또는 다른 컴퓨팅 디바이스에 오프로딩되게 하기 위해 임베디드 디바이스의 애플리케이션 특정 주변 장치로부터 임베디드 디바이스의 공통 컴퓨터 프로세싱 작업을 분리하는 디바이스 가상화 시스템이 본 명세서에 설명된다. 일 극단적인 예에서, 시스템을 사용하는 가상 임베디드 디바이스는 다른 위치에서 실행하는 가상화 서버에 통신된 입력 및 출력을 제공하는 사용자의 위치에서 실행하는 원격 주변 장치의 세트일 뿐이다. 디바이스 가상화 시스템은 가상 임베디드 디바이스의 관리, 구성 및 제어를 상당히 간단화한다. 디바이스의 많은 소프트웨어가 가상화 서버 상에서 실행되기 때문에, 정보 기술(IT) 요원은 가상화 서버를 관리하고 임의의 업데이트를 적용하고 발생하는 임의의 문제점을 진단하도록 할당될 수 있다. 더욱이, 단일 서버 또는 서버의 그룹은 광범위한 사용자를 위한 광범위한 가상화된 임베디드 디바이스를 위한 가상화 서비스를 제공하는데 사용될 수 있다. IT 요원은 업데이트를 적용하고, 구성 문제점을 진단하고, 사용자의 환경에서 동작하도록 디바이스를 셋업하는 것을 보조하는 등을 할 수 있다.
게다가, 문제점이 식별될 때, 디바이스 제조업자는 디바이스를 가상화하는 데이터 센터로의 입력 및 출력을 모니터링함으로써 훨씬 많은 수의 디바이스로의 액세스를 가질 수 있다. 이는 테스트 및 문제점의 진단을 상당히 간단화한다. 게다가, 제조업자는 사용자의 위치로 훨씬 저가의 디바이스를 선적할 수 있고, 가상화된 임베디드 디바이스에 그 핵심 기능성을 제공하는 가상화 서버에 의해 제공된 서비스를 위한 가입 모델에 기초하여 사용자에 과금할 수 있다. 이는 사용자가 펌웨어 업데이트 플래싱의 기술적 혼란 및 유지 보수 없이 규칙적인 업데이트로부터 이득을 얻게 한다. 다수의 위치에서 더 저가의 슬림형 디바이스를 설치함으로써, 다수의 사용자는 또한 비용을 절약하기 위해 단일 가상화된 디바이스의 프로세싱 파워를 공유할 수 있다. 따라서, 시스템은 임베디드 디바이스의 유용성을 향상시키고, 현재의 임베디드 디바이스보다 긴 수명 및 더 광범위한 사용을 허용한다.
이 요약 설명은 상세한 설명에서 이하에 더 설명되는 개략화된 형태의 개념의 선택을 소개하도록 제공된다. 이 요약 설명은 청구된 요지의 주요 특징 또는 본질적인 특징부를 식별하도록 의도된 것은 아니고, 또한 청구된 요지의 범주를 결정하는데 사용을 위해 의도된 것도 아니다.
도 1은 일 실시예에서, 디바이스 가상화 시스템의 구성 요소를 도시하는 블록도.
도 2는 일 실시예에서, 원격 프로세싱을 위해 가상 임베디드 디바이스에서 정보를 캡처하기 위한 디바이스 가상화 시스템의 프로세싱을 도시하는 흐름도.
도 3은 일 실시예에서, 공통 가상화 설비에서 가상 디바이스 정보를 프로세싱하기 위한 디바이스 가상화 시스템의 프로세싱을 도시하는 흐름도.
도 4는 일 실시예에서, 디바이스 가상화 시스템의 예시적인 동작 환경을 도시하는 블록도.
도 2는 일 실시예에서, 원격 프로세싱을 위해 가상 임베디드 디바이스에서 정보를 캡처하기 위한 디바이스 가상화 시스템의 프로세싱을 도시하는 흐름도.
도 3은 일 실시예에서, 공통 가상화 설비에서 가상 디바이스 정보를 프로세싱하기 위한 디바이스 가상화 시스템의 프로세싱을 도시하는 흐름도.
도 4는 일 실시예에서, 디바이스 가상화 시스템의 예시적인 동작 환경을 도시하는 블록도.
디바이스의 적어도 몇몇 기능이 서버 또는 다른 컴퓨팅 디바이스(즉, 가상 디바이스)에 오프로딩되게 하기 위해 임베디드 디바이스의 애플리케이션 특정 주변 장치로부터 임베디드 디바이스의 공통 컴퓨터 프로세싱 작업을 분리하는 디바이스 가상화 시스템이 본 명세서에 설명된다. 일 극단적인 예에서, 시스템을 사용하는 가상 임베디드 디바이스는 다른 위치에서 실행하는 가상화 서버에 통신된 입력 및 출력을 제공하는 사용자의 위치에서 실행하는 원격 주변 장치의 세트일 뿐이다. 예를 들어, 데이터 센터는 다수의 가상 임베디드 디바이스를 위한 프로세싱 및 저장 능력을 제공할 수 있다. 일 예로서, DVR 기능성을 갖는 셋탑 박스를 고려한다. 현재, DVR은 디바이스 내에 설치된 로컬 하드 드라이브에 기초하여 고정된 저장량을 갖는다. 하드 드라이브가 채워지기 시작하면, DVR은 오래된 레코딩된 쇼를 삭제하기 시작하고 그리고/또는 새로운 것들을 레코딩하는 것을 회피하도록 프로그램된다. 현재의 DVR은 단일 용도를 갖는 자립형 디바이스이다. DVR을 가상화함으로써, 몇몇 구성 요소 및 기능은 데이터 센터 또는 다른 위치로 이동될 수 있다. 예를 들어, 디바이스를 위한 저장 및 프로세싱 파워는 데이터 센터로 오프로딩될 수 있고, 반면에 가정의 오디오/시각 장비로의 튜너 및 접속부는 잔류한다. 사용자는 가상화된 DVR이 저장 공간이 고갈되지 않도록 데이터 센터 내에 가상적으로 무제한 저장을 지불할 수 있다.
게다가, 디바이스 가상화 시스템은 가상 임베디드 디바이스의 관리, 구성 및 제어를 상당히 간단화한다. 디바이스의 많은 소프트웨어가 가상화 서버 상에서 실행도기 때문에, 정보 기술(IT) 요원이 가상화 서버를 관리하고 임의의 업데이트를 적용하고 발생하는 임의의 문제점을 진단하기 위해 할당될 수 있다. 더욱이, 단일 서버 또는 서버의 그룹이 광범위한 사용자를 위한 광범위한 가상화된 임베디드 디바이스를 위한 가상화 서비스를 제공하는데 사용될 수 있다. IT 요원은 업데이트를 적용하고, 구성 문제점을 진단하고, 사용자의 환경에서 동작하도록 디바이스를 셋업하는 것을 보조하는 등을 할 수 있다. 게다가, 문제점이 식별될 때, 디바이스 제조업자는 디바이스를 가상화하는 데이터 센터로의 입력 및 출력을 모니터링함으로써 훨씬 많은 수의 디바이스로의 액세스를 가질 수 있다. 이는 테스트 및 문제점의 진단을 상당히 간단화한다. 게다가, 제조업자는 사용자의 위치로 훨씬 저가의 디바이스를 선적할 수 있고, 가상화된 임베디드 디바이스에 그 핵심 기능성을 제공하는 가상화 서버에 의해 제공된 서비스를 위한 가입 모델에 기초하여 사용자에 과금할 수 있다. 이는 사용자가 펌웨어 업데이트 플래싱의 기술적 혼란 및 유지 보수 없이 규칙적인 업데이트로부터 이득을 얻게 한다. 다수의 위치에서 더 저가의 슬림형 디바이스를 설치함으로써, 다수의 사용자는 또한 비용을 절약하기 위해 단일 가상화된 디바이스의 프로세싱 파워를 공유할 수 있다. 예를 들어, 병원은 일 병원에 위치된 단일의 공유된 자기 공명 영상(MRI) 또는 다른 진단 기계로부터의 출력을 제공하는 디스플레이 디바이스를 다양한 위치에서 의사에게 제공할 수 있다. 따라서, 시스템은 임베디드 디바이스의 유용성을 향상시키고, 현재의 임베디드 디바이스보다 긴 수명 및 더 광범위한 사용을 허용한다.
디바이스 가상화 시스템은 다양한 임베디드 디바이스의 기능성을 전달하기 위해 서버의 파워, 다기능성, 위치 및 비용 구조를 활용한다. 다수의 회사는 현재 임베디드 디바이스의 작업의 일부를 수행하는데 양호하게 적합된 빌딩 데이터 센터이다. 몇몇 실시예에서, 가상 임베디드 디바이스는 휴대형 스크린 또는 모니터를 포함하고 전체 프로세싱 파워는 원격 어딘가의 가상화 서버에 상주한다. 이는 이들이 실제 임베디드 디바이스 또는 가상 디바이스를 사용하는 것처럼 사용자에게 심리스(seamless)하다. 예를 들어 의사/간호사가 단지 이들 자신이 용이하게 휴대할 수 있는 휴대형 스캐너만을 갖는 동안 원격 위치의 어딘가에 설치되어 있는 MRI, 초음파 또는 다른 의료용 진단 기계를 고려한다. 이 진단 기계는 동시에 다수의 요구를 프로세싱하는 것이 가능하도록 충분히 강력하다. 이 방식으로 유지 보수 비용은 다수의 병원에 의해 공유되는 단일의 팀에 의해 유지되는 일 위치에 단지 하나의 강력한 기계만이 존재하고 따라서 유지 보수 비용이 마찬가지로 공유되기 때문에 절감된다. 디바이스용 가상화는 데스크탑 클라이언트 및 서버와 같은 운영 체제 레벨에서 가상화함으로써 성취된다. 임의의 업데이트가 다수의 분산형 디바이스에 반대로 중앙 디바이스에 푸시된다. 이는 가상 머신을 사용하는 것에 대조적으로 가상화의 모든 이득을 얻는 것이 가능하도록 임베디드 디바이스 자체를 진정으로 가상화한다. 이는 개량된 물리적 디바이스를 반복적으로 판매하는 것에 대조적으로 디바이스를 위한 서비스 기반 모델을 허용한다. 임의의 병원이 예를 들어 단지 이 디바이스로부터 하나의 특정 서비스만을 사용할 필요가 있으면, 이들은 그 하나의 서비스에 대해서만 지불할 수 있다.
몇몇 실시예에서, 각각의 임베디드 디바이스는 모든 프로세싱 파워가 원격 가상 머신으로 푸시되는 단순 단말(dumb terminal)과 같다. 이는 임베디드 디바이스가 현재에 비교하여 더 많은 정보를 프로세싱하는 것으로 보일 수 있고 디바이스 제조업자는 가상 머신이 데스크탑, 서버 또는 메인프레임만큼 강력할 수 있기 때문에 프로세싱 파워 뿐만 아니라 푸트프린트에 대해 걱정할 필요가 없다. 시스템은 디바이스가 데스크탑 클라이언트 및 서버와 같이 관리되게 한다. 시스템은 현재 임베디드 디바이스를 위한 특정화된 지식을 구성하는 것에 대조적으로 모든 디바이스를 위한 접근법의 일반화 및 표준화를 가능하게 한다. 이는 더 일관적인 디바이스 경험을 구성하는 것을 돕고, 단순 단말 레벨에서 제어될 수 있는 해상도/디스플레이 및 특정 주변 장치에 대한 단순한 변경만을 갖고 디바이스를 가로질러 애플리케이션을 기록하는 것을 용이하게 한다. 이 시점에, 임베디드 디바이스는 데스크탑 클라이언트 및 서버와 같이 더 심리스하다. 일 디바이스에 대해 기록된 애플리케이션은 다수의 임베디드 디바이스에 대해 심리스하게 그리고 상호 교환 가능하게 활용될 수 있다. 이들 임베디드 디바이스 후방에 설치된 가상 머신은 임의의 애플리케이션, 운영 체제 또는 보안 패치 업데이트를 식별할 수 있고, 셋업된 정책에 기초하여 사용자 허가 있고/없이 이들을 다운로드 및/또는 스케쥴링하는 것이 가능하다. 이러한 것은 어느 디바이스가 제조업자로부터 사용되지는지에 무관하게 디바이스 경험을 디바이스를 가로질러 간단하고, 심리스하고, 통합형이고, 강력하고, 표준형이게 한다. 상이한 제조업자들은 이들이 생성하는 경험 및 이들의 가상 머신의 지원 및 서비스를 제공할 수 있는 프로세싱 파워에 기초하여 이들의 시장을 여전히 제어할 수 있다. 이는 더 많은 각각의 디바이스가 클라우드 내에 상주하는 디바이스에 대한 서비스 기반 모델을 사용하여 더 많은 융통성을 허용한다.
가상 디바이스는 광범위한 용도로 사용될 수 있다. 예를 들어, 시스템을 구현하는 텔레비전은 비디오 데이터의 프로세싱을 데이터 센터로 오프로드할 수 있다. 비디오 재생은 통상적으로 저장 포맷으로부터 재생 포맷으로 비디오 및 오디오 데이터를 압축 해제하고 해석하기 위한 하나 이상의 코덱의 사용을 수반한다. 코덱은 더 많은 압축, 부가의 특징(예를 들어, 더 많은 스피커 채널, 3차원 데이터 등) 등을 추가하기 위해 시간 경과에 따라 변경된다. 임베디드 디바이스가 코덱 업데이트를 계속하게 하는 것이 종종 곤란하고, 이는 특정 유형의 콘텐트의 재생 불능을 야기할 수 있다. 현재, 이는 제조업자가 펌웨어 업데이트를 제공하면 이 펌웨어 업데이트를 통해, 또는 제조업자가 펌웨어 업데이트를 제공하지 않으면 새로운 디바이스의 구매를 통해 처리된다. 디바이스 가상화 시스템은 새로운 코덱 및/또는 다른 개량으로 빈번하게 자동으로 업데이트된 원격 데이터 센터 또는 다른 위치에서 프로세싱을 수행할 수 있다.
게다가, 디바이스 가상화 시스템은 하나의 임베디드 디바이스가 부가의 원격 서비스에 가입함으로써 다수의 기능을 위해 잠재적으로 사용될 수 있게 한다. 예를 들어, 게임 콘솔은 광학 드라이브 및 게임을 플레이하기 위한 가정 내의 사용자의 시청각 장비로의 접속부를 포함할 수 있다. 사용자는 이후에 게임 콘솔의 광학 드라이브를 사용하여 영화를 재생하는 능력, 인터넷을 브라우징하는 능력 등과 같은 부가의 서비스에 지불할 수 있다. 디바이스는 이들 서비스를 위한 하드웨어를 포함하고, 부가의 기능을 추가하기 위해 원격으로 저장된 로직 및 프로세싱을 활용할 수 있다. 사용자는 심지어 게임 콘솔로서 디바이스의 사용에 지불을 정지하여, 사용자를 위한 디바이스의 용도가 시간 경과에 따라 변경되게 된다.
도 1은 일 실시예에서, 디바이스 가상화 시스템의 구성 요소를 도시하는 블록도이다. 시스템(100)은 원격 입력 구성 요소(110), 원격 출력 구성 요소(120), 디바이스 식별 구성 요소(130), 통신 구성 요소(140), 가상 디바이스 프로세싱 구성 요소(150), 가상 디바이스 저장 구성 요소(160) 및 애플리케이션 특정 소프트웨어 구성 요소(170)를 포함한다. 이들 구성 요소의 각각이 본 명세서에 이하에 상세히 설명된다.
원격 입력 구성 요소(110)는 임베디드 디바이스 내에 설치된 하나 이상의 입력 디바이스로부터 임베디드 디바이스에서 입력을 캡처한다. 입력의 유형은 임베디드 디바이스의 용도에 따라 다양하다. DVR에 대해, 입력은 텔레비전 쇼를 표현하는 압축된 시청각 데이터의 형태의 튜너 입력 또는 사용자가 프로그램을 레코딩하거나 채널을 변경하도록 요구하는 리모콘으로부터의 입력을 포함할 수 있다. 병원 x-레이 기계에 대해, 입력은 x-레이 영상 데이터를 포함할 수 있다. 임베디드 디바이스의 수 및 다양성은 상당하고, 당 기술 분야의 숙련자들은 원격 입력 구성 요소(110)에 입력을 제공할 수 있는 다수의 유형의 디바이스를 인식할 수 있을 것이다. 그러나, 이전의 시스템과는 달리, 원격 입력 구성 요소(110)는 통신 구성 요소(140)를 경유하여 원격 가상화 디바이스로의 전송을 위해 입력을 패키징한다.
원격 출력 구성 요소(120)는 임베디드 디바이스에서 출력을 수신하고, 사용자 또는 다른 구성 요소에 출력을 제공한다. 출력은 스크린 또는 모니터로의 디스플레이와 같은 시각적 출력, 스피커를 통한 사운드의 재생과 같은 음성 출력, 로봇 아암 또는 다른 주변 장치에 의한 물체의 이동과 같은 기계적 출력 등을 포함할 수 있다. 출력의 유형은 임베디드 디바이스의 용도에 기초하여 다양하다. 원격 출력 구성 요소(120)는 원격 가상화 디바이스를 경유하여 통신 구성 요소(140)를 통한 프로세싱 후에 출력을 수신한다. 전통적인 임베디드 디바이스와는 달리, 입력의 프로세싱의 일부 또는 전체는 원격 가상화 디바이스에서 발생하고, 로컬 임베디드 디바이스는 주로 입력을 캡처하고 출력을 제공하는 책임이 있다.
디바이스 식별 구성 요소(130)는 특정 임베디드 디바이스를 식별하고, 가상 디바이스가 임의의 애플리케이션 특정 프로세싱을 제공할 수 있도록 가상 디바이스 프로세싱 구성 요소(150)에 통지한다. 가상화 디바이스는 다양한 임베디드 디바이스를 위한 프로세싱 및/또는 저장을 수행할 수 있고, 디바이스 식별 구성 요소(130)는 가상화 디바이스가 프로세싱을 수행하는 임베디드 디바이스의 유형 및 인스턴스의 모두를 가상화 디바이스가 이해하게 한다. 디바이스의 유형은 가상화 디바이스가 애플리케이션 특정 소프트웨어 구성 요소(170)를 경유하여 임의의 애플리케이션 특정 소프트웨어 코드를 로드하고 임의의 특정화된 프로세싱을 수행하는 것을 도울 것이다. 디바이스의 인스턴스는 특정 임베디드 디바이스가 가상화 디바이스의 서비스를 요구하도록 인증되는지를 판정하기 위해 가상 디바이스 모니터가 가입 또는 지불의 상태를 모니터링하는 것을 도울 수 있다.
통신 구성 요소(140)는 임베디드 디바이스와 가상화 디바이스 사이에 통신 채널을 제공한다. 채널은 인터넷과 같은 공개 네트워크뿐만 아니라, 기업 근거리 통신망(LAN)과 같은 사설 네트워크를 포함할 수 있다. 채널은 전송 제어 프로토콜(TCP) 또는 사용자 데이터그램 프로토콜(UDP)과 같은 데이터를 전송하기 위한 다양한 공지의 프로토콜을 사용할 수 있다. 통신 구성 요소(140)는 디바이스와의 접속을 생성하기 위해 임베디드 디바이스 내에 설치된 하드웨어 뿐만 아니라 접속을 모니터링하고 임의의 수신된 출력을 프로세싱하기 위한 소량의 드물게 변경되는 소프트웨어를 포함할 수 있다.
가상 디바이스 프로세싱 구성 요소(150)는 임베디드 디바이스의 용도에 관련된 동작을 수행하기 위해 가상화 디바이스에 프로세싱 리소스를 제공한다. 예를 들어, 임베디드 디바이스가 냉장고이면, 프로세싱 구성 요소(150)는 온도를 모니터링하고 지정된 온도에 도달할 때까지 압축기를 운전하도록 명령할 수 있다. 가상 디바이스 프로세싱 구성 요소(150)는 디바이스 식별 구성 요소(130)로부터 디바이스 식별 정보를 수신하고, 식별된 임베디드 디바이스의 동작에 특정한 임의의 애플리케이션 소프트웨어 코드를 로딩하기 위해 애플리케이션 특정 소프트웨어 구성 요소(170)를 호출한다. 애플리케이션 소프트웨어 코드가 업데이트된 버전에 의해 대체되어 있으면, 가상 디바이스 프로세싱 구성 요소(150)는 임의의 프로세싱을 수행하기 전에 애플리케이션 소프트웨어 코드를 투명하게 업데이트하거나 또는 자동으로 또는 가상화 디바이스를 관리하는 IT 요원에 의해 결정된 임의의 다른 유지 보수 작업을 수행할 수 있다.
가상 디바이스 프로세싱 구성 요소(150)는 또한 가입 또는 다른 기초로 융통성 있는 프로세싱 리소스를 제공하는 MICROSOFT TM AZURE TM 또는 Amazon EC2와 같은 클라우드-컴퓨팅 서비스에 프로세싱 작업을 익스포트할 수 있다. 전체 시스템(100)은 사용자의 사이트에서 로컬 임베디드 디바이스가 입력을 캡처하고 출력을 제공하도록 클라우드 플랫폼 상에 구성될 수 있고, 클라우드 플랫폼은 프로세싱, 저장 및 다른 리소스를 제공한다. 이는 매우 확장성 모델을 생성하고 새로운 임베디드 디바이스의 제조업자에 가격을 낮춘다. 임베디드 디바이스 자체를 저가가 되게 하고 온라인 서비스를 위한 고가의 구성 비용을 회피하는 능력에 의해, 제조업자는 특정 문제점을 해결하는데 집중할 수 있다. 디바이스/솔루션의 인기가 증가함에 따라, 제조업자는 더 많은 임베디드 디바이스를 신속하게 제조하고 원활하게 확장을 위해 클라우드 플랫폼의 더 많은 리소스를 이용할 수 있다.
가상 디바이스 저장 구성 요소(160)는 임베디드 디바이스 대신에 데이터를 지속적으로 저장하기 위한 저장 리소스를 가상화 디바이스에 제공한다. 저장 리소스는 하나 이상의 메모리내 데이터 구조, 파일, 파일 시스템, 하드 드라이브, 외장 저장 디바이스, 데이터베이스, 저장 영역 네트워크(SAN), 클라우드-기반 저장 서비스 또는 임베디드 디바이스와 통신들 사이에 데이터를 지속적으로 저장하기 위한 다른 설비를 포함할 수 있다. 예를 들어, 임베디드 디바이스가 DVR 또는 백업 디바이스와 같은 콘텐트로의 액세스를 제공하면, 가상 디바이스 저장 구성 요소(160)는 임베디드 디바이스 대신에 시청각 파일 또는 백업 데이터를 저장할 수 있다. 고정 크기를 갖는 전통적인 백업 디바이스를 구매하기보다는, 사용자는 사용자가 지불할 필요가 있거나 원하는 만큼의 저장을 사용자에게 제공하기 위해 가상 디바이스와 통신하는 백업 디바이스를 구매할 수 있다. 시간 경과에 따라, 사용자의 요구는 더 많거나 적은 저장이 요구되도록 변경될 수 있지만, 사용자는 동일한 임베디드 디바이스로부터 계속 가치를 얻고 변경 요구에 기초하여 사용자의 가입 계획을 조정할 수 있다.
애플리케이션 특정 소프트웨어 구성 요소(170)는 임베디드 디바이스가 설계되는 애플리케이션에 특정한 임의의 프로세스를 관리한다. 구성 요소(170)는 임베디드 디바이스로부터 원격으로 가상화 디바이스의 위치에서 중심에 설치되어 사용될 수 있는 소프트웨어 코드 및 하드웨어 구성 요소를 포함할 수 있다. 애플리케이션 특정 소프트웨어 구성 요소(170)가 소프트웨어 코드를 표현하는 경우에, 소프트웨어 코드는 다양한 위치에서 존재하는 다양한 임베디드 디바이스의 액세스 또는 심지어 지식 없이 가상화 디바이스에서 소프트웨어를 업데이트함으로써 중앙에서 업데이트되고 관리될 수 있다. 사용자가 업데이트 후에 임베디드 디바이스를 사용하는 다음 시간에, 사용자는 가상화 디바이스에서 발생된 업데이트에 기초하여 새로운 기능성으로 업데이트되거나 에러가 보정되어 있는 디바이스를 간단하게 발견할 수 있다. 특정 가상화 서버는 필요에 따라 다수의 애플리케이션 특정 소프트웨어 구성 요소(170)를 저장하고 로딩함으로써 다양한 유형의 임베디드 디바이스 및 용도를 위한 프로세싱 및 저장 서비스를 제공할 수 있다.
디바이스 가상화 시스템이 구현되는 컴퓨팅 디바이스는 중앙 프로세싱 유닛, 메모리, 입력 디바이스(예를 들어, 키보드 및 포인팅 디바이스), 출력 디바이스(예를 들어, 디스플레이 디바이스) 및 저장 디바이스(예를 들어, 디스크 드라이브 또는 다른 비휘발성 저장 매체)를 포함할 수 있다. 메모리 및 저장 디바이스는 시스템을 구현하거나 인에이블링하는 컴퓨터 실행 가능 명령(예를 들어, 소프트웨어)으로 인코딩될 수 있는 컴퓨터 판독 가능 저장 매체이다. 게다가, 데이터 구조 및 메시지 구조가 통신 링크 상의 신호와 같은 데이터 전송 매체를 경유하여 저장되거나 전송될 수 있다. 인터넷, 근거리 통신망, 원거리 통신망, 점대점 다이얼업 접속, 휴대폰 네트워크 등과 같은 다양한 통신 링크가 사용될 수 있다.
시스템의 실시예는 퍼스널 컴퓨터, 서버 컴퓨터, 휴대형 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 프로그램 가능 소비자 전자 기기, 디지털 카메라, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템 또는 디바이스 중 임의의 하나를 포함하는 분산형 컴퓨팅 환경, 셋탑 박스, 시스템 온 칩(SOC) 등을 포함하는 다양한 동작 환경에서 구현될 수 있다. 컴퓨터 시스템은 휴대폰, 개인 휴대 정보 단말, 스마트폰, 퍼스널 컴퓨터, 프로그램 가능 소비자 전자 기기, 디지털 카메라 등일 수 있다.
시스템은 하나 이상의 컴퓨터 또는 다른 디바이스에 의해 실행된 프로그램 모듈과 같은 컴퓨터 실행 가능 명령의 일반적인 환경에서 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 구성 요소, 데이터 구조 등을 포함한다. 통상적으로, 프로그램 모듈의 기능성은 다양한 실시예에서 원하는 바와 같이 조합되거나 분산될 수 있다.
도 2는 일 실시예에서, 원격 프로세싱을 위한 가상 임베디드 디바이스에서 정보를 캡처하기 위해 디바이스 가상화 시스템의 프로세싱을 도시하는 흐름도이다. 블록 210에서 시작하여, 시스템은 임베디드 디바이스에 결합된 하나 이상의 센서 또는 주변 장치로부터 입력을 임베디드 디바이스에서 수신한다. 임베디드 디바이스는 임베디드 디바이스 및 잠재적으로 하나 이상의 다른 임베디드 디바이스에 프로세싱, 저장 또는 다른 리소스를 제공하기 위해 임베디드 디바이스와 나란히 배치된 데이터 센터, 다른 중앙 집중 위치 또는 컴퓨팅 시스템에 배치된 가상 디바이스를 위한 센서 입력을 제공한다. 임베디드 디바이스는 가상 디바이스에 입력을 제공하고 가상 디바이스로부터 출력을 수신하기 위해 인터넷 또는 사설 네트워크를 경유하여 가상 디바이스에 접속될 수 있다. 임베디드 디바이스 내에 설치된 센서 또는 주변 장치는 임베디드 디바이스를 둘러싸는 환경으로부터 하나 이상의 유형의 입력 데이터를 캡처하고, 입력을 가상 디바이스에 제공한다. 예를 들어, 데이터는 튜너 입력, 온도 입력, 오디오 입력, 비디오 입력, 기계적 출력 등을 포함할 수 있다.
블록 220에서 계속하여, 시스템은 입력이 수신되었던 임베디드 디바이스를 식별한다. 임베디드 디바이스는 판독 전용 메모리(ROM) 또는 디바이스의 유형 및/또는 인스턴스를 식별하는 다른 로컬 저장 장치 내에 저장된 디바이스 식별자를 포함할 수 있다. 유형은 임베디드 디바이스의 용도를 지정할 수 있고, 반면에 인스턴스는 동일한 유형의 디바이스들을 구별하기 위한 시리얼 번호 또는 다른 실질적으로 고유 식별자를 지정할 수 있다. 임베디드 디바이스는 가상 디바이스가 어떻게 수신된 입력을 처리하는지를 인지하도록 가상 디바이스에 디바이스 식별자를 제공한다.
블록 230에서 계속하여, 시스템은 디바이스 식별을 프로세싱을 위해 가상 디바이스에 송신한다. 임베디드 디바이스는 접속된 네트워크를 경유하여 디바이스 식별자를 송신하고, 임베디드 디바이스가 그 동안에 가상 디바이스에 입력을 제공하고 가상 디바이스로부터 출력을 수신하기 위해 하나 이상의 후속의 통신에 사용을 위해 그 자신을 1회 식별하고 가상 디바이스와의 통신의 채널을 개방하는 셋업 단계를 수행할 수 있다. 수신된 디바이스 식별에 기초하여, 가상 디바이스는 임베디드 디바이스로부터 입력을 처리하기 위한 임의의 애플리케이션 특정 명령을 로딩한다.
블록 240에서 계속하여, 시스템은 수신된 입력을 프로세싱을 위해 가상 디바이스에 송신한다. 가상 디바이스는 수신된 입력에 임의의 애플리케이션 특정 프로세싱을 수행하고, 결과 또는 다른 출력을 생성한다. 프로세싱의 유형은 이용 가능한 임베디드 디바이스의 유형만큼 광범위하게 다양할 수 있다. 레코딩을 캡처링하는 DVR에 대해, 가상 디바이스는 임베디드 디바이스로부터 튜너 입력을 수신하고, 입력을 압축/인코딩하고, 가상 디바이스와 연관된 저장 장치 내에 입력을 저장할 수 있다. 재생을 수행하는 DVR에 대해, 가상 디바이스는 재생, 일시 정지 및 빨리감기와 같은 제어 요구를 수신하고, 임베디드 디바이스의 디스플레이 상에 재생될 수 있는 출력으로서 인코딩된 시청각 데이터를 제공할 수 있다. 다른 유형의 디바이스는 임베디드 디바이스가 주목 가능한 하드웨어 비용에서 임베디드 디바이스 자체 상에 실질적으로 모든 기능을 수행하는 현재의 디바이스에 비교하여 가상 디바이스에 적당한 양의 프로세싱 및 다른 리소스 소비를 오프로드하는 전체 결과를 갖고 가상 디바이스로부터 상이한 유형의 프로세싱을 요구할 수 있다.
블록 250에서 계속하여, 시스템은 가상 디바이스로부터 원격 프로세싱 결과를 임베디드 디바이스에서 수신한다. 원격 프로세싱 결과는 송신된 입력의 프로세싱이 실패되었는지 또는 성공되었는지 여부를 지시하는 결과 코드, 뿐만 아니라 가상 디바이스에 의해 수행된 프로세싱의 결과로서 가상 디바이스에 의해 제공된 임의의 출력을 포함할 수 있다. 몇몇 경우에, 가상 디바이스는 임베디드 디바이스 대신에 데이터를 간단히 저장하고, 프로세싱 결과는 가상 디바이스로부터 임베디드 디바이스에 의해 요구된 데이터를 포함할 수 있다. 다른 경우에, 프로세싱 결과는 임베디드 디바이스 대신에 가상 디바이스에 의해 수행된 실질적인 연산의 결과를 포함할 수 있다.
블록 260에서 계속하여, 시스템은 가상 디바이스로부터 수신된 출력을 임베디드 디바이스에서 제공된다. 출력은 스크린 또는 스피커의 세트 상에서 재생된 시청각 데이터, 로봇 아암과 같은 기계적 주변 장치에 제공된 기계적 데이터, 가상 디바이스에 저장된 미리 백업된 데이터와 같은 2진 데이터 또는 임의의 다른 유형의 데이터를 포함할 수 있다. 블록 260 후에, 이들 단계는 종료된다.
도 3은 일 실시예에서, 공통 가상화 설비에서 가상 디바이스 정보를 프로세싱하기 위해 디바이스 가상화 시스템의 프로세싱을 도시하는 흐름도이다. 블록 310에서 시작하여, 시스템은 임베디드 디바이스의 기능을 수행하기 위해 프로세싱 또는 다른 리소스를 위한 가상 디바이스에 의존하는 임베디드 디바이스를 식별하는 정보를 가상 디바이스에서 수신한다. 임베디드 디바이스는 디바이스의 유형 및/또는 인스턴스를 식별하는 수신된 입력과 함께 디바이스 식별자를 송신할 수 있다. 유형은 임베디드 디바이스의 용도를 지정할 수 있고, 반면에 인스턴스는 동일한 유형의 디바이스들을 구별하기 위해 시리얼 번호 또는 다른 실질적으로 고유 식별자를 지정할 수 있다. 가상 디바이스는 임베디드 디바이스의 디바이스의 유형을 결정하고, 가상 디바이스와 연관된 데이터 저장부로부터 임의의 애플리케이션 특정 프로세싱 정보를 로딩한다. 임베디드 디바이스의 제조업자는 초기에 가상 디바이스의 조작자에게 임베디드 디바이스를 관리하기 위한 애플리케이션 특정 소프트웨어 코드 또는 다른 정보 뿐만 아니라 시간 경과에 따라 에러를 교정하거나 기능성을 업데이트하기 위한 주기적 업데이트를 제공할 수 있다.
블록 320에서 계속하여, 시스템은 수신된 디바이스 정보에 기초하여 임베디드 디바이스에 관련된 애플리케이션 특정 정보를 로딩한다. 가상 디바이스는 다양한 임베디드 디바이스 대신에 동작하도록 가상 디바이스를 위한 다양한 애플리케이션 특정 프로세싱 명령을 포함하는 저장 장치를 갖는 데이터 저장부를 포함할 수 있다. 가상 디바이스는 임베디드 디바이스에 프로세싱, 저장 또는 다른 리소스를 제공하여, 임베디드 디바이스가 몇몇 구성 요소 및 비용을 절감하거나 배제하게 할 수 있다.
블록 330에서 계속하여, 시스템은 임베디드 디바이스 내에 설치된 하나 이상의 주변 장치로부터 임베디드 입력을 가상 디바이스에서 수신한다. 수신된 입력은 임베디드 디바이스에서 미리 프로세싱되어 있을 수 있지만 대신에 가상 디바이스에서 프로세싱되는 입력을 형성한다. 입력은 튜너 입력, 온도 입력, 오디오 입력, 비디오 입력, 기계적 입력 등을 포함할 수 있다. 임베디드 디바이스는 임베디드 디바이스를 가상 디바이스에 접속하는 네트워크를 통해 하나 이상의 입력 메시지를 송신하고, 가상 디바이스는 입력을 수신하고 지정된 프로세싱을 수행한다.
블록 340에서 계속하여, 시스템은 애플리케이션 특정 정보에 기초하여 가상 디바이스에서 수신된 임베디드 입력을 프로세싱한다. 프로세싱은 가상 디바이스 대신에 데이터를 저장하는 것과, 입력 상에서 연산을 수행하는 것과, 다른 소스(예를 들어, 공개 데이터베이스)로부터 부가의 데이터를 수집하는 것 등을 포함할 수 있다. 가상 디바이스는 임베디드 디바이스에 의해 제공된 입력 상에서 동작하기 위한 프로세서, 저장 장치 및 다른 리소스를 제공한다. 이는 임베디드 디바이스 비용을 절감하고 임베디드 디바이스 구성 및 유지 보수를 간단화하기 위해 임베디드 디바이스가 이들 리소스를 생략하거나 리소스의 더 간단한 버전을 사용하는 것을 허용한다.
블록 350에서 계속하여, 시스템은 임베디드 입력을 프로세싱하는 하나 이상의 결과를 식별한다. 결과는 에러 코드, 성공 코드, 출력 데이터, 유도 정보 등을 포함할 수 있다. 가상 디바이스의 프로세싱은 과거 시스템에서 임베디드 디바이스에서 미리 발생되어 있는 출력을 생성한다. 가상 디바이스는 이어서 임베디드 디바이스의 사용자가 임베디드 디바이스가 모든 동작을 자체로 수행하지 않는다는 것을 인식하지 않을 수 있도록 임베디드 디바이스에 생성된 출력을 제공한다. 디바이스 가상화 시스템은 다양한 컴퓨팅 디바이스들 사이의 고속 네트워킹 접속의 거의 유비쿼터스 이용 가능성에 의해 부분적으로 가능해진다.
블록 360에서 계속하여, 시스템은 식별된 결과를 임베디드 디바이스의 사용자에 제공하기 위한 출력으로서 가상 디바이스로부터 임베디드 디바이스로 송신한다. 결과는 모니터 상에 재생을 위한 임베디드 디바이스를 위한 비디오 데이터, 스피커 상의 재생을 위한 사운드 데이터, 임베디드 디바이스의 기계적 주변 장치의 제어를 위한 기계적 데이터 등을 포함할 수 있다. 블록 360 후에, 이들 단계는 종료된다.
도 4는 일 실시예에서, 디바이스 가상화 시스템의 예시적인 동작 환경을 도시하는 블록도이다. 도면은 네트워크(440)에 의해 접속된 임베디드 디바이스(410) 및 가상 디바이스(450)를 포함한다. 임베디드 디바이스(410)는 가정, 소형 사무실 또는 로컬 정보를 포함하고 사용자가 몇몇 용도를 수행하기 위해 임베디드 디바이스(410)를 구매하는 다른 환경에 설치될 수 있다. 임베디드 디바이스는 하나 이상의 임베디드 입력 주변 장치(420) 및 임베디드 디바이스(410)의 로컬 환경으로부터 데이터를 수집하고 피드백을 제공하는 하나 이상의 임베디드 출력 주변 장치(430)를 포함한다. 임베디드 디바이스(410)와 가상 디바이스(450)를 접속하는 네트워크(440)는 가상 디바이스(450)가 임베디드 디바이스(410)를 대신하여 하나 이상의 기능을 수행하게 하고 데이터를 과도한 지연 없이 사용자에 반환하게 하기에 충분히 고속인 인터넷 또는 임의의 다른 네트워크를 포함할 수 있다.
가상 디바이스(450)는 데이터 센터 또는 다른 프로세싱 시설에 원격으로 위치될 수 있고 또는 임베디드 디바이스(410)의 위치에서 서버 또는 다른 이용 가능한 리소스일 수 있다. 가상 디바이스(450)는 임베디드 디바이스(410)에 의해 전통적으로 수행된 하나 이상의 기능을 수행하기 위해 임베디드 디바이스(410)에 의해 사용된 적어도 하나의 가상 리소스(460)를 포함한다. 가상 리소스(460)는 임베디드 디바이스(410) 대신에 작용하는 프로세서, 저장 디바이스, 네트워킹 디바이스 또는 다른 리소스 및 잠재적으로 다른 임베디드 디바이스(도시 생략)를 포함할 수 있다. 가상 디바이스(450)는 임베디드 디바이스(410)와 연관된 애플리케이션 코드의 중앙 집중 관리 뿐만 아니라 가상 리소스(460)의 공유 및 임베디드 디바이스(410)의 더 저가의 구성 요소 비용을 가능하게 한다.
몇몇 실시예에서, 디바이스 가상화 시스템은 임베디드 디바이스에 관련된 테스트 소프트웨어 코드 또는 다른 정보를 갖고 임베디드 디바이스 제조업자를 보조하기 위해 가상 디바이스를 사용하여 하나 이상의 임베디드 디바이스를 시뮬레이션한다. 하드웨어의 복잡한 테스트 벤치를 셋업하기보다는, 제조업자는 임베디드 디바이스의 입력 및 출력을 시뮬레이션하고 에러 및 성능 문제점을 위해 가상 디바이스(들)를 모니터링함으로써 다수의 디바이스에 대한 시스템의 확장성을 포함하는 다수의 시나리오를 테스트할 수 있다. 시스템은 물리적 디바이스로 재현하기가 어려울 수 있는 실제 시나리오의 테스트 및 재현을 상당히 간단화한다.
몇몇 실시예에서, 디바이스 가상화 시스템은 가상 디바이스 또는 디바이스들에 이용 가능한 공유된 데이터에 기초하여 디바이스 제조업자에 보고를 제공한다. 임베디드 디바이스를 위한 많은 저장은 가상 디바이스에 집중되기 때문에, 디바이스 제조업자는 이전의 임베디드 디바이스에서 얻어지기 곤란했을 수 있는 풍부한 데이터를 마이닝할 수 있다. 예를 들어, 각각의 사용자가 디바이스를 구성하는 방식, 가장 빈번하게 사용되는 기능 및 다른 가치 있는 정보는 모두 가상 디바이스와 연관된 중앙 데이터 저장부에 액세스함으로써 이용 가능할 수 있다. 게다가, 제조업자는 이들이 발생하는 임베디드 디바이스 요구의 저널링 및 로깅을 통해 부가의 데이터의 수집을 요구할 수 있다. 이 방식으로, 제조업자는 가장 통상적으로 사용된 특징, 통상의 구성, 공통 문제점 등에 대한 정보를 결정할 수 있다.
몇몇 실시예에서, 디바이스 가상화 시스템은 가상 디바이스의 사용을 위해 디바이스 제조업자에 보상하기 위한 임베디드 디바이스의 사용자에 가입 모델을 제공한다. 예를 들어, 가상 디바이스는 사용자에 의해 구매된 가입 티어에 기초하여 확장성 프로세싱 또는 저장량을 제공할 수 있다. 사용자는 제조업자가 가상 디바이스 상에서 상이한 특징을 가능하게 하는 더 많은 특징 풍부한 가입 계획으로 이동시킴으로써 임베디드 디바이스로부터 더 많은 기능성을 얻을 수 있다.
몇몇 실시예에서, 디바이스 가상화 시스템은 임베디드 디바이스의 유지 보수 및 업데이트로부터 임베디드 디바이스의 사용자를 해방시키는 자동 업데이트를 가상 디바이스에서 수행한다. 가상 디바이스에 사용된 소프트웨어 및 다른 정보를 업데이트함으로써, 임베디드 디바이스 거동이 변경되고 사용자는 제공된 임의의 업데이트로부터 이득을 얻는다.
상기로부터, 디바이스 가상화 시스템의 특정 실시예가 예시의 목적으로 본 명세서에 설명되어 있지만, 다양한 수정이 본 발명의 사상 및 범주로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 수 있을 것이다. 이에 따라, 본 발명은 첨부된 청구범위에 의해서를 제외하고는 한정되지 않는다.
Claims (20)
- 가상화 시스템으로서,
적어도 하나의 메모리와 적어도 하나의 프로세서를 포함하되,
상기 적어도 하나의 메모리 및 상기 적어도 하나의 프로세서는 제각각 동작들을 수행하기 위한 명령어를 저장하고 실행하도록 구성되고,
상기 동작들은,
상기 가상화 시스템에서, 임베디드 디바이스를 통해 제공되는 기능을 용이하게 하기 위한 프로세싱을 위해 상기 가상화 시스템에 의존하는 상기 임베디드 디바이스를 식별하는 정보를 수신하는 동작과,
상기 가상화 시스템에 의해, 상기 임베디드 디바이스의 특정 유형 및 특정 인스턴스를 식별하는 동작과,
상기 임베디드 디바이스의 상기 식별된 유형에 관련된 애플리케이션 특정 명령어들의 집합을, 임베디드 디바이스들의 다수의 유형에 대해 애플리케이션 특정 명령어들의 집합들을 갖는 데이터 저장소로부터 로딩하는 동작- 상기 애플리케이션 특정 명령어들의 상기 로딩된 집합은 상기 가상화 시스템 상에서 실행됨 -과,
상기 가상화 시스템에서, 상기 임베디드 디바이스의 하나 이상의 주변 장치로부터 입력을 수신하는 동작과,
상기 가상화 시스템에서, 상기 애플리케이션 특정 명령어들의 상기 로딩된 집합과 함께 상기 수신된 입력을 프로세싱하는 동작과,
상기 애플리케이션 특정 명령어들의 상기 로딩된 집합과 함께 상기 수신된 입력을 프로세싱한 하나 이상의 결과를 상기 가상화 시스템으로부터 상기 임베디드 디바이스로 전송하는 동작을 포함하는
가상화 시스템.
- 제 1 항에 있어서,
상기 임베디드 디바이스를 식별하는 정보를 수신하는 동작은 상기 임베디드 디바이스의 유형을 식별하는 디바이스 식별자를 수신하는 동작을 포함하되, 상기 정보는 상기 임베디드 디바이스의 제조자에 의해 이전에 상기 가상화 시스템의 운영자에게 제공된 것인
가상화 시스템.
- 제 1 항에 있어서,
상기 임베디드 디바이스는 의료용 진단 디바이스인
가상화 시스템.
- 제 1 항에 있어서,
상기 임베디드 디바이스는 오디오-시각 오락 디바이스(audio-visual entertainment device)인
가상화 시스템.
- 제 1 항에 있어서,
상기 동작들은 상기 임베디드 디바이스에 관련된 상기 애플리케이션 특정 명령어들의 집합을 상기 임베디드 디바이스에 대해 투명하게(transparently) 업데이트하는 동작을 더 포함하는
가상화 시스템.
- 제 1 항에 있어서,
상기 동작들은 다수의 임베디드 디바이스에 대한 동작들을 동시에 수행하는 동작을 더 포함하는
가상화 시스템.
- 가상화 디바이스로서,
명령어를 실행하도록 구성된 프로세서 및 메모리를 포함하되,
상기 명령어는
상기 가상화 디바이스에서, 상기 가상화 디바이스와 연관된 임베디드 디바이스의 특정 유형 및 특정 인스턴스를 식별하는 디바이스 정보를 수신하는 동작- 상기 임베디드 디바이스를 위해 상기 가상화 디바이스는 상기 임베디드 디바이스를 통해 출력이 제공되도록 하는 프로세싱의 적어도 일부를 수행함 -과,
상기 수신된 디바이스 정보에 적어도 부분적으로 기초하여, 상기 가상화 디바이스에 의해 실행되도록 하기 위해 상기 임베디드 디바이스의 식별된 유형에 관련된 애플리케이션 특정 프로세싱 명령어를 로딩하는 동작- 상기 애플리케이션 특정 프로세싱 명령어는 상기 출력이 상기 임베디드 디바이스를 통해 제공되도록 하는 상기 프로세싱을 수행함 -과,
상기 가상화 디바이스에서, 상기 임베디드 디바이스에 의해 상기 가상화 디바이스로 전송된 입력을 수신하는 동작과,
상기 임베디드 디바이스에 의해 상기 가상화 디바이스로 전송된 상기 입력의 수신에 응답하여, 상기 임베디드 디바이스에 대한 응답을 생성하는 동작- 상기 응답을 생성하는 동작은,
상기 가상화 디바이스에서, 상기 임베디드 디바이스의 식별된 유형에 관련된 상기 애플리케이션 특정 프로세싱 명령어와 함께 상기 임베디드 디바이스에 의해 상기 가상화 디바이스로 전송된 상기 입력을 프로세싱하는 동작, 및
상기 가상화 디바이스에서, 상기 임베디드 디바이스의 식별된 유형에 관련된 상기 애플리케이션 특정 프로세싱 명령어 및 상기 임베디드 디바이스에 의해 상기 가상화 디바이스로 전송된 상기 입력에 기초하여, 상기 임베디드 디바이스를 통해 제공될 상기 출력을 생성하는 동작을 포함함 -과,
상기 임베디드 디바이스에 대한 상기 응답을 상기 가상화 디바이스로부터 상기 임베디드 디바이스로 전송하는 동작을 수행하는
가상화 디바이스. - 제 7 항에 있어서,
상기 임베디드 디바이스에 의해 상기 가상화 디바이스로 전송된 상기 입력은 상기 임베디드 디바이스의 하나 이상의 주변 장치로부터 상기 임베디드 디바이스로의 입력에 기초하는
가상화 디바이스.
- 제 7 항에 있어서,
상기 임베디드 디바이스는 셋탑 디바이스, 의료용 진단 디바이스 및 가정용 기구 중 적어도 하나인
가상화 디바이스.
- 제 7 항에 있어서,
상기 애플리케이션 특정 프로세싱 명령어는 상기 임베디드 디바이스를 위한 오디오/시각 데이터를 저장하는 명령어를 포함하는
가상화 디바이스.
- 제 7 항에 있어서,
상기 임베디드 디바이스에 대한 응답은 상기 임베디드 디바이스를 통해 제공되는 상기 출력 및 상기 임베디드 디바이스에 의해 상기 가상화 디바이스로 전송된 상기 입력의 프로세싱의 완료 상태에 대한 표시를 포함하는
가상화 디바이스.
- 제 7 항에 있어서,
상기 임베디드 디바이스에 의해 상기 가상화 디바이스에 전송된 상기 입력은 상기 임베디드 디바이스 주변의 환경으로부터 캡처된 하나 이상의 유형의 입력 데이터를 포함하는
가상화 디바이스.
- 제 7 항에 있어서,
상기 가상화 디바이스와 상기 임베디드 디바이스는 인터넷을 통해 통신가능하게 연결되는
가상화 디바이스.
- 제 7 항에 있어서,
상기 임베디드 디바이스에 의해 상기 가상화 디바이스에 전송된 상기 입력은 상기 임베디드 디바이스를 대신하여 상기 가상화 디바이스가 상기 프로세싱을 수행하도록 하는 요청을 나타내는
가상화 디바이스.
- 제 7 항에 있어서,
상기 애플리케이션 특정 프로세싱 명령어를 로딩하는 동작은 임베디드 디바이스들의 다수의 유형에 대해 애플리케이션 특정 명령어를 구비한 데이터 저장소로부터 상기 애플리케이션 특정 프로세싱 명령어를 로딩하는 동작을 포함하는
가상화 디바이스. - 임베디드 디바이스의 가상화를 위한 컴퓨터 구현 방법으로서,
가상화 서버 디바이스에서, 임베디드 디바이스를 식별하는 정보를 수신하는 단계- 상기 임베디드 디바이스는 사용자 출력을 제공하기 위해 상기 가상화 서버 디바이스의 프로세싱을 이용함 -와,
상기 가상화 서버 디바이스에 의해, 상기 임베디드 디바이스의 특정 유형 및 특정 인스턴스를 식별하는 단계와,
상기 임베디드 디바이스의 상기 식별된 유형에 관련된 애플리케이션 특정 명령어들의 집합을, 임베디드 디바이스들의 다수의 유형에 대해 애플리케이션 특정 명령어들의 집합들을 갖는 데이터 저장소로부터 로딩하는 단계- 상기 애플리케이션 특정 명령어들의 상기 로딩된 집합은 상기 가상화 서버 디바이스 상에서 실행되고, 상기 임베디드 디바이스를 통해 상기 사용자 출력을 제공하기 위해 상기 프로세싱을 수행함 -와,
상기 가상화 서버 디바이스에서, 상기 임베디드 디바이스로부터 입력을 수신하는 단계와,
상기 가상화 서버 디바이스에서, 상기 애플리케이션 특정 명령어들의 상기 로딩된 집합과 함께 상기 임베디드 디바이스로부터의 상기 수신된 입력을 프로세싱하는 단계와,
상기 애플리케이션 특정 명령어들의 상기 로딩된 집합과 함께 상기 임베디드 디바이스로부터의 상기 수신된 입력을 프로세싱한 하나 이상의 결과를 상기 가상화 서버 디바이스로부터 상기 임베디드 디바이스로 전송하는 단계
를 포함하는 컴퓨터 구현 방법.
- 제 16 항에 있어서,
상기 임베디드 디바이스의 특정 유형 및 특정 인스턴스를 식별하는 단계는
상기 임베디드 디바이스의 특정 유형을 판정하는 단계와,
상기 임베디드 디바이스의 인스턴스 식별자를 판정하는 단계를 포함하되,
상기 인스턴스 식별자는 상기 특정 유형의 임베디드 디바이스들의 상이한 인스턴스들을 구별하는
컴퓨터 구현 방법.
- 제 16 항에 있어서,
상기 임베디드 디바이스는 초음파 머신과 MRI 머신 중 적어도 하나인
컴퓨터 구현 방법.
- 제 16 항에 있어서,
상기 프로세싱한 하나 이상의 결과를 전송하는 단계는 상기 프로세싱한 하나 이상의 결과를 상기 임베디드 디바이스에 결합된 하나 이상의 출력 주변 장치에 전송하는 단계를 포함하는
컴퓨터 구현 방법.
- 제 16 항에 있어서,
상기 프로세싱한 하나 이상의 결과는 상기 수신된 입력의 프로세싱이 성공적이었는지를 나타내는 결과 코드를 포함하는
컴퓨터 구현 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/979,392 | 2010-12-28 | ||
US12/979,392 US9043754B2 (en) | 2010-12-28 | 2010-12-28 | Virtualizing embedded devices |
PCT/US2011/067364 WO2012092257A2 (en) | 2010-12-28 | 2011-12-27 | Virtualizing embedded devices |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130132887A KR20130132887A (ko) | 2013-12-05 |
KR101831478B1 true KR101831478B1 (ko) | 2018-04-04 |
Family
ID=46318619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137016864A KR101831478B1 (ko) | 2010-12-28 | 2011-12-27 | 임베디드 디바이스의 가상화 |
Country Status (9)
Country | Link |
---|---|
US (1) | US9043754B2 (ko) |
EP (1) | EP2659382A4 (ko) |
JP (1) | JP6013366B2 (ko) |
KR (1) | KR101831478B1 (ko) |
CN (1) | CN102609297B (ko) |
AR (1) | AR084641A1 (ko) |
HK (1) | HK1174406A1 (ko) |
TW (1) | TWI536169B (ko) |
WO (1) | WO2012092257A2 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8640097B2 (en) * | 2009-03-16 | 2014-01-28 | Microsoft Corporation | Hosted application platform with extensible media format |
US9172924B1 (en) | 2011-04-04 | 2015-10-27 | Verint Systems Inc. | Systems and methods for sharing encoder output |
US10063430B2 (en) * | 2011-09-09 | 2018-08-28 | Cloudon Ltd. | Systems and methods for workspace interaction with cloud-based applications |
US9886189B2 (en) | 2011-09-09 | 2018-02-06 | Cloudon Ltd. | Systems and methods for object-based interaction with cloud-based applications |
US9965151B2 (en) | 2011-09-09 | 2018-05-08 | Cloudon Ltd. | Systems and methods for graphical user interface interaction with cloud-based applications |
US9606629B2 (en) | 2011-09-09 | 2017-03-28 | Cloudon Ltd. | Systems and methods for gesture interaction with cloud-based applications |
US8782472B2 (en) * | 2011-10-28 | 2014-07-15 | Dell Products L.P. | Troubleshooting system using device snapshots |
CA2899404C (en) * | 2013-02-01 | 2018-02-27 | Amadeus S.A.S. | Communications management |
US9141325B2 (en) | 2013-02-01 | 2015-09-22 | Amadeus S.A.S. | Communications management |
EP3629169B1 (en) * | 2013-02-01 | 2020-12-16 | Amadeus S.A.S. | Communications management |
CN107729083B (zh) | 2014-04-30 | 2021-02-12 | 华为技术有限公司 | 一种加载驱动程序的方法及嵌入式设备 |
WO2015179603A1 (en) | 2014-05-22 | 2015-11-26 | Citrix Systems, Inc. | Providing testing environments using virtualization |
US9986040B2 (en) | 2015-07-21 | 2018-05-29 | Amadeus S.A.S. | Communications management system with a separate peripherals server |
US10169203B2 (en) * | 2015-10-14 | 2019-01-01 | At&T Intellectual Property I, L.P. | Test simulation for software defined networking environments |
CN106445640B (zh) * | 2016-10-20 | 2019-06-18 | 南京南瑞继保电气有限公司 | 一种嵌入式虚拟装置运行方法和系统 |
CN107545172B (zh) * | 2017-07-12 | 2020-06-09 | 新华三技术有限公司 | 授权资源管理方法、装置及机器可读存储介质 |
JP2020052812A (ja) * | 2018-09-27 | 2020-04-02 | 横河電機株式会社 | エンジニアリングシステム及びエンジニアリング方法 |
CN111371622A (zh) * | 2020-03-13 | 2020-07-03 | 黄东 | 一种多网隔离、选择切换装置及网络资源配置方法 |
US11736348B2 (en) * | 2021-06-28 | 2023-08-22 | Dell Products L.P. | System and method for network services based functionality provisioning in a VDI environment |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7539631B1 (en) | 2003-10-06 | 2009-05-26 | Microsoft Corporation | Method, system and program for providing subscription-based virtual computing services |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7076400B2 (en) * | 2000-02-14 | 2006-07-11 | Nextnine Ltd. | Support network |
EP1187015A3 (en) | 2000-05-09 | 2003-01-29 | Yipee!, Inc. | Internet-enabled embedded device |
KR20020034347A (ko) | 2000-11-01 | 2002-05-09 | 강태구 | 서버-씬 클라이언트 시스템 |
US6836796B2 (en) | 2001-03-16 | 2004-12-28 | Digi International, Inc. | System and method to manage network-enabled embedded devices operating under various protocols |
JP2002286483A (ja) * | 2001-03-22 | 2002-10-03 | Seiko Epson Corp | ナビゲーション装置、ナビゲーション装置用サーバー及び携帯用情報端末 |
US7017004B1 (en) * | 2002-03-29 | 2006-03-21 | Microsoft Corporation | System and method for updating contents of a flash ROM |
KR20040081988A (ko) | 2003-03-17 | 2004-09-23 | 장승환 | 운동기구의 네트워크 통합 운영 시스템 |
US8555273B1 (en) * | 2003-09-17 | 2013-10-08 | Palm. Inc. | Network for updating electronic devices |
US7685257B2 (en) * | 2003-11-10 | 2010-03-23 | Sun Microsystems, Inc. | Portable thin client for the enterprise workspace |
US20070072599A1 (en) | 2005-09-27 | 2007-03-29 | Romine Christopher M | Device manufacturing using the device's embedded wireless technology |
US20070219059A1 (en) * | 2006-03-17 | 2007-09-20 | Schwartz Mark H | Method and system for continuous monitoring and training of exercise |
US20080133767A1 (en) * | 2006-11-22 | 2008-06-05 | Metis Enterprise Technologies Llc | Real-time multicast peer-to-peer video streaming platform |
US20080320081A1 (en) | 2007-06-19 | 2008-12-25 | Microsoft Corporation | Service componentization and composition architecture |
CN101138489A (zh) | 2007-10-16 | 2008-03-12 | 孙启玉 | 远程随身健康实时诊测系统及其使用方法 |
US20090222497A1 (en) * | 2008-02-29 | 2009-09-03 | Schlumberger Technology Corp. | Method, system and apparatus for remote software upgrade of an embedded device |
US9459927B2 (en) * | 2008-05-22 | 2016-10-04 | Alcatel Lucent | Central office based virtual personal computer |
US10657466B2 (en) | 2008-05-29 | 2020-05-19 | Red Hat, Inc. | Building custom appliances in a cloud-based network |
US8250215B2 (en) | 2008-08-12 | 2012-08-21 | Sap Ag | Method and system for intelligently leveraging cloud computing resources |
US9052958B2 (en) | 2008-11-21 | 2015-06-09 | Samsung Electronics Co., Ltd. | Extending the capability of computing devices by using dynamically scalable external resources |
US20110191787A1 (en) * | 2010-02-02 | 2011-08-04 | Sun Microsystems, Inc. | System and method for providing sensor data from embedded device to software development environment |
-
2010
- 2010-12-28 US US12/979,392 patent/US9043754B2/en active Active
-
2011
- 2011-11-25 TW TW100143410A patent/TWI536169B/zh not_active IP Right Cessation
- 2011-12-27 KR KR1020137016864A patent/KR101831478B1/ko active Search and Examination
- 2011-12-27 JP JP2013547609A patent/JP6013366B2/ja active Active
- 2011-12-27 WO PCT/US2011/067364 patent/WO2012092257A2/en active Application Filing
- 2011-12-27 EP EP11852545.0A patent/EP2659382A4/en not_active Ceased
- 2011-12-27 CN CN201110446026.5A patent/CN102609297B/zh active Active
- 2011-12-29 AR ARP110104993A patent/AR084641A1/es not_active Application Discontinuation
-
2013
- 2013-01-25 HK HK13101158.1A patent/HK1174406A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7539631B1 (en) | 2003-10-06 | 2009-05-26 | Microsoft Corporation | Method, system and program for providing subscription-based virtual computing services |
Also Published As
Publication number | Publication date |
---|---|
CN102609297B (zh) | 2016-08-17 |
AR084641A1 (es) | 2013-05-29 |
KR20130132887A (ko) | 2013-12-05 |
WO2012092257A2 (en) | 2012-07-05 |
CN102609297A (zh) | 2012-07-25 |
JP6013366B2 (ja) | 2016-10-25 |
US20120167044A1 (en) | 2012-06-28 |
TW201229764A (en) | 2012-07-16 |
US9043754B2 (en) | 2015-05-26 |
TWI536169B (zh) | 2016-06-01 |
EP2659382A4 (en) | 2017-07-19 |
EP2659382A2 (en) | 2013-11-06 |
HK1174406A1 (zh) | 2013-06-07 |
WO2012092257A3 (en) | 2012-12-06 |
JP2014501423A (ja) | 2014-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101831478B1 (ko) | 임베디드 디바이스의 가상화 | |
US11909820B2 (en) | Method and apparatus for execution of applications in a cloud system | |
US20200259879A1 (en) | Interaction method and device for mobile terminal and cloud platform of unmanned aerial vehicle | |
US8606948B2 (en) | Cloud-based device interaction | |
US7904580B2 (en) | Digital media player exposing operational state data | |
US20120079095A1 (en) | Cloud-based device synchronization | |
CN108854055A (zh) | 用于远程显示器的基于云的虚拟化图形处理方法和系统 | |
JP5969567B2 (ja) | 権利および機能包括のコンテンツ選択および配信 | |
JP2015162232A (ja) | 撮像装置、及び撮像システム | |
KR20110050429A (ko) | 시스템 및 유형의 디지털 저장 매체 | |
US20200045145A1 (en) | Method and apparatus for serving and managing storage of data streams in a surveillance and/or monitoring system | |
US10073688B2 (en) | Method and apparatus for executing application | |
US10162546B2 (en) | Imaging apparatus and method of controlling the apparatus | |
CN114912082A (zh) | 一种通用计算任务协作系统 | |
CN101365075A (zh) | 信息处理设备和程序启动控制方法 | |
CN113938641A (zh) | 分布式监视系统的基于低延迟浏览器的客户端界面 | |
US9667748B2 (en) | Client device, information processing method, and information processing system | |
US20100021126A1 (en) | Audiovisual processing system, audiovisual processing apparatus, and audiovisual processing method | |
US9063799B1 (en) | Method for encapsulating functions for application programming interfaces in a cloud environment | |
CN113296984A (zh) | 兼容性参数确定方法、装置、电子设备及存储介质 | |
JP2002095071A (ja) | ネットワークシステム及び機器制御方法 | |
JP2006065871A (ja) | 家電機器ネットワークシステム | |
JP2015232916A (ja) | 操作記録装置、操作記録再生システム、及びプログラム | |
TWI516951B (zh) | 在雲端環境中為應用程式介面封裝功能的方法 | |
JP2017033179A (ja) | 情報処理装置およびその制御方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination |