[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 系統管理 > FreeBSD > 正文
FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.c
http://cnpa.yzu.edu.tw/~thinker :(Thinker; Thinker.bbs@bbs.yzu.edu.tw) (2001-06-03 08:10:00)
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 請見專文或者紅皮書.


(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
FreeBSD 4.0 Kernel Hacking Guide--vm/vm_object.c (2001-06-03 09:04:01)
FreeBSD 4.0 Kernel Hacking Guide--vm/vm_page.c (2001-06-03 08:10:00)
FreeBSD 4.0 Kernel Hacking Guide--vm/vm_init.c (2001-06-03 07:00:00)
FreeBSD 4.0 Kernel Hacking Guide--kern/init_main.c (2001-06-02 22:08:00)
FreeBSD 4.0 Kernel Hacking Guide--i386/i386/pmap.c (2001-06-02 21:04:00)
FreeBSD 4.0 Kernel Hacking Guide--i386/i386/machdep.c (2001-06-02 20:10:01)
FreeBSD 4.0 Kernel Hacking Guide--i386/i386/locore.s (2001-06-02 19:00:00)
 

★  樊強制作 歡迎分享  ★