一:说明

当内存不够用时,交换区会释放一些页放到文件,会修改页表pte变为swp_entry_t,

当cpu访问该地址,查询页表,发现不在内存,使用swp_entry_t,交换回需要的页

 二:主要代码

       //申请页表

page =alloc_page(gfp_mask | __GFP_HIGHMEM);

   //根据31bit-27bit找到offset

         si= swap_info_get(entry);

         //根据26bit-0bit找到index

         offset= swp_offset(entry);

         count= si->swap_map[offset] & ~SWAP_HAS_CACHE;

         head= vmalloc_to_page(si->swap_map + offset);

         //virt_to_page(addr)为该页地址,映射页表,返回页描述符

         list_add_tail(&page->lru,&head->lru);//连接页与页描述符完成交换

现在cpu访问,查询页表,可以找到该页

三:图示

内存管理 交换区

相关文章:

  • 2022-01-29
  • 2022-03-05
  • 2021-10-03
  • 2022-01-08
  • 2021-11-22
  • 2022-12-23
  • 2021-12-31
猜你喜欢
  • 2022-12-23
  • 2021-10-03
  • 2021-05-24
  • 2021-04-15
  • 2021-06-01
  • 2021-12-06
  • 2022-12-23
相关资源
相似解决方案