<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Granville Barnett : Algorithms</title><link>http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx</link><description>Tags: Algorithms</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>DSA 0.5 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/05/30/dsa-0-5-released.aspx</link><pubDate>Fri, 30 May 2008 17:09:50 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6233753</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=6233753</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/05/30/dsa-0-5-released.aspx#comments</comments><description>&lt;p&gt;It's been a while, I've had to work on other stuff for the last 2 or so months which has rendered me with no time. That's the excuses out of the way...&lt;/p&gt;  &lt;p&gt;Not much added in this release I would simply point you to the &lt;a href="http://www.codeplex.com/dsa/Release/ProjectReleases.aspx?ReleaseId=10756"&gt;release page&lt;/a&gt; for more details.&lt;/p&gt;  &lt;p&gt;A friend of mine &lt;a href="http://blogs.ugidotnet.org/wetblog/Default.aspx"&gt;Luca&lt;/a&gt; (&lt;a href="http://translate.google.co.uk/translate?hl=en&amp;amp;sl=it&amp;amp;u=http://blogs.ugidotnet.org/wetblog&amp;amp;sa=X&amp;amp;oi=translate&amp;amp;resnum=1&amp;amp;ct=result&amp;amp;prev=/search%3Fq%3Dluca%2Bdel%2Btongo%26hl%3Den"&gt;translated to english&lt;/a&gt;) has joined the project now and will be helping to shape 0.6 and beyond - welcome Luca!!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/dsa/Release/ProjectReleases.aspx?ReleaseId=10756"&gt;Download DSA 0.5&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6233753" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Data+Structures/default.aspx">Data Structures</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/DSA/default.aspx">DSA</category></item><item><title>DSA Recap</title><link>http://weblogs.asp.net/gbarnett/archive/2008/05/08/dsa-recap.aspx</link><pubDate>Thu, 08 May 2008 22:42:40 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6171324</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=6171324</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/05/08/dsa-recap.aspx#comments</comments><description>&lt;p&gt;Some of you will no doubt know that I started a project a while ago now that was intent on bringing implementations of various algorithms and data structures to .NET - but with a different take on things.&lt;/p&gt;  &lt;p&gt;Well, after a recent detour with &lt;a href="http://codeplex.com/cpuss"&gt;CPUSS&lt;/a&gt; (a project that analyses CPU scheduling algorithms - interesting project, give it a download!) in less than a week &lt;a href="http://codeplex.com/dsa"&gt;DSA&lt;/a&gt; will receive a lot of time again (next Thursday signals the end of a busy spell of work).&lt;/p&gt;  &lt;p&gt;I wanted to thank the few hundred or so who have downloaded &lt;a href="http://www.codeplex.com/dsa/Release/ProjectReleases.aspx?ReleaseId=9403"&gt;DSA 0.4&lt;/a&gt; - you're participation itself is motivation. I have some news for DSA 0.6 that is interesting but I will save that for when DSA 0.5 is released.&lt;/p&gt;  &lt;p&gt;I am looking for suggestions of things to add to DSA 1.0 (bare in mind that graphs are on the schedule) so if you can think of a pretty rare data structure or algorithm that you think would be nice to implement then please let me know as I can see whether or not (depending on time constraints) I can get it into DSA 1.0.&lt;/p&gt;  &lt;p&gt;The plan is to hopefully release DSA 1.0 by the end of summer (think early September) so I am really expecting things to move quick from a weeks time.&lt;/p&gt;  &lt;p&gt;Thank you to all those who have downloaded, there are some exciting things to come!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6171324" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Data+Structures/default.aspx">Data Structures</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/DSA/default.aspx">DSA</category></item><item><title>CPU Scheduling Simulator 1.0 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/04/08/cpu-scheduling-simulator-1-0-released.aspx</link><pubDate>Tue, 08 Apr 2008 21:48:18 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6075853</guid><dc:creator>gbarnett</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=6075853</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/04/08/cpu-scheduling-simulator-1-0-released.aspx#comments</comments><description>&lt;p&gt;I've said it all before in recent posts, but here it is again - CPUSS is a framework that allows you to design and analyse CPU scheduling algorithms.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11881"&gt;Download CPUSS 1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There is a tonne of stuff in CPUSS! Most of which is not exposed by the report generation tool (CPUSSRG). Using the CPUSS API&amp;#160; you can look at very atomic stats of each and every process that was in the simulation, events for process start, completion, preemption, and resuming.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11881"&gt;Download CPUSS 1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can use CPUSS to analyse your won custom algorithms very easily, go to the download page of CPUSS 1.0 and grab the PDF file that explains how to do it, and the API document is quite comprehensive.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11881"&gt;Download CPUSS 1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are interested in scheduling algorithm (strategy) design and analysis then give it a go!&lt;/p&gt;  &lt;p&gt;This will be the only release of CPUSS, I may update it a little if there are any major bugs found but it started off as a research project so it won't go any further - it has proved what it needed to prove.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11881"&gt;Download CPUSS 1.0&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Seriously go check it &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11881"&gt;out&lt;/a&gt; if you are into this stuff.&lt;/p&gt;  &lt;p&gt;Oh, and finally a BIG thank you to everyone who downloaded the releases and played with them! Thank you!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6075853" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Research/default.aspx">Research</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Operating+Systems/default.aspx">Operating Systems</category></item><item><title>CPU Scheduling Simulator 0.6 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/03/22/cpu-scheduling-simulator-0-6-released.aspx</link><pubDate>Sat, 22 Mar 2008 20:46:13 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6012093</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=6012093</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/03/22/cpu-scheduling-simulator-0-6-released.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=11674"&gt;Download CPUSS 0.6&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Some cool new features added in this release, they include:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Variance
&lt;/li&gt;&lt;li&gt;Standard Deviation
&lt;/li&gt;&lt;li&gt;CPU Busy Time
&lt;/li&gt;&lt;li&gt;CPU Idle Time
&lt;/li&gt;&lt;li&gt;Get average wait time for a category of process (this uses a predicate function)
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I am tempted to say that this build is pretty much feature complete, any further additions will be minor.
&lt;/p&gt;&lt;p&gt;Future releases will be focused on bug fixes, and a command line tool for invoking load generated process tests etc.
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=11674"&gt;Download CPUSS 0.6&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6012093" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Research/default.aspx">Research</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Operating+Systems/default.aspx">Operating Systems</category></item><item><title>CPU Scheduling Simulator 0.5 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/03/16/cpu-scheduling-simulator-0-5-released.aspx</link><pubDate>Sun, 16 Mar 2008 14:44:30 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5979560</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5979560</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/03/16/cpu-scheduling-simulator-0-5-released.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=11166"&gt;Download CPUSS 0.5&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I got bored today (I really should be preparing for stuff I have coming up in the next few days!!) looking at random stuff in preparation for the next few days, so I broke off for a while and decided to finish up CPUSS 0.5 release which contains:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Process resumed event&lt;/li&gt;    &lt;li&gt;Min/Max wait time achieved by any process during the simulation&lt;/li&gt;    &lt;li&gt;WaitTime now computed for every process rather than the total average (which is still there)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=11166"&gt;Download CPUSS 0.5&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5979560" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Operating+Systems/default.aspx">Operating Systems</category></item><item><title>CPU Scheduling Simulator 0.4 Released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/03/14/cpu-scheduling-simulator-0-4-released.aspx</link><pubDate>Fri, 14 Mar 2008 17:30:47 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5968546</guid><dc:creator>gbarnett</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5968546</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/03/14/cpu-scheduling-simulator-0-4-released.aspx#comments</comments><description>&lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11165"&gt;Download CPUSS 0.4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A fairly minor release with a little work cleaning the API up a little by reducing ambiguity (definition of ProcessLoad, and Pairs collections).&lt;/p&gt;  &lt;p&gt;Also added an event that allows you to subscribe to process preemption, as well as scattered priorities for auto generated process loads.&lt;/p&gt;  &lt;p&gt;I added the option to specify a poll time for the priority first and shortest job first strategies, I did debate about just using a standard poll time but I think the flexibility is probably best in this case.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=11165"&gt;Download CPUSS 0.4&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Future iterations&lt;/h4&gt;  &lt;p&gt;Below are the features that will be added in both CPUSS 0.5 and 0.6 respectively.&lt;/p&gt;  &lt;h4&gt;CPUSS 0.5&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Process resumed event &lt;/li&gt;    &lt;li&gt;Wait times for each process &lt;/li&gt;    &lt;li&gt;Min wait time &lt;/li&gt;    &lt;li&gt;Max wait time &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;CPUSS 0.6&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;CPU idle time &lt;/li&gt;    &lt;li&gt;CPU busy time &lt;/li&gt;    &lt;li&gt;Standard deviation &lt;/li&gt;    &lt;li&gt;Average wait time based on a predicate function &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5968546" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category></item><item><title>CPUSS: Using the SJF Expert Rule</title><link>http://weblogs.asp.net/gbarnett/archive/2008/03/12/cpuss-using-the-sjf-expert-rule.aspx</link><pubDate>Wed, 12 Mar 2008 19:49:37 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5957682</guid><dc:creator>gbarnett</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5957682</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/03/12/cpuss-using-the-sjf-expert-rule.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://www.codeplex.com/cpuss"&gt;SJF Expert Rule strategy&lt;/a&gt; is designed to elevate the priority of large processes based on a precondition defined by the user, that basically says if the current % of processes in the ready queue is greater than N then execute some of the large processes thus elevating their priorities.&lt;/p&gt;  &lt;p&gt;SJF is as you will no doubt no unfair to large processes (that is they require greater CPU burst times). Having large processes always be low down in the stack is really not acceptable in any system, at least if it's not done in a healthy fashion. The reality is that no operating systems use one predefined algorithm, rather they use some dynamic selection policy based on the ready queue and further predictions.&lt;/p&gt;  &lt;h4&gt;Large Process Elevation&lt;/h4&gt;  &lt;p&gt;Rather than writing it out again, here is the expert rule definition (all strategies are well documented with advice where required to gain better performance).&lt;/p&gt;  &lt;p&gt;&lt;img height="426" alt="CPU Scheduling Simulator 0.3" src="http://weblogs.asp.net/blogs/gbarnett/WindowsLiveWriter/CPUSSUsingtheSJFExpertRule_F377/CPU%20Scheduling%20Simulator%200.3_c7c9ac05-5520-4df8-aea9-2bae3a9cddaf.png" width="663" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;By using the expert rule you will be able to swap in large processes for execution based on a threshold defined by you, you will need to analyse the expected number of large processes you estimate at any time &lt;em&gt;t&lt;/em&gt; in the ready queue to get the best out of the strategy.&lt;/p&gt;  &lt;p&gt;Just like the other strategies it's easy to use and start analysing the data.&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; Cpuss;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; Cpuss.Strategies;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; ConsoleApplication1&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Runner&lt;/span&gt; runner = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Runner&lt;/span&gt;(12, 4, 34, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ShortestJobFirstExpert&lt;/span&gt;(10));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; runner.ProcessStarted += (o, e) =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;PID: {0} Started&amp;quot;&lt;/span&gt;, e.Id);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; runner.ProcessCompleted += (o, e) =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;PID: {0} Completed&amp;quot;&lt;/span&gt;, e.Id);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; runner.ProcessPreempted += (o, e) =&amp;gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;PID: {0} Preempted&amp;quot;&lt;/span&gt;, e.Id);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; runner.Run();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;em&gt;Note: N will be able to be determined by the user as well in the next release (this was an oversight by me in the last release).&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;&lt;img height="372" alt="CWindowssystem32cmd.exe" src="http://weblogs.asp.net/blogs/gbarnett/WindowsLiveWriter/CPUSSUsingtheSJFExpertRule_F377/CWindowssystem32cmd.exe_b9ff49ff-05f6-4859-8bea-3b2a2b3fd7a8.png" width="709" border="0" /&gt; &lt;/h4&gt;  &lt;p&gt;Yes, there is a lot more data available! Very simple demo, the code above uses a threshold of 10%.&lt;/p&gt;  &lt;h4&gt;Preemption support&lt;/h4&gt;  &lt;p&gt;In change set #&lt;a href="http://www.codeplex.com/cpuss/SourceControl/DownloadSourceCode.aspx?changeSetId=9226"&gt;9226&lt;/a&gt; and later preemption support is active via events. &lt;/p&gt;  &lt;h4&gt;Something missing?&lt;/h4&gt;  &lt;p&gt;I am continuing to add a lot of data spots that can be used for analysis in strategy design and development so if you have any ideas you would like to see let me know!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss"&gt;Download CPUSS!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5957682" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Research/default.aspx">Research</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Operating+Systems/default.aspx">Operating Systems</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Windows/default.aspx">Windows</category></item><item><title>DSA in review so far</title><link>http://weblogs.asp.net/gbarnett/archive/2008/03/09/dsa-in-review-so-far.aspx</link><pubDate>Sun, 09 Mar 2008 21:05:56 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5941083</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5941083</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/03/09/dsa-in-review-so-far.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://codeplex.com/dsa"&gt;Data Structures and Algorithms&lt;/a&gt; (my project on &lt;a href="http://codeplex.com/"&gt;CodePlex&lt;/a&gt;) has been an awesome success to date, and continues to grow with every increment and I couldn't be happier about it.&lt;/p&gt;  &lt;p&gt;First I must say that for me &lt;a href="http://codeplex.com/dsa"&gt;DSA&lt;/a&gt; is really a side side project, so increments tend to be fairly slow (think one month increments - lately I've just been crazy busy though so I'm going to reduce the features per increment to get the bits out quicker so I can keep the healthy feedback loop).&lt;/p&gt;  &lt;p&gt;The goal of &lt;a href="http://codeplex.com/dsa"&gt;DSA&lt;/a&gt; is simple, provide a comprehensive library of data structures and algorithms that are not in .NET. If you look at the project source you will see that it is extensively tested, it's super important going forward that the bar is kept very high.&lt;/p&gt;  &lt;p&gt;This year will see the release of &lt;a href="http://codeplex.com/dsa"&gt;DSA&lt;/a&gt;, and I truly believe that it will be one of the most comprehensive implementations of the said features. &lt;/p&gt;  &lt;p&gt;Here's to the future of an exciting project - &lt;a href="http://codeplex.com/dsa"&gt;DSA&lt;/a&gt;!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5941083" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Data+Structures/default.aspx">Data Structures</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category></item><item><title>CPU Scheduling Simulator (CPUSS) 0.3 released</title><link>http://weblogs.asp.net/gbarnett/archive/2008/03/05/cpu-scheduling-simulator-cpuss-0-3-released.aspx</link><pubDate>Wed, 05 Mar 2008 14:22:32 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5919924</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5919924</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/03/05/cpu-scheduling-simulator-cpuss-0-3-released.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=10741"&gt;Download CPUSS 0.3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this release the new features include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;CPU Activity for each process (so you can perform more in depth analysis) &lt;/li&gt;    &lt;li&gt;Average wait time (average processes spent in the ready queue) &lt;/li&gt;    &lt;li&gt;Lightweight logger (persists data to a SQL Server database, wraps a LINQ to SQL datacontext) &lt;/li&gt;    &lt;li&gt;Expert strategy (view source to find out more) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;With CPUSS the idea is that every release really includes a new feature that allows further data gathering which enriches the analysis stage of algorithm design.&lt;/p&gt;  &lt;p&gt;The aim is to cover all the main bases in that regard for 1.0.&lt;/p&gt;  &lt;p&gt;At the moment the framework is purely used to gather metrics for scheduling strategies, however later on I want to provide some tooling that makes it easier to visualize the results and so on.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=10741"&gt;Download CPUSS 0.3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you have any input let me know :-)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5919924" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category></item><item><title>Emulating Round Robin with CPUSS</title><link>http://weblogs.asp.net/gbarnett/archive/2008/02/28/emulating-round-robin-with-cpuss.aspx</link><pubDate>Thu, 28 Feb 2008 14:40:04 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5877965</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5877965</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/02/28/emulating-round-robin-with-cpuss.aspx#comments</comments><description>&lt;p&gt;One of the more used strategies in general irrespective of CPU scheduling is the round robin strategy that allows you to define some time quantum that each process will execute for unless within that time it voluntarily releases the CPU, if it doesn't finish within that time quantum then it gets put back into a queue.&lt;/p&gt;  &lt;p&gt;Perhaps the hardest part of using the round robin, or certainly the most effective use is gained through appropriate selection of the time quantum. It tends to hold that the best time quantum to use is one that is greater than 80% of all CPU burst times.&lt;/p&gt;  &lt;p&gt;Emulating a load scenario using the round robin strategy with CPUSS is dead easy.&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: consolas"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; Cpuss;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;using&lt;/span&gt; Cpuss.Strategies;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; PerfApp&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Runner&lt;/span&gt; runner = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Runner&lt;/span&gt;(20, 30, 10, &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;RoundRobin&lt;/span&gt;(60));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; runner.Run();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #fbfbfb; color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Easy. Obviously you will want to perform some analysis on the metrics gathered for each process and so on but I won't go into that here. Also disregard the time quantum I have used (60ns) it was just chosen for demonstration purposes.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://codeplex.com/cpuss"&gt;Download CPUSS&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5877965" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category></item><item><title>DSA 0.4 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/02/21/dsa-0-4-released.aspx</link><pubDate>Thu, 21 Feb 2008 13:33:50 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5835163</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5835163</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/02/21/dsa-0-4-released.aspx#comments</comments><description>&lt;p&gt;The latest version of the Data Structures and Algorithms (DSA) library is out!&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=9403"&gt;Download DSA 0.4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This latest release contains the following additions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;QuickSort&amp;lt;T&amp;gt;&lt;/li&gt;    &lt;li&gt;UnorderedSet&amp;lt;T&amp;gt;&lt;/li&gt;    &lt;li&gt;Heap&amp;lt;T&amp;gt;&lt;/li&gt;    &lt;li&gt;ShellSort&amp;lt;T&amp;gt;&lt;/li&gt;    &lt;li&gt;InsertionSort&amp;lt;T&amp;gt;&lt;/li&gt;    &lt;li&gt;RepeatedWordCount&lt;/li&gt;    &lt;li&gt;ToBaseN (Binary, Octal, Hex)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=9403"&gt;Download DSA 0.4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The documentation has also had a facelift.&lt;/p&gt;  &lt;p&gt;DSA 0.5 features will be finalized in the next few days.&lt;/p&gt;  &lt;p&gt;Thank you to everyone who has downloaded DSA so far and the feedback provided, so far DSA has been received very well by the community and I hope this latest release will build on that.&lt;/p&gt;  &lt;p&gt;For more details on what is in DSA 0.4 please view &lt;a href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=9403"&gt;this&lt;/a&gt; page.&lt;/p&gt;  &lt;p&gt;Thanks&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5835163" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Data+Structures/default.aspx">Data Structures</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/DSA/default.aspx">DSA</category></item><item><title>CPU Scheduling Simulator (CPUSS) 0.2 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/02/15/cpu-scheduling-simulator-cpuss-0-2-released.aspx</link><pubDate>Fri, 15 Feb 2008 13:23:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5794140</guid><dc:creator>gbarnett</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5794140</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/02/15/cpu-scheduling-simulator-cpuss-0-2-released.aspx#comments</comments><description>&lt;P&gt;This release includes a few new scheduling strategies including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Priority First (PF) &lt;/LI&gt;
&lt;LI&gt;Round Robin (varying time quantum) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=10310" target=_blank mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=10310"&gt;Download CPUSS 0.2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;As you might expect in CPUSS 0.1 the Process type had no notion of a priority and by default all processes unless stated otherwise have a medium priority.&lt;/P&gt;
&lt;P&gt;RR - few words of warning. If you decide to use a time quantum of 1 then you should be aware that you are in effect giving each process in the ready queue 1/n of the CPU where n is the number of processes in the ready queue so it looks like each process has its own CPU, each of which of course is running at 1/n speed of the main CPU. It's somewhat a general rule that the time quantum used should be greater than 80% of CPU bursts (this will reduce the number of context switches).&lt;/P&gt;
&lt;P&gt;A custom strategy devised by me was meant to hit this release but I've not had time to properly evaluate the equation I've produced so that will unfortunately have to wait until CPUSS 0.3. The majority of strategies here on in will be those created by me, they may take properties from other established strategies but with various other preconditions and behaviours etc in the hope of creating a "better" strategy for particular scenarios.&lt;/P&gt;
&lt;P&gt;There are a few other features I want to add to the actual CPUSS framework in future releases including metrics for preemption, and some events to hook into for that. Quite a few other little features as well would be nice but I'll postpone them to a latter release. Like I mentioned earlier the emphasis for future releases is on the creation of new scheduling strategies using various techniques, e.g. expert rules (this will be in CPUSS 0.3) and fuzzy logic (latter releases).&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=10310" target=_blank mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=cpuss&amp;amp;ReleaseId=10310"&gt;Download CPUSS 0.2&lt;/A&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5794140" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category></item><item><title>Creating a quick scheduling simulation using CPUSS</title><link>http://weblogs.asp.net/gbarnett/archive/2008/01/31/creating-a-quick-scheduling-simulation-using-cpuss.aspx</link><pubDate>Thu, 31 Jan 2008 09:45:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5681029</guid><dc:creator>gbarnett</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5681029</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/01/31/creating-a-quick-scheduling-simulation-using-cpuss.aspx#comments</comments><description>&lt;P&gt;Just a quick note, and most is self explanatory (&lt;A href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605" target=_blank mce_href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605"&gt;download CPUSS here&lt;/A&gt;).&amp;nbsp; I'll talk about the code after.&lt;/P&gt;
&lt;DIV style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: consolas, courier new"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Cpuss;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; Cpuss.Strategies;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;SPAN style="COLOR: blue"&gt;namespace&lt;/SPAN&gt; ConsoleApplication1&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;{&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Program&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Main()&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;Runner&lt;/SPAN&gt; runner = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Runner&lt;/SPAN&gt;(20, 10, 65, &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Sjf&lt;/SPAN&gt;());&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runner.Completed += (o, e) =&amp;gt; &lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Simulation Time: {0}ns Total No. Processes: {1}\n\n"&lt;/SPAN&gt;, e.TotalTime, e.ProcessCount);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; runner.Run();&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"Process Metrics:\n\n"&lt;/SPAN&gt;);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: blue"&gt;foreach&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;KeyValuePair&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #2b91af"&gt;Process&lt;/SPAN&gt;&amp;gt; process &lt;SPAN style="COLOR: blue"&gt;in&lt;/SPAN&gt; runner.Metrics)&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;Process&lt;/SPAN&gt; p = process.Value;&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #2b91af"&gt;Console&lt;/SPAN&gt;.WriteLine(&lt;SPAN style="COLOR: #a31515"&gt;"PID: {0} Arrival Time: {1} Start Time: {2} Completion Time: {3}"&lt;/SPAN&gt;, &lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p.Id, p.ArrivalTime, p.StartTime, p.CompletionTime);&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P style="MARGIN: 0px"&gt;}&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;First of all in this case I am creating a simulation using 20 small , 10 medium, 65 large processes (I explained the bounds of the burst time values in &lt;A href="http://weblogs.asp.net/gbarnett/archive/2008/01/30/cpu-scheduling-simulator-cpuss-0-1-released.aspx" target=_blank mce_href="http://weblogs.asp.net/gbarnett/archive/2008/01/30/cpu-scheduling-simulator-cpuss-0-1-released.aspx"&gt;this post&lt;/A&gt;).&amp;nbsp; The Completed event is pretty self explanatory, this is raised when the simulation has finished executing, i.e. there are no more processes in the ready queue to execute.&amp;nbsp; To start the simulation you need only call the Run method on the Runner instance.&lt;/P&gt;
&lt;P&gt;Following the simulation I print out a few of the property values of the metrics gathered throughout the course of the simulation:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Id (synonymous with PID) &lt;/LI&gt;
&lt;LI&gt;Arrival Time &lt;/LI&gt;
&lt;LI&gt;Start Time &lt;/LI&gt;
&lt;LI&gt;Completion Time &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I could of included Burst Time as well, but for this demo to make the screen shot look more civilised and less busy (and I understand the console is not the best UI choice to present such data which will be resolved in later releases).&lt;/P&gt;
&lt;P&gt;That's it.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://gbarnett.org/BlogPosts/CreatingaquickschedulingsimulationusingC_8815/CWindowssystem32cmd.exe.png" target=_blank mce_href="http://gbarnett.org/BlogPosts/CreatingaquickschedulingsimulationusingC_8815/CWindowssystem32cmd.exe.png"&gt;&lt;IMG height=126 alt=CWindowssystem32cmd.exe src="http://gbarnett.org/BlogPosts/CreatingaquickschedulingsimulationusingC_8815/CWindowssystem32cmd.exe_thumb.png" width=240 border=0 mce_src="http://gbarnett.org/BlogPosts/CreatingaquickschedulingsimulationusingC_8815/CWindowssystem32cmd.exe_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605" target=_blank mce_href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605"&gt;Download CPUSS&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5681029" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category></item><item><title>CPU Scheduling Simulator (CPUSS) 0.1 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2008/01/30/cpu-scheduling-simulator-cpuss-0-1-released.aspx</link><pubDate>Wed, 30 Jan 2008 20:08:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5677766</guid><dc:creator>gbarnett</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5677766</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2008/01/30/cpu-scheduling-simulator-cpuss-0-1-released.aspx#comments</comments><description>&lt;P&gt;I have an interest in CPU scheduling strategies so I thought I would make a framework (&lt;A href="http://www.codeplex.com/cpuss" target=_blank mce_href="http://www.codeplex.com/cpuss"&gt;CPUSS&lt;/A&gt;) by which you could use standard strategies (first-come-first-served, shortest job first, round robin, priority etc) and also create your own and gather metrics from the strategies execution given &lt;EM&gt;n&lt;/EM&gt; processes over &lt;EM&gt;T&lt;/EM&gt; units of time (simulated time, simulated processes).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605" target=_blank mce_href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605"&gt;Download CPUSS 0.1&lt;/A&gt; (or download later after you have read my summary of what is included in this release).&lt;/P&gt;
&lt;P&gt;At the moment the features are fairly limited and the framework by which you can plug into to create your own strategies could be better, but remember this is the first &lt;STRONG&gt;early&lt;/STRONG&gt; release.&lt;/P&gt;
&lt;P&gt;Things to note about this release:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Simulates single core execution (multi-core/processor simulation is something that may be introduced depending on popularity, but would be interesting) &lt;/LI&gt;
&lt;LI&gt;Two strategies ship with the bits at the moment: 
&lt;UL&gt;
&lt;LI&gt;FCFS &lt;/LI&gt;
&lt;LI&gt;SJF &lt;/LI&gt;
&lt;LI&gt;More in CPUSS 0.1 this release was primarily built around getting something released pretty quickly and seeing if the simulation environment could hold for various strategies &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Metrics are gathered for free when using library strategies 
&lt;UL&gt;
&lt;LI&gt;If you create your own you must register a call to a single method, I won't bore you with the details as the documentation explains everything you need to know &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Events exist so you can hook into the simulation, currently: &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Runner.Started &lt;/LI&gt;
&lt;LI&gt;Runner.Completed &lt;/LI&gt;
&lt;LI&gt;Runner.ProcessStarted &lt;/LI&gt;
&lt;LI&gt;Runner.ProcessCompleted &lt;/LI&gt;
&lt;LI&gt;A preempted event will get added in the next release&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Metrics that are gathered for every process include: &lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;PID &lt;/LI&gt;
&lt;LI&gt;Burst Time &lt;/LI&gt;
&lt;LI&gt;Arrival Time &lt;/LI&gt;
&lt;LI&gt;Start Time &lt;/LI&gt;
&lt;LI&gt;Completion Time &lt;/LI&gt;
&lt;LI&gt;At the moment I've done nothing that requires a process to have a priority but strategies will be introduced in CPUSS 0.2 that will require this. &lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Auto generation of process "loads" based on the principle that you define processes of varying properties, i.e. small, medium and large processes.&amp;nbsp; The arrival time, and PID of the processes is auto generated.&amp;nbsp; This feature will be particularly useful when testing custom strategies with varying scenarios to gain more balanced and comprehensive data to analyse further. 
&lt;UL&gt;
&lt;LI&gt;Small - 1ms - 40ms &lt;/LI&gt;
&lt;LI&gt;Medium - 41ms - 100ms &lt;/LI&gt;
&lt;LI&gt;Large - 101ms - 250ms &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I think I have summarized up the main features.&amp;nbsp; Any feedback is gracefully encouraged.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605" target=_blank mce_href="http://www.codeplex.com/cpuss/Release/ProjectReleases.aspx?ReleaseId=8605"&gt;Download CPUSS 0.1&lt;/A&gt;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5677766" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Research/default.aspx">Research</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Open+Source/default.aspx">Open Source</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPU+Scheduling/default.aspx">CPU Scheduling</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/CPUSS/default.aspx">CPUSS</category></item><item><title>DSA 0.3 released!</title><link>http://weblogs.asp.net/gbarnett/archive/2007/12/24/dsa-0-3-released.aspx</link><pubDate>Mon, 24 Dec 2007 22:28:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5498040</guid><dc:creator>gbarnett</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/gbarnett/rsscomments.aspx?PostID=5498040</wfw:commentRss><comments>http://weblogs.asp.net/gbarnett/archive/2007/12/24/dsa-0-3-released.aspx#comments</comments><description>&lt;P&gt;Just before Christmas as well :-)&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=7657" mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=7657"&gt;Download DSA 0.3&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;New features for this release include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Probability Search&lt;/LI&gt;
&lt;LI&gt;Power algorithm&lt;/LI&gt;
&lt;LI&gt;Greatest common denominator algorithm&lt;/LI&gt;
&lt;LI&gt;Reverse words algorithm&lt;/LI&gt;
&lt;LI&gt;Set collection (will be renamed to OrderedSet in DSA 0.4 and an unordered Set will be introduced in DSA 0.4 as well)&lt;/LI&gt;
&lt;LI&gt;Sequential search&lt;/LI&gt;
&lt;LI&gt;Merge sort&lt;/LI&gt;
&lt;LI&gt;Merge ordered&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Some other not so major features include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Pseudo code for around 75% of everything to enable easy language ports (100% of everything will be in DSA 0.4 - the paper to screen conversion is taking a while)&lt;/LI&gt;
&lt;LI&gt;Queue and Stack have been dropped - DSA will only support collections not in the BCL&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;ArrayList is being dropped in DSA 0.4&lt;/LI&gt;&lt;/UL&gt;
&lt;LI&gt;Complete XML documentation for every public algorithm/data structure - also private methods are XML doc'd as well.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Also this is the first release to include offline documentation (or documentation of any kind excluding XML docs).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://gbarnett.org/BlogPosts/DSA0.3released_13AF1/DataStructuresandAlgorithmsDocumentation.png" target=_blank mce_href="http://gbarnett.org/BlogPosts/DSA0.3released_13AF1/DataStructuresandAlgorithmsDocumentation.png"&gt;&lt;IMG height=182 alt="Data Structures and Algorithms Documentation" src="http://gbarnett.org/BlogPosts/DSA0.3released_13AF1/DataStructuresandAlgorithmsDocumentation_thumb.png" width=240 border=0 mce_src="http://gbarnett.org/BlogPosts/DSA0.3released_13AF1/DataStructuresandAlgorithmsDocumentation_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=7657" mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=7657"&gt;Download DSA 0.3&lt;/A&gt;&lt;/P&gt;
&lt;H4&gt;DSA 0.4&lt;/H4&gt;
&lt;P&gt;This release will be out mid February and will introduce some new key algorithms and collections.&amp;nbsp; I am in the process of finalizing the features to be added in DSA 0.4 but you can expect more tree data structures as well as balancing algorithms to further optimise tree data structures.&amp;nbsp; I will post something when this is finalized - will be the back end of December.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=7657" mce_href="https://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=dsa&amp;amp;ReleaseId=7657"&gt;Download DSA 0.3&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thank you for your support and if there is anything you would like to suggest then it is not too late...also if you find any issues please let me know.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=5498040" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/gbarnett/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Data+Structures/default.aspx">Data Structures</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Algorithms/default.aspx">Algorithms</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://weblogs.asp.net/gbarnett/archive/tags/DSA/default.aspx">DSA</category></item></channel></rss>