Files
C-Plus-Plus/dd/dca/class_f_c_f_s.html
2022-09-02 14:36:25 +00:00

405 lines
35 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: FCFS&lt; S, T, E &gt; Class Template Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">Algorithms_in_C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('dd/dca/class_f_c_f_s.html','../../'); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="../../de/d8d/class_f_c_f_s-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">FCFS&lt; S, T, E &gt; Class Template Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class which implements the <a class="el" href="../../dd/dca/class_f_c_f_s.html" title="Class which implements the FCFS scheduling algorithm.">FCFS</a> scheduling algorithm.
<a href="../../dd/dca/class_f_c_f_s.html#details">More...</a></p>
<div class="dynheader">
Collaboration diagram for FCFS&lt; S, T, E &gt;:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../df/dbb/class_f_c_f_s__coll__graph.svg" width="100%" height="479"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<center><span class="legend">[<a target="top" href="../../graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8fbfe4d85f7576b4a7aade07d29fbd69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dca/class_f_c_f_s.html#a8fbfe4d85f7576b4a7aade07d29fbd69">addProcess</a> (S id, T arrival, E burst)</td></tr>
<tr class="memdesc:a8fbfe4d85f7576b4a7aade07d29fbd69"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the process to the ready queue if it isn't already there. <a href="../../dd/dca/class_f_c_f_s.html#a8fbfe4d85f7576b4a7aade07d29fbd69">More...</a><br /></td></tr>
<tr class="separator:a8fbfe4d85f7576b4a7aade07d29fbd69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa25dbe30ba9930b5a7c1a6d11758bd91"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">vector</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt; S, T, E, double, double, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dca/class_f_c_f_s.html#aa25dbe30ba9930b5a7c1a6d11758bd91">scheduleForFcfs</a> ()</td></tr>
<tr class="memdesc:aa25dbe30ba9930b5a7c1a6d11758bd91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Algorithm for scheduling CPU processes according to the First Come First Serve(FCFS) scheduling algorithm. <a href="../../dd/dca/class_f_c_f_s.html#aa25dbe30ba9930b5a7c1a6d11758bd91">More...</a><br /></td></tr>
<tr class="separator:aa25dbe30ba9930b5a7c1a6d11758bd91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb361a612b18bb189aa6d3c49288b793"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dca/class_f_c_f_s.html#abb361a612b18bb189aa6d3c49288b793">printResult</a> ()</td></tr>
<tr class="memdesc:abb361a612b18bb189aa6d3c49288b793"><td class="mdescLeft">&#160;</td><td class="mdescRight">Utility function for printing the status of each process after execution. <a href="../../dd/dca/class_f_c_f_s.html#abb361a612b18bb189aa6d3c49288b793">More...</a><br /></td></tr>
<tr class="separator:abb361a612b18bb189aa6d3c49288b793"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:af2594e22a867b308e027623940193d46"><td class="memItemLeft" align="right" valign="top"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue.html">priority_queue</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt; S, T, E, double, double, double &gt;, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">vector</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt; S, T, E, double, double, double &gt; &gt;, <a class="el" href="../../de/d4a/class_compare.html">Compare</a>&lt; S, T, E &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dca/class_f_c_f_s.html#af2594e22a867b308e027623940193d46">schedule</a></td></tr>
<tr class="separator:af2594e22a867b308e027623940193d46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3abd3d9f23437599ff9a2131c8b631f"><td class="memItemLeft" align="right" valign="top"><a id="ac3abd3d9f23437599ff9a2131c8b631f" name="ac3abd3d9f23437599ff9a2131c8b631f"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">vector</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt; S, T, E, double, double, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>result</b></td></tr>
<tr class="separator:ac3abd3d9f23437599ff9a2131c8b631f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86e9908699e2ff89557c01f1a4b47d83"><td class="memItemLeft" align="right" valign="top"><a id="a86e9908699e2ff89557c01f1a4b47d83" name="a86e9908699e2ff89557c01f1a4b47d83"></a>
<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/unordered_set.html">unordered_set</a>&lt; S &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>idList</b></td></tr>
<tr class="separator:a86e9908699e2ff89557c01f1a4b47d83"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><div class="compoundTemplParams">template&lt;typename S, typename T, typename E&gt;<br />
class FCFS&lt; S, T, E &gt;</div><p >Class which implements the <a class="el" href="../../dd/dca/class_f_c_f_s.html" title="Class which implements the FCFS scheduling algorithm.">FCFS</a> scheduling algorithm. </p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
<table class="tparams">
<tr><td class="paramname">S</td><td>Data type of Process ID </td></tr>
<tr><td class="paramname">T</td><td>Data type of Arrival time </td></tr>
<tr><td class="paramname">E</td><td>Data type of Burst time </td></tr>
</table>
</dd>
</dl>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a8fbfe4d85f7576b4a7aade07d29fbd69" name="a8fbfe4d85f7576b4a7aade07d29fbd69"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fbfe4d85f7576b4a7aade07d29fbd69">&#9670;&#160;</a></span>addProcess()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename S , typename T , typename E &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>&lt; S, T, E &gt;::addProcess </td>
<td>(</td>
<td class="paramtype">S&#160;</td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">T&#160;</td>
<td class="paramname"><em>arrival</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">E&#160;</td>
<td class="paramname"><em>burst</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds the process to the ready queue if it isn't already there. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">id</td><td>Process ID </td></tr>
<tr><td class="paramname">arrival</td><td>Arrival time of the process </td></tr>
<tr><td class="paramname">burst</td><td>Burst time of the process </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 129</span> {</div>
<div class="line"><span class="lineno"> 130</span> <span class="comment">// Add if a process with process ID as id is not found in idList.</span></div>
<div class="line"><span class="lineno"> 131</span> <span class="keywordflow">if</span> (idList.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/unordered_set/find.html">find</a>(<span class="keywordtype">id</span>) == idList.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/unordered_set/end.html">end</a>()) {</div>
<div class="line"><span class="lineno"> 132</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple&lt;S, T, E, double, double, double&gt;</a> t =</div>
<div class="line"><span class="lineno"> 133</span> <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">make_tuple</a>(<span class="keywordtype">id</span>, arrival, burst, 0, 0, 0);</div>
<div class="line"><span class="lineno"> 134</span> <a class="code hl_variable" href="../../dd/dca/class_f_c_f_s.html#af2594e22a867b308e027623940193d46">schedule</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/push.html">push</a>(t);</div>
<div class="line"><span class="lineno"> 135</span> idList.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/unordered_set/insert.html">insert</a>(<span class="keywordtype">id</span>);</div>
<div class="line"><span class="lineno"> 136</span> }</div>
<div class="line"><span class="lineno"> 137</span> }</div>
<div class="ttc" id="aclass_f_c_f_s_html_af2594e22a867b308e027623940193d46"><div class="ttname"><a href="../../dd/dca/class_f_c_f_s.html#af2594e22a867b308e027623940193d46">FCFS::schedule</a></div><div class="ttdeci">priority_queue&lt; tuple&lt; S, T, E, double, double, double &gt;, vector&lt; tuple&lt; S, T, E, double, double, double &gt; &gt;, Compare&lt; S, T, E &gt; &gt; schedule</div><div class="ttdef"><b>Definition:</b> fcfs_scheduling.cpp:111</div></div>
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/end.html">std::unordered_set::end</a></div><div class="ttdeci">T end(T... args)</div></div>
<div class="ttc" id="afind_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/find.html">std::unordered_set::find</a></div><div class="ttdeci">T find(T... args)</div></div>
<div class="ttc" id="ainsert_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/unordered_set/insert.html">std::unordered_set::insert</a></div><div class="ttdeci">T insert(T... args)</div></div>
<div class="ttc" id="amake_tuple_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/tuple/make_tuple.html">std::make_tuple</a></div><div class="ttdeci">T make_tuple(T... args)</div></div>
<div class="ttc" id="apush_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/priority_queue/push.html">std::priority_queue::push</a></div><div class="ttdeci">T push(T... args)</div></div>
<div class="ttc" id="atuple_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/tuple.html">std::tuple</a></div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../dd/dca/class_f_c_f_s_a8fbfe4d85f7576b4a7aade07d29fbd69_cgraph.svg" width="352" height="230"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="abb361a612b18bb189aa6d3c49288b793" name="abb361a612b18bb189aa6d3c49288b793"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb361a612b18bb189aa6d3c49288b793">&#9670;&#160;</a></span>printResult()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename S , typename T , typename E &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>&lt; S, T, E &gt;::printResult </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Utility function for printing the status of each process after execution. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 191</span> {</div>
<div class="line"><span class="lineno"> 192</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">cout</a> &lt;&lt; <span class="stringliteral">&quot;Status of all the proceses post completion is as follows:&quot;</span></div>
<div class="line"><span class="lineno"> 193</span> &lt;&lt; <a class="code hl_define" href="../../d7/d35/matrix__exponentiation_8cpp.html#a600eaf353befc174637855795f12d258">endl</a>;</div>
<div class="line"><span class="lineno"> 194</span> </div>
<div class="line"><span class="lineno"> 195</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">cout</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a> &lt;&lt; <span class="stringliteral">&quot;Process ID&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 196</span> &lt;&lt; <span class="stringliteral">&quot;Arrival Time&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a> &lt;&lt; <span class="stringliteral">&quot;Burst Time&quot;</span></div>
<div class="line"><span class="lineno"> 197</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a> &lt;&lt; <span class="stringliteral">&quot;Completion Time&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17)</div>
<div class="line"><span class="lineno"> 198</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a> &lt;&lt; <span class="stringliteral">&quot;Turnaround Time&quot;</span> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 199</span> &lt;&lt; <span class="stringliteral">&quot;Waiting Time&quot;</span> &lt;&lt; <a class="code hl_define" href="../../d7/d35/matrix__exponentiation_8cpp.html#a600eaf353befc174637855795f12d258">endl</a>;</div>
<div class="line"><span class="lineno"> 200</span> </div>
<div class="line"><span class="lineno"> 201</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i{}; i &lt; result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/size.html">size</a>(); i++) {</div>
<div class="line"><span class="lineno"> 202</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">cout</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setprecision.html">std::setprecision</a>(2) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/fixed.html">std::fixed</a> &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 203</span> &lt;&lt; get&lt;0&gt;(result[i]) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 204</span> &lt;&lt; get&lt;1&gt;(result[i]) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 205</span> &lt;&lt; get&lt;2&gt;(result[i]) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 206</span> &lt;&lt; get&lt;3&gt;(result[i]) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 207</span> &lt;&lt; get&lt;4&gt;(result[i]) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a>(17) &lt;&lt; <a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/manip/left.html">left</a></div>
<div class="line"><span class="lineno"> 208</span> &lt;&lt; get&lt;5&gt;(result[i]) &lt;&lt; <a class="code hl_define" href="../../d7/d35/matrix__exponentiation_8cpp.html#a600eaf353befc174637855795f12d258">endl</a>;</div>
<div class="line"><span class="lineno"> 209</span> }</div>
<div class="line"><span class="lineno"> 210</span> }</div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="afixed_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/fixed.html">std::fixed</a></div><div class="ttdeci">T fixed(T... args)</div></div>
<div class="ttc" id="aleft_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/left.html">std::left</a></div><div class="ttdeci">T left(T... args)</div></div>
<div class="ttc" id="amatrix__exponentiation_8cpp_html_a600eaf353befc174637855795f12d258"><div class="ttname"><a href="../../d7/d35/matrix__exponentiation_8cpp.html#a600eaf353befc174637855795f12d258">endl</a></div><div class="ttdeci">#define endl</div><div class="ttdef"><b>Definition:</b> matrix_exponentiation.cpp:36</div></div>
<div class="ttc" id="asetprecision_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/setprecision.html">std::setprecision</a></div><div class="ttdeci">T setprecision(T... args)</div></div>
<div class="ttc" id="asetw_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/manip/setw.html">std::setw</a></div><div class="ttdeci">T setw(T... args)</div></div>
<div class="ttc" id="asize_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/size.html">std::vector::size</a></div><div class="ttdeci">T size(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../dd/dca/class_f_c_f_s_abb361a612b18bb189aa6d3c49288b793_cgraph.svg" width="306" height="135"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="aa25dbe30ba9930b5a7c1a6d11758bd91" name="aa25dbe30ba9930b5a7c1a6d11758bd91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa25dbe30ba9930b5a7c1a6d11758bd91">&#9670;&#160;</a></span>scheduleForFcfs()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename S , typename T , typename E &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">vector</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt; S, T, E, double, double, double &gt; &gt; <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>&lt; S, T, E &gt;::scheduleForFcfs </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Algorithm for scheduling CPU processes according to the First Come First Serve(FCFS) scheduling algorithm. </p>
<p ><a class="el" href="../../dd/dca/class_f_c_f_s.html" title="Class which implements the FCFS scheduling algorithm.">FCFS</a> is a non-preemptive algorithm in which the process which arrives first gets executed first. If two or more processes arrive together then the process with smaller process ID runs first (each process has a unique proces ID).</p>
<p >I used a min priority queue of tuples to accomplish this task. The processes are ordered by their arrival times. If arrival times of some processes are equal, then they are ordered by their process ID.</p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 154</span> {</div>
<div class="line"><span class="lineno"> 155</span> <span class="comment">// Variable to keep track of time elapsed so far</span></div>
<div class="line"><span class="lineno"> 156</span> <span class="keywordtype">double</span> timeElapsed = 0;</div>
<div class="line"><span class="lineno"> 157</span> </div>
<div class="line"><span class="lineno"> 158</span> <span class="keywordflow">while</span> (!<a class="code hl_variable" href="../../dd/dca/class_f_c_f_s.html#af2594e22a867b308e027623940193d46">schedule</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/empty.html">empty</a>()) {</div>
<div class="line"><span class="lineno"> 159</span> <a class="code hl_classRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple&lt;S, T, E, double, double, double&gt;</a> cur = <a class="code hl_variable" href="../../dd/dca/class_f_c_f_s.html#af2594e22a867b308e027623940193d46">schedule</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/top.html">top</a>();</div>
<div class="line"><span class="lineno"> 160</span> </div>
<div class="line"><span class="lineno"> 161</span> <span class="comment">// If the current process arrived at time t2, the last process</span></div>
<div class="line"><span class="lineno"> 162</span> <span class="comment">// completed its execution at time t1, and t2 &gt; t1.</span></div>
<div class="line"><span class="lineno"> 163</span> <span class="keywordflow">if</span> (get&lt;1&gt;(cur) &gt; timeElapsed) {</div>
<div class="line"><span class="lineno"> 164</span> timeElapsed += get&lt;1&gt;(cur) - timeElapsed;</div>
<div class="line"><span class="lineno"> 165</span> }</div>
<div class="line"><span class="lineno"> 166</span> </div>
<div class="line"><span class="lineno"> 167</span> <span class="comment">// Add Burst time to time elapsed</span></div>
<div class="line"><span class="lineno"> 168</span> timeElapsed += get&lt;2&gt;(cur);</div>
<div class="line"><span class="lineno"> 169</span> </div>
<div class="line"><span class="lineno"> 170</span> <span class="comment">// Completion time of the current process will be same as time</span></div>
<div class="line"><span class="lineno"> 171</span> <span class="comment">// elapsed so far</span></div>
<div class="line"><span class="lineno"> 172</span> get&lt;3&gt;(cur) = timeElapsed;</div>
<div class="line"><span class="lineno"> 173</span> </div>
<div class="line"><span class="lineno"> 174</span> <span class="comment">// Turnaround time = Completion time - Arrival time</span></div>
<div class="line"><span class="lineno"> 175</span> get&lt;4&gt;(cur) = get&lt;3&gt;(cur) - get&lt;1&gt;(cur);</div>
<div class="line"><span class="lineno"> 176</span> </div>
<div class="line"><span class="lineno"> 177</span> <span class="comment">// Waiting time = Turnaround time - Burst time</span></div>
<div class="line"><span class="lineno"> 178</span> get&lt;5&gt;(cur) = get&lt;4&gt;(cur) - get&lt;2&gt;(cur);</div>
<div class="line"><span class="lineno"> 179</span> </div>
<div class="line"><span class="lineno"> 180</span> result.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(cur);</div>
<div class="line"><span class="lineno"> 181</span> <a class="code hl_variable" href="../../dd/dca/class_f_c_f_s.html#af2594e22a867b308e027623940193d46">schedule</a>.<a class="code hl_functionRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue/pop.html">pop</a>();</div>
<div class="line"><span class="lineno"> 182</span> }</div>
<div class="line"><span class="lineno"> 183</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><span class="lineno"> 184</span> }</div>
<div class="ttc" id="aempty_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/priority_queue/empty.html">std::priority_queue::empty</a></div><div class="ttdeci">T empty(T... args)</div></div>
<div class="ttc" id="apop_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/priority_queue/pop.html">std::priority_queue::pop</a></div><div class="ttdeci">T pop(T... args)</div></div>
<div class="ttc" id="apush_back_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">std::vector::push_back</a></div><div class="ttdeci">T push_back(T... args)</div></div>
<div class="ttc" id="atop_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/priority_queue/top.html">std::priority_queue::top</a></div><div class="ttdeci">T top(T... args)</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../dd/dca/class_f_c_f_s_aa25dbe30ba9930b5a7c1a6d11758bd91_cgraph.svg" width="380" height="151"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="af2594e22a867b308e027623940193d46" name="af2594e22a867b308e027623940193d46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af2594e22a867b308e027623940193d46">&#9670;&#160;</a></span>schedule</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename S , typename T , typename E &gt; </div>
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/priority_queue.html">priority_queue</a>&lt;<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt;S, T, E, double, double, double&gt;, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/vector.html">vector</a>&lt;<a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/utility/tuple.html">tuple</a>&lt;S, T, E, double, double, double&gt; &gt;, <a class="el" href="../../de/d4a/class_compare.html">Compare</a>&lt;S, T, E&gt; &gt; <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>&lt; S, T, E &gt;::schedule</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p >Priority queue of schedules(stored as tuples) of processes. In each tuple 1st element: Process ID 2nd element: Arrival Time 3rd element: Burst time 4th element: Completion time 5th element: Turnaround time 6th element: Waiting time </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>cpu_scheduling_algorithms/<a class="el" href="../../df/d47/fcfs__scheduling_8cpp.html">fcfs_scheduling.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5 </li>
</ul>
</div>
</body>
</html>