KR20140101370A - 자율형 네트워크 스트리밍 기법 - Google Patents

자율형 네트워크 스트리밍 기법 Download PDF

Info

Publication number
KR20140101370A
KR20140101370A KR1020147016108A KR20147016108A KR20140101370A KR 20140101370 A KR20140101370 A KR 20140101370A KR 1020147016108 A KR1020147016108 A KR 1020147016108A KR 20147016108 A KR20147016108 A KR 20147016108A KR 20140101370 A KR20140101370 A KR 20140101370A
Authority
KR
South Korea
Prior art keywords
data
file
data file
data store
application
Prior art date
Application number
KR1020147016108A
Other languages
English (en)
Other versions
KR101991537B1 (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 KR20140101370A publication Critical patent/KR20140101370A/ko
Application granted granted Critical
Publication of KR101991537B1 publication Critical patent/KR101991537B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized 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
    • 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/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • 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/4416Network booting; Remote initial program loading [RIPL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

본 명세서에 설명된 실시예는 가상 소프트웨어 애플리케이션을 동적으로 전달하고 로컬 및 네트워크 데이터 스토어 사이에 애플리케이션 데이터를 할당하는 것에 관한 것이다. 일 시나리오에서, 컴퓨터 시스템은 가상 소프트웨어 애플리케이션으로부터 운영 체제의 파일 시스템으로 송신되는 데이터 파일 요청을 가로채도록 구성되는 데이터 입출력(I/O) 필터를 설정한다. 데이터 입출력 필터는 파일 시스템으로부터 특정된 데이터 파일을 검색하도록 구성되는 데이터 파일 판독 요청을 가로챈다. 데이터 입출력 필터는 가로채기 한 판독요청을 특정한 데이터 파일을 반환하도록 구성된 네트워크 액세스가능한 데이터 스토어로 전달한다. 이후에, 특정된 데이터 파일을 네트워크 데이터 스토어로부터 수신하는 경우에, 입출력 필터는 특정된 데이터 파일을 가상 소프트웨어 애플리케이션으로 송신한다. 이러한 방식으로, 특정된 데이터 파일이 가상 애플리케이션에 의해 이용될 수 있다.

Description

자율형 네트워크 스트리밍 기법{AUTONOMOUS NETWORK STREAMING}
컴퓨터는 작업자(workforce), 가정, 모바일 장치 및 많은 다른 부분에서 고도로 집적되어왔다. 컴퓨터는 광대한 양의 정보를 빠르고 효율적으로 처리할 수 있다. 컴퓨터 시스템에서 실행되도록 설계된 소프트웨어 애플리케이션은 사용자로 하여금 비즈니스 애플리케이션, 학업, 엔터테인먼트 등을 포함하는 폭넓고 다양한 기능을 수행하는 것을 가능하게 한다. 소프트웨어 애플리케이션은 흔히 특정 태스크(예, 문서 작성을 위한 워드 프로세서 애플리케이션 또는 이메일의 송신, 수신 및 정리를 위한 이메일 프로그램)를 수행하도록 디자인된다.
각각의 경우에, 소프트웨어 애플리케이션은 호스팅 컴퓨터 시스템의 서로 다른 하드웨어 컴포넌트와 상호작용하고 이를 사용한다. 예를 들어, 소프트웨어 애플리케이션은 로컬 데이터 스토어(예, 하드 디스크, DVD 드라이브 또는 플래시 드라이브)와 상호작용할 수 있다. 일반적으로, 애플리케이션은 애플리케이션으로부터 운영 체제의 파일 시스템으로 송신되는 입출력(I/O) 요청을 만든다. 파일 시스템은 디스크로부터 필요한 데이터에 액세스하고 이를 애플리케이션으로 반환한다. 가상 애플리케이션이 사용되는 경우에, 데이터를 로컬 하드 디스크로부터만 검색하는 대신에, 데이터의 적어도 일부는 원격 데이터 스토어(보통, 네트워크 파일 서버)로부터 요청된다. 이어서, 그러한 데이터는 컴퓨터 시스템에서 수신되고 자신의 로컬 하드 디스크에 저장된다. 이후에, 컴퓨터의 파일 시스템은 일반적으로 로컬로 저장된 데이터에 대해 그러한 것처럼 데이터를 애플리케이션에 송신한다.
본 명세서에 설명된 실시예는 가상 소프트웨어 애플리케이션을 동적으로 전달(delivering)하고 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 애플리케이션 데이터를 할당하는 것에 관한 것이다. 일 실시예에서, 컴퓨터 시스템은 가상 소프트웨어 애플리케이션으로부터 운영 체제의 파일 시스템으로 송신되는 데이터 파일 요청을 가로채도록(intercept) 구성되는 데이터 입출력(I/O) 필터를 설정한다. 데이터 입출력 필터는 파일 시스템으로부터 특정된 데이터 파일을 검색하도록 구성되는 데이터 파일 판독 요청을 가로챈다. 데이터 입출력 필터는 가로챈 판독요청을 특정한 데이터 파일을 반환하도록 구성된 네트워크 액세스가능 데이터 스토어로 전달한다. 이후에, 특정된 데이터 파일을 네트워크 데이터 스토어로부터 수신하는 경우에, 입출력 필터는 특정된 데이터 파일을 가상 소프트웨어 애플리케이션에 송신한다. 이러한 방식으로, 특정된 데이터 파일은 가상 애플리케이션에 의해 이용될 수 있다.
다른 실시예에서, 컴퓨터 시스템은 로컬 데이터 스토어 및 네트워크 데이터 스토어 간에 애플리케이션 데이터를 할당한다. 컴퓨터 시스템은 가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장되는지 및 어느 부분이 네트워크 데이터 스토어에 저장되는지에 대한 표시(indication)를 관리자(administrative user)로부터 수신한다. 컴퓨터 시스템은 가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장되는지를 기술하는 메타데이터의 서로 다른 부분을 생성한다. 컴퓨터 시스템은 이후에 특정된 데이터 파일의 데이터를 요청하는 데이터 파일 요청을 가상 애플리케이션으로부터 수신하고, 생성된 메타데이터에 기초하여 특정된 데이터 파일이 로컬 데이터 스토어에 저장되는지 또는 원격 데이터 스토어에 저장되는지 여부를 판정한다. 이후에, 이러한 판정에 기초하여, 컴퓨터 시스템은 데이터 파일 요청을 로컬 데이터 스토어 또는 원격 데이터 스토어에 송신한다.
본 요약은 이하의 발명을 실시하기 위한 구체적인 내용에서 더 기술될 개념을 선택하여 단순화된 형식으로 소개하기 위해 제공된다. 본 요약은 특허청구범위에 기재된 발명의 대상의 주요 특징 또는 핵심 특징을 밝히고자 의도된 것이 아니며, 특허청구범위의 발명의 대상의 범위를 결정하는 것을 보조하는 데 사용하려는 것도 아니다.
다음의 상세한 설명에서 추가적인 특징 및 효과가 설명될 것이며, 당업자는 부분적으로는 상세한 설명의 내용을 통해 명확하게 이해할 수 있고, 본 명세서에 내용을 실행함으로써 학습할 수 있다. 본 발명의 실시예의 특징 및 효과는 첨부된 청구범위에 구체적으로 나타낸 장치 및 이들의 조합에 의해 이해되고 획득될 수 있다. 본 발명의 실시예의 특징은 다음의 상세한 설명 및 첨부된 청구범위로부터 완전히 이해될 것이며 이하에 설명되는 발명을 실행함으로써 학습될 수 있다.
본 발명의 실시예의 전술한 그리고 다른 효과 및 특징을 더욱 명확히 하기 위해, 본 발명의 실시예에 대한 보다 구체적인 설명이 첨부된 도면을 참조하여 설명될 것이다. 이러한 도면은 단지 본 발명의 전형적인 실시예만을 나타내는 것이며 이에 따라 본 발명의 범주를 제한하려는 것이 아님을 이해해야 한다. 본 발명의 실시예의 추가적인 세부사항 및 특징이 첨부된 도면을 사용하여 기술되고 설명될 것이다.
도 1은 가상 소프트웨어 애플리케이션을 동적으로 전달하는 것을 포함하는 발명의 실시예가 동작할 수 있는 컴퓨터 아키텍처를 도시한다.
도 2는 가상 소프트웨어 애플리케이션을 동적으로 전달하기 위한 예시적인 방법의 흐름도를 도시한다.
도 3은 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 애플리케이션 데이터를 할당하기 위한 예시적인 방법의 흐름도를 도시한다.
도 4는 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 데이터가 할당되는 본 발명의 실시예를 도시한다.
본 명세서에 설명된 실시예는 가상 소프트웨어 애플리케이션을 동적으로 전달하는 것 및 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 애플리케이션 데이터를 할당하는 것에 관한 것이다. 일 실시예에서, 컴퓨터 시스템은 가상 소프트웨어 애플리케이션으로부터 운영 체제의 파일 시스템으로 송신되는 데이터 파일 요청을 가로채도록 구성되는 데이터 입출력(I/O) 필터를 설정한다. 데이터 입출력 필터는 파일 시스템으로부터 특정된 데이터 파일을 검색하도록 구성되는 데이터 파일 판독 요청을 가로챈다. 데이터 입출력 필터는 가로챈 판독요청을 특정한 데이터 파일을 반환하도록 구성된 네트워크 액세스가능 데이터 스토어로 전달한다. 이후에, 특정된 데이터 파일을 네트워크 데이터 스토어로부터 수신하는 경우에, 입출력 필터는 특정된 데이터 파일을 가상 소프트웨어 애플리케이션으로 송신한다. 이러한 방식으로, 특정된 데이터 파일이 가상 애플리케이션에 의해 이용가능하다.
다른 실시예에서, 컴퓨터 시스템은 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 애플리케이션 데이터를 할당한다. 컴퓨터 시스템은 가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장되는지 및 어느 부분이 네트워크 데이터 스토어에 저장되는지에 대한 표시(indication)를 관리자(administrative user)로부터 수신한다. 컴퓨터 시스템은 가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장되는지를 기술하는 메타데이터의 상이한 부분을 생성한다. 컴퓨터 시스템은 이후에 특정된 데이터 파일의 데이터를 요청하는 데이터 파일 요청을 가상 애플리케이션으로부터 수신하고, 생성된 메타데이터에 기초하여 특정된 데이터 파일이 로컬 데이터 스토어에 저장되는지 또는 원격 데이터 스토어에 저장되는지 여부를 판정한다. 이후에, 이러한 판정에 기초하여, 컴퓨터 시스템은 데이터 파일 요청을 로컬 데이터 스토어 또는 원격 데이터 스토어에 송신한다.
이제부터 다음의 설명은 복수의 방법 및 수행될 수 있는 방법의 단계를 나타낸다. 방법의 단계가 소정의 순서로 설명될 수 있고 흐름도에 특정한 순서로 수행되는 것으로 도시될 수 있으나, 하나의 단계는 수행되는 단계 이전에 완료되는 다른 단계에 의존할 수 있기 때문에, 구체적으로 언급되거나 필요한 경우가 아니면 반드시 특정한 순서로 수행되는 것이 아님을 이해해야 한다.
본 발명의 실시예는, 이하에서 더 상세히 설명하는 바와 같이, 예를 들면 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 전용 또는 범용 컴퓨터를 포함하거나 이를 사용할 수 있다. 또한, 본 발명의 범주 내의 실시예는 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 포함하는 물리적 또는 다른 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 전용 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 데이터 형태의 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 컴퓨터 저장 매체이다. 컴퓨터 실행가능 명령어가 저장되어 있는 컴퓨터 판독가능 매체는 전송 매체이다. 따라서, 제한이 아닌 예로서, 본 발명의 실시예는 적어도 두 개의 구분된 서로 다른 유형의 컴퓨터 판독가능 매체, 즉 컴퓨터 저장 매체 및 전송 매체를 포함할 수 있다.
컴퓨터 저장 매체는 RAM, ROM, EEPROM, CD-ROM, SSD(solid state drives)(RAM, ROM, 플래시 메모리, PCM(phase-change memory) 또는 다른 유형의 메모리에 기초함) 또는 광 디스크 저장장치, 자기 디스크 저장장치나 다른 자기 저장 장치, 또는 컴퓨터 실행가능 명령어, 데이터, 또는 더이터 구조 형태의 원하는 프로그램 코드 수단을 저장하는 데 사용될 수 있고 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 장치 사이의 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크 및/또는 데이터 스위치로서 정의된다. 정보가 네트워크를 통해 또는 다른 통신 연결(유선, 무선, 또는 유선과 무선의 조합 중 어느 하나)을 통해 컴퓨터로 전송되거나 제공되는 경우에, 컴퓨터는 적절하게 그 연결을 전송 매체라고 간주한다. 전송 매체는 컴퓨터-실행가능 명령어나 데이터 구조들의 형태로 원하는 프로그램 코드 수단들을 운반하기 위해 사용될 수 있고 범용 또는 전용의 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크들을 포함할 수 있다. 위의 조합들도 또한 컴퓨터-판독가능 매체의 범위에 포함되어야 한다.
또한, 다양한 컴퓨터 시스템 컴포넌트들에 도달하면, 컴퓨터 실행가능 명령어나 데이터 구조 형태의 프로그램 코드 수단은 전송 매체로부터 컴퓨터 저장 매체(장치)로(또는 그 역으로) 자동 전송될 수 있다. 예를 들어, 네트워크나 데이터 링크를 통해 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(예컨대, NIC) 내의 RAM에서 버퍼링될 수 있고, 그런 다음 결국 컴퓨터 시스템에서 컴퓨터 시스템 RAM 및/또는 그것보다 휘발성이 약한 컴퓨터 스토리지 매체(장치)로 전송될 수 있다. 따라서, 컴퓨터 스토리지 매체(장치)는 전송 매체를 같이(또는, 심지어 먼저) 이용하는 컴퓨터 시스템 컴포넌트들에 포함될 수 있다는 점이 이해되어야 한다.
컴퓨터 실행가능(또는 컴퓨터 해석가능) 명령어는, 예를 들어, 프로세서에서 실행되면, 범용 컴퓨터, 전용 컴퓨터, 또는 전용 프로세싱 장치로 하여금 특정 기능 또는 기능들의 집합을 수행하도록 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는 예를 들어, 이진수, 어셈블리 언어와 같은 중간 포맷 명령어, 또는 심지어 소스 코드일 수 있다. 비록 발명 주제가 구조적인 특징 및/또는 방법론적 액션에 특수한 언어로 기술되었으나, 첨부된 청구범위에서 한정된 발명의 대상은 기술된 특징이나 위에서 기술된 액션들로 제한될 필요가 없다는 점이 이해되어야 한다. 그보다, 기술된 특징 및 액션은 청구범위를 구현하는 예시적인 형태들로서 개시된다.
해당 기술분야의 기술자는 본 발명이, 퍼스널 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 태블릿, 페이저(pagers), 라우터, 스위치 등을 포함하는 다양한 타입의 컴퓨터 시스템 구성들을 가진 네트워크 컴퓨팅 환경에서 실시될 수 있다는 점을 이해할 것이다. 본 발명은 또한 네트워크를 통해 (유선 데이터 링크, 무선 데이터 링크, 또는 유선과 무선 데이터 링크들의 조합에 의해) 연결된 로컬 및 원격 컴퓨터 시스템 둘 모두가 태스크를 수행하는 분산 시스템 환경에서 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 모두에 위치될 수 있다.
도 1은 본 발명의 원리가 사용될 수 있는 컴퓨터 아키텍처(100)를 도시한다. 컴퓨터 아키텍처(100)는 적어도 사용자 모드(140) 및 커널 모드(141)에서 동작하는 컴퓨터 시스템을 포함한다. 컴퓨터 시스템은 클라우드 컴퓨팅 시스템을 포함하는 임의의 유형의 로컬 또는 분산형 컴퓨터 시스템일 수 있다. 각각의 동작 모드는 특정한 유형의 동작을 수행하도록 구성된 서로 다른 모듈을 포함한다. 이러한 동작 모드 및 컴퓨터 시스템 모듈은 끊김 없고 효율적인 방식으로 가상 애플리케이션을 배치하는 데 사용될 수 있다.
본 명세서에 언급된 가상 소프트웨어 애플리케이션은 로컬로 실행되는 것으로 보이나 실제로는 네트워크 애플리케이션 서버에서 실행되는 애플리케이션이다. 네트워크 애플리케이션 서버는 네트워크를 통해 사용자에게 애플리케이션에 대한 데이터를 제공한다. 본 명세서의 실시예에서, 사용자는 일반적으로 자신의 애플리케이션 아이콘(또는 가상 애플리케이션에 의해 오픈되는 데이터 파일)을 클릭함으로써 애플리케이션을 오픈(open)하여 프로세스를 시작할 수 있다. 사용자로부터 개시 신호(initiating signal)를 수신하면, 운영 체제는 실행 파일(들)을 메모리로 판독함으로써 애플리케이션의 실행 파일(들)을 위한 프로세스 어드레스 공간을 초기화한다. 본 명세서에 사용되는 "데이터 파일"이라는 용어는 세팅 파일(setting file)(일반적으로 실행 코드의 일부가 아님)을 포함하는 데이터 파일 및/또는 애플리케이션의 실행가능한 이진 파일을 포함하는 이미지 양자를 나타낼 수 있다는 것을 이해해야 한다. 세팅 파일 및 실행 파일 모두가 본 명세서에서 예상되고 지지될 수 있으므로, 데이터 파일이라는 용어는 본 명세서에서 이들을 기술하는 데 사용될 수 있다.
이후에 운영 체제는 애플리케이션을 위한 시작 포인트(entry point)에 명령 포인트를 설정하고 프로세스를 실행한다. 운영 체제 내의 가상화 레이어(virtualization layer)는 이러한 론칭 단계(launch phase) 중에 자신을 검출하고 초기화한다. 가상 애플리케이션은 이어서 사용자의 컴퓨터 시스템에서 실행된다.
일부의 경우에, 가상 애플리케이션 데이터 파일은 자신의 필요에 따라 동적으로 스트리밍된다. 가상 애플리케이션이 타깃 컴퓨터 시스템에 배포되는(published) 경우에, 스파스 데이터 파일(sparse data files)만이 생성된다. 스파스 데이터 파일은 정상 데이터 파일처럼 "보이나", 그 파일에 대한 플레이스홀더(placeholder) 만이 존재한다. 플레이스홀더는 파일의 명칭 및 크기를 포함한다. 스파스 데이터 파일에 대응하는 데이터 파일에 대한 콘텐트는 아직 스트리밍되지 않았다. 스트리밍은 그 파일에 대한 실제 데이터가 요청되면 수행된다. 그 때에, 그 파일에 대한 데이터가 네트워크 액세스가능 데이터 스토어(130)로부터 스트리밍된다. 일반적으로, 데이터 파일의 실제 데이터는 운영 체제가 메모리로 실행 파일(들)을 판독할 때까지 필요하지 않다. 다른 구현예에서, 파일 데이터는 스트리밍되고 복제되며, 운영 체제의 판독 요청은 스트리밍된 데이터로부터 충족될 수 있고 컴퓨터 시스템의 로컬 하드 드라이브(또는 다른 데이터 스토어)로 복제된다.
그러나 본 명세서에 기술된 실시예는 파일의 컨텐츠를 로컬 하드 디스크에 복제하지 않는다. 스트리밍된 컨텐트는 디스크에 저장될 수 있기 전에 데이터 입출력(I/O) 필터에 의해 가로채기 된다. 데이터 입출력 필터는 스트리밍된 데이터를 애플리케이션으로 전달하여 판독 요청이 충족되도록 한다. 이어서, 애플리케이션은 스트리밍된 데이터 중 어느 것도 디스크에 기입되지 않게 하면서, 스트리밍된 데이터를 사용하여 정상적으로 동작하는 것처럼 동작한다. 실제로, 가상 애플리케이션은 자신의 판독 요청이 로컬 하드 드라이브에 의해 충족되지 않았고 오히려 동적으로 스트리밍된 데이터에 의해 충족되었다는 것을 인식조차 하지 못한다(또는 인식할 필요가 없다). 가상 애플리케이션이나 컴퓨터 시스템의 파일 시스템에는 어떠한 변경도 이루어질 필요가 없다. 오히려, 데이터 입출력 필터는 동적으로 스트리밍된 가상 애플리케이션을 제공하는 데 있어 중간에 끊김 없이 동작한다. 이와 같이 동일한 가상 소프트웨어 애플리케이션(네트워크 데이터 스토어에 저장됨)이 임의의 수의 다른 컴퓨터 시스템 및/또는 가상 머신에 실질적으로 제공될 수 있다. 또한, 동일한 애플리케이션이 복수의 서로 다른 컴퓨터 시스템에 걸쳐 사용되는 경우에, 서버 상의 애플리케이션의 단일 사본이 서로 다른 컴퓨터 시스템 각각으로 스트리밍될 수 있기 때문에 디스크 공간이 복사되지 않을 것이다. 이러한 개념은 각각 도 2 및 도 3의 방법(200) 및 방법(300)과 관련하여 이하에서 추가로 설명될 것이다.
전술한 시스템 및 아키텍처의 관점에서, 개시된 발명의 대상에 따라 구현될 수 있는 방법은 도 2 및 도 3의 흐름도를 참조하면 더 잘 이해될 것이다. 설명을 간단하게 하기 위해, 방법은 일련의 블록으로 도시되고 설명된다. 그러나, 일부 블록은 본 명세서에 설명되고 기술된 것과 다른 순서로 및/또는 다른 블록과 동시에 실행될 수 있기 때문에 청구된 발명의 대상이 블록의 순서로 제한되는 것은 아니다. 또한, 도시된 블록 모두가 이하에 설명된 방법을 구현하는 데 필요한 것은 아니다.
도 2는 가상 소프트웨어 애플리케이션을 동적으로 전달하기 위한 방법(200)의 흐름도를 도시한다. 이제부터, 방법(200)이 환경(100)의 컴포넌트 및 데이터를 빈번하게 참조하여 설명될 것이다.
방법(200)은 가상 소프트웨어 애플리케이션으로부터 운영 체제의 파일 시스템으로 송신된 데이터 파일 요청을 가로채도록 구성된 데이터 입출력(I/O) 필터를 설정하는 단계(210)를 포함한다. 예를 들어, 데이터 입출력 필터(120)는 클라이언트 컴퓨터 시스템의 운영 체제 커널 모드(141)에서 설정될 수 있다. 데이터 입출력 필터는 가상 애플리케이션(110)으로부터 송신된 판독 요청(111)을 가로챌 수 있다. 데이터 요청은 정상 애플리케이션 판독 요청이고, 일반적으로 가상 애플리케이션으로부터 파일 시스템(125)으로 송신된다. 이러한 경우에, 데이터 입출력 필터는 파일 시스템으로 (그리고 이어서 디스크(126)로) 송신될 판독 요청을 가로챈다. 데이터 입출력 필터는 소프트웨어 애플리케이션이 데이터 파일을 요청하는 방식을 변경하지 않고 구현된다. 이와 같이, 전통적인 소프트웨어 스택(stack)이 변경되지 않고 유지된다. 일부의 경우에 입출력 필터는 운영 체제 프로세스의 일부로서 실행되는 드라이버일 수 있다.
이어서, 방법(200)은 데이터 입출력 필터가 파일 시스템으로부터 특정된 데이터 파일을 검색하도록 구성되는 데이터 파일 판독 요청을 가로채는 단계(220)를 포함한다. 예를 들어, 데이터 입출력 필터(120)는 판독 요청이 파일 시스템(125)으로 송신되기 전에 이를 가로챌 수 있다. 판독 요청은 가상 애플리케이션(110)이 액세스를 시도하고 있는 데이터 파일에 대한 요청이다. 데이터 파일은 로컬 디스크에 저장되기보다는 네트워크 액세스가능 데이터 스토어(130)에 저장된다. 요청된 각각의 파일에 대한 스파스 파일(127)이 디스크(126) 상에 동적으로 생성된다. 전술한 바와 같이, 스파스 파일은 파일의 명칭 및 크기만을 포함하고 실제 파일 데이터를 포함하지 않는 플레이스홀더 파일이다. 플레이스홀더는 파일이 존재하는지 여부를 판정하기 위한 가상 애플리케이션의 초기 요청을 충족시킨다. (스파스 파일을 판독한 후에) 파일이 존재하는 것으로 가상 애플리케이션이 충족되면, 애플리케이션은 판독 요청(111)의 파일의 실제 데이터를 요청한다.
판독 요청을 가로채는 이러한 프로세스는 애플리케이션의 각각의 파일에 대해 수행될 수 있다. 따라서, 각각의 파일은 각각의 파일을 요구하는 가상 애플리케이션으로 동적으로 스트리밍될 수 있다. 파일은 단독으로 또는 복수로 스트리밍될 수 있다. 일부의 경우에, 복수의 데이터 파일이 요청되고 병렬로 스트리밍된다. 판독 요청이 데이터 입출력 필터에서 수신됨에 따라, 요청은 입출력 필터에 의해 가로채기 되는 커널 모드 입출력 요청으로 변환된다. 데이터 입출력 필터는 이후에 가로챈 판독 요청을 네트워크 액세스가능 데이터 스토어(130)에 전달하고, 네트워크 액세스가능 데이터 스토어는 특정 데이터 파일(131)을 반환하도록 구성된다(단계 230). 일부의 경우에, 가로채기 된 요청은 네트워크 액세스가능 데이터 스토어 및 데이터 입출력 필터 사이에 위치한 사용자 모드 서비스(115)로 전달될 수 있다. 사용자 모드 서비스는 사용자의 컴퓨터 시스템 또는 다른 네트워크 연결된 컴퓨터 시스템에서 실행될 수 있다. 시스템은 데이터 요청(111)을 데이터 입출력 필터로부터 수신하고 그 요청을 네트워크 데이터 스토어에 전달한다. 또한, 서비스는 요청된 데이터를 네트워크 데이터 스토어로부터 수신하고 이를 데이터 입출력 필터로 보내는 데 사용될 수 있다. 일부의 경우에, 네트워크 데이터 스토어는 클라우드(또는 인터넷)를 포함할 수 있고, 그와 같은 경우에, 특정된 데이터 파일이 HTTP(hypertext transfer protocol)를 사용하여 클라우드/인터넷으로부터 검색될 수 있다.
이후에, 특정된 데이터 파일이 네트워크 액세스가능 데이터 스토어로부터 수신되면, 입출력 필터는 특정된 데이터 파일을 가상 소프트웨어 애플리케이션에 송신하고, 이에 따라 특정된 데이터 파일은 자신에 대한 판독 요청에 응답하여 가상 애플리케이션에 의해 사용될 수 있다(단계 240). 따라서, 데이터 요청(111)은 데이터가 디스크로 송신되기 전에 가로채기 될 수 있고, 로컬 또는 원격 데이터 스토토어(130)로부터 데이터를 페치(fetch)하는 서비스로 전달된다. 서비스는 페치된 데이터(131)를 다시 입출력 필터에 전달하고 입출력 필터는 그 데이터를 가상 애플리케이션(110)으로 보낸다. 따라서, 애플리케이션 파일은 로컬 컴퓨터 시스템의 파일 시스템에 저장되지 않고 사용자 컴퓨터 시스템(구제적으로는, 가상 애플리케이션)에게 동적으로 스트리밍될 수 있다. 네트워크 데이터 스토어로부터 동적으로 검색된 각각의 데이터 파일은, 가상 소프트웨어 애플리케이션에게 컴퓨터 시스템의 파일 시스템으로부터 수신된 것처럼 보인다.
추가적으로 또는 대안적으로, 로컬 컴퓨터 시스템 또는 입출력 필터 상의 애플리케이션 서비스는 수신된 데이터를 번역 또는 변경하여 로컬 컴퓨터 시스템에 의해 판독될 수 있게 보증하는 서비스를 제공할 수 있다. 애플리케이션 데이터는 임의의 형식, 임의의 암호화 유형 및 임의의 압축 유형으로 네트워크 데이터 스토어에 저장될 수 있기 때문에, 애플리케이션 서비스 또는 입출력 필터는 수신된 데이터를 압축 해제, 복호화 및/또는 재포맷(reformat)하여 데이터를 판독가능한 형식으로 변경하도록 구성될 수 있다. 또한, 다른 동작이 이러한 서비스에 의해 필요에 따라 수행될 수 있다. 이러한 방식으로, 시스템은 애플리케이션의 원래의 스택(native stack)에 대해 아무런 변경을 하지 않고 구현될 수 있다.
도 3은 애플리케이션 데이터를 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 할당하는 방법(300)의 흐름도를 도시한다. 지금부터 방법(300)이 도 4의 환경(400)의 컴포넌트 및 데이터를 빈번하게 참조하여 설명될 것이다.
방법(300)은 가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장될 것인지 및 어느 부분이 네트워크 데이터 스토어에 저장될 것인지에 대한 표시를 관리자로부터 수신하는 단계(310)를 포함한다. 예를 들어, 데이터 입출력 필터(420)는 가상 애플리케이션(410)의 특정된 부분 중 어느 부분이 로컬 데이터 스토어(426)에 저장될 것이지 및 어느 부분이 네트워크 액세스 가능 데이터 스토어(430)에 저장될 것인지를 나타내는 표시(423)를 관리자(425)로부터 수신할 수 있다. 따라서, 적어도 일부의 경우에, 컴퓨터 관리자가 일부 파일은 사용자의 로컬 컴퓨터 시스템에 저장되고 다른 데이터 파일은 원격 데이터 스토어에 저장되도록 지정하는 것이 바람직할 수 있다. 관리자는 어느 파일이 어디에 저장될지를 지정할 수 있고, 사용자가 가상 애플리케이션(410)을 사용하고 있는 동안 판정을 갱신할 수 있다. 따라서, 로컬 데이터 스토어(426)에 저장되었던 파일(432)이 관리자에 의해 그렇게 지정된 경우에, 제거될 수 있다. 반대로, 데이터 파일은 관리자에 의해 그렇게 지정된 경우에 네트워크 액세스가능 데이터 스토어로부터 로컬 데이터 스토어로 이동될 수 있다. 데이터 파일이 로컬로 저장된다고 언급하는 경우에, 파일은 로컬로 저장되고 디스크 상에 존재하나, 파일 명칭 및 크기 정보만을 포함하는 빈 스파스 파일로서 존재한다.
또한, 관리자는 네트워크 데이터 스토어(430) 상의 애플리케이션 패키지를 갱신할 수 있다. 이어서, 갱신된 파일은 가상 애플리케이션에 의해 다음번 요청되는 시점에, 갱신된 파일이 구 버전 대신에 제공된다. 이와 같이, 가상 애플리케이션은 새로운 애플리케이션 패키지로 전환함으로써 갱신될 수 있다. 이러한 갱신된 파일은 그러한 파일에 후속 액세스하는 사용자 모두에게 제공될 수 있다. 새로운 파일이 로컬 파일 시스템에서 생성되어 갱신이 필요한 임의의 로컬 파일을 대체한다.
또한, 방법(300)은 가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장되는지를 기술하는 메타데이터의 하나 이상의 부분을 생성하는 단계(320)를 포함한다. 로컬 컴퓨터 시스템은 가상 애플리케이션(410)으로부터 수신된 데이터 요청(411)을 전달할 위치를 결정하기 위해 데이터 입출력 필터에 의해 사용되는 메타데이터(421)를 생성할 수 있다. 메타데이터는, 각각의 파일에 대해, 데이터 파일이 (로컬로(426) 또는 원격으로(430)) 저장되는 위치를 나타낸다. 따라서, 데이터 입출력 필터가 가상 애플리케이션으로부터 데이터 요청을 수신하는 경우에, 그 요청을 자동으로 사용자 모드 서비스(115)로 (또는 네트워크 데이터 스토어로 직접) 전달하는 대신에, 데이터 입출력 필터는 메타데이터(421)에 액세스하여 데이터가 로컬로 저장되는지 또는 원격 스토어에 저장되는지 여부를 판정한다. 데이터가 로컬로 저장되는 경우에, 데이터 요청은 로컬 파일 시스템으로 송신된다. 데이터가 원격으로 저장되는 경우에, 데이터 요청은 네트워크 데이터 스토어로 송신된다. 따라서, 전술한 바와 같이, 관리자(425)는 각각의 파일이 저장될 곳을 나타낼 수 있고, 데이터 입출력 필터는 관리자가 한 (표시(423)를 통해) 관리자의 선택을 알 수 있다. 따라서, 메타데이터는 관리자가 데이터 파일을 할당함에 따라 지속적으로 갱신될 수 있고, 데이터 입출력 필터는 갱신된 메타데이터에 기초하여 데이터 요청을 정확하게 전달할 수 있다.
따라서, 전술한 바와 같이, 데이터 파일 요청(411)이 특정된 데이터 파일의 데이터를 요청하는 가상 애플리케이션으로부터 수신될 수 있다(단계 330). 데이터 입출력 필터(420)는 이후에 생성된 메타데이터(421)에 기초하여, 특정된 데이터 파일이 로컬 데이터 스토어(426)에 저장될 것인지 원격 데이터 스토어(430)에 저장될 것인지를 판정할 수 있다(단계 340). 그러한 판정에 기초하여, 데이터 입출력 필터는 데이터 파일 요청을 로컬 데이터 스토어 또는 원격 데이터 스토어에 송신한다(단계 350). 데이터 파일 요청은 단독으로 또는 복수로 수신될 수 있고, 적합한 데이터 스토어로 단독으로 또는 복수로 전달될 수 있다. 유사하게, 데이터(431)는 단일 파일 또는 파일 그룹으로 수신될 수 있다. 일부의 경우에, 서로 다른 데이터 요청이 로컬 데이터 스토어 및 원격 데이터 스토어 모두로 동시에 송신될 수 있다. 데이터 요청이 각각의 데이터 스토어에 의해 충족되는 경우에, 데이터는 다시 데이터 입출력 필터로 송신될 수 있고, 이후에 가상 애플리케이션으로 단일 파일 또는 파일 그룹으로서 송신될 수 있다. 일부의 경우에, 데이터는 로컬 데이터 스토어 및 원격의 네트워크 액세스가능 데이터 스토어 중 하나 또는 모두로부터 스트리밍될 수 있다. 원격 데이터 스토어로부터 데이터가 수신되면, 로컬 데이터 스토어에는 아무것도 저장되지 않고 데이터가 가상 애플리케이션으로 전달된다.
따라서, 가상 소프트웨어 애플리케이션을 동적으로 전달하는 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다. 가상 애플리케이션이 사용자에 의해 사용되면, 데이터 파일은 가상 애플리케이션에 의해 필요에 따라 네트워크 데이터 스토어로부터 동적으로 그리고 자동으로 스트리밍된다. 또한, 로컬 데이터 스토어 및 네트워크 액세스가능 데이터 스토어 사이의 동적인 데이터 할당을 가능하게 하는 방법, 시스템 및 컴퓨터 프로그램 제품이 제공된다.
본 발명은 본 발명의 사상 또는 핵심 특징을 벗어나지 않는 범위 내에서 다른 구체적인 형식으로 구현될 수 있다. 기술된 실시예는 모든 면에서 단지 설명을 위한 것이며 제한적인 의미로 간주하여서는 안 된다. 따라서 본 발명의 범주는 전술한 상세한 설명이 아니라 첨부된 청구범위에 의한다. 청구범위의 등가물의 의미 및 범위 내에 속하는 모든 변경은 청구범위의 범주 내에 포함된다.

Claims (15)

  1. 복수의 컴퓨팅 시스템을 포함하는 컴퓨터 네트워킹 환경 내의, 적어도 하나의 프로세서 및 메모리를 포함하는 컴퓨터 시스템에서, 가상 소프트웨어 애플리케이션을 동적으로 전달(delivering)하는 컴퓨터 구현 방법으로서,
    가상 소프트웨어 애플리케이션으로부터 운영 체제의 파일 시스템으로 송신되는 데이터 파일 요청을 가로채도록 구성되는 데이터 입출력(I/O) 필터를 설정하는 단계와,
    상기 데이터 입출력 필터가 상기 파일 시스템으로부터 특정된 데이터 파일을 검색하도록 구성되는 데이터 파일 판독 요청을 가로채는 단계와,
    상기 데이터 입출력 필터가 상기 가로채기 된 판독 요청을 상기 특정된 데이터 파일을 반환하도록 구성된 네트워크 액세스가능 데이터 스토어(network-accessible data store)에 전달(forwarding)하는 단계와,
    상기 특정된 데이터 파일을 상기 네트워크 데이터 스토어로부터 수신하는 경우에, 상기 특정된 데이터 파일이 자신에 대한 판독 요청에 응답하여 상기 가상 애플리케이션에 의해 사용될 수 있도록 상기 입출력 필터가 상기 특정된 데이터 파일을 상기 가상 소프트웨어 애플리케이션에 송신하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 가상 소프트웨어 애플리케이션에 의해 요구되는 각각의 파일을 동적으로 제공하도록 복수의 데이터 파일이 가로채기 되고 스트리밍되는
    컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 네트워크 데이터 스토어로부터 수신된 상기 데이터 파일은 상기 컴퓨터 시스템의 파일 시스템에 저장되지 않는
    컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 네트워크 데이터 스토어로부터 동적으로 검색된 각각의 데이터 파일은 상기 가상 소프트웨어 애플리케이션에게 상기 컴퓨터 시스템의 파일 시스템으로부터 수신된 것으로 보이는
    컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 입출력 데이터 필터는 상기 소프트웨어 애플리케이션이 데이터 파일을 요청하는 방식을 변경하지 않고서 구현되는
    컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 요청된 데이터 파일은 상기 네트워크 데이터 스토어로부터 상기 컴퓨터 시스템으로 스트리밍되는
    컴퓨터 구현 방법.
  7. 제1항에 있어서,
    상기 가로채기 된 요청은, 상기 요청을 상기 네트워크 데이터 스토어로 전달하고 요청된 데이터를 상기 네트워크 데이터 스토어로부터 수신하도록 구성되는 사용자 모드 서비스(user-mode service)로 송신되는
    컴퓨터 구현 방법.
  8. 제7항에 있어서,
    상기 사용자 모드 서비스는 상기 수신된 데이터를 상기 입출력 필터로 전달하고,
    상기 입출력 필터는 상기 데이터를 상기 가상 애플리케이션으로 전달하는
    컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 네트워크 데이터 스토어는 클라우드를 포함하고,
    상기 특정된 데이터 파일은 HTTP(hypertext transfer protocol)를 사용하여 상기 클라우드로부터 검색되는
    컴퓨터 구현 방법.
  10. 복수의 컴퓨팅 시스템을 포함하는 컴퓨터 네트워킹 환경 내의, 적어도 하나의 프로세서 및 메모리를 포함하는 클라이언트 컴퓨터 시스템에서, 로컬 데이터 스토어와 네트워크 데이터 스토어 간에 애플리케이션 데이터를 할당하는 컴퓨터 구현 방법으로서,
    가상 애플리케이션의 특정된 부분 중 어느 부분이 로컬 데이터 스토어에 저장되고 어느 부분이 네트워크 데이터 스토어에 저장되는지에 대한 표시(indication)를 관리자(administrative user)로부터 수신하는 단계와,
    상기 가상 애플리케이션의 특정된 부분 중 어느 부분이 상기 로컬 데이터 스토어에 저장되는지를 기술하는 메타데이터의 하나 이상의 부분을 생성하는 단계와,
    특정된 데이터 파일의 데이터를 요청하는 데이터 파일 요청을 상기 가상 애플리케이션으로부터 수신하는 단계와,
    상기 생성된 메타데이터에 기초하여, 상기 특정된 데이터 파일이 상기 로컬 데이터 스토어에 저장되어 있는지 아니면 상기 네트워크 데이터 스토어에 저장되어 있는지 여부를 판정하는 단계와,
    상기 판정에 기초하여, 상기 데이터 파일 요청을 상기 로컬 데이터 스토어 및 상기 네트워크 데이터 스토어 중 적어도 하나에 송신하는 단계
    를 포함하는 컴퓨터 구현 방법.
  11. 제10항에 있어서,
    상기 관리자는 상기 애플리케이션 패키지를 교체함으로써 상기 네트워크 데이터 스토어 상에서 애플리케이션을 갱신하는
    컴퓨터 구현 방법.
  12. 제11항에 있어서,
    상기 로컬 컴퓨터 시스템 상의 로컬 서비스는 상기 데이터가 상기 로컬 컴퓨터 시스템에 의해 판독가능함을 보증하기 위해, 상기 데이터 파일의 암호화, 상기 데이터 파일의 재포맷 및 상기 데이터 파일의 압축 해제 중 적어도 하나를 수행하도록 구성되는
    컴퓨터 구현 방법.
  13. 컴퓨터 시스템으로서,
    하나 이상의 프로세서와,
    시스템 메모리와,
    상기 하나 이상의 프로세서에 의해 실행되는 경우에 상기 컴퓨터 시스템으로 하여금 가상 소프트웨어 애플리케이션을 동적으로 전달하는 방법을 수행하게 하는 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체
    를 포함하되,
    상기 방법은,
    가상 소프트웨어 애플리케이션(110)으로부터 파일 시스템으로 송신되는 데이터 파일 요청(111)을 가로채도록 구성되는 데이터 입출력(I/O) 필터를 설정하는 단계와,
    상기 입출력 필터가 상기 파일 시스템으로부터 특정된 데이터 파일을 검색하도록 구성되는 데이터 파일 판독 요청을 가로채는 단계와,
    상기 요청된 데이터 파일에 대한 스파스 파일(sparse file)을 상기 파일 시스템 상에 생성하는 단계 - 상기 스파스 파일은 상기 요청된 데이터 파일에 대한, 상기 파일의 명칭 및 크기를 포함하는 플레이스홀더 정보를 포함함 - 와,
    상기 파일이 존재한다고 상기 가상 소프트웨어 애플리케이션에게 표시하는 단계 - 상기 표시(indication)는 상기 요청된 데이터 파일의 명칭 및 크기를 포함함 - 와,
    상기 요청된 데이터 파일의 실제 데이터 콘텐트에 대한 요청을 상기 가상 소프트웨어 애플리케이션으로부터 수신하는 단계와,
    상기 가로채기 된 판독 요청을 사용자 모드 서비스(user-mode service)에 전달하는 단계 - 상기 사용자 모드 서비스는 상기 데이터 요청을, 상기 특정된 데이터 파일을 반환하도록 구성된 네트워크 액세스가능 데이터 스토어에 전달함 - 와,
    상기 사용자 모드 서비스에서 상기 특정된 데이터 파일을 상기 네트워크 데이터 스토어로부터 수신하는 경우에, 상기 특정된 데이터 파일이 자신에 대한 판독 요청에 응답하여 상기 가상 애플리케이션에 의해 사용될 수 있도록, 상기 사용자 모드 서비스가 상기 데이터 파일 콘텐트를 상기 데이터 파일을 상기 가상 소프트웨어 애플리케이션에 송신하는 상기 입출력 필터에게 전달하는 단계
    를 포함하는 컴퓨터 시스템.
  14. 제13항에 있어서,
    상기 요청된 데이터 파일은 상기 데이터 파일의 콘텐트 중 어느 것도 상기 데이터 파일 시스템에 저장하지 않고서 상기 가상 소프트웨어 애플리케이션으로 스트리밍되는
    컴퓨터 시스템.
  15. 제14항에 있어서,
    상기 가상 소프트웨어 애플리케이션이 상기 사용자에 의해 사용되는 경우에, 상기 가상 소프트웨어에 의한 요구에 따라 데이터 파일이 상기 네트워크 데이터 스토어로부터 동적으로 그리고 자동으로 스트리밍되는
    컴퓨터 시스템.
KR1020147016108A 2011-12-15 2012-12-06 자율형 네트워크 스트리밍 기법 KR101991537B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/327,695 2011-12-15
US13/327,695 US8938550B2 (en) 2011-12-15 2011-12-15 Autonomous network streaming
PCT/US2012/068055 WO2013090101A1 (en) 2011-12-15 2012-12-06 Autonomous network streaming

Publications (2)

Publication Number Publication Date
KR20140101370A true KR20140101370A (ko) 2014-08-19
KR101991537B1 KR101991537B1 (ko) 2019-09-30

Family

ID=47968839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147016108A KR101991537B1 (ko) 2011-12-15 2012-12-06 자율형 네트워크 스트리밍 기법

Country Status (12)

Country Link
US (2) US8938550B2 (ko)
EP (1) EP2791787B1 (ko)
JP (1) JP6188713B2 (ko)
KR (1) KR101991537B1 (ko)
CN (1) CN103020235B (ko)
AU (1) AU2012352719B2 (ko)
BR (1) BR112014014336B1 (ko)
CA (1) CA2858081A1 (ko)
ES (1) ES2623299T3 (ko)
MX (1) MX347985B (ko)
RU (1) RU2612579C2 (ko)
WO (1) WO2013090101A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170046779A (ko) * 2014-09-22 2017-05-02 아마존 테크놀로지스, 인크. 컴퓨팅 환경 선택 기술

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832296B2 (en) 2011-12-15 2014-09-09 Microsoft Corporation Fast application streaming using on-demand staging
US20130159382A1 (en) * 2011-12-15 2013-06-20 Microsoft Corporation Generically presenting virtualized data
US9166866B2 (en) * 2013-04-30 2015-10-20 Microsoft Technology Licensing, Llc Hydration and dehydration with placeholders
US9405767B2 (en) 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
US9641614B2 (en) 2013-05-29 2017-05-02 Microsoft Technology Licensing, Llc Distributed storage defense in a cluster
US10404520B2 (en) 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
JP6619708B2 (ja) * 2016-08-08 2019-12-11 日本電信電話株式会社 データ分離評価装置、データ分離評価方法およびデータ分離評価プログラム
US20180059990A1 (en) 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files
US11507534B2 (en) 2017-05-11 2022-11-22 Microsoft Technology Licensing, Llc Metadata storage for placeholders in a storage virtualization system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215741A1 (en) * 2000-06-14 2004-10-28 Disney Enterprises, Inc. Technique for providing access to data
US20110029968A1 (en) * 2009-08-03 2011-02-03 James Sanders Streaming An Application Install Package Into A Virtual Environment
WO2011025989A1 (en) * 2009-08-27 2011-03-03 Musigy Usa, Inc. A system and method for pervasive computing
US7987335B1 (en) * 2008-03-28 2011-07-26 Symantec Corporation Techniques for virtualizing data
JP2011159295A (ja) * 2010-02-02 2011-08-18 Ricoh Co Ltd ユーザが設定を選択できるネットワーク印刷の方法とシステム
US20110225576A1 (en) * 2010-03-09 2011-09-15 Jacob Guedalia Data streaming for interactive decision-oriented software applications

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453334B1 (en) * 1997-06-16 2002-09-17 Streamtheory, Inc. Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching
US5953729A (en) * 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
US6574618B2 (en) * 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
WO2001067379A2 (en) * 2000-03-09 2001-09-13 Exent Technologies, Inc. Registry emulation
JP2004502236A (ja) * 2000-06-26 2004-01-22 ピクセル ソフトウェア テクノロジーズ リミテッド ストリーム型アプリケーションオンデマンドの高速起動および実行を可能にするためのシステムおよび方法
ATE381191T1 (de) * 2000-10-26 2007-12-15 Prismedia Networks Inc Verfahren und system zur verwaltung von verteilten inhalten und entsprechenden metadaten
US8831995B2 (en) * 2000-11-06 2014-09-09 Numecent Holdings, Inc. Optimized server for streamed applications
US7451196B1 (en) * 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
US6735601B1 (en) * 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US7047377B2 (en) * 2002-08-20 2006-05-16 Gruintine Pueche, Inc. System and method for conducting an auction-based ranking of search results on a computer network
US6999913B2 (en) * 2002-12-10 2006-02-14 John Alan Hensley Emulated read-write disk drive using a protected medium
US7769794B2 (en) * 2003-03-24 2010-08-03 Microsoft Corporation User interface for a file system shell
US8230095B2 (en) * 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
RU2007111486A (ru) * 2004-09-30 2008-11-10 Стрикс Системз, Инк. (Us) Устройство для изолирования процесса выполнения прикладных программ и способ его использования
US8024523B2 (en) * 2007-11-07 2011-09-20 Endeavors Technologies, Inc. Opportunistic block transmission with time constraints
CA2543941A1 (en) * 2005-04-18 2006-10-18 Diskstream Inc. Method and system for managing metadata information
KR100715674B1 (ko) 2005-09-15 2007-05-09 한국전자통신연구원 부하 분산 방법 및 장치, 그리고 이를 이용한 소프트웨어스트리밍 시스템
US8903916B2 (en) 2006-07-05 2014-12-02 International Business Machines Corporation Method, system, and computer-readable medium to render repeatable data objects streamed over a network
US7788394B2 (en) 2006-08-31 2010-08-31 General Instrument Corporation Streaming content over an internet protocol network
US8756293B2 (en) * 2007-04-23 2014-06-17 Nholdings Sa Providing a user with virtual computing services
US8892738B2 (en) * 2007-11-07 2014-11-18 Numecent Holdings, Inc. Deriving component statistics for a stream enabled application
EP2238535A4 (en) * 2007-12-20 2011-03-09 Virtual Computer Inc SYSTEMS AND METHODS FOR VIRTUAL COMPUTER MANAGEMENT
US8078577B2 (en) * 2008-04-07 2011-12-13 Installfree, Inc. Method of bi-directional synchronization of user data
US8005851B2 (en) * 2008-05-21 2011-08-23 Microsoft Corporation Streaming virtual disk for virtual applications
KR20100071688A (ko) 2008-12-19 2010-06-29 한국전자통신연구원 스케일러블 비디오 코딩 기반의 포괄적 비디오 접근을 위한스트리밍 서비스 장치 및 방법
US8533151B2 (en) * 2009-05-26 2013-09-10 Microsoft Corporation Generating a local copy of a virtualized application package from a local installation
US8341620B2 (en) * 2009-06-25 2012-12-25 Microsoft Corporation Streaming optimized virtual application images
US8886762B2 (en) * 2009-09-17 2014-11-11 Adobe Systems Incorporated Stream duration management
US20110106937A1 (en) 2009-10-29 2011-05-05 Fluke Corporation Mixed-mode analysis
CN101799826B (zh) * 2010-03-04 2011-09-14 中国电子科技集团公司第二十八研究所 一种基于虚拟视图的网络化数据共享系统及方法
US8489708B2 (en) * 2010-04-06 2013-07-16 Microsoft Corporation Virtual application extension points
US8560825B2 (en) * 2010-06-30 2013-10-15 International Business Machines Corporation Streaming virtual machine boot services over a network
US8495625B1 (en) * 2010-07-27 2013-07-23 Symantec Corporation Method and system for creation of streamed files on-demand
US8490088B2 (en) * 2010-09-10 2013-07-16 International Business Machines Corporation On demand virtual machine image streaming
CN102014158B (zh) * 2010-11-29 2013-07-10 北京兴宇中科科技开发股份有限公司 一种云存储服务客户端高效细粒度数据缓存系统与方法
US20120158819A1 (en) * 2010-12-21 2012-06-21 Microsoft Corporation Policy-based application delivery
WO2012146985A2 (en) * 2011-04-28 2012-11-01 Approxy Inc. Ltd. Adaptive cloud-based application streaming
US8676938B2 (en) * 2011-06-28 2014-03-18 Numecent Holdings, Inc. Local streaming proxy server

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040215741A1 (en) * 2000-06-14 2004-10-28 Disney Enterprises, Inc. Technique for providing access to data
US7987335B1 (en) * 2008-03-28 2011-07-26 Symantec Corporation Techniques for virtualizing data
US20110029968A1 (en) * 2009-08-03 2011-02-03 James Sanders Streaming An Application Install Package Into A Virtual Environment
WO2011025989A1 (en) * 2009-08-27 2011-03-03 Musigy Usa, Inc. A system and method for pervasive computing
JP2011159295A (ja) * 2010-02-02 2011-08-18 Ricoh Co Ltd ユーザが設定を選択できるネットワーク印刷の方法とシステム
US20110225576A1 (en) * 2010-03-09 2011-09-15 Jacob Guedalia Data streaming for interactive decision-oriented software applications

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170046779A (ko) * 2014-09-22 2017-05-02 아마존 테크놀로지스, 인크. 컴퓨팅 환경 선택 기술

Also Published As

Publication number Publication date
KR101991537B1 (ko) 2019-09-30
US8938550B2 (en) 2015-01-20
RU2612579C2 (ru) 2017-03-09
MX2014007166A (es) 2014-08-21
EP2791787A4 (en) 2015-11-04
WO2013090101A1 (en) 2013-06-20
MX347985B (es) 2017-05-22
ES2623299T3 (es) 2017-07-10
US20150106440A1 (en) 2015-04-16
EP2791787A1 (en) 2014-10-22
CA2858081A1 (en) 2013-06-20
CN103020235A (zh) 2013-04-03
JP6188713B2 (ja) 2017-08-30
BR112014014336B1 (pt) 2021-08-17
RU2014123714A (ru) 2015-12-20
EP2791787B1 (en) 2017-02-01
BR112014014336A2 (pt) 2017-06-13
JP2015507787A (ja) 2015-03-12
AU2012352719B2 (en) 2017-09-28
CN103020235B (zh) 2017-04-12
US20130159381A1 (en) 2013-06-20
AU2012352719A1 (en) 2014-07-03

Similar Documents

Publication Publication Date Title
KR101991537B1 (ko) 자율형 네트워크 스트리밍 기법
US10515058B2 (en) Unified file and object data storage
US9229759B2 (en) Virtual machine provisioning using replicated containers
US20200311617A1 (en) Packaging and deploying algorithms for flexible machine learning
US11093148B1 (en) Accelerated volumes
US10210172B1 (en) File system integration and synchronization between client and server
JP2019517043A (ja) ハイブリッドアプリケーションの自動更新
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习系统
JP6285870B2 (ja) オン・デマンドのステージングを用いる高速アプリケーション・ストリーミング
US20200133502A1 (en) Methods, apparatuses and computer program products for supporting and performing data replication of virtual machine
US20230144263A1 (en) Remote virtualized asset delivery and local provisioning
US20140201214A1 (en) Creating a file descriptor independent of an open operation
Choi et al. Sdm: A scientific dataset delivery platform
US11797358B2 (en) Method and system for performing application programming interface calls between heterogeneous applications and cloud service providers
WO2018217406A1 (en) Providing instant preview of cloud based file
US11758019B1 (en) Impatient system for querying stateless computing platforms

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right