CSC373/406: 10 [10/13] Previous pageContentsNext page

Figure 10.1: A system that uses physical addressing.

vm-physicaloverview

Figure 10.2: A system that uses virtual addressing.

vm-virtualoverview

Figure 10.3: How a VM system uses main memory as a cache.

vm-vaddrspace

Figure 10.4: Page table.

vm-pt

Figure 10.5: VM page hit.

vm-pthit

Figure 10.6: VM page fault (before).

vm-ptmissbefore

Figure 10.7: VM page fault (after).

vm-ptmissafter

Figure 10.8: Allocating a new virtual page.

vm-ptalloc

Figure 10.9: How VM provides processes with separate address spaces.

vm-separatespaces

Figure 10.10: The memory image of a Linux process.

vm-rtimage

Figure 10.11: Using VM to provide page-level memory protection.

vm-vmprotect

Figure 10.13: Address translation with a page table.

vm-addrtrans

Figure 10.14: Operational view of page hits and page faults.

vm-vmhit

Figure 10.14: Operational view of page hits and page faults.

vm-vmmiss

Figure 10.15: Integrating VM with a physically addressed cache.

vm-vmcache

Figure 10.16: Components of a virtual address that are used to access the TLB.

vm-tlbaddr

Figure 10.17: Operational view of a TLB hit and miss.

vm-tlbhit

Figure 10.17: Operational view of a TLB hit and miss.

vm-tlbmiss

Figure 10.18: A two-level page table hierarchy.

vm-multilevel

Figure 10.19: Address translation with a k-level page table.

vm-multiaddr

Figure 10.20: Addressing for small memory system.

vm-ataddr

Figure 10.21: TLB, page table, and cache for small memory system.

vm-attlb

Figure 10.21: TLB, page table, and cache for small memory system.

vm-atpt

Figure 10.21: TLB, page table, and cache for small memory system.

vm-atcache

Figure 10.22: The Pentium memory system.

vm-p6overview

Figure 10.23: Summary of Pentium address translation.

vm-p6addrtrans

Figure 10.24: Pentium multi level page table.

vm-p6multilevel

Figure 10.25: Formats of Pentium page directory entry (PDE) and page table entry (PTE).

vm-p6pde

Figure 10.25: Formats of Pentium page directory entry (PDE) and page table entry (PTE).

vm-p6pte

Figure 10.26: Pentium page table translation.

vm-p6ptmap

Figure 10.27: Pentium TLB translation.

vm-p6tlbtrans

Figure 10.28: The virtual memory of a Linux process.

vm-linuxrtimage

Figure 10.29: How Linux organizes virtual memory.

vm-linuxvm

Figure 10.30: Linux page fault handling.

vm-linuxfault

Figure 10.31: A shared object.

vm-sharedobj1

Figure 10.31: A shared object.

vm-sharedobj2

Figure 10.32: A private copy-on-write object.

vm-privateobj1

Figure 10.32: A private copy-on-write object.

vm-privateobj2

Figure 10.33: How the loader maps the areas of the user address space.

vm-execmap

Figure 10.34: Visual interpretation of mmap arguments.

vm-mmapargs

Figure 10.35: The heap.

vm-heapmap

Figure 10.36: Allocating and freeing blocks with malloc.

vm-mallocexa

Figure 10.36: Allocating and freeing blocks with malloc.

vm-mallocexb

Figure 10.36: Allocating and freeing blocks with malloc.

vm-mallocexc

Figure 10.36: Allocating and freeing blocks with malloc.

vm-mallocexd

Figure 10.36: Allocating and freeing blocks with malloc.

vm-mallocexe

Figure 10.37: Format of a simple heap block.

vm-implicitblock

Figure 10.38: Organizing the heap with an implicit free list.

vm-implicitlist

Figure 10.39: Splitting a free block to satisfy a three-word allocation request.

vm-implicitsplit

Figure 10.40: An example of false fragmentation.

vm-implicitfrag

Figure 10.41: Format of heap block that uses a boundary tag.

vm-boundarytags

Figure 10.42: Coalescing with boundary tags.

vm-coalesce1

Figure 10.42: Coalescing with boundary tags.

vm-coalesce2

Figure 10.42: Coalescing with boundary tags.

vm-coalesce3

Figure 10.42: Coalescing with boundary tags.

vm-coalesce4

Figure 10.44: Invariant form of the implicit free list.

vm-mmimplicitlist

Figure 10.50: Format of heap blocks that use doubly-linked free lists.

vm-linkedblocka

Figure 10.50: Format of heap blocks that use doubly-linked free lists.

vm-linkedblockf

Figure 10.51: A garbage collector's view of memory as a directed graph.

vm-gcmem

Figure 10.52: Integrating a conservative garbage collector and a C malloc package.

vm-cgc

Figure 10.54: Mark and sweep example.

vm-marksweepex

Figure 10.55: Left and right pointers in a balanced tree of allocated blocks.

vm-balancedtree

Previous pageContentsNext page