热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

虚拟存储器—页面置换算法

虚拟存储器—页面置换算法一、最佳页面置换算法OPT目前是理想化的算法,是无法实现的。选择内存中被淘汰页面的条件:重点在于以后,看物理块
虚拟存储器—页面置换算法

一、最佳页面置换算法 OPT


目前是理想化的算法,是无法实现的。


选择内存中被淘汰页面的条件:

重点在于以后,看物理块中哪一个页号在以后是最后才被访问使用的或者不使用的

例题:给出某进程所分配到的物理块数量,以及接下来所要使用的页面号顺序,让你使用该算法画出置换图。


7772
000
11
发生置换

发生第一次置换的详细分析:

此时要访问页号2,但是3个物理块已经满了,所以发生缺页中断,使用最佳页面置换算法把其中一个替换掉。

此时在未使用的页号顺序里面查看判断,看物理块中的3个页号中,哪一个是最后才访问使用的。

在这顺序里可以知道,7是第18次页面访问时才使用,0是第5次页面访问时使用,1是第14次页面访问时使用。所以我们要淘汰最后一个才使用的页号7,把页号2替换页号7,物理块里面就变为了2 0 1。




二、先进先出置换算法 FIFO

选择内存中被淘汰页面的条件:

看物理块中哪一个页号是第一个进来的,即驻留时间最长,就淘汰该页号。是根据页面调入内存的时间做决策的。


发生第一次置换的详细分析:


上述例题中,当要访问使用页号2时,查看物理块中701中哪一个是第一个进来的就要最先淘汰出去,所以叫作先进先出。

可以从页号顺序得知7是最先进入物理块的,所以淘汰页号7。

此时物理块变为2 0 1 。



三、最近最久未使用置换算法(least recently used,LRU)

选择内存中被淘汰页面的条件:

是根据页面调入内存后的使用情况做决策的。


发生第一次置换的详细分析:



四、最少使用置换算法

选择内存中被淘汰页面的条件:

最近时期使用最少的页面作为淘汰页面,即看以后的页面访问顺序中,哪一个页面的访问次数最少就作为淘汰页面。


五、Clock置换算法

选择内存中被淘汰页面的条件:

额外条件:

每页设置一个访问位,并将内存中的所有页面链接成一个循环队列。

当某一页被访问时,访问位置为1。

未被访问时,访问位置为0。


淘汰条件:

只需要看访问位是否为0,是0就表示该页最近都未被访问使用过,就淘汰该页。

如果是1,表示该页近期被访问使用过,此时重新将访问位置为0。


改进型Clock置换算法:


在Clock置换算法的基础上增加修改位。

使用访问位、修改位同时决定要被淘汰的页面。




推荐阅读
  • 深入解析RDMA中的队列对(Queue Pair)
    本文将详细探讨RDMA架构中的关键组件——队列对(Queue Pair,简称QP),包括其基本概念、硬件与软件实现、QPC的作用、QPN的分配机制以及用户接口和状态机。通过这些内容,读者可以更全面地理解QP在RDMA通信中的重要性和工作原理。 ... [详细]
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 使用WinForms 实现 RabbitMQ RPC 示例
    本文通过两个WinForms应用程序演示了如何使用RabbitMQ实现远程过程调用(RPC)。一个应用作为客户端发送请求,另一个应用作为服务端处理请求并返回响应。 ... [详细]
  • 深入解析Hadoop的核心组件与工作原理
    本文详细介绍了Hadoop的三大核心组件:分布式文件系统HDFS、资源管理器YARN和分布式计算框架MapReduce。通过分析这些组件的工作机制,帮助读者更好地理解Hadoop的架构及其在大数据处理中的应用。 ... [详细]
  • 本文详细探讨了Java中Volatile关键字的工作原理、优化技巧及其在实际开发中的应用场景,特别是在提高多线程环境下数据可见性和减少锁竞争方面的优势。 ... [详细]
  • 本文详细介绍了队列与栈这两种基本的数据结构。队列是一种遵循先进先出(FIFO)原则的线性数据结构,允许在队首进行删除或读取操作,在队尾进行插入操作。而栈则是另一种线性数据结构,它遵循后进先出(LIFO)的原则,所有操作均在同一端进行。 ... [详细]
  • Go语言以其简洁的语法和强大的并发处理能力而闻名,特别是在云计算和分布式计算领域有着广泛的应用。本文将深入探讨Go语言中的Channel机制,包括其不同类型及其在实际编程中的应用。 ... [详细]
author-avatar
灬处男求包养灬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有