15-410, s’16 1 virtual memory #1 dave eckhardt todd mowry l15_vm1 15-410 “...we are computer...
DESCRIPTION
15-410, S’16 3 Outline Text Reminder: reading list on class “Schedule” page “213 review material” Linking, fragmentation The Problem: logical vs. physical Contiguous memory mapping FragmentationPaging Type theory A sparse mapTRANSCRIPT
![Page 1: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/1.jpg)
15-410, S’161
Virtual Memory #1
Dave EckhardtTodd Mowry
L15_VM1
15-410“...We are Computer Scientists!...”
![Page 2: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/2.jpg)
15-410, S’162
Synchronization
Who has read some test code? How about the “thread group” library? If you haven't read a lot of mutex/cvar code before, you
have some in hand!
![Page 3: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/3.jpg)
15-410, S’163
Outline
Text Reminder: reading list on class “Schedule” page
“213 review material” Linking, fragmentation
The Problem: logical vs. physicalContiguous memory mappingFragmentationPaging
Type theory A sparse map
![Page 4: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/4.jpg)
15-410, S’164
Logical vs. Physical
“It's all about address spaces” Generally a complex issue
IPv4 ⇒ IPv6 is mainly about address space exhaustion
213 review (?) Combining .o's changes addresses But what about two programs?
![Page 5: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/5.jpg)
15-410, S’165
Every .o uses same address space
![Page 6: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/6.jpg)
15-410, S’166
Linker Combines .o's, Changes Addresses
code
data
bss
code
data
bss
![Page 7: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/7.jpg)
15-410, S’167
What About Two Programs?
![Page 8: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/8.jpg)
15-410, S’168
Logical vs. Physical Addresses
Logical address Each program has its own address space ...
fetch: address ⇒ data store: address, data ⇒ .
...as envisioned by programmer, compiler, linker
Physical address Where your program ends up in memory They can't all be loaded at 0x10000!
![Page 9: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/9.jpg)
15-410, S’169
Reconciling Logical, Physical
Programs could take turns in memory Requires swapping programs out to disk Very slow
Could run programs at addresses other than linked Requires using linker to “relocate one last time” at launch Done by some old mainframe OSs Slow, complex, or both
We are computer scientists!
![Page 10: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/10.jpg)
15-410, S’1610
Reconciling Logical, Physical
Programs could take turns in memory Requires swapping programs out to disk Very slow
Could run programs at addresses other than linked Requires using linker to “relocate one last time” at launch Done by some old mainframe OSs Slow, complex, or both
We are computer scientists! Insert a level of indirection
![Page 11: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/11.jpg)
15-410, S’1611
Reconciling Logical, Physical
Programs could take turns in memory Requires swapping programs out to disk Very slow
Could run programs at addresses other than linked Requires using linker to “relocate one last time” at launch Done by some old mainframe OSs Slow, complex, or both
We are computer scientists! Insert a level of indirection
Well, get the ECE folks to do it for us
![Page 12: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/12.jpg)
15-410, S’1612
“Type Theory”Physical memory behavior
fetch: address ⇒ data store: address, data ⇒ .
Process thinks of memory as... fetch: address ⇒ data store: address, data ⇒ .
Goal: each process has “its own memory” process-id ⇒ fetch: (address ⇒ data) process-id ⇒ store: (address, data ⇒ . )
What really happens process-id ⇒ map: (virtual-address ⇒ physical-address) Machine does “fetch o map” and “store o map”
![Page 13: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/13.jpg)
15-410, S’1613
Simple Mapping FunctionsP1
If V > 8191 ERRORElse P = 1000 + V
P2If V > 16383 ERRORElse P = 9192 + V
Address space ≡ Base address Limit
![Page 14: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/14.jpg)
15-410, S’1614
Contiguous Memory MappingProcessor contains two control registers
Memory base Memory limit
Each memory access checksIf V < limit P = base + V;Else ERROR /* what do we call this error? */
During context switch... Save/load user-visible registers Also load process's base, limit registers
![Page 15: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/15.jpg)
15-410, S’1615
Problems with Contiguous AllocationHow do we grow a process?
Must increase “limit” value Cannot expand into another process's memory! Must move entire address spaces around
Very expensive
Fragmentation New processes may not fit into unused memory “holes”
Partial memory residence Must entire program be in memory at same time?
![Page 16: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/16.jpg)
15-410, S’1616
Can We Run Process 4?
Process exit creates “holes”
New processes may be too large
May require moving entire address spaces
Process 3
Process 4
OS Kernel
Process 1
![Page 17: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/17.jpg)
15-410, S’1617
Term: “External Fragmentation”
Free memory is small chunks
Doesn't fit large objectsCan “disable” lots of
memoryCan fix
Costly “compaction” aka “Stop & copy”
Process 4
Process 1
OS Kernel
Process 2
![Page 18: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/18.jpg)
15-410, S’1618
Term: “Internal Fragmentation”
Allocators often round up 8K boundary (some
power of 2!)
Some memory is wasted inside each segment
Can't fix via compactionEffects often non-fatal
Process 3
Process 4
Process 1
OS Kernel
08192
11009292
![Page 19: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/19.jpg)
15-410, S’1619
Swapping
Multiple user processes Sum of memory demands > system memory Goal: Allow each process 100% of system memory
Take turns Temporarily evict process(es) to disk
Not runnable Blocked on implicit I/O request (e.g., “swapread”)
“Swap daemon” shuffles process in & out Can take seconds per process
Modern analogue: laptop suspend-to-disk Maybe we need a better plan?
![Page 20: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/20.jpg)
15-410, S’1620
Contiguous Allocation ⇒ Paging
Solves multiple problems Process growth problem Fragmentation compaction problem Long delay to swap a whole process
Approach: divide memory more finely Page = small region of virtual memory (½K, 4K, 8K, ...) Frame = small region of physical memory [I will get this wrong, feel free to correct me]
Key idea!!! Any page can map to (occupy) any frame
![Page 21: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/21.jpg)
15-410, S’1621
Per-process Page Mapping
P0 code 0OS Kernel
P1 code 0P0 data 0P1 data 0P1 stack 0P0 stack 0P1 data 1P0 code 1
P0 code 0P0 code 1P0 data 0
P0 stack 0
P1 code 0P1 data 0P1 data 1
P1 stack 0
![Page 22: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/22.jpg)
15-410, S’1622
Problems Solved by Paging
Process growth problem? Any process can use any free frame for any purpose
Fragmentation compaction problem? Process doesn't need to be contiguous, so don't compact
Long delay to swap a whole process? Swap part of the process instead!
![Page 23: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/23.jpg)
15-410, S’1623
Partial Residence
P0 code 0OS Kernel
[free]P0 data 0P1 data 0P1 stack 0P0 stack 0P1 data 1
[free]
P0 code 0P0 code 1P0 data 0P0 stack 0
P1 code 0P1 data 0P1 data 1P1 stack 0
![Page 24: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/24.jpg)
15-410, S’1624
Must Evolve Data Structure TooContiguous allocation
Each process was described by (base,limit)
Paging Each page described by (base,limit)?
Pages typically one size for whole system Ok, each page described by (base address) Arbitrary page ⇒ frame mapping requires some work
Abstract data structure: “map” Implemented as...
![Page 25: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/25.jpg)
15-410, S’1625
Data Structure EvolutionContiguous allocation
Each process previously described by (base,limit)
Paging Each page described by (base,limit)?
Pages typically one size for whole system Ok, each page described by (base address) Arbitrary page ⇒ frame mapping requires some work
Abstract data structure: “map” Implemented as...
» Linked list?» Array?» Hash table?» Skip list?» Splay tree?????
![Page 26: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/26.jpg)
15-410, S’1626
“Page Table” OptionsLinked list
O(n), so V⇒ P time gets longer for large addresses!
Array Constant time access Requires (large) contiguous memory for table
Hash table Vaguely-constant-time access Not really bounded though
Splay tree Excellent amortized expected time Lots of memory reads & writes possible for one mapping Not yet demonstrated in hardware
![Page 27: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/27.jpg)
15-410, S’1627
“Page Table”: Array Approach
Page
....f29f34....
Frame
Page table array
Page 3Page 2Page 1Page 0
![Page 28: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/28.jpg)
15-410, S’1628
Paging – Address Mapping
4K page size 12 bits
32 – 12 20 bits of page #
![Page 29: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/29.jpg)
15-410, S’1629
Paging – Address Mapping
Logical Address
Page Offset
....f29f34....
Frame
Page table
![Page 30: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/30.jpg)
15-410, S’1630
Paging – Address Mapping
Logical Address
Page Offset
....f29f34....
Frame OffsetCopy
Page table
![Page 31: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/31.jpg)
15-410, S’1631
Paging – Address Mapping
Logical Address
Page Offset
....f29f34....
Frame Offset
Page tablePhysical Address
![Page 32: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/32.jpg)
15-410, S’1632
Paging – Address Mapping
User view Memory is a linear array
OS view Each process requires N frames, located anywhere
Fragmentation? Zero external fragmentation Internal fragmentation: average ½ page per region
![Page 33: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/33.jpg)
15-410, S’1633
Bookkeeping
One “page table” for each process
One global “frame table” Manages free frames (Typically) remembers who owns each frame
Context switch Must “activate” switched-to process's page table
![Page 34: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/34.jpg)
15-410, S’1634
Hardware Techniques
Small number of pages? Page “table” can be a few registers PDP-11: 64k address space
8 “pages” of 8k each – 8 registers
Typical case Large page tables, live in memory
Processor has “Page Table Base Register” (names vary) Set during context switch
![Page 35: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/35.jpg)
15-410, S’1635
Double trouble?
Program requests memory access MOVL (%ESI),%EAX
Processor makes two memory accesses! Splits address into page number, intra-page offset Adds page number to page table base register Fetches page table entry (PTE) from memory Concatenates frame address with intra-page offset Fetches program's data from memory into %eax
Solution: “TLB” Not covered today
![Page 36: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/36.jpg)
15-410, S’1636
Page Table Entry Mechanics
PTE conceptual job Specify a frame number
![Page 37: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/37.jpg)
15-410, S’1637
Page Table Entry Mechanics
PTE conceptual job Specify a frame number
PTE flags Valid bit
Not-set means access should generate an exception Protection
Read/Write/Execute bits Reference bit, “dirty” bit
Set if page was read/written “recently” Used when paging to disk (later lecture)
Specified by OS for each page/frame Inspected/updated by hardware
![Page 38: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/38.jpg)
15-410, S’1638
Page Table Structure
Problem Assume 4 KByte pages, 4-Byte PTEs Ratio: 1024:1
4 GByte virtual address (32 bits) ⇒ _______ page table
![Page 39: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/39.jpg)
15-410, S’1639
Page Table Structure
Problem Assume 4 KByte pages, 4-Byte PTEs Ratio: 1024:1
4 GByte virtual address (32 bits) ⇒ 4 MByte page table
![Page 40: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/40.jpg)
15-410, S’1640
Page Table Structure
Problem Assume 4 KByte pages, 4-Byte PTEs Ratio: 1024:1
4 GByte virtual address (32 bits) ⇒ 4 MByte page table For each process!
![Page 41: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/41.jpg)
15-410, S’1641
Page Table Structure
Problem Assume 4 KByte pages, 4-Byte PTEs Ratio: 1024:1
4 GByte virtual address (32 bits) ⇒ 4 MByte page table For each process!
One Approach: Page Table Length Register (PTLR) (names vary) Many programs don't use entire virtual space Restrict a process to use entries 0...N of page table On-chip register detects out-of-bounds reference (>N) Allows small PTs for small processes
(as long as stack isn't far from data)
![Page 42: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/42.jpg)
15-410, S’1642
Page Table Structure
Key observation Each process page table is a sparse mapping Many pages are not backed by frames
Address space is sparsely used» Enormous “hole” between bottom of stack, top of heap» Often occupies 99% of address space!
Some pages are on disk instead of in memory
![Page 43: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/43.jpg)
15-410, S’1643
Page Table Structure
Key observation Each process page table is a sparse mapping Many pages are not backed by frames
Address space is sparsely used» Enormous “hole” between bottom of stack, top of heap» Often occupies 99% of address space!
Some pages are on disk instead of in memory
Refining our observation Page tables are not randomly sparse
Occupied by sequential memory regions Text, rodata, data+bss, stack
“Sparse list of dense lists”
![Page 44: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/44.jpg)
15-410, S’1644
Page Table Structure
How to map “sparse list of dense lists”?We are computer scientists!
...?
![Page 45: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/45.jpg)
15-410, S’1645
Page Table Structure
How to map “sparse list of dense lists”?We are computer scientists!
Insert a level of indirection Well, get the ECE folks to do it for us
Multi-level page table “Page directory” maps large chunks of address space to... ...Page tables, which map pages to frames Conceptually the same mapping as last time
But the implementation is a two-level tree, not a single step
![Page 46: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/46.jpg)
15-410, S’1646
Multi-level page table
P1 Offset
....f29f34f25
PageTables
....f99f87....
P2 ....f08 f07 ....
PageDirectory
![Page 47: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/47.jpg)
15-410, S’1647
Multi-level page table
P1 Offset
....f29f34f25
PageTables
....f99f87....
P2 ....f08 f07 ....
PageDirectory
![Page 48: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/48.jpg)
15-410, S’1648
Multi-level page table
P1 Offset
....f29f34f25
PageTables
....f99f87....
P2 ....f08
⇒f07⇒....
PageDirectory
![Page 49: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/49.jpg)
15-410, S’1649
Multi-level page table
P1 Offset
....f29f34f25
PageTables
....f99f87....
P2 ....f08
⇒f07⇒....
PageDirectory
![Page 50: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/50.jpg)
15-410, S’1650
Multi-level page table
P1 Offset
....f29f34f25
PageTables
....f99f87....
P2
![Page 51: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/51.jpg)
15-410, S’1651
Multi-level page table
P1 Offset
....f29f34f25
f34
PageTables
....f99f87....
P2
![Page 52: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/52.jpg)
15-410, S’1652
Multi-level page table
P1 Offset
....f29f34f25
f34 Offset
PageTables
....f99f87....
P2
![Page 53: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/53.jpg)
15-410, S’1653
Sparse Mapping?Assume 4 KByte pages, 4-byte PTEs
Ratio: 1024:1 4 GByte virtual address (32 bits) ⇒ 4 MByte page table
Now assume page directory with 4-byte PDEs 4-megabyte page table becomes 1024 4K page tables Plus one 1024-entry page directory to point to them Result:
![Page 54: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/54.jpg)
15-410, S’1654
Sparse Mapping?Assume 4 KByte pages, 4-byte PTEs
Ratio: 1024:1 4 GByte virtual address (32 bits) ⇒ 4 MByte page table
Now assume page directory with 4-byte PDEs 4-megabyte page table becomes 1024 4K page tables Plus one 1024-entry page directory to point to them Result: 4 Mbyte + 4Kbyte
![Page 55: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/55.jpg)
15-410, S’1655
Sparse Mapping?Assume 4 KByte pages, 4-byte PTEs
Ratio: 1024:1 4 GByte virtual address (32 bits) ⇒ 4 MByte page table
Now assume page directory with 4-byte PDEs 4-megabyte page table becomes 1024 4K page tables Plus one 1024-entry page directory to point to them Result: 4 Mbyte + 4Kbyte (this is better??)
![Page 56: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/56.jpg)
15-410, S’1656
Sparse Mapping?Assume 4 KByte pages, 4-byte PTEs
Ratio: 1024:1 4 GByte virtual address (32 bits) ⇒ 4 MByte page table
Now assume page directory with 4-byte PDEs 4-megabyte page table becomes 1024 4K page tables Plus one 1024-entry page directory to point to them Result: 4 Mbyte + 4Kbyte (this is better??)
Sparse address space... ...means most page tables contribute nothing to mapping... ...most page tables would contain only “no frame” entries... ...replace those PT's with “null pointer” in page directory. Result: empty 4GB address space specified by 4KB directory
![Page 57: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/57.jpg)
15-410, S’1657
Sparse Address Space?Address space mostly “blank”
Reads & writes should fail
“Compress” out “the middle” Sparse address space should
use a small mapping structure Fully-occupied address space
can justify a larger mapping structure
stack-no--no--no--no--no--no--no--no--no--no--no--no--no-datacode
![Page 58: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/58.jpg)
15-410, S’1658
Sparse Mapping!“Sparse” page directory
Pointers to non-empty PT's “Null” instead of empty PT
Common case Need 2 or 3 page tables
One or two map code & data One maps stack
Page directory has 1024 slots 2-3 point to PT's Remainder are “not present”
Result 2-3 PT's, 1 PD Map entire address space with
12-16Kbyte, not 4Mbyte
-no--no-f11f56
f23-no--no--no- f77
-no--no- f55
stack-no--no--no--no--no--no--no--no--no--no--no--no--no-datacode
![Page 59: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/59.jpg)
15-410, S’1659
Segmentation
Physical memory is (mostly) linearIs virtual memory linear?
Typically a set of “regions” “Module” = code region + data region Region per stack Heap region
Why do regions matter? Natural protection boundary Natural sharing boundary
![Page 60: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/60.jpg)
15-410, S’1660
Segmentation: Mapping
Seg # Offset
<=
Linear AddressLimit Base
+
%CS:%EIP
![Page 61: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/61.jpg)
15-410, S’1661
Segmentation + Paging
80386 (does it all!) Processor address directed to one of six segments
CS: Code Segment, DS: Data Segment 32-bit offset within a segment CS:EIP
Descriptor table maps selector to segment descriptor Offset fed to segment descriptor, generates linear address Linear address fed through page directory, page table See textbook!
![Page 62: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/62.jpg)
15-410, S’1662
x86 Type Theory
Instruction ⇒ segment selector [PUSHL implicitly specifies selector in %SS]
Process ⇒ (selector ⇒ (base,limit)) [Global,Local Descriptor Tables]
Segment, within-segment address ⇒ “linear address” CS:EIP means “EIP + base of code segment”
Process ⇒ (linear address high ⇒ page table) [Page Directory Base Register, page directory indexing]
Page Table: linear address middle ⇒ frame addressMemory: frame address + offset ⇒ ...
![Page 63: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/63.jpg)
15-410, S’1663
Summary
Processes emit virtual addresses segment-based or linear
A magic process maps virtual to physicalNo, it's not magic
Address validity verified Permissions checked Mapping may fail (trap handler)
Data structures determined by access patterns Most address spaces are sparsely allocated
![Page 64: 15-410, S’16 1 Virtual Memory #1 Dave Eckhardt Todd Mowry L15_VM1 15-410 “...We are Computer Scientists!...”](https://reader036.vdocuments.site/reader036/viewer/2022062911/5a4d1bce7f8b9ab0599d7e05/html5/thumbnails/64.jpg)
15-410, S’1664
Quote
Any problem in Computer Science can be solved by an extra level of indirection.
–Roger Needham