vm_page的hash链表已经被splay树取代了
2009-05-13 03:05:07来源:未知 阅读 ()
在【FreeBSD操作系统设计与实现】的第5.2节“FreeBSD虚拟内存系统概述”的末尾,提到了vm_page结构体通常是用一个全局的hash链表进行快速查找的。求诸代码,结果看了很久都没有在源码中发现所谓hash链表的影子,但【FreeBSD操作系统设计与实现】、man手册页以及源代码中的一些注释都提及了这个hash链表的存在,百思不得其解。于是决定进一步考证,去FreeBSD的网站上查历史记录。就在vm_object.c文件的历史中翻出了这么一条:
QUOTE:
Revision 1.215 / (download) - annotate - [select for diffs], Fri Oct 18 17:24:30 2002 UTC (3 years, 5 months ago) by dillon
Branch: MAIN
Changes since 1.214: +92 -58 lines
Diff to previous 1.214 (colored)
Replace the vm_page hash table with a per-vmobject splay tree. There should
be no major change in performance from this change at this time but this
will allow other work to progress: Giant lock removal around VM system
in favor of per-object mutexes, ranged fsyncs, more optimal COMMIT rpc's for
NFS, partial filesystem syncs by the syncer, more optimal object flushing,
etc. Note that the buffer cache is already using a similar splay tree
mechanism.
Note that a good chunk of the old hash table code is still in the tree.
Alan or I will remove it prior to the release if the new code does not
introduce unsolvable bugs, else we can revert more easily.
Submitted by: alc (this is Alan's code)
Approved by: re
也就是说,vm_page的hash链表已经在2002年的10月份被替换成了splay树!联想到我前两天写的关于vm_map_entry的splay树的文章,又去查vm_map.c文件的历史记录,发现那边是在2002年的5月份引入splay树的,前后差了5个月。
通过和这本书的前身【4.4BSD操作系统设计与实现】的对比,发现关于vm_page用hash链表查找的那句话是在新版本中添加进去的。继续考证4.4BSD-Lite2的代码,原来的hash链表就是放在vm_page结构体里的:
CODE:
[Copy to clipboard]
___________________________________________________________________4.4BSD-Lite2
099 struct vm_page {
100 TAILQ_ENTRY(vm_page) pageq; /* queue info for FIFO
101 * queue or free list (P) */
102 TAILQ_ENTRY(vm_page) hashq; /* hash table links (O)*/
103 TAILQ_ENTRY(vm_page) listq; /* pages in same object (O)*/
104
105 vm_object_t object; /* which object am I in (O,P)*/
106 vm_offset_t offset; /* offset into object (O,P) */
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- freebsd-update已经可以升级了,升级中 2009-05-13
- 同志们,好像7.2已经出来了,娃哈哈。 2009-05-13
- DHT 已经可以工作了。 不过还需要集成进来。 2009-05-13
- FB7 安装php-extensions报autoconf错误 2009-05-13
- postfixadmin添加任何域都提示已经存在的解决办法 2009-05-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash