mirror of
https://github.com/TheAlgorithms/C-Plus-Plus.git
synced 2026-03-22 04:42:10 +08:00
431 lines
33 KiB
HTML
431 lines
33 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++: FCFS< S, T, E > Class Template 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"> 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('dd/dca/class_f_c_f_s.html','../../','de/d8d/class_f_c_f_s-members'); });
|
|
</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< S, T, E > 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="#details">More...</a></p>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr class="memitem:a8fbfe4d85f7576b4a7aade07d29fbd69" id="r_a8fbfe4d85f7576b4a7aade07d29fbd69"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#a8fbfe4d85f7576b4a7aade07d29fbd69">addProcess</a> (S id, T arrival, E burst)</td></tr>
|
|
<tr class="memdesc:a8fbfe4d85f7576b4a7aade07d29fbd69"><td class="mdescLeft"> </td><td class="mdescRight">Adds the process to the ready queue if it isn't already there. <br /></td></tr>
|
|
<tr class="memitem:aa25dbe30ba9930b5a7c1a6d11758bd91" id="r_aa25dbe30ba9930b5a7c1a6d11758bd91"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d7/dfc/classvector.html">vector</a>< tuple< S, T, E, double, double, double > > </td><td class="memItemRight" valign="bottom"><a class="el" href="#aa25dbe30ba9930b5a7c1a6d11758bd91">scheduleForFcfs</a> ()</td></tr>
|
|
<tr class="memdesc:aa25dbe30ba9930b5a7c1a6d11758bd91"><td class="mdescLeft"> </td><td class="mdescRight">Algorithm for scheduling CPU processes according to the First Come First Serve(FCFS) scheduling algorithm. <br /></td></tr>
|
|
<tr class="memitem:abb361a612b18bb189aa6d3c49288b793" id="r_abb361a612b18bb189aa6d3c49288b793"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="#abb361a612b18bb189aa6d3c49288b793">printResult</a> ()</td></tr>
|
|
<tr class="memdesc:abb361a612b18bb189aa6d3c49288b793"><td class="mdescLeft"> </td><td class="mdescRight">Utility function for printing the status of each process after execution. <br /></td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-pri-attribs" class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
|
|
Private Attributes</h2></td></tr>
|
|
<tr class="memitem:af2594e22a867b308e027623940193d46" id="r_af2594e22a867b308e027623940193d46"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d1/d1b/classpriority__queue.html">priority_queue</a>< tuple< S, T, E, double, double, double >, <a class="el" href="../../d7/dfc/classvector.html">vector</a>< tuple< S, T, E, double, double, double > >, <a class="el" href="../../de/d4a/class_compare.html">Compare</a>< S, T, E > > </td><td class="memItemRight" valign="bottom"><a class="el" href="#af2594e22a867b308e027623940193d46">schedule</a></td></tr>
|
|
<tr class="memitem:ac3abd3d9f23437599ff9a2131c8b631f" id="r_ac3abd3d9f23437599ff9a2131c8b631f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d7/dfc/classvector.html">vector</a>< tuple< S, T, E, double, double, double > > </td><td class="memItemRight" valign="bottom"><a class="el" href="#ac3abd3d9f23437599ff9a2131c8b631f">result</a></td></tr>
|
|
<tr class="memitem:a86e9908699e2ff89557c01f1a4b47d83" id="r_a86e9908699e2ff89557c01f1a4b47d83"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../d3/d6d/classunordered__set.html">unordered_set</a>< S > </td><td class="memItemRight" valign="bottom"><a class="el" href="#a86e9908699e2ff89557c01f1a4b47d83">idList</a></td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><div class="compoundTemplParams">template<typename S, typename T, typename E><br />
|
|
class FCFS< S, T, E ></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>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00098">98</a> of 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">Member Function Documentation</h2>
|
|
<a id="a8fbfe4d85f7576b4a7aade07d29fbd69" name="a8fbfe4d85f7576b4a7aade07d29fbd69"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a8fbfe4d85f7576b4a7aade07d29fbd69">◆ </a></span>addProcess()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename S, typename T, typename E> </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>< S, T, E >::addProcess </td>
|
|
<td>(</td>
|
|
<td class="paramtype">S</td> <td class="paramname"><span class="paramname"><em>id</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">T</td> <td class="paramname"><span class="paramname"><em>arrival</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">E</td> <td class="paramname"><span class="paramname"><em>burst</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel inline">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>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00130">130</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"> 130</span> {</div>
|
|
<div class="line"><span class="lineno"> 131</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"> 132</span> <span class="keywordflow">if</span> (idList.find(<span class="keywordtype">id</span>) == idList.end()) {</div>
|
|
<div class="line"><span class="lineno"> 133</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">tuple<S, T, E, double, double, double></a> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">t</a> =</div>
|
|
<div class="line"><span class="lineno"> 134</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">make_tuple</a>(<span class="keywordtype">id</span>, <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">arrival</a>, <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">burst</a>, 0, 0, 0);</div>
|
|
<div class="line"><span class="lineno"> 135</span> <a class="code hl_variable" href="#af2594e22a867b308e027623940193d46">schedule</a>.push(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">t</a>);</div>
|
|
<div class="line"><span class="lineno"> 136</span> idList.insert(<span class="keywordtype">id</span>);</div>
|
|
<div class="line"><span class="lineno"> 137</span> }</div>
|
|
<div class="line"><span class="lineno"> 138</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_af2594e22a867b308e027623940193d46"><div class="ttname"><a href="#af2594e22a867b308e027623940193d46">FCFS::schedule</a></div><div class="ttdeci">priority_queue< tuple< S, T, E, double, double, double >, vector< tuple< S, T, E, double, double, double > >, Compare< S, T, E > > schedule</div><div class="ttdef"><b>Definition</b> <a href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00112">fcfs_scheduling.cpp:112</a></div></div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="abb361a612b18bb189aa6d3c49288b793" name="abb361a612b18bb189aa6d3c49288b793"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#abb361a612b18bb189aa6d3c49288b793">◆ </a></span>printResult()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename S, typename T, typename E> </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>< S, T, E >::printResult </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 inline">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>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00192">192</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"> 192</span> {</div>
|
|
<div class="line"><span class="lineno"> 193</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cout</a> << <span class="stringliteral">"Status of all the proceses post completion is as follows:"</span></div>
|
|
<div class="line"><span class="lineno"> 194</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">endl</a>;</div>
|
|
<div class="line"><span class="lineno"> 195</span> </div>
|
|
<div class="line"><span class="lineno"> 196</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cout</a> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a> << <span class="stringliteral">"Process ID"</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 197</span> << <span class="stringliteral">"Arrival Time"</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a> << <span class="stringliteral">"Burst Time"</span></div>
|
|
<div class="line"><span class="lineno"> 198</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a> << <span class="stringliteral">"Completion Time"</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17)</div>
|
|
<div class="line"><span class="lineno"> 199</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a> << <span class="stringliteral">"Turnaround Time"</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 200</span> << <span class="stringliteral">"Waiting Time"</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">endl</a>;</div>
|
|
<div class="line"><span class="lineno"> 201</span> </div>
|
|
<div class="line"><span class="lineno"> 202</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>{}; <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a> < result.size(); <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>++) {</div>
|
|
<div class="line"><span class="lineno"> 203</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cout</a> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setprecision</a>(2) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::fixed</a> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 204</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<0></a>(result[<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>]) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 205</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<1></a>(result[<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>]) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 206</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<2></a>(result[<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>]) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 207</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<3></a>(result[<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>]) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 208</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<4></a>(result[<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>]) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">std::setw</a>(17) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">left</a></div>
|
|
<div class="line"><span class="lineno"> 209</span> << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<5></a>(result[<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">i</a>]) << <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">endl</a>;</div>
|
|
<div class="line"><span class="lineno"> 210</span> }</div>
|
|
<div class="line"><span class="lineno"> 211</span> }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a id="aa25dbe30ba9930b5a7c1a6d11758bd91" name="aa25dbe30ba9930b5a7c1a6d11758bd91"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#aa25dbe30ba9930b5a7c1a6d11758bd91">◆ </a></span>scheduleForFcfs()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename S, typename T, typename E> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="../../d7/dfc/classvector.html">vector</a>< tuple< S, T, E, double, double, double > > <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>< S, T, E >::scheduleForFcfs </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 inline">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>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00155">155</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"> 155</span> {</div>
|
|
<div class="line"><span class="lineno"> 156</span> <span class="comment">// Variable to keep track of time elapsed so far</span></div>
|
|
<div class="line"><span class="lineno"> 157</span> <span class="keywordtype">double</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">timeElapsed</a> = 0;</div>
|
|
<div class="line"><span class="lineno"> 158</span> </div>
|
|
<div class="line"><span class="lineno"> 159</span> <span class="keywordflow">while</span> (!<a class="code hl_variable" href="#af2594e22a867b308e027623940193d46">schedule</a>.empty()) {</div>
|
|
<div class="line"><span class="lineno"> 160</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">tuple<S, T, E, double, double, double></a> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a> = <a class="code hl_variable" href="#af2594e22a867b308e027623940193d46">schedule</a>.top();</div>
|
|
<div class="line"><span class="lineno"> 161</span> </div>
|
|
<div class="line"><span class="lineno"> 162</span> <span class="comment">// If the current process arrived at time t2, the last process</span></div>
|
|
<div class="line"><span class="lineno"> 163</span> <span class="comment">// completed its execution at time t1, and t2 > t1.</span></div>
|
|
<div class="line"><span class="lineno"> 164</span> <span class="keywordflow">if</span> (<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<1></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) > <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">timeElapsed</a>) {</div>
|
|
<div class="line"><span class="lineno"> 165</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">timeElapsed</a> += <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<1></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) - <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">timeElapsed</a>;</div>
|
|
<div class="line"><span class="lineno"> 166</span> }</div>
|
|
<div class="line"><span class="lineno"> 167</span> </div>
|
|
<div class="line"><span class="lineno"> 168</span> <span class="comment">// Add Burst time to time elapsed</span></div>
|
|
<div class="line"><span class="lineno"> 169</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">timeElapsed</a> += <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<2></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>);</div>
|
|
<div class="line"><span class="lineno"> 170</span> </div>
|
|
<div class="line"><span class="lineno"> 171</span> <span class="comment">// Completion time of the current process will be same as time</span></div>
|
|
<div class="line"><span class="lineno"> 172</span> <span class="comment">// elapsed so far</span></div>
|
|
<div class="line"><span class="lineno"> 173</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<3></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) = <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">timeElapsed</a>;</div>
|
|
<div class="line"><span class="lineno"> 174</span> </div>
|
|
<div class="line"><span class="lineno"> 175</span> <span class="comment">// Turnaround time = Completion time - Arrival time</span></div>
|
|
<div class="line"><span class="lineno"> 176</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<4></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) = <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<3></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) - <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<1></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>);</div>
|
|
<div class="line"><span class="lineno"> 177</span> </div>
|
|
<div class="line"><span class="lineno"> 178</span> <span class="comment">// Waiting time = Turnaround time - Burst time</span></div>
|
|
<div class="line"><span class="lineno"> 179</span> <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<5></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) = <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<4></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>) - <a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">get<2></a>(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>);</div>
|
|
<div class="line"><span class="lineno"> 180</span> </div>
|
|
<div class="line"><span class="lineno"> 181</span> result.push_back(<a class="code hl_class" href="../../dd/dca/class_f_c_f_s.html">cur</a>);</div>
|
|
<div class="line"><span class="lineno"> 182</span> <a class="code hl_variable" href="#af2594e22a867b308e027623940193d46">schedule</a>.pop();</div>
|
|
<div class="line"><span class="lineno"> 183</span> }</div>
|
|
<div class="line"><span class="lineno"> 184</span> <span class="keywordflow">return</span> result;</div>
|
|
<div class="line"><span class="lineno"> 185</span> }</div>
|
|
</div><!-- fragment -->
|
|
</div>
|
|
</div>
|
|
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
|
|
<a id="a86e9908699e2ff89557c01f1a4b47d83" name="a86e9908699e2ff89557c01f1a4b47d83"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a86e9908699e2ff89557c01f1a4b47d83">◆ </a></span>idList</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename S, typename T, typename E> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="../../d3/d6d/classunordered__set.html">unordered_set</a><S> <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>< S, T, E >::idList</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00119">119</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ac3abd3d9f23437599ff9a2131c8b631f" name="ac3abd3d9f23437599ff9a2131c8b631f"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ac3abd3d9f23437599ff9a2131c8b631f">◆ </a></span>result</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename S, typename T, typename E> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="../../d7/dfc/classvector.html">vector</a><tuple<S, T, E, double, double, double> > <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>< S, T, E >::result</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00115">115</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="af2594e22a867b308e027623940193d46" name="af2594e22a867b308e027623940193d46"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#af2594e22a867b308e027623940193d46">◆ </a></span>schedule</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<div class="memtemplate">
|
|
template<typename S, typename T, typename E> </div>
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="../../d1/d1b/classpriority__queue.html">priority_queue</a><tuple<S, T, E, double, double, double>, <a class="el" href="../../d7/dfc/classvector.html">vector</a><tuple<S, T, E, double, double, double> >, <a class="el" href="../../de/d4a/class_compare.html">Compare</a><S, T, E> > <a class="el" href="../../dd/dca/class_f_c_f_s.html">FCFS</a>< S, T, E >::schedule</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel private">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>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html#l00112">112</a> of file <a class="el" href="../../df/d47/fcfs__scheduling_8cpp_source.html">fcfs_scheduling.cpp</a>.</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_source.html">fcfs_scheduling.cpp</a></li>
|
|
</ul>
|
|
</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="../../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.14.0 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|