KR101648725B1 - Ssd를 이용한 메모리 관리 방법 - Google Patents

Ssd를 이용한 메모리 관리 방법 Download PDF

Info

Publication number
KR101648725B1
KR101648725B1 KR1020150083887A KR20150083887A KR101648725B1 KR 101648725 B1 KR101648725 B1 KR 101648725B1 KR 1020150083887 A KR1020150083887 A KR 1020150083887A KR 20150083887 A KR20150083887 A KR 20150083887A KR 101648725 B1 KR101648725 B1 KR 101648725B1
Authority
KR
South Korea
Prior art keywords
page
ssd
cache
data
memory management
Prior art date
Application number
KR1020150083887A
Other languages
English (en)
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 KR1020150083887A priority Critical patent/KR101648725B1/ko
Application granted granted Critical
Publication of KR101648725B1 publication Critical patent/KR101648725B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 SSD를 이용한 메모리 관리 방법에 관한 것이다. 본 발명의 제 1 측면에 따르면 메모리 관리 시스템이, SSD (Solid State Drive)를 SSD 희생 캐시로서 이용하여 메모리를 관리하는 방법으로서, 슈도-LRU에 기초하여 희생 페이지를 선정하는 단계, 스왑 캐시를 생성하는 단계, 및 상기 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정하는 단계를 포함할 수 있다.

Description

SSD를 이용한 메모리 관리 방법{METHOD FOR MANAGING MEMORY USING SSD}
본 발명은 SSD를 이용한 메모리 관리 방법에 관한 것으로, 보다 상세하게는 주 기억 장치의 희생 캐시로서 SSD를 활용하여 메모리를 관리하는 방법에 관한 것이다.
도 1은, 종래의 메모리 관리 방법을 설명하기 위한 블록도이다. 즉 도 1은 종래의 리눅스 커널의 스토리지 스택(storage stack)의 블록도를 도시한 것이다.
즉 기존 리눅스 커널의 경우, 페이지는 맵핑 페이지(mapped page) 및 익명 페이지(anonymous page)로 나누어진다. 여기서 ‘맵핑 페이지’는 실제 파일과 관련이 있는 모든 페이지를 지칭하며, ‘익명 페이지’는 프로세스들의 주소공간에 맵핑되는 페이지를 지칭한다. 시스템의 메모리가 부족할 경우, 익명 페이지는 스왑(swap) 영역에 스왑-아웃(swapped-out)되며, 맵핑 페이지는 페이지의 상태가 더티(dirty)인 경우 하드디스크에 플러시(flush)되고 이빅트(evict)되며, 페이지의 상태가 클린(clean)인 경우 단순 이빅트된다. 상술된 바에 따른 종래의 메모리 관리 방법은, OS 레이어가 영구적인 보조기억장치로서 하드디스크만을 가정하기 때문에 수행되는 방법이다.
즉 종래의 메모리 관리 방법은 익명 페이지만을 스왑하기 때문에 효율적이지 못하다는 문제점이 있었다.
한편 SSD(solid-state drive)는 반도체를 이용하여 정보를 저장하는 장치로서 반도체 드라이브를 의미한다. 이와 같은 SSD는 하드디스크가 갖고 있는 문제, 예를 들어, 긴 탐색 시간, 반응 시간, 기계적 지연, 실패율을 크게 줄여 줄 수 있기 때문에 최근 널리 보급되어 활용되고 있다. 따라서 SSD를 이용하여 메모리를 효율적으로 관리할 수 있는 방법의 모색이 가능하다.
한편 선행기술문헌인 한국특허공개문헌 제 10-2014-013266호(발명의 명칭: 메모리 자원을 관리하는 전자 장치 및 그 제어 방법)에서는 전자 장치에 대해 제시하며, 상기 전자장치는, 적어도 하나의 어플리케이션을 실행하고 실행된 어플리케이션에서 생성되는 데이터를 저장하도록 제어하는 제어부, 및 적어도 하나의 제 1 종 어플리케이션에서 생성되는 데이터를 저장하도록 가상 분할된 제 1 분할 영역 및 적어도 하나의 제 2 종 어플리케이션에서 생성되는 데이터를 저장하도록 상기 제 1 분할 영역과 독립적으로 가상 분할된 제 2 분할 영역을 포함하는 메모리를 포함할 수 있음에 대해 기재하고 있으며, 또한 선행기술문헌에서는 전자장치의 저장부가 SSD가 될 수 있음에 대해 기재하고 있다. 그러나 선행기술문헌에서는, SSD를 이용하여 메모리를 보다 효율적으로 관리하는 방법에 대해서는 제시하고 있지 않다. 따라서 상술된 요구를 만족시킬 수 있는 기술의 모색이 필요하게 되었다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 발명의 일실시예는, SSD를 이용한 메모리 관리 방법을 제공하는 데에 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면에 따르면 메모리 관리 시스템이, SSD (Solid State Drive)를 SSD 희생 캐시로서 이용하여 메모리를 관리하는 방법으로서, 슈도-LRU에 기초하여 희생 페이지를 선정하는 단계, 스왑 캐시를 생성하는 단계, 및 상기 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정하는 단계를 포함할 수 있다.
본 발명의 제 2 측면에 따르면, 메모리 관리 방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한 기록매체로서, 상기 메모리 관리 방법은, 슈도-LRU에 기초하여 희생 페이지를 선정하는 단계, 스왑 캐시를 생성하는 단계, 및 상기 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정하는 단계를 포함할 수 있다.
본 발명의 제 3 측면에 따르면, 메모리 관리 시스템에 의해 수행되고 메모리 관리 방법을 수행하기 위해 기록매체에 저장된 컴퓨터 프로그램으로서 상기 메모리 관리 방법은, 슈도-LRU에 기초하여 희생 페이지를 선정하는 단계, 스왑 캐시를 생성하는 단계, 및 상기 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정하는 단계를 포함할 수 있다.
전술한 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일실시예는, SSD를 이용한 메모리 관리 방법을 제공할 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, SSD를 주 기억장치의 희생 캐시로 사용하는 메모리 관리 방법을 제공할 수 있다. 이를 통해 주 기억장치에서 쫓겨난 데이터를 SSD에 캐싱함으로써 차후 데이터가 다시 필요할 때 빠르게 주 기억장치에 데이터를 제공해 줄 수 있다.
그리고, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 맵핑 페이지를 익명 페이지처럼 취급하는 메모리 관리 방법을 제공할 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 최초로 하드디스크로부터 판독하는 경우를 제외하고, SSD에서 I/O를 처리가능한 메모리 관리 방법을 제공할 수 있다.
그리고, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 기존의 OS 경로를 거치지 않고 플래시 번역 레이어와 디바이스 드라이버를 통해 직접 SSD에 접근할 수 있는 메모리 관리 방법을 제공할 수 있다. 이를 통해 SSD의 성능을 극대화시킬 수 있다.
또한, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 하드디스크에 더티 페이지를 다시 기록하는 경우에는 기존의 OS 경로를 따라 블록 레이어 등을 거쳐 기록을 수행하는 메모리 관리 방법을 제공할 수 있다. 이를 통해 SSD의 가비지 컬렉션의 성능을 향상시킬 수 있다.
그리고, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 당장 필요하지 않다고 판단되는 데이터는 이미 하드디스크에 저장되어 있다는 가정하에 버리는 메모리 관리 방법을 제공할 수 있다. 이를 통해 가비지 컬렉션으로 인한 기록 성능 저하 문제를 최소화시킬 수 있다.
아울러, 본 발명의 과제 해결 수단 중 어느 하나에 의하면, 용량이 가득 찰수록 성능에 문제가 생기는 SSD의 특성을 고려하여 공격적으로 가바지 컬렉션을 수행하는 메모리 관리 방법을 제공할 수 있다. 즉 남아있는 블록의 수가 특정 임계값보다 작아지면, 더티 상태의 맵핑 페이지를 하드디스크에 비동기적(asynchronous)으로 다시 기록하게 하고, 클린 상태의 맵핑 페이지를 우선적으로 버림으로써 가비지 컬렉션의 성능을 높일 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 종래의 메모리 관리 방법을 설명하기 위한 블록도이다.
도 2는 본 발명의 일실시예에 따른 메모리 관리 시스템을 설명하기 위한 개략적인 블록도이다.
도 3은 본 발명의 일실시예에 따른 메모리 관리 방법을 설명하기 위한 순서도이다.
도 4는 본 발명의 일실시예에 따른 메모리 관리 방법을 설명하기 위한 예시도이다.
도 5 및 도 6은 본 발명의 또 다른 일실시예에 따른 메모리 관리 방법을 설명하기 위한 순서도이다.
도 7은 본 발명의 또 다른 일실시예에 따른 메모리 관리 방법을 설명하기 위한 예시도이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하 첨부된 도면을 참고하여 본 발명을 상세히 설명하기로 한다.
도 2는 본 발명의 일실시예에 따른 메모리 관리 시스템(20)을 설명하기 위한 개략적인 블록도이다.
도 2에서 도시된 바와 같이 메모리 관리 시스템(20)은 페이지선정부(210), 스왑캐시생성부(220), 페이지저장부(230), 데이터확인부(240), 스왑캐시판독부(250) 및 데이터반환부(260)를 포함한다.
본 발명의 일실시예에 따른 페이지선정부(210)는 메인 메모리에서 쫓겨날 페이지, 즉 희생 페이지를 선정한다.
이때 페이지선정부(210)는 슈도-LRU(Least Recently Used)에 기초하여, 맵핑 페이지 및 익명 페이지 중 적어도 하나를 희생 페이지로서 선정할 수 있다.
이와 관련하여 슈도-LRU는 캐시 대체 알고리즘으로서 LRU를 개선한 것이다. 슈도-LRU는 예를 들어, 아이템의 세트 및 상기 아이템으로의 접근 이벤트의 시퀀스가 주어졌을 때, 가장 최근에 가장 덜 접근된 아이템을 선택하여 폐기할 수 있는 알고리즘이다.
즉 페이지선정부(210)는 메인 메모리에서 쫓겨날 희생 페이지를 선택할 때 페이지의 종류나 상태를 따지지 않을 수 있고, 슈도-LRU를 이용하여 희생 페이지를 선정함으로써 잠정 구역성(temporal locality)을 극대화할 수 있다.
한편 스왑캐시생성부(220)는 스왑 캐시(swap cache)를 생성한다.
‘스왑 캐시’는 메모리에서 쫓겨난 페이지가 스왑 장치의 어느 위치에 저장되어 있는지를 유지하기 위해서 사용되는 내부 데이터 구조이다,
이때, 스왑-아웃된 페이지를 추적하기 위해 ‘스왑 캐시’가 이용되며, 특히 본 발명의 일실시예에 따른 메모리 관리 방법에서는 SSD 희생 캐시의 어느 위치에 데이터가 저장하는지를 확인하기 위해 이용된다.
반면 페이지저장부(230)는 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정한다.
또한 페이지저장부(230)는 희생 페이지를 SSD 희생 캐시로 스왑-아웃한다. 이에 SSD 희생 캐시에 희생 페이지가 저장될 수 있다.
아울러 페이지저장부(230)는 SSD 희생 캐시에 맵핑 페이지를 저장할 때 맵핑 페이지가 더티(dirty)한지 또는 클린(clean)한지 여부를 판단하지 않고 저장할 수 있다.
그리고 페이지저장부(230)는 SSD 희생 캐시에 익명 페이지를 저장할 때, 익명 페이지에 대한 프로세스가 실행 중이면 상기 익명 페이지의 상태를 더티 상태로 변경할 수 있고, 또한 상기 익명 페이지에 대한 프로세스가 실행 중이 아니면 상기 익명 페이지의 상태를 무효(invalid) 상태로 변경할 수 있다. 그리고 페이지저장부(230)는 상태가 변경된 익명 페이지를 저장할 수 있다.
한편 데이터확인부(240)는 요청 대상 데이터가 존재하는지 여부를 확인한다.
즉, 데이터확인부(240)는 맵핑 페이지로 접근하는 경우 페이지 캐시를 검색하여 요청되는 데이터가 존재하는지 여부를 확인할 수 있다.
또한 데이터확인부(240)는 익명 페이지로 접근하는 경우 요청되는 데이터가 메모리에 존재하는지 여부를 확인할 수 있다.
반면 스왑캐시판독부(250)는 스왑 캐시의 정보를 확인한다.
즉, 스왑캐시판독부(250)는 스왑 캐시를 판독하여 SSD 희생 캐시에서의 데이터의 저장 위치 정보를 확인할 수 있다.
한편 데이터반환부(260)는 요청된 데이터를 판독하여 반환한다.
이를 위해 데이터반환부(260)는 메모리에 존재하는 데이터를 판독하여 반환할 수 있다.
또한 데이터반환부(260)는 하드디스크에 존재하는 데이터를 판독하여 반환할 수 있으며, 추가적으로 페이지 캐시를 할당할 수 있다.
그리고 데이터반환부(260)는 SSD 희생 캐시로부터 데이터를 판독하여 반환할 수 있다.
상술된 바에 따른 각 구성요소, 즉 페이지선정부(210), 스왑캐시생성부(220), 페이지저장부(230), 데이터확인부(240), 스왑캐시판독부(250) 및 데이터반환부(260)는 도 4에서 도시된 바에 따른 스토리지 스택 전반에 걸쳐 구현될 수 있다. 예를 들어, 희생 페이지를 선정하는 페이지선정부(210), 스왑 캐시를 생성하는 스왑캐시생성부(220) 및 희생 페이지를 저장하는 페이지저장부(230)는 페이지 캐시(405)로 구현될 수 있다.
한편 도 3은 본 발명의 일실시예에 따른 메모리 관리 방법을 설명하기 위한 순서도이다. 아울러 도 5 및 도 6 또한 본 발명의 또 다른 일실시예에 따른 메모리 관리 방법을 설명하기 위한 순서도이다.
도 3, 도 5 및 도 6에 도시된 실시예에 따른 메모리 관리 방법은 도 2에 도시된 메모리 관리 시스템(20)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 2에 도시된 메모리 관리 시스템(20)에 관하여 이상에서 기술한 내용은 도 3, 도 5 및 도 6에 도시된 실시예에 따른 메모리 관리 방법에도 적용될 수 있다.
도 3에서 도시된 바와 같이, 메모리 관리 시스템(20)은 희생 페이지를 선정할 수 있다 (S310). 이때 메모리 관리 시스템(20)은 슈도-LRU에 기초하여 희생 페이지를 선정할 수 있다.
한편 메모리 관리 시스템(20)은 선정한 희생 페이지의 종류에 따라 희생 페이지의 회수 처리 요청 프로세스를 달리할 수 있다 (S320).
즉 희생 페이지가 맵핑 페이지이면, 메모리 관리 시스템(20)은 스왑 캐시를 생성하며 (S330), 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정할 수 있다 (S340). 그리고 메모리 관리 시스템(20)은 상기 결정된 위치의 SSD 희생 캐시에 맵핑 페이지를 저장할 수 있다 (S350).
한편 희생 페이지가 익명페이지이면 스왑 캐시를 생성하며 (S360), 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정할 수 있다 (S370). 그리고 메모리 관리 시스템(20)은 익명 페이지의 상태를 변경할 수 있다 (S380). 즉 메모리 관리 시스템(20)은, 익명 페이지에 대한 프로세스가 실행 중이면 상기 익명 페이지가 절대 버려지면 안되므로 익명 페이지의 상태를 더티 상태로 변경하며, 익명 페이지에 대한 프로세스가 실행 중이 아니면 익명 페이지는 더 이상 필요 없으므로 상기 익명 페이지의 상태를 무효 상태로 변경할 수 있다. 그리고 메모리 관리 시스템(20)은 상기 결정된 위치의 SSD 희생 캐시에 익명 페이지를 저장할 수 있다 (S390).
관련하여 도 4는 본 발명의 일실시예에 따른 메모리 관리 방법을 설명하기 위한 예시도로서 리눅스 커널의 스토리지 스택의 블록도를 도시한 것이다.
즉, 도 4에서 도시된 리눅스 커널의 스토리지 스택은, 파일시스템을 포함하는 가상 파일 시스템(virtual file system; VFS)(401), I/O스케줄러를 포함하는 블록 레이어(402), 블록 디바이스 드라이버(403), 블록 디바이스(404), 버퍼 캐시 및 스왑 캐시를 포함하는 페이지 캐시(405), 플래시 번역 레이어(flash translation layer; FTL) 및 디바이스 드라이버를 포함하는 희생 캐시 매니저(406) 및 SSD 희생 캐시(407)를 포함할 수 있다.
이때 페이지 캐시(405)는 희생 페이지를 선정하며, 스왑 캐시를 생성하고 희생 페이지를 이빅트시킬 수 있다. 또한 희생 캐시 매니저(406)는 주소 맵핑을 수행하고, 가비지 컬렉션(garbage collection)을 수행할 수 있다. 이때 희생 캐시 매니저(406)는 더티 맵핑 페이지를 블록 레이어(402)로 다시 기록(write-back)하고, 클린하거나 무효인 블록을 삭제함으로써 공격적으로 가비지 컬렉션을 수행할 수 있다.
이때 도 3의 순서도에 따라 본 발명의 일실시예에 메모리 관리 방법에 따라 수행하면, 도 4에 도시된 바와 같이, 페이지 회수 요청(410, 420)이 발생할 수 있다.
한편 메모리 관리 시스템(20)은 사용자로부터 데이터의 반환을 요청받을 수 있다.
즉, 도 5에서 도시된 바와 같이, 사용자가 파일의 특정 오프셋에 접근하는지 감지함으로써 메모리 관리 시스템(20)은 사용자가 맵핑 페이지로 접근하는지 여부를 판단할 수 있다 (S510).
맵핑 페이지로의 접근을 감지한 메모리 관리 시스템(20)은, 페이지 캐시에 기초하여 데이터의 존부를 판단할 수 있다 (S530). 예를 들어, 커널은 페이지 캐시를 검색하여 해당 데이터가 존재하는지 여부를 확인할 수 있다.
따라서 페이지 캐시에 데이터가 존재하지 않는다고 판단하면 메모리 관리 시스템(20)은, 페이지 캐시를 할당하고 하드디스크로부터 해당 파일의 오프셋을 판독함(S520)으로써 데이터를 반환할 수 있다 (S560).
한편 페이지 캐시에 데이터가 존재한다고 판단하면, 메모리 관리 시스템(20)은, SSD 희생 캐시에 데이터가 존재하는지 여부를 판단할 수 있다 (S540).
SSD 희생 캐시에 데이터가 존재한다면, 메모리 관리 시스템(20)은, 스왑 캐시를 판독하여 판독 대상이 되는 페이지가 위치하는 SSD 희생 캐시에서의 위치를 검색하고 (S550), 상기 SSD 희생 캐시로부터 데이터를 판독하여 상기 판독한 데이터를 반환할 수 있다 (S560).
반면 SSD 희생 캐시에 데이터가 존재하지 않는 경우 메모리 관리 시스템(20)은 메모리에 데이터가 존재한다고 판단하고 메모리로부터 데이터를 획득하여 반환할 수 있다 (S560).
한편 사용자가 맵핑 페이지로 접근하는 것이 아닌 경우, 즉, 익명 페이지로 접근하는 경우(S600), 도 6에서 도시된 바와 같이, 메모리 관리 시스템(20)은 요청되는 데이터가 메모리에 있는지 여부를 판단한다.
즉, 메모리 관리 시스템(20)은 익명 페이지가 스왑-아웃되었는지 여부를 판단하고 (S610), 판단결과 스왑-아웃되지 않았다면 메모리에서 데이터를 판독하여 반환할 수 있다 (S630).
그러나 판단결과 스왑-아웃되었다고 판단하면, 메모리 관리 시스템(20)은 스왑 캐시를 판독하여 SSD 희생 캐시에서의 데이터의 저장 위치 정보를 확인할 수 있다 (S620).
그리고 메모리 관리 시스템(20)은 상기 위치 정보에 기초하여 SSD 희생 캐시로부터 데이터를 판독하여 상기 판독한 데이터를 반환할 수 있다 (S630).
관련하여 도 7은 본 발명의 일실시예에 따른 메모리 관리 방법을 설명하기 위한 예시도로서 리눅스 커널의 스토리지 스택의 블록도를 도시한 것이다.
이때 도 5 및 도 6의 순서도에 따라 본 발명의 일실시예에 메모리 관리 방법에 따라 수행하면, 도 7에 도시된 바와 같이, 요청 대상 데이터가 페이지 캐시 내에 존재하는 경우 SSD 희생 캐시(407)에 접근함에 따른 데이터 요청 및 반환(710, 720, 730)이 발생할 수 있다. 또한 요청 대상 데이터가 페이지 캐시 내에 존재하지 않는 경우 하드디스크로 접근함에 따른 데이터 요청 및 반환(750, 760, 770, 780, 790)이 발생할 수 있다.
본 실시예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다
도 3, 도 4 및 도 6를 통해 설명된 실시예에 따른 메모리 관리 방법은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한 본 발명의 일실시예에 따르는 메모리 관리 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 본 발명의 일실시예에 따르는 메모리 관리 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
401: 가상 파일 시스템(virtual file system; VFS) 402: 블록 레이어
403: 블록 디바이스 드라이버 404: 블록 디바이스
405: 페이지 캐시 406: 희생 캐시 매니저
407: SSD 희생 캐시

