KR100735560B1 - Apparatus and method for controlling virtual memory - Google Patents

Apparatus and method for controlling virtual memory Download PDF

Info

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

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)의 기능을 소프트웨어적으로 제공하는 가상 메모리를 제어하는 장치 및 방법에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an apparatus and method for controlling virtual memory, comprising: memory swapping, memory compression, memory compaction, memory sharing, memory protection, and the like. An apparatus and method for controlling a virtual memory that provides a function of a memory management unit in software.

본 발명의 실시예에 따른 가상 메모리를 제어하는 장치는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 상태 확인부와, 상기 상태 확인부의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 메모리 관리부와, 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 위치 확인부 및 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 메모리 인터페이스부를 포함한다.According to an embodiment of the present invention, an apparatus for controlling a virtual memory includes a memory usage rate, an access right state of a dynamic allocation memory area, a state of a task included in the dynamic allocation memory area, and a utilization rate of a central processing unit. A status checker for checking at least one of the memory manager, a memory manager for performing a management operation on the memory according to a result of the check of the status checker, and the dynamic allocation memory area changed according to a result of the management operation among the areas of the memory; And a memory interface unit for accessing the dynamic allocation memory area with reference to the location information for the identified dynamic allocation memory area.

가상 메모리, 컴팩션, 스와핑, 압축, 응용 프로그램 인터페이스 Virtual memory, compaction, swapping, compression, application program interface

Description

가상 메모리를 제어하는 장치 및 방법{Apparatus and method for controlling virtual memory}Apparatus and method for controlling virtual memory

도 1은 종래의 메모리 영역을 나타낸 도면이다.1 is a diagram illustrating a conventional memory area.

도 2는 본 발명의 실시예에 따른 가상 메모리를 제어하는 장치를 나타낸 블록도이다.2 is a block diagram illustrating an apparatus for controlling a virtual memory according to an embodiment of the present invention.

도 3은 본 발명의 실시예에 따른 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.3 is a diagram illustrating access to a dynamic allocation memory region using a reference address and a displacement of the reference address according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.4 illustrates access to a dynamic allocation memory region using a separately defined application program interface according to an embodiment of the present invention.

도 5는 본 발명의 다른 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.5 is a diagram illustrating access to a dynamic allocation memory region using a separately defined application program interface according to another embodiment of the present invention.

도 6은 본 발명의 실시예에 따른 가상 메모리를 제어하는 과정을 나타낸 흐름도이다.6 is a flowchart illustrating a process of controlling a virtual memory according to an embodiment of the present invention.

<도면의 주요 부분에 관한 부호의 설명><Explanation of symbols on main parts of the drawings>

210 : 동적 할당 메모리 생성부 220 : 위치 확인부210: dynamic allocation memory generation unit 220: location check unit

230 : 상태 확인부 240 : 저장부230: status check unit 240: storage unit

250 : 제어부 260 : 메모리 인터페이스부250: control unit 260: memory interface unit

270 : 메모리 관리부270: memory management unit

본 발명은 가상 메모리를 제어하는 장치 및 방법에 관한 것으로서, 더욱 상세하게는 메모리 스와핑(Swapping), 메모리 압축(Compression), 메모리 컴팩션(Compaction), 메모리 공유(Sharing) 및 메모리 보호(Protection) 등을 수행하는 메모리 관리 유닛(MMU; Memory Management Unit)의 기능을 소프트웨어적으로 제공하는 가상 메모리를 제어하는 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for controlling virtual memory, and more particularly, to memory swapping, memory compression, memory compaction, memory sharing, memory protection, and the like. The present invention relates to an apparatus and method for controlling a virtual memory that provides a software function of a memory management unit (MMU).

최근 가정 및 사무 환경이 보다 지능화됨에 따라 유비쿼터스(Ubiquitous) 컴퓨팅 장치들의 개발이 활발하게 진행되고 있다. 대표적인 유비쿼터스 컴퓨터인 무선 센서 노드는 내장형 프로세서, 메모리, 센서, 작동기 그리고 무선 통신 장치로 구성된다. 이러한 무선 센서 노드는 지능형 아파트 또는 기타 건물에 설치되어 해당 시설의 다양한 지점의 온도, 소리, 움직임 등을 측정하여 자체적으로 구성된 무선 통신망을 통해 측정된 데이터를 기지국으로 전송한다. 기지국에서는 전달받은 데이터를 분석하여 시설 내부의 화재 또는 비인가자의 침입을 감지하거나 냉난방기 등을 효율적으로 제어한다. 하지만, 무선 센서 노드와 같은 휴대용 시스템은 배터리를 주전원으로 사용하므로 전원 공급에 대한 제약 사항이 존재한다. 따라서, 이러한 시스템에는 저전력 소프트웨어 기법이 저전력 하드웨어 기법과 함께 사용되고 있다.Recently, as the home and office environment becomes more intelligent, the development of ubiquitous computing devices is actively progressing. A typical ubiquitous computer, a wireless sensor node consists of an embedded processor, memory, sensors, actuators, and wireless communication devices. These wireless sensor nodes are installed in intelligent apartments or other buildings to measure the temperature, sound, and movement of various points in the facility, and transmit the measured data to the base station through its own wireless network. The base station analyzes the received data to detect fire or unauthorized intrusion inside the facility or to efficiently control air conditioners. However, portable systems such as wireless sensor nodes use batteries as the main power source, so there are power supply limitations. Thus, low power software techniques are used in conjunction with low power hardware techniques in such systems.

휴대용 시스템에서 사용되는 소프트웨어는 정해진 태스크의 집합에 대한 한정된 입력을 처리하는 역할을 수행하기 때문에 정적인 스케줄링 정책과 정적인 메모리 할당 방식을 사용한다. 하지만, 휴대용 시스템이 보다 지능화되고 네트워크화됨에 따라, 휴대용 시스템은 그 상태나 주변 환경에 맞추어 동작하기 위하여 보다 큰 태스크의 집합 및 가변적인 데이터의 양을 제어하게 되었다.Software used in portable systems uses a static scheduling policy and a static memory allocation scheme because it handles a limited input for a given set of tasks. However, as portable systems become more intelligent and networked, the portable systems control a larger set of tasks and varying amounts of data to operate according to their status or surrounding environment.

가상 메모리(Virtual Memory)는 컴퓨터와 운영체계에 의해 구현되는 개념으로서, 실제로는 메모리가 아니지만 메모리처럼 이용되는 것을 의미한다. 일반적으로 가상 메모리는 하드 디스크의 일부분이 할당되어 사용되는데, 가상 메모리에 대응하는 메모리는 기본 메모리로서 램(RAM)이 사용된다. 즉, 컴퓨터는 작업 공간을 확보하기 위하여 현재 작업할 자료를 기본 메모리에 적재하고, 현재 작업하지 않는 자료를 가상 메모리에 적재한다. 그러다가, 가상 메모리에 적재된 자료가 필요하면 다시 기본 메모리에 적재하는 과정을 반복하는 것인데 이에 따라, 작업 속도의 감소를 방지할 수 있게 된다. 여기서, 기본 메모리에서 가상 메모리로, 가상 메모리에서 기본 메모리로 자료를 이동시키는 것을 스와핑(swapping)이라 한다.Virtual memory is a concept implemented by computers and operating systems, which means that it is not actually a memory but used as a memory. In general, virtual memory is used by allocating a portion of a hard disk, and memory corresponding to virtual memory uses RAM as a basic memory. In other words, in order to secure a working space, the computer loads data to be worked on in the main memory, and loads data not currently on the virtual memory. Then, if the data loaded in the virtual memory is needed, the process of loading it back into the main memory is repeated, thereby preventing a decrease in the work speed. Here, moving data from the basic memory to the virtual memory and from the virtual memory to the basic memory is called swapping.

여기서, 데이터가 읽혀지는 단위를 페이지(page)라고 하며 그 크기는 보통 1 kB에서 수 MB까지 여러 가지가 있다. 가상 메모리를 사용하면 실제로 소요되는 물리적인 저장 공간의 크기를 절약하고, 전체적인 시스템 처리 속도를 향상시킬 수 있다.Here, the unit in which data is read is called a page, and there are various sizes of 1 kB to several MB. Using virtual memory can reduce the amount of physical storage space actually needed and speed up the overall system throughput.

