Contiguous allocation is an early method for allocating main memory between the operating system and user processes. Each process is contained within a single contiguous section of memory. Relocation and limit registers are used to protect processes from each other and allow transient changes to the operating system. Multiple-partition allocation allocates variable sized partitions to processes out of memory holes. Storage allocation approaches like first-fit and best-fit are used to allocate partitions from the holes. Fragmentation can occur both externally and internally, taking up space that cannot be used.