FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.c

王朝system·作者佚名  2006-11-23
宽屏版  字体: |||超大  

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 请见专文或者红皮书.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有