KR100315500B1 - Memory allocating method - Google Patents

Memory allocating method Download PDF

Info

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
Application number
KR1019980020756A
Other languages
Korean (ko)
Other versions
KR19990086969A (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 KR1019980020756A priority Critical patent/KR100315500B1/en
Publication of KR19990086969A publication Critical patent/KR19990086969A/en
Application granted granted Critical
Publication of KR100315500B1 publication Critical patent/KR100315500B1/en

Links

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
    • G06F12/023Free address space management
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing 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

PURPOSE: A memory allocating method is provided to allocate a memory at high speed using an empty pointer which designates an empty area, thereby searching an empty area continuously in a memory structure. CONSTITUTION: In a memory structure having a flag for displaying an allocation/empty status of a memory area and an allocation available size, a TOP memory area(10) for displaying a header is set. In the case that a flag status is an empty status, empty memory areas(20,40) having an empty pointer for designating a memory area of the next empty status are set. A memory is allocated in an empty memory area, a flag is changed, and an allocated memory area(30) is set.

Description

메모리 할당방법Memory allocation method

본 발명은 메모리 할당방법에 관한 것으로서, 더욱 상세하게는 메모리 구조에 있어서 빈 메모리 영역을 나타내는 비할당 포인터(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.

프로그램 상의 메모리 영역 구조(Struct Memory Block)Structure Memory Block in Program StructStruct Memory Block *prevMemory Block * prev 이전 메모리 영역 포인터(Prev. Pointer)Previous Memory Area Pointer (Prev. Pointer) StructStruct Memory Block *nextMemory Block * next 다음 메모리 영역 포인터(Next Pointer)Next memory area pointer intint SizeSize 유틸리티에서 요구한 메모리 크기Memory size required by utility charchar FlagFlag 메모리 영역의 상태(Alloc, Empty)Status of memory area (Alloc, Empty) charchar TASK_IDTASK_ID 메모리를 요구하는 작업의 식별번호Identification number of the job requiring memory charchar Data[Size}Data [Size} 사용자 시스템에 할당하는 실제 메모리 어드레스Physical memory address assigned to your 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.

프로그램 상의 메모리 영역 구조(Struct Memory Block)Structure Memory Block in Program StructStruct Memory Block *prevMemory Block * prev 이전 메모리 영역 포인터(Prev Pointer)Previous Memory Area Pointer (Prev Pointer) StructStruct Memory Block *EmptyMemory Block * Empty 다음 Empty 영역 포인터(Empty Pointer)Next Empty Area Pointer intint SizeSize 유틸리티에서 요구한 메모리 크기Memory size required by utility charchar FlagFlag 메모리 영역의 상태; Alloc, EmptyState of memory area; Alloc, Empty charchar TASK_IDTASK_ID 메모리를 요구하는 작업의 식별번호Identification number of the job requiring memory charchar Data[Size}Data [Size} 사용자 시스템에 할당하는 실제 메모리 어드레스Physical memory address assigned to your system /* Struct Memory Block *next = address of Data + Size *// * Struct Memory Block * next = address of Data + Size * /

다시 말하면, 상기 표 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)

메모리가 비어 있는 영역에, 비어있는 다음 메모리 영역을 지칭하는 비할당 포인터를, 연산에 의해 설정하는 제1 단계; 및A first step of setting, by an operation, an unassigned pointer indicative of the next empty memory area in an area where the memory is empty; And 상기 비할당 포인터를 참조하여 빈 메모리 영역을 탐색한 후, 탐색된 빈 메모리 영역의 크기가 작은 부분부터, 요청된 데이터 저장공간으로 할당하는 제2 단계를 포함하여 이루어지는 메모리 할당방법.And searching for an empty memory area with reference to the unallocated pointer, and then allocating the searched empty memory area to a requested data storage space starting from a small portion of the searched empty memory area. 제1 항에 있어서,According to claim 1, 상기 제1 단계의 비할당 포인터는, 할당하는 데이터 어드레스와 요구되는 메모리 크기를 합산하는 연산 과정에 의해 합산된 값이, 다음의 메모리 영역을 지칭하는 포인터 값으로 지정되는 것을 특징으로 하는 메모리 할당방법.The non-allocating pointer of the first step is a memory allocation method characterized in that the summed value obtained by the arithmetic operation of adding the allocated data address and the required memory size is designated as a pointer value indicating a next memory area. . 제1 항에 있어서,According to claim 1, 상기 비할당 포인터는, 첫 번째 비할당 영역 지정시 헤더 영역을 거치지 않고 직접 지정하는 것을 특징으로 하는 메모리 할당방법.The non-allocating pointer is a memory allocation method, characterized in that the first non-assigned region designation directly specified without passing through the header area. 메모리 할당방법에 있어서,In the memory allocation method, 비어있는 메모리 영역을 지칭하는 비할당 포인터를 참조하여 빈 메모리 영역을 탐색하는 제1 단계;Searching for an empty memory area with reference to an unassigned pointer indicating an empty memory area; 탐색된 비할당 메모리 영역의 크기를, 데이터의 크기와 비교하는 제2 단계; 및A second step of comparing the size of the searched unallocated memory area with the size of data; And 상기 비교결과에 따라 상기 탐색된 비할당 메모리를 할당하거나, 또는 데이터의 크기와 비교하여 메모리가 일정 크기 이상인 경우, 빅(Big) 메모리로 지정하는 제3 단계를 포함하여 이루어지는 메모리 할당방법.And a third step of allocating the searched unallocated memory according to the comparison result, or designating the memory as a big memory when the memory is larger than or equal to a predetermined size in comparison with the size of data. 제4 항에 있어서,The method of claim 4, wherein 상기 제3 단계는,The third step, 상기 탐색된 비할당 메모리 영역의 크기가, 상기 데이터의 크기보다 일정 값 이상 크면 기 지정된 빅 메모리 영역이 존재하는지 확인하는 제1 하위단계;A first substep of checking whether a predetermined big memory area exists when the size of the searched unallocated memory area is larger than a size of the data; 기 지정된 빅 메모리 영역이 존재하면, 상기 탐색된 비할당 메모리 영역의 크기와 비교하는 제2 하위단계;A second substep of comparing a size of the searched unallocated memory area if a predetermined big memory area exists; 상기 제2 하위단계의 비교결과에 따라, 상기 탐색된 비할당 메모리 영역이 더 큰 경우, 비할당 메모리를 빅 메모리로 설정하고, 비할당 메모리 영역이 더 작은 경우에는 마지막 비할당 영역까지, 상기 1단계부터 반복 수행하는 제3 하위단계; 및According to the comparison result of the second sub-step, if the searched unallocated memory area is larger, the unallocated memory is set to the big memory, and if the unallocated memory area is smaller, to the last unallocated area, 1 A third substep of repeating the step; And 상기 제3 하위단계에서 빅 메모리가 결정되지 않으면, 상기 빅 메모리 영역에 메모리를 할당하는 제4 하위단계를 포함하여 이루어지는 메모리 할당방법.And a fourth substep of allocating a memory to the big memory area if the big memory is not determined in the third substep.
KR1019980020756A 1998-05-28 1998-05-28 Memory allocating method KR100315500B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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