实用标准文案
精彩文档
操作系统实验报告
页面置换算法模拟
——OFT、FIFO和LRU算法
班级:2013级软件工程1班
学号:X X X
姓名:萧氏一郎
数据结构说明:
Memery[10]物理块中的页码
Page[100]页面号引用串
Temp[100][10]辅助数组
Void print(unsigned int t)辅助函数
Viod FIFO()先进先出页面置换算法
Viod LRU()最近最久未使用置换换算法
Viod OPT()最佳置换算法
流程图:
开始
开始
NONONOYesYesYes结束页号序列载完?根据选择的置换算法完成号存在物理块中引用编号大于物理块数将页号放入物理地址中编号载入序列号,从第0个得到页号
NO
NO
NO
Yes
Yes
Yes
结束
页号序列载完?
根据选择的置换算法完成
号存在物理块中
引用编号大于物理块数
将页号放入物理地址中编号
载入序列号,从第0个得到页号
源代码:
#include
#include
/*全局变量*/
int mSIZE; /*物理块数*/
int pSIZE; /*页面号引用串个数*/
static int memery[10]={0}; /*物理块中的页号*/
static int page[100]={0}; /*页面号引用串*/
static int temp[100][10]={0}; /*辅助数组*/
/*置换算法函数*/
void FIFO();
void LRU();
void OPT();
/*辅助函数*/
void print(unsigned int t);
void designBy();
void download();
void mDelay(unsigned int Delay);
/*主函数*/
void main()
{
int i,k,code;
printf("请输入物理块的个数(M<=10):");
scanf("%d",&mSIZE);
printf("请输入页面号引用串的个数(P<=100):");
scanf("%d",&pSIZE);
puts("请依次输入页面号引用串(连续输入,无需隔开):");
for(i=0;i
scanf("%1d",&page[i]);
download();
do{
puts("输入的页面号引用串为:");
for(k=0;k<=(pSIZE-1)/20;k++)
{
for(i=20*k;(i
{
if(((i+1)%20==0)||(((i+1)%20)&&(i==pSIZE-1)))
printf("%d\n",page[i]);
else
printf("%d ",page[i]);
}
}
printf("* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("* 请选择页面置换算法:\t\t\t *\n");
printf("* *\n");
printf("* 1.先进先出(FIFO) 2.最近最久未使用(LRU) *\n");
printf("* 3.最佳(OPT) 4.退出 *\n");
printf("* * * * * * * * * * * * * * * * * * * * * * *\n");
printf("请选择操作:[ ]\b\b");
scanf("%d",&code);
switch(code)
{
case 1:
FIFO();
break;
case 2:
LRU();
break;
case 3:
OPT();
break;
case 4: