KR20070049885A - 가상 메모리를 제어하는 장치 및 방법 - Google Patents

가상 메모리를 제어하는 장치 및 방법 Download PDF

Info

Publication number
KR20070049885A
KR20070049885A KR1020050107146A KR20050107146A KR20070049885A KR 20070049885 A KR20070049885 A KR 20070049885A KR 1020050107146 A KR1020050107146 A KR 1020050107146A KR 20050107146 A KR20050107146 A KR 20050107146A KR 20070049885 A KR20070049885 A KR 20070049885A
Authority
KR
South Korea
Prior art keywords
memory
dynamic allocation
memory area
area
dynamically allocated
Prior art date
Application number
KR1020050107146A
Other languages
English (en)
Other versions
KR100735560B1 (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 KR1020050107146A priority Critical patent/KR100735560B1/ko
Publication of KR20070049885A publication Critical patent/KR20070049885A/ko
Application granted granted Critical
Publication of KR100735560B1 publication Critical patent/KR100735560B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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

Landscapes

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

Abstract

본 발명은 가상 메모리를 제어하는 장치 및 방법에 관한 것으로서, 메모리 스와핑(Swapping), 메모리 압축(Compression), 메모리 컴팩션(Compaction), 메모리 공유(Sharing) 및 메모리 보호(Protection) 등을 수행하는 메모리 관리 유닛(Memory Management Unit)의 기능을 소프트웨어적으로 제공하는 가상 메모리를 제어하는 장치 및 방법에 관한 것이다.
본 발명의 실시예에 따른 가상 메모리를 제어하는 장치는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 상태 확인부와, 상기 상태 확인부의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 메모리 관리부와, 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 위치 확인부 및 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 메모리 인터페이스부를 포함한다.
가상 메모리, 컴팩션, 스와핑, 압축, 응용 프로그램 인터페이스

Description

가상 메모리를 제어하는 장치 및 방법{Apparatus and method for controlling virtual memory}
도 1은 종래의 메모리 영역을 나타낸 도면이다.
도 2는 본 발명의 실시예에 따른 가상 메모리를 제어하는 장치를 나타낸 블록도이다.
도 3은 본 발명의 실시예에 따른 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.
도 5는 본 발명의 다른 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.
도 6은 본 발명의 실시예에 따른 가상 메모리를 제어하는 과정을 나타낸 흐름도이다.
<도면의 주요 부분에 관한 부호의 설명>
210 : 동적 할당 메모리 생성부 220 : 위치 확인부
230 : 상태 확인부 240 : 저장부
250 : 제어부 260 : 메모리 인터페이스부
270 : 메모리 관리부
본 발명은 가상 메모리를 제어하는 장치 및 방법에 관한 것으로서, 더욱 상세하게는 메모리 스와핑(Swapping), 메모리 압축(Compression), 메모리 컴팩션(Compaction), 메모리 공유(Sharing) 및 메모리 보호(Protection) 등을 수행하는 메모리 관리 유닛(MMU; Memory Management Unit)의 기능을 소프트웨어적으로 제공하는 가상 메모리를 제어하는 장치 및 방법에 관한 것이다.
최근 가정 및 사무 환경이 보다 지능화됨에 따라 유비쿼터스(Ubiquitous) 컴퓨팅 장치들의 개발이 활발하게 진행되고 있다. 대표적인 유비쿼터스 컴퓨터인 무선 센서 노드는 내장형 프로세서, 메모리, 센서, 작동기 그리고 무선 통신 장치로 구성된다. 이러한 무선 센서 노드는 지능형 아파트 또는 기타 건물에 설치되어 해당 시설의 다양한 지점의 온도, 소리, 움직임 등을 측정하여 자체적으로 구성된 무선 통신망을 통해 측정된 데이터를 기지국으로 전송한다. 기지국에서는 전달받은 데이터를 분석하여 시설 내부의 화재 또는 비인가자의 침입을 감지하거나 냉난방기 등을 효율적으로 제어한다. 하지만, 무선 센서 노드와 같은 휴대용 시스템은 배터리를 주전원으로 사용하므로 전원 공급에 대한 제약 사항이 존재한다. 따라서, 이러한 시스템에는 저전력 소프트웨어 기법이 저전력 하드웨어 기법과 함께 사용되고 있다.
휴대용 시스템에서 사용되는 소프트웨어는 정해진 태스크의 집합에 대한 한정된 입력을 처리하는 역할을 수행하기 때문에 정적인 스케줄링 정책과 정적인 메모리 할당 방식을 사용한다. 하지만, 휴대용 시스템이 보다 지능화되고 네트워크화됨에 따라, 휴대용 시스템은 그 상태나 주변 환경에 맞추어 동작하기 위하여 보다 큰 태스크의 집합 및 가변적인 데이터의 양을 제어하게 되었다.
가상 메모리(Virtual Memory)는 컴퓨터와 운영체계에 의해 구현되는 개념으로서, 실제로는 메모리가 아니지만 메모리처럼 이용되는 것을 의미한다. 일반적으로 가상 메모리는 하드 디스크의 일부분이 할당되어 사용되는데, 가상 메모리에 대응하는 메모리는 기본 메모리로서 램(RAM)이 사용된다. 즉, 컴퓨터는 작업 공간을 확보하기 위하여 현재 작업할 자료를 기본 메모리에 적재하고, 현재 작업하지 않는 자료를 가상 메모리에 적재한다. 그러다가, 가상 메모리에 적재된 자료가 필요하면 다시 기본 메모리에 적재하는 과정을 반복하는 것인데 이에 따라, 작업 속도의 감소를 방지할 수 있게 된다. 여기서, 기본 메모리에서 가상 메모리로, 가상 메모리에서 기본 메모리로 자료를 이동시키는 것을 스와핑(swapping)이라 한다.
여기서, 데이터가 읽혀지는 단위를 페이지(page)라고 하며 그 크기는 보통 1 kB에서 수 MB까지 여러 가지가 있다. 가상 메모리를 사용하면 실제로 소요되는 물리적인 저장 공간의 크기를 절약하고, 전체적인 시스템 처리 속도를 향상시킬 수 있다.
메모리 관리 유닛이란, 가상 주소를 물리 주소로 변환해 주는 하드웨어 장치로서, 사용자 프로세스에서 생성된 논리 주소가 메모리로 접근할 때 메모리 관리 유닛은 재배치 레지스터(relocation register)를 이용하여 생성된 논리 주소(가상 주소)가 물리 메모리의 영역(물리 주소)을 가리키게 한다.
도 1은 종래의 메모리 영역을 나타낸 도면으로서, 메모리 영역(10)은 코드(code) 영역(14), 데이터(data) 영역(13), 힙(heap) 영역(11) 및 스택(stack) 영역(12)을 포함하여 구성된다. 코드 영역(14)은 코드 자체를 구성하는 메모리 영역이다. 즉, 코드 영역(14)은 응용 프로그램 명령이 위치하는 곳으로서 기계어로 제어되는 메모리 영역이며, 하위 메모리라고 부르는 가장 낮은 쪽에 있는 메모리 영역이다.
데이터 영역(13)에는 데이터가 보관된다. 예를 들어, 전역(global) 변수, 정적(static) 변수 및 그 외 초기화된 각종 배열과 구조, 자료들이 저장된다.
힙 영역(11)은 프로그래머가 스스로 할당한 메모리 영역을 의미한다. 예를 들어, 프로그래밍 언어인 C의 함수 중에 메모리를 할당하는 함수인 malloc() 등이 사용되어 배정된 메모리가 힙 영역(11)에 해당하는 것이다. 메모리 모델에 따라서 사용하는 함수는 달라질 수 있는데, 메모리가 할당될 때에는 malloc(), farmalloc() 함수가 사용되고 재 배정될 때에는 realloc() 함수가 사용되며 메모리가 해제될 때에는 free() 또는 farfree() 함수가 사용될 수 있다.
스택 영역(12)은 응용 프로그램이 자동으로 사용하는 임시 메모리 영역에 해당된다. 즉, 자동 변수를 저장하거나 함수로 인수를 보낼 때, 복귀 번지를 저장할 때 등에 사용된다.
스택과 힙은 사용 용도에 따라서 조금씩 다른 의미로 사용된다. 예컨대, 버 퍼 메모리에서 스택과 힙이라는 용어를 사용하면 버퍼 메모리를 구성하는 두 가지 방식을 의미한다. 이 때, 스택은 후입선출(LIFO; Last In First Out) 방식의 버퍼를 말하고, 힙은 선입선출(FIFO; First In First Out) 방식의 버퍼를 의미한다.
스택의 경우 후입선출 방식이므로 동작 과정이 푸시(push)와 팝(pop)의 과정으로 이루어진다. 이를 통해 동작이 한쪽 끝(top)에서만 발생한다. 다시 말해, 자료가 입력되는 입구와 출력되는 출구가 하나인 것이다. 이 때문에 맨 마지막에 입력된 것이 제일 먼저 출력된다.
사용자가 동적으로 메모리를 할당하면 힙 영역이 할당되는데, 힙 영역 할당 방법은 물리 메모리(하드 디스크)만을 사용하는 방법으로서, 빈번한 메모리 할당 및 해제에 따라 내부 파편의 증가를 가져올 수 있다.
따라서, 휴대용 시스템에는 메모리 관리 유닛이 탑재된 중앙 처리 유닛(CPU; Central Processing Unit)이 전술한 가상 메모리를 이용하여 메모리 영역을 관리한다. 그러나, 메모리 관리 유닛이 탑재된 중앙 처리 유닛이나 큰 용량의 메모리와 같은 하드웨어적인 개선은 휴대용 시스템의 성능 향상을 가져오는 반면, 보다 많은 전력 공급의 필요 및 제조 단가의 상승을 야기시킨다.
따라서, 소프트웨어적으로 메모리 관리 유닛의 기능을 수행할 수 있게 하는 방법의 등장이 요구된다.
본 발명은 메모리 스와핑(Swapping), 메모리 압축(Compression), 메모리 컴팩션(Compaction), 메모리 공유(Sharing) 및 메모리 보호(Protection) 등을 수행하 는 메모리 관리 유닛(Memory Management Unit)의 기능을 소프트웨어적으로 제공하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 가상 메모리를 제어하는 장치는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 상태 확인부와, 상기 상태 확인부의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 메모리 관리부와, 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 위치 확인부 및 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 메모리 인터페이스부를 포함한다.
본 발명의 실시예에 따른 가상 메모리를 제어하는 방법은 (a) 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 단계와, (b) 상기 (a) 단계의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 단계와, (c) 상기 메모리의 영역 중 상기 관리 작 업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 단계 및 (d) 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하 기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 2는 본 발명의 실시예에 따른 가상 메모리를 제어하는 장치를 나타낸 블록도로서, 가상 메모리를 제어하는 장치(이하, 가상 메모리 제어 장치라 한다 )(200)는 동적 할당 메모리 생성부(210), 위치 확인부(220), 상태 확인부(230), 저장부(240), 제어부(250), 메모리 관리부(270) 및 메모리 인터페이스부(260)를 포함하여 구성된다.
가상 메모리 제어 장치(200)는 동적 할당 메모리 영역에 대한 참조 주소 및 참조 주소의 변위를 이용하여 가상 메모리를 제어할 수 있으며 별도로 정의된 응용 프로그램 인터페이스(Application Program Interface; 이하, API라 한다)를 이용하여 가상 메모리를 제어할 수 있다.
동적 할당 메모리 생성부(210)는 프로그래밍 언어인 C의 malloc() 함수와 같이 동적으로 메모리를 할당할 수 있는 수단을 이용하여 동적 할당 메모리를 생성한다. 이 때, 참조 주소 및 참조 주소의 변위를 이용하여 동적 할당 메모리 영역을 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역의 주소를 출력하고, 별도로 정의된 API를 이용하여 동적 할당 메모리를 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역에 대한 핸들을 출력한다.
위치 확인부(220)는 메모리의 영역 중 동적으로 할당 받은 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 역할을 한다. 동적 할당 메모리 영역은 힙 영역의 일부로 응용 프로그램이 실행 중에 할당된 영역으로서, 위치 확인부(220)는 동적 할당 메모리 영역의 주소를 확인하는 것이다. 위치 확인부(220)는 응용 프로그램의 컴파일 시에 동작하여 동적 할당 메모리 영역에 대한 위치 정보를 확인할 수 있으며, 별도로 정의된 API를 이용하여 응용 프로그램의 런타임 시에 동작하여 동적 할당 메모리 영역에 대한 위치 정보를 확인할 수도 있다.
여기서, 위치 확인부(220)에 의해 확인되는 동적 할당 메모리 영역에 대한 위치 정보에는 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 포함한다.
상태 확인부(230)는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률을 확인하는 역할을 한다.
이를 위하여, 상태 확인부(230)는 메모리 상태 확인부(231), 접근 권한 상태 확인부(232), 태스크 상태 확인부(233) 및 CPU 상태 확인부(234)를 포함할 수 있다.
여기서, 태스크 상태 확인부(233)에 의해 확인되는 태스크는 기본 블록(Basic Block) 및 함수를 포함할 수 있다.
저장부(240)는 위치 확인부(220)에 의해 확인된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 저장한다.
여기서, 변위는 동적 할당 메모리 영역의 크기보다 작은 값을 갖는다. 즉, 참조 주소 및 변위에 의하여 대응되는 동적 할당 메모리 영역이 참조될 수 있는 것이다.
저장부(240)는 하드 디스크, 플래시 메모리, CF 카드(Compact Flash Card), SD 카드(Secure Digital Card), SM 카드(Smart Media Card), MMC 카드(Multimedia Card) 또는 메모리 스틱(Memory Stick) 등 정보의 입출력이 가능한 모듈로서 장치 의 내부에 구비되어 있을 수도 있고, 별도의 장치에 구비되어 있을 수도 있다.
메모리 관리부(270)는 상태 확인부(230)에 의해 확인된 결과에 따라 메모리에 대한 관리 작업을 수행한다. 여기서, 관리 작업은 컴팩션(Compaction), 스와핑(Swapping) 및 압축(Compression)을 포함한다. 이를 위하여, 메모리 관리부(270)는 컴팩션 수행부(271), 스와핑 수행부(272) 및 압축 수행부(273)를 포함할 수 있다.
컴팩션 수행부(271), 스와핑 수행부(272) 및 압축 수행부(273)는 관리 작업을 수행하면서 관리 작업에 따라 변경된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기를 저장부(240)에 저장한다.
메모리 인터페이스부(260)는 메모리 관리부(270)에 의해 관리 작업이 수행된 동적 할당 메모리 영역에 대한 접근을 수행한다. 메모리 인터페이스부(260)는 컴파일 시에 분석된 참조 주소 및 참조 주소의 변위를 참조하여 동적 할당 메모리 영역으로의 접근을 수행할 수 있고, 메모리 인터페이스부(260)에 포함된 별도로 정의된 API가 동적 할당 메모리 영역의 물리적인 메모리의 주소 및 크기를 참조하여 동적 할당 메모리 영역으로의 접근을 수행할 수도 있다.
컴팩션이 수행된 경우 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근은 동적 할당 메모리 영역의 이동 거리만큼 참조 주소 및 변위를 수정함으로써 수행될 수 있다. 즉, 컴팩션 수행부(271)는 힙 영역에서 발생된 파편을 제거하기 위하여 동적 할당 메모리 영역에 대한 컴팩션을 수행하면서 참조 주소를 수정하여 저장부(240)에 저장한다. 이에 따라, 메모리 인터페이스부(260)는 컴팩션이 완료된 후에도 저장된 참조 주소 및 변위를 이용하여 동적 할당 메모리 영역으로 접근할 수 있게 된다.
또한, 컴팩션 수행부(271)는 메모리의 스택 영역에 대한 컴팩션도 수행할 수 있는데, 이는 응용 프로그램의 스택 영역도 운영 체계의 시각에서는 힙 영역에 할당된 메모리 영역이기 때문이다.
스와핑 및 압축이 수행된 경우에도 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근이 수행될 수 있다. 즉, 태스크 상태 확인부(233)에 의해 확인된 태스크의 상태에 따라 스와핑 수행부(272) 및 압축 수행부(273)는 스와핑 및 압축을 수행한다. 이 때, 스와핑 및 압축이 수행됨에 따라 동적으로 할당된 메모리 영역을 사용하는 태스크의 위치가 변경된 경우 스와핑 수행부(272) 및 압축 수행부(273)는 변경된 위치만큼 참조 주소 및 참조 주소의 변위를 수정하여 저장부(240)에 저장한다. 이에 따라, 메모리 인터페이스부(260)는 스와핑 및 압축이 완료된 후에도 저장된 참조 주소 및 변위를 이용하여 동적 할당 메모리 영역으로 접근할 수 있게 된다.
별도로 정의된 API를 이용한 동적 할당 메모리 영역으로의 접근은 컴파일러의 분석 결과 없이도 수행될 수 있다. 이를 위하여, 동적 할당 메모리 생성부(210), 위치 확인부(220), 상태 확인부(230) 및 메모리 인터페이스부(260)는 적어도 하나 이상의 별도로 정의된 API를 포함할 수 있다.
별도로 정의된 API에는 프로그래밍 언어인 C의 함수 중 메모리를 할당하는 함수인 malloc()에 대응하는 함수(이하, 제 1 API라 한다)가 포함될 수 있는데, 제 1 API는 malloc()과 다르게 그 결과값으로 동적으로 할당된 메모리의 주소가 아니 라 자신의 핸들(handle)을 출력한다. 제 1 API는 동적 할당 메모리 생성부(210)에 포함될 수 있다.
출력된 핸들은 또 다른 API(이하, 제 2 API 및 제 3 API라 한다)에 의하여 참조되는데, 제 2 API는 핸들을 참조하여 동적으로 할당된 메모리 영역의 일부 또는 전부를 물리적인 메모리에 배치하여 응용 프로그램에 의하여 사용될 수 있도록 한다. 그리고, 핸들의 사용이 완료되면 제 3 API는 제 2 API에 의해 물리적인 메모리에 배치된 동적 할당 메모리 영역의 일부 또는 전부를 제거한다.
즉, 동적으로 할당된 메모리 영역이 빈번하게 사용되는 경우 제 2 API에 의하여 물리적인 메모리에 배치되고, 사용이 완료된 경우 제 3 API에 의하여 배치가 해제되는 것이다. 제 2 API 및 제 3 API는 메모리 인터페이스부(260)에 포함될 수 있다.
여기서, 저장부(240)는 제 3 API에 의해 배치가 해제된 동적 할당 메모리 영역의 리스트를 저장할 수 있다. 그리고, 메모리 관리부(270)는 메모리 상태 확인부(231)에 의해 확인된 메모리의 사용률이 특정 임계치 이상이 되면 즉, 메모리의 잔량이 특정 임계치 이하로 내려가면 컴팩션, 스와핑 또는 압축을 수행한다.
이 때, CPU 상태 확인부(234)에 의해 확인된 중앙 처리 유닛의 사용률에 따라 관리 작업의 종류가 결정될 수 있는데, 중앙 처리 유닛의 사용률이 높은 경우 스와핑이 수행되고, 중앙 처리 유닛의 사용률이 낮은 경우 컴팩션 또는 압축이 수행된다. 여기서, 복원 시간이 소요되는 압축보다는 컴팩션이 수행되는 것이 바람직하다.
별도로 정의된 API에는 메모리의 보호 및 공유를 위한 함수(이하, 제 4 API 및 제 5 API라 한다)가 포함될 수 있다. 즉, 제 1 API에 의해 출력된 동적 할당 메모리 영역의 핸들을 이용하여 해당 메모리 블록에 대한 읽기 및 쓰기 연산이 수행될 수 있는 것이다.
읽기 연산을 수행하는 제 4 API 및 쓰기 연산을 수행하는 제 5 API는 해당 메모리 블록에 대한 접근 권한을 확인하여 접근 권한이 있는 경우에만 읽기 및 쓰기 연산을 수행하며, 접근 권한이 없는 경우에는 제어 권한을 운영 체계로 넘겨서 메모리 접근 오류가 발생하도록 한다.
여기서, 제 5 API는 해당 메모리 블록이 공유 메모리 블록인 경우 카피-온-라이트(Copy-On-Write)를 수행하여 해당 메모리 블록을 위한 새로운 메모리 영역을 할당할 수도 있다.
제 4 API 및 제 5 API는 상태 확인부(230)의 접근 권한 상태 확인부(232)에 포함될 수 있으며, 메모리 인터페이스부(260)에 포함될 수 있다. 즉, 메모리 영역에 대한 접근 권한 상태는 접근 권한 상태 확인부(232)에 의해 수행되고, 읽기 연산 및 쓰기 연산은 메모리 인터페이스부(260)에 의하여 수행될 수 있는 것이다.
제 4 API 및 제 5 API는 매크로(Macro) 또는 인라인(In-Line) 함수로 구현되어 실제로는 함수 호출이 아닌 일반 연산으로 구현될 수 있다. 매크로 또는 인라인 함수는 종래의 메모리 할당 API와 대응되는 것으로서, 컴파일 이후 제 4 API 및 제 5 API로 변환될 수 있다. 이러한 변환은 변환을 수행하는 별도의 모듈에 의해 수행될 수 있으며, 사용자(프로그래머)에 의해 직접 수행될 수도 있다.
제어부(250)는 동적 할당 메모리 생성부(210), 위치 확인부(220), 상태 확인부(230), 저장부(240), 메모리 관리부(270), 메모리 인터페이스부(260) 및 가상 메모리 제어 장치(200)에 대한 전반적인 제어를 수행한다.
도 3은 본 발명의 실시예에 따른 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.
도 3에 도시된 바와 같이, 메모리(300a)의 동적 할당 메모리 영역(350a)은 메모리 관리부(270)의 컴팩션, 스와핑 또는 압축 이후의 메모리(300b)에서의 동적 할당 메모리 영역(350b)의 위치가 변경될 수 있다. 이를 위하여, 위치 확인부(220)는 동적 할당 메모리 영역(350a)의 위치를 참조하는 참조 주소를 확인하고 이를 저장부(240)에 저장한다.
그리고, 메모리 관리부(270)는 컴팩션, 스와핑 또는 압축을 수행하면서 동적 할당 메모리 영역의 이동 거리(320)를 확인하고, 저장부(240)에 저장된 참조 주소를 수정한다. 도 3을 통해 이를 설명하면, 동적 할당 메모리 영역(350a)의 위치를 참조하는 참조 주소는 B이고, 메모리 관리부(270)의 관리 작업에 따른 동적 할당 메모리 영역(350a)의 이동 거리(320)가 B-A이므로, 메모리 관리부(270)의 관리 작업 이후의 동적 할당 메모리 영역(350b)에 대한 참조 주소는 B-(B-A)이므로 A가 된다.
이에 따라, 메모리 인터페이스부(260)는 수정된 참조 주소를 이용하여 메모리(300b) 내에서 위치가 변경된 동적 할당 메모리 영역(350b)으로 접근할 수 있게 된다.
참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근에 대한 프로그래밍 코드의 예는 다음과 같다.
int *pt = malloc(size);
int *ref = pt + constant; /* 0 <= constant < size */
여기서, pt는 malloc() 함수에 의해 형성된 동적 할당 메모리 영역을 나타내고, size는 동적 할당 메모리 영역의 크기를 나타내고, ref는 pt에 대한 참조 주소를 나타내고, 그리고 constant는 참조 주소의 변위를 나타낸다.
위 프로그래밍 코드에 따라 동적 할당 메모리 영역은 힙 영역의 일정 구역에 형성되는데, 컴팩션, 스와핑 또는 압축 등의 관리 작업에 따라 그 위치가 변경된다. 이 때, 저장부(240)에는 ref 및 constant에 대한 정보가 저장되어 있는데, 메모리 관리부(270)는 동적 할당 메모리 영역의 이동 거리만큼 ref를 수정하여 저장함으로써 동적 할당 메모리 영역의 위치가 변경된 이후에도 메모리 인터페이스부(260)로 하여금 동적 할당 메모리 영역으로 접근할 수 있도록 한다.
도 4는 본 발명의 일 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.
전술한 바와 같이, 메모리 인터페이스부(260)의 제 1 API는 메모리(400a)에서 동적으로 메모리 영역(450a)을 할당한 후에 그 결과값으로 할당된 메모리 영역의 핸들(410)을 출력한다.
제 2 API는 제 1 API에 의해 출력된 핸들(410)을 이용하여 동적 할당 메모리 영역(450b)의 일부 또는 전부를 물리적인 메모리(400b)에 배치한다.
여기서, 동적 할당 메모리 영역(450b)에 대한 물리적인 메모리(400b)의 주소 및 크기는 저장부(240)에 테이블의 형태로 저장될 수 있는데, 제 2 API 및 제 3 API에 의하여 블록 단위로 동적 할당 메모리 영역(450b)에 대한 접근이 이루어지는 경우 테이블의 최대 핸들의 수는 1차원 정수 배열이 되고, 블록의 일부 단위로 동적 할당 메모리 영역(450b)에 대한 접근이 이루어지는 경우 테이블의 최대 핸들의 수는 2차원 정수 배열이 된다.
메모리 관리부(270)는 제 3 API에 의하여 물리적인 메모리(400b)에서 제거된 모든 동적 할당 메모리 영역(450b)을 스와핑과 압축에 대한 대상으로 고려하지 않고, 휴리스틱(Heuristic)을 이용하여 일정 시간 이상 물리적인 메모리(400b)에서 제거된 동적 할당 메모리 영역(450b)만을 스와핑 및 압축에 대한 대상으로 고려함으로써 관리 작업에 소요되는 작업량을 조절할 수 있다. 이를 위하여, 가상 메모리 제어 장치(200)는 제 3 API에 의해 물리적인 메모리(400b)에서 동적 할당 메모리 영역(450b)이 제거된 이후에 소요된 시간을 확인하는 타이머를 구비할 수도 있다.
별도로 정의된 API를 이용한 동적 할당 메모리 영역으로의 접근에 대한 제어를 수행하는 프로그래밍 코드의 예는 다음과 같다.
id = salloc(size);
*pt = scheckout(id, _start, _size);
scheckin(*pt, _start);
sfree(id);
여기서, salloc()은 제 1 API로서, malloc()과 같이 동적으로 메모리 영역을 할당한 후에 그 결과값으로 할당된 메모리 영역의 핸들을 출력하는 API이다. 그리고, id는 salloc()에 의해 형성된 크기가 size인 동적 할당 메모리 영역의 핸들이다.
scheckout()은 제 2 API로서, 그 파라미터로 제 1 API에 의해 출력된 핸들, 물리적인 메모리의 시작 주소 및 동적 할당 메모리 영역의 크기를 가지며, 자신의 포인터를 출력한다.
scheckin()은 제 3 API로서, 그 파라미터로 제 2 API의 포인터 및 물리적인 메모리의 시작 주소를 갖는다.
sfree()는 메모리의 반환을 수행하는 함수로써, 제 1 API에 의해 출력된 핸들인 id가 메모리에서 더 이상 사용되지 않도록 한다.
도 5는 본 발명의 다른 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.
전술한 바와 같이, 제 4 API 및 제 5 API는 메모리(500)의 보호 및 공유의 역할을 수행하는데, 이에 대한 프로그래밍 코드의 예는 다음과 같다.
id = salloc(size);
value = sread(id, offset);
swrite(id, offset, value);
sfree(id);
여기서, sread()는 제 4 API로서, 제 1 API인 salloc() 함수에 의해 할당된 메모리(550)에 저장되어 있는 데이터에 대한 읽기 연산을 수행한다. offset은 읽기 연산의 대상이 되는 데이터의 크기를 의미한다. 이 때, sread()는 해당 동적 할당 메모리 영역(550)에 대한 접근 권한이 있는지 확인하여 접근 권한이 있는 경우에만 읽기 연산을 수행하고, 접근 권한이 없는 경우에는 제어 권한을 운영 체계로 넘겨서 메모리 접근 오류가 발생하도록 한다.
또한, swrite()는 제 5 API로서, 쓰기 연산을 수행하여 제 1 API인 salloc() 함수에 의해 할당된 메모리(500)에 소정의 데이터를 저장하는 역할을 한다. 위의 프로그래밍 코드에서, swrite()의 파라미터로서 sread()에 의해 읽혀진 데이터가 사용되고 있으나 별도의 데이터가 swrite()의 파라미터로 사용될 수도 있다.
swrite() 또한 sread()와 마찬가지로 해당 메모리 영역(550)에 대한 접근 권한이 있는지 확인하여 접근 권한이 있는 경우에만 쓰기 연산을 수행하고, 접근 권한이 없는 경우에는 제어 권한을 운영 체계로 넘겨서 메모리 접근 오류가 발생하도록 한다.
전술한 바와 같이, 제 4 API 및 제 5 API는 접근 권한 상태 확인부(232)에 포함될 수 있으며, 접근 권한 상태 확인부(232)에 의하여 읽기 연산 및 쓰기 연산에 대한 동적 할당 메모리 영역(550)으로의 접근 권한 상태 확인이 수행된다.
도 6은 본 발명의 실시예에 따른 가상 메모리를 제어하는 과정을 나타낸 흐름도이다.
가상 메모리를 제어하기 위하여 동적 할당 메모리 생성부(210)는 동적 할당 메모리 영역을 생성한다(S610). 가상 메모리 제어 장치(200)는 동적 할당 메모리 영역에 대한 참조 주소 및 참조 주소의 변위를 이용하여 가상 메모리를 제어할 수 있으며 별도로 정의된 API를 이용하여 가상 메모리를 제어할 수 있다.
동적 할당 메모리 생성부(210)는 프로그래밍 언어인 C의 malloc() 함수와 같이 동적으로 메모리를 할당할 수 있는 수단을 이용하여 동적 할당 메모리를 생성한다. 이 때, 참조 주소 및 참조 주소의 변위를 이용하여 동적 할당 메모리 영역을 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역의 주소를 출력하고, 별도로 정의된 API를 이용하여 동적 할당 메모리를 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역에 대한 핸들을 출력한다.
동적 할당 메모리 영역이 생성되면, 위치 확인부(220)는 메모리의 영역 중 동적으로 할당 받은 동적 할당 메모리 영역에 대한 위치 정보를 확인한다(S620). 동적 할당 메모리 영역에 대한 위치 정보 확인은 응용 프로그램의 컴파일 시에 수행될 수 있으며 별도로 정의된 API를 이용하여 응용 프로그램의 런타임 시에 수행될 수도 있다.
확인된 동적 할당 메모리 영역에 대한 위치 정보는 제어부(250)로 전달되고, 제어부(250)의 제어 명령에 따라 저장부(240)는 전달 받은 동적 할당 메모리 영역에 대한 위치 정보를 저장한다(S630). 여기서, 동적 할당 메모리 영역에 대한 위치 정보는 전술한 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 포함한다. 여기서, 저장부(240)에 저장된 참조 주소의 변위는 동적 할당 메모리 영역의 크기보다 작다.
그리고, 상태 확인부(230)는 시스템의 상태를 확인한다(S640). 즉, 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛의 사용률을 확인하는 것이다.
그리고, 메모리 관리부(270)는 상태 확인부(230)에 의해 확인된 결과에 따라 메모리에 대한 관리 작업을 수행한다(S650). 여기서, 관리 작업은 컴팩션, 스와핑 및 압축을 포함한다.
메모리 관리부(270)에 포함된 컴팩션 수행부(271), 스와핑 수행부(272) 및 압축 수행부(273)는 해당 관리 작업을 수행하면서 관리 작업에 따라 변경된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기를 저장부(240)에 저장한다(S660).
그리고, 메모리 인터페이스부(260)는 저장부(240)에 저장된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 동적 할당 메모리 영역에 대한 접근을 수행한다(S670).
이 때, 접근 권한에 따라 동적 할당 메모리 영역에 대한 접근이 제한될 수도 있다. 즉, 접근 권한이 없는 경우에는 제어 권한이 운영 체계로 넘겨져서 메모리 접근 오류가 발생할 수 있는 것이다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 가상 메모리를 제어하는 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 메모리 관리 유닛(Memory Management Unit)의 기능을 소프트웨어적으로 제공함으로써 휴대용 시스템에서 메모리 관리에 소요되는 전력 소모를 줄일 수 있는 장점이 있다.
둘째, 중앙 제어 유닛에 메모리 관리 유닛을 탑재하지 않고 메모리를 관리함으로써 제조 단가를 절감할 수 있는 장점도 있다.

Claims (12)

  1. 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 상태 확인부;
    상기 상태 확인부의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 메모리 관리부;
    상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 위치 확인부; 및
    상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 메모리 인터페이스부를 포함하는 가상 메모리를 제어하는 장치.
  2. 제 1항에 있어서,
    상기 동적 할당 메모리 영역에 대한 위치 정보는 상기 동적 할당 메모리 영역에 대한 포인터를 포함하는 참조 주소, 상기 참조 주소의 변위, 상기 동적 할당 메모리 영역에 대한 물리적인 메모리의 주소 및 상기 동적 할당 메모리 영역의 크기 중 적어도 하나를 포함하는 가상 메모리를 제어하는 장치.
  3. 제 2항에 있어서,
    상기 동적 할당 메모리 영역에 대한 위치 정보를 저장하는 저장부를 더 포함하는 가상 메모리를 제어하는 장치.
  4. 제 1항에 있어서,
    상기 태스크는 기본 블록(Basic Block) 및 함수를 포함하는 가상 메모리를 제어하는 장치.
  5. 제 1항에 있어서,
    상기 관리 작업은 컴팩션(Compaction), 스와핑(Swapping) 및 압축(Compression)을 포함하는 가상 메모리를 제어하는 장치.
  6. 제 1항에 있어서,
    상기 위치 확인부, 상기 상태 확인부 및 상기 메모리 인터페이스부는 별도로 정의된 해당 응용 프로그램 인터페이스(Application Program Interface)를 포함하는 가상 메모리를 제어하는 장치.
  7. (a) 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 단계;
    (b) 상기 (a) 단계의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수 행하는 단계;
    (c) 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 단계; 및
    (d) 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 단계를 포함하는 가상 메모리를 제어하는 방법.
  8. 제 7항에 있어서,
    상기 동적 할당 메모리 영역에 대한 위치 정보는 상기 동적 할당 메모리 영역에 대한 포인터를 포함하는 참조 주소, 상기 참조 주소의 변위, 상기 동적 할당 메모리 영역에 대한 물리적인 메모리의 주소 및 상기 동적 할당 메모리 영역의 크기 중 적어도 하나를 포함하는 가상 메모리를 제어하는 방법.
  9. 제 8항에 있어서,
    상기 동적 할당 메모리 영역에 대한 위치 정보를 저장하는 단계를 더 포함하는 가상 메모리를 제어하는 방법.
  10. 제 7항에 있어서,
    상기 태스크는 기본 블록(Basic Block) 및 함수를 포함하는 가상 메모리를 제어하는 방법.
  11. 제 7항에 있어서,
    상기 관리 작업은 컴팩션(Compaction), 스와핑(Swapping) 및 압축(Compression)을 포함하는 가상 메모리를 제어하는 방법.
  12. 제 7항에 있어서,
    상기 (a) 단계, 상기 (c) 단계 및 상기 (d) 단계는 별도로 정의된 해당 응용 프로그램 인터페이스(Application Program Interface)를 통하여 수행되는 단계를 포함하는 가상 메모리를 제어하는 방법.
KR1020050107146A 2005-11-09 2005-11-09 가상 메모리를 제어하는 장치 및 방법 KR100735560B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050107146A KR100735560B1 (ko) 2005-11-09 2005-11-09 가상 메모리를 제어하는 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050107146A KR100735560B1 (ko) 2005-11-09 2005-11-09 가상 메모리를 제어하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20070049885A true KR20070049885A (ko) 2007-05-14
KR100735560B1 KR100735560B1 (ko) 2007-07-04

Family

ID=38273697

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107146A KR100735560B1 (ko) 2005-11-09 2005-11-09 가상 메모리를 제어하는 장치 및 방법

Country Status (1)

Country Link
KR (1) KR100735560B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011019177A2 (ko) * 2009-08-11 2011-02-17 주식회사 안철수연구소 가상 환경을 이용한 데이터 보호 방법과 장치
KR101233664B1 (ko) * 2010-12-17 2013-02-15 황준일 멀티 코어 시스템에서 메모리 셔플링을 이용한 메모리 해킹 방지 방법 및 장치
CN103885838A (zh) * 2014-03-27 2014-06-25 北京大学 一种获取虚拟机内存工作集的方法及内存优化分配方法
US9116631B2 (en) 2012-12-11 2015-08-25 Samsung Electronics Co., Ltd. Mobile device and method of managing data using swap thereof
US9229651B2 (en) 2012-12-17 2016-01-05 Samsung Electronics Co., Ltd Method and apparatus for managing memory in virtual machine environment

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030071299A (ko) * 2002-02-28 2003-09-03 주식회사 엘지이아이 메모리 관리 장치

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011019177A2 (ko) * 2009-08-11 2011-02-17 주식회사 안철수연구소 가상 환경을 이용한 데이터 보호 방법과 장치
WO2011019177A3 (ko) * 2009-08-11 2011-05-19 주식회사 안철수연구소 가상 환경을 이용한 데이터 보호 방법과 장치
US8782798B2 (en) 2009-08-11 2014-07-15 Ahnlab, Inc. Method and apparatus for protecting data using a virtual environment
KR101233664B1 (ko) * 2010-12-17 2013-02-15 황준일 멀티 코어 시스템에서 메모리 셔플링을 이용한 메모리 해킹 방지 방법 및 장치
US9116631B2 (en) 2012-12-11 2015-08-25 Samsung Electronics Co., Ltd. Mobile device and method of managing data using swap thereof
US9229651B2 (en) 2012-12-17 2016-01-05 Samsung Electronics Co., Ltd Method and apparatus for managing memory in virtual machine environment
CN103885838A (zh) * 2014-03-27 2014-06-25 北京大学 一种获取虚拟机内存工作集的方法及内存优化分配方法

Also Published As

Publication number Publication date
KR100735560B1 (ko) 2007-07-04

Similar Documents

Publication Publication Date Title
US10296388B2 (en) Object optimal allocation device, method and program
JP5255348B2 (ja) クラッシュダンプ用のメモリアロケーション
EP1626338B1 (en) System and method for providing exceptional flow control in protected code through watchpoints
US10496534B2 (en) Manual memory management using lazy patching
US8453132B2 (en) System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US11768757B2 (en) Kernel debugging system and method
EP3577565B1 (en) Garbage collector
KR100735560B1 (ko) 가상 메모리를 제어하는 장치 및 방법
US20090228875A1 (en) Method and System for Reducing Disk Allocation by Profiling Symbol Usage
JP2011186561A (ja) メモリ管理装置
US20120198184A1 (en) Memory management method, computer system and computer readable medium
US20070300210A1 (en) Compiling device, list vector area assignment optimization method, and computer-readable recording medium having compiler program recorded thereon
US10628301B1 (en) System and method for optimizing write amplification of non-volatile memory storage media
Kim et al. Compiler-assisted GPU thread throttling for reduced cache contention
Cicotti et al. Adamant: Tools to capture, analyze, and manage data movement
US10379827B2 (en) Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment
JP5871589B2 (ja) 情報処理装置、配列の初期サイズ調整プログラム及び方法
Mück et al. Run-time scratch-pad memory management for embedded systems
Xue et al. Dapper: An adaptive manager for large-capacity persistent memory
Greenspan LLAMA-automatic memory allocations: an LLVM pass and library for automatically determining memory allocations
KR20060035077A (ko) 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법
Bakita et al. Enabling GPU memory oversubscription via transparent paging to an NVMe SSD
KR100220496B1 (ko) 프로세서 및 정보 처리 장치
KR101140522B1 (ko) 객체 관리 시스템 및 방법
Leupers Register allocation for common subexpressions in DSP data paths

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
G170 Publication of correction
FPAY Annual fee payment

Payment date: 20100528

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee