memory 这块的匿名页面之前只是了解means no file-backup
现在又阅读了一些文章,有些比较深入的了解。
annoymous means the page used by less more user, because what the annoymous mainly means something like stack, heap and so on.
which of course use less than file or something.
the difference between annoymous and normal file-backup file pages focus at:
when recover:
the annoymous page try_to_unmap_anon()
scan anon_vma and call try_to_unmap_one()
the normal pages try_to_unmap_file()
scan 优先级搜索树, call try_to_unmap_one( )
但是关键点在这里:个人理解上面无论是匿名还是文件页面都是指物理页面,往往会通过物理页面找到线性地址,然后根据线性地址找到页表项,再判断页表项能否被回收,如果能的话就回收并且更新TLB,如果为脏页面的话就标志PG_DIRTY, 如果是匿名页面,就要保存换出位置。
对于匿名页面来说,换出的位置必须要被保存下来,以便于该页面下次被访问的时候可以被换进来。
剩余的一些工作包括对一些不能报错的页面进行报错(加锁的mlock, 刚刚访问的,缓存的), 还有更新进程的页面引用计数。
使用反向映射机制所带来的好处是显而易见的:可以快速定为引用了某个物理页面的所有页表项,这极大地方便了操作系统进行页面回收。相对于之前的遍历方法来说,反向映射机制在很大程度上减少了操作系统在页面回收上所占用的 CPU 时间。
但是,使用反向映射所面临的挑战也是很明显的,不管采用上述介绍的哪种方法建立反向映射,都不可避免地要消耗掉一定的内存空间,区别就在于用哪种方法占用的空间会更少,整体性能会更好。
what heap really is ?
but when a file was read or something else, is it means it is mapped?
buffer cache, what's the difference
页面应用计数在页面慢慢的回收的时候有去检查么。