操作系统实验三(页面置换算法)实验报告 下载本文

内容发布更新时间 : 2024/12/29 14:00:42星期一 下面是文章的全部内容请认真阅读。

实验三实验报告

实验源码:

#include \#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之间