最近最久未使用(LRU)置换算法

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <assert.h> using namespace std;
const int Maxn = ; typedef struct Page_Node{
struct Page_Node *next;
int page_id;
Page_Node(int v){page_id = v;}
}*PNode, Node; class LRU{
public:
LRU(int num):blocks_limit(num){
head = NULL;
} ~LRU(){
delete head;
} void update_order(int page_id){
PNode p = head, last_node = NULL;
while(p){
if(p -> page_id == page_id){
PNode next_node = p -> next;
p -> next = head;
if(last_node){
last_node -> next = next_node;
}head = p;
break;
}
last_node = p;
p = p -> next;
}
} void insert_page(int page_id){
PNode new_node = new Node(page_id);
PNode tmp = head;
head = new_node;
head -> next = tmp;
existed[page_id] = ;
} void delete_tail_page(){
assert(NULL != head);
PNode p = head, last_node = NULL;
while(p){
if(p -> next == NULL){
existed.erase(p->page_id);
if(last_node)
last_node -> next = NULL;
else{
head = NULL;
}
}
last_node = p;
p = p -> next;
}
} void disp_page_in_memory(){
cout<<"页面情况:"<<endl;
PNode p = head;
while(p){
cout<<" "<<p->page_id;
p = p -> next;
}cout<<endl;
} void call_page(int page_id){
if(existed[page_id]){
cout<<"In Memory"<<endl;
update_order(page_id);
}else{
cout<<"Out of Memory"<<endl;
if(existed.size() > blocks_limit){
cout<<"页面置换"<<endl;
delete_tail_page();
insert_page(page_id);
}else{
cout<<"直接调页"<<endl;
insert_page(page_id);
}
}
disp_page_in_memory();
} private:
PNode head;
map<int, int>existed;
int blocks_limit;
}; int main()
{
LRU lru();
while(){
int t;
cin>>t;
lru.call_page(t);
} return ;
}

最少使用次数(LFU)置换算法

先进先出置换算法(FIFO)

页面置换算法-LRU(Least Recently Used)c++实现的更多相关文章

  1. 操作系统 页面置换算法LRU和FIFO

    LRU(Least Recently Used)最少使用页面置换算法,顾名思义,就是替换掉最少使用的页面. FIFO(first in first out,先进先出)页面置换算法,这是的最早出现的置换 ...

  2. 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法

    一,LRU算法介绍 LRU是内存分配中“离散分配方式”之分页存储管理方式中用到的一个算法.每个进程都有自己的页表,进程只将自己的一部分页面加载到内存的物理块中,当进程在运行过程中,发现某页面不在物理内 ...

  3. 操作系统页面置换算法(opt,lru,fifo,clock)实现

    选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...

  4. (待续)C#语言中的动态数组(ArrayList)模拟常用页面置换算法(FIFO、LRU、Optimal)

    目录 00 简介 01 算法概述 02 公用方法与变量解释 03 先进先出置换算法(FIFO) 04 最近最久未使用(LRU)算法 05 最佳置换算法(OPT) 00 简介 页面置换算法主要是记录内存 ...

  5. 操作系统笔记(六)页面置换算法 FIFO法 LRU最近最久未使用法 CLOCK法 二次机会法

    前篇在此: 操作系统笔记(五) 虚拟内存,覆盖和交换技术 操作系统 笔记(三)计算机体系结构,地址空间.连续内存分配(四)非连续内存分配:分段,分页 内容不多,就不做index了. 功能:当缺页中断发 ...

  6. 页面置换算法 - FIFO、LFU、LRU

    缓存算法(页面置换算法)-FIFO. LFU. LRU 在前一篇文章中通过leetcode的一道题目了解了LRU算法的具体设计思路,下面继续来探讨一下另外两种常见的Cache算法:FIFO. LFU ...

  7. 页面置换算法(最佳置换算法、FIFO置换算法、LRU置换算法、LFU置换算法)

    页面置换产生的原因是:分页请求式存储管理(它是实现虚拟存储管理的方法之一,其中一个特性是多次性-->多次将页面换入或换出内存) 效果最好的页面置换算法:最佳置换算法 比较常用的页面置换算法有:F ...

  8. 操作系统-2-存储管理之LRU页面置换算法(LeetCode146)

    LRU缓存机制 题目:运用你所掌握的数据结构,设计和实现一个  LRU (最近最少使用) 缓存机制. 它应该支持以下操作: 获取数据 get 和 写入数据 put . 获取数据 get(key) - ...

  9. 页面置换算法——最近最久未使用算法(c语言实现)

    操作系统实验:用C语言编程实现最近最久未使用置换算法(LRU) 最近最久未使用置换算法(LRU),全称Least Recently Used,是一种页面置换算法. 对于在内存中但又不用的数据块(内存块 ...

随机推荐

  1. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  2. JSP的安全性

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/security.html: JavaServer Pages和Servlets有几种可用的机制可以使We ...

  3. Systemtap工具查看系统资源使用

    http://www.xbwolf.com/507 http://blog.csdn.net/kafeiflynn/article/details/6429976 安装步骤yum install sy ...

  4. 配置文件的备份和IOS 的备份

    分享到 QQ空间 新浪微博 百度搜藏 人人网 腾讯微博 开心网 腾讯朋友 百度空间 豆瓣网 搜狐微博 百度新首页 QQ收藏 和讯微博 我的淘宝 百度贴吧 更多... 百度分享 广场 登录 注册 关注此 ...

  5. android 加密手机完毕后待机两分钟出现有频率的杂音

    这个音效是code里面主动加的,是为了提醒end user输入PIN的一个提示音,也标志着加密手机动作的完毕. 详细位置是在alps\packages\apps\Settings\src\com\an ...

  6. protobuf入门

    ,step1:准备.proto文件 syntax = "proto3"; message gps_data { int64 id = 1; string terminalId = ...

  7. Redis开源项目的终极杀手? ——CRUG解读Redis开源协议变更

    引言: 数据库制造商 Redis Labs 本周将公司开发的Redis 模块从 AGPL 迁移到将 Apache v2.0 与 Commons Clause 相结合的许可证,对许可证涵盖的软件作了限制 ...

  8. dm385和8127的区别

    DM385/DM8127在ITS智能交通中的应用分析德州仪器(TI)自推出DM385和DM8127视频处理器在业界反响很大特别是深圳安博会上展出的1080P60帧高清效果之后很多龙头企业也跃 ...

  9. JAVA实现N皇后问题(回溯法)

    package com.leetCode; /** * Follow up for N-Queens problem. Now, instead outputting board configurat ...

  10. UniDAC连接Embedded MySQL server

    Simple question about MySQL embedded application. Post a reply   7 posts • Page 1 of 1   Simple ques ...