搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
盐析白兔
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
Pycharm一定要使用的5款插件,实用且酷炫!
2
[AIGC] 深入理解 Java 的 JSON 序列化和反序列化
3
valign深入理解
4
代码随想录训练营day14|LeetCode二叉树part1
5
基于python景区景点旅游购票售票系统设计与实现:开题报告、成品参考、毕设辅导资料_编写网购景区门票显示付款金额的python程序
6
UDP 设计实现_udp数据协议设计
7
anaconda3 快速在无法连接外网的服务器上安装需要的环境_服务器连不上网,应该怎么装环境
8
Linux离线安装NTP服务,无外网环境下配置本地时间同步_linux服务器时间校正 无网
9
安装、部署、配置Windows SharePoint Services 3.0:(1)安装准备
10
Mac访问Windows共享文件教程_smb://192.168.1.1
当前位置:
article
> 正文
3.4 页面置换算法_nfu算法
作者:盐析白兔 | 2024-02-29 03:45:17
赞
踩
nfu算法
3.4 页面置换算法
1. 最优页面置换算法
将每个页面在接下来首次被访问前要执行的指令数作为标记,每次置换标记最大的页面。但是它不可能实现,因为与最短作业优先调度算法一样,无法知道各个页面下一次在什么时候被访问。
2. 最近未使用页面置换算法(NRU)
页表项中有页面的访问位R位和修改位M位。
当启动一个进程时,它的所有页面两个位都初始化成0,且R位会被定期清零(如每次时钟中断)以区别最近没有被访问的页面和被访问的页面。
缺页中断时,操作系统检查页面的R位和M位,分为4类:
第一类可能是第三类页面R位被时钟中断清零后得到。
NRU每次随机地从类编号最小的非空类中挑选一个页面淘汰。
3. 先进先出页面置换算法(FIFO)
操作系统维护一个所有当前在内存中的页面的链表,最新进入的放表尾。缺页中断时淘汰表头页面。
4. 第二次机会页面置换算法
改进FIFO,每次检查表头页面的R位,如果R位为0则淘汰,如果R位为1则将R位清零,并将该页面放到表尾,之后继续搜索。
如果所有页面的R位都为1,则退化成FIFO算法。
5. 时钟页面置换算法
第二次机会页面置换算法组织成环形链表(时钟),用一个指针,每次检查指针指向的页面,若R为0则淘汰,并在此处插入新页面,若R为1则清零并指针下移。
6. 最近最少使用页面置换算法(LRU,想法好难实现)
发生缺页中断时,置换未使用时间最长的页面。
如要在内存中维护一个所有页面的链表,最近最多使用的页面在表头,反之在表尾,困难在每次方位内存都要重新更新整个链表,找到一个页面删除并移动到表头,非常耗时。
有一些使用特殊硬件实现LRU,硬件有一个64位计数器,在每条指令执行完自动加一。每次访问内存后,把当前计数值保存到被访问页面的页表项。中断时,找到值最小的页面淘汰。
还有一种是硬件维持一个n*n的矩阵(假设n个页框),访问页框k时,把第k行全设为1,第k列全设为0.任何时刻,二进制数值最小的行就是最近最少使用的。依此类推。
7. 软件模拟LRU(NFU算法) (粗糙地近似LRU)
每个页面与一个软件计数器关联,初始化为0。每次时间中断由操作系统扫描所有页面,把每个页面的R位加到计数器上。这样计数器大体上跟踪了各个页面的被访问频繁程度。
缺点是:从来不忘记任何事情。
8. 老化算法: (良好的近似LRU)
是NFU算法的改良,它同样是缺页中断时置换计数器最小的页面。
R位被加进去之前,计数器右移一位,并将R位加到计数器最左端的位。
与LRU算法区别是它只有有限位数,而且越recent的影响越大。
9.工作集页面置换算法
请求调页:页面在需要时被调入,而不预先装入
预先调页:跟踪工作集,在进程运行前预先装入其工作集,减少缺页中断率
工作集:一个进程当前正在使用的页面集合
颠簸:每执行几条指令程序就发生一次缺页中断
算法:缺页中断时,淘汰一个不在工作集中的页面。
key:确定哪些页面在工作集
方案一:维护移位寄存器保存最近使用的k个页面号,每次使用新页面就更新,但开销特别大。
方案二:近似,不是向后找最近k次内存访问,而是最近10ms等的内存访问用到的页面集合。该时间是进程实际占用CPU的时间。该时间设为t。
同时会用硬件来预先设置R位和M位为0,同时每个时钟中断后也会有一个定期时钟中断来清除R位。
这样算法就可以:
每次,检查R位,若R位为1,明显在工作集中,则把当前实际时间更新进页表项的“上次使用时间”。若R位为0,则计算它的生存时间(当前实际时间-上次使用时间),若它大于t则表示不在工作集,因此可以置换它(但扫描还要继续,因为扫描同时有更新时间的作用),若小于t则要记录这些小于t的生存时间最长的(“上次使用时间”最小的),如果扫描完都找不到就淘汰这么一个生存时间最长的。
特别地,如果R位全为1,就随机选一个,但优先选一个干净页面。
缺点:缺页中断时要扫描整个页表才能确定淘汰的页面,比较费时。
10. 工作集时钟页面置换算法
组织成循环表(环)
同样用一个指针,具体算法同上面的算法,只是在发现一个R位为0且生存时间大于t的页面时,如果它是脏的(被修改过的),为了避免由于调度写磁盘操作引起进程切换,所以指针继续走,对下一个页面操作。(最后没有符合的就只能~咯!)
11. 总结
最好的两种应该是老化算法(基于LRU)和工作集时钟算法(基于工作集)。
2018/03/14 23:53
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/盐析白兔/article/detail/163549
推荐阅读
article
Git
在
push
文件
时
,
文件
太大或是响应
超时
报错的
解决办法
_
git
push
文件
数量过多
超时
...
Git
在
push
文件
时
,
文件
太大或是响应
超时
报错的
解决办法
第一种: 找到
Git
/etc/ssh/ssh_config
文件
...
赞
踩
article
STM32
经典例子
_
stm32
例程...
本文以
STM32
F103R6为测试单片机我们经常使用单片机完成一些工作,今天我写出的几个较为经典的例子希望能够帮助大家更...
赞
踩
article
基于
stm32
ESP8266WiFi
模块
的基本通信_
esp8266sta
模式
与
stm32
f103
实...
**ATK-ESP8266**
模块
采用串口(LVTTL)与 MCU(或其他串口设备)通信,内置 TCP/IP协议栈,能...
赞
踩
article
html5
自动
连接
wifi
,怎么
设置
自动
切换
wifi
点击
右上角的【高级
设置
】...
怎么停止手机WIFI
自动
切换
安卓手机
设置
禁止
自动
连接
WiFi的方法: 在此以“小米4”手机为例,打开手机“
设置
”界面,点...
赞
踩
article
页面
更换
算法
_nru...
页面
需要更换之前介绍了分页系统。它克服了交换系统的各种缺点:外部碎片、难以增长、程序不能大于物理内存。但是天下没有免费的...
赞
踩
article
2023年
C
/
C
++
Linux
服务器
开发
/后台架构师知识体系整理(持续更新中)_
linux
c++
后...
C
/
C
++
Linux
服务器
开发
/后台架构师知识体系1. 精进基石专栏1.1 数据结构与算法面试必聊的排序与KMP随处可见...
赞
踩
article
wpa
_
supplicant
是一款用于
连接
AP
热点
的
应用工程
_
wpa
_
supplicant
,a...
wpa
_
supplicant
使用手册本编用于介绍 SylixOS 下
的
wpa
_
supplicant
使用方法。概述w...
赞
踩
article
j
a
v
a
基础面试练习题(易错题)_
下列
选项中对
抽象
类
描述
正确
的是( )
a
、
抽象
类
必须
提供
抽象
...
2. 下面哪段程序能够
正确
的实现了GBK编码字节流到UTF-8编码字节流的转换:byte[] src,dst;A:dst...
赞
踩
article
【考研复习】
操作系统
NRU
置换算法小题_
一
进程
已分配
到
4
个
页
帧
,
见表
3
-17(编号为
十进制
,
从
0
开始...
题目来源王道书
一
进程
已分配
到
4
个
页
帧,现在
进程
访问
到
第四
页
发生缺
页
,问若使用
NRU
算法应该换出哪
一
页
。
虚拟
页
号
页
帧...
赞
踩
article
logback
里面
设置
自动
删除
3
天之前
的
日志
_
logback
配置
定时清理...
【代码】
logback
里面
设置
自动
删除
3
天之前
的
日志
。_
logback
配置
定时清理
logback
配置
定时清理 ...
赞
踩
article
若依框架最后一步运行启动失败(已解决)_2023-
1
2-
06
1
6
:
29
:
58.2
1
9 [
http
-...
尝试在master中的username和password加上双引号。_2023-
1
2-
06
1
6
:
29
:
58.2
1
9 [...
赞
踩
article
FPGA
学习笔记:
Vivado
2020.2
MicroBlaze
MIG 测试
DDR3
篇一_...
FPGA
学习笔记:
Vivado
2020.2
MicroBlaze
MIG 测试
DDR3
,这里是第一篇:初步工程搭建...
赞
踩
article
C
语言
操作系统
实验二 LRU_
lru
c
语言
...
注:本文是两个页面淘汰模拟算法的第二篇算法。我是个菜鸡,发文是为了纪念自己完成了代码,以及累计自己的经验。如有知识错误或...
赞
踩
article
C++
实现
LRU
算法
_
c++
最简单
实现
lru...
LRU
算法
LRU
是Least Recently Used的缩写,即最近最少使用,常用于页面置换
算法
,是为虚拟页式存储管理...
赞
踩
article
git
提交
大
文件
报错
,
删除大
文件
后
,
还是
提交
不成功
解决办法
_
git
提交
时有一个
文件
过大
怎么办
...
查看很多文章后
,
我发现了问题所在
,
就是
git
上传时候
,
其实不止是push当前版本
,
还要push所有历史版本
,
如果之前某次...
赞
踩
article
gitlab
,
从A
仓库
迁移
某个
工程
到B
仓库
,
保留提交记录...
【代码】
gitlab
,
从A
仓库
迁移
某个
工程
到B
仓库
,
保留提交记录。
gitlab
,
从A
仓库
迁移
某个
工程
到B
仓库
,
保留提交记...
赞
踩
article
Golang
中
的
字符串
:常见
错误
和最佳实践...
字符串
的
默认值是""len 和 RuneCountIntString 函数具有不同
的
行为我们应该小心 for 循环和字符...
赞
踩
article
gateway
+vue实现
防
接口
重
放
、
防
篡改_网关处理
接口
防
重
放
机制...
接口
的
防
篡改、
防
重
放
_网关处理
接口
防
重
放
机制网关处理
接口
防
重
放
机制 ...
赞
踩
article
一文读懂
页面
置换
算法
_
nru
算法
...
将每一个
页面
与一个计数器关联,每次时钟终端,扫描所有
页面
,将每个
页面
的R位加到计数器上,这样就大致跟踪了每个
页面
的使用情...
赞
踩
article
【知识整理】
Git
Commit
Message
规范
...
前面咱们整理过Code Review 一文,提到了 Review 的重要性,已经同过gitlab进行CodeReview...
赞
踩
相关标签
git
STM32
IT硬件
物联网
stm32
嵌入式硬件
esp8266wifi
单片机
html5 自动连接wifi
算法
操作系统
内存管理
页面替换算法
c++
linux
服务端开发
java
logback
软件需求
fpga开发
学习
c语言
开发语言
github