内存管理 交换区

一:说明

当内存不够用时,交换区会释放一些页放到文件,会修改页表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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值