KR101891264B1 - 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치 - Google Patents

비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치 Download PDF

Info

Publication number
KR101891264B1
KR101891264B1 KR1020160155961A KR20160155961A KR101891264B1 KR 101891264 B1 KR101891264 B1 KR 101891264B1 KR 1020160155961 A KR1020160155961 A KR 1020160155961A KR 20160155961 A KR20160155961 A KR 20160155961A KR 101891264 B1 KR101891264 B1 KR 101891264B1
Authority
KR
South Korea
Prior art keywords
page
memory
memory object
allocated
stored
Prior art date
Application number
KR1020160155961A
Other languages
English (en)
Other versions
KR20170122088A (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 KR20170122088A publication Critical patent/KR20170122088A/ko
Application granted granted Critical
Publication of KR101891264B1 publication Critical patent/KR101891264B1/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/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
    • G06F12/0871Allocation or management of cache space
    • 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
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric 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/0877Cache access modes
    • G06F12/0882Page mode

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

비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치가 개시된다. 개시된 메모리 객체 처리 방법은 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 제1 구조체에 기초하여 제1 페이지에 포함된 제2 구조체를 확인함으로써 제2 구조체에 대응하는 제2 페이지에 메모리 객체의 할당이 가능한지 여부를 판단한다. 그리고, 제1 페이지 및 제2 페이지는 비휘발성 메모리에 저장된다.

Description

비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치{METHOD AND APPARATUS FOR PROCESSING MEMORY OBJECT ON NON-VOLATILE MEMORY}
아래의 설명은 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치에 관한 것으로, 보다 구체적으로는 비휘발성 메모리 상에 할당된 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용함으로써 비휘발성 메모리 상에서 메모리 객체를 처리할 수 있는 방법 및 장치에 관한 것이다.
컴퓨팅 시스템은 빈번히 할당되거나 또는 해제되는 메모리 객체를 페이지 단위로 미리 할당하여 사용한다. 이러한 컴퓨팅 시스템은 메모리 객체를 캐싱하기 위해 슬랩 메모리 할당기를 사용하고 있다.
다만, 슬랩 메모리 할당기는 캐싱할 메모리 객체 및 메모리 객체를 관리하기 위한 메타데이터의 구조체가 휘발성 메모리에 위치한다. 기존의 메모리 객체 캐싱 기법에서는 비휘발성 메모리에 메모리 객체를 캐싱하고자 할 경우 슬랩 메모리 할당기를 이용할 수 없었다.
빈번한 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재부팅된 이후에도 데이터가 유지해야 하는 메모리 객체가 휘발성 메모리에 캐싱되는 경우, 메모리 객체에 대한 영속성이 보장될 수 없다. 따라서, 메모리 객체의 영속성을 보장하면서도 손쉽게 메모리 객체에 대한 캐싱을 수행할 수 있는 방법이 요구되고 있다.
본 발명은 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용하여 비휘발성 메모리에 메모리 객체를 캐싱함으로써, 비휘발성 메모리 상에서 메모리 객체의 캐싱을 위한 슬랩 할당기를 이용하지 않으면서도 메모리 객체를 비휘발성 메모리에 영속적으로 저장할 수 있다.
본 발명은 기존의 슬랩 캐시를 이용한 할당 방식대신 비트맵을 이용하여 메모리 객체를 처리하는 방식을 통해, 효과적으로 비휘발성 메모리에 데이터 객체를 캐싱할 수 있다.
본 발명은 비휘발성 메모리 영역에서 빈번히 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재시작되어도 메모리 객체를 유지하는 메모리 객체 관리가 필요한 소프트웨어 및 이러한 할당기가 필요한 운영체제에서 슬랩 및 파일을 사용하지 않고, 메모리 객체 캐싱 기법을 구현할 수 있다.
본 발명은 데이터 객체를 관리하는 구조체를 비휘발성 메모리에 적합한 형태로 영속화함으로써, 시스템이 재시작되더라도 영속적으로 저장된 데이터 객체에 대한 접근이 가능할 수 있다.
일실시예에 따른 메모리 객체 처리 방법은 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하는 단계; 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하는 단계; 및 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하는 단계를 포함하고, 상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장될 수 있다.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고, 상기 제2 구조체는, 상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법은 상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는 단계를 더 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법은 상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는 단계를 더 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법은 상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및 상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는 단계를 더 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법은 상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제1 구조체의 비트맵을 업데이트하는 단계를 더 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법은 상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당할 수 없는 경우, 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및 상기 제3 구조체를 상기 제4 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트하는 단계를 더 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 페이지에 첫 번째로 포함된 제1 구조체와 상기 제4 페이지에 첫 번째로 포함된 제4 구조체는, 상기 메모리 캐시 리스트를 통해 서로 연결될 수 있다.
일실시예에 따른 메모리 객체 처리 방법에서 상기 메모리 캐시 리스트는, 상기 비휘발성 메모리의 슈퍼블록에 저장될 수 있다.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 구조체는, 상기 제1 페이지에 저장된 제2 구조체의 타입, 상기 비휘발성 메모리에서 제1 페이지의 주소 및 상기 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 방법에서 상기 제2 구조체는, 상기 제2 페이지에 저장된 데이터 객체의 타입, 상기 비휘발성 메모리에서 제2 페이지의 주소 및 상기 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 장치는 메모리 객체를 처리하는 프로세서를 포함하고, 상기 프로세서는, 상기 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하고, 상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장될 수 있다.
일실시예에 따른 메모리 객체 처리 장치에서 상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고, 상기 제2 구조체는, 상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함할 수 있다.
일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환할 수 있다.
일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장할 수 있다.
일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하고, 상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환할 수 있다.
일실시예에 따르면, 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용하여 비휘발성 메모리에 메모리 객체를 캐싱함으로써, 비휘발성 메모리 상에서 메모리 객체의 캐싱을 위한 슬랩 할당기를 이용하지 않으면서도 메모리 객체를 비휘발성 메모리에 영속적으로 저장할 수 있다.
일실시예에 따르면, 비휘발성 메모리 영역에서 빈번히 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재시작되어도 메모리 객체를 유지하는 메모리 객체 관리가 필요한 소프트웨어 및 이러한 할당기가 필요한 운영체제에서 슬랩 및 파일을 사용하지 않고, 메모리 객체 캐싱 기법을 구현할 수 있다.
일실시예에 따르면, 데이터 객체를 관리하는 구조체를 비휘발성 메모리에 적합한 형태로 영속화함으로써, 시스템이 재시작되더라도 영속적으로 저장된 데이터 객체에 대한 접근이 가능할 수 있다.
일실시예에 따르면, 기존의 슬랩 캐시를 이용한 할당 방식대신 비트맵을 이용하여 메모리 객체를 처리하는 방식을 통해, 효과적으로 비휘발성 메모리에 데이터 객체를 캐싱할 수 있다.
도 1은 일실시예에 따라 비휘발성 메모리의 구조를 설명하기 위한 도면이다.
도 2는 일실시예에 따른 메모리 캐시 리스트를 설명하기 위한 도면이다.
도 3은 일실시예에 따라 메모리 객체를 포함하는 페이지를 관리하는 제2 구조체를 설명하기 위한 도면이다.
도 4는 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 5는 다른 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 6은 일실시예에 따른 메모리 객체 처리 방법을 나타낸 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
하기에서 설명될 실시예들은 메모리 객체를 처리하는데 사용될 수 있다. 메모리 객체를 처리하는 동작에는 메모리 객체를 할당(allocate)하는 동작, 메모리 객체를 해제(free)하는 동작, 메모리 객체를 캐싱(caching)하는 동작 중 적어도 하나가 포함될 수 있다. 실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블 장치, 스마트 가전 기기, 지능형 자동차 등 다양한 형태의 제품으로 구현될 수 있다. 예를 들어, 실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 스마트 폰 등에서 메모리 객체를 처리하는데 적용될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따라 비휘발성 메모리의 구조를 설명하기 위한 도면이다.
데이터를 저장할 수 있는 메모리의 종류로는 휘발성 메모리와 비휘발성 메모리가 존재한다. 휘발성 메모리는 저장된 데이터를 유지하기 위해서는 지속적인 전력 공급이 요구되는 메모리를 의미한다. 반면, 비휘발성 메모리는 지속적인 전력 공급이 요구되지 않는 메모리로서, 전력 공급이 중단되더라도 저장된 데이터를 유지할 수 있다. 즉, 비휘발성 메모리는 시스템이 종료되거나 재시작되더라도 저장된 데이터를 그대로 유지할 수 있으나, 휘발성 메모리의 경우 시스템이 종료되거나 재시작되면 저장된 데이터가 손실된다.
메모리 객체는 사용자 응용 프로그램에 의해 생성된 데이터를 포함할 수 있다. 일반적으로 이러한 메모리 객체는 빈번히 할당되거나 또는 해제될 수 있다. 따라서, 이러한 메모리 객체가 휘발성 메모리가 아닌 비휘발성 메모리에 할당될 경우, 시스템이 종료되거나 재시작되더라도 할당된 메모리 객체가 손실되는 상황이 발생하지 않으며, 전력 공급이 중단되더라도 할당된 메모리 객체를 유지할 수 있다.
메모리 객체를 비휘발성 메모리에 할당하는 과정에 대해서는 도 1을 참조하여 설명한다.
도 1을 참조하면, 하나 이상의 페이지(120, 130, 150)를 포함하는 비휘발성 메모리(100)가 도시된다.
비휘발성 메모리(100)는 앞서 설명한 바와 같이 전력 공급이 중간에 중단되더라도 저장된 데이터를 유지할 수 있는 메모리로서, 메모리 객체 리스트(110), 복수의 페이지들(120, 130, 150)을 포함할 수 있다. 예시적으로 도시된 도 1에서는, 휘발성 메모리가 직접적으로 도시되지 않았으나, 비휘발성 메모리(100)와 함께 이용될 수도 있고 또는, 비휘발성 메모리(100)만을 이용하여 메모리 객체를 처리할 수도 있다.
먼저 메모리 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 참조될 수 있다.
메모리 객체 리스트(110)는 비휘발성 메모리(100)에 저장되고 하나 이상의 구조체를 포함하는 페이지로 연결될 수 있다. 메모리 객체 리스트(110)는 비휘발성 메모리(100)의 슈퍼블록(superblock)에 포함될 수 있다. 슈퍼블록은 커널 영역에 존재하는 영속 객체 관리를 위한 루트 자료구조로서, 영속 객체를 관리하고 있는 모든 자료구조에 접근이 가능하다. 일실시예에 따른 슈퍼블록은 비휘발성 메모리(100)의 첫 번째 페이지에 고정 할당될 수 있다.
메모리 객체 리스트(110)를 통해서, 하나 이상의 구조체를 포함하는 페이지로 연결될 수 있다.
비휘발성 메모리(100)에는 하나 이상의 구조체를 포함하는 페이지(예컨대, 도 1의 제1 페이지(120), 제4 페이지(150) 등)와 하나 이상의 데이터 객체를 포함하는 페이지(예컨대, 도 1의 제2 페이지(130) 등)가 포함될 수 있다.
예시적으로 도시된 도 1을 참조하면, 하나 이상의 구조체를 포함하는 페이지로 제1 페이지(120) 및 제4 페이지(150)가 도시되어 있다. 이하에서는 설명의 편의를 위해 제1 페이지(120)를 중심으로 설명한다. 다만, 제1 페이지(120)에 대한 설명은 제4 페이지(150)에도 제한 없이 동일하게 적용될 수 있다.
제1 페이지(120)에 포함된 구조체는 메타데이터로서, 예를 들어, 다른 구조체에 대한 데이터 또는 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 다시 말해, 구조체에는 다른 구조체를 관리하는 구조체와 하나 이상의 메모리 객체를 포함하는 페이지를 관리하는 구조체가 존재한다.
이와 같은 구조체에 기초하여, 제1 페이지(120)에서는 제1 구조체와 나머지 구조체(예컨대, 제2 구조체, 제3 구조체 등)로 구분될 수 있다.
여기서, 제1 구조체는 제1 페이지(120)에 첫 번째로 포함된 구조체로서, 제1 페이지(120)에 포함된 나머지 구조체에 대한 데이터를 포함할 수 있다. 제1 구조체는 제1 페이지(120)에 구조체를 할당하거나 또는 해제할 때 이용될 수 있다. 예를 들어, 제1 구조체는 제1 페이지(120)가 저장된 나머지 구조체의 타입, 비휘발성 메모리(100)에서 제1 페이지(120)의 주소 및 제1 페이지(120)에 저장된 나머지 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.
나머지 구조체는 제1 구조체를 제외한 제1 페이지(120)에 저장된 구조체로서, 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 나머지 구조체 각각은 하나 이상의 메모리 객체를 포함하는 페이지에 고유하게 대응할 수 있고, 대응하는 페이지에 대한 데이터를 포함할 수 있다. 예를 들어, 나머지 구체 각각은 대응하는 페이지에 포함된 데이터 객체의 타입, 대응하는 페이지의 주소, 대응하는 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다. 다시 말해, 하나 이상의 메모리 객체를 포함하는 하나의 페이지는 하나의 구조체에 의해 관리될 수 있다.
예를 들어, 제1 페이지(120)에 포함된 제2 구조체는 하나 이상의 메모리 객체가 포함된 제2 페이지(130)에 대응되며, 제2 페이지(130)에 대한 데이터를 포함할 수 있다. 또한, 제3 구조체는 하나 이상의 메모리 객체가 포함된 다른 페이지에 대응되며, 해당 페이지에 대한 데이터를 포함할 수 있다.
제2 페이지(130)는 하나 이상의 데이터 객체를 포함하는 페이지로서, 예를 들어, 동일한 타입의 메모리 객체가 하나 이상 포함될 수 있다. 제2 페이지(130)에 포함된 데이터 객체는 요청에 의해 할당되거나 해제될 수 있다.
제4 페이지(150)는 하나 이상의 구조체를 포함하는 페이지를 나타낸다. 마찬가지로, 제4 페이지(150)에 첫 번째로 포함된 제4 구조체는 제4 페이지(150)에 포함된 나머지 구조체에 대한 데이터를 포함할 수 있다. 즉, 제4 구조체는 제4 페이지(150)에 포함된 나머지 구조체를 관리할 수 있다. 나머지 구조체는 하나 이상의 데이터 객체를 포함하는 페이지에 고유하게 대응되며, 대응하는 페이지에 대한 데이터를 포함할 수 있다.
여기서, 제1 구조체와 제4 구조체 각각은 해당 페이지에 포함된 나머지 구조체에 대한 데이터를 포함하는 구조체로서, 서로 연결될 수 있다. 예를 들어, 제1 구조체와 제4 구조체는 메모리 캐시 리스트(110)를 통해 서로 연결될 수 있다. 나머지 구조체에 대한 데이터를 포함하는 구조체들이 서로 연결됨으로써, 메모리 객체 리스트(110)는 비휘발성 메모리(100)에 저장된 나머지 구조체에 대한 데이터를 포함하는 구조체들에 모두 접근할 수 있으며, 이를 통해 하나 이상의 데이터 객체를 포함하는 페이지에 대한 데이터를 포함하는 나머지 구조체로도 접근이 가능하며, 나아가, 페이지에 포함된 데이터 객체까지 접근이 가능할 수 있다.
일실시예에 따라 비휘발성 메모리(100)에 할당된 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 객체 데이터를 포함하는 페이지는 시스템이 재시작되더라도 다른 용도로 사용되지 못하도록 해당 페이지에 대한 재할당이 금지될 수 있다. 그래서, 메모리 객체를 영속적으로 저장하는 페이지 또는 구조체를 영속적으로 저장하는 페이지는 해당 페이지가 해제될 때까지 해당 페이지에 저장된 메모리 객체 또는 구조체를 유지할 수 있다.
예를 들어, 시스템(예컨대, 운영체제)가 시작되면, 비휘발성 메모리(100)의 첫 번째 페이지에 저장된 슈퍼블록이 확인될 수 있다. 슈퍼블록의 매직넘버를 통해, 객체 관리 자료구조가 존재하는지 여부가 확인될 수 있다. 객체 관리 자료구조가 존재하는 경우, 자료구조를 초기화하는 과정이 수행되지 않는다. 그리고, 자료구조가 저장되어 있는 페이지들을 확인함으로써, 해당 페이지가 재할당되지 않도록 프리 페이지 리스트에서 제거될 수 있다. 앞서 설명한 일련의 동작들은 HEAPO(Heap-based persistent object store)에 의해 수행될 수 있다.
보다 구체적으로, 상술된 구조를 가지는 비휘발성 메모리(100)에 데이터 객체가 할당되는 과정은 다음과 같이 수행될 수 있다.
일실시예에 따라 데이터 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 확인될 수 있다. 그리고, 메모리 객체 리스트(110)를 통해, 하나 이상의 구조체가 포함된 제1 페이지(120)의 제1 구조체가 확인될 수 있다. 그리고, 제1 구조체를 통해 제1 페이지(120)에 포함된 나머지 구조체 각각에 대응하는 하나 이상의 데이터 객체를 포함하는 페이지에 데이터 객체의 할당이 가능한지 여부를 판단할 수 있다.
예를 들어, 제1 페이지(120)에 포함된 제2 구조체를 참조하여, 제2 구조체에 대응하는 제2 페이지(130)에 데이터 객체의 할당이 가능한지 여부를 판단할 수 있다. 만약 제2 페이지(130)에 데이터 객체의 할당이 가능하지 않다면, 제3 구조체를 참조하여, 제3 구조체에 대응하는 페이지에 데이터 객체의 할당이 가능한지 여부를 추가적으로 판단할 수 있다.
반대로, 제2 페이지(130)에 데이터 객체의 할당이 가능하다면, 메모리 객체가 할당될 제2 페이지(130)의 여유 공간을 나타내는 제2 구조체의 비트맵이 업데이트되고, 제2 페이지(130)의 여유 공간에 대한 주소가 반환될 수 있다.
그리고, 메모리 객체는 반환된 주소에 기초하여 제2 페이지(130)의 여유 공간에 영속적으로 저장될 수 있다.
도 2는 일실시예에 따른 메모리 캐시 리스트를 설명하기 위한 도면이다.
도 2를 참조하면, 메모리 캐시 리스트의 예시가 도시된다.
메모리 캐시 리스트는 하나 이상의 구조체를 포함하는 페이지의 첫 번째 구조체와 연결되는 헤더를 포함할 수 있다. 메모리 캐시 리스트의 헤더는 슈퍼블록에 포함되고, 여기서 헤더는 제1 페이지(120)의 제1 구조체와 연결될 수 있다. 헤더는 배열([0], [1], [2], ..., [n-1])로 구성되며, 각 배열의 원소는 서로 다른 종류의 메모리 객체 리스트의 헤더에 해당될 수 있다.
메모리 캐시 리스트는 헤더를 통해 배열의 원소를 하나씩 순회함으로써, 구조체가 저장되어 있는 모든 페이지에 접근이 가능할 수 있다. 배열의 원소를 순회하면서 비트맵을 확인하여 대응하는 페이지 내에 메모리 객체를 할당할 수 있는 여유 공간이 존재하는 배열의 원소를 찾을 수 있다.
도 3은 일실시예에 따라 메모리 객체를 포함하는 페이지를 관리하는 제2 구조체를 설명하기 위한 도면이다.
도 3을 참조하면, 제2 구조체의 예시가 도시된다.
제2 구조체는 도 1에 예시적으로 도시된 제1 페이지(120)에 포함된 구조체로서, 하나 이상의 메모리 객체를 포함하는 제2 페이지(130)에 대한 데이터를 포함할 수 있다. 예를 들어, 제2 구조체에는 제2 페이지(130)에 포함된 데이터 객체의 타입, 대응하는 제2 페이지(130)의 주소, 제2 페이지(130)에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.
특히, 제2 구조체에 포함된 비트맵은 제2 페이지(130)에 포함된 공간에 메모리 객체가 저장되어 있는지 여부를 나타낼 수 있다. 예를 들어, 비트맵에서 '1'은 대응하는 공간에 메모리 객체가 할당되어 있는 것을 나타내고, '0'은 대응하는 공간에 메모리 객체가 할당되어 있지 않은 것을 나타낸다. 따라서, 제2 구조체의 비트맵을 확인함으로써, 제2 구조체가 관리하는 제2 페이지(130)에 새로운 데이터 객체를 할당할 수 있는지 여부를 손쉽게 파악할 수 있다. 다시 말해, 하나 이상의 데이터 객체를 포함하는 페이지에 대한 메모리 객체의 할당 및 해제는 해당 페이지를 관리하는 구조체의 비트맵을 통해 수행될 수 있다.
도 4는 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 4를 참조하면, 기존의 페이지에 메모리 객체를 할당할 여유 공간이 없는 경우에 새로운 페이지에 메모리 객체를 할당하는 과정의 예시가 도시된다.
일실시예에 따라 데이터 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 확인될 수 있다. 메모리 객체 리스트(110)에 포함된 헤더를 탐색함으로써, 하나 이상의 구조체들이 포함된 페이지의 첫 번째 구조체로 연결될 수 있다. 예를 들어, 메모리 객체 리스트(110)로부터 연결되고, 제1 페이지(120)에 포함된 제1 구조체가 확인될 수 있다. 제1 구조체를 통해 제1 페이지(120)에 포함된 나머지 구조체(예컨대, 제2 구조체, 제3 구조체 등)에 대응하는 페이지에 데이터 객체에 대한 할당이 가능한지 여부가 판단될 수 있다.
만약 데이터 객체에 대한 할당이 가능하지 않은 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지(140)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제3 페이지(140)의 여유 공간에 대한 주소가 반환되고, 그에 따라 메모리 객체가 제3 페이지(140)에 영속적으로 저장될 수 있다.
새로 할당된 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체가 제1 페이지(120)에 할당될 수 있다. 제3 구조체가 제1 페이지(120)에 새로 할당됨에 따라, 제3 구조체에 대한 데이터가 제1 페이지(120)의 제1 구조체에 추가될 수 있다. 다시 말해, 제3 구조체가 할당된 공간에 기초하여 제1 구조체의 비트맵이 업데이트될 수 있다.
도 5는 다른 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 5를 참조하면, 기존의 페이지에 메모리 객체를 할당할 여유 공간이 없는 경우에 새로운 페이지에 메모리 객체를 할당하는 과정의 다른 예시가 도시된다.
도 4의 경우와 마찬가지로, 일실시예에 따라 데이터 객체에 대한 할당 요청에 기초하여 제3 페이지(140)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제3 페이지(140)의 여유 공간에 대한 주소가 반환되고, 그에 따라 메모리 객체가 제3 페이지(140)에 영속적으로 저장될 수 있다.
다만, 제1 페이지(120)에 새로 할당된 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체를 할당할 여유 공간이 없는 경우, 하나 이상의 구조체를 포함하는 제4 페이지(150)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제4 페이지(150)에 포함될 다른 구조체에 대한 데이터를 포함하는 제4 구조체가 제4 페이지(150)에 할당될 수 있다. 다시 말해, 제4 페이지(150)에 포함될 다른 구조체를 관리하는 제4 구조체가 제4 페이지(150)에 할당될 수 있다. 여기서, 제4 페이지(150)에 첫 번째로 포함된 제4 구조체는 제1 페이지(120)에 첫 번째로 포함된 제1 구조체와 서로 연결될 수 있다. 그래서, 메모리 객체 리스트는 새로 할당된 제4 페이지(150)의 제4 구조체로도 연결될 수 있다.
그리고, 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체가 제4 페이지(150)에 할당되고, 제3 구조체의 할당에 기초하여 제4 구조체가 업데이트될 수 있다. 제3 구조체가 할당된 공간에 기초하여 제4 구조체의 비트맵이 업데이트될 수 있다.
도 6은 일실시예에 따른 메모리 객체 처리 방법을 나타낸 도면이다.
도 6을 참조하면, 일실시예에 따른 메모리 객체 처리 장치의 프로세서에 의해 수행되는 메모리 객체 처리 방법이 도시된다.
단계(610)에서, 메모리 객체 처리 장치는 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인한다. 메모리 캐시 리스트는 비휘발성 메모리의 슈퍼블록에 저장될 수 있다.
단계(620)에서, 메모리 객체 처리 장치는 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인한다.
단계(630)에서, 메모리 객체 처리 장치는 제1 구조체에 기초하여 제1 페이지에 포함된 제2 구조체를 확인함으로써 제2 구조체에 대응하는 제2 페이지에 메모리 객체의 할당이 가능한지 여부를 판단한다.
제1 구조체는 제1 페이지에 제2 구조체에 대한 데이터를 포함하고, 제2 구조체는 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 제1 구조체는 제1 페이지에 저장된 제2 구조체의 타입, 비휘발성 메모리에서 제1 페이지의 주소 및 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다. 제2 구조체는 제2 페이지에 저장된 데이터 객체의 타입, 비휘발성 메모리에서 제2 페이지의 주소 및 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.
제2 페이지에 메모리 객체의 할당이 가능한 경우, 단계(640)에서 메모리 객체 처리 장치는 메모리 객체를 제2 페이지의 여유 공간에 영속적으로 저장할 수 있다. 메모리 객체 처리 장치는 제2 페이지에 메모리 객체의 할당이 가능한 경우, 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 제2 구조체의 비트맵을 업데이트하고 여유 공간에 대한 주소를 반환할 수 있다.
제2 페이지에 메모리 객체의 할당이 가능하지 않는 경우, 단계(650)에서 메모리 객체 처리 장치는 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 비휘발성 메모리에 할당할 수 있다. 그리고, 메모리 객체 처리 장치는 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환할 수 있다. 그리고, 메모리 객체 처리 장치는 3 페이지를 관리하는 제3 구조체를 제1 페이지에 할당하고, 제3 구조체가 할당된 공간에 기초하여 제1 구조체의 비트맵을 업데이트할 수 있다.
만약 제3 페이지를 관리하는 제3 구조체를 제1 페이지에 할당할 수 없는 경우, 메모리 객체 처리 장치는 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 비휘발성 메모리에 할당할 수 있다. 그리고, 메모리 객체 처리 장치는 제3 구조체를 제4 페이지에 할당하고, 제3 구조체가 할당된 공간에 기초하여 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트할 수 있다.
제1 페이지에 첫 번째로 포함된 제1 구조체와 제4 페이지에 첫 번째로 포함된 제4 구조체는 메모리 캐시 리스트를 통해 서로 연결될 수 있다.
도 6에 도시된 각 단계들에는 도 1 내지 도 5를 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
100: 비휘발성 메모리
110: 메모리 객체 리스트
120: 제1 페이지
130: 제2 페이지
150: 제3 페이지

Claims (16)

  1. 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하는 단계;
    상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하는 단계; 및
    상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하는 단계
    를 포함하고,
    상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장되며,
    상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고,
    상기 제2 구조체는,
    상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 제2 페이지에 대한 데이터를 포함하는, 메모리 객체 처리 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는 단계
    를 더 포함하는, 메모리 객체 처리 방법.
  4. 제3항에 있어서,
    상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는 단계
    를 더 포함하는, 메모리 객체 처리 방법.
  5. 제1항에 있어서,
    상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및
    상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는 단계
    를 더 포함하는, 메모리 객체 처리 방법.
  6. 제5항에 있어서,
    상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제1 구조체의 비트맵을 업데이트하는 단계
    를 더 포함하는, 메모리 객체 처리 방법.
  7. 제5항에 있어서,
    상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당할 수 없는 경우, 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및
    상기 제3 구조체를 상기 제4 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트하는 단계
    를 더 포함하는, 메모리 객체 처리 방법.
  8. 제7항에 있어서,
    상기 제1 페이지에 첫 번째로 포함된 제1 구조체와 상기 제4 페이지에 첫 번째로 포함된 제4 구조체는, 상기 메모리 캐시 리스트를 통해 서로 연결되는, 메모리 객체 처리 방법.
  9. 제1항에 있어서,
    상기 메모리 캐시 리스트는, 상기 비휘발성 메모리의 슈퍼블록에 저장되는, 메모리 객체 처리 방법.
  10. 제1항에 있어서,
    상기 제1 구조체는,
    상기 제1 페이지에 저장된 제2 구조체의 타입, 상기 비휘발성 메모리에서 제1 페이지의 주소 및 상기 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함하는, 메모리 객체 처리 방법.
  11. 제1항에 있어서,
    상기 제2 구조체는,
    상기 제2 페이지에 저장된 데이터 객체의 타입, 상기 비휘발성 메모리에서 제2 페이지의 주소 및 상기 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함하는, 메모리 객체 처리 방법.
  12. 메모리 객체를 처리하는 프로세서
    를 포함하고,
    상기 프로세서는,
    상기 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하고,
    상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장되고,
    상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고,
    상기 제2 구조체는,
    상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 제2 페이지에 대한 데이터를 포함하는, 메모리 객체 처리 장치.
  13. 삭제
  14. 제12항에 있어서,
    상기 프로세서는,
    상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는, 메모리 객체 처리 장치.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는, 메모리 객체 처리 장치.
  16. 제12항에 있어서,
    상기 프로세서는,
    상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하고,
    상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는, 메모리 객체 처리 장치.
KR1020160155961A 2016-04-26 2016-11-22 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치 KR101891264B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20160051117 2016-04-26
KR1020160051117 2016-04-26

Publications (2)

Publication Number Publication Date
KR20170122088A KR20170122088A (ko) 2017-11-03
KR101891264B1 true KR101891264B1 (ko) 2018-09-28

Family

ID=60383991

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160155961A KR101891264B1 (ko) 2016-04-26 2016-11-22 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치

Country Status (1)

Country Link
KR (1) KR101891264B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101113755B1 (ko) 2011-01-28 2012-02-27 엘아이지넥스원 주식회사 프리 메모리 관리 구조체를 사용하는 메모리 관리 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101113755B1 (ko) 2011-01-28 2012-02-27 엘아이지넥스원 주식회사 프리 메모리 관리 구조체를 사용하는 메모리 관리 방법

Also Published As

Publication number Publication date
KR20170122088A (ko) 2017-11-03

Similar Documents

Publication Publication Date Title
KR101786871B1 (ko) 원격 페이지 폴트 처리 장치 및 그 방법
KR102275563B1 (ko) 호스트-관리 비휘발성 메모리
US20230196502A1 (en) Dynamic kernel memory space allocation
US8037279B2 (en) Method and system for cross-domain data sharing
US10705951B2 (en) Shared fabric attached memory allocator
US8862703B2 (en) Address server
US8868622B2 (en) Method and apparatus for allocating resources in a computer system
JP2020511714A5 (ko)
WO2014171223A1 (ja) 情報処理装置、情報処理方法、およびプログラム
US9336065B2 (en) Semiconductor device and memory protection method
TW201935223A (zh) 記憶體系統及其控制方法
US20160179580A1 (en) Resource management based on a process identifier
CN105138481A (zh) 存储数据的处理方法、装置和系统
US8423712B2 (en) Methods and systems for releasing and re-allocating storage segments in a storage volume
CN114556309A (zh) 内存空间的分配方法、装置及存储介质
US8274521B2 (en) System available cache color map
US9009204B2 (en) Storage system
CN118193222A (zh) 一种内存处理方法、装置、电子设备及存储介质
WO2017054636A1 (zh) 虚拟快照处理方法及装置
JP5492731B2 (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
US10152258B1 (en) Big block allocation of persistent main memory
SG183093A1 (en) Dual mode reader writer lock
KR101891264B1 (ko) 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치
JP7217341B2 (ja) プロセッサおよびレジスタの継承方法
KR101990201B1 (ko) 뉴메모리 기반 메모리 관리 방법 및 이를 수행하는 장치들

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)