Contiguous and Non-Contiguous Memory Allocation

Contiguous allocation forces a program to stay in one unbroken block of RAM, while non-contiguous allocation breaks it into pieces to fit into scattered spaces.

10 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

The Full But Empty Lab

Imagine arriving at the LabOne server room with 5 friends for a group project. There are 10 empty seats scattered across the room, but no 5 seats are together in a single row. The lab assistant tells you that your group cannot work unless you all sit side by side in one continuous line. You are stuck waiting, even though the lab has plenty of total room. How does an operating system face this exact headache when 30 students try to run their code at the same time?

Theory

The Cinema Hall vs The Scattered Cafeteria

Think of contiguous allocation like booking tickets for a family at a busy cinema hall: everyone must sit together in consecutive seat numbers. If an unbroken block of seats is missing, the family is turned away. Non contiguous allocation is like a group entering a college cafeteria. You split up, grab any random empty chairs across different tables, and stay connected via your mobile phones. The group still gets fed, regardless of where they sit.

Theory

Defining the Allocation Schemes

In an operating system, contiguous memory allocation requires that each process occupies a single, unbroken block of physical memory addresses. The RAM addresses assigned to the program are consecutive. On the other hand, non contiguous memory allocation allows a process to be split into multiple smaller chunks and placed into available slots scattered anywhere across physical RAM. The operating system uses an internal lookup map to track where each piece is hidden.

At a glance

A direct comparison of contiguous and non-contiguous memory allocation strategies on LabOne.

FeatureContiguous AllocationNon-Contiguous Allocation
RAM LayoutSingle unbroken block for each programSplit into pieces scattered across RAM
FragmentationSuffers heavily from external fragmentationMainly faces small internal fragmentation
Execution SpeedFaster because addresses are sequentialSlower due to address translation overhead
Tracking OverheadSimple: requires only start address and limitComplex: requires page tables or segment tables

Theory

The RAM Allocation Dilemma

Let us trace a scenario on our LabOne server. The RAM has three free slots: a 20 MB block, a 30 MB block, and a 10 MB block, separated by active programs. A student wants to run a script requiring 45 MB of memory. Under contiguous rules, the OS looks for a single block of 45 MB or more. Since the largest block is only 30 MB, the script is blocked. Under non contiguous rules, the OS splits the script into smaller pieces to fill the 20 MB and 30 MB slots, loading it successfully.

Quiz

If a university exam asks why non-contiguous allocation is preferred in modern operating systems, which reason is most accurate?

  1. It completely eliminates the need for address translation maps
  2. It makes the execution of programs much faster than continuous blocks
  3. It utilizes scattered free memory spaces efficiently and avoids external fragmentation
  4. It prevents multiple student processes from running simultaneously on LabOne
Show the answer

It utilizes scattered free memory spaces efficiently and avoids external fragmentation

Non-contiguous allocation lets the OS use small, scattered pockets of free RAM that would otherwise go to waste. While it introduces some tracking overhead, it solves the problem of external fragmentation beautifully.

Watch out

The Fragmentation Misconception

A classic trap in semester exams is writing that non contiguous allocation eliminates all types of fragmentation. This will lose you marks. While it completely eliminates external fragmentation by utilizing scattered blocks, it still introduces internal fragmentation inside the individual allocated chunks or pages. Always specify which type of fragmentation is reduced or created when answering memory questions.

Think first

Analyzing Address Translation

If the operating system scatters a program across different parts of physical RAM, how does the CPU know where to find the next instruction? Try to recall the hardware component involved before revealing the answer.

Show the answer

The CPU always generates logical addresses. When non-contiguous allocation is used, the hardware Memory Management Unit utilizes an internal lookup table, like a page table or segment table, to translate the sequential logical address into the scattered physical coordinates instantly during execution.

Theory

Paging and Pointers in Later Semesters

You will see this exact concept expand into full operational mechanisms in Unit 2 when we study Paging and Segmentation. Furthermore, in Semester 3, when you write complex C++ programs with dynamic memory allocation using pointers, you are interacting directly with a non contiguous memory structure managed by the underlying operating system kernel.

Summary

Key takeaways

  • Contiguous allocation stores a process in a single, consecutive block of memory addresses.
  • Non-contiguous allocation breaks a process into smaller chunks located across scattered RAM slots.
  • Contiguous systems are simple and fast but cause massive external fragmentation waste.
  • Non-contiguous systems maximize memory use but require translation tables and hardware overhead.
  • Modern systems rely on non-contiguous methods to run dozens of student programs concurrently.
  • Memory hook: Contiguous is one big chain, non-contiguous breaks the pain!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from File and Memory Management

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Contiguous and Non-Contiguous Memory Allocation · Operating System · Gri-Learn