KR101726361B1 - 하이브리드 가비지 수집 방법 및 장치 - Google Patents

하이브리드 가비지 수집 방법 및 장치 Download PDF

Info

Publication number
KR101726361B1
KR101726361B1 KR1020150101973A KR20150101973A KR101726361B1 KR 101726361 B1 KR101726361 B1 KR 101726361B1 KR 1020150101973 A KR1020150101973 A KR 1020150101973A KR 20150101973 A KR20150101973 A KR 20150101973A KR 101726361 B1 KR101726361 B1 KR 101726361B1
Authority
KR
South Korea
Prior art keywords
garbage
area
garbage collection
collecting
bit
Prior art date
Application number
KR1020150101973A
Other languages
English (en)
Other versions
KR20160122621A (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 KR20160122621A publication Critical patent/KR20160122621A/ko
Application granted granted Critical
Publication of KR101726361B1 publication Critical patent/KR101726361B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

본 발명은 하이브리드 가비지 수집 방법 및 장치에 관한 것이다. 본 발명에 따르면, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비 휘발성 메모리에 일정 단위로 할당된 영역 중 상기 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 단계; 및 상기 비 휘발성 메모리에 사상된 상기 일정 단위의 단위 영역 내 일부 영역을 분할하여 상기 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집하는 단계를 포함하는 가비지 수집 방법이 제공된다. 본 발명에 따르면, 효율적인 메모리 관리를 통해 메모리 할당 오류나 메모리 고갈로 인한 오작동을 예방할 수 있다.

Description

하이브리드 가비지 수집 방법 및 장치{METHOD AND APPARATUS FOR HYBRID GARBAGE COLLECTION}
본 발명은, 하이브리드 가비지 수집 방법 및 장치에 관한 것이다.
메모리에서의 가비지 수집(garbage collection)은 메모리의 할당된 영역이 접근 불가능한 경우 메모리의 누수를 막기 위한 기술이다. 대부분의 프로그래밍 언어에서 런타임 시스템은 메모리 할당 관련 정보를 관리한다.
기존 비 휘발성 메모리를 사용하는 운영체제에서는 속도 등 여러 가지 이점을 얻기 위해서 휘발성 메모리와 달리 더 이상 필요가 없어질 때까지 계속 유지시키도록 영속적으로 비 휘발성 메모리에 자료구조 저장 공간을 할당한다.
이러한 기술을 이용하여 비 휘발성 메모리를 사용하는 운영체제 및 장치에서 메모리 가비지 수집을 적용하는데 있어 기본적인 개념의 차이 때문에 문제가 발생한다.
본 발명은 상술한 문제점을 모두 해결하는 것을 목적으로 한다.
본 발명은, 비 휘발성 메모리에서의 특수성을 고려하여 메모리의 누수를 이중으로 방지하는 것을 제공하는 것을 다른 목적으로 한다.
본 발명은, 효율적인 메모리 관리를 통해 메모리 할당 오류나 메모리 고갈로 인한 오작동을 예방하여 비 휘발성 메모리를 사용하는 운영체제 및 장치의 성능을 향상시키는 것을 또 다른 목적으로 한다.
상기한 바와 같은 본 발명의 목적을 달성하고, 후술하는 본 발명의 특징적인 효과를 실현하기 위한, 본 발명의 특징적인 구성은 하기와 같다.
일실시예에 따른, 가비지 수집 방법에 있어서, 가비지 수집 방법은, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비 휘발성 메모리에 일정 단위로 할당된 영역 중 상기 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 단계; 및 상기 비 휘발성 메모리에 사상된 상기 일정 단위의 단위 영역 내 일부 영역을 분할하여 상기 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집하는 단계를 포함할 수 있다.
다른 실시예에 따른, 가비지 수집 방법에 있어서, 상기 내부 가비지를 수집하는 단계는, 동적으로 할당 또는 해제되는 노드들과 관련된 정보를 상기 비 휘발성 메모리 내 할당정보영역에 저장하는 단계; 루트 노드로부터 순차적으로 노드들을 상기 할당정보영역과 비교함으로써, 상기 할당정보영역에 존재하지만 접근이 불가능한 노드를 추출하는 단계; 및 상기 추출된 노드에 대해 할당된 비 휘발성 메모리의 할당 영역을 내부 가비지로 설정하는 단계를 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 방법에 있어서, 상기 내부 가비지로 설정하는 단계는, 상기 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 가비지를 수집하는 것을 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 방법에 있어서, 상기 내부 가비지로 설정하는 단계는, 상기 비 휘발성 메모리를 제어하는 컨트롤러가 수행하는 프로세스의 상태를 고려하여 가비지를 수집하는 것을 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 방법에 있어서, 상기 외부 가비지를 수집하는 단계는, 상기 일정 단위로 구분된 영역마다 대응되는 비트를 가지는 비트맵 영역을 고려하여 외부 가비지를 수집하는 것을 포함할 수 있다.
일실시예에 따른, 가비지 수집 방법에 있어서, 가비지 수집 방법은, 비 휘발성 메모리의 영역을 일정한 단위의 세그먼트들로 분할하는 단계; 상기 비 휘발성 메모리의 영역에서 상기 분할된 세그먼트마다 대응되는 비트를 가지는 비트맵 영역을 생성하는 단계; 상기 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비트맵 영역이 가지는 비트 중 일부의 비트를 비교하여, 상기 비 휘발성 메모리에 할당된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 단계를 포함할 수 있다.
다른 실시예에 따른, 가비지 수집 방법에 있어서, 가비지 수집 방법은, 상기 분할된 세그먼트들 중 하나 이상의 세그먼트들을 상기 시스템의 프로세스별 객체저장소로 생성하는 단계;를 더 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 방법에 있어서, 상기 외부 가비지를 수집하는 단계는, 상기 비 휘발성 메모리와 연결된 시스템의 재시작 여부, 기설정된 수행 주기, 가용 메모리 크기 중 적어도 하나를 고려하여 가비지를 수집하는 것을 포함할 수 있다.
일실시예에 따른, 가비지 수집 장치에 있어서, 가비지 수집 장치는, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비 휘발성 메모리에 일정 단위로 할당된 영역 중 상기 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 외부 가비지 수집부; 상기 비 휘발성 메모리에 사상된 상기 일정 단위의 단위 영역 내 일부 영역을 분할하여 상기 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집하는 내부 가비지 수집부를 포함할 수 있다.
다른 실시예에 따른, 가비지 수집 장치에 있어서, 상기 내부 가비지를 수집부는, 동적으로 할당 또는 해제되는 노드들과 관련된 정보를 상기 비 휘발성 메모리 내 할당정보영역에 저장하는 할당정보영역 저장부; 루트 노드로부터 순차적으로 노드들을 상기 할당정보영역과 비교함으로써, 상기 할당정보영역에 존재하지만 접근이 불가능한 노드를 추출하는 접근 불가능 노드 추출부; 및 상기 추출된 노드에 대해 할당된 비 휘발성 메모리의 할당 영역을 내부 가비지로 설정하는 내부 가비지 설정부를 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 장치에 있어서, 상기 내부 가비지 설정부는, 상기 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 가비지를 수집하는 것을 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 장치에 있어서, 상기 내부 가비지 설정부는, 상기 비 휘발성 메모리를 제어하는 컨트롤러가 수행하는 프로세스의 상태를 고려하여 가비지를 수집하는 것을 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 장치에 있어서, 상기 외부 가비지 수집부는, 상기 일정 단위로 구분된 영역마다 대응되는 비트를 가지는 비트맵 영역을 고려하여 외부 가비지를 수집하는 것을 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 장치에 있어서, 상기 외부 가비지 수집부는, 비 휘발성 메모리의 영역을 일정한 단위의 고정된 세그먼트들로 분할하는 세그먼트 분할부; 상기 비 휘발성 메모리의 영역에서 상기 분할된 세그먼트마다 대응되는 비트를 가지는 비트맵 영역을 생성하는 비트맵 영역 생성부; 및 상기 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비트맵 영역이 가지는 비트 중 일부의 비트를 비교하여, 상기 비 휘발성 메모리에 할당된 영역이 반환되지 않음으로 발생되는 외부 가비지를 설정하는 외부 가비지 설정부를 포함할 수 있다.
또 다른 실시예에 따른, 가비지 수집 장치에 있어서, 가비지 수집 장치는, 상기 분할한 세그먼트들 중 하나 이상의 세그먼트들을 상기 시스템의 프로세스별 객체저장소로 생성하는 객체저장소 생성부;를 더 포함할 수 있다.
본 발명은, 비 휘발성 메모리에서의 특수성을 고려할 수 있다. 그러므로, 본 발명은, 이중으로 메모리의 누수를 방지할 수 있는 효과가 있다.
본 발명은, 효율적인 메모리 관리를 통해 메모리 할당 오류나 메모리 고갈로 인한 오작동을 예방할 수 있다. 그러므로, 본 발명은, 비 휘발성 메모리를 사용하는 운영체제 및 장치의 성능을 향상시키는 효과가 있다.
도 1은 본 발명의 일실시예에 따른 가비지 수집 방법을 나타내는 흐름도이다.
도 2는 본 발명의 일실시예에 따른 외부 가비지를 수집하는 방법을 나타내는 것이다.
도 3은 본 발명의 일실시예에 따른 객체저장소의 사상 과정을 나타내는 흐름도이다.
도 4는 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정 중 초기 상태를 나타내는 것이다.
도 5는 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정 중 일부를 나타내는 것이다.
도 6은 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정을 나타내는 것이다.
도 7은 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정의 일부를 나타내는 것이다.
도 8은 본 발명의 일실시예에 따른 가비지를 수집하는 방법을 나타내는 것이다.
도 9는 본 발명의 일실시예에 따른 외부 가비지를 설정하는 것을 나타내는 것이다.
도 10은 본 발명의 일실시예에 따른 외부 가비지 수집 이후를 나타내는 것이다.
도 11은 본 발명의 일실시예에 따른 가비지 수집 장치로서, 가비지 수집 장치를 나타내는 블록도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명은, 비 휘발성 메모리를 위한 하이브리드 가비지 컬렉션 기법 및 장치에 관한 것으로, 구체적으로는, 휘발성 메모리와는 다른 비 휘발성 메모리의 특성에 적합한 하이브리드 메모리 가비지 컬렉션 기법 및 장치를 제안한다.
가비지 수집 장치가 수행하는 가비지 수집 방법은, 메모리 가비지 컬렉션 기법 또는 장치에 적용될 수 있다. 예를 들면, 가비지 수집 방법은, Spin Torque Transfer Magnetoresistive RAM(STT-MRAM), Ferroelectric RAM(FRAM), Phase-change RAM(PRAM), Resistive (RRAM), Nano RAM(NRAM) 등 비 휘발성 메모리를 사용하는 장치 또는 운영체제에 적용될 수 있다.
가비지 수집 장치는, 사용자의 실수나 시스템의 오류 등에 의해 할당된 영역을 가리키는 포인터가 단절되어 할당된 영역에 더 이상 접근할 수 없는 경우에 그 영역의 할당을 해제하는 가비지 수집 방법을 수행할 수 있다.
가비지 수집 장치는, 기존의 휘발성 메모리를 사용하는 운영체제 및 장치에서의 기술과 다르게 비 휘발성 메모리를 사용하는 운영체제 및 장치에서 보조 기억장치의 자료를 매번 직렬화(serialization)하여 주 기억장치로 복사할 필요가 없다. 또한, 가비지 수집 장치는, 비 휘발성 메모리로 구성된 주 기억장치 내에 더 이상 필요가 없어질 때까지 계속 유지시키는 영속적으로 저장 공간을 할당하고 직렬화 된 자료를 저장하여 매번 다시 직렬화하는 과부하가 줄어드는 방식의 설계를 사용할 수 있다.
일실시예에 따르면, “Object A”는 프로세스 A가 소유한 메모리 영역들이라고 가정할 수 있다. 이때, “Object A”는 A의 힙(heap), 즉 동적 메모리를 할당하기 위한 공간일 수 있다. 예를 들어, 프로세스 A의 힙 영역은 프로세스 주소공간 0, 1, 4일 수 있다.
일반적으로, C언어를 제외한 휘발성 메모리 환경에서 힙 영역 내에서의 동적 메모리 할당은, 가비지 수집 등의 메모리 관리를 런타임 시스템에 위임하고 있다. 또한, 프로세스마다 생성되는 힙 영역의 프로세스 주소 공간 단위에 대해서는 별도의 가비지 수집을 하지 않을 경우, 내부 가비지와 외부 가비지가 발생하는 문제가 발생될 수 있다. 내부 가비지와 외부 가비지에 대하여는 하기에서 자세히 설명하기로 한다.
일실시예에 따르면, 내부 가비지는 힙 영역 내 동적 메모리 할당과정에서 발생하는 가비지일 수 있다. 예를 들면, 동적 비 휘발성 메모리 환경에서 주 기억장치 내에 사용자의 필요에 따라서 직접적이고 명시적으로 영속적으로 저장 공간을 할당하고 필요가 없어지면 해제해야 한다. 따라서, 런타임 시스템에 메모리 관리를 위임하고 지원받을 수 없다. 또한, 사용자의 과실로 할당된 메모리가 정상적으로 해제되지 않거나 노드와 포인터로 연결된 자료 구조에서 삽입 연산 중간에 운영체제의 문제 또는 전원 공급 장애 등 장치 상의 문제가 갑작스럽게 발생할 수 있다. 이때, 일부 포인터가 단절되고 할당된 메모리에 접근할 수 없는 문제가 발생할 수도 있다.
또한, 일실시예에 따르면, 외부 가비지는 힙 영역을 구성하는 프로세스 주소 공간 단위에 대한 가비지일 수 있다. 휘발성 메모리 환경에서는, 프로세스가 종료되면 힙 영역을 포함한 모든 메모리를 반환한다. 이때, 갑작스런 전원 장애 등으로 시스템이 종료 혹은 재 시작 되는 경우에도 휘발성 메모리의 모든 내용이 휘발되기 때문에 별도의 가비지 수집이 필요하지 않을 수 있다. 하지만, 비 휘발성 메모리에서는, 주 기억장치 내에서 자료가 영속적으로 저장되고 관리될 수 있으므로, 개념적으로 보조 기억장치의 파일시스템과 유사할 수 있다. 예를 들면, 프로세스가 소멸되면 자동으로 모든 메모리가 반환되는 휘발성 메모리와는 다르게, 비 휘발성 메모리에서는 프로세스가 종료되어도 할당된 메모리가 반환되지 않을 수 있다. 또한, 운영체제의 문제 또는 전원 공급 장애 등 장치 상의 문제가 갑자기 발생했을 경우에도 메모리의 내용이 남아있을 수 있다. 이때, 어떤 프로세스의 주소 공간이 프로세스가 사용하는 하나의 힙 영역을 구성하는 프로세스 주소 공간에 대한 정보도 유지될 수 있다. 물론, 비 휘발성 메모리에서도 휘발성 메모리에서와 같이 프로세스의 실행을 위한 힙 등의 가상 메모리 공간을 만들 수도 있다. 비 휘발성 메모리에서는, 프로세스가 소멸되어도 힙 등의 가상 메모리 공간이 유지된다는 점에서 차이가 있다. 이때, 힙 등의 가상 메모리 공간은 객체저장소라고 가정할 수 있다.
도 1은 본 발명의 일실시예에 따른 가비지 수집 방법을 나타내는 흐름도이다.
먼저, 도 1을 참조하면, 가비지 수집 장치는, 하기의 단계를 포함하여 가비지 수집 방법을 수행할 수 있다. 이때, 가비지 수집 장치는, 프로세서, 메모리, 전자 회로, 전기 회로, 집적 회로, 전자 소자, 자기 소자, 데이터 송수신기 중 적어도 하나를 포함하여 구성될 수도 있으나, 이에 한정되지는 않는다.
단계(S101)에서, 가비지 수집 장치는, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 비 휘발성 메모리에 일정 단위로 할당된 영역 중 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집할 수 있다.
구체적으로, 가비지 수집 장치는, 일정 단위로 구분된 영역마다 대응되는 비트를 가지는 비트맵 영역을 고려하여 외부 가비지를 수집할 수 있다.
단계(S102)에서, 가비지 수집 장치는, 비 휘발성 메모리에 사상된 일정 단위의 단위 영역 내 일부 영역을 분할하여 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집할 수 있다.
구체적으로, 가비지 수집 장치는, 동적으로 할당 또는 해제되는 노드들과 관련된 정보를 비 휘발성 메모리 내 할당정보영역에 저장할 수 있다.
또한, 가비지 수집 장치는, 루트 노드로부터 순차적으로 노드들을 할당정보영역과 비교함으로써, 할당정보영역에 존재하지만 접근이 불가능한 노드를 추출할 수 있다. 또한, 가비지 수집 장치는, 추출된 노드에 대해 할당된 비 휘발성 메모리의 할당 영역을 내부 가비지로 설정할 수 있다. 또한, 가비지 수집 장치는, 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 가비지를 수집할 수 있다. 이때, 가비지 수집 장치는, 비 휘발성 메모리를 제어하는 컨트롤러가 수행하는 프로세스의 상태를 고려하여 가비지를 수집할 수 있다.
가비지 수집 장치는, 비 휘발성 메모리를 주 기억 장치로 사용하는 경우에, 내부 가비지와 외부 가비지를 모두 수집, 해제하는 하이브리드 가비지 수집을 수행함으로써 메모리 관리를 효율적으로 할 수 있다.
예를 들어, 가비지 수집 장치는, 내부 가비지의 가비지 수집을 수행함으로써, 객체저장소 등의 비 휘발성 메모리에 사상된 단위 영역 내에서 사용자의 요청에 따라 일부 영역을 분할하여 할당하는 과정에서 생긴 내부 가비지의 메모리 누수를 해결할 수 있다. 이때, 내부 가비지는, 하나의 노드 단위로 작은 크기의 메모리지만 보다 빈번하게 할당과 해제가 이루어지는 비 휘발성 메모리의 특성상 사용자가 직접 노드의 삽입, 삭제를 관리하는 과정에서 고의 또는 중과실에 의해서 쉽게 발생될 수도 있다. 물론, 비 휘발성 메모리의 내부 가비지는, 휘발성 메모리에서 발생하는 전형적인 메모리 누수와 동일한 사유로 인하여 발생될 수도 있다.
비 휘발성 메모리에서, 주 기억장치 내에 사용자의 필요에 따라서 직접적이고 명시적으로 영속적으로 저장 공간을 할당하고 필요가 없어지면 해제해야 한다. 이때, 힙 영역의 동적 메모리 관리를 런타임 시스템에 위임하거나 런타임 시스템의 지원을 받을 수 없다. 이때, 가비지 수집 장치는, 내부 가비지의 가비지 수집을 위해서 힙 영역 내에 동적으로 할당, 해제 될 때마다 할당, 해제되는 모든 노드들에 대한 정보를 비 휘발성 메모리 내 별도 영역인 할당정보영역에 저장할 수 있다. 이때, 노드들에 대한 정보는, 메모리 주소와 할당 여부가 될 수도 있으나, 이에 한정되지는 않는다.
일실시예에 따르면, 가비지 수집 장치는, 가비지의 탐색을 빠르게 하기 위해서, 각각의 노드에 대한 정보를 포인터로 연결하고 트리 형태로 구성할 수도 있다, 또한, 가비지 수집 장치는, 각각의 노드에 대한 정보를 테이블이나 연결리스트로 구성할 수도 있다. 이때, 가비지 수집 장치는, 가비지 수집 방법을 수행하여 루트(root)에서부터 접근 가능한 노드를 하나씩 탐색할 수 있다. 또한, 가비지 수집 장치는, 접근 가능한 노드를 할당정보영역과 비교할 수 있다. 예를 들어, 가비지 수집 장치는, 할당정보영역에는 있지만 루트에서부터 실제 접근이 불가능한 것은 내부 가비지로 설정하고 해제할 수 있다. 예를 들어, 가비지 수집 장치는, 노드에 대한 할당 정보를 할당정보영역에 저장할 수 있고, 루트에서부터 실제 접근이 불가능한 노드에 대한 할당 정보를 할당정보영역에서 삭제할 수도 있다.
일실시예에 따르면, 가비지 수집 장치는, 내부 가비지를 수집하기 위해 수행 조건을 가질 수도 있다.
예를 들어, 가비지 수집 장치는, 프로세서(cpu) 등 시스템 자원이 유휴(idle) 상태일 때 주기적으로 가비지 수집 방법을 수행할 수 있다. 이때, 가비지 수집 장치는, 유휴 자원을 활용하여 시스템의 효율을 높일 수도 있다.
또한, 예를 들어, 가비지 수집 장치는, 프로세스의 종료와 재실행시 가비지 수집 방법을 수행할 수 있다. 이때, 이미 생성된 객체저장소를 재사용할 수도 있다. 물론, 가비지 수집 장치는, 가비지 수집의 수행시 메모리의 할당, 해제를 정지해야 하므로, 프로세스 수행시보다 프로세스의 종료 직후와 재실행 직전의 경우, 메모리의 할당, 해제가 적기 때문에 효율적일 수 있다. 또한, 가비지 수집 장치는, 유저 프로세스가 정상적인 메모리의 해제를 누락하고 프로세스를 종료함으로써 발생하는 메모리 누수문제를 즉각적으로 해결할 수도 있다.
또한, 예를 들어, 가비지 수집 장치는, 외부 가비지의 가비지 수집 시 내부 가비지의 가비지 수집을 같이 수행할 수도 있다. 가비지 수집 장치는, 외부 가비지 수집을 수행하는 경우, 내부 가비지 수집도 이어서 수행함으로써 동시에 하이브리드 가비지 수집을 수행할 수도 있다. 물론, 경우에 따라서, 상기에서 설명한 내부 가비지 수집 수행 조건의 경우는 외부 가비지 수집과 시간차를 둔 하이브리드 가비지 수집을 수행할 수도 있다.
도 2는 본 발명의 일실시예에 따른 외부 가비지를 수집하는 방법을 나타내는 것이다.
도 2를 참조하면, 가비지 수집 장치가 수행하는 가비지 수행 방법은, 경우에 따라서, 하기와 같은 단계를 포함하여 이루어질 수도 있다.
단계(S201)에서, 가비지 수집 장치는, 비 휘발성 메모리의 영역을 일정한 단위의 세그먼트들로 분할할 수 있다. 예를 들면, 가비지 수집 장치는, 데이터 영역을 4Kbyte 단위로 세그먼트들로 분할할 수 있다.
단계(S202)에서, 가비지 수집 장치는, 비 휘발성 메모리의 영역에서 분할된 세그먼트마다 대응되는 비트를 가지는 비트맵 영역을 생성할 수 있다. 예를 들면, 가비지 수집 장치는, 각 세그먼트마다 대응되는 비트를 가지는 표시 비트맵과 할당 비트맵을 생성할 수 있다.
단계(S203)에서, 가비지 수집 장치는, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 비트맵 영역이 가지는 비트 중 일부의 비트를 비교하여, 비 휘발성 메모리에 할당된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집할 수 있다. 예를 들어, 가비지 수집 장치는, 제1 세그먼트에 대응하는 할당 비트맵의 영역의 비트 값과 표시 비트맵의 영역의 비트 값을 비교할 수 있다. 이때, 가비지 수집 장치는, 1번 세그먼트에 대응하는 할당 비트맵의 영역의 비트 값과 표시 비트맵의 영역의 비트 값을 XOR연산할 수도 있다.
또한, 단계(S200, 미도시)에서, 가비지 수집 장치는, 분할된 세그먼트들 중 하나 이상의 세그먼트들을 시스템의 프로세스별 객체저장소로 생성할 수 있다. 예를 들면, 가비지 수집 장치는, 제1 세그먼트, 제2 세그먼트를 객체저장소 A라고 지정할 수 있다. 또한, 경우에 따라서, 가비지 수집 장치는, 제1 세그먼트, 제3 세그먼트, 제7 세그먼트를 객체저장소 A라고 지정할 수도 있다. 또한, 가비지 수집 장치는, 각 세그먼트와 연결된 구조체를 객체저장소로 지정할 수도 있다. 예를 들어, 가비지 수집 장치는, 각 세그먼트와 연결된 구조체에 해당되는 적어도 하나의 노드를 객체저장소로 지정할 수도 있다.
이때, 단계(S200, 미도시)는, 단계(S201), 단계(S202), 단계(S203) 중 적어도 하나의 단계에 포함될 수도 있으며, 단계(S201), 단계(S202), 단계(S203) 중 적어도 하나의 단계의 이전 또는 이후가 될 수도 있으나, 이에 한정되는 것은 아니다. 또한, 경우에 따라서, 단계(S200, 미도시)는, 가비지 수집 장치에 의하여, 반복적으로 수행될 수도 있다.
또한, 가비지 수집 장치는, 비 휘발성 메모리와 연결된 시스템의 재시작 여부, 기설정된 수행 주기, 가용 메모리 크기 중 적어도 하나를 고려하여 가비지를 수집할 수도 있다.
도 3은 본 발명의 일실시예에 따른 객체저장소의 사상 과정을 나타내는 흐름도이다.
도 3을 참조하면, 가비지 수집 장치가 수행하는 객체저장소의 사상 과정은, 하기와 같은 단계를 포함하여 이루어 질 수 있다.
예를 들면, 단계(S302)에서, 가비지 수집 장치는, 세그먼트를 구성하여 객체저장소로 메모리에 사상시킬 수 있다. 또한, 단계(S304)에서, 가비지 수집 장치는, 객체저장소로 메모리에 사상된 세그먼트와 관련된 노드를 연결 리스트의 노드와 연결하여 연결 리스트에 삽입시킬 수도 있다. 또한, 단계(S306)에서, 가비지 수집 장치는, 객체저장소로 메모리에 사상된 세그먼트와 관련된 노드를 연결 리스트의 노드와 단절하여 연결 리스트에서 삭제시킬 수도 있다. 또한, 단계(S308)에서, 가비지 수집 장치는, 객체저장소로 메모리에 사상된 세그먼트 중 적어도 일부의 세그먼트를 사상 해제할 수 있다. 이때, 단계(S301)는, 단계(S302) 이전의 과정이 될 수 있다. 또한, 단계(S303)은, 단계(S302)와 단계(S304)의 사이의 과정이 될 수 있다. 또한, 단계(S305)은, 단계(S304)와 단계(S306)의 사이의 과정이 될 수 있다. 또한, 단계(S307)은, 단계(S306)와 단계(S308)의 사이의 과정이 될 수 있다. 또한, 단계(S309)는, 단계(S308) 이후의 과정이 될 수 있다.
일실시예에 따르면, 객체저장소의 사상 과정과 각 시점은, 정상적으로 동작하는 경우 사상 과정과 할당 비트맵(Bitmap)의 표시 과정은 도 4 내지 도 8를 순서대로 확인하여 알 수 있다.
또한, 일실시예에 따르면, 객체저장소 사상 과정과 시점의 단계(S303), 단계(S304), 단계(S307), 단계(S308) 시점에서 오류가 발생하는 경우, vm_area 연결 리스트에는 없는 프로세스 주소 공간이 실제 프로세스 주소 공간에서 사상되어 있을 수 있다. 이때, vm_area 연결 리스트에는 없는 프로세스 주소 공간이 실제 프로세스 주소 공간에서 사상된 것을 외부 가비지라고 할 수 있다. 이때, 외부 가비지는, 기존의 파일 시스템에서 논의되던 가비지 수집과 관련된 가비지가 발생되는 이유와 동일한 이유에서 발생되는 경우가 있을 수 있다. 또한, 메모리 누수 및 할당 오류가 영속적으로 중첩되어 운영체제가 할당할 수 있는 메모리가 점차 감소할 경우, 운영체제가 필요한 메모리를 요청한 프로그램에게 메모리를 더 이상 할당할 수 없게 될 수 있다.
또한, 일실시예에 따르면, 가비지 수집 장치가 외부 가비지를 수집하는 경우, 비 휘발성 메모리를 주 기억장치로 하는 경우, 의도적인 삭제 이전까지는 자료의 저장이 유지될 수 있다. 이때, 주 기억장치의 메모리 공간의 가장 앞부분에는 전체 메모리를 관리하기 위한 수퍼블록(SuperBlock)이 위치하고 vm_area 구조체의 연결 리스트형 자료구조를 가지고 있을 수 있다.
예를 들면, 수퍼블록은, 모든 객체(object)들을 관리하기 위한 메타데이터(metadata)일 수 있다. 또한, p_ns_entry는 각 객체의 메타데이터일 수 있다. 이때, 각 영역에 대한 메타데이터로 vm_area가 존재할 수 있다. 이때, 가비지 수집 장치는, 수퍼블록이 객체에 대한 메타데이터인 p_ns_entry를 해시테이블로 관리하도록 구현하여 객체의 빠른 삽입, 삭제, 탐색을 할 수도 있다. 또한, 가비지 수집 장치는, p_ns_entry를 리스트(list)로 관리하여 해시테이블의 모든 엔트리를 탐색하지 않고, 모든 p_ns_entry를 순회할 수 있도록 하여, 순차탐색에 유리하도록 구현할 수도 있다.
일실시예에 따르면, p_ns_entry는 해당 객체에 대한 이름필드를 가지고 있을 수도 있다. 또한, 가비지 수집 장치는, 객체를 구성하는 영역들의 메타데이터인 vm_area를 리스트로 관리하며, 처음과 마지막 영역에 대한 포인터를 유지할 수도 있다. 이때, 가비지 수집 장치는, 객체의 증가 또는 감소가 파일의 끝 부분에서만 이루어지는 것을 고려하여 구성할 수 있다. 또한, 가비지 수집 장치는, vm_area의 삽입 또는 삭제는 끝 부분에서만 이루어지므로 트리와 같은 자료구조의 필요 없이 리스트로 구성할 수 있다.
일실시예에 따르면, vm_area는 해당 영역이 사상될 프로세스 주소 공간상의 위치와 크기, 객체 파일(file)의 오프셋(offset)에 대한 정보를 저장할 수 있다. 또한, 경우에 따라서, vm_area는 동일 객체의 다른 영역에 접근하기 위해 prev, next 필드를 유지할 수도 있다.
일실시예에 따르면, 가비지 수집 장치는, 주 기억장치의 메모리 공간을 4KByte 단위의 고정된 세그먼트로 나눌 수 있다. 이때, 가비지 수집 장치는, 각 vm_area 구조체에서 하나 혹은 여러 개의 세그먼트를 묶어 객체저장소로 정의할 수 있다. 또한, 가비지 수집 장치는, 메모리 내 객체저장소를 구성하는 세그먼트의 위치를 연결리스트로 저장할 수도 있다.
또한, 일실시예에 따르면, 가비지 수집 장치는, 외부 가비지를 수집하기 위해, 각 세그먼트의 객체저장소 사상 여부를 확인할 수 있다. 예를 들어, 가비지 수집 장치는, 메모리의 가장 뒷부분에 한 세그먼트인 4Kbyte 단위마다 1Byte의 플래그(flag)를 가지는 할당 비트맵을 생성할 수 있다. 물론, 가비지 수집 장치는, 4096:1의 비율로 비트맵 영역을 생성할 수 있다. 또한, 가비지 수집 장치는, 가비지 수집을 위한 표시 비트맵을 할당 비트맵과 동일하게 한 세그먼트 당 1Byte로 생성할 수 있다. 예를 들어, 가비지 수집 장치는, 4GByte 메모리의 경우 할당 비트맵과 표시 비트맵을 각각 약 1MByte로 총 약 2MByte 가량의 공간으로 사용할 수 있다.
일실시예에 따르면, 가비지 수집 장치는, 시스템이 종료 후 재 시작 될 경우, 가비지 수집 방법을 수행하여 외부 가비지를 수집할 수 있다. 예를 들어, 가비지 수집 장치는, 객체저장소의 생성이나 확장을 통해 세그먼트가 실제 사상되면, 할당 비트맵에서 그 세그먼트의 bit를 1로 변경할 수 있다. 또한, 다음으로, 가비지 수집 장치는, vm_area 구조체의 연결리스트에 해당 세그먼트를 삽입할 수 있다. 또한, 가비지 수집 장치는, 경우에 따라서, 반대로 객체저장소의 삭제나 축소를 하는 경우, vm_area 구조체의 연결리스트에서 해당 세그먼트를 삭제할 수도 있다. 또한, 가비지 수집 장치는, 다음으로, 해당 세그먼트의 사상을 해제하고 할당 비트맵에서 그 세그먼트의 bit를 0으로 변경할 수 있다. 또한, 가비지 수집 장치는, 시스템이 종료 후 재 시작될 시점에서, 메모리의 사상과 할당을 중지하고, 모든 vm_area 구조체의 연결리스트에 있는 모든 세그먼트를 찾아 표시 비트맵에 그 위치를 기록할 수 있다. 또한, 가비지 수집 장치는, 표시 비트맵과 할당 비트맵의 XOR 연산 결과가 1인 세그먼트 위치의 사상을 해제하고 할당 bit를 0으로 변경할 수 있다. 이때, 가비지 수집 장치는, 가비지 수집의 수행 동안 비 휘발성 메모리를 사용하는 운영체제 및 장치의 모든 메모리 할당과 해제가 중지되어야 한다는 점과 가비지 수집에 걸리는 부하를 고려하여 기본적으로 시스템의 종료 후 재시작시 가비지 수집을 수행할 수 있다.
또한, 일실시예에 따르면, 가비지 수집 장치는, 다양한 상황에 맞춰 효율적으로 적용할 수 있도록 조건을 고려하여 유연성이 있는 가비지 수집 방법을 수행할 수도 있다.
예를 들면, 가비지 수집 장치는, 주기 조건을 고려할 수 있다. 가비지 수집 장치는, 종료 없이 지속적으로 운영되는 서버와 같은 운영체제 및 장치에서도 가비지 수집 방법을 수행할 수 있다. 가비지 수집 장치는, 비 휘발성 메모리를 사용하는 운영체제 및 장치가 외부 가비지를 수집한 경우, 일정시간이 지날 때마다 주기적으로 가비지 수집을 수행하도록 할 수 있다. 이때, 가비지 수집 장치는, 시간, 일, 월 단위로 주기를 지정할 수 있도록 할 수 있다.
또한, 예를 들면, 가비지 수집 장치는, 시간 우선 가용 메모리 크기 결합 조건을 고려할 수도 있다. 가비지 수집 장치는, 불필요한 가비지 수집의 수행으로 인해 발생되는 빈번한 부하를 방지할 수도 있다. 또한, 가비지 수집 장치는, 비 휘발성 메모리를 사용하는 운영체제 및 장치의 모든 메모리 할당과 해제가 중지되어야 하는 경우, 가비지 수집으로 발생하는 손실을 방지할 수도 있다. 또한, 가비지 수집 장치는, 가비지 수집 방법을 수행하여 기본적으로 메모리의 할당, 해제 관련 오류로 인한 메모리의 누수를 방지할 수도 있다. 가비지 수집 장치는, 메모리의 누수가 중첩되는 경우, 가용 메모리의 크기가 감소하게 되는 것을 고려하여, 주기적 가비지 수집을 하되 가용 메모리 크기가 일정 수준 이하인 경우에만 수행하도록 할 수도 있다.
또한, 예를 들면, 가비지 수집 장치는, 가용 메모리 크기 우선 시간 결합 조건을 고려할 수도 있다. 가비지 수집 장치는, 가용 메모리 크기와 가비지 수집 수행의 당위성을 고려하여, 가용 메모리 크기가 일정 수준 이하로 일정 시간 이상 지속적으로 유지되는 경우에만 가비지 수집을 수행하도록 할 수도 있다.
또한, 예를 들면, 가비지 수집 장치는, 시간, 가용 메모리 크기 복합 조건을 고려할 수도 있다. 가비지 수집 장치는, 가용 메모리 크기가 큰 경우, 가비지 수집의 필요성이 낮을 수 있으나, 가용 메모리 크기가 작은 경우에는 가비지 수집의 필요성이 높아진다는 점을 고려할 수 있다. 가비지 수집 장치는, 하기 수학식 1과 수학식 2에서와 같이 상수 C를 결정할 수 있다. 또한, 가비지 수집 장치는, 가용 메모리 크기가 클 때는 긴 주기로, 가용 메모리 크기가 작을 때는 짧은 주기로 가비지 수집을 수행하도록 할 수 있다.
Figure 112015069637641-pat00001
Figure 112015069637641-pat00002
일실시예에 따르면, 비 휘발성 메모리에서도, 기존 휘발성 메모리에서 발생되는 내부 가비지가 발생하는 이유와 동일한 내부 가비지 문제가 발생할 수 있다. 이는, 비 휘발성 메모리에서는 기존 휘발성 메모리로 구성된 주 기억장치의 기능과 유사할 뿐 아니라 HDD나 SSD같은 비 휘발성 보조 기억장치와도 유사한 특성을 지니고 있기 때문이다. 가비지 수집 장치는, 내부 가비지를 수집하는 동시에 외부 가비지를 같이 수집하여 가비지의 수집, 관리, 해제를 수행하는 하이브리드 가비지 수집 방식을 이용하여 메모리 누수 관리를 더욱 효율적으로 할 수 있다.
도 4는 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정 중 초기 상태를 나타내는 것이다.
도 4를 참조하면, 가비지 수집 장치가 가비지 수집 방법을 수행할 경우의 초기 상태를 알 수 있다. 예를 들어, 객체저장소는 A, B, C가 있을 수 있다. 이때, A는 (0, 1, 4) 세그먼트(411, 412, 413)를, B는 (2, 7) 세그먼트(421, 422)를, C는 6번 세그먼트(431)를 각각의 연결 리스트의 노드로 가지고 있을 수 있다.
도 5는 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정 중 일부를 나타내는 것이다.
도 5를 참조하면, 원래 6번 세그먼트만을 가진 객체저장소 C가 확장되면서 3번 세그먼트(531)를 할당 받고, 할당 비트맵(532)이 수정되는 것을 알 수 있다.
도 6은 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정을 나타내는 것이다.
도 6을 참조하면, 3번 세그먼트의 vm_area 구조체가 객체저장소 C라는 이름을 가진 vm_area 구조체의 연결리스트에 삽입되는 것을 알 수 있다. 예를 들면, 가비지 수집장치는, vm_area 구조체들을 연결(631)할 수 있다.
도 7은 본 발명의 일실시예에 따른 외부 가비지를 수집하는 과정의 일부를 나타내는 것이다.
도 7을 참조하면, 도 6의 객체저장소 A가 축소되면서 4번 세그먼트의 vm_area 구조체가 vm_area 구조체의 연결리스트에서 삭제되는 것을 알 수 있다. 예를 들면, 가비지 수집장치는, 도 6의 vm_area 구조체들의 연결(611)을 단절할 수 있다.
도 8은 본 발명의 일실시예에 따른 가비지를 수집하는 방법을 나타내는 것이다.
도 8을 참조하면, 4번 세그먼트(811)의 사상이 해제되고 할당 비트맵(812)에 표시되는 것을 알 수 있다.
일실시예에 따르면, 도 4 내지 도7의 과정에서 도 3의 단계(S301) 내지 단계(S309)의 각 시점에서 오류가 발생될 수 있다. 이때, 실제 세그먼트 사상과 vm_area 구조체의 연결리스트의 세그먼트 위치 정보 삽입 사이에서 불일치가 일어나는 문제가 발생될 수 있다.
예를 들면, 세그먼트는 사상되었지만, vm_area 구조체의 연결리스트에 세그먼트 위치정보가 없어 해당영역을 접근할 수 없는 경우, 가비지 수집이 필요할 수 있다. 또한, 도 3의 단계(S303), 단계(S304) 시점과 단계(S307), 단계(S308) 시점에서 갑작스런 오류, 장애가 발생하여 객체저장소의 사상 과정이 중단되었을 때 가비지 수집이 필요할 수도 있다.
예를 들면, 도 6의 객체저장소 A에 연결되어있는 4번 세그먼트의 사상을 해제할 경우 가비지 수집이 필요할 수 있다. 단계(S307) 또는 단계(S308) 시점에서 vm_area 구조체의 연결리스트의 4번 세그먼트 위치를 가진 vm_area를 삭제하는 과정에서 오류가 발생할 경우, 도 7과 같은 상황이 발생할 수 있다.
도 9는 본 발명의 일실시예에 따른 외부 가비지를 설정하는 것을 나타내는 것이다.
도 9를 참조하면, 오류가 발생할 경우, 가비지 수집 장치가 가비지 수집을 수행하는 것을 알 수 있다. 이때, 가비지 수집 장치는, 객체저장소의 vm_area 리스트를 순회하며 할당된 영역을 해당 위치의 표시 비트맵에 표시할 수 있다. 또한, 가비지 수집 장치는, 표시 비트맵과 할당 비트맵의 각 비트 영역을 1:1로 대응하여 XOR 연산을 할 수 있다. 예를 들어, 4번 세그먼트(911)에 대응되는 표시 비트맵(913)의 영역의 비트 값은 0으로 표시되지 않은 상태이고, 4번 세그먼트(911)에 대응되는 할당 비트맵(912)의 영역의 비트 값은 1로 표시된 상태일 수 있다. 이때, 가비지 수집 장치는, 0과 1을 XOR연산하여 1을 참(TRUE)인 값으로 획득할 수 있다. 또한, 예를 들면, 가비지 수집 장치는, (0, 1, 2, 3, 6, 7) 세그먼트에 각각 대응되는 할당 비트맵의 영역의 비트 값을 1로 표시할 수 있다. 이때, 가비지 수집 장치는, (0, 1, 2, 3, 6, 7) 세그먼트에 각각 대응되는 표시 비트맵의 영역의 비트 값도 1일 경우, 1과 1을 XOR연산하여 0을 거짓(FALSE)인 값으로 획득할 수도 있다. 또한, 예를 들면, 5번 세그먼트에 대응되는 할당 비트맵의 영역의 비트 값이 0이고, 5번 세그먼트에 대응되는 표시 비트맵의 영역의 비트 값이 0일 수 있다. 물론, 가비지 수집 장치는, 0과 0을 XOR연산하여 0을 거짓인 값으로 획득할 수 있다.
도 10은 본 발명의 일실시예에 따른 외부 가비지 수집 이후를 나타내는 것이다.
도 10을 참조하면, 가비지 수집 장치는, XOR의 결과 값이 참인 경우, 사상을 해제하고 할당 비트맵의 해당 부분을 0으로 변경하는 것을 알 수 있다. 예를 들어, 가비지 수집 장치는, 4번 세그먼트에 대응하는 표시 비트맵의 영역의 비트 값과 할당 비트맵의 영역의 비트 값을 XOR연산하여 결과 값을 1로서 참으로 획득할 수 있다. 이때, 가비지 수집 장치는, 4번 세그먼트의 사상을 해제하고, 4번 세그먼트(1011)에 대응하는 할당 비트맵의 영역(1012)의 비트 값을 0으로 변경할 수 있다. 물론, 가비지 수집 장치는, 이후 가비지 수집 방법을 반복적으로 수행하기 위하여, 표시 비트맵 영역(1013)의 비트 값을 모두 0으로 재설정할 수도 있다.
도 11은 본 발명의 일실시예에 따른 가비지 수집 장치로서, 가비지 수집 장치를 나타내는 블록도이다.
먼저, 도 11을 참조하면, 가비지 수집 장치(1100)는 외부 가비지 수집부(1110), 내부 가비지 수집부(1120)로 구성될 수 있다. 물론, 경우에 따라서, 가비지 수집 장치(1100)는, 외부 가비지 수집부(1110), 내부 가비지 수집부(1120) 중 하나를 포함하여 구성될 수도 있다. 이때, 가비지 수집 장치(1100)는, 프로세서, 메모리, 전자 회로, 전기 회로, 집적 회로, 전자 소자, 자기 소자, 데이터 송수신기 중 적어도 하나를 포함하여 구성될 수도 있으나, 이에 한정되지는 않는다. 또한, 외부 가비지 수집부(1110), 내부 가비지 수집부(1120)는, 프로세서, 메모리, 전자 회로, 전기 회로, 집적 회로, 전자 소자, 자기 소자, 데이터 송수신기 중 적어도 하나를 포함하여 구성될 수도 있으나, 이에 한정되지는 않는다.
외부 가비지 수집부(1110)는, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 비 휘발성 메모리에 일정 단위로 할당된 영역 중 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집할 수 있다.
구체적으로, 외부 가비지 수집부(1110)는, 일정 단위로 구분된 영역마다 대응되는 비트를 가지는 비트맵 영역을 고려하여 외부 가비지를 수집할 수 있다.
일실시예에 따르면, 외부 가비지 수집부(1110)는, 세그먼트 분할부(1111, 미도시), 비트맵 영역 생성부(1112, 미도시), 외부 가비지 설정부(1113, 미도시)를 포함하여 구성될 수 있다. 또한, 경우에 따라서, 외부 가비지 수집부(1110)는, 세그먼트 분할부(1111, 미도시), 비트맵 영역 생성부(1112, 미도시), 외부 가비지 설정부(1113, 미도시), 객체저장소 생성부(1114, 미도시)를 포함하여 구성될 수도 있다. 이때, 세그먼트 분할부(1111, 미도시), 비트맵 영역 생성부(1112, 미도시), 외부 가비지 설정부(1113, 미도시), 객체저장소 생성부(1114, 미도시)는, 프로세서, 메모리, 전자 회로, 전기 회로, 집적 회로, 전자 소자, 자기 소자, 데이터 송수신기 중 적어도 하나를 포함하여 구성될 수도 있으나, 이에 한정되지는 않는다.
세그먼트 분할부(1111, 미도시)는, 비 휘발성 메모리의 영역을 일정한 단위의 고정된 세그먼트들로 분할할 수 있다.
비트맵 영역 생성부(1112, 미도시)는, 비 휘발성 메모리의 영역에서 분할된 세그먼트마다 대응되는 비트를 가지는 비트맵 영역을 생성할 수 있다.
외부 가비지 설정부(1113, 미도시)는, 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 비트맵 영역이 가지는 비트 중 일부의 비트를 비교하여, 비 휘발성 메모리에 할당된 영역이 반환되지 않음으로 발생되는 외부 가비지를 설정할 수 있다.
객체저장소 생성부(1114, 미도시)는, 분할한 세그먼트들 중 하나 이상의 세그먼트들을 시스템의 프로세스별 객체저장소로 생성할 수 있다.
내부 가비지 수집부(1120)는, 비 휘발성 메모리에 사상된 일정 단위의 단위 영역 내 일부 영역을 분할하여 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집할 수 있다.
일실시예에 따르면, 내부 가비지 수집부(1120)는, 할당정보영역 저장부(1121, 미도시), 접근 불가능 노드 추출부(1122, 미도시), 내부 가비지 설정부(1123, 미도시)를 포함하여 구성될 수 있다. 이때, 할당정보영역 저장부(1121, 미도시), 접근 불가능 노드 추출부(1122, 미도시), 내부 가비지 설정부(1123, 미도시)는, 프로세서, 메모리, 전자 회로, 전기 회로, 집적 회로, 전자 소자, 자기 소자, 데이터 송수신기 중 적어도 하나를 포함하여 구성될 수도 있으나, 이에 한정되지는 않는다.
할당정보영역 저장부(1121, 미도시)는, 동적으로 할당 또는 해제되는 노드들과 관련된 정보를 비 휘발성 메모리 내 할당정보영역에 저장할 수 있다.
접근 불가능 노드 추출부(1122, 미도시)는, 루트 노드로부터 순차적으로 노드들을 할당정보영역과 비교함으로써, 할당정보영역에 존재하지만 접근이 불가능한 노드를 추출할 수 있다.
내부 가비지 설정부(1123, 미도시)는, 추출된 노드에 대해 할당된 비 휘발성 메모리의 할당 영역을 내부 가비지로 설정할 수 있다.
이때, 내부 가비지 설정부(1123, 미도시)는, 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 가비지를 수집할 수 있다. 또한, 내부 가비지 설정부(1123, 미도시)는, 비 휘발성 메모리를 제어하는 컨트롤러가 수행하는 프로세스의 상태를 고려하여 가비지를 수집할 수도 있다.
일실시예에 따르면, 가비지 수집 장치(1100)는, 비 휘발성 메모리를 사용하는 장치에서 메모리 누수 방지를 위해 외부 가비지의 확인을 위하여 메모리 내 자료구조를 생성할 수 있다. 예를 들어, 가비지 수집 장치(1100)는, 연결 리스트나 힙 또는 트리와 같은 자료구조를 생성할 수도 있다. 또한, 가비지 수집 장치(1100)는, 생성한 자료구조를 이용하여 가비지 수집을 할 수도 있다.
또한, 일실시예에 따르면, 가비지 수집 장치(1100)는, 시스템 또는 메모리의 조건에 따라서, 가비지 수집 방식을 선택할 수도 있다. 이때, 가비지 수집 장치(1100)는, 가비지 컬렉션을 수행하기 위하여 시스템과 연결된 별도의 운영체제 및 장치일 수 있다. 또한, 가비지 수집 장치(1100)는, 메모리 또는 메모리와 연결된 시스템을 관리하는 운영체제 및 장치일 수도 있으나, 이에 한정되지는 않는다.
또한, 일실시예에 따르면, 경우에 따라서, 가비지 수집 장치(1100)가 수행하는 가비지 수집 방법은, 내부 가비지 또는 외부 가비지에 대하여 가비지 수집을 수행하는 운영체제 및 장치에 결합되어 수행될 수도 있다.
일실시예에 따르면, 가비지 수집 장치(1100)는, 휘발성 주 기억장치의 특징과 비 휘발성 보조 기억장치의 특징을 함께 가지기 때문에 발생할 수 있는 비 휘발성 메모리에서의 특수성을 고려하여 이중으로 메모리의 누수를 방지할 수 있다. 또한, 가비지 수집 장치(1100)가 수행하는 가비지 수집 방법은, 비 휘발성 메모리를 사용하는 운영체제 및 장치의 성능을 향상시키고, 효율적인 메모리 관리를 통해 메모리 할당 오류나 메모리 고갈로 인한 오작동을 예방하는 효과가 있다.
본 발명의 실시 예에 따른 방법들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 청구범위뿐 아니라 이 청구범위와 균등한 것들에 의해 정해져야 한다.

Claims (15)

  1. 가비지 수집 방법에 있어서,
    비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비 휘발성 메모리에 일정 단위로 할당된 영역 중 상기 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 단계; 및
    상기 비 휘발성 메모리에 사상된 상기 일정 단위의 단위 영역 내 일부 영역을 분할하여 상기 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집하는 단계를 포함하고,
    상기 내부 가비지를 수집하는 단계는, 상기 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 내부 가비지를 수집하고,
    상기 외부 가비지를 수집하는 단계는, 상기 일정 단위로 구분된 영역마다 대응되는 비트를 가지는 비트맵 영역을 고려하여 외부 가비지를 수집하고, 상기 비트맵 영역은 표시 비트맵과 할당 비트맵을 포함하고, 상기 표시 비트맵은, 연결리스트에서 상기 일정 단위로 구분된 영역의 위치에 따라 비트 영역의 제1 비트 값이 결정되고, 상기 할당 비트맵은, 객체저장소에서 상기 일정 단위로 구분된 영역의 사상 여부에 따라 비트 영역의 제2 비트 값이 결정되고,
    상기 표시 비트맵과 상기 할당 비트맵의 각각의 대응되는 비트 영역의 상기 제1 비트 값과 상기 제2 비트 값을 연산하여 외부 가비지를 수집하는, 가비지 수집 방법.
  2. 제1항에 있어서
    상기 내부 가비지를 수집하는 단계는,
    동적으로 할당 또는 해제되는 노드들과 관련된 정보를 상기 비 휘발성 메모리 내 할당정보영역에 저장하는 단계;
    루트 노드로부터 순차적으로 노드들을 상기 할당정보영역과 비교함으로써, 상기 할당정보영역에 존재하지만 접근이 불가능한 노드를 추출하는 단계; 및
    상기 추출된 노드에 대해 할당된 비 휘발성 메모리의 할당 영역을 내부 가비지로 설정하는 단계
    를 포함하는 가비지 수집 방법.
  3. 제2항에 있어서,
    상기 내부 가비지로 설정하는 단계는,
    상기 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 가비지를 수집하는 가비지 수집 방법.
  4. 제2항에 있어서,
    상기 내부 가비지로 설정하는 단계는,
    상기 비 휘발성 메모리를 제어하는 컨트롤러가 수행하는 프로세스의 상태를 고려하여 가비지를 수집하는 가비지 수집 방법.
  5. 삭제
  6. 가비지 수집 방법에 있어서,
    비 휘발성 메모리의 영역을 일정한 단위의 세그먼트들로 분할하는 단계;
    상기 비 휘발성 메모리의 영역에서 상기 분할된 세그먼트마다 대응되는 비트를 가지는 비트맵 영역을 생성하는 단계; 및
    상기 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비트맵 영역이 가지는 비트 중 일부의 비트를 비교하여, 상기 비 휘발성 메모리에 할당된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 단계를 포함하고,
    상기 분할된 세그먼트들 중 하나 이상의 세그먼트들을 상기 시스템의 프로세스별 객체저장소로 생성하는 단계;를 더 포함하고,
    상기 외부 가비지를 수집하는 단계는, 상기 비 휘발성 메모리와 연결된 시스템의 재시작 여부, 또는 기설정된 수행 주기 및 가용 메모리 크기를 고려하여 외부 가비지를 수집하고, 상기 비트맵 영역은 표시 비트맵과 할당 비트맵을 포함하고, 상기 표시 비트맵은, 연결리스트에서 상기 분할된 세그먼트의 위치에 따라 비트 영역의 제1 비트 값이 결정되고, 상기 할당 비트맵은, 상기 객체저장소에서 상기 분할된 세그먼트의 사상 여부에 따라 비트 영역의 제2 비트 값이 결정되고, 상기 표시 비트맵과 상기 할당 비트맵의 각각의 대응되는 비트 영역의 상기 제1 비트 값과 상기 제2 비트 값을 연산하여 외부 가비지를 수집하는, 가비지 수집 방법.
  7. 삭제
  8. 삭제
  9. 가비지 수집 장치에 있어서,
    비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비 휘발성 메모리에 일정 단위로 할당된 영역 중 상기 일정 단위로 구분된 영역이 반환되지 않음으로 발생되는 외부 가비지를 수집하는 외부 가비지 수집부; 및
    상기 비 휘발성 메모리에 사상된 상기 일정 단위의 단위 영역 내 일부 영역을 분할하여 상기 일부 영역을 노드 단위로 할당하는 과정에서 발생되는 내부 가비지를 수집하는 내부 가비지 수집부
    를 포함하고,
    상기 내부 가비지 수집부는, 상기 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 내부 가비지를 수집하고,
    상기 외부 가비지 수집부는, 상기 일정 단위로 구분된 영역마다 대응되는 비트를 가지는 비트맵 영역을 고려하여 외부 가비지를 수집하고, 상기 비트맵 영역은 표시 비트맵과 할당 비트맵을 포함하고, 상기 표시 비트맵은, 연결리스트에서 상기 일정 단위로 구분된 영역의 위치에 따라 비트 영역의 제1 비트 값이 결정되고, 상기 할당 비트맵은, 객체저장소에서 상기 일정 단위로 구분된 영역의 사상 여부에 따라 비트 영역의 제2 비트 값이 결정되고,
    상기 표시 비트맵과 상기 할당 비트맵의 각각의 대응되는 비트 영역의 상기 제1 비트 값과 상기 제2 비트 값을 연산하여 외부 가비지를 수집하는, 가비지 수집 장치.
  10. 제9항에 있어서
    상기 내부 가비지를 수집부는,
    동적으로 할당 또는 해제되는 노드들과 관련된 정보를 상기 비 휘발성 메모리 내 할당정보영역에 저장하는 할당정보영역 저장부;
    루트 노드로부터 순차적으로 노드들을 상기 할당정보영역과 비교함으로써, 상기 할당정보영역에 존재하지만 접근이 불가능한 노드를 추출하는 접근 불가능 노드 추출부; 및
    상기 추출된 노드에 대해 할당된 비 휘발성 메모리의 할당 영역을 내부 가비지로 설정하는 내부 가비지 설정부
    를 포함하는 가비지 수집 장치.
  11. 제10항에 있어서,
    상기 내부 가비지 설정부는,
    상기 비 휘발성 메모리와 연결된 시스템 자원의 상태에 기초하여 주기적으로 가비지를 수집하는 가비지 수집 장치.
  12. 제10항에 있어서,
    상기 내부 가비지 설정부는,
    상기 비 휘발성 메모리를 제어하는 컨트롤러가 수행하는 프로세스의 상태를 고려하여 가비지를 수집하는 가비지 수집 장치.
  13. 삭제
  14. 제9항에 있어서,
    상기 외부 가비지 수집부는,
    비 휘발성 메모리의 영역을 일정한 단위의 고정된 세그먼트들로 분할하는 세그먼트 분할부;
    상기 비 휘발성 메모리의 영역에서 상기 분할된 세그먼트마다 대응되는 비트를 가지는 비트맵 영역을 생성하는 비트맵 영역 생성부; 및
    상기 비 휘발성 메모리와 연결된 시스템에서 장애가 발생할 경우, 상기 비트맵 영역이 가지는 비트 중 일부의 비트를 비교하여, 상기 비 휘발성 메모리에 할당된 영역이 반환되지 않음으로 발생되는 외부 가비지를 설정하는 외부 가비지 설정부
    를 포함하는 가비지 수집 장치.
  15. 제14항에 있어서,
    상기 분할한 세그먼트들 중 하나 이상의 세그먼트들을 상기 시스템의 프로세스별 객체저장소로 생성하는 객체저장소 생성부;
    를 더 포함하는 가비지 수집 장치.
KR1020150101973A 2015-04-14 2015-07-17 하이브리드 가비지 수집 방법 및 장치 KR101726361B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150052612 2015-04-14
KR20150052612 2015-04-14

Publications (2)

Publication Number Publication Date
KR20160122621A KR20160122621A (ko) 2016-10-24
KR101726361B1 true KR101726361B1 (ko) 2017-04-13

Family

ID=57256610

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150101973A KR101726361B1 (ko) 2015-04-14 2015-07-17 하이브리드 가비지 수집 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101726361B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022154380A1 (ko) * 2021-01-13 2022-07-21 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 관리 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114048051A (zh) * 2017-07-25 2022-02-15 华为技术有限公司 检测方法、设备及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100737345B1 (ko) * 2006-03-28 2007-07-09 한국전자통신연구원 점진적인 가비지 콜렉션 수행 시에 순환적 가비지의 회수방법 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100753821B1 (ko) * 2005-11-01 2007-08-31 한국전자통신연구원 가비지 컬렉션 장치 및 그 방법
KR101494328B1 (ko) * 2013-06-28 2015-02-23 부산대학교 산학협력단 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100737345B1 (ko) * 2006-03-28 2007-07-09 한국전자통신연구원 점진적인 가비지 콜렉션 수행 시에 순환적 가비지의 회수방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022154380A1 (ko) * 2021-01-13 2022-07-21 삼성전자주식회사 전자 장치 및 전자 장치의 메모리 관리 방법

Also Published As

Publication number Publication date
KR20160122621A (ko) 2016-10-24

Similar Documents

Publication Publication Date Title
US10649910B2 (en) Persistent memory for key-value storage
KR101484816B1 (ko) 비휘발성 메모리 시스템 내의 미사용 논리 어드레스들의 마운트 시간 맵핑 해제
JP5425286B2 (ja) データ処理システムのメモリ使用状況を追跡する方法
CN109086388B (zh) 区块链数据存储方法、装置、设备及介质
JP4952308B2 (ja) メモリ共有システム、方法、及び、プログラム
US10565125B2 (en) Virtual block addresses
KR101977575B1 (ko) 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
TWI545434B (zh) 非揮發性記憶體系統及使用非揮發性記憶體系統之方法
US10949342B2 (en) Persistent memory garbage collection
CN107066498B (zh) 键值kv存储方法和装置
US8805896B2 (en) System and method for use with garbage collected languages for enabling the allocated heap memory to be updated at runtime
US9535628B2 (en) Memory system with shared file system
CN107016100A (zh) 一种基于非易失性内存文件系统的元数据管理方法
CN110018998A (zh) 一种文件管理方法、系统及电子设备和存储介质
CN104346102B (zh) 一种基于dicom的数据自动删除方法
US20170031818A1 (en) Memory Centric Database Architecture
US20150074064A1 (en) Defragmentation-less deduplication
KR101726361B1 (ko) 하이브리드 가비지 수집 방법 및 장치
CN108664482B (zh) Flash存储器及存储文件管理方法
CN102541969A (zh) 基于fat文件系统的文件保护方法、系统及存储器
JP2012247901A (ja) データベースの管理方法、データベースの管理装置及びプログラム
Chen et al. A unified framework for designing high performance in-memory and hybrid memory file systems
KR101456104B1 (ko) 비휘발성 메모리를 위한 듀얼 버퍼링 파일 관리 방법, 파일 관리 시스템 및 대용량 저장 장치
KR101669762B1 (ko) 비휘발성 메모리의 메모리 누수 복구 방법 및 장치
KR101861851B1 (ko) 저장 장치의 메모리 컨트롤러가 수행하는 청크 할당 방법 및 메모리 컨트롤러

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant