思想什么的可以看https://blog.csdn.net/wuxy720/article/details/78941721,个人感觉还是讲的不错的。
代码的话,我用的是C++写的,为的就是那个栈可以省点事。结果我好像为了保证数据结构,所以什么都没做,所以头文件改一下,输入输出改一下,也就是C了。
额,老师说要,用书上的实例?好吧,要求来回变,没听怪我咯。好吧,怪我。
FIFO靠的是队列,LRU靠的是栈。
#include <bits/stdc++.h>
#include <unistd.h>
using namespace std;
#define pageNum 20 /* 系统分配给主存的页面数*/
#define memoryNum 3 /* 可用内存页面数*/
int page[pageNum];
int memory[memoryNum];
void generate_date();
double FIFO(int flag);
double LRU(int flag);
double OPT(int flag);
void SHOW();
int main(){
generate_date();
while(1){
int choice;
cout << endl << "---------------------------" << endl;
cout << "1) FIFO " << endl;
cout << "2) LRU" << endl;
cout << "3) OPT" << endl;
cout << "4) SHOW" << endl;
cout << "5) EXIT" << endl;
cout << "---------------------------" << endl;
cout << "enter the chocie : " ;
cin >> choice;
cin.clear();
switch(choice){
case 1: FIFO(0);break;
case 2: LRU(0); break;
case 3: OPT(0);break;
case 4: SHOW();break;
case 5: exit(0);break;
default:
cout << "Enter Error!" << endl;
exit(-1);
}
}
return 0;
}
void generate_date(){//随机生成页面
srand((int)time(NULL));//设置种子
printf("页面访问序列:\n");
for(int i = 1; i <= pageNum; i++){
int date = rand() % pageNum + 1;
if(date == page[i-1]){
i--;
continue;
}
page[i-1] = date;
printf("