内存管理:页面置换算法

6. 页面置换算法

页面置换算法的功能:出现缺页异常但是内存已满,我们需要从物理内存中选出一个物理页面换出到磁盘。

1️⃣最佳页面置换算法:

选出未来等待时间最长的页面。但是因为程序访问页面时动态的,所以无法预知每个页面在下一次访问前的等待时间,所以此算法只用来衡量别的算法。

2️⃣先进先出置换算法:

选择在内存中滞留时间最长的页面。性能差。

3️⃣最近最久未使用的置换算法:

选择最长时间没有被访问的页面。理论上可行,但是实现起来开销比较大——我们需要在内存中维护一个计算所有页面没有被访问过的最长时间的链表,每次访问内存前都需要更新整个链表。

4️⃣时钟页面置换算法:

把所有的页面都保存在一个环形链表中,指针指向最老的页面。

当调用置换算法时,算法首先检查指针指向的页面:

  • 如果访问位是0就将该页面换出到磁盘中,并将新的页面插入到这个位置,然后把表针前移一个位置。
  • 如果访问位为1则清除该访问位,将指针前移一个位置,重复这个过程直到找到访问位为0的页面。

5️⃣最不常用算法:

选择访问次数最少的页面换出到磁盘中。

实现方式:在每个页面内设置一个『访问计数器』,当一个页面被访问时,计数器+1,当调用置换算法时淘汰计数器数值最少的页面。

缺点:选择一个要淘汰的页面需要遍历所有页面的计数器,比较耗时。另一方面,如果某些页面虽然在过去访问次数比较低,但是在未来一段时间需要经常访问,这就又是一个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分别有三个程序都能使用!1) 进一步理解父子进程之间的关系。 2) 理解内存页面调度的机理。 3) 掌握页面置换算法的实现方法。 4) 通过实验比较不同调度算法的优劣。 5) 培养综合运用所学知识的能力。 页面置换算法是虚拟存储管理实现的关键,通过本次试验理解内存页面调度的机制,在模拟实现FIFO、LRU等经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。将不同的置换算法放在不同的子进程中加以模拟,培养综合运用所学知识的能力。 2. 内容及要求: 这是一个综合型实验,要求在掌握父子进程并发执行机制和内存页面置换算法的基础上,能综合运用这两方面的知识,自行编制程序。 程序涉及一个父进程和两个子进程。父进程使用rand()函数随机产生若干随机数,经过处理后,存于一数组Acess_Series[]中,作为内存页面访问的序列。两个子进程根据这个访问序列,分别采用FIFO和LRU两种不同的页面置换算法内存页面进行调度。要求: 1) 每个子进程应能反映出页面置换的过程,并统计页面置换算法的命中或缺页情况。 设缺页的次数为diseffect。总的页面访问次数为total_instruction。 缺页率 = disaffect/total_instruction 命中率 = 1- disaffect/total_instruction 2)将为进程分配的内存页面数mframe 作为程序的参数,通过多次运行程序,说明FIFO算法存在的Belady现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值