KR20180033569A - 멀티-세션 플랫폼상에 디바이스 관리 서비스들 가상화 - Google Patents

멀티-세션 플랫폼상에 디바이스 관리 서비스들 가상화 Download PDF

Info

Publication number
KR20180033569A
KR20180033569A KR1020187005567A KR20187005567A KR20180033569A KR 20180033569 A KR20180033569 A KR 20180033569A KR 1020187005567 A KR1020187005567 A KR 1020187005567A KR 20187005567 A KR20187005567 A KR 20187005567A KR 20180033569 A KR20180033569 A KR 20180033569A
Authority
KR
South Korea
Prior art keywords
session
global
location
database
virtual
Prior art date
Application number
KR1020187005567A
Other languages
English (en)
Other versions
KR102031280B1 (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 KR20180033569A publication Critical patent/KR20180033569A/ko
Application granted granted Critical
Publication of KR102031280B1 publication Critical patent/KR102031280B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

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 And Data Communications (AREA)

Abstract

방법들, 시스템들, 컴퓨터 판독가능한 매체들, 및 장치들은 특정 디바이스 및 디바이스 관리 서비스가 단일 세션/유저 환경에서 사용될 것이라는 가정하에서 또는 가정으로 디자인된 특정 디바이스 관리에 전용인 디바이스 관리 서비스들 (예를 들어, 디바이스 드라이버들)의 가상화를 제공할 수 있고, 따라서 디바이스 관리 서비스들의 가상 인스턴스들은 멀티-세션 환경에서 사용될 수 있다. 더구나, 세션 경계들이 유지되고 글로벌/공유 자원들 이 세션에 의해 부적절하게 변경되지 않는 것을 보장하기 위해 글로벌 데이터베이스 리다이렉션, 오브젝트 이름 번역, 및 파일 시스템 번역을 수행하도록 멀티-세션 환경에 각각의 세션에 대하여 리다이렉션 및/또는 가상화 계층이 생성될 수 있다. 일 예로서, 리다이렉션 / 가상화 계층은 세션에 특정된 자원의 가상 인스턴스를 액세스하기 위해 글로벌 자원을 향하는 세션과 관련된 통신을 리다이렉션할 수 있다.

Description

멀티-세션 플랫폼상에 디바이스 관리 서비스들 가상화
관련 출원들에 대한 상호-참조
본 출원은 “Virtualizing Device Management Services on a Multi-Session Platform” 제목으로 2015년 8월 3일에 출원된 U.S. 정규출원 일련 번호 14/816,800에 대한 우선권을 주장한다. 상기 언급된 출원은 다목적을 위하여 그 전체가 참조로서 본 출원에 통합된다.
분야
본 개시의 측면들은 컴퓨터 하드웨어 및 소프트웨어에 관한 것이다. 특별히, 본 개시의 하나 이상의 측면들은 전반적으로 단일 세션 환경을 위해 디자인된 서비스들 (예를 들어, 디바이스 드라이버들)의 가상화 및 관리를 위한 컴퓨터 하드웨어 및 소프트웨어에 관한 것이며, 서비스들이 단일 운영 체제(operating system), 다수의 세션 환경들에서 사용될 수 있도록 하기 위한 디바이스 관리에 관한 것이다.
다수의 세션 환경들의 가상화의 출현에 따라, 가상 서비스 제공자들은 단일 워크스테이션 마인드세트(mindset)로 디자인된 디바이스 관리 서비스들 (예를 들어, 디바이스 드라이버들)를 동시에 작동하는 컴퓨팅 디바이스들을 위한 호환성 이슈들에 직면한다. 디바이스 관리 서비스들은 다양한 애플리케이션들에 대한 컴퓨팅 디바이스들' 액세스를 제어한다. 가상 환경에서 단일 운영 체제 서비스 다수의 세션들을 가짐으로써, 단일 운영 체제가 단일 세션을 서비스할 것을 가정하여 디자인된 컴퓨팅 디바이스들은, 다수의 세션들이 컴퓨팅 디바이스 또는 그것의 디바이스 관리 서비스들과 상호 작용하려고 시도할 때 작동하지 않을 수 있다. 단일 운영 체제, 멀티-세션 환경에서, 서버에 상주하는 디바이스 관리 서비스들은 컴퓨팅 디바이스를 특정 세션에서 제어 또는 관리하기 위해 컴퓨팅 디바이스를 액세스할 수 없을 수 있다. 더구나, 만약 디바이스 관리 서비스들이 이들 컴퓨팅 디바이스들을 액세스할 수 있다면, 각각의 세션이 다른 세션들에 대한 고려 없이 동일한 시스템 자원들에 기록 및 해당 시스템 자원들로부터 판독하기 때문에 디바이스 관리 서비스들의 사용은 상이한 세션들 간에 충돌들을 생성할 수 있고, 이는 컴퓨팅 디바이스들의 작동 중단으로 이어질 수 있고 및/또는 유저들에게 부정확한 출력들을 유발할 수 있다. 한편, 많은 경우들에서, 컴퓨팅 디바이스는 유저 컴퓨터에 대한 주변기기로서 연결된 USB기반의 디바이스들일 수 있고 (예를 들어, 스마트카드 및 스마트카드 리더기), 다른 경우들에서, 컴퓨팅 디바이스는 그것 자체의 디바이스 관리 서비스를 갖는 독립형 디바이스 예컨대 드로잉-인에이블드(drawing-enabled) 태블릿일 수 있다.
현재 "솔루션(solution)들”은 가상 아키텍처에 대한 비용이 많이 드는 변경들을 수반한다. 특별히, 가상 기계는 전체 운영 체제, 관련 데이터베이스들 (예를 들어, 레지스트리(registry), 및 서버 자원들 (예를 들어, 메모리)의 별개의 할당의 별개의 이미지를 갖는 각각의 가상 기계가 각각의 세션/유저에 대하여 생성된다. 그러나, 전체 운영 체제의 별개의 이미지를 포함하는 별개의 가상 기계를 생성하는 것은 광대한 양의 디스크 공간의 사용 및 훨씬 더 많은 유지보수 및 관리 비용으로 귀결된다.
이하는 본 출원에서 설명된 다양한 측면들의 간략화된 개요를 제공한다. 이 개요는 광범위한 개요가 아니고, 핵심 또는 중요한 엘리먼트들을 식별하거나 또는 상기 청구항들의 범위를 기술하도록 의도되지 않는다. 이하의 개요는 단지 이하에서 제공되는 보다 상세한 설명에 전조가 되는 도입부로서 간략화된 형태로 일부 개념들을 제공한다.
본 개시의 측면들은 특정 디바이스 및 상기 디바이스 관리 서비스가 단일 세션/유저 환경에서 사용될 것이라는 가정하에서 또는 가정으로 디자인된 특정 디바이스 관리에 전용인 디바이스 관리 서비스들 (예를 들어, 디바이스 드라이버들)의 가상화를 제공하기 위한 방법들, 컴퓨터 판독가능한 매체들, 소프트웨어 시스템들, 및 장치들을 개시함으로써 상기에서 설명된 하나 이상의 이슈들을 처리하고, 상기 디바이스 관리 서비스들의 가상 인스턴스들은 멀티-세션 환경에서 사용될 수 있다. 더구나, 세션 경계들이 유지되고 글로벌/공유 자원들 이 세션에 의해 부적절하게 변경되지 않는 것을 보장하기 위해 글로벌 데이터베이스 리다이렉션, 오브젝트 이름 번역, 및 파일 시스템 번역을 수행하도록 상기 멀티-세션 환경에 각각의 세션에 대하여 리다이렉션 및/또는 가상화 계층이 생성될 수 있다. 일 예로서, 상기 리다이렉션 / 가상화 계층은 상기 세션에 특정된 상기 자원의 가상 인스턴스를 액세스하기 위해 글로벌 자원에 대한 세션과 관련된 통신을 리다이렉션할 수 있다. 다른 예로서, 상기 리다이렉션 / 가상화 계층은 상기 글로벌 데이터베이스의 위치에 대응하는 세션-특정 데이터베이스의 위치로 글로벌 데이터베이스의 위치에 대한 세션과 관련된 통신을 리다이렉트할 수 있다. 또 다른 예로서, 상기 리다이렉션 / 가상화 계층은 상기 세션과 관련된 통신내 글로벌 오브젝트 이름들을 세션-특정 오브젝트 이름들로 대체할 수 있다(예를 들어, 상기 가상 인스턴스가 상기 세션에 특정되는 글로벌 오브젝트의 가상 인스턴스를 액세스하기 위해서).
일부 실시예들에서, 시스템은 제 1 컴퓨팅 디바이스 및 와이드 영역 네트워크를 통하여 상기 제 1 컴퓨팅 디바이스에 통신가능하게 결합된 제 2 컴퓨팅 디바이스를 포함할 수 있다. 상기 제 1 컴퓨팅 디바이스는 다수의 세션들을 포함하는 가상 환경을 제공하도록 구성될 수 있다. 각각의 세션은 상이한 유저에 특정되고 상기 제 1 컴퓨팅 디바이스에 의해 실행되는 애플리케이션의 적어도 하나의 가상 인스턴스를 포함한다. 상기 제 2 컴퓨팅 디바이스는 세션과 관련될 수 있고 상기 세션에 특정된 상기 애플리케이션의 가상 인스턴스와 상호작용하도록 구성될 수 있다. 상기 제 2 컴퓨팅 디바이스는 디바이스 관리 서비스에 의해 관리되도록 구성된 서비스 관리되는 디바이스에 통신가능하게 결합될 수 있다. 상기 세션은 상기 세션과 사용을 위한 상기 디바이스 관리 서비스의 가상 인스턴스 및 상기 세션과의 사용을 위한 리다이렉션 계층(redirection layer)를 포함할 수 있다. 상기 리다이렉션 계층은 상기 세션에 특정된 상기 애플리케이션의 가상 인스턴스와 상기 세션과 사용을 위한 상기 디바이스 관리 서비스의 가상 인스턴스 간에 통신을 인터셉트(intercept)하도록 구성될 수 있다.
일부 실시예들에서, 장치는 프로세서 및 명령들을 저장하는 컴퓨터 판독가능한 매체로서, 상기 프로세서에 의해 실행될 때, 상기 장치가 많은 단계들을 수행하도록 구성하는 상기 명령들을 저장하는, 상기 컴퓨터 판독가능한 매체를 포함할 수 있다. 예를 들어, 상기 장치는 각각의 세션이 상이한 유저에 특정되고 애플리케이션의 적어도 하나의 가상 인스턴스를 포함하는 다수의 세션들을 생성할 수 있다. 상기 장치는 상기 장치와 다른 유저 디바이스로부터 수신된 하나 이상의 유저 입력들에 기초하여 세션에 대한 상기 애플리케이션의 가상 인스턴스의 하나 이상의 기능들을 수행할 수 있다. 상기 장치는 상기 유저 디바이스가 디바이스 드라이버에 의해 관리되도록 구성된 주변 디바이스에 연결되는지 여부를 결정할 수 있다. 상기 장치는 상기 유저 디바이스가 상기 디바이스 드라이버에 의해 관리되도록 구성된 상기 주변 디바이스에 연결된다고 결정한 것에 응답하여, 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스 및 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스를 위한 리다이렉션 계층을 생성할 수 있다.
일부 실시예들에서, 방법은 컴퓨팅 디바이스에 의해, 각각의 세션이 상이한 유저에 특정되고 애플리케이션의 적어도 하나의 가상 인스턴스를 포함하는 다수의 세션들을 생성하는 단계를 포함할 수 있다. 더구나, 상기 컴퓨팅 디바이스는 상기 컴퓨팅 디바이스와 다른 유저 디바이스로부터 수신된 하나 이상의 유저 입력들에 기초하여 세션에 대한 상기 애플리케이션의 가상 인스턴스의 하나 이상의 기능들을 수행할 수 있다. 상기 컴퓨팅 디바이스는 상기 유저 디바이스가 디바이스 드라이버에 의해 관리되도록 구성된 주변 디바이스에 연결된다고 결정한 것에 응답하여, 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스 및 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스를 위한 리다이렉션 계층을 생성할 수 있다. 상기 컴퓨팅 디바이스는 상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스로 글로벌 자원에 대하여 의도되고 세션과 관련된 메시지들을 재라우팅할 수 있다(reroute).
많은 다른것들과 함께 이들 특징들은, 이하에서 더 상세하게 설명된다.
본 발명은 예제의 방식으로 예시되고 같은 도면 번호들이 유사한 엘리먼트들을 나타내는 첨부한 도면들에 제한되지 않는다:
도 1은 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따라 사용될 수 있는 예시적인 컴퓨터 시스템 아키텍처를 도시한다.
도 2는 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따라 사용될 수 있는 예시적인 원격-액세스 시스템 아키텍처를 도시한다.
도 3은 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따라 사용될 수 있는 예시적인 가상화된 (하이퍼바이저(hypervisor)) 시스템 아키텍처를 도시한다.
도 4는 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따른 멀티-세션 환경을 구현하기 위한 예시적인 시스템을 도시한다.
도 5는 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따른 멀티-세션 환경의 예시적인 세션 뷰를 도시한다.
도 6은 본 출원에 하나 이상의 예시적인 측면들에 따른 특정 서비스 관리되는 디바이스에 대한 세션 1 부분의 분해 조립도의 블럭 다이어그램 뷰를 도시한다.
도 7은 본 출원에서 설명되는 하나 이상의 예시적인 측면들에 따른 가상화된 디바이스 관리 서비스의 로딩(loading) 및 세션 스타트업의 예시적인 플로우를 도시한다.
도 8은 본 출원에서 설명되는 하나 이상의 예시적인 측면들에 따른 서비스 관리되는 디바이스로 애플리케이션 론칭(launching) 및 애플리케이션을 이용하는 예시적인 플로우를 도시한다.
이하에 보다 상세하게 설명되는 내용에 대한 전반적인 도입으로서, 본 출원에서 설명되는 측면들은 디바이스들 및 그것들의 관리 서비스들이 단일 유저 환경에서 사용될 것을 가정하여 또는 그 가정하에서 디자인된 디바이스들을 관리하는데 전용된 서비스들의 관리 및 가상화(virtualization)에 관한 것이다. 이들 서비스들을 가상화함으로써 그리고 이런 서비스들의 다수의 인스턴스들을 생성함으로써, 이런 디바이스들은 멀티-유저 환경내 그것의 가상화된 서비스들에 의해 사용되고 관리될 수 있다.
다양한 실시예들의 이하의 설명에서, 도면번호가 그것의 일부를 형성하는 상기에서 식별된 첨부 도면들에 제공되고, 본 출원에 설명된 측면들이 실행될 수 있는 다양한 실시예들의 예시의 방법으로 도시된다. 다른 실시예들이 이용될 수 있으며 구조적 및 기능적 변경들이 본 출원에 설명된 범위로부터 벗어나지 않고 이루어질 수 있다는 것이 이해될 것이다. 다양한 측면들은 다른 실시예들이 가능하고 다양한 방식들로 실행되거나 또는 수행되는 것이 가능하다.
본 출원에서 사용되는 어구 및 용어는 설명을 목적을 위한 것이고, 한정하는 것으로 간주되지 않아야 하는 것이 이해될 것이다. 오히려, 본 출원에서 사용되는 어구들 및 용어들은 그것들의 가장 넓은 이해 및 의미가 주어질 것이다. "포함하는(including)", "포함하는(comprising)" 의 사용 및 그것의 변형들은 그 후에 열거되는 아이템들 및 그것의 등가물들 뿐만 아니라 추가의 아이템들 및 그것의 등가물들을 아우르는 것을 의미한다. 용어들 “마운트된(mounted),” “연결된(connected),” “결합된(coupled),” “위치된(positioned),” “맞물린(engaged)” 및 유사한 용어들의 사용은, 직접 및 간접 마운팅, 연결, 커플링, 측위 및 맞물림을 포함하는 것을 의미한다.
컴퓨팅 아키텍처(Computing Architecture)
컴퓨터 소프트웨어, 하드웨어, 및 네트워크들은 그 중에서도 독립형, 네트워크화된, 원격-액세스 (원격 데스크탑 라고도 알려진), 가상화된, 및/또는 클라우드기반의 환경들을 포함하는 여러 가지 상이한 시스템 환경들에서 이용될 수 있다. 도 1 은 독립형 (standalone) 및/또는 네트워크화된 환경에 본 출원에서 설명되는 하나 이상의 예시적인 측면들을 구현하기 위해 사용될 수 있는 시스템 아키텍처 및 데이터 프로세싱 디바이스의 일 예제를 예시한다. 다양한 네트워크 노드들 (103, 105, 107, 및 109)은 와이드 영역 네트워크 (WAN : wide area network) (101), 예컨대 인터넷을 통하여 상호연결될 수 있다. 개인 인트라넷들, 회사 네트워크들, LAN들, 메트로폴리탄 영역 네트워크들 (MAN : metropolitan area networks) 무선 네트워크들, 퍼스널 네트워크들 (PAN : personal networks), 및 유사한 것을 포함하는 다른 네트워크들이 또한 또는 대안적으로 사용될 수 있다. 네트워크 (101)는 예시 목적을 위한 것이고 더 적은 또는 추가의 컴퓨터 네트워크들로 대체될 수 있다. 로컬 영역 네트워크 (LAN : local area network)는 하나 이상의 임의의 알려진 LAN 토폴로지를 가질 수 있고 하나 이상의 여러 가지 상이한 프로토콜들, 예컨대 이더넷을 사용할 수 있다. 디바이스들 (103,105,107,109) 및 다른 디바이스들 (미도시)은 이중와선(twisted pair wire)들, 동축 케이블, 광 파이버들, 라디오 파들 또는 다른 통신 매체를 통하여 하나 이상의 네트워크들에 연결될 수 있다.
본 출원에서 사용되고 도면들에서 설명되는 용어 “네트워크(network)”는 원격 스토리지 디바이스들이 하나 이상의 통신 경로들을 통하여 함께 결합된 시스템들, 또한 때때로, 스토리지 성능을 갖는 그런 시스템들에 결합될 수 있는 독립형 디바이스들을 지칭한다. 결론적으로, 용어 “네트워크”는 “물리적 네트워크(physical network)” 또한 단일 엔티티에 기인하는?모든 물리적 네트워크들에 걸쳐 상주하는- 데이터로 이루어진 “컨텐츠 네트워크(content network)”를 포함한다.
컴포넌트들은 데이터 서버 (103), 웹 서버 (105), 및 클라이언트 컴퓨터들 (107,109)을 포함할 수 있다. 데이터 서버 (103)는 본 출원에서 설명하는 하나 이상의 예시적인 측면들을 수행하기 위한 데이터베이스들 및 제어 소프트웨어의 전체 액세스, 제어 및 운영(administration)을 제공한다. 데이터 서버 (103)는 유저들이 상호 작용하고 요청된 데이터를 획득하는 웹 서버 (105)에 연결될 수 있다. 대안적으로, 데이터 서버 (103)는 웹 서버 그 자체로서 역할을 할 수 있고 인터넷에 직접 연결될 수 있다. 데이터 서버 (103)는 직접 또는 간접 연결을 통하여, 또는 일부 다른 네트워크를 통하여 네트워크 (101) (예를 들어, 인터넷)을 통하여 웹 서버 (105)에 연결될 수 있다. 유저들은 원격 컴퓨터들 (107,109)을 이용하여, 예를 들어, 웹 서버 (105)에 의해 호스트되는 하나 이상의 외부에 노출된 웹 사이트들을 통하여 데이터 서버 (103)에 연결하는 웹 브라우저를 이용하여 데이터 서버 (103)와 상호 작용할 수 있다. 클라이언트 컴퓨터들 (107,109)은 그 내부에 저장된 데이터를 액세스하기 위해 데이터 서버 (103)와 연합하여 사용 될 수 있거나, 또는 다른 목적을 위하여 사용될 수 있다. 예를 들어, 클라이언트 디바이스 (107)로부터 유저는 관련 기술 분야에서 알려진 인터넷 브라우저를 이용하여, 또는 컴퓨터 네트워크 (예컨대 인터넷) 상에서 웹 서버 (105) 및/또는 데이터 서버 (103)와 통신하는 소프트웨어 애플리케이션을 실행함으로써 웹 서버 (105)를 액세스할 수 있다.
서버들 및 애플리케이션들은 동일한 물리적 기계들 상에서 결합될 수 있고, 별개의 가상 또는 로직 어드레스들을 보유할 수 있거나, 또는 별개의 물리적 기계들 위에 상주할 수 있다. 도 1은 사용될 수 있는 네트워크 아키텍쳐의 단지 일 예제를 예시하고, 관련 기술 분야에 통상의 기술자는 사용되는 특정 네트워크 아키텍쳐 및 데이터 프로세싱 디바이스들이 바뀔 수 있고, 추가로 본 출원에서 설명되는 그것들이 제공하는 기능에 보조적인 것을 이해할 것이다. 예를 들어, 웹 서버 (105) 및 데이터 서버 (103)에 의해 제공되는 서비스들은 단일 서버 상에서 결합될 수 있다.
각각의 컴포넌트 (103,105,107,109)는 알려진 컴퓨터, 서버, 또는 데이터 프로세싱 디바이스의 임의의 유형일 수 있다. 데이터 서버 (103)는, 예를 들어, 데이터 서버 (103)의 전체 동작을 제어하는 프로세서 (111)를 포함할 수 있다. 데이터 서버 (103)는 랜덤 액세스 메모리 (RAM) (113), 판독 전용 메모리 (ROM) (115), 네트워크 인터페이스 (117), 입력/출력 인터페이스들 (119) (예를 들어, 키보드, 마우스, 디스플레이, 프린터, 등), 및 메모리 (121)를 더 포함할 수 있다. 입력/출력 (I/O) (119)는 데이터 또는 파일들을 판독, 기록, 디스플레이, 및/또는 프린팅하기 위한 여러 가지 인터페이스 유닛들 및 드라이브들을 포함할 수 있다. 메모리 (121)는 데이터 프로세싱 디바이스 (103)의 전체 동작을 제어하기 위한 운영 체제 소프트웨어 (123), 본 출원에서 설명된 측면들을 수행하기 위해 데이터 서버 (103)에 지시하기 위한 제어 로직(control logic) (125), 및 본 출원에서 설명된 측면들과 함께 사용될 수 있거나 또는 함께 사용될 수 없을 수 있는 보조, 지원 및/또는 다른 기능을 제공하는 다른 애플리케이션 소프트웨어 (127)를 추가로 저장할 수 있다. 제어 로직은 또한 데이터 서버 소프트웨어 (125)로서 본 출원에서 지칭될 수 있다. 데이터 서버 소프트웨어의 기능은 제어 로직으로 코딩된 규칙들에 기초하여 자동으로 이루어지고, 시스템으로의 입력을 제공하는 유저에 의해 수동으로 이루어진, 및/또는 유저 입력에 기반된 자동 프로세싱의 조합(예를 들어, 쿼리들, 데이터 업데이트들, 등)으로 이루어진 동작들 또는 결정들을 지칭할 수 있다.
메모리 (121)는 제 1 데이터베이스 (131) 및 제 2 데이터베이스 (129)을 포함하여 본 출원에서 설명된 하나 이상의 측면들의 성능들에서 사용되는 데이터를 또한 저장할 수 있다. 일부 실시예들에서, 제 1 데이터베이스는 제 2 데이터베이스 (예를 들어, 별개의 테이블, 레포트(report), 등으로서)를 포함할 수 있다. 즉, 정보는 단일 데이터베이스에 저장될 수 있거나, 또는 시스템 디자인에 의존하여 상이한 로직상의, 가상의, 또는 물리적 데이터베이스들로 분리될 수 있다. 디바이스들 (105,107,109)은 디바이스 (103)에 관하여 설명된 것과 유사한 또는 상이한 아키텍처를 가질 수 있다. 관련 기술 분야에 통상의 기술자들은 본 출원에서 설명된 데이터 프로세싱 디바이스 (103) (또는 디바이스 (105,107,109))의 기능이 다수의 데이터 프로세싱 디바이스들에 걸쳐 확산될 수 있고, 예를 들어, 다수의 컴퓨터들에 걸쳐 프로세싱 로드(processing load)를 분배할 수 있고, 지리적 위치, 유저 액세스 레벨, QoS(quality of service), 등에 기초하여 트랜잭션들을 분리할 수 있다는 것을 인식할 것이다.
하나 이상의 측면들은 본 출원에서 설명되는 하나 이상의 컴퓨터들 또는 다른 디바이스들에 의해 실행되는 하나 이상의 프로그램 모듈들과 같은 컴퓨터-사용 가능한 또는 판독가능한 데이터 및/또는 컴퓨터-실행 가능한 명령들로 구체화될 수 있다. 일반적으로, 프로그램 모듈들은 컴퓨터 또는 다른 디바이스내 프로세서에 의해 실행될 때 특정한 태스크들을 수행하거나 또는 특정한 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 오브젝트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 모듈들은 실행을 위해 나중에 컴파일되는 소스 코드 프로그래밍 언어로 기록될 수 있거나, 또는 스크립팅(scripting) 언어 예컨대 (한정되는 것은 아니지만) 하이퍼텍스트 마크업 언어 (HTML : HyperText Markup Language) 또는 확장 마크업 언어 (XML : Extensible Markup Language)로 기록될 수 있다. 컴퓨터 실행 가능한 명령들은 컴퓨터 판독가능한 매체 예컨대 비휘발성 스토리지 디바이스 위에 저장될 수 있다. 하드 디스크들, CD-ROM들, 광 스토리지 디바이스들, 자기 스토리지 디바이스들 및/또는 그것들의 임의의 조합을 포함하는 임의의 적절한 컴퓨터-판독 가능한 스토리지 매체가 이용될 수 있다. 추가하여, 본 출원에서 설명되는 데이터 또는 이벤트들을 나타내는 다양한 송신 (비-스토리지) 매체들은 신호-전도 매체들 예컨대 금속 와이어들, 광 파이버들, 및/또는 무선 송신 매체들 (예를 들어, 공기 및/또는 스페이스(space))을 통하여 이동하는 전자기파들의 형태로 소스와 목적지 사이에서 전송될 수 있다. 본 출원에서 설명된 다양한 측면들은 방법, 데이터 프로세싱 시스템, 또는 컴퓨터 프로그램 제품으로 구체화될 수 있다. 따라서, 다양한 기능들은 전체로 또는 부분적으로 소프트웨어, 펌웨어 및/또는 하드웨어 또는 하드웨어 등가물들 예컨대 집적 회로들, 필드 프로그램 가능한 게이트 어레이들 (FPGA : field programmable gate arrays), 및 유사한 것으로 구체화될 수 있다. 특정 데이터 구조들이 본 출원에서 설명된 하나 이상의 측면들을 보다 효율적으로 구현하기 위해 사용될 수 있고, 이런 데이터 구조들은 본 출원에서 설명된 컴퓨터 실행 가능한 명령들 및 컴퓨터-사용 가능한 데이터의 범위내로 고려된다.
추가로 도 2를 참조하여, 본 출원에서 설명된 하나 이상의 측면들은 원격-액세스 환경(remote-access environment)에서 구현될 수 있다. 도 2는 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따라 사용될 수 있는 예시적인 컴퓨팅 환경 (200)에서의 포괄적인(generic) 컴퓨팅 디바이스 (201)를 포함하는 예제 시스템 아키텍처를 도시한다. 포괄 컴퓨팅 디바이스 (201)는 클라이언트 액세스 디바이스들에게 가상 기계(virtual machine)들을 제공하도록 구성된 단일-서버 또는 멀티-서버 데스크탑 가상화 시스템 (예를 들어, 원격 액세스 또는 클라우드 시스템)내 서버 (206a)로서 사용될 수 있다. 포괄 컴퓨팅 디바이스 (201)는 서버 및 RAM (205), ROM (207), I/O 모듈 (209), 및 메모리 (215)를 포함하는 그것의 관련 컴포넌트들의 전체 동작을 제어하기 위한 프로세서 (203)를 가질 수 있다.
I/O 모듈 (209)은 포괄 컴퓨팅 디바이스 (201)의 유저가 입력을 제공할 수 있는 마우스, 키패드, 터치 스크린, 스캐너, 광 리더기, 및/또는 스타일러스 (또는 다른 입력 디바이스(들))을 포함할 수 있고, 오디오 출력을 제공하기 위한 하나 이상의 스피커 및 문자, 시청각, 및/또는 그래픽 출력을 제공하기 위한 비디오 디스플레이 디바이스를 또한 포함할 수 있다. 소프트웨어는 본 출원에서 설명된 다양한 기능들을 수행하기 위해서 특별한 목적의 컴퓨팅 디바이스로 포괄 컴퓨팅 디바이스 (201)를 구성하기 위해 프로세서 (203)에 명령들을 제공하는 메모리 (215) 및/또는 다른 스토리지내에 저장될 수 있다. 예를 들어, 메모리 (215)는 컴퓨팅 디바이스 (201)에 의해 사용되는 소프트웨어, 예컨대 운영 체제 (217), 애플리케이션 프로그램들 (219), 및 관련된 데이터베이스 (221)를 저장할 수 있다.
컴퓨팅 디바이스 (201)는 하나 이상의 원격 컴퓨터들, 예컨대 단말들 (240) (또한 클라이언트 디바이스들로 지칭되는)에 연결들을 지원하는 네트워크화된 환경에서 동작할 수 있다. 단말들 (240)은 포괄 컴퓨팅 디바이스 (103) 또는 (201)에 관하여 상기에서 설명된 많은 또는 전부의 엘리먼트들을 포함하는 퍼스널 컴퓨터들, 모바일 디바이스들, 랩탑 컴퓨터들, 태블릿들, 또는 서버들일 수 있다. 도 2에 도시된 네트워크 연결들은 로컬 영역 네트워크(LAN)(225) 및 와이드 영역 네트워크(WAN)(229)을 포함하고 또한 다른 네트워크들을 포함할 수 있다. LAN 네트워킹 환경에서 사용될 때, 컴퓨팅 디바이스 (201)는 네트워크 인터페이스 또는 어댑터(adapter) (223)를 통하여 LAN (225)에 연결될 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨팅 디바이스 (201)는 WAN (229), 예컨대 컴퓨터 네트워크 (230) (예를 들어, 인터넷)상에서의 통신을 수립하기 위한 모뎀 (227) 또는 다른 와이드 영역 네트워크 인터페이스를 포함할 수 있다. 도시된 네트워크 연결들은 예시이고 컴퓨터들 간에 통신 링크를 수립하는 다른 수단들이 사용될 수 있다는 것이 인식될 것이다. 컴퓨팅 디바이스 (201) 및/또는 단말들 (240)은 또한 다양한 다른 컴포넌트들, 예컨대 배터리, 스피커, 및 안테나들 (미도시)을 포함하는 이동 단말들 (예를 들어, 이동 전화기들, 스마트폰들, 개인 디지털 보조장치들 (PDA들), 노트북들, 등)일 수 있다.
본 출원에서 설명된 측면들은 다양한 다른 일반적인 목적의 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들과 함께 또한 사용될 수 있다. 본 출원에서 설명된 측면들과 사용에 적합할 수 있는 다른 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은 제한되지 않지만, 개인용 컴퓨터들, 서버 컴퓨터들, 핸드헬드 또는 랩탑 디바이스들, 다중프로세서 시스템들, 마이크로프로세서-기반 시스템들, 셋탑 박스들, 프로그램가능한 가전 제품들, 네트워크 개인용 컴퓨터들(PC들), 미니컴퓨터들, 메인프레임 컴퓨터들, 상기 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분산 컴퓨팅 환경들 및 유사한 것을 포함한다.
도 2 에 도시된 바와 같이, 하나 이상의 클라이언트 디바이스들 (240)은 하나 이상의 서버들 (206a-206n) (일반적으로 본 출원에서 “서버(들) (206)”로서 언급된)과 통신 상태에 있을 수 있다. 일 실시예에서, 컴퓨팅 환경 (200)은 서버(들) (206)과 클라이언트 기계(들) (240) 사이에 인스톨된 네트워크 기기를 포함할 수 있다. 네트워크 기기는 클라이언트/서버 연결들을 관리할 수 있고, 일부 경우들에서 복수의 백엔드 서버(backend server)들 (206) 간에 클라이언트 연결들을 로드 밸런싱(load balance)할 수 있다.
클라이언트 기계(들) (240)은 일부 실시예들에서 단일 클라이언트 기계 (240) 또는 클라이언트 기계들 (240)의 단일 그룹으로 지칭될 수 있고, 한편 서버(들) (206)은 단일 서버 (206) 또는 서버들 (206)의 단일 그룹으로 지칭될 수 있다. 일 실시예에서 단일 클라이언트 기계 (240)는 하나 초과의 서버 (206)와 통신하고, 한편 다른 실시예에서 단일 서버 (206)는 하나 초과의 클라이언트 기계 (240)와 통신한다. 또 다른 실시예들에서, 단일 클라이언트 기계 (240)는 단일 서버 (206)와 통신한다.
클라이언트 기계 (240)는 일부 실시예들에서, 이하의 비-망라된 용어들: 클라이언트 기계(들); 클라이언트(들); 클라이언트 컴퓨터(들); 클라이언트 디바이스(들); 클라이언트 컴퓨팅 디바이스(들); 로컬 기계; 원격 기계; 클라이언트 노드(들); 엔드 포인트(endpoint)(들); 또는 엔드 포인트 노드(endpoint node)(들) 중 임의의 하나에 의해 참조될 수 있다. 서버 (206)는, 일부 실시예들에서, 이하의 비-망라된 용어들: 서버(들), 로컬 기계; 원격 기계; 서버 팜(server farm)(들), 또는 호스트 컴퓨팅 디바이스(들) 중 임의의 하나에 의해 참조될 수 있다.
일 실시예에서, 클라이언트 기계 (240)는 가상 기계일 수 있다. 가상 기계는 임의의 가상 기계일 수 있지만, 한편 일부 실시예들에서 가상 기계는 유형 1 또는 유형 2 하이퍼바이저, 예를 들어, Citrix 시스템들, IBM, VMware에 의해 개발된 하이퍼바이저, 또는 임의의 다른 하이퍼바이저에 의해 관리되는 임의의 가상 기계일 수 있다. 일부 측면들에서, 가상 기계는 하이퍼바이저에 관리될 수 있지만, 한편 측면들에서 가상 기계는 서버 (206) 상에서 실행하는 하이퍼바이저 또는 클라이언트 (240)상에서 실행하는 하이퍼바이저에 의해 관리될 수 있다.
일부 실시예들은 다른 원격에 위치된 기계 또는 서버 (206) 상에서 원격에서 실행하는 애플리케이션에 의해 생성된 애플리케이션 출력을 디스플레이하는 클라이언트 디바이스 (240)를 포함한다. 이들 실시예들에서, 클라이언트 디바이스 (240)는 애플리케이션 윈도우, 브라우저, 또는 다른 출력 윈도우에 출력을 디스플레이 하기 위해 가상 기계 수신기 프로그램 또는 애플리케이션을 실행할 수 있다. 일 예에서, 애플리케이션은 데스크탑이고, 한편 다른 예들에서 애플리케이션은 데스크탑을 생성 또는 제공하는 애플리케이션이다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영 체제의 인스턴스에 유저 인터페이스를 제공하는 그래픽 쉘(graphical shell)을 포함할 수 있다. 본 출원에서 사용되는 애플리케이션들은 운영 체제의 인스턴스(instance) (및, 옵션으로, 또한 데스크탑)가 로딩된 후에 실행하는 프로그램들이다.
서버 (206)는, 일부 실시예들에서, 서버 (206) 상에서 실행하는 애플리케이션에 의해 생성된 디스플레이 출력을 제공하는 클라이언트상에서 실행하는 씬-클라이언트(thin-client) 또는 원격-디스플레이 애플리케이션으로 데이터를 발송하기 위해 원격 프리젠테이션 프로토콜 또는 다른 프로그램을 사용한다. 씬-클라이언트 또는 원격-디스플레이 프로토콜 프로토콜들의 이하의 비-망라된 리스트: Ft. Lauderdale, Florida의 Citrix Systems, Inc에 의해 개밸된 독립적인 컴퓨팅 아키텍처 (ICA : Independent Computing Architecture) 프로토콜 ; 또는 Redmond, Washington의 Microsoft Corporation에 의해 제조된 원격 데스크탑 프로토콜 (RDP : Remote Desktop Protocol) 중 임의의 하나일 수 있다.
원격 컴퓨팅 환경은 하나 초과의 서버 (206a-206n)를 포함할 수 있어서 서버들 (206a-206n)은 예를 들어, 클라우드 컴퓨팅 환경내 서버 팜 (206)으로 함께 논리적으로 그룹화된다. 서버 팜 (206)은 지리적으로 분산되지만 논리적으로 함께 그룹화되는 서버들 (206), 또는 서로에 근접하여 위치되지만 논리적으로 함께 그룹화되는 서버들 (206)을 포함할 수 있다. 서버 팜 (206)내에 지리적으로 분산된 서버들 (206a-206n)은 일부 실시예들에서, WAN (와이드, MAN (메트로폴리탄), 또는 LAN (로컬)을 이용하여 통신할 수 있고, 여기서 상이한 지리적 영역들은 상이한 대륙들; 대륙의 상이한 영역들; 상이한 나라들; 상이한 주 (state)들; 상이한 도시들; 상이한 캠퍼스들; 상이한 룸들; 또는 선행하는 지리적 위치들의 임의의 조합으로서 특징화될 수 있다. 일부 실시예들에서 서버 팜 (206)은 단일 엔티티로서 운영될 수 있지만, 다른 실시예들에서 서버 팜 (206)은 다수의 서버 팜들을 포함할 수 있다.
일부 실시예들에서, 서버 팜은 실질적으로 유사한 유형의 운영 체제 플랫폼 (예를 들어, 윈도우들, UNIX, 리눅스, iOS, 안드로이드, 심비안, 등)을 실행하는 서버들 (206)을 포함할 수 있다. 다른 실시예들에서, 서버 팜 (206)은 제 1 유형의 운영 체제 플랫폼을 실행하는 하나 이상의 서버들의 제 1 그룹, 및 제 2 유형의 운영 체제 플랫폼을 실행하는 하나 이상의 서버들의 제 2 그룹을 포함할 수 있다.
서버 (206)는 필요할 때, 임의의 유형의 서버로 예를 들어, 파일 서버, 애플리케이션 서버, 웹 서버, 프락시(proxy) 서버, 기기(appliance), 네트워크 기기, 게이트웨이, 애플리케이션 게이트웨이, 게이트웨이 서버, 가상화 서버, 배치 서버(deployment server), 보안 소켓 계층 (SSL : Secure Socket Layer) VPN 서버, 방화벽, 웹 서버, 애플리케이션 서버 또는 마스터 애플리케이션 서버로서, 액티브(active) 디렉토리를 실행하는 서버, 또는 방화벽 기능, 애플리케이션 기능, 또는 로드 밸런싱 기능을 제공하는 애플리케이션 가속 프로그램을 실행하는 서버로 구성될 수 있다. 다른 서버 유형들이 또한 사용될 수 있다.
일부 실시예들은 클라이언트 기계 (240)로부터 요청들을 수신하고, 요청을 제 2 서버 (206b)로 포워딩하고, 제 2 서버 (206b)로부터의 응답으로 클라이언트 기계 (240)에 의해 생성된 요청에 응답하는 제 1 서버 (206a)를 포함한다. 제 1 서버 (206a)는 클라이언트 기계 (240)에 이용가능한 애플리케이션들의 목록(enumeration) 및 또한 애플리케이션들의 목록내에 식별된 애플리케이션을 호스트하는 애플리케이션 서버 (206)와 관련된 어드레스 정보(address information)을 획득할 수 있다. 제 1 서버 (206a)는 그런 다음 웹 인터페이스를 이용하여 클라이언트의 요청에 응답을 제공할 수 있고, 클라이언트 (240)에 식별된 애플리케이션에 대한 액세스를 제공하기 위해 클라이언트 (240)와 직접 통신할 수 있다. 하나 이상의 클라이언트들 (240) 및/또는 하나 이상의 서버들 (206)은 네트워크 (230), 예를 들어, 네트워크 (101) 를 통하여 데이터를 송신할 수 있다.
도 2 는 예시적인 데스크탑 가상화 시스템의 하이 레벨 아키텍처를 도시한다. 도시된 바와 같이, 데스크탑 가상화 시스템은 가상 데스크탑들 및/또는 가상 애플리케이션들을 하나 이상의 클라이언트 액세스 디바이스들 (240)에 제공하도록 구성된 적어도 하나의 가상화 서버 (206)를 포함하는 단일-서버 또는 멀티-서버 시스템, 또는 클라우드 시스템일 수 있다. 본 출원에서 사용되는, 데스크탑은 하나 이상의 애플리케이션들이 호스트될 수 있거나 및/또는 실행될 수 있는 그래픽 환경 또는 스페이스를 지칭한다. 데스크탑은 로컬 및/또는 원격 애플리케이션들이 통합될 수 있는 운영 체제의 인스턴스에 유저 인터페이스를 제공하는 그래픽 쉘(graphical shell)을 포함할 수 있다. 애플리케이션들은 운영 체제의 인스턴스 (및, 옵션으로, 또한 데스크탑)가 로딩된 후에 실행하는 프로그램들이다. 운영 체제의 각각의 인스턴스는 물리적 (예를 들어, 디바이스 당 하나의 운영 체제) 일 수 있거나 또는 가상 (예를 들어, 단일 디바이스상에서 운용하는 OS의 많은 인스턴스들)일 수 있다. 각각의 애플리케이션은 로컬 디바이스상에서 실행될 수 있거나, 또는 원격에 위치된 디바이스 (예를 들어, 원격인)상에서 실행될 수 있다.
추가로 도 3을 참조하여, 컴퓨터 디바이스 (301)는 가상화 환경에 가상화 서버, 예를 들어, 단일-서버, 멀티-서버, 또는 클라우드 컴퓨팅 환경으로 구성될 수 있다. 도 3에 예시된 가상화 서버 (301)는 도 2에 예시된 서버 (206)의 하나 이상의 실시예들에 의해 또는 다른 알려진 컴퓨팅 디바이스들에 의해 구현되고 그것들로 배치될 수 있다. 하나 이상의 물리적 디스크들 (304), 하나 이상의 물리적 디바이스들 (306), 하나 이상의 물리적 프로세서들 (308) 및 하나 이상의 물리적 메모리들 (316)을 포함할 수 있는 하드웨어 계층 (310)이 가상화 서버 (301)에 포함된다. 일부 실시예들에서, 펌웨어 (312)가 물리적 메모리 (316)내 메모리 소자내에 저장될 수 있고 하나 이상의 물리적 프로세서들 (308)에 의해 실행될 수 있다. 가상화 서버 (301)는 물리적 메모리 (316)내 메모리 소자내에 저장될 수 있고 하나 이상의 물리적 프로세서들 (308)에 의해 실행될 수 있는 운영 체제 (314)를 더 포함할 수 있다. 더 나아가, 하이퍼바이저 (302)는 물리적 메모리 (316)내 메모리 소자에 저장될 수 있고 하나 이상의 물리적 프로세서들 (308)에 의해 실행될 수 있다.
하나 이상의 물리적 프로세서들 (308)상에서 실행은 하나 이상의 가상 기계들 (332A-C) (전체적으로 (332))일 수 있다. 각각의 가상 기계 (332)은 가상 디스크 (326A-C) 및 가상 프로세서 (328A-C)을 가질 수 있다. 일부 실시예들에서, 제 1 가상 기계 (332A)는 가상 프로세서 (328A), 툴 스택(tools stack) (324)을 포함하는 제어 프로그램 (320)을 이용하여 실행할 수 있다. 제어 프로그램 (320)은 제어 가상 기계, Dom0, 도메인(Domain) 0, 세션(session) 0 또는 시스템 운영 및/또는 제어를 위해 사용되는 다른 가상 기계로 지칭될 수 있다. 일부 실시예들에서, 하나 이상의 가상 기계들 (332B-C)은 가상 프로세서 (328B-C), 게스트(guest) 운영 체제 (330A-B)를 이용하여 실행할 수 있다.
가상화 서버 (301)는 가상화 서버 (301)와 통신하는 하드웨어의 하나 이상의 피스(piece)들을 갖는 하드웨어 계층 (310)을 포함할 수 있다. 일부 실시예들에서, 하드웨어 계층 (310)은 하나 이상의 물리적 디스크들 (304), 하나 이상의 물리적 디바이스들 (306), 하나 이상의 물리적 프로세서들 (308) 및 하나 이상의 메모리 (216)를 포함할 수 있다. 물리적 컴포넌트들 (304,306,308, 및 316) 은 예를 들어, 상기에서 설명된 임의의 컴포넌트들을 포함할 수 있다. 물리적 디바이스들 (306)은 예를 들어, 네트워크 인터페이스 카드, 비디오 카드, 키보드, 마우스, 입력 디바이스, 모니터, 디스플레이 디바이스, 스피커들, 광 드라이브, 스토리지 디바이스, 범용 직렬 버스 연결, 프린터, 스캐너, 네트워크 엘리먼트 (예를 들어, 라우터, 방화벽, 네트워크 어드레스 트랜스레이터(translator), 로드 밸런서(load balancer), 가상 개인 네트워크 (VPN : virtual private network) 게이트웨이, 동적 호스트 구성 프로토콜 (DHCP : Dynamic Host Configuration Protocol) 라우터, 등), 또는 가상화 서버 (301)에 연결되거나 또는 가상화 서버와 통신하는 임의의 디바이스를 포함할 수 있다. 하드웨어 계층 (310)에 물리적 메모리 (316)는 임의 유형의 메모리를 포함할 수 있다. 물리적 메모리 (316)는 데이터를 저장할 수 있고, 일부 실시예들에서 하나 이상의 프로그램들, 또는 실행 가능한 명령들의 세트를 저장할 수 있다. 도 3은 펌웨어 (312)가 가상화 서버 (301)의 물리적 메모리 (316)내에 저장된 실시예를 도시한다. 물리적 메모리 (316)에 저장된 프로그램들 또는 실행 가능한 명령들은 가상화 서버 (301)의 하나 이상의 물리적 프로세서들 (308)에 의해 실행될 수 있다.
가상화 서버(virtualization server) (301)는 하이퍼바이저 (302)를 또한 포함할 수 있다. 일부 실시예들에서, 하이퍼바이저(hypervisor) (302)는 임의 개수의 가상 기계들 (332)을 생성 및 관리하기 위해 가상화 서버 (301)상에 프로세서들 (308)에 의해 실행되는 프로그램일 수 있다. 하이퍼바이저 (302)는 가상 기계 모니터, 또는 플랫폼 가상화 소프트웨어로 지칭될 수 있다. 일부 실시예들에서, 하이퍼바이저 (302)는 컴퓨팅 기계상에서 실행하는 가상 기계들을 모니터링하는 실행 가능한 명령들 및 하드웨어의 임의의 조합일 수 있다. 하이퍼바이저 (302)는 유형(Type) 2 하이퍼바이저, 가상화 서버 (301)상에서 실행하는 운영 체제 (314)내에서 실행하는 하이퍼바이저일 수 있다. 가상 기계들은 그런 다음 하이퍼바이저 위의 레벨에서 실행한다. 일부 실시예들에서, 유형 2 하이퍼바이저는 유저의 운영 체제의 컨텍스트(context)내에서 실행하여 유형 2 하이퍼바이저는 유저 운영 체제와 상호 작용한다(interact). 다른 실시예들에서, 가상화 환경에 하나 이상의 가상화 서버들 (201)은 대신 유형 1 하이퍼바이저 (미도시)를 포함할 수 있다. 유형 1 하이퍼바이저는 하드웨어 계층 (310)내 하드웨어 및 자원들을 직접 액세스함으로써 가상화 서버 (301)상에서 실행할 수 있다. 즉, 유형 2 하이퍼바이저 (302)는 도시된 바와 같이, 호스트 운영 체제 (314)를 통하여 시스템 자원들을 액세스하지만 유형 1 하이퍼바이저는 호스트 운영 체제 (314) 없이 모든 시스템 자원들을 직접 액세스할 수 있다. 유형 1 하이퍼바이저는 가상화 서버 (301)의 하나 이상의 물리적 프로세서들 (308)상에서 직접 실행할 수 있고, 물리적 메모리 (316)에 저장된 프로그램 데이터를 포함할 수 있다.
하이퍼바이저 (302)는, 일부 실시예들에서, 시스템 자원들에 대한 직접 액세스를 갖는 운영 체제들 (330) 또는 제어 프로그램들 (320)을 시뮬레이션(simulate)하는 임의의 방식으로 가상 기계들 (332)상에서 실행하는 운영 체제들 (330) 또는 제어 프로그램들 (320)에 가상 자원들을 제공할 수 있다. 시스템 자원들은 물리적 디바이스들 (306), 물리적 디스크들 (304), 물리적 프로세서들 (308), 물리적 메모리 (316) 및 가상화 서버 (301) 하드웨어 계층 (310)에 포함된 임의의 다른 컴포넌트를 포함할 수 있지만, 이것에 한정되지는 않는다. 하이퍼바이저 (302)는 가상 하드웨어를 모방하고, 물리적 하드웨어를 파티션(partition)하고, 물리적 하드웨어를 가상화하고, 및/또는 컴퓨팅 환경들에 액세스를 제공하는 가상 기계들을 실행시키기 위해 사용될 수 있다. 또 다른 실시예들에서, 하이퍼바이저 (302)는 가상화 서버 (301)상에서 실행하는 가상 기계 (332)에 대한 프로세서 스케줄링 및 메모리 파티셔닝을 제어한다. 하이퍼바이저 (302)는 Palo Alto, California의 VMWare, Inc에 의해 제조된 것들; XEN 하이퍼바이저, 개발이 오픈 소스 Xen.org 커뮤니티에 의해 감독된 오프 소스 제품 ; HyperV, Microsoft, 또는 다른 것들에 의해 제공된 가상서버 또는 가상 PC 하이퍼바이저들을 포함할 수 있다. 일부 실시예들에서, 가상화 서버 (301)는 게스트 운영 체제들이 실행할 수 있는 가상 기계 플랫폼을 생성하는 하이퍼바이저 (302)를 실행한다. 이들 실시예들에서, 가상화 서버 (301)는 호스트 서버로 지칭될 수 있다. 이런 가상화 서버의 예제는 Fort Lauderdale, FL의 Citrix Systems, Inc에 의해 제공된 XEN SERVER이다.
하이퍼바이저 (302)는 게스트 운영 체제들 (330)이 실행하는 하나 이상의 가상 기계들 (332B-C) (전체적으로 (332))을 생성할 수 있다. 일부 실시예들에서, 하이퍼바이저 (302)는 가상 기계 (332)를 생성하기 위해 가상 기계 이미지를 로딩(load)할 수 있다. 다른 실시예들에서, 하이퍼바이저 (302)는 가상 기계 (332)내에 게스트 운영 체제(330)를 실행할 수 있다. 또 다른 실시예들에서, 가상 기계 (332)는 게스트 운영 체제(330)를 실행할 수 있다.
가상 기계들 (332) 생성에 추가하여, 하이퍼바이저 (302)는 적어도 하나의 가상 기계 (332)의 실행을 제어할 수 있다. 다른 실시예들에서, 하이퍼바이저 (302)는 가상화 서버 (301)에 의해 제공된 적어도 하나의 하드웨어 자원(예를 들어, 하드웨어 계층 (310)내에서 이용 가능한 임의의 하드웨어 자원)의 추상적 개념(abstraction)으로 적어도 하나의 가상 기계 (332)를 제공할 수 있다. 다른 실시예들에서, 하이퍼바이저 (302)는 가상 기계들 (332)이 가상화 서버 (301)내 이용 가능한 물리적 프로세서들 (308)을 액세스하는 방식을 제어할 수 있다. 물리적 프로세서들 (308)에 대한 액세스를 제어하는 것은 가상 기계 (332)가 프로세서 (308)에 대한 액세스를 가져야 하는지 여부 결정, 및 물리적 프로세서 성능들이 어떻게 가상 기계 (332)에 제공되는지를 포함할 수 있다.
도 3에 도시된 바와 같이, 가상화 서버 (301)는 하나 이상의 가상 기계들 (332)를 호스트 또는 실행할 수 있다. 가상 기계 (332)는 프로세서 (308)에 의해 실행될 때, 물리적 컴퓨터의 동작을 모방하는 실행 가능한 명령들의 세트여서 가상 기계 (332)는 물리적 컴퓨팅 디바이스와 매우 비슷하게 프로그램들 및 프로세스들을 실행할 수 있다. 도 3은 가상화 서버 (301)가 세개의 가상 기계들 (332)을 호스트하는 실시예를 도시하지만, 다른 실시예들에서 가상화 서버 (301)는 임의 개수의 가상 기계들 (332)을 호스트할 수 있다. 하이퍼바이저 (302)는, 일부 실시예들에서, 해당 가상 기계 (332)에 이용 가능한 물리적 하드웨어, 메모리, 프로세서 및 다른 시스템 자원들의 고유의(unique) 가상 뷰를 각각의 가상 기계 (332)에 제공한다. 일부 실시예들에서, 고유의 가상 뷰는 가상 기계 허가(permission)들, 하나 이상의 가상 기계 식별자들에 대한 정책 엔진의 애플리케이션, 가상 기계를 액세스하는 유저, 가상 기계상에서 실행하는 애플리케이션들, 가상 기계에 의해 액세스되는 네트워크들, 또는 임의의 다른 희망하는 기준 중 하나 이상에 기초될 수 있다. 예를 들어, 하이퍼바이저 (302)는 하나 이상의 비보안(unsecure) 가상 기계들 (332) 및 하나 이상의 보안(secure) 가상 기계들 (332)을 생성할 수 있다. 비보안 가상 기계들 (332)은 보안 가상 기계들 (332)이 액세스 하는 것이 허용될 수 있는 자원들, 하드웨어, 메모리 위치들, 및 프로그램들을 액세스하는 것이 방지될 수 있다. 다른 실시예들에서, 하이퍼바이저 (302)는 가상 기계 (332)에 이용 가능한 물리적 하드웨어, 메모리, 프로세서 및 다른 시스템 자원들의 실질적으로 유사한 가상 뷰(virtual view)를 각각의 가상 기계 (332)에 제공할 수 있다.
각각의 가상 기계 (332)는 가상 디스크 (326A-C)(전체적으로 (326)) 및 가상 프로세서 (328A-C)(전체적으로 (328))를 포함할 수 있다. 가상 디스크 (326)는, 일부 실시예들에서, 가상화 서버 (301)의 하나 이상의 물리적 디스크들 (304)의 가상화된 뷰 이거나, 또는 가상화 서버 (301)의 하나 이상의 물리적 디스크들 (304)의 부분이다. 물리적 디스크들 (304)의 가상화된 뷰는 하이퍼바이저 (302)에 의해 생성, 제공 및 관리될 수 있다. 일부 실시예들에서, 하이퍼바이저 (302)은 물리적 디스크들 (304)의 고유의 뷰를 각각의 가상 기계 (332)에 제공한다. 따라서, 이들 실시예들에서, 각각의 가상 기계 (332)에 포함된 특정한 가상 디스크 (326)는 다른 가상 디스크들 (326)과 비교될 때 고유할 수 있다.
가상 프로세서(328)는 가상화 서버 (301)의 하나 이상의 물리적 프로세서들 (308)의 가상화된 뷰일 수 있다. 일부 실시예들에서, 물리적 프로세서들 (308)의 가상화된 뷰는 하이퍼바이저 (302)에 의해 생성, 제공 및 관리될 수 있다. 일부 실시예들에서, 가상 프로세서 (328)는 적어도 하나의 물리적 프로세서 (308)와 실질적으로 모두 동일한 특성들을 가진다. 다른 실시예들에서, 가상 프로세서 (308)는 물리적 프로세서들 (308)의 변형된 뷰를 제공하여서 가상 프로세서 (328)의 적어도 일부 특성들은 대응하는 물리적 프로세서 (308)의 특성들과 다르다.
디바이스 관리 서비스 가상화 시스템(DEVICE MANAGEMENT SERVICES VIRTUALIZATION SYSTEM)
도 4는 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따른 예시적인 컴퓨팅 시스템(400)을 도시한다. 도 4에 도시된 바와 같이, 컴퓨팅 시스템 (400)은 와이드 영역 네트워크 (408) (예를 들어, 인터넷, 인트라넷, 및/또는 그것의 조합)를 통하여 다수의 클라이언트 디바이스들 (404A-C) (전체적으로 (404))에 연결된 원격 서버 (402)를 포함할 수 있다. 클라이언트 디바이스 (404)는 임의의 유형의 컴퓨팅 디바이스 예컨대, 예를 들어, 퍼스널 컴퓨터, 서버, 씬-클라이언트, 태블릿, 스마트폰, 또는 유사한 것일 수 있고, 네트워크 노드들 (103) 또는 컴퓨팅 디바이스 (201)의 하나 이상의 컴포넌트들을 포함할 수 있다. 서비스 관리되는 디바이스(service managed device)들 (406A-C) (전체적으로 (406))는 유선 (예를 들어, 범용 직렬 버스 포트 예컨대 USB-C 포트를 통하여) 또는 무선 연결들 (예를 들어, 블루투스, Wi-Fi, 등)을 통하여 클라이언트 디바이스 (404)와 동작가능하게 연결될 수 있다. 서비스 관리되는 디바이스들 (406)은 예를 들어, 스마트카드들 (406A), USB기반의 디바이스들 (406B), 제어기들 (406C) (예를 들어, 게이밍 제어기, 원격 제어, 등), 또는 유사한 것 을 포함할 수 있다. 클라이언트 디바이스 (404D)는 클라이언트 디바이스 (404)가 디바이스 관리 서비스에 의해 관리되고 제어되는 인스턴스(instance)들에서 서비스 관리되는 디바이스로 간주될 수 있다. 일 예로서, 태블릿 또는 프린터는 디바이스의 동작을 관리하는 대응하는 서비스를 가질 수 있다.
원격 서버 (402)는 클라이언트 디바이스들 (404)에 가상 애플리케이션 전달 솔루션을 제공할 수 있다. 가상 애플리케이션 전달 솔루션들은 클라이언트 디바이스들 (404)의 유저들이 클라이언트 디바이스들 (404)로부터 수신된 입력들을 이용하여 원격 서버 (402)상에서 전적으로 실행되는 하나 이상의 애플리케이션들과 상호작용하고 원격에서 액세스할 수 있도록 애플리케이션 가상화를 제공한다. 이런 가상 애플리케이션 전달 솔루션에서, 원격 서버 (402)는 다수의 세션들 및 각각의 세션내에 다수의 애플리케이션들과의 사용을 위해 단일 운영 체제를 단지 실행할 수 있다. 즉, 원격 서버 (402)는 각각의 세션에 대하여 가상화된 운영 체제를 생성하는 것은 비용이 많이 들고 광대한 양의 디스크 공간을 포함하기 때문에 서버의 운영 체제의 하나 이상의 인스턴스들을 가상화하지 않을 수 있다. 일부 실시예들에서, 애플리케이션들은 사실, 그것들이 원격 서버 (402)의 운영 체제에 대한 프락시로서 동작하는 애플리케이션 가상화 계층 (미도시)과 인터페이스할 때 직접 원격 서버 (402)상에 인스톨된 운영 체제와 그것들이 인터페이스하는 것으로 믿는다. 일부 실시예들에서, 컴퓨팅 시스템 (400)은 하이퍼바이저를 포함하지 않을 수 있다.
원격 서버 (402)는 또한 각각의 세션에 의해 액세스 가능한 글로벌 레지스트리 데이터베이스(global registry database) (410)를 포함할 수 있고 및/또는 그것과 통신가능하게 결합될 수 있다. 디바이스 관리 서비스들은 서비스 관리되는 디바이스들 (406)이 단일 세션 환경에서 동작한다는 가정하에서 글로벌 레지스트리 데이터베이스 (410)로부터 정보를 판독하고 그리고 거기에 정보를 기록하도록 디자인된다.
하나 이상의 장치들에서, 원격 서버 (402)는 많은 태스크들을 수행하는 세션 관리기(session manager)를 포함할 수 있다. 세션 관리기는 등록 SDK(software development kit)를 이용하여 세션 관리기 및/또는 애플리케이션 가상화 서비스들 (예를 들어, Citrix Systems, Inc에 의해 개발된 XenApp)에 그것들의 디바이스 관리 서비스들을 등록하기 위해 제 3 자 벤더들 또는 파트너들을 허용하는 세션 인터페이스를 제공할 수 있다. 제 3 자 벤더들 또는 파트너들은 세션 관리기에 의한 사용을 위해 가상 세션 호스트 (VSH) 서비스들 데이터베이스내 디바이스 관리 서비스들을 등록할 수 있다. 등록 동안에, 멀티-세션 환경내 디바이스 관리 서비스들의 사용을 위한 정책들이 생성될 수 있다. 하나의 정책은 세션 관리기가, 인스턴스의 스타트업 시에, 각각의 세션이 디바이스 관리 서비스의 그것 자체의 가상화된 인스턴스를 갖도록 해당 세션내에 사용을 위한 디바이스 관리 서비스들의 가상화된 인스턴스를 생성하는 것을 포함할 수 있다. 더구나, 다른 정책은 자원을 가상화할려고 할 때를 포함할 수 있다. 또 다른 정책은 특정 명령어 (예를 들어, 글로벌 레지스트리 데이터베이스 (410)에 기록 명령어)를 재라우팅(reroute) 할 때 및/또는 재라우팅할 곳을 포함할 수 있다. 또 다른 다른 정책은 그것들의 서비스 관리되는 디바이스들 (406) 및/또는 그것들의 디바이스 관리 서비스들에 의한 사용을 위해 할당될 원격 서버 (402)의 하나 이상의 메모리 위치들 (예를 들어, 파일들) 또는 원격 서버 (402)에 통신가능하게 결합된 데이터베이스의 할당을 포함할 수 있다. 세션의 스타트업 동안에, 세션 관리기는 레지스트리 데이터베이스 (410)의 지정된 하나 이상의 메모리 위치들에 기초하여, 생성된 특정 세션과 사용을 위해 그리고 서비스 관리되는 디바이스들 (406) 및/또는 그것들의 디바이스 관리 서비스들로부터의 명령어들이 라우팅될 수 있는 메모리 위치들을 할당할 수 있다. 더구나, 세션 관리기는 세션들에 대한 특정 메모리 위치들에 레지스트리 데이터베이스 (410)내 메모리 위치들 및/또는 가상 자원들의 매핑을 생성할 수 있다 (예를 들어, 아래의 도 6에 논의되는 세션-특정 데이터베이스 (606)). 등록 SDK는 디바이스 관리 서비스들에 대한 액세스 허가들 및 레벨들을 포함하기 위한 다양한 옵션들을 제공할 수 있다. 디바이스 관리 서비스는 그것이 다양한 이벤트들 (예를 들어, 스타트업, 셧다운, 세션 이벤트들, 등)를 통지받도록 표준 인터페이스를 노출시킬 수 있다. SDK는 또한 관리자들이 디바이스 관리 서비스의 각각의 세션-특정 인스턴스의 행위를 모니터링 및 제어하는 것을 가능하게 할 수 있다.
서비스 관리되는 디바이스들 (406)은 운영 체제와의 상호 작용을 위한 인터페이스 및/또는 명령들을 제공하는 디바이스 관리 서비스들에 의해 관리될 수 있다. 디바이스 관리 서비스들은 운영 체제와 함께 실행되는 애플리케이션들이, 서비스 관리되는 디바이스들 (406)의 하드웨어 기능들을 액세스하는 것을 가능하게 한다. 예를 들어, 디바이스 관리 서비스는 특정 서비스 관리되는 디바이스 (406)와 사용을 위한 디바이스 드라이버 형태로 있을 수 있다. 운영 체제 또는 애플리케이션이 명령어를 발행함으로써 특정 기능을 수행하도록 특정 서비스 관리되는 디바이스 (406)에 명령할 때, 서비스 관리되는 디바이스의 (406) 대응 디바이스 관리 서비스는 명령어를 인터셉트(intercept)할 수 있고, 특정 서비스 관리되는 디바이스 (406)에 의해 이해가능한 형태 (예를 들어, 포맷)로 명령어를 번역(translate)하고, 번역된 명령어를 실행을 위해 특정한 서비스 관리되는 디바이스 (406)로 발송할 수 있다. 유사하게, 애플리케이션 또는 운영 체제에 의해 수신되도록 의도된 특정 서비스 관리되는 디바이스 (406) 의 임의의 출력은 인터셉트될 수 있고 애플리케이션 또는 운영 체제에 의해 수신되기 전에 애플리케이션에 의해 이해가능한 형태로 번역될 수 있다. 따라서, 디바이스 관리 서비스는 애플리케이션이 서비스 관리되는 디바이스 (406)의 특정 하드웨어 또는 소프트웨어 명령어 정책들의 정확한 지식을 가지지 않고서 특정 서비스 관리되는 디바이스 (406)와 통신하는 것을 가능하게 한다.
유저들은 원격 서버 (402)에 의해 제공된 가상화된 애플리케이션과 사용을 위해 서비스 관리되는 디바이스들 (406)을 그것들의 클라이언트 디바이스들 (404)과 연결할 수 있다. 일 예로서, 유저는 원격 서버 (402)에 의해 제공된 가상 애플리케이션과 사용을 위해 클라이언트 디바이스 (404A)에 스마트카드 리더기를 통하여 스마트카드 (406A)를 연결할 수 있다. 서비스 (예를 들어, 특정 유형의 스마트카드 또는 스마트카드 리더기를 위한 드라이버)는 스마트카드 (406A) 또는 그것의 스마트카드 리더기가 많은 문제들로 이어질 수 있는 단일-세션 또는 단일-유저 환경에서 사용될 것이라는 가정하에서 디잔인 되었다.
하나의 세션에 애플리케이션의 하나의 가상 인스턴스가 상이한 세션에 애플리케이션의 다른 가상 인스턴스에 의해 저장된 데이터를 오버라이트(overwrite) 할 때 한가지 문제가 발생할 수 있다. 일 예로서, 스마트카드 (406A)를 위한 디바이스 관리 서비스 (예를 들어, 디바이스 드라이버)는 글로벌 레지스트리 데이터베이스 (410), 클라이언트 디바이스 (404), 및/또는 스마트카드 (406A)의 특정 메모리 위치 (예를 들어, 특정 파일)에 정보를 기록 (또는 거기로부터 정보를 판독) 하도록 애플리케이션의 인스턴스에 명령할 수 있다. 그러나, 디바이스 관리 서비스는 애플리케이션의 각각의 인스턴스가 동일한 글로벌 레지스트리 데이터베이스 (410)에 이런 명령어들(예를 들어, 기록 명령어, 판독 명령어, 등)을 개시할 수 있는 상이한 세션들에 대응하는 동일한 애플리케이션의 다수의 인스턴스들을 책임지지 않을 수 있다. 결과적으로, 디바이스 관리 서비스는 글로벌 레지스트리 데이터베이스 (410)의 특정 메모리 위치에 정보를 기록하기 위해 제 1 세션내 애플리케이션의 하나의 인스턴스에 명령할 수 있고 또한 후속 기록 명령에 의해 오버라이트된 정보의 손실로 귀결되는 글로벌 레지스트리 데이터베이스 (410)의 동일한 메모리 위치에 정보를 기록하기 위해 제 2 (예를 들어, 상이한) 세션 내 애플리케이션의 다른 인스턴스에 부적절하게 명령할 수 있다.
더구나, 하나의 세션내 애플리케이션의 하나의 인스턴스에 의한 데이터의 부적절한 오버라이트(overwrite)는 상이한 세션내 애플리케이션의 다른 인스턴스에 의한 부정확한 데이터의 판독으로 귀결될 수 있다. 상기의 예제에 이어서, 제 2 세션내 애플리케이션의 인스턴스가 글로벌 레지스트리 데이터베이스 (410)의 특정 메모리 위치에 정보를 기록하고 그렇게 함으로써 제 1 세션내 애플리케이션의 인스턴스에 의해 글로벌 레지스트리 데이터베이스 (410)의 특정 메모리 위치에 미리 기록된 정보에 부적절하게 오버라이트한 후에, 제 1 세션내 애플리케이션의 인스턴스는 글로벌 레지스트리 데이터베이스 (410)의 특정 메모리 위치에 저장된 정보를 판독할 수 있고, 이는 이제 부적절한 오버라이트의 결과로서 제 1 세션내 애플리케이션의 인스턴스에 대하여 부정확하다. 문제를 악화시키는 것은, 제 1 세션내 애플리케이션의 인스턴스는 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치로부터 판독된 정보가 제 1 세션내 애플리케이션의 인스턴스에 대하여 부정확하다는 것을 인지하지 못 할 수 있다.
그러나, 여기에서 간단하게 설명되고 이하에서 보다 상세하게 설명될 것 처럼, 원격 서버 (402)는 디바이스 관리 서비스의 다수의 가상화된 인스턴스들(예를 들어, 스마트카드 (406A)를 위한 디바이스 드라이버)을 생성할 수 있고 뿐만 아니라 멀티-세션 환경내 각각의 세션간의 경계들을 유지하기 위해 적절한 목적지로 기록 명령들, 판독 명령들, 또는 다른 명령들을 적절하게 라우팅하는 리다이렉션 계층(redirection layer)를 사용할 수 있다. 따라서, 상기의 예제에 이어서, 정보는 상이한 세션에서 실행되는 애플리케이션에 의해 오버라이트되지 않을 수 있고, 이는상기-설명된 문제들을 교정한다.
상기-설명된 문제들로 이어질 멀티-세션 환경의 전형적인 셋업에서, 서비스 관리되는 디바이스들을 위한 디바이스 관리 서비스들은 시스템 서비스들과 동일한 세션 (예를 들어, 세션 0)에서 실행되었다. 더구나, 만약 멀티-세션 환경이 성공적으로 세션 경계들을 성공적으로 집행하면, 그러면 디바이스 관리 서비스들은 상이한 세션에서 서비스 관리되는 디바이스들을 액세스할 수 없을 수 있다. 그러나, 도 5 에 도시된 멀티-세션 환경 (500)의 셋업은 이들 이슈들을 교정한다.
도 5는 본 출원에서 설명된 하나 이상의 예시적인 측면들에 따른 멀티-세션 환경(500)의 예시적인 세션 뷰를 도시한다. 멀티-세션 환경 (500)은 다수의 상이한 세션들 (예를 들어, 세션 0, 세션 1 … 세션 N)을 포함할 수 있다. 도 5 에 도시된 바와 같이, 각각의 세션은 가상화된 디바이스 관리 서비스들과 이런 서비스들에 의해 관리되는 대응하는 디바이스들 간에 관계를 도시할 수 있다. 하나의 세션 (예를 들어, 세션 0)은 시스템 서비스들에 특정될 수 있고, 이는 원격 서버 (402)에 대한 단일 운영 체제를 포함할 수 있고 관리자(administrator)로서 역할을 한다. 운영 체제와 같은 시스템 서비스들의 가상화된 인스턴스들이 생성되지 않을 수 있고 하이퍼바이저가 없을 수 있다. 비록 세션 0은 시스템 서비스들을 포함할 수 있지만, 그것은 서비스 관리되는 디바이스들 (406)을 관리하기 위한 디바이스 관리 서비스들 (또는 그것의 가상화된 인스턴스들)을 포함하지 않을 수 있다.
특정 세션에서 사용될 각각의 서비스 관리되는 디바이스 (406)를 위하여, 그것의 관리 서비스들 (예를 들어, 그것의 디바이스 드라이버)의 가상화된 세션 인스턴스 (504) 및 대응하는 리다이렉트(redirect)/가상화 계층 (506)이 세션내 서비스 관리되는 디바이스 (406)의 디바이스 유형 (506)의 관리를 위해 세션 관리기에 의해 생성될 수 있다. 결과적으로, 세션들 (예를 들어, 세션 1…세션 N)은 특정 디바이스 유형을 관리하기 위해 해당 세션과 사용을 위한 디바이스 관리 서비스의 세션 인스턴스 (504) (예를 들어, 디바이스 드라이버의 가상화된 인스턴스)를 각각 포함할 수 있다. 더구나, 세션 관리기는 디바이스 유형을 관리하는데 디바이스 관리 서비스의 인스턴스 (506)를 보조하기 위해 각각의 인스턴스를 위한 리다이렉트/가상화 계층 (506)을 생성할 수 있다. 예를 들어, 세션 1은 디바이스 관리 서비스 A의 세션 인스턴스 (504A) 및 디바이스 유형 A (예를 들어, 스마트카드 (406A)를 위한 스마트카드 유형)을 관리하기 위한 리다이렉션(redirection) 가상 계층(virtual layer) (506A)을 포함할 수 있다. 세션 1은 디바이스 관리 서비스 B의 세션 인스턴스 (504B) 및 디바이스 유형 B (예를 들어, USB 기반 디바이스(406B를 위한 스마트카드 유형)을 관리하기 위한 리다이렉션 가상 계층 (506B)을 또한 포함할 수 있다. 유사하게, 세션 N은 디바이스 관리 서비스 A의 다른 세션 인스턴스 (504A) 및 디바이스 유형 A (예를 들어, 스마트카드 (406A)를 위한 스마트카드 유형)을 관리하기 위한 리다이렉션 가상 계층(506A)을 포함할 수 있다. 세션 N은 디바이스 관리 서비스 B의 세션 인스턴스 (504B) 및 디바이스 유형 B (예를 들어, USB 기반 디바이스(406B를 위한 스마트카드 유형)을 관리하기 위한 리다이렉션 가상 계층 (506B)을 또한 포함할 수 있다.
비록 디바이스 관리 서비스들의 두개의 인스턴스들 (504) 및 리다이렉트/가상화 계층들 (506)이 도 5에 두개의 디바이스 유형들 A 및 B에 대하여 도시되지만, 두개보다 많거나 또는 작은 디바이스 관리 서비스들 (504) 및 리다이렉트/가상화 계층들 (506)이 이용될 수 있고, 이는 해당 세션에서 사용되는 상이한 디바이스 유형들의 수에 대응할 수 있다.
도 6은 본 출원에 하나 이상의 예시적인 측면들에 따른 특정 서비스 관리되는 디바이스에 대한 세션 1 부분의 분해 조립도의 블럭 다이어그램 뷰를 도시한다. 새로운 세션의 생성 동안에, 세션 관리기는 다양한 디바이스 관리 서비스들을 호스트할 수 있는 가상 서비스 호스트 프로세스 컨테이너를 생성하기 위해 스타트업(startup) 프로세스를 사용할 수 있다. 스타트업 프로세스 동안에, 세션 관리기는 윈도우즈를 위한 클라이언트/서버 런타임 서브시스템 (CRSS) 및 그래픽스 서브시스템 및 인증 서브시스템들 (예를 들어, Winlogon, LogonUI)과 인터페이스하기 위한 초기화 및 통지 인터페이스(initialization and notification interface) (602)를 생성할 수 있다. 추가적으로, 초기화 및 통지 인터페이스 (602)는 디바이스 관리 서비스 A의 세션 인스턴스 (504A)에 초기화 및 셧다운 인터페이스들을 제공할 수 있다. 결과적으로, 디바이스 관리 서비스 A의 세션 인스턴스 (504A)는 스타트업 프로세스가 호출된 때 그것의 디바이스-특정 모니터링을 시작할 수 있다. 디바이스 관리 서비스 A의 세션 인스턴스 (504A)는 또한 셧다운을 핸들링할 수 있고 따라서 통지들을 재시작할 수 있다. 더구나, 초기화 및 통지 인터페이스 (602)는 호스팅 세션-특정 통지들 (예를 들어, 락(lock), 언락(unlock), 로그온(logon), 프리-로그오프(pre-logoff), 등)을 수신하기 위해 디바이스 관리 서비스 A의 세션 인스턴스 (504A)를 허용할 수 있다. 더구나, 스타트업 프로세스 동안에, 세션 관리기는 가상 서비스 호스트 프로세스를 갖는 프로세스들을 로딩하고 미리-등록된 제 3 자 서비스들과 관련된 임의의 다른 스타트업 프로세스들을 또한 생성할 수 있다. 예를 들어, 세션 관리기는 원격 서버 (402)에 의해 생성된 각각의 세션내 미리-구성된 디바이스 관리 서비스들을 호스트 할 새로운 프로세스를 생성할 수 있다.
하나 이상의 가상화된 유저 애플리케이션들 (604)이 서비스 관리되는 디바이스 (406)의 기능을 액세스하기를 원할 때. 리다이렉션 가상 계층 (608)은 서비스 관리되는 디바이스 (406)에 대해 의도된 애플리케이션으로부터 디바이스 관리 서비스 A의 세션 인스턴스 (504A)로 통신 (예를 들어, 명령어 또는 명령)을 재라우팅(reroute)할 수 있고, 그런 다음 재포맷할 수 있고 및/또는 그렇지 않으면, 서비스 관리되는 디바이스 (406)에 의해 이해가능하는 포맷으로 통신을 변환할 수 있다. 디바이스 관리 서비스 A의 세션 인스턴스 (504A)는 그런 다음 변환된 통신을 서비스 관리되는 디바이스 (406)로 발송할 수 있다. 응답에서, 서비스 관리되는 디바이스 (406)는 변환된 통신에 의해 명령된 기능을 수행할 수 있다. 일 예로서, 서비스 관리되는 디바이스 (406)가 스마트카드 (406A)인 경우에, 스마트카드 (406A)는 유저의 인증 자격들을 검색할 수 있거나 또는 일부 다른 기능을 수행할 수 있다. 서비스 관리되는 디바이스 (406)는 적절하다면 응답 통신을 애플리케이션으로 발송할 수 있다. 그러나, 리다이렉션 가상 계층 (608)은 디바이스 관리 서비스 A의 세션 인스턴스 (504A)로 통신을 재라우팅할 수 있고, 그런 다음 재포맷할 수 있고 및/또는 그렇지 않으면, 애플리케이션에 의해 이해가능한 포맷으로 응답 통신을 변환할 수 있다.
리다이렉션 가상 계층 (506A)은 디바이스 관리 서비스 A의 세션 인스턴스 (504A)으로 그리고 거기로부터 발송된 각각의 통신을 인터셉트할 수 있고 검사할 수 있다. 만약 통신이 미리 결정된 기준을 충족하면, 리다이렉션 가상 계층은 액션(action)을 수행할 수 있다(예를 들어, 통신은 재라우팅될 수 있고 및/또는 특정한 자원은 가상화될 수 있다). 미리 결정된 기준은 제 3 자 또는 다른 엔티티에 의한 디바이스 관리 서비스의 등록 동안에 셋팅될 수 있다.
일부 경우들에서, 미리 결정된 기준은 통신이 글로벌 오브젝트/자원에 대한 기준들을 포함하는지 여부일 수 있다 (예를 들어, 오브젝트(object) 또는 자원은 세션에 특정되지 않는다). 이런 경우들에서, 리다이렉션 가상 계층(506A)은 세션에 특정된 글로벌 자원의 가상 인스턴스를 액세스하기 위해 글로벌 자원을 향하고 세션과 관련된 통신을 리다이렉션할 수 있다. 예를 들어, 리다이렉션 가상 계층 (506A)은 세션과의 사용을 위한 글로벌 자원의 가상 인스턴스가 리다이렉션 데이터베이스 (610) 및/또는 세션-특정 데이터베이스 (606)에 존재하는지 여부를 결정할 수 있다. 만약 그렇지 않다면, 리다이렉션 가상 계층 (506A)은 세션과의 사용을 위한 글로벌 자원의 가상 인스턴스를 생성할 수 있고, 리다이렉션 데이터베이스 (610) 및/또는 세션-특정 데이터베이스 (606) 중 하나 이상에 글로벌 자원의 글로벌 인스턴스의 가상 인스턴스를 저장할 수 있고, 글로벌 자원과 글로벌 자원의 가상 인스턴스간의 상응 관계(correspondence)를 포함하도록 리다이렉션 데이터베이스 (610)에 저장된 매핑(mapping)을 업데이트 할 수 있다. 리다이렉션 가상 계층(redirection virtual layer)(506A)은 또한 글로벌 자원 그 자체를 액세스하기 보다는 세션에 특정된 글로벌 자원의 가상 인스턴스를 액세스하기 위해 직접 통신할 수 있다. 그렇지 않고, 만약 리다이렉션 가상 계층 (506A)은 세션과 사용을 위한 글로벌 자원의 가상 인스턴스가 리다이렉션 데이터베이스 (610)에 저장된 매핑을 컨설팅(consulting) 함으로써 존재한다고 결정하면, 리다이렉션 가상 계층 (506A)은 글로벌 자원 그 자체를 액세스하기 보다는 세션에 특정된 글로벌 자원의 가상 인스턴스를 액세스하기 위한 통신을 다이렉트(direct)하기 위해 매핑을 사용할 수 있다.
본 출원에 논의된 많은 예들에서, 미리 결정된 기준은 특정 파일 또는 메모리 위치에 기록 또는 판독 명령어(command)일 수 있다. 일 예로서, 만약 통신이 글로벌 레지스트리 데이터베이스 (410)내 글로벌 디바이스-특정 정보 및/또는 서비스 관리되는 디바이스 (406)에 할당된 글로벌 레지스트리 데이터베이스 (410)내 자원 (예를 들어, 메모리 위치)에 기록 명령어 또는 판독 명령어라면, 리다이렉트 가상화 계층 (506A)은 해당 명령어들을 세션-특정 데이터베이스 (606)로 리다이렉트할 수 있고 이런 명령어들은 글로벌 레지스트리 데이터베이스 (410)로 발송되지 않을 수 있다. 각각의 세션 (예를 들어, 세션 1…세션 N)은 그것 자체의 세션-특정 데이터베이스 (606)와 관련될 수 있고, 이는 레지스트리 데이터베이스 리다이렉션과의 사용을 위한 원격 서버 (402)의 로직상의 메모리 파티션일 수 있다.
리다이렉션 가상 계층 (506A)은 라우팅 정책들을 저장할 수 있는 리다이렉션 데이터베이스 (610)를 컨설팅(consult)할 수 있다(예를 들어, 세션-특정 데이터베이스 (606)내 메모리 위치들에 레지스트리 데이터베이스 (410)내 메모리 위치들의 매핑). 매핑을 이용하여, 리다이렉션 가상 계층 (506A) 및/또는 세션 관리기는 기록 명령어 또는 판독 명령어로부터 글로벌 레지스트리 데이터베이스 (410)의 의도된 메모리 위치를 검색할 수 있고, 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치에 대응하는 세션-특정 데이터베이스 (606)의 메모리 위치를 결정할 수 있다. 리다이렉션 가상 계층 (506A)은 그런 다음 기록 명령어 또는 판독 명령어를 재라우팅할 수 있어서 기록 명령어 또는 판독 명령어는 글로벌 레지스트리 데이터베이스 (410)의 원래-지정된 메모리 위치 보다는 세션-특정 데이터베이스 (606)의 대응하는 메모리 위치로부터 정보를 판독하거나 또는 거기에 정보를 기록한다. 일 예로서, 기록 명령어에 대하여, 글로벌 레지스트리 데이터베이스 (410)의 파일에 정보를 기록하는 대신에, 정보는 서비스 관리되는 디바이스 (406)와 사용을 위해 할당되어진 세션-특정 데이터베이스 (606)의 파일에 기록될 수 있다. 다른 예로서, 판독 명령어에 대하여, 글로벌 레지스트리 데이터베이스 (410)에 파일로부터 정보를 판독하는 대신에, 정보는 세션-특정 데이터베이스 (606)내 파일로부터 판독될 수 있다.
글로벌 레지스트리 데이터베이스 (410) (각각의 세션에 의해 액세스 가능한)로부터 세션-특정 데이터베이스 (606) (단지 그것의 대응하는 세션에 의해 액세스 가능한)로 기록 명령어들 및 판독 명령어들의 리다이렉션의 결과로서, 양쪽 세션들이 동일한 유형의 서비스 관리되는 디바이스 (406)를 이용하고 있을 때 특정 세션에서 운용하는 서비스의 하나의 인스턴스는 다른 세션에서 운용하는 서비스의 다른 인스턴스의 자원들을 변경할 수 없다. 리다이렉션을 활용함으로써, 다른 인스턴스에 의한 글로벌 레지스트리 데이터베이스 (410)로부터의 정보의 부정확한 판독으로 귀결되는 서비스의 하나의 인스턴스에 의한 글로벌 레지스트리 데이터베이스 (410)에 정보의 부적절한 오버라이트에 관한 상기의 예는 회피될 수 있다.
추가적으로, 하나 이상의 장치들에서, 리다이렉션 가상 계층 (506A)은 글로벌 레지스트리 데이터베이스 (410)내 의도된 메모리 위치가 매핑에 기초하여 세션-특정 데이터베이스 (606)내 대응하는 메모리 위치를 가지지 않는지 여부를 결정할 수 있다. 특정-데이터베이스 (606)에 대응하는 메모리 위치가 없을 때 그리고 통신이 글로벌/공유된 시스템 자원 (예를 들어, 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치)에 있을 때, 리다이렉션 가상 계층 (506A)은 하나 이상의 정책들을 통하여 글로벌 레지스트리 데이터베이스 (410)에 의도된 메모리 위치에 대응하도록 세션-특정 데이터베이스 (606)에 자원을 가상하고 및/또는 메모리를 할당하고, 세션-특정 데이터베이스 (606)내 새롭게 할당된 메모리 위치로 통신을 리다이렉트하고, 새로운 상응 관계를 반영하기 위해 매핑을 업데이트하도록 구성될 수 있다.
통신이 판독 명령어이고 세션-특정 데이터베이스 (606)가 판독 명령어가 리다이렉션 가상 계층 (506A)에 의해 리다이렉트되었던 메모리-위치에 저장된 정보를 가지고 있지 않는 이벤트에서, 리다이렉션 계층 (506A)은 판독 명령어를 글로벌 레지스트리 데이터베이스 (410) (예를 들어, 판독 명령어에 표시된 글로벌 레지스트리 데이터베이스 (410)의 원래의 메모리 위치)로 리다이렉트할 수 있다. 이런 경우에, 세션 관리기는 디바이스 관리 서비스들 및 애플리케이션들에 의한 나중에 참조를 위해 판독 명령어의 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치를 세션-특정 데이터베이스 (606)에 저장할 수 있다. 추가적으로 또는 대안적으로, 일부 실시예들에서, 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치들로부터 판독할 판독 명령어를 라우팅하기 보다는, 세션 관리기는 스타트업 프로세스 동안에 디폴트 값들로 세션-특정 데이터베이스 (606)의 하나 이상의 대응하는 메모리 위치들을 채울 수 있다(populate). 하나 이상의 장치들에서, 세션-특정 데이터베이스 (606)의 하나 이상의 메모리 위치들에 대한 디폴트 값들은 유저, 관리자에 의해, 및/또는 디바이스 관리 서비스 A의 세션 인스턴스 (504A)에 의해 사전 설정될 수 있다. 하나 이상의 추가의 또는 대안적인 장치들에서, 디폴트 값들은 글로벌 레지스트리 데이터베이스 (410)의 대응하는 메모리 위치들에 현재 저장된 값들 일 수 있다. 결과적으로, 세션-특정 데이터베이스 (606)의 대응하는 메모리 위치들에 저장된 값들은 서비스 관리되는 디바이스 (406) 또는 그것의 디바이스 관리 서비스 A와의 사용을 위해 할당된 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치에 저장된 값들에 일치할 것이다.
일부 실시예들에서, 등록 디바이스의 관리 서비스의 등록 동안에, 제 3 자 및/또는 다른 엔티티는 어떤 글로벌 자원들 또는 메모리 위치들이 리다이렉션 데이터베이스 (610)에 저장된 매핑에 세션-특정 가상화된 자원들 및/또는 세션-특정 메모리 위치들에 할당되어야 하는지의 표시를 생성할 수 있다. 이런 실시예들에서, 스타트업 프로세스 동안에 (예를 들어, 세션 생성 동안에), 세션 관리기는 어느 자원 및/또는 글로벌 메모리 위치들 (예를 들어, 레지스트리 데이터베이스 (410)의 메모리 위치들)이 특정 세션내 사용을 위한 그것의 디바이스 관리 서비스 A 또는 서비스 관리되는 디바이스 (406)에 대하여 할당된 대응하는 가상화된 자원들 및 대응하는 메모리 위치들을 가져야 하는지를 결정하기 위해 리다이렉션 데이터베이스 (610)을 컨설팅할 수 있다.
리다이렉션 가상 계층 (506A)은 또한 오브젝트 이름 번역 계층(object name translation layer)의 역할을 할 수 있다. 하나 이상의 대안 장치들에서, 오브젝트 이름 번역 계층은 리다이렉션 가상 계층 (506A)과 별개의 계층일 수 있다. 오브젝트 이름 번역 계층은 세션-특정 오브젝트 이름 분해능(resolution)을 제공하기 위해 이름 번역 정책들을 저장할 수 있는 오브젝트 이름 번역 데이터베이스 (612) (또한 본 출원에서 번역 데이터베이스 (612)로서 언급된)을 사용할 수 있다.
디바이스 관리 서비스들 예컨대 디바이스 관리 서비스 A는 단일 세션 환경에 대하여 디자인되었기 때문에, 이런 서비스들은 글로벌 오브젝트 이름들 (예를 들어, 특정 세션 예컨대 세션 1에 특정되지 않은 오브젝트 이름들)을 사용할 수 있다. 결과적으로, 디바이스 관리 서비스들을 멀티-세션 환경에 대하여 적응시키기 위해서, 글로벌 오브젝트 이름들은 세션-특정 오브젝트 이름들로 변화될 수 있다. 세션-특정 오브젝트 이름들로 글로벌 오브젝트 이름들의 매핑이 스타트업 프로세스 동안에 (예를 들어, 세션 생성동안에) 할당되고 차지될 수 있는 오브젝트 이름 번역 데이터베이스 (612)에 저장될 수 있다. 일부 경우들에서, 디바이스 관리를 위한 세션-특정 오브젝트 이름들에 대한 분류 체계(taxonomy)는 디바이스 관리 서비스의 등록 동안에 지정될 수 있다.
도 6 에 도시된 세션 1을 참고로 하여, 리다이렉션 가상 계층 (506A)은 통신이 글로벌 오브젝트 이름 (예를 들어, 특정 세션에 특정되지 않은 오브젝트 이름)을 함유하는지 여부를 결정하기 위해 디바이스 관리 서비스 A의 세션 인스턴스 (504A)로부터 그리고 거기로의 통신을 검사할 수 있다. 리다이렉션 가상 계층 (506A)은 오브젝트 이름 번역 데이터베이스 (612)에 저장된 글로벌 오브젝트 이름들의 리스트를 컨설팅함으로써 통신이 글로벌 오브젝트 이름을 포함하는지 여부를 결정할 수 있다. 만약 그렇다면, 리다이렉션 가상 계층 (506A)은 오브젝트 이름 번역 데이터베이스 (612)내 각각의 글로벌 오브젝트 이름에 대한 세션-특정 오브젝트 이름을 룩 업(look up)할 수 있고 통신에, 글로벌 오브젝트 이름들을 세션-특정 오브젝트 이름들로 대체할 수 있다.
유사하게, 리다이렉션 가상 계층 (608)은 통신이 글로벌 오브젝트 이름 (예를 들어, 세션 예컨대 세션 1에 특정되지 않은 오브젝트 이름)을 함유하는지 여부를 결정하기 위해 유저 애플리케이션들 (604)로부터 그리고 유저 애플리케이션으로의 통신을 검사할 수 있고 통신에, 글로벌 오브젝트 이름들을 오브젝트에 대한 세션을 나타낼 수 있는 세션-특정 오브젝트 이름들로 대체할 수 있다. 일 예로서, “Foo”의 글로벌 오브젝트 이름은 해당 오브젝트가 세션 1에 특정된 것을 나타내기 위해서 세션-특정 오브젝트 이름 “Foo.세션1”으로 대체될 수 있다. 시스템의 글로벌 오브젝트 이름들을 세션-특정 오브젝트 이름들로 재명명함으로써, 디바이스 관리 서비스 A의 세션 인스턴스 (504A)는 세션 경계들이 유지되고 및/또는 다른 식으로, 다른 세션들에 의해 교차되지 않는 것을 보장하기 위해 세션-특정 오브젝트 이름들을 이용하여 통신할 수 있다. 제 3 자 벤더들 또는 파트너들은 디바이스 관리 서비스들이 임의의 변경들 없이 워크스테이션 및 멀티-세션 플랫폼들 양쪽에서 할 수 있도록 세션들과의 사용을 위해 세션-특정 명명 규정(session-specific naming convention)을 특정할 수 있다. 결과적으로, 제 3 자 벤더들 및 파트너들은 단일화된(unified) 서비스 모델에 집중할 수 있고 워크스테이션 및 멀티-세션 플랫폼들을 위해 디바이스 관리 서비스를 변경하는데 훨씬 많은 노력 및 시간을 낭비하지 않을 수 있다.
일부 실시예들에서, 리다이렉션 데이터베이스 (610) 및/또는 리다이렉션 계층 (608)은 글로벌 오브젝트 이름들을 세션-특정 오브젝트 이름들로 재명명함으로써 파일들을 위한 통신을 리다이렉트할 수 있다.
일부 실시예들에서 그리고 도 6 에 도시된 바와 같이, 세션 (예를 들어, 세션 1)은 디바이스 관리 서비스 A의 세션 인스턴스 (504A)와 관련되고, 서비스 관리되는 디바이스 (406)와 통신상태에 있는 디바이스 드라이버 (614)를 포함할 수 있다. 디바이스 드라이버 (614)는 원격 서버 (402) 및/또는 클라이언트 디바이스 (404)의 커널 스페이스(kernel space)에 상주할 수 있다. 일부 경우들에서, 디바이스 드라이버 (614)는 원격 서버 (402)상에서 실행되는 운영 체제의 부분일 수 있다. 다른 인스턴스들에서, 디바이스 드라이버 (614)는 원격 서버 (402)상에서 실행되는 운영 체제와 독립적일 수 있고 (예를 들어, 부분이 아닌) 그리고 제 3 자 벤더에 의해 공급될 수 있다. 이런 경우들에서, 디바이스 관리 서비스 A의 세션 인스턴스 (504A)는 유저 모드에서 실행될 수 있지만 한편 디바이스 기능을 수행하는 실제 드라이버 (예를 들어, 디바이스 드라이버 (614))는 원격 서버 (402)의 커널 스페이스에서 실행될 수 있다.
비록 도 6 과 관련한 상기의 논의는 하나의 서비스 관리되는 디바이스 및 그것의 대응하는 디바이스 관리 서비스를 참고로 하였지만, 세션은 제 2 서비스 관리되는 디바이스 및 그것의 대응하는 디바이스 관리 서비스를 포함할 수 있다. 세션은 제 2 서비스 관리되는 디바이스 및 그것의 대응하는 디바이스 관리 서비스에 대하여 유사한 방식으로 동작할 수 있다. 더구나, 상이한 유저에 대응하는 상이한 세션은 하나 이상의 서비스 관리되는 디바이스들 및 그것들의 대응하는 디바이스 관리 서비스들을 포함할 수 있고, 도 6와 관련하여 상기에서 논의된 유사한 방식으로 동작할 수 있다.
도 7은 본 출원에서 설명되는 하나 이상의 예시적인 측면들에 따른 가상화된 디바이스 관리 서비스의 로딩(loading) 및 세션 스타트업의 예시적인 플로우를 도시한다. 하나 이상의 실시예들에서, 도 7의 단계들 및/또는 그것의 하나 이상의 단계들은 하나 이상의 컴퓨팅 디바이스들에 의해 수행될 수 있다. 다른 실시예들에서, 도 7에 예시된 방법 및/또는 그것의 하나 이상의 단계들 컴퓨터 판독가능 매체, 예컨대 비-일시적 컴퓨터-판독가능한 메모리에 저장된 컴퓨터-실행 가능한 명령들로 구체화될 수 있다. 일부 경우들에서, 도 7의 하나 이상의 단계들은 상이한 순서로 수행될 수 있다. 일부 경우들에서, 도 7의 하나 이상의 단계들은 생략될 수 있고 및/또는 그렇지 않으면, 수행되지 않을 수 있다.
방법은 원격 서버 (402)는 스타트업 프로세스를 통하여, 멀티-세션 가상화된 환경에 세션을 개시하고 및/또는 그렇지 않으면, 세션을 생성할 수 있는 단계 (702)에서 시작할 수 있다. 일 예로서, 클라이언트 디바이스 (404A)에서 유저는 원격 서버 (402)상에서 실행되는 애플리케이션들을 원격에서 액세스하고 싶어할 수 있다. 유저는 원격 서버 (402)에 의해 제공되는 가상화된 애플리케이션 서비스들을 액세스하기 위해 포털(portal)에 로그인할 수 있다. 수신 유저의 인증 자격들 수신에 응답하여, 원격 서버 (402)는 유저를 인증할 수 있고 만약 유저가 인증되면, 원격 서버 (402)에 의해 관리되는 멀티-세션 환경에 해당 유저에 대한 세션을 개시할 수 있다. 만약 유저의 인증 자격들이 인증되지 않으면, 원격 서버 (402)는 유저에 디스플레이하기 위해 유저가 클라이언트 디바이스 (404A)에 인증되지 않은 것을 나타내는 메시지를 발송할 수 있다.
만약 유저가 인증되면, 원격 서버 (402)는 단계 (704)에서, 유저의 클라이언트 디바이스에 연결된 서비스 관리되는 디바이스들을 식별할 수 있고 각각의 대응하는 디바이스 관리 서비스가 미리-구성되었는지 여부를 (예를 들어, 이 세션을 생성하기에 앞서 등록되고 및/또는 그렇지 않으면, 셋업) 결정할 수 있다. 제 3 자 엔티티들은 멀티-세션 환경에서의 사용을 위해 그것들의 디바이스 관리 서비스들을 등록할 수 있고 및/또는 그렇지 않으면 그것들을 구성할 수 있다. 예를 들어, 디바이스 관리 서비스의 구성 동안에, 하나 이상의 라우팅 정책들 (예를 들어, 메모리 위치들, 파일들, 데이터베이스들, 등의 매핑) 및 파일 또는 오브젝트 이름 번역 정책들은 리다이렉션 가상의 계층들에 의한 나중 사용을 위해 결정될 수 있다 (예를 들어, 제 3 자에 의해 선택될 수 있다). 만약 디바이스 관리 서비스가 미리 구성되지 않았다면, 그러면 원격 서버 (402)는 통신 (예를 들어, 기록 명령어들, 판독 명령어들, 등)을 세션-특정 데이터베이스로 적절하게 리다이렉트 및/또는 글로벌 오브젝트 이름들을 세션-특정 오브젝트 이름들로 번역할 수 없고, 결과적으로, 상기에서 논의된 오버라이트(overwrite) 및 부정확한 판독 문제들로 이어지지 않을 수 있다. 디바이스 관리 서비스의 가상화된 인스턴스들, 라우팅 정책들, 및/또는 재명명 정책들 중 하나 이상의 생성을 허용하기 위해 미리구성되지 않은 유저의 클라이언트 디바이스에 연결된 서비스 관리되는 디바이스들과 관련된 각각의 디바이스 관리 서비스들에 대하여, 원격 서버 (402)는 단계 (710)로 진행할 수 있고 다른 세션 프로세스들 (예를 들어, 유저에 대한 세션을 셋업하는 다른 프로세스들)을 시작할 수 있다. 더구나, 경고 메시지(warning message)가 유저에게 디스플레이를 위해서 원격 서버 (402)로부터 유저의 클라이언트 디바이스 (4064)로 송신될 수 있다. 경고 메시지는 유저의 클라이언트 디바이스 (404)에 연결된 서비스 관리되는 디바이스들 (406)이 적절하게 기능하지 않을 수 있고 부정확한 정보를 디스플레이 할 수 있다는 것을 표시할 수 있다. 추가적으로, 원격 서버 (402)는 글로벌 레지스트리 데이터베이스 (410)에 저장된 정보가 멀티-세션 환경의 다른 세션들에 대하여 정확하게 잔존한다는 것을 보장하기 위해 등록되지 않고 및/또는 구성되지 않은 디바이스 관리 서비스들로부터 있는 글로벌 레지스트리 데이터베이스 (410)에 기록 명령어들을 방지할 수 있다.
디바이스 관리 서비스의 가상화된 인스턴스들, 라우팅 정책들, 및/또는 재명명 정책들 중 하나 이상의 생성을 허용하기 위해 미리구성된 유저의 클라이언트 디바이스에 연결된 서비스 관리되는 디바이스들과 관련된 각각의 디바이스 관리 서비스들에 대하여, 원격 서버 (402)는 단계 (706)에서 디바이스 관리 서비스들 호스트를 시작하고 하나 이상의 미리 구성된 디아비스 관리 서비스들의 가상화된 세션 인스턴스들을 로딩할 수 있다. 예를 들어, 원격 서버 (402)는 세션 1에서, 디바이스 관리 서비스 A의 세션 인스턴스 (504A) 및 디바이스 관리 서비스 B의 세션 인스턴스 (504B)를 생성할 수 있다. 디바이스 관리 서비스의 가상화된 세션 인스턴스는 디바이스 관리 서비스의 모든 기능을 포함할 수 있다.
단계 (708)에서, 원격 서버 (402)는 단계(706)에서 생성된 디바이스 관리 서비스의 각각의 세션 인스턴스에 대하여 리다이렉션 가상 계층들 (예를 들어, 리다이렉션 가상 계층들 (506,608))을 빌드(build)할 수 있다. 하나 이상의 장치들에서, 디바이스 관리 서비스의 등록 및/또는 구성동안에, 원격 서버 (402)는 디바이스 관리 서비스 또는 그것의 관련된 제 3 자 엔티티로부터 라우팅 정책들 및 이름 번역 정책들을 결정 및/또는 그렇지 않으면, 수신할 수 있다. 원격 서버 (402)는 그런 다음 리다이렉션 가상 계층들을 구성하기 위해 그런 정책들을 사용할 수 있다. 더구나, 원격 서버 (402)는 이미 생성되지 않았다면 세션-특정 데이터베이스 (606), 리다이렉션 데이터베이스 (610) 및/또는 오브젝트 이름 번역 데이터베이스 (612)를 생성할 수 있다.
단계 (710)에서, 원격 서버 (402)는 멀티-세션 환경에 유저의 세션을 생성하기 위해 다른 세션 프로세스를 개시할 수 있다. 예를 들어, 원격 서버 (402)는 유저의 클라이언트 디바이스에 의한 사용을 위해 유저의 애플리케이션들의 가상화된 인스턴스들을 생성할 수 있다.
도 8은 본 출원에서 설명되는 하나 이상의 예시적인 측면들에 따른 서비스 관리되는 디바이스로 애플리케이션 론칭(launching) 및 애플리케이션을 이용하는 예시적인 플로우를 도시한다. 하나 이상의 실시예들에서, 도 8의 단계들 및/또는 그것의 하나 이상의 단계들은 하나 이상의 컴퓨팅 디바이스들에 의해 수행될 수 있다. 다른 실시예들에서, 도 8에 예시된 방법 및/또는 그것의 하나 이상의 단계들 컴퓨터 판독가능 매체, 예컨대 비-일시적 컴퓨터-판독가능한 메모리에 저장된 컴퓨터-실행 가능한 명령들로 구체화될 수 있다. 일부 경우들에서, 도 8의 하나 이상의 단계들은 상이한 순서로 수행될 수 있다. 일부 경우들에서, 도 8의 하나 이상의 단계들은 생략될 수 있고 및/또는 그렇지 않으면, 수행되지 않을 수 있다.
플로우는 원격 서버 (402)가 멀티-세션 가상화된 환경에 애플리케이션의 가상화된 인스턴스를 론칭(launch)할 수 있는 단계 (802)에서 시작할 수 있다. 예를 들어, 원격 서버 (402)는 하나의 세션에 사용을 위해 애플리케이션의 가상화된 세션-특정 인스턴스를 생성할 수 있다. 인스턴스는 애플리케이션의 모든 기능을 포함할 수 있고, 유저의 클라이언트 디바이스 (404)에 의해 제공된 입력들을 이용하여 원격 서버 (402)에 의해 실행될 수 있다. 출력들은 유저에 디스플레이를 위해서 클라이언트 디바이스 (404)로 발송될 수 있다.
단계 (804)에서, 원격 서버 (402)는 애플리케이션들의 가상화된 애플리케이션 인스턴스들의 하나 이상 (예를 들어, 각각)과 디바이스 관리 서비스들의 가상화된 세션 인스턴스의 하나 이상(예를 들어, 각각) 사이에 오픈 통신 채널이 있는지 여부를 결정할 수 있다. 예를 들어, 만약 통신이 디바이스 관리 서비스들의 가상화된 세션 인스턴스들의 적어도 하나와 동일한 세션내에 가상화된 애플리케이션 인스턴스들의 적어도 하나 사이에 송신되면 오픈 통신 채널이 있을 수 있다. 만약 오픈 통신 채널이 없다면, 프로세스는 이하에 상세하게 논의되는 단계 (808)로 진행할 수 있다. 그렇지 않고, 만약 오픈 통신 채널 (예를 들어, 통신이 디바이스 관리 서비스의 가상화된 세션 인스턴스와 가상화된 애플리케이션 인스턴스 사이에 송신되고 있는)이 있다면, 리다이렉션 가상 계층은 글로벌 자원들 예컨대 비-세션-특정 메모리 위치들, 파일들, 레지스트리 데이터베이스 (410), 등에 참조부분(reference)들을 식별하기 위해, 그리고 또한 글로벌 오브젝트 이름들 (예를 들어, 시스템 오브젝트 이름들, 운영 체제 오브젝트 이름들, 등)을 식별하기 위해 통신을 인터셉트할 수 있고 검사할 수 있다.
단계 (806)에서, 리다이렉션 가상 계층은 단계 (804)에서 식별된 글로벌 자원들 예컨대 비-세션-특정 메모리 위치들, 파일들, 레지스트리 데이터베이스 (410), 등 그리고 또한 글로벌 오브젝트 이름들 (예를 들어, 시스템 오브젝트 이름들, 운영 체제 오브젝트 이름들, 등)에 각각의 참조부분들에 대하여 통신 리다이렉션 및/또는 시스템 오브젝트 이름 번역을 수행할 수 있다.
일 예로서, 애플리케이션으로부터 통신 (또는, 대안적으로, 디바이스 관리 서비스의 세션 인스턴스로부터)은 임의의 세션에 특정되지 않은 글로벌 레지스트리 데이터베이스 (410), 파일, 또는 다른 메모리 위치로의 기록 명령어일 수 있다. 리다이렉션 가상 서버 (506)는 리다이렉션 데이터베이스 (610)를 컨설팅함으로써 통신과 관련된 세션에 특정된 대응하는 메모리-위치 또는 파일이 있는지 여부를 결정할 수 있다. 만약 세션-특정 데이터베이스 (예를 들어, 세션-특정 데이터베이스 (606))가 없다면, 리다이렉션 가상 계층 (506)은 원격 서버 (402)의 메모리 파티션일 수 있는 세션-특정 데이터베이스 (606)을 생성할 수 있다. 생성된 후에 또는 만약 세션-데이터베이스 (606)가 이미 존재하지만 그러나 기록 명령어에 지정된 글로벌 레지스트리 데이터베이스 (410)의 메모리-위치 또는 파일에 매핑된 메모리 위치 또는 파일을 가지지 않는다면, 리다이렉션 가상 계층 (506)은 세션-특정 데이터베이스 (606)에 메모리 위치 또는 파일을 할당할 수 있고, 글로벌 레지스트리 데이터베이스 (410)의 메모리 위치 또는 파일을 세션-특정 데이터베이스 (606)의 메모리 위치 또는 파일에 매핑할 수 있고, 리다이렉션 데이터베이스 (610)에 저장된 세션에 대한 매핑을 업데이트할 수 있다. 더구나, 기록 명령어는 세션-특정 데이터베이스 (606)의 메모리-위치 또는 파일에 그것의 정보를 기록하기 위해 리다이렉트될 수 있고, 글로벌 레지스트리 데이터베이스 (410)의 의도된 메모리-위치 또는 파일에 그것의 정보를 기록하지 않을 수 있다.
다른 예로서, 애플리케이션으로부터 통신 (또는, 대안적으로, 디바이스 관리 서비스의 세션 인스턴스로부터)은 임의의 세션에 특정되지 않은 글로벌 레지스트리 데이터베이스 (410), 파일, 또는 다른 메모리 위치로부터의 판독 명령어일 수 있다. 리다이렉션 가상 서버 (506)는 리다이렉션 데이터베이스 (610)를 컨설팅함으로써 통신과 관련된 세션에 특정된 대응하는 메모리-위치 또는 파일이 있는지 여부를 결정할 수 있다. 만약 세션-특정 데이터베이스 (예를 들어, 세션-특정 데이터베이스 (606))이 없다면 또는 만약 세션-특정 데이터베이스 (606)가 글로벌 레지스트리 데이터베이스의 의도된 메모리 위치 또는 파일에 매핑된 메모리 위치 또는 파일을 가지지 않으면, 리다이렉션 가상 계층은 임의의 세션에 특정되지 않은 글로벌 레지스트리 데이터베이스 (410), 파일, 또는 다른 메모리 위치로부터 판독 명령어를 판독하는 것을 허용할 수 있다. 그렇지 않고, 만약 글로벌 레지스트리 데이터베이스 (410)의 의도된 메모리-위치 또는 파일에 매핑된 세션-특정 데이터베이스 (606)내 메모리-위치 또는 파일이 있다면, 리다이렉션 가상 계층 (506)은 글로벌 레지스트리 데이터베이스 (410)의 의도된 메모리-위치 또는 파일로부터 보다는 세션-특정 데이터베이스 (606)내 메모리-위치 또는 파일에 저장된 정보를 판독하도록 판독 명령어를 리다이렉트할 수 있다.
또 다른 예로서, 리다이렉션 가상 계층 (506,608)은 임의의 세션에 특정되지 않은 글로벌 시스템 오브젝트 이름들에 대한 임의의 참조부분들을 위하여, 오브젝트 이름 번역 데이터베이스 (612)에 발견된 그것의 대응하는 세션-특정 오브젝트 이름으로 해당 통신내 참조부분을 재명명할 수 있다. 예를 들어, 글로벌 오브젝트 이름 “Foo”는 세션 1에 대하여 “Foo.세션1”으로 그리고 세션 2에 대하여 “Foo.세션2”로 재명명될 수 있다.
단계 (808)에서, 원격 서버 (402)는 정상 애플리케이션 론칭(normal application launch)으로 계속 진행할 수 있다. 예를 들어, 유저는 유저의 클라이언트 디바이스을 통하여 애플리케이션의 가상화된 인스턴스와 상호 작용할 수 있다. 애플리케이션의 가상화된 인스턴스의 기능들은 원격 서버 (402)에 의해 실행될 수 있다.
단계 (810)에서, 리다이렉션 가상 계층 (506,608)은 가상 애플리케이션 인스턴스가 리다이렉트된 레지스트리 및/또는 리다이렉트된 파일 시스템을 포함할 수 있는 세션-특정 데이터베이스 (606)에 액세스를 갖거나 및/또는 거기에 액세스하려고 시도하는지 여부를 결정할 수 있다. 만약 그렇다면, 리다이렉션 가상 계층 (506,608)은 단계 (812)에서, 글로벌 시스템 오브젝트의 가상화된 세션-특정 인스턴스를 생성할 수 있고 만약 글로벌 시스템 오브젝트의 가상화된 세션-특정 인스턴스가 이미 생성되었고 세션-특정 데이터베이스 (606)에 저장되었다면 그것을 세션-특정 데이터베이스 (606)에 저장할 수 있다. 더구나, 리다이렉션 가상 계층 (506,608)은 글로벌 시스템 오브젝트의 가상화된 세션-특정 인스턴스의 위치 및 글로벌 시스템 오브젝트에 대한 그것의 상응 관계를 포함하도록 리다이렉션 데이터베이스 (610)에 저장된 세센에 대한 매핑을 업데이트할 수 있다. 결과적으로, 애플리케이션 인스턴스는 글로벌 시스템 오브젝트의 가상화된 세션-특정 인스턴스를 액세스하고 사용할 수 있고 서비스 관리되는 디바이스로부터 데이터를 검색한다. 추가적으로, 리다이렉션 가상 계층 (506,608)이 글로벌 시스템 오브젝트에 대한 후속 통신을 인터셉트할 때, 글로벌 시스템 오브젝트는 글로벌 시스템 오브젝트가 글로벌 시스템 오브젝트의 대응하는 가상화된 세션-특정 인스턴스를 가지는지 여부를 결정하기 위해 리다이렉션 데이터베이스 (610)를 사용할 수 있고 만약 그렇다면, 글로벌 시스템 오브젝트의 가상화된 세션-특정 인스턴스를 사용하도록 다이렉트될 수 있다. 다른 세션들은 글로벌 시스템 오브젝트의 가상화된 세션-특정 인스턴스를 액세스할 수 없다. 그렇지 않고, 만약 애플리케이션 인스턴스들이 세션-특정 데이터베이스 (606)에 대한 액세스를 갖지 않고 및/또는 가지려고 시도하지 않으면, 글로벌 시스템 오브젝트는 단계(814)에서 가상화되지 않을 수 있다.
일부 경우들에서, 단계들 (804) 및/또는 (806)에서, 리다이렉션 가상 계층은 애플리케이션들의 세션 인스턴스들과 디바이스 관리 서비스들 사이에 통신 채널들을 가상화할 수 있다. 추가적으로, 단계들 (810및/또는 (812)에서, 리다이렉션 가상 계층은 애플리케이션들의 세션 인스턴스들과 디바이스 관리 서비스들에 의해 사용을 위해 다양한 유형들의 자원들을 가상화할 수 있다.
일부 실시예들에서, 리다이렉션 가상 계층은 파일 시스템 번역을 수행할 수 있다. 예를 들어, 리다이렉션 가상 계층이 세션과 관련된 메시지를 라우팅하는 위치는 요청과 관련된 기록 요청이 해당 위치에 대하여 이미 수신되었는지 여부에 의존될 수 있다. 제 1 또는 처음의 기록 요청을 포함하는 글로벌 레지스트리 데이터베이스 (410)의 위치에 대한 세션과 관련된 각각의 기록 요청은 글로벌 레지스트리 데이터베이스 (410)의 위치에 대응하는 세션-특정 디렉토리 (606)의 위치로 리다이렉트될 수 있고 상응 관계를 반영하기 위해 리다이렉션 데이터베이스 (610)에 저장된 매핑을 업데이트할 수 잇다. 파일들로부터의 판독 요청들은 시도(attempt)가 파일들의 액세스 및/또는 컨텐츠들에 변화를 이룰 때까지 (예를 들어, 기록 요청을 통하여) 계속해서 원래의 파일로부터 있을 것이다. 기록 액세스 후에 오픈된 판독 요청들에 대하여, 파일은 자동으로 세션 특정 사일로(silo) (예를 들어, 세션-특정 디렉토리 (606))로 리다이렉트될 것이다. 일 예로서, 리다이렉션 가상 계층은 글로벌 레지스트리 데이터베이스 (410)의 위치에 대한 판독 요청 수신에 응답하여, 리다이렉션 데이터베이스 (610)에 저장된 매핑을 이용함으로써 글로벌 레지스트리 데이터베이스 (410)의 위치에 대한 세션과 관련된 기록 액세스가 앞에서 인터셉트되었는지 여부를 결정할 수 있다. 만약 그렇다면, 리다이렉션 가상 계층은 정보를 판독하기 위해 글로벌 레지스트리 데이터베이스 (410)의 위치에 대응하는 세션-특정 데이터베이스 (606)의 위치로 판독 요청을 재라우팅할 수 있다. 그렇지 않고, 만약 글로벌 레지스트리 데이터베이스 (410)의 위치에 대한 세션과 관련된 이전 기록 액세스가 없다면, 리다이렉션 가상 계층은 정보를 판독하기 위해 글로벌 레지스트리 데이터베이스 (410)의 위치로 판독 요청을 라우팅할 수 있다.
본 출원에서 사용되는, 세션내 컴포넌트가 (예를 들어, 리다이렉션 가상 계층) 기능을 수행한다고 말할 때는, 원격 서버 (402)가 기능을 수행할 수 있다.
주제가 구조적 특징들 및/또는 방법론 동작들에 대해 특정한 언어로 설명되었지만, 첨부된 청구항들에 정의된 주제는 반드시 상술된 특정 특징들 또는 동작들에 제한되지 않는다는 것이 이해될 것이다. 오히려, 예로서 개시된 상기에서 설명된 특정 특징부들 및 동작들은 청구항들 구현을 형성한다.

Claims (20)

  1. 시스템으로서,
    제 1 컴퓨팅 디바이스로서, 각각의 세션이 상이한 유저에 특정되고 상기 제 1 컴퓨팅 디바이스에 의해 실행되는 애플리케이션의 적어도 하나의 가상 인스턴스를 포함하는 복수의 세션들을 포함하는 가상 환경(virtual environment)을 제공하도록 구성된, 상기 제 1 컴퓨팅 디바이스; 및
    와이드 영역 네트워크(wide area network)를 통하여 상기 제 1 컴퓨팅 디바이스에 통신가능하게 결합된 제 2 컴퓨팅 디바이스로서, 상기 제 2 컴퓨팅 디바이스는 상기 복수의 세션들의 세션과 관련되고, 상기 세션에 특정된 상기 애플리케이션의 가상 인스턴스와 상호 작용(interact) 하도록 구성된, 상기 제 2 컴퓨팅 디바이스를 포함하되,
    상기 제 2 컴퓨팅 디바이스는 디바이스 관리 서비스(device management device)에 의해 관리되도록 구성된 서비스 관리되는 컴퓨팅 디바이스(service managed computing device)에 통신가능하게 결합되고,
    상기 세션은 상기 세션과 사용을 위한 상기 디바이스 관리 서비스의 가상 인스턴스 및 상기 세션과의 사용을 위한 리다이렉션 계층(redirection layer)을 포함하고, 및
    상기 리다이렉션 계층은 상기 세션에 특정된 상기 애플리케이션의 가상 인스턴스와 상기 세션과 사용을 위한 상기 디바이스 관리 서비스의 가상 인스턴스 간에 통신을 인터셉트(intercept)하도록 구성된, 시스템.
  2. 청구항 1에 있어서, 상기 리다이렉션 계층은:
    상기 통신이 글로벌 레지스트리 데이터베이스의 위치에 기록 명령을 포함한다는 결정에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 데이터베이스의 위치가 존재하는지 여부를 결정하도록 구성된, 시스템.
  3. 청구항 2에 있어서, 상기 리다이렉션 계층은:
    상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터베이스의 위치가 존재하지 않는다고 결정한 것에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터 베이스의 위치를 생성하고, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터베이스의 위치로 상기 기록 명령을 라우팅(route)하도록 구성된, 시스템.
  4. 청구항 2에 있어서, 상기 리다이렉트 계층은:
    상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터베이스의 위치가 존재한다고 결정한 것에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터베이스의 위치로 상기 기록 명령을 라우팅하도록 구성된, 시스템.
  5. 청구항 1에 있어서,
    상기 통신이 글로벌 레지스트리 데이터베이스의 위치에 판독 명령을 포함한다는 결정에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치로의 기록 명령을 상기 리다이렉션 계층이 미리 인터셉트하였는지 여부를 결정하는 것을 더 포함하는, 시스템.
  6. 청구항 5에 있어서,
    상기 리다이렉션 계층이 상기 글로벌 레지스트리 데이터베이스의 위치로의 상기 기록 명령을 미리 인터셉트하였다고 결정한 것에 응답하여, 상기 기록 명령이 앞서 라우팅되었던 세션에 특정된 데이터베이스의 위치로 상기 판독 명령을 라우팅하는 것을 더 포함하는, 시스템.
  7. 청구항 5에 있어서,
    상기 리다이렉션 계층이 상기 글로벌 레지스트리 데이터베이스의 위치로의 상기 기록 명령을 미리 인터셉트하지 않았다고 결정한 것에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치로 상기 판독 명령을 라우팅하는 것을 더 포함하는, 시스템.
  8. 청구항 1에 있어서,
    상기 통신이 글로벌 오브젝트 이름(global object name)을 포함하는 여부를 결정하고; 및
    상기 통신이 상기 글로벌 오브젝트 이름을 포함한다고 결정한 것에 응답하여, 상기 세션을 나타내고 상기 세션에 특정된 이름으로 상기 글로벌 오브젝트 이름을 재명명하는 단계(renaming)를 더 포함하는, 시스템.
  9. 청구항 1에 있어서,
    상기 시스템이 하이퍼바이저(hypervisor)를 포함하지 않고 운영 체제(operating system)의 가상 인스턴스들을 포함하지 않고, 및
    상기 서비스 관리되는 디바이스는 범용 직렬 버스-인에이블드 디바이스(universal serial bus-enabled device)이고 상기 디바이스 관리되는 서비스는 상기 서비스 관리되는 디바이스의 디바이스 드라이버인, 시스템.
  10. 청구항 1에 있어서, 상기 리다이렉션 계층은 :
    상기 통신이 글로벌 자원에 대한 기록 명령을 포함한다고 결정한 것에 응답하여, 상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스가 존재하는지 여부를 결정하고;
    상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스가 존재하지 않는다고 결정한 것에 응답하여, 상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스를 생성하고; 및
    상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스가 존재한다고 결정한 것에 응답하여, 상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스를 액세스하도록 구성된, 시스템.
  11. 장치에 있어서,
    프로세서(processor); 및
    명령들을 저장하는 컴퓨터 판독가능한 매체로서, 상기 명령들은 상기 프로세서에 의해 실행될 때, 상기 장치를 :
    각각의 세션이 상이한 유저에 특정되고 애플리케이션의 적어도 하나의 가상 인스턴스를 포함하는 복수의 세션들을 생성하고;
    상기 장치와 다른 유저 디바이스로부터 수신된 하나 이상의 유저 입력들에 기초하여 상기 복수의 세션들의 세션에 대한 상기 애플리케이션의 가상 인스턴스의 하나 이상의 기능들을 수행하고;
    상기 유저 디바이스가 디바이스 드라이버에 의해 관리되도록 구성된 주변 디바이스에 연결되는지 여부를 결정하고; 및
    상기 유저 디바이스가 상기 디바이스 드라이버에 의해 관리되도록 구성된 상기 주변 디바이스에 연결된다고 결정한 것에 응답하여, 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스 및 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스를 위한 리다이렉션 계층을 생성하도록 구성하는, 장치.
  12. 청구항 11에 있어서, 상기 컴퓨터 판독가능한 매체는 상기 프로세서에 의해 실행될 때, 상기 장치를 :
    상이한 유저 디바이스로부터 수신된 하나 이상의 유저 입력들에 기초하여 상기 복수의 세션들의 상이한 세션에 대한 상기 애플리케이션의 상이한 가상 인스턴스의 하나 이상의 기능들을 수행하고;
    상기 상이한 유저 디바이스가 상기 디바이스 드라이버에 의해 관리되도록 구성된 상이한 주변 디바이스에 연결되는지 여부를 결정하고; 및
    상기 상이한 유저 디바이스가 상기 디바이스 드라이버에 의해 관리되도록 구성된 상기 상이한 주변 디바이스에 연결된다고 결정한 것에 응답하여, 상기 상이한 세션에 대한 상기 디바이스 드라이버의 상이한 가상 인스턴스 및 상기 상이한 세션에 대한 상기 디바이스 드라이버의 상이한 가상 인스턴스를 위한 상이한 리다이렉션 계층을 생성하도록 더 구성하는 명령들을 저장하는, 장치.
  13. 청구항 11에 있어서, 상기 컴퓨터 판독가능한 매체는 상기 프로세서에 의해 실행될 때, 상기 장치를 :
    상기 디바이스 드라이버의 가상 인스턴스와 상기 애플리케이션의 가상 인스턴스간에 통신을 인터셉트하고; 및
    상기 통신이 글로벌 레지스트리 데이터베이스의 위치에 대한 기록 명령을 포함한다는 결정에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 데이터베이스의 위치로 상기 기록 명령을 라우팅하도록 더 구성하는 명령들을 저장하는, 장치.
  14. 청구항 11에 있어서, 상기 컴퓨터 판독가능한 매체는 상기 프로세서에 의해 실행될 때, 상기 장치를 :
    상기 디바이스 드라이버의 가상 인스턴스와 상기 애플리케이션의 가상 인스턴스간에 통신을 인터셉트하고; 및
    상기 통신이 글로벌 레지스트리 데이터베이스의 위치에 대한 판독 명령을 포함한다는 결정에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 데이터베이스의 위치로 상기 판독 명령을 라우팅하도록 더 구성하는 명령들을 저장하는, 장치.
  15. 청구항 11에 있어서, 상기 컴퓨터 판독가능한 매체는 상기 프로세서에 의해 실행될 때, 상기 장치를 :
    상기 디바이스 드라이버의 가상 인스턴스와 상기 애플리케이션의 가상 인스턴스간에 통신을 인터셉트하고; 및
    상기 통신이 글로벌 오브젝트에 대한 참조부분(reference)을 포함한다고 결정한 것에 응답하여:
    상기 세션에 특정된 상기 글로벌 오브젝트의 가상 인스턴스를 생성하고; 및
    상기 글로벌 오브젝트에 대한 참조부분을 상기 세션에 특정된 상기 글로벌 오브젝트의 가상 인스턴스에 대한 참조부분으로 변경하도록 더 구성하는 명령들을 포함하는, 장치.
  16. 방법에 있어서,
    컴퓨팅 디바이스에 의해, 각각의 세션이 상이한 유저에 특정되고 애플리케이션의 적어도 하나의 가상 인스턴스를 포함하는 복수의 세션들을 생성하는 단계;
    상기 컴퓨팅 디바이스에 의해, 상기 컴퓨팅 디바이스와 다른 유저 디바이스로부터 수신된 하나 이상의 유저 입력들에 기초하여 상기 복수의 세션들의 세션에 대한 상기 애플리케이션의 가상 인스턴스의 하나 이상의 기능들을 수행하는 단계;
    상기 유저 디바이스가 디바이스 드라이버에 의해 관리되도록 구성된 주변 디바이스에 연결된다고 결정한 것에 응답하여, 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스 및 상기 세션에 대한 상기 디바이스 드라이버의 가상 인스턴스를 위한 리다이렉션 계층을 생성하는 단계; 및
    상기 세션에 특정된 상기 글로벌 자원의 가상 인스턴스로 글로벌 자원에 대하여 의도된 세션과 관련된 메시지들을 재라우팅하는 단계(rerouting)를 포함하는, 방법.
  17. 청구항 16에 있어서, 상기 복수의 세션들의 각각은 동일한 운영 체제와 통신하고 있고 하이퍼바이저와 통신하지 않는, 방법.
  18. 청구항 16에 있어서,
    상기 메시지들내 글로벌 오브젝트 이름들을 상기 세션에 특정된 오브젝트 이름들로 재명명하는 단계를 더 포함하는, 방법.
  19. 청구항 16에 있어서, 글로벌 자원에 대하여 의도된 상기 세션과 관련된 상기 메시지들 중 적어도 하나는 글로벌 레지스트리 데이터베이스의 위치로의 기록 명령 또는 판독 명령을 포함하는, 방법.
  20. 청구항 16에 있어서,
    상기 세션과 관련된 판독 명령을 인터셉트하는 단계(intercepting);
    상기 세션과 관련된 판독 명령이 글로벌 레지스트리 데이터베이스의 위치로 향하는지 여부를 결정하는 단계; 및
    상기 글로벌 레지스트리 데이터베이스의 위치로 향하고 상기 세션과 관련된 기록 명령이 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터베이스의 위치로 앞서 재라우팅되었다고 결정한 것에 응답하여, 상기 글로벌 레지스트리 데이터베이스의 위치에 대응하는 상기 세션에 특정된 상기 데이터베이스의 위치로 상기 판독 명령을 라우팅하는 단계를 더 포함하는, 방법.
KR1020187005567A 2015-08-03 2016-08-02 멀티-세션 플랫폼상에 디바이스 관리 서비스들 가상화 KR102031280B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/816,800 US9813504B2 (en) 2015-08-03 2015-08-03 Virtualizing device management services on a multi-session platform
US14/816,800 2015-08-03
PCT/US2016/045132 WO2017023915A1 (en) 2015-08-03 2016-08-02 Virtualizing device management services on a multi-session platform

Publications (2)

Publication Number Publication Date
KR20180033569A true KR20180033569A (ko) 2018-04-03
KR102031280B1 KR102031280B1 (ko) 2019-10-11

Family

ID=56855791

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187005567A KR102031280B1 (ko) 2015-08-03 2016-08-02 멀티-세션 플랫폼상에 디바이스 관리 서비스들 가상화

Country Status (6)

Country Link
US (4) US9813504B2 (ko)
EP (1) EP3332326B1 (ko)
JP (1) JP6574895B2 (ko)
KR (1) KR102031280B1 (ko)
CN (1) CN107949829B (ko)
WO (1) WO2017023915A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112262B1 (en) * 2008-09-30 2012-02-07 Interactive TKO, Inc. Service modeling and virtualization
US10628420B2 (en) 2015-12-18 2020-04-21 Ca, Inc. Dynamic virtual service
US11778034B2 (en) * 2016-01-15 2023-10-03 Avaya Management L.P. Embedded collaboration with an application executing on a user system
US10111273B2 (en) 2016-05-24 2018-10-23 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Communication paths hierarchy for managed computing device
US10637736B2 (en) * 2016-06-06 2020-04-28 Lenovo Enterprise Solutions (Singapore) Pte. Ltd Acquisition of information from managed computing device not communicatively connected to management computing device
US10462228B2 (en) * 2016-10-20 2019-10-29 Wyse Technology L.L.C. Providing access to a smartcard within a remote session
US10791103B2 (en) * 2016-10-28 2020-09-29 Vmware, Inc. Adapting remote display protocols to remote applications
US10673801B2 (en) 2017-11-29 2020-06-02 International Business Machines Corporation Dynamic communication session management
US11030412B2 (en) * 2018-04-10 2021-06-08 Verizon Patent And Licensing Inc. System and method for chatbot conversation construction and management
US11645237B2 (en) * 2018-05-10 2023-05-09 International Business Machines Corporation Replicating data utilizing a virtual file system and cloud storage
CN111913892B (zh) * 2019-05-09 2021-12-07 北京忆芯科技有限公司 使用cmb提供开放通道存储设备
WO2021180985A1 (es) 2020-03-13 2021-09-16 Jauregui Navarro Inaki Método y sistema para la reproducción de una página web adaptativa
CN114090475A (zh) * 2020-07-02 2022-02-25 中兴通讯股份有限公司 Usb设备重定向方法、系统、电子设备及存储介质
CN112511585B (zh) * 2020-10-16 2023-06-30 麒麟软件有限公司 一种基于安卓系统远程桌面的输入重定向方法及系统
CN112882749A (zh) * 2021-03-15 2021-06-01 京东方科技集团股份有限公司 应用实例的上下线控制方法、装置及存储介质
CN113778583A (zh) * 2021-08-03 2021-12-10 福建升腾资讯有限公司 一种云桌面的本地应用的发布方法、装置、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1705563A1 (en) * 1997-11-14 2006-09-27 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions
KR20100110572A (ko) * 2009-04-03 2010-10-13 주식회사 케이티 데이터 마이닝을 이용한 플로우 리다이렉션 장치 및 그 방법

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539828B2 (en) * 2000-08-08 2009-05-26 Faronics Corporation Method and system for automatically preserving persistent storage
US20040210677A1 (en) * 2002-06-28 2004-10-21 Vinodh Ravindran Apparatus and method for mirroring in a storage processing device
US7752600B2 (en) * 2004-09-30 2010-07-06 Citrix Systems, Inc. Method and apparatus for providing file-type associations to multiple applications
US20060069662A1 (en) * 2004-09-30 2006-03-30 Citrix Systems, Inc. Method and apparatus for remapping accesses to virtual system resources
KR20070050094A (ko) 2004-09-30 2007-05-14 사이트릭스 시스템스, 인크. 윈도우 정보를 가상화하는 방법 및 장치
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7912987B2 (en) * 2005-01-14 2011-03-22 Microsoft Corporation USB devices in application server environments
EP1963967B1 (en) * 2005-10-07 2016-12-07 Citrix Systems, Inc. Methods for selecting between a predetermined number of execution methods for an application program
US8151323B2 (en) * 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US8108525B2 (en) * 2006-08-03 2012-01-31 Citrix Systems, Inc. Systems and methods for managing a plurality of user sessions in a virtual private network environment
US7870267B2 (en) * 2007-05-16 2011-01-11 International Business Machines Corporation Creating global sessions across converged protocol applications
US9870263B2 (en) * 2007-06-29 2018-01-16 Microsoft Technology Licensing, Llc System virtualization instance management for terminal sessions
JP5428455B2 (ja) * 2009-03-30 2014-02-26 日本電気株式会社 仮想マシンサーバ、仮想マシン制御方法及び仮想マシン制御プログラム
US8090797B2 (en) * 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US9141412B2 (en) * 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation
US9460289B2 (en) * 2011-02-18 2016-10-04 Trend Micro Incorporated Securing a virtual environment
US20120331032A1 (en) * 2011-06-22 2012-12-27 Microsoft Corporation Remote Presentation Session Connectionless Oriented Channel Broker
US8745266B2 (en) * 2011-06-30 2014-06-03 Citrix Systems, Inc. Transparent layer 2 redirection of request to single sign in service based on applying policy to content of request
CN102279748A (zh) * 2011-08-29 2011-12-14 焦秀琴 远程存储本地执行的软件使用方法、系统、服务器及客户端
US8555409B2 (en) * 2011-11-02 2013-10-08 Wyse Technolgoy Inc. System and method for providing private session-based access to a redirected USB device or local device
CN102662741B (zh) * 2012-04-05 2014-04-02 华为技术有限公司 虚拟桌面的实现方法、装置和系统
US8745280B1 (en) * 2012-05-25 2014-06-03 hopTo, Inc. System for and method of translating motion-based user input between a client device and an application host computer
JPWO2013179606A1 (ja) 2012-05-28 2016-01-18 日本電気株式会社 リモートマルチクライアント収容システムおよびホストコンピュータ
KR101720654B1 (ko) * 2012-09-14 2017-03-28 한국전자통신연구원 가상화 시스템 및 가상화 서비스 제공방법
US9678771B2 (en) * 2013-07-31 2017-06-13 Citrix Systems, Inc. Autonomic virtual machine session lingering of inactive virtual machine sessions by a virtualization computing platform
US10025839B2 (en) * 2013-11-29 2018-07-17 Ca, Inc. Database virtualization
US9467458B2 (en) * 2014-08-01 2016-10-11 Dell Products L.P. System and method for providing selective access to a redirected device
US9495188B1 (en) * 2014-09-30 2016-11-15 Palo Alto Networks, Inc. Synchronizing a honey network configuration to reflect a target network environment
US10303782B1 (en) * 2014-12-29 2019-05-28 Veritas Technologies Llc Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk
US10361958B2 (en) * 2016-09-02 2019-07-23 Openet Telecom Ltd. System and method for managing and distributing packet flow descriptions in a telecommunications network
US10171425B2 (en) * 2016-12-15 2019-01-01 Keysight Technologies Singapore (Holdings) Pte Ltd Active firewall control for network traffic sessions within virtual processing platforms

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1705563A1 (en) * 1997-11-14 2006-09-27 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions
KR20100110572A (ko) * 2009-04-03 2010-10-13 주식회사 케이티 데이터 마이닝을 이용한 플로우 리다이렉션 장치 및 그 방법

Also Published As

Publication number Publication date
JP6574895B2 (ja) 2019-09-11
US9813504B2 (en) 2017-11-07
EP3332326B1 (en) 2023-04-26
US11622010B2 (en) 2023-04-04
CN107949829B (zh) 2022-05-03
US20200053161A1 (en) 2020-02-13
EP3332326A1 (en) 2018-06-13
KR102031280B1 (ko) 2019-10-11
US20170041398A1 (en) 2017-02-09
US10992758B2 (en) 2021-04-27
US20210211505A1 (en) 2021-07-08
WO2017023915A1 (en) 2017-02-09
JP2018530039A (ja) 2018-10-11
CN107949829A (zh) 2018-04-20
US10469592B2 (en) 2019-11-05
US20180159939A1 (en) 2018-06-07

Similar Documents

Publication Publication Date Title
US11622010B2 (en) Virtualizing device management services on a multi-session platform
CN108139944B (zh) 具有机器级隔离的多租户多会话目录
US10050934B2 (en) Redirector for secure web browsing
US9344334B2 (en) Network policy implementation for a multi-virtual machine appliance within a virtualization environment
US11082499B2 (en) Browser server session transfer
US10871873B2 (en) Redirection of web content
WO2015179603A1 (en) Providing testing environments using virtualization
US20140280436A1 (en) Migration tool for implementing desktop virtualization
US9959136B2 (en) Optimizations and enhancements of application virtualization layers
US11675964B2 (en) Management of remote access user application layouts
EP4155994A1 (en) Automated generation of objects for kubernetes services
US20230275954A1 (en) Remote browser session presentation with local browser tabs
US20240126580A1 (en) Transparently providing virtualization features to unenlightened guest operating systems
US10382293B2 (en) Scoped view of cloud control plane for development of new services
WO2024081072A1 (en) Transparently providing virtualization features to unenlightened guest operating systems

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