Claims (9)

  1. 메모리 관리 시스템이, SSD (Solid State Drive)를 SSD 희생 캐시로서 이용하여 메모리를 관리하는 방법으로서,
    슈도-LRU(Least Recently Used)에 기초하여 희생 페이지를 선정하는 단계;
    스왑 캐시(swap cache)를 생성하는 단계;
    상기 희생 페이지가 저장될 SSD 희생 캐시의 위치를 결정하는 단계;
    상기 희생 페이지로 맵핑 페이지가 선정되면, 결정한 SSD 희생 캐시의 위치에 상기 맵핑 페이지를 저장하는 단계; 및
    상기 맵핑 페이지로의 접근이 감지되면, 상기 접근의 대상이 되는 데이터의 존부를 페이지 캐시에 기초하여 확인하는 단계를 포함하는, 메모리 관리 방법.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 메모리 관리 방법은,
    상기 희생 페이지로 익명 페이지(anonymous page)가 선정되면,상기 익명 페이지에 대한 프로세스가 실행 중이면 상기 익명 페이지의 상태를 더티(dirty) 상태로 변경하며, 상기 익명 페이지에 대한 프로세스가 실행 중이 아니면 상기 익명 페이지의 상태를 무효(invalid) 상태로 변경하며, 상기 결정한 SSD 희생 캐시의 위치에 상기 상태가 변경된 익명 페이지를 저장하는 단계를 더 포함하는, 메모리 관리 방법.
  4. 삭제
  5. 제 1 항에 있어서,
    상기 페이지 캐시에 기초하여 상기 접근 대상이 되는 데이터가 존재한다면, 상기 데이터가 SSD 희생 캐시에 존재하는지 여부를 판단하는 단계;
    상기 SSD 희생 캐시에 존재한다면 상기 스왑 캐시를 판독하여 상기 SSD 희생 캐시에서의 상기 데이터의 저장 위치 정보를 확인하는 단계; 및
    상기 SSD 희생 캐시에서의 데이터의 저장 위치 정보에 기초하여 데이터를 반환하는 단계를 더 포함하는, 메모리 관리 방법.
  6. 제 3 항에 있어서,
    상기 익명 페이지로의 접근이 감지되면, 상기 접근의 대상이 되는 데이터가 스왑-아웃(swap-out)되었는지 여부를 판단하는 단계를 더 포함하는, 메모리 관리 방법.
  7. 제 6 항에 있어서,
    상기 데이터가 스왑-아웃되었다면 상기 스왑 캐시를 판독하여 상기 SSD 희생 캐시에서의 상기 데이터의 저장 위치 정보를 확인하는 단계; 및
    상기 SSD 희생 캐시에서의 데이터의 저장 위치 정보에 기초하여 상기 데이터를 반환하는 단계를 더 포함하는, 메모리 관리 방법.
  8. 제 1 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독가능한 기록매체.
  9. 메모리 관리 시스템에 의해 수행되고 제 1 항에 기재된 방법을 수행하기 위해 기록매체에 저장된 컴퓨터 프로그램.
KR1020150083887A 2015-06-15 2015-06-15 Ssd를 이용한 메모리 관리 방법 KR101648725B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150083887A KR101648725B1 (ko) 2015-06-15 2015-06-15 Ssd를 이용한 메모리 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150083887A KR101648725B1 (ko) 2015-06-15 2015-06-15 Ssd를 이용한 메모리 관리 방법

Publications (1)

Publication Number Publication Date
KR101648725B1 true KR101648725B1 (ko) 2016-08-30

Family

ID=56886133

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150083887A KR101648725B1 (ko) 2015-06-15 2015-06-15 Ssd를 이용한 메모리 관리 방법

Country Status (1)

Country Link
KR (1) KR101648725B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8087652B2 (en) 2007-08-08 2012-01-03 Advanced Display Process Engineering Co., Ltd Substrate supporting apparatus
KR20210013870A (ko) * 2019-07-29 2021-02-08 에스케이하이닉스 주식회사 데이터 스왑을 위한 메모리 시스템 및 그 동작방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120074707A (ko) * 2010-12-28 2012-07-06 한양대학교 산학협력단 플래시 메모리를 사용하는 저장장치 및 주소 사상과 데이터 페이지 할당 방법
KR20140092493A (ko) * 2012-12-31 2014-07-24 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
US20150161056A1 (en) * 2013-12-10 2015-06-11 Vmware, Inc. Tracking guest memory characteristics for memory scheduling

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120074707A (ko) * 2010-12-28 2012-07-06 한양대학교 산학협력단 플래시 메모리를 사용하는 저장장치 및 주소 사상과 데이터 페이지 할당 방법
KR20140092493A (ko) * 2012-12-31 2014-07-24 고려대학교 산학협력단 가상화 시스템에서의 메모리 관리 방법
US20150161056A1 (en) * 2013-12-10 2015-06-11 Vmware, Inc. Tracking guest memory characteristics for memory scheduling

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8087652B2 (en) 2007-08-08 2012-01-03 Advanced Display Process Engineering Co., Ltd Substrate supporting apparatus
KR20210013870A (ko) * 2019-07-29 2021-02-08 에스케이하이닉스 주식회사 데이터 스왑을 위한 메모리 시스템 및 그 동작방법
KR102322727B1 (ko) 2019-07-29 2021-11-05 에스케이하이닉스 주식회사 데이터 스왑을 위한 메모리 시스템 및 그 동작방법

