电脑技术学习

FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.

dn001
vm_page_startup(),;156行.;vm_page;module;初始化.
183-197行,;计算所有的可用记忆空间,;并挑出最大的;block.;phys_avail;在
一开始;locore.c;的初始阶段就设定.;phys_avail;为可用之;physical
memory;block;list,;由;getmemsize(),;i386/i386/machdep.c,;1419行
,;计算所得.

206行,;vm_page_queue_init(),;104行,;初始;vm_page_queues.

222-248行,;初始;hash;table;buckets(vm_page_buckets),;用以快速
从;object/offset;pair;对应成;vm_page.
vm_page_buckets
vm_page_bucket_count

256-283行,;allocate;vm_page_array,;为每一个可用的;page;设置一
个;vm_page.;phys_avail;为所有可用;mem;block;list,
vm_page_array;大小则由;phys_avail;决定.;所有;block;的
(最大的记忆体位址;-;最小位址)/PAGE_SIZE;即为;vm_page;的数目.
vm_page_array 所有;vm_page;组成的;array.
vm_page_array_size vm_page_array;的长度.
first_page 第一个;vm_page;对应;page;的;physical
page;address;(address/PAGE_SIZE)

291-310行,;把所有的;vm_page;加入;free;queue(in;vm_page_queues).
关於;vm_page_queues;请见专文或者红皮书.

标签: