KR20150141282A - 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템 - Google Patents

복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템 Download PDF

Info

Publication number
KR20150141282A
KR20150141282A KR1020140069643A KR20140069643A KR20150141282A KR 20150141282 A KR20150141282 A KR 20150141282A KR 1020140069643 A KR1020140069643 A KR 1020140069643A KR 20140069643 A KR20140069643 A KR 20140069643A KR 20150141282 A KR20150141282 A KR 20150141282A
Authority
KR
South Korea
Prior art keywords
reference data
application program
memory
data file
address
Prior art date
Application number
KR1020140069643A
Other languages
English (en)
Other versions
KR101729097B1 (ko
Inventor
고광원
김강호
전승협
배승조
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020140069643A priority Critical patent/KR101729097B1/ko
Priority to US14/734,758 priority patent/US9501394B2/en
Publication of KR20150141282A publication Critical patent/KR20150141282A/ko
Application granted granted Critical
Publication of KR101729097B1 publication Critical patent/KR101729097B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 클라우드 컴퓨팅 환경에서의 재사용성이 높은 참조 데이터 관리에 관한 것이다.
본 발명에 따른 참조 데이터 관리 장치는, 상기 참조 데이터가 저장된 저장 장치의 주소를 관리하는 저장장치 관리부; 상기 참조 데이터가 적재된 물리 메모리의 주소를 관리하는 적재 메모리 관리부; 상기 참조 데이터가 저장된 물리 메모리 주소와 상기 참조 데이터를 액세스하는 가상 머신 메모리 주소간 사상 관계 정보를 관리하는 적재 메모리 사상 관계 관리부; 및 물리 메모리에 기적재된 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청에 응답하여 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 응용 프로그램에 할당된 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시키는 참조 데이터 요청 처리부를 포함할 수 있다.

Description

복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템{Method for sharing reference data among application programs executed by a plurality of virtual machines and Reference data management apparatus and system therefor}
본 발명은 클라우드 컴퓨팅 환경에서의 재사용성이 높은 참조 데이터 관리에 관한 것으로서, 구체적으로는 복수의 가상 머신에서 수행되는 복수의 응용 프로그램간에 동일한 참조 데이터가 공유될 수 있도록 하기 위한 방법, 장치 및 시스템에 관한 것이다.
클라우드 컴퓨팅 환경을 이루는 물리 머신들상에 다수의 가상 머신이 동작할 때 각각의 서로 다른 가상 머신상에 동일한 참조 데이터를 기반으로 연산을 수행하는 응용 프로그램들이 실행될 수 있다. 특히, 생물 정보학 응용 프로그램들이 요구하는 참조 데이터의 크기는 수백 MB에서 수 TB에 이르며 이와 같은 데이터는 분석 응용의 알고리즘에 따라 재사용성이 높다.
또한, 클라우드 컴퓨팅 환경에서 컴퓨팅 노드들이 동시에 동일한 참조 데이터를 참조하는 경우에 각 노드들의 메모리에는 동일한 데이터가 중복 존재하고, 각각의 컴퓨팅 노드들은 참조 데이터 적재를 위해서 디스크 I/O를 발생시키고 그로 인해 프로세서의 비효율적인 연산을 야기한다.
이를 해결하고자, 메모리에 저장된 데이터를 비교하여 중복 데이터를 제거하는 방법을 사용하기도 하나, 이는 시스템 사용이 안정화되어 있지 않은 상황에서는 높은 메모리 요구량을 보이는 문제점을 지니고 있다.
따라서, 본 발명은 전술한 종래 기술의 문제점을 해결하기 위하여, 가상 머신 수준의 메모리 공유를 통하여 수 GB에서 수십 GB 크기를 갖는 참조 데이터의 중복 적재를 방지하고 동일한 물리 노드에 존재하는 서로 다른 가상 머신에서 요구하는 동일한 참조 데이터의 적재에 대한 I/O 작업의 중복성을 제거함으로써 사용 메모리 및 I/O를 줄이는 참조 데이터 관리 장치 및 방법을 제공하는 데 그 목적이 있다.
전술한 목적을 달성하기 위해, 본 발명의 일실시예에 따라 복수의 가상 머신에서 수행되는 복수의 응용 프로그램간 참조 데이터를 공유하는 방법이 제공된다. 상기 방법은, 응용 프로그램으로부터의 참조 데이터 파일에 대한 메모리 할당 요청에 응답하여 물리 메모리의 빈 페이지를 할당하는 단계; 상기 응용 프로그램으로부터의 상기 참조 데이터 파일에 대한 열기 요청에 응답하여, 상기 참조 데이터 파일이 다른 응용 프로그램에 의해 상기 물리 메모리에 이미 적재되어 있는지 확인하는 단계; 및 상기 물리 메모리에 적재되어 있는 것으로 확인된 경우에, 상기 응용 프로그램으로부터의 상기 참조 데이터 파일에 대한 읽기 요청에 응답하여, 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시킴으로써 상기 응용 프로그램과 상기 다른 응용 프로그램간에 상기 참조 데이터 파일이 공유되도록 하는 단계를 포함할 수 있다.
일실시예에서, 상기 방법은 상기 가상 머신 메모리 주소에 사상시킨 후에 상기 빈 페이지의 할당을 해제하는 단계를 더 포함할 수 있다.
일실시예에서, 상기 응용 프로그램과 상기 다른 응용 프로그램은 동일한 물리 머신에 존재하는 서로 상이한 가상 머신 각각에서 수행될 수 있다.
일실시예에서, 상기 응용 프로그램과 상기 다른 응용 프로그램은 동일한 물리 머신에 존재하는 동일한 가상 머신에서 수행될 수 있다.
일실시예에서, 상기 응용 프로그램의 상기 참조 데이터 파일에 대한 열기 요청 및 상기 읽기 요청은 가상 머신 모니터로의 하이퍼콜(hypercall)을 통해 요청될 수 있다.
일실시예에서, 상기 방법은, 상기 응용 프로그램으로부터의 상기 참조 데이터 파일에 연관된 대상 데이터 파일에 대한 읽기 요청에 응답하여 상기 대상 데이터 파일을 상기 물리 메모리의 빈 페이지에 적재하는 단계를 더 포함하되, 상기 대상 데이터 파일에 대한 읽기 요청은 상기 운영체제에서 제공하는 시스템콜(system call)을 통해 요청될 수 있다.
본 발명의 일실시예에 따라, 동일한 물리 머신에 존재하는 복수의 가상 머신들에서 수행되는 복수의 응용 프로그램에 의해 참조되는 참조 데이터를 관리하기 위한 참조 데이터 관리 장치가 제공된다. 상기 장치는, 상기 참조 데이터가 저장된 저장 장치의 주소를 관리하는 저장장치 관리부; 상기 참조 데이터가 적재된 물리 메모리의 주소를 관리하는 적재 메모리 관리부; 상기 참조 데이터가 저장된 물리 메모리 주소와 상기 참조 데이터를 액세스하는 가상 머신 메모리 주소간 사상 관계 정보를 관리하는 적재 메모리 사상 관계 관리부; 및 물리 메모리에 기적재된 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청에 응답하여 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 응용 프로그램에 할당된 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시키는 참조 데이터 요청 처리부를 포함할 수 있다.
일실시예에서, 상기 장치는 가상 머신 모니터내에 구비될 수 있다.
일실시예에서, 상기 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청은 가상 머신 운영체제에 구비된 참조 데이터 인터페이스를 통해 요청될 수 있다.
일실시예에서, 상기 참조 데이터 요청 처리부는, 상기 응용 프로그램으로부터 상기 참조 데이터 파일에 대한 읽기 요청 이전에 열기 요청이 수신되면 상기 적재 메모리 관리부에 근거하여 상기 열기 요청된 참조 데이터 파일이 물리 메모리에 이미 적재되어 있는지 확인할 수 있다.
본 발명의 일실시예에 따라, 동일한 물리 머신에 존재하는 복수의 가상 머신을 이용하여 복수의 응용 프로그램을 실행시키는 컴퓨팅 시스템이 제공된다. 상기 컴퓨팅 시스템은, 상기 물리 머신내 가상 머신 모니터에 구비되어, 상기 복수의 응용 프로그램에 의해 참조되는 참조 데이터 파일을 관리하는 참조 데이터 관리 장치와, 상기 복수의 가상 머신 각각의 운영 체제에 구비되어, 상기 응용 프로그램으로부터 참조 데이터 파일에 대한 요청을 수신하고 상기 수신된 요청을 상기 참조 데이터 관리기에 전달하는 참조 데이터 인터페이스를 포함한다.
일실시예에서, 상기 참조 데이터 인터페이스는 상기 응용 프로그램이 상기 참조 데이터 파일에 대한 열기, 읽기 및 쓰기를 요청하는데 필요한 함수를 제공할 수 있다.
일실시예에서, 상기 참조 데이터 관리 장치는 상기 참조 데이터가 저장된 저장 장치의 주소를 관리하는 저장장치 관리부; 상기 참조 데이터가 적재된 물리 메모리의 주소를 관리하는 적재 메모리 관리부; 상기 참조 데이터가 저장된 물리 메모리 주소와 가상 머신 메모리 주소간 사상 관계 정보를 관리하는 적재 메모리 사상 관계 관리부; 및 물리 메모리에 기적재된 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청에 응답하여 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 응용 프로그램에 할당된 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시키는 참조 데이터 요청 처리부를 포함할 수 있다.
를 포함하는 컴퓨팅 시스템.
본 발명에 따르면, 응용의 인지 없이 참조 데이터와 대상 데이터의 이원화된 관리 및 참조 데이터의 공유를 통하여 단위 시간당 연산량을 증가시킬 수 있다. 다수의 응용 프로그램에 대해서 동일한 참조 데이터가 메모리에 중복되어 적재되는 것을 방지하고 하나의 참조 데이터를 다수의 응용프로그램 각각이 직접 적재하여 사용하는 것과 같은 효과를 제공한다.
본 발명에 따르면 클라우드 컴퓨팅 환경에서 대용량 참조 데이터 기반의 응용을 수행시에 동일한 물리 머신을 이용하여 보다 많은 가상 머신을 제공할 수 있게 되고, 참조 데이터 접근에 따른 I/O를 감소시킴으로 인하여 대용량 데이터에 대한 효과적인 처리를 유도할 수 있다. 이를 기반으로 최근 생물정보학과 같은 대용량 메모리를 요구하는 참조 데이터를 이용하는 응용들의 수행을 위하여 클라우드 컴퓨팅 환경의 채택이 급격히 늘어남에 따라 클라우드 컴퓨팅 자원의 비용 절감을 제공하는 이점을 갖는다.
도 1은 참조 데이터가 공유되지 않는 기존의 가상화 시스템에서의 메모리 사상 관계를 도시한 도면이다.
도 2는 운영체제 수준에서의 참조 데이터 공유를 제공하는 경우의 메모리 사상 관계를 도시한 도면이다.
도 3은 본 발명에 따른 참조 데이터 관리가 적용된 경우의 메모리 사상 관계를 도시한 도면이다.
도 4a 및 4b는 본 발명의 일실시예에 따른 참조 데이터 공유를 위한 메모리 할당 과정을 개념적으로 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 참조 데이터 관리 장치의 구성을 도시한 블록도이다.
도 6은 본 발명의 일실시예에 따른 참조 데이터 공유 과정을 도시한 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 이를 상세한 설명을 통해 상세히 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 본 명세서 및 청구항에서 사용되는 단수 표현은, 달리 언급하지 않는 한 일반적으로 "하나 이상"을 의미하는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 용어들중 "모듈", "부", "인터페이스"등은 일반적으로 컴퓨터 관련 객체를 의미하며, 예를 들어, 하드웨어, 소프트웨어 및 이들의 조합을 의미할 수 있다.
도 1은 참조 데이터가 공유되지 않는 기존의 가상화 시스템에서의 메모리 사상 관계를 도시한 도면이다.
도 1에 도시된 바와 같이, 가상화되어 있는 하나의 물리 머신에 2개의 가상 머신, 가상 머신0(110) 및 가상 머신1(120)이 동작하고, 가상 머신0(110)에 참조 데이터를 기반으로 대상 데이터를 처리하는 응용프로그램 A 및 응용프로그램 B가 실행되고, 가상 머신1(120)에서는 응용프로그램C가 실행되며, 응용프로그램 A, B 및 C는 참조 데이터와 대상 데이터를 전통적인 방식(예, 리눅스의 파일 인터페이스 등)을 물리 머신 메모리(130)에 업로드하여 처리한다고 가정한다.
이러한 경우에, 각각의 응용프로그램들은 동일한 참조 데이터 (C, D, E, F)를 이용하기 위해서 추가적인 메모리 (C', D', E', F', C'', D'', E'', F'')를 할당하여 각 응용의 가상 메모리에 사상하여 접근하게 된다. 이는 결과적으로 중복 데이터를 메모리에 적재함으로써 메모리를 비효율적으로 사용하게 되고, 또한 추가적인 IO 대역폭을 요구하는 문제점이 존재한다.
도 2는 운영체제 수준에서의 참조 데이터 공유를 제공하는 경우의 메모리 사상 관계를 도시한 도면이다.
도 2에 도시된 응용 프로그램 A, B, C의 실행 환경은 도 1과 동일하다고 가정한다. 도 1에 비교하여, 가상 머신0(210)에서 응용 프로그램 A 및 B가 동일한 참조 데이터를 이용하는 경우에 운영체제가 참조데이터가 중복됨을 확인하여 하나의 복사본만을 유지하고 있지만, 가상 머신1(220)에서 실행되는 응용 프로그램 C가 동일한 참조 데이터를 접근할 경우에는 중복된 데이터(C', D', E', F')가 가상 머신0(210) 및 가상 머신1(220) 각각이 사용하는 물리 머신 메모리(230)에 존재하게 된다. 즉, 도 2에서는 응용프로그램C에서 이용되는 참조 데이터(C', D', E', F')가 응용프로그램A 및 B에서 이용되는 참조 데이터(C, D, E, F)와 동일함에도 불구하고 추가적으로 메모리 공간을 사용하는 오버헤드를 갖게 되고 이는 가상 머신의 집적율 저하를 야기시킨다. 또한, 동일한 데이터의 중복은 CPU 캐시 자원을 더 많이 사용하는 문제를 야기시킬 수도 있다.
도 3은 본 발명에 따른 참조 데이터 관리가 적용된 경우의 메모리 사상 관계를 도시한 도면이다.
도 3에 도시된 바와 같이, 동일한 참조 데이터를 이용하는 응용 프로그램A 와 응용 프로그램B가 하나의 가상 머신0에 존재할 경우, 각각은 저장소 (예, 하드디스크드라이브)로부터 필요한 참조 데이터와 대상 데이터를 가져오게 된다. 또한, 가상 머신 1에서는 응용프로그램 C가 참조 데이터와 대상 데이터를 가져오게 된다. 이 때, 본 발명에 따라 제안되는 장치 및 방법을 통해서 참조 데이터는 시스템 전 영역에 중복 데이터를 갖지 않게 되고 이로 인해서 두 가상 머신에서 동작하는 응용들의 수행에 있어 요구되는 메모리 요구량과 IO 대역폭을 줄일 수 있다.
도 4는 본 발명의 일실시예에 따른 참조 데이터 관리가 적용되는 경우의 메모리 할당 과정을 도시한 도면이다.
일실시예에서, 본 발명에 따른 참조 데이터 관리를 수행하기 위해 운영체제(410)에 참조데이터 인터페이스(412)가 동작하고, 가상 머신 모니터(450)상에는 참조데이터 관리기(452)가 동작할 수 있다.
참조 데이터 인터페이스(412)는 응용프로그램이 참조 데이터를 처리하고자 하는 경우에 하이퍼콜(hypercall)을 통해 가상 머신 모니터(450)상에 구현되는 참조데이터 관리기(452)를 호출하는 역할을 수행한다. 즉, 참조 데이터 인터페이스(412)에서 제공되는 open(), read(), write() 등의 함수가 응용 프로그램에 의해 호출되면, 참조 데이터 관리기(452)가 호출되어 해당 함수를 처리할 것이다.
참조 데이터 관리기(452)는 본 발명의 일실시예에 따라 참조 데이터가 물리 메모리(460)에 중복 적재되는 것을 방지하기 위해 참조 데이터가 적재되는 물리 메모리(460)와 가상 머신 메모리(430)간 사상 관계 정보를 관리할 수 있다. 참조데이터 관리기(452)의 세부 구성에 대하여는 도 5를 참조하여 후술한다.
도 4는, 앞서 설명한 바와 같이, 하나의 물리 머신 상에 복수의 가상 머신이 존재하고 하나의 가상 머신에서 실행되는 응용프로그램이 동일한 가상 머신 또는 상이한 가상 머신에서 실행되는 다른 응용 프로그램에 의해 이미 적재된 참조 데이터와 동일한 참조 데이터를 이용하고자 하는 경우의 메모리 할당 과정을 나타낸다.
우선, 응용 프로그램이 참조 데이터를 사용하기 위해서 물리 메모리(460) 내에 빈 페이지A~D를 할당 받는다(코드 01).
다음, 참조 데이터 파일을 열기 위해서 참조 데이터 인터페이스(412)에서 제공하는 open 함수를 호출한다.
일실시예에서, 참조 데이터 인터페이스(412)에서 제공하는 open 함수는 가상 머신 모니터(450)의 참조 데이터 관리기(452)로의 하이퍼콜(hypercall)을 호출하게 된다.
응용 프로그램이 참조 데이터 인터페이스(412)에서 제공하는 read 함수를 호출하면(코드 04), 이에 응답하여, 참조 데이터 관리기(452)는 기적재된 참조 데이터 파일의 물리 주소(즉, 물리 메모리내 주소)를 응용 프로그램의 코드 01을 이용하여 할당받은 빈페이지 A가 사상된 가상 머신 메모리(430)의 주소에 사상한다. 즉, 빈 페이지A~D가 사상되어 있는 가상 머신 메모리(430)의 공간에 참조 데이터 A~참조데이터 D를 사상한다. 한편, 빈 페이지A~ D의 할당은 해제한다.
응용프로그램의 코드 06 내지 코드 13에 따라, 해당 참조 데이터 파일에 연관된 대상 데이터 파일을 열고 물리 메모리(460)에 적재하고, 기적재된 참조 데이터를 기반으로 정보 처리를 수행한다. 응용 프로그램의 read() 함수 호출에 의거하여 대상 데이터가 저장된 DB(440)로부터 물리 메모리(460)에 적재되어 가상 머신 메모리(430) 및 가상 메모리(420)에 사상될 것이다.
이와 같이, 본 발명의 일실시예에서, 참조 데이터를 이용하기 위해서는 가상 머신 모니터(450)로의 하이퍼콜을 통해서 참조 데이터 관리기(452)에 해당 기능을 요청하고(코드 03, 04), 대상 데이터를 이용하기 위해서는 가상 머신 내의 운영체제에서 제공하는 시스템 콜을 통해 운영체제의 파일시스템에 해당 기능을 요청할 수 있다.
위와 같은 방식에 따르면, 낮은 재사용성을 갖는 대상 데이터가 저장되는 메모리는 가상 머신 운영체제를 통해 관리되고, 높은 재사용성을 갖는 참조 데이터가 저장되는 메모리는 가상 머신 모니터(450)상에 구현되는 참조 데이터 관리기(452)를 통해 관리함으로써, 메모리를 효율적으로 사용하고 참조 데이터의 IO로 발생하는 요구 대역폭을 줄일 수 있다.
도 5는 본 발명의 일실시예에 따른 참조 데이터 관리기의 구성을 도시한 블록도이다.
도시된 바와 같이, 참조 데이터 관리기(500)는 가상 머신 모니터상에 구현되며, 가상 머신의 운영 체제에 포함된 참조 데이터 인터페이스를 통해 전달되는 참조 데이터 파일에 대한 열기 요청, 읽기 요청, 쓰기 요청 등을 처리할 수 있다.
일실시예에서, 가상 머신에서 실행되는 응용 프로그램이 참조 데이터 인터페이스가 제공하는 open(), read(), write() 함수 등을 호출하면, 이는 가상 머신 모니터상에 구현된 참조 데이터 관리기(500)에 대한 하이퍼콜을 호출하게 된다.
참조데이터 관리기(500)는, 저장장치 관리부(510), 적재 메모리 관리부(520) 및 적재 메모리 사상 관계 관리부(530)를 포함할 수 있다.
저장장치 관리부(510)는 참조 데이터가 저장된 저장 장치의 주소를 관리한다.
적재 메모리 관리부(520)는 참조 데이터가 적재된 물리 메모리의 주소를 관리한다.
적재 메모리 사상 관계 관리부(530)는 참조 데이터가 저장된 물리 메모리 주소와 상기 참조 데이터를 액세스하는 가상 머신 메모리 주소간 사상 관계 정보를 관리한다.
참조데이터 요청 처리부(540)는 응용 프로그램이 참조 데이터 인터페이스를 통해 참조 데이터 파일에 대한 열기 요청을 전송하면(즉, 참조 데이터 인터페이스가 제공하는 open() 함수를 호출하면) 적재 메모리 관리부(420)를 참조하여 열기 요청된 참조 데이터 파일이 물리 메모리에 이미 적재되어 있는지 판단한다.
또한, 응용 프로그램의 물리 메모리에 적재된 참조 데이터 파일에 대한 읽기 요청에 응답하여(즉, 참조 데이터 인터페이스가 제공하는 read() 함수가 호출되면), 참조 데이터 파일이 적재된 물리 메모리의 주소를 응용 프로그램에 할당된 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시키고 상기 물리 메모리 주소와 상기 가상 머신 메모리 주소간 사상 관계를 적재 메모리 사상 관계 관리부(530)에 저장한다.
한편, 열기 요청된 참조 데이터 파일이 물리 메모리에 아직 적재되어 있지 않은 것으로 판단되면, 저장장치 관리부(510)에 저장된 참조 데이터의 저장 장치 주소를 이용하여 해당 참조 데이터 파일을 판독하여 메모리에 적재하고, 적재된 메모리 주소는 적재 메모리 관리부(520)에 저장하도록 한다.
도 6은 본 발명의 일실시예에 따른 참조 데이터 공유 과정을 도시한 흐름도이다.
응용 프로그램으로부터의 참조 데이터 파일에 대한 메모리 할당 요청에 응답하여 물리 메모리의 빈 페이지를 할당한다(S610).
응용 프로그램으로부터의 상기 참조 데이터 파일에 대한 열기 요청에 응답하여, 참조 데이터 파일이 다른 응용 프로그램에 의해 상기 물리 메모리에 이미 적재되어 있는지 확인한다(S620).
일실시예에서, 다른 응용 프로그램은 상기 참조 데이터 파일에 대한 열기 요청한 응용 프로그램과 상이한 가상 머신에서 수행되거나 동일한 가상 머신에서 수행되는 응용 프로그램일 수 있다.
물리 메모리에 참조 데이터 파일이 다른 응용 프로그램에 의해 기적재되어 있는 것으로 확인된 경우에, 상기 응용 프로그램으로부터의 참조 데이터 파일에 대한 읽기 요청에 응답하여, 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시킴으로써 상기 응용 프로그램과 상기 다른 응용 프로그램간에 상기 참조 데이터 파일이 공유되도록 한다(S640).
마지막으로, 할당된 빈 페이지는 해제한다(S650).
일실시예에서, 응용 프로그램의 참조 데이터 파일에 대한 열기 요청 및 읽기 요청은 가상 머신 모니터로의 하이퍼콜(hypercall)을 통해 요청될 수 있다.
한편, 상기 응용 프로그램으로부터 상기 참조 데이터 파일에 연관된 대상 데이터 파일에 대한 읽기가 요청되면, 대상 데이터 파일을 물리 메모리의 빈 페이지에 적재하는 단계를 더 포함할 수 있다. 이 때, 대상 데이터 파일에 대한 읽기 요청은 가상머신 운영체제에서 제공하는 시스템콜(system call)을 통해 요청될 것이다.
이와 같이, 본 발명에 따르면, 참조 데이터와 대상 데이터의 이원화된 관리 및 참조 데이터의 공유를 통하여 단위 시간당 연산량을 증가시킬 수 있다.
본 발명의 실시예에 따른 장치 및 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 또한 상술한 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이제까지 본 발명에 대하여 그 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (13)

  1. 복수의 가상 머신상에서 수행되는 복수의 응용 프로그램간 참조 데이터를 공유하는 방법으로서, 상기 방법은,
    응용 프로그램으로부터의 참조 데이터 파일에 대한 메모리 할당 요청에 응답하여 물리 메모리의 빈 페이지를 할당하는 단계;
    상기 응용 프로그램으로부터의 상기 참조 데이터 파일에 대한 열기 요청에 응답하여, 상기 참조 데이터 파일이 다른 응용 프로그램에 의해 상기 물리 메모리에 이미 적재되어 있는지 확인하는 단계; 및
    상기 물리 메모리에 적재되어 있는 것으로 확인된 경우에, 상기 응용 프로그램으로부터의 상기 참조 데이터 파일에 대한 읽기 요청에 응답하여, 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시킴으로써 상기 응용 프로그램과 상기 다른 응용 프로그램간에 상기 참조 데이터 파일이 공유되도록 하는 단계
    를 포함하는 참조 데이터 공유 방법.
  2. 제1항에 있어서, 상기 가상 머신 메모리 주소에 사상시킨 후에 상기 빈 페이지의 할당을 해제하는 단계를 더 포함하는 참조 데이터 공유 방법.
  3. 제1항에 있어서, 상기 응용 프로그램과 상기 다른 응용 프로그램은 동일한 물리 머신에 존재하는 서로 상이한 가상 머신 각각에서 수행되는 참조 데이터 공유 방법.
  4. 제1항에 있어서, 상기 응용 프로그램과 상기 다른 응용 프로그램은 동일한 물리 머신에 존재하는 동일한 가상 머신에서 수행되는 참조 데이터 공유 방법.
  5. 제1항에 있어서,
    상기 응용 프로그램의 상기 참조 데이터 파일에 대한 열기 요청 및 상기 읽기 요청은 가상 머신 모니터로의 하이퍼콜(hypercall)을 통해 요청되는 참조 데이터 공유 방법.
  6. 제1항에 있어서, 상기 응용 프로그램으로부터의 상기 참조 데이터 파일에 연관된 대상 데이터 파일에 대한 읽기 요청에 응답하여 상기 대상 데이터 파일을 상기 물리 메모리의 빈 페이지에 적재하는 단계를 더 포함하되,
    상기 대상 데이터 파일에 대한 읽기 요청은 상기 운영체제에서 제공하는 시스템콜(system call)을 통해 요청되는 참조 데이터 공유 방법.
  7. 동일한 물리 머신에 존재하는 복수의 가상 머신들에서 수행되는 복수의 응용 프로그램에 의해 참조되는 참조 데이터를 관리하기 위한 참조 데이터 관리 장치로서,
    상기 참조 데이터가 저장된 저장 장치의 주소를 관리하는 저장장치 관리부;
    상기 참조 데이터가 적재된 물리 메모리의 주소를 관리하는 적재 메모리 관리부;
    상기 참조 데이터가 저장된 물리 메모리 주소와 가상 머신 메모리 주소간 사상 관계 정보를 관리하는 적재 메모리 사상 관계 관리부; 및
    물리 메모리에 기적재된 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청에 응답하여 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 응용 프로그램에 할당된 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시키는 참조 데이터 요청 처리부
    를 포함하는 참조 데이터 관리 장치.
  8. 제7항에 있어서, 상기 참조 데이터 관리 장치는 가상 머신 모니터내에 구비되는 참조 데이터 관리 장치.
  9. 제7항에 있어서, 상기 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청은 가상 머신 운영체제에 구비된 참조 데이터 인터페이스를 통해 요청되는 참조 데이터 관리 장치.
  10. 제7항에 있어서, 상기 참조 데이터 요청 처리부는,
    상기 응용 프로그램으로부터 상기 참조 데이터 파일에 대한 읽기 요청 이전에 열기 요청이 수신되면 상기 적재 메모리 관리부에 근거하여 상기 열기 요청된 참조 데이터 파일이 물리 메모리에 이미 적재되어 있는지 확인하는 참조 데이터 관리 장치.
  11. 동일한 물리 머신에 존재하는 복수의 가상 머신을 이용하여 복수의 응용 프로그램을 실행시키는 컴퓨팅 시스템에 있어서,
    상기 물리 머신내 가상 머신 모니터에 구비되어, 상기 복수의 응용 프로그램에 의해 참조되는 참조 데이터 파일을 관리하는 참조 데이터 관리 장치와,
    상기 복수의 가상 머신 각각의 운영 체제에 구비되어, 상기 응용 프로그램으로부터 참조 데이터 파일에 대한 요청을 수신하고 상기 수신된 요청을 상기 참조 데이터 관리기에 전달하는 참조 데이터 인터페이스
    를 포함하는 컴퓨팅 시스템.
  12. 제11항에 있어서, 상기 참조 데이터 인터페이스는 상기 응용 프로그램이 상기 참조 데이터 파일에 대한 열기, 읽기 및 쓰기를 요청하는데 필요한 함수를 제공하는 컴퓨팅 시스템.
  13. 제11항에 있어서, 상기 참조 데이터 관리 장치는
    상기 참조 데이터가 저장된 저장 장치의 주소를 관리하는 저장장치 관리부;
    상기 참조 데이터가 적재된 물리 메모리의 주소를 관리하는 적재 메모리 관리부;
    상기 참조 데이터가 저장된 물리 메모리 주소와 가상 머신 메모리 주소간 사상 관계 정보를 관리하는 적재 메모리 사상 관계 관리부; 및
    물리 메모리에 기적재된 참조 데이터 파일에 대한 응용 프로그램의 읽기 요청에 응답하여 상기 참조 데이터 파일이 적재된 물리 메모리의 주소를 상기 응용 프로그램에 할당된 빈 페이지가 사상된 가상 머신 메모리 주소에 사상시키는 참조 데이터 요청 처리부
    를 포함하는 컴퓨팅 시스템.
KR1020140069643A 2014-06-09 2014-06-09 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템 KR101729097B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140069643A KR101729097B1 (ko) 2014-06-09 2014-06-09 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템
US14/734,758 US9501394B2 (en) 2014-06-09 2015-06-09 Method for sharing reference data among application programs executed by a plurality of virtual machines and reference data management apparatus and system thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140069643A KR101729097B1 (ko) 2014-06-09 2014-06-09 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템

Publications (2)

Publication Number Publication Date
KR20150141282A true KR20150141282A (ko) 2015-12-18
KR101729097B1 KR101729097B1 (ko) 2017-04-24

Family

ID=54769667

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140069643A KR101729097B1 (ko) 2014-06-09 2014-06-09 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템

Country Status (2)

Country Link
US (1) US9501394B2 (ko)
KR (1) KR101729097B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703582B1 (en) * 2012-09-07 2017-07-11 Tellabs Operations, Inc. Share access of allocated storage space via in-memory file system between virtual machines
US10733594B1 (en) 2015-05-11 2020-08-04 Square, Inc. Data security measures for mobile devices
US10546302B2 (en) 2016-06-30 2020-01-28 Square, Inc. Logical validation of devices against fraud and tampering
US10496993B1 (en) 2017-02-15 2019-12-03 Square, Inc. DNS-based device geolocation
US10552308B1 (en) * 2017-06-23 2020-02-04 Square, Inc. Analyzing attributes of memory mappings to identify processes running on a device
US11209997B2 (en) 2017-11-22 2021-12-28 Blackberry Limited Method and system for low latency data management
US10831670B2 (en) 2017-11-22 2020-11-10 Blackberry Limited Method and system for low latency data management
US10715536B2 (en) 2017-12-29 2020-07-14 Square, Inc. Logical validation of devices against fraud and tampering
US10922096B2 (en) 2018-02-28 2021-02-16 Vmware, Inc. Reducing subsequent network launch time of container applications
US11507958B1 (en) 2018-09-26 2022-11-22 Block, Inc. Trust-based security for transaction payments
US11494762B1 (en) 2018-09-26 2022-11-08 Block, Inc. Device driver for contactless payments
CN109814979B (zh) * 2018-12-17 2021-03-30 华为技术有限公司 数据加载方法、装置、计算机设备以及可读存储介质
CN112579096B (zh) * 2020-12-18 2024-03-19 北京百度网讯科技有限公司 小程序启动文件的编译、加载方法、装置、设备和介质
CN114500877A (zh) * 2021-12-30 2022-05-13 惠州华阳通用智慧车载系统开发有限公司 一种摄像头的共享方法、系统及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991742A (en) * 1996-05-20 1999-11-23 Tran; Bao Q. Time and expense logging system
US7065755B2 (en) * 2001-03-15 2006-06-20 Sun Microsystems, Inc. Method and apparatus for removing class initialization barriers from shared compiled methods
KR100929852B1 (ko) 2007-09-20 2009-12-04 한국전자통신연구원 공유 메모리를 이용한 가상 기계 상의 응용프로그램 간통신 인터페이스 장치 및 그 방법
US8311964B1 (en) * 2009-11-12 2012-11-13 Symantec Corporation Progressive sampling for deduplication indexing
US10061701B2 (en) * 2010-04-26 2018-08-28 International Business Machines Corporation Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
JP5550581B2 (ja) 2011-02-17 2014-07-16 三菱電機株式会社 共有メモリデバッグ装置及びプログラム
KR101738074B1 (ko) 2011-04-05 2017-05-19 삼성전자주식회사 메모리 장치, 및 이를 포함하는 컴퓨터 시스템
KR101740317B1 (ko) * 2013-04-10 2017-05-26 한국전자통신연구원 메모리 관리 방법 및 장치
US9766824B2 (en) * 2013-11-26 2017-09-19 Hitachi, Ltd. Storage device and computer system

Also Published As

Publication number Publication date
US20150356003A1 (en) 2015-12-10
US9501394B2 (en) 2016-11-22
KR101729097B1 (ko) 2017-04-24

Similar Documents

Publication Publication Date Title
KR101729097B1 (ko) 복수의 가상 머신에서 수행되는 응용 프로그램들간 참조 데이터를 공유하는 방법 및 이를 위한 참조 데이터 관리 장치 및 시스템
US9361218B2 (en) Method of allocating referenced memory pages from a free list
US9189419B2 (en) Detecting and suppressing redundant input-output operations
US8966188B1 (en) RAM utilization in a virtual environment
US8473565B2 (en) Abstracting special file interfaces to concurrently support multiple operating system levels
US10248418B2 (en) Cleared memory indicator
US20180107605A1 (en) Computing apparatus and method with persistent memory
KR20060099404A (ko) 가상 머신들 간에서 페이지들을 공유하기 위한 방법,시스템 및 컴퓨터 판독가능 매체
US20170068455A1 (en) Application execution enclave memory page cache management method and apparatus
US10061701B2 (en) Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US9367478B2 (en) Controlling direct memory access page mappings
US9542112B2 (en) Secure cross-process memory sharing
US9298375B2 (en) Method and apparatus for returning reads in the presence of partial data unavailability
US11836091B2 (en) Secure memory access in a virtualized computing environment
CN112346647B (zh) 数据存储方法、装置、设备和介质
US9875184B2 (en) Multi-level snapshot caching
US9189406B2 (en) Placement of data in shards on a storage device
US10901914B2 (en) Method for writing multiple copies into storage device, and storage device
KR20190116641A (ko) 가상화 시스템을 위한 저장 장치 및 그 동작 방법
US20140082305A1 (en) Providing usage statistics for virtual storage
CN114518962A (zh) 内存的管理方法及装置
US9152347B2 (en) Storage and retrieval of high importance pages in an active memory sharing environment
US20120054773A1 (en) Processor support for secure device driver architecture
US20240053914A1 (en) Systems and methods for managing coresident data for containers
US20220398199A1 (en) User-space remote memory paging

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant