After this documentation was released in July 2003, I was approached by Prentice Hall and asked to write a book on the Linux VM under the Bruce Peren's Open Book Series.

The book is available and called simply "Understanding The Linux Virtual Memory Manager". There is a lot of additional material in the book that is not available here, including details on later 2.4 kernels, introductions to 2.6, a whole new chapter on the shared memory filesystem, coverage of TLB management, a lot more code commentary, countless other additions and clarifications and a CD with lots of cool stuff on it. This material (although now dated and lacking in comparison to the book) will remain available although I obviously encourge you to buy the book from your favourite book store :-) . As the book is under the Bruce Perens Open Book Series, it will be available 90 days after appearing on the book shelves which means it is not available right now. When it is available, it will be downloadable from http://www.phptr.com/perens so check there for more information.

To be fully clear, this webpage is not the actual book.
next up previous contents
Next: About this document ... Up: understand-html Previous: Bibliography   Contents


Index

ZONE_ DMA
3.
ZONE_ HIGHMEM
3.
ZONE_ NORMAL
3.
__add_to_page_cache()
11.3.1 | 11.3.1
__alloc_bootmem()
6.3
__alloc_bootmem_core()
6.3
__alloc_bootmem_node()
6.3 | 6.3
__ex_table
5.5
__FIXADDR_SIZE
5.1
__init
6.5
__init_begin
6.5
__init_end
6.5
__pa()
4.7.1
__pgd()
4.2
__pgprot()
4.2
__pmd()
4.2
__pte()
4.2
__va()
4.7.1
__vma_link()
5.4.5
_end
6.2.1
_page_hashfn()
11.2.1
active_list
11.2
add_to_swap_cache()
12.4
address_space
5.2 | 5.4.1
alloc_bootmem()
6.3
alloc_bootmem_low()
6.3
alloc_bootmem_low_pages()
6.3
alloc_bootmem_low_pages_node()
6.3
alloc_bootmem_node()
6.3
alloc_bootmem_pages()
6.3
alloc_bootmem_pages_node()
6.3
alloc_bounce_bh()
10.4.2
alloc_bounce_page()
10.4.2
allocate_mm()
5.3.1
arch_get_unmapped_area()
5.4.4
bmap()
12.9
bootmem_data
6.1
bounce_end_io()
10.4.3
bounce_end_io_write()
10.4.1
brw_page()
12.9
buffer_head
10.4.1
cache_cache
9.6
cache_sizes
9.4
cache_sizes_t
9.4
cc_data()
9.5.1
cc_entry()
9.5.2
ccupdate_t
9.5.4
CFGS_OFF_SLAB
9.2.1
check_pgt_cache()
4.5
clear_user_highpage()
5.6.2.0.1
clock_searchp
9.1.7
CONFIG_SLAB_DEBUG
9.1.1
contig_page_data
3.
copy_from_high_bh()
10.4.3
copy_mm()
5.3.2
cpu_vm_mask
5.3
create_bounce()
10.4.2
def_flags
5.3
DEF_PRIORITY
11.4
DFLGS_GROWN
9.1.3
do_anonymous_page()
5.6.2.0.1
do_ccupdate_local()
9.5.4
do_mmap2()
5.4.2
do_mmap_pgoff()
5.4.2
do_munmap()
5.4.11
do_no_page()
5.6.1 | 5.6.2
do_page_fault()
5.6
do_swap_page()
4.1 | 5.6.1 | 5.6.3
do_wp_page()
5.6.1 | 5.6.4
empty_zero_page
5.6.2.0.1
enable_all_cpucaches()
9.5.3
enable_cpucache()
9.5.3
exception_table_entry
5.5
exit_mmap()
5.3.3
filemap_nopage()
5.6.2.0.2
find_max_low_pfn()
6.2.1
find_max_pfn()
6.2.1
find_vma()
5.4.3
find_vma_intersection()
5.4.3
find_vma_prepare()
5.4.5
find_vma_prev()
5.4.3
FIX_KMAP_BEGIN
10.3
FIX_KMAP_END
10.3
FIXADDR_START
5.1 | 10.1
FIXADDR_TOP
5.1
fixrange_init()
4.6.2
flush_page_to_ram()
5.6.2.0.1
free_all_bootmem()
6.5
free_all_bootmem_core()
6.5
free_all_bootmem_node()
6.5
free_area_init()
4.7.3
free_area_init_core()
4.7.3
free_area_init_node()
4.7.3
free_area_t
7.1
free_bootmem()
6.4
free_bootmem_node()
6.4
free_initmem()
6.5
free_pages_init()
6.5
free_pgtables()
5.4.11
g_cpucache_up
9.5.3
generic_file_read()
11.3.1
GET_PAGE_CACHE()
9.2
GET_PAGE_SLAB()
9.2
get_pgd_fast()
4.5
get_pgd_slow()
4.5
get_swap_page()
12.3
get_swaphandle_info()
12.9
get_unmapped_area()
5.4.4
gfp_mask
7.2
handle_mm_fault()
5.6
handle_pte_fault()
5.6.1
highend_pfn
6.2
highstart_pfn
6.2
inactive_list
11.2
init_emergency_pool()
10.5
init_mm()
5.3.2 | 5.3.2
insert_vm_struct()
5.4.5
kfree()
9.4.2
km_type
10.3
KM_TYPE_NR
10.3
kmalloc()
9.4.1
kmap()
5.1
kmap_atomic()
10.3
kmap_high()
10.2 | 10.2
kmem_bufctl_t
9.2.3
kmem_cache
9.6
kmem_cache_init()
9.6
kmem_cache_slabmgmt()
9.2.1
kmem_freepages()
9.7
kmem_getpages()
9.7
kmem_tune_cpucache()
9.5.3
kswapd()
11.1
kswapd_balance()
11.1
kswapd_can_sleep()
11.1
kswapd_init()
11.1
kswapd_wait
11.1
kunmap()
10.2.1
kunmap_atomic()
10.3
kunmap_high()
10.2.1 | 10.2.1
LAST_PKMAP
10.1
last_pkmap_nr
10.2
locked_vm
5.3
map_new_virtual()
10.2
MARK_USED()
7.1
MAX_DMA_ADDRESS
6.3
max_low_pfn
6.2
max_mapped
11.3.3
MAX_NR_ZONES
3.3.1
MAX_ORDER
7.1
max_pfn
6.2
max_scan
11.3.3
MAX_SWAP_BADPAGES
12.1
MAX_SWAPFILES
12.1
mem_init()
6.5
merge_segments()
5.4.6
min_low_pfn
6.2
mk_pte()
4.4
mk_pte_phys()
4.4
mlock_fixup()
5.4.10
mlock_fixup_all()
5.4.10
mlock_fixup_end()
5.4.10
mlock_fixup_middle()
5.4.10
mlock_fixup_start()
5.4.10
mm_alloc()
5.3.1
mm_count
5.3
mm_init()
5.3.1
mm_struct
5.2 | 5.3
mm_users
5.3
mmap_sem
5.3
mmdrop()
5.3.3
mmlist
5.3
mmput()
5.3.3
move_page_tables()
5.4.7
move_vma()
5.4.6 | 5.4.7
nr_pages
11.3.3
one_highpage_init()
6.5
oom_kill()
13.
out_of_memory()
13.
PAGE_ALIGN()
4.1
page_cache_init()
11.2.1
page_cluster
5.6.3
page_hash_bits
11.2.1
page_hash_table
11.2.1
PAGE_OFFSET
5.1
PAGE_SHIFT
4.1
pages_high
3.2.1
pages_low
3.2.1
pages_min
3.2.1
PageSwapCache()
12.4
paging_init()
4.6.2
pg0
4.6.1
pg1
4.6.1
pgd_alloc()
4.5
pgd_free()
4.5
pgd_quicklist
4.5
pgd_t
4.1
pgd_val()
4.2
PGDIR_SHIFT
4.1
pgprot_t
4.2
pgprot_val()
4.2
phys_to_virt()
4.7.1
PKMAP_BASE
5.1 | 10.1
pkmap_count
10.1
pkmap_map_wait
10.2
pkmap_page_table
10.1
pmd_alloc()
4.5
pmd_alloc_one()
4.5
pmd_alloc_one_fast()
4.5
pmd_free()
4.5
pmd_page()
4.4
pmd_quicklist
4.5
PMD_SHIFT
4.1
pmd_t
4.1
pmd_val()
4.2
pte_alloc()
4.5
pte_alloc_one()
4.5
pte_alloc_one_fast()
4.5
pte_clear()
4.4
pte_dirty()
4.3
pte_exec()
4.3
pte_exprotect()
4.3
pte_free()
4.5
pte_mkclean()
4.3
pte_mkdirty()
4.3
pte_mkexec()
4.3
pte_mkread()
4.3
pte_mkwrite()
4.3
pte_mkyoung()
4.3
pte_modify()
4.3
pte_old()
4.3
pte_page()
4.4
pte_quicklist
4.5
pte_rdprotect()
4.3
pte_read()
4.3
pte_t
4.1
pte_to_swp_entry()
12.2
pte_val()
4.2
pte_write()
4.3
pte_wrprotect()
4.3
pte_young()
4.3
ptep_get_and_clear()
4.4
PTRS_PER_PGD
4.1
PTRS_PER_PMD
4.1
PTRS_PER_PTE
4.1
read_swap_cache_async()
12.7
REAP_SCANLEN
9.1.7
refill_inactive()
11.3.2 | 11.6
remove_exclusive_swap_page()
12.8
rss
5.3
rw_swap_page()
12.9
rw_swap_page_base()
12.9
scan_swap_map()
12.3
search_exception_table()
5.5
SET_PAGE_CACHE()
9.2
SET_PAGE_SLAB()
9.2
set_page_zone()
3.3.1
set_pte()
4.4
setup_arch()
6.2
setup_memory()
6.2
shrink_cache()
11.3.3
shrink_caches()
11.4
slab_bufctl()
9.2.3
slabs_free
9.1
slabs_full
9.1
slabs_partial
9.1
startup_32()
4.6.1
struct kmem_cache_s
9.1.1
SWAP_CLUSTER_MAX
11.4
swap_duplicate()
12.4
swap_info
12.1 | 12.2
swap_info_struct
12.1
swap_list
12.1
SWAP_MAP_BAD
12.1
SWAP_MAP_MAX
12.1
swap_mm
11.5
swap_out()
11. | 11.5
swap_out_mm()
11.5
swap_out_vma()
11.5
swap_writepage()
12.8
SWAPFILE_CLUSTER
12.3
swapin_readahead()
5.6 | 5.6.3
swapper_pg_dir
4.6.1
SWP_ENTRY()
12.2
swp_entry_t
12.2
swp_entry_to_pte()
12.2
SWP_OFFSET()
12.2
SWP_TYPE()
12.2
SWP_USED
12.1
SWP_WRITEOK
12.1
sys_mlock()
5.4.8
sys_mlockall()
5.4.8
sys_mmap2()
5.4.2
sys_mprotect()
5.4.6
sys_mremap()
5.4.7
sys_munlock()
5.4.9
sys_munlockall()
5.4.9
sys_swapoff()
12.6
sys_swapon()
12.5
total_vm
5.3
tq_disk
11.1
try_to_swap_out()
11.5
try_to_unuse()
12.6
union swap_header
12.1
unmap_fixup()
5.4.11
vfree()
8.3
virt_to_page()
4.7.2
vm_area_struct
5.2 | 5.4
vma_link()
5.4.5
vma_merge()
5.4.6
vmalloc()
7.5 | 8.
vmalloc_32()
8.2
vmalloc_dma()
8.2
VMALLOC_OFFSET
5.1
VMALLOC_RESERVE
5.1
vmlist_lock
8.1
zone_table
3.3.1
Big Kernel Lock (BKL)
12.5
Binary Buddy Allocator
7.
Boot Memory Allocator
6.
bounce buffer
10.
cache chain
9.
Copy-On-Write (COW)
5.6.4
cpucache
9.5
Demand Allocation
5.6.1
Demand Fetch
5.6
Demand Paging
5.6.1
diff
2.1.1
Get Free Page (GFP)
7.4
InterProcessor Interrupt (IPI)
5.3
lazy TLB
5.3
Least Recently Used (LRU)
11.6
Linux Cross-Referencing (LXR)
2.1.2
Non-Uniform Memory Access (NUMA)
3.
order
7.1
Page Frame Number (PFN)
6.
Page Global Directory (PGD)
4.1
page hash
11.2
Page Size Extension (PSE)
4.6.1
page struct
3.3
patch
2.1.1
Persistent Kernel Map (PKMap)
10.
pg_data_t
3.1
pglist_data
3.1
quicklists
4.5
Resident Set Size (RSS)
5.3
Reverse Mapping (RMAP)
5.6.3
size-N cache
9.4
size-N(DMA) cache
9.4
slab descriptor
9.2.1
slabs
9.
struct page
3.3
swap cache
11. | 12.4
Translation Lookaside Buffer (TLB)
4.
Trivial Patch Monkey
2.3
vm_struct
8.1
working set
11.6
Zone watermarks
3.2.1
zone_t
3.2
Zones
3.2



Mel 2004-02-15