📄 fifo.cpp
字号:
#include <iostream>
#include <string>
#include <queue>
using namespace std;
#include "fifo.h"
fifo::fifo(int seconds_per_page):simulator(seconds_per_page){}
void fifo::simulate(string file){
loadworkload(file);
queue<event> waiting;
event et;
int count=0;
int jobnum=0;
int totaltime=0;
int time=workload.front().arrival_time();
cout<<"FIFO Simulation :"<<endl;
cout<<endl;
while(true)
{
count++;
while(workload.size()!=0&&workload.front().arrival_time()==count)
{
et=event(workload.front().getjob(),time);
totaltime=totaltime+time-workload.front().arrival_time();
time=time+workload.front().getjob().getnumpages()*this->seconds_per_page;
cout<<" Arriving :"<<workload.front().getjob()<<" at "<<workload.front().arrival_time()<<" seconds"<<endl;
workload.pop();
waiting.push(et);
jobnum++;
if(workload.size()==0||workload.front().arrival_time()!=count)
break;
}
while(waiting.size()!=0&&waiting.front().arrival_time()==count)
{
cout<<" Servicing :"<<waiting.front().getjob()<<" at "<<waiting.front().arrival_time()<<" seconds."<<endl;
waiting.pop();
if(waiting.size()==0||waiting.front().arrival_time()!=count)
break;
}
if(workload.size()==0&&waiting.size()==0) //error
{
break;
}
}
cout<<endl;
cout<<" Total jobs: "<<jobnum<<endl;
cout<<" Aggregate latency: "<<totaltime<<" seconds"<<endl;
cout<<" Mean latency: "<<(float)totaltime/jobnum<<" seconds"<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -