拟内存管理技术

简介:

在虚拟内存管理的实现中,最关键的就是页面的调入策略和页面的置换算法。
页面的调入策略主要有两种:预先调入策略和页面请求调入策略。由于前者需要对进程的运行过程进行一定量的预测,所以实现起来比较困难和低效,所以经常采用的是后一种策略,即当执行进程所需的某个页面不在内存时,产生缺页中断,再由专门的缺页中断服务程序(ISR)根据进程页表将所需页面调入内存。

  当缺页中断服务程序发现,内存中已经没有空闲的物理页面(通常称之为帧)时,就会执行一种页面换出程序,它采取一定的置换算法将某个页面换出到外存的交换(文件)分区。通常,衡量一种页面置换算法性能好坏的指标就是对于大量的页面请求序列,在一定数量的物理帧上,产生缺页中断的平均次数。页面置换算法较多,其变种更多,常常见诸于各大OS教材的主要由下面的几种。

    • 先入先出法(FIFO)
      Fist In Fist Out, 这是一种实现起来最为简单的算法,其实质是,最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。
      这种算法只是在按线性顺序访问地址空间时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。另外,FIFO算法还有一个比较有意思的缺陷,称之为Berlady异常(或者?),说当物理内存也即帧数增加时,其缺页中断的次数反而有可能增加!
    • 最优置换算法(OPT)
      最优置换(OPTimal replacement),顾其名,知其义,这是一种最优的算法,因为对于任一页面请求序列,其产生的缺页中断次数时最少的,但,这只是理论上的最优。其实质是:当调入新的一页而必须预先置换某个老页时,所选择的老页应是将来不再被使用,或者是在最远的将来才被访问。其最优性是容易证明的。
      但是最优页面置换算法的实现是困难的,因为它需要我们预先就知道一个进程整个运行过程中页面走向的全部情况,而这几乎时不可能的。所以,这个算法主要还是用来衡量其他算法的优劣的。
    • 最近最久未使用算法(LRU)
      最近最久未使用算法(Least-Recently Used),它的核心思想是,当需要置换一页时,选择在最近一段时间里最久没有使用过的页面予以置换。既然要以时间为替换依据,那么肯定就要用到定时/计数器,因此这个算法通常需要一定的硬件支持,这样的话其通用性也会降低。

       

        还有一种LRU的近似算法,最近未使用算法(Not Recently Used,NUR),相比LRU实现起来更简单一些。它在页表的每一表项中增加一个引用位,操作系统定期地将它们置为0。当某一页被访问时,由硬件将该位置1。需要页面替换时,就可把该位是0的页淘汰出去。

 

  • 二次机会算法(SC)
    这是一种FIFO和LRU的折中,或者说结合,它避免了FIFO的缺陷,即可能把经常使用的页面替换出去(比如说装入程序?)。它的思想是:需要页面替换时,检查它的访问位。如果是0,就淘汰这页;如果访问位是1,就将其清0,同时给它第二次机会,然后检验下一个FIFO页面。因此,如果一个页面经常使用,它的访问位总保持为1,它被淘汰出去的几率是很小的。

  
还有其他很多页面置换算法,实际使用的算法通常就是这些算法的一些折中或者说变种,可见,要想把一个理论上的好算法应用到具体的问题上,会受到很多限制,还需要做不少其他的工作。

本文转自博客园知识天地的博客,原文链接:拟内存管理技术,如需转载请自行联系原博主。

相关文章
|
4月前
|
KVM 虚拟化
KVM的热添加技术之内存
文章介绍了KVM虚拟化技术中如何通过命令行调整虚拟机内存配置,包括调小和调大内存的步骤,以及一些相关的注意事项。
103 4
KVM的热添加技术之内存
|
24天前
|
人工智能 物联网 C语言
SVDQuant:MIT 推出的扩散模型后训练的量化技术,能够将模型的权重和激活值量化至4位,减少内存占用并加速推理过程
SVDQuant是由MIT研究团队推出的扩散模型后训练量化技术,通过将模型的权重和激活值量化至4位,显著减少了内存占用并加速了推理过程。该技术引入了高精度的低秩分支来吸收量化过程中的异常值,支持多种架构,并能无缝集成低秩适配器(LoRAs),为资源受限设备上的大型扩散模型部署提供了有效的解决方案。
48 5
SVDQuant:MIT 推出的扩散模型后训练的量化技术,能够将模型的权重和激活值量化至4位,减少内存占用并加速推理过程
|
4月前
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
ARM64技术 —— MMU处于关闭状态时,内存访问是怎样的?
|
6月前
|
机器学习/深度学习 存储 缓存
操作系统中的内存管理技术
在数字世界的复杂架构中,操作系统扮演着枢纽的角色,其中内存管理作为其核心组件之一,保障了计算资源的高效利用与稳定运行。本文将深入探讨操作系统中内存管理的关键技术,包括虚拟内存、分页和分段机制,以及现代操作系统如何通过这些技术优化性能和提高系统稳定性。通过具体实例和数据分析,我们将揭示这些技术如何在实际应用中发挥作用,并讨论它们面临的挑战及未来发展方向。 【7月更文挑战第16天】
117 6
|
6月前
|
存储 缓存 Java
Android性能优化:内存管理与LeakCanary技术详解
【7月更文挑战第21天】内存管理是Android性能优化的关键部分,而LeakCanary则是进行内存泄漏检测和修复的强大工具。
|
6月前
|
物联网 云计算
操作系统中的内存管理技术解析
【7月更文挑战第13天】本文将深入探讨操作系统中至关重要的内存管理技术,包括虚拟内存、分页和分段机制等核心概念。我们将从内存管理的基本原理出发,逐步过渡到高级技术如交换空间和文件映射,最后讨论现代操作系统中内存管理面临的挑战与未来发展方向。文章旨在为读者提供对操作系统内存管理全面而深入的理解。
94 7
|
6月前
|
存储 缓存 NoSQL
Java中的内存数据库与缓存技术
Java中的内存数据库与缓存技术
|
7月前
|
存储 算法
探索现代操作系统中的虚拟内存管理技术
在数字时代的浪潮中,操作系统的心脏——虚拟内存管理技术,正以它独有的韵律跳动。本文将带你穿梭于操作系统的迷宫,揭开虚拟内存如何巧妙地扩展有限的物理内存之谜。从分页机制的精妙设计到交换空间的策略运用,我们将一探究竟。你将看到,虚拟内存不仅仅是一个存储数据的地方,它是速度与效率的协调者,是多任务处理的幕后英雄。随着技术的演进,虚拟内存管理不断优化,为应用程序提供了一片更为广阔的运行天地。让我们一同走进这个充满智慧的世界,感受操作系统中虚拟内存管理的魅力所在。
64 1
|
6月前
|
存储 缓存 安全
操作系统中的内存管理:技术与挑战
在数字化时代,操作系统的内存管理成为计算机科学领域中一个至关重要的技术环节。本文将深入探讨现代操作系统中内存管理的基本原理、关键技术及其面临的挑战。通过对分页、分段、虚拟存储和缓存策略等核心概念的介绍,我们旨在揭示内存管理如何优化系统性能,保障数据安全,并提高资源利用率。同时,文章还将讨论内存泄漏、碎片化以及安全性问题等当前内存管理技术所面临的主要挑战。
87 0
|
7月前
|
存储 消息中间件 缓存
Redis:内存数据存储与缓存系统的技术探索
**Redis 概述与最佳实践** Redis,全称Remote Dictionary Server,是流行的内存数据结构存储系统,常用于数据库、缓存和消息中介。它支持字符串、哈希、列表等数据结构,并具备持久化、主从复制、集群部署及发布/订阅功能。Redis适用于缓存系统、计数器、消息队列、分布式锁和实时系统等场景。最佳实践包括选择合适的数据结构、优化缓存策略、监控调优、主从复制与集群部署以及确保安全配置。
126 3

热门文章

最新文章