KR100315500B1 - Memory allocating method - Google Patents
Memory allocating method Download PDFInfo
- Publication number
- KR100315500B1 KR100315500B1 KR1019980020756A KR19980020756A KR100315500B1 KR 100315500 B1 KR100315500 B1 KR 100315500B1 KR 1019980020756 A KR1019980020756 A KR 1019980020756A KR 19980020756 A KR19980020756 A KR 19980020756A KR 100315500 B1 KR100315500 B1 KR 100315500B1
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- area
- size
- unallocated
- memory area
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
Description
본 발명은 메모리 할당방법에 관한 것으로서, 더욱 상세하게는 메모리 구조에 있어서 빈 메모리 영역을 나타내는 비할당 포인터(Empty Pointer)를 설정함으로써, 메모리 할당 요구시 메모리가 할당되지 않은 빈 영역들을 상기 비할당 포인터를 기준으로 하여 고속으로 탐색 및 할당하는 최적 크기의 메모리 할당방법에 관한 것이다.The present invention relates to a memory allocation method, and more particularly, to setting an unallocated pointer indicating an empty memory area in a memory structure, thereby freeing the unallocated pointers from the unallocated memory areas when a memory allocation request is made. The present invention relates to an optimal memory allocation method for searching and allocating at high speed.
컴퓨터에서 프로그램을 동작시킬 때, 변수 및 작업 영역을 위한 메모리를 운영체제(O/S)나 시스템 관리자(System Management)로부터 할당받아 사용하게 된다. 그리고 시스템 상의 메모리를 효율적으로 사용하기 위해서는 동적으로 메모리를 할당받고, 할당받은 메모리를 사용한 후에는 시스템에 다시 반납해서 다른 프로그램이 메모리를 사용할 수 있게 해야한다.When running a program on a computer, memory for variables and workspaces is allocated from the operating system (O / S) or system manager (System Management). In order to use memory on the system efficiently, the memory must be allocated dynamically, and after the allocated memory is used, it must be returned to the system so that other programs can use the memory.
한편, 메모리가 적은 저가형의 시스템에서는 메모리의 획득 및 반납이 빈번하게 발생하게 되고, 전체 소프트웨어의 동작 속도에 따라 메모리의 할당과 반납에 소비되는 시간이 시스템 성능에 큰 영향을 미치게 된다. 현재 리스크(Reduced Instruction Set Computer: RISK)나 시스크(Complex Instruction Set Computer: CISK) CPU를 이용하는 제품들, 예를 들어 NC, 인터넷 셋톱박스(Internet Set Top Box), DBS 셋톱박스, 디지털 TV(DTV) 등이 개발됨에 따라, 이들에 사용되는 소프트웨어는 유한한 자원인 메모리를 동적으로 이용하여야 하므로, 상기 메모리의 할당과 반납에 관련되는 성능이 시스템의 성능에 큰 영향을 미치게 된다.On the other hand, in a low-cost system with low memory, memory acquisition and return occur frequently, and the time spent allocating and returning the memory greatly affects system performance depending on the operation speed of the entire software. Products that currently use Reduced Instruction Set Computer (RISK) or Complex Instruction Set Computer (CISK) CPUs, such as NC, Internet Set Top Box, DBS Set Top Box, Digital TV (DTV) As such, the software used for them must dynamically use a finite resource of memory, and the performance related to the allocation and return of the memory has a great effect on the performance of the system.
도 1은 종래의 기술에 따른 메모리 할당을 설명하기 위한 메모리 체인으로서, 상기 메모리 체인은 TOP 영역(1)을 메모리 스택(Stack)의 기본으로 시작하여, 다음의 메모리 영역을 지칭하는 포인터(Next Pointer)와 이전의 메모리 영역을 지칭하는 포인터(Previous Pointer)를 가지고 있고, 각각의 메모리 영역의 상태를 나타내는 플래그(Flag)를 포함하고 있다. 여기에서, 상기 포인터는 C 언어나 Pascal언어와 같은 고급 프로그래밍 언어에서 사용되는 자료 구조의 하나로서, 어떤 하나의 자료가 저장되어 있는 기억 장소의 위치 또는 주소를 가리키는 정보를 말하고, 프로그램에서는 이러한 정보를 이용하여 자료가 저장되어 있는 위치로 직접 이동할 수 있다. 그리고 상기 플래그는 할당(Alloc.) 및 비할당(Empty)으로 구분되고, 할당된 메모리(Alloc)가 시스템에 메모리를 반납하면 비할당(Empty) 메모리가 된다. 그리고 메모리 크기(Size)는 상기 메모리 영역이 할당한 메모리의 크기로서, 보통 유틸리티 등에서 요구하는 바이트(Byte) 수로 표시된다.1 is a memory chain for explaining a memory allocation according to the prior art, the memory chain is a pointer indicating the next memory area, starting with the TOP area (1) as the basis of the memory stack (Next) ) And a pointer to a previous memory area, and a flag indicating a state of each memory area. Herein, the pointer is one of data structures used in a high-level programming language such as C language or Pascal language, and refers to information indicating a location or address of a storage location in which one piece of data is stored. You can go directly to the location where the data is stored. The flag is divided into Alloc. And Empty. When the allocated memory Alloc returns the memory to the system, the flag becomes an empty memory. The memory size is a size of the memory allocated by the memory area and is represented by the number of bytes required by a utility or the like.
상기 메모리를 프로그램 상의 구조형(Structure Type)으로 나타내면 표 1과 같다. 상기 프로그램 상의 구조형에서, Struct, int 및 char은 함수명이고, Memory Block *prev, Memory Block *next, Size, Flag, TASK_ID 및 Data[Size}는 변수명을 의미한다. 그리고 '이전 메모리 영역 포인터(Prev. Pointer)' 등의 주석(Remarks)은 상기 변수의 내용을 설명하기 위한 것이다. 여기에서 두 개의 메모리 영역 포인터(Prev. Pointer, Next Pointer)가 사용되고 있고, Data[Size}는 사용자 시스템에 할당하는 실제 메모리 어드레스를 나타낸다.Table 1 shows the memory as a structure type on a program. In the programmatic structure, Struct, int, and char are function names, and Memory Block * prev, Memory Block * next, Size, Flag, TASK_ID, and Data [Size} mean variable names. Remarks, such as 'Prev Pointer', are used to describe the contents of the variable. Here, two memory area pointers (Prev. Pointer and Next Pointer) are used, and Data [Size] represents an actual memory address allocated to a user system.
상기 표 1의 구조를 사용하여 전술한 도 1의 메모리 체인을 구성할 수 있고, 이때 TOP 메모리 영역(1)은 이전 영역이 없는 NULL이고, A1 메모리 영역(2)은 이전 영역(prev)이 TOP이고, 다음 영역(next)은 A2가 된다. 마찬가지 방식으로 상기 메모리 영역을 분배 및 할당하게 되며, 메모리 영역의 구조상 메모리의 할당과 소멸은 도 2a 및 도 2b와 같다.The above-described structure of Table 1 may be used to configure the memory chain of FIG. 1, wherein the TOP memory region 1 is NULL without a previous region, and the A1 memory region 2 has a previous region prev. And the next area next is A2. In the same manner, the memory area is distributed and allocated, and memory allocation and destruction are shown in FIGS. 2A and 2B.
도 2a 및 도 2b는 종래의 기술에 따른 메모리 할당 전과 할당 후의 마지막 메모리 영역으로서, A2(3)가 마지막 메모리 영역일 경우에 A2를 할당하며, 이때 다음 영역(next)은 NULL이 된다, 만일 유틸리티에서 20Kbyte를 요구할 경우에는, 다음 영역인 A3(4)을 생성하여 상기 A2에 20Kbyte를 할당하고, 마지막 메모리 영역을 만들게 된다. 즉, 도 2a는 200Kbyte의 크기와 플래그가 비할당(Empty) 상태인 메모리 할당 전의 마지막 메모리 체인이며, 도 2b는 메모리가 할당된 후에, 메모리 체인 A2에 20Kbyte가 할당되어 플래그가 할당(Alloc) 상태로 변경되고, 새로운 A3이 마지막 메모리 체인이 되며, 이때 A3은 플래그가 비할당(Empty) 상태가 되고, 메모리 크기는 180Kbyte가 된다.2A and 2B are the last memory areas before and after memory allocation according to the prior art, in which A2 is allocated when A2 (3) is the last memory area, and the next area next is NULL. If 20 Kbytes is required, A3 (4), which is the next area, is created, 20Kbytes are allocated to A2, and the last memory area is created. That is, FIG. 2A is the last memory chain before memory allocation with a size of 200Kbytes and the flag is in an Unallocated state, and FIG. 2B is an Alloc state with 20Kbytes allocated to the memory chain A2 after memory is allocated. The new A3 becomes the last memory chain, where A3 is flagged and the memory size is 180 Kbytes.
도 3은 종래의 기술에 따른 비할당 영역에 메모리를 할당하는 것을 도시하는 도면으로서, 요구되는 메모리 크기가 20Kbyte일 때, 비할당 상태의 A3 메모리영역(4)이 20Kbyte이므로, 상기 A3을 요구하는 메모리 영역으로 할당하게 된다. 여기에서 A3 메모리 영역은 A2 메모리 영역(3)과 A4 메모리 영역(5)의 중간에 존재하는 프리(Free), 즉 비할당 영역을 나타낸다.FIG. 3 is a diagram illustrating allocating memory to an unallocated area according to the prior art. When the required memory size is 20 Kbytes, the A3 memory area 4 in the unallocated state is 20 Kbytes. Allocates to a memory area. Here, the A3 memory area represents a free, ie, unallocated area existing between the A2 memory area 3 and the A4 memory area 5.
도 4는 종래의 기술에 따른 메모리 맵(Memory Map)의 구조도로서, 전술한 메모리 영역은 메모리 맵 상의 힙(Heap) 영역을 각각 메모리 할당 영역으로 나누어서 할당하게 된다. 예를 들어, A1 메모리 영역의 시작 어드레스는 20000h 번지와 헤더크기(Header Size: HS)의 합이 되고, 이때 이전 영역 포인터(prev Pointer)는 TOP을 가리키고, 다음 영역 포인터(Next Pointer)는 A2 영역을 가리키게 된다. 여기에서 상기 힙 영역은 프로그램의 실행 도중에 요구되는 기억 장소를 할당하기 위해서 운영체제에 예약되어 있는 기억장소 영역을 말하며, 예를 들어, 프로그램에서 실행 도중에 자료를 저장하기 위해 기억장소를 요구하면 운영체제에서 힙에 존재하는 기억장소를 프로그램에 할당하게 된다. 그리고 상기 TOP 영역은 헤더 영역으로서, 기억장치의 파일 또는 레코드 등과 같이 저장되어 있는 정보에 대한 내용을 담고 있는 부분이다.FIG. 4 is a structural diagram of a memory map according to the prior art, and the above-described memory area is allocated by dividing a heap area on the memory map into memory allocation areas. For example, the start address of the A1 memory area is the sum of the address 20000h and the header size (HS), where the previous area pointer points to the TOP, and the next area pointer points to the A2 area. Will be displayed. Here, the heap area refers to a storage area reserved for the operating system in order to allocate a storage space required during the execution of a program. For example, the heap area in the operating system requires a storage space to store data during execution. The storage location at will be allocated to the program. The TOP area is a header area that contains contents of information stored such as a file or a record of a storage device.
전술한 도 4의 메모리 맵 구조에서, 메모리를 할당하는 방법은 크게 최적 크기의 메모리 할당방법과 마지막 메모리 할당방법을 사용하고 있다. 먼저, 항상 할당되고 반납되는 메모리는 메모리 영역 중간에 전술한 도 3의 A3과 같은 프리 영역이 존재하는데, 이를 할당하려면 메모리 영역의 선두인 TOP 영역에서부터 Next 포인터를 통해서 빈 영역, 즉 비할당 영역(Empty Block)을 찾아서, 빈 영역의 크기가 요구되는 크기에 합당하면, 메모리를 할당하게 되지만, 만일 할당되는 크기가 없으면 최종의 영역에서 요구되는 크기를 비교하여, 그 크기가 할당 가능하면 도 2b와 같이 새롭게 마지막 영역을 만들어서 요구되는 크기를 할당하는 방법이 최적 크기 메모리 할당 방법이다.In the memory map structure of FIG. 4 described above, a memory allocation method uses a memory allocation method of an optimal size and a last memory allocation method. First, there is always a free area allocated and returned in the middle of the memory area, such as A3 of FIG. 3. To allocate the memory, an empty area, that is, an unallocated area (from the TOP area, which is the head of the memory area, through the Next pointer) Empty Block), and if the size of the empty area is suitable for the required size, memory is allocated, but if there is no size allocated, the required size is compared in the final area. Likewise, the optimal size memory allocation method is to allocate the required size by creating a new last region.
그리고, 메모리 할당 속도를 높이기 위해서, 항상 마지막 메모리에서 메모리를 할당하고, 마지막 메모리가 부족하면, 전술한 최적 크기의 메모리 할당방법을 사용하는 방법이 마지막 메모리 할당방법이다.In order to increase the memory allocation speed, the memory is always allocated from the last memory, and if the last memory is insufficient, the method of using the above-described optimal size memory allocation method is the last memory allocation method.
그러나, 종래의 메모리 할당방법에서, 최적 크기의 메모리 할당방법은 플래그 상태가 비할당(Empty)이고, 메모리 크기가 요구 크기에 부합하는 것인지를 탐색비교하기 위해서는 많은 시간이 소요된다는 문제점이 있다.However, in the conventional memory allocation method, the optimal size memory allocation method has a problem that the flag state is empty and it takes a long time to search and compare whether the memory size meets the required size.
또한 종래의 마지막 메모리 할당방법은, 처음에는 할당속도가 빠를 수 있지만 나중에는 할당 속도가 늦어지게 되고, 최적 메모리 할당이 아니기 때문에 대용량의 메모리가 요구될 때에는 비할당 영역이 여러 곳에 산재하게 됨으로써, 실제 비할당된 전체 영역은 메모리 할당 가능하지만, 할당 가능한 크기의 메모리가 존재하지 않을 수 있다는 문제점이 있다.In addition, the conventional last memory allocation method may be faster at first but later becomes slower, and is not an optimal memory allocation. Therefore, when a large amount of memory is required, unallocated areas are scattered in various places. Although the entire unallocated area is memory assignable, there is a problem that there is no memory of the assignable size.
따라서, 본 발명은 상기와 같은 문제점을 해결하기 위해 창작된 것으로서, 메모리 할당방법에 있어서, 최적 크기의 메모리 할당방법을 사용하면서, 비할당 영역을 지칭하는 비할당 포인터(Empty Pointer)를 사용하여, 메모리 구조에서 항상 비할당 영역만을 탐색하여 고속으로 메모리를 할당할 수 있게 하는데 그 목적이 있는 것이다.Therefore, the present invention was created to solve the above problems, and in the memory allocation method, using an unallocated pointer that refers to an unallocated area while using an optimal size memory allocation method, The goal is to always allocate memory at high speed by searching for unallocated regions in the memory structure.
도 1은 종래의 기술에 따른 메모리 체인(Memory Chain)의 일실시예를 도시하고 있고,1 illustrates an embodiment of a memory chain according to the prior art,
도 2a 및 도 2b는 종래의 기술에 따른 메모리 할당 전과 할당 후의 마지막 메모리 체인을 도시하고 있고,2A and 2B show the last memory chain before and after memory allocation according to the prior art;
도 3은 종래의 기술에 따른 비할당 영역에 메모리를 할당하는 메모리 체인을 도시하고 있고,3 illustrates a memory chain for allocating memory to an unallocated area according to the related art.
도 4는 종래의 기술에 따른 메모리 맵의 구조를 도시하고 있고,4 illustrates a structure of a memory map according to the related art.
도 5는 본 발명에 따른 비할당 포인터(Empty Pointer)를 사용하는 메모리 체인을 도시하고 있고,5 illustrates a memory chain using an Unassigned Pointer according to the present invention,
도 6은 본 발명에 따른 다음 메모리 영역 포인터를 생략한 메모리 체인을 도시하고 있고,Figure 6 shows a memory chain omitting the next memory area pointer in accordance with the present invention,
도 7은 본 발명에 따른 메모리 맵의 구조를 도시하고 있고,7 shows a structure of a memory map according to the present invention,
도 8은 본 발명의 실시예에 따른 메모리 할당방법의 동작흐름도이다.8 is a flowchart illustrating a memory allocation method according to an embodiment of the present invention.
※ 도면의 주요부분에 대한 부호의 설명※ Explanation of code for main part of drawing
10 : Top 메모리 영역 20 : 제1 메모리 영역10: Top memory area 20: First memory area
30 : 제2 메모리 영역 40 : 제4 메모리 영역30: second memory area 40: fourth memory area
상기와 같은 목적을 달성하기 위한 본 발명에 따른 메모리 할당방법은 메모리가 비어 있는 영역에 다음의 메모리가 비어있는 메모리 영역을 지칭하는 비할당 포인터를 설정하는 제1 단계; 및 메모리 할당시 상기 비할당 포인터를 기준으로 하여 메모리 영역을 탐색할당하는 제2 단계를 포함하여 이루어지는 것에 특징이 있는 것이다.According to an aspect of the present invention, there is provided a memory allocation method, comprising: a first step of setting an unassigned pointer indicating a memory area in which a next memory is empty in an area in which the memory is empty; And a second step of searching for and allocating a memory area based on the unassigned pointer when allocating a memory.
상기와 같이 이루어지는 본 발명에 따른 메모리 할당방법은, 플래그, 요구 크기 등으로 이루어진 메모리 구조에 있어서, 메모리가 비어있는 곳을 지칭하는 비할당 포인터를 추가시킴으로써, 즉, 메모리가 비어 있는 영역에 비할당 포인터를 설정함으로써, 메모리 할당시 상기 비할당 포인터를 가진 메모리 영역만을 고속으로 탐색 및 할당할 수 있다.In the memory allocation method according to the present invention made as described above, in a memory structure composed of a flag, a request size, and the like, by adding an unassigned pointer indicating a place where the memory is empty, that is, the memory is unallocated to the area where the memory is empty. By setting the pointers, only memory areas having the unallocated pointers can be searched and allocated at high speed during memory allocation.
이하, 본 발명에 따른 메모리 할당방법의 바람직한 실시예에 대해 첨부된 도면에 의거하여 상세히 설명하겠다.Hereinafter, a preferred embodiment of a memory allocation method according to the present invention will be described in detail with reference to the accompanying drawings.
도 5는 본 발명에 따른 비할당 포인터(Empty Pointer)를 사용하여 메모리가 할당된 영역을 도시하는 메모리 체인 도면으로서, 메모리 영역의 할당(Alloc.)/비할당(Empty) 상태를 나타내는 플래그(Flag)와 할당할 수 있는 크기(Size) 등을 갖는 메모리 구조에 있어서, 헤더를 나타내는 TOP 메모리 영역(10)을 설정하는 제1 단계; 상기 플래그 상태가 메모리가 비어 있는 비할당 상태일 경우, 다음의 비할당 상태의 메모리 영역을 지칭하는 비할당 포인터를 가진 비할당 메모리 영역(20,40)을 설정하는 제2 단계; 및 비어 있는 메모리 영역에 메모리를 할당하고, 플래그를변경하여 할당 메모리 영역(30)을 설정하는 제3 단계를 포함하여 이루어지고, 플래그 및 요구 크기 등을 갖는 메모리 구조에 있어서, 메모리가 비어 있는 영역에 비할당 포인터를 설정함으로써, 메모리 할당시 상기 플래그가 비할당 상태일 경우, 다음의 비할당 상태의 메모리 영역을 지칭하는 비할당 포인터에 의해 A1 영역(20)에서 A3 영역(40)으로 직접 탐색가능하고, 즉, 메모리가 할당된 메모리 영역(30)인 A2 영역(30)을 거치지 않고 상기 비할당 포인터를 가진 메모리 영역만을 고속으로 탐색 및 할당할 수 있다는 특징을 갖는다.FIG. 5 is a memory chain diagram illustrating a region in which memory is allocated using an unallocated pointer according to the present invention. FIG. 5 is a flag indicating an alloc / empty state of a memory region. 1. A memory structure having a size and an assignable size, comprising: a first step of setting a TOP memory area 10 representing a header; A second step of setting an unallocated memory area (20, 40) having an unallocated pointer indicating a memory area of a next unallocated state when the flag state is an unallocated state in which the memory is empty; And a third step of allocating memory to the empty memory area, changing the flag to set the allocated memory area 30, and having a flag, a required size, etc. By setting an unassigned pointer to, if the flag is in an unallocated state when allocating memory, a direct search is made from the A1 region 20 to the A3 region 40 by an unallocated pointer that refers to the memory region of the next unallocated state. That is, it is possible to search and allocate only the memory area having the unassigned pointer at high speed without passing through the A2 area 30 which is the memory area 30 to which the memory is allocated.
도 8은 본 발명에 따른 메모리 할당방법의 동작흐름도로서, 도 5의 메모리 체인 구조를 참고로 하여, 이하 병행하여 설명한다.8 is a flowchart illustrating an operation of a memory allocation method according to the present invention, with reference to the memory chain structure of FIG. 5.
도 5에서, 메모리 영역에 다음의 비할당 영역을 지칭하는 비할당 포인터를 설정하여, 다음의 비할당 영역을 찾을 때는 전술한 종래의 A1 → A2 → A3의 경로에서, A1(20) → A3(40)의 경로로 바로 비할당 영역을 찾을 수 있게 하고, 처음의 비할당 영역도 TOP(10) → A1(20)의 순서로 찾는 것이 아니라, 비할당 포인터를 설정하여, 처음의 비할당 영역을 바로 지정할 수 있다. 그런데 도 5와 같이, 다음의 비할당 영역을 고속으로 탐색하기 위해 상기 비할당 포인터를 추가하게 되면, 관리용 메모리가 커지게 된다.In Fig. 5, by assigning a non-allocating pointer to the next unallocated area in the memory area, when searching for the next unallocated area, A1 (20) → A3 ( It is possible to find the unallocated area immediately by the path of 40), and not to search the first unallocated area in the order of TOP (10) → A1 (20), but to set the unallocated pointer to find the first unallocated area. You can specify it immediately. However, as shown in FIG. 5, when the unallocated pointer is added to search the next unallocated region at high speed, the management memory becomes large.
도 6은 메모리 관리를 효율화하기 위한 메모리 체인의 구성도로서, 전술한 도 4와 표 1에서, 다음 메모리 영역 포인터(Next Pointer)는 char Data[Size] 다음의 어드레스와 같게 되는 것을 알 수 있다. 즉, Next Pointer = 데이터 어드레스(Data Address)와 크기(Size)의 합이 되므로, 상기 Next Pointer는 가지고있을 필요가 없이 연산에 의해서 지정할 수 있는 것이다,FIG. 6 is a configuration diagram of a memory chain for streamlining memory management. In FIG. 4 and Table 1, it can be seen that the next memory area pointer Next Point becomes equal to an address after char Data [Size]. That is, Next Pointer = the sum of the Data Address and the Size, so the Next Pointer does not need to have it, and can be specified by operation.
다시 말하면, 상기 표 2에서와 같이, 상기 Next Pointer는 실제로 메모리 영역 상에서 어드레스를 할당받아 존재하는 것이 아니고, 연산에 의해서 구해지게 된다.In other words, as shown in Table 2, the Next Pointer does not actually exist by being allocated an address on the memory area, but is obtained by an operation.
도 7은 본 발명에 따른 메모리 맵의 구조도로서, 전술한 도 4와 비교하여, 다음의 메모리 영역 포인터(Next Pointer) 대신에 별도로 비할당 포인터를 사용하는 것을 도시하고 있고, 이때 상기 다음의 메모리 영역 포인터는 연산에 의해 구해지게 된다.FIG. 7 is a structural diagram of a memory map according to an embodiment of the present invention, which illustrates using an unassigned pointer separately in place of a next memory area pointer (Next Pointer) as compared to FIG. 4 described above. The pointer is obtained by operation.
한편, 전술한 도 6의 메모리 체인을 사용하여 메모리를 할당하는 방법은 다음과 같다. 도 8에서, 유틸리티가 자료를 저장하기 위해 메모리 영역을 요구하게 되면(S11), 기설정된 비할당 포인터를 기준으로 하여 메모리 영역 크기를 검사하고, 요구되는 메모리 크기에 부합하는지 확인한다(S12). 만일 메모리 크기가 부합하지 않으면, 다음의 비할당 영역을 확인하게 된다. 즉, 첫 번째 비할당 영역(A1)의 크기(Size)가 20Kbyte인데, 요구되는 메모리 크기가 30Kbyte이면, 첫 번째 비할당 영역은 스킵(Skip)하고, 다음의 비할당 영역인 A3 영역(40)을 검사하게 된다.Meanwhile, a method of allocating a memory using the aforementioned memory chain of FIG. 6 is as follows. In FIG. 8, when the utility requests a memory area to store data (S11), the memory area size is checked based on a preset unassigned pointer and the memory area is checked to meet the required memory size (S12). If the memory size does not match, the next unallocated area is checked. That is, if the size of the first unallocated area A1 is 20 Kbytes and the required memory size is 30 Kbytes, the first unallocated area is skipped, and the next unallocated area A3 area 40. Will be examined.
그리고 다음의 비할당 영역을 검사하여, 유틸리티가 요구하는 크기에 부합하면, 즉 유틸리티가 요구한 크기보다 작지 않으면(S13), 그리고 비할당 메모리 영역의 크기가 (요구되는 크기 + 헤더의 크기)를 초과하지 않으면(S14), 해당 메모리 영역을 할당하고(S15), 플래그를 Alloc,로 변경한다(S16). 여기에서 상기 (요구되는 크기 + 헤더의 크기)에 따라서 빅(Big) 메모리 영역 여부를 판단하게 된다.Then, the next unallocated area is checked, if it meets the size required by the utility, i.e. not smaller than the size requested by the utility (S13), and the size of the unallocated memory area is (required size + size of header). If not exceeded (S14), the corresponding memory area is allocated (S15), and the flag is changed to Alloc, (S16). Herein, it is determined whether or not the big memory area is based on the (required size + size of header).
만일 상기 탐색된 비할당 메모리 영역의 크기가 (요구되는 크기) + 헤더의 크기를 초과하면, 즉, 요구되는 크기보다 너무 클 경우에는(S14), 일단 상기 영역을 빅(Big) 영역 포인터(BBP)에 할당하게 된다. 여기에서 상기 빅 영역 포인터(BBP)에 기 할당된 기존의 빅 메모리 영역이 있다면(S17), 이 영역은 무시하고, 처음의 빅 영역 포인터(BBP)를 할당한다(S18). 만일, 기 할당된 기존의 빅 메모리 영역이 없다면(S17), 비할당 메모리 영역을 빅 영역 포인터(BBP)로 할당하게 된다(S19). 이때 상기 빅 메모리 영역을 설정 및 할당하는 것은 비할당 영역이 작은 부분부터 사용하기 위해서이고, 상기 빅 영역 포인터(BBP)의 메모리 영역은 최소값을 선택하면 메모리 할당 효율을 높일 수 있다.If the size of the searched unallocated memory area exceeds the (required size) + header size, i.e., is too large than the required size (S14), once the area is a big area pointer (BBP) Will be assigned to). If there is an existing big memory area previously allocated to the big area pointer BBP (S17), the area is ignored and the first big area pointer BBP is allocated (S18). If there is no pre-allocated existing big memory area (S17), the unallocated memory area is allocated to the big area pointer BBP (S19). In this case, setting and allocating the big memory area is to use the small portion of the unallocated area, and selecting the minimum value of the memory area of the big area pointer BBP may increase the memory allocation efficiency.
만일 상기 비할당 영역을 마지막까지 탐색하여 요구되는 메모리 크기에 부합되는 영역이 없는 경우(S20), 즉, 메모리 크기가 요구된 크기보다 크거나, (요구크기 + 헤더크기) 보다 작은 메모리 영역이 없는 경우에는, 전술한 빅 영역 포인터가 지칭하는 메모리 영역을 할당하고(S21), 플래그를 Alloc.로 변경하게 된다(S22).If there is no area matching the required memory size by searching the unallocated area to the end (S20), that is, there is no memory area larger than the required size or smaller than (required size + header size). In this case, the memory area indicated by the above-mentioned big area pointer is allocated (S21), and the flag is changed to Alloc. (S22).
따라서, 본 발명은 시스템에서 동적으로 사용하는 램(RAM) 등의 주기억장치인 메모리의 할당시에, 최적 크기 할당방법을 사용하면서, 메모리 영역이 비어있는, 즉 플래그 상태가 비할당(Empty) 상태인 메모리 영역만을 고속으로 탐색하여할당하고, 만일 할당할 메모리 영역이 너무 큰 빅 메모리 영역일 경우에는 빅 메모리 영역 중에서도 상대적으로 작은 부분부터 메모리를 할당하게 된다.Accordingly, the present invention utilizes an optimal size allocation method when allocating memory, which is a main memory such as RAM, which is dynamically used in the system, while the memory area is empty, that is, the flag state is not assigned. Only the in-memory area is searched and allocated at high speed, and if the memory area to be allocated is a big memory area that is too large, the memory is allocated from a relatively small portion among the big memory areas.
상기와 같이 이루어지는 본 발명에 따른 메모리 할당방법은, 비할당 포인터를 사용하여 메모리 할당시 최적의 메모리를 고속으로 할당할 수 있으며, 소프트웨어 처리 속도의 고속화에 따라서 저가의 CPU 사용이 가능한 유용한 발명인 것이다.The memory allocation method according to the present invention as described above is a useful invention that can allocate the optimal memory at the time of memory allocation using a non-allocating pointer at a high speed, and that a low-cost CPU can be used according to the speed of the software processing speed.
Claims (5)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980020756A KR100315500B1 (en) | 1998-05-28 | 1998-05-28 | Memory allocating method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1019980020756A KR100315500B1 (en) | 1998-05-28 | 1998-05-28 | Memory allocating method |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19990086969A KR19990086969A (en) | 1999-12-15 |
KR100315500B1 true KR100315500B1 (en) | 2002-02-19 |
Family
ID=37531584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980020756A KR100315500B1 (en) | 1998-05-28 | 1998-05-28 | Memory allocating method |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100315500B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101980581B1 (en) * | 2019-02-11 | 2019-05-21 | (주)베스트케이에스 | Method for managing memory of tandem system |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100468276B1 (en) * | 2001-12-13 | 2005-01-27 | (주)아이디스 | Storage and Search Method of multimedia data |
KR100449081B1 (en) * | 2001-12-24 | 2004-09-18 | 엘지전자 주식회사 | Memory Control Apparatus and Method of Date Processing System |
KR100883651B1 (en) * | 2006-05-18 | 2009-02-18 | 삼성전자주식회사 | Method and apparatus for allocating free space of disc for a file to be written on the disc |
-
1998
- 1998-05-28 KR KR1019980020756A patent/KR100315500B1/en not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101980581B1 (en) * | 2019-02-11 | 2019-05-21 | (주)베스트케이에스 | Method for managing memory of tandem system |
Also Published As
Publication number | Publication date |
---|---|
KR19990086969A (en) | 1999-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5802341A (en) | Method for the dynamic allocation of page sizes in virtual memory | |
US5848423A (en) | Garbage collection system and method for locating root set pointers in method activation records | |
US7467271B2 (en) | Operating system permitting limited access to a system page | |
US5539899A (en) | System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage | |
US7743222B2 (en) | Methods, systems, and media for managing dynamic storage | |
US6314436B1 (en) | Space-limited marking structure for tracing garbage collectors | |
US6460126B1 (en) | Computer resource management system | |
JP4511653B2 (en) | Method and apparatus for memory allocation in a multi-threaded virtual machine | |
EP0814405B1 (en) | Method and apparatur for information processing and memory allocation system | |
US5109336A (en) | Unified working storage management | |
US6487563B1 (en) | Memory reclamation method | |
CA2212316C (en) | A method of recognizing fixed and variable sized data objects in memory | |
US8214577B2 (en) | Method of memory management for server-side scripting language runtime system | |
US7500077B2 (en) | Use of region-oriented memory profiling to detect heap fragmentation and sparse memory utilization | |
US6363468B1 (en) | System and method for allocating memory by partitioning a memory | |
US20060026183A1 (en) | Method and system provide concurrent access to a software object | |
JPH10254756A (en) | Use of three-state reference for managing referred object | |
US5680582A (en) | Method for heap coalescing where blocks do not cross page of segment boundaries | |
KR100349958B1 (en) | Method and apparatus for memory management | |
CN111984425A (en) | Memory management method, device and equipment for operating system | |
EP0892351A1 (en) | Large memory allocation method and apparatus | |
EP0403124A2 (en) | Overlay swapping | |
US6600493B1 (en) | Allocating memory based on memory device organization | |
US5987529A (en) | Invoking a method in an object-oriented computer program | |
US6895583B1 (en) | Task control block for a computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20070918 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |