KR102402780B1 - 메모리 관리 방법 및 장치 - Google Patents

메모리 관리 방법 및 장치 Download PDF

Info

Publication number
KR102402780B1
KR102402780B1 KR1020150079037A KR20150079037A KR102402780B1 KR 102402780 B1 KR102402780 B1 KR 102402780B1 KR 1020150079037 A KR1020150079037 A KR 1020150079037A KR 20150079037 A KR20150079037 A KR 20150079037A KR 102402780 B1 KR102402780 B1 KR 102402780B1
Authority
KR
South Korea
Prior art keywords
memory allocation
memory
page
contiguous
area
Prior art date
Application number
KR1020150079037A
Other languages
English (en)
Other versions
KR20160143026A (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 KR1020150079037A priority Critical patent/KR102402780B1/ko
Priority to EP16803775.2A priority patent/EP3304317B1/en
Priority to US15/172,951 priority patent/US10409498B2/en
Priority to PCT/KR2016/005923 priority patent/WO2016195422A1/en
Publication of KR20160143026A publication Critical patent/KR20160143026A/ko
Application granted granted Critical
Publication of KR102402780B1 publication Critical patent/KR102402780B1/ko

Links

Images

Classifications

    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • 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
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • 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/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/25Using a specific main memory architecture
    • G06F2212/251Local memory within processor subsystem
    • G06F2212/2515Local memory within processor subsystem being configurable for different purposes, e.g. as cache or non-cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시 예에 따르면, 메모리 관리 방법에 있어서, 연속 메모리 할당 영역의 세그먼트에서 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자의 배타적 관계를 포함하는 리스트를 설정하는 단계, 메모리 할당 요청을 수신하는 단계, 상기 메모리 할당 요청자가 상기 리스트에 포함된 메모리 할당 요청자인지 확인하는 단계 및 상기 메모리 할당자가 상기 리스트에 포함되어 있으면, 상기 리스트의 세그먼트에 대응하는 연속 메모리 할당 영역의 페이지를 할당하는 단계를 포함하는 방법 및 이를 이용하는 전자 장치를 제공할 수 있다.

Description

메모리 관리 방법 및 장치{Apparatus and method for managing memory}
본 발명은 메모리 관리 방법 및 장치에 관한 것이다. 또한, 본 발명은 메모리 할당 요청 시 효율적인 관리를 통한 메모리 할당 속도를 향상 시키는 방법 및 장치에 관한 것이다.
최근 기술의 발달로 각종 전자 장치들은 다양한 기능을 포함하고 있다. 일 예로 이동 단말의 경우 음성 통화나 메시지 송수신과 같은 일반적인 통신 기능 외에도 TV(Television) 시청 기능(예컨대, DMB(Digital Multimedia Broadcasting)나 DVB(Digital Video Broadcasting)와 같은 이동 방송), 음악재생기능(예컨대, MP3(MPEG Audio Layer-3)), 사진촬영 기능, 인터넷 접속 기능, 사전 검색 기능 등 각종 멀티미디어 기능들이 부가되고 있다. 이에 따라 각종 멀티미디어 기능들을 실행하기 위한 메모리 할당 요청이 늘어나고 있으나, 메모리를 효과적으로 관리하지 못할 경우 메모리를 할당하지 못해 실행하고자 하는 프로그램을 실행할 수 없는 문제가 발생할 수 있다.
특히, 연속 메모리 할당을 요청이 있는 경우, 연속된 메모리를 할당하기 위한 메모리 공간이 확보되어야 하며, 연속된 메모리 공간이 확보되지 않은 경우 메모리 확보를 위한 메모리 회수(reclaim), 메모리 이동(migration)이 요구되고, 메모리 할당 수행 시간이 증가하여 사용자 체감 품질을 떨어뜨린다.
따라서 효율적으로 메모리를 관리를 통한 메모리 할당 방법이 요구된다.
본 발명이 이루고자 하는 기술적 과제는 본 발명은 메모리 관리 방법 및 장치를 제공하는 것이다. 또한, 본 발명이 이루고자 하는 기술적 과제는 메모리 할당 요청 시 효율적인 관리를 통한 메모리 할당 속도를 향상 시키는 방법 및 장치를 제공하는 것이다. 또한, 본 발명이 이루고자 하는 기술적 과제는 연속 메모리 할당 시 마이그레이션(migration) 최소화를 통한 메모리 할당 속도를 향상 시키는 방법 및 장치를 제공하는 것이다.
본 발명의 실시 예에 따르면, 메모리 관리 방법에 있어서, 연속 메모리 할당 영역의 세그먼트에서 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자의 배타적 관계를 포함하는 리스트를 설정하는 단계, 메모리 할당 요청을 수신하는 단계, 상기 메모리 할당 요청자가 상기 리스트에 포함된 메모리 할당 요청자인지 확인하는 단계 및 상기 메모리 할당자가 상기 리스트에 포함되어 있으면, 상기 리스트의 세그먼트에 대응하는 연속 메모리 할당 영역의 페이지를 할당하는 단계를 포함하는 방법을 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면, 전자 장치에 있어서, 연속 메모리 할당 영역을 포함하는 메모리 및 연속 메모리 할당 영역의 세그먼트에서 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자의 배타적 관계를 포함하는 리스트를 설정하고, 메모리 할당 요청을 수신하며, 상기 메모리 할당 요청자가 상기 리스트에 포함된 메모리 할당 요청자인지 확인하고, 상기 메모리 할당자가 상기 리스트에 포함되어 있으면, 상기 리스트의 세그먼트에 대응하는 연속 메모리 할당 영역의 페이지를 할당하도록 제어하는 메모리 관리부를 포함하는 전자 장치를 제공할 수 있다.
본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시 예에 따르면 메모리 관리 방법 및 장치를 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면 메모리 할당 요청 시 효율적인 관리를 통한 메모리 할당 속도를 향상 시키는 방법 및 장치를 제공할 수 있다.
또한, 본 발명의 실시 예에 따르면 연속 메모리 할당 시 마이그레이션(migration) 최소화를 통한 메모리 할당 속도를 향상 시키는 방법 및 장치를 제공할 수 있다.
도 1은 본 발명의 제1 실시 예에 따른 메모리를 포함하는 전자 장치를 나타내는 도면이다.
도 2는 본 발명의 제1 실시 예에 따른 메모리 할당 과정을 나타내는 도면이다.
도 3은 본 발명의 제2 실시 예에 따른 메모리를 포함하는 전자 장치를 나타내는 도면이다.
도 4는 본 발명의 제2 실시 예에 따른 페이지 단위 메모리 해제 과정을 설명하는 도면이다.
도 5는 본 발명의 제2 실시 예에 따른 페이지 단위 메모리 할당 과정을 설명하는 도면이다.
도 6은 본 발명의 일 실시 예에 따른 연속 메모리 할당 영역을 설명하는 도면이다.
도 7은 본 발명의 제2 실시 예에 따른 메모리 할당 과정을 나타내는 도면이다.
도 8은 본 발명의 제2 실시 예에 따른 연속 메모리 할당 과정을 설명하는 도면이다.
도 9는 본 발명의 일 실시 예에 따른 비트맵 검색 방법을 설명하는 도면이다.
도 10은 본 발명의 다양한 실시 예에 따른 비트맵 검색 방법을 설명하는 도면이다.
도 11은 신규 어플리케이션을 세그먼트 리스트에 추가하는 방법을 설명하는 도면이다.
이하, 첨부된 도면들을 참조하여 다양한 실시 예들을 상세히 설명한다. 이때, 첨부된 도면들에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다. 하기의 설명에서는 본 발명의 다양한 실시 예들에 따른 동작을 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않도록 생략될 것이라는 것을 유의하여야 한다.
본 발명의 실시 예에서 메모리는 전자 장치와 함께 동작하는 기억 장치를 의미한다.
본 발명의 실시 예에서 마이그레이션(migration)과 이동은 동일한 개념으로 사용한다.
본 발명의 실시 예에서 동적 메모리 할당 또는 메모리 동적 할당은 특정 어플리케이션 또는 장치 등의 실행/메모리 요청 여부에 따라 메모리 할당, 회수를 동적으로 수행하는 것을 의미한다.
본 발명의 실시 예에서 연속 메모리 할당은 페이지 단위 메모리 할당에 대비되는 개념으로 페이지 크기 이상의 연속된 메모리 영역을 할당하는 것을 의미한다.
본 발명의 실시 예에서 연속 메모리 할당 요청자는 하드웨어이고, 페이지 단위 메모리 할당 요청자는 어플리케이션일 수 있다. 일반적으로 물리적으로 연속된 메모리를 요구하는 주체는 DMA(direct memory access)를 통한 메모리 전송을 이용하는 하드웨어 기능 블록(HW IP, hardware intellectual property)이다. 다만, 이는 일반적인 예시이며, 본 발명의 권리 범위가 이에 한정되는 것은 아니다. 어플리케이션 또한 연속 메모리의 할당을 요청할 수도 있다.
본 발명의 실시 예에서 커널은 메모리나 저장장치 내에서 운영체계의 주소공간을 관리하고, 이들을 모든 주변장치들과 커널의 서비스들을 사용하는 다른 사용자들에게 고루 나누어주는 메모리관리자를 가지고 있다. 커널의 서비스는 운영체계의 다른 부분이나, 흔히 시스템 호출이라고 알려진 일련의 프로그램 인터페이스들을 통해 요청된다.
도 1은 본 발명의 제1 실시 예에 따른 메모리를 포함하는 전자 장치를 나타내는 도면이다.
도 1을 참조하면, 전자 장치(100)는 연속 메모리 요청 처리부(110), 페이지 단위 처리부(120) 및 메모리(130)를 포함할 수 있다. 메모리(130)는 일반 영역(131)과 CMA (contiguous memory allocator) 영역(135)을 포함한다. 상기 연속 메모리 요청 처리부(110)와 페이지 단위 처리부(120)는 메모리 관리부에 포함될 수 있다. 또한, 상기 전자 장치(100)는 상기 메모리(130)를 이용하는 적어도 하나의 어플리케이션(application) 및 적어도 하나의 하드웨어(HW, hardware)를 포함할 수 있다.
연속 메모리 요청 처리부(110)는 연속 메모리 요청을 수신하는 경우 연속 메모리 요청에 대응하여 연속된 메모리 영역을 확인하고, 연속된 메모리 영역이 확인되지 않으면 메모리를 정리(회수, 이동)하여 연속된 메모리 공간을 확보하고, 연속 메모리 요청에 대응하여 확보된 연속 메모리 공간을 할당하는 동작을 수행한다. 연속 메모리 요청 처리부(110)는 연속 메모리 할당 영역의 연속된 메모리 영역을 할당할 수 있다.
페이지 단위 처리부(120)는 연속 메모리 요청이 아닌 메모리 할당 요청을 수신하는 경우(예를 들어, 페이지 단위 메모리 할당 요청을 수신하는 경우), 일반 영역(131) 또는 CMA 영역(135)에 페이지 단위의 메모리를 할당할 수 있다.
일반 영역(131)은 연속 메모리 할당 요청이 아닌 메모리 할당 요청에 대하여 메모리를 할당하는데 이용되는 영역이다.
상기 CMA 영역(135)은 연속 메모리 할당을 위해 설정된 연속 메모리 할당 영역일 수 있다. 연속 메모리 할당 영역은 연속된 메모리 할당 요청을 처리하기 위해 설정된 영역일 수 있다. 연속 메모리 할당 영역은 연속 메모리 할당을 위해 사용될 수도 있고, 연속 메모리 할당 요청이 없는 경우에는 페이지 단위의 메모리 할당에도 사용되지만, 연속 메모리 할당 요청이 있는 경우 페이지 단위의 메모리 할당을 정리(회수, 이동)하고 연속 메모리 할당에 이용되는 영역일 수 있다.
연속 메모리 할당 영역의 일 예인 CMA 영역(135)은 커널(kernel)에서 연속 메모리 요청을 처리하기 위한 영역이다. 커널에서는 물리적으로 연속적인 메모리 요청을 처리하기 위해 자신이 관리하는 전체 메모리 영역 중 일부 영역을 CMA 영역으로 관리할 수 있다. CMA 영역(135)은 연속 메모리 요청이 발생하기 전에는 커널에서 이동 유형(migration type)이 이동 가능(movable)인 페이지(page) 할당 시 활용하게 된다. 이후 연속 메모리 요청이 들어오면 CMA 영역의 가장 앞 부분에서 요청 크기에 대해 할당된 페이지를 회수하거나 이동 시켜 해당 영역을 이동시켜 해당 영역을 모두 자유(free) 상태로 만든 다음 시작 주소를 알려줄 수 있다.
도 2는 본 발명의 제1 실시 예에 따른 메모리 할당 과정을 나타내는 도면이다.
CMA 영역은 전자 장치의 부팅 시 초기화될 수 있다. 전체 메모리에서 CMA 영역의 위치와 크기가 선정된다. CMA 영역 내에 연속 메모리로 할당된 정보를 나타내는 비트맵을 CMA 영역 이외의 다른 메모리 영역에 할당 후 초기화를 한다. 이후, CMA 영역의 페이지가 메모리 할당 가능 페이지(free page)임을 페이지 단위 처리부에 알려준다.
210 동작에서 메모리 관리부는 메모리 할당 요청을 수신할 수 있다. 메모리 할당 요청에 대하여 메모리 관리부는 연속 메모리 할당 요청인지 페이지 단위 메모리 할당 요청인지 확인할 수 있다. 페이지 단위 메모리 할당 요청인 경우 220 동작으로 진행하고, 연속 메모리 할당 요청인 경우 230 이하 동작으로 진행된다.
220 동작 이하 동작은 메모리 관리부의 페이지 단위 처리부에 의해 수행될 수 있다. 또한, 230 이하 동작은 메모리관리부의 연속 메모리 요청 처리부에 의해 수행될 수 있다.
220 동작에서 페이지 단위 처리부는 요청된 크기에 대응하는 페이지 단위의 메모리(페이지)를 할당할 수 있다. 페이지 단위 메모리를 처리하기 위해서 페이지 단위 처리부는 버디 할당자(buddy allocator)에 페이지 단위의 메모리를 할당해줄 것을 요청할 수 있다. 페이지 단위 처리부는 버디 할당자에게 원하는 크기만큼의 페이지를 요청하여 할당받을 수 있고, 할당 받은 페이지를 반환할 때도 버디 할당자에게 전달하여 해당 페이지가 재 사용 가능하도록 할 수 있다. 페이지 단위의 메모리는 메모리의 일반 영역에 할당될 수 있고, 연속 메모리 할당 영역에 할당될 수도 있다. 다만, 연속 메모리 할당 영역에 할당되는 페이지 단위의 메모리 요청은, 연속 메모리 할당 요청이 있는 경우 회수 또는 이동 가능한 메모리 할당 요청이어야 할 것이다.
메모리 할당 요청이 연속 메모리 할당 요청인 경우 연속 메모리 요청 처리부는 230 이하 동작을 이용하여 요청받은 크기의 연속된 페이지를 할당할 수 있다.
230 동작에서 메모리 관리부는 비트맵 서치를 수행한다. 메모리 관리부에는 비트맵 정보가 저장되어 있다. 상기 비트맵 정보는 연속 메모리 할당 영역의 각 페이지에 대한 할당 상태를 나타낸다. 할당 상태는 각 페이지가 현재 다른 어플리케이션 또는 하드웨어에 할당되어 있는지 여부를 지시할 수 있다. 페이지가 현재 다른 어플리케이션 또는 하드웨어에 할당되어 있는 경우 해당 페이지가 회수되거나 이동되지 않으면 다른 메모리 할당 요청에 대하여 할당될 수 없다. 비트맵 정보에 기반하여 연속된 페이지를 할당하기 위한 위치를 검색할 수 있다. 상기 서치는 연속 메모리로 할당되어 있는 영역을 피하기 위한 서치이다.
240 동작에서 메모리 관리부는 비트맵 서치에 기반하여 연속 메모리 할당 요청에 대응하여 요청된 연속 메모리 크기 이상의 메모리 영역(연속된 페이지 영역)을 선정한다. 상기 비트맵 서치에 기반하여 연속 메모리로 할당되어 있는 영역을 피하여 연속된 페이지 영역을 선정할 수 있다. 따라서 연속 메모리로 할당된 페이지가 없는 경우, 시작 지점을 선정하고, 연속 메모리로 할당되어 있는 영역이 있다면, 연속 메모리로 할당되어 있는 영역의 다음 위치를 선정한다.
따라서 상기 선정된 메모리 영역 내의 페이지들을 리스트화한다. 상기 선정된 메모리 영역은 할당 가능 페이지(free page), 회수 가능 페이지(reclaim page), 이동 가능 페이지(migration page)를 포함할 수 있다. 상기 선전된 연속된 페이지 영역은 회수 가능 페이지에 대한 회수 및 이동 가능 페이지에 대한 이동 이후 요청된 연속 메모리 크기 이상의 연속된 페이지 영역을 확보할 수 있는 영역이다. 상기 리스트에 기반하여, 250 동작 및 260 동작을 수행한다.
250 동작에서 메모리 관리부는 선정된 연속된 페이지 영역 내에서 회수 가능한 페이지들에 대한 페이지 회수를 수행한다. 회수된 페이지는 메모리 할당이 가능한 페이지(free page)가 된다.
260 동작에서 메모리 관리부는 선정된 연속된 페이지 영역 내의 이동 가능한 페이지들에 대한 페이지 이동(migration)을 수행한다. 마이그레이션은 해당 페이지의 데이터 또는 자원을 다른 페이지로 이동시키는 것을 의미한다. 마이그레이션 이후 해당 페이지는 메모리 할당이 가능한 페이지(free page)가 된다.
250 동작 및 260 동작을 거치면 선정된 메모리 영역 내에서 페이지 단위로 할당된 페이지는 존재하지 않게 된다. 선정된 페이지 영역은 연속 페이지가 할당 가능한 영역이 된다. 270 동작에서 메모리 관리부는 선정된 연속 페이지 영역 내에서 요청 받은 연속 할당 메모리 요청에 대응하는 크기의 연속된 메모리 페이지를 할당할 수 있다. 상기 연속된 메모리 페이지는 페이지 회수 및 페이지 이동에 의해 확보될 수 있다.
도 1 및 도 2와 같은 방법으로 본 발명의 제1 실시 예에 따른 연속 메모리 요청에 따른 연속된 페이지 할당이 가능하다.
제1 실시 예는 내부에 연속 메모리 할당 여부를 나타내는 비트맵 정보를 이용하여 연속 메모리 요청 처리부에서 우선 연속된 페이지 영역의 위치를 선정한 뒤 해당 영역 내에 있는 모든 페이지를 확인하여 회수 가능한 페이지는 회수하고, 나머지는 다른 영역으로 이동하여 해당 영역의 모든 할당된 페이지를 제거하는 방식이다.
이때, 페이지 이동은 많은 비용을 감수해야 하는 동작이다. 먼저 페이지 이동 개수에 따라 연속 메모리 할당에 소요되는 시간의 편차가 크다. 할당하고자 하는 연속 메모리 공간에 이동해야 하는 페이지 개수가 많으면 초 단위의 할당 시간이 소요되고 그 반대의 경우에는 수백 ms 단위의 시간이 소요된다. 연속 메모리를 할당 받아서 사용하는 하드웨어나 어플리케이션은 그 종류에 따라 이 편차는 동작에 영향을 끼칠 수 있다.
그리고 페이지 이동은 CMA 영역 내에서 페이지 단위로 할당되어 있는 페이지를 CMA 이외의 영역으로 이동시키는 동작이다. 페이지 이동이 많다는 것은 기존 Free된 영역이 할당된 것으로 되는 동작이다. 불필요한 페이지 이동은 메모리 효율을 떨어뜨리는 결과를 초래한다.
본 발명의 제2 실시 예에서는 상기 제1 실시 예에서 개선된 메모리 할당 방법 및 장치를 제공한다. 본 발명의 제2 실시 예는 연속 메모리 할당 영역에서 페이지 이동으로 인한 성능 편차, 메모리 비 효율적 사용의 문제를 해결한다. 본 발명의 제2 실시 예는 페이지 이동을 최소화 하여 연속 메모리 할당 속도를 향상 시키는 방법 및 장치를 제공한다. 제1 실시 예와 동일한 용어 및 동작은 제1 실시 예의 설명을 참조한다.
도 3은 본 발명의 제2 실시 예에 따른 메모리를 포함하는 전자 장치를 나타내는 도면이다.
도 3을 참조하면, 전자 장치(300)는 메모리(310) 및 메모리 관리부(330)를 포함할 수 있다. 상기 메모리 관리부(330)는 관리부(331), 검색부(333) 및 갱신부(335)를 포함할 수 있다. 상기 관리부(331), 검색부(333) 및 갱신부(335) 중 적어도 하나는 메모리 관리부(330) 외부에 구비될 수도 있다. 메모리(310)는 일반 영역(311)과 연속 메모리 할당 영역(313)을 포함할 수 있다. 일반 영역(311)은 연속 메모리 할당 요청이 아닌 메모리 할당 요청 및 페이지 단위 메모리 할당 요청에 이용되는 영역이다. 연속 메모리 할당 영역(313)은 연속된 메모리 할당 요청에 대한 연속된 메모리 페이지를 할당하기 위한 영역이다. 연속 메모리 할당 영역은 연속된 메모리 할당 요청에 대한 연속된 메모리 페이지를 할당하는데 사용될 수 있고, 연속 메모리 할당 요청이 없는 경우 페이지 단위의 메모리 할당에도 사용될 수 있다. 연속 메모리 할당 영역에 할당된 페이지 단위의 메모리 요청은 연속된 메모리 할당 요청이 있는 경우 회수 또는 이동될 수 있다.
또한, 상기 전자 장치(300)는 상기 메모리(310)를 이용하는 적어도 하나의 어플리케이션(application) 및 적어도 하나의 하드웨어(HW, hardware)를 포함할 수 있다.
메모리 관리부(330)는 메모리 할당을 위해 메모리를 관리하고, 메모리 할당 요청에 대응하여 메모리 페이지를 할당할 수 있다.
관리부(331)는 메모리 관리 동작을 수행할 수 있다. 관리부(311)는 세그먼테이션(segmentation)을 관리할 수 있다. 본 발명의 실시 예에서 세그먼테이션은 연속 메모리 할당 영역을 세그먼트 단위로 나누는 동작 및 세그먼트 단위로 각 세그먼트에 대응하는 어플리케이션 및/또는 하드웨어를 관리하는 동작을 의미한다. 세그먼트에 대응하는 어플리케이션 및/또는 하드웨어는 리스트를 통해 관리될 수 있다. 상기 리스트는 세그먼트 리스트 일 수 있다. 관리부(331)는 각 세그먼트를 관리하는 세그먼트 관리자를 포함할 수 있다.
검색부(333)는 연속 메모리 할당 영역(313)에서 마이그레이션이 최소 또는 발생하지 않는 영역을 검색하는 동작을 수행한다. 검색부(320)는 연속 메모리 할당 영역의 비트맵 정보에 기반하여 마이그레이션이 최소인 영역을 검색할 수 있다. 상기 비트맵 정보는 페이지의 회수 가능 여부를 나타내는 비트맵 정보일 수 있다. 비트맵 정보를 통해서 회수 가능 페이지를 확인할 수 있다. 예를 들어, 해당 페이지가 회수 가능한 경우는 1, 회수 가능하지 않은 경우에는 0으로 표시하여 비트맵을 관리할 수 있다. 회수될 수 없는 페이지는 연속 페이지를 확보 하기 위하여 마이그레이션 되어야 하는 페이지이다. 특정 영역에서 회수 가능한 페이지 수가 많다는 것은 마이그레이션 되어야 하는 페이지의 수가 적다는 의미와 동일하다. 페이지의 회수에 소모되는 시간은 적고, 페이지 마이그레이션에 사용되는 시간은 페이지 회수에 비하여 상대적으로 긴 시간이 소모되기 때문에 마이그레이션을 최소화 하는 영역을 검색하는 것은 중요하다.
갱신부(335)는 상기 연속 메모리 영역의 비트맵 정보를 갱신한다. 상기 갱신부(335)는 검색부(333)에 포함될 수 있다. 메모리 페이지를 사용하는 각 어플리케이션 또는 하드웨어의 정보에 기반하여 페이지의 회수 가능 여부를 갱신(업데이트)한다. 각 태스크는 특성에 따라 페이지 정보를 표시한다. 상기 페이지 정보는 dirty, write-back, reference count 값 등을 포함할 수 있다. 갱신부(335)는 상기 페이지 정보에 기반하여 페이지의 회수 가능 여부를 확인하고, 페이지가 회수 가능한 경우에는 1, 회수 가능하지 않은 경우에는 0으로 해당 페이지의 비트맵 정보를 갱신한다. 갱신된 비트맵 정보는 연속된 페이지 검색 시 마이그레이션이 최소화 되는 연속된 페이지를 검색할 때 사용될 수 있다.
상기에서 관리부(331), 검색부(333), 갱신부(335)의 동작을 나누어 설명하였으나 본 발명의 동작이 이에 한정되는 것은 아니다. 관리부(331), 검색부(333), 갱신부(335)의 동작은 메모리 관리부(330)에 의해 수행될 수 있다. 메모리 관리부(330)는 제어부, 컨트롤러 또는 메모리 관리 프로세서 등으로 명명될 수 있다.
본 발명의 실시 예에 따르면, 메모리 관리부(330)는 연속 메모리 할당 영역의 세그먼트에서 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자의 배타적 관계를 포함하는 리스트를 설정하고, 메모리 할당 요청을 수신하며, 상기 메모리 할당 요청자가 상기 리스트에 포함된 메모리 할당 요청자인지 확인하고, 상기 메모리 할당자가 상기 리스트에 포함되어 있으면, 상기 리스트의 세그먼트에 대응하는 연속 메모리 할당 영역의 페이지를 할당하도록 제어할 수 있다. 상기 배타적 관계는 상기 페이지 단위 메모리 할당 요청자와 상기 연속 메모리 할당 요청자에 대한 메모리가 동시에 활성화 상태에 있지 않는 것을 의미할 수 있다.
또한, 상기 메모리 관리부(330)는 상기 연속 메모리 할당 영역에 대한 비트맵 정보를 관리하고, 상기 비트맵 정보는 상기 연속 메모리 할당 영역에 포함된 페이지의 회수 가능 여부를 지시할 수 있다.
또한, 상기 메모리 관리부(330)는 상기 메모리 할당 요청이 연속 메모리 할당 요청인지 판단하고, 연속 메모리 할당 요청이면, 상기 비트맵 정보에 기반하여 상기 연속 메모리 할당 요청을 처리하기 위한 연속된 메모리 페이지 영역을 선정하도록 제어할 수 있다. 또한, 상기 메모리 관리부(330)는 연속 메모리 할당 영역 중 요청 받은 연속 메모리 할당을 위한 페이지 이동이 최소인 영역을 상기 연속 메모리 페이지 영역으로 선정할 수 있다. 이때, 상기 페이지 이동이 최소인 영역은, 상기 연속 메모리 할당 요청에 대응하는 연속 페이지 영역 중 상기 비트맵 정보에 기반한 회수 가능 페이지 수가 최대인 영역일 수 있다.
또한, 상기 메모리 관리부(330)는 상기 연속 메모리 영역에 포함된 페이지의 회수 가능 정보가 변경되면 상기 비트맵 정보를 업데이트 하도록 제어할 수 있다.
또한, 상기 메모리 관리부(330)는 상기 리스트의 동일한 세그먼트에 포함된 페이지 단위 메모리 할당 요청자와 상기 연속 메모리 할당 요청자에 대한 메모리의 동시 활성화 상태를 감지하고, 상기 페이지 단위 메모리 할당 요청자를 상기 리스트의 세그먼트에서 제거하도록 제어할 수 있다.
또한, 상기 메모리 관리부(330)는 신규 페이지 단위 메모리 할당 요청자의 메모리 할당 요청을 수신하고, 현재 활성화된 연속 메모리 할당 요청자가 있는지 확인하고, 활성화된 연속 메모리 할당 요청자가 있으면, 상기 활성화된 연속 메모리 할당 요청자가 포함된 리스트의 세그먼트에 상기 신규 페이지 단위 메모리 할당 요청자를 추가하지 않도록 제어할 수 있다.
또한, 상기 메모리 관리부(330)는 활성화된 연속 메모리 할당 요청자가 없는 세그먼트의 임시 리스트에 상기 신규 페이지 단위 메모리 할당 요청 자를 추가하고, 기 설정된 시간 동안 임시 리스트의 상기 신규 페이지 단위 메모리 할당 요청자가 대응하는 연속 메모리 할당 요청자에 대하여 배타적 관계를 만족하는지 판단하며, 배타적 관계를 만족하면, 상기 리스트에서 상기 신규 페이지 단위 메모리 할당 요청자가 배타적 관계를 만족하는 세그먼트에 상기 신규 페이지 단위 메모리 할당 요청자를 추가하도록 제어할 수 있다.
페이지 단위 메모리 처리 동작은 할당된 메모리를 해제하는 동작과 메모리를 할당으로 나눌 수 있다. 하기에서는 도 4 및 도 5를 참조하여, 페이지 단위 메모리를 처리하는 동작을 설명한다.
도 4는 본 발명의 제2 실시 예에 따른 페이지 단위 메모리 해제 과정을 설명하는 도면이다.
도 4를 참조하면, 410 동작에서 메모리 관리부는 페이지 해제 요청을 수신한다.
420 동작에서 메모리 관리부는 상기 페이지 해제 요청이 연속 메모리 할당 영역의 페이지에 대한 해제 요청인지 여부를 판단할 수 있다. 연속 메모리 할당 영역에 속한 페이지에 대한 해제 요청이면 430 이하 동작으로 진행하고, 연속 메모리 할당 영역에 속한 페이지에 대한 해제 요청이 아니면 450 이하 동작을 수행한다.
연속 메모리 할당 영역에 속한 페이지에 대한 해제 요청이면, 430 동작에서 해당 페이지가 속한 세그먼트를 확인한다.
440 동작에서 해당 세그먼트를 관리하는 세그먼트 관리자에 의해 해당 페이지를 해제한다. 세그먼트 관리자는 버디 할당자와 같은 방식으로 동작할 수 있고, Red-Black Tree, Linked List 방식 등으로 해제된 페이지(free page)를 관리할 수 있다.
연속 메모리 할당 영역에 속한 페이지에 대한 해제 요청이 아니면 450 동작에서 페이지 단위 처리부를 이용하여 페이지 해제 동작을 수행한다. 페이지 단위 처리부는 버디 할당자에게 페이지 해제 요청을 전달하여 해당 페이지가 해제될 수 있도록 한다.
도 5는 본 발명의 제2 실시 예에 따른 페이지 단위 메모리 할당 과정을 설명하는 도면이다.
도 5를 참조하면, 510 동작에서 메모리 관리부는 페이지 할당 요청을 수신한다. 상기 메모리 할당 요청은 페이지 단위 메모리 할당 요청일 수 있다.
520 동작에서 메모리 관리부는 메모리 할당 태스크(어플리케이션, 하드웨어)를 확인한다. 메모리 관리부는 해당 태스크가 세그먼트 리스트에 포함된 태스크인지 여부를 확인한다.
표 1은 본 발명의 실시 예에 따른 세그먼트 리스트를 설명하는 도면이다.
세그먼트 속성 메모리 할당 요청자
세그먼트 1 연속 메모리 할당 요청자 제1 하드웨어
페이지 단위 메모리 할당 요청자 제1 어플리케이션, 제2 어플리케이션
세그먼트 2 연속 메모리 할당 요청자 제2 하드웨어
페이지 단위 메모리 할당 요청자 제3 어플리케이션, 제4 어플리케이션
... ... ...
도 6은 본 발명의 일 실시 예에 따른 연속 메모리 할당 영역을 설명하는 도면이다.
도 6을 참조하면, 연속 메모리 할당 영역(610)은 세그먼트 1 영역(611), 세그먼트 2 영역(612) 및 기타 영역(615)를 포함한다. 세그먼트 영역(611, 612)은 세그먼트 리스트에 포함된 메모리 할당 요청자의 메모리 할당 요청이 있는 경우, 해당 세그먼트 영역에 포함된 메모리 페이지를 할당하는데 이용된다. 세그먼트 리스트에 포함되지 않은 메모리 할당 요청자로부터 메모리 할당 요청이 있는 경우, 기타 영역(615)의 메모리 페이지를 할당할 수 있다.
세그먼트 리스트는 배태적 관계에 있는 연속 메모리 할당 요청자와 페이지 단위 메모리 할당 요청자의 리스트이다. 메모리 할당 요청자는 하드웨어, 어플리케이션(task) 일 수 있다. 동일한 세그먼트의 연속 메모리 할당 요청자와 페이지 단위 메모리 할당 요청자는 배타적 관계에 있다. 배타적 관계는 동시에 메모리 할당이 요구되지 않는 관계에 있는 메모리 할당 요청자의 관계를 의미한다. 예를 들어, 표 1에서 세그먼트 1의 연속 메모리 할당 요청자는 제1 하드웨어이고, 페이지 단위 메모리 할당 요청자는 제1 어플리케이션과 제2 어플리케이션이다. 이때, 제1 하드웨어는 제1 어플리케이션 및 제2 어플리케이션과 배타적 관계에 있다. 제1 하드웨어의 메모리 할당이 요구되는 경우, 제1 어플리케이션 및 제2 어플리케이션은 메모리 할당 요청이 요구되지 않는다. 반대로 제1 어플리케이션이 및 제2 어플리케이션에 메모리 할당이 요구되는 경우, 제1 하드웨어는 메모리 할당을 요구하지 않는다. 예를 들어, 전자 장치가 TV이고 제1 하드웨어는 동영상 재생을 위한 하드웨어이고, 제1 어플리케이션은 게임 어플리케이션일 수 있다. 일반적으로 TV의 동영상을 시청하는 동시에 게임 어플리케이션을 사용하지는 않기 때문에 제1 하드웨어와 제1 어플리케이션은 동시에 메모리 할당을 요청하지 않는 배타적 관계에 있을 수 있다.
메모리 관리부는 메모리 할당 요청이 있는 경우 세그먼트 리스트를 확인하고, 세그먼트 리스트에 대응하는 세그먼트 영역의 페이지를 해당 하드웨어 또는 어플리케이션에 할당할 수 있다. 예를 들어, 제1 하드웨어의 메모리 할당 요청이 있는 경우 제1 세그먼트의 연속된 페이지를 할당하고, 제2 하드웨어의 메모리 할당 요청이 있는 경우 제2 세그먼트의 연속된 페이지를 할당할 수 있다. 제1 어플리케이션 또는 제2 어플리케이션의 메모리 할당 요청이 있는 경우 제1 세그먼트의 페이지를 할당하고, 제3 어플리케이션 또는 제4 어플리케이션의 메모리 할당 요청이 있는 경우 제2 세그먼트의 페이지를 할당한다.
상기 배타적 관계는 회수 가능 페이지의 수와 관계가 있다. 예를 들어, 제1 세그먼트에 제1 어플리케이션이 요청한 페이지를 할당한 경우, 제1 하드웨어로부터 연속된 메모리 할당 요청이 있을 수 있다. 제1 어플리케이션과 제1 하드웨어는 배타적 관계에 있기 때문에 제1 어플리케이션에 대하여 할당한 페이지는 대부분 회수 가능한 페이지일 것이다. 제1 어플리케이션에 대한 페이지는 대부분 회수 가능하기 때문에 제1 어플리케이션에 대한 마이그레이션 대상 페이지의 수는 적다. 따라서 단 시간에 제1 세그먼트에서 연속된 페이지 영역을 확보할 수 있고, 이를 제1 하드웨어에 할당하여 메모리 할당 시간을 감소시킬 수 있다. 본 발명의 실시 예에서는 연속 메모리 할당 영역에 배타적 관계에 있는 메모리 할당 요청자에 대한 메모리를 할당하여 메모리 사용 효율을 높이고 메모리 할당 시간을 단축 시킬 수 있다.
도 5의 520 동작에서 페이지 할당 요청 하드웨어 또는 어플리케이션이 세그먼트 리스트에 포함되어 있는지 판단한다. 세그먼트 리스트에 포함되어 있는 경우 530 이하 동작으로 진행하고, 세그먼트 리스트에 포함되어 있지 않은 경우 550 이하 동작으로 진행한다. 예를 들어, 표 1의 제1 어플리케이션, 제2 어플리케이션, 제3 어플리케이션, 제4 어플리케이션 중 하나의 어플리케이션으로부터 메모리 할당 요청이 있는 경우 세그먼트 리스트에 포함되어 있는 것으로 판단할 수 있다.
페이지 할당 요청자가 세그먼트 리스트에 포함되어 있는 경우, 530 동작으로 진행하여 세그먼트를 확인한다. 어플리케이션 1 또는 어플리케이션 2로부터 메모리 할당 요청이 있는 경우, 세그먼트 1에 대응하는 것으로 판단한다. 어플리케이션 3 또는 어플리케이션 4로부터 메모리 할당 요청이 있는 경우, 세그먼트 2에 대응하는 것으로 판단한다.
540 동작에서 확인된 해당 세그먼트를 관리하는 세그먼트 관리자에 의해 해당 페이지를 할당한다.
페이지 할당 요청자가 세그먼트 리스트에 포함되어 있지 않은 경우, 550 동작으로 진행하여 페이지 할당 동작을 수행한다. 페이지 단위 처리부는 페이지 할당 동작을 수행한다. 페이지 할당 처리부는 버디 할당자에게 페이지 할당 요청을 전달하여 해당 페이지가 할당될 수 있도록 한다. 페이지 할당 요청자가 세그먼트 리스트에 포함되어 있지 않은 경우, 일반 영역의 페이지를 할당하거나, 연속 페이지 할당 영역 중 특정 세그먼트를 위한 영역이 아닌 기타 영역의 페이지를 할당할 수 있다.
본 발명의 실시 예에 따르면 페이지 단위의 메모리 할당 요청에 대하여, 연속 메모리 할당 영역의 페이지를 할당 할 때, 페이지 단위 메모리 할당을 요청하는 메모리 할당 요청자가 속하는 세그먼트에 기반하여 페이지 단위 메모리 할당 영역의 페이지 또는 위치가 결정된다. 이는, 이후 연속 메모리 요청이 있는 경우 배타적 관계에 따른 페이지 회수 가능성을 높이고, 마이그레이션 비율을 낮추기 때문에 효율적인 연속 메모리 할당의 기초가 될 수 있다.
도 7은 본 발명의 제2 실시 예에 따른 메모리 할당 과정을 나타내는 도면이다.
도 7을 참조하면, 710 동작에서 메모리 관리부는 세그먼트 리스트를 설정한다. 상기 세그먼트 리스트는 표 1에서 설명한 바와 같이, 배태적 관계에 있는 연속 메모리 할당 요청자와 페이지 단위 메모리 할당 요청자의 리스트이다.
720 동작에서 메모리 관리부는 메모리 할당 요청을 수신한다. 또는, 메모리 관리부는 메모리 할당 요청을 확인한다.
730 동작에서 메모리 관리부는 상기 메모리 할당 요청이 연속 메모리 할당 요청인지 페이지 단위 메모리 할당 요청인지 판단한다. 연속 메모리 할당 요청인 경우 740 이하 동작으로 진행하고, 페이지 단위 메모리 할당 요청인 경우 750 이하 동작으로 진행한다.
연속 메모리 할당 요청인 경우, 740 동작에서 연속 메모리 할당을 위한 동작을 수행한다. 메모리 관리부는 메모리 할당 요청자에게 연속 메모리 할당 영역의 연속된 메모리 페이지를 할당할 수 있다. 연속 메모리 할당을 위한 동작에 대해서는 도 8에서 더욱 자세히 설명한다.
연속 메모리 할당 요청이 아닌 경우, 750 동작으로 진행한다. 메모리 관리부는 750 동작에서 페이지 단위 메모리 할당 동작을 수행한다. 페이지 단위 메모리 할당 동작은 도 4 및 도 5의 페이지 단위 메모리 할당 동작에 대한 설명을 참조한다.
도 8은 본 발명의 제2 실시 예에 따른 연속 메모리 할당 과정을 설명하는 도면이다.
도 8을 참조하면, 810 동작에서 메모리 관리부는 연속 메모리 할당을 요청한 메모리 할당 요청자가 세그먼트 리스트에 포함되어 있는지 판단한다. 예를 들어, 표 1을 참조할 때, 메모리 할당 요청자가 제1 하드웨어 또는 제2 하드웨어 인 경우, 메모리 관리부는 메모리 할당 요청자가 세그먼트 리스트에 포함되어 있는 것으로 판단한다. 메모리 할당 요청자가 세그먼트 리스트에 포함되어 있으면, 820 동작으로 진행하고, 메모리 할당 요청자가 세그먼트 리스트에 포함되어 있지 않으면 825 동작으로 진행한다.
820 동작에서 메모리 관리부는 요청 받은 연속 메모리 할당 요청을 처리하기 위해 한 메모리 영역을 선정한다. 메모리 관리부는 비트맵 정보를 검색하여 연속 메모리 할당 요청을 처리하기 위한 메모리 영역을 선정할 수 있다. 메모리 관리부는 연속 메모리 영역에서 연속 메모리로 할당되어 있는 영역을 피하여 연속된 페이지 영역을 선정할 수 있다. 이때, 본 발명의 실시 예에서는 연속된 페이지 영역 전체에 대한 검색을 수행하지 않고, 메모리 할당 요청자에 대응하는 연속 메모리 할당 영역의 세그먼트만 검색하여 검색 속도를 높일 수 있다. 예를 들어, 메모리 할당 요청자가 제1 하드웨어 인 경우 제1 하드웨어에 대응하는 세그먼트 1을 검색하여 연속 메모리 할당 요청을 처리하기 위한 메모리 영역을 선정할 수 있다. 검색을 통해 연속 메모리로 할당되어 있는 영역을 피하여 요청 받은 연속 메모리 할당 요청을 처리할 수 있는 연속된 메모리 영역을 선정할 수 있다. 메모리 영역을 선정할 때, 도 2에서 설명한 바와 같이 비트맵 정보를 이용할 수 있다.
본 발명의 제2 실시 예에서는 도 2의 비트맵 정보뿐만 아니라 제2 비트맵 정보를 이용하여 검색을 수행할 수도 있다. 제2 비트맵 정보는 페이지의 회수 가능 여부를 나타내는 비트맵 정보일 수 있다. 메모리 관리부는 비트맵 정보를 이용하여 회수 가능 페이지를 확인할 수 있다. 메모리 관리부는 회수 가능 여부를 나타내는 비트맵 정보에 기반하여 연속 메모리 할당 요청을 처리하기 위한 연속된 메모리 영역을 선정할 수 있다. 이때, 메모리 관리부는 마이그레이션을 최소화 할 수 있는 영역을 연속 메모리 할당 요청을 처리하기 위한 영역으로 설정할 수 있다. 상기 비트맵 정보에 기반할 때, 회수 가능하지 않은 페이지는 연속된 페이지를 확보하기 위해서 마이그레이션되어야 하는 페이지이다. 따라서 메모리 관리부는 비트맵 정보에 기반하여 연속 메모리가 할당되어 있지 않은 영역 중 마이그레이션이 최소화 되는 영역을 선정할 수 있다.
또한, 본 발명의 실시 예에서는 연속 메모리 할당 영역에 페이지 단위 메모리를 할당하는 경우, 배타적 관계에 있는 메모리 할당 요청자에 대해서 페이지를 할당하기 때문에, 연속 메모리 할당 요청자로부터 연속된 메모리 할당 요청이 있는 경우, 연속 메모리 할당 영역에 할당되어 있는 페이지 단위 메모리는 회수 가능한 페이지가 될 확률이 높다. 이를 통해, 메모리 영역 선정, 메모리 회수, 메모리 이동에 소요되는 시간을 감소시켜 연속 메모리 할당 효율을 향상 시킬 수 있다.
830 동작에서 메모리 관리부는 회수 가능한 페이지를 회수한다. 메모리 관리부는 820 동작에서 선정된 메모리 영역에 대해서 회수 가능한 페이지를 회수할 수 있다. 예를 들어, 메모리 할당 요청자가 제1 하드웨어인 경우, 메모리 관리부는 820의 동작에서 선정된 세그먼트 1의 영역 중 선정된 메모리 영역에 대해서 회수 가능한 페이지를 회수할 수 있다. 회수된 페이지는 메모리 할당이 가능한 페이지가 된다.
840 동작에서 메모리 관리부는 선정된 메모리 영역 내에서 이동이 가능한 페이지에 대한 페이지 이동을 수행한다. 이동 이후 해당 페이지는 메모리 할당이 가능한 페이지가 된다. 본 발명의 실시 예에서 회수 가능 페이지에 대한 비트맵 정보에 기반하여, 이동이 가장 적은 영역을 선정하기 때문에 연속된 페이지를 확보하기 위한 이동을 최소화 할 수 있고 연속 메모리 할당에 요구되는 시간을 단축시킬 수 있다.
850 동작에서 메모리 관리부는 선정된 영역에서 확보된 연속된 메모리 페이지를 메모리 할당 요청자에게 할당할 수 있다.
상기와 같은 방법으로 회수 가능 페이지에 대한 비트맵 정보와 배타적 관계에 있는 세그먼트 리스트를 활용하여 연속 메모리 할당 효율을 향상시킬 수 있다.
메모리 할당 요청자가 세그먼트 리스트에 포함되어 있지 않은 경우, 825 동작으로 진행할 수 있다.
825 동작에서 연속된 메모리 할당 요청을 처리하기 위한 메모리 영역을 선정할 수 있다. 메모리 할당 요청자가 세그먼트 리스트에 포함되어 있지 않으므로, 메모리 관리자는 연속 메모리 할당 영역의 기타 영역에서 연속된 메모리 할당 요청을 처리하기 위한 메모리 영역을 선정할 수 있다. 상기 메모리 영역을 선정할 때 비트맵 정보를 이용할 수 있다. 회수 가능 페이지에 대한 비트맵 정보를 이용하는 방법은 820 동작에서 설명한 바와 동일하다. 한편, 연속 메모리 할당 영역에 기타 영역이 설정되어 있지 않은 경우 세그먼트 영역에 대해서 연속된 메모리 할당 요청을 처리하기 위한 메모리 영역을 선정할 수도 있다. 추후 해당 메모리 할당자는 선정된 메모리 영역을 포함하는 세그먼트에 대응하는 것으로 관리할 수도 있다.
835 동작은 830 동작에 대응한다. 845 동작은 840 동작에 대응한다. 855 동작은 850 동작에 대응한다.
도 9는 본 발명의 일 실시 예에 따른 비트맵 검색 방법을 설명하는 도면이다.
도 9를 참조하면, 연속 메모리 할당 영역 비트맵이 도시되어 있다. 연속 메모리 할당 영역 비트맵은 회수 가능 페이지를 나타낸다. 예를 들어, 상기 비트맵에서 회수 가능한 페이지는 1, 회수 가능하지 않은 페이지는 0으로 표시할 수 있다. 메모리 관리부는 비트맵을 검색하여 회수 가능 페이지가 가장 많은 영역(이동 대상 페이지가 가장 적은 영역)을 연속 메모리 할당 요청 처리를 위한 연속 페이지 영역으로 선정할 수 있다.
메모리 관리부는 요청 받은 연속 메모리 사이즈에 대응하는 비트맵 사이즈에 대한 비트 값을 합산한다. 합산된 비트 값이 가장 큰 영역이 연속 메모리 할당 요청을 처리하기 위한 연속 페이지 영역으로 선정될 수 있다. 메모리 관리부는 moving window를 이용하여 요청 받은 메모리 사이즈에 대한 비트맵 사이즈의 비트 합산 값을 계산할 수 있다. Moving window의 크기는 요청 받은 페이지 사이즈에 대응한다. Moving window의 크기는 적어도 메모리 할당 요청을 받은 페이지의 사이즈 이상일 수 있다. 메모리 관리부는 연속 메모리 할당 영역에서 연속 메모리가 할당되지 않은 시작점부터 moving window 크기에 대응하는 페이지의 비트 합산 값을 계산한다. 메모리 관리부는 시작점에서부터 한 페이지씩 moving window를 이동 시키면서 비트 합산 값을 계산한다. 메모리 관리부는 비트 합산 값이 가장 큰 영역을 연속 메모리 할당 요청을 처리하기 위한 연속 페이지 영역으로 선정할 수 있다. 이때, 연속 메모리 할당 영역의 전체 영역을 검색하지 않더라도 요청된 사이즈의 모든 값이 1인 경우가 발생하면, 그 위치에서 검색을 종료하고 해당 위치를 연속 메모리 할당 요청을 처리하기 위한 연속 페이지 영역으로 선정한다. 또한, 요청된 사이즈 중 비트 값이 1인 페이지가 기 설정된 임계 값 이상의 비율인 경우에도, 그 위치에서 검색을 종료하고 해당 위치를 연속 메모리 할당 요청을 처리하기 위한 연속 페이지 영역으로 선정할 수 있다.
또한, 메모리 관리부는 연속 메모리 할당 영역을 검색할 때, 세그먼트 리스트 및 메모리 할당 요청자에 기반하여 특정 영역에 대해서만 검색 및 비트 계산을 수행할 수 있다. 메모리 할당 요청자가 세그먼트 리스트에 포함되는 경우, 해당 세그먼트 영역에 대해서 검색을 수행하고 비트 합산 값을 계산할 수 있다.
도 10은 본 발명의 다양한 실시 예에 따른 비트맵 검색 방법을 설명하는 도면이다. 도 9에서 설명한 방법은 도 10에서 적용될 수 있다. 도 10은 도 9의 실시 예의 개선된 방법이다.
도 9의 실시 예에서는 moving window를 조절하면서 moving window 범위의 페이지들에 대한 비트 합산 값을 계산하였다. 반면, 도 10에서는 moving window가 1 페이지씩 이동하는 점을 감안하여 개선된 비트 합산 값 계산 방법을 제공한다. 도 10에서는 직전 moving window를 통해 계산한 비트 값을 이용한다. 직전 moving window를 통해 계산한 비트 합산 값에서, 직전 moving window의 시작 페이지의 비트 값을 빼고, 현재 moving window의 마지막 페이지 비트 값을 더하면 현재 moving window에 대한 비트 합산 값이 된다. 즉, 직전 window와 현재 window에서 중복되는 값은 공유하고, 변경된 값에 대해서만 업데이트 하여 비트 합산 계산 시간을 단축 시킬 수 있다. 도 10의 실시 예를 사용하는 경우, 동일한 영역을 검색함에 있어 약 1.5배의 시간 절약 효과가 있다.
본 발명의 실시 예에서 메모리 관리부는 회수 가능 페이지를 나타내는 비트맵 정보를 업데이트 할 수 있다. 할당된 페이지의 회수 가능 정보가 변경될 때 마다 회수 가능 페이지를 업데이트 할 수 있다.
또한, 본 발명의 실시 예에서 메모리 관리부는 세그먼트 리스트를 갱신(업데이트) 할 수 있다.
세그먼트 리스트는 사용자의 설정 또는 전자 정치의 일반 설정에 따라 배타적 관계에 있는 메모리 할당 요청자에 대해서 설정될 수 있다. 하지만 초기에 설정되지 않은 메모리 할당 요청자에 대해서는 세그먼트 리스트를 갱신하여 추가하는 것이 필요하다. 또한, 세그먼트 리스트에 설정되어 있으나, 배타적 관계를 만족하지 않는 메모리 할당 요청자에 대해서는 리스트를 갱신하여 배타적 관계를 만족하도록 할 필요가 있다. 본 발명의 실시 예에서는 임시 리스트, 세그먼트 액티브 리스트, 세그먼트 블랙리스트를 활용하여 세그먼트 리스트를 갱신할 수 있다.
도 11은 신규 어플리케이션을 세그먼트 리스트에 추가하는 방법을 설명하는 도면이다.
도 11을 참조하면, 1110 동작에서 메모리 관리자는 신규 어플리케이션으로부터 메모리 할당 요청을 수신한다.
1120 동작에서 메모리 관리자는 현재 활성화된 연속 메모리 할당 요청자가 있는지 판단한다. 메모리 관리부는 활성화 리스트를 관리할 수 있다. 메모리 관리부는 활성화 중인 연속 메모리 할당 요청자가 있는 경우 해당 요청자를 활성화 리스트에 추가한다. 또한, 활성화 중인 페이지 단위 메모리 할당 요청자가 있는 경우 해당 요청자를 활성화 리스트에 추가한다. 동일한 세그먼트에 할당된 연속 메모리 할당 요청자와 페이지 단위 할당 요청자가 동시에 활성화 리스트에 있는 경우, 배타적 관계를 만족하지 않는 것으로 판단할 수 있다.
현재 활성화된 연속 메모리 할당 요청자가 있는 경우 신규 어플리케이션은 현재 활성화된 연속 메모리 할당 요청자와의 관계에 있어서 배타적 관계가 아니다. 메모리 관리부는 1130 동작으로 진행하여 현재 활성화된 연속 메모리 할당 요청자에 대응하는 세그먼트의 블랙 리스트에 신규 어플리케이션을 추가한다. 블랙리스트에 추가된 어플리케이션은 해당 세그먼트와의 관계에서는 연속 메모리 할당 요청자와 배타적 관계를 형성하지 않기 때문에 해당 세그먼트에 추가될 수 없다.
현재 활성화된 연속 메모리 할당 요청자가 없는 세그먼트에 대해서 신규 어플리케이션은 배타적 관계일 가능성이 높다. 1140 동작에서 메모리 관리자는 신규 어플리케이션을 현재 활성화된 연속 메모리 할당 요청자가 없는 세그먼트의 임시 리스트에 추가할 수 있다. 임시 리스트는 배타적 관계가 확인되지 않은 어플리케이션에 대한 리스트이다.
1150 동작에서 메모리 관리자는 임시 리스트의 어플리케이션이 해당 세그먼트에 대해서 배타적 관계인지 판단할 수 있다. 예를 들어, 기 설정된 시간 동안 특정 세그먼트의 임시 리스트에 어플리케이션이 추가된 이후, 특정 세그먼트의 연속 메모리 할당 요청자와 동시에 활성화 된 경우가 있는지 판단한다.
해당 세그먼트에서 연속 메모리 할당 요청자와 임시 리스트의 어플리케이션이 동시에 활성화된 경우, 배타적 관계를 만족하지 않는 것으로 판단하고, 1130 동작으로 진행한다. 해당 어플리케이션은 임시 리스트에서 삭제되고, 해당 세그먼트의 블랙리스트에 추가될 수 있다.
기 설정된 시간 동안 해당 세그먼트에서 연속 메모리 할당 요청자와 임시 리스트의 어플리케이션이 동시에 활성화되지 않은 경우, 배타적 관계를 만족하는 것으로 판단하고 1160 동작으로 진해한다. 1160 동작에서 메모리 관리자는 해당 어플리케이션이 연속 메모리 할당 요청자와의 관계에서 배타적 관계를 만족하므로 해당 세그먼트 리스트의 페이지 단위 메모리 할당자에 추가한다.
도 11에서 설명한 활성화 리스트 및 블랙 리스트를 이용하여 이미 설정된 세그먼트 리스트를 갱신할 수 있다. 설정된 세그먼트 리스트의 메모리 할당 요청자에 대해서 배타적 관계를 만족하지 않는 상황이 발생하는 경우, 해당 어플리케이션을 해당 세그먼트의 블랙리스트에 추가하고, 해당 세그먼트의 페이지 단위 할당 요청자에서 삭제할 수 있다. 한편, 종전 세그먼트 리스트에서 삭제된 어플리케이션에 대해서는 도 11의 방법을 이용하여 다시 세그먼트 리스트에 추가할 수 있다.
본 발명의 실시 예에서는 상기와 같은 방법으로 연속 메모리 할당 영역을 관리할 수 있다. 본 발명의 실시 예에 따르면 연속 메모리 할당 영역에 페이지 단위 메모리도 할당할 수 있도록 하여 특정 메모리 영역을 연속 메모리 할당에만 이용하도록 설정한 경우, 연속 메모리 할당 영역이 사용되지 않는 경우 메모리가 낭비되지 않도록 할 수 있다.
또한, 연속 메모리 할당 영역에 페이지 단위 메모리를 할당 할 때, 세그먼트 리스트를 이용하여 연속 메모리 할당 요청자와 배타적 관계에 있는 페이지 단위 메모리 할당 요청자에 대해서 페이지를 할당하기 때문에 연속 페이지 검색, 선정에 사용되는 시간 및 페이지 이동에 사용되는 시간을 최소화 할 수 있다. 또한, 회수 가능 페이지에 대한 비트맵 정보를 이용하여 연속 페이지를 검색 및 선정하여 연속된 메모리 페이지 확보에 소모되는 시간을 최소화 할 수 있다.
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 메모리를 포함하는 장치가 메모리를 관리하는 방법에 있어서,
    연속 메모리 할당 영역의 다수의 세그먼트들을 포함하는 세그먼트 리스트를 설정하는 단계,
    각 세그먼트는 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자와 연관되고,
    동일한 세그먼트에 연관된 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자는 메모리 할당을 동시에 요청하지 않으며;
    제1 메모리 할당 요청자로부터 메모리 할당 요청을 수신하는 단계;
    상기 제1 메모리 할당 요청자가 상기 세그먼트 리스트에 포함되는지 여부를 확인하는 단계; 및
    상기 제1 메모리 할당 요청자가 상기 세그먼트 리스트에 포함되어 있으면, 상기 제1 메모리 할당 요청자에 연관된 세그먼트에 대응하는 페이지를 상기 제1 메모리 할당 요청자에게 할당하는 단계를 포함하는 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 연속 메모리 할당 영역에 대한 비트맵 정보를 관리하는 단계를 더 포함하고,
    상기 비트맵 정보는 상기 연속 메모리 할당 영역에 포함된 페이지의 회수 가능 여부를 지시하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 메모리 할당 요청이 연속 메모리 할당 요청인지 판단하는 단계; 및
    연속 메모리 할당 요청이면, 상기 비트맵 정보에 기반하여 상기 연속 메모리 할당 요청을 처리하기 위한 연속된 메모리 페이지 영역을 선정하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서, 상기 연속된 메모리 페이지 영역을 선정하는 단계는,
    연속 메모리 할당 영역 중 요청 받은 연속 메모리 할당을 위한 페이지 이동이 최소인 영역을 선정하는 것을 특징으로 하는 방법.
  6. 제5항에 있어서, 상기 페이지 이동이 최소인 영역은,
    상기 연속 메모리 할당 요청에 대응하는 연속 페이지 영역 중 상기 비트맵 정보에 기반한 회수 가능 페이지 수가 최대인 영역인 것을 특징으로 하는 방법.
  7. 제3항에 있어서,
    상기 비트맵 정보는 상기 연속 메모리 할당 영역에 포함된 페이지의 회수 가능 정보가 변경되면 업데이트 되는 것을 특징으로 하는 방법.
  8. 삭제
  9. 제1항에 있어서,
    페이지 단위 메모리 할당 요청자인 제2 메모리 할당 요청자로부터 제2 메모리 할당 요청을 수신하는 단계;
    상기 세그먼트 리스트에서 활성화된 연속 메모리 할당 요청자가 없는 제2 세그먼트를 확인하는 단계;
    상기 제2 세그먼트의 임시 리스트에 상기 제2 메모리 할당 요청자를 추가하는 단계; 및
    기 설정된 시간 동안 상기 제2 세그먼트와 연관된 연속 메모리 할당 요청자와 상기 임시 리스트의 상기 제2 메모리 할당 요청자가 동시에 활성화 되는지 여부를 확인하는 단계를 포함하는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    기 설정된 시간 동안 상기 제2 세그먼트와 연관된 연속 메모리 할당 요청자와 상기 임시 리스트의 상기 제2 메모리 할당 요청자가 동시에 활성화 되지 않은 경우, 상기 제2 메모리 할당 요청자를 상기 제2 세그먼트의 페이지 단위 메모리 할당 요청자로서 추가하고, 상기 임시 리스트에서 상기 제2 메모리 할당 요청자를 삭제하는 단계를 포함하는 것을 특징으로 하는 방법.
  11. 전자 장치에 있어서,
    상기 전자 장치는 연속 메모리 할당 영역을 포함하는 메모리; 및
    상기 메모리를 관리하는 메모리 관리부를 포함하며,
    상기 메모리 관리부는:
    연속 메모리 할당 영역의 다수의 세그먼트들을 포함하는 세그먼트 리스트를 설정하되, 각 세그먼트는 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자와 연관되고, 동일한 세그먼트에 연관된 페이지 단위 메모리 할당 요청자 및 연속 메모리 할당 요청자는 메모리 할당을 동시에 요청하지 않으며,
    제1 메모리 할당 요청자로부터 메모리 할당 요청을 수신하며,
    상기 제1 메모리 할당 요청자가 상기 세그먼트 리스트에 포함되는지 여부를 확인하고, 및
    상기 제1 메모리 할당 요청자가 상기 세그먼트 리스트에 포함되어 있으면, 상기 제1 메모리 할당 요청자에 연관된 세그먼트에 대응하는 페이지를 상기 제1 메모리 할당 요청자에게 할당하도록 제어하는, 전자 장치.
  12. 삭제
  13. 제11항에 있어서, 상기 메모리 관리부는,
    상기 연속 메모리 할당 영역에 대한 비트맵 정보를 관리하고,
    상기 비트맵 정보는 상기 연속 메모리 할당 영역에 포함된 페이지의 회수 가능 여부를 지시하는 것을 특징으로 하는 전자 장치.
  14. 제13항에 있어서, 상기 메모리 관리부는,
    상기 메모리 할당 요청이 연속 메모리 할당 요청인지 판단하고, 연속 메모리 할당 요청이면, 상기 비트맵 정보에 기반하여 상기 연속 메모리 할당 요청을 처리하기 위한 연속된 메모리 페이지 영역을 선정하도록 제어하는 것을 특징으로 하는 전자 장치.
  15. 제14항에 있어서, 상기 메모리 관리부는,
    연속된 메모리 할당 영역 중 요청 받은 연속 메모리 할당을 위한 페이지 이동이 최소인 영역을 상기 연속 메모리 페이지 영역으로 선정하는 것을 특징으로 하는 전자 장치.
  16. 제15항에 있어서, 상기 페이지 이동이 최소인 영역은,
    상기 연속 메모리 할당 요청에 대응하는 연속 페이지 영역 중 상기 비트맵 정보에 기반한 회수 가능 페이지 수가 최대인 영역인 것을 특징으로 하는 전자 장치.
  17. 제13항에 있어서, 상기 메모리 관리부는,
    상기 연속 메모리 할당 영역에 포함된 페이지의 회수 가능 정보가 변경되면 상기 비트맵 정보를 업데이트 하도록 제어하는 것을 특징으로 하는 전자 장치.
  18. 삭제
  19. 제11항에 있어서, 상기 메모리 관리부는,
    페이지 단위 메모리 할당 요청자인 제2 메모리 할당 요청자로부터 제2 메모리 할당 요청을 수신하고,
    상기 세그먼트 리스트에서 활성화된 연속 메모리 할당 요청자가 없는 제2 세그먼트를 확인하고,
    상기 제2 세그먼트의 임시 리스트에 상기 제2 메모리 할당 요청자를 추가하며, 및
    기 설정된 시간 동안 상기 제2 세그먼트와 연관된 연속 메모리 할당 요청자와 상기 임시 리스트의 상기 제2 메모리 할당 요청자가 동시에 활성화 되는지 여부를 확인하도록 제어하는 것을 특징으로 하는 전자 장치.
  20. 제19항에 있어서, 상기 메모리 관리부는,
    기 설정된 시간 동안 상기 제2 세그먼트와 연관된 연속 메모리 할당 요청자와 상기 임시 리스트의 상기 제2 메모리 할당 요청자가 동시에 활성화 되지 않은 경우, 상기 제2 메모리 할당 요청자를 상기 제2 세그먼트의 페이지 단위 메모리 할당 요청자로서 추가하고, 상기 임시 리스트에서 상기 제2 메모리 할당 요청자를 삭제하도록 제어하는 것을 특징으로 하는 전자 장치.
KR1020150079037A 2015-06-04 2015-06-04 메모리 관리 방법 및 장치 KR102402780B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020150079037A KR102402780B1 (ko) 2015-06-04 2015-06-04 메모리 관리 방법 및 장치
EP16803775.2A EP3304317B1 (en) 2015-06-04 2016-06-03 Method and apparatus for managing memory
US15/172,951 US10409498B2 (en) 2015-06-04 2016-06-03 Method and apparatus for managing memory
PCT/KR2016/005923 WO2016195422A1 (en) 2015-06-04 2016-06-03 Method and apparatus for managing memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150079037A KR102402780B1 (ko) 2015-06-04 2015-06-04 메모리 관리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20160143026A KR20160143026A (ko) 2016-12-14
KR102402780B1 true KR102402780B1 (ko) 2022-05-27

Family

ID=57440914

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150079037A KR102402780B1 (ko) 2015-06-04 2015-06-04 메모리 관리 방법 및 장치

Country Status (4)

Country Link
US (1) US10409498B2 (ko)
EP (1) EP3304317B1 (ko)
KR (1) KR102402780B1 (ko)
WO (1) WO2016195422A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11216361B2 (en) * 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
CN106776042A (zh) * 2016-12-30 2017-05-31 深圳市证通金信科技有限公司 终端的内存分配方法及装置
US10642660B2 (en) * 2017-05-19 2020-05-05 Sap Se Database variable size entry container page reorganization handling based on use patterns
US10681649B2 (en) * 2018-02-19 2020-06-09 Qualcomm Incorporated Dynamic spatial reuse in distribution networks
US20210089467A1 (en) * 2020-10-01 2021-03-25 Intel Corporation Page allocation for contiguity-aware translation lookaside buffers
CN115658327B (zh) * 2022-12-07 2023-10-31 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110055511A1 (en) 2009-09-03 2011-03-03 Advanced Micro Devices, Inc. Interlocked Increment Memory Allocation and Access
US20110231550A1 (en) * 2010-03-16 2011-09-22 Murray Christopher W Method and apparatus for hierarchical management of system resources
US20130013884A1 (en) 2008-10-30 2013-01-10 Toshiaki Ueno Memory Management System
US20130031293A1 (en) * 2011-07-28 2013-01-31 Henri Han Van Riel System and method for free page hinting
US20140040577A1 (en) * 2012-08-03 2014-02-06 International Business Machines Corporation Automatic Use of Large Pages
US20140089625A1 (en) 2012-09-26 2014-03-27 Avaya, Inc. Method for Heap Management
US20140156944A1 (en) 2012-11-30 2014-06-05 Research & Business Foundation Sungkyunkwan Univesity Memory management apparatus, method, and system
US20140173613A1 (en) * 2012-12-15 2014-06-19 International Business Machines Corporation Managing resource pools for deadlock avoidance

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6130759A (en) * 1997-08-26 2000-10-10 Hewlett-Packard Company Reducing memory fragmentation by coalescing and redistributing previously distributed page strips
US6182089B1 (en) * 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6370633B2 (en) * 1999-02-09 2002-04-09 Intel Corporation Converting non-contiguous memory into contiguous memory for a graphics processor
US6496909B1 (en) * 1999-04-06 2002-12-17 Silicon Graphics, Inc. Method for managing concurrent access to virtual memory data structures
US6922765B2 (en) * 2001-06-21 2005-07-26 International Business Machines Corporation Method of allocating physical memory space having pinned and non-pinned regions
US6986016B2 (en) 2002-09-30 2006-01-10 International Business Machines Corporation Contiguous physical memory allocation
US7363456B2 (en) 2005-04-15 2008-04-22 International Business Machines Corporation System and method of allocating contiguous memory in a data processing system
US8566827B2 (en) * 2005-10-27 2013-10-22 International Business Machines Corporation System and method of arbitrating access of threads to shared resources within a data processing system
US20080148002A1 (en) * 2006-12-13 2008-06-19 Fleming Matthew D Method and Apparatus for Allocating A Dynamic Data Structure
EP2248894B1 (en) * 2008-02-04 2014-10-01 National University Corporation Okayama University Promoter for vascular endothelial cells
KR101618634B1 (ko) 2009-01-07 2016-05-09 삼성전자주식회사 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
WO2011075847A1 (en) * 2009-12-23 2011-06-30 Mccain Foods Limited Foldable root vegetable food sheet
US8458721B2 (en) * 2011-06-02 2013-06-04 Oracle International Corporation System and method for implementing hierarchical queue-based locks using flat combining
US20140004057A1 (en) * 2012-06-28 2014-01-02 Johnson & Johnson Consumer Companies, Inc. Sunscreen compositions containing an ultraviolet radiation-absorbing polyester
KR102014083B1 (ko) * 2012-12-31 2019-08-27 삼성전자주식회사 단말기의 메모리 관리방법 및 장치
GB2502857B (en) * 2013-03-05 2015-01-21 Imagination Tech Ltd Migration of data to register file cache
US9372880B2 (en) * 2013-04-29 2016-06-21 International Business Machines Corporation Reclamation of empty pages in database tables
US9557920B2 (en) * 2013-06-11 2017-01-31 Viacom International Inc. Method and system for data archiving
US9781057B1 (en) * 2013-06-21 2017-10-03 EMC IP Holding Company LLC Deadlock avoidance techniques

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130013884A1 (en) 2008-10-30 2013-01-10 Toshiaki Ueno Memory Management System
US20110055511A1 (en) 2009-09-03 2011-03-03 Advanced Micro Devices, Inc. Interlocked Increment Memory Allocation and Access
US20110231550A1 (en) * 2010-03-16 2011-09-22 Murray Christopher W Method and apparatus for hierarchical management of system resources
US20130031293A1 (en) * 2011-07-28 2013-01-31 Henri Han Van Riel System and method for free page hinting
US20140040577A1 (en) * 2012-08-03 2014-02-06 International Business Machines Corporation Automatic Use of Large Pages
US20140089625A1 (en) 2012-09-26 2014-03-27 Avaya, Inc. Method for Heap Management
US20140156944A1 (en) 2012-11-30 2014-06-05 Research & Business Foundation Sungkyunkwan Univesity Memory management apparatus, method, and system
US20140173613A1 (en) * 2012-12-15 2014-06-19 International Business Machines Corporation Managing resource pools for deadlock avoidance

Also Published As

Publication number Publication date
EP3304317A4 (en) 2018-05-23
WO2016195422A1 (en) 2016-12-08
US20160357455A1 (en) 2016-12-08
US10409498B2 (en) 2019-09-10
KR20160143026A (ko) 2016-12-14
EP3304317A1 (en) 2018-04-11
EP3304317B1 (en) 2020-12-09

Similar Documents

Publication Publication Date Title
KR102402780B1 (ko) 메모리 관리 방법 및 장치
US10257307B1 (en) Reserved cache space in content delivery networks
US10049051B1 (en) Reserved cache space in content delivery networks
US11531625B2 (en) Memory management method and apparatus
US20170195282A1 (en) Address Processing Method, Related Device, and System
US10133679B2 (en) Read cache management method and apparatus based on solid state drive
KR102077149B1 (ko) 메모리 관리 방법 및 장치
US10416932B2 (en) Dirty data management for hybrid drives
US10862992B2 (en) Resource cache management method and system and apparatus
US20180107593A1 (en) Information processing system, storage control apparatus, storage control method, and storage control program
US9823731B2 (en) Adaptive power control of address map memory devices
JP2018518733A (ja) ファイル操作方法及び装置
US11899580B2 (en) Cache space management method and apparatus
US10198180B2 (en) Method and apparatus for managing storage device
CN105635196A (zh) 一种获取文件数据的方法、系统和应用服务器
KR20150116606A (ko) 하드웨어 기반 메모리 관리 장치 및 메모리 관리 방법
CN115145735B (zh) 一种内存分配方法、装置和可读存储介质
CN105677483B (zh) 一种数据缓存的方法及装置
KR20210040864A (ko) 파일 디렉터리 순회 방법, 장치, 기기, 매체 및 컴퓨터 프로그램
CN112068765B (zh) 管理存储系统的方法、设备和计算机程序产品
CN114428797A (zh) 嵌入参数缓存的方法、装置、设备及存储介质
CN110895515A (zh) 内存缓存管理方法、多媒体服务器及计算机存储介质
CN109656939B (zh) 一种缓存更新方法、装置、设备和存储介质
US11010410B1 (en) Processing data groupings belonging to data grouping containers
CN107145302B (zh) 一种用于在分布式存储系统中执行文件写入的方法与设备

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