Concept |
Divides physical memory into fixed-size blocks called pages |
Divides logical address space into variable-sized segments |
Memory Allocation |
Allocates memory in fixed-size units (pages) |
Allocates memory in variable-sized units (segments) |
Flexibility |
Lacks flexibility in managing program structure and data access |
Offers flexibility by allowing logical division of a program into modules or data structures |
External Fragmentation |
Minimal external fragmentation as pages are of the same size |
May suffer from external fragmentation as segments can have varying sizes |
Internal Fragmentation |
May suffer from internal fragmentation if a page is not fully utilized by the allocated data |
May suffer from internal fragmentation if a segment is not fully utilized by the allocated data |
Sharing |
Supports sharing of pages between different processes |
Supports sharing of segments between different processes |
Address Translation |
Requires a two-level translation mechanism (page table) to map logical addresses to physical addresses |
Requires a segment table to map logical addresses to physical addresses |
Management Overhead |
Involves additional overhead in managing and maintaining page tables |
Involves additional overhead in managing and maintaining segment tables |
Memory Access |
Accesses memory in a more uniform and granular manner, with fixed-size pages |
Accesses memory in a non-uniform manner, as segments can have varying sizes |
Implementation |
Commonly used in modern operating systems and virtual memory systems |
Commonly used in older operating systems or when there is a need for logical division of programs |
Examples |
Intel x86-based systems, Linux, Windows |
Older systems like IBM System/360, early versions of UNIX |