页面淘汰算法课程设计

发布 2022-10-01 22:14:28 阅读 7428

实验**如下:

#include<>

#include<>

#include<>

#define mempagecount 4 //内存物理块数目。

#define instructioncount 20 //指令页面数目。

struct page

int serial; /页面号。

int time; /时间计数。

mempage[mempagecount];

int main()

int i,j,k,m,n; /指令页面集合,可以考虑让页面指令集合随机生成。

int instruction[instructioncount];

int mem_counter; /内存页面集合计数器。

int switch_counter; /置换次数。

int switch_flag; /置换的位置标志。

int lost_counter; /缺页次数。

int exist_flag; /判断是否已经在内存中的标志。

int distance[mempagecount];/用于标记内存中已有页面哪个是最久的将来不使用的。

srand(time(null));time(null)是得到当前时间,srand()是取一个种子好生成随机数*/

for(n=0;n instruction[n]=rand()%10;

printf("当前随机生成的页面号为:");

for(n=0;n printf(" d",instruction[n]);

printf("");

do{lost_counter=0;

switch_counter=0;

mem_counter=0;

switch_counter=0;

lost_counter=0;

switch_flag=0;

exist_flag=0;

printf("请选择算法: 0、结束 1、fifo算法 2、opt算法 3、lru算法:")

scanf("%d",&m);

printf("置换顺序依次为:");

switch(m)

case 1:

for(i=0;imempage[i].serial=-1;

mempage[i].time=0;

依次调入新的指令页面,如果内存页面满且新页面不存在,则置换页面。

for(i=0;i

for(j=0;jif(mempage[j].serial==instruction[i]){

exist_flag=1;

break;

如果内存中没有该页面,执行缺页和置换步骤。

if(exist_flag!=1){

内存页面集合未满,缺页不置换。

if(mem_countermempage[mem_counter].serial=instruction[i];

mempage[mem_counter].time=0;

mem_counter=mem_counter+1;

else{ /缺页且发生置换。

switch_flag=0;

取得最先进入的页面在memepage中的位置。

for(j=1;jif(mempage[switch_flag].timeswitch_flag=j;

mempage[switch_flag].serial=instruction[i]; 置换页面。

mempage[switch_flag].time=0;

switch_counter=switch_counter+1;

lost_counter=lost_counter+1;

for(j=0;jprintf("%d ",mempage[j].serial);

printf("|

end if(exist_flag!=1)

for(j=0;jmempage[j].time=mempage[j].time+1;

exist_flag=0;

printf("缺页次数:%d 次、",lost_counter);

printf("置换次数:%d 次",switch_counter);

break;

case 2:

for(i=0;imempage[i].serial=-1;

mempage[i].time=0;

依次调入新的指令页面,如果内存页面满且新页面不存在,则置换页面。

for(i=0;ifor(j=0;jif(mempage[j].serial==instruction[i]){

exist_flag=1;

break;

if(exist_flag!=1){ 如果内存中没有该页面,执行缺页和置换步骤。

if(mem_countermempage[mem_counter].serial=instruction[i];

mempage[mem_counter].time=0;

mem_counter=mem_counter+1;

else{ /缺页且发生置换。

for(j=0;jdistance[j]=9999;

for(j=0;j记录下内存页面中,再次被使用的距离。

for(k=i+1;kif(instruction[k]==mempage[j].serial){

distance[j]=k;

break;

switch_flag=0;

寻找未来最长时间内不被使用的页面在mempage中的位置。

即寻找distance最大值。

for(k=1;kif(distance[switch_flag]switch_flag=k;

mempage[switch_flag].serial=instruction[i];

switch_counter=switch_counter+1;

lost_counter=lost_counter+1;

for(j=0;jprintf("%d ",mempage[j].serial);

printf("|

if(exist_flag!=1)

exist_flag=0;

printf("缺页次数:%d 次、",lost_counter);

printf("置换次数:%d 次",switch_counter);

break;

case 3:

for(i=0;imempage[i].serial=-1;

mempage[i].time=0;

依次调入新的指令页面,如果内存页面满且新页面不存在,则置换页面。

for(i=0;ifor(j=0;jif(mempage[j].serial==instruction[i]){

exist_flag=1;

mempage[j].time=0; /如果在内存中,time 值置为零,表示刚刚被使用过。

break;

页面置换算法课程设计

操作系统课程设计报告。题目页面置换算法 专业计算机科学与技术 1.设计目的 2 2.课设要求 2 3.系统分析 3 4.系统设计 3 4.1问题分析 3 4.2程序整体框图 5 4.3 fifo算法 5 4.4 lru算法 6 4.5 opt算法 7 5.功能与测试 8 5.1开始界面 8 5.2 ...

页面置换算法课程设计

操作系统原理 课程设计任务书。题目 常用页面置换算法模拟实验。学生姓名学号 班级 计算机科学与技术 2 班。题目类型 软件工程 r指导教师 一 设计目的。学生通过该题目的设计过程,可以初步掌握操作系统中有关文件系统的原理 软件开发方法并提高解决实际问题的能力。二 设计任务。设计一个虚拟存储区和内存工...

课程设计页面置换算法 先进先出算法

淮阴工学院。操作系统课程设计报告。选题名称 页面置换算法。系 院 管理工程学院。专业 信息管理与信息系统。班级 信管1131 姓名 周夏青 张婷婷。学号 指导教师 陆华奇 邱军林。学年学期 2015 2016学年第1学期 2015 年 12 月 20 日。页面置换算法。先进先出算法。一 实验目的 操...