操作系统实验三页面置换算法实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三实验报告

实验源码:

#include "stdio.h"

#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* 菜单选择*\n");

printf("*******************************************************\n");

printf("* 1-Optimal *\n");

printf("* 2-FIFO *\n");

printf("* 3-LRU *\n");

printf("* 4-返回上一级*\n");

printf("* 0-EXIT *\n");

printf("*******************************************************\n");

scanf("%d",&menu);

switch(menu)

{

case 1:

Optimal();

break;

case 2:

FIFO();

break;

case 3:

LRU();

break;

case 0:

exit(0);

break;

case 4:

system("cls");

DataInput();

break;

}

if(menu != 1 && menu != 2 && menu != 3 && menu != 0 && menu !=4) { system("cls");

printf("\n请输入0 - 4之间的整数!\n");

continue;

}

}

return 0;

}

void DataInput()

{

int i,choice;

printf("请输入最小物理块数:");

scanf("%d",&M);

// 输入最小物理块数大于数据个数

while(M > BlockNum)

{

printf("物理块数超过预定值,请重新输入:");

scanf("%d",&M);

}

printf("请输入页面的个数:");

scanf("%d",&N);

// 输入页面的个数大于数据个数

while(N > DataMax)

{

printf("页面个数超过预定值,请重新输入:");

scanf("%d",&N);

}

printf("请选择产生页面访问序列的方式(1.随机2.输入):");

scanf("%d",&choice);

switch(choice)

{

case 1:

// 产生随机访问序列

for(i = 0;i < N;i++)

{

Data[i] = (int)(((float) rand() / 32767) * 10); // 随机数大小在0 - 9之间}

system("cls");

// 显示随机产生的访问序列

printf("\n随机产生的访问序列为:");

for(i = 0;i < N;i++)

{

printf("%d ",Data[i]);

}

printf("\n");

break;

case 2:

// 输入访问序列

printf("请输入页面访问序列:\n");

for(i = 0;i < N;i++)

scanf("%d",&Data[i]);

system("cls");

// 显示输入的访问序列

printf("\n输入的访问序列为:");

for(i = 0;i < N;i++)

{

printf("%d ",Data[i]);

}

printf("\n");

break;

default:

while(choice != 1 && choice != 2)

{

printf("请输入1或2选择相应方式:");

scanf("%d",&choice);

}

break;

}

}

void DataOutput()

{

int i,j;

// 对所有数据操作

for(i = 0;i < N;i++)

{

printf("%d ",Data[i]);

}

printf("\n");

for(j = 0;j < M;j++)

{

// 对所有数据操作

相关文档
最新文档