Contenu connexe
Similaire à ch4-pv2-virtual-process-memory (20)
ch4-pv2-virtual-process-memory
- 6. 8
Task & Page Table
app
mm
1. 一個 page table 代表一個 virtual space
2. 一個 task 對應一個 page table( 透過 mm)
- 7. 9
Task & Page Table
kthread kthread app2
app3
thread2
app
app3
thread1
TTBR0
mmmm mm mm
- 8. 10
Task & Page Table
vma
vma
user space 建 mapping --> 建 vma
kernel space 建 mapping --> 填 page table
注意 : 建 vma 不代表填 page table( 等 fault 填 )
vma
app1
mm
- 19. 22
Process Mapping
physical
child task
virtual vma app-text [file mapping]
vma app-data
vma [heap] [anonymous mapping]
vma [sigpage]
vma ld-text
vma ld-data
vma [stack]
vma libc-text
vma libc-data
vma libgcc-text
vma libgcc-data
vma libgcc-text
vma libgcc-data
argument
environment
- 22. 25
Page Fault: Copy on Write
parent task
virtual physical
child task
virtual
if write?
1. 配置 pfn
(highmem 佳 )
- 23. 26
Page Fault: Copy on Write
parent task
virtual physical
child task
virtual
if write?
1. 配置 pfn
(highmem 佳 )
2. 複製 data
- 24. 27
Page Fault: Copy on Write
parent task
virtual physical
child task
virtual
if write?
1. 配置 pfn
(highmem 佳 )
2. 複製 data
3. 改 page table
- 25. 28
Page Fault: File Mapping
physical
child task
virtual vma app-text [file mapping]
vma app-data
vma [heap]
disk
fault@file_mapping
1. 配置 pfn
(highmem 佳 )
- 26. 29
Page Fault: File Mapping
vma app-text [file mapping]
vma app-data
vma [heap]
disk
read in
fault@file_mapping
1. 配置 pfn
(highmem 佳 )
2. 讀入 data
physical
child task
virtual
- 27. 30
Page Fault: File Mapping
vma app-text [file mapping]
vma app-data
vma [heap]
disk
read in
fault@file_mapping
1. 配置 pfn
(highmem 佳 )
2. 讀入 data
3. 填 page table
physical
child task
virtual
- 28. 31
Page Fault: Anon Mapping
vma app-text [file mapping]
vma app-data
vma [heap] [anonymous mapping]
disk
read in
fault@file_mapping
1. 配置 pfn
(highmem 佳 )
2. 讀入 data
3. 填 page table
fault@anon_mapping
1. 配置 pfn
(highmem 佳 )
physical
child task
virtual
- 29. 32
Page Fault: Anon Mapping
vma app-text [file mapping]
vma app-data
vma [heap] [anonymous mapping]
disk
read in
fault@file_mapping
1. 配置 pfn
(highmem 佳 )
2. 讀入 data
3. 填 page table
fault@anon_mapping
1. 配置 pfn
(highmem 佳 )
2. memset 0
physical
child task
virtual
- 30. 33
Page Fault: Anon Mapping
vma app-text [file mapping]
vma app-data
vma [heap] [anonymous mapping]
disk
read in
fault@file_mapping
1. 配置 pfn
(highmem 佳 )
2. 讀入 data
3. 填 page table
fault@anon_mapping
1. 配置 pfn
(highmem 佳 )
2. memset 0
3. 填 page table
physical
child task
virtual