`
yunchow
  • 浏览: 318075 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

C语言模拟页面调度过程

阅读更多
#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;
}
分享到:
评论
1 楼 mikeandmore 2009-05-05  
有点土。。。
用lru/arc吧。。。。

相关推荐

    操作系统c语言模拟页面调度实验(存储管理实验)

    c语言,运行成功,比较基础,模拟存储管理(页面调度),页面淘汰算法采用先进先出(FIFO)

    请求分页调度C语言模拟实现源代码

    C语言编写的请求分页调度的源代码。 首先输入页号和辅存地址;例如: 0 2 1 5 2 10 3 15 4 20 等等,辅存地址不要重复,输入 -1 0即可终止输入; 然后输入主存块号,-1结束。例如:3 8 10即意味着3个主存块。 然后...

    模拟实现页面调度算法--操作系统课设(含源码和设计文档)

    模拟实现页面调度算法--操作系统课设(含源码和设计文档),模拟实现FIFO 和LRU的页面调度算法程序,C语言做的,还包含了设计文档……

    用FIFO和LRU算法处理缺页中断(C语言)

    实现功能: 1、模拟分页式存储管理中硬件的士转换和产生缺页中断 2、用先进先出(FIFO)页面调度算法处理缺页中断 3、用最近最少用(LRU)页面调度算法处理缺页中断

    编写程序实现虚拟存储管理中OPT,FIFO,LRU页面置换算法

    3、利用OPT,FIFO,LRU页面置换算法模拟页面置换过程并计算其缺页率。 4、每访问一个页面均需给出内存中的内容(内存中的页面号),若有淘汰还需给出淘汰的页面号。 5、通过给出特殊的页面访问顺序,分配不同的物理块...

    第4章-实验4-模拟先进先出(FIFO)页面置换算法1

    第四章 实验四模拟先进先出(FIFO)页面置换算法置换策略:总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。使用数组来模拟先进先出(FIF

    操作系统 C++ 页面置换算法(含实验报告)有opt,LRU,先进先出,时钟算法,改进的时钟算法等所有算法

    使用rand()函数随机产生页面号,用数组装入页面号,模拟页面调入内存中发生页面置换的过程。 整个过程,都是使用数组来实现每个算法,模拟队列,模拟堆栈的功能,实现每一个置换算法。 页面置换算法 最佳置换算法...

    时间片轮转法

    3. 本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。 4. 两人一组,每组交一份设计报告,包含源代码。

    操作系统实验指导书(用c语言实现了操作系统里的几个经典算法!)

    本实验报告里有想对应的实验二 批处理系统的作业调度、实验三 进程调度模拟程序、实验四 生产者――消费者问题算法的实现、实验五 银行家算法的实现等几个实验的报告书以及相应的程序代码。全部都是用c实现的,很...

    操作系统实训(源码+报告)

    编写允许进程并行执行的进程调度程序,在常用的进程(作业)调度算法:先来先服务算法、短作业优先算法、最高响应比优先算法、高优先权优先算法等调度算法中至少选择三种调度算法进行模拟,并输出平均周转时间和平均...

    实现处理机调度-三种调度算法

    设计要求: 1)进程调度算法包括:时间片轮转法,短...3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。

    虚拟存储器 操作系统 模拟分页式虚拟存储管理中硬件的地址转换和缺页中断

    模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。 二. 实验目的 在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的...

    c语言版操作系统课程设计

    题一:银行家算法 题二:可变分区存储管理系统模拟 题三:进程调度算法 题四:页面调度算法 c语言版 带设计框图和注释 结果截图 含文档及.cpp文件

    操作系统实验_虚拟存储器

    操作系统实验,模拟虚拟存储器,包括缺页中断处理

    计算机操作系统 c语言编写

    包括页面置换算法模拟,多道批处理作业调度模拟,银行家算法,希望对大家有用。

    内存页面置换C++源代码

    页面置换算法是虚拟存储管理实现的关键,通过本次试验理解内存页面调度的机制,在模拟实现FIFO、LRU等经典页面置换算法的基础上,比较各种置换算法的效率及优缺点,从而了解虚拟存储实现的过程。将不同的置换算法...

    操作系统(OS)/页式虚存的模拟实现 /C++

    操作系统(OS)/页式虚存的模拟实现 /C++ xp 下telnet 用linux 的G++

    请求分页式存储管理的地址转换过程实现:

    利用键盘输入本模拟系统的物理块的大小...5、输入分配给本作业的块数,模拟作业执行的逻辑地址转换成页面调度次序; 6、分别采用OPT、FIFO、LRU置换算法,利用堆栈结构完成页面置换;记录被换出的页面和新换入的页面。

    页面置换算法

    设计目的 用C语言实现最近最久未使用(LRU)置换算法。 了解内存分页管理策略 掌握调页策略 掌握一般常用的调度算法 选取调度算法中的典型算法,模拟实现

    仿真LRU算法

    本程序采用C语言实现LRU算法页面调度模拟以及仿真。

Global site tag (gtag.js) - Google Analytics