操作系统课程设计页面置换算法

凭栏听雨 分享 2022-08-26 下载文档

操作系统课程设计页面置换算法

《操作系统》实验报告

实验题目:

班级: 学号: 姓名: 实验日期: 报告日期: 成绩: 实验内容简要描述

1、实验目的

(1)掌握先进先出页面置换算法;

(2)掌握最近最久未使用页面置换算法;

(3)掌握改进的CLOCK页面置换算法,了解其他页面置换算法;

(4)熟悉C/C++或其他语言编程。

2、实验要求

要求掌握C/C++语言进行编码,掌握页面缺页率的算法和基本思想,理解先进先出,最近最久未使用页面置换算法的,计算并记录缺页率。根据实验数据撰写实验报告

3、实验内容

编写程序,设置不同的页面数,使用不同的页面替换策略算法进行模拟页面替换。先进先出,最近最久未使用页面置换算法等,并计算缺页率。

4、实验环境

1.PC微机

2.Windows 操作系统

3.C/C++或其他语言开发环境

实验体会

通过这次实验我学到了C/C++语言进行编码,以及页面缺页率的算法和基本思想,和页面置换算法的基本知识,发现了自己的一些不足,对今后编写C/C++语言提供了帮助。

附件:源程序[包括截图]

#include<conio.h>

#include<stdio.h>

#include<dos.h>

#include<stdlib.h>

#include<math.h>

操作系统课程设计页面置换算法

#include<time.h>

int add[256],page[256];

int k,j,ram,t;

float rate;

struct s1

{ int page; int free; int tag;

}

fifo[33],opt[33],lru[33];

struct s2

{ int time;

};

int random(int x)

{ return rand() % x;

}

void address();

int random(int x);

float FIFO(int ram);

float OPT(int ram);

float LRU(int ram);

void main()

{ int i,p[256]; address(); srand(time(0));

for(k=1;k<=8;)

{ printf("the size of the page is %d k\n",k);

printf("the page number is ...\n");

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

{ p[i]=add[i]/(k*1024); printf("%d ",p[i]);

}

j=0;

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

{ while(p[i]==p[i+1]) i++; page[j]=p[i]; j++;

}

printf("\nafter connect the same pages the page num is:\n"); for(i=0;i<j;i++)

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

printf("\n");

getch();

for(ram=1;ram<=32;ram++)

{ if (ram==10)

getch();

printf("\nblock=%d pages=%d,absent rate:",ram,j); printf("FIFO=%0.2f%%",FIFO(ram));

printf("LRU=%0.2f%%",LRU(ram));

printf("OPT=%0.2f%%",OPT(ram));

}

操作系统课程设计页面置换算法

k=k*2; getch();

}

}

void address()

{ int i; add[0]=1000;

for(i=1;i<=255;i++)

{

int x=random(1024);

if((x>=0)&&(x<512))

add[i]=add[i-1]+1;

if((x>=512)&&(x<768))

add[i]=random(add[i-1]-1)+1;

if((x>=768)&&(x<1024))

add[i]=add[i-1]+random(30*1024-add[i-1]-1)+1; }

}

float FIFO(int ram) /

{ int absent=0,t=0,i,z,l,yn;

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

{ fifo[i].page=-1; fifo[i].free=1; fifo[i].tag=0;

}

i=0;

while(i<j)

{

yn=0; for(z=0;z<ram;z++)

if(fifo[z].page==page[i])

{yn=1;

for(z=0;z<ram;z++)

if(fifo[z].free==0)

fifo[z].tag+=1;

}

if(yn!=1)

{

absent+=1; l=0;

while((l<ram)&&(fifo[l].free==0))

l++;

if((l<ram)&&(fifo[l].free==1))

{

fifo[l].page=page[i];

fifo[l].free=0;

for(l=0;l<ram;l++)

if(fifo[l].free==0)

fifo[l].tag+=1;

操作系统课程设计页面置换算法

}

else

{

t=0;

for(l=0;l<ram;l++)

if(fifo[l].tag<fifo[t].tag)

t=l;

fifo[t].page=page[i];

fifo[t].free=0;

fifo[t].tag=1;

l=0;

}

}

i++;

}

rate=(float)absent/j*100;

return rate;

}

float LRU(int ram) /

{

int absent=0,yn,t,i,l,z,now=0;

struct s2 P[250];

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

P[i].time=0;

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

{ lru[i].page=-1; lru[i].free=1;

}

i=0;

while(i<j)

{

for(l=0;z<ram;z++)

yn=0;

for(z=0;z<ram;z++)

{ if(lru[z].page==page[i])

{ now+=1;

P[lru[z].page].time=now;

yn=1;

}

if(yn!=1)

{ absent+=1; now+=1; l=0;

while((l<=ram)&&(lru[l].free==0))

if((l<=ram)&&(lru[l].free==1))

{ l++;

操作系统课程设计页面置换算法

lru[l].page=page[i];

P[lru[l].page].time=now;

lru[l].free=0;

}

else

{

t=0;

for(l=0;l<ram;l++)

if(P[lru[l].page].time<P[lru[t].page].time)

t=1;

lru[t].page=page[i];

P[lru[t].page].time=now;

}

}

}

i++;

}

rate=(float)absent/j*100;

return rate;

}

float OPT(int ram)

{

int yn,t,absent=0,i,l1,k,l;

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

{

opt[i].page=-1; opt[i].free=1; opt[i].tag=0;

}

i=0;

while(i<j)

{

yn=0;

for (l1=0;l1<ram;l1++)

if (page[i]==opt[l1].page)

{yn=1;

for(k=0;k<ram;k++)

opt[k].tag-=1;

}

if(yn!=1)

{ absent+=1; l=0;

while((l<ram)&&(opt[l].free==0)) l++; if((l<=ram)&&(opt[l].free==1))

{ opt[l].page=page[i]; opt[l].free=0; opt[l].tag=1; for(l=0;l<ram;l++)

操作系统课程设计页面置换算法

{ opt[l].tag-=1;

}

}

else

{

for(l=0;l<ram;l++)

{

t=i;

while(t<j&&opt[l].page!=page[t]) { t++;

opt[l].tag+=1;

}

}

t=0;

for(l=0;l<ram;l++)

if(opt[l].tag>opt[t].tag) t=l; opt[t].page=page[i];

opt[t].tag=1;

}

}

i++;

}

rate=(float)absent/j*100;

return rate;

}

运行结果:

操作系统课程设计页面置换算法


操作系统课程设计页面置换算法.doc 将本文的Word文档下载到电脑

下一篇:丽水学院英语专业学生毕业论文撰写规范(2015届)

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx