Memory Management Reference

« Memory Management Glossary: A | Memory Management Glossary: B | Memory Management Glossary: C »

Memory Management Glossary: B

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

backing store

Backing store (2) is typically part of a hard disk that is used by a paging or swapping system to store information not currently in main memory. Backing store is slower and cheaper than main memory.

Other storage may, less commonly, be used in place of a hard disk (for instance, magnetic tape, floppy disk, or historically, magnetic drum).

In general, backing store may mean any locations used to store information when its preferred or natural location is otherwise being used: for example, memory used by a graphical interface to keep a copy of the contents of obscured windows.

Similar term

swap space.

barrier(1)

A barrier is a block on reading from or writing to certain memory (2) locations by certain threads or processes.

Barriers can be implemented in either software or hardware. Software barriers involve additional instructions around load or store (1) operations, which would typically be added by a cooperative compiler. Hardware barriers don’t require compiler support, and may be implemented on common operating systems by using memory protection.

Relevance to memory management

Barriers are used for incremental or concurrent garbage collection.

Related publications

Pirinen (1998), Zorn (1990).

barrier(2)

A memory barrier is an instruction on certain processor architectures that will ensure certain guarantees about the order of accesses to memory.

Some processor architectures make very few guarantees about the relative orders of load and store (1) operations in the instruction stream and the actual order of accesses to main memory. These architectures will often have special instructions that make stronger guarantees.

For example, the ARM has the DMB (Data Memory Barrier) instruction:

It ensures that all explicit memory accesses that appear in program order before the DMB instruction are observed before any explicit memory accesses that appear in program order after the DMB instruction.

These instructions are vital for certain synchronization operations.

barrier hit
base pointer

A base pointer is a pointer to the base or start of an object.

This term is commonly used in opposition to derived pointer.

Note that Boehm & Chase (1992) define “base pointer” to be “any pointer value directly recognizable by the collector (1)”, and this may well include interior pointers.

Opposite term

derived pointer.

In the MPS

For objects with in-band headers, the MPS distinguishes between the base pointer, which points to the start of the header, and the client pointer, which points to the first word after the end of the header.

best fit

The allocation policy that always allocates from the smallest suitable free block. Suitable allocation mechanisms include sequential fit searching for a perfect fit, first fit on a size-ordered free block chain, segregated fits, and indexed fits. Many good fit allocators are also described as best fit.

In theory, best fit may exhibit bad fragmentation, but in practice this is not commonly observed.

Related publication

Wilson et al. (1995).

BIBOP

Also known as

big bag of pages.

BIBOP, or BIg Bag Of Pages, is a technique that encodes object type in the high-order bits of their address, by using a lookup table that maps from those bits to a type.

Despite the name, the blocks involved need not be the size of a page.

BIBOP requires storing only objects of the same type in a block, but this has the same advantages as segregated fits in general.

Historical note

This technique was invented for the PDP-10 MACLISP by JonL White and Stavros Macrakis. It was an advance on earlier techniques that divided the address space into contiguous blocks for each type.

Related publications

Baker (1979), Steele (1977).

big bag of pages

See

BIBOP.

binary buddies

The most common buddy system allocation mechanism, in which all block sizes are a power of two. Finding a block’s buddy is then a matter of flipping the appropriate bit in the block’s address.

Internal fragmentation is usually high, because objects are often not a good fit for power-of-two sized blocks.