-
大小: 1KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-28
- 語言: 其他
- 標簽: Printer??Simulation:??FIFO??
資源簡介
Experiment 1 Printer Simulation: FIFO(2 hours), fifo.cpp,fifo.h

代碼片段和文件信息
#include?“fifo.h“
#include?
using?namespace?std;
fifo::fifo(int?seconds_per_page):simulator(seconds_per_page){}
void?fifo::simulate(string?file){
????loadworkload(file);
????queue?waiting;
????queue?servicing;
????int?timer?=?0;//現(xiàn)在的時間
????int?service_time?=?workload.front().arrival_time();//打印時的時間
????int?sz?=?workload.size();
????float?aggregate_latency?=?0;
????int?eventNum?=?0;
?????cout<<“FIFO?Simulation“<
?????while(!workload.empty()){
?????????for(?;eventNum??????????????while(true){
?????????????????if(!workload.empty()){
?//當timer等于workload中頂端元素的wait_until時,往waiting里壓入even,在屏幕上打印出這項任務到達的信息。
?//判斷serving是否為空,空的話壓入workload頂端元素even,并打印出這項任務正在打印的信息
?????????????????????if(timer?==?workload.front().arrival_time()){
?????????????????????????waiting.push(workload.front());
?????????????????????????cout?<<“Arriving:??“?< ???????????????????????????<<“?at?“?<?????????????????????????if(servicing.empty()){
???????????????????????????servicing.push(workload.front());
???????????????????????????cout?<<“Servicing:??“?<????????????????????????????<“?at?“?<?????????????????????????}
?????????????????????????workload.pop();
?????????????????????}else
?????????????????????????break;
?????????????????}else
?????????????????????break;
?????????????}
?????????????if(waiting.empty()){
?????????????????continue;
?????????????}
?//判斷serving是否為空,空的話,waiting彈出頂端元素。Serving壓入waiting的頂端元素,并打印這項任務正在打印的信息,
?//并且計算aggregate_latency?+=?service_time?-?waiting.front().arrival_time();
?????????????if(servicing.empty()){
?????????????????waiting.pop();
?????????????????servicing.push(waiting.front());
?????????????????cout?<<“Servicing:??“?<???????????????????<“?at?“?<?????????????????aggregate_latency?+=?service_time?-?waiting.front().arrival_time();
?????????????}
?//判斷timer?==?servicing.front().getjob().getnumpages()?*seconds_per_page?+service_time?-?1?
?//如果是的話,證明上一項even已經(jīng)處于結束階段,打印時間+1,并且彈出serving的頂端元素。
?????????????if(timer?==?servicing.front().getjob().getnumpages()?*?seconds_per_page?+
?????????????????service_time?-?1){
?????????????????service_time?=?timer?+?1;
?????????????????servicing.pop();
?????????????????eventNum++;
?????????????}
?????????}
?????}
?????cout< ?????cout<<“Aggregate?latency:?“?< ?????cout<<“Mean?latency:?“<}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2879??2017-06-19?16:05??實驗源代碼1\fifo.cpp
?????文件????????324??2011-05-11?23:10??實驗源代碼1\fifo.h
?????目錄??????????0??2017-06-23?21:50??實驗源代碼1
-----------?---------??----------?-----??----
?????????????????3203????????????????????3
- 上一篇:清理CREO_ProE舊版本文件
- 下一篇:pulist.exe
評論
共有 條評論