C++ / a working model

116 / 163   ·   C11   ·   8 min

A Dialogue on Memory Virtualization

Keep this sentence

The conversation makes clear that CPU virtualization is only the beginning; memory virtualization is the real challenge. Every address a user program produces is virtual. With hardware help the OS translates those addresses into physical ones, giving each process the illusion of a large, private, contiguous memory. The illusion simplifies programming and also isolates processes from one another. Later chapters start with base-and-bounds and then add TLBs and multi-level page tables.

In this lesson
  1. Virtualization Is Not Finished
  2. User Addresses Are Always Virtual
  3. Two Reasons for the Illusion
  4. Example
  5. Exercise

Official chapter PDF

Virtualization Is Not Finished

CPU virtualization is complete, yet memory virtualization has only just begun. It requires far more intricate cooperation between hardware and the operating system; many details must be kept straight before a solid mental model appears. The material starts with the simplest base-and-bounds scheme and then incrementally adds mechanisms to solve new problems.

User Addresses Are Always Virtual

Keep one rule in mind: every address a user program generates is virtual. The operating system merely creates an illusion that each process owns a huge private memory. Hardware assists the OS in turning those pretend addresses into real physical addresses so the requested data can be located.

Two Reasons for the Illusion

The first reason is convenience: a programmer can place code and data anywhere inside what looks like a vast contiguous space and never worry about how cramped physical memory actually is. The second reason is isolation and protection: a misbehaving process must never be allowed to read or overwrite another process’s memory.

Pitfalls

  • Believing user programs can issue physical addresses directly
  • Treating address translation as a purely software problem and forgetting hardware’s role
  • Underestimating the number of details that must be kept straight

Run an example

Minimum C11 · complete program · Download .c

#include <stdio.h>
int main(void) {
    printf("User programs generate only virtual addresses.\n");
    return 0;
}

Compile locally

gcc -std=c11 -Wall -Wextra -Wpedantic -Werror ostep-12-dialogue-memory.c -o example && ./example

Expected result

User programs generate only virtual addresses.

CHECK YOUR UNDERSTANDING

Close the answer. Explain it.

Why does the operating system give every user process the illusion of a large, private, contiguous memory? Give two main reasons.

Show a reference answer

1. Programming convenience: the programmer never has to worry about the real layout or size of physical memory. 2. Isolation and protection: one process cannot peek at or corrupt another process’s data.

Check the sources

Drafts and official chapters change. The version mark is only the example’s minimum.

Back to the catalog