0
0
Operating-systemsConceptBeginner · 3 min read

What is Compaction in Memory: Explanation and Examples

In operating systems, compaction is the process of rearranging memory contents to place all free memory together in one large block. This helps reduce fragmentation and makes it easier to allocate large contiguous memory blocks.
⚙️

How It Works

Imagine your computer's memory as a bookshelf where books (programs and data) are placed. Over time, as books are added and removed, empty spaces appear scattered between the books. This scattered free space is called fragmentation.

Compaction works like sliding all the books together to one side of the shelf, removing gaps and creating one big empty space. The operating system moves the programs and data in memory so that all free spaces join together. This makes it easier to fit larger programs without splitting them into pieces.

💻

Example

This simple Python example simulates memory blocks and shows how compaction moves allocated blocks to create a single free space.

python
memory = ['A', None, 'B', None, None, 'C', None]

print('Before compaction:', memory)

# Compaction: move all allocated blocks to the front
compacted = [block for block in memory if block is not None]
free_spaces = [None] * (len(memory) - len(compacted))
memory = compacted + free_spaces

print('After compaction:', memory)
Output
Before compaction: ['A', None, 'B', None, None, 'C', None] After compaction: ['A', 'B', 'C', None, None, None, None]
🎯

When to Use

Compaction is used in memory management when fragmentation causes inefficient use of memory. It is especially helpful in systems that allocate and free memory frequently, like multitasking operating systems.

By compacting memory, the system can allocate larger continuous blocks to programs that need them, improving performance and reducing errors caused by insufficient contiguous memory.

However, compaction takes time and CPU resources because it involves moving data, so it is used carefully when fragmentation becomes a problem.

Key Points

  • Compaction reduces fragmentation by moving allocated memory blocks together.
  • It creates one large free block for easier allocation.
  • Useful in systems with dynamic memory allocation and frequent freeing.
  • It requires extra processing time to move data.

Key Takeaways

Compaction rearranges memory to reduce fragmentation and create large free blocks.
It helps allocate bigger continuous memory spaces for programs.
Compaction involves moving data, so it uses CPU time.
It is useful in multitasking systems with dynamic memory allocation.
Without compaction, memory fragmentation can waste space and cause allocation failures.