KR20160080239A - 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스 - Google Patents

가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스 Download PDF

Info

Publication number
KR20160080239A
KR20160080239A KR1020140191880A KR20140191880A KR20160080239A KR 20160080239 A KR20160080239 A KR 20160080239A KR 1020140191880 A KR1020140191880 A KR 1020140191880A KR 20140191880 A KR20140191880 A KR 20140191880A KR 20160080239 A KR20160080239 A KR 20160080239A
Authority
KR
South Korea
Prior art keywords
electronic device
virtual
driver
device driver
host electronic
Prior art date
Application number
KR1020140191880A
Other languages
English (en)
Other versions
KR101996896B1 (ko
Inventor
김동현
한용길
박순상
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020140191880A priority Critical patent/KR101996896B1/ko
Priority to US14/962,292 priority patent/US9798568B2/en
Priority to CN201510900696.8A priority patent/CN105743964B/zh
Priority to EP15202367.7A priority patent/EP3040859B1/en
Publication of KR20160080239A publication Critical patent/KR20160080239A/ko
Application granted granted Critical
Publication of KR101996896B1 publication Critical patent/KR101996896B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/18Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/323Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the physical layer [OSI layer 1]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network

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 Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

본 개시의 다양한 실시 예는 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스에 관한 것으로, 예를 들어, 클라이언트 전자 디바이스의 동작 방법에 있어서, 호스트 전자 디바이스의 실제 디바이스 드라이버에 대응되는 가상 디바이스 드라이버를, 상기 클라이언트 전자 디바이스 내에 생성하는 동작; 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작; 및 상기 호스트 전자 디바이스에서 지정하는 제2통신 방식으로 변경후, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 포함할 수 있다. 또한, 본 개시의 다양한 실시 예는 상술한 실시 예와 다른 실시 예들도 포함한다.

Description

가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스 {METHOD FOR SHARING RESOURCE USING A VIRTUAL DEVICE DRIVER AND ELECTRONIC DEVICE THEREOF}
본 개시의 다양한 실시 예는, 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스에 관한 것이다.
최근의 전자 디바이스들은 단일의 특정 기능을 목적으로 하는 펌웨어 수준의 전자 디바이스에서 벗어나, 컴퓨터 운영체계(OS, Operating System)를 내장하여, 여러 서비스들을 어플리케이션의 실행에 따라 다양한 목적으로 사용자에게 제공하는 멀티 기능의 전자 디바이스로 변화되었다.
상기와 같은 환경은, 예를 들어, 스마트 폰의 상용화를 기반으로 하여, 스마트 TV, 타블릿 PC등과 같은 다양한 유형의 전자 디바이스들까지 확대되고 있다. 상기 운영체제(OS)와 통신 네트워크 인터페이스를 구비한 전자 디바이스가 확대됨에 따라, 여러 통신 방식을 통해 각 전자 디바이스들 간의 통신이 가능해져서, 각 전자 디바이스들 간의 물리적 컨버전스가 아닌 소프트웨어적 컨버전스를 통한 새로운 서비스들이 가능해졌다.
상기 소프트웨어적인 컨버전스 기능 중 대표적 기능으로는, 스마트 폰 등과 같은 모바일 전자 디바이스를 이용하여 주변의 여러 다른 전자 디바이스들을 원격으로 제어하는 원격 제어 기능이 있다. 예를 들어 특정 회사(예: Apple 사)의 모바일 전자 디바이스(예: iPhone)을 이용한 TV원격 제어, 홈시어터(home theater) 원격 제어, 자동차 원격 제어, 또는 PC용 원격 마우스/키보드 기능이 있다.
상기 각 전자 디바이스들은 특정한 물리적 입력 수단(예: 리모트 컨트롤러)을 가지고 있기 때문에, 사용자가 각 전자 디바이스들을 제어하기 위해서는 복수개의 물리적 입력 수단들을 보유해야 하는 단점이 있다, 상기 단점을 해결하기 위하여, 사용자가 항상 휴대하고 있는 스마트 폰 등과 같은 모바일 전자 디바이스에, 다양한 원격 제어 기능들을 구비시킴으로써, 사용자에게 편리성을 제공할 수 있다.
도 1은 일반적인 원격의 호스트 100와 로컬의 클라이언트 120가 네트워크 110를 통해 리소스(resource)을 공유하는 실시 예를 예시한 도면이다. 도 1을 참조하면, 예를 들어, 상기 호스트 100은 서버(server)일 수 있고, 상기 클라이언트 120은 스마트 폰 등과 같은 모바일 단말기(terminal)일 수 있다.
상기 호스트 100에는, 호스트 어플리케이션 100a이 존재하고, 상기 클라이언트 120에는, 상기 호스트 어플리케이션과 연동되는 클라이언트 어플리케이션 120a가 존재할 수 있다. 상기 호스트 어플리케이션 100a과 클라이언트 어플리케이션 120a이, 서로 실행 및 연동됨에 따라, 상기 호스트 100의 리소스(resource), 예를 들어, 카메라 100b에 의해 촬영되는 영상을, 상기 클라이언트 120가 실시간으로 공유할 수 있다.
즉, 상기 호스트 100에서 보유한 리소스의 데이터를, 상기 클라이언트 120가 공유하기 위해서는, 상기 호스트 100와 클라이언트 120각각에, 서로 연동되는 어플리케이션들이 존재해야 하기 때문에, 상기 호스트 100에서 사용 가능한 모든 리소스들을 미리 고려하여 하드 코딩(hard coding)된 어플리케이션들을 미리 설계해 두어야 하는 단점이 있다.
상기 클라이언트 120가, 상기 호스트 100의 리소스를 네트워크 110을 통해 공유하는 경우, 네트워크 트래픽(traffic)과 대기(latency) 시간 등이 증가하게 되며, 더 나아가, 상기 호스트 100에서 사용하는 여러 리소스들을 공유하는 클라이언트 120의 성능과 네트워크 환경 등에 따라, 상기 네트워크 트래픽과 대기 시간 등이 더욱 증가할 수 있다.
본 개시의 다양한 실시 예는, 예를 들어, 클라이언트 전자 디바이스가, 호스트 전자 디바이스의 리소스(resource)을, 효율적인 통신 방식으로 공유하여, 네트워크 트래픽(traffic)과 대기(latency) 시간 등을 감소시킬 수 있는 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스를 제공한다.
본 개시의 다양한 실시 예는, 클라이언트 전자 디바이스의 동작 방법에 있어서, 호스트 전자 디바이스의 실제 디바이스 드라이버에 대응되는 가상 디바이스 드라이버를, 상기 클라이언트 전자 디바이스 내에 생성하는 동작; 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작; 및 상기 호스트 전자 디바이스에서 지정하는 제2통신 방식으로 변경 후, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 포함할 수 있다.
본 개시의 다양한 실시 예는, 클라이언트 전자 디바이스에 있어서, 호스트 전자 디바이스와 통신하는 통신 모듈; 및 상기 통신 모듈을 제어하는 프로세서를 포함하되, 상기 프로세서는, 상기 호스트 전자 디바이스의 실제 디바이스 드라이버에 대응되는 가상 디바이스 드라이버를, 상기 클라이언트 전자 디바이스 내에 생성하고, 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하고, 상기 호스트 전자 디바이스에서 지정하는 제2통신 방식으로 변경 후, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 할 수 있다.
본 개시의 다양한 실시 예에 따르면, 클라이언트 전자 디바이스가, 호스트 전자 디바이스의 실제(real) 디바이스 드라이버에 대응되는 가상(virtual) 디바이스 드라이버를 생성하고, 상기 가상 디바이스 드라이버에 적합하도록, 상기 호스트 전자 디바이스가 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여 상기 호스트 전자 디바이스의 리소스를 공유함으로써, 상기 호스트 전자 디바이스의 리소스 공유로 인해 발생하는 네트워크 트래픽과 대기 시간 등을 효율적으로 감소시킬 수 있다.
본 개시의 다양한 실시 예에 따르면, 호스트 전자 디바이스의 리소스를 공유하는 클라이언트 전자 디바이스가, 상기 리소스의 데이터를 적어도 하나 이상의 다른 클라이언트 전자 디바이스로 전달하여 공유 영역을 보다 확장시킬 수 있으며, 상기 호스트 전자 디바이스와의 리소스 공유에 실패하는 경우, 상기 적어도 하나 이상의 다른 클라이언트 전자 디바이스로, 실패 통지 메시지를 전달하여 불필요한 네트워크 트래픽 등의 발생을 방지할 수 있다.
도 1은 일반적인 원격의 호스트와 로컬의 클라이언트가 네트워크를 통해 리소스(resource)을 공유하는 실시 예를 예시한 도면이다.
도 2 및 도 3은 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스와 호스트 전자 디바이스의 구성을 예시한 도면이다.
도 4는 본 개시의 다양한 실시 예에 따른 커넥션 매니저의 구성 요소를 예시한 도면이다.
도 5 및 도 6은 본 개시의 다양한 실시 예에 따른 가상 디바이스 드라이버 설정 정보를 예시한 도면이다.
도 7은 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스의 동작 흐름도를 예시한 도면이다.
도 8은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스의 동작 흐름도를 예시한 도면이다.
도 9는 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스의 리소스를 다수의 클라이언트 전자 디바이스들이 공유하는 동작 흐름도를 예시한 도면이다.
도 10은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스의 리소스 공유를 다수의 클라이언트 전자 디바이스들이 종료하는 동작 흐름도를 예시한 도면이다.
도 11은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스의 리소스를 다수의 클라이언트 전자 디바이스들이 직접적으로 공유하는 동작 흐름도를 예시한 도면이다.
도 12는 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스의 리소스 공유에 대한 우선권을 부여하는 동작 흐름도를 예시한 도면이다.
도 13은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스가 실제 디바이스 드라이버 리스트를 제1 클라이언트 전자 디바이스로 제공하는 예시 도면이다.
도 14는 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스와 호스트 전자 디바이스의 디스플레이 화면을 예시한 도면이다.
도 15는 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스와 호스트 전자 디바이스 간의 보안 채널 설정 및 접속에 대한 예시 도면이다.
이하, 첨부된 도면을 참조하여 본 개시의 다양한 실시 예를 설명한다. 본 개시의 다양한 실시 예는 여러 형태의 변경을 가할 수 있으며, 이하에서 상세히 설명하는 특정 실시예에 한정되지 않음은 당업자에게 자명하다.
본 개시의 다양한 실시 예는, 클라이언트 전자 디바이스가, 호스트 전자 디바이스의 실제 디바이스 드라이버에 대응되는 가상 디바이스 드라이버를 생성하고, 상기 가상 디바이스 드라이버에 적합하도록, 상기 호스트 전자 디바이스가 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 효율적으로 공유할 수 있다.
상기 클라이언트 전자 디바이스는, 예를 들어, 스마트 폰 또는 태블릿 PC 등과 같은 다양한 유형의 모바일 전자 디바이스일 수 있고, 상기 호스트 전자 디바이스는, 네트워크를 통해 다양한 리소스를 제공하는 서버일 수 있다.
상기 클라이언트 전자 디바이스와 호스트 전자 디바이스는, 로컬 디바이스, 리모트 디바이스, 컴퓨터 머신, 또는 컴퓨터 시스템 등과 같이 임의의 다른 명칭으로 다양하게 일컬어질 수 있다. 이하에서는, 클라이언트 전자 디바이스와 호스트 전자 디바이스로 통칭하기로 한다.
도 2 및 도 3은 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스 200, 300와 호스트 전자 디바이스 300, 320의 구성을 예시한 도면이다.
도 2을 참조하면, 상기 클라이언트 전자 디바이스 200은, 사용자 인터페이스(user interface) 201, 디바이스 매니저(device manager) 202, 커넥션 매니저(connection manager) 203, 가상 버스 드라이버(virtual bus driver) 204, 가상 디바이스 드라이버(virtual device driver) 205, 그리고 하나 이상의 어플리케이션(application) 206등을 포함할 수 있다.
상기 가상 디바이스 드라이버 205는, 예를 들어, 가상 그래픽 드라이버 205a, 가상 사운드 드라이버 205b, 그리고 가상 카메라 드라이버 205c 등을 포함할 수 있으며, 상기 구성 요소들 중 적어도 어느 하나 이상은, 상기 클라이언트 전자 디바이스 200 내에 포함된 통신 모듈(미도시)와 상기 통신 모듈을 제어하는 프로세서(미도시) 내에 포함될 수 있다.
상기 호스트 전자 디바이스 220은, 사용자 인터페이스 221, 디바이스 매니저 222, 커넥션 매니저 223, 버스 드라이버 224, 디바이스 드라이버 225, 그리고 가상 디바이스 드라이버 설정 정보 226등을 포함할 수 있다.
상기 디바이스 드라이버 225는, 예를 들어, 그래픽 드라이버 225a, 사운드 드라이버 225b, 그리고 카메라 드라이버 225c 등을 포함할 수 있으며, 상기 구성 요소들 중 적어도 어느 하나 이상은, 상기 호스트 전자 디바이스 220 내에 포함된 통신 모듈(미도시)와 상기 통신 모듈을 제어하는 프로세서(미도시) 내에 포함될 수 있다.
상기 디바이스 드라이버 225는, 상기 가상 디바이스 드라이버 205와 구별되도록, 실제(real) 디바이스 드라이버로 일컬어질 수 있고, 상기 그래픽 드라이버 225a, 사운드 드라이버 225b, 그리고 카메라 드라이버 225c 는, 상기 가상 그래픽 드라이버 205a, 가상 사운드 드라이버 205b, 그리고 가상 카메라 드라이버 205c와 구별되도록, 실제 그래픽 드라이버, 실제 사운드 드라이버, 그리고 실제 카메라 드라이버로 일컬어질 수 있다.
상기 호스트 전자 디바이스 220은, 예를 들어, 모뎀, 팩스, 프린터, 또는 카메라 등과 같은 다양한 유형의 입/출력(I/O) 리소스(resource)를, 네트워크 210를 통해 연결된 상기 클라이언트 전자 디바이스 200가 공유할 수 있도록 지원하는 호스트 컴퓨터(host computer) 또는 호스트 프로그램(host program) 등으로 일컬어질 수 있다.
상기 클라이언트 전자 디바이스 200은, 상기 네트워크 210를 통해 연결된 호스트 전자 디바이스 220으로부터 다양한 유형의 입/출력 리소스를 공유 받을 수 있는 클라이언트 컴퓨터(client computer) 또는 클라이언트 프로그램(client program) 등으로 일컬어질 수 있다.
상기 사용자 인터페이스 201, 221은, 사용자와 컴퓨터 시스템 사이에서 의사 소통을 할 수 있도록, 일시적 또는 영구적 접근을 위하여 구현된 물리적 또는 가상적 매개체로서, 물리적인 하드웨어 또는 논리적인 소프트웨어로 구현될 수 있다. 상기 디바이스 매니저 202, 222는, 컴퓨터 시스템의 운영 체제(OS)에 포함될 수 있으며, 디바이스 관리를 위한 소프트웨어의 구성 요소일 수 있다.
상기 커넥션 매니저 203, 223은, 상기 가상 디바이스 드라이버 205와 상기 실제 디바이스 드라이버 225를, 네트워크으로 연결하고, 통신 모듈의 관리 및 등록, 통신 채널의 성립 및 종료 등을 제어하며, 상기 클라이언트 전자 디바이스의 정보를 브로드캐스팅하고, 상기 호스트 전자 디바이스의 통신 채널을 발견하는 등의 역할을 수행할 수 있다.
상기 커넥션 매니저 203, 223은, 상기 클라이언트 전자 디바이스 200와 호스트 전자 디바이스 220간의 데이터 통신을 제어하고, 상기 호스트 전자 디바이스 220의 실제 디바이스 드라이버 225를 이용하여, 다수의 클라이언트 전자 디바이스들에게, 다양한 여러 리소스의 데이터를 동시에 전달할 수도 있다.
상기 실제 디바이스 드라이버 225는, 상기 호스트 전자 디바이스 220의 내부에 포함되거나, 유/무선을 통해 연결 사용되는 외부 디바이스 드라이버일 수 있다. 상기 가상 디바이스 드라이버 205는, 하드웨어 디바이스를 에뮬레이트 하는 소프트웨어의 구성 요소일 수 있다. 예를 들어, 윈도우 오에스(Windows OS)에서는, 하드웨어적인 인터럽트(interrupt)가 아니라, 오에스(OS) 상에서 발생하는 소프트웨어적인 인터럽트를 처리하는 가상 디바이스 드라이버일 수 있다.
상기 가상 버스 드라이버 204는, 상기 가상 디바이스 드라이버 205와 상기 디바이스 매니저 202 사이에 데이터를 전달하는 구성 요소이고, 상기 가상 디바이스 드라이버 설정 정보 226은, 상기 실제 디바이스 드라이버 225와 상기 가상 디바이스 드라이버 205 가 네트워크로 연결될 때, 최적의 통신 방식을 결정하기 위하여, 룩업 테이블(lookup table) 형태 등으로 저장 및 관리될 수 있으며, 데이터 통신을 위한 네트워크 연결 정보와 어떤 방식으로 데이터를 전달할 지를 결정하기 위한 통신 설정 정보일 수 있다.
상기 클라이언트 전자 디바이스 200와 호스트 전자 디바이스 220은, 예를 들어, 사용자 모드(user mode)와 커널 모드(kernel mode)를 포함할 수 있다. 도 2를 참조하면, 상기 클라이언트 전자 디바이스 200의 사용자 모드(user mode)는, 상기 사용자 인터페이스 201와, 상기 디바이스 매니저 202, 그리고 상기 커넥션 매니저 203 등을 포함할 수 있다.
도 3을 참조하면, 상기 클라이언트 전자 디바이스 300의 커널 모드(kernel mode)는, 상기 커넥션 매니저 303와, 상기 가상 버스 드라이버 304, 그리고 상기 가상 디바이스 드라이버 305 등을 포함할 수 있다.
상기 클라이언트 전자 디바이스의 사용자 인터페이스301은 사용자와의 상호 작용을 제공한다. 예를 들어 원격 제어 정보, 디스플레이 정보, 사용자 요청 등을 획득하여, 상기 디바이스 매니저 302로 전달하고, 상기 디바이스 매니저 302는, 상기 사용자 인터페이스 301과 상기 커넥션 매니저 303 사이의 중재 역할을 하며, 상기 사용자 인터페이스 301으로부터 컨트롤 요청을 받으면 커넥션 매니저 303으로 전달한다.
상기 클라이언트 전자 디바이스의 관리 운영은, 물리적인 또는 리모트적인 디바이스의 발견 및 등록, 그리고 디바이스의 플러그 앤 플레이(device Plug-and-Play) 등을 모두 포함할 수 있으며, 로컬 디바이스 정보에 대한 브로드캐스팅과, 다른 컴퓨터 시스템들 간의 연결 관리 등을 모두 포함할 수 있다.
상기 다른 컴퓨터 시스템들 간의 연결 관리 기능은, 상기 커넥션 매니저 303가 제공할 수 있다. 예를 들어, 상기 커넥션 매니저 303은, 컴퓨터 시스템들 간의 네트워크 통신을 제어하여 데이터를 송수신하는 역할을 수행할 수 있다.
본 개시의 일 실시 예로서, 상기 커넥션 매니저 303은, 상기 컴퓨터 시스템들 간에 다양한 형태의 연결을 허락할 수 있으며, 다양한 통신 기능을 제어할 수 있다. 예를 들어, 통신 모듈의 관리 및 등록, 통신 채널의 성립 및 종료, 클라이언트 전자 디바이스 정보의 브로드캐스팅, 호스트 전자 디바이스의 통신 채널 발견, 그리고 컴퓨터 시스템들 간의 데이터 송수신 기능을 제어할 수 있다.
상기 커넥션 매니저 303은, 도 2와 같이, 사용자 모드에 포함되거나, 도 3과 같이, 커널 모드에 포함될 수 있다. 상기 커널 모드는, 모든 시스템 메모리와 CPU 인스트럭션(Instruction)에 접근(access)이 허가된 프로세스의 실행 모드에 해당할 수 있다.
도 4는 본 개시의 다양한 실시 예에 따른 커넥션 매니저 400의 구성 요소를 예시한 도면이다. 도 4를 참조하면, 상기 커넥션 매니저 400은, 호스트 관리 모듈(Host Management Module) 410, 채널 관리 모듈(Channel Management Module) 420, 네트워크 [추상화] 레이어(Network Abstraction Layer) 430, 랜/무선 랜(LAN/WLAN) 440, 그리고 애드혹 네트워크(Ad-hoc Network) 450 등의 구성 요소를 포함할 수 있다.
상기 호스트 관리 모듈 410은, 호스트 디스커버리(Host Discovery) 411을 포함할 수 있고, 상기 채널 관리 모듈 420은, 가상 채널 서비스(Virtual Channel Service) 421, 채널 인스턴트 관리(Channel Instance Management) 422, 데이터 전송(data Transferring) 423, 그리고 예외 핸들링(Exception Handling) 424 등을 포함할 수 있다.
상기 가상 채널 서비스 421은, 적어도 하나 이상의 클라이언트가 연결될 수 있는 호스트(예: 서버)처럼 보여지도록 적어도 하나 이상의 가상 채널을 관리할 수 있고, 상기 채널 인스턴트 관리 422는, 상기 가상 채널과 소켓(socket)을 연결시켜 관리할 수 있고, 상기 데이터 전송 423은, 가상 채널을 통해 어떻게 데이터를 보내고 받을지를 컨트롤할 수 있다.
상기 가상 채널 서비스 421은, 각각의 가상 채널에 대해 고유한 이름을 설정할 수 있다. 예를 들어, 임의의 한 가상 채널의 이름은 "//servername/ channel/channelname" 일 수 있으며, 여기서, 상기 “servername”은 원격 컴퓨터 시스템(예: 호스트 전자 디바이스)의 이름일 수 있고, 커넥션 API(Application Program Interface)는 가상 채널 이름과 컴퓨터 시스템에 연관된 이름을 같이 열거하여 표시할 수 있다.
상기 호스트 관리 모듈 410은, 네트워크 상에서 이용할 수 있는 호스트를 발견하고 관리하는 구성 요소이고, 상기 커넥션 매니저 400은,호스트 전자 디바이스(예: 서버)의 리소스를, 적어도 하나 이상의 다른 클라이언트 전자 디바이스들이 공유할 수 있도록 중개하는 기능을 제공할 수 있다.
상기 가상 디바이스 드라이버를 사용하는 어플리케이션 206, 306은, 고유 식별자인 어플리케이션 아이디(Application ID)를 가지며, 상기 어플리케이션 아이디는, 해당 어플리케이션의 이름, UUID(Universally Unique Identifier), 또는 시리얼 넘버 등에 기반하여 생성될 수 있다.
상기 가상 디바이스 드라이버는, 고유 식별자인 가상 디바이스 드라이버 아이디(ID)를 가지며, 상기 가상 디바이스 드라이버의 아이디는, 클라이언트 전자 디바이스의 오에스(OS) 커널에서 작동하는 가상 디바이스 드라이버의 ID 등이 될 수 있다.
도 5 및 도 6은 본 개시의 다양한 실시 예에 따른 가상 디바이스 드라이버 설정 정보 526, 626을 예시한 도면이다. 상기 가상 디바이스 드라이버 설정 정보(virtual device driver configuration information) 526, 626은, 호스트 전자 디바이스에서 저장 및 관리하는 정보로서, 호스트 전자 디바이스의 실제(real) 디바이스 드라이버와, 클라이언트 전자 디바이스의 가상(virtual) 디바이스 드라이버가 네트워크로 연결될 때, 최적의 통신 방식을 결정하기 위해, 룩업 테이블(lookup table) 형태 등으로 미리 저장 및 관리될 수 있다.
상기 가상 디바이스 드라이버 설정 정보 526, 626은, 상기 실제 디바이스 드라이버와 가상 디바이스 드라이버 간의 데이터 통신을 최적화하기 위한 네트워크 연결 정보와 어떤 방식으로 데이터를 송수신할 지를 결정하기 위한 정보일 수 있다.
본 개시의 일 실시 예로서, 도 5을 참조하면, 상기 가상 디바이스 드라이버 설정 정보 526은, 클라이언트 아이디(client ID), 가상 디바이스 드라이버 아이디(virtual device driver ID), 프로토콜 종류(protocol type), 샘플링 레이트(sampling rate), 프레임 레이트(frame rate), 그리고 해상도(resolution) 등과 같은 정보 필드들이 리스트 형태로 연계되어 저장될 수 있다.
예를 들어, 상기 가상 디바이스 드라이버 설정 정보 526에는, 클라이언트 전자 디바이스로부터 수신되는 가상 디바이스 드라이버 아이디(예: VDD ID#)에 기반하여, 최적의 통신 방식을 결정하기 위한 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등이 사전에 연계되어 저장될 수 있다.
본 개시의 일 실시 예로서, 도 6을 참조하면, 상기 가상 디바이스 드라이버 설정 정보 626은, 클라이언트 아이디, 가상 디바이스 드라이버를 사용하는 어플리케이션 아이디(application ID), 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등과 같은 정보 필드들이 리스트 형태로 연계되어 저장될 수 있다.
예를 들어, 상기 가상 디바이스 드라이버 설정 정보 626에는, 클라이언트 전자 디바이스로부터 수신되는 어플리케이션 아이디(예: App ID#), 즉, 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디에 기반하여, 최적의 통신 방식을 결정하기 위한 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등이 사전에 연계되어 저장될 수 있다.
도 7은 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스의 동작 흐름도를 예시한 도면이다. 도 7을 참조하면, 동작 700에서, 상기 클라이언트 전자 디바이스는, 자신에게 부여된 고유의 식별자인 클라이언트 아이디(예: client ID#)와 접속 요구(connection request) 메시지를 생성하여, 원격의 호스트 전자 디바이스로 송신할 수 있다. 예를 들어, 상기 클라이언트 아이디는, 상기 접속 요구 메시지에 포함되어 송신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 송신될 수 있다.
동작 710에서, 상기 클라이언트 전자 디바이스는, 상기 호스트 전자 디바이스에서 송신하는 응답 메시지를 수신할 수 있으며, 상기 응답 메시지와 함께 호스트 전자 디바이스의 실제 디바이스 드라이버 정보가 수신되는 지를 판단할 수 있다. 예를 들어, 상기 실제 디바이스 드라이버 정보는, 상기 응답 메시지에 포함되어 수신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 수신될 수 있다.
동작 720에서, 상기 클라이언트 전자 디바이스는, 상기 판단 결과, 상기 실제 디바이스 드라이버 정보가 수신되면, 상기 실제 디바이스 드라이버 정보에 대응되는 가상 디바이스 드라이버를 생성할 수 있다. 예를 들어, 상기 클라이언트 전자 디바이스는, 상기 실제 디바이스 드라이버 정보에 대응되는 가상 디바이스 드라이버를, 상기 호스트 전자 디바이스로부터 이미 다운로드 받아 사용한 적이 있으면, 상기 가상 디바이스 드라이버를 활성화하여 생성할 수 있다.
반면, 상기 가상 디바이스 드라이버를 다운로드 받은 적이 없으면, 상기 호스트 전자 디바이스와의 인터페이스를 통해 상기 실제 디바이스 드라이버 정보와 연관된 가상 디바이스 드라이버를, 상기 호스트 전자 디바이스로부터 다운로드 받아 설치하여 생성할 수 있다.
동작 730에서, 상기 클라이언트 전자 디바이스는, 상기 가상 디바이스 드라이버를 생성하고 나면, 상기 생성된 가상 디바이스 드라이버의 고유 식별자인 가상 디바이스 드라이버 아이디(예: DDR ID#)와 접속 요구 메시지를 상기 호스트 전자 디바이스로 송신할 수 있다. 예를 들어, 상기 가상 디바이스 드라이버 아이디는, 상기 접속 요구 메시지에 포함되어 송신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 송신될 수 있다.
동작 740에서, 상기 클라이언트 전자 디바이스는, 상기 호스트 전자 디바이스에서 송신하는 응답 메시지를 수신할 수 있으며, 상기 응답 메시지와 함께 상기 실제 디바이스 드라이버와 상기 가상 디바이스 드라이버 간의 최적한 통신 방식을 설정하기 위한 통신 설정 정보가 수신되는 지를 판단할 수 있다. 예를 들어, 상기 통신 설정 정보는, 상기 응답 메시지에 포함되어 수신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 수신될 수 있다.
동작 750에서, 상기 클라이언트 전자 디바이스는, 상기 판단 결과, 상기 통신 설정 정보가 수신되면, 상기 통신 설정 정보에 일치하도록, 상기 가상 디바이스 드라이버의 통신 방식을 설정할 수 있다. 예를 들어, 상기 통신 설정 정보가 지정하는 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 해상도 등에 맞추어, 상기 가상 디바이스 드라이버 내에 포함된 가상 그래픽 드라이버, 가상 사운드 드라이버, 그리고 가상 카메라 드라이버의 데이터 통신 프로토콜을 각각 설정할 수 있다.
동작 760에서, 상기 클라이언트 전자 디바이스는, 상기 각각 설정된 데이터 통신 프로토콜에 맞추어, 상기 가상 디바이스 드라이버와 상기 실제 디바이스 드라이버 간의 데이터 통신을 수행하여, 상기 호스트 전자 디바이스의 리소스를 공유할 수 있다.
이에 따라, 상기 가상 디바이스 드라이버와 상기 실제 디바이스 드라이버 간의 데이터 통신 방식을, 특정 고정 값이 아닌 임의의 최적화된 가변 값으로 설정할 수 있게 되므로, 네트워크 트래픽(traffic)과 대기(latency) 시간 등을 효율적으로 감소시킬 수 있다.
도 8은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스의 동작 흐름도를 예시한 도면이다. 도 8을 참조하면, 동작 800에서, 상기 호스트 전자 디바이스는, 네트워크를 통해 클라이언트 전자 디바이스에서 송신하는 클라이언트 아이디(예: client ID#)와 접속 요구(connection request) 메시지가 수신되는지를 판단할 수 있다. 예를 들어, 상기 클라이언트 아이디는, 상기 접속 요구 메시지에 포함되어 수신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 수신될 수 있다.
동작 810에서, 상기 호스트 전자 디바이스는, 상기 판단 결과, 상기 클라이언트 아이디가 수신되면, 상기 클라이언트 아이디에 기반하여, 상기 호스트 전자 디바이스의 실제 디바이스 드라이버 정보를, 상기 클라이언트 전자 디바이스로 송신할 수 있다. 여기서, 상기 실제 디바이스 드라이버 정보는, 상기 클라이언트 전자 디바이스가, 상기 실제 디바이스 드라이버 정보에 대응되는 가상 디바이스 드라이버를 활성화하여 생성할 수 있도록 하기 위한 정보일 수 있다.
예를 들어, 상기 클라이언트 전자 디바이스는, 상기 실제 디바이스 드라이버 정보에 대응되는 가상 디바이스 드라이버를, 상기 호스트 전자 디바이스로부터 이미 다운로드 받아 사용한 적인 있으면, 상기 실제 디바이스 드라이버 정보에 대응되는 가상 디바이스 드라이버를 활성화하여 생성하고, 상기 가상 디바이스 드라이버를 다운로드 받은 적이 없으면, 상기 호스트 전자 디바이스와의 인터페이스를 통해 상기 가상 디바이스 드라이버를 다운로드 받아 설치하여 생성할 수 있다.
동작 820에서, 상기 호스트 전자 디바이스는, 상기 클라이언트 전자 디바이스에서 송신하는 가상 디바이스 드라이버의 아이디(예: DDR ID#)와 접속 요구 메시지가 수신되는지를 판단할 수 있다. 예를 들어, 상기 가상 디바이스 드라이버의 아이디는, 상기 접속 요구 메시지에 포함되어 수신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 수신될 수 있다.
동작 830에서, 상기 호스트 전자 디바이스는, 상기 판단 결과, 상기 가사 디바이스 드라이버의 아이디가 수신되면, 상기 가상 디바이스 드라이버의 아이디에 대응되는 통신 설정 정보를, 상기 클라이언트 전자 디바이스로 송신할 수 있다. 예를 들어, 상기 통신 설정 정보는, 상기 클라이언트 전자 디바이스로 송신되는 응답 메시지에 포함되어 송신되거나, 별도의 전송 패킷 또는 전송 메시지 등으로 송신될 수 있다.
동작 840에서, 상기 호스트 전자 디바이스는, 상기 통신 설정 정보에 일치하도록, 상기 실제 디바이스 드라이버의 통신 방식을 설정할 수 있다. 예를 들어, 상기 통신 설정 정보가 지정하는 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 해상도 등에 맞추어, 상기 실제 디바이스 드라이버 내에 포함된 실제 그래픽 드라이버, 실제 사운드 드라이버, 그리고 실제 카메라 드라이버의 데이터 통신 프로토콜을 각각 설정할 수 있다.
동작 850에서, 상기 호스트 전자 디바이스는, 상기 각각 설정된 데이터 통신 프로토콜에 맞추어, 상기 가상 디바이스 드라이버와 상기 실제 디바이스 드라이버 간의 데이터 통신을 수행하여, 상기 호스트 전자 디바이스의 리소스를 효율적으로 공유할 수 있다.
이에 따라, 상기 가상 디바이스 드라이버와 상기 실제 디바이스 드라이버 간의 데이터 통신 방식을, 특정 고정 값이 아닌 임의의 최적화된 가변 값으로 설정할 수 있게 되므로, 네트워크 트래픽(traffic)과 대기(latency) 시간 등을 효율적으로 감소시킬 수 있다.
도 9는 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스 900의 리소스를 다수의 클라이언트 전자 디바이스들 910, 920이 공유하는 동작 흐름도를 예시한 도면이다.
예를 들어, 상기 제1 클라이언트 전자 디바이스 910은, 상기 호스트 전자 디바이스 900의 리소스를, 네트워크를 통해 직접적으로 공유할 수 있고, 상기 제2 클라이언트 전자 디바이스 920은, 상기 호스트 전자 디바이스 900의 리소스를, 상기 제1 클라이언트 전자 디바이스 910을 통해 간접적으로 공유할 수 있다.
도 9를 참조하면, 동작 950에서, 상기 제1 클라이언트 전자 디바이스 910은, 상기 호스트 전자 디바이스 900과의 사용자 인증 절차 등을 거친 후, 자신에게 부여된 고유 식별자인 클라이언트 아이디(예: Client1 ID)를, 상기 호스트 전자 디바이스 900으로 송신할 수 있고, 동작 951에서, 상기 호스트 전자 디바이스 900은, 리소스 공유를 위한 실제 디바이스 드라이버 정보를, 상기 제1 클라이언트 전자 디바이스 910으로 송신할 수 있다.
동작 952에서, 상기 제1 클라이언트 전자 디바이스 910은, 상기 수신된 실제 디바이스 드라이버 정보에 기반하여, 가상 디바이스 드라이버를 생성할 수 있고, 동작 953에서, 상기 제1 클라이언트 전자 디바이스 910은, 상기 생성된 가상 디바이스 드라이버의 고유 식별자인 가상 디바이스 드라이버 아이디를, 상기 호스트 전자 디바이스 900으로 송신할 수 있다.
동작 954에서, 상기 호스트 전자 디바이스 900은, 상기 가상 디바이스 드라이버 아이디에 기반하여, 상기 실제 디바이스 드라이버와 상기 가상 디바이스 드라이버 간의 최적한 통신 방식을 결정할 수 있다. 예를 들어, 도 5를 참조로 전술한 바 있는 가상 디바이스 드라이버 설정 정보를 검색하여, 상기 가상 디바이스 드라이버 아이디에 연계된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제1 클라이언트 전자 디바이스 910으로 송신할 수 있다.
여기서, 상기 가상 디바이스 드라이버 아이디 대신, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디가, 상기 호스트 전자 디바이스 900로 송신될 수 있고, 이 경우, 상기 호스트 전자 디바이스 900은, 도 6을 참조로 전술한 바 있는 가상 디바이스 드라이버 설정 정보를 검색하여, 상기 어플리케이션 아이디에 연계된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제1 클라이언트 전자 디바이스 910으로 송신할 수 있다.
동작 955에서, 상기 제1 클라이언트 전자 디바이스 910은, 상기 통신 설정 정보에 맞추어, 상기 가상 디바이스 드라이버의 통신 방식을 설정하고, 동작 956에서, 상기 제1 클라이언트 전자 디바이스 910과 상기 호스트 전자 디바이스 900 간의 데이터 통신을 수행하여, 상기 호스트 전자 디바이스 900의 리소스를 효율적으로 공유할 수 있다.
동작 957에서, 제2 클라이언트 전자 디바이스 920은, 상기 제1 클라이언트 전자 디바이스 910과의 사용자 인증 절차 등을 거친 후, 자신에게 부여된 고유 식별자인 클라이언트 아이디(예: Client2 ID)를, 상기 제1 클라이언트 전자 디바이스 910으로 송신할 수 있고, 동작 958에서, 상기 제1 클라이언트 전자 디바이스 910은, 리소스 공유를 위한 실제 디바이스 드라이버 정보를, 상기 제2 클라이언트 전자 디바이스 920으로 송신할 수 있다.
동작 959에서, 상기 제2 클라이언트 전자 디바이스 920은, 상기 수신된 실제 디바이스 드라이버 정보에 기반하여, 가상 디바이스 드라이버를 생성할 수 있고, 동작 960에서, 상기 제2 클라이언트 전자 디바이스 920은, 상기 생성된 가상 디바이스 드라이버의 고유 식별자인 가상 디바이스 드라이버 아이디를, 상기 제1 전자 디바이스 910으로 송신할 수 있다.
동작 961에서, 상기 제1 클라이언트 전자 디바이스 910은, 상기 가상 디바이스 드라이버 아이디에 기반하여, 상기 실제 디바이스 드라이버와 상기 가상 디바이스 드라이버 간의 최적한 통신 방식으로 결정된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제2 클라이언트 전자 디바이스 920으로 송신할 수 있다.
여기서, 상기 가상 디바이스 드라이버 아이디 대신, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디가, 상기 제1 클라이언트 전자 디바이스 910로 송신될 수 있고, 이 경우, 상기 제1 클라이언트 전자 디바이스 910은, 상기 어플리케이션 아이디에 기반하여 최적한 통신 방식으로 결정된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제2 클라이언트 전자 디바이스 920으로 송신할 수 있다.
동작 962에서, 상기 제2 클라이언트 전자 디바이스 920은, 상기 통신 설정 정보에 맞추어, 상기 가상 디바이스 드라이버의 통신 방식을 설정하고, 동작 963에서, 상기 제1 클라이언트 전자 디바이스 910과의 데이터 통신을 수행하여, 상기 호스트 전자 디바이스 900의 리소스를 간접적으로 공유할 수 있다.
도 10은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스 1000의 리소스 공유를 다수의 클라이언트 전자 디바이스들 1010, 1020이 종료하는 동작 흐름도를 예시한 도면이다.
예를 들어, 상기 제1 클라이언트 전자 디바이스 1010은, 상기 호스트 전자 디바이스 1000의 리소스를, 네트워크를 통해 직접적으로 공유할 수 있고, 상기 제2 클라이언트 전자 디바이스 1020은, 상기 호스트 전자 디바이스 1000의 리소스를, 상기 제1 클라이언트 전자 디바이스 1010을 통해 간접적으로 공유할 수 있다.
도 10를 참조하면, 동작 1050에서, 상기 제1 클라이언트 전자 디바이스 1010은, 상기 호스트 전자 디바이스 1000과의 사용자 인증 절차 및 사전 통신(pre-communication) 동작을 수행할 수 있고, 동작 1051에서, 상기 사전 통신 동작을 통해, 상기 호스트 전자 디바이스 1000이 결정한 통신 방식에 맞추어, 가상 디바이스 드라이버의 통신 방식을 설정할 수 있다.
동작 1052에서, 상기 제1 클라이언트 전자 디바이스 1010은, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스 1000와 데이터 통신을 수행함으로써, 상기 호스트 전자 디바이스 1000의 리소스를 직접적으로 공유할 수 있다.
동작 1053에서, 상기 제2 클라이언트 전자 디바이스 1020은, 상기 제1 클라이언트 전자 디바이스 1010과의 사용자 인증 절차 및 사전 통신(pre-communication) 동작을 수행할 수 있고, 동작 1054에서, 상기 사전 통신 동작을 통해, 상기 제1 클라이언트 전자 디바이스 1010이 결정한 통신 방식에 맞추어, 가상 디바이스 드라이버의 통신 방식을 설정할 수 있다.
동작 1055에서, 상기 제2 클라이언트 전자 디바이스 1020은, 상기 가상 디바이스 드라이버를 이용하여, 상기 제1 클라이언트 전자 디바이스 1010와 데이터 통신을 수행함으로써, 상기 호스트 전자 디바이스 1000의 리소스를 상기 제1 클라이언트 전자 디바이스 1010을 통해 간접적으로 공유할 수 있다.
동작 1056에서, 상기 제1 클라이언트 전자 디바이스 1010은, 상기 호스트 전자 디바이스 1000와의 데이터 통신이 지연(delay)되면, 동작 1057에서, 상기 호스트 전자 디바이스 1000과의 인터페이스를 통해, 상기 가상 디바이스 드라이버의 통신 방식을 재설정(reset)함으로써, 네트워크 환경 등에 따른 데이터 통신 지연을 해소할 수 있다.
동작 1058에서, 상기 제1 클라이언트 전자 디바이스 1010은, 상기 호스트 전자 디바이스 1000와의 데이터 통신이 단절(disconnection)된 후, 소정 회수의 재시도(retry)에도 불구하고, 데이터 통신에 실패(fail)하면, 동작 1059에서, 통신 종료(terminate)를 설정하고 리소스 공유 동작을 중지할 수 있다.
동작 1060에서, 상기 제1 클라이언트 전자 디바이스 1010은, 상기 통신 종료가 설정되면, 실패 통지(fail notification) 메시지를 생성한 후, 상기 제2 클라이언트 전자 디바이스 1020으로 송신할 수 있고, 동작 1061에서, 상기 제2 클라이언트 전자 디바이스 1020은, 상기 실패 통지 메시지를 확인하여, 상기 제1 클라이언트 전자 디바이스 1010와의 통신 종료를 설정하고 리소스 공유 동작을 중지할 수 있다.
도 11은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스 1100의 리소스를 다수의 클라이언트 전자 디바이스들 1110, 1120이 직접적으로 공유하는 동작 흐름도를 예시한 도면이다.
예를 들어, 상기 제1 클라이언트 전자 디바이스 1110와 제2 클라이언트 전자 디바이스 1120은, 상기 호스트 전자 디바이스 1100의 리소스를, 네트워크를 통해 직접적으로 공유할 수 있다.
도 11을 참조하면, 동작 1150에서, 상기 제1 클라이언트 전자 디바이스 1110은, 상기 호스트 전자 디바이스 1100과의 사용자 인증 절차 등을 거친 후, 자신에게 부여된 고유 식별자인 클라이언트 아이디(예: Client1 ID)를, 상기 호스트 전자 디바이스 1100으로 송신할 수 있고, 동작 1151에서, 상기 호스트 전자 디바이스 1100은, 리소스 공유를 위한 실제 디바이스 드라이버 정보를, 상기 제1 클라이언트 전자 디바이스 1110으로 송신할 수 있다.
동작 1152에서, 상기 제1 클라이언트 전자 디바이스 1110은, 상기 수신된 실제 디바이스 드라이버 정보에 기반하여, 가상 디바이스 드라이버를 생성할 수 있고, 동작 1153에서, 상기 제1 클라이언트 전자 디바이스 1110은, 상기 생성된 가상 디바이스 드라이버의 고유 식별자인 가상 디바이스 드라이버 아이디를, 상기 호스트 전자 디바이스 1100으로 송신할 수 있다.
동작 1154에서, 상기 호스트 전자 디바이스 1100은, 상기 가상 디바이스 드라이버 아이디에 기반하여, 상기 실제 디바이스 드라이버와 상기 가상 디바이스 드라이버 간의 최적한 통신 방식을 결정할 수 있다. 예를 들어, 도 5를 참조로 전술한 바 있는 가상 디바이스 드라이버 설정 정보를 검색하여, 상기 가상 디바이스 드라이버 아이디에 연계된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제1 클라이언트 전자 디바이스 1110으로 송신할 수 있다.
여기서, 상기 가상 디바이스 드라이버 아이디 대신, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디가, 상기 호스트 전자 디바이스 1100로 송신될 수 있고, 이 경우, 상기 호스트 전자 디바이스 1100은, 도 6을 참조로 전술한 바 있는 가상 디바이스 드라이버 설정 정보를 검색하여, 상기 어플리케이션 아이디에 연계된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제1 클라이언트 전자 디바이스 1110으로 송신할 수 있다.
동작 1155에서, 상기 제1 클라이언트 전자 디바이스 1110은, 상기 통신 설정 정보에 맞추어, 상기 가상 디바이스 드라이버의 통신 방식을 설정하고, 동작 1156에서, 상기 제1 클라이언트 전자 디바이스 1110과 상기 호스트 전자 디바이스 1100 간의 데이터 통신을 수행하여, 상기 호스트 전자 디바이스 1100의 리소스를 효율적으로 공유할 수 있다.
동작 1157에서, 상기 제2 클라이언트 전자 디바이스 1120은, 상기 호스트 전자 디바이스 1100과의 사용자 인증 절차 등을 거친 후, 자신에게 부여된 고유 식별자인 클라이언트 아이디(예: Client2 ID)를, 상기 호스트 전자 디바이스 1100으로 송신할 수 있고, 동작 1158에서, 상기 호스트 전자 디바이스 1100은, 리소스 공유를 위한 실제 디바이스 드라이버 정보를, 상기 제2 클라이언트 전자 디바이스 1120으로 송신할 수 있다.
동작 1159에서, 상기 제2 클라이언트 전자 디바이스 1120은, 상기 수신된 실제 디바이스 드라이버 정보에 기반하여, 가상 디바이스 드라이버를 생성할 수 있고, 동작 1160에서, 상기 제2 클라이언트 전자 디바이스 1120은, 상기 생성된 가상 디바이스 드라이버의 고유 식별자인 가상 디바이스 드라이버 아이디를, 상기 호스트 전자 디바이스 1100으로 송신할 수 있다.
동작 1161에서, 상기 호스트 전자 디바이스 1100은, 상기 가상 디바이스 드라이버 아이디에 기반하여, 상기 실제 디바이스 드라이버와 상기 가상 디바이스 드라이버 간의 최적한 통신 방식을 결정할 수 있다. 예를 들어, 도 5를 참조로 전술한 바 있는 가상 디바이스 드라이버 설정 정보를 검색하여, 상기 가상 디바이스 드라이버 아이디에 연계된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제2 클라이언트 전자 디바이스 1120으로 송신할 수 있다.
여기서, 상기 가상 디바이스 드라이버 아이디 대신, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디가, 상기 호스트 전자 디바이스 1100로 송신될 수 있고, 이 경우, 상기 호스트 전자 디바이스 1100은, 도 6을 참조로 전술한 바 있는 가상 디바이스 드라이버 설정 정보를 검색하여, 상기 어플리케이션 아이디에 연계된 특정 프로토콜 종류, 샘플링 레이트, 프레임 레이트, 그리고 해상도 등의 통신 설정 정보를, 상기 제2 클라이언트 전자 디바이스 1120으로 송신할 수 있다.
동작 1162에서, 상기 제2 클라이언트 전자 디바이스 1120은, 상기 통신 설정 정보에 맞추어, 상기 가상 디바이스 드라이버의 통신 방식을 설정하고, 동작 1162에서, 상기 제2 클라이언트 전자 디바이스 1120과 상기 호스트 전자 디바이스 1100 간의 데이터 통신을 수행하여, 상기 호스트 전자 디바이스 1100의 리소스를 효율적으로 공유할 수 있다.
즉, 상기 제1 클라이언트 전자 디바이스 1110과 상기 제1 클라이언트 전자 디바이스 1120은, 네트워크를 통해, 상기 호스트 전자 디바이스 1100의 리소스를 각각 직접적으로 공유할 수 있다.
도 12는 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스 1200의 리소스 공유에 대한 우선권을 부여하는 동작 흐름도를 예시한 도면이다.
예를 들어, 상기 호스트 전자 디바이스 1200의 리소스는, 제1 클라이언트 전자 디바이스 1210과 제2 클라이언트 전자 디바이스 1220에 의해 각각 공유될 수 있으며, 상기 호스트 전자 디바이스 1200은, 상기 리소스 공유에 대한 우선권(priority)을 임의의 한 클라이언트 전자 디바이스에 부여하고, 나머지 다른 클라이언트 전자 디바이스에 대해서는 락(lock) 상태로 제한할 수 있다.
도 12를 참조하면, 동작 1250에서, 상기 제1 클라이언트 전자 디바이스 1210은, 상기 호스트 전자 디바이스 1200과의 사용자 인증 절차 및 사전 통신(pre-communication) 동작을 수행할 수 있고, 동작 1251에서, 상기 사전 통신 동작을 통해, 상기 호스트 전자 디바이스 1200이 결정한 통신 방식에 맞추어, 가상 디바이스 드라이버의 통신 방식을 설정할 수 있다.
동작 1252에서, 상기 제1 클라이언트 전자 디바이스 1210은, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스 1200와 데이터 통신을 수행함으로써, 상기 호스트 전자 디바이스 1200의 리소스를 직접적으로 공유할 수 있다.
동작 1253에서, 상기 제2 클라이언트 전자 디바이스 1220은, 상기 호스트 전자 디바이스 1200과의 사용자 인증 절차 및 사전 통신(pre-communication) 동작을 수행할 수 있고, 동작 1254에서, 상기 호스트 전자 디바이스 1200은, 상기 제1 클라이언트 전자 디바이스 1201와의 리소스 공유 상황임을 고려하여, 상기 제2 클라이언트 전자 디바이스 1220에 리소스 공유가 불가능하다는 락(lock) 통지 메시지를 송신할 수 있다.
즉, 상기 호스트 전자 디바이스 1200은, 상기 제1 클라이언트 전자 디바이스 1210에 리소스 공유의 우선권을 부여하고, 상기 제2 클라이언트 전자 디바이스 1220에 대해서는 락(lock) 상태로 제한할 수 있다.
동작 1255에서, 상기 호스트 전자 디바이스 1200은, 상기 제1 클라이언트 전자 디바이스 1210와의 데이터 통신이 종료되면, 동작 1256에서, 상기 제2 클라이언트 전자 디바이스1220으로, 락 해제를 통지하는 메시지를 송신할 수 있다.
동작 1257에서, 상기 제2 클라이언트 전자 디바이스 1220은, 상기 락 해제 메시지가 수신되면, 상기 호스트 전자 디바이스 1200과의 사용자 인증 및 사전 통신 동작을 다시 수행하고, 동작 1258에서, 상기 사전 통신 동작을 통해, 상기 호스트 전자 디바이스 1200이 결정한 통신 방식에 맞추어, 가상 디바이스 드라이버의 통신 방식을 설정할 수 있다.
동작 1259에서, 상기 제2 클라이언트 전자 디바이스 1220은, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스 1200와 데이터 통신을 수행함으로써, 상기 호스트 전자 디바이스 1200의 리소스를 직접적으로 공유할 수 있다.
도 13은 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스 1300의 실제 디바이스 드라이버를 제1 클라이언트 전자 디바이스 1310가 사용하는 예시 도면이고, 도 14는 본 개시의 다양한 실시 예에 따른 호스트 전자 디바이스 1400의 실제 디바이스 드라이버를 제1 클라이언트 전자 디바이스 1410가 사용하는 다른 예시 도면이다.
도 13을 참조하면, 상기 호스트 전자 디바이스 1300은, 현재 사용 가능한 실제 디바이스 드라이버들에 대한 리스트를 제1 클라이언트 전자 디바이스 1310로 제공하고, 상기 제1 클라이언트 전자 디바이스 1310은, 상기 리스트를 수신 받아 사용자 인터페이스(UI) 화면으로 디스플레이할 수 있다.
상기 제1 클라이언트 전자 디바이스 1310은, 상기 사용자 인터페이스 화면을 통해 사용자 선택을 받아, 그에 해당하는 실제 디바이스 드라이버를, 상기 호스트 전자 디바이스 1300으로 요청한 후 다운로드 받아, 상기 제1 클라이언트 전자 디바이스 1310에 설치할 수 있다.
도 14를 참조하면, 상기 제1 클라이언트 전자 디바이스 1410은, 현재 실행 중인 어플리케이션에 대한 식별 정보, 예를 들어, 어플리케이션 아이디 등을 상기 호스트 전자 디바이스 1400으로 전송할 수 있다.
상기 호스트 전자 디바이스 1400은, 상기 제1 클라이언트 전자 디바이스 1410으로부터 수신되는 어플리케이션 아이디 등에 기반하여, 상기 어플리케이션에 연관된 실제 디바이스 드라이버를 자동으로 제공하거나, 또는 사용자의 선택에 따라, 상기 제1클라이언트 전자 디바이스 1410으로 제공할 수 있다.
도 15는 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스 1400와 호스트 전자 디바이스 1410의 디스플레이 화면을 예시한 도면이다. 상기 클라이언트 전자 디바이스 1400은, 상기 호스트 전자 디바이스 1410가 제공하는 실제 디바이스 드라이버와 연관된 다양한 정보 및 메뉴 항목들이 디스플레이될 수 있다.
도 15을 참조하면, 상기 클라이언트 전자 디바이스 1400의 디스플레이 화면에는, 가상 디바이스 드라이버 설치와 가상 디바이스 드라이버 공유 등에 연관된 정보와 메뉴 항목들이 디스플레이될 수 있고, 상기 호스트 전자 디바이스 1410의 디스플레이 화면에는, 드라이버 업데이트와 장치 공유 등에 연관된 정보와 메뉴 항목들이 디스플레이될 수 있다.
도16은 본 개시의 다양한 실시 예에 따른 제1 클라이언트 전자 디바이스가 중계 역할을 수행하는 예시 도면이다. 도 16을 참조하면, 상기 제1 클라이언트 전자 디바이스1601은, 호스트 전자 디바이스 1600에서 제공 받은 다양한 정보를, 제 2 클라이언트 전자 디바이스 1602으로 제공하는 중계 역할을 수행할 수 있다.
이 경우, 상기 제1 클라이언트 전자 디바이스 1601은, 상기 호스트 전자 디바이스 1600으로부터 제공 받은 정보를 전달할, 상기 제2 클라이언트 전자 디바이스 1602에 대한 정보를 획득할 수 있고, 복수 개의 공유 가능한 다른 클라이언트 전자 디바이스 들에 대한 정보를 획득하여, 사용자 인터페이스 화면으로 디스플레이 한 후, 사용자의 선택에 의해, 적어도 어느 하나의 클라이언트 전자 디바이스를 선택할 수 있다.
도17은 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스 1700와 호스트 전자 디바이스 1710간의 보안 채널 설정 및 접속에 대한 예시 도면이다.
도 17을 참조하면, 상기 클라이언트 전자 디바이스 1700은, 상기 호스트 전자 디바이스 1710과의 인터페이스 동작을 통해, 가상 디바이스 드라이버의 통신 방식을 설정할 뿐만 아니라, 상기 호스트 전자 디바이스 1710과의 보안 채널(security channel)을 설정할 수 있다.
예를 들어, 상기 클라이언트 전자 디바이스 1700와 호스트 전자 디바이스 1710 에는, 사용자 인증 또는 디바이스 인증을 위한 권한 검출기(authority detector) 1700a, 1710a가 추가될 수 있다.
상기 권한 검출기 1700a, 1710a는, 상기 클라이언트 전자 디바이스 1700와 호스트 전자 디바이스 1710 간의 데이터 통신을 수행하기 이전에, 정당한 사용자 또는 정당한 디바이스 인지를 검출하는 권한 검출 기능을 수행할 수 있으며, 이를 위해 사전에 설정된 인증 키를 교환할 수 있다.
또한, 상기 클라이언트 전자 디바이스 1700와 호스트 전자 디바이스 1710 에는, 송수신 데이터를 압축 및 암호화 하기 위한 코덱(codec) 1700b, 1710b가 추가될 수 있으며, 상기 클라이언트 전자 디바이스 1700와 호스트 전자 디바이스 1710 간의 연결 설정은, 예를 들어, TCP 통신을 기반으로 하되, 디바이스 데이터의 전송은 별도의 통신 채널을 통해서 이루어질 수 있다.
도 18은, 본 개시의 다양한 실시 예에 따른 클라이언트 전자 디바이스 1800와 호스트(또는 서버) 전자 디바이스 1810 간에 디바이스 드라이버 연결 설정시의 보안 채널 및 커넥션을 형성하는 동작의 예시 도면이다.
상기 클라이언트 전자 디바이스 1800와 호스트 전자 디바이스 1810간의 프로토콜 설정뿐만 아니라, 상기 클라이언트 전자 디바이스 1800와 호스트 전자 디바이스 1810 간의 보안 채널을 설정할 수 있다.
상기 클라이언트 전자 디바이스 1800와 호스트 전자 디바이스 1810 간의 인증을 위하여, 권한 검사부가 추가될 수 있으며, 데이터를 교환하기 이전에 데이터가 정당한 디바이스 또는 게이트웨이(gateway)로부터 전송되었는지 확인하는 기능을 수행할 수 있다. 이때, 상기 클라이언트 전자 디바이스 1800와 호스트 전자 디바이스 1810 간에는 인증 키를 교환할 수도 있다.
상기 클라이언트 전자 디바이스1800와 호스트 전자 디바이스 1810 간의 연결 설정시, 디바이스 데이터의 암호화 또는 데이터의 전송 량을 줄이기 위해, 인코딩부가 추가될 수 있다. 이는 트래픽의 분석 또는 데이터의 가로 채기를 통해 비인가된 다른 디바이스로부터의 보안 위협을 줄일 수 있다.
상기 클라이언트 전자 디바이스 1800와 호스트 전자 디바이스 1810의 연결 설정은, TCP 통신을 기반으로 클라이언트와 호스트 간의 설정이 이루어지고, 디바이스 데이터의 전달은 별도의 통신 채널을 통해서 이루어질 수 있다.
도19는, 본 개시의 다양한 실시 예에 따른 실제 디바이스 정보에 기반하여 가상 디바이스 드라이버를 생성하는 과정을 예시한 도면이다. 도 19를 참조하면, 윈도우즈 드라이버 모델(WDM: Windows Driver Model)은, 예를 들어, 드라이버 레이어(drive layer)를 표현하는 것이다. 일반적으로 디바이스 오브젝트의 스택(stack)은, 도19와 같이 표현할 수 있다.
예를 들어, IPR는 I/O Request Packet을 말하고, 거의 모든 I/O는 IRP라는 데이터 구조체 형태로 드라이버가 무엇을 해야 할 지를 지시하게 된다. 디바이스 스택은, 디바이스에 따라, 도 19에 도시된 것 보다 계층이 적거나 많을 수 있다. 상기 디바이스 오브젝트는, 소프트웨어가 하드웨어를 관리하기 위해 시스템이 생성한 데이터 스트럭처라고 할 수 있다.
하나의 디바이스 오브젝트는 I/O REQUEST를 처리하기 위한 논리적, 가상 혹은 물리적인 디바이스를 의미하며, 물리적인 디바이스 하나를 위해, 많은 디바이스 오브젝트가 존재할 수 있다. 디바이스 스택에서 가장 낮은 레벨의 디바이스 오브젝트는 PDO(Physical Device Object)라고 하며, 디바이스 스택에서 중간 계층 레벨에 존재하는 디바이스 오브젝트는 FDO(Functional Device Object)라고 한다.
FDO의 위와 아래에는 하나 이상의 FiDO(Filter Device Object)가 위치할 수 있고, FDO 위에 위치한 Filter Device Object는 Upper filter 1901라고 하고, FDO와 PDO 사이에 위치한 Filter Device Object는 Lower filter 1903라고 하고, 상기 Upper filter 1901와 Lower filter 1903사이에는 Function driver 1902가 위치하고, 상기 Lower filter 1903아래에는 Bus driver 1904가 위치할 수 있다. 상기 Filter Driver를 이용하여 물리 Device를 에뮬레이트함으로써 가상 디바이스 드라이버를 생성할 수 있다.
본 개시의 다양한 실시 예에 대해 구체적으로 설명하였으나, 본 개시의 다양한 실시 예의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하므로, 본 개시의 다양한 실시 예의 범위는 설명된 실시 예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구의 범위뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
200: 클라이언트 전자 디바이스 201: 사용자 인터페이스
202: 디바이스 매니저 203: 커넥션 매니저
204: 가상 버스 드라이버 205: 가상 디바이스 드라이버
206: 어플리케이션 220: 호스트 전자 디바이스
221: 사용자 인터페이스 222: 디바이스 매니저
223: 커넥션 매니저 224: 버스 드라이버
225: 가상 디바이스 드라이버 설정 정보

Claims (21)

  1. 클라이언트 전자 디바이스의 동작 방법에 있어서,
    호스트 전자 디바이스의 실제 디바이스 드라이버에 대응되는 가상 디바이스 드라이버를, 상기 클라이언트 전자 디바이스 내에 생성하는 동작;
    상기 호스트 전자 디바이스에서 지정하는 제1통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작; 및
    상기 호스트 전자 디바이스에서 지정하는 제2 통신 방식으로 변경 후, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 포함하는 방법.
  2. 제1항에 있어서,
    상기 생성하는 동작은,
    상기 클라이언트 전자 디바이스의 아이디를, 상기 호스트 전자 디바이스로 전송하는 동작; 및
    상기 클라이언트 전자 디바이스의 아이디에 기반하여, 상기 호스트 전자 디바이스에서 제공하는 실제 디바이스 드라이버의 정보, 또는 가상 디바이스 드라이버를 다운로드 받아, 상기 클라이언트 전자 디바이스 내에 가상 디바이스 드라이버를 생성하는 동작을 포함하는 방법.
  3. 제1항에 있어서,
    상기 공유하는 동작은,
    상기 가상 디바이스 드라이버의 아이디를 상기 호스트 전자 디바이스로 전송하는 동작; 및
    상기 가상 디바이스 드라이버의 아이디에 기반하여, 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 포함하는 방법.
  4. 제 3항에 있어서,
    상기 가상 디바이스 드라이버의 아이디는, 상기 클라이언트 전자 디바이스의 운영 체제에서 실행하는 가상 디바이스 드라이버의 아이디인 방법.
  5. 제1항에 있어서,
    상기 공유하는 동작은,
    상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디를 상기 호스트 전자 디바이스로 전송하는 동작; 및
    상기 어플리케이션의 아이디에 기반하여, 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 포함하는 방법.
  6. 제 5항에 있어서,
    상기 어플리케이션의 아이디는, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 이름, UUID(Universally Unique Identifier), 또는 시리얼 넘버 중 적어도 하나에 기반하여 생성되는 방법.
  7. 제 1항에 있어서,
    상기 통신 방식은, 상기 클라이언트 전자 디바이스의 가상 디바이스 드라이버와, 상기 호스트 전자 디바이스의 실제 디바이스 드라이버 간의 데이터 통신 프로토콜인 방법.
  8. 제 7항에 있어서,
    상기 데이터 통신 프로토콜은, 상기 가상 디바이스 드라이버의 아이디, 또는 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디에 기반하여, 상기 호스트 전자 디바이스 내에 설정된 프로토콜 종류 정보, 샘플링 레이트 정보, 프레임 레이트 정보, 또는 해상도 정보 중 적어도 하나를 포함하는 방법.
  9. 제 1항에 있어서,
    상기 클라이언트 전자 디바이스가, 상기 호스트 전자 디바이스와 공유하는 리소스를, 적어도 하나 이상의 다른 클라이언트 전자 디바이스로 전달하여 공유하는 동작을 더 포함하는 방법.
  10. 제 9항에 있어서,
    상기 클라이언트 전자 디바이스가, 상기 호스트 전자 디바이스와의 리소스 공유에 실패하면, 실패 통지 메시지를 생성하여, 상기 적어도 하나 이상의 다른 클라이언트 전자 디바이스로 통지하는 동작을 더 포함하는 방법.
  11. 클라이언트 전자 디바이스에 있어서,
    호스트 전자 디바이스와 통신하는 통신 모듈; 및
    상기 통신 모듈을 제어하는 프로세서를 포함하되,
    상기 프로세서는,
    상기 호스트 전자 디바이스의 실제 디바이스 드라이버에 대응되는 가사 디바이스 드라이버를, 상기 클라이언트 전자 디바이스 내에 생성하고,
    상기 호스트 전자 디바이스에서 지정하는 제1통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하고,
    상기 호스트 전자 디바이스에서 지정하는 제2통신 방식으로 변경 후, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 클라이언트 전자 디바이스.
  12. 제11항에 있어서,
    상기 프로세서는,
    상기 통신 모듈을 제어하여, 상기 클라이언트 전자 디바이스의 아이디를, 상기 호스트 전자 디바이스로 전송하고,
    상기 클라이언트 전자 디바이스의 아이디에 기반하여, 상기 호스트 전자 디바이스에서 제공하는 실제 디바이스 드라이버의 정보, 또는 가상 디바이스 드라이버를 다운로드 받아, 상기 클라이언트 전자 디바이스 내에 가상 디바이스 드라이버를 생성하는 클라이언트 전자 디바이스.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 통신 모듈을 제어하여, 상기 가상 디바이스 드라이버의 아이디를 상기 호스트 전자 디바이스로 전송하고,
    상기 가상 디바이스 드라이버의 아이디에 기반하여, 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 클라이언트 전자 디바이스.
  14. 제 13항에 있어서,
    상기 가상 디바이스 드라이버의 아이디는, 상기 클라이언트 전자 디바이스의 운영 체제에서 실행하는 가상 디바이스 드라이버의 아이디인 클라이언트 전자 디바이스.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 통신 모듈을 제어하여, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디를 상기 호스트 전자 디바이스로 전송하고,
    상기 어플리케이션의 아이디에 기반하여, 상기 호스트 전자 디바이스에서 지정하는 통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 클라이언트 전자 디바이스.
  16. 제 15항에 있어서,
    상기 어플리케이션의 아이디는, 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 이름, UUID(Universally Unique Identifier), 또는 시리얼 넘버 중 적어도 하나에 기반하여 생성되는 클라이언트 전자 디바이스.
  17. 제 11항에 있어서,
    상기 통신 방식은, 상기 클라이언트 전자 디바이스의 가상 디바이스 드라이버와, 상기 호스트 전자 디바이스의 실제 디바이스 드라이버 간의 데이터 통신 프로토콜인 클라이언트 전자 디바이스.
  18. 제 17항에 있어서,
    상기 데이터 통신 프로토콜은, 상기 가상 디바이스 드라이버의 아이디, 또는 상기 가상 디바이스 드라이버를 사용하는 어플리케이션의 아이디에 기반하여, 상기 호스트 전자 디바이스 내에 설정된 프로토콜 종류 정보, 샘플링 레이트 정보, 프레임 레이트 정보, 또는 해상도 정보 중 적어도 하나를 포함하는 클라이언트 전자 디바이스.
  19. 제 11항에 있어서,
    상기 프로세서는, 상기 통신 모듈을 제어하여, 상기 클라이언트 전자 디바이스가, 상기 호스트 전자 디바이스와 공유하는 리소스를, 적어도 하나 이상의 다른 클라이언트 전자 디바이스로 전달하여 공유하는 클라이언트 전자 디바이스.
  20. 제 19항에 있어서,
    상기 프로세서는, 상기 통신 모듈을 제어하여, 상기 클라이언트 전자 디바이스가, 상기 호스트 전자 디바이스와의 리소스 공유에 실패하면, 실패 통지 메시지를 생성하여, 상기 적어도 하나 이상의 다른 클라이언트 전자 디바이스로 통지하는 클라이언트 전자 디바이스.
  21. 클라이언트 전자 디바이스가, 호스트 전자 디바이스에서 제공하는 가상 디바이스 드라이버를 다운로드 받아, 상기 클라이언트 전자 디바이스 내에 생성하는 동작; 및 상기 호스트 전자 디바이스에서 지정하는 제1통신 방식으로, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작; 및 상기 호스트 전자 디바이스에서 지정하는 제2통신 방식으로 변경 후, 상기 가상 디바이스 드라이버를 이용하여, 상기 호스트 전자 디바이스의 리소스를 공유하는 동작을 포함하는 방법을 수행하기 위한 프로그램이 저장된 컴퓨터 판독 가능 저장매체.
KR1020140191880A 2014-12-29 2014-12-29 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스 KR101996896B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020140191880A KR101996896B1 (ko) 2014-12-29 2014-12-29 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스
US14/962,292 US9798568B2 (en) 2014-12-29 2015-12-08 Method for sharing resource using a virtual device driver and electronic device thereof
CN201510900696.8A CN105743964B (zh) 2014-12-29 2015-12-09 用于使用虚拟装置驱动器共享资源的方法及其电子装置
EP15202367.7A EP3040859B1 (en) 2014-12-29 2015-12-23 Method for sharing resource using a virtual device driver and electronic device thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140191880A KR101996896B1 (ko) 2014-12-29 2014-12-29 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스

Publications (2)

Publication Number Publication Date
KR20160080239A true KR20160080239A (ko) 2016-07-07
KR101996896B1 KR101996896B1 (ko) 2019-07-05

Family

ID=55085474

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140191880A KR101996896B1 (ko) 2014-12-29 2014-12-29 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스

Country Status (4)

Country Link
US (1) US9798568B2 (ko)
EP (1) EP3040859B1 (ko)
KR (1) KR101996896B1 (ko)
CN (1) CN105743964B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190087169A (ko) 2018-01-16 2019-07-24 부산대학교 산학협력단 사용자 참여형 포그 컴퓨팅 환경에서 사용자 인센티브 제공을 위한 장치 및 방법

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10728054B2 (en) 2015-11-04 2020-07-28 Futurewei Technologies, Inc. System and method for VNF termination management
CN107613020B (zh) * 2017-10-16 2020-04-24 北京东土科技股份有限公司 一种设备管理方法及装置
US10572246B2 (en) 2018-04-27 2020-02-25 Ati Technologies Ulc Live update of a kernel device module
CN114095487B (zh) * 2020-07-30 2024-03-19 中移(苏州)软件技术有限公司 一种远程任务执行方法、装置及存储介质
CA3096312C (en) 2020-10-19 2021-12-28 Light Wave Technology Inc. System for tracking a user during a videotelephony session and method ofuse thereof
CN114785775B (zh) * 2022-03-24 2023-11-24 广东悦伍纪网络技术有限公司 一种可实现与真机驱动对接的云手机及其驱动对接方法
CN114866542B (zh) * 2022-04-20 2023-08-18 广东悦伍纪网络技术有限公司 一种在云手机上实现真机模拟的系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060056446A1 (en) * 2004-09-14 2006-03-16 Samsung Electronics Co., Ltd. Communication adapter switching method and apparatus
US20070061477A1 (en) * 2005-09-09 2007-03-15 Microsoft Corporation Plug And Play Device Redirection For Remote Systems
US20140380504A1 (en) * 1996-03-19 2014-12-25 Iplearn, Llc Learning method and system that restricts entertainment

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330702A (ja) 1999-05-19 2000-11-30 Nec Corp 入力装置共有システム
US6711629B1 (en) 1999-10-18 2004-03-23 Fisher-Rosemount Systems, Inc. Transparent support of remote I/O in a process control system
KR20010110835A (ko) 2000-06-08 2001-12-15 김월영 휴대용 이동식 컴퓨터단말기의 작동방법
JP2002163226A (ja) 2000-11-29 2002-06-07 Toshiba Corp 入力装置共有化システム、同システムに用いられる入力装置及び入力装置共有化方法
US20050015430A1 (en) 2003-06-25 2005-01-20 Rothman Michael A. OS agnostic resource sharing across multiple computing platforms
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
KR100605930B1 (ko) 2003-11-29 2006-08-01 삼성전자주식회사 이동통신 단말기를 이용한 입력장치 및 방법
JP4097623B2 (ja) * 2004-04-26 2008-06-11 システムニーズ株式会社 本人認証インフラストラクチャシステム
US20050257218A1 (en) * 2004-05-11 2005-11-17 Hong-Jih Lin Method for automatically downloading and installing driver of peripheral
KR100601684B1 (ko) * 2004-06-03 2006-07-14 삼성전자주식회사 외부 저장장치, 화상획득장치, 및 드라이버를 구동하는방법 및 시스템
KR100667783B1 (ko) * 2004-09-14 2007-01-11 삼성전자주식회사 통신 어댑터 스위칭 방법 및 장치
KR20060033990A (ko) 2004-10-18 2006-04-21 주식회사 팬택 네트워크 연결된 타 무선 단말기와 입력 장치를 공유하는무선 단말기 시스템 및 방법
JP4741292B2 (ja) 2005-06-09 2011-08-03 株式会社日立製作所 デバイス管理システム
US20070240149A1 (en) * 2006-03-29 2007-10-11 Lenovo (Singapore) Pte. Ltd. System and method for device driver updates in hypervisor-operated computer system
CN101052050A (zh) * 2006-04-06 2007-10-10 英业达股份有限公司 实现计算机设备共享的系统及其方法
CN101071387B (zh) * 2006-09-08 2010-05-12 华南理工大学 一种基于虚拟机的驱动程序加固方法
KR101287839B1 (ko) 2007-01-31 2013-07-18 엘지전자 주식회사 공유입력장치
CN100508596C (zh) * 2007-04-11 2009-07-01 北京中星微电子有限公司 一种访问视频设备的方法和系统
US8001553B2 (en) * 2007-06-25 2011-08-16 Microsoft Corporation Aggregate computer system via coupling of computing machines
JP5477707B2 (ja) 2007-08-23 2014-04-23 日本電気株式会社 I/oシステムおよびi/o制御方法
WO2009070072A1 (en) * 2007-11-28 2009-06-04 Telefonaktiebolaget Lm Ericsson (Publ) Connection failure notification method and apparatus
JP2009187353A (ja) 2008-02-07 2009-08-20 Sharp Corp 入力装置
US8572631B2 (en) 2008-06-25 2013-10-29 Gvbb Holdings S.A.R.L. Distributed control of devices using discrete device interfaces over single shared input/output
US20100161871A1 (en) 2008-12-22 2010-06-24 Musa Ibrahim Kakish Computer
CN101795220B (zh) * 2009-02-03 2012-07-18 创惟科技股份有限公司 具备通用序列总线功能的通讯系统及其方法
CN101510236B (zh) * 2009-03-11 2011-04-06 上海坦瑞信息技术有限公司 基于领域操作平台的即插即用系统
US20100293559A1 (en) 2009-05-12 2010-11-18 Samsung Electronics Co., Ltd. Sharing input/output (i/o) resources across multiple computing systems and/or environments
KR20100128630A (ko) 2009-05-28 2010-12-08 주식회사 케이티 휴대용 기기의 입력 수단으로 사용되는 이동 단말 및 그 이동 단말을 이용한 입력 방법
JP5321311B2 (ja) * 2009-07-17 2013-10-23 セイコーエプソン株式会社 通信制御装置
JP5402392B2 (ja) * 2009-08-19 2014-01-29 株式会社リコー プリンタネットワークシステム、サーバ装置、プリント方法、プログラムおよび記録媒体
CN102597974B (zh) * 2009-11-04 2016-02-10 佳能成像系统株式会社 装置控制设备、客户端设备、装置控制方法和装置控制系统
JP2012048297A (ja) 2010-08-24 2012-03-08 Nec Personal Computers Ltd ディスプレイ・入力インタフェース共有システム、情報処理装置およびプログラム
US9331963B2 (en) * 2010-09-24 2016-05-03 Oracle International Corporation Wireless host I/O using virtualized I/O controllers
CN102469131A (zh) * 2010-11-15 2012-05-23 中兴通讯股份有限公司 基于虚拟化技术的终端、系统及业务提供方法
KR101366993B1 (ko) * 2011-07-01 2014-02-24 알서포트 주식회사 원격 디바이스 드라이버 제공 시스템 및 원격 디바이스 드라이버 제공 방법
US10976810B2 (en) 2011-07-11 2021-04-13 Texas Instruments Incorporated Sharing input and output devices in networked systems
EP2607982B1 (en) 2011-12-22 2018-02-28 BlackBerry Limited Method for changing device modes of an electronic device connected to a docking station and an electronic device configured for same
CN102915113B (zh) * 2012-08-24 2016-01-27 深圳创维-Rgb电子有限公司 一种数据输入支持方法及装置
IN2013CH05264A (ko) 2013-05-01 2015-05-29 Wyse Technology Llc

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140380504A1 (en) * 1996-03-19 2014-12-25 Iplearn, Llc Learning method and system that restricts entertainment
US20060056446A1 (en) * 2004-09-14 2006-03-16 Samsung Electronics Co., Ltd. Communication adapter switching method and apparatus
US20070061477A1 (en) * 2005-09-09 2007-03-15 Microsoft Corporation Plug And Play Device Redirection For Remote Systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190087169A (ko) 2018-01-16 2019-07-24 부산대학교 산학협력단 사용자 참여형 포그 컴퓨팅 환경에서 사용자 인센티브 제공을 위한 장치 및 방법

Also Published As

Publication number Publication date
EP3040859A1 (en) 2016-07-06
EP3040859B1 (en) 2018-05-09
CN105743964A (zh) 2016-07-06
CN105743964B (zh) 2020-09-01
US9798568B2 (en) 2017-10-24
US20160188358A1 (en) 2016-06-30
KR101996896B1 (ko) 2019-07-05

Similar Documents

Publication Publication Date Title
KR101996896B1 (ko) 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스
EP3410759B1 (en) Method and access point for accessing network by internet-of-things device
EP3425566B1 (en) Electronic device and method of registering personal cloud apparatus in user portal server thereof
JP6110858B2 (ja) ドッキングシステム及び汎用ネットワーク装置ドライバによる無線lan接続のハンドオーバ
US20140053246A1 (en) Self-configuring wireless network
JP2011100270A (ja) 画面共有システム及び画面共有サーバ
JP2007538419A (ja) 無線技術によるスイッチレスkvmネットワーク
US11817971B2 (en) System and method for VNF termination management
US20130201519A1 (en) Bridging Non-Network Interfaces and Network Interfaces
TW201434341A (zh) 自行配置無線網路的冗餘控制
KR101844012B1 (ko) 스마트 기기를 이용한 사물인터넷 디바이스의 통신 설정 방법
US10419433B2 (en) Network credentials for wirelessly accessing a LAN via an alternate communications network
KR20210064147A (ko) 홈 네트워크 서비스를 제공하기 위한 장치 및 그 방법
JP2009171565A (ja) 通信システムおよび通信方法
JP7459663B2 (ja) 端末装置のためのコンピュータプログラムと通信装置
EP2854027B1 (en) Method for downloading application program, user equipment and application server
WO2015139401A1 (zh) 无线网络的建立方法、系统及无线路由装置
KR20170034219A (ko) 보안 환경에서의 솔루션 서버를 통한 서비스 제공 방법, 이를 수행하기 위한 장치 및 시스템
JP2009098977A (ja) 周辺機器接続システム
JP2009187107A (ja) アクセス制御システム、その方法およびアクセス制御プログラム
JP7146124B1 (ja) 端末装置、方法およびプログラム
US11711239B2 (en) Communication system, VPN termination device, and storage medium
KR20140094290A (ko) 소프트웨어 기반의 게이트웨이를 이용하는 휴대 전화의 가상화 시스템 및 휴대 전화의 가상화 방법
KR20150117310A (ko) 펌웨어 업데이트 시스템, 어플리케이션 서버, 통신단말기, 펌웨어 및 데이터 제어방법, 및 데이터 업로드 및 펌웨어 업데이트에 대한 자원할당방법
JP2021190863A (ja) 端末装置のためのコンピュータプログラムと通信装置

Legal Events

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