操作系统之——页面置换算法C语言实现

// 页面置换算法.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
#include "string.h"


#define MEMORY_BLOCKS 20	//内存物理总块数
#define PROGRAM_PAGES 50	//程序分页数上限
#define PAGE_USE_LONGTH 100	//页面走向长度最大值
#define FIFO 1	//先进先出置换
#define LRU 2	//最久未用置换


int memory_blocks=0;	//分配内存物理块数
int program_pages=0;	//程序分页数

int memory_allocation[MEMORY_BLOCKS];	//内存分配情况

struct VISIT {	//访问字段
	int load_time;	//装载时间
	int frequency;	//使用频率的顺序,0为最高
};

struct PAGR_LIST {	//页表
	int page_num;	//页号
	int block_num;	//物理块号
	bool state;		//状态位
	bool modify;	//修改位
	struct VISIT visit;	//访问字段
	int disk;	//外存地址
}page_list[PROGRAM_PAGES];


int create_rand(int a, int b);
void init(int m, int p);
void page_adjust(int p);
bool allocation_once(int p, int f);
int change_page(int f);
void huanhang(int l);
void show_me();
void simulation(int l, int f);
void menu();


int create_rand(int a, int b) {		//生成随机数
	int r;
	r = rand() % (b - a+1) + a;
	//printf("%d",r);
	return r;
}

void init(int m,int p) {	
	memory_blocks = m;
	program_pages = p;
	for (int i = 0; i < memory_blocks ; i++) {
		memory_allocation[i] = -1;
	}
	for (int i = 0; i < program_pages ; i++) {
		page_list[i].page_num = i;
		page_list[i].block_num = -1;
		page_list[i].state = false;
		page_list[i].modify = false;
		page_list[i].visit.load_time = 0;
		page_list[i].visit.frequency = -1;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值