메모리 관리 유닛이란, 가상 주소를 물리 주소로 변환해 주는 하드웨어 장치로서, 사용자 프로세스에서 생성된 논리 주소가 메모리로 접근할 때 메모리 관리 유닛은 재배치 레지스터(relocation register)를 이용하여 생성된 논리 주소(가상 주소)가 물리 메모리의 영역(물리 주소)을 가리키게 한다.A memory management unit is a hardware device that translates a virtual address into a physical address. When a logical address generated by a user process accesses a memory, the memory management unit uses a relocation register to generate a logical address (virtual address). Address) points to an area (physical address) of physical memory.

도 1은 종래의 메모리 영역을 나타낸 도면으로서, 메모리 영역(10)은 코드(code) 영역(14), 데이터(data) 영역(13), 힙(heap) 영역(11) 및 스택(stack) 영역(12)을 포함하여 구성된다. 코드 영역(14)은 코드 자체를 구성하는 메모리 영역이다. 즉, 코드 영역(14)은 응용 프로그램 명령이 위치하는 곳으로서 기계어로 제어되는 메모리 영역이며, 하위 메모리라고 부르는 가장 낮은 쪽에 있는 메모리 영역이다.1 is a diagram illustrating a conventional memory region, in which a memory region 10 includes a code region 14, a data region 13, a heap region 11, and a stack region. It comprises 12. The code area 14 is a memory area constituting the code itself. In other words, the code area 14 is a memory area controlled by a machine language where application program instructions are located, and is the lowest memory area called a lower memory.

데이터 영역(13)에는 데이터가 보관된다. 예를 들어, 전역(global) 변수, 정적(static) 변수 및 그 외 초기화된 각종 배열과 구조, 자료들이 저장된다.Data is stored in the data area 13. For example, global variables, static variables, and other initialized arrays, structures, and data are stored.

힙 영역(11)은 프로그래머가 스스로 할당한 메모리 영역을 의미한다. 예를 들어, 프로그래밍 언어인 C의 함수 중에 메모리를 할당하는 함수인 malloc() 등이 사용되어 배정된 메모리가 힙 영역(11)에 해당하는 것이다. 메모리 모델에 따라서 사용하는 함수는 달라질 수 있는데, 메모리가 할당될 때에는 malloc(), farmalloc() 함수가 사용되고 재 배정될 때에는 realloc() 함수가 사용되며 메모리가 해제될 때에는 free() 또는 farfree() 함수가 사용될 수 있다.The heap area 11 refers to a memory area allocated by a programmer by itself. For example, among the functions of the programming language C, malloc (), which allocates memory, is used, and the allocated memory corresponds to the heap region 11. Depending on the memory model, the functions used may vary. Malloc () and farmalloc () functions are used when memory is allocated, realloc () is used when reallocated, and free () or farfree () when memory is freed. Functions can be used.

스택 영역(12)은 응용 프로그램이 자동으로 사용하는 임시 메모리 영역에 해당된다. 즉, 자동 변수를 저장하거나 함수로 인수를 보낼 때, 복귀 번지를 저장할 때 등에 사용된다.The stack area 12 corresponds to a temporary memory area automatically used by an application program. That is, it is used when saving an automatic variable, sending an argument to a function, or saving a return address.

스택과 힙은 사용 용도에 따라서 조금씩 다른 의미로 사용된다. 예컨대, 버 퍼 메모리에서 스택과 힙이라는 용어를 사용하면 버퍼 메모리를 구성하는 두 가지 방식을 의미한다. 이 때, 스택은 후입선출(LIFO; Last In First Out) 방식의 버퍼를 말하고, 힙은 선입선출(FIFO; First In First Out) 방식의 버퍼를 의미한다.The stack and heap are used differently depending on the purpose of use. For example, the terms stack and heap in buffer memory refer to two ways of configuring buffer memory. In this case, the stack refers to a Last In First Out (LIFO) buffer, and the heap refers to a First In First Out (FIFO) buffer.

스택의 경우 후입선출 방식이므로 동작 과정이 푸시(push)와 팝(pop)의 과정으로 이루어진다. 이를 통해 동작이 한쪽 끝(top)에서만 발생한다. 다시 말해, 자료가 입력되는 입구와 출력되는 출구가 하나인 것이다. 이 때문에 맨 마지막에 입력된 것이 제일 먼저 출력된다.In the case of the stack, the last-in, first-out method is a push and pop process. This allows the action to occur only at one top. In other words, there is one inlet and one outlet. Because of this, the last input is output first.

사용자가 동적으로 메모리를 할당하면 힙 영역이 할당되는데, 힙 영역 할당 방법은 물리 메모리(하드 디스크)만을 사용하는 방법으로서, 빈번한 메모리 할당 및 해제에 따라 내부 파편의 증가를 가져올 수 있다.If the memory is dynamically allocated by the user, the heap area is allocated. The heap area allocation method uses only physical memory (hard disk), which can increase internal fragmentation due to frequent memory allocation and deallocation.

따라서, 휴대용 시스템에는 메모리 관리 유닛이 탑재된 중앙 처리 유닛(CPU; Central Processing Unit)이 전술한 가상 메모리를 이용하여 메모리 영역을 관리한다. 그러나, 메모리 관리 유닛이 탑재된 중앙 처리 유닛이나 큰 용량의 메모리와 같은 하드웨어적인 개선은 휴대용 시스템의 성능 향상을 가져오는 반면, 보다 많은 전력 공급의 필요 및 제조 단가의 상승을 야기시킨다.Therefore, in a portable system, a central processing unit (CPU) equipped with a memory management unit manages a memory area using the above-described virtual memory. However, hardware improvements such as a central processing unit equipped with a memory management unit or a large capacity of memory result in improved performance of the portable system, while requiring more power supply and an increase in manufacturing cost.

따라서, 소프트웨어적으로 메모리 관리 유닛의 기능을 수행할 수 있게 하는 방법의 등장이 요구된다.Thus, there is a need for the emergence of a method that makes it possible to perform the functions of the memory management unit in software.

본 발명은 메모리 스와핑(Swapping), 메모리 압축(Compression), 메모리 컴팩션(Compaction), 메모리 공유(Sharing) 및 메모리 보호(Protection) 등을 수행하 는 메모리 관리 유닛(Memory Management Unit)의 기능을 소프트웨어적으로 제공하는데 그 목적이 있다.The present invention provides a software management function of a memory management unit that performs memory swapping, memory compression, memory compaction, memory sharing, and memory protection. Its purpose is to provide the information.

본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects which are not mentioned will be clearly understood by those skilled in the art from the following description.

상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 가상 메모리를 제어하는 장치는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 상태 확인부와, 상기 상태 확인부의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 메모리 관리부와, 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 위치 확인부 및 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 메모리 인터페이스부를 포함한다.In order to achieve the above object, an apparatus for controlling a virtual memory according to an embodiment of the present invention, the utilization rate of the memory, the access authority status to the dynamic allocation memory area, the status of the tasks included in the dynamic allocation memory area and the central processing unit A status checking unit for checking at least one of utilization rates of a central processing unit, a memory managing unit for performing a management operation on the memory according to a result of the checking of the state checking unit, and a result of the management operation among areas of the memory. And a location determiner for confirming location information of the dynamically allocated memory area, and a memory interface unit for accessing the dynamically allocated memory area with reference to the identified location information for the dynamically allocated memory area.

본 발명의 실시예에 따른 가상 메모리를 제어하는 방법은 (a) 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 단계와, (b) 상기 (a) 단계의 확인 결과에 따라 상기 메모리에 대한 관리 작업을 수행하는 단계와, (c) 상기 메모리의 영역 중 상기 관리 작 업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 단계 및 (d) 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 단계를 포함한다.According to an embodiment of the present invention, a method of controlling a virtual memory may include (a) utilization of a memory, an access right state of a dynamic allocation memory area, a state of a task included in the dynamic allocation memory area, and a central processing unit. (B) performing a management operation on the memory according to the verification result of step (a), and (c) performing the management operation on the memory area. Confirming location information of the dynamically allocated memory area that has been changed according to a result; and (d) performing access to the dynamically allocated memory area with reference to the location information of the identified dynamic allocation memory area. .

