Memory Management Basics ββ
Memory Management Basics ββ¶
Overview¶
Memory management in operating systems is a core function that efficiently allocates and manages memory required for program execution. In this chapter, we'll learn about address binding, logical/physical address translation, and dynamic loading and swapping.
Table of Contents¶
- Need for Memory Management
- Address Binding
- Logical and Physical Addresses
- MMU (Memory Management Unit)
- Dynamic Loading
- Dynamic Linking
- Swapping
- Practice Problems
1. Need for Memory Management¶
Multiprogramming Environment¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Physical Memory β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Operating System (Kernel) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Process A β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Process B β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Process C β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Free Space β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Goals of Memory Management¶
| Goal | Description |
|---|---|
| Protection | Protect memory regions between processes |
| Relocation | Allow processes to be placed anywhere in memory |
| Sharing | Allow multiple processes to share common code |
| Efficiency | Minimize memory waste |
| Logical Organization | Organize programs in modular units |
2. Address Binding¶
Address binding is the process of connecting program instructions and data to memory addresses.
Binding Time¶
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Source Code βββββΆβ Object Code βββββΆβ Executable βββββΆβ Memory β
β (No Address)β β(Relocatable) β β (Loadable) β β(Phys Address)β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β β β
Compile-time Load-time Execution-time
Binding Binding Binding
2.1 Compile-time Binding¶
When the location where a process will be loaded is known at compile time:
// Example using absolute addresses (old MS-DOS)
// Assume program always starts at address 0x1000
#define BASE_ADDRESS 0x1000
int main() {
int* ptr = (int*)(BASE_ADDRESS + 0x100); // Absolute address
*ptr = 42;
return 0;
}
Characteristics: - Generates absolute code - Requires recompilation if location changes - Mainly used in embedded systems
2.2 Load-time Binding¶
When process location is unknown until execution:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Relocatable Code β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β LOAD R1, [0x100] ; Relative address 0x100 β
β ADD R1, R2 β
β STORE R1, [0x200] ; Relative address 0x200 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ Loader sets base address 0x5000
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β After Memory Loading β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β LOAD R1, [0x5100] ; 0x5000 + 0x100 β
β ADD R1, R2 β
β STORE R1, [0x5200] ; 0x5000 + 0x200 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Characteristics: - Generates relocatable code - Loader modifies all addresses - Cannot move after loading
2.3 Execution-time Binding¶
When process can change memory location during execution:
ββββββββββββββββββββ ββββββββββββββββββββ
β CPU (Logical) β β Physical Memory β
β β β β
β Address: 0x100 βββββββ β β
ββββββββββββββββββββ β β β
βΌ β β
ββββββββββββββββ β ββββββββββββββ β
β MMU β β β 0x5100 βββ€
β β β β (Actual) β β
β Base: 0x5000ββββββΆβ ββββββββββββββ β
β β β β
β 0x100+0x5000β β β
β = 0x5100 β β β
ββββββββββββββββ ββββββββββββββββββββ
Characteristics: - Requires hardware support (MMU) - Standard method in modern OSes - Allows process movement (swapping)
3. Logical and Physical Addresses¶
3.1 Concept Comparison¶
| Category | Logical Address | Physical Address |
|---|---|---|
| Alias | Virtual Address | Real Address |
| Generated by | CPU | Memory device recognizes |
| Range | 0 ~ Process size | 0 ~ Physical memory size |
| Programmer | Uses | No need to know |
3.2 Address Spaces¶
Process A's Process B's Physical Memory
Logical Address Space Logical Address Space
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β 0x0000 β β 0x0000 β β 0x0000 OS β
β β β β ββββββββββββββββ€
β Code ββββββββββββΌβββββββββββββββΌββββββββββΆβ 0x1000 A Codeβ
β β β Code ββββ ββββββββββββββββ€
ββββββββββββββββ€ β β β β 0x2000 A Dataβ
β Data ββββββββββββΌβββββββββββββββΌβββΌβββββββΆβ β
β β ββββββββββββββββ€ β ββββββββββββββββ€
ββββββββββββββββ€ β Data ββββΌβββββββΆβ 0x3000 B Codeβ
β Heap β β β β ββββββββββββββββ€
β β ββββββββββββββββ€ β β 0x4000 B Dataβ
ββββββββββββββββ€ β Heap β β ββββββββββββββββ€
β β β β β β 0x5000 A Heapβ
β (Free) β ββββββββββββββββ€ β ββββββββββββββββ€
β β β β β β 0x6000 B Heapβ
ββββββββββββββββ€ β β β ββββββββββββββββ€
β Stack β ββββββββββββββββ€ β β β
β 0xFFFF β β Stack β β β Free β
ββββββββββββββββ β 0xFFFF β β β β
ββββββββββββββββ β ββββββββββββββββ
β
MMU performs address translation
4. MMU (Memory Management Unit)¶
4.1 Basic Structure¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CPU β
β βββββββββββββββ β
β β Program β β
β β Counter ββββΆ Logical Address: 0x1234 β
β βββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MMU β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β Logical Address Relocation Register Physical Addressβ β
β β 0x1234 + 0x8000 = 0x9234 β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Limit Register: 0x4000 β β
β β Logical 0x1234 < 0x4000 ? βββΆ OK (Access allowed) β β
β β Logical 0x5000 < 0x4000 ? βββΆ TRAP! (Protection violation)β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Physical Memory β
β β
β Access address 0x9234 β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
5. Dynamic Loading¶
5.1 Concept¶
A technique that loads program code into memory only when needed, rather than loading all code at once.
6. Dynamic Linking¶
6.1 Static Linking vs Dynamic Linking¶
Static linking duplicates library code in each program. Dynamic linking shares a single library copy across all programs.
7. Swapping¶
7.1 Concept¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Swapping Process β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Memory (RAM) Disk (Backing Store) β
β ββββββββββββββββ ββββββββββββββββ β
β β OS β β β β
β ββββββββββββββββ€ β β β
β β Process A β ββSwap OutβββΆ β Process A β β
β ββββββββββββββββ€ β (Image) β β
β β Process B β β β β
β ββββββββββββββββ€ βββSwap Inβββ β Process C β β
β β Process C β β (Image) β β
β β (New loaded) β β β β
β ββββββββββββββββ ββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Practice Problems¶
Problem 1: Address Translation¶
Given relocation register 0x4000 and limit register 0x3000: 1. What is the physical address of logical address 0x1500? 2. What happens when accessing logical address 0x3500?
Show Answer
1. Physical address = 0x4000 + 0x1500 = 0x5500 2. 0x3500 >= 0x3000 (exceeds limit) β Segmentation FaultNext Steps¶
Learn about memory partitioning and allocation strategies in 11_Contiguous_Memory_Allocation.md!
References¶
- Silberschatz, "Operating System Concepts" Chapter 8
- Tanenbaum, "Modern Operating Systems" Chapter 3
- Linux man pages:
dlopen(3),mmap(2) /proc/[pid]/maps- Check process memory map