内存管理 交换区

一:说明

当内存不够用时,交换区会释放一些页放到文件,会修改页表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访问,查询页表,可以找到该页

三:图示

内存管理 交换区_第1张图片

你可能感兴趣的:(内存管理 交换区)