实验三实验报告
实验源码:
#include \#include
#define DataMax 100 // 常量DataMax #define BlockNum 10 // 常量BlockNum
int DataShow[BlockNum][DataMax]; // 用于存储要显示的数组
bool DataShowEnable[BlockNum][DataMax]; // 用于存储数组中的数据是否需要显示 int Data[DataMax]; // 保存数据 int Block[BlockNum]; // 物理块 int count[BlockNum]; // 计数器 int N; // 页面个数
int M; // 最小物理块数 int ChangeTimes; // 缺页次数
void DataInput(); // 输入数据的函数 void DataOutput(); // 输出数据的函数
void FIFO(); // FIFO 函数 void Optimal(); // Optimal函数 void LRU(); // LRU函数
int main(int argc, char* argv[]) { DataInput(); int menu; while(true) { printf(\ 菜单选择 *\\n\ printf(\ printf(\ 1-Optimal *\\n\ printf(\ 2-FIFO *\\n\ printf(\ 3-LRU *\\n\ printf(\ 4-返回上一级 *\\n\ printf(\ 0-EXIT *\\n\ printf(\ scanf(\
switch(menu) { case 1: Optimal(); break; case 2: FIFO(); break; case 3: LRU(); break; case 0: exit(0); break; case 4: system(\ DataInput(); break;
}
if(menu != 1 && menu != 2 && menu != 3 && menu != 0 && menu !=4) { system(\
printf(\请输入0 - 4之间的整数!\\n\
continue; } } return 0; }
void DataInput() { int i,choice;
printf(\请输入最小物理块数:\scanf(\
// 输入最小物理块数大于数据个数 while(M > BlockNum) { printf(\物理块数超过预定值,请重新输入:\ scanf(\}
printf(\请输入页面的个数:\scanf(\
// 输入页面的个数大于数据个数
while(N > DataMax) { printf(\页面个数超过预定值,请重新输入:\ scanf(\}
printf(\请选择产生页面访问序列的方式(1.随机 2.输入):\scanf(\switch(choice) {
case 1: // 产生随机访问序列 for(i = 0;i < N;i++) { Data[i] = (int)(((float) rand() / 32767) * 10); }
system(\
// 显示随机产生的访问序列 printf(\随机产生的访问序列为:\ for(i = 0;i < N;i++) { printf(\ } printf(\ break; case 2: // 输入访问序列 printf(\请输入页面访问序列:\\n\ for(i = 0;i < N;i++) scanf(\ system(\ // 显示输入的访问序列 printf(\输入的访问序列为:\ for(i = 0;i < N;i++) { printf(\ } printf(\ break; default: while(choice != 1 && choice != 2) { printf(\请输入1或2选择相应方式:\ scanf(\
// 随机数大小在0 - 9之间