操作系统 请求分页存储管理方式(含页面置换算法)
1. 请求分页存储管理方式
请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储器功能,而增加了请求调页功能和页面置换功能。
相应地,每次调入和换出的基本单位都是长度固定的页面。因此,请求分页便称为目前最常用的一种实现虚拟存储器的方式。
1.1 请求分页中的硬件支持
为了实现请求分页,系统必须提供一定的硬件支持。计算机系统除了要求一定容量的内存和外存外,还需要有请求页表机制、缺页中断机制以及地址变换机构。
1.1.1 请求页表机制
在请求分页系统中需要的主要数据结构是请求页表,其基本作仍然是将用户地址空间中的逻辑地址映射为内存空间中的物理地址。
为了满足页面换进换出的需要,在请求页表中又增加了四个字段。
状态位(存在位)P:用于指示该页是否已调入内存
访问字段A:用于记录本页在一段时间内被访问的次数
修改位M:标识该页在调入内存后是否被修改过
外存地址:用于指出该页在外存上的地址
1.1.2 缺页中断机构
在请求分页系统中,每当所要访问的页面不在内存时,便产生一缺页中断,请求OS将所缺之页调入内存。
缺页中断是一种特殊的中断,它与一般的中断相比有着明显的区别,主要表现在两个方面:
- 在指令执行期间产生和处理中断信号
- 一条指令在执行期间可能产生多次缺页中断
1.1.3 地址变换机构
如图展示请求分页系统中的地址变换过程
2. 页面置换算法
2.1 介绍
在进程运行过程中,若其所要访问的页面不在内存,而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据送到磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法(Page-Replacement Algorithm)。
不适当的算法可能会导致进程发生“抖动”(Thrashing),即刚被换出的页很快又要被访问,需要将它重新调入,此时又需要再选一页调出,而此刚被换出的页很快又要被访问,又需将它调入,因此我们称该进程发生了“抖动”。
2.2 最佳(Optimal)置换算法
介绍:
最佳置换算法是一种较为极端,理想化的算法,它具有最好的性能,但实际上是无法实现的。通常以其为标准,来衡量其它算法的优劣。
原理:
其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。
特点:
可保证获得最低的缺页率
因人们无法预知一个进程在内存的若干个页面中,究竟哪个是未来最长时间内不再被访问的,故该算法无法实现
2.3 先进先出页面置换算法(FIFO)
原理:
总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入的页面按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总指向最老的页面。
特点:
通常与进程实际运行的规律不相适应,因为有些页面会经常被访问,如全局变量、常用函数等,故可能是性能最差的算法,实际应用极少。
2.4 最近最久未使用置换算法(LRU,Least Recently Used)
原理:
该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间t。当需淘汰一个页面时,选择现有页面中其t值最大的,即最近最久未使用的页面予以淘汰。
特点:
该算法是根据页面调入内存后的使用情况做出决策的
要求系统有较多的支持硬件,为了了解一个进程在内存中的各个页面各有多少时间未被进程访问,以及如何快速地知道哪一页是最近最久未使用的页面,须有寄存器和栈两类硬件之一的支持。
2.5 最少使用置换算法(LFU, Least Frequently Used)
原理:
该算法为在内存中的每个页面设置一个移位寄存器,用来记录该页面被访问的频率。每次访问某页时,便将该移位寄存器的最高位置1,再每隔一定时间(例如100ms)右移一次。LFU置换算法的页面访问图与上面的LRU置换算法的访问图完全相同。
或者说,利用一套硬件既可实现LRU算法,又可实现LFU算法。
特点:
这种算法并不能真正反映出页面的使用情况,因为在每一时间间隔内,只是用寄存器的一位来记录页的使用情况。因此,在该时间间隔内,对某页访问一次和访问100次效果等效。
2.6 简单的Clock置换算法
介绍:
LRU算法需要较多硬件支持,成本较高,实际应用中,大多采用LRU的近似算法。Clock算法就是用得较多的一种LRU近似算法。
原理:
当利用简单的Clock置换算法时,只需为每页设置一位访问位,再将内存中的所有页面都通过链接指针链接成一个循环队列。
当某页被访问时,其访问位被置1。置换算法在选择一页淘汰时,只需检查页的访问位。如果是0,选择该页换出;若为1,则重新将它置0,暂不换出,给予该页第二次驻留内存的机会,
再按照FIFO算法检查下一个页面。当检查到队列中的最后一个页面,若其访问为仍为1,则再返回到队首去检查第一个页面。
特点:
该算法是循环地检查各页面的使用情况,故称为Clock算法
因该算法只有一位访问位,只能用其表示该页是否已经使用过,而置换是将未使用过的页面换出去,故该算法又称为最近未用算法或者NRU(Not Recently Used)算法。
2.7 页面缓冲算法(PBA,Page Buffering Algorithm)
内存分配策略上采用了可变分配和局部置换方式,系统为每个进程分配一定数目的物理块,系统自己保留一部分空闲物理块。
为了能显著地降低页面换进、换出地频率,在内存中设置了如下两个链表:
空闲页面链表
实际上该链表是一个空闲物理块链表,是系统掌握地空闲物理块,用于分配给频繁发生缺页的进程,已降低该进程的缺页率。
当进程需要读入一个页面时,便可利用空闲物理链表中的第一个物理块来装入该页;
当有一个未被修改的页要换出时,实际上并不将它换出到外存,而是把它们所在的物理块挂在空闲链表的末尾。
修改页面链表
该链表是由已修改的页面所形成的链表。设置该链表的目的是为了减少已修改页面换出的次数。
当进程需要将一个已修改的页面换出时,系统并不立即把它换出到外存上,而是将它所在的物理块挂在修改页面链表的末尾。
PBA算法特点:
- 显著地降低了页面换进、换出的频率,使磁盘I/O的操作次数大为减少,减少了页面换进、换出的开销。
- 正是由于换入换出的开销大幅度减小,才能使其采用一种较简单的置换策略,如先进先出(FIFO)算法,它并不需要特殊硬件的支持,实现起来非常简单。
参考:《计算机操作系统》(第四版,汤小凤)
看教材枯燥,码字记录提神,根据计算机操作系统(第四版,汤小凤)个人整理,仅作学习记录 :)
操作系统 请求分页存储管理方式(含页面置换算法)相关推荐
- 【清华大学】操作系统 陈渝——Part6 全局页面置换算法
[清华大学]操作系统 陈渝--Part6 局部页面置换算法 6.8 局部页面替换算法的问题,工作集模型 局部页面替换算法的问题 工作集模型 6.9 全局页面置换算法 1. 工作集页置换算法 2. 可变 ...
- 操作系统课设之虚拟内存页面置换算法的模拟与实现
前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...
- 南京邮电大学操作系统实验三:虚拟内存页面置换算法
实验内容 使用数组存储一组页面请求,页面请求的数量要50个以上,访问的页面号可以用随机数生成(0~20): (1)设置为分配给进程的页框数(假定是5),使用LRU算法,模拟完成全部的页面请求,最后输出 ...
- 13 操作系统第三章 内存管理 虚拟内存 请求分页管理方式 页面置换算法 页面分配策略
文章目录 1 虚拟内存 1.1 传统存储管理方式的特征.缺点 1.2 局部性原理 1.3 虚拟内存主要特征 1.4 如何实现虚拟内存技术 1.5 虚拟内存的基本概念小结 2 请求分页管理方式 2.1 ...
- 操作系统之内存管理:5、虚拟存储技术(请求分页管理、页面置换算法、虚拟内存、地址变换)
4.虚拟存储技术 虚拟内存 思维导图 传统存储管理方式的缺点 局部性原理 什么是虚拟内存?(功能) 虚拟内存主要特征 如何实现虚拟存储技术 虚拟内存实现1------请求分页管理方式 思维导图 请求分 ...
- 请求分页管理方式页面置换算法
大勇若怯,大智若愚 文章目录 请求分页管理方式 知识总览思维导图 页表机制 缺页中断机构 地址变换机构 总结思维导图 页面置换算法 知识总览思维导图 最佳置换算法(OPT) 先进先出置换算法 (FIF ...
- 操作系统之虚拟存储管理 java python 实现 最优(Optimal)置换算法 先进先出(FIFO)页面置换算法 LRU(Least Recently Used)置换算法
操作系统之虚拟存储管理 实验内容:模拟请求分页虚拟存器管理技术中的硬件地址变换.缺页中断以及页式淘汰算法,处理缺页中断. 实验目的:清楚认识请求分页管理. 最佳(Optimal)置换算法 其所选择的被 ...
- 请求页式存储管理中页面置换算法的模拟设计_操作系统-存储管理与文件管理-笔记...
存储管理 一.页式存储 将各进程的虚拟空间划分成若干个长度相等的页,页式管理把内存空间按页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地 ...
- 操作系统:虚拟页式存储管理(缺页中断、页面置换算法)
1.基本工作原理 1.基本工作原理 在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,动态装入其他页面:当内存已满,而又需要装入 新的页面时,则根据某种算法淘汰某 ...
最新文章
- 利用矩阵奇异值分解(SVD)进行降维
- 入门无人驾驶学习路线
- Poj 1611 The Suspects
- HDU 3555 - Bomb
- mysql导入source数据库sql的C++实现和封装
- 熟悉linux运行环境,实验一 熟悉Ubuntu环境
- shell 生活0806012145
- 【设计模式】各个击破单例模式的8种写法
- 中关村-DIY电子书之Nook2 Root 完全操作手册
- 0顶会入场大厂算法岗的正确姿势(干货总结)
- 备忘: MIRACL 大数运算库使用手册
- OpenCV:框选某一特定区域并保存到图片
- vb调用存储过程的方法
- mac安装mysql mysql命令找不到_Mac系统下安装mysql数据库和使用phpMyAdmin可视化
- bspline怎么使用 python_零基础5个月快速学会Python的秘诀
- 人工智能自然语言处理技术处理专业领域的运用
- 电脑常用快捷键大全(收藏)
- Java中创建Excel文档,POI使用详解
- 可视化方向的几个期刊会议,供参考
- Bottom Sheets
热门文章
- 25 魔幻现实下的区块链【2019-10-29 1757】
- 2021-2027全球与中国网眼织物纺织品市场现状及未来发展趋势
- RaisAjax结合
- 【React】之受控组件和非受控组件
- Ubuntu 16.04无线网卡RTL8723BE频繁掉线及信号不足解决办法
- canvas.toDataURL() gives “Security Error” in IE 11
- uboot 1.1.6 移植8900网卡+tftp
- 5年后端WEB开发者的开机必备软件
- 淘宝Hadoop作业平台宙斯(zeus)开源
- 金额数字转换(小写转大写)