기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.Specific details of other embodiments are included in the detailed description and the drawings.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention and methods for achieving them will be apparent with reference to the embodiments described below in detail with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but can be implemented in various different forms, and only the embodiments make the disclosure of the present invention complete, and the general knowledge in the art to which the present invention belongs. It is provided to fully inform the person having the scope of the invention, which is defined only by the scope of the claims. Like reference numerals refer to like elements throughout.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하 기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. It will be appreciated that the combination of each block in the accompanying block diagram and each step in the flowchart may be performed by computer program instructions. These computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment such that instructions executed through the processor of the computer or other programmable data processing equipment may not be included in each block or flowchart of the block diagram. It will create means for performing the functions described in each step. These computer program instructions may be stored in a computer usable or computer readable memory that can be directed to a computer or other programmable data processing equipment to implement functionality in a particular manner, so that the computer program or computer readable instructions can be stored therein. It is also possible for the instructions stored in the memory to produce an article of manufacture containing an instruction means for performing the functions described in each block or flow chart step of the block diagram. Computer program instructions It is also possible to mount on a computer or other programmable data processing equipment, so a series of operating steps are performed on the computer or other programmable data processing equipment to create a computer-implemented process to perform the computer or other programmable data processing equipment. It is also possible for the instructions to provide steps for performing the functions described in each block of the block diagram and in each step of the flowchart.

또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.In addition, each block or step may represent a portion of a module, segment or code that includes one or more executable instructions for executing a specified logical function (s). It should also be noted that in some alternative implementations, the functions noted in the blocks or steps may occur out of order. For example, the two blocks or steps shown in succession may in fact be executed substantially concurrently or the blocks or steps may sometimes be performed in the reverse order, depending on the functionality involved.

도 2는 본 발명의 실시예에 따른 가상 메모리를 제어하는 장치를 나타낸 블록도로서, 가상 메모리를 제어하는 장치(이하, 가상 메모리 제어 장치라 한다 )(200)는 동적 할당 메모리 생성부(210), 위치 확인부(220), 상태 확인부(230), 저장부(240), 제어부(250), 메모리 관리부(270) 및 메모리 인터페이스부(260)를 포함하여 구성된다.2 is a block diagram illustrating an apparatus for controlling a virtual memory according to an exemplary embodiment of the present invention, wherein an apparatus for controlling virtual memory (hereinafter, referred to as a virtual memory control apparatus) 200 is a dynamic allocation memory generator 210. It includes a location checker 220, a status checker 230, a storage unit 240, a control unit 250, a memory management unit 270 and a memory interface unit 260.

가상 메모리 제어 장치(200)는 동적 할당 메모리 영역에 대한 참조 주소 및 참조 주소의 변위를 이용하여 가상 메모리를 제어할 수 있으며 별도로 정의된 응용 프로그램 인터페이스(Application Program Interface; 이하, API라 한다)를 이용하여 가상 메모리를 제어할 수 있다.The virtual memory control apparatus 200 may control the virtual memory by using the reference address and the displacement of the reference address with respect to the dynamic allocation memory area, and uses a separately defined application program interface (hereinafter, referred to as an API). Virtual memory can be controlled.

동적 할당 메모리 생성부(210)는 프로그래밍 언어인 C의 malloc() 함수와 같이 동적으로 메모리를 할당할 수 있는 수단을 이용하여 동적 할당 메모리를 생성한다. 이 때, 참조 주소 및 참조 주소의 변위를 이용하여 동적 할당 메모리 영역을 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역의 주소를 출력하고, 별도로 정의된 API를 이용하여 동적 할당 메모리를 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역에 대한 핸들을 출력한다.The dynamic allocation memory generation unit 210 generates dynamic allocation memory using a means for dynamically allocating memory, such as the malloc () function of C, which is a programming language. In this case, when generating the dynamic allocation memory region by using the reference address and the displacement of the reference address, the dynamic allocation memory generating unit 210 outputs the address of the generated memory region, and uses the separately defined API to allocate the dynamic allocation memory region. When generating the dynamic allocation memory generator 210 outputs a handle to the generated memory area.

위치 확인부(220)는 메모리의 영역 중 동적으로 할당 받은 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 역할을 한다. 동적 할당 메모리 영역은 힙 영역의 일부로 응용 프로그램이 실행 중에 할당된 영역으로서, 위치 확인부(220)는 동적 할당 메모리 영역의 주소를 확인하는 것이다. 위치 확인부(220)는 응용 프로그램의 컴파일 시에 동작하여 동적 할당 메모리 영역에 대한 위치 정보를 확인할 수 있으며, 별도로 정의된 API를 이용하여 응용 프로그램의 런타임 시에 동작하여 동적 할당 메모리 영역에 대한 위치 정보를 확인할 수도 있다.The location checker 220 checks location information on a dynamically allocated memory area dynamically allocated among memory areas. The dynamic allocation memory area is an area allocated by an application program as part of a heap area, and the positioning unit 220 checks the address of the dynamic allocation memory area. The location checker 220 may operate at the time of compiling the application to check the location information of the dynamic allocation memory area. The location checker 220 may operate at the runtime of the application using a separately defined API to locate the dynamic allocation memory area. You can also check the information.

여기서, 위치 확인부(220)에 의해 확인되는 동적 할당 메모리 영역에 대한 위치 정보에는 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 포함한다.Here, the location information on the dynamic allocation memory area checked by the location checking unit 220 includes at least one of a reference address, a displacement of the reference address, an address and a size of the physical memory.

상태 확인부(230)는 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률을 확인하는 역할을 한다. The state checking unit 230 checks the utilization rate of the memory, the access authority state of the dynamic allocation memory area, the state of the task included in the dynamic allocation memory area, and the utilization rate of the central processing unit.

이를 위하여, 상태 확인부(230)는 메모리 상태 확인부(231), 접근 권한 상태 확인부(232), 태스크 상태 확인부(233) 및 CPU 상태 확인부(234)를 포함할 수 있다.To this end, the status checker 230 may include a memory status checker 231, an access authority status checker 232, a task status checker 233, and a CPU status checker 234.

여기서, 태스크 상태 확인부(233)에 의해 확인되는 태스크는 기본 블록(Basic Block) 및 함수를 포함할 수 있다.Here, the task checked by the task status checker 233 may include a basic block and a function.

저장부(240)는 위치 확인부(220)에 의해 확인된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 저장한다.The storage unit 240 stores at least one of a reference address, a displacement of the reference address, a physical memory address, and a size of the dynamic allocation memory area identified by the location checker 220.

여기서, 변위는 동적 할당 메모리 영역의 크기보다 작은 값을 갖는다. 즉, 참조 주소 및 변위에 의하여 대응되는 동적 할당 메모리 영역이 참조될 수 있는 것이다.Here, the displacement has a value smaller than the size of the dynamic allocation memory area. That is, the dynamic allocation memory region corresponding to the reference address and the displacement may be referred to.

저장부(240)는 하드 디스크, 플래시 메모리, CF 카드(Compact Flash Card), SD 카드(Secure Digital Card), SM 카드(Smart Media Card), MMC 카드(Multimedia Card) 또는 메모리 스틱(Memory Stick) 등 정보의 입출력이 가능한 모듈로서 장치 의 내부에 구비되어 있을 수도 있고, 별도의 장치에 구비되어 있을 수도 있다.The storage unit 240 may include a hard disk, a flash memory, a compact flash card (CF), a secure digital card (SD), a smart card (SM), a multimedia card, a memory stick, a memory stick, or the like. As a module capable of inputting / outputting information, the module may be provided inside the device or may be provided in a separate device.

메모리 관리부(270)는 상태 확인부(230)에 의해 확인된 결과에 따라 메모리에 대한 관리 작업을 수행한다. 여기서, 관리 작업은 컴팩션(Compaction), 스와핑(Swapping) 및 압축(Compression)을 포함한다. 이를 위하여, 메모리 관리부(270)는 컴팩션 수행부(271), 스와핑 수행부(272) 및 압축 수행부(273)를 포함할 수 있다.The memory manager 270 performs management on the memory according to the result confirmed by the status checker 230. Here, the management work includes compaction, swapping, and compression. To this end, the memory management unit 270 may include a compaction execution unit 271, a swapping execution unit 272, and a compression execution unit 273.

