再来说虚拟内存,的确"虚拟内存"这个名字容易引起误会,叫做页面文件或者页仓库会好理解得多.
页面文件是没法直接寻址的,当内存里面找不到当前页项的时候系统会触发一个page fault.
page fault后unix的做法是顺序从queue里面找,见1设0,见0swap出去(程序执行时每引用一个页面系统置为1).这样的话其实可以看到虚拟内存寻址的消耗并不只是swapping的消耗这么简单,这就是大多数人的误区吧,以为虚拟内存就是拿硬盘去当内存.
这就好比一个超市,货架是内存,仓库是虚拟内存,若一个超市需要频繁从仓库里面拿东西给顾客效率可想而知了.
以上还是理想的paging模型,实际的swap要更为复杂,如本楼的例子一个tab不可能只占一个页面,这就牵扯到segment和buddy system的寻址和管理,既然是科普就不多扯了.
欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) | Powered by Discuz! 6.0.0 |