Documentation for c26eea874d

This commit is contained in:
realstealthninja
2025-05-19 11:38:33 +00:00
parent c7a9a42397
commit 14583a2f33
2829 changed files with 30266 additions and 21669 deletions

View File

@@ -4,7 +4,7 @@
<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.12.0"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>TheAlgorithms/C++: cpu_scheduling_algorithms/non_preemptive_sjf_scheduling.cpp Source File</title>
<link rel="icon" href="../../favicon.svg" type="image/x-icon" />
@@ -60,7 +60,7 @@ window.MathJax = {
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.12.0 -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -124,7 +124,8 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="headertitle"><div class="title">non_preemptive_sjf_scheduling.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
<a href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;algorithm&gt;</span> </div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;cassert&gt;</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include &lt;iomanip&gt;</span> </div>
@@ -144,7 +145,7 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="keyword">using </span>std::tuple;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="keyword">using </span>std::unordered_set;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="keyword">using </span>std::vector;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, <span class="keyword">typename</span> E&gt;</div>
<div class="foldopen" id="foldopen00045" data-start="{" data-end="}">
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"><a class="line" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#a18920aa331faf4476b251c8cdb2c2bec"> 45</a></span><span class="keywordtype">bool</span> <a class="code hl_function" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#a18920aa331faf4476b251c8cdb2c2bec">sortcol</a>(tuple&lt;S, T, E&gt;&amp; t1, tuple&lt;S, T, E&gt;&amp; t2) {</div>
@@ -155,7 +156,7 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span>}</div>
</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, <span class="keyword">typename</span> E&gt;</div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="keyword">class </span><a class="code hl_class" href="../../de/d4a/class_compare.html">Compare</a> {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">public</span>:</div>
@@ -174,7 +175,7 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> }</div>
</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span>};</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, <span class="keyword">typename</span> E&gt;</div>
<div class="foldopen" id="foldopen00096" data-start="{" data-end="};">
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="../../d7/d9f/class_s_j_f.html"> 96</a></span><span class="keyword">class </span><a class="code hl_class" href="../../d7/d9f/class_s_j_f.html">SJF</a> {</div>
@@ -201,7 +202,8 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> }</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> }</div>
</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="foldopen" id="foldopen00154" data-start="{" data-end="}">
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"><a class="line" href="../../d7/d9f/class_s_j_f.html#a61b76afcc94e573d7232ab51c351fd30"> 154</a></span> vector&lt;tuple&lt;S, T, E, double, double, double&gt;&gt; <a class="code hl_function" href="../../d7/d9f/class_s_j_f.html#a61b76afcc94e573d7232ab51c351fd30">scheduleForSJF</a>() {</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// Variable to keep track of time elapsed so far</span></div>
@@ -241,6 +243,8 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> }</div>
</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
<div class="foldopen" id="foldopen00197" data-start="{" data-end="}">
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="../../d7/d9f/class_s_j_f.html#a42d7016523e3adfe5b946fab18ce7905"> 197</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d7/d9f/class_s_j_f.html#a42d7016523e3adfe5b946fab18ce7905">printResult</a>(</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">const</span> vector&lt;tuple&lt;S, T, E, double, double, double&gt;&gt;&amp; processes) {</div>
@@ -262,13 +266,13 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>};</div>
</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="keyword">template</span> &lt;<span class="keyword">typename</span> S, <span class="keyword">typename</span> T, <span class="keyword">typename</span> E&gt;</div>
<div class="foldopen" id="foldopen00228" data-start="{" data-end="}">
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"><a class="line" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#a23667f16acc4035988e7cd7ae80b6ff3"> 228</a></span>vector&lt;tuple&lt;S, T, E, double, double, double&gt;&gt; <a class="code hl_function" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#a23667f16acc4035988e7cd7ae80b6ff3">get_final_status</a>(</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> vector&lt;tuple&lt;S, T, E&gt;&gt; input) {</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// Sort the processes based on Arrival time and then Burst time</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> sort(input.begin(), input.end(), <a class="code hl_function" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#a18920aa331faf4476b251c8cdb2c2bec">sortcol&lt;S, T, E&gt;</a>);</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> sort(input.begin(), input.end(), <a class="code hl_function" href="../../df/d47/fcfs__scheduling_8cpp.html#a18920aa331faf4476b251c8cdb2c2bec">sortcol&lt;S, T, E&gt;</a>);</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment">// Result vector to hold the final status of each process</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> vector&lt;tuple&lt;S, T, E, double, double, double&gt;&gt; result(input.size());</div>
@@ -300,7 +304,7 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span>}</div>
</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span></div>
<div class="foldopen" id="foldopen00267" data-start="{" data-end="}">
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"><a class="line" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#aa8dca7b867074164d5f45b0f3851269d"> 267</a></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>() {</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">// A vector to store the results of all processes across all test cases.</span></div>
@@ -344,7 +348,7 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</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"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span>}</div>
</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> </div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span></div>
<div class="foldopen" id="foldopen00313" data-start="{" data-end="}">
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"><a class="line" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 313</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() {</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <a class="code hl_function" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>();</div>
@@ -357,7 +361,8 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div class="ttc" id="aclass_s_j_f_html_a42d7016523e3adfe5b946fab18ce7905"><div class="ttname"><a href="../../d7/d9f/class_s_j_f.html#a42d7016523e3adfe5b946fab18ce7905">SJF::printResult</a></div><div class="ttdeci">void printResult(const vector&lt; tuple&lt; S, T, E, double, double, double &gt; &gt; &amp;processes)</div><div class="ttdoc">Utility function for printing the status of each process after execution.</div><div class="ttdef"><b>Definition</b> <a href="#l00197">non_preemptive_sjf_scheduling.cpp:197</a></div></div>
<div class="ttc" id="aclass_s_j_f_html_a61b76afcc94e573d7232ab51c351fd30"><div class="ttname"><a href="../../d7/d9f/class_s_j_f.html#a61b76afcc94e573d7232ab51c351fd30">SJF::scheduleForSJF</a></div><div class="ttdeci">vector&lt; tuple&lt; S, T, E, double, double, double &gt; &gt; scheduleForSJF()</div><div class="ttdoc">Algorithm for scheduling CPU processes according to the Shortest Job First (SJF) scheduling algorithm...</div><div class="ttdef"><b>Definition</b> <a href="#l00154">non_preemptive_sjf_scheduling.cpp:154</a></div></div>
<div class="ttc" id="aclass_s_j_f_html_ac86d31ea081e671adeb82b3f92376fea"><div class="ttname"><a href="../../d7/d9f/class_s_j_f.html#ac86d31ea081e671adeb82b3f92376fea">SJF::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> <a href="#l00110">non_preemptive_sjf_scheduling.cpp:110</a></div></div>
<div class="ttc" id="aclass_s_j_f_html_af73fe815835075184724a13c12f613ed"><div class="ttname"><a href="../../d7/d9f/class_s_j_f.html#af73fe815835075184724a13c12f613ed">SJF::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't already there.</div><div class="ttdef"><b>Definition</b> <a href="#l00127">non_preemptive_sjf_scheduling.cpp:127</a></div></div>
<div class="ttc" id="aclass_s_j_f_html_af73fe815835075184724a13c12f613ed"><div class="ttname"><a href="../../d7/d9f/class_s_j_f.html#af73fe815835075184724a13c12f613ed">SJF::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="#l00127">non_preemptive_sjf_scheduling.cpp:127</a></div></div>
<div class="ttc" id="afcfs__scheduling_8cpp_html_a18920aa331faf4476b251c8cdb2c2bec"><div class="ttname"><a href="../../df/d47/fcfs__scheduling_8cpp.html#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="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 class="ttc" id="anon__preemptive__sjf__scheduling_8cpp_html_a18920aa331faf4476b251c8cdb2c2bec"><div class="ttname"><a href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#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="#l00045">non_preemptive_sjf_scheduling.cpp:45</a></div></div>
<div class="ttc" id="anon__preemptive__sjf__scheduling_8cpp_html_a23667f16acc4035988e7cd7ae80b6ff3"><div class="ttname"><a href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html#a23667f16acc4035988e7cd7ae80b6ff3">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; S, T, E &gt; &gt; input)</div><div class="ttdoc">Computes the final status of processes after applying non-preemptive SJF scheduling.</div><div class="ttdef"><b>Definition</b> <a href="#l00228">non_preemptive_sjf_scheduling.cpp:228</a></div></div>
@@ -369,7 +374,7 @@ $(function(){initNavTree('d7/d1a/non__preemptive__sjf__scheduling_8cpp_source.ht
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_cc8e79ed9d2b7756c78e8d0c87c6c0c7.html">cpu_scheduling_algorithms</a></li><li class="navelem"><a class="el" href="../../d7/d1a/non__preemptive__sjf__scheduling_8cpp.html">non_preemptive_sjf_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.12.0 </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.13.2 </li>
</ul>
</div>
</body>