memory management virtual memory - new york university
TRANSCRIPT
![Page 1: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/1.jpg)
Computer Systems Organization
Thomas Wies
https://cs.nyu.edu/wies
CSCI-UA.0201
Memory Management – Virtual Memory
![Page 2: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/2.jpg)
Virtual Memory and Isolation
![Page 3: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/3.jpg)
Isolation
User applications
Operating system
Software
Hardware CPU Memory I/O
![Page 4: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/4.jpg)
Isolation
User applications
Operating system
Software
Hardware CPU Memory I/O
![Page 5: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/5.jpg)
Isolation
User applications
Operating system
Software
Hardware CPU Memory I/O
Isolation – Enforced separation to contain effects of failures
![Page 6: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/6.jpg)
Isolation
User applications
Operating system
Software
Hardware CPU Memory I/O
Isolation – Enforced separation to contain effects of failures
Process Process Process Process
The unit of isolation
![Page 7: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/7.jpg)
Process
• An instance of a computer program that is being executed
• Program vs. Process – Program: a passive collection of instructions
– Process: the actual execution of those instructions
• Different processes have different process id – getpid(): function that returns id of current
process
– Command ps: list all processes
![Page 8: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/8.jpg)
Isolation
User applications
Software
Hardware CPU Memory I/O
To run a program, OS starts a process and provide services through system calls (getpid(), fopen()).
Process Process Process Process
Operating system
system calls/ services
create
![Page 9: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/9.jpg)
Our "Mental Model" of Memory
CPU
rip: movq (%rax),%rbx
rax: 0x38
rbx: 0x1
...
0x1
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…010
...
addr 0x38
data 0x1
![Page 10: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/10.jpg)
Processes Share the Same Physical Address Space
• The requirements: – Different processes use the same address to store their
local code/data.
– One process can not access another process' memory
• Why – Isolation: prevent process X from damaging process Y
– Security: prevent process X from spying on process Y
– Simplicity: Systems (OS/Compiler) can handle different processes with the same code. (etc. linking or loading)
• How – Virtual Memory
![Page 11: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/11.jpg)
Real System – Virtual Addressing Memory Management Unit (MMU)
CPU
rip: movq (%rax),%rbx
rax: 0x38
rbx: 0x1
...
0x1
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…010
...
virtual address 0x38
data 0x1
MMU
physical address 0x10
![Page 12: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/12.jpg)
Real System – Virtual Addressing Memory Management Unit (MMU)
CPU
rip: movq (%rax),%rbx
rax: 0x38
rbx: 0x1
...
0x1
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…010
...
virtual address 0x38
data 0x1
MMU
physical address 0x10 Virtual address space: 64-bit addresses [0, 264) 32-bit addresses [0, 232)
![Page 13: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/13.jpg)
Address Translation – Strawman
• MMU has a mapping table at byte granularity
– Map each virtual address into a physical address
MMU
Virtual address Physical address
…
0x39 0x11
0x38 0x10
…
![Page 14: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/14.jpg)
Address Translation – Strawman
• MMU has a mapping table at byte granularity
– Map each virtual address into a physical address
MMU
Virtual address Physical address
…
0x39 0x11
0x38 0x10
…
What is the size of mapping table?
![Page 15: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/15.jpg)
Address Translation – Strawman
• MMU has a mapping table at byte granularity
– Map each virtual address into a physical address
MMU
Virtual address Physical address
…
0x39 0x11
0x38 0x10
…
What is the size of mapping table?
Size of virtual address space 264
![Page 16: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/16.jpg)
Address Translation – Page
• Observation
– Both virtual memory space and physical memory space are contiguous
• Build the mapping at coarse granularity
– split the virtual/physical memory space into contiguous blocks of the same size
– blocks are called pages
– page table maps the virtual pages to physical pages
![Page 17: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/17.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0xfff…ffff
Virtual Memory Space (conceptual memory space)
![Page 18: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/18.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0xfff…ffff
Virtual Memory Space (conceptual memory space)
VP0
VP1
VP2
...
PP0
PP1
PP2
...
![Page 19: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/19.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0xfff…ffff
Virtual Memory Space (conceptual memory space)
VP0
VP1
VP2
...
PP0
PP1
PP2
... MMU
Virtual page # (VPN)
Physical page # (PPN)
VP0 PP10
VP1 PP0
…
Page Table
![Page 20: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/20.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
PP0
PP1
PP2
... MMU
VP0 PP10
VP1 PP1
…
Page Table
CPU
offset in the page (0x12)
virtual address 0x1234
virtual page number (VP1)
![Page 21: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/21.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
PP0
PP1
PP2
... MMU
VP0 PP10
VP1 PP1
…
Page Table
CPU
+
offset in the page (0x12)
virtual address 0x1234
virtual page number (VP1)
physical address
(PP1)
data
![Page 22: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/22.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
PP0
PP1
PP2
... MMU
VP0 PP10
VP1 PP1
…
Page Table
CPU
+
offset in the page (0x12)
virtual address 0x1234
virtual page number (VP1)
physical address
(PP1)
data
What is the size of mapping table now? (virtual address space is 264, page size is 4KB)
![Page 23: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/23.jpg)
Address Translation – Page-based
0x0…058
0x0…050
0x0…048
0x0…040
0x0…038
0x0…030
0x0…028
0x0…020
0x0…018
0x0…000
...
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
PP0
PP1
PP2
... MMU
VP0 PP10
VP1 PP1
…
Page Table
CPU
+
offset in the page (0x12)
virtual address 0x1234
virtual page number (VP1)
physical address
(PP1)
data
What is the size of mapping table now? (virtual address space is 264, page size is 4KB)
Answer: 252
![Page 24: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/24.jpg)
Address Translation
• Virtual Address Physical Address
– Calculate the virtual page number
– Locate the data from the according physical page
• Memory address width: 64 bits
• Page size: 4 KB (212)
Virtual page number (VPN) Page offset (VPO)
0 11 12 63
Virtual address layout
![Page 25: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/25.jpg)
Address Translation – Page-based
0x0…3000
…
0x0…2008
0x0…2000
…
0x0…1008
0x0…1000
…
0x0…0008
0x0…0000
…
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
PP0
PP1
PP2
... MMU
VP0 PP10
VP1 PP2
…
Page Table
CPU
offset in the page 0x1234 & 0xfff 0x234
virtual address 0x1234
VPN = Vaddr >> 12 0x1234 >> 12 0x1
![Page 26: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/26.jpg)
Address Translation – Page-based
0x0…3000
…
0x0…2008
0x0…2000
…
0x0…1008
0x0…1000
…
0x0…0008
0x0…0000
…
0x0…ffff
Physical Memory Space (real memory space)
e.g. 4GB
PP0
PP1
PP2
... MMU
VP0 PP10
VP1 PP2
…
Page Table
CPU
+
offset in the page 0x1234 & 0xfff 0x234
virtual address 0x1234
VPN = Vaddr >> 12 0x1234 >> 12 0x1 0x2234
PP1
![Page 27: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/27.jpg)
Page table entries encode permission information
VP0 PP1
VP1 PP3
VP2 PP4
VP4 PP0
VP5 PP3
VP6 PP2
Conceptual Page Table
Physical Page # … S W P … PTE format
Actual Page Table
P[0] 8 byte page table entry (PTE)
P[1] …
P[3]
P[4]
P[5]
How many PTEs per page?
writeable
present accessible by OS only
![Page 28: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/28.jpg)
Advanced Topics
• Multi-level page tables
• Demand paging
• Accelerating address translation
![Page 29: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/29.jpg)
Multi-level Page Tables
• Problem with 1-level page table:
– For 64-bit address space and 4KB page size, what is the number of page table entries required for translation?
264
212= 252
# of bytes addressable in 64-bit address space
page size
# of pages in 64-bit address space = # of page table entries required
![Page 30: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/30.jpg)
Multi-level Page Tables
• Problem
– how to reduce # of page table entries required?
• Solution
– multi-level page table
– x86-64 supports 4-level page table
![Page 31: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/31.jpg)
Multi-level Page Tables on x86_64
Reserved L0 Offset L1 Offset L2 Offset L3 Offset Page Offset
63 48 47 39 38 30 29 21 20 12 11 0
Root Addr … …
…
…
…
…
…
…
…
Level 0
Level 1
Level 2 Level 3
CPU register: CP3 Physical address of the 1st entry at L0
![Page 32: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/32.jpg)
Multi-level Page Tables on x86_64
Reserved L0 Offset L1 Offset L2 Offset L3 Offset Page Offset
63 48 47 39 38 30 29 21 20 12 11 0
Root Addr … …
…
…
…
…
…
…
…
Level 0
Level 1
Level 2 Level 3
CPU register: CP3 Physical address of the 1st entry at L0
![Page 33: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/33.jpg)
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
CPU register: CP3 Physical address of the 1st entry at L0
Virtual Address: 0x0102001ffa8
![Page 34: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/34.jpg)
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
CPU register: CP3 Physical address of the 1st entry at L0
Virtual Address: 0x0102001ffa8
![Page 35: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/35.jpg)
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
Level 1
CPU register: CP3 Physical address of the 1st entry at L0
0x3587000
unused
0x3588000
...
unused
Virtual Address: 0x0102001ffa8
![Page 36: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/36.jpg)
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
Level 1
CPU register: CP3 Physical address of the 1st entry at L0
0x3587000
unused
0x3588000
...
unused
Virtual Address: 0x0102001ffa8
![Page 37: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/37.jpg)
0x3678000
0x3579000
unused
...
unused
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
Level 1
Level 2
CPU register: CP3 Physical address of the 1st entry at L0
0x3587000
unused
0x3588000
...
unused
Virtual Address: 0x0102001ffa8
![Page 38: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/38.jpg)
0x3678000
0x3579000
unused
...
unused
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
Level 1
Level 2
CPU register: CP3 Physical address of the 1st entry at L0
0x3587000
unused
0x3588000
...
unused
Virtual Address: 0x0102001ffa8
![Page 39: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/39.jpg)
0x5788000
0x5789000
0x578a000
...
0x5799000
0x3678000
0x3579000
unused
...
unused
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
Level 1
Level 2 Level 3
CPU register: CP3 Physical address of the 1st entry at L0
0x3587000
unused
0x3588000
...
unused
Virtual Address: 0x0102001ffa8
![Page 40: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/40.jpg)
0x5788000
0x5789000
0x578a000
...
0x5799000
0x3678000
0x3579000
unused
...
unused
Multi-level Page Tables on x86_64
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 0x3466000
0x3467000
0x3468000
...
unused
Level 0
Level 1
Level 2 Level 3
CPU register: CP3 Physical address of the 1st entry at L0
0x3587000
unused
0x3588000
...
unused
Virtual Address: 0x0102001ffa8
Physical Address: 0x5799fa8
![Page 41: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/41.jpg)
Review Virtual Address
• How can each process have the same virtual address space?
– OS sets up a separate page table for each process
– When executing a process p, MMU uses p's page table to do address translation.
![Page 42: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/42.jpg)
Virtual Address Space for Each Process Page table of Process 1
Page table of Process 2
V. Mem. Process 1
V. mem Process 2
...
PP0
PP1
PP2
...
Physical main memory
![Page 43: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/43.jpg)
Question
![Page 44: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/44.jpg)
Question
• Why does multi-level page table reduce page table size?
![Page 45: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/45.jpg)
Question
• Why does multi-level page table reduce page table size?
• Answer:
– 4-level page table is not fully occupied.
– Demand paging: OS constructs page table on demand.
![Page 46: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/46.jpg)
Demand Paging
• Memory Allocation (e.g., p = sbrk(8192))
• User program to OS:
– Declare a virtual address range from p to p + 8192 for use by the current process.
• OS' actions:
– Allocate the physical page and populate the page table.
![Page 47: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/47.jpg)
Demand Paging
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
unused
unused
...
unused
Level 0
CPU register: CP3
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's'
1. OS adds [p,p+8192) to the process' virtual address info
current process' page table
![Page 48: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/48.jpg)
Demand Paging
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
unused
unused
...
unused
Level 0
CPU register: CP3
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's'
1. OS adds [p,p+8192) to the process' virtual address info
2. MMU tells OS entry 1 is missing in the page at level 0. (Page fault) current process' page table
![Page 49: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/49.jpg)
Demand Paging
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
0x3468000
unused
...
unused
Level 0
CPU register: CP3
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's'
1. OS adds [p,p+8192) to the process' virtual address info
2. MMU tells OS entry 1 is missing in the page at level 0. (Page fault)
3. OS constructs the mapping for the address. (Page fault handler)
current process' page table
![Page 50: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/50.jpg)
1. OS adds [0x010201ffa8, 0x010201ffa8+8192) to the process' virtual address info
2. MMU tells OS entry 1 is missing in the page at level 0. (Page fault)
3. OS constructs the mapping for the address. (Page fault handler)
...
...
...
...
...
unused
unused
unused
...
0x5799000
0x3678000
unused
unused
...
unused
Demand Paging
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
0x3468000
unused
...
unused
Level 0 Level 1 Level 2 Level 3
CPU register: CP3 unused
unused
0x3588000
...
unused
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's'
Physical page
current process' page table New pages allocated by OS
![Page 51: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/51.jpg)
1. OS adds [0x010201ffa8, 0x010201ffa8+8192) to the process' virtual address info
2. MMU tells OS entry 1 is missing in the page at level 0. (Page fault)
3. f 4. OS tells the CPU to resume
execution
...
...
...
...
...
unused
unused
unused
...
0x5799000
0x3678000
unused
unused
...
unused
Demand Paging
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
0x3468000
unused
...
unused
Level 0 Level 1 Level 2 Level 3
CPU register: CP3 unused
unused
0x3588000
...
unused
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's'
Physical page
current process' page table
![Page 52: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/52.jpg)
1. OS adds [0x010201ffa8, 0x010201ffa8+8192) to the process' virtual address info
2. MMU tells OS entry 1 is missing in the page at level 0. (Page fault)
3. f 4. f 5. MMU translates address again
and accesses the physical memory.
...
...
'c'
...
...
unused
unused
unused
...
0x5799000
0x3678000
unused
unused
...
unused
Demand Paging
Reserved 0x01 0x02 0x00 0x1f 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
0x3468000
unused
...
unused
Level 0 Level 1 Level 2 Level 3
CPU register: CP3 unused
unused
0x3588000
...
unused
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's'
Physical page
current process' page table
![Page 53: Memory Management Virtual Memory - New York University](https://reader036.vdocuments.mx/reader036/viewer/2022062301/62a54bb5a2f097355339a4f9/html5/thumbnails/53.jpg)
1. OS adds [0x010201ffa8, 0x010201ffa8+8192) to the process' virtual address info
2. MMU tells OS entry 1 is missing in the page at level 0. (Page fault)
...
...
'c'
...
...
unused
unused
unused
...
0x5799000
unused
0x3678000
unused
unused
...
unused
Demand Paging
Reserved 0x01 0x02 0x00 0x20 0xfa8
63 48 47 39 38 30 29 21 20 12 11 0
0x4ffff000 ...
0x3468000
unused
...
unused
Level 0 Level 1 Level 2
Level 3
CPU register: CP3 unused
unused
0x3588000
...
unused
char * p = (char*) sbrk(8192); // p is 0x0102001ffa8 p[0] = 'c' p[4096] = 's' // p+4096 is 0x01020020fa8
Physical page
current process' page table