KR101321369B1 - 디스크 블록 액세스 처리 방법 및 시스템 - Google Patents

디스크 블록 액세스 처리 방법 및 시스템 Download PDF

Info

Publication number
KR101321369B1
KR101321369B1 KR1020070027804A KR20070027804A KR101321369B1 KR 101321369 B1 KR101321369 B1 KR 101321369B1 KR 1020070027804 A KR1020070027804 A KR 1020070027804A KR 20070027804 A KR20070027804 A KR 20070027804A KR 101321369 B1 KR101321369 B1 KR 101321369B1
Authority
KR
South Korea
Prior art keywords
domain
block
access
disk
page
Prior art date
Application number
KR1020070027804A
Other languages
English (en)
Other versions
KR20080086108A (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 KR1020070027804A priority Critical patent/KR101321369B1/ko
Priority to US12/053,246 priority patent/US8335903B2/en
Publication of KR20080086108A publication Critical patent/KR20080086108A/ko
Application granted granted Critical
Publication of KR101321369B1 publication Critical patent/KR101321369B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 디스크 블록에 대한 액세스를 처리하는 방법 및 시스템에 관한 것으로, OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아 OS 도메인의 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 판단 결과에 따라 OS 도메인의 디스크 블록 액세스를 처리함으로써, 가상 머신 모니터(VMM) 환경에서 메모리 액세스 제어를 통하여 데이터 카피 없이 도메인 간의 캐시를 공유할 수 있어서 성능이 뛰어나고, 디스크 드라이브에 대한 액세스 제어를 디바이스 도메인에서 수행함으로써 데이터 충돌을 막을 수 있는 효과가 있다.
Figure R1020070027804
가상 머신 모니터, OS 도메인, 디바이스 도메인, 블록, 공유

Description

디스크 블록 액세스 처리 방법 및 시스템{Method and apparatus of processing an access to a disk block}
도 1은 종래의 네트워크 파일 시스템(NFS)에서의 디스크 액세스를 설명하기 위한 도면이다.
도 2는 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템의 개략적인 블록도이다.
도 3은 도 2에 도시된 블록 테이블(212)의 엔트리 구성을 설명하기 위한 도면이다.
도 4는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 히트(hit)한 경우의 신호 흐름도를 도시한다.
도 5는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 미스(miss)된 경우의 신호 흐름도를 도시한다.
도 6은 본 발명의 또 다른 실시 예에 따른 홈 이동(home migration)을 설명하기 위한 신호 흐름도를 도시한다.
도 7은 본 발명의 또 다른 실시 예에 따른 블록 락을 설명하기 위한 신호 흐 름도를 도시한다.
<도면의 주요 부분에 대한 부호의 설명>
200, 220: OS 도메인 210: 디바이스 도메인
201, 221: 버퍼 캐시 202, 222: 프론트 엔드 드라이버
211: 희생 페이지 캐시 212: 블록 테이블
213: 백 엔드 드라이버 214: 네이티브 드라이버
230: 가상 머신 모니터 231, 232: 이벤트 채널
300: 블록 락 310: 락 홀더
320: 홈 노드 330: 페이지 주소
본 발명은 디스크 블록에 대한 액세스를 처리하는 방법 및 시스템에 관한 것으로, 더 상세하게는 가상 머신 모니터(Virtual Machine Monitor, 이하 'VMM')를 사용하는 환경에서, 서로 다른 OS 도메인들 간에 디스크 블록에 대한 액세스를 처리하는 방법 및 시스템에 관한 것이다.
컴퓨터의 파일 시스템은 파일과 그 안에 든 자료를 저장하고 찾기 쉽도록 유지 관리하는 것이다. 파일 시스템은 하드 디스크나 CD-ROM과 같은 물리적 저장공 간을 저장장치로 활용할 수도 있지만, 네트워크 파일 시스템(Network File System, 이하, 'NFS' 이라 함) 및 공유 디스크 파일 시스템(Shared Disk File System, 이하 'SDFS' 이라 함)와 같은 파일 시스템에서는 네트워크상에 존재하는 파일에 접근하기 위한 가상적 인터페이스인 경우도 있다.
파일 시스템은 크게 디스크, 네트워크, 그리고 특수 용도의 파일 시스템으로 분류할 수 있으며, 특히, 디스크 파일 시스템은 데이터 저장 장치, 특히 컴퓨터에 연결된 디스크 드라이브에 파일을 저장하기 위해 설계된 시스템이다.
도 1은 종래의 네트워크 파일 시스템(NFS)에서의 디스크 액세스를 설명하기 위한 도면이다.
NFS는 네트워크를 통하여 원격 노드(remote node)의 디스크 드라이브를 마치 로컬의 디스크인 것처럼 접근할 수 있도록 해주는 것이다. 디스크 드라이브(120)의 데이터는 원격 노드인 노드 1(110)의 메인 메모리 상의 버퍼 캐시(buffer cache)에 카피가 되고, 네트워크를 통해서 노드 0(100)에 전달되어 노드 0(100)의 메인 메모리 상의 버퍼 캐시에 저장되고, 이 데이터를 애플리케이션에 제공한다. 하지만, 이는 디스크 드라이브 상에 데이터를 액세스하는 데 다른 노드, 여기서는 노드 1(110)을 통해서만 가능하기 때문에 데이터 카피 등에 오버헤드가 크다는 단점이 있다.
또한, SDFS는 SAN(storage area network) 또는 TCP/IP 네트워크상에 직접 연결된 디스크 드라이브들에 대한 접근을 가능케 하는 기술이다. 여러 노드 간에 동일한 디스크 드라이브를 공유할 경우 데이터 일관성 유지를 위한 기술을 포함한다. 각 노드는 버퍼 캐시를 갖고 있으며, 데이터 일관성을 위해서 동일한 디스크 블록에 대한 카피는 하나만을 허용한다. 이를 위해서 디스크 드라이브를 액세스하기 전에 우선 블록에 대한 락(lock)을 얻도록 제한한다. 별도의 블록 락을 관리하는 서버 노드가 있을 수도 있고, 디스크에서 블록 락 메커니즘을 제공할 수도 있다.
이는 데이터가 다른 노드의 도움없이 디스크 드라이브에서 직접 데이터를 액세스 하고자 하는 노드의 버퍼 캐시로 카피하기 때문에, 데이터를 카피하는 오버헤드가 네트워크 파일 시스템 기술에 비해 작다.
한편, 가상 머신(Virtual machine, 이하 'VM')은 하드웨어 구조를 추상화하여 다양한 운영체계가 하부 구조인 하드웨어에 영향을 받지 않고 실행되도록 하는 구조를 의미한다. VM을 사용하면 얻게 되는 주요 장점으로는 하드웨어에 상관 없이 여러 운영체계 및 소프트웨어를 실행할 수 있으며, 한 대의 컴퓨터에서 동시에 여러 운영체계를 실행할 수 있다. 예를 들면, 멀티태스킹 기술로 인해 하나의 프로세서가 다수의 태스크를 동시에 실행함으로써 다수의 프로세서가 존재하는 것처럼 보이듯이 하나의 하드웨어가 다수의 버추얼 시스템들을 동시에 실행함으로써 외부에서 보았을 때에는 다수의 시스템이 존재하는 것으로 보이게 하는 것이다.
기존의 시스템은 하드웨어를 통제하여 애플리케이션이 표준 API를 통해 하드웨어를 사용할 수 있도록 해주는 운영체계가 존재하고 그 위에서 애플리케이션이 동작하는 구조를 가진다. 하지만, VM 구조에서 운영체계는 하드웨어가 아닌 가상 머신 모니터(Virtual Machine Monitor, 이하 VMM)가 제공하는 가상의 하드웨어 환경을 진짜 하드웨어로 착각하는 상태에서 실행되고 애플리케이션은 역시 운영체계 가 제공하는 API를 통해 가상 하드웨어를 사용하게 된다.
기존의 디스크 파일 시스템들, 전술한 NFS 또는 SDFS 기술들은 서로 다른 컴퓨팅 장치들 간의 디스크 데이터를 공유하기 위한 것으로, VMM 환경에서 적용하는 데 있어서, 데이터 카피의 오버헤드와 데이터의 완전성을 보장하지 못하는 문제점이 있다.
구체적으로, NFS의 경우 버퍼 캐시에서 미스(miss)가 난 경우 원격 노드의 버퍼 캐시를 검색하고 원격 캐시에서 히트(hit)된 경우 데이터를 로컬 노드로 네트워크를 통하여 이동시키는데, 이를 VMM 환경에 적용하게 되면 동일한 노드에서 서로 다른 운영체제(Operating System, 이하 'OS' 이라 함) 도메인 간의 데이터 카피를 일으키게 되는 문제가 발생한다.
또한, SDFS의 경우 노드들이 직접 디스크 드라이브에 액세스하는 것을 제어할 수가 없어서 디스크의 임의의 데이터를 덮어씀으로써 데이터 충돌(corruption)을 발생시킬 소지가 있다.
본 발명은 전술한 종래기술의 문제점을 극복하고자 안출된 것으로, 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 방법 및 시스템을 제공하는 데 목적이 있다.
본 발명의 기술적 과제를 달성하기 위한 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 방법은 소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받는 단계; 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하는 단계; 및 상기 판단 결과에 따라 상기 OS 도메인의 디스크 블록 액세스를 처리하는 단계를 포함한다.
본 발명의 다른 기술적 과제를 달성하기 위한 디스크 블록 액세스 처리 방법은 임의의 OS 도메인에서 디스크 블록의 액세스를 위해 디바이스 도메인에 상기 블록에 대한 액세스를 요청하는 단계; 상기 디바이스 도메인이 소정의 블록 테이블을 참조하여 다른 OS 도메인에 자신의 버퍼 캐시에 상기 블록을 캐시하고 있는지 검색을 요청하는 단계; 상기 검색 결과에 따라, 상기 디바이스 도메인이 가상 머신 모니터에 상기 OS 도메인과 상기 블록을 캐시하고 있는 OS 도메인 간에 상기 블록의 페이지를 공유하도록 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하는 단계; 및 상기 디바이스 도메인이 상기 블록의 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 단계를 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템은 소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아, 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 상기 판단 결과에 따라 상기 OS 도메인의 디 스크 블록 액세스를 처리하는 디바이스 도메인을 포함한다.
본 발명의 또 다른 기술적 과제를 달성하기 위한 상기 방법들을 컴퓨터상에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
본 발명의 세부 및 개선 사항들은 종속항에 개시된다.
이하, 첨부한 도면들을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다.
도 2는 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템의 개략적인 블록도이다.
도 2를 참조하면, 공유 시스템은 도메인 0(200), 디바이스 도메인(210), 도메인 1(220), 가상 머신 모니터(230) 및 디스크 드라이브(240)가 도시되어 있다.
도메인 0(200)과 도메인 1(220)은 각각의 서로 다른 운영체제 영역, 즉 OS 도메인을 의미하며, 예를 들면 도메인 0은 윈도우 운영체제이고, 도메인 1은 리눅스 운영체제인 경우를 의미한다. 편의상, 이하의 설명에서는 OS 도메인들을 도메인 0, 도메인 1로 표기하여 사용한다. 여기서 2개의 도메인이 도시되어 있지만, 운영체제의 종류와 수는 이에 한정되지 않는다.
또한, 각각의 도메인(200 및 220)은 버퍼 캐시(201 및 221)와 프론트-엔드 드라이버(Front-end driver)(202 및 222)를 포함한다. 여기서, 버퍼 캐시(201 및 221)는 디스크 버퍼링(disk buffering)을 위해 쓰이는 메모리를 의미하며, 대부분의 운영체제에서 사용하고 있으며, 그 용어에 한정되지 않는다.
프론트-엔드 드라이버(202 및 222)는 디바이스 도메인의 백-엔드 드라이버(213)와 짝을 이룬다. 여기서 프론트-엔드 드라이버(202 및 222)는 도메인들 사이에 공유되는 디바이스, 예를 들면 디스크 드라이브를 액세스하기 위해서, 디바이스 도메인의 백-엔드 드라이버(213)와 가상 머신 모니터(VMM)의 이벤트 채널을 통해 통신한다.
디바이스 도메인(210)은 도메인 0 및 도메인 1(200 및 220)로부터 디스크 입출력 요청 또는 블록 락 요청을 받아서 이를 처리한 후 결과를 리턴한다.
구체적으로, 도메인 0(200)으로부터 디스크 입출력을 요청을 받은 경우, 허용되지 않은 경우에 해당하는 디바이스 도메인(210)은 에러를 리턴한다. 허용된 디스크 입출력 요청일 경우 도메인 1(220)의 버퍼 캐시(221)에 존재하는지 확인을 먼저 하고, 없을 경우 직접 디스크 드라이브(240)에 액세스를 수행한다. 여기서, 직접 액세스를 수행하는 경우, 도메인 0(200)의 프론트-엔드 드라이버(202)가 디바이스 도메인(210)의 백-엔드 드라이버(202)와 가상 머신 모니터(230)의 이벤트 채널(231)을 통해 통신하고, 이를 기초로 디바이스 도메인(210)의 네이티브 드라이버(214)가 디스크 드라이브(240)를 액세스하여 디스크 입출력을 수행한다.
도메인 0(200) 및 도메인 1(220)로부터 디바이스 도메인(210)으로의 락 요청은 Get_Reader_Lock, Get_Exclusive_Writer_Lock, Put_Reader_Lock, Put_Exclusive_Writer_Lock, Downgrade_to_Reader_Lock, Upgrade_to_Exclusive_Writer_Lock 등이 있다. 예를 들면, Get_Reader_Lock은 도메인이 디스크의 블록을 읽을 수 있는 권한을 얻기 위한 요청이고, 락 요청시 디바 이스 도메인(210)은 블록 테이블(212)을 검색하여 해당 블록 테이블 엔트리를 찾는다. 여기서, 블록 테이블 엔트리는 블록의 허용 여부(permission)을 나타내는 필드를 포함하고 있는 데, 이를 참조하여 요청된 락을 허용할 수 있는지 확인한다. 허용 가능한 경우, 허용 여부 필드를 수정하여 블록 테이블 엔트리를 수정하고, 결과를 도메인에 리턴한다.
또한, 디바이스 도메인(210)은 희생 페이지 캐시(victim page cache, 211)를 포함한다. 예를 들면, 임의의 OS 도메인에서 페이지를 대체해야 할 경우, OS 도메인이 디바이스 도메인(210)에 블록 테이블의 재등록을 요청하고, 디바이스 도메인(210)은 희생 페이지 캐시(211)에 대체될 페이지를 할당하고, 할당된 희생 페이지 캐시로 대체될 페이지의 내용을 카피한다.
가상 머신 모니터(230)는 디스크 드라이브(240)를 여러 개의 OS 도메인, 즉 도메인 0(200)과 도메인 1(220)이 사용할 수 있도록 해준다.
일반적으로, 가상 머신 모니터(VMM)는 미들웨어 소프트웨어 층으로서, 여러 이질적인 게스트 OS가 공유하게끔 물리적 호스트 플랫폼 출입을 중재하는 것이다. 가상 머신 모니터(VMM)는 가상 플랫폼을 각 게스트 OS에 제공하여 가상 머신(VM)을 구성하게 한다. 또한, 플랫폼과 사용자 소프트웨어 환경 사이에서 가상 머신(VM)의 생성, 소멸, 이식 등을 관리한다.
여기서, 가상 머신 모니터(230)는 이벤트 채널(231 및 232)을 제공하여 각각의 도메인들(200 및 220)의 프론트-엔드 드라이버(202 및 222)와 디바이스 도메인(210)의 백 엔드 드라이버(213)가 통신할 수 있도록 한다. 또한, 가상 머신 모 니터(230)는 각각의 도메인들(200 및 220)의 메모리의 물리적 페이지를 관리하는데, 예를 들면 메모리 관리 유닛(MMU)을 통해 페이지 테이블을 관리한다. MMU는 가상 메모리 시스템을 관리하는 하드웨어 요소이며, MMU는 가상 메모리를 실제 메모리로 사상시키는데 필요한 표를 유지할 수 있도록 소량의 메모리를 가진다.
도 3은 도 2에 도시된 블록 테이블(212)의 엔트리 구성을 설명하기 위한 도면이다.
도 3을 참조하면, 블록 테이블 엔트리는 락 타입(Lock type, 300), 락 홀더(Lock holders, 310), 홈 노드(Home node, 320) 및 페이지 주소(Page address, 330)를 포함한다.
락 타입(300)은 블록 공유 상태를 나타낸다. 여기서 블록의 공유 상태는, 아이들(Idle), 멀티플 리더(Multiple Reader) 또는 배타적 라이터(Exclusive Writer)를 포함하며, 바람직하게 1 바이트로 표현할 수 있다. 여기서, 아이들은 해당 블록이 아직 어느 도메인에 의해서도 사용되고 있지 않은 경우이고, 멀티플 리더는 여러 개의 도메인에 해당 블록에 대한 읽기 권한이 설정되어 있는 경우이며, 배타적 라이터는 특정 도메인에만 해당 블록에 대한 쓰기 권한이 설정되어 있는 경우를 의미한다. 이와 같이 함으로써, 디스크 드라이브 블록의 데이터 일관성을 유지할 수 있다.
더 구체적으로, 본 발명에 따른 바람직한 실시 예에서, 블록 락은 멀티플 리더 싱글 라이터 시맨틱(Multiple reader single writer semantics)을 구현한다. 즉, read only permission은 동시에 여러 도메인이 가질 수 있으나, write 권한이 필요한 경우에는 배타적 카피(exclusive copy)만을 남기고 나머지는 무효화(invalidate) 시키도록 한다.
Read only permission을 갖는 블록의 실제 데이터는 특정 도메인의 버퍼 캐시에만 존재하고, 나머지 도메인들은 이 버퍼 캐시를 공유메모리로 접근한다.
락 홀더(310)는 블록 락을 소유하고 있는 도메인을 가리키는 비트 필드를 나타낸다. 즉, 블록의 접근 권한을 가진 도메인들을 표시하는 비트 필드를 나타내며, 바람직하게, 4 바이트로 표현할 수 있다. 예를 들면, 0부터 31까지의 도메인id를 표현할 수 있으며, 비트가 '1'이면, 해당 비트 포지션에 대응하는 도메인 id를 갖는 도메인이 블록의 접근 권한을 가진다는 것을 의미한다.
홈 노드(320)는 캐시 페이지를 소유하고 있는 노드의 도메인 아이디를 나타내며, 바람직하게, 1 바이트로 표현할 수 있다.
페이지 주소(330)는 캐시 페이지의 물리적 페이지 주소를 나타내며, 바람직하게 4 또는 8 바이트로 표현할 수 있다.
도 4는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 히트(hit)한 경우의 신호 흐름도를 도시한다.
도메인 0(400)의 로컬 버퍼 캐시에서 미스(miss)가 난 경우, 도메인 0(400)은 디바이스 도메인(410)으로 해당 블록에 대한 읽기 요청을 한다. 디바이스 도메인(410)은 블록 테이블을 참조하여, 도메인 0(400)의 블록 액세스 허용 여부를 검사한다. 여기서, 블록 테이블의 락 타입 정보를 고려한다. 즉, 해당 블록의 현재 상태가 아이들(idle)인지, 멀티플 리더(multiple reader)인지, 배타적 라이 터(exclusive writer) 상태인지 등을 검사한다. 해당 블록에 대한 액세스가 허용되지 않는 경우에는 에러를 리턴하고, 허용되는 경우라면, 블록 테이블의 홈 노드를 검사하여, 홈 노드 정보가 도메인 1(420)로 되어 있다면, 현재 해당 블록을 도메인 1(420)이 캐시하고 있다고 추정할 수 있다. 따라서, 디바이스 도메인(410)은 도메인 1(420)에 자신의 버퍼 캐시에 대한 테스트와 해당 블록이 발견된다면 해당 블록의 페이지를 유지(Pin)를 요청한다. 도메인 1(420)이 자신의 버퍼 캐시를 검사하여 해당 블록이 존재하지 않는 경우에는 에러를 리턴하고, 존재하는 경우에는 해당 블록의 페이지를 유지하고, 결과를 디바이스 도메인(410)에 리턴한다.
디바이스 도메인(410)은 도메인 0(400)과 도메인 1(420) 사이에 페이지를 공유하도록 가상 머신 모니터(430)에 페이지 테이블 업데이트를 요청한다. 여기서, 디바이스 도메인(410)에서 가신 머신 모니터(430)으로의 하이퍼콜(hupercall)이 노드 간에 페이지 공유를 위한 페이지 테이블을 업데이트하라는 요청에 이용된다. 가상 머신 모니터(430)는 도메인 0(400)의 페이지 테이블을 업데이트하고, 공유된 페이지의 물리적 페이지 주소를 디바이스 도메인(410)에 리턴하면서 디바이스 도메인에 페이지를 공유하도록 준비요청을 한다. 이어 디바이스 도메인(410)은 도메인 0(400)에 공유 페이지 주소를 리턴하고, 도메인 0(400)은 공유 페이지(shared page)를 읽는다.
도 5는 본 발명의 또 다른 실시 예에 따른, 리모트 캐시에서 해당 블록이 미스(miss)된 경우의 신호 흐름도를 도시한다.
도메인 0(500)의 로컬 버퍼 캐시에서 미스(miss)가 난 경우, 도메인 0(500) 은 디바이스 도메인(510)으로 해당 블록에 대한 읽기 요청을 한다. 디바이스 도메인(510)은 블록 테이블을 참조하여, 도메인 0(500)의 블록 액세스 허용 여부를 검사한다. 여기서, 블록 테이블의 락 타입 정보를 고려한다. 즉, 해당 블록의 현재 상태가 아이들(idle)인지, 멀티플 리더(multiple reader)인지, 배타적 라이터(exclusive writer) 상태인지 등을 검사한다. 해당 블록에 대한 액세스가 허용되지 않는 경우에는 에러를 리턴하고, 허용되는 경우라면, 블록 테이블의 홈 노드를 검사하여, 홈 노드 정보가 도메인 1(520)로 되어 있다면, 현재 해당 블록을 도메인 1(520)이 캐시하고 있다고 추정할 수 있다. 따라서, 디바이스 도메인(510)은 도메인 1(520)에 자신의 버퍼 캐시에 대한 테스트와 해당 블록이 발견된다면 해당 블록의 페이지를 유지(pin)를 요청한다. 도메인 1(520)에서 해당 블록이 버퍼 캐시에 저장되어 있지 않은 경우, 즉 해당 블록에 리모트 캐시에서 미스된 경우, 도메인 1(520)은 발견되지 않았음을 통보한다.
디바이스 도메인(510)은 디스크 드라이브(530)에 디스크 입출력을 요청한다. 여기서, 디바이스 도메인(510)의 네이티브 드라이버를 통해 디스크 드라이브(530)에 액세스한다. 그리고, 디바이스 도메인(510)은 디스크 드라이브에서 해당 블록의 데이터가 준비될 때까지 대기한다. 디스크 드라이브(530)는 도메인 0(500)의 페이지에 해당 블록의 데이터를 복사한다. 이어, 디바이스 도메인(510)에 해당 블록의 데이터가 준비되었음을 통보한다. 디바이스 도메인(510)은 블록 테이블 엔트리에서 홈 노드 정보를 도메인 0(500)으로 수정한다. 따라서, 현재 해당 블록은 도메인 0(500)이 소유하고 있는 것으로 수정된다. 이와 같이 디스크 블록에 직접 액세스가 일어날 경우에는 블록 테이블에 해당 노드 정보가 홈 노드로서 기록되고, 해당 페이지 주소도 등록된다. 등록되는 페이지는 유일한 캐시 카피를 의미한다. 이어, 디바이스 도메인(510)은 도메인 0(500)에 읽기 완료를 통보하고, 도메인 0(500)은 해당 블록의 페이지를 읽는다.
도 6은 본 발명의 또 다른 실시 예에 따른 홈 이동(home migration)을 설명하기 위한 신호 흐름도를 도시한다.
도 6을 참조하면, 도메인 1(620)에서 디바이스 도메인(610)에 홈 이동 요청을 한다. 즉 블록의 페이지 대체(page replace)가 필요한 경우 도메인이 디바이스 도메인에 블록 테이블의 재등록을 요청한다. 디바이스 도메인(610)이 빈 페이지(free page)를 가진다면, 가상 머신 모니터(630)에 페이지 교환을 요청한다. 반면에, 희생 페이지 캐시에 이용 가능한 페이지가 없는 경우, 하나의 페이지를 대체한다. 여기서, 희생 페이지 캐시는 디스크 내용과 동일하다는 것을 보장한다. 따라서, 대체하는 경우에 데이터 플러쉬(data flush)를 수행하지 않는다. 가상 머신 모니터(640)는 페이지 교환을 위해 페이지 테이블을 업데이트하고, 디바이스 도메인(610)으로 확인 통보한다. 디바이스 도메인(610)은 해당 페이지를 희생 페이지 캐시(victim page cache)에 저장하고, 블록 테이블 엔트리의 홈 노드를 디바이스 도메인으로 수정한다.
이어, 도메인 0(600)으로부터 블록 읽기 요청이 있는 경우, 디바이스 도메인(610)은 블록 액세스 허용 여부를 검사하고, 해당 블록의 홈 노드가 디바이스 도메인으로 되어있으므로, 디바이스 도메인(610)의 희생 페이지 캐시를 검색한다. 디바이스 도메인(610)은 가상 머신 모니터(630)에 페이지 교환 요청을 하고, 가상 머신 모니터(630)는 페이지 교환을 위해 페이지 테이블을 업데이트하고, 이를 통보한다.
디바이스 도메인(610)은 해당 페이지를 희생 페이지 캐시에서 제거하고, 도메인 0(600)에 준 페이지를 빈 페이지 풀(free page pool)에 추가한다. 그리고, 블록 테이블 엔트리의 홈 노드를 도메인 0(600)으로 수정하고, 해당 페이지의 주소를 도메인 0(600)에 리턴한다.
도 7은 본 발명의 또 다른 실시 예에 따른 블록 락을 설명하기 위한 신호 흐름도를 도시한다.
먼저, 블록 락의 상태는 아이들(Idle), 멀티플 리더(Multiple Reader), 배타적 라이터(Exclusive writer)를 포함한다. 여기서, ㅂ블록 락은 멀티플 리더 싱글 라이터 시맨틱(Multiple reader single writer semantics)을 구현한다. 즉, 읽기 권한만의 허용 여부(read only permission)는 동시에 여러 도메인이 가질 수 있으나, 쓰기 권한이 필요한 경우에는 배타적 카피만을 남기고 나머지는 무효화(invalidate)한다. 읽기 권한만을 갖는 블록의 실제 데이터는 특정 도메인의 버퍼 캐시에만 존재하고, 나머지 도메인들은 이 버퍼 캐시를 공유메모리로 접근한다.
디바이스 도메인으로 블록 락 요청은 Get_Reader_LocK, Get_Exclusive_Writer_Lock, Put_Reader_Lock, Put_Exclusive_Writer_Lock, Downgrade_to_Reader_Lock, Upgrade_to_Exclusive_Writer_Lock을 포함한다. 락 요청 시 디바이스 도메인은 블록 테이블을 검색하여 해당 블록 테이블 엔트리를 찾는 다. 블록 테이블 엔트리는 블록의 허용 여부(permission)을 나타내는 필드를 포함하고 있는 데, 이를 참조하여 요청된 락을 허용할 수 있는지 확인한다. 허용가능한 경우 허용 여부 필드를 수정하여 블록 테이블 엔트리를 수정하고, 결과를 OS 도메인에 리턴한다.
도 7을 참조하여 설명하면, 도메인 1(720)이 리더 락(Get_Reader_Lock)이 필요한 경우, 디바이스 도메인(710)에 블록 락을 요청한다. 디바이스 도메인(710)은 블록 테이블을 검색하여 현재 해당 블록의 상태가 아이들(Idle) 상태인 경우, 도메인 1(720)에 확인을 통보한다. 이어, 도메인 0(700)이 리더 락이 필요한 경우, 디바이스 도메인(710)에 블록 락을 요청한다. 디바이스 도메인(710)은 블록 테이블을 검색하여 현재 해당 블록의 상태가 멀티플 리더(Multiple Reader) 상태인 것을 확인하고, 도메인 0(700)에 확인을 통보한다.
이어, 도메인 0(700)이 라이터 락이 필요한 경우, 디바이스 도메인(710)에 현재의 도메인 0의 허용 가능 상태인 멀티플 리더 상태를 배타적 라이터 상태로 락 업그레이드 요청(Upgrade_to_Exclusive_Writer_Lock)을 한다. 이어, 디바이스 도메인(710)은 현재 해당 블록에 대한 허용 여부를 리더 상태로 가지고 있는 도메인 1(720)에 언락(unlock) 요청을 하고, 도메인 1(710)로부터 확인 통보를 받은 경우, 해당 블록을 배타적 라이터로 수정하고, 도메인 0(700)에 확인 통보를 한다.
이후에, 도메인 1(720)이 다시 리더 락이 필요한 경우, 디바이스 도메인(710)에 블록 락을 요청한다. 이어, 디바이스 도메인(710)은 해당 블록에 대한 배탁적 라이터 권한을 가지는 도메인 0(700)에 다운그레이드 요 청(Downgrade_to_Reader_Lock)을 한다. 이러한 다운그레이드 요청을 받은 도메인 0(700)은 선택적으로 버퍼 캐시에 저장되어 있는 해당 블록을 디스크 드라이브로 플러쉬할 수도 있다. 이어, 도메인 0(700)은 디바이스 도메인(710)에 확인 통보를 하면, 디바이스 도메인(710)은 블록 테이블 엔트리에서 블록 락 타입을 멀티플 리더 상태로 수정하고, 도메인 1(720)에 확인 통보를 한다.
이러한 과정들을 수행함으로써, 디바이스 도메인(710)의 제어하에 디스크 드라이브 블록의 데이터 일관성을 유지할 수 있다.
한편 본 발명은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
이제까지 본 발명에 대하여 바람직한 실시 예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 그러므로 상기 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.
본 발명에 따른 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아 OS 도메인의 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 판단 결과에 따라 OS 도메인의 디스크 블록 액세스를 처리함으로써, 가상 머신 모니터(VMM) 환경에서 메모리 액세스 제어를 통하여 데이터 카피 없이 OS 도메인 간의 캐시를 공유할 수 있어서 성능이 뛰어나다.
또한, 디스크 드라이브에 대한 액세스 제어를 디바이스 도메인에서 수행함으로써 데이터 충돌을 막을 수 있는 효과가 있다.

Claims (20)

  1. 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 방법으로서,
    (a) 소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받는 단계;
    (b) 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하는 단계; 및
    (c) 상기 판단 결과에 따라 상기 OS 도메인의 디스크 블록 액세스를 처리하는 단계를 포함하고,
    상기 판단 결과에 따라, 다른 OS 도메인의 버퍼 캐시에 저장된 디스크 블록을 상기 OS 도메인과 공유시키는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 블록 테이블은,
    상기 디스크 블록에 대해 캐시된 페이지(cached page)를 소유하고 있는 노드의 OS 도메인을 나타내는 홈 노드를 포함하고,
    상기 (c) 단계는,
    상기 홈 노드에 상응하는 OS 도메인에 자신의 버퍼 캐시를 테스트하도록 요청하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  4. 제 3 항에 있어서,
    상기 테스트 결과, 상기 디스크 블록이 상기 홈 노드에 상응하는 OS 도메인에 캐시되어 있는 경우,
    상기 (c) 단계는,
    상기 OS 도메인과 상기 홈 노드에 상응하는 OS 도메인 사이에 상기 디스크 블록에 대한 페이지를 공유하도록, 상기 가상 머신 모니터에 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하는 단계; 및
    상기 페이지 테이블의 업데이트에 따라 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 단계를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  5. 제 1 항에 있어서,
    상기 판단 결과, 상기 디스크 블록이 다른 OS 도메인에 캐시되어 있지 않은 경우,
    상기 (c) 단계는,
    디스크 드라이브에 액세스하여 상기 디스크 드라이브가 상기 블록의 데이터 를 상기 OS 도메인의 페이지에 복사하도록 하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  6. 제 5 항에 있어서,
    상기 디스크 드라이브에 네이티브 드라이버(Native Driver)를 이용하여 액세스하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  7. 제 1 항에 있어서,
    상기 블록 테이블은,
    상기 디스크 블록의 공유 상태를 나타내는 락 타입(Lock Type)을 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  8. 제 7 항에 있어서,
    상기 락 타입은,
    아이들(Idle), 멀티플 리더(Multiple Reader) 및 배타적 라이터(Exclusive Writer)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  9. 제 1 항에 있어서,
    상기 블록 테이블은,
    상기 블록에 대한 액세스 권한을 가진 OS 도메인들을 나타내는 락 홀더(Lock Holder)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  10. 제 1 항에 있어서,
    상기 블록 테이블은,
    상기 디스크 블록의 락 타입(Lock type), 락 홀더(Lock holder), 홈 노드(Home node) 및 페이지 주소(page address)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  11. 제 1 항에 있어서,
    상기 액세스 요청은,
    상기 디스크 블록에 대한 읽기(read)/쓰기(write) 권한 요청인 것을 특징으로 하는 디스크 블록 액세스 처리 방법.
  12. 임의의 OS 도메인에서 디스크 블록의 액세스를 위해 디바이스 도메인에 상기 블록에 대한 액세스를 요청하는 단계;
    상기 디바이스 도메인이 소정의 블록 테이블을 참조하여 다른 OS 도메인에 자신의 버퍼 캐시에 상기 블록을 캐시하고 있는지 검색을 요청하는 단계;
    상기 검색 결과에 따라, 상기 디바이스 도메인이 가상 머신 모니터에 상기 OS 도메인과 상기 블록을 캐시하고 있는 OS 도메인 간에 상기 블록의 페이지를 공유하도록 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하는 단계; 및
    상기 디바이스 도메인이 상기 블록의 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 단계를 포함하는 디스크 블록 액세스 처리 방법.
  13. 제 1 항, 제 3 항 내지 제 12 항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체.
  14. 가상 머신 모니터상에 적어도 하나 이상의 OS 도메인이 실행되는 환경에서, OS 도메인이 디스크 블록을 액세스하도록 처리하는 시스템으로서,
    상기 시스템은,
    소정의 OS 도메인으로부터 디스크 블록에 대한 액세스 요청을 받아, 상기 OS 도메인의 상기 디스크 블록에 대한 액세스 허용 여부를 소정의 블록 테이블을 참조하여 판단하고, 상기 판단 결과에 따라 상기 OS 도메인의 디스크 블록 액세스를 처리하는 디바이스 도메인을 포함하고,
    상기 디바이스 도메인은,
    상기 디스크 블록이 다른 OS 도메인에 캐시되어 있는 경우,
    상기 디스크 블록에 대한 페이지를 공유하도록, 상기 가상 머신 모니터에 상기 OS 도메인의 페이지 테이블의 업데이트를 요청하고, 상기 페이지 테이블의 업데이트에 따라 공유된 페이지 주소를 상기 OS 도메인에 리턴하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
  15. 제 14 항에 있어서,
    상기 디바이스 도메인은,
    상기 디스크 블록의 락 타입(Lock type), 락 홀더(Lock holder), 홈 노드(Home node) 및 페이지 주소(page address) 중 적어도 하나 이상을 포함하는 블록 테이블을 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
  16. 삭제
  17. 제 14 항에 있어서,
    상기 디바이스 도메인은,
    상기 디스크 블록이 다른 OS 도메인에 캐시되어 있지 않은 경우,
    디스크 드라이브에 액세스하여 상기 디스크 드라이브가 상기 블록의 데이터를 상기 OS 도메인의 페이지에 복사하도록 하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
  18. 제 14 항에 있어서,
    상기 디바이스 도메인은,
    상기 OS 도메인의 프론트 엔드 드라이버(front-end driver)와 상기 가상 머신 모니터의 이벤트 채널을 통해 통신하는 백 엔드 드라이버(back-end driver); 및
    디스크 드라이브에 액세스하는 네이티브 드라이버(native driver)를 포함하 는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
  19. 제 14 항에 있어서,
    상기 디바이스 도메인은,
    임의의 OS 도메인으로부터 대체될 페이지의 데이터를 카피하는 희생 페이지 캐시(Victim page cache)를 포함하는 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
  20. 제 14 항에 있어서,
    상기 액세스 요청은,
    상기 디스크 블록에 대한 읽기(read)/쓰기(write) 권한 요청인 것을 특징으로 하는 디스크 블록 액세스 처리 시스템.
KR1020070027804A 2007-03-21 2007-03-21 디스크 블록 액세스 처리 방법 및 시스템 KR101321369B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070027804A KR101321369B1 (ko) 2007-03-21 2007-03-21 디스크 블록 액세스 처리 방법 및 시스템
US12/053,246 US8335903B2 (en) 2007-03-21 2008-03-21 Method and system for processing access to disk block

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070027804A KR101321369B1 (ko) 2007-03-21 2007-03-21 디스크 블록 액세스 처리 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20080086108A KR20080086108A (ko) 2008-09-25
KR101321369B1 true KR101321369B1 (ko) 2013-10-28

Family

ID=39775889

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070027804A KR101321369B1 (ko) 2007-03-21 2007-03-21 디스크 블록 액세스 처리 방법 및 시스템

Country Status (2)

Country Link
US (1) US8335903B2 (ko)
KR (1) KR101321369B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110094764A (ko) * 2010-02-17 2011-08-24 삼성전자주식회사 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법
CN102063585A (zh) * 2010-10-29 2011-05-18 华南理工大学 一种基于Xen的安全的虚拟磁盘的访问控制方法
US9015436B2 (en) * 2011-08-22 2015-04-21 Intel Corporation Performing an atomic operation without quiescing an interconnect structure
KR101751936B1 (ko) * 2011-12-15 2017-07-12 한국전자통신연구원 호스트 기반 단말 가상화 환경에서 공유 메모리를 이용한 입출력 디바이스 가상화 장치 및 방법
US9798695B2 (en) * 2012-08-07 2017-10-24 Nokia Technologies Oy Access control for wireless memory
US9405689B2 (en) 2012-11-19 2016-08-02 Marvell World Trade Ltd. Locally caching data from a shared storage
US10795824B2 (en) * 2018-11-21 2020-10-06 International Business Machines Corporation Speculative data return concurrent to an exclusive invalidate request
US11880605B2 (en) * 2022-02-15 2024-01-23 Netapp, Inc. Managing ephemeral storage of a virtual machine to provide victim caches for use by virtual storage appliances in a cloud environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0713823A (ja) * 1993-06-24 1995-01-17 Nec Corp 仮想計算機システムにおけるファイル資源管理方式
JP2002358205A (ja) * 2001-06-01 2002-12-13 Dainippon Printing Co Ltd 複数のプラットホームを備えた携帯可能情報処理装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043876A (en) * 1988-05-27 1991-08-27 International Business Machines Corporation N-level file shadowing and recovery in a shared file system
US5889952A (en) * 1996-08-14 1999-03-30 Microsoft Corporation Access check system utilizing cached access permissions
US5974424A (en) * 1997-07-11 1999-10-26 International Business Machines Corporation Parallel file system and method with a metadata node
US6073216A (en) * 1997-11-25 2000-06-06 Intel Corporation System and method for reliable system shutdown after coherency corruption
JP2001249846A (ja) * 2000-03-03 2001-09-14 Hitachi Ltd キャッシュメモリ装置及びデータ処理システム
KR100349658B1 (ko) 2000-12-04 2002-08-24 한국전자통신연구원 분산 가상환경을 위한 실시간 상태관리 서버와 그의공유공간 상태정보 관리방법
KR20030041277A (ko) 2001-11-19 2003-05-27 김남준 가상 데이터베이스를 이용한 이아이피 솔루션 제공방법
US20030154236A1 (en) * 2002-01-22 2003-08-14 Shaul Dar Database Switch enabling a database area network
JP4241911B2 (ja) * 2002-03-28 2009-03-18 株式会社日立製作所 情報処理システム
US7143412B2 (en) * 2002-07-25 2006-11-28 Hewlett-Packard Development Company, L.P. Method and apparatus for optimizing performance in a multi-processing system
US20040122917A1 (en) * 2002-12-18 2004-06-24 Menon Jaishankar Moothedath Distributed storage system for data-sharing among client computers running defferent operating system types
KR20040073630A (ko) 2003-02-14 2004-08-21 주식회사 케이티 Cdn 서비스 제공자간 컨텐츠 공유시스템 및 방법
JP2005070965A (ja) 2003-08-21 2005-03-17 Fujitsu Ltd 情報処理方法、情報処理システム及び情報処理装置
KR20050102522A (ko) 2004-04-22 2005-10-26 (주)넥스트 링크 단말-대-단말을 기반으로 한 멀티미디어 콘텐츠 제공시스템 및 그 방법
KR20050114028A (ko) 2004-05-31 2005-12-05 정보통신연구진흥원 San 파일시스템을 위한 협력 캐시 장치 및 방법
US8205046B2 (en) * 2005-01-31 2012-06-19 Hewlett-Packard Development Company, L.P. System and method for snooping cache information using a directory crossbar
US7578623B2 (en) * 2006-08-21 2009-08-25 Intel Corporation Aligning lens carriers and ferrules with alignment frames

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0713823A (ja) * 1993-06-24 1995-01-17 Nec Corp 仮想計算機システムにおけるファイル資源管理方式
JP2002358205A (ja) * 2001-06-01 2002-12-13 Dainippon Printing Co Ltd 複数のプラットホームを備えた携帯可能情報処理装置

Also Published As

Publication number Publication date
US20080235474A1 (en) 2008-09-25
US8335903B2 (en) 2012-12-18
KR20080086108A (ko) 2008-09-25

Similar Documents

Publication Publication Date Title
KR101321369B1 (ko) 디스크 블록 액세스 처리 방법 및 시스템
JP3102495B2 (ja) 仮想記憶管理方法
US7085909B2 (en) Method, system and computer program product for implementing copy-on-write of a file
US10540279B2 (en) Server-based persistence management in user space
JP5038907B2 (ja) 仮想マシン環境のアドレス変換をサポートするための方法と装置
US9547600B2 (en) Method and system for restoring consumed memory after memory consolidation
JP4237190B2 (ja) 仮想マシン環境内でのゲスト物理アドレスの仮想化の方法およびシステム
US7975018B2 (en) Systems and methods for providing distributed cache coherence
US8996807B2 (en) Systems and methods for a multi-level cache
KR101845110B1 (ko) 분산 캐쉬 일관성 프로토콜
US20160239223A9 (en) Systems and methods for a file-level cache
US20100299667A1 (en) Shortcut input/output in virtual machine systems
US20120324181A1 (en) Detecting and suppressing redundant input-output operations
EP2278463A1 (en) A method and apparatus for supporting address translation in a multiprocessor virtual machine environment
US7743209B2 (en) Storage system for virtualizing control memory
CN113906399A (zh) 基于连接带宽节制存储器即服务
US8898413B2 (en) Point-in-time copying of virtual storage
US20160266842A1 (en) Multi-level snapshot caching
JP2024513734A (ja) 入出力デバイスによってアクセス可能なメモリのページの移行
WO2013023090A2 (en) Systems and methods for a file-level cache
KR20230123985A (ko) 입력-출력 디바이스에 의해 액세스가능한 메모리의페이지의 이송
US10691478B2 (en) Migrating virtual machine across datacenters by transferring data chunks and metadata
US8892838B2 (en) Point-in-time copying of virtual storage and point-in-time dumping
JP2004246702A (ja) 計算機システム、計算機装置、計算機システムにおけるデータアクセス方法及びプログラム
US20230229609A1 (en) Iommu-based direct memory access (dma) tracking for enabling live migration of virtual machines (vms) using passthrough physical devices

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170927

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee