KR20170122088A - Method and apparatus for processing memory object on non-volatile memory - Google Patents

Method and apparatus for processing memory object on non-volatile memory Download PDF

Info

Publication number
KR20170122088A
KR20170122088A KR1020160155961A KR20160155961A KR20170122088A KR 20170122088 A KR20170122088 A KR 20170122088A KR 1020160155961 A KR1020160155961 A KR 1020160155961A KR 20160155961 A KR20160155961 A KR 20160155961A KR 20170122088 A KR20170122088 A KR 20170122088A
Authority
KR
South Korea
Prior art keywords
page
memory
memory object
allocated
stored
Prior art date
Application number
KR1020160155961A
Other languages
Korean (ko)
Other versions
KR101891264B1 (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 한양대학교 산학협력단
Publication of KR20170122088A publication Critical patent/KR20170122088A/en
Application granted granted Critical
Publication of KR101891264B1 publication Critical patent/KR101891264B1/en

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

Disclosed are a method and apparatus for processing a memory object on a nonvolatile memory. The disclosed method for processing a memory object includes the steps of: checking a memory cache list stored in the nonvolatile memory based on an allocation request for the memory object; checking a first structure which is connected to the memory cache list and is included in a first page; and determining whether the allocation of the memory object is possible in a second page corresponding to a second structure by checking the second structure included in the first page based on the first structure. And, the first page and the second page are stored in the nonvolatile memory. Accordingly, the present invention can persistently store the memory object in the nonvolatile memory.

Description

비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치{METHOD AND APPARATUS FOR PROCESSING MEMORY OBJECT ON NON-VOLATILE MEMORY}[0001] METHOD AND APPARATUS FOR PROCESSING MEMORY OBJECT ON NON-VOLATILE MEMORY [0002]

아래의 설명은 비휘발성 메모리 상의 메모리 객체 처리 방법 및 메모리 객체 처리 장치에 관한 것으로, 보다 구체적으로는 비휘발성 메모리 상에 할당된 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용함으로써 비휘발성 메모리 상에서 메모리 객체를 처리할 수 있는 방법 및 장치에 관한 것이다.The following description relates to a memory object processing method and a memory object processing apparatus on a nonvolatile memory, and more particularly, to a memory object processing method and a memory object processing apparatus using a page including one or more structures allocated on a nonvolatile memory and a page including one or more memory objects To a method and apparatus capable of processing a memory object on a non-volatile memory.

컴퓨팅 시스템은 빈번히 할당되거나 또는 해제되는 메모리 객체를 페이지 단위로 미리 할당하여 사용한다. 이러한 컴퓨팅 시스템은 메모리 객체를 캐싱하기 위해 슬랩 메모리 할당기를 사용하고 있다.The computing system preallocates and uses memory objects that are frequently allocated or released in units of pages. These computing systems use slap memory allocators to cache memory objects.

다만, 슬랩 메모리 할당기는 캐싱할 메모리 객체 및 메모리 객체를 관리하기 위한 메타데이터의 구조체가 휘발성 메모리에 위치한다. 기존의 메모리 객체 캐싱 기법에서는 비휘발성 메모리에 메모리 객체를 캐싱하고자 할 경우 슬랩 메모리 할당기를 이용할 수 없었다. However, in the slap memory allocator, a memory object to be cached and a structure of metadata for managing the memory object are located in the volatile memory. In the conventional memory object caching technique, the slap memory allocator can not be used when the memory object is cached in the nonvolatile memory.

빈번한 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재부팅된 이후에도 데이터가 유지해야 하는 메모리 객체가 휘발성 메모리에 캐싱되는 경우, 메모리 객체에 대한 영속성이 보장될 수 없다. 따라서, 메모리 객체의 영속성을 보장하면서도 손쉽게 메모리 객체에 대한 캐싱을 수행할 수 있는 방법이 요구되고 있다.If allocation or freeing of a frequent memory object occurs and the memory object that the data should hold even after the system is rebooted is cached in the volatile memory, persistence to the memory object can not be guaranteed. Accordingly, there is a demand for a method that can easily perform caching of a memory object while guaranteeing the durability of the memory object.

본 발명은 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용하여 비휘발성 메모리에 메모리 객체를 캐싱함으로써, 비휘발성 메모리 상에서 메모리 객체의 캐싱을 위한 슬랩 할당기를 이용하지 않으면서도 메모리 객체를 비휘발성 메모리에 영속적으로 저장할 수 있다.The present invention provides a method and system for caching a memory object in a non-volatile memory by using a page containing one or more structures and a page containing one or more memory objects to cache memory objects in non-volatile memory, The object can be persistently stored in non-volatile memory.

본 발명은 기존의 슬랩 캐시를 이용한 할당 방식대신 비트맵을 이용하여 메모리 객체를 처리하는 방식을 통해, 효과적으로 비휘발성 메모리에 데이터 객체를 캐싱할 수 있다.The present invention can efficiently cache data objects in a nonvolatile memory by processing a memory object using a bitmap instead of an existing slab cache allocation scheme.

본 발명은 비휘발성 메모리 영역에서 빈번히 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재시작되어도 메모리 객체를 유지하는 메모리 객체 관리가 필요한 소프트웨어 및 이러한 할당기가 필요한 운영체제에서 슬랩 및 파일을 사용하지 않고, 메모리 객체 캐싱 기법을 구현할 수 있다.The present invention relates to an apparatus and a method for allocating or releasing a memory object frequently in a nonvolatile memory area, software that requires memory object management to maintain a memory object even when the system is restarted, A memory object caching technique can be implemented.

본 발명은 데이터 객체를 관리하는 구조체를 비휘발성 메모리에 적합한 형태로 영속화함으로써, 시스템이 재시작되더라도 영속적으로 저장된 데이터 객체에 대한 접근이 가능할 수 있다.The present invention enables persistent storage of persistent data objects even if the system is restarted by persisting the structure for managing data objects in a form suitable for non-volatile memory.

일실시예에 따른 메모리 객체 처리 방법은 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하는 단계; 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하는 단계; 및 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하는 단계를 포함하고, 상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장될 수 있다.A method of processing a memory object according to an exemplary embodiment includes: checking a memory cache list stored in a non-volatile memory based on an allocation request for a memory object; Identifying a first structure associated with the memory cache list and included in a first page; And determining whether allocation of the memory object to a second page corresponding to the second structure is possible by checking a second structure included in the first page based on the first structure, The first page and the second page may be stored in the nonvolatile memory.

일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고, 상기 제2 구조체는, 상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함할 수 있다.In a method of processing a memory object according to an embodiment, the first structure includes data for the second structure on the first page, and the second structure includes data on one or more memory objects And may include data for the included page.

일실시예에 따른 메모리 객체 처리 방법은 상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는 단계를 더 포함할 수 있다.The memory object processing method according to an embodiment updates a bitmap of the second structure indicating a free space of a second page to which the memory object is to be allocated when the memory object can be allocated to the second page, And returning an address for the space.

일실시예에 따른 메모리 객체 처리 방법은 상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는 단계를 더 포함할 수 있다.The memory object processing method according to an embodiment may further include storing the memory object in the free space of the second page.

일실시예에 따른 메모리 객체 처리 방법은 상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및 상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는 단계를 더 포함할 수 있다.The method may further include allocating a third page to the non-volatile memory, the third page being capable of storing one or more memory objects if the second page is not allocatable to the memory object; And returning an address of the free space of the third page to which the memory object is to be allocated.

일실시예에 따른 메모리 객체 처리 방법은 상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제1 구조체의 비트맵을 업데이트하는 단계를 더 포함할 수 있다.The method of processing a memory object according to an embodiment may include allocating a third structure for managing the third page to the first page and updating the bitmap of the first structure based on the space allocated for the third structure Step < / RTI >

일실시예에 따른 메모리 객체 처리 방법은 상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당할 수 없는 경우, 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및 상기 제3 구조체를 상기 제4 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트하는 단계를 더 포함할 수 있다.The memory object processing method according to an embodiment allocates, to the non-volatile memory, a fourth page capable of storing one or more structures when a third structure for managing the third page can not be allocated to the first page step; And assigning the third structure to the fourth page and updating the bitmap of the fourth structure included first in the fourth page based on the space allocated by the third structure have.

일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 페이지에 첫 번째로 포함된 제1 구조체와 상기 제4 페이지에 첫 번째로 포함된 제4 구조체는, 상기 메모리 캐시 리스트를 통해 서로 연결될 수 있다.In the method of processing a memory object according to an exemplary embodiment, the first structure included first in the first page and the fourth structure included first in the fourth page may be connected to each other through the memory cache list.

일실시예에 따른 메모리 객체 처리 방법에서 상기 메모리 캐시 리스트는, 상기 비휘발성 메모리의 슈퍼블록에 저장될 수 있다.In a method of processing a memory object according to an embodiment, the memory cache list may be stored in a super block of the non-volatile memory.

일실시예에 따른 메모리 객체 처리 방법에서 상기 제1 구조체는, 상기 제1 페이지에 저장된 제2 구조체의 타입, 상기 비휘발성 메모리에서 제1 페이지의 주소 및 상기 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.In a method of processing a memory object according to an embodiment, the first structure may include a type of a second structure stored in the first page, an address of the first page in the non-volatile memory, and a second structure stored in the first page, And a bitmap.

일실시예에 따른 메모리 객체 처리 방법에서 상기 제2 구조체는, 상기 제2 페이지에 저장된 데이터 객체의 타입, 상기 비휘발성 메모리에서 제2 페이지의 주소 및 상기 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.In a method of processing a memory object according to an embodiment, the second structure includes a type of a data object stored in the second page, an address of a second page in the nonvolatile memory, and a bitmap Or the like.

일실시예에 따른 메모리 객체 처리 장치는 메모리 객체를 처리하는 프로세서를 포함하고, 상기 프로세서는, 상기 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하고, 상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장될 수 있다.According to one embodiment, a memory object processing apparatus includes a processor for processing a memory object, the processor for identifying a memory cache list stored in a non-volatile memory based on an allocation request for the memory object, Identifying a first structure included in the first page linked to the first page and identifying a second structure included in the first page based on the first structure, , And the first page and the second page may be stored in the nonvolatile memory.

일실시예에 따른 메모리 객체 처리 장치에서 상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고, 상기 제2 구조체는, 상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함할 수 있다.In the apparatus for processing a memory object according to an embodiment, the first structure includes data for the second structure on the first page, and the second structure is divided from the first page and includes one or more memory objects And may include data for the included page.

일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환할 수 있다.In a memory object processing apparatus according to an embodiment, when the memory object is allocatable to the second page, the processor allocates a bitmap of the second structure indicating a free space of a second page to which the memory object is allocated And can return an address for the free space.

일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장할 수 있다.In a memory object processing apparatus according to an embodiment, the processor may permanently store the memory object in the free space of the second page.

일실시예에 따른 메모리 객체 처리 장치에서 상기 프로세서는, 상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하고, 상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환할 수 있다.In a memory object processing apparatus according to an embodiment, the processor allocates to the non-volatile memory a third page capable of storing one or more memory objects when allocation of the memory object to the second page is not possible, The address of the free space of the third page to which the memory object is to be allocated.

일실시예에 따르면, 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 메모리 객체를 포함하는 페이지를 이용하여 비휘발성 메모리에 메모리 객체를 캐싱함으로써, 비휘발성 메모리 상에서 메모리 객체의 캐싱을 위한 슬랩 할당기를 이용하지 않으면서도 메모리 객체를 비휘발성 메모리에 영속적으로 저장할 수 있다.According to one embodiment, by using a page containing one or more structures and a page containing one or more memory objects to cache memory objects in non-volatile memory, a slab allocator for caching of memory objects on non- Memory objects can be stored persistently in non-volatile memory.

일실시예에 따르면, 비휘발성 메모리 영역에서 빈번히 메모리 객체에 대한 할당 또는 해제가 발생하고, 시스템이 재시작되어도 메모리 객체를 유지하는 메모리 객체 관리가 필요한 소프트웨어 및 이러한 할당기가 필요한 운영체제에서 슬랩 및 파일을 사용하지 않고, 메모리 객체 캐싱 기법을 구현할 수 있다.According to one embodiment, software that frequently needs to be allocated or released for a memory object in a non-volatile memory area, memory object management that maintains memory objects even when the system is restarted, and software that requires such allocators to use slabs and files It is possible to implement a memory object caching technique.

일실시예에 따르면, 데이터 객체를 관리하는 구조체를 비휘발성 메모리에 적합한 형태로 영속화함으로써, 시스템이 재시작되더라도 영속적으로 저장된 데이터 객체에 대한 접근이 가능할 수 있다.According to one embodiment, persistence of a structure for managing a data object in a form suitable for non-volatile memory allows access to persistently stored data objects even when the system is restarted.

일실시예에 따르면, 기존의 슬랩 캐시를 이용한 할당 방식대신 비트맵을 이용하여 메모리 객체를 처리하는 방식을 통해, 효과적으로 비휘발성 메모리에 데이터 객체를 캐싱할 수 있다.According to an exemplary embodiment, a data object can be effectively cached in a non-volatile memory through a method of processing a memory object using a bitmap instead of an allocation method using an existing slab cache.

도 1은 일실시예에 따라 비휘발성 메모리의 구조를 설명하기 위한 도면이다.
도 2는 일실시예에 따른 메모리 캐시 리스트를 설명하기 위한 도면이다.
도 3은 일실시예에 따라 메모리 객체를 포함하는 페이지를 관리하는 제2 구조체를 설명하기 위한 도면이다.
도 4는 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 5는 다른 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.
도 6은 일실시예에 따른 메모리 객체 처리 방법을 나타낸 도면이다.
1 is a diagram for explaining a structure of a nonvolatile memory according to an embodiment.
FIG. 2 is a view for explaining a memory cache list according to an embodiment.
3 is a diagram for describing a second structure for managing a page including a memory object according to an embodiment.
4 is a diagram illustrating a process of allocating a memory object to a new page according to an embodiment of the present invention.
5 is a diagram illustrating a process of allocating a memory object to a new page according to another embodiment of the present invention.
FIG. 6 illustrates a method of processing a memory object according to an exemplary embodiment. Referring to FIG.

실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 실시될 수 있다. 따라서, 실시예들은 특정한 개시형태로 한정되는 것이 아니며, 본 명세서의 범위는 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of embodiments are set forth for illustration purposes only and may be embodied with various changes and modifications. Accordingly, the embodiments are not intended to be limited to the particular forms disclosed, and the scope of the disclosure includes changes, equivalents, or alternatives included in the technical idea.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.The terms first or second, etc. may be used to describe various elements, but such terms should be interpreted solely for the purpose of distinguishing one element from another. For example, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.It is to be understood that when an element is referred to as being "connected" to another element, it may be directly connected or connected to the other element, although other elements may be present in between.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expressions include plural expressions unless the context clearly dictates otherwise. In this specification, the terms "comprises ", or" having ", and the like, are used to specify one or more of the described features, numbers, steps, operations, elements, But do not preclude the presence or addition of steps, operations, elements, parts, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless otherwise defined, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the meaning of the context in the relevant art and, unless explicitly defined herein, are to be interpreted as ideal or overly formal Do not.

하기에서 설명될 실시예들은 메모리 객체를 처리하는데 사용될 수 있다. 메모리 객체를 처리하는 동작에는 메모리 객체를 할당(allocate)하는 동작, 메모리 객체를 해제(free)하는 동작, 메모리 객체를 캐싱(caching)하는 동작 중 적어도 하나가 포함될 수 있다. 실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 웨어러블 장치, 스마트 가전 기기, 지능형 자동차 등 다양한 형태의 제품으로 구현될 수 있다. 예를 들어, 실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 스마트 폰 등에서 메모리 객체를 처리하는데 적용될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.The embodiments described below can be used to process memory objects. The operations to process a memory object may include at least one of allocating a memory object, freeing a memory object, and caching a memory object. Embodiments may be implemented in a variety of products, such as personal computers, laptop computers, tablet computers, smart phones, wearable devices, smart home appliances, and intelligent automobiles. For example, embodiments may be applied to processing memory objects in personal computers, laptop computers, smart phones, and the like. Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. Like reference symbols in the drawings denote like elements.

도 1은 일실시예에 따라 비휘발성 메모리의 구조를 설명하기 위한 도면이다.1 is a diagram for explaining a structure of a nonvolatile memory according to an embodiment.

데이터를 저장할 수 있는 메모리의 종류로는 휘발성 메모리와 비휘발성 메모리가 존재한다. 휘발성 메모리는 저장된 데이터를 유지하기 위해서는 지속적인 전력 공급이 요구되는 메모리를 의미한다. 반면, 비휘발성 메모리는 지속적인 전력 공급이 요구되지 않는 메모리로서, 전력 공급이 중단되더라도 저장된 데이터를 유지할 수 있다. 즉, 비휘발성 메모리는 시스템이 종료되거나 재시작되더라도 저장된 데이터를 그대로 유지할 수 있으나, 휘발성 메모리의 경우 시스템이 종료되거나 재시작되면 저장된 데이터가 손실된다.There are volatile memory and nonvolatile memory as types of memory that can store data. Volatile memory is a memory that requires continuous power supply to maintain stored data. On the other hand, non-volatile memory is a memory that does not require continuous power supply, and can retain stored data even if the power supply is interrupted. That is, the nonvolatile memory can maintain the stored data even if the system is shut down or restarted, but in the case of volatile memory, the stored data is lost when the system is shut down or restarted.

메모리 객체는 사용자 응용 프로그램에 의해 생성된 데이터를 포함할 수 있다. 일반적으로 이러한 메모리 객체는 빈번히 할당되거나 또는 해제될 수 있다. 따라서, 이러한 메모리 객체가 휘발성 메모리가 아닌 비휘발성 메모리에 할당될 경우, 시스템이 종료되거나 재시작되더라도 할당된 메모리 객체가 손실되는 상황이 발생하지 않으며, 전력 공급이 중단되더라도 할당된 메모리 객체를 유지할 수 있다.The memory object may contain data generated by a user application program. In general, these memory objects may be allocated or freed frequently. Therefore, when such a memory object is allocated to a non-volatile memory other than a volatile memory, there is no possibility that the allocated memory object is lost even if the system is shut down or restarted, and the allocated memory object can be maintained even if the power supply is interrupted .

메모리 객체를 비휘발성 메모리에 할당하는 과정에 대해서는 도 1을 참조하여 설명한다.A process of allocating a memory object to a nonvolatile memory will be described with reference to FIG.

도 1을 참조하면, 하나 이상의 페이지(120, 130, 150)를 포함하는 비휘발성 메모리(100)가 도시된다.Referring to FIG. 1, a non-volatile memory 100 including one or more pages 120, 130, 150 is shown.

비휘발성 메모리(100)는 앞서 설명한 바와 같이 전력 공급이 중간에 중단되더라도 저장된 데이터를 유지할 수 있는 메모리로서, 메모리 객체 리스트(110), 복수의 페이지들(120, 130, 150)을 포함할 수 있다. 예시적으로 도시된 도 1에서는, 휘발성 메모리가 직접적으로 도시되지 않았으나, 비휘발성 메모리(100)와 함께 이용될 수도 있고 또는, 비휘발성 메모리(100)만을 이용하여 메모리 객체를 처리할 수도 있다.The non-volatile memory 100 may include a memory object list 110, a plurality of pages 120, 130 and 150 as a memory capable of holding stored data even if the power supply is interrupted as described above . In FIG. 1, which is illustratively shown, volatile memory is not directly shown, but may be used with non-volatile memory 100, or may only process memory objects using non-volatile memory 100.

먼저 메모리 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 참조될 수 있다. First, when an allocation request for a memory object occurs, the memory object list 110 included in the nonvolatile memory 100 can be referred to.

메모리 객체 리스트(110)는 비휘발성 메모리(100)에 저장되고 하나 이상의 구조체를 포함하는 페이지로 연결될 수 있다. 메모리 객체 리스트(110)는 비휘발성 메모리(100)의 슈퍼블록(superblock)에 포함될 수 있다. 슈퍼블록은 커널 영역에 존재하는 영속 객체 관리를 위한 루트 자료구조로서, 영속 객체를 관리하고 있는 모든 자료구조에 접근이 가능하다. 일실시예에 따른 슈퍼블록은 비휘발성 메모리(100)의 첫 번째 페이지에 고정 할당될 수 있다. The memory object list 110 may be stored in non-volatile memory 100 and may be linked to a page containing one or more structures. The memory object list 110 may be included in a superblock of the nonvolatile memory 100. [ Superblock is a root data structure for persistent object management in the kernel area. It can access all data structures that manage persistent objects. The super block according to an embodiment may be fixedly allocated to the first page of the non-volatile memory 100. [

메모리 객체 리스트(110)를 통해서, 하나 이상의 구조체를 포함하는 페이지로 연결될 수 있다.Through the memory object list 110, to a page containing one or more structures.

비휘발성 메모리(100)에는 하나 이상의 구조체를 포함하는 페이지(예컨대, 도 1의 제1 페이지(120), 제4 페이지(150) 등)와 하나 이상의 데이터 객체를 포함하는 페이지(예컨대, 도 1의 제2 페이지(130) 등)가 포함될 수 있다.Non-volatile memory 100 may include a page (e.g., page 120, page 150, etc. in Figure 1) and one or more pages that contain one or more data objects Second page 130, etc.) may be included.

예시적으로 도시된 도 1을 참조하면, 하나 이상의 구조체를 포함하는 페이지로 제1 페이지(120) 및 제4 페이지(150)가 도시되어 있다. 이하에서는 설명의 편의를 위해 제1 페이지(120)를 중심으로 설명한다. 다만, 제1 페이지(120)에 대한 설명은 제4 페이지(150)에도 제한 없이 동일하게 적용될 수 있다.Referring to FIG. 1, which is illustratively shown, a first page 120 and a fourth page 150 are illustrated as pages comprising one or more structures. Hereinafter, for convenience of explanation, the first page 120 will be mainly described. However, the description of the first page 120 may be applied to the fourth page 150 without limitation.

제1 페이지(120)에 포함된 구조체는 메타데이터로서, 예를 들어, 다른 구조체에 대한 데이터 또는 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 다시 말해, 구조체에는 다른 구조체를 관리하는 구조체와 하나 이상의 메모리 객체를 포함하는 페이지를 관리하는 구조체가 존재한다.The structure contained in the first page 120 may include, for example, data for another structure or data for a page including one or more memory objects as metadata. In other words, there is a structure in the structure that manages another structure, and a structure that manages pages that contain one or more memory objects.

이와 같은 구조체에 기초하여, 제1 페이지(120)에서는 제1 구조체와 나머지 구조체(예컨대, 제2 구조체, 제3 구조체 등)로 구분될 수 있다.Based on such a structure, the first page 120 may be divided into a first structure and a remaining structure (e.g., a second structure, a third structure, etc.).

여기서, 제1 구조체는 제1 페이지(120)에 첫 번째로 포함된 구조체로서, 제1 페이지(120)에 포함된 나머지 구조체에 대한 데이터를 포함할 수 있다. 제1 구조체는 제1 페이지(120)에 구조체를 할당하거나 또는 해제할 때 이용될 수 있다. 예를 들어, 제1 구조체는 제1 페이지(120)가 저장된 나머지 구조체의 타입, 비휘발성 메모리(100)에서 제1 페이지(120)의 주소 및 제1 페이지(120)에 저장된 나머지 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.Here, the first structure may be the first structure included in the first page 120, and may include data on the remaining structures included in the first page 120. The first structure may be used when assigning or releasing a structure to the first page 120. For example, the first structure may include the type of the remaining structure in which the first page 120 is stored, the address of the first page 120 in the non-volatile memory 100, and the bit for the remaining structure stored in the first page 120, And a map.

나머지 구조체는 제1 구조체를 제외한 제1 페이지(120)에 저장된 구조체로서, 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 나머지 구조체 각각은 하나 이상의 메모리 객체를 포함하는 페이지에 고유하게 대응할 수 있고, 대응하는 페이지에 대한 데이터를 포함할 수 있다. 예를 들어, 나머지 구체 각각은 대응하는 페이지에 포함된 데이터 객체의 타입, 대응하는 페이지의 주소, 대응하는 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다. 다시 말해, 하나 이상의 메모리 객체를 포함하는 하나의 페이지는 하나의 구조체에 의해 관리될 수 있다.The remaining structures are structures stored in the first page 120, excluding the first structure, and may include data for pages including one or more memory objects. Each of the remaining structures may uniquely correspond to a page containing one or more memory objects and may contain data for a corresponding page. For example, each of the remaining spheres may include at least one of a type of a data object contained in a corresponding page, an address of a corresponding page, and a bitmap for a memory object stored in a corresponding page. In other words, one page containing one or more memory objects may be managed by one structure.

예를 들어, 제1 페이지(120)에 포함된 제2 구조체는 하나 이상의 메모리 객체가 포함된 제2 페이지(130)에 대응되며, 제2 페이지(130)에 대한 데이터를 포함할 수 있다. 또한, 제3 구조체는 하나 이상의 메모리 객체가 포함된 다른 페이지에 대응되며, 해당 페이지에 대한 데이터를 포함할 수 있다.For example, the second structure included in the first page 120 corresponds to the second page 130, which includes one or more memory objects, and may include data for the second page 130. [ In addition, the third structure corresponds to another page including one or more memory objects, and may include data for the page.

제2 페이지(130)는 하나 이상의 데이터 객체를 포함하는 페이지로서, 예를 들어, 동일한 타입의 메모리 객체가 하나 이상 포함될 수 있다. 제2 페이지(130)에 포함된 데이터 객체는 요청에 의해 할당되거나 해제될 수 있다.Second page 130 is a page containing one or more data objects, for example one or more memory objects of the same type may be included. The data objects contained in the second page 130 may be allocated or released on request.

제4 페이지(150)는 하나 이상의 구조체를 포함하는 페이지를 나타낸다. 마찬가지로, 제4 페이지(150)에 첫 번째로 포함된 제4 구조체는 제4 페이지(150)에 포함된 나머지 구조체에 대한 데이터를 포함할 수 있다. 즉, 제4 구조체는 제4 페이지(150)에 포함된 나머지 구조체를 관리할 수 있다. 나머지 구조체는 하나 이상의 데이터 객체를 포함하는 페이지에 고유하게 대응되며, 대응하는 페이지에 대한 데이터를 포함할 수 있다.Fourth page 150 represents a page comprising one or more structures. Likewise, the fourth structure, which is included first in the fourth page 150, may include data for the remaining structures included in the fourth page 150. That is, the fourth structure may manage the remaining structures included in the fourth page 150. [ The rest of the structure uniquely corresponds to the page containing the one or more data objects, and may include data for the corresponding page.

여기서, 제1 구조체와 제4 구조체 각각은 해당 페이지에 포함된 나머지 구조체에 대한 데이터를 포함하는 구조체로서, 서로 연결될 수 있다. 예를 들어, 제1 구조체와 제4 구조체는 메모리 캐시 리스트(110)를 통해 서로 연결될 수 있다. 나머지 구조체에 대한 데이터를 포함하는 구조체들이 서로 연결됨으로써, 메모리 객체 리스트(110)는 비휘발성 메모리(100)에 저장된 나머지 구조체에 대한 데이터를 포함하는 구조체들에 모두 접근할 수 있으며, 이를 통해 하나 이상의 데이터 객체를 포함하는 페이지에 대한 데이터를 포함하는 나머지 구조체로도 접근이 가능하며, 나아가, 페이지에 포함된 데이터 객체까지 접근이 가능할 수 있다.Here, each of the first structure and the fourth structure is a structure including data on the remaining structures included in the page, and may be connected to each other. For example, the first structure and the fourth structure may be connected to each other through the memory cache list 110. By connecting the structures including the data for the remaining structures to each other, the memory object list 110 can access all the structures including the data for the remaining structures stored in the non-volatile memory 100, It is possible to access the remaining structures including the data on the page including the data object, and furthermore, it is possible to access the data object included in the page.

일실시예에 따라 비휘발성 메모리(100)에 할당된 하나 이상의 구조체를 포함하는 페이지와 하나 이상의 객체 데이터를 포함하는 페이지는 시스템이 재시작되더라도 다른 용도로 사용되지 못하도록 해당 페이지에 대한 재할당이 금지될 수 있다. 그래서, 메모리 객체를 영속적으로 저장하는 페이지 또는 구조체를 영속적으로 저장하는 페이지는 해당 페이지가 해제될 때까지 해당 페이지에 저장된 메모리 객체 또는 구조체를 유지할 수 있다.According to one embodiment, a page containing one or more structures assigned to the non-volatile memory 100 and a page containing one or more object data are prohibited from being reallocated to the page so that they can not be used for other purposes even if the system is restarted . Thus, a page that permanently stores a memory object or a page that permanently stores a structure may hold a memory object or structure stored in the page until the page is released.

예를 들어, 시스템(예컨대, 운영체제)가 시작되면, 비휘발성 메모리(100)의 첫 번째 페이지에 저장된 슈퍼블록이 확인될 수 있다. 슈퍼블록의 매직넘버를 통해, 객체 관리 자료구조가 존재하는지 여부가 확인될 수 있다. 객체 관리 자료구조가 존재하는 경우, 자료구조를 초기화하는 과정이 수행되지 않는다. 그리고, 자료구조가 저장되어 있는 페이지들을 확인함으로써, 해당 페이지가 재할당되지 않도록 프리 페이지 리스트에서 제거될 수 있다. 앞서 설명한 일련의 동작들은 HEAPO(Heap-based persistent object store)에 의해 수행될 수 있다.For example, when a system (e.g., operating system) is started, the super block stored in the first page of non-volatile memory 100 may be identified. Through the magic number of the superblock, it can be confirmed whether or not the object management data structure exists. If the object management data structure exists, the process of initializing the data structure is not performed. Then, by checking the pages where the data structure is stored, the pages can be removed from the free page list so that they are not reassigned. The above-described series of operations can be performed by a Heap-based persistent object store (HEAPO).

보다 구체적으로, 상술된 구조를 가지는 비휘발성 메모리(100)에 데이터 객체가 할당되는 과정은 다음과 같이 수행될 수 있다.More specifically, the process of allocating a data object to the nonvolatile memory 100 having the above-described structure can be performed as follows.

일실시예에 따라 데이터 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 확인될 수 있다. 그리고, 메모리 객체 리스트(110)를 통해, 하나 이상의 구조체가 포함된 제1 페이지(120)의 제1 구조체가 확인될 수 있다. 그리고, 제1 구조체를 통해 제1 페이지(120)에 포함된 나머지 구조체 각각에 대응하는 하나 이상의 데이터 객체를 포함하는 페이지에 데이터 객체의 할당이 가능한지 여부를 판단할 수 있다.When an allocation request for a data object occurs according to an embodiment, the memory object list 110 included in the nonvolatile memory 100 can be identified. Then, through the memory object list 110, the first structure of the first page 120 including one or more structures can be identified. It is also possible to determine whether a data object can be allocated to a page including one or more data objects corresponding to each of the remaining structures included in the first page 120 through the first structure.

예를 들어, 제1 페이지(120)에 포함된 제2 구조체를 참조하여, 제2 구조체에 대응하는 제2 페이지(130)에 데이터 객체의 할당이 가능한지 여부를 판단할 수 있다. 만약 제2 페이지(130)에 데이터 객체의 할당이 가능하지 않다면, 제3 구조체를 참조하여, 제3 구조체에 대응하는 페이지에 데이터 객체의 할당이 가능한지 여부를 추가적으로 판단할 수 있다.For example, referring to the second structure included in the first page 120, it can be determined whether or not the allocation of the data object to the second page 130 corresponding to the second structure is possible. If it is not possible to allocate a data object to the second page 130, it can additionally determine whether the allocation of the data object to the page corresponding to the third structure is possible by referring to the third structure.

반대로, 제2 페이지(130)에 데이터 객체의 할당이 가능하다면, 메모리 객체가 할당될 제2 페이지(130)의 여유 공간을 나타내는 제2 구조체의 비트맵이 업데이트되고, 제2 페이지(130)의 여유 공간에 대한 주소가 반환될 수 있다.Conversely, if it is possible to allocate a data object to the second page 130, the bitmap of the second structure indicating the free space of the second page 130 to which the memory object is to be allocated is updated, Addresses for free space can be returned.

그리고, 메모리 객체는 반환된 주소에 기초하여 제2 페이지(130)의 여유 공간에 영속적으로 저장될 수 있다.The memory object may then be permanently stored in the free space of the second page 130 based on the returned address.

도 2는 일실시예에 따른 메모리 캐시 리스트를 설명하기 위한 도면이다.FIG. 2 is a view for explaining a memory cache list according to an embodiment.

도 2를 참조하면, 메모리 캐시 리스트의 예시가 도시된다.Referring to FIG. 2, an example of a memory cache list is shown.

메모리 캐시 리스트는 하나 이상의 구조체를 포함하는 페이지의 첫 번째 구조체와 연결되는 헤더를 포함할 수 있다. 메모리 캐시 리스트의 헤더는 슈퍼블록에 포함되고, 여기서 헤더는 제1 페이지(120)의 제1 구조체와 연결될 수 있다. 헤더는 배열([0], [1], [2], ..., [n-1])로 구성되며, 각 배열의 원소는 서로 다른 종류의 메모리 객체 리스트의 헤더에 해당될 수 있다.The memory cache list may include a header associated with the first structure of a page containing one or more structures. The header of the memory cache list is included in the super block, where the header may be concatenated with the first structure of the first page 120. The header consists of an array ([0], [1], [2], ..., [n-1]). Elements of each array can correspond to different types of memory object list headers.

메모리 캐시 리스트는 헤더를 통해 배열의 원소를 하나씩 순회함으로써, 구조체가 저장되어 있는 모든 페이지에 접근이 가능할 수 있다. 배열의 원소를 순회하면서 비트맵을 확인하여 대응하는 페이지 내에 메모리 객체를 할당할 수 있는 여유 공간이 존재하는 배열의 원소를 찾을 수 있다.The memory cache list can access all the pages where the structure is stored by traversing the elements of the array one by one through the header. You can find the elements of the array where there is free space available to allocate memory objects within the corresponding page by checking the bitmap while traversing the elements of the array.

도 3은 일실시예에 따라 메모리 객체를 포함하는 페이지를 관리하는 제2 구조체를 설명하기 위한 도면이다.3 is a diagram for describing a second structure for managing a page including a memory object according to an embodiment.

도 3을 참조하면, 제2 구조체의 예시가 도시된다.Referring to Figure 3, an example of a second structure is shown.

제2 구조체는 도 1에 예시적으로 도시된 제1 페이지(120)에 포함된 구조체로서, 하나 이상의 메모리 객체를 포함하는 제2 페이지(130)에 대한 데이터를 포함할 수 있다. 예를 들어, 제2 구조체에는 제2 페이지(130)에 포함된 데이터 객체의 타입, 대응하는 제2 페이지(130)의 주소, 제2 페이지(130)에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.The second structure is a structure included in the first page 120, which is illustratively shown in FIG. 1, and may include data for a second page 130 that includes one or more memory objects. For example, in the second structure, at least one of the type of the data object included in the second page 130, the address of the corresponding second page 130, and the bitmap for the memory object stored in the second page 130 . ≪ / RTI >

특히, 제2 구조체에 포함된 비트맵은 제2 페이지(130)에 포함된 공간에 메모리 객체가 저장되어 있는지 여부를 나타낼 수 있다. 예를 들어, 비트맵에서 '1'은 대응하는 공간에 메모리 객체가 할당되어 있는 것을 나타내고, '0'은 대응하는 공간에 메모리 객체가 할당되어 있지 않은 것을 나타낸다. 따라서, 제2 구조체의 비트맵을 확인함으로써, 제2 구조체가 관리하는 제2 페이지(130)에 새로운 데이터 객체를 할당할 수 있는지 여부를 손쉽게 파악할 수 있다. 다시 말해, 하나 이상의 데이터 객체를 포함하는 페이지에 대한 메모리 객체의 할당 및 해제는 해당 페이지를 관리하는 구조체의 비트맵을 통해 수행될 수 있다.In particular, the bitmap included in the second structure may indicate whether or not the memory object is stored in the space included in the second page 130. For example, '1' in the bitmap indicates that a memory object is allocated in the corresponding space, and '0' indicates that no memory object is allocated in the corresponding space. Thus, by checking the bitmap of the second structure, it is easy to know whether or not a new data object can be allocated to the second page 130 managed by the second structure. In other words, the allocation and release of a memory object for a page containing one or more data objects can be performed through a bitmap of the structure that manages the page.

도 4는 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.4 is a diagram illustrating a process of allocating a memory object to a new page according to an embodiment of the present invention.

도 4를 참조하면, 기존의 페이지에 메모리 객체를 할당할 여유 공간이 없는 경우에 새로운 페이지에 메모리 객체를 할당하는 과정의 예시가 도시된다.Referring to FIG. 4, there is shown an example of a process of allocating a memory object to a new page when there is no space available for allocating a memory object to an existing page.

일실시예에 따라 데이터 객체에 대한 할당 요청이 발생하면, 비휘발성 메모리(100)에 포함된 메모리 객체 리스트(110)가 확인될 수 있다. 메모리 객체 리스트(110)에 포함된 헤더를 탐색함으로써, 하나 이상의 구조체들이 포함된 페이지의 첫 번째 구조체로 연결될 수 있다. 예를 들어, 메모리 객체 리스트(110)로부터 연결되고, 제1 페이지(120)에 포함된 제1 구조체가 확인될 수 있다. 제1 구조체를 통해 제1 페이지(120)에 포함된 나머지 구조체(예컨대, 제2 구조체, 제3 구조체 등)에 대응하는 페이지에 데이터 객체에 대한 할당이 가능한지 여부가 판단될 수 있다.When an allocation request for a data object occurs according to an embodiment, the memory object list 110 included in the nonvolatile memory 100 can be identified. By searching the headers contained in the memory object list 110, one or more structures can be linked to the first structure of the included page. For example, the first structure contained in the first page 120, which is connected from the memory object list 110, can be identified. It can be determined whether allocation to the data object is possible on the page corresponding to the remaining structure (for example, the second structure, the third structure, etc.) included in the first page 120 through the first structure.

만약 데이터 객체에 대한 할당이 가능하지 않은 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지(140)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제3 페이지(140)의 여유 공간에 대한 주소가 반환되고, 그에 따라 메모리 객체가 제3 페이지(140)에 영속적으로 저장될 수 있다.If allocation for a data object is not possible, a third page 140, which may store one or more memory objects, may be allocated to the non-volatile memory 100. An address for the free space of the third page 140 is then returned, and the memory object may be stored persistently in the third page 140 accordingly.

새로 할당된 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체가 제1 페이지(120)에 할당될 수 있다. 제3 구조체가 제1 페이지(120)에 새로 할당됨에 따라, 제3 구조체에 대한 데이터가 제1 페이지(120)의 제1 구조체에 추가될 수 있다. 다시 말해, 제3 구조체가 할당된 공간에 기초하여 제1 구조체의 비트맵이 업데이트될 수 있다.A third structure including data for the newly allocated third page 140 may be assigned to the first page 120. [ As the third structure is newly allocated to the first page 120, data for the third structure may be added to the first structure of the first page 120. [ In other words, the bitmap of the first structure may be updated based on the space allocated to the third structure.

도 5는 다른 일실시예에 따라 새로운 페이지에 메모리 객체를 할당하는 과정을 설명하기 위한 도면이다.5 is a diagram illustrating a process of allocating a memory object to a new page according to another embodiment of the present invention.

도 5를 참조하면, 기존의 페이지에 메모리 객체를 할당할 여유 공간이 없는 경우에 새로운 페이지에 메모리 객체를 할당하는 과정의 다른 예시가 도시된다.Referring to FIG. 5, another example of a process of allocating a memory object to a new page when there is no free space to allocate a memory object to an existing page is shown.

도 4의 경우와 마찬가지로, 일실시예에 따라 데이터 객체에 대한 할당 요청에 기초하여 제3 페이지(140)가 비휘발성 메모리(100)에 할당될 수 있다. 그리고, 제3 페이지(140)의 여유 공간에 대한 주소가 반환되고, 그에 따라 메모리 객체가 제3 페이지(140)에 영속적으로 저장될 수 있다.As in the case of FIG. 4, a third page 140 may be allocated to the non-volatile memory 100 based on an allocation request for a data object, according to one embodiment. An address for the free space of the third page 140 is then returned, and the memory object may be stored persistently in the third page 140 accordingly.

다만, 제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 구조체로도 연결될 수 있다.However, if there is no space available for allocating the third structure including the data for the third page 140 newly allocated to the first page 120, the fourth page 150 including one or more structures may be used as the non- Volatile memory 100 as shown in FIG. A fourth structure including data on another structure to be included in the fourth page 150 may be allocated to the fourth page 150. [ In other words, a fourth structure that manages another structure to be included in the fourth page 150 may be allocated to the fourth page 150. [ Here, the fourth structure, which is included first in the fourth page 150, may be connected to the first structure included in the first page 120 first. Thus, the memory object list may also be concatenated into the fourth structure of the newly allocated fourth page 150.

그리고, 제3 페이지(140)에 대한 데이터를 포함하는 제3 구조체가 제4 페이지(150)에 할당되고, 제3 구조체의 할당에 기초하여 제4 구조체가 업데이트될 수 있다. 제3 구조체가 할당된 공간에 기초하여 제4 구조체의 비트맵이 업데이트될 수 있다.Then, a third structure including data for the third page 140 is allocated to the fourth page 150, and the fourth structure may be updated based on the allocation of the third structure. The bitmap of the fourth structure may be updated based on the space allocated to the third structure.

도 6은 일실시예에 따른 메모리 객체 처리 방법을 나타낸 도면이다.FIG. 6 illustrates a method of processing a memory object according to an exemplary embodiment. Referring to FIG.

도 6을 참조하면, 일실시예에 따른 메모리 객체 처리 장치의 프로세서에 의해 수행되는 메모리 객체 처리 방법이 도시된다.Referring to FIG. 6, a method of processing a memory object performed by a processor of a memory object processing apparatus according to an embodiment is shown.

단계(610)에서, 메모리 객체 처리 장치는 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인한다. 메모리 캐시 리스트는 비휘발성 메모리의 슈퍼블록에 저장될 수 있다.In step 610, the memory object processing device checks the memory cache list stored in the non-volatile memory based on the allocation request for the memory object. The memory cache list may be stored in a super block of non-volatile memory.

단계(620)에서, 메모리 객체 처리 장치는 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인한다.At step 620, the memory object processing device concatenates with the memory cache list and identifies the first structure contained in the first page.

단계(630)에서, 메모리 객체 처리 장치는 제1 구조체에 기초하여 제1 페이지에 포함된 제2 구조체를 확인함으로써 제2 구조체에 대응하는 제2 페이지에 메모리 객체의 할당이 가능한지 여부를 판단한다.In step 630, the memory object processing apparatus determines whether allocation of the memory object to the second page corresponding to the second structure is possible by checking the second structure included in the first page based on the first structure.

제1 구조체는 제1 페이지에 제2 구조체에 대한 데이터를 포함하고, 제2 구조체는 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 페이지에 대한 데이터를 포함할 수 있다. 제1 구조체는 제1 페이지에 저장된 제2 구조체의 타입, 비휘발성 메모리에서 제1 페이지의 주소 및 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함할 수 있다. 제2 구조체는 제2 페이지에 저장된 데이터 객체의 타입, 비휘발성 메모리에서 제2 페이지의 주소 및 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함할 수 있다.The first structure may include data for a second structure on a first page and the second structure may include data for a page that is distinct from the first page and includes one or more memory objects. The first structure may include at least one of a type of the second structure stored in the first page, an address of the first page in the nonvolatile memory, and a bitmap for the second structure stored in the first page. The second structure may include at least one of a type of the data object stored in the second page, an address of the second page in the non-volatile memory, and a bit map for the memory object stored in the second page.

제2 페이지에 메모리 객체의 할당이 가능한 경우, 단계(640)에서 메모리 객체 처리 장치는 메모리 객체를 제2 페이지의 여유 공간에 영속적으로 저장할 수 있다. 메모리 객체 처리 장치는 제2 페이지에 메모리 객체의 할당이 가능한 경우, 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 제2 구조체의 비트맵을 업데이트하고 여유 공간에 대한 주소를 반환할 수 있다.If it is possible to allocate a memory object to the second page, then in step 640 the memory object processing device may persistently store the memory object in the free space of the second page. The memory object processing apparatus can update the bitmap of the second structure indicating the free space of the second page to which the memory object is to be allocated and return the address for the free space when the memory object can be allocated to the second page.

제2 페이지에 메모리 객체의 할당이 가능하지 않는 경우, 단계(650)에서 메모리 객체 처리 장치는 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 비휘발성 메모리에 할당할 수 있다. 그리고, 메모리 객체 처리 장치는 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환할 수 있다. 그리고, 메모리 객체 처리 장치는 3 페이지를 관리하는 제3 구조체를 제1 페이지에 할당하고, 제3 구조체가 할당된 공간에 기초하여 제1 구조체의 비트맵을 업데이트할 수 있다.If it is not possible to allocate a memory object to the second page, then in step 650 the memory object processing apparatus may allocate to the non-volatile memory a third page capable of storing one or more memory objects. Then, the memory object processing apparatus can return the address of the free space of the third page to which the memory object is to be allocated. Then, the memory object processing apparatus can allocate the third structure for managing the third page to the first page, and update the bitmap of the first structure based on the allocated space of the third structure.

만약 제3 페이지를 관리하는 제3 구조체를 제1 페이지에 할당할 수 없는 경우, 메모리 객체 처리 장치는 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 비휘발성 메모리에 할당할 수 있다. 그리고, 메모리 객체 처리 장치는 제3 구조체를 제4 페이지에 할당하고, 제3 구조체가 할당된 공간에 기초하여 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트할 수 있다.If the third structure managing the third page can not be allocated to the first page, the memory object processing apparatus can allocate to the nonvolatile memory a fourth page capable of storing one or more structures. Then, the memory object processing apparatus can allocate the third structure to the fourth page, and update the bitmap of the fourth structure included in the fourth page based on the allocated space of the third structure.

제1 페이지에 첫 번째로 포함된 제1 구조체와 제4 페이지에 첫 번째로 포함된 제4 구조체는 메모리 캐시 리스트를 통해 서로 연결될 수 있다.The first structure included first on the first page and the fourth structure included first on the fourth page may be connected to each other through the memory cache list.

도 6에 도시된 각 단계들에는 도 1 내지 도 5를 통하여 전술한 사항들이 그대로 적용되므로, 보다 상세한 설명은 생략한다.The steps described above with reference to FIGs. 1 through 5 are applied to each step shown in FIG. 6 as it is, and a detailed description will be omitted.

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented in hardware components, software components, and / or a combination of hardware components and software components. For example, the devices, methods, and components described in the embodiments may be implemented within a computer system, such as, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, such as an array, a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For ease of understanding, the processing apparatus may be described as being used singly, but those skilled in the art will recognize that the processing apparatus may have a plurality of processing elements and / As shown in FIG. For example, the processing unit may comprise a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as a parallel processor.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the foregoing, and may be configured to configure the processing device to operate as desired or to process it collectively or collectively Device can be commanded. The software and / or data may be in the form of any type of machine, component, physical device, virtual equipment, computer storage media, or device , Or may be permanently or temporarily embodied in a transmitted signal wave. The software may be distributed over a networked computer system and stored or executed in a distributed manner. The software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to an embodiment may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions to be recorded on the medium may be those specially designed and configured for the embodiments or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Magneto-optical media, and hardware devices specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described with reference to the drawings, various technical modifications and variations may be applied to those skilled in the art. For example, it is to be understood that the techniques described may be performed in a different order than the described methods, and / or that components of the described systems, structures, devices, circuits, Lt; / RTI > or equivalents, even if it is replaced or replaced.

100: 비휘발성 메모리
110: 메모리 객체 리스트
120: 제1 페이지
130: 제2 페이지
150: 제3 페이지
100: Nonvolatile memory
110: Memory object list
120: 1st page
130: Page 2
150: Page 3

Claims (16)

메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하는 단계;
상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하는 단계; 및
상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하는 단계
를 포함하고,
상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장되는, 메모리 객체 처리 방법.
Identifying a memory cache list stored in a non-volatile memory based on an allocation request for the memory object;
Identifying a first structure associated with the memory cache list and included in a first page; And
Determining whether allocation of the memory object to a second page corresponding to the second structure is possible by identifying a second structure included in the first page based on the first structure
Lt; / RTI >
Wherein the first page and the second page are stored in the non-volatile memory.
제1항에 있어서,
상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고,
상기 제2 구조체는,
상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함하는, 메모리 객체 처리 방법.
The method according to claim 1,
Wherein the first structure includes data for the second structure on the first page,
The second structure may include:
And data for the page separated from the first page and comprising one or more memory objects.
제1항에 있어서,
상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는 단계
를 더 포함하는, 메모리 객체 처리 방법.
The method according to claim 1,
Updating a bitmap of the second structure indicating a free space of a second page to which the memory object is to be allocated and returning an address for the free space when the memory object can be allocated to the second page
Further comprising the steps of:
제3항에 있어서,
상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는 단계
를 더 포함하는, 메모리 객체 처리 방법.
The method of claim 3,
Permanently storing the memory object in the free space of the second page
Further comprising the steps of:
제1항에 있어서,
상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및
상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는 단계
를 더 포함하는, 메모리 객체 처리 방법.
The method according to claim 1,
Assigning to the non-volatile memory a third page capable of storing one or more memory objects if the second page is not allocatable to the memory object; And
Returning an address for a free space of a third page to which the memory object is to be allocated
Further comprising the steps of:
제5항에 있어서,
상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제1 구조체의 비트맵을 업데이트하는 단계
를 더 포함하는, 메모리 객체 처리 방법.
6. The method of claim 5,
Allocating a third structure for managing the third page to the first page and updating a bitmap of the first structure based on the space allocated for the third structure
Further comprising the steps of:
제5항에 있어서,
상기 제3 페이지를 관리하는 제3 구조체를 상기 제1 페이지에 할당할 수 없는 경우, 하나 이상의 구조체를 저장할 수 있는 제4 페이지를 상기 비휘발성 메모리에 할당하는 단계; 및
상기 제3 구조체를 상기 제4 페이지에 할당하고, 상기 제3 구조체가 할당된 공간에 기초하여 상기 제4 페이지에 첫 번째로 포함된 제4 구조체의 비트맵을 업데이트하는 단계
를 더 포함하는, 메모리 객체 처리 방법.
6. The method of claim 5,
Allocating to the non-volatile memory a fourth page capable of storing one or more structures when the third structure managing the third page can not be allocated to the first page; And
Assigning the third structure to the fourth page, and updating the bitmap of the fourth structure included first in the fourth page based on the space allocated by the third structure
Further comprising the steps of:
제7항에 있어서,
상기 제1 페이지에 첫 번째로 포함된 제1 구조체와 상기 제4 페이지에 첫 번째로 포함된 제4 구조체는, 상기 메모리 캐시 리스트를 통해 서로 연결되는, 메모리 객체 처리 방법.
8. The method of claim 7,
Wherein a first structure included first in the first page and a fourth structure included first in the fourth page are connected to each other through the memory cache list.
제1항에 있어서,
상기 메모리 캐시 리스트는, 상기 비휘발성 메모리의 슈퍼블록에 저장되는, 메모리 객체 처리 방법.
The method according to claim 1,
Wherein the memory cache list is stored in a super block of the non-volatile memory.
제1항에 있어서,
상기 제1 구조체는,
상기 제1 페이지에 저장된 제2 구조체의 타입, 상기 비휘발성 메모리에서 제1 페이지의 주소 및 상기 제1 페이지에 저장된 제2 구조체에 대한 비트맵 중 적어도 하나를 포함하는, 메모리 객체 처리 방법.
The method according to claim 1,
The first structure may include:
The type of the second structure stored in the first page, the address of the first page in the non-volatile memory, and the bitmap for the second structure stored in the first page.
제1항에 있어서,
상기 제2 구조체는,
상기 제2 페이지에 저장된 데이터 객체의 타입, 상기 비휘발성 메모리에서 제2 페이지의 주소 및 상기 제2 페이지에 저장된 메모리 객체에 대한 비트맵 중 적어도 하나를 포함하는, 메모리 객체 처리 방법.
The method according to claim 1,
The second structure may include:
A type of data object stored in the second page, an address of a second page in the non-volatile memory, and a bit map for a memory object stored in the second page.
메모리 객체를 처리하는 프로세서
를 포함하고,
상기 프로세서는,
상기 메모리 객체에 대한 할당 요청에 기초하여 비휘발성 메모리에 저장된 메모리 캐시 리스트를 확인하고, 상기 메모리 캐시 리스트와 연결되고 제1 페이지에 포함된 제1 구조체를 확인하며, 상기 제1 구조체에 기초하여 상기 제1 페이지에 포함된 제2 구조체를 확인함으로써 상기 제2 구조체에 대응하는 제2 페이지에 상기 메모리 객체의 할당이 가능한지 여부를 판단하고,
상기 제1 페이지 및 제2 페이지는 상기 비휘발성 메모리에 저장되는, 메모리 객체 처리 장치.
Processor for processing memory objects
Lt; / RTI >
The processor comprising:
Identifying a memory cache list stored in a non-volatile memory based on an allocation request for the memory object, identifying a first structure associated with the memory cache list and included in a first page, Determining whether allocation of the memory object is possible to a second page corresponding to the second structure by checking the second structure included in the first page,
Wherein the first page and the second page are stored in the non-volatile memory.
제12항에 있어서,
상기 제1 구조체는, 상기 제1 페이지에 상기 제2 구조체에 대한 데이터를 포함하고,
상기 제2 구조체는,
상기 제1 페이지와 구분되고 하나 이상의 메모리 객체를 포함하는 상기 페이지에 대한 데이터를 포함하는, 메모리 객체 처리 장치.
13. The method of claim 12,
Wherein the first structure includes data for the second structure on the first page,
The second structure may include:
And data for the page separated from the first page and comprising one or more memory objects.
제12항에 있어서,
상기 프로세서는,
상기 제2 페이지에 상기 메모리 객체의 할당이 가능한 경우, 상기 메모리 객체가 할당될 제2 페이지의 여유 공간을 나타내는 상기 제2 구조체의 비트맵을 업데이트하고 상기 여유 공간에 대한 주소를 반환하는, 메모리 객체 처리 장치.
13. The method of claim 12,
The processor comprising:
Updating a bitmap of the second structure indicating a free space of a second page to which the memory object is to be allocated and returning an address for the free space when the memory object can be allocated to the second page, Processing device.
제14항에 있어서,
상기 프로세서는,
상기 메모리 객체를 상기 제2 페이지의 여유 공간에 영속적으로 저장하는, 메모리 객체 처리 장치.
15. The method of claim 14,
The processor comprising:
And permanently stores the memory object in the free space of the second page.
제12항에 있어서,
상기 프로세서는,
상기 제2 페이지에 상기 메모리 객체의 할당이 가능하지 않는 경우, 하나 이상의 메모리 객체를 저장할 수 있는 제3 페이지를 상기 비휘발성 메모리에 할당하고,
상기 메모리 객체가 할당될 제3 페이지의 여유 공간에 대한 주소를 반환하는, 메모리 객체 처리 장치.
13. The method of claim 12,
The processor comprising:
Allocating to the non-volatile memory a third page capable of storing one or more memory objects if the allocation of the memory object to the second page is not possible,
And returns an address for free space of a third page to which the memory object is to be allocated.
KR1020160155961A 2016-04-26 2016-11-22 Method and apparatus for processing memory object on non-volatile memory KR101891264B1 (en)

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 true KR20170122088A (en) 2017-11-03
KR101891264B1 KR101891264B1 (en) 2018-09-28

Family

ID=60383991

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160155961A KR101891264B1 (en) 2016-04-26 2016-11-22 Method and apparatus for processing memory object on non-volatile memory

Country Status (1)

Country Link
KR (1) KR101891264B1 (en)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101113755B1 (en) 2011-01-28 2012-02-27 엘아이지넥스원 주식회사 Memory management method using free memory management structure

Also Published As

Publication number Publication date
KR101891264B1 (en) 2018-09-28

Similar Documents

Publication Publication Date Title
US11620060B2 (en) Unified hardware and software two-level memory
US9390028B2 (en) Coordination between memory-saving mechanisms in computers that run virtual machines
US20230196502A1 (en) Dynamic kernel memory space allocation
KR101786871B1 (en) Apparatus for processing remote page fault and method thereof
US8037279B2 (en) Method and system for cross-domain data sharing
JP2020046963A (en) Memory system and control method
US10705951B2 (en) Shared fabric attached memory allocator
KR102275563B1 (en) Host-managed non-volatile memory
CN103577345A (en) Methods and structure for improved flexibility in shared storage caching by multiple systems
US8799611B2 (en) Managing allocation of memory pages
US9336065B2 (en) Semiconductor device and memory protection method
TW201935223A (en) Memory system and method for controlling nonvolatile memory
US20160179580A1 (en) Resource management based on a process identifier
CN105138481A (en) Stored data processing method and apparatus and system
US9104583B2 (en) On demand allocation of cache buffer slots
US8423712B2 (en) Methods and systems for releasing and re-allocating storage segments in a storage volume
US8274521B2 (en) System available cache color map
US10152258B1 (en) Big block allocation of persistent main memory
KR101891264B1 (en) Method and apparatus for processing memory object on non-volatile memory
JP7217341B2 (en) How processors and registers are inherited
US10168911B1 (en) Defragmentation of persistent main memory
KR101834082B1 (en) Apparatus and method of managing multi solid state disk system
KR20090131142A (en) Apparatus and method for memory management
KR20190026269A (en) Method of managing memory based on new memory, and apparatuses performing the same
KR101887663B1 (en) Method and apparatus for processing data using dummy page

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)