L25 内存换出

中断处理程序
do_no_page()缺页中断
时钟中断


MMU查页表的时候修改引用位

颠簸

分配页框

二次整理

首先,要计算空闲页还够不够,不够的话就要先换出,再换入。
get_free_page()这个函数是在中断处理程序中的。

image.png


调度和淘汰没有本质区别,都是选择一个物品,调度是分配,淘汰则是剥夺。
频繁地换入换出会导致时间太长,类比不断地去仓库取东西放到店面,有些失败。


算法1
FIFO显然不行
算法的评价准则,缺页。也就是看换入了多少次。



算法2MIN
有些不切实际


image.png

算法3LRU
拥有局部性特点
前面讲的快表也拥有局部性这个特点,计算机中关于局部性的特点是很重要的,一定要会把握。


image.png

逻辑页
找逻辑页需要用MMU查询页表
时间戳可能会溢出


image.png

实现算法2页码栈:准确实现代价太大



不能准确实现,要近似实现,所以不是最近最少使用,而是使用最近没有使用来替换最近最少使用
R被放在页表项中,MMU在查表的时候会顺便改R的值为1
代价低的原因是,这个只需要改对应位置的R的值即可,不像时间戳和页码栈,还需要移动其他位置。

image.png


长指针:用来将R1变成0,放在时钟中断中。
短指针:换出页面,放在缺页的程序中。


需要给一个进程分配多少个物理内存页?
时钟算法就是用来换出的。


缺页就需要调页,调页就需要启动磁盘,CPU就要等着,那么多个进程就都要等着,这样CPU的利用率就低了。
CPU利用率下降的根本原因是缺页。进程增多,给进程分配的页就会变少。
颠簸:磁盘不断地在内存中读写,换入换出,CPU只能等着。


分配多少个页框,要根据局部性来决定。
一般的话,分配页框的个数需要动态调整,进程太多的话也要限制进程的数量。
clock算法->页面的换出(页面的淘汰)->内存的换出

image.png


时钟中断
缺页中断
磁盘管理,磁盘驱动


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容