컴팩션 수행부(271), 스와핑 수행부(272) 및 압축 수행부(273)는 관리 작업을 수행하면서 관리 작업에 따라 변경된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기를 저장부(240)에 저장한다.The compaction execution unit 271, the swapping execution unit 272, and the compression execution unit 273 perform a management operation, and the reference address, the displacement of the reference address, and the physical memory of the dynamic allocation memory area changed according to the management operation are performed. The address and size are stored in the storage unit 240.

메모리 인터페이스부(260)는 메모리 관리부(270)에 의해 관리 작업이 수행된 동적 할당 메모리 영역에 대한 접근을 수행한다. 메모리 인터페이스부(260)는 컴파일 시에 분석된 참조 주소 및 참조 주소의 변위를 참조하여 동적 할당 메모리 영역으로의 접근을 수행할 수 있고, 메모리 인터페이스부(260)에 포함된 별도로 정의된 API가 동적 할당 메모리 영역의 물리적인 메모리의 주소 및 크기를 참조하여 동적 할당 메모리 영역으로의 접근을 수행할 수도 있다.The memory interface unit 260 performs access to the dynamic allocation memory area in which the management operation is performed by the memory manager 270. The memory interface unit 260 may perform access to the dynamic allocation memory area by referring to the reference address and the displacement of the reference address analyzed at compile time, and a separately defined API included in the memory interface unit 260 may be dynamically The access to the dynamic allocated memory region may be performed by referring to the address and the size of the physical memory of the allocated memory region.

컴팩션이 수행된 경우 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근은 동적 할당 메모리 영역의 이동 거리만큼 참조 주소 및 변위를 수정함으로써 수행될 수 있다. 즉, 컴팩션 수행부(271)는 힙 영역에서 발생된 파편을 제거하기 위하여 동적 할당 메모리 영역에 대한 컴팩션을 수행하면서 참조 주소를 수정하여 저장부(240)에 저장한다. 이에 따라, 메모리 인터페이스부(260)는 컴팩션이 완료된 후에도 저장된 참조 주소 및 변위를 이용하여 동적 할당 메모리 영역으로 접근할 수 있게 된다.When compaction is performed, access to the dynamic allocation memory region using the reference address and the displacement of the reference address may be performed by modifying the reference address and the displacement by the moving distance of the dynamic allocation memory region. That is, the compaction performing unit 271 modifies the reference address and stores it in the storage unit 240 while performing compaction on the dynamic allocation memory area to remove debris generated in the heap area. Accordingly, the memory interface unit 260 may access the dynamic allocation memory area using the stored reference address and displacement even after the compaction is completed.

또한, 컴팩션 수행부(271)는 메모리의 스택 영역에 대한 컴팩션도 수행할 수 있는데, 이는 응용 프로그램의 스택 영역도 운영 체계의 시각에서는 힙 영역에 할당된 메모리 영역이기 때문이다.In addition, the compaction performing unit 271 may also perform compaction on the stack area of the memory, since the stack area of the application program is also a memory area allocated to the heap area from the perspective of the operating system.

스와핑 및 압축이 수행된 경우에도 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근이 수행될 수 있다. 즉, 태스크 상태 확인부(233)에 의해 확인된 태스크의 상태에 따라 스와핑 수행부(272) 및 압축 수행부(273)는 스와핑 및 압축을 수행한다. 이 때, 스와핑 및 압축이 수행됨에 따라 동적으로 할당된 메모리 영역을 사용하는 태스크의 위치가 변경된 경우 스와핑 수행부(272) 및 압축 수행부(273)는 변경된 위치만큼 참조 주소 및 참조 주소의 변위를 수정하여 저장부(240)에 저장한다. 이에 따라, 메모리 인터페이스부(260)는 스와핑 및 압축이 완료된 후에도 저장된 참조 주소 및 변위를 이용하여 동적 할당 메모리 영역으로 접근할 수 있게 된다.Even when swapping and compression are performed, access to the dynamic allocation memory region using the reference address and the displacement of the reference address may be performed. That is, the swapping execution unit 272 and the compression execution unit 273 perform swapping and compression according to the state of the task confirmed by the task state checking unit 233. At this time, when the location of a task using a dynamically allocated memory area is changed as swapping and compression are performed, the swapping unit 272 and the compression unit 273 change the displacement of the reference address and the reference address by the changed position. Modified and stored in the storage unit 240. Accordingly, the memory interface unit 260 may access the dynamic allocation memory area using the stored reference address and displacement even after the swapping and compression is completed.

별도로 정의된 API를 이용한 동적 할당 메모리 영역으로의 접근은 컴파일러의 분석 결과 없이도 수행될 수 있다. 이를 위하여, 동적 할당 메모리 생성부(210), 위치 확인부(220), 상태 확인부(230) 및 메모리 인터페이스부(260)는 적어도 하나 이상의 별도로 정의된 API를 포함할 수 있다.Access to the dynamic allocation memory region using a separately defined API can be performed without the compiler analyzing results. To this end, the dynamic allocation memory generator 210, the location determiner 220, the state checker 230, and the memory interface 260 may include at least one or more separately defined APIs.

별도로 정의된 API에는 프로그래밍 언어인 C의 함수 중 메모리를 할당하는 함수인 malloc()에 대응하는 함수(이하, 제 1 API라 한다)가 포함될 수 있는데, 제 1 API는 malloc()과 다르게 그 결과값으로 동적으로 할당된 메모리의 주소가 아니 라 자신의 핸들(handle)을 출력한다. 제 1 API는 동적 할당 메모리 생성부(210)에 포함될 수 있다.The separately defined API may include a function corresponding to malloc (), which allocates memory among functions of programming language C (hereinafter, referred to as a first API), which is different from malloc (). It prints its handle rather than the address of dynamically allocated memory as its value. The first API may be included in the dynamic allocation memory generator 210.

출력된 핸들은 또 다른 API(이하, 제 2 API 및 제 3 API라 한다)에 의하여 참조되는데, 제 2 API는 핸들을 참조하여 동적으로 할당된 메모리 영역의 일부 또는 전부를 물리적인 메모리에 배치하여 응용 프로그램에 의하여 사용될 수 있도록 한다. 그리고, 핸들의 사용이 완료되면 제 3 API는 제 2 API에 의해 물리적인 메모리에 배치된 동적 할당 메모리 영역의 일부 또는 전부를 제거한다.The output handle is referred to by another API (hereinafter referred to as a second API and a third API), which refers to the handle to place some or all of the dynamically allocated memory area in physical memory. To be used by the application. When the use of the handle is completed, the third API removes some or all of the dynamic allocation memory area disposed in the physical memory by the second API.

즉, 동적으로 할당된 메모리 영역이 빈번하게 사용되는 경우 제 2 API에 의하여 물리적인 메모리에 배치되고, 사용이 완료된 경우 제 3 API에 의하여 배치가 해제되는 것이다. 제 2 API 및 제 3 API는 메모리 인터페이스부(260)에 포함될 수 있다.That is, when a dynamically allocated memory area is frequently used, the memory area is allocated to the physical memory by the second API, and when the use is completed, the allocation is released by the third API. The second API and the third API may be included in the memory interface unit 260.

여기서, 저장부(240)는 제 3 API에 의해 배치가 해제된 동적 할당 메모리 영역의 리스트를 저장할 수 있다. 그리고, 메모리 관리부(270)는 메모리 상태 확인부(231)에 의해 확인된 메모리의 사용률이 특정 임계치 이상이 되면 즉, 메모리의 잔량이 특정 임계치 이하로 내려가면 컴팩션, 스와핑 또는 압축을 수행한다.Here, the storage unit 240 may store a list of the dynamic allocation memory areas whose arrangement is released by the third API. The memory manager 270 may perform compaction, swapping, or compression when the usage rate of the memory checked by the memory status checker 231 is greater than or equal to a certain threshold, that is, when the remaining amount of memory is lower than or equal to or less than a specific threshold.

이 때, CPU 상태 확인부(234)에 의해 확인된 중앙 처리 유닛의 사용률에 따라 관리 작업의 종류가 결정될 수 있는데, 중앙 처리 유닛의 사용률이 높은 경우 스와핑이 수행되고, 중앙 처리 유닛의 사용률이 낮은 경우 컴팩션 또는 압축이 수행된다. 여기서, 복원 시간이 소요되는 압축보다는 컴팩션이 수행되는 것이 바람직하다.At this time, the type of management task may be determined according to the usage rate of the central processing unit confirmed by the CPU status checking unit 234. When the utilization rate of the central processing unit is high, swapping is performed and the usage rate of the central processing unit is low. If compaction or compression is performed. Here, it is preferable that compaction is performed rather than compression, which requires a restoration time.

별도로 정의된 API에는 메모리의 보호 및 공유를 위한 함수(이하, 제 4 API 및 제 5 API라 한다)가 포함될 수 있다. 즉, 제 1 API에 의해 출력된 동적 할당 메모리 영역의 핸들을 이용하여 해당 메모리 블록에 대한 읽기 및 쓰기 연산이 수행될 수 있는 것이다.Separately defined APIs may include functions for protecting and sharing memory (hereinafter, referred to as fourth and fifth APIs). That is, read and write operations for the corresponding memory block may be performed using the handle of the dynamic allocation memory area output by the first API.

읽기 연산을 수행하는 제 4 API 및 쓰기 연산을 수행하는 제 5 API는 해당 메모리 블록에 대한 접근 권한을 확인하여 접근 권한이 있는 경우에만 읽기 및 쓰기 연산을 수행하며, 접근 권한이 없는 경우에는 제어 권한을 운영 체계로 넘겨서 메모리 접근 오류가 발생하도록 한다.The fourth API that performs the read operation and the fifth API that performs the write operation check the access right to the corresponding memory block to perform the read and write operation only when the access right exists, and the control right when there is no access right. To pass the memory access error to the operating system.

여기서, 제 5 API는 해당 메모리 블록이 공유 메모리 블록인 경우 카피-온-라이트(Copy-On-Write)를 수행하여 해당 메모리 블록을 위한 새로운 메모리 영역을 할당할 수도 있다.Here, when the corresponding memory block is a shared memory block, the fifth API may perform copy-on-write to allocate a new memory area for the corresponding memory block.

제 4 API 및 제 5 API는 상태 확인부(230)의 접근 권한 상태 확인부(232)에 포함될 수 있으며, 메모리 인터페이스부(260)에 포함될 수 있다. 즉, 메모리 영역에 대한 접근 권한 상태는 접근 권한 상태 확인부(232)에 의해 수행되고, 읽기 연산 및 쓰기 연산은 메모리 인터페이스부(260)에 의하여 수행될 수 있는 것이다.The fourth API and the fifth API may be included in the access right status checker 232 of the status checker 230, and may be included in the memory interface 260. That is, the access right state for the memory area may be performed by the access right state check unit 232, and the read operation and the write operation may be performed by the memory interface unit 260.

제 4 API 및 제 5 API는 매크로(Macro) 또는 인라인(In-Line) 함수로 구현되어 실제로는 함수 호출이 아닌 일반 연산으로 구현될 수 있다. 매크로 또는 인라인 함수는 종래의 메모리 할당 API와 대응되는 것으로서, 컴파일 이후 제 4 API 및 제 5 API로 변환될 수 있다. 이러한 변환은 변환을 수행하는 별도의 모듈에 의해 수행될 수 있으며, 사용자(프로그래머)에 의해 직접 수행될 수도 있다.The fourth and fifth APIs may be implemented as macro or in-line functions, and may be implemented as general operations instead of function calls. The macro or inline function corresponds to a conventional memory allocation API, and may be converted into a fourth API and a fifth API after compilation. This conversion may be performed by a separate module that performs the conversion, or may be performed directly by a user (programmer).

제어부(250)는 동적 할당 메모리 생성부(210), 위치 확인부(220), 상태 확인부(230), 저장부(240), 메모리 관리부(270), 메모리 인터페이스부(260) 및 가상 메모리 제어 장치(200)에 대한 전반적인 제어를 수행한다.The controller 250 controls the dynamic allocation memory generator 210, the location determiner 220, the state checker 230, the storage 240, the memory manager 270, the memory interface 260, and the virtual memory control. Perform overall control of the device 200.

도 3은 본 발명의 실시예에 따른 참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.3 is a diagram illustrating access to a dynamic allocation memory region using a reference address and a displacement of the reference address according to an embodiment of the present invention.

도 3에 도시된 바와 같이, 메모리(300a)의 동적 할당 메모리 영역(350a)은 메모리 관리부(270)의 컴팩션, 스와핑 또는 압축 이후의 메모리(300b)에서의 동적 할당 메모리 영역(350b)의 위치가 변경될 수 있다. 이를 위하여, 위치 확인부(220)는 동적 할당 메모리 영역(350a)의 위치를 참조하는 참조 주소를 확인하고 이를 저장부(240)에 저장한다.As shown in FIG. 3, the dynamic allocation memory area 350a of the memory 300a is located at the location of the dynamic allocation memory area 350b in the memory 300b after compaction, swapping, or compression of the memory manager 270. Can be changed. To this end, the location determiner 220 checks a reference address referring to the location of the dynamic allocation memory area 350a and stores it in the storage 240.

그리고, 메모리 관리부(270)는 컴팩션, 스와핑 또는 압축을 수행하면서 동적 할당 메모리 영역의 이동 거리(320)를 확인하고, 저장부(240)에 저장된 참조 주소를 수정한다. 도 3을 통해 이를 설명하면, 동적 할당 메모리 영역(350a)의 위치를 참조하는 참조 주소는 B이고, 메모리 관리부(270)의 관리 작업에 따른 동적 할당 메모리 영역(350a)의 이동 거리(320)가 B-A이므로, 메모리 관리부(270)의 관리 작업 이후의 동적 할당 메모리 영역(350b)에 대한 참조 주소는 B-(B-A)이므로 A가 된다.The memory manager 270 checks the moving distance 320 of the dynamic allocation memory area while performing compaction, swapping, or compression, and corrects the reference address stored in the storage 240. Referring to FIG. 3, the reference address referring to the location of the dynamic allocation memory area 350a is B, and the moving distance 320 of the dynamic allocation memory area 350a according to the management operation of the memory management unit 270 is Since it is BA, the reference address for the dynamic allocation memory area 350b after the management operation of the memory manager 270 is B- (BA), and thus A.

이에 따라, 메모리 인터페이스부(260)는 수정된 참조 주소를 이용하여 메모리(300b) 내에서 위치가 변경된 동적 할당 메모리 영역(350b)으로 접근할 수 있게 된다.Accordingly, the memory interface unit 260 can access the dynamic allocation memory area 350b whose location is changed in the memory 300b using the modified reference address.

참조 주소 및 참조 주소의 변위를 이용한 동적 할당 메모리 영역으로의 접근에 대한 프로그래밍 코드의 예는 다음과 같다.An example of programming code for accessing a dynamically allocated memory region using a reference address and a displacement of the reference address is as follows.

int *pt = malloc(size);int * pt = malloc (size);

int *ref = pt + constant; /* 0 <= constant < size */int * ref = pt + constant; / * 0 <= constant <size * /

여기서, pt는 malloc() 함수에 의해 형성된 동적 할당 메모리 영역을 나타내고, size는 동적 할당 메모리 영역의 크기를 나타내고, ref는 pt에 대한 참조 주소를 나타내고, 그리고 constant는 참조 주소의 변위를 나타낸다.Here, pt represents a dynamic allocation memory region formed by the malloc () function, size represents the size of the dynamic allocation memory region, ref represents a reference address for pt, and constant represents a displacement of the reference address.

