Tuesday 12 August 2014

Details

The task of fulfilling an allocation request consists of locating a block of unused memory of sufficient size. Memory requests are satisfied by apportioning portions from a large pool of memory called the heap or free store. At any given time, some parts of the heap are in use, while some are "free" (unused) & thus obtainable for future allocations.

Several issues complicate the implementation, such as outside fragmentation, which arises when there's lots of small gaps between apportioned memory blocks, which invalidates their use for an allocation request. The allocator's metadata can also inflate the size of (individually) small allocations. This is managed often by chunking. The memory management method must track outstanding allocations to make sure that they do not overlap & that no memory is ever "lost" as a memory leak.

No comments:

Post a Comment