操作系统复习:12.缺页中断以及内存页面置换算法

目录

缺页中断(缺页异常)

页面置换算法

1.基本概述

2.OPT( 最佳⻚⾯置换算法)

3. FIFO(先进先出置换算法)

4. LRU(最近最久未使⽤的置换算法)

5. Lock(时钟⻚⾯置换算法)

6.最不常⽤算法(LFU)


缺页中断(缺页异常)

当 CPU 访问的⻚⾯不在物理内存时,便会产⽣⼀个缺⻚中断,请求操作系统将所缺⻚调⼊到物理内存。

与⼀般中断的主要区别:

(1)缺⻚中断在指令执⾏期间产⽣和处理中断信号,⽽⼀般中断在⼀条指令执⾏完成后检查和处理中断信号。

(2)缺⻚中断返回到该指令的开始重新执⾏该指令,⽽⼀般中断返回到该指令的下⼀个指令执⾏

缺页中断处理流程:

1. 在 CPU ⾥访问⼀条 Load M 指令,然后 CPU 会去找 M 所对应的⻚表项

2. 如果该⻚表项的状态位是有效的,那 CPU 就可以直接去访问物理内存了,如果状态位是⽆效的,则 CPU 则会发送缺⻚中断请求。

3. 操作系统收到了缺⻚中断,则会执⾏缺⻚中断处理函数,先会查找该⻚⾯在磁盘中的⻚⾯的位置

4. 找到磁盘中对应的⻚⾯后,需要把该⻚⾯换⼊到物理内存中,但是在换⼊前,需要在物理内存中找空 闲⻚,如果找到空闲⻚,就把⻚⾯换⼊到物理内存中

5. ⻚⾯从磁盘换⼊到物理内存完成后,则把⻚表项中的状态位修改为有效的  

6.最后,CPU 重新执⾏导致缺⻚异常的指令。

若找不到空闲页(上述第四步):

找不到空闲⻚的话,就说明此时内存已满了,这时候,就需要⻚⾯置换算法选择⼀个物理⻚,如果该物理⻚有被修改过(脏⻚),则把它换出到磁盘,然后把该被置换出去的⻚表项的状态改成⽆效的, 最后把正在访问的⻚⾯装⼊到这个物理⻚中

页表项

状态位:⽤于表示该⻚是否有效,也就是说是否在物理内存中,供程序访问时参考

访问字段:⽤于记录该⻚在⼀段时间被访问的次数,供⻚⾯置换算法选择出⻚⾯时参考

修改位:表示该⻚在调⼊内存后是否有被修改过,由于内存中的每⼀⻚都在磁盘上保留⼀份副本

如果没有修改,在置换该⻚时就不需要将该⻚写回到磁盘上,以减少系统的开销

如果已经被修改,则将该⻚重写到磁盘上,以保证磁盘中所保留的始终是最新的副本

硬盘地址:⽤于指出该⻚在硬盘上的地址,通常是物理块号,供调⼊该⻚时使⽤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java从跨平台到跨行业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值