위 프로그래밍 코드에 따라 동적 할당 메모리 영역은 힙 영역의 일정 구역에 형성되는데, 컴팩션, 스와핑 또는 압축 등의 관리 작업에 따라 그 위치가 변경된다. 이 때, 저장부(240)에는 ref 및 constant에 대한 정보가 저장되어 있는데, 메모리 관리부(270)는 동적 할당 메모리 영역의 이동 거리만큼 ref를 수정하여 저장함으로써 동적 할당 메모리 영역의 위치가 변경된 이후에도 메모리 인터페이스부(260)로 하여금 동적 할당 메모리 영역으로 접근할 수 있도록 한다.According to the above programming code, the dynamic allocation memory area is formed in a certain area of the heap area, and its position is changed according to management tasks such as compaction, swapping, or compression. In this case, information about ref and constant is stored in the storage unit 240, and the memory manager 270 modifies and stores ref as much as the moving distance of the dynamic allocation memory area, thereby changing the memory even after the location of the dynamic allocation memory area is changed. Allow interface 260 to access the dynamic allocation memory region.

도 4는 본 발명의 일 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.4 illustrates access to a dynamic allocation memory region using a separately defined application program interface according to an embodiment of the present invention.

전술한 바와 같이, 메모리 인터페이스부(260)의 제 1 API는 메모리(400a)에서 동적으로 메모리 영역(450a)을 할당한 후에 그 결과값으로 할당된 메모리 영역의 핸들(410)을 출력한다.As described above, the first API of the memory interface unit 260 dynamically allocates the memory area 450a in the memory 400a and then outputs the handle 410 of the allocated memory area as a result value.

제 2 API는 제 1 API에 의해 출력된 핸들(410)을 이용하여 동적 할당 메모리 영역(450b)의 일부 또는 전부를 물리적인 메모리(400b)에 배치한다.The second API uses the handle 410 output by the first API to place some or all of the dynamic allocation memory area 450b in the physical memory 400b.

여기서, 동적 할당 메모리 영역(450b)에 대한 물리적인 메모리(400b)의 주소 및 크기는 저장부(240)에 테이블의 형태로 저장될 수 있는데, 제 2 API 및 제 3 API에 의하여 블록 단위로 동적 할당 메모리 영역(450b)에 대한 접근이 이루어지는 경우 테이블의 최대 핸들의 수는 1차원 정수 배열이 되고, 블록의 일부 단위로 동적 할당 메모리 영역(450b)에 대한 접근이 이루어지는 경우 테이블의 최대 핸들의 수는 2차원 정수 배열이 된다.Here, the address and size of the physical memory 400b for the dynamic allocation memory area 450b may be stored in the storage unit 240 in the form of a table, and may be dynamically stored in blocks by the second API and the third API. The maximum number of handles of the table is the one-dimensional integer array when access to the allocated memory area 450b is made, and the maximum number of handles of the table is made when the dynamic allocation memory area 450b is made as part of a block. Becomes a two-dimensional array of integers.

메모리 관리부(270)는 제 3 API에 의하여 물리적인 메모리(400b)에서 제거된 모든 동적 할당 메모리 영역(450b)을 스와핑과 압축에 대한 대상으로 고려하지 않고, 휴리스틱(Heuristic)을 이용하여 일정 시간 이상 물리적인 메모리(400b)에서 제거된 동적 할당 메모리 영역(450b)만을 스와핑 및 압축에 대한 대상으로 고려함으로써 관리 작업에 소요되는 작업량을 조절할 수 있다. 이를 위하여, 가상 메모리 제어 장치(200)는 제 3 API에 의해 물리적인 메모리(400b)에서 동적 할당 메모리 영역(450b)이 제거된 이후에 소요된 시간을 확인하는 타이머를 구비할 수도 있다.The memory manager 270 does not consider all dynamic allocation memory areas 450b removed from the physical memory 400b by the third API as a target for swapping and compression, and uses a heuristic for more than a predetermined time. By considering only the dynamic allocation memory area 450b removed from the physical memory 400b as a target for swapping and compression, the amount of work required for management can be adjusted. To this end, the virtual memory control device 200 may include a timer for checking a time taken after the dynamic allocation memory area 450b is removed from the physical memory 400b by the third API.

별도로 정의된 API를 이용한 동적 할당 메모리 영역으로의 접근에 대한 제어를 수행하는 프로그래밍 코드의 예는 다음과 같다.The following is an example of programming code that controls access to the dynamic allocation memory area using a separately defined API.

id = salloc(size);id = salloc (size);

*pt = scheckout(id, _start, _size);* pt = scheckout (id, _start, _size);

scheckin(*pt, _start);scheckin (* pt, _start);

sfree(id);sfree (id);

여기서, salloc()은 제 1 API로서, malloc()과 같이 동적으로 메모리 영역을 할당한 후에 그 결과값으로 할당된 메모리 영역의 핸들을 출력하는 API이다. 그리고, id는 salloc()에 의해 형성된 크기가 size인 동적 할당 메모리 영역의 핸들이다.Here, salloc () is a first API that allocates a memory area dynamically like malloc () and outputs a handle of the allocated memory area as a result value. Id is a handle of a dynamic allocation memory area of size size formed by salloc ().

scheckout()은 제 2 API로서, 그 파라미터로 제 1 API에 의해 출력된 핸들, 물리적인 메모리의 시작 주소 및 동적 할당 메모리 영역의 크기를 가지며, 자신의 포인터를 출력한다.scheckout () is a second API, which has a handle output by the first API as a parameter, a start address of physical memory, and a size of a dynamically allocated memory area, and outputs its pointer.

scheckin()은 제 3 API로서, 그 파라미터로 제 2 API의 포인터 및 물리적인 메모리의 시작 주소를 갖는다.scheckin () is a third API that has a pointer to the second API and a start address of physical memory as its parameters.

sfree()는 메모리의 반환을 수행하는 함수로써, 제 1 API에 의해 출력된 핸들인 id가 메모리에서 더 이상 사용되지 않도록 한다.sfree () is a function that returns a memory so that id, a handle output by the first API, is no longer used in memory.

도 5는 본 발명의 다른 실시예에 따른 별도로 정의된 응용 프로그램 인터페이스를 이용한 동적 할당 메모리 영역으로의 접근을 나타낸 도면이다.5 is a diagram illustrating access to a dynamic allocation memory region using a separately defined application program interface according to another embodiment of the present invention.

전술한 바와 같이, 제 4 API 및 제 5 API는 메모리(500)의 보호 및 공유의 역할을 수행하는데, 이에 대한 프로그래밍 코드의 예는 다음과 같다.As described above, the fourth API and the fifth API serve to protect and share the memory 500. An example of programming code therefor is as follows.

id = salloc(size);id = salloc (size);

value = sread(id, offset);value = sread (id, offset);

swrite(id, offset, value);swrite (id, offset, value);

sfree(id);sfree (id);

여기서, sread()는 제 4 API로서, 제 1 API인 salloc() 함수에 의해 할당된 메모리(550)에 저장되어 있는 데이터에 대한 읽기 연산을 수행한다. offset은 읽기 연산의 대상이 되는 데이터의 크기를 의미한다. 이 때, sread()는 해당 동적 할당 메모리 영역(550)에 대한 접근 권한이 있는지 확인하여 접근 권한이 있는 경우에만 읽기 연산을 수행하고, 접근 권한이 없는 경우에는 제어 권한을 운영 체계로 넘겨서 메모리 접근 오류가 발생하도록 한다.Here, sread () is a fourth API and performs a read operation on data stored in the memory 550 allocated by the salloc () function which is the first API. The offset means the size of data to be read. At this time, sread () checks whether there is an access right to the dynamic allocated memory area 550 and performs a read operation only if there is access right, and if not, passes control right to the operating system to access the memory. Causes an error to occur.

또한, swrite()는 제 5 API로서, 쓰기 연산을 수행하여 제 1 API인 salloc() 함수에 의해 할당된 메모리(500)에 소정의 데이터를 저장하는 역할을 한다. 위의 프로그래밍 코드에서, swrite()의 파라미터로서 sread()에 의해 읽혀진 데이터가 사용되고 있으나 별도의 데이터가 swrite()의 파라미터로 사용될 수도 있다.In addition, swrite () is a fifth API and performs a write operation to store predetermined data in the memory 500 allocated by the salloc () function which is the first API. In the above programming code, data read by sread () is used as a parameter of swrite (), but separate data may be used as a parameter of swrite ().

swrite() 또한 sread()와 마찬가지로 해당 메모리 영역(550)에 대한 접근 권한이 있는지 확인하여 접근 권한이 있는 경우에만 쓰기 연산을 수행하고, 접근 권한이 없는 경우에는 제어 권한을 운영 체계로 넘겨서 메모리 접근 오류가 발생하도록 한다.Like sread (), swrite () checks whether the user has the right to access the memory area 550, and performs the write operation only if the access right. If not, passes the control right to the operating system to access the memory. Causes an error to occur.

