Virtual Memory
CS 351: Systems Programming Michael Saelee <lee@iit.edu>
Virtual Memory CS 351: Systems Programming Michael Saelee - - PowerPoint PPT Presentation
Virtual Memory CS 351: Systems Programming Michael Saelee <lee@iit.edu> Computer Science Science registers cache (SRAM) main memory (DRAM) local hard disk drive (HDD/SSD) remote storage (networked drive / cloud) previously: SRAM
CS 351: Systems Programming Michael Saelee <lee@iit.edu>
Computer Science Science
registers cache (SRAM) main memory (DRAM) local hard disk drive (HDD/SSD) remote storage (networked drive / cloud)
Computer Science Science
registers cache (SRAM) main memory (DRAM) local hard disk drive (HDD/SSD) remote storage (networked drive / cloud)
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Kernel virtual memory (code, data, heap, stack) Memory mapped region for shared libraries Run-time heap (created by malloc) User stack (created at runtime) Unused %esp (stack pointer) Memory invisible to user code brk
0xc0000000 0x08048000 0x40000000
Read/write segment (.data, .bss) Read-only segment (.init, .text, .rodata) Loaded from the executable file
0xffffffff
Computer Science Science
Computer Science Science
Kernel virtual memory (code, data, heap, stack) Memory mapped region for shared libraries Run-time heap (created by malloc) User stack (created at runtime) Unused %esp (stack pointer) Memory invisible to user code brk
0xc0000000 0x08048000 0x40000000Read/write segment (.data, .bss) Read-only segment (.init, .text, .rodata) Loaded from the executable file
0xffffffffKernel virtual memory (code, data, heap, stack) Memory mapped region for shared libraries Run-time heap (created by malloc) User stack (created at runtime) Unused %esp (stack pointer) Memory invisible to user code brk
0xc0000000 0x08048000 0x40000000Read/write segment (.data, .bss) Read-only segment (.init, .text, .rodata) Loaded from the executable file
0xffffffffKernel virtual memory (code, data, heap, stack) Memory mapped region for shared libraries Run-time heap (created by malloc) User stack (created at runtime) Unused %esp (stack pointer) Memory invisible to user code brk
0xc0000000 0x08048000 0x40000000Read/write segment (.data, .bss) Read-only segment (.init, .text, .rodata) Loaded from the executable file
0xffffffffComputer Science Science
Computer Science Science
Computer Science Science
data CPU address: N Main Memory N
(note: cache not shown)
Computer Science Science
int glob = 0xDEADBEEE; main() { fork(); glob += 1; } (gdb) set detach-on-fork off (gdb) break main Breakpoint 1 at 0x400508: file memtest.c, line 7. (gdb) run Breakpoint 1, main () at memtest.c:7 7 fork(); (gdb) next [New process 7450] 8 glob += 1; (gdb) print &glob $1 = (int *) 0x6008d4 (gdb) next 9 } (gdb) print /x glob $2 = 0xdeadbeef (gdb) inferior 2 [Switching to inferior 2 [process 7450] #0 0x000000310acac49d in __libc_fork () 131 pid = ARCH_FORK (); (gdb) finish Run till exit from #0 in __libc_fork () 8 glob += 1; (gdb) print /x glob $4 = 0xdeadbeee (gdb) print &glob $5 = (int *) 0x6008d4
parent child
Computer Science Science
data CPU address: N Main Memory N
Computer Science Science
Computer Science Science
disk address CPU Main Memory
“swap” space
MMU address translation unit physical address virtual address
(note: cache not shown)
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
P0 Main Memory
B N N+B
Computer Science Science
data CPU VA: N PA: N+B MMU relocation reg. Main Memory B N
B
Computer Science Science
data CPU VA: N PA: N+B MMU relocation reg. Main Memory B N
B
Computer Science Science
data CPU VA: N PA: N+B Main Memory B N
MMU relocation reg. B limit reg. L assert (0 ≤ N ≤ L) B+L process sandbox
Computer Science Science
data CPU VA: N PA: N+B Main Memory B N
MMU relocation reg. B limit reg. L assert (0 ≤ N ≤ L) B+L process sandbox
Computer Science Science
Computer Science Science
B B
Main Memory Main Memory Virtual Memory stack code data heap stack code data heap stack code data heap code data
Computer Science Science
Main Memory B
possibly unused!
virtual address space
L stack code stack code
Computer Science Science
Computer Science Science
MMU Base Limit B0 L0 1 B1 L1 2 B2 L2 3 B3 L3 Segment Table Main Memory B3 B3+L3 B2 B2+L2 B1 B1+L1 B0 B0+L0 Seg #0: Code Seg #1: Data Seg #3: Stack Seg #2: Heap Segmented Virtual Address Space
Computer Science Science
MMU Base Limit B0 L0 1 B1 L1 2 B2 L2 3 B3 L3 Segment Table VA: seg#:offset data assert (offset ≤ L2)
⊕
CPU PA: offset + B2 Main Memory B3 B3+L3 B2 B2+L2 B1 B1+L1 B0 B0+L0
Computer Science Science
Base Limit B0 L0 1 B1 L1 2 B2 L2 3 B3 L3 Segment Table
Computer Science Science
Computer Science Science
possibly unused!
Main Memory B
virtual address space
L stack code stack code
better!
Main Memory stack code stack code virtual address space
Computer Science Science
stack code virtual address space 2
Main Memory stack code stack code virtual address space
Computer Science Science
Computer Science Science
stack heap data code physical memory
Computer Science Science
stack heap data code
physical memory
Computer Science Science
Computer Science Science
VA: PA:
p p virtual page offset virtual page number physical page offset physical page number
Computer Science Science
physical page offset physical page number
address translation
VA: PA:
virtual page offset virtual page number
Computer Science Science
physical page offset physical page number
VA: PA:
virtual page offset virtual page number
translation structure: page table
valid PPN n 2n entries index if invalid, page is not mapped
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
➊ VA: N
CPU
➌ PA: N'
Main Memory Page Table
➋ page table walk ➍ data
Address Translator (part of MMU)
Computer Science Science
➐ VA: N (retry)
Main Memory Disk (swap space)
➎ data transfer ➊ VA: N
CPU
➒ PA: N'
Page Table Address Translator (part of MMU)
➋ page table walk ➓ data ➌ page fault
kernel
➍ transfer control to kernel ➑ ➏ PTE update
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
CPU
Process A Process B
Virtual Address Space Virtual Address Space M L M N
X Z
Cache
Address Data L X M Y N Z
Computer Science Science
CPU Cache
Address Data S X Q Y R Z
Process A Process B
Virtual Address Space Virtual Address Space M L M N Physical Memory
X
S
Y
Q
Z
R
X Z Y
Computer Science Science
Computer Science Science
(miss) PA VA
Main Memory process page table CPU Cache
page table walk
MMU (address translation unit)
(hit) data (update)
Computer Science Science
Computer Science Science
MMU Main Memory process page table CPU Cache
VA PA (miss)
TLB (VPN→PPN cache) address translation unit
TLB miss! page table walk (hit) data (update)
(exercise for reader: revise earlier translation diagrams!)
Computer Science Science virtual page number (VPN) page offset physical address n-1 p p-1 valid tag physical page number (PPN) virtual address = TLB Hit valid tag data = Cache Hit Data byte offset Cache TLB
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Process A Process B
Virtual Memory Virtual Memory Physical Memory
lots of wasted space!
Computer Science Science
Process A Process B
Virtual Memory Virtual Memory Physical Memory
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
Computer Science Science
7 6 5 4 3 2 1
1 1 1 1 1
page offset VPN
(unmapped) PPN (unmapped) PPN (unmapped) (unmapped) (unmapped) (unmapped)
Page Table
7 6 5 4 3 2 1
all 8 PTEs must be in memory at all times
Computer Science Science
7 6 5 4 3 2 1
1 1 1 1 1
page offset
1
(unmapped) PPN (unmapped) PPN
3 2 1
(unmapped) (unmapped) (unmapped) (unmapped)
3 2 1
page “directory”
all unmapped; don’t need in memory!
Computer Science Science
7 6 5 4 3 2 1
1 1 1 1 1
page offset
1
(unmapped) PPN (unmapped) PPN
3 2 1
∅
Computer Science Science
http://www.intel.com/products/processor/manuals/ (Software Developer’s Manual Volume 3A)
Computer Science Science
Global Descriptor Table (GDT) Linear Address Space Segment Segment Descriptor Offset Logical Address Segment Base Address Page
Segment Selector Dir Table Offset Linear Address Page Table Page Directory Entry Physical Space Entry (or Far Pointer) Paging Segmentation Address Page
Computer Science Science
Offset (Effective Address) Base Address Descriptor Table Segment Descriptor 31(63)
15 Logical Address
+
Linear Address 31(63)
Computer Science Science
CS SS DS ES FS GS Segment Selector Base Address, Limit, Access Information Visible Part Hidden Part
Computer Science Science
Figure 3-8. Segment Descriptor
31 24 23 22 21 20 19 16 15 13 14 12 11 8 7 P
Base 31:24
G D P L
Type
S L
4
31 16 15
Base Address 15:00 Segment Limit 15:00 Base 23:16
D / B A V L
Seg. Limit 19:16
G — Granularity LIMIT — Segment Limit P — Segment present S — Descriptor type (0 = system; 1 = code or data) TYPE — Segment type DPL — Descriptor privilege level AVL — Available for use by system software BASE — Segment base address D/B — Default operation size (0 = 16-bit segment; 1 = 32-bit segment) L — 64-bit code segment (IA-32e mode only)
Computer Science Science
Linear Address Space (or Physical Memory) Segment Registers CS Segment Descriptors Limit Access Base Address SS Limit Access Base Address DS Limit Access Base Address ES Limit Access Base Address FS Limit Access Base Address GS Limit Access Base Address Limit Access Base Address Limit Access Base Address Limit Access Base Address Limit Access Base Address Stack Code Data Data Data Data
Computer Science Science
Linear Address Space (or Physical Memory) Data and FFFFFFFFH Segment Limit Access Base Address Registers CS SS DS ES FS GS Code Code- and Data-Segment Descriptors Stack Not Present
Computer Science Science
Paging Mode CR0.PG CR4.PAE LME in IA32_EFER Linear- Address Width Physical- Address Width1 NOTES: Page Size(s) Supports Execute- Disable? None N/A N/A 32 32 N/A No 32-bit 1 02 32 Up to 403 4-KByte 4-MByte4 No PAE 1 1 32 Up to 52 4-KByte 2-MByte Yes5 IA-32e 1 1 2 48 Up to 52 4-KByte 2-MByte 1-GByte6 Yes5
Computer Science Science
Directory Table Offset Page Directory PDE with PS=0 CR3 Page Table PTE 4-KByte Page Physical Address 31 21 11 12 22 Linear Address 32 10 12 10 20 20
Computer Science Science
Directory Offset Page Directory PDE with PS=1 CR3 4-MByte Page Physical Address 31 21 22 Linear Address 10 22 32 18
Computer Science Science
31302928272625242322212019181716151413121110 9 8 7 6 5 4 3 2 1 0
Address of page directory1 Ignored P C D P W T Ignored CR3 CR3 Bits 31:22 of address
Reserved (must be 0) Bits 39:32
address2 P A T Ignored G 1 D A P C D P W T U / S R / W 1 PD PDE: E: 4M 4MB page page Address of page table Ignored I g n A P C D P W T U / S R / W 1 PD PDE: E: page page table table Ignored PD PDE: E: no not pr presen ent Address of 4KB page frame Ignored G P A T D A P C D P W T U / S R / W 1 PT PTE: E: 4K 4KB page page Ignored PT PTE: E: no not pr presen ent
Figure 4-4. Formats of CR3 and Paging-Structure Entries with 32-Bit Paging
Computer Science Science
Directory Table Offset Page Directory PDE with PS=0 Page Table PTE 4-KByte Page Physical Address 31 20 11 12 21 Linear Address PDPTE value 30 29 PDPTE Registers Directory Pointer 2 9 12 9 40 40 40
Computer Science Science
Directory Ptr PTE Linear Address Page Table PDPTE CR3 39 38 Pointer Table 9 9 40 12 9 40 4-KByte Page Offset Physical Addr
PDE with PS=0
Table 11 12 20 21 Directory 30 29 Page-Directory- Page-Directory PML4 47 9 PML4E 40 40 40
Computer Science Science
Directory Ptr Linear Address
PDPTE with PS=1
CR3 39 38 Pointer Table 9 40 30 22 1-GByte Page Offset Physical Addr 30 29 Page-Directory- PML4 47 9 PML4E 40