2.6 Linux存储管理-物理页面的使用和周转

说明一些概念:
虚拟页面:指虚拟空间中,一段固定大小、边界与页面大小对齐的区间及其内容。
物理页面:虚拟页面映射到的介质上,可以在内存上( 内存页面),也可以在磁盘上( 盘上页面)。
页面的换进换出指的是页面内容

页面的换进换出也需要一个数据结构
内核定义了swap_infp_struct,用来描述用以管理页面交换的文件和设备
   
   
  1. 49 struct swap_info_struct {
  2. 50 unsigned int flags;
  3. 51 kdev_t swap_device;
  4. 52 spinlock_t sdev_lock;
  5. 53 struct dentry * swap_file;
  6. 54 struct vfsmount *swap_vfsmnt;
  7. 55 unsigned short * swap_map;
  8. 56 unsigned int lowest_bit;
  9. 57 unsigned int highest_bit;
  10. 58 unsigned int cluster_next;
  11. 59 unsigned int cluster_nr;
  12. 60 int prio; /* swap priority */
  13. 61 int pages;
  14. 62 unsigned long max;
  15. 63 int next; /* next entry on swap list */
  16. 64 };

页面的周转:
周转主要包括两部分
第一,页面的分配、使用和回收,不涉及交换
第二,页面的交换,交换的最终是页面的回收
notice:只有用户空间的页面才会换进换出,而内核页面则不会,内核空间可以访问所有的物理页面

用户空间页面:
1 普通的用户空间页面:包括进程的代码、数据、堆栈,以及动态堆
2 通过mmap映射的文件内容
3 进程的共享内存区
这些页面涉及页面周转的 两部分

内核空间页面:
内核中使用的内存页面只涉及第一部分,也就是 页面的分配、使用和回收,但是不涉及交换(只在内存中)
1 使用直接释放
   都是一些使用kmalloc和vmalloc申请的临时性结构
2 使用完后仍有保留价值
   其内容有保留的价值。条件允许时,把这些页面“养起来”,可以提高以后的操作效率
   比如一些缓存的文件目录结构、 缓存的一些inode结构、 文件读写的缓冲区等等
   这些页面释放后立即回收亦可,但是会付出更多代价


页面交换:
1 消极的页面交换:
有空闲的页面就直接分配;
当没有没有空闲时,将一个或几个内存页面换到磁盘上
notice:这种做法比较消极,忙碌的时候没有调度的余地
2 积极的页面交换
定期的,或者在系统比较空闲的时候挑选一些页面进行换进换出
挑选的规则一般都是LRU(最近最久未使用),但是这样也带来一些问题,因为实际上没有一种方法可以准确的预测对页面的访问,所以完全有可能发生抖动(刚换出就被访问)
3 带有暂存的积极页面交换


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值