전술한 바와 같이, 제 4 API 및 제 5 API는 접근 권한 상태 확인부(232)에 포함될 수 있으며, 접근 권한 상태 확인부(232)에 의하여 읽기 연산 및 쓰기 연산에 대한 동적 할당 메모리 영역(550)으로의 접근 권한 상태 확인이 수행된다.As described above, the fourth API and the fifth API may be included in the access authority status checker 232, and the dynamic allocation memory area 550 for read and write operations by the access authority status checker 232. Access status checks are performed.

도 6은 본 발명의 실시예에 따른 가상 메모리를 제어하는 과정을 나타낸 흐름도이다.6 is a flowchart illustrating a process of controlling a virtual memory according to an embodiment of the present invention.

가상 메모리를 제어하기 위하여 동적 할당 메모리 생성부(210)는 동적 할당 메모리 영역을 생성한다(S610). 가상 메모리 제어 장치(200)는 동적 할당 메모리 영역에 대한 참조 주소 및 참조 주소의 변위를 이용하여 가상 메모리를 제어할 수 있으며 별도로 정의된 API를 이용하여 가상 메모리를 제어할 수 있다.In order to control the virtual memory, the dynamic allocation memory generation unit 210 generates a dynamic allocation memory area (S610). The virtual memory control apparatus 200 may control the virtual memory by using the reference address and the displacement of the reference address with respect to the dynamic allocation memory area, and may control the virtual memory by using a separately defined API.

동적 할당 메모리 생성부(210)는 프로그래밍 언어인 C의 malloc() 함수와 같이 동적으로 메모리를 할당할 수 있는 수단을 이용하여 동적 할당 메모리를 생성한다. 이 때, 참조 주소 및 참조 주소의 변위를 이용하여 동적 할당 메모리 영역을 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역의 주소를 출력하고, 별도로 정의된 API를 이용하여 동적 할당 메모리를 생성하는 경우 동적 할당 메모리 생성부(210)는 생성된 메모리 영역에 대한 핸들을 출력한다.The dynamic allocation memory generation unit 210 generates dynamic allocation memory using a means for dynamically allocating memory, such as the malloc () function of C, which is a programming language. In this case, when generating the dynamic allocation memory region by using the reference address and the displacement of the reference address, the dynamic allocation memory generating unit 210 outputs the address of the generated memory region, and uses the separately defined API to allocate the dynamic allocation memory region. When generating the dynamic allocation memory generator 210 outputs a handle to the generated memory area.

동적 할당 메모리 영역이 생성되면, 위치 확인부(220)는 메모리의 영역 중 동적으로 할당 받은 동적 할당 메모리 영역에 대한 위치 정보를 확인한다(S620). 동적 할당 메모리 영역에 대한 위치 정보 확인은 응용 프로그램의 컴파일 시에 수행될 수 있으며 별도로 정의된 API를 이용하여 응용 프로그램의 런타임 시에 수행될 수도 있다.When the dynamic allocation memory area is generated, the location checking unit 220 confirms location information on the dynamically allocated memory area among the areas of the memory (S620). The location information check on the dynamic allocation memory area may be performed at compile time of the application or may be performed at run time of the application using a separately defined API.

확인된 동적 할당 메모리 영역에 대한 위치 정보는 제어부(250)로 전달되고, 제어부(250)의 제어 명령에 따라 저장부(240)는 전달 받은 동적 할당 메모리 영역에 대한 위치 정보를 저장한다(S630). 여기서, 동적 할당 메모리 영역에 대한 위치 정보는 전술한 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기 중 적어도 하나를 포함한다. 여기서, 저장부(240)에 저장된 참조 주소의 변위는 동적 할당 메모리 영역의 크기보다 작다.The location information about the identified dynamic allocation memory area is transmitted to the controller 250, and the storage unit 240 stores the location information on the received dynamic allocation memory area according to a control command of the controller 250 (S630). . Here, the location information on the dynamic allocation memory region includes at least one of the above-described reference address, the displacement of the reference address, the address and the size of the physical memory. Here, the displacement of the reference address stored in the storage unit 240 is smaller than the size of the dynamic allocation memory area.

그리고, 상태 확인부(230)는 시스템의 상태를 확인한다(S640). 즉, 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛의 사용률을 확인하는 것이다.Then, the state check unit 230 checks the state of the system (S640). That is, the usage rate of the memory, the access authority state of the dynamic allocation memory area, the state of the task included in the dynamic allocation memory area, and the utilization of the central processing unit are checked.

그리고, 메모리 관리부(270)는 상태 확인부(230)에 의해 확인된 결과에 따라 메모리에 대한 관리 작업을 수행한다(S650). 여기서, 관리 작업은 컴팩션, 스와핑 및 압축을 포함한다.The memory manager 270 performs a management operation on the memory according to the result confirmed by the status checker 230 (S650). Here, management tasks include compaction, swapping, and compression.

메모리 관리부(270)에 포함된 컴팩션 수행부(271), 스와핑 수행부(272) 및 압축 수행부(273)는 해당 관리 작업을 수행하면서 관리 작업에 따라 변경된 동적 할당 메모리 영역에 대한 참조 주소, 참조 주소의 변위, 물리적인 메모리의 주소 및 크기를 저장부(240)에 저장한다(S660).The compaction execution unit 271, the swapping execution unit 272, and the compression execution unit 273 included in the memory management unit 270 perform a corresponding management operation, and include a reference address for the dynamic allocation memory region changed according to the management operation, The displacement of the reference address, the address and the size of the physical memory are stored in the storage unit 240 (S660).

그리고, 메모리 인터페이스부(260)는 저장부(240)에 저장된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 동적 할당 메모리 영역에 대한 접근을 수행한다(S670).In operation S670, the memory interface unit 260 accesses the dynamic allocation memory area by referring to the location information of the dynamic allocation memory area stored in the storage unit 240.

이 때, 접근 권한에 따라 동적 할당 메모리 영역에 대한 접근이 제한될 수도 있다. 즉, 접근 권한이 없는 경우에는 제어 권한이 운영 체계로 넘겨져서 메모리 접근 오류가 발생할 수 있는 것이다.At this time, access to the dynamic allocation memory area may be restricted according to the access right. In other words, if there is no access right, the control right is passed to the operating system, and a memory access error may occur.

이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although embodiments of the present invention have been described above with reference to the accompanying drawings, those skilled in the art to which the present invention pertains may implement the present invention in other specific forms without changing the technical spirit or essential features thereof. I can understand that. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.

상기한 바와 같은 본 발명의 가상 메모리를 제어하는 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.According to the apparatus and method for controlling the virtual memory of the present invention as described above has one or more of the following effects.

첫째, 메모리 관리 유닛(Memory Management Unit)의 기능을 소프트웨어적으로 제공함으로써 휴대용 시스템에서 메모리 관리에 소요되는 전력 소모를 줄일 수 있는 장점이 있다.First, it is possible to reduce the power consumption of memory management in a portable system by providing a function of the memory management unit (Memory Management Unit) in software.

둘째, 중앙 제어 유닛에 메모리 관리 유닛을 탑재하지 않고 메모리를 관리함으로써 제조 단가를 절감할 수 있는 장점도 있다.Second, there is an advantage that the manufacturing cost can be reduced by managing the memory without mounting the memory management unit in the central control unit.

Claims (12)