Similar Documents

Publication Publication Date Title
KR101480659B1 (ko) 2-레벨 시스템 메인 메모리
JP5592942B2 (ja) 仮想マシンシステムにおけるショートカット入出力
CN106547476B (zh) 用于数据存储系统的方法和装置
US20170024140A1 (en) Storage system and method for metadata management in non-volatile memory
US10310980B2 (en) Prefetch command optimization for tiered storage systems
US20120239860A1 (en) Apparatus, system, and method for persistent data management on a non-volatile storage media
US20140082310A1 (en) Method and apparatus of storage tier and cache management
US9053038B2 (en) Method and apparatus for efficient read cache operation
US8443141B2 (en) Intelligent write caching for sequential tracks
US20120102297A1 (en) Storing Corresponding Data Units in a Common Storage Unit
CN107797759B (zh) 访问缓存信息的方法、装置与驱动器
US8862819B2 (en) Log structure array
CN107797760B (zh) 一种访问缓存信息的方法、装置与固态驱动器
US20160188217A1 (en) Method for data placement in a memory based file system
KR20170087043A (ko) 저속 메모리를 이용하여 페이지 리맵핑 방식으로 바이트 어드레스 지정 능력 및 근-dram 성능을 달성하는 메커니즘
US10482033B2 (en) Method and device for controlling memory
US20160350003A1 (en) Memory system
CN103543955A (zh) 利用固态硬盘作为设备读缓存的方法、系统及固态硬盘
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
US11630779B2 (en) Hybrid storage device with three-level memory mapping
JP2017126334A (ja) 記憶装置及びその動作方法並びにシステム
CN108228088B (zh) 用于管理存储系统的方法和设备
KR20190048453A (ko) 저장 장치 및 메모리 시스템
KR101648725B1 (ko) Ssd를 이용한 메모리 관리 방법
US9384135B2 (en) System and method of caching hinted data

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant