#include <stdio.h>
#include <time.h>
#include<stdlib.h>
#define randomize() srand((unsigned)time(NULL)) //定义一个宏用来产生随机数的
#define N 10 //调动的次数
#define RealPage 4
struct Page
{
int pn; //虚页号
int pfn; //实页号
int times;
//struct Page *next; //指向下一个页面
};
int count,k,i,j,flag,call[N];
struct Page MemPage[RealPage];
void output()
{
printf("\n\n-------------内存页面情况为-------------------\n");
printf("调度顺序为:");
int p;
for(p=0;p<N;p++)
printf("%d ",call[p]);
printf("\n");
for(k=0;k<RealPage;k++)
printf("序号:%d 虚页号:%d 实页号:%d Time:%d count:%d\n",k,MemPage[k].pn,MemPage[k].pfn,MemPage[k].times,count);
}
int main()
{
count = 0; //替换计数器
int init_t;
for(init_t=0;init_t<RealPage;init_t++)
//MemPage[init_t].pfn = -1;
randomize();
printf("调度顺序为:");
for(i=0;i<N;i++)
{
call[i] = rand()%10;
printf("%d ",call[i]);
}
//开始调度了
for(i=0;i<N;i++)
{
flag = 1;
int m;
for(m=0;m<RealPage && MemPage[m].pn!=call[i];m++)
{
if(MemPage[m].pfn == 0)
{
MemPage[m].pfn = 3478 - m*79;
MemPage[m].times = 1;
MemPage[m].pn = call[i];
count ++;
break;
}
}
//output();
for(j=0;j<4 && flag!=0;j++)
{
if(call[i] == MemPage[j].pn)
{
flag = 0;
break;
}
//在实页中找不到此页,用LRU算法进行替换
else
{
if(j == RealPage-1) //表示全都比较一遍了,还是没找到相同的页,进行替换
{
int t1,t2,temp;
for(t1=0;t1<RealPage;t1++) //算出在内存中时间最长者,将其替出来
{
for(t2=t1+1;t2<RealPage;t2++)
if(MemPage[t1].times > MemPage[t2].times)
temp = t1;
else
temp = t2;
}
MemPage[temp].pn = call[i]; //替换
MemPage[temp].times = 1; //时间重新开始计时
count ++;
}
}
}
int r;
for(r=0;r<RealPage;r++)
MemPage[r].times ++;
int n = 755599998;
while(n--);
output();
}
printf("\n 缺页率为:%f\n\n",(float)count/10);
return 0;
}
分享到:
相关推荐
c语言,运行成功,比较基础,模拟存储管理(页面调度),页面淘汰算法采用先进先出(FIFO)
C语言编写的请求分页调度的源代码。 首先输入页号和辅存地址;例如: 0 2 1 5 2 10 3 15 4 20 等等,辅存地址不要重复,输入 -1 0即可终止输入; 然后输入主存块号,-1结束。例如:3 8 10即意味着3个主存块。 然后...
模拟实现页面调度算法--操作系统课设(含源码和设计文档),模拟实现FIFO 和LRU的页面调度算法程序,C语言做的,还包含了设计文档……
实现功能: 1、模拟分页式存储管理中硬件的士转换和产生缺页中断 2、用先进先出(FIFO)页面调度算法处理缺页中断 3、用最近最少用(LRU)页面调度算法处理缺页中断
3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。 4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。 5、通过给出特殊的页面访问顺序,分配不同的物理块...
第四章 实验四模拟先进先出(FIFO)页面置换算法置换策略:总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。使用数组来模拟先进先出(FIF
使用rand()函数随机产生页面号,用数组装入页面号,模拟页面调入内存中发生页面置换的过程。 整个过程,都是使用数组来实现每个算法,模拟队列,模拟堆栈的功能,实现每一个置换算法。 页面置换算法 最佳置换算法...
3. 本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。 4. 两人一组,每组交一份设计报告,包含源代码。
本实验报告里有想对应的实验二 批处理系统的作业调度、实验三 进程调度模拟程序、实验四 生产者――消费者问题算法的实现、实验五 银行家算法的实现等几个实验的报告书以及相应的程序代码。全部都是用c实现的,很...
编写允许进程并行执行的进程调度程序,在常用的进程(作业)调度算法:先来先服务算法、短作业优先算法、最高响应比优先算法、高优先权优先算法等调度算法中至少选择三种调度算法进行模拟,并输出平均周转时间和平均...
设计要求: 1)进程调度算法包括:时间片轮转法,短...3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。
模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。 二. 实验目的 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的...
题一:银行家算法 题二:可变分区存储管理系统模拟 题三:进程调度算法 题四:页面调度算法 c语言版 带设计框图和注释 结果截图 含文档及.cpp文件
操作系统实验,模拟虚拟存储器,包括缺页中断处理
包括页面置换算法模拟,多道批处理作业调度模拟,银行家算法,希望对大家有用。
页面置换算法是虚拟存储管理实现的关键,通过本次试验理解内存页面调度的机制,在模拟实现FIFO、LRU等经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。将不同的置换算法...
操作系统(OS)/页式虚存的模拟实现 /C++ xp 下telnet 用linux 的G++
利用键盘输入本模拟系统的物理块的大小...5、输入分配给本作业的块数,模拟作业执行的逻辑地址转换成页面调度次序; 6、分别采用OPT、FIFO、LRU置换算法,利用堆栈结构完成页面置换;记录被换出的页面和新换入的页面。
设计目的 用C语言实现最近最久未使用(LRU)置换算法。 了解内存分页管理策略 掌握调页策略 掌握一般常用的调度算法 选取调度算法中的典型算法,模拟实现
本程序采用C语言实现LRU算法页面调度模拟以及仿真。