用最近最少用(LRU)页面调度算法处理缺页中断
1.实验目的
加深对于存储管理的了解,掌握虚拟存储器的实验原理;观察和了解重要的页面置换算法的置换过程.
2.实验原理及相关提示
在分页式虚拟存储系统中,当硬件发出”缺页中断”后,引出操作系统来处理这个中断事件。如果主存中已经没有空闲块,则可用LRU页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。调出和装入后都要修改页表中对应页的标志。
3.实验内容
利用最近最少用置换算法(LRU),将页面依次调入主存,并算出缺页中断次数及缺页中断率。
4.实验步骤
1.分析设计思路:考虑用队列来存储调入主存中的页面号,设置全局变量count来记录缺页中断次数,队列的总长度即为分配的主存的块数,若队列未满则将页面调入,若队列满了,则判断要调入的页面是否已在主存中,若在则记录其下标,将下标后的元素依次往前移,若不在,则将队首元素出队,依次将后面的元素往前移,最后将页面插入在队尾。
2.概要分析:定义队列的结构体,定义数据类型,写出调入主存后的页面展示函数void display(),写出判断队列是否为空即是判断主存中是否有页面存在的判空函数int empty()
3.流程图:

5.程序中使用的数据结构及符号说明。
typedef int datatype; //定义数据类型
typedef struct{ //定义队列的结构体 存储调入主存中的页面号
int count=0;//设置全局变量count来记录缺页中断次数
void init(sequence_queue *sq){ //初始化队列
void insert(sequence_queue *sq,datatype x,int block) //调入主存的页面
int flag=0; //flag用于判定要调入的页面是否已经

本文探讨了操作系统中处理缺页中断的方法,重点介绍了LRU和FIFO两种页面调度算法。在LRU算法中,当发生缺页中断且主存无空闲块时,会淘汰最早进入主存的页面。而在FIFO算法中,最先进入的页面会被优先淘汰。通过实验,分析了这两种算法的实现、流程和它们对缺页中断次数和命中率的影响。

5216

被折叠的 条评论
为什么被折叠?



