• Fragmentation is the primary problem faced while allocating memory. In this article we will focus on Fragmentation and steps to minimize it. Fragmentation can be of two types:
  1. Internal Fragmentation
  2. External Fragmentation

External Fragmentation

  • External fragmentation arises when free memory areas existing in a system are too small to be allocated to processes.
  • When enough total memory space exists to allocate a process but it is not contiguous, storage space is fragmented into a large number of small blocks. Such unused small free blocks which are outside to partitions are referred to as external fragmentation.
  • Statistical analysis shows that with allocation of N blocks, another 0.5 blocks may be lost due to fragmentation. That is, one-third of memory may be unusable! This property is known as the 50-percent rule.

Internal Fragmentation

  • Internal fragmentation exists when the memory allocated to a process is not fully utilized by it.
  • When a process is allocated a larger block than the size of the process, some memory area inside the partition becomes unusable. This type of memory wastage is considered as internal fragmentation.
  • In other words, internal fragmentation is the amount of unusable memory which is inside to a partition.    

Compaction

  • A possible solution to reduce external fragmentation is compaction.
  • A compaction is a process to merge different unused small free blocks in the memory to produce a large free block.
  • The kernel periodically can perform memory compaction to reduce total amount of external fragmentation.
  • It involves movement of processes (dynamic relocation) in the memory during their execution. It can be implemented by using relocation register.
  • Consider process C in the figure (a) that contains address 3M bytes when C is in execution. We have two free memory blocks available one is followed by process A and other free block is followed by process D.
  • During compaction, C is moved to the memory area with start address 2M bytes (figure b). Similarly process D is moved to process C’s memory area.
  • After compaction, we have one large free block at the bottom that is used to load process E (figure c).
  • Dynamic relocation is not practical if the computer system does not use relocation register.

Compaction