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

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

Info

Publication number
KR20140146458A
KR20140146458A KR1020130069214A KR20130069214A KR20140146458A KR 20140146458 A KR20140146458 A KR 20140146458A KR 1020130069214 A KR1020130069214 A KR 1020130069214A KR 20130069214 A KR20130069214 A KR 20130069214A KR 20140146458 A KR20140146458 A KR 20140146458A
Authority
KR
South Korea
Prior art keywords
memory
virtual address
address space
secondary virtual
space
Prior art date
Application number
KR1020130069214A
Other languages
English (en)
Other versions
KR102077149B1 (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 KR1020130069214A priority Critical patent/KR102077149B1/ko
Priority to US14/307,371 priority patent/US9405697B2/en
Publication of KR20140146458A publication Critical patent/KR20140146458A/ko
Application granted granted Critical
Publication of KR102077149B1 publication Critical patent/KR102077149B1/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
    • 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
    • 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
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

본 발명은 메모리를 관리하는 방법 및 그 장치에 관한 것으로서, 본 발명의 일 실시 예는 메모리 할당 요청을 수신하는 단계, 물리 주소 공간의 주소 값을 연속된 1차 가상 주소 공간에 제1 매핑하는 단계 및 메모리 단편화 시 새로운 메모리 할당 요청을 처리하기 위하여, 상기 1차 가상 주소 공간의 주소 값을 연속된 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 어느 하나의 2차 가상 주소 공간에 제2 매핑하는 단계를 포함하는 메모리 관리 방법 및 그 장치를 제공한다. 본 발명에 따르면 단편화가 발생하여 메모리 할당 요청을 처리할 수 없을 때, 활성 메모리 블록을 이동시켜 메모리 단편화 문제를 해결할 수 있다.

Description

메모리 관리 방법 및 장치{Method for managing memory and apparatus thereof}
본 발명은 전자 장치에서 메모리 단편화 문제를 해결하기 위한 방법 및 그 방법에 따른 장치에 관한 것으로, 가상 메모리 관리부를 이용하여 가상 메모리를 관리하는 방법 및 그에 따른 장치에 관한 것이다.
최근 기술의 발달로 각종 전자 장치들은 다양한 기능을 포함하고 있다. 일 예로 이동 단말의 경우 음성 통화나 메시지 송수신과 같은 일반적인 통신 기능 외에도 TV(Television) 시청 기능(예컨대, DMB(Digital Multimedia Broadcasting)나 DVB(Digital Video Broadcasting)와 같은 이동 방송), 음악재생기능(예컨대, MP3(MPEG Audio Layer-3)), 사진촬영 기능, 인터넷 접속 기능, 사전 검색 기능 등 각종 멀티미디어 기능들이 부가되고 있다. 이에 따라 각종 멀티미디어 기능들을 실행하기 위한 메모리 할당 요청이 늘어나고 있으나, 메모리를 효과적으로 관리하지 못할 경우 메모리를 할당하지 못해 실행하고자 하는 프로그램을 실행할 수 없는 문제가 발생할 수 있다.
특히 메모리 단편화(fragmentation)에 따라 가용 메모리 들이 존재함에도 불구하고, 프로그램의 연산에 메모리를 사용할 수 없는 문제가 발생할 수 있다. 메모리 단편화는 프로세스에 대한 기억 영역의 할당과 프로세스에 의한 기억 영역의 해지를 반복함으로써 작은 기억 영역의 분할부가 다수 생성되는 것으로, 이러한 경우 사용할 수 있는 기억 공간이 프로세스가 요구하는 크기보다 작기 때문에 어떤 요구도 만족할 수 없고, 사용하지 않는 상태로 남아 있는 상태를 말한다.
도 1은 메모리 단편화를 설명하는 도면이다. 도 1을 참고하면, 5M 바이트의 가용 메모리(100)가 존재한다. 5M 바이트의 연속적인 주소 공간(100)에 M 바이트의 메모리 블록 다섯 (101, 102, 103, 104, 105)개를 할당할 수 있다. 이 경우 5M 바이트의 연속적인 주소 공간(101)에는 가용 메모리가 존재하지 않는다. 하지만 이러한 상황에서 일부 메모리 블록(102, 104)을 할당 해지하면, 시스템은 2M 바이트의 가용 메모리를 가질 수 있다. 하지만 이런 상황에서 프로그램이 2M 바이트의 메모리 블록을 할당 요청하여도, 시스템은 이 할당 요청을 성공적으로 처리할 수 없다. 2M 바이트의 메모리 블록을 할당하기 위해서는 연속적인 주소 공간이 필요하기 때문이다. 이처럼 할당 요청된 메모리 크기와 같거나 그 보다 많은 메모리가 가용함에도 불구하고, 시스템이 그 할당 요청을 처리할 수 없는 상태를 메모리 단편화라고 한다. 메모리 단편화 현상은 다양한 크기의 메모리 블록을 동적으로 할당/해지하며 사용하는 시스템에서는 피할 수 없이 겪게 되는 문제이다. 따라서 이러한 메모리 단편화 문제를 해결하기 위한 방안이 필요하다.
본 발명은 상기와 같은 필요성을 만족시키기 위하여 안출된 것으로, 메모리 관리 방법 및 그 장치를 제공한다. 본 발명의 실시 예는 가상 메모리를 이용하여 메모리를 관리하는 방법을 제공한다. 본 발명의 실시 예는 2차 가상화를 이용하는 메모리 관리 방법을 제공한다. 실시 예는 두 개의 2차 가상 주소 공간을 설정하고 한 주소 공간이 단편화 되면 다른 주소 공간으로 활성 메모리 블록들을 옮겨 메모리 단편화 문제를 해결하는 방법 및 그 방법에 따른 장치에 관한 것이다.
상기와 같은 문제점을 해결하기 위하여 본 발명의 일 실시 예인 메모리 관리방법은 메모리 할당 요청을 수신하는 단계, 물리 주소 공간의 주소 값을 연속된 1차 가상 주소 공간에 제1 매핑하는 단계 및 메모리 단편화 시 새로운 메모리 할당 요청을 처리하기 위하여, 상기 1차 가상 주소 공간의 주소 값을 연속된 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 어느 하나의 2차 가상 주소 공간에 제2 매핑하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 일 실시 예인 전자 장치는 적어도 하나의 데이터를 저장하는 메모리 및 프로세스로부터 메모리 할당 요청을 수신하고, 상기 메모리 할당 요청에 대응하여 물리 주소 공간에 할당된 메모리의 주소 값을 연속된 1차 가상 주소 공간에 제1 매핑하며, 메모리 단편화 시 새로운 메모리 할당 요청을 처리하기 위하여, 상기 1차 가상 주소 공간의 주소 값을 연속된 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 어느 하나의 2차 가상 주소 공간에 제2 매핑하는 가상 메모리 관리부를 포함하는 것을 특징으로 한다.
본 발명의 실시 예에 의하면, 가상 주소 공간에서 메모리 블록들이 연속적으로 존재하도록 할 수 있다. 이를 이용하여 메모리 단편화가 될 때 마다 가상 주소 공간의 역할을 바꾸어 메모리 단편화 문제를 해결할 수 있다.
본 발명의 실시 예에 따르면 가상 주소 공간 상에서만 2차 가상 주소의 매핑을 바꾸는 단순한 연산으로 활성 메모리 블록을 이동시켜 빠른 시간 안에 메모리 단편화 문제를 해결할 수 있다.
또한, 본 발명의 실시 예에 따르면 물리 주소 공간이 불필요하게 낭비되는 것을 피할 수 있어 메모리를 효율적으로 이용할 수 있다.
도 1은 메모리 단편화를 설명하는 도면이다.
도 2는 본 발명의 일 실시 예인 전자 장치를 설명하는 블록도이다.
도 3은 본 발명의 일 실시 예인 가상 메모리를 이용하여 메모리를 관리하는 방법을 설명하는 도면이다.
도 4는 본 발명의 일 실시 예인 가상 주소 공간에서의 메모리를 관리하는 방법을 설명하는 도면이다.
도 5는 본 발명의 일 실시 예인 2 단계 가상화를 이용하여 메모리를 관리하는 방법을 설명하는 도면이다.
도 6은 도 5의 실시 예에서 활성 블록이 매핑되는 방법을 설명하는 도면이다.
도 7은 도 6 실시 예의 매핑 테이블이다.
도 8은 도 5의 실시 예를 설명하는 흐름도이다.
도 9는 도 8에서 활성 블록을 이동시키는 방법을 설명하는 도면이다.
도 10은 도 5의 실시 예에서 새로운 메모리 할당 요청이 있는 경우 메모리 관리 방법을 설명하는 흐름도이다.
전술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되며, 이에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 상세한 설명을 생략한다. 본 명세서에서 사용되는 기술적 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명의 사상을 한정하려는 의도가 아님을 유의해야 한다. 또한, 본 명세서에서 사용되는 기술적 용어는 본 명세서에서 특별히 다른 의미로 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 의미로 해석되어야 하며, 과도하게 포괄적인 의미로 해석되거나, 과도하게 축소된 의미로 해석되지 않아야 한다.
또한, 본 명세서에서 사용되는 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "구성된다." 또는 "포함한다." 등의 용어는 명세서상에 기재된 여러 구성 요소들, 또는 여러 단계를 반드시 모두 포함하는 것으로 해석되지 않아야 한다.
이하, 첨부된 도면을 참조하여 본 개시의 실시 예들을 보다 구체적으로 설명하도록 한다.
본 발명에서 가상 메모리 또는 가상 기억 장치는 메모리를 관리하는 방법 중 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 의미한다.
또한, 가상적으로 주어진 주소를 가상 주소(virtual address) 또는 논리 주소(logical address)라고 하며, 실제 메모리 상에서 유효한 주소를 물리 주소(physical address) 또는 실 주소(real address)라고 지칭할 수 있다.
본 발명에서는 가상 주소의 범위를 가상 주소 공간, 물리 주소의 범위를 물리 주소 공간이라 지칭할 수 있다. 가상 주소 공간은 프로세스의 관점에서 사용하는 주소로, 하나의 프로세스 당 하나의 가상 주소 공간이 주어질 수 있다.
메모리 블록(memory block)은 운영체제 또는 프로그램이 주소 공간을 임의적으로 분할하여 사용하는 하나의 단위일 수 있다. 블록의 크기가 일정한 것을 페이지, 그렇지 않은 것을 세그먼트라고 할 수 있다.
본 발명에서 장치로서 메모리 또는 메모리부는 가상 메모리와 대비되는 개념의 물리 메모리(physical memory)를 지칭할 수 있다.
도 2는 본 발명의 일 실시 예인 전자 장치를 설명하는 블록도이다.
도 2를 참고하면, 본 발명의 전자 장치(200)는 제어부(210), 메모리(220) 및 가상 메모리 관리부(230)를 포함할 수 있다. 도 2에서는 상기 가상 메모리 관리부(230)를 제어부(210)에 포함되지 않는 것으로 도시하였으나, 메모리 관리부(230)와 제어부(210)의 관계는 이에 한정하는 것은 아니며, 메모리 관리부(230)는 제어부(210)에 포함되도록 구성할 수 있다. 상기 전자 장치(200)는 일 실시 예로 통신 단말일 수 있다. 본 발명의 전자 장치(200)가 단말 인 경우, 본 발명의 단말이 무선 이동 통신 기능을 지원하는 경우 무선 통신부의 구성을 더 포함할 수 있다. 그리고 본 발명의 단말이 단말 기반의 다양한 기능을 지원하기 위하여 별도로 마련된 입력부 및 오디오 신호 재생 및 수집을 위한 오디오 처리부 등의 구성을 더 포함할 수 있다.
이와 같은 구성을 가지는 본 발명의 전자 장치는 사용자 요청 또는 기 설정된 스케줄 정보에 따라 제어부(210)가 특정 기능 운용을 수행할 수 있도록 지원한다. 특히, 본 발명의 제어부(210)는 메모리를 제어할 수 있다. 상기 제어부(210)는 메모리 및 가상 메모리를 제어할 수 있다. 상기 제어는 메모리에 데이터를 할당/해지 및 로드하는 것을 포함할 수 있다.
이하에서 메모리는 사용자 기능을 지원을 위해 요구되는 응용 프로그램 및 데이터를 저장하고 로드할 수 있다. 상기 응용 프로그램은 전자 장치의 기능 운용을 위한 다양한 프로세스 및 어플리케이션을 포함하며, 상기 데이터는 상기 프로그램 기능 운용에 필요한 데이터 또는 상기 응용 프로그램 운용에 따라 생성된 데이터 등을 포함할 수 있다.
메모리(220)는 전자 장치(200)의 구동에 필요한 다양한 프로그램들이 업로드 되는 영역이다. 상기 다양한 프로그램의 저장을 위해 상기 전자 장치(200)는 별도의 저장부(230)를 마련할 수 있다. 또한 상기 메모리(220)의 특정 영역을 프로그램 저장을 위한 공간으로 마련할 수도 있다.
가상 메모리 관리부(230)는 동적 할당 메모리 생성부(231), 위치 확인부(232), 상태 확인부(233), 저장부(234), 제어부(235), 메모리 인터페이스부(236) 및 메모리 관리부(237)를 포함할 수 있다.
가상 메모리 관리부(230)는 동적 할당 메모리 영역에 대한 참조 주소 및 참조 주소의 변위를 이용하여 가상 메모리를 제어할 수 있으며 별도로 정의된 응용 프로그램 인터페이스(Application Program Interface; 이하, API라 한다)를 이용하여 가상 메모리를 제어할 수 있다.
동적 할당 메모리 생성부(231)는 프로그래밍 언어인 C의 malloc() 함수와 같이 동적으로 메모리를 할당할 수 있는 수단을 이용하여 동적 할당 메모리를 생성한다. 이 때, 참조 주소 및 참조 주소의 변위를 이용하여 동적 할당 메모리 영역을 생성하는 경우 동적 할당 메모리 생성부(231)는 생성된 메모리 영역의 주소를 출력하고, 별도로 정의된 API를 이용하여 동적 할당 메모리를 생성하는 경우 동적 할당 메모리 생성부(231)는 생성된 메모리 영역에 대한 핸들을 출력할 수 있다.
위치 확인부(232)는 메모리의 영역 중 동적으로 할당 받은 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 역할을 할 수 있다. 동적 할당 메모리 영역은 힙 영역의 일부로 응용 프로그램이 실행 중에 할당된 영역으로서, 위치 확인부(220)는 동적 할당 메모리 영역의 주소를 확인할 수 있다. 위치 확인부(232)는 응용 프로그램의 컴파일 시에 동작하여 동적 할당 메모리 영역에 대한 위치 정보를 확인할 수 있으며, 별도로 정의된 API를 이용하여 응용 프로그램의 런타임 시에 동작하여 동적 할당 메모리 영역에 대한 위치 정보를 확인할 수 있다.
여기서, 위치 확인부(232)에 의해 확인되는 동적 할당 메모리 영역에 대한 위치 정보에는 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 포함할 수 있다.
상태 확인부(233)는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률을 확인하는 역할을 할 수 있다.
저장부(234)는 위치 확인부(232)에 의해 확인된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 저장할 수 있다. 여기서, 변위는 동적 할당 메모리 영역의 크기보다 작은 값을 갖는다. 즉, 참조 주소 및 변위에 의하여 대응되는 동적 할당 메모리 영역이 참조될 수 있는 것이다. 저장부(234)는 하드 디스크, 플래시 메모리, CF 카드(Compact Flash Card), SD 카드(Secure Digital Card), SM 카드(Smart Media Card), MMC 카드(Multimedia Card) 또는 메모리 스틱(Memory Stick) 등 정보의 입출력이 가능한 모듈로서 장치의 내부에 구비되어 있을 수도 있고, 별도의 장치에 구비되어 있을 수도 있다.
메모리 관리자(237)는 상태 확인부(233)에 의해 확인된 결과에 따라 메모리에 대한 관리 작업을 수행한다. 메모리 관리자(237)은 관리 작업을 수행하면서 관리 작업에 따라 변경된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기를 저장부(234)에 저장할 수 있다.
메모리 인터페이스부(236)는 메모리 관리부(270)에 의해 관리 작업이 수행된 동적 할당 메모리 영역에 대한 접근을 수행한다. 메모리 인터페이스부(236)는 컴파일 시에 분석된 참조 주소 및 참조 주소의 변위를 참조하여 동적 할당 메모리 영역으로의 접근을 수행할 수 있고, 메모리 인터페이스부(236)에 포함된 별도로 정의된 API가 동적 할당 메모리 영역의 물리적인 메모리의 주소 및 크기를 참조하여 동적 할당 메모리 영역으로의 접근을 수행할 수도 있다.
한편 상기에서 가상 메모리 관리부(230)는 서로 다른 기능을 가진 복수의 블록으로 구성하고, 각 블록이 수행하는 기능에 대하여 기술하였다. 하지만 이는 기술상의 편의를 위한 것일 뿐 반드시 이와 같이 각 기능이 구분되어야 하는 것은 아니다. 예를 들어 메모리 관리자(237)가 수행하는 특정 기능을 가상 메모리 관리자(230) 자체가 수행할 수도 있음에 유의해야 한다.
이하 본 발명의 가상 메모리 관리부(230)에 대하여 더욱 자세히 설명한다.
본 발명에서 가상 메모리 관리부(230)는 프로세스로부터 메모리 할당 요청을 수신하고, 상기 메모리의 주소 값을 연속된 1차 가상 주소 공간에 제1 매핑할 수 있다. 또한, 메모리 단편화 시 새로운 메모리 할당 요청을 처리하기 위하여, 상기 1차 가상 주소 공간의 주소 값을 연속된 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 어느 하나의 2차 가상 주소 공간에 제2 매핑할 수 있다. 이때, 상기 가상 메모리 관리부(230)에 관리되는 1차 가상 주소 공간, 제1의 2차 가상 주소 공간 및 제2의 2차 가상 주소 공간은 동일한 사이즈의 주소 공간일 수 있다.
가상 메모리 관리부(230)는 메모리 단편화가 발생하면, 상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 프로세스가 현재 사용하고 있는 2차 가상 주소 공간의 활성 메모리 블록을, 프로세스가 현재 사용하고 있지 않은 2차 가상 주소 공간으로 이동 시킬 수 있다. 또한, 상기 활성 메모리 블록을 이동 시킬 때 연속적으로 위치하도록 이동시킬 수 있다. 연속 적으로 이동 시키는 경우 가용 메모리 공간을 최대로 확보할 수 있다.
한편, 상기 가상 메모리 관리부(230)는 상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 프로세스가 사용하고 있는 가상 공간에서, 연속된 가용 메모리 크기가 프로세스가 요청하는 메모리 크기보다 작은 경우 메모리 단편화로 판단할 수 있다.
상기 가상 메모리 관리부(230)는 맵핑 테이블의 맵핑 관계를 변경하여 활성 메모리 블록을 이동 시킬 수 있다. 이 경우 맵핑 관계를 변경하는 방법은 상기 이동되는 활성 메모리 블록에 대응하는 물리 주소 및 1차 가상 주소는 변경시키지 않고, 상기 활성 메모리 블록에 대응하는 2차 가상 주소만 변경하여 활성 메모리 블록을 이동시킬 수 있다. 즉, 활성 메모리 블록의 이동은 제1의 2차 가상 주소 공간과 제2의 2차 가상 주소 공간에 가상 주소 맵핑 변경을 통해 발생하는 것이다.
가상 메모리 관리부(230)는 다음과 같은 방법으로 활성 메모리 블록을 이동 시킬 수 있다. 먼저 이동 시킬 활성 메모리 블록이 존재하는지 확인할 수 있다. 활성 메모리 블록이 확인되면, 확인된 활성 메모리 블록의 이동에 필요한 새로운 2차 가상 주소를 결정할 수 있다. 2차 가상 주소를 결정하면, 상기 새로운 2차 가상 주소를 해당 메모리 블록의 1차 가상 주소와 연결하여 활성 메모리 블록을 이동시킬 수 있다.
가상 메모리 관리부(230)는 다양한 방법으로 활성 블록을 이동 시킬 수 있다. 일 실시 예로 활성 블록이 이동할 가상 공간의 가장 낮은 주소 값을 이용할 수 있다. 즉, 상기 활성 메모리 블록이 이동될 2차 가상 주소 공간에서 메모리가 할당되지 않은 가장 낮은 주소 값을 반환한다. 다음으로 상기 반환된 주소 값에 대응하는 주소 공간의 주소 값을 새로운 2차 가상 주소 값으로 결정할 수 있다. 위와 같은 방법을 이용하는 경우 가장 낮은 주소 값을 가지는 곳에서부터 연속적으로 활성 메모리 블록을 위치시킬 수 있다. 또한, 이 경우 가능한 큰 가용 메모리 공간을 확보할 수 있다.
또한, 가상 메모리 관리부(230)는 맵핑 테이블을 관리할 수 있다. 가상 메모리 관리부(230)는 메모리 할당 요청을 처리하는 경우 맵핑 테이블을 관리할 수 있다. 가상 메모리 관리부(230)는 새로운 메모리 할당 요청 수신 시 요청 받은 크기의 메모리를 할당하고, 상기 메모리 할당 요청이 활성 메모리 블록을 옮기는 요청인지 또는 새로운 메모리 할당 요청인지 판단할 수 있다. 상기 판단 결과에 대응하여 활성 메모리 블록을 옮기는 요청인 경우, 가상 메모리 관리부(230)는 매핑 테이블의 2차 가상 주소 매핑 정보만 갱신할 수 있다.
판단 경과에 따라 새로운 메모리 할당 요청인 경우, 가상 메모리 관리부(230)는 매핑 테이블에 새로운 메모리 블록에 대응하는 물리주소, 1차 가상 주소 및 2차 가상 주소 매핑 정보를 추가할 수 있다.
도 3은 본 발명의 일 실시예인 가상 메모리를 이용하여 메모리를 관리하는 방법을 설명하는 도면이다.
도 3의 가상 메모리 할당 방법은 하드웨어의 물리적 메모리 주소를 각 프로세스별 가상의 메모리 주소 공간에 매핑(mapping)하고, 프로세스가 이 가상의 메모리 주소 공간을 사용하게 하는 방법이다.
도 3을 참고하여 설명하면, 5M 바이트의 연속적인 물리 주소 공간(300)이 5개의 연속된 M 바이트의 블록(301, 302, 303, 304, 305)이 있을 수 있다. 상기 M 바이트의 블록(301, 302, 303, 304, 305) 중 일부의 블록(301, 303, 305)에만 메모리가 할당되어는 경우, 물리 주소 공간(300)에 메모리 블록(301, 303, 305)들이 비 연속적으로 할당되어 있음에도 불구하고, 물리 주소 공간(300)과 가상 주소 공간(310) 사이의 매핑을 적절히 조절하여, 가상 주소 공간(310)에서는 할당된 메모리 블록들이 연속적으로 보이도록 할 수 있다. 물리 주소를 가상 주소 공간에 매핑하는 경우 매핑 테이블을 이용할 수 있다. 매핑 테이블은 물리 주소 공간의 물리 주소와 가상 주소 공간의 가상 메모리를 매칭한 정보를 포함할 수 있다. 매핑 테이블을 이용하여 가상 주소에서 실제 메모리의 물리 주소를 얻을 수 있다.
즉, 301 블록을 311 블록에 매핑하고, 303 블록을 313블록에 매핑하며, 305 블록을 312 블록에 매핑하여 가상 주소 공간(310)에 할당된 메모리 블록들(311, 312, 313)이 연속적으로 보이도록 할 수 있다. 이 경우 실제 물리 주소 공간(310)에서 가용한 2M 바이트는 두 개의 M 바이트 크기의 메모리 블록(302, 304)으로 단편화되어 있지만, 가상 주소 공간(310)에서는 연속된 2M 바이트 블록(314)으로 존재할 수 있다. 따라서 이 경우 가상 메모리 기법을 이용하지 않으면 물리 주소 공간에 1 ~ 2M 바이트의 메모리 블록 할당 요청을 처리 할 수 없지만, 가상 메모리 기법을 이용하면 2M 바이트의 연속된 메모리 블록(314)이 존재하기 때문에 프로세스 내에서 발생하는 2M 바이트 이하의 메모리 블록 할당 요청을 처리할 수 있다.
도 3의 실시 예는 메모리 단편화 문제를 일정 부분 해결할 수 있다. 다만 가상 주소 공간(310)에서 다시 메모리 단편화 문제가 발생하는 경우 가용 메모리의 메모리 할당 요청을 수행하지 못할 수 있다. 즉, 가상 주소 공간(310)에서 312 블록을 다시 할당 해지 하는 경우, 가상 주소 공간(310)에서 가용한 총 메모리는 3M 바이트 이지만 1M 바이트의 블록(312)와 2M 바이트 블록(314)로 단편화 되어 있기 때문에 3M 바이트 크기의 메모리 블록 할당 요청을 성공적으로 처리할 수 없다.
도 4는 본 발명의 일 실시 예인 가상 주소 공간에서의 메모리를 관리하는 방법을 설명하는 도면이다.
도 4에서는 프로세스가 요청하는 메모리 공간보다 두 배의 메모리 주소 공간 및 가상 메모리 주소 공간을 설정하여 메모리를 관리하는 방법에 대하여 설명한다. 도 4의 실시 예는 가상 주소 공간에서의 메모리 단편화 문제를 보완할 수 있다.
실시 예에 따르면 가상 메모리 관리부는 프로세스가 요구하는 메모리 공간보다 두 배의 메모리 주소 공간을 설정할 수 있다. 프로세스는 매 순간에 설정된 공간의 반만 사용하면서, 사용하고 있는 반쪽의 공간에 메모리 단편화가 생기면, 시스템은 사용중인 활성 메모리 블록들을 다른 반쪽 공간으로 옮길 수 있다. 새로운 반쪽 공간으로 활성 메모리 블록들을 옮길 때 시스템은 절절한 매핑을 이용하여 활성 메모리 블록들을 서로 연속되게 위치 시킬 수 있다. 따라서 새로운 반쪽 공간의 메모리는 단편화 되지 않은 상태를 가질 수 있다. 활성 메모리 블록들이 새로운 반쪽 공간으로 전부 옮겨지면, 프로세스는 이 새로운 반쪽 공간만을 사용한다. 새로운 반쪽 공간을 사용 중 사용하고 있는 공간에 메모리 단편화가 발생하면, 다시 시스템은 활성 메모리 블록들을 다른 반쪽 공간으로 옮기는 동작을 반복하여 가상 주소 공간에서의 메모리 단편화 문제를 해결할 수 있다.
도 4를 참고하여 일 실시 예에 대하여 더욱 자세히 설명한다. 시스템은 하나의 프로세스를 위해 제1 주소 영역(400)과 제2 주소 영역(410)이라는 두 개의 주소 공간을 설정할 수 있다. 제1 주소 영역(400)은 제1 물리 주소 공간(401)과 제1 가상 주소 공간(403)을 포함할 수 있다. 제1 물리 주소 공간(401)은 제1 가상 주소 공간에 대응할 수 있다. 제2 주소 영역(410)은 제2 물리 주소 공간(411)과 제2 가상 주소 공간(413)을 포함할 수 있다. 제2 가상 주소 공간(413)은 제1 가상 주소 공간(403)과 동일한 크기 일 수 있다. 제2 물리 주소 공간(411)는 제2 가상 주소 공간에 대응할 수 있다.
먼저 컬렉션(collection)이 일어나기 전 동작에 대하여 설명한다. 프로세스는 프로세스의 시작과 동시에 제1 주소 영역(400)의 제1 가상 주소 공간(403)을 사용하여 메모리 블록 할당 요청을 처리한다. 이 경우 프로세스는 제2 주소 영역(410)은 사용하지 않는다. 프로세스가 제1 주소 영역(400)에서 다양한 크기의 메모리 블록들을 할당/해지하는 과정을 반복하면서, 제1 주소 영역(400)처럼 활성 메모리 블록들이 서로 연속적이지 않게 존재할 수 있다. 도 4의 before collection 시점에서 제1 가상 주소 공간(403)에는 2M 바이트의 가용 메모리가 존재하지만, 프로세스가 2M 바이트 크기의 메모리 블록을 요청하는 경우 이를 성공적으로 처리할 수 없다. 제1 가상 주소 공간(403)의 가용 메모리 블록이 연속적으로 존재하지 않기 때문이다. 시스템은 이러한 상황을 제1 주소 영역(400)에 단편화가 일어난 것으로 판단할 수 있다.
시스템은 단편화 되었다고 판단하면 제1 주소 영역(400)의 활성 블록들을 제2 주소 영역(410)으로 이동 시킬 수 있다. 시스템이 제1 주소 영역(400)의 활성 블록들을 찾아내어 제2 주소 영역(410)으로 옮기는 과정을 collection이라 지칭할 수 있다. Collection 과정은 제1 물리 주소 공간(401)에서 데이터를 복사해서 제2 물리 주소 공간(411)으로 이동 시키고, 제2 물리 주소 공간(411)에 대응하는 제2 가상 주소 공간(413)에 대응하는 메모리 블록을 할당하는 과정으로 진행할 수 있다.
Collection이 일어나면 프로세스는 제1 주소 공간(400)은 사용하지 않고, 제2 주소 공간(410)을 사용할 수 있다. Collection을 통하여 제2 주소 영역(410)의 제2 가상 주소 공간(413)에서 연속적으로 위치할 수 있다. 따라서 실시 예에서 collection 이후에 제2 가상 주소 공간(413)에는 2M 바이트의 메모리가 가용하고, 2M 바이트의 메모리 블록 할당 요청을 성공적으로 처리할 수 있다. 다시 프로세스가 제2 주소 영역(410)에서 다양한 크기의 메모리 블록들을 할당/해지하는 과정을 반복하면서, 제2 가상 주소 공간(413)에서 단편화가 발생할 수 있다. 이 경우 시스템은 collection을 이용하여 제2 주소 영역(410)의 활성 블록들을 제1 주소 영역(400)으로 이동시킬 수 있다. 위와 같은 방법으로 사용하고 있는 주소 영역에서 단편화가 발생하는 경우 사용하고 있지 않은 다른 주소 영역으로 활성 블록을 연속적으로 매핑하는 과정을 통하여 가상 주소 공간에서의 단편화 문제를 해결할 수 있다.
도 5는 본 발명의 일 실시예인 2 단계 가상화를 이용하여 메모리를 관리하는 방법을 설명하는 도면이다.
도 5의 실시 예는 도 4의 실시 예 보다 메모리 단편화 문제를 효과적으로 처리할 수 있다. 도 4의 실시 예는 실제 프로세스가 한 순간에 사용하는 메모리의 크기가 제1 주소 영역(400)의 크기와 같은데 반해, 제2 주소 영역(410)의 메모리 공간도 항상 이 프로세스가 사용할 수 있도록 설정해 놓아야 하는 문제가 있을 수 있다. 즉, 한 프로세스를 위해 설정해 놓은 전체 메모리 공간 중 절반의 공간은 메모리 블록을 할당하지 못하고 낭비될 수 있다.
또한 제1 물리 주소 공간(401)의 데이트를 제2 물리 주소 공간(411)로 옮기는 과정은 메모리에 직접 접근하는 연산을 수반하기 때문에 상당한 시간이 소요될 수 있다. 도 5의 실시 예는 2단계 가상화를 이용하여, 물리 주소 공간이 불필요하게 낭비되는 것을 막을 수 있고, 활성 블록의 이동 과정에서 메모리에 직접 접근하는 연산을 수반하지 않기 때문에 활성 블록 이동 과정에서의 시간을 절약할 수 있다.
도 5를 참고하여 2단계 가상화를 이용하여 가상 주소 공간을 설정하는 방법에 대하여 설명한다. 본 실시 예에서 프로세스가 N 바이트의 가상 주소 공간을 필요로 하는 경우, 운영 체제(operating system : OS)는 N 바이트의 물리 주소 공간(500)의 주소 값을 N 바이트의 1차 가상 주소 공간(510)에 매핑할 수 있다. 1차 가상 주소 공간(510)은 연속적인 주소 공간일 수 있다. 물리 주소 공간(500)을 1차 가상 주소 공간(510)에 매핑하는 방법은 도 3에서 설명한 방법을 이용할 수 있다.
N 바이트의 1차 가상 주소 공간(510)의 주소 값은 다시 2N 바이트의 2차 가상 주소 공간(520)으로 매핑될 수 있다. 2차 가상 주소 공간(520)은 두 개의 연속적인 N 바이트 주소 공간(521, 522)을 포함할 수 있다. 1차 가상 주소 공간(510)의 한 주소는 제1의 2차 가상 주소 공간(521)의 한 주소 또는 제2의 2차 가상 주소 공간(522)의 한 주소에 매핑될 수 있다. 1차 가상 주소 공간(510)의 한 주소가 제1의 2차 가상 주소 공간(521)과 제2의 2차 가상 주소 공간(522) 중 어느 공간의 어떤 주소로 매핑될지는 가상 메모리 관리부 또는 가상 주소 매퍼에 의해 관리 될 수 있다.
메모리를 요청한 프로세스는 2차 가상 주소 공간(520)의 제1의 2차 가상 주소 공간(521)과 제2의 2차 가상 주소 공간(522) 중 하나를 사용하여 연산에 필요한 메모리 블록을 할당/해지 할 수 있다. 프로세스는 주어진 한 순간에 2차 가상 주소 공간(520)의 제1의 2차 가상 주소 공간(521) 또는 제2의 2차 가상 주소 공간(522) 중 하나를 사용할 수 있다. 따라서 항상 제1의 2차 가상 주소 공간(521) 또는 제2의 2차 가상 주소 공간(522) 중 하나만 사용하는 것은 아니다. 즉, 프로세스가 제1의 2차 가상 주소 공간(521)을 이용하다 시점이 변하면 제2의 2차 가상 주소 공간(522)을 이용할 수 있고, 제2의 2차 가상 주소 공간(522)을 이용하다 시점이 변하면 제1의 2차 가상 주소 공간(521)을 이용할 수도 있다. 프로세스는 제1의 2차 가상 주소 공간(521)과 제2의 2차 가상 주소 공간(522) 중 하나의 가상 주소 공간을 사용하며, 동시에 제1의 2차 가상 주소 공간(521)과 제2의 2차 가상 주소 공간(522)을 사용하지는 않는다.
따라서 2개의 2차 가상 주소 공간(521, 522) 중 하나를 사용하는 중 사용하는 공간에 단편화가 발생하면, 사용하고 있는 공간의 메모리 활성 블록을 사용하지 않는 공간으로 이동하여 연속적인 공간으로 매핑하여 단편화 문제를 해결할 수 있다. 본 실시 예에서는 사용하고 있는 공간의 메모리 활성 블록을 이동하는 과정에서 물리 주소 공간(500)의 주소와 1차 가상 주소 공간(510)의 주소는 변경하지 않고, 2차 가상 주소 공간(520)의 주소만 변경할 수 있다.
다음으로 도 6 및 도 7을 참고하여, 2단계 가상 가상화된 공간에서 활성 메모리가 매핑되는 방법에 대하여 설명한다. 도 6은 도 5의 실시 예에서 활성 블록이 매핑되는 방법을 설명하는 도면이고, 도 7은 도 6 실시 예의 매핑 테이블이다.
프로세스가 N 바이트의 가상 주소 공간을 필요로 하는 경우, 운영 체제(operating system : OS)는 N 바이트의 물리 주소 공간(600)을 N 바이트의 1차 가상 주소 공간(610)에 매핑할 수 있다. N 바이트의 1차 가상 주소 공간(610)의 주소 값은 다시 2N 바이트의 2차 가상 주소 공간(620)으로 매핑될 수 있다. 2차 가상 주소 공간(620)은 두 개의 연속적인 N 바이트 주소 공간(621, 622)을 포함할 수 있다.
도 6의 물리 주소 공간(600), 1차 가상 주소 공간(610) 및 2차 가상 주소 공간(620)의 맵핑 관계는 도 7의 매핑 테이블을 통하여 알 수 있다. 매핑 테이블은 가상 주소와 물리 주소의 매핑 테이블이다. 프로세스가 특정 메모리에 접근 하려면, 운영 체제는 프로세스의 가상 주소를 시스템의 메모리 주소로 변환해 주어야 한다. 따라서 매핑 테이블은 프로세스 마다 하나씩 존재하게 된다.
도 7의 매핑 테이블을 참고하면, 도 6에서 물리 주소 601은 1차 가상 주소 611에 매핑되고, 물리 주소 603은 1차 가상 주소 613에 매핑되며, 물리 주소 605는 1차 가상 주소 615에 매핑된다. 1차 가상 주소 공간(610)의 1차 가상 주소 611은 2차 가상 주소 a에 매핑되고, 1차 가상 주소 613은 2차 가상 주소 c에 매핑되고, 1차 가상주소 615는 2차 가상 주소 e에 매핑될 수 있다. 이 경우 제2의 2차 가상 주소 공간(622)은 1차 가상 주소 공간(610)의 주소 매핑에 사용되지 않는다.
프로세스는 제1의 2차 가상 주소 공간(621)을 이용하여 연산에 필요한 메모리 블록을 할당/해지 할 수 있다. 프로세스는 2차 가상 주소 공간을 이용 중 사용하고 있는 주소 공간이 단편화 되었다고 판단할 수 있다. 프로세스가 단편화 되었다고 판단하는 경우 제1의 2차 가상 주소 공간(621)과 제2의 2차 가상 주소 공간(622)은 서로 역할을 바꿀 수 있다. 즉, 프로세스는 현재 제1의 2차 가상 주소 공간(621)을 사용하고 있지만 단편화 되었다고 판단하면 collection을 통하여 제1의 2차 가상 주소 공간(621)에 있는 활성 블록들을 제2의 2차 가상 주소 공간(622)으로 옮겨 제2의 2차 가상 주소 공간(622)을 이용할 수 있다. 이때 활성 메모리 블록들은 새로운 제2의 2차 가상 주소 공간(622)에서 서로 연속적으로 놓이도록 옮겨질 수 있다. 제1의 2차 가상 주소 공간(621)과 제2의 2차 가상 주소 공간의 역할을 서로 바꾸는 collection이 일어나는 경우 활성 메모리 블록들의 메모리 주소와 1차 가상 주소는 변하지 않고, 2차 가상 주소만 변하게 된다.
도 7의 매핑 테이블을 참고하면, 물리 주소 601, 603, 605의 주소와 1차 가상 주소 611, 613, 615의 주소는 변하지 않고, 1차 가상 주소 611에 대응하는 2차 가상 주소가 2차 가상 주소 '가'로 바뀌고, 1차 가상 주소 613에 대응하는 2차 가상 주소가 2차 가상 주소 '나' 바뀌며, 1차 가상 주소 615에 대응하는 2차 가상 주소가 2차 가상 주소 '다' 바뀔 수 있다. Collection을 통하여 제2의 2차 가상 주소 공간의 메모리 할당 블록 '가', '나', '다'는 연속적으로 놓일 수 있다. Collection이 일어나기 전 제1의 2차 가상 주소 공간(621)에서는 단편화에 따라 프로세스가 요청하는 메모리 할당 요청을 처리하지 못할 수 있지만, collection을 통하여 메모리 할당 블록을 연속적으로 놓음으로써, 단편화 문제를 해결하고 프로세스가 요청하는 메모리 할당 요청을 처리할 수 있다. 위와 같은 방법으로 사용하고 있는 2차 가상 주소 공간에서 단편화가 발생하는 경우 사용하고 있지 않은 다른 2차 가상 주소 공간으로 활성 블록을 연속적으로 매핑하는 과정을 통하여 가상 주소 공간에서의 단편화 문제를 해결할 수 있다.
도 5 및 도 6의 실시 예에서는 물리 주소 공간의 주소는 변하지 않기 때문에 많은 시간을 소요하는 물리 주소 공간 상의 데이터 이동은 발생하지 않는다. 또한 프로세스는 메모리 블록의 새로운 2차 가상 주소를 통해 해당 물리 주소 공간상의 메모리 블록으로 접근할 수 있다.
도 8은 도 5의 실시 예를 설명하는 흐름도이다.
가상 메모리 기법을 이용하는 전자 장치는 프로세스로부터 메모리 할당 요청을 수신할 수 있다(S801). 메모리 할당 요청에는 C 언어가 이용될 수 있다. 일 실시 예로 malloc() 함수를 이용하여 메모리 할당 요청을 할 수 있다. 사용되는 함수는 메모리 모델에 따라서 달라질 수 있으며, 실시 예로 메모리가 할당될 때에는 malloc(), farmalloc() 함수가 사용될 수 있고, 재 배정될 때에는 realloc() 함수가 사용될 수 있으며, 메모리가 해제될 때에는 free() 또는 farfree()함수가 사용될 수 있다. 프로세스로부터 N 바이트의 가상 메모리 할당 요청을 수신하면, 가상 메모리 관리부는 N 바이트의 물리 주소 공간의 주소 값을 N 바이트의 1차 가상 주소 공간에 매핑할 수 있다(S803). 이 경우 1차 가상 주소 공간은 연속적인 N 바이트의 가상 주소 공간 일 수 있다.
가상 메모리 관리부는 메모리 단편화 문제를 해결하기 위하여 N 바이트의 1차 가상 주소 공간의 주소 값을 다시 2N 바이트의 2차 가상 주소 공간으로 매핑할 수 있다(S805). 상기 2차 가상 주소 공간은 두 개의 연속적인 N 바이트 주소 공간으로 구성 될 수 있다. 1차 가상 주소 공간의 주소 값은 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 하나의 공간으로 매핑 될 수 있다. 1차 가상 공간의 주소가 2차 가상 공간의 어떤 공간으로 매핑 될지는 가상 메모리 관리부에 의하여 결정될 수 있다. 다만, 프로세스는 한번에 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 하나의 가상 주소 공간 만을 이용하며, 동시에 제1의 2차 가상 주소 공간과 제2의 2차 가상 주소 공간을 이용하지는 않는다.
제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간을 이용하여 연산에 필요한 블록을 할당/해지 하는 프로세스는 사용하고 있는 2차 가상 주소 공간이 단편화 되었는지 여부를 판단할 수 있다(S807). 일 실시 예로 프로세스는 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 프로세스가 사용하고 있는 공간에서 연속된 가용 메모리 블록의 크기가 프로세스가 요청하는 메모리 블록의 크기보다 작은 경우 메모리 할당 요청을 성공적으로 수행할 수 없으므로 메모리 단편화로 판단할 수 있다.
프로세스가 메모리 단편화로 판단한 경우 가상 메모리 관리부는 2차 가상 주소 공간에서 사용되고 있는 활성 블록을 이동 시킬 수 있다(S809). 더욱 자세히 가상 메모리 관리부는 상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 현재 프로세스가 사용하고 있는 2차 가상 주소 공간의 활성 메모리 블록을 현재 프로세스가 사용하고 있지 않은 2차 가상 주소 공간으로 이동 시킬 수 있다. 상기 활성 메모리 블록을 이동하는 경우 이동 되는 활성 메모리 블록이 연속적으로 위치하도록 활성 메모리 블록을 이동시킬 수 있다. 활성 메모리 블록을 연속적으로 배치하여, 연속적인 가용 메모리 블록을 최대한 확보할 수 있으며, 이를 통하여 단편화 문제를 극복할 수 있다.
메모리 할당 요청을 수신하였으나, 메모리 단편화가 발생하지 않는 경우, 현재 사용중인 2차 가상 주소 공간에 새로운 메모리를 할당할 수 있다(S811).
즉, 본 실시 예에서 프로세스는 한 순간에 제1의 2차 가상 주소 공간과 제2의 2차 가상 주소 공간 중 하나의 공간을 이용하기 때문에 사용하고 있는 공간에서 단편화가 발생하는 경우 사용하지 않는 공간으로 활성 블록을 이동시켜 단편화 문제를 극복할 수 있다. 또한 활성 블록을 이동 시키는 단계에서 이동되는 메모리 블록에 대응하는 물리 주소 및 1차 가상 주소는 변경하지 않고, 활성 블록이 이동하는 2차 가상 주소 공간의 새로운 주소로 2차 가상 주소만 변경할 수 있다. 물리 주소 와 1차 가상 주소는 변경하지 않고 2차 가상 주소를 변경하면서 1차 가상 주소와 2차 가상 주소의 맵핑 관계만 변경하기 때문에 단순한 연산을 이용하여 메모리를 관리할 수 있다.
도 9는 도 8에서 활성 블록을 이동시키는 방법을 설명하는 도면이다.
프로세스가 사용하고 있는 2차 가상 주소 공간이 단편화 되었다고 판단하는 경우 가상 메모리 관리부는 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 현재 프로세스가 사용하고 있는 가상 주소 공간의 활성 블록을 현재 프로세스가 사용하고 있지 않은 가상 주소 공간으로 이동 시킬 수 있다.
가상 메모리 관리부는 현재 프로세스가 사용하고 있는 2차 가상 주소 공간에 활성 메모리 블록이 존재하는지를 판단할 수 있다(S901). 예를 들어 제1의 2차 가상 주소 공간이 현재 프로세스가 사용하는 가상 주소 공간이고, 제2의 2차 가상 주소 공간이 현재 프로세스가 사용하고 있지 않은 가상 주소 공간인 경우 가상 메모리 관리부는 제1의 2차 가상 주소 공간에 활성 메모리 블록이 존재하는지 판단할 수 있다.
다음으로 가상 메모리 관리부는 제2의 2차 가상 주소 공간으로 활성 메모리 블록을 이동시키기 위하여 활성 메모리 블록에 주어야 제2의 2차 가상 주소 공간의 새로운 주소를 결정할 수 있다(S903). 활성 메모리 블록이 이동할 새로운 주소를 결정하는 방법의 일 실시 예로, 활성 메모리 블록이 이동될 2차 가상 주소 공간에서 메모리 블록이 할당되지 않은 가장 낮은 주소 값을 반환하는 단계 및 상기 반환된 주소 값에 대응하는 가상 주소 공간의 주소 값을 새로운 2차 가상 주소 값으로 결정하는 단계를 포함할 수 있다. 다만, 활성 메모리 블록이 이동할 주소를 결정하는 방법은 상기 실시 예에 한정하지 않는다.
2차 가상 주소가 결정되면 가상 메모리 관리부는 새로운 주소를 해당 블록의 1차 가상 주소와 연결할 수 있다(S905).
도 10은 도 5의 실시 예에서 새로운 메모리 할당 요청이 있는 경우 메모리 관리 방법을 설명하는 흐름도이다.
프로세스가 2차 가상 주소 공간을 이용 중 연산에 필요한 새로운 메모리 할당 요청을 할 수 있다. 가상 메모리 관리부는 프로세스로부터 메모리 할당 요청을 수신 할 수 있다(S1001). 가상 메모리 관리부는 메모리 할당 요청을 수신하면 요청된 메모리 크기 이상의 가용한 메모리 블록들 중 가낭 낮은 주소 값을 가지는 블록의 주소를 프로세스에 할당 할 수 있다(S1003). 가상 메모리 관리부는 프로세스로부터 메모리 할당 요청이 사용 중인 2차 가상 주소 공간에서의 활성 블록을 사용하지 않는 새로운 2차 가상 주소 공간으로 이동시키는 요청인지, 신규 메모리 할당을 요청하는 것인지 판단할 수 있다(S1005).
판단 결과 활성 블록을 이동 시키는 요청인 경우 가상 메모리 관리부는 매핑 테이블의 2차 가상 주소 매핑 정보를 갱신할 수 있다(S1007). 도 7은 매핑 테이블에서 2차 가상 주소의 매핑 정보가 갱신 되는 일 실시 예일 수 있다. 도 7을 참고하면, 제1의 2차 가상 주소 공간의 활성 블록이 제2의 2차 가상 주소 공간으로 이동하는 경우의 매핑 테이블의 변화를 나타내고 있다. 도 7을 참고하면, 매핑 정보가 갱신 될 때 물리 주소와 1차 가상 주소는 변하지 않지만 2차 가상 주소는 변경 되는 것을 알 수 있다.
판단 결과 새로운 신규 메모리 할당을 요청하는 경우, 새로운 메모리 블록에 대응하는 물리 주소, 1차 가상 주소 및 2차 가상 주소에 대한 매핑 정보를 매핑 테이블에 등록할 수 있다. 즉, 새로운 신규 메모리 할당 요청인 경우 새롭게 할당 요청 받은 메모리 블록에 대응하는 물리 주소 및 1차 가상 주소가 존재하지 않으므로, 매핑 테이블에 추가되는 신규 메모리 블록에 대응하는 물리 주소, 1차 가상 주소 및 2차 가상 주소 매핑 정보를 추가하여야 한다.
이상에서 본 발명의 다양한 실시 예에 대하여 설명하였다. 다만 본 발명의 권리 범위는 이에 한정되지 않으며, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
200 : 전자 장치
210 : 제어부
220 : 메모리
230 : 가상 메모리 관리부

Claims (16)

  1. 전자 장치의 메모리 관리 방법에 있어서,
    메모리 할당 요청을 수신하는 단계;
    상기 메모리 할당 요청에 대응하여 물리 주소 공간에 메모리를 할당하는 단계;
    상기 물리 주소 공간에 할당된 메모리의 주소 값을 연속된 1차 가상 주소 공간에 제1 매핑하는 단계; 및
    메모리 단편화 시 새로운 메모리 할당 요청을 처리하기 위하여, 상기 1차 가상 주소 공간의 주소 값을 연속된 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 어느 하나의 2차 가상 주소 공간에 제2 매핑하는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 물리 주소 공간, 1차 가상 주소 공간, 제1의 2차 가상 주소 공간 및 제2의 2차 가상 주소 공간은 동일한 사이즈의 주소 공간인 것을 특징으로 하는 메모리 관리 방법.
  3. 제1항에 있어서,
    메모리 단편화가 발생하면, 상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 현재 프로세스가 사용하고 있는 2차 가상 주소 공간의 활성 메모리 블록을,
    현재 프로세스가 사용하고 있지 않은 2차 가상 주소 공간에 연속적으로 위치하도록 이동시키는 단계를 더 포함하는 것을 특징으로 하는 메모리 관리 방법.
  4. 제3항에 있어서, 상기 메모리 단편화의 판단은,
    상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 프로세스가 사용하고 있는 가상 공간에서, 연속된 가용 메모리 크기가 프로세스가 요청하는 메모리 크기보다 작은 경우 메모리 단편화로 판단하는 것을 특징으로 하는 메모리 관리 방법.
  5. 제3항에 있어서, 상기 활성 메모리 블록을 이동시키는 단계는,
    이동되는 활성 메모리 블록에 대응하는 물리 주소 및 1차 가상 주소는 변경하지 않고, 2차 가상 주소만 변경하는 것을 특징으로 하는 메모리 관리 방법.
  6. 제3항에 있어서, 상기 활성 메모리 블록을 이동시키는 단계는,
    상기 활성 메모리 블록이 존재하는지 확인하는 단계,
    상기 확인된 활성 메모리 블록의 이동에 필요한 새로운 2차 가상 주소를 결정하는 단계, 그리고
    상기 새로운 주소를 결정하면 상기 새로운 가상 주소를 해당 메모리 블록의 1차 가상 주소와 연결하는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  7. 제6항에 있어서, 상기 새로운 2차 가상 주소를 결정하는 단계는,
    활성 메모리 블록이 이동될 2차 가상 주소 공간에서 메모리가 할당되지 않은 가장 낮은 주소 값을 반환하는 단계, 그리고
    상기 반환된 주소 값에 대응하는 주소 공간의 주소 값을 새로운 2차 가상 주소 값으로 결정하는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  8. 제3항에 있어서,
    새로운 메모리 할당 요청 수신 시 요청 받은 크기의 메모리를 할당하는 단계;
    상기 메모리 할당 요청이 활성 메모리 블록을 옮기는 요청인지 또는 새로운 메모리 할당 요청인지 판단하는 단계; 및
    상기 판단 결과에 대응하여 활성 메모리 블록을 옮기는 요청인 경우 매핑 테이블의 2차 가상 주소 매핑 정보만 갱신하고, 새로운 메모리 할당 요청인 경우 매핑 테이블에 새로운 메모리 블록에 대응하는 물리주소, 1차 가상 주소 및 2차 가상 주소 매핑 정보를 추가하는 것을 특징으로 하는 메모리 관리 방법.
  9. 메모리를 포함하는 전자 장치에 있어서,
    적어도 하나의 데이터를 저장하는 메모리부; 및
    프로세스로부터 메모리 할당 요청을 수신하고, 상기 메모리 할당 요청에 대응하여 물리 주소 공간에 할당된 메모리의 주소 값을 연속된 1차 가상 주소 공간에 제1 매핑하며, 메모리 단편화 시 새로운 메모리 할당 요청을 처리하기 위하여, 상기 1차 가상 주소 공간의 주소 값을 연속된 제1의 2차 가상 주소 공간 또는 제2의 2차 가상 주소 공간 중 어느 하나의 2차 가상 주소 공간에 제2 매핑하는 가상 메모리 관리부를 포함하는 것을 특징으로 하는 전자 장치.
  10. 제9항에 있어서,
    1차 가상 주소 공간, 제1의 2차 가상 주소 공간 및 제2의 2차 가상 주소 공간은 동일한 사이즈의 주소 공간인 것을 특징으로 하는 전자 장치.
  11. 제9항에 있어서, 상기 가상 메모리 관리부는
    메모리 단편화가 발생하면, 상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 프로세스가 현재 사용하고 있는 2차 가상 주소 공간의 활성 메모리 블록을,
    프로세스가 현재 사용하고 있지 않은 2차 가상 주소 공간에 연속적으로 위치하도록 이동시키는 것을 특징으로 하는 전자 장치.
  12. 제11항에 있어서, 상기 가상 메모리 관리부는
    상기 제1의 2차 가상 주소 공간 또는 상기 제2의 2차 가상 주소 공간 중 프로세스가 사용하고 있는 가상 공간에서,
    연속된 가용 메모리 크기가 프로세스가 요청하는 메모리 크기보다 작은 경우 메모리 단편화로 판단하는 것을 특징으로 하는 전자 장치.
  13. 제11항에 있어서, 상기 가상 메모리 관리부는,
    상기 이동되는 활성 메모리 블록에 대응하는 물리 주소 및 1차 가상 주소는 변경하지 않고, 2차 가상 주소만 변경하여 활성 메모리 블록을 이동시키는 것을 특징으로 하는 전자 장치.
  14. 제11항에 있어서, 상기 가상 메모리 관리부는,
    상기 활성 메모리 블록이 존재하는지 확인하고, 상기 확인된 활성 메모리 블록의 이동에 필요한 새로운 2차 가상 주소를 결정하며, 상기 새로운 2차 가상 주소를 결정하면 상기 새로운 2차 가상 주소를 해당 메모리 블록의 1차 가상 주소와 연결하여 상기 활성 메모리 블록을 이동시키는 것을 특징으로 하는 전자 장치.
  15. 제14항에 있어서, 상기 가상 메모리 관리부는,
    상기 활성 메모리 블록이 이동될 2차 가상 주소 공간에서 메모리가 할당되지 않은 가장 낮은 주소 값을 반환하고, 상기 반환된 주소 값에 대응하는 주소 공간의 주소 값을 새로운 2차 가상 주소 값으로 결정하는 것을 특징으로 전자 장치.
  16. 제11항에 있어서, 상기 가상 메모리 관리부는,
    새로운 메모리 할당 요청 수신 시 요청 받은 크기의 메모리를 할당하고, 상기 메모리 할당 요청이 활성 메모리 블록을 옮기는 요청인지 또는 새로운 메모리 할당 요청인지 판단하며,
    상기 판단 결과에 대응하여 활성 메모리 블록을 옮기는 요청인 경우 매핑 테이블의 2차 가상 주소 매핑 정보만 갱신하고, 새로운 메모리 할당 요청인 경우 매핑 테이블에 새로운 메모리 블록에 대응하는 물리주소, 1차 가상 주소 및 2차 가상 주소 매핑 정보를 추가하는 것을 특징으로 하는 전자 장치.
KR1020130069214A 2013-06-17 2013-06-17 메모리 관리 방법 및 장치 KR102077149B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130069214A KR102077149B1 (ko) 2013-06-17 2013-06-17 메모리 관리 방법 및 장치
US14/307,371 US9405697B2 (en) 2013-06-17 2014-06-17 Memory management method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130069214A KR102077149B1 (ko) 2013-06-17 2013-06-17 메모리 관리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20140146458A true KR20140146458A (ko) 2014-12-26
KR102077149B1 KR102077149B1 (ko) 2020-02-13

Family

ID=52020300

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130069214A KR102077149B1 (ko) 2013-06-17 2013-06-17 메모리 관리 방법 및 장치

Country Status (2)

Country Link
US (1) US9405697B2 (ko)
KR (1) KR102077149B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016182341A1 (ko) * 2015-05-11 2016-11-17 삼성전자 주식회사 전자 장치 및 이의 메모리 할당 방법
KR20170065085A (ko) * 2015-12-02 2017-06-13 삼성전자주식회사 시스템 리소스 관리를 위한 방법 및 장치

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9891977B2 (en) 2014-01-30 2018-02-13 International Business Machines Corporation Managing spaces in memory
US10067777B2 (en) * 2014-09-18 2018-09-04 Intel Corporation Supporting multiple operating system environments in computing device without contents conversion
CN104915151B (zh) * 2015-06-02 2018-12-07 杭州电子科技大学 多虚拟机***中一种主动共享的内存超量分配方法
CN106294198B (zh) * 2016-08-05 2018-12-07 浪潮(北京)电子信息产业有限公司 一种Linux操作***的内存分配方法及释放方法
CN111090500B (zh) * 2020-03-23 2020-06-12 上海飞旗网络技术股份有限公司 存储进程管理方法及装置
CN113535597B (zh) * 2020-04-14 2024-05-03 阿里巴巴集团控股有限公司 内存管理方法、内存管理单元和物联网设备
KR20210142974A (ko) * 2020-05-19 2021-11-26 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11803304B2 (en) * 2022-01-19 2023-10-31 Vmware, Inc. Efficient bit compression for direct mapping of physical memory addresses
US20240020036A1 (en) * 2022-07-18 2024-01-18 Micron Technology, Inc. Virtual binning in a memory device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055528A1 (en) * 2002-12-12 2005-03-10 International Business Machines Corporation Data processing system having a physically addressed cache of disk memory
US7017024B2 (en) * 2002-12-12 2006-03-21 International Business Machines Corporation Data processing system having no system memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055528A1 (en) * 2002-12-12 2005-03-10 International Business Machines Corporation Data processing system having a physically addressed cache of disk memory
US7017024B2 (en) * 2002-12-12 2006-03-21 International Business Machines Corporation Data processing system having no system memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016182341A1 (ko) * 2015-05-11 2016-11-17 삼성전자 주식회사 전자 장치 및 이의 메모리 할당 방법
US10255175B2 (en) 2015-05-11 2019-04-09 Samsung Electronics Co., Ltd. Electronic device and memory allocation method therefor
KR20170065085A (ko) * 2015-12-02 2017-06-13 삼성전자주식회사 시스템 리소스 관리를 위한 방법 및 장치

Also Published As

Publication number Publication date
US20140372726A1 (en) 2014-12-18
US9405697B2 (en) 2016-08-02
KR102077149B1 (ko) 2020-02-13

Similar Documents

Publication Publication Date Title
KR102077149B1 (ko) 메모리 관리 방법 및 장치
US9760497B2 (en) Hierarchy memory management
KR102363526B1 (ko) 복수의 엑세스 모드를 지원하는 불휘발성 메모리를 포함하는 시스템 및 그것의 엑세스 방법
KR102137761B1 (ko) 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법
US7971026B2 (en) Information processing apparatus and access control method
CN104583979A (zh) 动态物理存储器分区技术
CN113287286A (zh) 通过rdma进行分布式存储节点中的输入/输出处理
US9317312B2 (en) Computer and memory management method
CN110196681B (zh) 业务写操作的磁盘数据写入控制方法及装置、电子设备
CN111679921A (zh) 内存共享方法、内存共享装置及终端设备
US8914571B2 (en) Scheduler for memory
JP2017527877A (ja) フラッシュメモリから/フラッシュメモリへデータを読み取る/書き込むための方法および装置、ならびにユーザ機器
US9697047B2 (en) Cooperation of hoarding memory allocators in a multi-process system
US7865632B2 (en) Memory allocation and access method and device using the same
US11176031B2 (en) Automatic memory management using a memory management unit
US7788463B2 (en) Cyclic buffer management
KR20200135715A (ko) 데이터 처리 방법, 장치, 기기 및 매체
CN115756868A (zh) 内存分配方法、装置、设备、存储介质及计算机程序产品
US10579516B2 (en) Systems and methods for providing power-efficient file system operation to a non-volatile block memory
US10168911B1 (en) Defragmentation of persistent main memory
WO2022262623A1 (zh) 一种数据交换方法及装置
KR20150048028A (ko) 데이터 전송 관리 방법
CN114924995A (zh) 存储空间碎片化整理方法、装置和电子设备
KR20210043001A (ko) 하이브리드 메모리 시스템 인터페이스
KR20070030041A (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