热门
最新
红包
立Flag
投票
同城
我的
发布
CSDN App 扫码分享
评论
1
打赏
- 复制链接
- 举报
下一条:
页面回收算法PFRE 设计原则:1. 因此,页框回收算法是集中启发式方法的混合:2. 谨慎选择检查高速缓存的顺序;3. 基于页年龄的变化排序;4. 区别对待不同状态的页;页面回收时机:1. 周期性的检查:这是由后台运行的守护进程 kswapd 完成的。该进程定期检查当前系统的内存使用情况,当发现系统内空闲的物理页面数目少于特定的阈值时,该进程就会发起页面回收的操作。2. “内存严重不足”事件的触发:在某些情况下,比如,操作系统忽然需要通过伙伴系统为用户进程分配一大块内存,或者需要创建一个很大的缓冲区,而当时系统中的内存没有办法提供足够多的物理内存以满足这种内存请求,这时候,操作系统就必须尽快进行页面回收操作,以便释放出一些内存空间从而满足上述的内存请求。这种页面回收方式也被称作“直接页面回收”。3. 睡眠回收,在进入suspend-to-disk状态时,内核必须释放内存。4. 如果操作系统在进行了内存回收操作之后仍然无法回收到足够多的页面以满足上述内存要求,那么操作系统只有最后一个选择,那就是使用 OOM( out of memory )killer,它从系统中挑选一个最合适的进程杀死它,并释放该进程所占用的所有页面。内存回收机制主要依赖于三个字段:pages_min,pages_low 以及 pages_high。每个内存区域( zone )都在其区域描述符中定义了这样三个字段。页面回收机制算法的核心:1. 反向映射。Linux内核能够快速定为指向同一页框的所有页表项。这个过程就叫做反向映射。Linux 操作系统为物理页面建立一个链表,用于指向引用了该物理页面的所有页表项。2. 在 Linux 中,操作系统对 LRU 的实现主要是基于一对双向链表:active 链表和 inactive 链表,这两个链表是 Linux 操作系统进行页面回收所依赖的关键数据结构。————————————————版权声明:本文为CSDN博主「Linux内核站」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/youzhangjing_/article/details/124459475