KR102402783B1 - 전자 장치 및 이의 페이지 병합 방법 - Google Patents

전자 장치 및 이의 페이지 병합 방법 Download PDF

Info

Publication number
KR102402783B1
KR102402783B1 KR1020150065112A KR20150065112A KR102402783B1 KR 102402783 B1 KR102402783 B1 KR 102402783B1 KR 1020150065112 A KR1020150065112 A KR 1020150065112A KR 20150065112 A KR20150065112 A KR 20150065112A KR 102402783 B1 KR102402783 B1 KR 102402783B1
Authority
KR
South Korea
Prior art keywords
memory
page
pages
electronic device
merging
Prior art date
Application number
KR1020150065112A
Other languages
English (en)
Other versions
KR20160132514A (ko
Inventor
구진규
김현식
한충석
문선호
한상복
Original Assignee
삼성전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Priority to KR1020150065112A priority Critical patent/KR102402783B1/ko
Priority to PCT/KR2016/004670 priority patent/WO2016182255A1/ko
Priority to US15/573,734 priority patent/US10817179B2/en
Priority to EP16792901.7A priority patent/EP3296878B1/en
Publication of KR20160132514A publication Critical patent/KR20160132514A/ko
Application granted granted Critical
Publication of KR102402783B1 publication Critical patent/KR102402783B1/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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Abstract

전자 장치 및 이의 페이지 병합 방법이 개시된다. 본 발명의 전자 장치에 따르면, 페이지를 초기화하고, 초기화된 값이 기설정된 특정값인 경우 페이지를 병합 대상으로 결정하는 메모리 관리부 및 병합 대상으로 결정된 복수의 페이지를 병합하여 저장하는 메모리를 포함한다. 상술한 전자 장치는 적은 연산으로도 페이지의 병합 여부를 판단할 수 있고, 판단된 결과에 따라 페이지를 병합함으로써, 메모리를 효율적으로 관리할 수 있게 된다.

Description

전자 장치 및 이의 페이지 병합 방법 {ELECTRONIC DEVICE FOR MERGING PAGES AND METHOD THEREOF }
본 발명은 전자 장치 및 이의 페이지 병합 방법에 관한 것이다. 보다 구체적으로, 본 발명에서는, 메모리를 효율적으로 관리하기 위한 전자 장치 및 이의 페이지 병합 방법을 제안한다.
운영 체제(Operating System, OS)의 메모리를 효율적으로 관리하기 위해서, 가용 메모리를 늘리기 위한 메모리 중복 제거 기술이 사용된다. 예를 들어, KSM(Kernel same-page merging)과 같은 메모리 중복 제거 기술은 메모리 영역 전체를 대상으로 페이지를 스캐닝하여 중복된 페이지를 제거, 즉, 병합(merge)할 수 있다.
그러나 KSM과 같은 메모리 중복 제거 기술은 병합 대상이 되는 메모리 영역의 모든 페이지에 대해, 병합 여부를 판단해야 한다. 따라서, 병합 여부를 판단하기 위한 연산량이 과도하여 자원 소비 및 배터리의 소비가 크므로, 모바일 단말과 같은 전자 장치에서는 메모리 중복 제거 기술이 효율적으로 사용되기 어렵다.
이에 따라, 모바일 단말, TV와 같은 전자 장치에서도 페이지를 병합하여 효율적으로 메모리를 관리하기 위해, 병합 여부 판단을 위한 연산량을 감소시키는 방법에 대해 고찰할 필요성이 대두된다.
본 발명이 이루고자 하는 기술적 과제는 메모리를 효율적으로 관리하기 위해서 페이지 병합 여부를 용이하게 판단할 수 있는 전자 장치 및 이의 페이지 병합 방법을 제공하는 것이다.
본 발명의 일 실시예에 따른 전자 장치는, 페이지를 초기화하고, 상기 초기화된 값이 기설정된 특정값인 경우 상기 페이지를 병합 대상으로 결정하는 메모리 관리부 및 상기 병합 대상으로 결정된 복수의 페이지를 병합하여 저장하는 메모리; 를 포함할 수 있다.
한편, 상기 메모리 관리부는, 상기 특정값으로 초기화된 페이지가 기설정된 크기 이상인지 여부를 판단하고, 상기 페이지의 크기가 상기 기설정된 크기 이상인 경우, 상기 페이지를 병합하여 상기 메모리에 저장하는 것을 특징으로 할 수 있다.
그리고 상기 메모리 관리부는, 기설정된 개수의 페이지가 상기 병합 대상으로 결정되면, 상기 기설정된 개수의 페이지의 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하고, 상기 판단 결과에 따라 복수의 데이터를 병합하여 저장하는 것을 특징으로 할 수 있다.
한편, 상기 메모리 관리부는, 상기 페이지를 초기화하고, 상기 초기화된 값이 동일한 페이지를 분류하여 병합 대상으로 결정하는 것을 특징으로 할 수 있다.
그리고, 상기 전자 장치의 중앙 처리 장치의 운용률이 임계값 이하인 경우, 상기 전자 장치의 배터리가 임계값 이상인 경우 및 상기 전자 장치의 유휴 자원이 임계값 이상인 경우 중 하나를 만족하는 경우, 상기 병합 대상으로 결정된 복수의 데이터를 병합하는 것을 특징으로 할 수 있다.
한편, 상기 메모리는, 상기 병합 대상으로 결정된 페이지를 저장하는 지연 메모리, 상기 지연 메모리에 저장된 페이지 중에서, 상기 페이지의 초기화 값이 상기 특정값으로 유지중인것으로 판단된 페이지를 저장하는 후보리스트 메모리 및 상기 후보리스트 메모리에 저장된 페이지들을 병합하여 저장하는 병합 메모리를 포함하는 것을 특징으로 할 수 있다.
그리고 상기 메모리 관리부는, 상기 지연 메모리에 저장된 페이지가 기설정된 개수 이상인 경우 상기 지연 메모리에 저장된지 오래된 순서로 기설정된 개수의 페이지에 대해 상기 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하고, 상기 초기화 값이 상기 특정값으로 유지중인 페이지를 상기 후보리스트 메모리로 이동시키며, 상기 지연 메모리에 저장된 페이지가 상기 기설정된 개수 미만인 경우 상기 후보리스트 메모리에 이동된 페이지들을 상기 병합 메모리로 이동시키는 것을 특징으로 할 수 있다.
한편, 본 발명의 일 실시 예에 따른, 전자 장치의 페이지 병합 방법은, 페이지를 초기화하는 단계, 상기 초기화에 의해, 페이지의 상기 초기화 값이 기설정된 특정값인 경우 상기 페이지를 병합 대상으로 결정하는 단계 및 상기 병합 대상으로 결정된 복수의 페이지를 병합하는 단계를 포함할 수 있다.
그리고 상기 결정하는 단계는, 상기 특정값으로 초기화된 페이지가 기설정된 크기 이상인지 여부를 판단하는 단계 및 상기 페이지의 크기가 상기 기설정된 크기 이상인 경우, 상기 페이지를 상기 병합 대상으로 결정하는 단계를 더 포함할 수 있다.
한편, 상기 병합하는 단계는, 상기 기설정된 개수의 페이지가 상기 병합 대상으로 결정되면, 상기 기설정된 개수의 페이지의 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하는 단계 및 상기 판단 결과에 따라 복수의 데이터를 병합하는 단계; 를 더 포함하는 것을 특징으로 할 수 있다.
그리고 상기 결정하는 단계는, 상기 페이지를 초기화하고, 상기 초기화된 값이 동일한 페이지를 분류하여 병합 대상으로 결정하는 것을 특징으로 할 수 있다.
한편, 상기 병합하는 단계는, 상기 전자 장치의 중앙 처리 장치의 운용률이 임계값 이하인 경우, 상기 전자 장치의 배터리가 임계값 이상인 경우 및 상기 전자 장치의 유휴 자원이 임계값 이상인 경우 중 하나를 만족하는 경우, 상기 병합 대상으로 결정된 복수의 페이지를 병합하는 것을 특징으로 할 수 있다.
그리고, 상기 병합하는 단계는, 상기 병합 대상으로 결정된 페이지를 지연 메모리에 저장하는 단계, 상기 지연 메모리에 저장된 페이지 중에서, 상기 페이지의 초기화 값이 상기 특정값으로 유지중인것으로 판단된 페이지를 저장하는 후보리스트 메모리에 저장하는 단계 및 상기 후보리스트 메모리에 저장된 페이지들을 병합하고, 상기 병합된 결과를 병합 메모리에 저장하는 단계; 를 포함하는 것을 특징으로 할 수 있다.
한편, 상기 병합하는 단계는, 상기 지연 메모리에 저장된 페이지가 기설정된 개수 이상인 경우 상기 지연 메모리에 저장된지 오래된 순서로 기설정된 개수의 페이지에 대해 상기 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하고, 상기 초기화 값이 상기 특정값으로 유지중인 페이지를 상기 후보리스트 메모리로 이동시키며, 상기 지연 메모리에 저장된 페이지가 상기 기설정된 개수 미만인 경우 상기 후보리스트 메모리에 이동된 페이지들을 상기 병합 메모리로 이동시키는 것을 특징으로 할 수 있다.
본 발명의 실시 예에 따르면, 전자 장치는 적은 연산으로도 페이지의 병합 여부를 판단할 수 있고, 판단된 결과에 따라 페이지를 병합함으로써, 메모리를 효율적으로 관리할 수 있다.
도 1a는 전자 장치의 메모리 관리 방법을 설명하는 도면,
도 1b는 본 발명의 일 실시 예에 따른, 전자 장치의 페이지 병합 방법을 설명하는 도면,
도 2는 본 발명의 일 실시 예에 따른 전자 장치의 페이지 병합 방법을 도시한 흐름도,
도 3a 및 도 3b는 본 발명의 일 실시 예에 따른, 전자 장치의 구성을 도시한 블럭도,
도 4는 본 발명의 일 실시 예에 따른, 각 페이지를 지연 메모리에 저장하는 방법을 도시한 흐름도, 그리고,
도 5는 본 발명의 일 실시 예에 따른, 지연 메모리에 저장된 페이지를 후보리스트 메모리로 이동시키는 방법을 도시한 흐름도이다.
본 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 개시된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 권리범위를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다." 또는 "구성되다." 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
실시예에 있어서 ‘모듈’ 혹은 ‘부’는 적어도 하나의 기능이나 동작을 수행하며, 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 또한, 복수의‘모듈’ 혹은 복수의‘부’는 특정한 하드웨어로 구현될 필요가 있는 ‘모듈’ 혹은 ‘부’를 제외하고는 적어도 하나의 모듈로 일체화되어 적어도 하나의 프로세서(미도시)로 구현될 수 있다.
도 1a 및 도 1b은 본 발명의 일 실시 예에 따른 페이지의 병합에 대해 구체적으로 설명하기 위한 도면이다.
도 1a는 전자 장치의 메모리 관리 방법을 설명하기 위한 도면이다. 전자 장치는 제1 어플리케이션(100) 및 제2 어플리케이션(110)을 설치할 수 있다. 그리고 전자 장치에 설치된 적어도 하나의 어플리케이션은 가상의 주소 공간을 이용하여 특정 기능을 수행할 수 있다.
제1 어플리케이션(100)의 실행 또는 제1 어플리케이션(100)에 대응되는 특정 기능의 실행에 의해, 제1 어플리케이션(100)에 상응하는 가상의 주소 공간 내에 "11"이라는 데이터(120)가 기록되고, 제2 어플리케이션(110)의 실행 또는 제2 어플리케이션(110)에 대응되는 특정 기능의 실행에 의해, 제2 어플리케이션(110)에 상응하는 가상의 주소 공간 내에 "11"이라는 데이터(130)가 기록되는 경우를 예로 든다.
도 1a에 도시된 바와 같이, 전자 장치는 제1 어플리케이션(100)에 대한 데이터 "11"(120) 및 제2 어플리케이션(110)에 대한 데이터 "11"(130)를 서로 다른 물리적 페이지(140 및 150)에 각각 매핑시킨다.
이 경우, 제1 어플리케이션(100)에 상응하는 가상의 주소 공간 내에 데이터 "11"이 복수번 포함된 경우에도, 복수번 포함된 데이터 "11"은 서로 다른 실제 물리 페이지에 각각 매핑된다.
이러한 방법에 따르는 경우, 전자 장치가 어플리케이션에 상응하는 가상의 주소 공간에 동일한 내용의 데이터가 존재하여도 서로 다른 물리적 페이지에 매핑하므로, 메모리 효율이 감소된다.
도 1b는 본 발명의 일 실시 예에 따른, 전자 장치의 페이지 병합 방법을 설명하는 도면이다. 전자 장치의 메모리 효율 증대를 위해, 전자 장치는 도 1a에 도시된 바와 달리, 전자 장치는 제1 어플리케이션(100)에 대한 데이터 "11"(120) 및 제2 어플리케이션(110)에 대한 데이터 "11"(130)를 하나의 물리적 페이지(160)에 매핑시킬 수 있다. 이를 페이지의 병합(merge)로 정의할 수 있다.
예를 들면, 전자 장치는 어플리케이션에 상응하는 가상의 주소 공간 내의 페이지를 초기화 할 수 있다. 그리고 상기 초기화된 값이 기설정된 특정값이 경우, 전자 장치는 상기 특정값으로 초기화된 페이지를 병합 대상으로 결정할 수 있다. 그리고 전자 장치는 상기 병합 대상으로 결정된 페이지들을 하나의 물리적 페이지에 매핑함으로써, 병합할 수 있다.
이하에서는, 도 2를 참조하여, 본 발명의 일 실시 예에 따른 전자 장치의 페이지 병합 방법을 구체적으로 설명한다.
먼저, 전자 장치는, S200 단계에서, 임의의 페이지 상의 데이터를 초기화한다. 페이지는 가상의 주소 공간에서 고정된 길이를 가지는 연속적인 구간으로, 가상의 주소 공간을 구성하는 기본 단위를 의미한다. 일반적으로, 페이지는 4kb의 길이를 가질 수 있다.
초기화 시, 전자 장치는 초기화 함수에서 설정된 길이의 데이터를 초기화할 수 있다. 예를 들면, 전자 장치는 4kb와 같이 하나의 페이지로 구분되는 길이에 기록된 데이터를 초기화할 수 있다.
임의의 페이지 상의 모든 데이터가 동일한 값으로 초기화된 경우, 상기 임의의 페이지가 초기화된 것으로 정의할 수 있다.
본 발명의 일 실시 예에 따르면, 전자 장치는 memset 함수와 같은 특정 함수를 이용하여 임의의 페이지 상의 데이터를 초기화할 수 있다. 다만, memset 함수를 이용하는 것은 일 실시 예에 불과할 뿐, 전자 장치는 초기화를 수행할 수 있는 다양한 함수를 이용하여 메모리 상의 데이터를 초기화할 수 있다. 또한, 전자 장치는 데이터를 초기화하기 위한 별도의 하드웨어 구성 요소를 포함할 수도 있다.
그리고 S210 단계에서, 전자 장치는 초기화에 따라, 임의의 페이지의 초기화된 값이 기설정된 특정값인지 여부를 판단한다. 특정값은 전자 장치에서 미리 설정된 값으로, 상술한 방법에 의해 초기화가 수행된 페이지가 병합 대상인지 여부를 판단하기 위한 값이다. 예를 들면, 전자 장치는 "0" 또는 "1"과 같은 상수를 특정값으로 미리 설정할 수 있다.
특정값은 반드시 한 개의 값만으로 정해질 필요는 없다. 따라서, 전자 장치는 복수개의 값을 특정값으로 설정하고, 페이지의 초기화된 값이 설정된 복수개의 특정값 중 하나에 해당하는지 여부를 판단할 수도 있다.
초기화에 따른 페이지의 초기화된 값이 기설정된 특정값인 경우, 전자 장치는 S120 단계로 진행하여, 초기화된 값이 기설정된 특정값인 페이지를 병합 대상으로 결정한다.
페이지의 병합(merge)은, 전자 장치가 동일한 내용이 기록된 가상의 주소 공간들을 하나의 물리적 페이지에 매핑하는 것을 의미할 수 있다. 구체적으로, 전자 장치는 어플리케이션을 설치하고, 상기 설치된 어플리케이션은 가상의 주소 공간(virtual address space)을 이용하여 특정 기능을 수행할 수 있다. 전자 장치는 어플리케이션에 상응하는 가상의 주소 공간에 기록된 데이터를 물리적 페이지에 매핑할 수 있다. 따라서, 전자 장치가 복수의 어플리케이션 각각에 상응하는 가상의 주소 공간들에 기록된 내용의 데이터 또는 하나의 어플리케이션에 상응하는 가상의 주소 공간에 기록된 동일한 내용의 데이터를 하나의 물리적 페이지에 매핑할 수 있다.
단계 S130에서, 전자 장치는 병합 대상으로 결정된 페이지들을 상술한 바와 같이 병합할 수 있다. 기설정된 특정값이 복수 개인 경우, 전자 장치는 초기화된 페이지들을 특정값에 따라 분류하고, 분류된 페이지들을 병합할 수 있다.
이하에서는 도 3a 및 도 3b를 참조하여, 상술한 동작을 수행하는 전자 장치의 각 구성요소에 대해 설명한다.
도 3a에 도시된 바와 같이, 전자 장치(300)는 메모리 관리부(310) 및 메모리(320)를 포함할 수 있다. 메모리 관리부(310)는 메모리(320)를 관리할 수 있다. 예를 들면, 메모리 관리부(310)는 전자 장치(300)에 설치된 어플리케이션에 상응하는 가상의 주소 공간을 메모리(320)의 물리적 페이지에 매핑할 수 있다. 그리고 메모리 관리부(310)는 전자 장치(300)에 설치된 복수의 어플리케이션 각각에 상응하는 가상의 주소 공간들에 기록된 동일한 내용의 데이터 또는 하나의 어플리케이션에 상응하는 가상의 주소 공간에 기록된 동일한 내용의 데이터를 메모리(320)의 하나의 물리적 페이지에 매핑할 수 있다.
메모리 관리부(310)가 메모리(320)를 효율적으로 관리하기 위해 페이지를 병합하는 방법을 설명한다. 먼저, 메모리 관리부(310)는 가상의 주소 공간 내의 페이지를 초기화할 수 있다. 메모리 관리부(310)는 페이지의 초기화된 값이 기설정된 특정값인 경우, 상기 페이지를 병합 대상으로 결정할 수 있다. 메모리 관리부(310)는 전자 장치(300)의 가상의 주소 공간 내의 페이지들에 대해 상기 초기화를 반복함으로써, 병합 대상이 되는 페이지를 결정할 수 있다. 그리고 메모리 관리부(310)는 병합 대상으로 결정된 복수의 페이지를 병합할 수 있다.
페이지의 병합(merge)은, 전자 장치(300)가 동일한 내용이 기록된 가상의 주소 공간들을 하나의 물리적 페이지에 매핑하는 것을 의미할 수 있다. 구체적으로, 전자 장치(300)에 설치된 어플리케이션은 가상의 주소 공간을 이용하여 특정 기능을 수행할 수 있다. 전자 장치는 어플리케이션에 상응하는 가상의 주소 공간에 기록된 데이터를 메모리(320)의 물리적 페이지에 매핑할 수 있다. 따라서, 전자 장치(300)는 복수의 어플리케이션 각각에 상응하는 가상의 주소 공간들에 기록된 동일한 내용의 데이터 또는 하나의 어플리케이션에 상응하는 가상의 주소 공간에 기록된 동일한 내용의 데이터를 하나의 물리적 페이지에 매핑할 수 있다.
한편, 메모리 관리부(310)는 특정값으로 초기화된 페이지가 임계 크기 이상인지 여부를 판단할 수 있다.
memset 함수와 같은 특정 함수를 이용하여 가상 주소 공간의 임의의 페이지를 초기화 하는 경우, 상기 페이지에 기록된 모든 변수가 동일한 특정값으로 초기화되어야 전자 장치(300)는 상기 페이지가 상기 특정값으로 초기화된 것으로 판단할 수 있다. 또한, 페이지 단위로 가상 주소 공간을 병합하는 경우, 연산량 감소 등의 효과가 증대된다. (나선영: 확인 부탁드립니다.)
따라서, 메모리 관리부(310)는 초기화가 수행된 하나의 페이지 크기 이상의 가상의 주소 공간이 모두 동일한 특정값으로 초기화되어, 페이지의 크기 이상을 유지하고 있는지 여부를 판단할 수 있다.
그리고 메모리 관리부(310)는 초기화의 대상이된 하나의 페이지 크기 이상의 가상의 주소 공간이 초기화 수행 후에도 하나의 페이지의 크기 이상인 경우, 상기 페이지를 병합 대상으로 결정하고, 결정된 페이지를 병합하여 메모리(320)에 저장할 수 있다.
한편, 메모리 관리부(310)는 기설정된 개수의 페이지가 병합 대상으로 결정되면, 기설정된 개수의 페이지의 초기화 값이 특정값으로 유지중인지 여부를 판단할 수 있다. 그리고 메모리 관리부(310)는 판단 결과에 따라 복수의 데이터를 병합하여 저장할 수 있다. 예를 들면, 메모리 관리부(310)는 기설정된 시간 이상 초기화 값이 특정값으로 유지중인 페이지에 대해서, 초기화된지 오래된 순서로, 병합 대상으로 결정할 수 있다.
또한, 메모리 관리부(310)는 가상 주소 공간의 페이지를 초기화하고, 초기화된 값이 동일한 페이지끼리 분류하여 병합 대상으로 결정할 수 있다. 전술한 바와 같이, 특정값은 복수개 설정될 수 있다. 따라서, 메모리 관리부(310)는 기설정된 복수개의 특정값 중 어느 하나의 값으로 초기화된 페이지를 동일한 특정값으로 초기화된 데이터끼리 분류하여 병합 대상으로 결정할 수 있다.
예를 들어, 메모리 관리부(310)는 특정값 "0"으로 초기화된 페이지끼리 분류하여 병합의 대상으로 결정하고, 특정값 "1"로 초기화된 페이지끼리 분류하여 다른 병합의 대상으로 결정할 수 있다.
또한, 메모리 관리부(310)는 특정 조건을 만족하는 경우에, 병합 대상으로 결정된 페이지들을 병합하여 메모리(320)에 저장할 수 있다. 예를 들어, 상기 특정 조건은 전자 장치(300)의 중앙 처리 장치의 운용률이 임계값 이하인 경우, 전자 장치(300)의 배터리가 임계값 이상인 경우 및 전자 장치(300)의 유휴 자원이 임계값 이상인 경우 중 하나를 만족하는 경우일 수 있다.
한편, 본 발명의 일 실시 예에 따르면, 전자 장치(300)의 메모리(320)는 역할에 따라 복수개의 메모리로 분류될 수 있다. 도 3b에 도시된 바와 같이, 전자 장치(300)의 메모리(320)는 지연 메모리(321), 후보리스트 메모리(322) 및 병합 메모리(323)를 포함할 수 있다.
지연 메모리(321), 후보리스트 메모리(322) 및 병합 메모리(323)는 서로 다른 종류의 메모리로 구현될 수 있다. 또한, 지연 메모리(321), 후보리스트 메모리(322) 및 병합 메모리(323)는 동일한 메모리 내에서 영역만 분리하여 구현될 수도 있다.
지연 메모리(321)는 특정값으로 초기화된 페이지의 병합 여부 판단을 지연시키기 위해 구비된 메모리이다.
전자 장치(300)에서 페이지가 초기화되고 연달아 병합되면, 병합 작업이 무의미하고 불필요한 오버헤드로 작용하는 경우가 발생할 수 있다. 예를 들어, 데이터가 초기화되고 병합된 후 곧바로 어플리케이션의 가상의 주소 공간에 기록된 임의의 데이터의 내용이 변경되면, 전자 장치(300)는 페이지 폴트(page fault)를 발생시켜 페이지를 다시 할당해야 한다.
페이지 폴트는, 전자 장치(300)의 어플리케이션이 상기 어플리케이션에 상응하는 가상 주소 공간에는 존재하지만 전자 장치(300)의 메모리(320)에는 존재하지 않는 데이터나 코드에 접근을 시도하는 경우, 발생하는 현상을 의미한다. 이때, 전자 장치(300)는 페이지 폴트가 발생하지 않는 것처럼 어플리케이션을 계속 동작시키기 위해, 새로운 페이지를 할당할 수 있다. 따라서, 데이터의 병합에 의해, 전자 장치(100)가 새로운 페이지를 할당하는 불필요한 오버헤드가 발생할 수 있다.
지연 메모리(321)는 상술한 문제점을 해결하기 위해, 특정값으로 초기화된 페이지를 저장하는 메모리이다.
메모리 관리부(310)가 데이터를 지연 메모리(321)에 저장하는 방법에 대해, 도 4를 참조하여 설명한다.
먼저, 단계 S400에서, 메모리 관리부(310)는 페이지를 초기화한다. 페이지는 가상의 주소 공간 상에서 고정된 길이를 가지는 연속적인 구간으로, 가상의 주소 공간을 구성하는 기본 단위를 의미한다. 일반적으로, 페이지는 4kb의 길이를 가질 수 있다.
본 발명의 일 실시 예에 따르면, 메모리 관리부(310)는 memset 함수와 같은 특정 함수를 이용하여 임의의 페이지 상의 데이터를 초기화할 수 있다. 다만, memset 함수를 이용하는 것은 일 실시 예에 불과할 뿐, 메모리 관리부(310)는 초기화 기능을 수행할 수 있는 다양한 함수를 이용하여 메모리 상의 데이터를 초기화할 수 있다.
그리고 단계 S410에서, 메모리 관리부(320)는 페이지의 초기화된 값이 기설정된 특정값인지 여부를 판단한다. 임의의 페이지의 초기화된 값이 특정값인 경우, 단계 S420으로 진행하여, 메모리 관리부(320)는 기설정된 특정값으로 초기화된 페이지의 크기가 기설정된 크기 이상인지 여부를 판단한다.
memset 함수와 같은 특정 함수를 이용하여 가상 주소 공간의 임의의 페이지를 초기화 하는 경우, 상기 페이지에 기록된 모든 변수가 동일한 특정값으로 초기화되어야 메모리 관리부(320)는 상기 페이지가 상기 특정값으로 초기화된 것으로 판단할 수 있다.
따라서, 메모리 관리부(320)는 상기 기설정된 특정값으로 초기화된 페이지의 크기가 최소한 하나의 페이지의 크기인지 여부를 판단할 수 있다.
판단 결과, 기설정된 특정값으로 초기화된 가상의 주소 공간의 크기가 기설정된 크기(예를 들면, 페이지 하나에 해당하는 크기) 이상인 경우, 단계 S430으로 진행하여, 메모리 관리부(310)는 페이지를 지연 메모리(321)에 저장한다.
한편, 후보리스트 메모리(322)는 지연 메모리(321)에 저장된 페이지 중에서, 페이지의 초기화 값이 특정값으로 유지중인것으로 판단된 페이지를 저장할 수 있다. 메모리 관리부(310)의 제어에 의해, 지연 메모리(321)에 저장된 페이지가 후보리스트 메모리(322)로 이동될 수 있다.
이하에서는, 도 5를 참조하여, 전자 장치(300)가 지연 메모리(321)에 저장된 페이지들을 후보리스트 메모리(322)로 이동하여 저장하는 구체적인 방법을 설명한다.
단계 S500에서, 전자 장치(300)의 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지가 기설정된 개수 이상인지 여부를 판단한다. 지연 메모리(321)에 저장된 페이지가 기설정된 개수 이상인 경우, 단계 S510으로 진행하여,. 메모리 관리부(310)는 지연 메모리(321)에 저장된지 가장 오래된 페이지에 대해 초기화된 페이지의 값이 특정값으로 유지중인지 여부를 판단한다. 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지들 중에서, 기설정 개수의 페이지에 대해 초기화된 값이 특정값으로 유지중인지 여부를 판단할 수 있다.
예를 들면, 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지가 기설정된 개수(Nth) 이상인 경우, 지연 메모리(321)에 저장된지 오래된 순서로 기설정된 개수(Np)의 페이지에 대해 초기화 값이 특정값으로 유지중인지 여부를 판단할 수 있다.
판단결과, 페이지의 초기화 값이 특정값으로 유지중인 경우, 메모리 관리부(310)는 단계 S520으로 진행하여, 초기화 값이 특정값으로 유지중인 페이지를 후보리스트 메모리(322)로 이동시킨다. 그리고 단계 S530에서, 메모리 관리부(310)는 후보리스트 메모리(322)로 이동된 페이지를 지연 메모리(321)에서 삭제한다. 이때, 지연 메모리(321)는 먼저 입력된 데이터를 먼저 삭제할 수 있는 큐(queue)로 구현될 수 있다.
단계 S540에서, 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지의 개수가 임계값 이하인지 여부를 판단한다. 예를 들면, 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지의 개수가 "Nth-Np"개 이하인지 여부를 판단할 수 있다.
따라서, 메모리 관리부(310)는 지연 메모리(321)에 저장된지 가장 오래된 페이지에 대해 초기화 값의 특정값으로 유지중인 것으로 판단하여, 상기 페이지를 후보리스트 메모리(322)로 이동시키고, 지연 메모리(321)에서 삭제한 후에 지연 메모리(321)에 저장된 페이지의 개수가 "Nth-Np"개 이하인지 판단한다. 그리고 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지의 개수가 "Nth-Np"개를 초과하는 것으로 판단되면, 상기 판단된 페이지의 다음으로 지연 메모리(321)에 저장된지 오래된 페이지에 대해, 특정값 유지 여부를 판단할 수 있다.
결과적으로, 메모리 관리부(310)는 지연 메모리(321)에 저장된 페이지의 개수가 임계값 이하가 될 때까지 상술한 단계 S510 내지 S530을 반복할 수 있다.
한편, 병합 메모리(323)는 후보리스트 메모리(322)에 저장된 페이지들을 병합하여 저장할 수 있다. 예를 들면, 동일한 특정값으로 초기화된 페이지들은 병합 메모리(323)의 하나의 물리적 페이지에 매핑될 수 있다.
구체적으로, 전술한 방법에 의해, 지연 메모리(321)에 저장된 페이지의 개수가 일정 개수(예를 들면, Nth-Np개) 이하가 되면, 메모리 관리부(310)는 후보리스트 메모리(322)로 이동된 페이지들을 병합하여 병합 메모리(323)에 저장되도록 할 수 있다.
상술한 방법에 의해, 전자 장치(300)는 페이지를 병합하기 위해, 기설정된 메모리 영역을 주기적으로 검색할 필요가 없게 된다.
구체적으로, 종래의 KSM(Kernel same-page merging)과 같은 메모리 중복 제거 기술과 달리, 본 발명의 전자 장치(300)는 페이지별로 병합 대상인지 여부를 판단하는 단계를 수행하지 않는다. 따라서, 모바일 장치, TV와 같은 전자 장치도 연산량 증가의 부담없이 효율적으로 메모리를 관리할 수 있게 된다.
한편, 상술한 전자 장치의 구성요소들은 소프트웨어로 구현될 수 있다. 가령, 전자 장치의 메모리 관리부는 플래시 메모리나 기타 비휘발성 메모리를 더 포함할 수 있다. 이러한 비휘발성 메모리에는 메모리 관리부의 각각의 역할을 수행하기 위한 프로그램이 저장될 수 있다.
또한, 전자 장치의 메모리 관리부는 CPU 및 RAM(Random Access Memory)을 포함하는 형태로 구현될 수 있다. 메모리 관리부의 CPU는 비휘발성 메모리에 저장된 상술한 프로그램들을 RAM으로 복사한 후, 복사한 프로그램들을 실행시켜 상술한 바와 같은 전자 장치의 기능을 수행할 수 있다.
메모리 관리부는 전자 장치의 제어를 담당하는 구성이다. 메모리 관리부는 중앙처리장치, 마이크로 프로세서, 제어부, 프로세서, 운용체제(operating system) 등과 동일한 의미로 혼용되어 사용될 수 있다. 또한, 전자 장치의 메모리 관리부는 전자 장치에 포함된 통신 모듈 등의 다른 기능부와 함께 단일칩 시스템 (System-on-a-chip 또는 System on chip, SOC, SoC)로 구현될 수 있다.
한편, 상술한 다양한 실시 예들에 따른 전자 장치의 페이지 병합 방법은 소프트웨어로 코딩되어 비일시적 판독 가능 매체(non-transitory readable medium)에 저장될 수 있다. 이러한 비일시적 판독 가능 매체는 다양한 장치에 탑재되어 사용될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안 될 것이다.
300: 전자 장치 310: 메모리 관리부
320: 메모리 321: 지연 메모리
322: 후보리스트 메모리 323: 병합 메모리

Claims (14)

  1. 전자 장치에 있어서,
    페이지를 초기화하고, 상기 페이지의 초기화된 값이 기설정된 특정값인 경우 상기 페이지를 병합 대상으로 결정하는 메모리 관리부; 및
    상기 병합 대상으로 결정된 복수의 페이지를 병합하여 저장하는 메모리; 를 포함하고,
    상기 메모리는,
    상기 병합 대상으로 결정된 페이지를 저장하는 지연 메모리;
    상기 지연 메모리에 저장된 페이지 중에서, 상기 페이지의 초기화 값이 상기 특정값으로 유지중인것으로 판단된 페이지를 저장하는 후보리스트 메모리; 및
    상기 후보리스트 메모리에 저장된 페이지들을 병합하여 저장하는 병합 메모리; 를 포함하고,
    상기 메모리 관리부는,
    상기 지연 메모리에 저장된 페이지가 기설정된 개수 이상인 경우 상기 지연 메모리에 저장된지 오래된 순서로 기설정된 개수의 페이지에 대해 상기 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하고, 상기 초기화 값이 상기 특정값으로 유지중인 페이지를 상기 후보리스트 메모리로 이동시키며, 상기 지연 메모리에 저장된 페이지가 상기 기설정된 개수 미만인 경우 상기 후보리스트 메모리에 이동된 페이지들을 상기 병합 메모리로 이동시키는 것을 특징으로 하는 전자 장치.
  2. 제1항에 있어서,
    상기 메모리 관리부는,
    상기 특정값으로 초기화된 페이지가 기설정된 크기 이상인지 여부를 판단하고, 상기 페이지의 크기가 상기 기설정된 크기 이상인 경우, 상기 페이지를 병합하여 상기 메모리에 저장하는 것을 특징으로 하는 전자 장치.
  3. 제1항에 있어서,
    상기 메모리 관리부는,
    기설정된 개수의 페이지가 상기 병합 대상으로 결정되면, 상기 기설정된 개수의 페이지의 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하고, 상기 판단 결과에 따라 복수의 데이터를 병합하여 저장하는 것을 특징으로 하는 전자 장치.
  4. 제1항에 있어서,
    상기 메모리 관리부는,
    상기 페이지를 초기화하고, 상기 초기화된 값이 동일한 페이지를 분류하여 병합 대상으로 결정하는 것을 특징으로 하는 전자 장치.
  5. 제1항에 있어서,
    상기 메모리 관리부는,
    상기 전자 장치의 중앙 처리 장치의 운용률이 임계값 이하인 경우, 상기 전자 장치의 배터리가 임계값 이상인 경우 및 상기 전자 장치의 유휴 자원이 임계값 이상인 경우 중 하나를 만족하는 경우, 상기 병합 대상으로 결정된 복수의 데이터를 병합하는 것을 특징으로 하는 전자 장치.
  6. 삭제
  7. 삭제
  8. 전자 장치의 페이지 병합 방법에 있어서,
    페이지를 초기화하는 단계;
    상기 초기화에 의해, 상기 페이지의 초기화된 값이 기설정된 특정값인 경우 상기 페이지를 병합 대상으로 결정하는 단계; 및
    상기 병합 대상으로 결정된 복수의 페이지를 병합하는 단계; 를 포함하고,
    상기 병합하는 단계는,
    상기 병합 대상으로 결정된 페이지를 지연 메모리에 저장하는 단계;
    상기 지연 메모리에 저장된 페이지 중에서, 상기 페이지의 초기화 값이 상기 특정값으로 유지중인것으로 판단된 페이지를 후보리스트 메모리에 저장하는 단계; 및
    상기 후보리스트 메모리에 저장된 페이지들을 병합하고, 상기 병합된 결과를 병합 메모리에 저장하는 단계; 를 포함하며,
    상기 병합하는 단계는,
    상기 지연 메모리에 저장된 페이지가 기설정된 개수 이상인 경우 상기 지연 메모리에 저장된지 오래된 순서로 기설정된 개수의 페이지에 대해 상기 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하고, 상기 초기화 값이 상기 특정값으로 유지중인 페이지를 상기 후보리스트 메모리로 이동시키며, 상기 지연 메모리에 저장된 페이지가 상기 기설정된 개수 미만인 경우 상기 후보리스트 메모리에 이동된 페이지들을 상기 병합 메모리로 이동시키는 것을 특징으로 하는 병합 방법.
  9. 제8항에 있어서,
    상기 결정하는 단계는,
    상기 특정값으로 초기화된 페이지가 기설정된 크기 이상인지 여부를 판단하는 단계; 및
    상기 페이지의 크기가 상기 기설정된 크기 이상인 경우, 상기 페이지를 상기 병합 대상으로 결정하는 단계; 를 더 포함하는 병합 방법.
  10. 제8항에 있어서,
    상기 병합하는 단계는,
    기설정된 개수의 페이지가 상기 병합 대상으로 결정되면, 상기 기설정된 개수의 페이지의 초기화 값이 상기 특정값으로 유지중인지 여부를 판단하는 단계; 및
    상기 판단 결과에 따라 복수의 데이터를 병합하는 단계; 를 더 포함하는 것을 특징으로 하는 병합 방법.
  11. 제8항에 있어서,
    상기 결정하는 단계는,
    상기 페이지를 초기화하고, 상기 초기화된 값이 동일한 페이지를 분류하여 병합 대상으로 결정하는 것을 특징으로 하는 병합 방법.
  12. 제8항에 있어서,
    상기 병합하는 단계는,
    상기 전자 장치의 중앙 처리 장치의 운용률이 임계값 이하인 경우, 상기 전자 장치의 배터리가 임계값 이상인 경우 및 상기 전자 장치의 유휴 자원이 임계값 이상인 경우 중 하나를 만족하는 경우, 상기 병합 대상으로 결정된 복수의 페이지를 병합하는 것을 특징으로 하는 병합 방법.
  13. 삭제
  14. 삭제
KR1020150065112A 2015-05-11 2015-05-11 전자 장치 및 이의 페이지 병합 방법 KR102402783B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020150065112A KR102402783B1 (ko) 2015-05-11 2015-05-11 전자 장치 및 이의 페이지 병합 방법
PCT/KR2016/004670 WO2016182255A1 (ko) 2015-05-11 2016-05-03 전자 장치 및 이의 페이지 병합 방법
US15/573,734 US10817179B2 (en) 2015-05-11 2016-05-03 Electronic device and page merging method therefor
EP16792901.7A EP3296878B1 (en) 2015-05-11 2016-05-03 Electronic device and page merging method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150065112A KR102402783B1 (ko) 2015-05-11 2015-05-11 전자 장치 및 이의 페이지 병합 방법

Publications (2)

Publication Number Publication Date
KR20160132514A KR20160132514A (ko) 2016-11-21
KR102402783B1 true KR102402783B1 (ko) 2022-05-27

Family

ID=57249498

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150065112A KR102402783B1 (ko) 2015-05-11 2015-05-11 전자 장치 및 이의 페이지 병합 방법

Country Status (4)

Country Link
US (1) US10817179B2 (ko)
EP (1) EP3296878B1 (ko)
KR (1) KR102402783B1 (ko)
WO (1) WO2016182255A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108256980B (zh) * 2018-02-10 2022-05-31 湘西墨戎苗寨乡村游有限责任公司 一种旅游服务型供应链管理平台订单管理方法
US11288104B2 (en) * 2019-08-06 2022-03-29 International Business Machines Corporation Automatic dynamic operating system provisioning

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090049271A1 (en) 2007-08-14 2009-02-19 Schneider James P Consolidation of matching memory pages
US20120246436A1 (en) * 2011-03-21 2012-09-27 Microsoft Corporation Combining memory pages having identical content
US20130159596A1 (en) * 2011-12-19 2013-06-20 Adriaan van de Ven Techniques for memory de-duplication in a virtual system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640496A (en) * 1991-02-04 1997-06-17 Medical Instrumentation And Diagnostics Corp. (Midco) Method and apparatus for management of image data by linked lists of pixel values
US5406278A (en) * 1992-02-28 1995-04-11 Intersecting Concepts, Inc. Method and apparatus for data compression having an improved matching algorithm which utilizes a parallel hashing technique
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
IL147073A0 (en) * 2001-12-10 2002-08-14 Monosphere Ltd Method for managing the storage resources attached to a data network
KR100608602B1 (ko) * 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
CN101180612A (zh) * 2005-03-31 2008-05-14 日本电气株式会社 计算机系统、存储器管理方法及其程序
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US8656083B2 (en) 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
KR101257691B1 (ko) * 2011-08-12 2013-04-24 아주대학교산학협력단 메모리 컨트롤러 및 이의 데이터 관리방법
US8898121B2 (en) * 2012-05-29 2014-11-25 International Business Machines Corporation Merging entries in a deduplication index
JP5979024B2 (ja) * 2013-01-29 2016-08-24 オムロン株式会社 交信装置、rfidシステムおよびデータ書込みプログラム
EP3059966B1 (en) * 2013-10-18 2021-01-13 LG Electronics Inc. Video decoding apparatus and method for decoding multi-view video
US9785466B2 (en) * 2014-02-07 2017-10-10 International Business Machines Corporation Managing data segments in memory for context switching with standalone fetch and merge services

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090049271A1 (en) 2007-08-14 2009-02-19 Schneider James P Consolidation of matching memory pages
US20120246436A1 (en) * 2011-03-21 2012-09-27 Microsoft Corporation Combining memory pages having identical content
US20130159596A1 (en) * 2011-12-19 2013-06-20 Adriaan van de Ven Techniques for memory de-duplication in a virtual system

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Malloc(3)-Linux man page, die.net, 2010.09.01. <https://linux.die.net/man/3/malloc>

Also Published As

Publication number Publication date
WO2016182255A1 (ko) 2016-11-17
KR20160132514A (ko) 2016-11-21
EP3296878A4 (en) 2018-04-04
US10817179B2 (en) 2020-10-27
EP3296878A1 (en) 2018-03-21
EP3296878B1 (en) 2022-04-06
US20180150237A1 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
US10705935B2 (en) Generating job alert
US20160034202A1 (en) Multi-tiered storage device system and method thereof
CN111742291A (zh) 具有用户空间闪存转换层的用户空间存储i/o栈的方法和系统
US9081623B1 (en) Service resource allocation
KR20160124181A (ko) 수정된 메모리 압축
US20160274819A1 (en) Memory system including host and a plurality of storage devices and data migration method thereof
US10210109B2 (en) Pre-allocating memory buffers by physical processor and using a bitmap metadata in a control program
CN115033184A (zh) 访存处理装置、方法、处理器、芯片、板卡及电子设备
US20150293845A1 (en) Multi-level memory hierarchy
KR20130035934A (ko) 저장 장치에서 동적 자원 구성 방법과 그 저장 장치 및 저장 매체
US10891150B2 (en) Storage control method and storage controller for user individual service environment
US20180137059A1 (en) Migrating buffer for direct memory access in a computer system
CN105138481A (zh) 存储数据的处理方法、装置和系统
US20210181986A1 (en) Storage device, storage system and operating method thereof
KR20220082917A (ko) 성능 향상을 위한 사용자 인터페이스 기반 페이지 마이그레이션
KR102402783B1 (ko) 전자 장치 및 이의 페이지 병합 방법
US10901914B2 (en) Method for writing multiple copies into storage device, and storage device
US20100153678A1 (en) Memory management apparatus and method
US10102135B2 (en) Dynamically-adjusted host memory buffer
KR20090053487A (ko) 실시간 응답성이 요구되는 코드를 위한 요구 페이징 방법및 단말
US11226738B2 (en) Electronic device and data compression method thereof
CN104252415B (zh) 一种重新分布数据的方法和系统
CN111837105A (zh) 电子设备及其控制方法
US10678453B2 (en) Method and device for checking false sharing in data block deletion using a mapping pointer and weight bits
US20140351298A1 (en) Method and apparatus for distributed processing of file

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