新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Unix系统 > FreeBSD教程 > 正文:FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.

FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.

新客网 XKER.COM 2007-01-08 来源: 收藏本文
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 请见专文或者红皮书.
收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