1
2
physical address = virtual address + base
0 <= virtual address <= bound
How do we support a large address space with (potentially) a lot of free space between the stack and the heap?
| Segment | Virtual segment base | Virtual segment bound | Physical segment base | Physical segment bound | Size |
|---|---|---|---|---|---|
| Code | 0KB | 2KB | 32KB | 34KB | 2KB |
| Heap | 4KB | 6KB (can grow up) | 34KB | 36KB | 2KB |
| Stack | 16KB | 14KB (can grow down) | 28KB | 26KB | 2KB |
offset physical address = physical segment base + offset = 32K (32768) + 100 = 32868offset:offset = virtual address - virtual segment base = 4200 - 4096 = 104physical address = physical segment base + offset = 34K (34816) + 104 = 34920offset = virtual address - virtual segment base = 7000 - 4096 = 2904physical address = physical segment base + offset = 34K (34816) + 2904 = 37720