To store data and to run processes efficiently, a computer system needs sufficiently large memory with fast access. Increasing memory size can increase access time and complicate address handling. The CPU generates addresses as if for a single contiguous address space (these are logical addresses), while the physical storage resides in main memory. Therefore, an address translation mechanism is required to convert logical (virtual) addresses produced by the CPU into actual physical addresses used by main memory.
Main memory interacts with both user processes and the operating system. The OS must manage this memory so that processes have the memory they need while CPU memory accesses remain fast. Main memory is often viewed as divided into non-overlapping regions called partitions.
The main memory can be broadly allocated in two ways:
In contiguous allocation, each process occupies one continuous block of physical memory. This approach simplifies address translation and protection but can cause inefficient use of memory (fragmentation).
Contiguous allocation can be categorised as:
Partition allocation within contiguous schemes commonly uses these placement strategies:
In non-contiguous allocation, a process may occupy several separate frames or segments in physical memory. This reduces external fragmentation and allows better use of available memory but requires more complex address translation and additional data structures.
Common non-contiguous techniques are:
The run-time mapping between a virtual address and a physical address is performed by a hardware device called the Memory-Management Unit (MMU). The operating system provides data structures and control to the MMU to implement mapping, protection and sharing.
The typical connection is:
CPU → MMU → Memory
The MMU performs translation for every memory reference from the CPU. Example of a simple relocation scheme:
The relocation value is added to each logical address produced by a user process before the address is used to access main memory. The user program itself never sees the real physical addresses; it works with logical addresses (for instance, it may create and compare pointers like 346), while the MMU ensures they refer to actual memory locations.

Address binding is the process of mapping addresses from one address space to another. A logical address (also called virtual address) is generated by the CPU while a program executes. A physical address identifies a location in main memory (RAM). The MMU or binding mechanism translates logical addresses to physical addresses so that the CPU can access the required data or instructions in memory.
An address binding can occur at three different times:

In contiguous allocations the mapping is straightforward: if a process is loaded starting at physical base address B, then a logical address L maps to physical address P = B + L, provided L is within the process limit. Thus knowing the base (and limit) is sufficient to compute the physical address.
For non-contiguous allocation the mapping is more complex. Examples of structures used for mapping include page tables (for paging), multi-level page tables, inverted page tables, and segment tables (for segmentation). These techniques require additional hardware support for fast translation, such as a Translation Lookaside Buffer (TLB) to cache recent translations.
The MMU commonly uses two registers to implement simple relocation and protection:
When the CPU generates a logical address L, the MMU first checks whether L < limit. If so, the physical address is computed as base + L. If L ≥ limit, the MMU signals a memory protection violation (trap) to the operating system and the process is typically terminated or an error handler is invoked. This combination of base and limit provides both dynamic relocation and protection against illegal memory access.

Non-contiguous techniques handle address translation without requiring the process to occupy a single continuous block:
All non-contiguous schemes require careful hardware and OS support for translation, protection and efficient implementation (for example, use of TLBs, page-replacement algorithms, and representation of page tables).
Logical address: generated by the CPU while a program runs. It is a virtual address and does not correspond directly to a physical memory location. The collection of logical addresses that a program can generate is called the logical address space or virtual address space.
Physical address: identifies a real memory location in RAM. The user program cannot directly access physical addresses; the MMU and OS map logical addresses to physical addresses before memory is accessed. The collection of physical addresses that correspond to a logical address space is the physical address space.

The following figure summarises and compares logical and physical addressing concepts, and common translation schemes.

Logical (virtual) addresses are produced by programs and viewed by users; physical addresses are used by the memory hardware. The MMU and the operating system implement address binding and translation. Contiguous allocation uses simple base/limit relocation but can lead to fragmentation; non-contiguous allocation (paging, segmentation and variants) requires more complex translation mechanisms, but improves memory utilisation and supports virtual memory. Understanding how logical addresses map to physical addresses-through compile-time, load-time or execution-time binding and via hardware structures such as the MMU, page tables and TLB-is essential for memory management, protection and performance in modern operating systems.
![]() | Explore Courses for Computer Science Engineering (CSE) exam |
![]() | Get EduRev Notes directly in your Google search |