操作系统(不一定全,自己做的笔记)

3.2.3页面置换算法

请求分页存储管理与基本分页存储管理的主要区别是:

在程序执行过程中,当所访问的信息不在内存中时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。

若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。

此时,就要用页面置换算法决定换出哪个页面。

1.最佳置换算法 OPT

每次选择淘汰的页面是以后永不使用,或者在最长时间内不在访问的页面,这样可以保证最低的缺页率。

如图,访问页面017里面,7是最后一个出现的,所以会先换出7,然后再需要换出的时候再换最后边的。

 

缺点:

最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行过程中才能知道接下来会访问到的是哪个页面,操作系统无法提前预判页面访问序列,因此,最佳置换算法是无法实现的。

 2.先进先出置换算法(FIFO):

每次选择淘汰的页面是最早进入内存的页面
实现方法:把调入内存的页面根据调入的先后顺序排成-一个队列,需要换出页面时选择队头页面即可。队列的最大长度取决于系统为进程分配了多少个内存块。
 

 只有FIFO算法会产生Belady异常.另外,FIFO算法虽然实现简单,但是该算法与进程实际运行时的规律不适应,因为先进入的页面也有可能最经常被访问.因此,算法性能差

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

每次淘汰的页面是最近最久未使用的页面
实现方法:赋予每个页面对应的页表项中,用访间字段记录该页面自上次被访问以来所经历的时间t.
当需要淘汰一个页面时,选择现有页面中t值最大的,即最近最久未使用的页面。

性能是接近最佳算法的。

4.时钟置换算法(CLOCK)

最佳置换算法性能最好,但无法实现;先进先出置换算法实现简单,但算法性能差;最近最久未使用置换算法性能好,是最接近0PT算法性能的,但是实现起来需要专门的硬件支持,算法开销大.
时钟置换算法是一-种性能和开销较均衡的算法,又称CLOCK算法,或最近未用算法(NRU)

简单的时钟算法实现方法:为每个页面设置一个访问位,再将内存中的页面都通过链接指针链接成
一个循环队列。当某页被访问时,其访问位置为1.当需要淘汰-一个页面时,只需检查页的访问位。如果是0,就选择该页换出;如果是1,则将它置为0,暂不换出,继续检查下一一个页面,若第一轮扫描中所有页面都是1,则将这些页面的访问位依次置为0后,再进行第二轮扫描(第二轮扫描中一定会有访问位为0的页面,因此简单的CLOCK算法选择一个淘汰页面最多会经过两轮扫描)
 

5.改进型的时钟置换算法:

简单的时钟置换算法仅考虑到一个页面最近是否被访问过.事实上,如果被淘汰的页面没有被修改过,就不需要执行I/0操作写回外存.只有被淘汰的页面被修改过时,才需要写回外存。
因此,除了考虑一个页面最近有没有被访问过之外,操作系统还应考虑页面有没有被修改过。在其他条件都相同时,应优先淘汰没有修改过的页面,避免I/O操作.这就是改进型的时钟置换算法的思想。
修改位=0,表示页面没有被修改过;修改位=1,表示页面被修改过。
为方便讨论,用(访问位,修改位)的形式表示各页面状态.如(1,1)表示一个页面近期被访问过
且被修改过。

算法规则:将所有可能被置换的页面排成一一个循环队列
第一轮:从当前位置开始扫描到第一个(0,0)的帧用于替换.本轮扫描不修改任何标志位。
第二轮:若第一轮扫描失败,则重新扫描,查找第一个(0,1)的帧用于替换。本轮将所有扫描过的帧访问位设为0。
第三轮:若第二轮扫描失败,则重新扫描,查找第一个(0,0)的帧用于替换。本轮扫描不修改任何标志位。
第四轮:若第三轮扫描失败,则重新扫描,查找第一个(0,1)的帧用于替换。


由于第二轮已将所有帧的访问位设为0,因此经过第三轮、第四轮扫描一定会有一个帧被选中,因此改进型时钟置换算法选择一个淘汰页面最多会进行四轮扫描.

