⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fifo.cpp

📁 卡内基梅隆大学SSD5数据结构的实验内容包括实验1-5的所有要提交的文件
💻 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 + -