KR20030071299A - Apparatus for managing memory - Google Patents
Apparatus for managing memory Download PDFInfo
- Publication number
- KR20030071299A KR20030071299A KR1020020010948A KR20020010948A KR20030071299A KR 20030071299 A KR20030071299 A KR 20030071299A KR 1020020010948 A KR1020020010948 A KR 1020020010948A KR 20020010948 A KR20020010948 A KR 20020010948A KR 20030071299 A KR20030071299 A KR 20030071299A
- Authority
- KR
- South Korea
- Prior art keywords
- memory
- free
- free memory
- unit area
- size
- Prior art date
- Legal status (The legal status 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 status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
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
실시간 운영 체제에서 사용할 수 있는 메모리 관리 장치에 관한 것으로서, 특히 메모리 관리자의 중요 정보를 저장하는 메모리 제어부와, 논리적으로 일정 크기의 단위 영역으로 구분되며, 메모리 할당/해제가 상기 단위 영역 단위로 이루어지는 메모리와, 상기 메모리의 각 단위 영역마다 매핑되며, 상기 메모리의 단위 영역의 사용 상태를 저장하여 응용 프로그램에 의해 할당되어 있는 메모리의 상태를 관리하는 메모리 비트맵과, 상기 응용 프로그램에 의해 할당되지 않은 여유 메모리를 관리하는 여유 메모리 관리자로 구성되어, 기존의 방법에 비하여 작은 용량의 관리 정보를 사용하면서도 작은 계산량으로 Best-Fit 방식의 메모리 할당 방식을 제공할 수 있으므로 메모리 효율성을 극대화할 수 있다.The present invention relates to a memory management apparatus that can be used in a real-time operating system, and more particularly, a memory controller for storing important information of a memory manager, and a memory logically divided into unit areas of a predetermined size, and memory allocation / release is performed in units of the unit area. A memory bitmap mapped to each unit area of the memory and storing a usage state of the unit area of the memory to manage a state of a memory allocated by an application program; and a spare not allocated by the application program; It is composed of a free memory manager that manages memory, and it can maximize memory efficiency because it provides the best-fit memory allocation method with a small amount of calculation while using a smaller amount of management information than the conventional method.
Description
본 발명은 실시간 운영 체제에서 사용할 수 있는 메모리 관리 장치에 관한 것이다.The present invention relates to a memory management apparatus that can be used in a real-time operating system.
일반적으로 운영 체제에서 메모리 관리 기능은 운영체제가 제공하는 가장 기본적인 기능인 동시에 가장 중요한 기능 중의 하나이다. 대부분의 운영 체제가 페이징(Paging), 가상 메모리(Virtual Memory)등의 고수준의 메모리 관리 기법을 제공하여 물리적 메모리의 제한을 극복하고 있으며, 응용 프로그램에서 메모리의 제한을 받는 일은 거의 없다.In general, the memory management function of the operating system is one of the most basic functions and the most important functions provided by the operating system. Most operating systems overcome the limitations of physical memory by providing high-level memory management techniques such as paging, virtual memory, and so on.
그러나 임베디드 시스템에서 주로 사용되는 실시간 운영 체제의 경우 물리적인 메모리의 크기에 의해 제한을 받을 뿐 아니라, 실시간 반응을 위하여 기본적인 메모리 관리 기법만을 제공한다.However, the real-time operating system used mainly in embedded systems is not only limited by the physical memory size but also provides basic memory management techniques for real-time response.
이런 특성은 개발자가 메모리의 운영에 항상 신경 써야 하며 개발 과정 중에 많은 메모리 튜닝 작업이 필요하게 된다. 또한 메모리의 효율적인 운용은 운영체제가 아닌 개발자의 역량에 달려있는 면이 많다.This feature requires the developer to always be concerned with the operation of memory and requires a lot of memory tuning during the development process. In addition, the efficient operation of memory depends in large part on the developer's ability, not on the operating system.
일반적으로 실시간 운영 체제에서 사용하는 메모리 관리 방식은 크게 두가지로 나눌 수 있다.In general, the memory management method used in the real-time operating system can be divided into two categories.
첫째는 고정 길이 관리 방식으로 일정 공간의 메모리를 고정된 크기의 유니트로 나누어 관리 방식이다. 이 방식은 같은 크기를 가지는 메모리를 할당/해제하는 경우에는 상당히 편리하지만, 메모리 크기를 미리 알 수 없는 경우에는 치명적인 문제점을 가지고 있다.The first is the fixed length management method, which divides a certain amount of memory into fixed sized units. This method is quite convenient when allocating / releasing memory of the same size, but has a fatal problem when the memory size is not known in advance.
실제 고정 길이 관리 방식을 사용할 때는 여러 크기의 단위 영역별로 메모리를 나누는 절충안을 택하고 있다. 가령 16byte x 1000개, 32byte x 1000개, 64byte x 1000개 등으로 나누어 메모리를 관리하게 된다. 위의 예에서 16바이트 메모리 영역이 모두 할당되어 여유 메모리가 없을 때는 32바이트의 메모리 영역에서 메모리를 할당하게 된다. 그러나 16바이트 메모리를 위하여 32바이트 메모리를 사용하였으므로 16바이트의 메모리를 허비하게 되는 문제가 있다. 따라서 시스템 개발 과정에 있어 각 단위 메모리 영역의 크기를 어느 정도 조정해야 하는 절차가 반드시 필요하게 된다. 그러나 조정 작업을 거치더라도 메모리를 효율적으로 사용한다는 보장이 없으며, 시스템의 안정성을 위하여 실제 요구되는 것보다 더 많은 공간을 확보해야 한다는 문제점을 안고 있다.In practice, fixed-length management is a trade-off between dividing memory into areas of different sizes. For example, memory is managed by dividing into 16byte x 1000, 32byte x 1000, and 64byte x 1000. In the above example, when all 16-byte memory areas are allocated and there is no free memory, memory is allocated from the 32-byte memory area. However, since 32 bytes of memory are used for 16 bytes of memory, 16 bytes of memory are wasted. Therefore, in the system development process, it is necessary to adjust the size of each unit memory area to some extent. However, there is no guarantee that the memory is used efficiently even though the adjustment is performed, and there is a problem that more space is required for the stability of the system than is actually required.
둘째는 가변 길이 관리 방식으로 임의의 크기를 가지는 메모리를 할당/해제할 수 있게 해주는 방식이다. 이 방식은 대부분의 개발자에게 익숙한 방식으로 고정 길이 관리 방식보다 메모리 효율적인 면에서는 나은 방식이라고 말할 수 있다.The second is a variable length management method that allows a user to allocate / free memory of any size. This approach is familiar to most developers and can be said to be better memory efficient than fixed length management.
상기 가변 길이 관리 방식의 경우의 메모리 할당 알고리즘으로 여러 가지 방법이 소개되고 있다. 이들은 크게 3가지로 분류할 수 있는데, 첫째로 요구된 메모리를 수용할 수 있는 가장 첫번째 여유 공간을 찾는 방식으로 First-Fit 방식이다. 둘째로 요구된 메모리를 수용할 수 있는 가장 작은 여유 공간을 찾는 방식으로 Best-Fit 방식이다. 셋째로 요구된 메모리를 수용할 수 있는 가장 큰 여유 공간을 찾는 방식으로 Worst-Fit 방식이다. 통계적으로 가장 메모리 효율을 높일 수 있는 방식은 Best-Fit 방식으로 알려져 있다.Various methods have been introduced as memory allocation algorithms in the case of the variable length management scheme. They can be categorized into three main categories: First-Fit, which finds the first free space to accommodate the required memory. Secondly, the best-fit method is to find the smallest free space that can accommodate the required memory. Third, the Worst-Fit method is to find the largest free space that can accommodate the required memory. Statistically, the best memory efficiency method is known as the best-fit method.
그러나, 상기된 가변 길이 관리 방식의 경우 운영체제의 커널에서 현재의 메모리 사용 상태 등을 관리하기 위하여 상당히 많은 양의 메모리를 관리 목적으로 둔다. 대표적인 실시간 운영 체제의 하나인 pSOS의 경우 고정 길이 관리 방식의 경우 관리 메모리용으로 5%이내의 추가 메모리가 필요하지만, 가변 길이 관리 방식의경우 20%이상의 추가 메모리를 요구하게 된다. 일반적으로 임베디드 시스템에 장착된 메모리의 크기가 몇 MByte 내외인 점을 생각하면 응용프로그램에서 사용할 수 있는 메모리의 양은 그만큼 더 줄어들게 된다.However, in the variable length management scheme described above, a large amount of memory is managed for managing purposes in the kernel of the operating system. In the case of pSOS, which is one of the representative real-time operating systems, the fixed length management method requires less than 5% of additional memory for the management memory, but the variable length management method requires more than 20% of the additional memory. In general, considering that the size of the memory embedded in the embedded system is about a few MBytes, the amount of memory available to the application is reduced by that much.
본 발명의 목적은 가변 길이의 메모리 관리 정보의 크기를 기존의 방식에 비하여 크게 줄일 수 있을 뿐 아니라, Best-Fit 방식의 메모리 할당 방법을 지원할 수 있도록 하는 실시간 운영 체제에서 사용 가능한 가변 길이 메모리 관리 장치를 제공함에 있다.An object of the present invention is not only to significantly reduce the size of the variable-length memory management information compared to the conventional method, but also variable-length memory management apparatus that can be used in the real-time operating system that can support the memory allocation method of the best-fit method In providing.
도 1은 본 발명에 따른 메모리 관리 장치의 블록 구성도1 is a block diagram of a memory management apparatus according to the present invention;
도 2는 도 1의 여유 메모리의 블록 구성도FIG. 2 is a block diagram illustrating a spare memory of FIG. 1.
도 3은 본 발명에 따른 메모리의 분할과 통합 예를 보인 도면3 is a diagram illustrating an example of partitioning and integrating a memory according to the present invention.
도 4는 본 발명에 따른 메모리 할당 과정을 보인 순서도4 is a flowchart illustrating a memory allocation process according to the present invention.
도 5는 본 발명에 따른 메모리 해제 과정을 보인 순서도5 is a flowchart illustrating a memory releasing process according to the present invention.
도면의 주요부분에 대한 부호의 설명Explanation of symbols for main parts of the drawings
101 : 메모리 제어부102 : 실제 메모리 영역101: memory control unit 102: real memory area
103 : 메모리 비트맵104 : 여유 메모리 관리자103: memory bitmap 104: free memory manager
201,202 : 여유 메모리 노드203,204 : 여유 메모리 영역201,202: free memory node 203,204: free memory area
상기와 같은 목적을 달성하기 위한 본 발명에 따른 메모리 관리 장치는, 메모리 관리자의 중요 정보를 저장하는 메모리 제어부; 논리적으로 일정 크기의 단위 영역으로 구분되며, 메모리 할당/해제가 상기 단위 영역 단위로 이루어지는 메모리; 상기 메모리의 각 단위 영역마다 매핑되며, 상기 메모리의 단위 영역의 사용 상태를 저장하여 응용 프로그램에 의해 할당되어 있는 메모리의 상태를 관리하는 메모리 비트맵; 그리고 상기 응용 프로그램에 의해 할당되지 않은 여유 메모리를 관리하는 여유 메모리 관리자로 구성되는 것을 특징으로 한다.Memory management apparatus according to the present invention for achieving the above object, the memory control unit for storing important information of the memory manager; A memory logically divided into a unit area having a predetermined size, and memory allocation / release is performed in the unit area unit; A memory bitmap mapped to each unit area of the memory, the memory bitmap storing a use state of the unit area of the memory and managing a state of the memory allocated by an application program; And a free memory manager that manages free memory not allocated by the application program.
상기 메모리 비트맵은 하나의 단위 영역에 2개의 비트가 할당되어 각 단위 영역의 사용 상태를 표시하는데, 하나의 비트는 연속된 단위 영역의 할당시 그 시작 위치를 표시하고, 다른 하나의 비트는 현재 할당된 영역인지 유무를 표시하는 것을 특징으로 한다.In the memory bitmap, two bits are allocated to one unit area to indicate a usage state of each unit area. One bit indicates a start position when allocating consecutive unit areas. It is characterized by indicating whether or not the allocated area.
상기 여유 메모리 관리자는 할당되지 않은 이웃하는 단위 영역들을 연결하여큰 여유 메모리 공간을 형성하고, 이에 대한 리스트를 관리하며, 메모리 해제 시에도 해제된 메모리 블록을 인접한 여유 메모리 블록과 연결하여 통합된 여유 메모리 블록을 형성하며, 이러한 여유 메모리 블록들은 여유 메모리 노드를 통하여 접근이 가능하도록 하는 것을 특징으로 한다.The free memory manager connects unallocated neighboring unit areas to form a large free memory space, manages a list thereof, and concatenates the freed memory blocks with adjacent free memory blocks even when the memory is released. Blocks are formed, and these free memory blocks are characterized in that accessible through the free memory node.
상기 여유 메모리 노드들은 여유 메모리 블록들을 저장하고 있으며, 지정하고 있는 여유 메모리 블록이 모두 없어졌을 때는 여유 메모리 노드 자체가 삭제되고, 여유 메모리 노드에서 관리하지 않는 새로운 크기의 여유 메모리 블록이 생겼을 경우에는 해당 블록을 지시하기 위한 여유 메모리 노드가 생성되어 여유 메모리 노드 리스트에 추가되는 것을 특징으로 한다.The free memory nodes store free memory blocks, and when all of the designated free memory blocks are deleted, the free memory node itself is deleted, and when there is a new free size memory block that is not managed by the free memory node. A free memory node for indicating a block is generated and added to the free memory node list.
상기 여유 메모리 노드들은 관리하는 여유 메모리 블록의 크기 순으로 정렬되는 것을 특징으로 한다.The free memory nodes are arranged in order of the size of the free memory blocks to be managed.
상기 여유 메모리 노드는 상기 여유 메모리 노드가 관리하는 여유 메모리 블록의 크기, 여유 메모리 블록에 대한 주소, 다음 여유 메모리 노드의 포인터로 구성되며, 상기 여유 메모리 노드에 의해 지시되는 여유 메모리 블록에는 관리 데이터를 저장하는 것을 특징으로 한다.The free memory node includes a size of a free memory block managed by the free memory node, an address for the free memory block, and a pointer to the next free memory node. The free memory block indicated by the free memory node includes management data. It is characterized by storing.
본 발명의 다른 목적, 특징 및 잇점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.Other objects, features and advantages of the present invention will become apparent from the following detailed description of embodiments taken in conjunction with the accompanying drawings.
이하, 첨부된 도면을 참조하여 본 발명의 실시예의 구성과 그 작용을 설명하며, 도면에 도시되고 또 이것에 의해서 설명되는 본 발명의 구성과 작용은 적어도 하나의 실시예로서 설명되는 것이며, 이것에 의해서 상기한 본 발명의 기술적 사상과 그 핵심 구성 및 작용이 제한되지는 않는다.Hereinafter, with reference to the accompanying drawings illustrating the configuration and operation of the embodiment of the present invention, the configuration and operation of the present invention shown in the drawings and described by it will be described as at least one embodiment, By the technical spirit of the present invention described above and its core configuration and operation is not limited.
도 1은 본 발명에 따른 메모리 관리 장치의 전체 시스템 구조이다.1 is an overall system structure of a memory management apparatus according to the present invention.
도 1을 보면, 메모리 관리자의 핵심 정보를 저장하는 메모리 제어부(101), 실제 시스템 RAM 영역(102), RAM 영역의 사용 상태 정보를 저장하고 있는 메모리 비트맵(103), 및 여유 메모리의 정보를 관리하는 여유 메모리 관리자(104)로 구성된다.Referring to Figure 1, the memory control unit 101 for storing the key information of the memory manager, the actual system RAM area 102, the memory bitmap 103 that stores the use state information of the RAM area, and the information of the free memory It consists of a spare memory manager 104 which manages.
상기 실제 RAM 영역(102)은 논리적으로 일정 크기의 단위 영역으로 나뉘어져서 관리된다. 가령 1Mbyte의 메모리를 관리함에 있어 단위 영역을 16byte로 결정하였다면, 상기 RAM 영역(102)에는 65,536개의 단위 영역이 생성된다.The actual RAM area 102 is logically divided into unit areas of a predetermined size and managed. For example, if the unit area is determined to be 16 bytes in managing 1 Mbyte of memory, 65,536 unit areas are created in the RAM area 102.
이때, 메모리 할당/해제는 모두 단위 영역 단위로 이루어진다.In this case, all of memory allocation / release are performed in unit area units.
이러한 단위 영역의 상태를 효율적으로 관리하고자 하는 것이 본 발명의 가장 큰 목적이다. 각 단위 영역의 상태는 메모리 비트맵(103)에 의해서 모니터링된다.It is the biggest object of the present invention to efficiently manage the state of such a unit area. The state of each unit area is monitored by the memory bitmap 103.
상기 메모리 비트맵(103)은 각각 하나의 단위 영역에 1:1 매핑된다.Each of the memory bitmaps 103 is 1: 1 mapped to one unit area.
그러나 단위 영역의 상태를 1bit로만 표현하는 것은 연속된 단위 영역 할당시 그 크기를 알 수 없는 단점이 있다. 가령 40byte의 메모리를 요구할 때 40byte를 수용할 수 있는 48byte(16byte*3)에 해당하는 메모리를 할당해야 하는데, 나중에 메모리 해제 시에 정확히 48byte를 해제하기 위해서는 인접한 단위 영역과 경계를 지을 수 있는 정보가 필요하다.However, expressing the state of a unit area only in 1 bit has a disadvantage in that its size cannot be known when allocating consecutive unit areas. For example, when 40 bytes of memory are required, 48 bytes (16 bytes * 3) of memory that can accommodate 40 bytes must be allocated.In order to release 48 bytes correctly when the memory is released later, information that can be bounded by adjacent unit areas is required. need.
따라서 본 발명에서는 1개의 bit를 더 사용하여 이러한 문제를 해결하고 있다. 이들은 각각 Start_bit, Alloc_bit라고 정의한다. 관리상의 잇점 및 연산 속도의 향상을 위하여 Start_bit, Alloc_bit는 같은 비트맵 공간에 위치한다. 즉 1 Mbyte의 메모리 상황을 표시하기 위해서는 65536*2 bit 즉 16,384 byte의 비트맵 메모리가 필요하다.Therefore, the present invention solves this problem by using one more bit. These are defined as Start_bit and Alloc_bit, respectively. Start_bit and Alloc_bit are located in the same bitmap space in order to improve management advantages and speed up computation. That is, in order to indicate the memory status of 1 Mbyte, 65536 * 2 bits, that is, 16,384 byte bitmap memory are required.
이와 같이 응용 프로그램에 의해 할당되어 있는 메모리의 상태를 메모리 비트맵(103)으로 관리하는 반면, 여유 메모리는 여유 메모리 관리자(104)에 의하여 관리된다. 상기 여유 메모리 관리자(104)는 할당되지 않은 단위 영역을 묶어서 최대한 큰 여유 메모리 공간을 만들어 이를 여유 메모리 블록으로 유지하는 일을 담당한다.In this way, the state of memory allocated by the application program is managed by the memory bitmap 103, while the free memory is managed by the free memory manager 104. The free memory manager 104 is responsible for binding the unallocated unit area to create the largest free memory space and maintaining it as a free memory block.
상기 여유 메모리 관리자(104)는 해당 크기의 여유 메모리의 위치를 가리키는 포인터(ptr)를 가지고 있어, 메모리를 요청할때 즉시 메모리를 할당받을 수 있도록 한다. 또한, 메모리 해제 시에 인접한 여유 메모리가 있는지 조사하여 이들을 합치는 작업까지 담당한다.The free memory manager 104 has a pointer (ptr) indicating the location of the free memory of the corresponding size, so that the memory can be immediately allocated when the memory is requested. It also takes care of merging adjacent free memories when merging them and merging them together.
다음은 메모리 비트맵(103)의 동작에 대해 상세히 설명한다.Next, the operation of the memory bitmap 103 will be described in detail.
상기 메모리 비트맵(103)의 주요 목적은 단위 영역의 메모리 상태를 표시하는 것이다. 하나의 단위 영역은 2개의 bit로 표현되는데 첫째는 Start_bit로 연속된 단위 영역의 할당시 그 시작 위치를 표시한다. 즉 시작 위치는 1, 아닌 경우에는 0으로 표시한다. 둘째는 alloc_bit로 현재 할당된 영역인지를 표시한다. 즉 현재 응용 프로그램에 의해서 할당된 영역은 1, 여유 메모리에 포함되는 영역은 0으로 표시한다.The main purpose of the memory bitmap 103 is to display the memory state of the unit area. One unit area is represented by two bits. First, Start_bit indicates the start position when allocating consecutive unit areas. In other words, the starting position is 1, otherwise 0 is indicated. The second is alloc_bit to indicate whether it is currently allocated. In other words, the area allocated by the current application is 1 and the area included in the free memory is 0.
Start_bit 와 Alloc_bit의 조합을 분석해보면 아래의 표 1과 같다.Analyzing the combination of Start_bit and Alloc_bit is shown in Table 1 below.
상기된 표 1의 조합에 근거할때 할당된 메모리는 (1,1) 비트 조합으로 시작하여 (0,1)비트 조합이 붙게 된다.Based on the combination of Table 1 above, the allocated memory starts with a (1,1) bit combination and is appended with a (0,1) bit combination.
그리고, 해당 메모리는 (1,1) 또는 (0,0)이 올때까지 연속된 메모리 블록이라고 이해할 수 있다.And, it can be understood that the memory is a continuous memory block until (1,1) or (0,0) comes.
따라서, (1,1) 비트 조합의 위치를 i라고 하고, 다음 (1,1) 또는 (0,0) 비트 조합이 나오는 위치를 j라고 가정한다면 현재 할당된 메모리의 크기는 (j-i) * 단위 사이즈(unit_size)가 된다.Thus, assuming that the location of the (1,1) bit combination is i and the location of the next (1,1) or (0,0) bit combination is j, the size of the currently allocated memory is (ji) * units. It is size (unit_size).
다음은 여유 메모리 관리자(104)에 대해서 상세히 설명한다.Next, the free memory manager 104 will be described in detail.
상기 여유 메모리 관리자(104)의 주요 기능은 할당되지 않은 단위 영역을 연결하여 하나의 큰 여유 메모리 블록을 형성하고 이에 대한 리스트를 관리하는 것이다. 또한, 메모리 해제 시에 해제된 메모리 블록을 인접한 여유 메모리 블록과 연결하여 통합된 여유 메모리 블록을 형성하는 것이다.The main function of the free memory manager 104 is to connect unallocated unit areas to form one large free memory block and manage a list thereof. In addition, the memory blocks released when the memory is released are connected to adjacent free memory blocks to form an integrated free memory block.
따라서, 여유 메모리는 항상 최대한 큰 블록으로 유지가 되며, 이러한 블록들은 여유 메모리 노드를 통하여 접근이 가능하다.Therefore, free memory is always maintained in the largest block possible, and these blocks can be accessed through the free memory node.
상기 여유 메모리 노드들은 관리하는 여유 메모리 블록의 크기 순으로 정렬되어 있어 탐색시 요구한 크기에 해당하는 노드를 빠르게 찾을 수 있다.The free memory nodes are arranged in the order of the size of the free memory blocks to be managed so that a node corresponding to the size required for the search can be quickly found.
이때, 상기 여유 메모리 노드는 항상 여유 메모리 블록을 저장하고 있으며, 지정하고 있는 여유 메모리 블록이 모두 없어졌을 때는 노드 자체가 삭제된다. 또한 노드에서 관리하지 않는 새로운 크기의 여유 메모리 블록이 생겼을 경우에는 해당 블록을 지시하기 위한 여유 메모리 노드가 생성되어 여유 메모리 노드 리스트에 추가된다.In this case, the free memory node always stores the free memory block, and when all of the designated free memory blocks disappear, the node itself is deleted. In addition, when a new size of free memory block is not managed by the node, a free memory node for indicating the block is created and added to the free memory node list.
이들을 좀 더 자세히 살펴보면 도 2와 같이 여유 메모리 노드(201,202)는 크게 3개의 필드로 구성되어 있다. 즉, 상기 여유 메모리 노드(201,202)는 각각 이들이 관리하는 여유 메모리 블록의 크기(Size), 여유 메모리 블록에 대한 주소(memory address), 다음 여유 메모리 노드의 포인터(next)로 구성된다.In more detail, as shown in FIG. 2, the spare memory nodes 201 and 202 are largely composed of three fields. That is, each of the free memory nodes 201 and 202 is composed of a size of free memory blocks managed by them, an address for the free memory blocks, and a pointer of the next free memory node.
따라서, 메모리 할당 시에는 응용 프로그램에서 요구하는 크기를 만족시키는 여유 메모리 노드를 찾아 이에 연결된 RAM 영역의 주소를 할당하면 된다.Therefore, when allocating memory, it is necessary to find a free memory node that satisfies the size required by an application program and allocate an address of a RAM region connected thereto.
실제로 응용 프로그램에서 요구하게 될 메모리의 크기는 다양하기 때문에 여유 메모리 노드가 몇 개가 필요한지 미리 알 수는 없다. 따라서 본 발명에서는 여유 메모리 노드의 양은 일정 수준으로 제한된다.In fact, the amount of memory the application will require varies, so it is impossible to know in advance how many free memory nodes you will need. Therefore, in the present invention, the amount of free memory nodes is limited to a certain level.
실시간 운영 체제를 사용하는 임베디드 시스템의 특성상 요구하는 메모리의 패턴은 어느 정도 예측 가능하기 때문에 여유 메모리 노드의 양은 어느 정도 고정된 값으로 정해질 수 있다. 물론 실제 구현 시에는 예외 상황까지 수용할 수 있도록 값을 정하게 된다. 여유 메모리 노드의 크기는 12 byte정도이므로 비교적 여유 있게 잡더라도 기존의 방법에 비하여 관리 목적의 메모리 사용량은 적은 편이다.Due to the characteristics of the embedded system using a real-time operating system, the required memory pattern can be predicted to some extent, so that the amount of free memory nodes can be set to a fixed value to some extent. Of course, the actual implementation will set the value to accommodate the exception. Since the size of the free memory node is about 12 bytes, the amount of memory used for management purposes is less than that of the conventional method even when the size is relatively large.
그리고, 상기 여유 메모리 노드(201,202)에 의해 지시되는 여유 메모리 블록(203,204)은 실제 RAM 영역을 의미한다. 응용 프로그램에게 할당되지 않는 RAM 영역은 여유 메모리 관리자(104)에서 여유 메모리 블록으로 지정하여 관리에 필요한 데이터를 기록하게 된다.In addition, the free memory blocks 203 and 204 indicated by the free memory nodes 201 and 202 represent actual RAM areas. The RAM area not allocated to the application program is designated as a free memory block in the free memory manager 104 to record data for management.
본 발명은 할당되지 않은 RAM 영역을 관리 데이터로 이용함으로써 여유 메모리를 관리하기 위한 관리 공간을 아낄 수 있게 된다. 따라서 본 발명에서는 RAM에 존재하는 여유 메모리 블록의 크기의 다양성에 의한 영향을 받을 뿐, 여유 메모리 블록의 개수에 의해서는 영향을 받지 않게 된다.The present invention saves a management space for managing the free memory by using an unallocated RAM area as management data. Therefore, in the present invention, it is not only influenced by the diversity of the size of the free memory blocks present in the RAM, but also by the number of free memory blocks.
본 발명에서는 여유 메모리 블록으로 관리되는 영역에 해당 블록의 앞부분과 뒷부분에 관리 정보를 기록한다. 앞부분에 기록되는 정보(header)에는 해당 메모리 블록의 크기, 같은 크기를 가지는 여유 메모리 블록을 서로 연결하기 위한 2개의 링크(prev link, next link) 등이 있어 12byte 의 공간을 차지한다. 블록의 마지막 4byte(tail)에는 블록의 시작 주소(header address)가 저장되는데, 인접한 블록에서 해당 블록의 정보에 쉽게 접근할 수 있는 창구 역할을 담당한다.In the present invention, management information is recorded at the front and the rear of the block in the area managed by the spare memory block. The information recorded at the beginning includes the size of the corresponding memory block and two links (prev link, next link) for connecting the free memory blocks having the same size to each other and occupy 12 bytes of space. In the last 4 bytes of the block, the header address of the block is stored. It serves as a window where the information of the block can be easily accessed from adjacent blocks.
예를 들어, 메모리 블록 P1,P2가 RAM 영역에서 인접해 있다고 가정하면, P2의 시작 좌표에서 4바이트 앞의 데이터를 읽게 되면 P1의 Tail 정보를 얻을 수 있다.For example, assuming that the memory blocks P1 and P2 are adjacent to each other in the RAM area, the tail information of P1 can be obtained by reading data four bytes before the start coordinates of P2.
즉, P2는 언제든지 P1의 header 정보를 얻을 수 있는 것이다. 반대로 P1의 시작 주소에 P1의 메모리 크기를 더한 주소는 P2의 시작 주소가 된다. 즉 P1은 언제든지 P2의 header 정보를 얻을 수 있는 것이다. 인접한 영역의 header 정보에 접근하기 위해서는 먼저 해당 영역이 여유 메모리인지를 알아야 하는데, 이것은 해당 영역의 메모리 비트맵(103)을 조사하면 알 수 있다.That is, P2 can obtain header information of P1 at any time. On the contrary, the address of P1 plus the memory size of P1 becomes the starting address of P2. That is, P1 can obtain header information of P2 at any time. In order to access header information of an adjacent region, first, it is necessary to know whether the region is free memory, which can be determined by examining the memory bitmap 103 of the region.
다음은 여유 메모리 블록의 분할(split)와 통합(merge)에 대해 설명한다.The following describes the split and merge of free memory blocks.
도 3은 시스템 초기 상태에서의 여유 메모리 블록의 분할과 통합의 한 예를 보여주는 도면이다. 도 3을 기준으로 분할과 통합 개념을 기술하면 다음과 같다.3 is a diagram illustrating an example of partitioning and consolidation of a spare memory block in a system initial state. The division and integration concept will be described with reference to FIG. 3 as follows.
일반적으로 응용 프로그램에서 크기 k인 메모리를 요구할 때, 요구된 메모리에 일치하는 여유 메모리 블록이 존재하기도 하지만, k보다 큰 여유 메모리 블록(302)를 이용해야 하는 경우도 많다.In general, when an application requires a memory of size k, there may be a free memory block 302 that is larger than k, although there may be free memory blocks that match the required memory.
여유 메모리 블록의 크기를 i라고 가정할 때, (i-k)에 해당하는 여유 메모리 공간(304)이 남게 된다.Assuming that the size of the free memory block is i, the free memory space 304 corresponding to (i-k) remains.
이 여유 메모리 공간의 크기를 j라고 정의하면, 응용 프로그램의 메모리 요구에 의해 크기 i의 여유 메모리 공간이 없어지고, 크기 j의 여유 메모리 공간이 생성된 효과를 가져온다. 이런 과정을 메모리 분할(split)이라고 정의한다.If the size of the free memory space is defined as j, the free memory space of size i is lost due to the memory request of the application, and the free memory space of size j is generated. This process is called memory split.
시스템 초기화 시에 시스템에는 RAM 영역 전체 크기의 1개의 여유 메모리 블록을 가지고 있다. 따라서 시스템 초기에 메모리 할당을 요청할 때 빈번한 메모리 분할 과정이 발생한다. 그러나 이러한 분할 과정은 과정이 단순하므로 시스템 성능 저하를 유발시키지 않는다. 분할 과정 종료 후 여유 메모리 노드의 정보도 아울러 갱신된다.At system initialization, the system has one free block of memory that is the size of the entire RAM area. Therefore, a frequent memory partitioning process occurs when a memory allocation request is made at the beginning of the system. However, this partitioning process is simple and does not cause system performance degradation. After the partitioning process, the information of the free memory node is also updated.
그리고, 응용 프로그램에서 크기가 k인 메모리(303)을 해제할 때, 여유 메모리 블록을 최대한 크게 유지한다는 원칙에 따라 RAM 영역에서 인접한 여유 메모리 블록(305)이 있는지 조사하게 된다. 인접한 여유 메모리 블록의 크기가 j라고 가정할 때, (j+k)에 해당하는 새로운 여유 메모리 블록이 형성된다. 이 여유 메모리 공간의 크기를 i라고 정의하면, 응용 프로그램의 메모리 해제에 의해 크기 j의 여유 메모리가 없어지고, 크기 i의 여유 메모리 블록이 생성된 효과를 가져온다. 이런 과정을 메모리 통합(merge)라고 한다.When the memory 303 having a size k is released by the application program, the free memory block 305 is examined in the RAM area according to the principle of keeping the free memory block as large as possible. Assuming that the size of the adjacent free memory block is j, a new free memory block corresponding to (j + k) is formed. If the size of the free memory space is defined as i, the free memory of size j is lost by freeing the memory of the application, and the free memory block of size i is generated. This process is called memory merge.
메모리 해제 시에 메모리 통합 과정은 최대 2번 발생하게 된다. 즉 Prev 블록과의 통합, Next 블록과의 통합이 발생할 수 있다. 통합 과정 종료 후 여유 메모리 노드의 정보도 아울러 갱신된다.When freeing memory, the memory consolidation process occurs up to two times. In other words, integration with Prev block and integration with Next block may occur. After completion of the consolidation process, the information of the free memory nodes is also updated.
이때, 메모리 분할과 통합이 다수 발생하게 되면, 다양한 크기를 가지는 여유 메모리 노드가 존재하게 된다.At this time, when a large number of memory partitioning and consolidation occurs, there are free memory nodes having various sizes.
시스템 초기화 때는 응용 프로그램이 요구하는 메모리의 크기에 비해 여유 메모리 블록의 크기가 큰 경우가 많지만, 일정 시간이 지난 이후에는 응용 프로그램에서 요구하는 크기의 메모리와 일치하는 여유 메모리 블록의 양이 점점 더 많아지게 된다. 아울러 메모리 분할과 통합 과정은 여유 메모리 블록의 크기를 최대한 크게 유지할 뿐 아니라, 응용 프로그램에서 요구한 크기에 맞는 여유 메모리 블록을 사용하게 함으로써 응용 프로그램의 가변 크기의 메모리 요구에도 효율적으로 대처할 수 있게 해준다.At system initialization, the size of free memory blocks is often larger than the amount of memory required by the application, but after a certain period of time, the amount of free memory blocks that match the amount of memory required by the application increases. You lose. In addition, the memory partitioning and consolidation process not only keeps the size of the free memory block as large as possible, but also makes it possible to efficiently cope with the variable memory requirements of the application by using the free memory block corresponding to the size required by the application.
다음은 메모리 할당(malloc) 알고리즘에 대한 설명이다.The following is a description of the memory allocation (malloc) algorithm.
본 발명에서의 메모리 할당 절차를 간단히 설명하면, 여유 메모리 노드 탐색과 해당 여유 메모리 노드에 연결된 여유 메모리 블록의 분할 과정으로 이루어져 있다.The memory allocation procedure of the present invention will be briefly described as follows. A process of partitioning a free memory block connected to the free memory node is performed.
메모리 할당 알고리즘은 도 4에 순서도로 기술되어 있다. 즉, 응용 프로그램에서 사이즈만큼의 메모리를 요구하게 되면(단계 401), 먼저 사이즈를 단위 영역의 크기 So의 정수배가 되는 크기 k로 정규화 한다(단계 402). 다음에 k를 수용할 수 있는 여유 메모리 블록이 있는지 조사해야 한다. 즉, 여유 메모리 노드 리스트를 탐색하여 크기 k를 수용할 수 있는 첫번째 노드 i를 찾는다(단계 403).The memory allocation algorithm is described in flow chart in FIG. In other words, if the application requires memory as much as the size (step 401), the size is first normalized to a size k that is an integer multiple of the size So of the unit area (step 402). Next we need to check if there are free memory blocks that can accommodate k. That is, the free memory node list is searched to find the first node i that can accommodate the size k (step 403).
만약 노드가 발견되지 않는다면(단계 404), 요구한 메모리를 수용할 수 없는 상태, 즉 메모리가 부족한 상황이므로 NULL을 리턴한다(단계 405).If the node is not found (step 404), NULL is returned (step 405) because the requested memory cannot be accommodated, i.e. out of memory.
한편, 노드 Ni가 발견되었다면 응용 프로그램에게 노드 Ni가 가리키고 있는 여유 메모리 블록을 리턴할 준비를 한다. 즉, 해당 메모리 블록의 시작 주소를 Ptr에 저장하고, 메모리 비트맵(103)을 크기 k만큼 (1,1)(0,1)과 같은 순서로 변경해준다. 또한, 해당 메모리 블록을 노드 리스트에서 삭제한다(단계 406). 만약 노드 Ni에 의해 관리되는 여유 메모리 블록의 크기 i가 k+So보다 크다면(단계 407), 즉 응용 프로그램에서 요구한 메모리를 제외한 영역이 단위 영역보다 크다면 (i-k)에 해당하는 크기만큼의 새로운 여유 메모리 블록이 형성된다(단계 408).On the other hand, if node Ni is found, it prepares to return the free memory block pointed to by node Ni to the application. That is, the start address of the memory block is stored in Ptr, and the memory bitmap 103 is changed in the same order as (1,1) (0,1) by the size k. The memory block is also deleted from the node list (step 406). If the size i of the free memory block managed by the node Ni is larger than k + So (step 407), that is, if the area excluding the memory requested by the application is larger than the unit area, the size corresponding to (ik) A new free memory block is formed (step 408).
그리고, 새롭게 생성된 여유 메모리 블록은 여유 메모리 노드 리스트에 추가된다(단계 409). 마지막으로 Ptr을 리턴한다(단계 410).The newly created free memory block is added to the free memory node list (step 409). Finally, Ptr is returned (step 410).
다음은 메모리 해제(free) 알고리즘에 대한 설명이다.The following is a description of the memory free algorithm.
본 발명에서의 메모리 해제 절차를 간단히 설명하면, 인접한 여유 메모리 블록과의 통합 후 새로운 여유 메모리 블록을 추가하는 과정으로 이루어져 있다.In brief, the memory releasing procedure according to the present invention consists of adding a new spare memory block after consolidation with adjacent free memory blocks.
메모리 할당 알고리즘은 도 5에 순서도로 기술되어 있다. 즉, 응용 프로그램에서 Ptr에 해당하는 메모리 해제를 요구하는 경우(단계 501), 먼저 해당 메모리 블록의 크기를 읽어야 한다. 따라서 Ptr에 해당하는 메모리 비트맵(103)을 조사하여 메모리 블록의 크기 k를 계산한다. 또한 해당 블록의 메모리 비트맵을 (0,0)으로 갱신한다(단계 502). 다음에는 Ptr과 k를 이용하여 이전(Prev) 여유 메모리 블록이 존재하는지 조사한다(단계 503). 즉, 이전(Prev) 여유 메모리 블록의 메모리 비트맵이 0으로 기록되어 있으면 이전(Prev) 메모리 블록이 존재한다고 판단할 수 있다. 따라서, Prev 여유 메모리 블록이 존재한다면 Ptr 과 k를 갱신하여, Prev 메모리 블록까지 수용할 수 있도록 한다. 이때 Prev 여유 메모리 블록은 해당 여유 메모리 리스트에서 삭제된다(단계 504). 또한, 다음(Next) 여유 메모리 블록에 대해서도 조사하여 만일 존재한다고 판단되면(단계 505), k를 갱신하여 Next 메모리 블록까지 수용할 수 있도록 한다. 이때 Next 여유 메모리 블록은 해당 여유 메모리 리스트에서 삭제된다(단계 506). 마지막으로 최종 구해진 Ptr과 k를 이용하여 여유 메모리 블록을 형성한 후(단계 507), 여유 메모리 노드에 추가한다(단계 508).The memory allocation algorithm is described in flow chart in FIG. That is, when the application program requires the memory release corresponding to Ptr (step 501), the size of the corresponding memory block must be read first. Accordingly, the size k of the memory block is calculated by examining the memory bitmap 103 corresponding to Ptr. In addition, the memory bitmap of the block is updated to (0,0) (step 502). Next, Ptr and k are used to check whether a prev free memory block exists (step 503). That is, if the memory bitmap of the prev free memory block is recorded as 0, it may be determined that the prev memory block exists. Therefore, if there is a Prev free memory block, Ptr and k are updated to accommodate the Prev memory block. At this time, the Prev free memory block is deleted from the corresponding free memory list (step 504). In addition, the next free memory block is also examined to determine if it exists (step 505), so that k is updated to accommodate the next memory block. At this point, the next free memory block is deleted from the corresponding free memory list (step 506). Finally, a free memory block is formed using the finally obtained Ptr and k (step 507), and then added to the free memory node (step 508).
이상에서와 같이 본 발명에서 제안하는 방법에 의하여 1MByte, 즉 1048576byte의 RAM 영역을 관리하기 위하여 필요한 메모리의 양을 계산해 보면 다음과 같다. 예를 들어, 단위 영역의 크기가 16byte, 100개의 여유 메모리 노드를 사용한다고 가정한다.As described above, the amount of memory required to manage the RAM area of 1MByte, that is, 1048576byte, by the method proposed by the present invention is calculated as follows. For example, assume that the size of a unit area uses 16 bytes and 100 free memory nodes.
먼저, 메모리 비트맵(103)의 크기를 계산해보면 2bit가 16byte를 표현하기때문에 (1048576*2)/(16*8)에 의하여 16,384byte가 필요하다. 또한, 여유 메모리 노드의 크기는 12byte이므로 여유 메모리 노드 리스트를 위한 메모리가 1,200byte 가 된다. 마지막으로 메모리 제어부(101)의 크기가 20byte가 필요하다.First, when calculating the size of the memory bitmap 103, since 2 bits represent 16 bytes, 16,384 bytes are required by (1048576 * 2) / (16 * 8). In addition, since the size of the free memory node is 12 bytes, the memory for the free memory node list is 1,200 bytes. Finally, the size of the memory controller 101 is 20 bytes.
따라서, 총 필요한 메모리는 28,404 byte이며, 이것은 1MByte의 2.7%에 해당하는 크기이다.Thus, the total required memory is 28,404 bytes, which is equivalent to 2.7% of 1MByte.
만약 단위 영역의 크기가 32byte라면 필요한 비트맵이 8,192 byte로 줄어들며, 총 필요한 메모리는 9,512 byte이며, 이것은 1 MByte 의 0.9%에 해당하는 크기이다.If the size of the unit area is 32 bytes, the required bitmap is reduced to 8,192 bytes, and the total required memory is 9,512 bytes, which is 0.9% of 1 MByte.
이와 같이 본 발명은 Best-Fit 방식을 지원하여 메모리의 효율을 높이며, 기존의 방식에 비하여 관리 정보의 크기를 최대 90% 정도까지 줄일 수 있다.As described above, the present invention increases the efficiency of the memory by supporting the Best-Fit method, and can reduce the size of the management information by up to about 90% compared to the existing method.
이상에서와 같이 본 발명에 따른 메모리 관리 장치에 의하면, 기존의 방법에 비하여 작은 용량의 관리 정보를 사용하면서도 작은 계산량으로 Best-Fit 방식의 메모리 할당 방식을 제공할 수 있으므로 메모리 효율성을 극대화할 수 있다. 또한 응용 프로그램에서 전체적으로 필요한 메모리 양만을 예측하게 함으로써, 개발자 능력에 상관없이 효율성 있게 메모리를 관리할 수 있도록 해준다.As described above, according to the memory management apparatus according to the present invention, it is possible to provide the memory allocation method of the best-fit method with a small amount of calculation while using the management information of a smaller capacity than the conventional method, thereby maximizing memory efficiency. . It also allows the application to estimate only the total amount of memory needed, allowing for efficient memory management regardless of developer capabilities.
따라서 본 발명을 pSOS 등의 실시간 운영 체제의 메모리 관리 모듈로 사용할 경우 메모리의 효율적 운용, 개발 속도의 향상 및 개발 과정 중 발생 가능한 메모리 관련 문제를 많이 줄일 수 있다.Therefore, when the present invention is used as a memory management module of a real-time operating system such as pSOS, it is possible to efficiently operate memory, improve development speed, and greatly reduce memory related problems that may occur during the development process.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술 사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다.Those skilled in the art will appreciate that various changes and modifications can be made without departing from the spirit of the present invention.
따라서, 본 발명의 기술적 범위는 실시예에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의하여 정해져야 한다.Therefore, the technical scope of the present invention should not be limited to the contents described in the embodiments, but should be defined by the claims.
Claims (3)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020020010948A KR20030071299A (en) | 2002-02-28 | 2002-02-28 | Apparatus for managing memory |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020020010948A KR20030071299A (en) | 2002-02-28 | 2002-02-28 | Apparatus for managing memory |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20030071299A true KR20030071299A (en) | 2003-09-03 |
Family
ID=32223062
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020020010948A Withdrawn KR20030071299A (en) | 2002-02-28 | 2002-02-28 | Apparatus for managing memory |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR20030071299A (en) |
Cited By (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100735560B1 (en) * | 2005-11-09 | 2007-07-04 | 삼성전자주식회사 | Apparatus and method for controlling virtual memory |
| KR100758282B1 (en) * | 2004-12-04 | 2007-09-12 | 한국전자통신연구원 | Apparatus for managing memory using bitmap memory and its method |
| WO2014104679A1 (en) * | 2012-12-31 | 2014-07-03 | Samsung Electronics Co., Ltd. | Method and apparatus for managing memory |
| KR101467514B1 (en) * | 2010-05-14 | 2014-12-01 | 삼성전자 주식회사 | Apparatus and Method for managing memory in consideration of user response time |
| CN117112215A (en) * | 2023-08-25 | 2023-11-24 | 北京火山引擎科技有限公司 | Memory allocation method, equipment and storage medium |
-
2002
- 2002-02-28 KR KR1020020010948A patent/KR20030071299A/en not_active Withdrawn
Cited By (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100758282B1 (en) * | 2004-12-04 | 2007-09-12 | 한국전자통신연구원 | Apparatus for managing memory using bitmap memory and its method |
| KR100735560B1 (en) * | 2005-11-09 | 2007-07-04 | 삼성전자주식회사 | Apparatus and method for controlling virtual memory |
| KR101467514B1 (en) * | 2010-05-14 | 2014-12-01 | 삼성전자 주식회사 | Apparatus and Method for managing memory in consideration of user response time |
| US9223689B2 (en) | 2010-05-14 | 2015-12-29 | Samsung Electronics Co., Ltd. | Apparatus and method for managing memory |
| WO2014104679A1 (en) * | 2012-12-31 | 2014-07-03 | Samsung Electronics Co., Ltd. | Method and apparatus for managing memory |
| US9335946B2 (en) | 2012-12-31 | 2016-05-10 | Samsung Electronics Co., Ltd. | Method and apparatus for managing memory |
| CN117112215A (en) * | 2023-08-25 | 2023-11-24 | 北京火山引擎科技有限公司 | Memory allocation method, equipment and storage medium |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5778430A (en) | Method and apparatus for computer disk cache management | |
| US6587915B1 (en) | Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same | |
| JP2675967B2 (en) | Method and method for dynamically dividing cache | |
| JP2856621B2 (en) | Batch erase nonvolatile memory and semiconductor disk device using the same | |
| US6446188B1 (en) | Caching dynamically allocated objects | |
| US6401181B1 (en) | Dynamic allocation of physical memory space | |
| USRE45577E1 (en) | Method of writing to a flash memory including data blocks and log blocks | |
| JP3215237B2 (en) | Storage device and method for writing / erasing storage device | |
| US6901483B2 (en) | Prioritizing and locking removed and subsequently reloaded cache lines | |
| US5717893A (en) | Method for managing a cache hierarchy having a least recently used (LRU) global cache and a plurality of LRU destaging local caches containing counterpart datatype partitions | |
| US5765201A (en) | Changing page size in storage media of computer system | |
| US6968424B1 (en) | Method and system for transparent compressed memory paging in a computer system | |
| US20170242794A1 (en) | Associative and atomic write-back caching system and method for storage subsystem | |
| KR20120068765A (en) | Memory management device | |
| US20090187681A1 (en) | Buffer controller and management method thereof | |
| JPH08510072A (en) | Flash file system | |
| JPWO2006107095A1 (en) | Computer system, memory management method, and program thereof | |
| CN110968269A (en) | SCM and SSD-based key value storage system and read-write request processing method | |
| WO2024239835A1 (en) | Method and apparatus for recording memory state, and computer device and storage medium | |
| US6738796B1 (en) | Optimization of memory requirements for multi-threaded operating systems | |
| US7219197B2 (en) | Cache memory, processor and cache control method | |
| KR20020016513A (en) | Reclaim space reserve for a compressed memory system | |
| US20040123069A1 (en) | Very high speed page operations in indirect accessed memory systems | |
| US11797207B2 (en) | Base and compressed difference data deduplication | |
| CN119782270A (en) | A memory data processing method, device, equipment and readable storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20020228 |
|
| PG1501 | Laying open of application | ||
| PC1203 | Withdrawal of no request for examination | ||
| WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |