资源简介
实验目的及基本要求
设计和实现最佳置换算法、随机置换算法、先进先出置换算法、最近最久未使用置换算法、简单Clock置换算法及改进型Clock置换算法;通过支持页面访问序列随机发生实现有关算法的测试及性能比较。

代码片段和文件信息
#include
#include
#include
using namespace std;
int const InsideCount = 5;//内存中存放的页面数
int count = 0;
int Inside[InsideCount];
int const PageCount =10;//总的页面数
int Page[PageCount];
int insert = 0;//先到先出置换算法fcfo中表示 当内存满的时候,新进入的页号放的位置
int suiji = 0; //随机置换算法randchange 当内存满的时候,新进入的页号放的位置
int state[InsideCount];//clock置换算法中,内存中的每个页面号对应的状态
int state2[InsideCount][2];// 二维数组,第一行第一列为访问位,第一行的第二列为修改位
double lost = 0.0;
//检测页号是否在内存中
bool isInside(int num){
for(int i = 0; i < InsideCount; i++){
if(Inside[i] == Page[num]){
state[i] = 1;
return true;
}
}
return false;
}
//判断页面是否已经被修改
bool change(){
if((rand()%2+1) == 1 ){
cout<<“该页面被修改“< return true;
}
else
return false;
}
//用于改进型clock置换算法,检测页号是否在内存中并把访问位和修改位置1
bool isInside2(int num){
for(int i = 0; i < InsideCount; i++){
if(Inside[i] == Page[num]){
if(change()){
state2[i][0] = 1;
state2[i][1] = 1;
}
else{
state2[i][0] = 1;
}
return true;
}
}
return false;
}
//用于改进型clock置换算法,判断内存中第几个需要被置换
int whichpage(){
int j;
for(j=0; j < InsideCount;j++){
if(state2[j][0] == 0&&state2[j][1] == 0){
return j;
}
}
for(j=0; j < InsideCount;j++ ){
if(state2[j][0] == 0&&state2[j][1] == 1){
return j;
}
state2[j][0] = 0 ;
}
for(j=0; j < InsideCount;j++ ){
state2[j][0] = 0 ;
}
return whichpage();
}
//最佳置换算法(OPT)
void OPT(int num){
int max = 0; // 表示内存中的页号,下一次出现的距离
int maxchange; //表示内存中下次出现距离最大的页号在内存中的位置
int k;
if(isInside(num)){
cout<<“命中“< for(int i=0 ; i cout<<“物理块“< }
else
if(count == InsideCount){
lost++;
for(int j=0; j < InsideCount; j++){
for( k = num; k < PageCount;k++){
if(Inside[j] == Page[k])
break;
}
if( k > max){
max = k; //k表示在这个地方会再次出现给定页面
maxchange =j;//j 表示把 内存中第j个Inside中的页面从内存拿出,把新的页面放入
}
}
Inside[maxchange] = Page[num];
for(int i=0 ; i cout<<“物理块“< }
else{
Inside[count] = Page[num];
count++;
for(int i=0 ; i cout<<“物理块“< }
}
//随机置换算法
void RAND(int num){
if(isInside(num)){
cout<<“命中“< for(int i=0 ; i cout<<“物理块“< }
else
if(count == InsideCount){
lost++;
suiji = rand()%3;
Inside[suiji] = Page[num];
for(int i=0 ; i cout<<“物理块“< }
else{
Inside[count] = Page[num];
count++;
for(int i=0 ; i cout<<“物理块“< }
}
//先进现出置换算法(FIFO)
void FIFO(int num){
if(isInside(num)){
cout<<“命中“< for(int i=0 ; i cout<<“物理块“<
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-03-24 21:51 页面置换算法\
目录 0 2013-03-24 21:22 页面置换算法\Debug\
文件 202973 2013-03-24 21:22 页面置换算法\Debug\Page.obj
文件 548964 2013-03-24 21:22 页面置换算法\Debug\PageReplace.exe
文件 782216 2013-03-24 21:22 页面置换算法\Debug\PageReplace.ilk
文件 1991140 2013-03-24 20:28 页面置换算法\Debug\PageReplace.pch
文件 1090560 2013-03-24 21:22 页面置换算法\Debug\PageReplace.pdb
文件 66560 2013-03-24 21:22 页面置换算法\Debug\vc60.idb
文件 110592 2013-03-24 21:22 页面置换算法\Debug\vc60.pdb
文件 9007 2013-03-24 21:22 页面置换算法\Page.cpp
文件 4337 2013-03-24 21:51 页面置换算法\PageReplace.dsp
文件 530 2013-03-24 20:28 页面置换算法\PageReplace.dsw
文件 33792 2013-03-24 21:51 页面置换算法\PageReplace.ncb
文件 48640 2013-03-24 21:51 页面置换算法\PageReplace.opt
文件 1317 2013-03-24 21:22 页面置换算法\PageReplace.plg
相关资源
- 升腾Win终端系统升级方法新版.doc
- Uninstall_Cortana_WINCLIENT.CN.rar
- STM32基于rt_thread操作系统的SDHC卡文件
- 操作系统 LRU算法 实验报告 及 程序代
- [免费]车载CE6.0操作系统
- 分页系统模拟实验 操作系统 课程设
- 模拟段页式虚拟存储管理中地址转换
- 操作系统实验——虚存管理实验
- 广工操作系统实验
- 广东工业大学操作系统实验四文件系
- Bochs入门教程[操作系统第一步]
- 操作系统课程设计完整版
- 磁盘调度算法的模拟实现及对比
- 模拟一个文件管理系统
- 二级文件系统(操作系统)
- uCOS编译环境建立 BC45 TASM
- Linux 操作系统实验(全)
- 操作系统实验综合设计【附代码】
- 操作系统共享内存实验
- 操作系统循环首次适应算法
- 操作系统课程设计实现可变分区存储
- 基于GTK的Linux环境下的简易任务管理器
- 操作系统课程设计 二级文件管理系统
- 加快Windows XP操作系统开机速度
- 操作系统教程课后答案华中科技大学
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 嵌入式实时操作系统ucos-II 第二版 源
- 计算机操作系统课后_汤小丹_第四版
- 计算机操作系统(第四版)汤小丹课
评论
共有 条评论