메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 상태 확인부;A state checking unit for checking at least one of a utilization rate of a memory, an access right state of a dynamic allocation memory area, a state of a task included in the dynamic allocation memory area, and a utilization rate of a central processing unit; 상기 메모리에 대한 관리 작업 중 상기 상태 확인부의 확인 결과에 따라 선택된 관리 작업을 수행하는 메모리 관리부;A memory manager configured to perform a management task selected according to a check result of the status checker among management tasks for the memory; 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 위치 확인부; 및A position checking unit for checking position information of the dynamic allocation memory region changed according to a result of the management operation among the regions of the memory; And 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 메모리 인터페이스부를 포함하는 가상 메모리를 제어하는 장치.And a memory interface unit configured to perform access to the dynamically allocated memory area by referring to the identified location information of the dynamically allocated memory area. 제 1항에 있어서,The method of claim 1, 상기 동적 할당 메모리 영역에 대한 위치 정보는 상기 동적 할당 메모리 영역에 대한 포인터를 포함하는 참조 주소, 상기 참조 주소의 변위, 상기 동적 할당 메모리 영역에 대한 물리적인 메모리의 주소 및 상기 동적 할당 메모리 영역의 크기 중 적어도 하나를 포함하는 가상 메모리를 제어하는 장치.The location information for the dynamically allocated memory region may include a reference address including a pointer to the dynamically allocated memory region, a displacement of the reference address, an address of a physical memory for the dynamically allocated memory region, and a size of the dynamically allocated memory region. Apparatus for controlling a virtual memory including at least one of. 제 2항에 있어서,The method of claim 2, 상기 동적 할당 메모리 영역에 대한 위치 정보를 저장하는 저장부를 더 포함하는 가상 메모리를 제어하는 장치.And a storage unit for storing location information of the dynamically allocated memory region. 제 1항에 있어서,The method of claim 1, 상기 태스크는 기본 블록(Basic Block) 및 함수를 포함하는 가상 메모리를 제어하는 장치.The task is a device for controlling a virtual memory including a basic block (Basic Block) and a function. 제 1항에 있어서,The method of claim 1, 상기 관리 작업은 컴팩션(Compaction), 스와핑(Swapping) 및 압축(Compression)을 포함하는 가상 메모리를 제어하는 장치.And wherein the management tasks include compaction, swapping, and compression. 제 1항에 있어서,The method of claim 1, 상기 위치 확인부, 상기 상태 확인부 및 상기 메모리 인터페이스부는 별도로 정의된 해당 응용 프로그램 인터페이스(Application Program Interface)를 포함하는 가상 메모리를 제어하는 장치.And the location checker, the status checker, and the memory interface include a corresponding application program interface defined separately. (a) 메모리의 사용률, 동적 할당 메모리 영역에 대한 접근 권한 상태, 상기 동적 할당 메모리 영역에 포함된 태스크의 상태 및 중앙 처리 유닛(Central Processing Unit)의 사용률 중 적어도 하나를 확인하는 단계;(a) checking at least one of a utilization rate of a memory, an access right state of a dynamic allocation memory area, a state of a task included in the dynamic allocation memory area, and a utilization rate of a central processing unit; (b) 상기 메모리에 대한 관리 작업 중 상기 (a) 단계의 확인 결과에 따라 선택된 관리 작업을 수행하는 단계;(b) performing a management operation selected according to a result of the checking of the step (a) of the management operation on the memory; (c) 상기 메모리의 영역 중 상기 관리 작업의 결과에 따라 변경된 상기 동적 할당 메모리 영역에 대한 위치 정보를 확인하는 단계; 및(c) checking location information of the dynamically allocated memory area of the memory area changed according to a result of the management operation; And (d) 상기 확인된 동적 할당 메모리 영역에 대한 위치 정보를 참조하여 상기 동적 할당 메모리 영역으로의 접근을 수행하는 단계를 포함하는 가상 메모리를 제어하는 방법.and (d) performing access to the dynamic allocation memory area by referring to the location information on the identified dynamic allocation memory area. 제 7항에 있어서,The method of claim 7, wherein 상기 동적 할당 메모리 영역에 대한 위치 정보는 상기 동적 할당 메모리 영역에 대한 포인터를 포함하는 참조 주소, 상기 참조 주소의 변위, 상기 동적 할당 메모리 영역에 대한 물리적인 메모리의 주소 및 상기 동적 할당 메모리 영역의 크기 중 적어도 하나를 포함하는 가상 메모리를 제어하는 방법.The location information for the dynamically allocated memory region may include a reference address including a pointer to the dynamically allocated memory region, a displacement of the reference address, an address of a physical memory for the dynamically allocated memory region, and a size of the dynamically allocated memory region. And controlling at least one of the virtual memories. 제 8항에 있어서,The method of claim 8, 상기 동적 할당 메모리 영역에 대한 위치 정보를 저장하는 단계를 더 포함하는 가상 메모리를 제어하는 방법.Storing location information for the dynamically allocated memory region. 제 7항에 있어서,The method of claim 7, wherein 상기 태스크는 기본 블록(Basic Block) 및 함수를 포함하는 가상 메모리를 제어하는 방법.The task is a method of controlling a virtual memory including a basic block (Basic Block) and a function. 제 7항에 있어서,The method of claim 7, wherein 상기 관리 작업은 컴팩션(Compaction), 스와핑(Swapping) 및 압축(Compression)을 포함하는 가상 메모리를 제어하는 방법.Wherein said management task includes compaction, swapping, and compression. 제 7항에 있어서,The method of claim 7, wherein 상기 (a) 단계, 상기 (c) 단계 및 상기 (d) 단계는 별도로 정의된 해당 응용 프로그램 인터페이스(Application Program Interface)를 통하여 수행되는 단계를 포함하는 가상 메모리를 제어하는 방법.The steps (a), (c) and (d) are performed through a corresponding application program interface defined separately.
KR1020050107146A 2005-11-09 2005-11-09 Apparatus and method for controlling virtual memory KR100735560B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050107146A KR100735560B1 (en) 2005-11-09 2005-11-09 Apparatus and method for controlling virtual memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050107146A KR100735560B1 (en) 2005-11-09 2005-11-09 Apparatus and method for controlling virtual memory

Publications (2)

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

Family

ID=38273697

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107146A KR100735560B1 (en) 2005-11-09 2005-11-09 Apparatus and method for controlling virtual memory

Country Status (1)

Country Link
KR (1) KR100735560B1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101047884B1 (en) 2009-08-11 2011-07-08 주식회사 안철수연구소 Method and device for data protection using a virtual environment and a computer-readable recording medium recording a program for performing the method
KR101233664B1 (en) * 2010-12-17 2013-02-15 황준일 Apparatus and method for preventing memory hacking using memory shuffling in the multi-core system
KR102011135B1 (en) 2012-12-11 2019-08-14 삼성전자주식회사 Mobile device and method of managing data using swap thereof
KR101999132B1 (en) 2012-12-17 2019-10-01 삼성전자주식회사 Method and apparatus for managing memory in virtual machine environment
CN103885838A (en) * 2014-03-27 2014-06-25 北京大学 Method for acquiring virtual machine memory working sets and memory optimization and allocation method

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030071299A (en) * 2002-02-28 2003-09-03 주식회사 엘지이아이 Apparatus for managing memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030071299A (en) * 2002-02-28 2003-09-03 주식회사 엘지이아이 Apparatus for managing memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Software Virtual Memory Management for MMU-Less Embedded Systems,Ceneter for embedded Computer System UC Irvine TR 05-16, 2005.11.6

Also Published As

Publication number Publication date
KR20070049885A (en) 2007-05-14

Similar Documents

Publication Publication Date Title
US10296388B2 (en) Object optimal allocation device, method and program
JP5255348B2 (en) Memory allocation for crash dump
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
US20220283928A1 (en) Kernel debugging system and method
EP3577565B1 (en) Garbage collector
KR100735560B1 (en) Apparatus and method for controlling virtual memory
CN113688062B (en) Method for storing data and related product
JP2011186561A (en) Memory management device
US20120198184A1 (en) Memory management method, computer system and computer readable medium
Chang et al. CASA: Contention-aware scratchpad memory allocation for online hybrid on-chip memory management
US20070300210A1 (en) Compiling device, list vector area assignment optimization method, and computer-readable recording medium having compiler program recorded thereon
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
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
KR20060035077A (en) Data processing device and register allocation method using data processing device
Greenspan LLAMA-automatic memory allocations: an LLVM pass and library for automatically determining memory allocations
KR100220496B1 (en) Processor and information processing apparatus
KR101140522B1 (en) System and Method for Managing Object
Bakita et al. Enabling GPU memory oversubscription via transparent paging to an NVMe SSD
Leupers Register allocation for common subexpressions in DSP data paths
Böhnert et al. A dynamic virtual memory management under real-time constraints

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