OSTEP Chapter 23

ECE 3600, Fall 2022


Table of Contents


1. VAX/VMS

      32-bit virtual address space per process, 512-byte pages

virtual address = 23-bit VPN + 9-bit offset

upper two bits selects segment


2. Linux 32-bit Address Space

      kernel logical addresses mapped directly to the first portion of physical memory

3. Linux 64-bit Address Space

Virtual Address:

See Opteron Page Tables


From https://unix.stackexchange.com/questions/509607/how-a-64-bit-process-virtual-address-space-is-divided-in-linux:
========================================================================================
    Start addr    | Offset  |     End addr     |  Size   | VM area description
========================================================================================
                  |         |                  |         |
 0000000000000000 |    0    | 00007fffffffffff |  128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 ffff800000000000 | -128 TB | ffffffffffffffff |  128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________
lower 48 bits actually used, "canonical" means top 16 bits must be copies of bit 47