next up previous contents index
Next: 15.2 Memory regions Up: 15 List-based Memory Manager: Previous: 15 List-based Memory Manager:

15.1 Introduction

The list-based memory manager is a component that provides simple but extremely generic and flexible memory management services. It provides functionality at a lower level than typical ANSI C malloc-style memory allocation mechanisms.gif For example, the LMM does not keep track of the sizes of allocated memory blocks; that job is left to the client of the LMM library or other high-level memory allocation mechanisms. (For example, the default version of malloc() provided by the minimal C library, described in Section 9.5.2, is implemented on top of the LMM.)

The LMM attempts to make as few assumptions as possible about the environment in which it runs and the use to which it is put. For example, it does not assume that all allocatable ``heap'' memory is contained in one large continuous range of virtual addresses, as is the case in typical Unix process environments. Similarly, it does not assume that the heap can be expanded on demand (although the LMM can certainly be used in situations in which the heap is expandable). It does not assume that it is OK to ``waste'' pages on the assumption that they will never be assigned ``real'' physical memory unless they are actually touched. It does not assume that there is only one ``type'' of memory, or that all allocatable memory in the program should be managed as a single heap. Thus, the LMM is suited for use in a wide variety of environments, and can be used for both physical and virtual memory management.

The LMM has the following main features:

Some of the LMM's (potential) disadvantages with respect to more conventional memory allocators are:


next up previous contents index
Next: 15.2 Memory regions Up: 15 List-based Memory Manager: Previous: 15 List-based Memory Manager:

University of Utah Flux Research Group