3.24页面分配策略

驻留集:

指请求分页存储管理中给进程分配的物理块的集合。

在采用了虚拟存储技术的系统中,驻留集大小一般小于进程的总大小。

若驻留集太小,会导致缺页频繁,系统要花大量的时间来处理缺页,实际用于进程推进的时间很少;
驻留集太大,又会导致多道程序并发度下降,资源利用率降低.所以应该选择-一个合适的驻留集大小。

针对驻留集的大小是否可变,有两种:
固定分配:操作系统为每个进程分配--组固定数目的物理块,在进程运行期间不再改变.即,驻留集
大小不变
可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。即,驻留集大小可变
针对置换的方式:

局部置换:发生缺页时只能选进程自己的物理块进行置换。

全局置换:可以将操作系统保留的空闲物理块分配给缺页进程,也可以将别的进程持有的物理块换到外存,再分配给缺页进程。

 页面分配、置换策略:

1.固定分配局部置换:

系统为每个进程分配一定数量的物理块,在整个运行期间都不改变.若进程在运行中发生缺页,则只能从该进程在内存中的页面中选出一页换出,然后再调入需要的页面。

这种策略的缺点是:很难在刚开始就确定应为每个进程分配多少个物理块才算合理.(采用这种策略的系统可以根据进程大小、优先级、或是根据程序员给出的参数来确定为一个进程分配的内存块数)
 

2.可变分配全局置换:

刚开始会为每个进程分配一定数量的物理块.操作系统会保持一个空闲物理块队列。当某进程发生缺页时,从空闲物理块中取出一块分配给该进程;若已无空闲物理块,则可选择一个未锁定(锁定的就是系统内核的进程之类的)的页面换出外存,再将该物理块分配给缺页的进程.采用这种策略时,只要某进程发生缺页,都将获得新的物理块,仅当空闲物理块用完时,系统才选择一个未锁定的页面调出。被选择调出的页可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,缺页率会增加。

3.可变分配局部置换

刚开始会为每个进程分配一定数量的物理块.当某进程发生缺页时,只允许从该进程自己的物理块中选出一个进行换出外存。如果进程在运行中频繁地缺页,系统会为该进程多分配几个物理块,直至该进程缺页率趋势适当程度;反之,如果进程在运行中缺页率特别低,则可适当减少分配给该进程的物理块。

可变分配全局置换:只要缺页就会分配新物理块。

可变分配局部置换:要根据发生缺页的频率来动态的增加或减少进程的物理块。

什么时候调入页面?

1.预调页策略:根据局部性原理,预测会访问哪些页面,提前调入若干个相邻的页面。目前预测成功率只有50%,这种策略主要用于进程的首次调入,由程序员指出应该先调入哪些部分。

2.请求调页策略:进程在运行期间发现缺页才将缺页调入内存,调入的页面一定会访问。但因为每次只能调入一页,每次调页都要磁盘I/O操作,对I/O开销较大。

如何调入页面:

外存的磁盘分为(对换区和文件区,对换区的读写速递更快,采用连续分配方式。文件区的读写速度更慢,采用离散分配方式。)

1.系统有足够的对换区:

在程序运行前,需要将进程相关的数据从文件区复制到对换区。

2.系统中没有足够的对换区空间:

如果系统缺少足够的对换区,凡是不会被修改的数据都直接从文件区调入,换出时不必写回磁盘。下次需要再从文件区调入即可。可能被修改的部分,换出时需要写回磁盘对换区,下次需要再从对换区调入。

3.UNIX方式:

运行前都在文件区,没有用过的都从文件区调入。若被使用的页面需要换出,则写回对换区,下次需要直接从对换区调入。

抖动(颠簸)现象:

刚换出的页面马上换回内存,刚刚换入页面马上又换出去。这种频繁的页面调度称为抖动、颠簸。

主要原因是进程频繁访问的页面数目高于可用的物理块数(分配给进程的物理块不够)

工作集:指在某段时间间隔里,进程实际访问页面的集合。

驻留集:指请求分页存储管理中给进程分配的内存块的集合。

工作集大小可能小于窗口尺寸,实际应用中,操作系统可以统计进程的工作集大小,根据工作集大小给进程分配若干内存块.如:窗口尺寸为5,经过一-段时间的监测发现某进程的工作集最大为3,那么说明该进程有很好的局部性,可以给这个进程分配3个以上的内存块即可满足进程的运行需要。
一般来说,驻留集大小不能小于工作集大小,否则进程运行过程中将频繁缺页。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 数据库系统工程师笔记csdn是一篇关于数据库系统工程师学习笔记的文章。在这篇文章中,作者通过分享自己的学习笔记,为想要从事数据库系统工程师工作的人提供了有用的参考和指导。 文章中首先介绍了数据库系统工程师的职责,包括设计、开发、测试、维护和优化数据库系统,同时需要具备扎实的数据库原理和编程能力。作者建议想要成为一名数据库系统工程师的人,应该首先学习数据库的基本概念和 SQL 命令,同时还要了解各种数据库管理系统的操作和配置。 接着,作者介绍了数据库设计的基本步骤和原则,包括需求分析、概念设计、逻辑设计和物理设计等方面。这些步骤都非常重要,应该在设计数据库系统之前认真考虑。 最后,作者分享了自己在学习数据库系统工程师方面的心得和体会,强调了学习的重要性和不断提高自己的必要性。他建议大家在学习过程中要注重实践和思考,通过参与实际项目来提高自己的技能和经验。 总之,数据库系统工程师笔记csdn是一篇有价值的学习笔记,为想要成为一名数据库系统工程师的人提供了很好的指导和建议。希望更多的人可以从中获得启发,不断提高自己的技能和水平。 ### 回答2: 数据库系统工程师是一个高端技术岗位,主要负责设计和维护复杂的数据库系统。作为一名数据库系统工程师,需要具备深厚的计算机理论知识和丰富的实践经验,掌握多种数据库系统的管理和操作技术,以及熟练应对各种异常情况和技术挑战的能力。 在这个领域里,csdn的笔记内容十分丰富,包括了基础知识、应用实践、数据库系统架构设计、性能优化、数据安等多个方面。这些笔记内容不仅包含了数据库的基础知识,还介绍了很多数据库系统性能调优和安问题的解决方案,能够帮助数据库系统工程师更好地解决实际问题,提高工作效率。同时,笔记中有许多实用的案例,可以让数据库系统工程师更好地理解和掌握数据库系统的各种技术。 除了csdn的笔记外,数据库系统工程师还需要不断学习和探索新的数据库技术,通过阅读相关书籍和参加各种技术交流会议,拓展自己的视野和技能。只有不断学习和提高,才能在这个竞争激烈的领域里保持竞争力。 ### 回答3: 数据库系统工程师是负责设计、开发和维护数据库系统的专业技术人员。在现代信息化时代,球各行各业都离不开数据库系统,这就需要数据库系统工程师掌握一定的技术,从而保证各种业务得以正常运行和发展。 CSND是一个专注于IT技术交流的平台,是大部分IT技术爱好者和从业人员的必备之地。在这个平台上,数据库系统工程师可以找到大量的学习资源和同行的交流,提高自己的技能水平。比如,他们可以了解数据库系统的基本概念、数据结构、SQL语言、数据库事务、索引优化和数据备份等技术,从而应对各种复杂的业务需求。 此外,数据库系统工程师还应该关注行业的大趋势,不断更新自己的知识储备。比如,随着大数据和云计算技术的快速发展,数据库系统工程师需要掌握分布式数据库、NoSQL等新技术,以适应业务的巨大变革。 总之,作为数据库系统工程师,不仅需要掌握实用技术,更要时刻关注技术的发展趋势和行业的变化,保持敏锐的洞察力和学习能力。而在CSND这个优秀的技术交流平台上,数据库系统工程师可以获得更多的机会,拓展自己的思路和视野,向自己的目标不断前进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值