?? 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 + -