#include <iostream>
#include <vector>
#include<iostream>
#include "FIFO.h"
#include <fstream>
#include<conio.h>
using namespace std;
typedef vector<Page> LISTPAGE;
typedef vector<int> USEPAGE;
LISTPAGE pages;
USEPAGE usePageNumList;
ofstream ofs("F:\\coodblock\\Test\\record.txt",ios::app);
void FIFO::init()
{
if(!ofs) return;
//初始化count
count = 0;
cout << "请输入分配的内存块数:";
cin >> PRO_MEMORY;
ofs << "请输入分配的内存块数:" << PRO_MEMORY << "\n";
cout << "请输入页面队列的长度:";
cin >> length;
cout << "请输入页面使用列表,以空格分开:";
ofs << "请输入页面使用列表,以空格分开:";
int da;
for (int i = 0; i < length; i++)
{
cin >> da;
usePageNumList.push_back(da);
ofs << da << " ";
}
ofs << "\n页面置换过程如下:\n";
for (int j = 0; j < PRO_MEMORY; j++)
{
Page *p = new Page(-1);
pages.push_back(*p);
}
}
/**
* 显示当前内存中保留的的页面
*/
void FIFO::display()
{
cout << "当前内存保留的页面是:";
ofs << "当前内存保留的页面是:";
for (int i = 0; i < pages.size(); i++)
{
cout << pages[i].getId() << " ";
ofs << pages[i].getId() << " ";
}
ofs << "\n";
cout << endl;
}
bool FIFO::search(int pageId)
{
for (int i = 0; i < pages.size(); i++)
{
if (pages[i].getId() == pageId)
return true;
}
return false;
}
void FIFO::replace(int pageId)
{
//置换在内存中呆的时间最久的页面
int outPageId = -1;
outPageId = pages[countOldPoint].getId();
pages[countOldPoint].setId(pageId);
cout << "页号ID:" << pageId << "正在放入内存,页号ID:" << outPageId << "被替换出去" << endl;
ofs << "页号ID:" << pageId << "正在放入内存,页号ID:" << outPageId << "被替换出去\n";
}
void FIFO::running()
{
for (int i = 0; i < length; i++)
{
countOldPoint = countOldPoint % PRO_MEMORY;
int inPageId = usePageNumList[i];
int key = getch();
if(key==13){
if (search(inPageId))
{
cout << "内存中有ID为" << inPageId << ",这个页面不能置换" << endl;
ofs << "内存中有ID为" << inPageId << ",这个页面不能置换\n";
}
else if (count < PRO_MEMORY) //有空闲内存页
{
pages[count++].setId(inPageId);
cout << "页号ID:" << inPageId << "正在放入内存中" << endl;
ofs << "页号ID:" << inPageId << "正在放入内存中\n";
}
else //替换
{
replace(inPageId);
lackTime++;
countOldPoint++;
}
display();
}else{
i--;
cout<<"请按enter键"<<endl;
}
}
cout << "缺页次数为:" << lackTime << ",缺页率为:" << (float) lackTime / (length - PRO_MEMORY) << endl;
ofs << "缺页次数为:" << lackTime << ",缺页率为:" << (float) lackTime / (length - PRO_MEMORY) << "\n";
ofs << "============================================================";
ofs.close();
}
FIFO.rar_C++
版权申诉
122 浏览量
2022-09-23
18:10:20
上传
评论
收藏 1KB RAR 举报
寒泊
- 粉丝: 75
- 资源: 1万+
最新资源
- 聊天系统(java+applet).zip
- 毕业设计:基于SSM的mysql-高校学生请假管理系统(源码 + 数据库 + 说明文档)
- 博客系统(struts+hibernate+spring).rar
- c语言学生成绩管理系统源码.zip
- 毕业设计:基于SSM的mysql-网约车用户服务平台(源码 + 数据库 + 说明文档)
- 内容管理系统(hibernate3+struts2+spring2)130224.rar
- 基于Java的班级管理系统课程设计源码
- 内容管理系统(hibernate3+struts2+spring2).rar
- 路由器刷breed Web控制台助手v5.8版本.rar
- Java 在 JEP 12 提供的特性预览
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0