// 页面置换算法.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;
}
操作系统之——页面置换算法C语言实现
最新推荐文章于 2025-03-23 23:34:08 发布