先进先出(FIFO)
按调用顺序依次把页面调入内存,当内存还没满时,直接调入;当内存满了再调入时,如果需要置换页面,被置换的页面权值为最小值,则修改页面的权值,刚调入的页面权值为最大值,其他页面的权值都减1。先看效果再附源码(源码、经验交流QQ群:613879714),有问题QQ群提问,这里不能及时回复
最近最久未使用(LRU)
按调用顺序依次把页面调入内存,当内存还没满时,直接调入;当内存满了再调入时,如果需要置换页面,被置换的页面权值为最大值,则修改页面的权值,刚调入的页面权值为最小值,其他页面的权值都加1。
源代码
#include<stdio.h>
#define N 20
#define M 3//内存大小
struct memory{
int Id;
int ArriveTime;
}MemoryFIFO[M],MemoryLRU[M];
int PageSequence[N]={
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
int Number=0,MissingPage;
//先进先出
void FIFO(struct memory Memory[M]){
MissingPage=0;
//内存里还没有页面 ,加入请求序列里的第一个页面
printf("\n请求页面:%d",PageSequence[0]);
if(Number==0){
Memory[0].Id=PageSequence[0];
Memory[0].ArriveTime=0;
Number++;
//缺页++
MissingPage++;
printf("\n内存:");
for(int k=0;k<Number;k++){
printf("%d ",Memory[k]);
}
}
for(int i=1;i<N;i++){
printf(</