linux2.6.28内核对页面置换算法的改进--理论

简介:
最新的2.6.28放出来了,以前很欣赏windows的内存管理,看来linux也不甘示弱,追上来了,我觉得新内核的页面置换算法非常好。新内核采用 了双指针时钟置换算法,这样的话每次就不用扫描整个页面链表了,以往都是在回收内存的时候,先扫描inactive链表,然后将可能的active链表上 的追加到inactive链表,最后回收inactive链表,这个思想是好的,一直也很稳定,但是遇到大内存就不那么好了,每次扫描的页面太多,基本就是在扫描过程中,改变页面所处的链表,活动的放到active,不活动的清除访问标志递减引用计数,不活动的引用计数为0的进行回收,这种算法看来十分笨 拙,因此新内核借鉴了Solaris的方式,采用了双指针时钟,本质上就是将inactive链表维持在一个可微调的可控范围内,每次回收的时候,就先回 收inactive链表的,当然如果有访问标志就重新放入active链表,inactive链表不断得到补充,以使得它里面页面的数量维持在上面提到的一个范围,总结起来就是扫描inactive,有访问位的置回active链表,没有的直接回收,然后从active链表补充页面到inactive链 表,这样的话每次操作的页面数量就不会随着内存的增加而无限制的增长,从而提高了效率。 
另外一个改进就是新内核认为,文件缓存的页面和匿名页面的地位不再相同,为何呢?因为匿名页面更加容易被更改,匿名页面存在的目的就是进程在运行过程中读写的,而磁盘缓存页面存在的目的是加速磁盘访问,它们一般被更改的几率并不大,因此会优先回收磁盘缓存,因为对于很多没有被修改的页面来说,直接丢弃就可 以了,不需要进行磁盘io,对于匿名页面很多都被写过,换出它们需要进行磁盘io,而磁盘io是一个很耗时的行为。对于cpu消耗型的程序,这是一种福 音,因为它们需要的匿名页面很大的几率都在内存,被回收的都是磁盘缓存页面,但是对于io消耗型的程序,这也许不是什么好消息,因为这个实现使得磁盘io 操作增加了。但是我很有信心,因为linux的可微调性,用户一定可以自行配置页面置换的行为的。 
第三个改进就是增加了不可回收链表,以往的内核在回收内存的时候会扫描所有的页面,如果有lock标志的,跳过它,但是还是要一个一个检查,新内核将不可回收的页面移出回收者扫描的视线,这样在扫描的时候就减少了扫描的数量。 

总结起来就是:新内核不再仅仅使用inactive和active两个链表,而是增加了磁盘缓存页面的lru链表以和匿名页面区分,增加了不可换出页面的链表以使之移出扫描者的视线。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274026

相关文章
|
5月前
|
机器学习/深度学习 算法 数据挖掘
提高时钟置换算法的性能
【10月更文挑战第25天】通过上述一种或多种方法的综合应用,可以在不同程度上提高时钟置换算法的性能,使其更好地适应各种复杂的系统环境和应用场景,提高虚拟内存管理的效率和系统的整体性能。
160 62
|
5月前
|
算法
时钟置换算法
【10月更文挑战第25天】时钟置换算法是一种简单而有效的页面置换算法,它通过使用位标志和环形链表的结构,在一定程度上平衡了算法的复杂性和性能表现。虽然它存在一些局限性,但通过改进和与其他算法的结合,可以在不同的系统环境中发挥重要作用,提高虚拟内存管理的效率和系统的整体性能。
271 51
|
5月前
|
算法
虚拟内存的页面置换算法有哪些?
【10月更文挑战第25天】不同的页面置换算法各有优缺点,在实际应用中,操作系统会根据不同的应用场景和系统需求选择合适的页面置换算法,或者对算法进行适当的改进和优化,以平衡系统的性能、开销和资源利用率等因素。
133 5
|
5月前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
123 4
|
5月前
|
人工智能 算法 大数据
Linux内核中的调度算法演变:从O(1)到CFS的优化之旅###
本文深入探讨了Linux操作系统内核中进程调度算法的发展历程,聚焦于O(1)调度器向完全公平调度器(CFS)的转变。不同于传统摘要对研究背景、方法、结果和结论的概述,本文创新性地采用“技术演进时间线”的形式,简明扼要地勾勒出这一转变背后的关键技术里程碑,旨在为读者提供一个清晰的历史脉络,引领其深入了解Linux调度机制的革新之路。 ###
|
5月前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
6月前
|
算法
有哪些页面置换算法?
页面置换算法(Page Replacement Algorithms)在计算机操作系统中用于管理虚拟内存。
114 0
|
5月前
|
算法 Linux 调度
深入理解Linux内核调度器:从基础到优化####
本文旨在通过剖析Linux操作系统的心脏——内核调度器,为读者揭开其高效管理CPU资源的神秘面纱。不同于传统的摘要概述,本文将直接以一段精简代码片段作为引子,展示一个简化版的任务调度逻辑,随后逐步深入,详细探讨Linux内核调度器的工作原理、关键数据结构、调度算法演变以及性能调优策略,旨在为开发者与系统管理员提供一份实用的技术指南。 ####
164 4
|
5月前
|
缓存 并行计算 Linux
深入解析Linux操作系统的内核优化策略
本文旨在探讨Linux操作系统内核的优化策略,包括内核参数调整、内存管理、CPU调度以及文件系统性能提升等方面。通过对这些关键领域的分析,我们可以理解如何有效地提高Linux系统的性能和稳定性,从而为用户提供更加流畅和高效的计算体验。
185 24
|
4月前
|
监控 算法 Linux
Linux内核锁机制深度剖析与实践优化####
本文作为一篇技术性文章,深入探讨了Linux操作系统内核中锁机制的工作原理、类型及其在并发控制中的应用,旨在为开发者提供关于如何有效利用这些工具来提升系统性能和稳定性的见解。不同于常规摘要的概述性质,本文将直接通过具体案例分析,展示在不同场景下选择合适的锁策略对于解决竞争条件、死锁问题的重要性,以及如何根据实际需求调整锁的粒度以达到最佳效果,为读者呈现一份实用性强的实践指南。 ####
下一篇
oss创建bucket