KR20180100111A - 애플리케이션들의 가속화된 실행을 위한 방법 및 디바이스 - Google Patents

애플리케이션들의 가속화된 실행을 위한 방법 및 디바이스 Download PDF

Info

Publication number
KR20180100111A
KR20180100111A KR1020187015069A KR20187015069A KR20180100111A KR 20180100111 A KR20180100111 A KR 20180100111A KR 1020187015069 A KR1020187015069 A KR 1020187015069A KR 20187015069 A KR20187015069 A KR 20187015069A KR 20180100111 A KR20180100111 A KR 20180100111A
Authority
KR
South Korea
Prior art keywords
data
application
order
execution
data portions
Prior art date
Application number
KR1020187015069A
Other languages
English (en)
Other versions
KR102119832B1 (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 KR20180100111A publication Critical patent/KR20180100111A/ko
Application granted granted Critical
Publication of KR102119832B1 publication Critical patent/KR102119832B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/445Program loading or initiating
    • G06F9/44568Immediately runnable code
    • G06F9/44578Preparing or optimising for loading
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/1724Details of de-fragmentation performed by the file system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 목적은 실행, 특히 애플리케이션 시작의 가속화를 인에이블 하도록 하는 것이다. 본 발명은 특히, 적어도 하나의 장치에 의해 수행되는 애플리케이션을 실행하는 방법에 관한 것으로, 상기 방법은: 데이터 메모리로부터 상기 애플리케이션의 실행에 필요한 데이터 부분들을 제공하는 단계(790)를 포함하며, 상기 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 상기 데이터 메모리에 저장된다.

Description

애플리케이션들의 가속화된 실행을 위한 방법 및 디바이스
본 발명은 제1 양태에 따라, 애플리케이션의 실행 방법에 관한 것이다. 제2 양태에 따르면, 본 발명은 데이터 부분들을 송신하는 방법에 관한 것이다. 제3 양태에 따르면, 본 발명은 데이터 부분들의 저장에 관한 것이다. 추가 양태들에 따르면, 본 발명은 디바이스들 및 컴퓨터 프로그램들에 관한 것이다.
전술한 종류의 일반 방법들, 특히 애플리케이션을 실행하기 위한 방법들은 종래 기술로부터 알려져있다.
애플리케이션의 시작 프로세스 동안, 인터넷과 같은 네트워크를 통해 서버에서 애플리케이션이 먼저 다운로드 되어야 경우, 애플리케이션이 마침내 사용자에 의한 인터랙팅 사용이 준비되기 전, 몇 초 또는 분 또는 심지어 몇 시간이 걸릴 수 있다. 그러나, 일반적으로 사용자는 가능한 한 빨리 선택된 애플리케이션을 사용하고자 하므로, 시작 프로세스는 가능한 한 짧아야 한다.
또한, 최근에는 실행 가능한 애플리케이션들이 데이터 매체 상에 더 이상 배포되지 않고 네트워크, 예를 들어 인터넷, 을 통해 배포되기 때문에, 실행 가능한 애플리케이션들을 전송할 빈도의 필요성이 점점 커지고 있다. 이 경우 애플리케이션을 시작할 때까지 짧은 시간이 또한 걸리는 것을 보장하기 위해 많은 접근법들이 취해졌었다.
하나의 예시가 비디오 스트리밍으로 알려져 있는 것으로, 애플리케이션은 서버에서 실행되고 오디오 및 비디오 스트림만 애플리케이션이 사용되는 클라이언트로 전송된다.
그러나, 이것의 단점은 서버로부터 멀리 떨어진 클라이언트 상에서 애플리케이션의 만족스럽고 특히 유동적인 사용이 가능하기 위해서 일정 환경들에서 대기 시간이 너무 길다는 것이다. 예를 들어, 대역폭이 충분하지 않거나, 또는 특히 인터넷을 통한 전송의 경우 수백 밀리 초의 대기 시간들이 발생할 수 있다. 추가로, 오디오 및/또는 비디오 스트림 형태로 지속적인 데이터 전송이 필요하므로, 클라이언트가 계속 온라인 상태여야 한다.
이러한 단점들을 해결하기 위해, 애플리케이션 스트리밍이 사용되며, 서버에 의해 애플리케이션이 요구되면 클라이언트에 제공된다. 그러나 애플리케이션은 클라이언트에 오디오 및/또는 비디오 데이터만 전송되고 있는 서버 상의 비디오 스트리밍처럼 실행되지 않고, 오히려 애플리케이션 자체가 클라이언트에 의해 로컬로 전송되고 실행된다. 애플리케이션은 클라이언트 상에서 로컬로 실행되기 때문에, 서버의 퍼포먼스(performance)가 애플리케이션을 실행하기 위해 디자인되어야 하는 것은 아니다. 추가로, 긴 대기 시간들은 문제를 제시하지 않거나 심지어 관련성이 없다.
따라서, 애플리케이션이, 인터넷과 같은, 네트워크를 통해 먼저 원격 서버로부터 다운로드 되어야 하는 경우, 애플리케이션이 최종적으로 사용자에 의해 대화식으로 사용될 수 있을 때까지 실제로 많은 시간이 걸릴 수 있다.
이러한 특정한 단점을 해결하기 위해, 예를 들어, 애플리케이션의 다운로드 및 설치에 필요한 시간을 단축하여 궁극적으로 애플리케이션을 시작할 때까지의 시간을 단축되도록 함이, 종래 기술로부터 알려져 있다. 이를 위해, 예를 들어, 실행 가능한 임계치에 도달할 때까지 소프트웨어 타이틀의 블록들이 다운로드 될 수 있다. 소프트웨어 타이틀은 그 후 실행되고, 소프트웨어 타이틀이 실행되고 있는 동안 소프트웨어 타이틀의 추가 블록들의 다운로드가 계속될 수 있다.
이러한 방식으로, 특히 애플리케이션이 원격 서버에서 다운로드 되어야 하는 경우, 애플리케이션을 시작하기 전과 시작할 때까지의 시간이 단축될 수 있다. 그러나, (부분) 다운로드 후에, 애플리케이션은 그 후 사용자의 로컬 메모리에, 예를 들어 그들의 하드 디스크에, 정상적으로 저장된다. 이와 관련하여 최고의 시나리오에서 애플리케이션의 실제 시작 프로세스는 로컬하게 설치된 애플리케이션만큼만 빠르게 된다. 이 경우에, 필요한 데이터가 이미 로컬하게 사용 가능하더라도, 사용자가 애플리케이션을 대화식으로 사용할 수 있을 때까지는 또한 여전히 몇 초 또는 몇 분이 걸린다.
그러나, 상술한 것처럼, 애플리케이션 시작까지의 시간을 단축하는 것뿐만 아니라, 실행 자체 및 특히 실제 시작 자체를 가속화하는데 관심이 있다. 컴퓨터 게임들의 경우, 컴퓨터 게임의 시작시 사용자들 또는 게이머들은, 예를 들어, 마침내 컴퓨터 게임이 재생될 수 있을 때까지, 비디오 시퀀스들을 통해 종종 전환된다. 이와 관련하여 애플리케이션 시작 자체의 단축이 또한 바람직하다. 이것은 다른 애플리케이션들에 동등하게 적용된다. 그것은 애플리케이션 스트리밍을 통해 사용자가 사용할 수 있는 애플리케이션들과 이미 사용자가 로컬적으로 사용할 수 있는 애플리케이션들 모두에 또한 적용된다.
본 발명의 목적은 즉, 애플리케이션의 가속화된 실행, 특히 가속화된 시작을 가능하게 하는 의도를 가진 일반적인 방법, 디바이스들 및 컴퓨터 프로그램들을 표시하는 것이다.
제1 양태에 따르면, 발명은 적어도 하나의 디바이스에 의해 수행되는 애플리케이션을 실행하기 위한 방법에 관한 것으로서, 상기 방법은: 상기 애플리케이션의 실행에 필요한 데이터 부분들을 데이터 메모리로부터 제공하는 단계(790)를 포함하며, 상기 데이터 부분들은 예상 필요 순서(expected required order)에 기초하여 적어도 일부 영역들에 있는 순서로 상기 데이터 메모리에 저장되어 있다.
본 발명은 데이터 부분들이 데이터 메모리로부터 제공 될 때, 데이터 부분들이 특정한 순서, 즉 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로, 데이터 부분들이 데이터 메모리에 저장된다는 사실의 장점을 취한다. 이것은 애플리케이션의 필요한 데이터 부분들이 보통보다 빠르게 정기적으로 사용 가능하며 그리고 특히 애플리케이션 시작 프로세스가, 프로그램이 이미 로컬하게 설치되어 있는지 여부 또는 원격 서버에서 먼저 다운로드 되어야 하는지 여부에 관계없이, 크게 가속화될 수 있음을 의미한다. 따라서, 특히, 애플리케이션의 실행을 가속화하는 방법이 제공된다. 여기서 데이터 메모리는 예를 들어, 하드 디스크, SolidState Disk(SSD), working memory(RAM) 또는 외장 드라이브에 의해 제공될 수 있다.
그러나, 애플리케이션이 데이터 메모리 (예를 들어, 하드 디스크)에 종래의 방식으로 저장되는 경우, 데이터 메모리 내의 개별 데이터 부분들의 순서는, 예를 들어, 파일 소속 또는 폴더 구조에 종속한다. 또한, 데이터 부분들은 애플리케이션의 실행을 더 느리게 하는 조각화된 형태로 종종 존재한다. 조각화는 무엇보다도 실제 사용된 파일 시스템에 기인할 수 있다. 대부분의 파일 시스템들은 최적의 전체 퍼포먼스가 달성될 수 있도록 개발되어, 애플리케이션에 속한 데이터 부분들이 시간이 지날수록 데이터 메모리에서 조각화되도록 한다. 최신 파일 시스템들은 진행중인 동작 동안 이러한 영향을 최소화 할 수 있지만, 그럼에도 불구하고 개별 파일들의 데이터 부분들의 순서는 이전과 같이 파손된다. 사용 가능한 데이터 메모리들의 다양한 물리적 액세스 메커니즘들과 관계없이, 즉 예를 들어 회전 스핀들들이 있는 하드 디스크, Solid State Disk(SSD) 또는 working memory(RAM)의 경우인지 여부에 관계없이, 직접 액세스 (탐색 동작들이라고도 하는, 타겟팅된 점프들을 통한 액세스 또는 랜덤 액세스로 또한 지칭됨)는 느린 것처럼 된다.
이제 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 저장되기 때문에, 본 발명은 스트리밍 프로세스 동안 연속적인 스트림과 유사한 방식으로 데이터 부분들이 사용 가능하도록 한다. 데이터 메모리가 예를 들어 회전 스핀들을 갖는 하드 디스크인 경우, 기록 판독 헤드를 임의로 통과시키기 때문에, 일반적으로 요청된 데이터 부분과 동일한 트랙 상에 위치된 모든 데이터 부분들이 판독된다. 따라서, 동일한 트랙에서의 추가 데이터 부분들의 판독으로부터 추가 지연이 발생하지 않는다. 이러한 것들은 이후에 요청되면 즉시 사용 가능하다. 이와 관련하여, 데이터 부분들의 사전로딩이 달성된다 ("데이터 프리페칭"). 예를 들어, 데이터 메모리가 예를 들어, 고체 상태 기반의 데이터 메모리 (예를 들어SSD, RAM)인 경우, 일반적으로 요청된 데이터 부분 대신에 전체 메모리 페이지가 하나의 단계로 판독된다. 따라서, 캐시는 인접하게 저장된 데이터 부분들을 또한 포함한다. 잠시 후 필요한 다음 데이터 부분이 요청되면, 이것은 이미 캐시에서 사용 가능하다. 이 경우에, 또한, 데이터 부분들의 프리페치가 달성된다. 마지막으로, 큰 거리들 (많은 홉(hope)들을 가진)에서 왕복 지연 시간은 수백 밀리 초가 될 수 있으며 개별 데이터 부분들의 요청에는 다소 시간이 걸릴 수 있기 때문에, 이 방법은 네트워크를 통한 통신에서 또한 유리할 수 있다.
애플리케이션은 특히 유용한 또는 원하는 비-시스템-지향 기능을 프로세싱, 지원 또는 제공하기 위해 사용되는 컴퓨터 프로그램일 수 있다. 이미지 프로세싱, 비디오 프로세싱, 텍스트 프로세싱, 스프레드시트들 및 재무 회계, 고객 관리 등과 같은 일정 운영 기능들에 사용되는 애플리케이션을 기본적으로 상상할 수(conceivable) 있다. 애플리케이션은 사용자 공간에서 적어도 부분적으로 실행된다. 특히 바람직하게는, 애플리케이션은 컴퓨터 게임 또는 그 일부이거나 컴퓨터 게임 또는 그 일부를 포함한다. 상기 방법은 애플리케이션을 실행하는 단계를 또한 포함할 수 있다.
퍼포먼스를 추가로 증가시키기 위해, 상기 방법은 바람직하게는 (적어도 부분적으로) 커널 공간에서 실행된다.
애플리케이션을 실행하기 위해, 애플리케이션은 예를 들어, 하나 이상의 실행 가능 파일들을 포함할 수 있다. 여기서, 예를 들어, 직접 또는 런타임 시스템에 의해 실행될 수 있거나 또는 운영 체제 쉘에 의해 해석될 수 있는 텍스트 파일일 수 있는, 기계 코드 내의 2진 파일 또는 바이트코드 파일이 포함될 수 있다. 데이터 부분들은, 특히 실행 가능한 파일의 데이터 부분들일 수 있다.
애플리케이션 실행에 필요한 데이터 부분들은 특히 필수적으로 및/또는 선택적으로 필요한 데이터 부분들로 이해될 수 있다.
데이터 메모리에 데이터 부분들이 저장된 순서가 예상 필요 순서에 기초한다는 사실은, 특히 데이터 메모리에 데이터 부분들이 저장되는 (물리적) 순서가 필요한 (시간) 순서로부터 결정되었었다는 것을 의미한다. 예를 들어, 데이터 부분들이 데이터 메모리에 저장되는 순서는 예상 필요 순서다. 이것이 적어도 몇몇 영역들에서 발생한다는 사실은, 특히 데이터 메모리에서 애플리케이션을 실행하는데 필요한 데이터 부분들이 어느 정도까지는 통상적으로, 즉 예상 필요 순서와는 독립적으로 또한 저장될 수 있다는 것을 의미한다.
여기서, 예상 필요 순서는 애플리케이션이 순서대로 데이터 부분들을 필요로 할 것임이 예상될 수 있음을 의미한다. 달리 말해, 데이터 부분들은 특히 애플리케이션의 데이터 부분들에 대한 시간적 필요를 반영한 순서로 물리적으로 저장된다. 예상 필요 순서는 특히 경험적으로 결정될 수 있다. 특히, 예상 필요 순서는 본 발명의 제3 양태와 관련하여 보다 상세히 기술된 것처럼 결정될 수 있다.
애플리케이션 실행에 필요한 모든 데이터 부분들이 반드시 기술된 대로 저장되어야 하는 것은 아니다. 예를 들어, 애플리케이션의 실행에 필요한 데이터 부분들 중 단지 일부가 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서대로 또한 저장될 수 있다.
제1 양태에 따른 방법은, 특히 다른 양태들과 관련하여보다 상세하게 기술된 적어도 하나의 첫 번째 디바이스에 의해 실행될 수 있다.
제1 양태의 방법의 실시예에 따르면, 상기 방법은: 애플리케이션을 실행하는데 필요한 데이터 부분들을 요청하는 단계를 더 포함한다.
요청은 예를 들어, 애플리케이션, 운영 체제 및/또는 파일 시스템에 의해 수행될 수 있다. 예를 들어, 애플리케이션은 실행을 위해 데이터 부분을 필요로 하고 이를 파일 시스템에 전달(pass)한다. 데이터 메모리의 데이터 부분을 모호하지 않게 식별하는 (상대적 및/또는 절대적) 어드레싱이 핸드오버(hand over) 된다는 점에서, 상기 요청이 발생할 수 있다. 어드레싱은 예를 들어, 데이터 메모리 내의 데이터 부분의 포지션를 지정할 수 있다 (예를 들어, 메모리 어드레스 또는 메모리 오프셋 값의 형태로). 예를 들어, 어드레싱은 복수의 데이터 부분들을 포함하는 데이터 메모리의 영역을 지정할 수 있다. 어드레싱에 기초하여, 그 후 (적어도) 필요한 데이터 부분은 판독되고 제공되며, 예를 들어 애플리케이션, 파일 시스템 및/또는 운영 체제로 리턴된다. 전술한 바와 같이, 일반적으로 요청된 판독된 데이터 부분뿐만 아니라 다른 물리적으로 인접한 데이터 부분들 또한 있다. 최적의 경우에, 필요한 데이터 부분은 더 이상 데이터 메모리로부터 판독될 필요조차 없지만, 다른 데이터 부분의 프리페치 때문에 이미 데이터 메모리로부터 판독되었었으며, 따라서, 예를 들어 보다 빠른 캐시에서, 사용 가능하다. 따라서, 데이터 부분은 요청에 응답하여 기술된 방법으로 상당히 신속하게 제공될 수 있다.
제1 양태의 방법의 실시예에 따르면, 상기 방법은: 상기 애플리케이션의 실행에 필요한 상기 데이터 부분들의 상기 요청을 위해 사용된 어드레싱을 상기 데이터 메모리에 저장된 상기 데이터 부분들의 상기 순서에 매핑하는 단계를 더 포함한다.
요청을 위해 사용된 어드레싱을 매핑함으로써, 어드레싱 (예를 들어, 파일 시스템 레벨에서)이 정상적으로 발생할 수 있다. 이것은 예를 들어, 애플리케이션의 통상적인 설치와 같이, 오리지널 어드레싱을 통해, 필요한 데이터 부분들이 요청될 수 있음을 의미한다. 특히, 요청을 위해 사용된 어드레싱은 제2 어드레싱에 매핑되는 제1 어드레싱일 수 있다. 예를 들어, 요청된 메모리 어드레스 또는 제1 메모리 어드레스 영역은 제2 메모리 어드레스 또는 제2 메모리 어드레스 영역에 매핑될 수 있다. 예를 들어, 제1 블록 번호 또는 제1 블록 번호 범위 (또는 복수의 범위들)는 제2 블록 번호 또는 제2 블록 번호 범위 (또는 복수의 범위들)로 매핑될 수 있다. 매핑은 바람직하게는 모호하지 않으며, 특히 일대일이다.
제1 양태의 방법의 실시예에 따르면, 사용된 어드레싱의 매핑은 파일 시스템 계층 아래에서 발생한다.
일반적으로, 파일 시스템은 운영 체제의 특정한 계층을 표현한다. 위의 계층들은 (예를 들어, 운영 체제 또는 애플리케이션들의 추가 계층들과 같은) 파일들에 액세스할 수 있다. 파일 시스템은 일반적으로 이러한 추상 데이터를 어드레싱 (예를 들어, 블록 번호, 트랙, 섹터 등)으로 변환한다. 아래 계층에서, 파일 시스템 드라이버는 이것을 위하여, 예를 들어 관련 디바이스 드라이버와 통신할 수 있다.
이제 사용된 어드레싱의 매핑이 파일 시스템의 계층 아래에서 발생하기 때문에, 매핑이 매우 효율적으로 수행될 수 있다. 필요한 데이터 부분들이, 예를 들어, 파일 시스템 계층 (또는 이것의 위의 계층)으로부터 요청된 경우, 파일 시스템은 데이터 부분들을 정상적으로 어드레스할 수 있으므로, 파일 시스템 또는 그 위에 대한 적응들은 생략될 수 있다. 예를 들어, 매핑은 디바이스 드라이버에 의해 발생한다. 따라서 매핑은 바람직하게는 디바이스 드라이버들과 연관된 계층에서 발생한다.
애플리케이션의 실행에 필요한 데이터 부분들의 제공은 따라서 특히 디바이스 드라이버들과 연관된 계층으로부터 또한 발생할 수 있다.
제1 양태의 방법의 실시예에 따르면, 상기 방법은: 애플리케이션 실행에 필요한 데이터 부분들을 수신하는 단계를 더 포함한다.
애플리케이션의 실행에 필요한 데이터 부분들이, 애플리케이션의 실행 중에, 데이터 메모리에 또는 적어도 부분적으로만, 아직 저장되어 있지 않는 것이 가능하다. 그 후 나머지 데이터 부분들은 완전히 또는 부분적으로 수신될 수 있다. 데이터 부분들은 예를 들어, 다른 로컬 또는 원격 메모리에 의해 수신될 수 있다. 예를들어, 데이터 부분들은 네트워크, 예를 들어 인터넷을 통해 수신된다. 데이터 부분들은 바람직하게는 원격 서버로부터 인터넷을 통해 수신된다.
예를 들어, 요청된 필요한 데이터 부분들이 데이터 메모리에 저장되어 있지 않다고 결정되면, 이들 데이터 부분들은 그것들을 수신하기 위해 (예를 들어, 원격 서버로부터) 요청될 수 있다. 그러나, 바람직하게는 데이터 부분들이 연속적으로 수신되기 때문에, 데이터 메모리에 아직 저장되지 않은 필요한 데이터 부분들에 대한 개별적인 요청은 바람직하게는 불필요하다. 이것은 개별 데이터 부분들이 요청되지 않고서, 데이터 부분들이 스트림과 조금씩 비슷하게 수신됨을 의미한다. 이것은 추가 애플리케이션의 실행을 가속화한다. 예를 들어, 다른 한편으로, 필요한 데이터 부분들이 이미 데이터 메모리에 저장되어 있거나 현재 필요하지 않다고 결정되면, 기술된 연속 수신은 이미 저장된 및 (현재의) 필요하지 않은 데이터 부분들에 대해 (적어도 부분적으로) 또한 스킵될 수 있다. 이들 데이터 부분들은 그 후 예를 들어, 이후의 시점에서 수신될 수 있다.
데이터 부분들은 바람직하게는 (적어도 부분적으로) 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서대로 수신될 수 있다. 이러한 방식으로, 처음에 필요해질 것으로 예상되는 데이터 부분들이 또한 최초로 수신된다. 필요한 데이터 부분들 (특히 애플리케이션을 시작하는 데 필요한 데이터 부분들)이 먼저 원격 서버로부터 수신되어야 하는 경우 특히 장점이 있다.
애플리케이션의 실행에 필요한 데이터 부분들은 추가적인 양태들과 관련하여 보다 상세하게 기술된 바와 같이, 적어도 제2 디바이스에 의해 특히 수신될 수 있다.
제1 양태의 방법의 실시예에 따르면, 상기 방법은: 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 데이터 부분들을 저장하는 단계를 더 포함한다.
필요한 데이터 부분들이 데이터 메모리에 아직 저장되지 않은 경우, 예를 들어, 이들이 먼저 수신되어야 하기 때문에, 이들은 바람직하게는 데이터 메모리에서 수신된 후에 저장된다. 적어도 일부 영역들에 있는 순서로의 저장이 예상 필요 순서에 기초하기 때문에, 이미 설명된 바와 같이, 애플리케이션의 가속화된 실행이 달성된다.
제1 양태의 방법의 실시예에 따르면, 데이터 부분들은 데이터 블록들 및/또는 데이터 블록들의 시퀀스들이고, 상기 순서는 블록 순서이다.
데이터 블록들이 예상되는 필요한 블록 순서에 기초하여 적어도 일부 영역들에 있는 블록 순서로 데이터 메모리에 저장되는 경우, 애플리케이션의 실행의 가속화가 특히 효과적으로 달성될 수 있음이 기술되었었다. 블록 순서는 예를 들어, 개별 데이터 블록들 또는 데이터 블록들의 시퀀스들의 순서를 특정할 수 있다.
데이터 블록은 특히 제한된 수의 바이트들로 간주된다. 데이터 블록은 개별 전송 단위 또는 액세스에서 가장 작은 읽기 가능 또는 기록 가능 단위로 간주될 수 있다. 데이터 블록의 구조와 데이터 블록의 요소들은 각각의 데이터 메모리, 파일 시스템 또는 다른 인자들에 종속할 수 있다.
데이터 블록은 예를 들어, 512바이트 에서 4,096바이트까지의 크기를 가질 수 있다. 그러나, 본질적으로, 더 작은 데이터 블록들 및 특히 더 큰 데이터 블록들을 상상할 수 있다. 일반적으로, 각 데이터 블록은 데이터 메모리에 모호하지 않게 어드레싱될 수 있다. 이것은 다양한 방법들을 사용하여 발생할 수 있다. 예를 들어, 연속적으로 넘버링된 블록들(LBA)을 통해 데이터 블록들의 어드레싱이 발생할 수 있다. 유사하게 (스핀들들이 있는 하드 디스크들의 경우) 실린더, 헤드 및 섹터 번호(CHS)를 통해 블록들을 어드레싱하는 것을 상상할 수 있다. 다른 데이터 블록 어드레싱 방법들을 또한 상상할 수 있다.
또한, 데이터 블록들 및 블록 순서에 기초한 제1 양태에 따른 방법의 구현예에 특히 유리한 점은, 이러한 방식으로 실질적으로 모든 운영 체제들과의 하이 레벨의 호환성이 달성된다는 사실이다. 실제 기능은 플랫폼과 관계없이 실제로 구현될 수 있다. 달성되어야 하는 모든 것은, 예를 들어, 대응하는 디바이스 드라이버의 각각의 운영 체제 내의 대응하는 (가상) 블록 디바이스의 동작 방법에 대한 적응이다.
제1 양태의 방법의 실시예에 따르면, 데이터 부분들은 블록 디바이스, 특히 가상 블록 디바이스에 저장된다.
(가상) 블록 디바이스의 사용을 통해, 데이터 메모리가 사용 가능하게 되고, 데이터 부분들의 원하는 순서가 데이터 블록들의 형태로 달성될 수 있다. (가상) 블록 디바이스 또는 블록 지향 디바이스는 데이터 블록들에 데이터를 저장하거나 전송하는 (가상) 디바이스로 이해된다. 블록 디바이스는 특히 운영 체제의 자체 버퍼를 사용할 수 있다. 블록 디바이스는 특히 하드 디스크, SSD, USB-스틱 또는 유사 디바이스일 수 있다. 가상 블록 디바이스는 실제로 운영 체제를 가장하며, 다시 말해 블록 디바이스가 존재하며 블록 디바이스는 운영 체제와 통신하고 있거나 통신할 수 있다. 특히, 가상 블록 디바이스는 소프트웨어 기반 상의 각 시스템에서, 특히 디바이스 드라이버를 통해 사용될 수 있기 때문에 유리하다. 물리적 데이터 메모리는 이 경우에 예를 들어, 로컬 하드 디스크의 데이터 메모리의 부분에 의해 제공될 수 있다.
디바이스 드라이버는, 특히 커널 공간 내의 자신의 캐시와 유리하게 연관될 수 있거나, 또는 그것을 위해 사용가능 하도록 할 수 있다. 이것은 데이터 블록들의 제공을 더욱 가속화한다. 이와 관련하여, 제1 양태의 방법은 바람직하게는, 기존 파일 시스템에 블록 디바이스를 마운팅하는 단계를 더 포함한다. 이러한 방식으로, 블록 디바이스 또는 거기에 존재하는 파일 시스템에 저장된 데이터는 운영 체제에서 사용 가능해질 수 있다. 가상 블록 디바이스로, 데이터가, 예를 들어 이미지에 저장된다.
제1 양태의 방법의 실시예에 따르면, 데이터 메모리로부터 애플리케이션의 실행에 필요한 데이터 부분들을 제공하기 위해, 디바이스 드라이버, 바람직하게는 블록 디바이스 드라이버가 사용된다. 디바이스 드라이버는 바람직하게는 가상 블록 디바이스용 디바이스 드라이버이다.
장치 드라이버는 특히 (가상) 디바이스들과의 인터랙션을 제어하는 컴퓨터 프로그램 또는 소프트웨어 모듈로 이해된다. 이를 위해, 드라이버는 다른 한편으로, 예를 들어, (가상) 디바이스와 직접 통신하고 (가상) 디바이스와 데이터를 교환할 수 있다. 다른 한편으로는, 디바이스 드라이버는, 표준화된 인터페이스에 운영 체제 및/또는 애플리케이션 소프트웨어 (즉, 특히 디바이스 드라이버와 연관된 계층 위에 포지션된 계층들)를 제공할 수 있어, (가상) 디바이스가 유사한 디바이스들과 동일한 방식으로 어드레스될 수 있다.
이와 관련하여, 제1 양태의 방법은: 데이터 메모리로부터 애플리케이션의 실행에 필요한 데이터 부분들을 제공하기 위해 디바이스 드라이버를 설치하는 단계를 더 포함한다. 예를 들어, 설치는 사용자에 의해 개시된다. 그 후, (가상) 디바이스는 기존 파일 시스템에 마운팅될 수 있다. (가상) 디바이스를 통해 데이터 메모리는 궁극적으로 액세스되고, 애플리케이션이 실행될 수 있다.
제1 양태의 방법의 실시예에 따르면, 상기 방법은: 특히 상기 필요한 데이터 부분들이 상기 데이터 메모리에서 사용 가능하지 않은 경우에, 이벤트 큐의 프로세싱을 중지시키는 단계; 및 상기 이벤트 큐의 상기 프로세싱을 재개하는 단계를 더 포함한다.
이벤트는 특히 데이터 메모리에 적용되도록 의도된 동작들 (특히 기록 및/또는 판독 동작들)을 포함할 수 있다.
예를 들어, 요청된 필요한 데이터 부분들이 (아직) 데이터 메모리에 저장되지 않고 따라서 사용 가능하지 않은 경우, 애플리케이션의 오작동을 피하기 위해, 이벤트 큐의 프로세싱을 중지하는 것이 유리할 수 있다. 이벤트 큐가 이전에 기술된 디바이스 드라이버 또는 (가상) 디바이스의 이벤트 큐인 경우에 특히 유리하다. 그 후, 상기 중지는, 예를 들어 장치 드라이버에 의해 수행될 수 있다. 그러나, 외부 명령(운영 체제 또는 프로그램의)에 의해 디바이스 드라이버의 이벤트 큐를 중지하는 것이 기본적으로 또한 가능하다. 파일 시스템과 같은, 디바이스 드라이버와 관련된 계층 위의 계층들이 디바이스 드라이버를 기다리고 있다는 사실을 이용하면 이점이 있다. 따라서, 데이터 부분들을 사용할 수 없는 경우, 마치 지연을 유발하는 (가상) 디바이스의 느린 판독이 있는 것과 같은 상황이 실제로 발생한다.
예를 들어, 이벤트 큐의 프로세싱은 미리 결정된 시간 동안 중지된다. 예를 들어, 이벤트 큐의 프로세싱이 중지된 시간이 결정된다 (예를 들어, 계산되거나 추정된다). 데이터 부분들이 예를 들어, 네트워크를 통해 수신되는 경우, 예를 들어 필요한 데이터 부분들이 수신(될 것으로 예상)될 때 전송률을 사용하여 그것은 추정될 수 있고 데이터 메모리에 저장되어 사용 가능할 수 있다.
그 후, 데이터 부분들이 사용 가능한지 체크될 수 있다. 데이터 부분들이 사용 가능한 겨우, 이벤트 큐의 프로세싱이 재개될 수 있다. 그렇지 않으면, 이벤트 큐의 프로세싱의 추가 중지가 발생할 수 있다.
제1 양태의 방법의 실시예에 따르면, 애플리케이션 시작과 관련된 적어도 데이터 부분들에 관한 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 저장된다.
애플리케이션 시작과 관련된 데이터 부분들은 애플리케이션을 시작하는 것과 관련된 데이터 부분들로 이해된다. 예를 들어, 애플리케이션 시작에 관련된 데이터 부분들은 애플리케이션이 사용자에 의해 대화식으로 사용할 수 있는 범위까지 애플리케이션을 실행하는 데 필요한 데이터 부분들이다. 예를 들어, 애플리케이션 시작과 관련된 데이터 부분들은 전체 애플리케이션의 10 % 미만 및/또는 50 메가바이트 미만을 차지한다. 이것은, 특히, 애플리케이션을 실행할 때 시작이 가속화되도록 한다.
그러나, 이와 독립적으로, 애플리케이션을 시작하는데 직접적으로 필요하지 않는 데이터 부분들(그러나 나중에 만)을 적어도 예상되는 순서에 기초하여 적어도 일부 영역들에 있는 순서로 또한 저장할 수 있음이 명백하다.
예를 들어, 애플리케이션의 데이터 부분들의 제1 양이 제공되고, 상기 데이터 부분들이 예상 필요 순서에 기초하여 저장되며, 애플리케이션의 데이터 부분들의 제2 양이 제공되고, 상기 데이터 부분들은 예상 필요 순서에 기초하지는 않지만, 독립적인 것이라고 또한 상상할 수 있다. 제1 양은 그 후, 예를 들어, 애플리케이션-관련된 데이터 부분들을 포함하므로, 신속한 실행이 인에이블(enable)하며, 제2 양의 데이터 부분들의 순서는 최적화될 필요가 없다.
제1 양태의 방법의 실시예에 따르면, 상기 방법은: 애플리케이션을 실행하기 위해 애플리케이션과 연관된 메타데이터 정보를 사용하는 단계를 더 포함한다.
메타데이터 정보는 특히 애플리케이션 실행에 (적어도 부분적으로) 필요한 애플리케이션 특정 정보로 이해된다. 예를 들어, 메타 데이터 정보는 애플리케이션을 실행하는 시스템에 (예를 들어, 운영 체제 및/또는 파일 시스템) 애플리케이션의 설치 및/또는 실행 중에 이루어지는 변경들을 포함한다. 예를 들어, 메타데이터 정보는 경로 정보, 파일 정보, 디렉토리 정보, 환경 변수들 및/또는 데이터베이스들 (예를 드어, 등록 데이터베이스들) 정보 또는 이들에 대한 수정들 (예를 들어, 새 엔트리들)을 포함한다. 메타 데이터 정보는 추가 종속성들을 또한 포함할 수 있다.
유사하게, 메타데이터 정보는 매핑 정보를 포함할 수 있으며, 애플리케이션의 실행에 필요한 데이터 부분들을 요청하기 위해 사용된 어드레싱을 데이터 메모리에 저장된 데이터 부분들의 순서로 매핑할 수 하게한다. 그러나 매핑 정보는 메타데이터 정보와 독립적으로 또한 전송될 수 있다.
제2 양태에 따르면, 발명은 데이터 부분들을 송신하기 위한 방법과 또한 관련되고, 상기 방법은 제1 양태에 따른 방법에서 사용하기 위해 적어도 하나의 디바이스에 의해 수행되며, 상기 방법은: 애플리케이션의 실행에 필요한 데이터 부분들을 송신하는 단계를 포함하며, 상기 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 저장된다.
제1 양태와 관련하여 이미 언급한 바와 같이, 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 저장되기 때문에, 일반적으로 필요한 데이터 부분들 애플리케이션이 정상보다 빨리 애플리케이션에 사용 가능할 수 있으며, 특히 애플리케이션 시작 프로세스가 크게 가속화될 수 있다.
제2 양태에 따른 방법은 특히, 추가 양태들과 관련하여보다 상세히 기술되는 적어도 하나의 제2 디바이스에 의해 실행될 수 있다.
데이터 부분들은, 예를 들어, 제1 디바이스에 송신되어 제1 양태에 따른 방법을 수행한다. 예를 들어, 데이터 부분들은 적어도 하나의 파일, 예를 들어 이미지에 저장된다. 이는 이미지만 송신되어야 함을 의미한다. 송신된 데이터 부분들이 수신되고 저장되면, 유리하게는 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 직접적으로 데이터 메모리 내의 수신기에 자동적으로 저장된다.
그러한 순서가 결정될 수 있는 방법은 본 발명의 제3 양태와 관련하여 예시로써 기술된다.
제2 양태의 방법의 실시예에 따르면, 데이터 부분들은 저장된 순서로 적어도 부분적으로 송신된다.
데이터 부분들이 적어도 부분적으로 저장된 순서로 송신되기 때문에, 먼저 필요해질 것으로 예상되는 데이터 부분들이 먼저 송신되어 첫 번째로 수신될 수 있다. 따라서, 특히 필요한 데이터 부분들이 (특히, 애플리케이션을 시작하는데 필요한 데이터 부분들) 여전히 수신되어야 (예를 들어, 제1 디바이스에 의해) 하는 상황에서, 애플리케이션을 시작할 때까지의 시간이 또한 단축된다.
제2 양태의 방법의 실시예에 따르면, 상기 방법은: 애플리케이션의 실행에 필요한 데이터 부분들의 적어도 일부를 송신하라는 요청을 수신하는 단계를 포함한다.
예를 들어, 필요한 데이터 부분들이 데이터 메모리에 저장되어 있지 않다고 제1 디바이스에 의해 결정되면, 이 데이터 부분들이 수신될 수 있도록 이 데이터 부분들이 요청될 수 있다. 데이터 부분들을 송신하라는 요청은 그 후 제2 양태의 방법의 과정에서, 예를 들어 제2 디바이스에 의해, 수신될 수 있다.
송신 요청을 통해 개별 데이터 부분들 또는 데이터 부분들의 범위들이 요청된다고 상상할 수 있다. 그러나, 데이터 부분들이 바람직하게는 연속적으로 송신되기 때문에, 바람직하게는 필요한 데이터 부분들의 개별 요청이 불필요하다. 이것은 개별 데이터 부분들이 수신되어야 한다는 요청 없이, 데이터 부분들이 스트림과 조금씩 비슷하게 송신됨을 의미한다. 이것은 수신을 가속시키고 따라서 애플리케이션 실행을 더 가속화시킨다.
제2 양태의 방법의 실시예에 따르면, 상기 방법은: 애플리케이션의 실행을 위해 애플리케이션과 연관된 메타데이터 정보를 송신하는 단계를 더 포함한다.
제1 양태와 관련하여 이미 설명된 바와 같이, 메타데이터 정보는 예를 들어, 경로 정보, 파일 정보, 디렉토리 정보, 환경 변수들에 관한 정보 및/또는 데이터베이스들 (예를 들어, 등록 데이터베이스들)에 대한 정보 또는 이들에 대한 수정들 (예를 들어, 새로운 엔트리들)을 포함한다. 메타 데이터 정보는 예를 들어, 적어도 하나의 파일에 유사하게 포함될 수 있다. 마찬가지로, 메타데이터 정보가 포함된 별도의 파일이 제공될 수 있다. 메타데이터 정보는 메모리에 또한 홀딩(hold)될 수 있다. 바람직하게는 메타데이터 정보가 먼저 송신된다. 예를 들어, 메타데이터 정보는 푸시 프로세스의 과정 또는 풀(pull) 프로세스의 과정에서 송신될 수 있다.
마찬가지로, 메타데이터 정보는 매핑 정보를 포함할 수 있으며, 그것은 애플리케이션 실행에 필요한 데이터 부분들을 요청하기 위해 사용된 어드레싱을 데이터 메모리에 저장된 데이터 부분들의 순서로 매핑하게 한다. 그러나, 매핑 정보는 메타데이터 정보와 독립적으로 또한 전송될 수 있다.
추가 실시예들와 관련하여, 특히 데이터 블록들의 데이터 부분들 실시예와 관련하여, 제1 양태와 관련한 스테이트먼트들(statement)이 참조된다.
제3 양태에 따르면, 발명은 필요한 데이터 부분들을 저장하기 위한 방법과 또한 관련되어 있고, 상기 방법은 적어도 하나의 디바이스에 의해 수행되며, 상기 방법은: 애플리케이션 실행하는데 필요한 데이터 부분들의 획득된 필요한 순서를 수신하는 단계; 상기 획득된 필요한 순서에 적어도 기초하여 예상 필요 순서를 결정하는 단계; 및 상기 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 상기 필요한 데이터 부분들을 저장하는 단계를 포함한다.
상기 방법은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 필요한 데이터 부분이 저장되도록 한다.
획득된 필요한 순서에 적어도 기초하여, 예상 필요 순서가 결정될 수 있다. 예를 들어, 획득된 필요한 순서는 예상 필요 순서에 대응한다. 예를 들어, 획득된 필요한 순서는 예상 필요 순서를 결정함에 있어서, 복수의 인자들 (예를 들어, 추가 획득된 필요한 순서들) 중에서 단지 하나일 뿐이다.
마지막으로, 필요한 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 저장될 수 있다. 결과적으로, 데이터 메모리에 애플리케이션을 정상적으로 설치한 후에 예시로써 존재하는 바와 같이, 원래 저장된 순서와 비교하여, 데이터 부분들이 재배열된다. 따라서, 최적화된 애플리케이션이 사용 가능하다. 제1 양태와 관련하여 이미 설명된 바와 같이, 이는 제1 양태의 방법에 따른 예시로써, 애플리케이션의 실행이 이제 가속화되도록 한다.
추가로, 매핑 정보가 저장되어, 데이터 메모리 내의 애플리케이션의 정상 설치 후에 예시로써 존재하는 것과 같은 원래 저장된 순서와 재배치된 순서 사이를 매핑한다. 달리 말해, 매핑 정보는 애플리케이션의 실행에 필요한 데이터 부분들을 요청하기 위해 사용된 어드레싱을 데이터 메모리에 재배열된 데이터 부분들의 순서로 매핑하게 한다.
상기 방법은 애플리케이션에 의해 필요해지는 모든 데이터 부분들에 대해 반드시 수행될 필요는 없으며, 예를 들어, 필요한 일부 데이터 부분들에 대해서만 또한 수행될 수 있다.
상기 방법은 특히 다른 양태들과 관련하여 보다 상세히 설명된 바와 같이, 적어도 제3 디바이스에 의해 수행될 수 있다.
제3 양태의 방법의 실시예에 따르면, 단계들 중 하나 이상을 더 포함하며, 상기 단계들은: 디바이스 드라이버, 바람직하게는 블록 디바이스 드라이버를 설치하는 단계; 이미지를 생성하는 단계; 디바이스 드라이버를 통해, 특히 상기 설치된 디바이스 드라이버를 통해 디바이스를 마운팅하는 단계; 애플리케이션을, 특히 상기 생성된 이미지 상에 설치하는 단계; 상기 애플리케이션의 실행을 위해 상기 애플리케이션과 연관된 메타 데이터 정보를 결정하는 단계; 상기 애플리케이션을 실행하는 단계; 애플리케이션의 실행에 필요한 상기 데이터 부분들의 상기 요청된 순서를 획득하는 단계이다.
상기 단계들 중 하나 이상의 단계는 특히 애플리케이션의 실행에 필요한 데이터 부분들의 필요한 순서의 획득을 준비 또는 서비스한다. 상기 단계들 중 하나 이상(특히 모두)은 하나 이상의 데이터 프로세싱 시스템(들) 상에서, 특히 분석 환경에서 예시적으로 수행된다. 분석 환경은 특히 소프트웨어를 분석하는데 사용되는 기법적/조직적 인프라로 이해된다.
디바이스 드라이버, 특히 블록 디바이스 드라이버를 통해, 애플리케이션을 실행하는데 필요한 데이터 부분들의 필요한 순서의 획득은 매우 효율적으로 수행될 수 있다. 이미지가 또한 생성될 수 있다. 디바이스 드라이버 설치 후, 디바이스, 특히 블록 디바이스, 및 그것으로 인한 이미지가 기존 파일 시스템 내의 디바이스 드라이버를 통해 마운팅될 수 있다. 여기서, 블록 디바이스는 바람직하게는 가상 블록 디바이스이다. 디바이스 및 따라서 이미지는 디바이스 드라이버를 통해 액세스될 수 있다. 그 후 애플리케이션은 디바이스 상에 설치되고 따라서 이미지에 설치될 수 있다.
추가로, 애플리케이션과 연관된 메타데이터 정보가 애플리케이션의 실행을 위해 이제 결정될 수 있다. 이는, 예를 들어, 애플리케이션의 설치 전과 설치 후 시스템 (예를 들어, 운영 체제 및/또는 파일 시스템)의 비교에 의해 발생할 수 있다. 마찬가지로, 실제 시스템 변경들의 (예를 들어, 기록 및/또는 판독 프로세스들의 획득에 의한) 퍼포먼스가 획득될 수 있다. 이것은 다른 디바이스들 (예를 들어, 제1 디바이스) 상의 애플리케이션 실행을 단순화한다. 이들은 이미 설치된 애플리케이션의 이미지 및 사용 가능한 메타데이터 정보만을 필요로 하며, 재-설치는 불필요하다. 제1 및 제2 양태와 관련하여 이미 설명된 바와 같이, 메타데이터 정보는 경로 정보, 파일 정보, 디렉토리 정보, 환경 변수들에 관한 정보 및/또는 데이터베이스들 (예를 들어 등록 데이터베이스들)에 대한 정보 또는 이들에 대한 수정들 (예를 들어, 새 엔트리들)을 포함한다.
다음으로, 애플리케이션이 실행될 수 있다. 이 애플리케이션은 제1 양태의 방법에 따라 실행될 애플리케이션에 대응한다. 이와 관련하여, 제1 양태와 관련한 스테이트먼트들이 참조된다. 그러나, 여기서 애플리케이션에 의해 필요해지는 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 (적어도 부분적으로) 아직 초기에 저장되지 않는다.
애플리케이션을 실행하는 과정에서, 애플리케이션은 일정 (시간) 순서로 실행하기 위해 데이터 부분들을 필요로 할 것이다. 이를 위해, 예를 들어, 애플리케이션, 운영 체제 및/또는 파일 시스템은 필요한 데이터 부분들을 요청할 수 있다. 이 순서는 획득될 수 있으며, 파일 시스템의 레벨 아래에서 유리하게 발생할 수 있다. 예를 들어, 상기 획득은 디바이스 드라이버에 의해 발생한다. 제1 양태와 관련하여 이미 설명된 바와 같이, 데이터 부분들은 바람직하게는 데이터 블록들이고 그 순서는 블록 순서이다. 이 시점에서 제1 양태와 관련된 스테이트먼트가 참조된다.
제3 양태의 방법의 실시예에 따르면, 애플리케이션의 실행을 위해 필요한 데이터 부분들의 획득된 필요한 순서는 애플리케이션의 실행 동안 필요한 데이터 부분들에 대한 동작들에 관한 로깅된 정보를 포함한다.
이러한 방식으로, 애플리케이션의 실행에 필요한 데이터 부분들의 순서의 획득이 매우 효율적으로 수행될 수 있다. 정보의 로깅은 디바이스 드라이버에 의해 특히 유리하게 수행된다. 예를 들어, 디바이스 드라이버에 정의된 기록 및/또는 판독 동작들이 확장되어, 어떤 경우에도 애플리케이션의 실행 중에 필요한 데이터 부분들에 대한 판독 동작들에 관한 정보를 로깅하도록 한다. 필요한 데이터 부분들에 대한 판독 동작들에 관한 정보의 로깅은, 예를 들어, (상대적인 또는 절대적인) 어드레싱이 로깅된다는 점에서 수행될 수 있다. 예를 들어, 로깅된 정보를 포함하는, 로그-파일이 생성된다.
제3 양태의 방법의 실시예에 따르면, 로깅된 정보는 각각의 필요한 데이터 부분의 모호하지 않은 식별을 가능케 한다.
모호하지 않은 (상대적 및/또는 절대적) 어드레싱을 로깅함으로써 모호하지 않은 식별이 달성될 수 있다. 어드레싱은, 예를 들어, 데이터 메모리 내의 데이터 부분의 모호하지 않은 표지션을 포함할 수 있다 (예를 들어, 모호하지 않은 메모리 어드레스 또는 모호하지 않은 메모리 오프셋 값의 형태로). 예를 들어, 어드레싱은 복수의 데이터 부분들을 포함하는 데이터 메모리의 모호하지 않은 영역을 지정할 수 있다. 데이터 부분들이, 예를 들어, 데이터 블록들인 경우, 예를 들어 모호하지 않은 블록 번호 또는 모호하지 않은 블록 번호 범위가 로깅될 수 있다.
제3 양태의 방법의 실시예에 따르면, 로깅된 정보는 아래의 정보 중 하나 이상을 또한 포함하며, 상기 정보는: 시간 정보; 애플리케이션-특정 이벤트들; 사용자-특정 정보이다.
시간 정보는, 예를 들면, 데이터 부분들 또는 데이터 부분들의 범위가 필요했었을 때, 즉, 다시 말해 특히 대응하는 데이터 부분 또는 범위에 대한 판독 액세스가 발생 했었을 때 상대적 및/또는 절대적 시간 정보를 포함할 수 있다.
애플리케이션-특정 이벤트들은, 예를 들어, 애플리케이션 시작의 개시(commencement), 애플리케이션의 대화적 부분의 개시, 및/또는 일정 애플리케이션 섹션의 개시 (게임에서, 예를 들어, 레벨 1, 레벨 2, 레벨 3 등의 개시)일 수 있다.
사용자-특정 정보는, 예를 들어, 사용자 입력 정보일 수 있다. 입력 정보는 특히, 예를 들어, 키보드가 눌려져 있던, 입력 디바이스들(예를 들어, 키보드 또는 마우스를 가진)을 통해 입력된 입력들에 대한 정보입니다.
예상 필요 순서의 결정은 그 후 이러한 정보 아이템들 중 하나 이상에 기초하여 유리하게 수행될 수 있다. 예를 들어, 입력 정보와 같은, 일정 사용자-특정 정보는 예상 필요 순서에 영향을 줄 수 있다. 이것은 그 후, 예를 들어, 애플리케이션의 실행에 필요한 데이터 부분들을 수신할 때 고려될 수 있다.
제3 양태의 방법의 실시예에 따르면, 애플리케이션의 실행에 필요한 데이터 부분들의 다수의 획득된 필요한 순서들이 수신되고, 예상 필요 순서는 다수의 획득된 필요한 순서들에 적어도 기초하여 결정된다.
예를 들어, 획득은 적어도 2회, 그러나 바람직하게는 여러 번 수행된다. 예상 필요 순서가 그 후 적어도 다수의 획득 된 필요한 순서들에 기초하여 결정된다면, 예상 필요 순서가보다 신뢰성 있게 결정될 수 있다. 이것은 특히 대화형 애플리케이션에서 유리하며, 이러한 방식으로 필요한 데이터 부분들의 순서가 또한 영향을 받기 때문에, 애플리케이션의 프로그램 흐름이 사용자에 의해 영향을 받을 수 있다. 예를 들어, 이를 위해, 통합된 또는 결합된 순서를 형성하기 위해, 각각의 획득된 필요한 순서들이 통합되며, 이것에 기초하여 예상 필요 순서가 결정될 수 있다.
다수의 획득은, 예를 들어, 다양한 디바이스들, 예를 들어, 일련의 분석 디바이스들 상에서 수행될 수 있다. 다른 한편으로, 예상 필요 순서의 결정 및 필요한 데이터 부분들의 저장이 바람직하게는 중앙 디바이스에서 수행될 수 있다.
제3 양태의 방법의 실시예에 따르면, 획득된 필요한 순서의 시퀀스 섹션의 경우, 시퀀스 섹션은 압축된다.
이것은 특히 획득이 여러 번 수행되고 획득된 필요한 순서들이 압축되는 경우, 달성될 하나의 시퀀스로써 필요한 순서들의 시퀀스 섹션들을 수신하도록 한다. 따라서, 만약, 예를 들어, 필요한 데이터 부분들의 시퀀스 섹션 (2, 3, 4, 5, ..., n-1, n)이 획득되면, 시퀀스 섹션은 (2…n)으로 압축되고 그와 같이 로깅될 수 있다. 그러나, 시퀀스 섹션이 반드시 압축될 필요는 없다. 예를 들어, 일정 길이의 시퀀스 섹션들 또는 최대 개수의 시퀀스 섹션들만이 압축된다.
제3 양태에 따르면, 저장된 필요한 데이터 부분들은 그 후 예를 들어, 제2 양태의 방법에 따라 송신될 수 있다. 제1 양태의 방법에서, 애플리케이션의 시작은 궁극적으로 가속화될 수 있다.
추가 양태에 따르면, 본 발명은 또한 제1 양태 (제1 디바이스)에 따른 방법을 수행 및/또는 제어하기 위한 적절한 수단들로써 구성되거나, 수단들을 포함하는, 디바이스에 관한 것이다. 제1 디바이스는 특히 클라이언트와 같은 최종 사용자의 데이터 프로세싱 시스템일 수 있다.
추가 양태에 따르면, 본 발명은 프로그램 명령어들을 포함하는 검퓨터 프로그램에 또한 관한 것이며, 상기 명령어들은 컴퓨터 프로그램이 프로세서 (제1 컴퓨터 프로그램) 상에서 작동하는 경우, 프로세서가 제1 양태 (또는 그것의 일부들)에 따른 방법을 수행 및/또는 제어하도록 한다.
추가 양태에 따르면, 전술한 목적은 제2 양태 (제2 디바이스)에 따른 방법을 수행 및/또는 제어하기 위한 적절한 수단들로 구성되는 또는 수단들을 포함하는 디바이스에 의해서 또한 달성된다. 제2 디바이스는 특히 최종 사용자들이 데이터를 사용할 수 있도록 하는 서버일 수 있다.
추가 양태에 따르면, 본 발명은 프로그램 명령어들을 포함하는 검퓨터 프로그램에 또한 관한 것이며, 상기 명령어들은 컴퓨터 프로그램이 프로세서 (제2 컴퓨터 프로그램) 상에서 작동하는 경우, 프로세서가 제2 양태 (또는 그것의 일부들)에 따른 방법을 수행 및/또는 제어하도록 한다.
추가 양태에 따르면, 전술한 목적은 제3 양태 (제3 디바이스)에 따른 방법을 수행 및/또는 제어하기 위한 적절한 수단들로 구성되는 또는 수단들을 포함하는 디바이스에 의해서 또한 달성된다. 제3 디바이스는 특히 복수의 데이터 프로세싱 시스템들을 포함할 수 있으며, 예를 들어 제3 디바이스는 복수의 분석 데이터 프로세싱 시스템들 및 중앙 서버를 포함한다.
추가 양태에 따르면, 본 발명은 프로그램 명령어들을 포함하는 검퓨터 프로그램에 또한 관한 것이며, 상기 명령어들은 컴퓨터 프로그램이 프로세서 (제3 컴퓨터 프로그램) 상에서 작동하는 경우, 프로세서가 제3 양태 (또는 그것의 일부들)에 따른 방법을 수행 및/또는 제어하도록 한다.
각각의 디바이스는 바람직하게는 적어도 하나의 프로세서 및 컴퓨터 프로그램 코드를 갖는 적어도 하나의 메모리를 포함하며, 적어도 하나의 메모리 및 컴퓨터 프로그램 코드는 제1, 제2 및/또는 제3 양태에 따른 적어도 하나의 방법으로, 적어도 하나의 프로세서를 수행 및/또는 제어하도록 구성된다.
예를 들어, 제1 디바이스, 제2 디바이스 및 제3 디바이스는 소프트웨어 및/또는 하드웨어 기반으로 구성된 서로 상이한 데이터 프로세싱 시스템들로, 본 발명에 따른 각 방법의 각 단계 (또는 그것의 일부)를 수행할 수 있다. 소프트웨어 및/또는 하드웨어 기반으로 구성된 것은, 예를 들어, 컴퓨터 프로그램의 형태로, 각 방법의 단계들 (또는 그 일부)를 수행할 수 있기 위해 필요한 각각의 데이터 프로세싱 시스템의 준비를 의미한다. 데이터 프로세싱 시스템들의 예시들은 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터와 같은 휴대용 컴퓨터, 태블릿 컴퓨터, PDA, 스마트폰 및/또는 씬 클라이언트 (thin client)이다.
그러나 예를 들어, 제2 및 제3 양태의 예시로써, 개별 양태들의 단계 들이, 공유 데이터 프로세싱 시스템 상에서 수행된다고 기본적으로 또한 상상할 수 있다. 상이한 데이터 프로세싱 시스템에서 양태의 단계들이 수행된다고 유사하게 상상할 수 있다.
예를 들어, 제1, 제2 및/또는 제3 디바이스 각각은 프로세서와 같은 본 발명에 따른 컴퓨터 프로그램들 중 하나를 실행하기 위한 수단들을 포함한다. 프로세서는 예를 들어, 마이크로컨트롤러, Digital Signal Processor(DSP), Application Specific Integrated Circuit(ASIC) 또는Field Programmable Gate Array(FPGA)와 같은 마이크로컨트롤 유닛, 제어 유닛, 마이크로프로세서로 이해된다.
예를 들어, 제1, 제2 및/또는 제3 디바이스는 각각의 경우에 프로그램 메모리 및/또는 메인 메모리와 같은 정보를 저장하는 수단들을 또한 포함한다.
예를 들어, 제1, 제2 및/또는 제3 디바이스는 각각의 경우에 네트워크 인터페이스와 같은 네트워크를 통해 정보를 수신 및/또는 송신하는 수단들을 또한 포함한다. 예를 들어, 제1, 제2 및/또는 제3 디바이스는 하나 이상의 네트워크들을 통해 서로 연결되었거나 및/또는 연결될 수 있다.
컴퓨터 프로그램들은, 예를 들어, 네트워크를 통해 배포 가능하다. 컴퓨터 프로그램은 적어도 부분적으로 프로세서의 소프트웨어 및/또는 펌웨어일 수 있다.
제1, 제2 및/또는 제3 컴퓨터 프로그램은, 예를 들어, 애플리케이션을 포함할 수 있다. 제1 및/또는 제2 컴퓨터 프로그램은 특히 디바이스 드라이버를 포함한다.
본 발명에 따른 컴퓨터 프로그램들은 각각의 경우에, 본 발명에 따른 하나 이상의 컴퓨터 프로그램들을 포함하며 예를 들어, 자기, 전기, 전자기, 광학 및/또는 다른 유형의 저장 매체로써 구성된, 기계-판독 가능 저장 매체에 저장될 수 있다. 이러한 기계-판독 가능 저장 매체는 바람직하게는 물리적인 (즉, 실재하는) 것이고, 예를 들어 데이터 매체 디바이스로써 구성된다. 이러한 데이터 매체 디바이스는, 예를 들어, 휴대용이거나 또는 디바이스에 영구적으로 설치된다. 이러한 데이터 매체 디바이스의 예시들은, 예를 들어 NOR 플래시 메모리와 같은 랜덤 액세스(RAM) 또는 NAND 플래시 메모리 및/또는 판독(ROM) 또는 판독/기록 액세스를 갖는 메모리와 같은 시퀀스 액세스를 갖는 비휘발성 또는 휘발성 메모리이다. 기계-판독 가능이란, 예를 들어, 저장 매체가 컴퓨터 또는 데이터 프로세싱 시스템에 의해, 예를 들어 프로세서에 의해, 판독되거나 기록될 수 있음을 의미한다.
본 명세서에서 기술된 예시적인 실시예들은 또한 서로의 모든 조합들로 게시되도록 또한 의도된다.
본 발명의 유리한 추가 예시적인 실시예들은, 특히 도면들과 관련하여, 본 출원 발명의 많은 실시예들에 대한 다음의 상세한 기술에 의해 표시된다.
본 출원에 첨부된 도면들은, 그러나, 명확화의 목적으로만 사용되었으며, 본 발명의 보호 범위를 결정하기 위한 것은 아니다. 첨부된 도면들은 축척이 아니며 본 발명의 일반적인 개념을 반영하는 예시로써만 의도된다. 특히, 도면들에 도시된 구성들이 어떤 식으로도 본 발명의 필수 컴포넌트 부분으로 간주되어서는 안 된다.
도 1은 예시적 데이터 프로세싱 시스템의 블록도이다.
도 2는 다양한 양태들에 따른 방법을 수행하기 위한 다양한 예시적 디바이스들의 시스템에 대한 개략도이다.
도 3은 제3 양태에 따른 방법의 예시적 실시예의 컨텍스트에서 수행될 수 있는 예시적 방법의 흐름도이다.
도 4는 운영 체제의 다양한 계층들의 개략도이다.
도 5는 제3 양태에 따른 방법의 예시적 실시예의 흐름도이다.
도 6은 제2 양태에 따른 방법의 예시적 실시예의 흐름도이다.
도 7은 제1 양태에 따른 방법의 예시적 실시예의 흐름도이다.
도 1은 데이터 프로세싱 시스템(1)의 예시적 실시예의 블록도를 도시한다. 데이터 프로세싱 시스템(1)은 다양한 양태들에 따른 디바이스들에 대한 예시 역할을 하며, 특히 제1, 제2 및/또는 제3 디바이스는 데이터 프로세싱 시스템(1)에 따라 구현될 수 있다.
데이터 프로세싱 시스템(1)은 예를 들어 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터과 같은 휴대용 컴퓨터, 태블릿 컴퓨터, PDA, 스마트폰 및/또는 씬 클라이언트일 수 있다. 데이터 프로세싱 시스템은. 예를 들어, 서버 또는 클라이언트의 기능을 수행할 수 있다.
데이터 프로세싱 시스템(1)의 프로세서(100)는 특히 마이크로컨트롤러, Digital Signal Processor(DSP), Application Specific Integrated Circuit(ASIC) 또는 Field Programmable Gate Array(FPGA)와 같은 마이크로컨트롤 유닛, 제어 유닛, 마이크로프로세서로 구성된다.
프로세서(100)는 프로그램 메모리(120)에 저장된 프로그램 명령어들을 실행하고, 예를 들어, 중간 결과들 또는 유사한 것을 메인 메모리(110)에 저장한다. 예를 들어, 프로그램 메모리(120)는 플래시 메모리, 자기 메모리, EEPROM 메모리 (전기적으로 소거 가능한 프로그램 가능한 판독-전용 메모리) 및/또는 광 메모리와 같은 비휘발성 메모리이다. 메인 메모리(110)은 휘발성 또는 비휘발성 메모리, 예를 들어, 특히 static RAM 메모리(SRAM), dynamic RAM 메모리(DRAM), ferroelectric RAM 메모리(FeRAM) 및/또는 magnetic RAM 메모리(MRAM)와 같은 랜덤 액세스 메모리(RAM)이다.
프로그램 메모리(120)는 바람직하게는 데이터 프로세싱 시스템(1)에 고정된 연결을 갖는 로컬 데이터 매체이다. 데이터 프로세싱 시스템(1)에 고정된 연결을 갖는 데이터 매체는, 예를 들어 하드 디스크들은, 데이터 프로세싱 시스템(1)에 통합된다. 대안적으로, 데이터 매체는 또한, 예를 들어, 메모리 스틱, 탈착가능 저장 디바이스, 휴대용 하드 드라이브, CD, DVD 및/또는 디스켓과 같은 데이터 프로세싱 시스템(1)에 분리 가능하도록 연결된 데이터 매체일 수 있다.
프로그램 메모리(120)는 데이터 프로세싱 시스템(1)의 운영 체제를 포함하며, 데이터 프로세싱 시스템(1)이 시작될 때 운영 체제는 적어도 부분적으로 메인 메모리(110)에 로딩되고 프로세서(100)에 의해 실행된다. 특히, 데이터 프로세싱 시스템(1)이 시작될 때, 운영 체제 코어의 적어도 일부가 메인 메모리(110)에 로딩되고 프로세서(100)에 의해 실행된다. 데이터 프로세싱 시스템(1)의 운영 체제는, 예를 들어, Windows, UNIX, 특히 Linux, Android, Apple iOS 및/또는 MAC 운영 체제이다.
운영 체제는 특히 데이터 프로세싱을 위해 데이터 프로세싱 시스템(1)을 사용하도록 한다. 운영 체제는, 예를 들면, 메인 메모리(110) 및 프로그램 메모리(120), 네트워크 인터페이스(130), 및 입/출력 디바이스(140)와 같은 리소스들을 관리하고, 그 중에서 프로그래밍 인터페이스들을 통해, 다른 기본 프로그램 기능들을 사용 가능하도록 하며, 프로그램들의 실행을 제어한다.
프로세서(100)는 데이터 프로세싱 시스템(1)과 네트워크 사이에 링크를 생성하기 위해, 예를 들어 네트워크 카드, 네트워크 모듈 및/또는 모뎀인 또는 이들로 구성된, 네트워크 인터페이스(130)를 제어한다. 네트워크 인터페이스(130)는, 예를 들어, 네트워크를 통해 데이터를 수신하고 이것을 프로세서(100)에 전달하고 및/또는 프로세서(100)로부터 데이터를 수신하여 네트워크를 통해 송신할 수 있다. 네트워크의 예시들은 이더넷 네트워크 또는 IEEE 802 네트워크와 같은 근거리 통신망(LAN), 광역 통신망(WAN), 무선 네트워크, 유선 네트워크, 모바일 전화 네트워크, 전화 네트워크 및/또는 인터넷이다.
프로세서(100)는 적어도 하나의 입/출력 디바이스(140)를 더 제어할 수 있다. 입/출력 디바이스(140)는 예를 들어 키보드, 마우스, 디스플레이 유닛, 마이크로폰, 터치-감지형 디스플레이 디바이스, 라우드스피커, 스캐너, 디스크 드라이브 및/또는 카메라이다. 입/출력 디바이스(140)는, 예를 들어, 사용자로부터 입력들을 수신하여 이들을 프로세서(100)에 전달하고 및/또는 프로세스(100)로부터 사용자에 대한 출력 정보를 수신할 수 있다.
도 2는 다양한 양태들에 따른 방법을 수행하기 위한 다양한 예시적 디바이스들의 시스템(2)의 개략도이다.
서버(200)는, 컴퓨터(210)와 함께, 도 3과 관련하여 보다 상세히 기술된 바와 같이, 제3 양태에 따른 방법의 실시예들을 수행할 수 있다. 마찬가지로, 서버(200)는 도 5와 관련하여 보다 상세히 기술된 바와 같이, 제2 양태에 따른 방법의 실시예들을 수행할 수 있다. 마지막으로, 컴퓨터들(250)는 도 6과 관련하여 보다 상세히 기술된 바와 같이, 제1 양태에 따른 방법의 실시예들을 수행할 수 있다.
도 3은 제3 양태에 따른 방법의 예시적 실시예의 컨택스트에서 수행될 수 있는, 예시적인 방법의 흐름도를 도시한다.
상기 방법은 하나 이상의 컴퓨터들(210) 상에서 수행될 수 있다. 여기서, 컴퓨터들(210)은 분석 환경을 제공한다. 우선, 각각의 경우에 가상 블록 디바이스용 블록 디바이스 드라이버가 설치된다(단계 310). 다음으로, 각각의 컴퓨터(210) 상에 이미지가 생성된다(단계 320). 블록 디바이스 드라이버와 가상 블록 디바이스의 도움으로, 이미지는 각각의 컴퓨터(210) 운영 체제의 파일 시스템에 마운팅될 수 있다(단계 330). 그 후, 최적화될 애플리케이션 (예를 들어, 컴퓨터 게임)이 생성된 이미지 상에 설치될 수 있다(단계 340). 여기서, 이미지는 각각의 컴퓨터(210)의 각각의 로컬 프로그램 메모리(120) (예를 들어, 하드 디스크)에 물리적으로 저장된다. 애플리케이션의 실행에 필요한 데이터 블록들은, 따라서 각각의 프로그램 메모리에 존재한다. 그러나, 이들은 아직 최적화된 순서(30)로 저장되지 않았다.
단계(340) 이후에 또는 적어도 또한 부분적으로 단계(340) 동안, 수행될 수 있는 단계(350)에서, 애플리케이션과 연관된 메타데이터 정보가 애플리케이션의 실행을 위해 결정될 수 있다. 그렇게 함으로써, 애플리케이션을 시작하기 위해 필요한, 각각의 컴퓨터(210) 상에 설치된, 운영 체제 및 파일 시스템에 대한 변경들이 획득된다. 이것들은, 예를 들어, 파일에 저장된다.
그 후, 애플리케이션은 각각의 컴퓨터(210) 상에서 실행되고(단계 360), 각각의 사용자(220)에 의해 사용될 수 있다. 그렇게 함으로써, 애플리케이션을 실행하는데 필요한 데이터 블록들의 필요한 순서가 획득될 수 있다(단계 370).
도 4는, 예를 들어 개별 컴퓨터들(210 또는 250), 상에 존재하는 운영 체제(4)의 다양한 계층들의 개략도이다. 4개의 계층들(410, 420, 430, 440)이 도시되어 있다. 운영 체제(4)는 위, 아래 또는 중간에 배열된, 추가 계층들을 또한 가질 수 있다. 계층(420)에서, 디바이스 드라이버들(421, 422) ("드라이브 1", "드라이버 2")이 제공된다. 이들은 하부 계층(410)의 하드웨어와의 인터랙션을 제어하는 컴퓨터 프로그램 또는 소프트웨어 모듈일 수 있다. 다른 한편으로, 디바이스 드라이버는 계층(430)의 파일 시스템(431, 432) ("파일 시스템 1", "파일 시스템 2")과 통신한다. 파일 시스템들은, 차례로, 애플리케이션에 의해 사용될 수 있는, 계층(440)의 시스템 호출 루틴들과 통신할 수 있다. 기본적으로, 예를들어 다양한 파일 시스템들이 하나의 드라이버와만 통신해야 하므로, 드라이버의 다양한 인스턴스들(instance)이 또한 사용될 수 있다. 예를 들어, 복수의 인스턴스들은 가상 블록 디바이스를 동시에 사용할 수 있으며, 각각은 상이한 애플리케이션을 포함한다.
애플리케이션이 이제 일정 데이터 블록들을 필요로 하는 경우, 이들은 파일 시스템, 예를 들어 파일 시스템(431), 을 통해 요청된다. 이 요청은, 이미지 상에 설치된 애플리케이션에 액세스할 수 있는 블록 디바이스 드라이브, 예를 들어 드라이브(421), 에 의해 핸들링되며, 필요한 데이터 블록들이 리턴된다.
여기서, 블록 디바이스 드라이버(421) 내의 기록 및/또는 판독 동작들은 요청된 데이터 블록이 로깅되도록 (예를 들어, 블록 번호, 메모리 어드레스 및/또는 데이터 블록을 모호하지 않게 식별하는 메모리 오프셋을 로깅 함으로써) 확장된다. 따라서, 애플리케이션의 실행에 필요한 데이터 블록들의 필요한 블록 순서는 블록 디바이스 드라이버(421)를 통해 로깅된다. 추가로, 시간 오프셋 형식의 시간 정보가 로깅된다. 애플리케이션-특정 이벤트 또는 사용자-특정 정보와 같은 추가 정보도 유사하게 로깅될 수 있다.
예를 들어, 컴퓨터들(210) 중 하나에서, 필요한 데이터 블록의 블록 번호 및 연관된 시간 오프셋을 나타내는, 다음의 첫 번째 필요한 순서가 획득된다:
Figure pct00001
예를 들어, 컴퓨터들(210) 중 다른 컴퓨터에서, 필요한 데이터 블록의 블록 번호 및 연관된 시간 오프셋을 나타내는, 다음의 두 번째 필요한 순서가 획득된다:
Figure pct00002
다음으로, 도 5는 제3 양태에 따른 방법의 예시적 실시예의 흐름도를 도시한다.
다수의 획득된 순서들은, 예를 들어, 네트워크(230)를 통해 서버(200)에 사용 가능하게 되어, 서버는 애플리케이션의 실행에 필요한 데이터 블록들의 획득된 필요한 순서들을 수신한다(단계 510).
이를 기초로, 서버(200)는 예상 필요 순서를 결정할 수 있다(단계 520). 이를 위해, 다수의 획득된 순서들이 시간 정보에 따라 정렬되고 압축되어, 다음의 순서를 결과로 한다.
Figure pct00003
예상되는 필요한 블록 순서 (0, 2, 0, 8, 9, 5, 6, 7)는 이로부터 또한 결정될 수 있다. 선택적으로, 포함된 다수의 데이터 블록들은 무시될 수 있어, 예상되는 필요한 블록 순서 (0, 2, 8, 9, 5, 6, 7)가 결과로 된다.
이러한 방식으로 결정된 예상되는 필요한 블록 순서는 그 후 데이터 메모리에 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로, 특히 예상 필요 순서 자체로, 필요한 데이터 블록들을 저장하기 위해 사용된다(단계 530).
예를 들어, 설치된 애플리케이션을 나타내는(exhibit) 원본 이미지의 데이터 블록들이 재배열된다. 추가로, 매핑 정보가 저장되어, 원본 이미지를 재배열된 이미지에 매핑한다.
다음으로, 도 6은 제2 양태에 따른 방법의 예시적인 실시예의 흐름도(6)를 도시한다. 이 방법은, 예를 들어, 서버(200)에 의해 유사하게 수행될 수 있다.
먼저, 서버(200)는 애플리케이션의 실행에 필요한 데이터 블록들 중 적어도 일부를 송신하라는 요청을 수신한다(단계 610). 상기 요청은, 예를 들어, 인터넷(240)과 같은 네트워크를 통해 컴퓨터들(250) 중 하나에 의해 행해질 수 있다.
대응하는 컴퓨터(250) 상에서, 애플리케이션의 실행을 위한 애플리케이션과 연관된 메타데이터 정보가 아직 사용 가능하지 않다면, 이들이 먼저 송신될 수 있다(단계 620). 메타데이터 정보와 함께, 또는 그것들과는 별도로, 원본 이미지를 재배열된 이미지로 매핑하도록 하는, 저장된 매핑 정보가 컴퓨터(250)로 송신된다. 다음으로, 필요한 데이터 블록들이 대응하는 컴퓨터로 송신된다(단계 630). 예를 들어, 이미지는 기술된 바와 같이 재배열된 애플리케이션의 데이터 블록들과 함께 송신된다. 그렇게 함으로써, 데이터 블록들은 단계(530)에 의해 인에이블되는 것처럼, 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 이미 서버(200) 상의 데이터 메모리에 저장된다. 그렇게 함으로써, 데이터 블록들은 바람직하게는 또한 저장된 순서로 송신된다.
도 7은 제1 양태에 따른 방법의 예시적 실시예의 흐름도(7)를 도시한다. 이 방법은, 예를 들어, 각각의 경우에 컴퓨터(250)에 의해 수행될 수 있다. 예를 들어, 컴퓨터(250)의 사용자(260)는 애플리케이션을 실행하기를 원한다. 이를 위해, 대응하는 컴퓨터(250)는, 예를 들어, 인터넷(240)을 통해 서버(200)에 요청을 송신할 수 있다.
대응하는 컴퓨터(250) 상에는, 가상 블록 디바이스용 블록 디바이스 드라이버가 이미 설치되어있다. 이러한 방식으로, 가상 블록 디바이스는 컴퓨터(250) 운영 체제의 파일 시스템에 마운팅될 수 있다. 블록 디바이스 드라이버 (예를 들어, 드라이버(421))의 설치 및 가상 디바이스의 마운팅은 이미 도 4 및 도 5와 관련하여 보다 상세하게 설명되었으며 그리고 이것은 여기서 동일한 방식으로 발생할 수 있다. 그것이 아직 발생하지 않았다면, 컴퓨터(250)는 애플리케이션과 연관된 애플리케이션의 실행을 위해, 예를 들어, 단계(620)에 따라 전송된, 메타데이터 정보를 유사하게 또한 수신할 수 있다(단계 710). 컴퓨터(250)는, 메타 데이터정보와 함께 (또는 이와는 별도로) 원본 이미지를 재배열된 이미지로 매핑하도록 하는, 저장된 매핑 정보를 수신한다(단계 711).
컴퓨터(250)는 바람직하게는 데이터 부분들에 필요한 저장 공간 상의 정보 (예를 들어, 크기)를 또한 수신한다.
이러한 정보(예를 들어, 경로 정보 및 파일 정보)의 도움으로, 필요한 크기를 갖는 이미지의 마운팅이 발생할 수 있고 애플리케이션이 (예를 들어, 실행 가능한 파일을 통해) 실행될 수 있다(단계 720). 이것은, 애플리케이션의 데이터 블록이 대응하는 컴퓨터(250)의 데이터 메모리에 아직 로컬하게 저장되지 않았었더라도, 정보가 실행 가능한 파일을 통해 이미 사용 가능하기 때문에, 적용된다.
이제 애플리케이션은 실행을 위한 데이터 블록들을 필요로 한다. 이들은, 예를 들어, 블록 디바이스 드라이버 (예를 들어, 드라이버(421))로부터 파일 시스템 (예를 들어, 파일 시스템(431))에 의해 요청된다(단계 730).
필요한 데이터 블록들이 데이터 메모리에서 사용 가능하지 않은 경우, 디바이스 드라이버 이벤트 큐의 프로세싱은 중지된다(선택적 단계 740). 데이터 블록들이 이미 사용 가능한 경우, 프로세스는 단계(780)로부터 계속될 수 있다(아래 참조). 그러나, 중지가 발생하면, 애플리케이션의 실행에 필요한 데이터 블록들이 서버(200)로부터 먼저 수신될 수 있다(단계 750).
데이터 블록들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 대응하는 컴퓨터(250)의 로컬 데이터 메모리 (예를 들어, 하드 디스크)에 직접 저장되며(단계 760), 이것은 데이터 블록들이 재배열된 이미지로 인해 서버(200)로부터 이러한 방식으로 전송되기 때문이다.
데이터 블록들이 로컬하게 사용 가능한 경우, 디바이스 드라이버 이벤트 큐의 프로세싱이 재개될 수 있다(선택적 단계 770).
수신된 이미지 내의 데이터 블록들의 블록 순서 변경으로 인해 요청된 데이터 블록들이 변경 되었었기 때문에, 디바이스 드라이버는 애플리케이션을 실행하는데 필요한 데이터 블록들을 요청하기 위해 사용된 어드레싱을 데이터 메모리에 저장된 데이터 블록의 순서에 매핑한다(단계 780). 이것은, 원본 이미지를 재배열된 이미지로 매핑하도록 하는, 서버(200)에 의해 이전에 저장된 매핑 정보가 컴퓨터(250)로 전달 되었었기 때문에 가능하다.
따라서, 애플리케이션의 실행에 필요한 데이터 블록들은 블록 디바이스 드라이버에 의해 컴퓨터(250)의 데이터 메모리로부터 제공될 수 있다. 데이터 블록들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 데이터 메모리에 이미 저장되기 때문에(단계 790), 상기 제공은 매우 효율적으로 발생할 수 있다. 특히, 이러한 방식으로, 애플리케이션이 여전히 서버(200)로부터 다운로드 되어야 할지 또는 이미 컴퓨터(250) 상에 저장되어 있는지 여부와는 독립적으로, 애플리케이션의 시작이 가속화될 수 있다.

Claims (24)

  1. 적어도 하나의 디바이스에 의해 수행되는 애플리케이션을 실행하기 위한 방법으로서, 상기 방법은:
    데이터 메모리로부터 상기 애플리케이션의 실행에 필요한 데이터 부분들을 제공하는 단계(790)를 포함하며, 상기 데이터 부분들은 예상 필요 시간순서(expected required chronological order)에 기초하여 적어도 일부 영역들에 있는 물리적 순서로 상기 데이터 메모리에 저장되며, 그리고 상기 예상 필요 시간순서는 상기 애플리케이션의 실행 중에 획득된 필요한 시간순서에 적어도 기초하는 것을 특징으로 하는 방법.
  2. 청구항 1에 있어서:
    상기 애플리케이션의 실행에 필요한 상기 데이터 부분들을 요청하는 단계(730)를 더 포함하는 것을 특징으로 하는 방법.
  3. 청구항 2에 있어서, 상기 방법은:
    상기 애플리케이션의 실행에 필요한 상기 데이터 부분들의 상기 요청을 위해 사용된 어드레싱(addressing)을 상기 데이터 메모리에 저장된 상기 데이터 부분들의 상기 순서에 매핑(mapping)하는 단계(780)를 더 포함하는 것을 특징으로 하는 방법.
  4. 청구항 3에 있어서,
    상기 어드레싱의 상기 매핑은 상기 파일 시스템(431, 432) 계층(430) 아래에서 발생하는 것을 특징으로 하는 방법.
  5. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서, 상기 방법은:
    상기 애플리케이션의 실행에 필요한 상기 데이터 부분들을 수신하는 단계(750)를 더 포함하는 것을 특징으로 하는 방법.
  6. 청구항 1 내지 청구항 4 중 어느 한 항에 있어서, 상기 방법은:
    예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 상기 순서로 데이터 메모리에 상기 데이터 부분들을 저장하는 단계(760)를 더 포함하는 것을 특징으로 하는 방법.
  7. 청구항 1 내지 청구항 6 중 어느 한 항에 있어서,
    상기 데이터 부분들은 데이터 블록들 및/또는 데이터 블록들의 시퀀스들이고, 상기 순서는 블록 순서인 것을 특징으로 하는 방법.
  8. 청구항 1 내지 청구항 7 중 어느 한 항에 있어서,
    상기 데이터 부분들은 블록 디바이스, 특히 가상 블록 디바이스에 저장되는 것을 특징으로 하는 방법.
  9. 청구항 1 내지 청구항 8 중 어느 한 항에 있어서,
    상기 데이터 메모리로부터 상기 애플리케이션의 실행에 필요한 상기 데이터 부분들의 상기 제공을 위해, 디바이스 드라이버(421, 422), 바람직하게는 블록 디바이스 드라이버가 사용되는 것을 특징으로 하는 방법.
  10. 청구항 1 내지 청구항 9 중 어느 한 항에 있어서, 상기 방법은:
    특히 상기 필요한 데이터 부분들이 상기 데이터 메모리에서 사용 가능하지 않은 경우에, 이벤트 큐(queue)의 프로세싱을 중지(suspend)시키는 단계(740); 및
    상기 이벤트 큐의 상기 프로세싱을 재개하는 단계(770)를 더 포함하는 것을 특징으로 하는 방법.
  11. 청구항 1 내지 청구항 10 중 어느 한 항에 있어서,
    상기 애플리케이션 시작과 관련된 적어도 데이터 부분들에 대한 상기 데이터 부분들은 예상 필요 순서에 기초하여 적어도 일부 영역들에 있는 순서로 상기 데이터 메모리에 저장되는 것을 특징으로 하는 방법.
  12. 청구항 1 내지 청구항 11 중 어느 한 항에 있어서, 상기 방법은:
    상기 애플리케이션을 실행하기 위해 상기 애플리케이션과 연관된 메타데이터 정보를 사용하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  13. 데이터 부분들을 송신하기 위한 방법으로서, 특히 청구항 1 내지 청구항 12 중 어느 한 항에 따른 방법에서 사용하기 위한 것으로, 적어도 하나의 디바이스에 의해 수행되며, 상기 방법은:
    애플리케이션의 실행에 필요한 데이터 부분들을 송신하는 단계(630)를 포함하며, 상기 데이터 부분들은 예상 필요 시간순서에 기초하여 적어도 일부 영역들에 있는 물리적 순서로 데이터 메모리에 저장되며, 상기 예상 필요 시간순서는 상기 애플리케이션의 실행 중에 획득된 필요한 시간순서에 적어도 기초하는 것을 특징으로 하는 방법.
  14. 청구항 13에 있어서,
    상기 데이터 부분들은 적어도 부분적으로 상기 저장된 순서로 송신되는 것을 특징으로 하는 방법.
  15. 청구항 13 또는 청구항 14에 있어서, 상기 방법은:
    상기 애플리케이션의 실행에 필요한 상기 데이터 부분들 중 적어도 일부를 송신하라는 요청을 수신하는 단계(610)를 더 포함하는 것을 특징으로 하는 방법.
  16. 청구항 13 내지 청구항 15 중 어느 한 항에 있어서,
    상기 애플리케이션의 실행을 위해 상기 애플리케이션과 연관된 메타데이터 정보를 송신하는 단계(630)를 더 포함하는 것을 특징으로 하는 방법.
  17. 데이터 부분들을 저장하기 위한 방법으로서, 적어도 하나의 디바이스에 의해 수행되며, 상기 방법은:
    애플리케이션의 실행에 필요한 상기 데이터 부분들의 획득된 필요한 시간순서를 수신하는 단계(510), 상기 애플리케이션의 실행에 필요한 상기 데이터 부분들의 상기 획득된 필요한 시간순서는 상기 애플리케이션의 상기 실행 동안 상기 필요한 데이터 부분들 상의 판독 동작들에 대한 로깅된(log) 정보를 포함하며;
    상기 획득된 필요한 시간순서에 적어도 기초하여 예상 필요 시간순서를 결정하는 단계(520); 및
    상기 예상 필요 시간순서에 기초하여 적어도 일부 영역들에 있는 물리적 순서로 데이터 메모리에 상기 필요한 데이터 부분들을 저장하는 단계(530)를 포함하는 것을 특징으로 하는 방법.
  18. 청구항 17에 있어서,
    상기 방법은 단계들 중 하나 이상을 더 포함하며, 상기 단계들은:
    디바이스 드라이버, 바람직하게는 블록 디바이스 드라이버를 설치하는 단계(310);
    이미지를 생성하는 단계(320);
    디바이스 드라이버를 통해, 특히 상기 설치된 디바이스 드라이버를 통해 디바이스를 마운팅하는 단계(330);
    애플리케이션을, 특히 상기 생성된 이미지 상에 설치하는 단계(340);
    상기 애플리케이션의 실행을 위해 상기 애플리케이션과 연관된 메타 데이터 정보를 결정하는 단계(350);
    상기 애플리케이션을 실행하는 단계(360);
    애플리케이션의 상기 실행에 필요한 상기 데이터 부분들의 상기 필요한 순서를 획득하는 단계(370)인 것을 특징으로 하는 방법.
  19. 청구항 17 또는 청구항 18에 있어서,
    상기 로깅된 정보는 상기 각각의 필요한 데이터 부분의 모호하지 않게 식별하도록 하는 것을 특징으로 하는 방법.
  20. 청구항 17 내지 청구항 19 중 어느 한 항에 있어서, 상기 로깅된 정보는 정보 중 하나 이상을 또한 포함하며, 상기 정보는:
    시간 정보;
    애플리케이션-특정 이벤트들;
    사용자-특정 정보인 것을 특징으로 하는 방법.
  21. 청구항 17 내지 청구항 20 중 어느 한 항에 있어서,
    애플리케이션의 실행에 필요한 상기 데이터 부분들의 다수의 획득된 필요한 순서들이 수신되고, 그리고 상기 예상 필요 순서는 상기 다수의 획득된 필요한 순서들에 적어도 기초하여 결정되는 것을 특징으로 하는 방법.
  22. 청구항 17 내지 청구항 21 중 어느 한 항에 있어서,
    획득된 필요한 순서의 시퀀스 섹션의 경우, 상기 시퀀스 섹션은 압축(condense)되는 것을 특징으로 하는 방법.
  23. 디바이스로서, 청구항 1 내지 청구항 22 중 어느 한 항에 따른 방법을 수행 및/또는 제어하기 위한 적절한 수단들을 포함하거나 적절한 수단들로 구성된 것을 특징으로 하는 디바이스.
  24. 컴퓨터 프로그램으로서, 프로그램 명령어들을 포함하며, 상기 프로그램 명령어들은 상기 컴퓨터 프로그램이 프로세서 상에서 작동하는 경우, 상기 프로세서가 청구항 1 내지 청구항 22 중 어느 한 항에 따른 방법을 수행 및/또는 제어하도록 하는 것을 특징으로 하는 컴퓨터 프로그램.
KR1020187015069A 2015-10-29 2016-10-28 애플리케이션들의 가속화된 실행을 위한 방법 및 디바이스 KR102119832B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102015118522.9A DE102015118522A1 (de) 2015-10-29 2015-10-29 Verfahren und Vorrichtung zum beschleunigten Ausführen von Applikationen
DE102015118522.9 2015-10-29
PCT/EP2016/076111 WO2017072312A2 (de) 2015-10-29 2016-10-28 Verfahren und vorrichtung zum beschleunigten ausführen von applikationen

Publications (2)

Publication Number Publication Date
KR20180100111A true KR20180100111A (ko) 2018-09-07
KR102119832B1 KR102119832B1 (ko) 2020-06-16

Family

ID=57226961

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187015069A KR102119832B1 (ko) 2015-10-29 2016-10-28 애플리케이션들의 가속화된 실행을 위한 방법 및 디바이스

Country Status (11)

Country Link
US (1) US11216286B2 (ko)
EP (1) EP3368975B1 (ko)
JP (1) JP6529678B2 (ko)
KR (1) KR102119832B1 (ko)
CN (2) CN116048409A (ko)
CA (1) CA3003543C (ko)
CY (1) CY1124987T1 (ko)
DE (2) DE102015118522A1 (ko)
ES (1) ES2904537T3 (ko)
PL (1) PL3368975T3 (ko)
WO (1) WO2017072312A2 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108389124B (zh) * 2018-02-26 2020-11-03 平安普惠企业管理有限公司 数据处理方法、装置、计算机设备和存储介质
JP6649989B2 (ja) * 2018-05-25 2020-02-19 株式会社日立製作所 ストレージシステム及びその制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819082A (en) * 1995-06-07 1998-10-06 Sierra On-Line, Inc. Data storage optimization using an access order resource list
US20030140160A1 (en) * 1998-07-22 2003-07-24 Uri Raz Method and apparatus for determining the order of streaming modules
US20070198780A1 (en) * 2006-02-17 2007-08-23 Boyd Kenneth W Apparatus, system, and method for determining prefetch data
US20100011323A1 (en) * 2008-07-09 2010-01-14 Harold Lee Peterson System, Method and computer-readable medium for directing a computational system to defragment and maintain a disc memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062567B2 (en) * 2000-11-06 2006-06-13 Endeavors Technology, Inc. Intelligent network streaming and execution system for conventionally coded applications
US20030142561A1 (en) * 2001-12-14 2003-07-31 I/O Integrity, Inc. Apparatus and caching method for optimizing server startup performance
US7464250B2 (en) 2004-03-11 2008-12-09 International Business Machines Corporation Method to reduce disk access time during predictable loading sequences
JP4625271B2 (ja) * 2004-05-26 2011-02-02 株式会社日立製作所 ネットワークブート用キャッシュ装置
US10002000B2 (en) * 2007-04-09 2018-06-19 Open Invention Network, Llc Trace-assisted startup optimization from a virtual disk
JP2010237837A (ja) * 2009-03-30 2010-10-21 Nec Corp ファイルシステム及びそのデータ再配置方法,プログラム
US10489295B2 (en) * 2012-10-08 2019-11-26 Sandisk Technologies Llc Systems and methods for managing cache pre-fetch

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5819082A (en) * 1995-06-07 1998-10-06 Sierra On-Line, Inc. Data storage optimization using an access order resource list
US20030140160A1 (en) * 1998-07-22 2003-07-24 Uri Raz Method and apparatus for determining the order of streaming modules
US20070198780A1 (en) * 2006-02-17 2007-08-23 Boyd Kenneth W Apparatus, system, and method for determining prefetch data
US20100011323A1 (en) * 2008-07-09 2010-01-14 Harold Lee Peterson System, Method and computer-readable medium for directing a computational system to defragment and maintain a disc memory

Also Published As

Publication number Publication date
WO2017072312A2 (de) 2017-05-04
PL3368975T3 (pl) 2022-02-28
WO2017072312A3 (de) 2017-07-27
JP6529678B2 (ja) 2019-06-12
DE202016009093U1 (de) 2022-03-29
CY1124987T1 (el) 2023-01-05
EP3368975B1 (de) 2022-01-05
KR102119832B1 (ko) 2020-06-16
DE102015118522A1 (de) 2017-05-04
JP2018538637A (ja) 2018-12-27
CA3003543C (en) 2021-03-23
US20180246737A1 (en) 2018-08-30
EP3368975A2 (de) 2018-09-05
CN116048409A (zh) 2023-05-02
US11216286B2 (en) 2022-01-04
CN108475203A (zh) 2018-08-31
CA3003543A1 (en) 2017-05-04
ES2904537T3 (es) 2022-04-05

Similar Documents

Publication Publication Date Title
US11818224B2 (en) On demand resources
CA3027756C (en) Systems and methods for efficient distribution of stored data objects
US9880824B2 (en) On demand resources
US10432723B2 (en) Storage server and storage system
US9804965B2 (en) Virtual machine host server apparatus and method for operating the same
CN108475201B (zh) 一种虚拟机启动过程中的数据获取方法和云计算系统
CN107203480B (zh) 一种数据预取方法以及装置
US11813520B2 (en) Tracking file system read operations for instant play of video games, and for client-side discarding and prefetching of game data
EP4020197B1 (en) Methods and apparatus for loading of a container image
KR102119832B1 (ko) 애플리케이션들의 가속화된 실행을 위한 방법 및 디바이스
CN107667343B (zh) 用于加载按需加载资源的系统和方法
US20190179803A1 (en) Apparatus and method for file sharing between applications
US10055212B2 (en) Evolving streaming installation of software applications
KR102064549B1 (ko) 가상 머신 호스트 서버 장치 및 그 동작 방법
KR101677372B1 (ko) 디스크 블록 요청 예측 장치 및 방법
KR20170105858A (ko) 부트워킹셋을 이용한 가상머신 프로비저닝 가속장치와 가상머신 관리장치 및 방법

Legal Events

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