Files
C-Plus-Plus/df/d47/fcfs__scheduling_8cpp.html
2025-07-09 10:53:16 +00:00

389 lines
30 KiB
HTML

<!-- HTML header for doxygen 1.12.0-->
<!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.14.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: cpu_scheduling_algorithms/fcfs_scheduling.cpp File Reference</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
<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>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@xpack-3rd-party/doxygen-awesome-css@2.2.0-1/doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">
DoxygenAwesomeDarkModeToggle.init()
</script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../cookie.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/javascript">
window.MathJax = {
options: {
ignoreHtmlClass: 'tex2jax_ignore',
processHtmlClass: 'tex2jax_process'
},
loader: {
load: ['[tex]/ams']
},
tex: {
macros: {},
packages: ['base','configmacros','ams']
}
};
</script>
<script type="text/javascript" id="MathJax-script" async="async" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../doxygen-awesome.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="projectlogo"><img alt="Logo" src="../../project_logo.png"/></td>
<td id="projectalign">
<div id="projectname">TheAlgorithms/C++<span id="projectnumber">&#160;1.0.0</span>
</div>
<div id="projectbrief">All the algorithms implemented in C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.14.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('../../',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
</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">
$(function(){initNavTree('df/d47/fcfs__scheduling_8cpp.html','../../',''); });
</script>
<div id="container">
<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="headertitle"><div class="title">fcfs_scheduling.cpp File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Implementation of <a class="el" href="../../dd/dca/class_f_c_f_s.html" title="Class which implements the FCFS scheduling algorithm.">FCFS</a> CPU scheduling algorithm.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;algorithm&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;cstdint&gt;</code><br />
<code>#include &lt;cstdlib&gt;</code><br />
<code>#include &lt;ctime&gt;</code><br />
<code>#include &lt;iomanip&gt;</code><br />
<code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;queue&gt;</code><br />
<code>#include &lt;unordered_set&gt;</code><br />
<code>#include &lt;vector&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for fcfs_scheduling.cpp:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" loading="lazy" frameborder="0" src="../../d4/d2f/fcfs__scheduling_8cpp__incl.svg" width="100%" height="394"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
</div>
<p><a href="../../df/d47/fcfs__scheduling_8cpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-nested-classes" class="groupheader"><a id="nested-classes" name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:Compare_3C_20S_2C_20T_2C_20E_20_3E" id="r_Compare_3C_20S_2C_20T_2C_20E_20_3E"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d4a/class_compare.html">Compare&lt; S, T, E &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Comparator class for priority queue. <a href="../../de/d4a/class_compare.html#details">More...</a><br /></td></tr>
<tr class="memitem:FCFS_3C_20S_2C_20T_2C_20E_20_3E" id="r_FCFS_3C_20S_2C_20T_2C_20E_20_3E"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS&lt; S, T, E &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">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><br /></td></tr>
<tr class="memitem:priority_5Fqueue_3C_20T_20_3E" id="r_priority_5Fqueue_3C_20T_20_3E"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/d1b/classpriority__queue.html">priority_queue&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL class. <a href="../../d1/d1b/classpriority__queue.html#details">More...</a><br /></td></tr>
<tr class="memitem:unordered_5Fset_3C_20K_20_3E" id="r_unordered_5Fset_3C_20K_20_3E"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d6d/classunordered__set.html">unordered_set&lt; K &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL class. <a href="../../d3/d6d/classunordered__set.html#details">More...</a><br /></td></tr>
<tr class="memitem:vector_3C_20T_20_3E" id="r_vector_3C_20T_20_3E"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d7/dfc/classvector.html">vector&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">STL class. <a href="../../d7/dfc/classvector.html#details">More...</a><br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-func-members" class="groupheader"><a id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a18920aa331faf4476b251c8cdb2c2bec" id="r_a18920aa331faf4476b251c8cdb2c2bec"><td class="memTemplParams" colspan="2">template&lt;typename S, typename T, typename E&gt; </td></tr>
<tr class="memitem:a18920aa331faf4476b251c8cdb2c2bec template"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a18920aa331faf4476b251c8cdb2c2bec">sortcol</a> (tuple&lt; S, T, E &gt; &amp;t1, tuple&lt; S, T, E &gt; &amp;t2)</td></tr>
<tr class="memdesc:a18920aa331faf4476b251c8cdb2c2bec"><td class="mdescLeft">&#160;</td><td class="mdescRight">Comparator function for sorting a vector. <br /></td></tr>
<tr class="memitem:a8f2b90cb64d63a7080965e66a05ccf86" id="r_a8f2b90cb64d63a7080965e66a05ccf86"><td class="memTemplParams" colspan="2">template&lt;typename S, typename T, typename E&gt; </td></tr>
<tr class="memitem:a8f2b90cb64d63a7080965e66a05ccf86 template"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d7/dfc/classvector.html">vector</a>&lt; tuple&lt; S, T, E, double, double, double &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8f2b90cb64d63a7080965e66a05ccf86">get_final_status</a> (<a class="el" href="../../d7/dfc/classvector.html">vector</a>&lt; tuple&lt; uint32_t, uint32_t, uint32_t &gt; &gt; input)</td></tr>
<tr class="memdesc:a8f2b90cb64d63a7080965e66a05ccf86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Function to be used for testing purposes. This function guarantees the correct solution for <a class="el" href="../../dd/dca/class_f_c_f_s.html" title="Class which implements the FCFS scheduling algorithm.">FCFS</a> scheduling algorithm. <br /></td></tr>
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d" id="r_aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
<tr class="memdesc:aa8dca7b867074164d5f45b0f3851269d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Self-test implementations. <br /></td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4" id="r_ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="../../dd/d3b/struct_entry.html">Entry</a> point of the program. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation of <a class="el" href="../../dd/dca/class_f_c_f_s.html" title="Class which implements the FCFS scheduling algorithm.">FCFS</a> CPU 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 CPU scheduling algorithm in which whichever process arrives first, gets executed first. If two or more processes arrive simultaneously, the process with smaller process ID gets executed first. <a class="el" href="">https://bit.ly/3ABNXOC</a>Pratyush Vatsa </p>
<p class="definition">Definition in file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Function Documentation</h2>
<a id="a8f2b90cb64d63a7080965e66a05ccf86" name="a8f2b90cb64d63a7080965e66a05ccf86"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f2b90cb64d63a7080965e66a05ccf86">&#9670;&#160;</a></span>get_final_status()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename S, typename T, typename E&gt; </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="../../d7/dfc/classvector.html">vector</a>&lt; tuple&lt; S, T, E, double, double, double &gt; &gt; get_final_status </td>
<td>(</td>
<td class="paramtype"><a class="el" href="../../d7/dfc/classvector.html">vector</a>&lt; tuple&lt; uint32_t, uint32_t, uint32_t &gt; &gt;</td> <td class="paramname"><span class="paramname"><em>input</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Function to be used for testing purposes. This function guarantees the correct solution for <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="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">input</td><td>the input data</td></tr>
</table>
</dd>
</dl>
<p>Sorts the input vector according to arrival time. Processes whose arrival times are same get sorted according to process ID For each process, completion time, turnaround time and completion time are calculated, inserted in a tuple, which is added to the vector result. </p><dl class="section return"><dt>Returns</dt><dd>A vector of tuples consisting of process ID, arrival time, burst time, completion time, turnaround time and waiting time for each process. </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00226">226</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 227</span> {</div>
<div class="line"><span class="lineno"> 228</span> sort(input.begin(), input.end(), <a class="code hl_function" href="#a18920aa331faf4476b251c8cdb2c2bec">sortcol&lt;S, T, E&gt;</a>);</div>
<div class="line"><span class="lineno"> 229</span> vector&lt;tuple&lt;S, T, E, double, double, double&gt;&gt; <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>(input.size());</div>
<div class="line"><span class="lineno"> 230</span> <span class="keywordtype">double</span> timeElapsed = 0;</div>
<div class="line"><span class="lineno"> 231</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i{}; i &lt; input.size(); i++) {</div>
<div class="line"><span class="lineno"> 232</span> T arrival = get&lt;1&gt;(input[i]);</div>
<div class="line"><span class="lineno"> 233</span> E burst = get&lt;2&gt;(input[i]);</div>
<div class="line"><span class="lineno"> 234</span> </div>
<div class="line"><span class="lineno"> 235</span> <span class="keywordflow">if</span> (arrival &gt; timeElapsed) {</div>
<div class="line"><span class="lineno"> 236</span> timeElapsed += arrival - timeElapsed;</div>
<div class="line"><span class="lineno"> 237</span> }</div>
<div class="line"><span class="lineno"> 238</span> timeElapsed += burst;</div>
<div class="line"><span class="lineno"> 239</span> <span class="keywordtype">double</span> completion = timeElapsed;</div>
<div class="line"><span class="lineno"> 240</span> <span class="keywordtype">double</span> turnaround = completion - arrival;</div>
<div class="line"><span class="lineno"> 241</span> <span class="keywordtype">double</span> waiting = turnaround - burst;</div>
<div class="line"><span class="lineno"> 242</span> </div>
<div class="line"><span class="lineno"> 243</span> get&lt;0&gt;(result[i]) = get&lt;0&gt;(input[i]);</div>
<div class="line"><span class="lineno"> 244</span> get&lt;1&gt;(result[i]) = arrival;</div>
<div class="line"><span class="lineno"> 245</span> get&lt;2&gt;(result[i]) = burst;</div>
<div class="line"><span class="lineno"> 246</span> get&lt;3&gt;(result[i]) = completion;</div>
<div class="line"><span class="lineno"> 247</span> get&lt;4&gt;(result[i]) = turnaround;</div>
<div class="line"><span class="lineno"> 248</span> get&lt;5&gt;(result[i]) = waiting;</div>
<div class="line"><span class="lineno"> 249</span> }</div>
<div class="line"><span class="lineno"> 250</span> <span class="keywordflow">return</span> <a class="code hl_function" href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">result</a>;</div>
<div class="line"><span class="lineno"> 251</span>}</div>
<div class="ttc" id="afcfs__scheduling_8cpp_html_a18920aa331faf4476b251c8cdb2c2bec"><div class="ttname"><a href="#a18920aa331faf4476b251c8cdb2c2bec">sortcol</a></div><div class="ttdeci">bool sortcol(tuple&lt; S, T, E &gt; &amp;t1, tuple&lt; S, T, E &gt; &amp;t2)</div><div class="ttdoc">Comparator function for sorting a vector.</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00046">fcfs_scheduling.cpp:46</a></div></div>
<div class="ttc" id="afibonacci__sum_8cpp_html_aadb40ac4c74a7efc0680b83eeee138aa"><div class="ttname"><a href="../../de/dc3/fibonacci__sum_8cpp.html#aadb40ac4c74a7efc0680b83eeee138aa">math::fibonacci_sum::result</a></div><div class="ttdeci">uint64_t result(uint64_t n)</div><div class="ttdef"><b>Definition</b> <a href="../../de/dc3/fibonacci__sum_8cpp_source.html#l00077">fibonacci_sum.cpp:77</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">void</td> <td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="../../dd/d3b/struct_entry.html">Entry</a> point of the program. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00288">288</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 288</span> {</div>
<div class="line"><span class="lineno"> 289</span> <a class="code hl_function" href="#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><span class="lineno"> 290</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 291</span>}</div>
<div class="ttc" id="afcfs__scheduling_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00257">fcfs_scheduling.cpp:257</a></div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a18920aa331faf4476b251c8cdb2c2bec" name="a18920aa331faf4476b251c8cdb2c2bec"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a18920aa331faf4476b251c8cdb2c2bec">&#9670;&#160;</a></span>sortcol()</h2>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename S, typename T, typename E&gt; </div>
<table class="memname">
<tr>
<td class="memname">bool sortcol </td>
<td>(</td>
<td class="paramtype">tuple&lt; S, T, E &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>t1</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">tuple&lt; S, T, E &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>t2</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Comparator function for sorting a vector. </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>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">t1</td><td>First tuple </td></tr>
<tr><td class="paramname">t2</td><td>Second tuple </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if t1 and t2 are in the CORRECT order </dd>
<dd>
false if t1 and t2 are in the INCORRECT order </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00046">46</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 46</span> {</div>
<div class="line"><span class="lineno"> 47</span> <span class="keywordflow">if</span> (get&lt;1&gt;(t1) &lt; get&lt;1&gt;(t2)) {</div>
<div class="line"><span class="lineno"> 48</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 49</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (get&lt;1&gt;(t1) == get&lt;1&gt;(t2) &amp;&amp; get&lt;0&gt;(t1) &lt; get&lt;0&gt;(t2)) {</div>
<div class="line"><span class="lineno"> 50</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><span class="lineno"> 51</span> }</div>
<div class="line"><span class="lineno"> 52</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><span class="lineno"> 53</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&#160;</a></span>test()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void test </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel static">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Self-test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00257">257</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
<div class="fragment"><div class="line"><span class="lineno"> 257</span> {</div>
<div class="line"><span class="lineno"> 258</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i{}; i &lt; 1000; i++) {</div>
<div class="line"><span class="lineno"> 259</span> srand(time(<span class="keyword">nullptr</span>));</div>
<div class="line"><span class="lineno"> 260</span> uint32_t n = 1 + rand() % 1000;</div>
<div class="line"><span class="lineno"> 261</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">FCFS&lt;uint32_t, uint32_t, uint32_t&gt;</a> readyQueue;</div>
<div class="line"><span class="lineno"> 262</span> vector&lt;tuple&lt;uint32_t, uint32_t, uint32_t&gt;&gt; input(n);</div>
<div class="line"><span class="lineno"> 263</span> </div>
<div class="line"><span class="lineno"> 264</span> <span class="keywordflow">for</span> (uint32_t i{}; i &lt; n; i++) {</div>
<div class="line"><span class="lineno"> 265</span> get&lt;0&gt;(input[i]) = i;</div>
<div class="line"><span class="lineno"> 266</span> srand(time(<span class="keyword">nullptr</span>));</div>
<div class="line"><span class="lineno"> 267</span> get&lt;1&gt;(input[i]) = 1 + rand() % 10000;</div>
<div class="line"><span class="lineno"> 268</span> srand(time(<span class="keyword">nullptr</span>));</div>
<div class="line"><span class="lineno"> 269</span> get&lt;2&gt;(input[i]) = 1 + rand() % 10000;</div>
<div class="line"><span class="lineno"> 270</span> }</div>
<div class="line"><span class="lineno"> 271</span> </div>
<div class="line"><span class="lineno"> 272</span> <span class="keywordflow">for</span> (uint32_t i{}; i &lt; n; i++) {</div>
<div class="line"><span class="lineno"> 273</span> readyQueue.<a class="code hl_function" href="../../dd/dca/class_f_c_f_s.html#a8fbfe4d85f7576b4a7aade07d29fbd69">addProcess</a>(get&lt;0&gt;(input[i]), get&lt;1&gt;(input[i]),</div>
<div class="line"><span class="lineno"> 274</span> get&lt;2&gt;(input[i]));</div>
<div class="line"><span class="lineno"> 275</span> }</div>
<div class="line"><span class="lineno"> 276</span> vector&lt;tuple&lt;uint32_t, uint32_t, uint32_t, double, double, double&gt;&gt;</div>
<div class="line"><span class="lineno"> 277</span> res = <a class="code hl_function" href="#a8f2b90cb64d63a7080965e66a05ccf86">get_final_status&lt;uint32_t, uint32_t, uint32_t&gt;</a>(input);</div>
<div class="line"><span class="lineno"> 278</span> assert(res == readyQueue.<a class="code hl_function" href="../../dd/dca/class_f_c_f_s.html#aa25dbe30ba9930b5a7c1a6d11758bd91">scheduleForFcfs</a>());</div>
<div class="line"><span class="lineno"> 279</span> <span class="comment">// readyQueue.printResult();</span></div>
<div class="line"><span class="lineno"> 280</span> }</div>
<div class="line"><span class="lineno"> 281</span> cout &lt;&lt; <span class="stringliteral">&quot;All the tests have successfully passed!&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"> 282</span>}</div>
<div class="ttc" id="aclass_f_c_f_s_html"><div class="ttname"><a href="../../dd/dca/class_f_c_f_s.html">FCFS</a></div><div class="ttdoc">Class which implements the FCFS scheduling algorithm.</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00098">fcfs_scheduling.cpp:98</a></div></div>
<div class="ttc" id="aclass_f_c_f_s_html_a8fbfe4d85f7576b4a7aade07d29fbd69"><div class="ttname"><a href="../../dd/dca/class_f_c_f_s.html#a8fbfe4d85f7576b4a7aade07d29fbd69">FCFS::addProcess</a></div><div class="ttdeci">void addProcess(S id, T arrival, E burst)</div><div class="ttdoc">Adds the process to the ready queue if it isn&#39;t already there.</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00130">fcfs_scheduling.cpp:130</a></div></div>
<div class="ttc" id="aclass_f_c_f_s_html_aa25dbe30ba9930b5a7c1a6d11758bd91"><div class="ttname"><a href="../../dd/dca/class_f_c_f_s.html#aa25dbe30ba9930b5a7c1a6d11758bd91">FCFS::scheduleForFcfs</a></div><div class="ttdeci">vector&lt; tuple&lt; S, T, E, double, double, double &gt; &gt; scheduleForFcfs()</div><div class="ttdoc">Algorithm for scheduling CPU processes according to the First Come First Serve(FCFS) scheduling algor...</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00155">fcfs_scheduling.cpp:155</a></div></div>
<div class="ttc" id="afcfs__scheduling_8cpp_html_a8f2b90cb64d63a7080965e66a05ccf86"><div class="ttname"><a href="#a8f2b90cb64d63a7080965e66a05ccf86">get_final_status</a></div><div class="ttdeci">vector&lt; tuple&lt; S, T, E, double, double, double &gt; &gt; get_final_status(vector&lt; tuple&lt; uint32_t, uint32_t, uint32_t &gt; &gt; input)</div><div class="ttdoc">Function to be used for testing purposes. This function guarantees the correct solution for FCFS sche...</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00226">fcfs_scheduling.cpp:226</a></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> <a href="../../d7/d35/matrix__exponentiation_8cpp_source.html#l00036">matrix_exponentiation.cpp:36</a></div></div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="../../dir_cc8e79ed9d2b7756c78e8d0c87c6c0c7.html">cpu_scheduling_algorithms</a></li><li class="navelem"><a href="../../df/d47/fcfs__scheduling_8cpp.html">fcfs_scheduling.cpp</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.14.0 </li>
</ul>
</div>
</body>
</html>