当前位置:   article > 正文

Linux Swap机制关键点分析

Linux Swap机制关键点分析
1. page被swap出去之后,再次缺页是怎么找到找个换出的页面?
正常内存的页面是通过pte映射找到page的,swap出去的page有其特殊的方式:swap的页面page->private字段保存的是:swap_entry_t通过swap_entry_t就能找到该页面的扇区号sector_t,拿到扇区号就可以从块设备中读回page的内容,那么具体怎么从swap_entry_t找到扇区号呢:

由上图可以计算出来offset和type值,offset值得含义是对应swap_map的slot编号,type可以代表是哪个swap分区,那么根据这两个值就可以计算出扇区号:

具体查找扇区号的源码:swapfile.c:swap_page_sector:

  1. sector_t swap_page_sector(struct page *page)
  2. {
  3. struct swap_info_struct *sis = page_swap_info(page);
  4. struct swap_extent *se;
  5. sector_t sector;
  6. pgo
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/791824
推荐阅读
相关标签
  

闽ICP备14008679号