<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15025712</id><updated>2012-01-03T16:42:18.056-08:00</updated><category term='debug'/><category term='FSB'/><category term='toro-1.1.3'/><category term='threads'/><category term='multiprocessing'/><category term='gdb'/><category term='threading cooperative'/><category term='remote'/><category term='GDT'/><category term='migration'/><category term='multicore'/><category term='x86'/><category term='operatin system'/><category term='Hypertransport'/><category term='SMP'/><category term='NUMA'/><category term='pascal'/><category term='locks'/><category term='scheduler'/><category term='bugcon'/><category term='intel'/><category term='toro'/><category term='kernel'/><category term='context switching'/><category term='qemu'/><category term='Presentation'/><category term='amd'/><category term='QPI'/><category term='rings'/><category term='protection'/><category term='freepascal'/><category term='x86-64'/><category term='atomic operations'/><category term='patch'/><category term='bochs'/><title type='text'>Toro kernel</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15025712.post-1288960328242390302</id><published>2012-01-03T16:42:00.000-08:00</published><updated>2012-01-03T16:42:18.075-08:00</updated><title type='text'>IOAPIC supported!</title><content type='html'>Until the latest TORO's source, I was using 8259 controller to catch interrupts, but the problem was all the interrupts were captured by the Boot Strap Processor (or core #0). This is not &amp;nbsp;agree with the dedicate hardware model.&amp;nbsp;&lt;div&gt;In this way, I have started to use the IOAPIC instance of 8259 when TORO runs in a multicore environment. Thus, I can redirect the IRQ to the core where the hardware was dedicated.&amp;nbsp;This is new a new step toward a real multicore kernel.&amp;nbsp;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Matias E. Vara&lt;/div&gt;&lt;div&gt;www.torokernel.org&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-1288960328242390302?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/1288960328242390302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=1288960328242390302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1288960328242390302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1288960328242390302'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2012/01/ioapic-supported.html' title='IOAPIC supported!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2594152379623849865</id><published>2011-12-12T09:17:00.000-08:00</published><updated>2011-12-12T20:02:22.885-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NUMA'/><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='threads'/><title type='text'>Fixed an important bug in emigrate procedure</title><content type='html'>&lt;div style="text-align: justify;"&gt;That's just a&amp;nbsp;brief post about a recent change in the way that Toro migrates threads.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Previously, when a Thread running in core #0 wanted create a new Thread in core #1, function &lt;i&gt;ThreadCreate&lt;/i&gt; allocated the &lt;i&gt;TThread&lt;/i&gt; structure, &lt;i&gt;TLS&lt;/i&gt; and the &lt;i&gt;Stack&lt;/i&gt;&amp;nbsp;then, It migrated the whole &lt;i&gt;TThread &lt;/i&gt;structure to the core #1.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The main problem in this mechanism was that all memories block were allocated in parent core. This is a&amp;nbsp;serious&amp;nbsp;infraction in &amp;nbsp;the NUMA model: &lt;i&gt;TThread&lt;/i&gt;, &lt;i&gt;TLS&lt;/i&gt; and the&lt;i&gt; Stack&lt;/i&gt; are not already local memory.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Thus, I rewrote the way that Threads are migrated. When a Thread wants to create a new one&amp;nbsp;remotely, Toro still invokes &lt;i&gt;ThreadCreate&lt;/i&gt; &lt;b&gt;BUT&lt;/b&gt; it is executed in the remote core. Instance of migrate the &lt;i&gt;TThread&lt;/i&gt; structure, now Toro migrates a set of arguments to be passed toward &lt;i&gt;ThreadCreate&lt;/i&gt;. When &lt;i&gt;ThreadCreate&lt;/i&gt; finishes, the parent thread retrieve the&lt;i&gt; TThreadID&lt;/i&gt; value or &lt;i&gt;nil&lt;/i&gt; if it fails.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As we can see, while a local thread is made&amp;nbsp;immediately&amp;nbsp;when &lt;i&gt;ThreadCreate&lt;/i&gt; is invoked, a remote thread &amp;nbsp;spend two steps of latency: one for migrate the parameters and other for retrieve the result. &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Matias E. Vara&lt;/div&gt;&lt;div&gt;www.torokernel.org&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2594152379623849865?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2594152379623849865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2594152379623849865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2594152379623849865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2594152379623849865'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/12/fixed-important-bug-in-emigrate.html' title='Fixed an important bug in emigrate procedure'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-3477170115659990468</id><published>2011-08-25T17:58:00.000-07:00</published><updated>2011-08-25T19:40:10.502-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='qemu'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='remote'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='patch'/><title type='text'>Patching GDB 7.3 for QEMU remote kernel debug</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;div style="text-align: justify; "&gt;This time I will try to explain how patch GDB 7.3 in order to debug a kernel using QEMU through remote debuging. If we try to debug remotely, we'll find a error message like:&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px; line-height: 14px; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "&gt;Remote packet too long: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; "&gt;I am not sure about problem but I suppose it's about register size. When the virtual machine jumps from real mode to long/protect mode, the register size changes but GDB doesn't know that. Thus, when GDB receives a bigger packet than it expects, it fails. Therefore, The patch just increments the buffer in those cases.&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: justify; "&gt;The first step is to download GDB 7.3 from &lt;a href="http://www.gnu.org/s/gdb/download/"&gt;http://www.gnu.org/s/gdb/download/&lt;/a&gt;, I've implemented the patch on 7.3 version but I think it works in oldest too.&lt;/div&gt;&lt;div style="text-align: justify; "&gt;Once downloaded and uncompressed, edit the file&lt;i&gt; gdb-7.3/gdb/remote.c &lt;/i&gt;and go to 5693 line. That's the &lt;span class="Apple-style-span"&gt;process_g_packet&lt;/span&gt; procedure. Now, look for and replace the original source with the following lines:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;/* Further sanity checks, with knowledge of the architecture. */&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;//if (buf_len &amp;gt; 2 * rsa-&amp;gt;sizeof_g_packet)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;// error (_("Remote 'g' packet reply is too long: %s"), rs-&amp;gt;buf);&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;if (buf_len &amp;gt; 2 * rsa-&amp;gt;sizeof_g_packet)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;{&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;rsa-&amp;gt;sizeof_g_packet = buf_len;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;for (i = 0; i &amp;lt; gdbarch_num_regs (gdbarch); i++)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; if (rsa-&amp;gt;regs[i].pnum == -1)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; continue;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; if (rsa-&amp;gt;regs[i].offset &amp;gt;= rsa-&amp;gt;sizeof_g_packet)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; rsa-&amp;gt;regs[i].in_g_packet = 0;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; else&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; rsa-&amp;gt;regs[i].in_g_packet = 1;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;	&lt;/span&gt; }&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, it just remains to execute:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;$ ./configure&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;$ make&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;It must be enough to run GDB correctly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Matias E. Vara&lt;/div&gt;&lt;div&gt;www.torokernel.org&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-3477170115659990468?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/3477170115659990468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=3477170115659990468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3477170115659990468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3477170115659990468'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/08/patching-gdb-73-for-qemu-remote-kernel.html' title='Patching GDB 7.3 for QEMU remote kernel debug'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-8421672119348116618</id><published>2011-08-23T15:03:00.000-07:00</published><updated>2011-08-23T19:37:56.510-07:00</updated><title type='text'>Toro in Microelectronic Conference (UNLP)</title><content type='html'>Toro will be shown in the Microelectronic Conference at University of La Plata, Argentina. In the work that I've done I will show the kernel capabilities and a few tests comparing Toro with a general purpose operative system. The conference will be the 8th of September in "Sala A" at 16.20hs.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Matias E. Vara&lt;/div&gt;&lt;div&gt;www.torokernel.org   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-8421672119348116618?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/8421672119348116618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=8421672119348116618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8421672119348116618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8421672119348116618'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/08/toro-in-microelectronic-conference-unlp.html' title='Toro in Microelectronic Conference (UNLP)'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-910846197849402557</id><published>2011-07-30T15:50:00.000-07:00</published><updated>2011-07-30T16:46:42.575-07:00</updated><title type='text'>Toro in Ubuntu 11.04!</title><content type='html'>Now It is possible to compile and test TORO easy trough  Linux Ubuntu 11.04. Actually, I am moving the whole project to Linux environment. In other way, I have started to use GIT in order to simplify the developed. I have updated the WIKI, giving the instructions to compile and TORO in Ubuntu.&lt;div&gt; Enjoy!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Matias E. Vara&lt;/div&gt;&lt;div&gt;www.torokernel.org&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-910846197849402557?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/910846197849402557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=910846197849402557' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/910846197849402557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/910846197849402557'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/07/toro-on-ubuntu-1104.html' title='Toro in Ubuntu 11.04!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-1921908750705699608</id><published>2011-06-24T03:07:00.001-07:00</published><updated>2011-06-24T05:27:53.271-07:00</updated><title type='text'>Toro bootloader</title><content type='html'>How can I start it?. The bootloader is a project itself, if you want to write a hobby OS you do not have to start from the bootloader. First, It will take you a lot of time, second, it is too hard to debug so you will become disappointed fast and you wont finish. I think that the important and interested things happens inside the kernel. Anyway, there are a few crazy guys that they want to make one. For that kind of guys, I have just started to write a few documentation about &lt;b&gt;Toro's bootloader&lt;/b&gt; in the &lt;b&gt;wiki&lt;/b&gt;. I hope that you find it interesting and appreciate the effort done (Yes, I don't like to write documentation but I know that it is too important ;) ).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Matias E. Vara&lt;/div&gt;&lt;div&gt;www.torokernel.org&lt;/div&gt;&lt;div&gt;     &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-1921908750705699608?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/1921908750705699608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=1921908750705699608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1921908750705699608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1921908750705699608'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/06/toro-bootloader.html' title='Toro bootloader'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2337577193857495620</id><published>2011-04-17T07:23:00.001-07:00</published><updated>2011-05-08T07:34:15.467-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='locks'/><category scheme='http://www.blogger.com/atom/ns#' term='SMP'/><category scheme='http://www.blogger.com/atom/ns#' term='atomic operations'/><category scheme='http://www.blogger.com/atom/ns#' term='protection'/><title type='text'>Memory Protection in a multicore environment</title><content type='html'>   	 	 	 	&lt;style type="text/css"&gt;p { margin-bottom: 0.08in; }&lt;/style&gt;  &lt;p style="margin-bottom: 0in;"&gt;This post is contained into the final paper of Matias Vara named “Paralelizacion de Algoritmos Numericos con TORO Kernel” to get the degree on Electronic Engeniering from Universidad de La Plata. These theorical documents help to understand the kernel design.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;/p&gt;   &lt;p style="margin-bottom: 0in;"&gt; When a Kernel is designed for a multicore system, the shared memory must be protected of concurrent writing accesses. The memory's protection increments kernel code complexity and decreases operative system's performance.                                                                                            If one or more processors are having access to some data at the same time, mutual exclusion must be realized to protect shared data in multicore systems.&lt;/p&gt;&lt;div style="text-align: justify;"&gt;In a mono-processor multi-task system the scheduler often switch the task, so the unique risk is while the task is changing the information the scheduler take it out the cpu. The protecction is this case is easy: disabled the scheduler while the task is in a critical section and then enabled again.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In a Multiprocessor system that solution can't be implemented. When we have tasks running in parallel, two or more tasks may execute the same line in the same time; Hence, the scheduler state doesn't care.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Resources protection&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For protect resources in a multiprocessing system we need to define &lt;i&gt;atomic operations. &lt;/i&gt;These are implemented in just one assembler instruction but several clock cycles.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Atomic operations&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In every processor, write and read operations are always atomic. This means that when the operation is executing nobody is using that memory area.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;For certain kind of operations the processor blocked the memory, with this purpose is provided the #Lock signal that it is used for critical memory operations. While this signal is high, the calls from other processors are blocked.&lt;/div&gt;&lt;div&gt;Bus memory access is non-deterministic; this means that the first one processor gets the bus. All the processors compete for the bus, then in a system with a lot processor this is a bottleneck.&lt;/div&gt;&lt;div&gt;But, why do we need atomic operations? Supposing that we have to increment a counter, the pascal's source is :&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;counter := counter +1;&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;If this line is executed at the same time, in several processors, the result will be incorrect if it is not atomic.&lt;/div&gt;&lt;div&gt;The correct value is 2, using atomic operations the processors access to the variable once per time and the result is corrected. The time to the sincronization increments with the number of processor. The common atomics operations are "TEST and SET" and "COMPARE and SWAP".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Impact of atomic operations&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;In system with a few processors, atomic operations does not represent a big deal and they are a fast solution for shared memory problem; However, if we increment the number of processors then we make a bottleneck.&lt;/div&gt;&lt;div&gt;Supposing  a computer with 8 cores and with 1.45 GHz [1], while an instruction average time is 0.24 ns, atomic increment spends 42.09 ns. The time wasted making lock becomes critical.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;[1] Paula McKenney: RCU vs. Locking Performance on Different Types of CPUs.&lt;br /&gt;http://www.rdrop.com/users/paulmck/RCU/LCA2004.02.13a.pdf, 2005&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2337577193857495620?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2337577193857495620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2337577193857495620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2337577193857495620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2337577193857495620'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/04/memory-protection-in-multicore.html' title='Memory Protection in a multicore environment'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2174289737431746193</id><published>2011-04-05T15:35:00.000-07:00</published><updated>2011-04-10T14:26:31.072-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NUMA'/><category scheme='http://www.blogger.com/atom/ns#' term='SMP'/><title type='text'>Memory organization in a multicore system: Conclusion.</title><content type='html'>&lt;div style="text-align: justify;"&gt;From programmer point of view, the access to local and remote memory is transparent. An NUMA could be implemented in a SMP system without any problem. However, the OS must do an efficient memory assignation for improve these &lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener otras posibles traducciones" class="hps"&gt;technologies&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;In the case of SMP, memory administation is easy to implemented while in NUMA is not. The system has to assign memory depending of the cpu where the process is running. Every CPU has an own memory bank. The system performance is poor if there are more remote access than local.&lt;br /&gt;Windows has supported NUMA since 2003 version and Linux since 2.6.X. Both of them gives syscalls to exploit NUMA.&lt;br /&gt;TORO kernel is optimized for NUMA&lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener otras posibles traducciones" class="hps"&gt; technologies, keeping in mind the moderns processors. The unique way to support NUMA is using dedicate buses. In the high performance environment these improves mustn't forget.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener otras posibles traducciones" class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener otras posibles traducciones" class="hps"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2174289737431746193?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2174289737431746193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2174289737431746193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2174289737431746193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2174289737431746193'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/04/memory-organization-in-multicore-system.html' title='Memory organization in a multicore system: Conclusion.'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2137797697119186518</id><published>2011-03-13T04:44:00.000-07:00</published><updated>2011-03-13T04:48:28.303-07:00</updated><title type='text'>e1000 driver for TORO</title><content type='html'>I have just started the implementation of e1000 driver like Intel Gigabit or compatible. I am using Minix 3 source and qemu as an emulator (Begin 0.12.0 version it supports e1000 emulator). The detection procedure is complete as you can see in the picture, It is uploaded to SVN.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-JTRCohT1YxQ/TXyuaYfA95I/AAAAAAAAAMY/oJHP7nY47ck/s1600/toro-qemu.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 240px;" src="http://4.bp.blogspot.com/-JTRCohT1YxQ/TXyuaYfA95I/AAAAAAAAAMY/oJHP7nY47ck/s400/toro-qemu.JPG" alt="" id="BLOGGER_PHOTO_ID_5583529406304941970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Saludos!&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2137797697119186518?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2137797697119186518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2137797697119186518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2137797697119186518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2137797697119186518'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/03/e1000-driver-for-toro.html' title='e1000 driver for TORO'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JTRCohT1YxQ/TXyuaYfA95I/AAAAAAAAAMY/oJHP7nY47ck/s72-c/toro-qemu.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2094472352799578453</id><published>2011-03-06T04:42:00.000-08:00</published><updated>2011-03-06T13:58:36.739-08:00</updated><title type='text'>Memory organization in a multicore system II</title><content type='html'>&lt;div style="text-align: left;"&gt;Continuation of the article Memory organization in a multicore system.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Non uniform memory architectures.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;In a NUMA system the processors have &lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener traducciones alternativas" class="hps"&gt;assigned a memory region, it access more fastly that others to it, however every procesor can access to every memory position. It is used message passing to remote memory access. The programmer see a continuos memory space and the hardware makes that abstraction. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first one in the NUMA tecnology was  Sequent Computer Systems. They introduced NUMA at '90. Afterwards it was &lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener traducciones alternativas" class="hps"&gt;acquired&lt;/span&gt;&lt;/span&gt; by IBM and the tecnology was implemented in Power processors.&lt;br /&gt;&lt;br /&gt;In other way, IBM made it own NUMA implementation called SE (Shared Everything). This implementation is presented in Power6 processors.&lt;br /&gt;&lt;br /&gt;The Intel NUMA implementation is called QuickPath Interconnect. It allows to share memory between the processors and it is transparent for the Operative System. Each processor has a point to point controller.&lt;br /&gt;&lt;br /&gt;AMD implementation uses fast links called "Hypertransport Links". In this implementation each procesor has a memory controller and a local memory. The processors are connected between them &lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener traducciones alternativas" class="hps"&gt;through a coherent Hypertransport link.&lt;/span&gt;&lt;/span&gt; Futhermore, each processor has a bi-directional no-coherent bus for IO devices.&lt;br /&gt;&lt;br /&gt;Using Point-to-Point controller, the processor can access to memory region more fastly than other and there is an important latency if it tray to access to remote memory. In this way, we have two kind of memory: Local Memory and Remote.&lt;br /&gt;&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2094472352799578453?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2094472352799578453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2094472352799578453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2094472352799578453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2094472352799578453'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/03/memory-organization-in-multicore-system.html' title='Memory organization in a multicore system II'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-3379806431680427377</id><published>2011-01-15T10:45:00.000-08:00</published><updated>2011-02-12T11:00:34.931-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NUMA'/><category scheme='http://www.blogger.com/atom/ns#' term='locks'/><category scheme='http://www.blogger.com/atom/ns#' term='SMP'/><category scheme='http://www.blogger.com/atom/ns#' term='multicore'/><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='amd'/><category scheme='http://www.blogger.com/atom/ns#' term='Hypertransport'/><category scheme='http://www.blogger.com/atom/ns#' term='QPI'/><category scheme='http://www.blogger.com/atom/ns#' term='FSB'/><title type='text'>Memory organization in a Multicore system</title><content type='html'>This paper is a part of the final project called "Parallel Algorithm with TORO kernel", Electronic Engineering, Universidad Nacional de La Plata. In the next months I will publish more papers about my final project. Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Memory organization in a Multicore system&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Actually, the "Uniform memory access" is the common way to access the memory (See SMP). In this kind of arquitecture, every processor can read every byte of memory, and the processors are independent. In this case, a shared bus is used and the processors compite but only one can write or read. In this environments just one processor can access to a byte in a gived time.  For the programmers the memory access is transparent.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In  1992 Intel made the first SMP processor called Pentium PRO. And the memory bus was called Front Side Bus.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TTHpESf4zII/AAAAAAAAALs/nfa8U2lp1R0/s1600/im1.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 395px; height: 255px;" src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TTHpESf4zII/AAAAAAAAALs/nfa8U2lp1R0/s400/im1.JPG" alt="" id="BLOGGER_PHOTO_ID_5562483274673605762" border="0" /&gt;&lt;/a&gt;&lt;span style="" lang="ES"&gt;That is a bi-directional bus, it is too simple and very cheap, and in theory it scales well.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="" lang="ES"&gt;The next intel step was partition the FSB in two &lt;/span&gt;&lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener traducciones alternativas" class="hps"&gt;independent bus, but the cache coherency was a bootle-neck.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;  &lt;a href="http://3.bp.blogspot.com/_F2PUAK0QAGQ/TTHpTw8MNxI/AAAAAAAAAL0/WgJrvFWglMA/s1600/im2.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 364px; height: 249px;" src="http://3.bp.blogspot.com/_F2PUAK0QAGQ/TTHpTw8MNxI/AAAAAAAAAL0/WgJrvFWglMA/s400/im2.JPG" alt="" id="BLOGGER_PHOTO_ID_5562483540543420178" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span style="" lang="ES"&gt;In 2007 it was implemented a bus per processor.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;  &lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://4.bp.blogspot.com/_F2PUAK0QAGQ/TTHpmKjck8I/AAAAAAAAAL8/ZVB50NZQyYA/s1600/im3.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 383px; height: 190px;" src="http://4.bp.blogspot.com/_F2PUAK0QAGQ/TTHpmKjck8I/AAAAAAAAAL8/ZVB50NZQyYA/s400/im3.JPG" alt="" id="BLOGGER_PHOTO_ID_5562483856656602050" border="0" /&gt;&lt;/a&gt;This kind of architecture is used by Atom, Celeron, Pentium and Core2 of intel.&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="ES"&gt;In a system with many cores, the traffic &lt;/span&gt;&lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener traducciones alternativas" class="hps"&gt;through the FSB is heavy. The FSB doesn´t scale and it has a limit of 16 processor per bus. So the FSB is wall for the new multicores &lt;/span&gt;&lt;/span&gt;&lt;span id="result_box" class="short_text" lang="en"&gt;&lt;span title="Haz clic para obtener traducciones alternativas" class="hps"&gt;technology.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="text-align: justify;"&gt;We can have  CPU that it executes instructions fastly but we waste time if we can´t make the capture and decodification fastly. In the best case, we lose one cycle more reading from the memory.  &lt;span style="" lang="ES"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="ES"&gt;Since 2001 the FSB has been replaced with  point to point devices as Hypertransport or Intel QuickPath Interconnect. That changed the model memory to non uniform memory access&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: left;"&gt;&lt;span style="" lang="ES"&gt;Matias  E. Vara                                                                                                                    www.torokernel.org&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="ES"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-3379806431680427377?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/3379806431680427377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=3379806431680427377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3379806431680427377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3379806431680427377'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2011/01/memory-organization-in-multicore-system.html' title='Memory organization in a Multicore system'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_F2PUAK0QAGQ/TTHpESf4zII/AAAAAAAAALs/nfa8U2lp1R0/s72-c/im1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2567656935892214562</id><published>2010-12-30T21:12:00.000-08:00</published><updated>2010-12-30T21:26:01.137-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GDT'/><category scheme='http://www.blogger.com/atom/ns#' term='x86'/><category scheme='http://www.blogger.com/atom/ns#' term='rings'/><category scheme='http://www.blogger.com/atom/ns#' term='protection'/><category scheme='http://www.blogger.com/atom/ns#' term='toro'/><title type='text'>x86 rings protection on Toro</title><content type='html'>&lt;div style="text-align: justify;"&gt;In x86 arch there are 4 ring levels. Ring 0 is the most privileged level and ring 3 is the least. In a OS the kernel runs in ring 0 and the user application runs in ring 3.&lt;br /&gt;&lt;br /&gt;Ring 0 descriptors are used by the kernel and ring 3 descriptors are used by the user. The GDT supports up to 8192 descriptors but the OS just uses 4, two for kernel´s text and data, and two for user´s text and data. With these descriptors the kernel can access to all memory, for example 4GB in 32 bits.&lt;br /&gt;&lt;br /&gt;When the OS uses privileged levels the processor has to check if every operation is valid, these mechanisms adds latencies. In a multitasking OS protection is essential and it protects the kernel code and data.      &lt;br /&gt;&lt;br /&gt;But what happens with dedicated multithread application? It runs alone in the system and it was written carefully, we need protection in this case? guessing that, we can reduce a lot the OS.&lt;br /&gt;For example, if we want to implement syscalls, we don´t need traps. If the kernel and user application are in same ring, we just may use “call” instruction to kernel´s function. Actually, OS are using interruptions for support syscalls but they are too expensive. Don´t forget that we are jumping from ring 0 to ring 3.&lt;br /&gt;&lt;br /&gt;In other way, when we are running  user application and a interruption happens, the processor has to jump from ring 3 to ring 0, that is too expensive. In general cases a kernel procedure handles the interruption. If the user application runs in the same level that the kernel, we don´t spend time in latencies. &lt;br /&gt;&lt;br /&gt;On TORO, the kernel and user application run in ring 0. And cause the kernel and app are compiling together, the syscalls are implemented easy. It just uses “call” instruction. &lt;br /&gt;&lt;br /&gt;Matias E. Vara&lt;br /&gt;&lt;/div&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Tabla normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:"Times New Roman";  mso-fareast-theme-font:minor-fareast;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2567656935892214562?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2567656935892214562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2567656935892214562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2567656935892214562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2567656935892214562'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/12/rings-protection-in-toro.html' title='x86 rings protection on Toro'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2765345108024694430</id><published>2010-11-26T17:38:00.001-08:00</published><updated>2010-11-28T07:21:36.890-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='operatin system'/><category scheme='http://www.blogger.com/atom/ns#' term='toro-1.1.3'/><category scheme='http://www.blogger.com/atom/ns#' term='bochs'/><title type='text'>Old TORO</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:100%;"  &gt;&lt;span class="Apple-style-span"&gt;Since 2006, the year in which TORO objectives were modified, the TORO OS project corresponding to the version 1.xx was discontinued. These versions achieved a great success in terms of functionality. The most stable version was 1.1.3, sometimes I see the source of those versions and I feel very sorry of have abandoned it, however it was impossible to me to continue with both projects simultaneously. So I decided to make a small tribute to those versions. For that i will show next how to test TORO &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:100%;"  &gt;&lt;span class="Apple-style-span"&gt;1.1.3 &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:100%;"  &gt;&lt;span class="Apple-style-span"&gt;through &lt;a href="http://bochs.sourceforge.net/"&gt;BOCHS&lt;/a&gt;. I've put some screenshots for you to observe the beauty of a shell in PASCAL. Enjoy it!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal" style="text-align: justify; margin-bottom: 0.0001pt; line-height: normal; vertical-align: top;"&gt;&lt;span lang="EN"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="font-size:100%;"&gt;For these simulations is necessary x86 Bochs, remember that the 1.1.3 version is only for 32 bits. Here I include the &lt;span style="font-weight: bold; font-style: italic;"&gt;torobch.bxrc&lt;/span&gt; file contents.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify; margin-bottom: 0.0001pt; line-height: normal; vertical-align: top; font-style: italic;font-family:courier new;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;megs: 256&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify; margin-bottom: 0.0001pt; font-style: italic;font-family:courier new;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;romimage: file=BIOS-bochs-latest, address=0xf0000&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="text-align: justify; margin-bottom: 0.0001pt; font-style: italic;font-family:courier new;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;floppya: 1_44=toro-1.1.3.img, status=inserted&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; margin-bottom: 0.0001pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;boot: floppy&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; margin-bottom: 0.0001pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; margin-bottom: 0.0001pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;It is necessary to download the toro-1.1.3 image from the link:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;a href="http://sourceforge.net/projects/toro/files/images/toro-1.1.3/toro-1.1.3.img/download"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;http://sourceforge.net/projects/toro/files/images/toro-1.1.3/toro-1.1.3.img/download&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; margin-bottom: 0.0001pt;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify; margin-bottom: 0.0001pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;If everything is allright, the first window you will see when execute BOCHS will be:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-size:16px;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TPBiy4dru6I/AAAAAAAAAFM/sh_hs-7UCNo/s1600/sc1.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TPBiy4dru6I/AAAAAAAAAFM/sh_hs-7UCNo/s400/sc1.JPG" alt="" id="BLOGGER_PHOTO_ID_5544039767582948258" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:small;"  &gt;Corresponds the GRUB bootloader, there you select TORO-1.1.3 and press enter.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;It will start to load the OS and then the Shell:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style=";font-family:Georgia,serif;font-size:16px;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://3.bp.blogspot.com/_F2PUAK0QAGQ/TPBiz8oZ7SI/AAAAAAAAAFU/IzWjx6VSgsg/s1600/sc2.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_F2PUAK0QAGQ/TPBiz8oZ7SI/AAAAAAAAAFU/IzWjx6VSgsg/s400/sc2.JPG" alt="" id="BLOGGER_PHOTO_ID_5544039785881529634" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:small;"  &gt;We are ready to enter commands on TORO. The first command we will see is the &lt;i&gt;ls&lt;/i&gt; that, as you already know, lists the actual directory.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_F2PUAK0QAGQ/TPBiz2AQhMI/AAAAAAAAAFc/p3qjqtzY0j8/s1600/sc3.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_F2PUAK0QAGQ/TPBiz2AQhMI/AAAAAAAAAFc/p3qjqtzY0j8/s400/sc3.JPG" alt="" id="BLOGGER_PHOTO_ID_5544039784102528194" border="0" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Now we go to the directory where finds TORO's source using &lt;i&gt;cd&lt;/i&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style=";font-family:Georgia,serif;font-size:16px;"  &gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_F2PUAK0QAGQ/TPBi0YKKMQI/AAAAAAAAAFk/pkoP4ZXmbwM/s1600/sc4.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_F2PUAK0QAGQ/TPBi0YKKMQI/AAAAAAAAAFk/pkoP4ZXmbwM/s400/sc4.JPG" alt="" id="BLOGGER_PHOTO_ID_5544039793270862082" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:small;"  &gt;And we are going to run &lt;i&gt;echo printk.pas&lt;/i&gt;, this will display the file content on screen.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style=";font-family:Georgia,serif;font-size:16px;"  &gt;&lt;a href="http://4.bp.blogspot.com/_F2PUAK0QAGQ/TPBi06Cym1I/AAAAAAAAAFs/8cbi5DV-pCc/s1600/SC5.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_F2PUAK0QAGQ/TPBi06Cym1I/AAAAAAAAAFs/8cbi5DV-pCc/s400/SC5.JPG" alt="" id="BLOGGER_PHOTO_ID_5544039802366761810" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:Arial,sans-serif;font-size:small;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:Arial,sans-serif;font-size:small;"  &gt;You can see all Shell commands at /BIN directory, these are:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://2.bp.blogspot.com/_F2PUAK0QAGQ/TPBjqJmPUNI/AAAAAAAAAF8/hCjMZBObiUY/s1600/sc7.JPG"&gt;&lt;span class="Apple-style-span" style="margin-right: auto; margin-left: auto;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style=";font-family:Georgia,serif;font-size:16px;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;a href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TPBjp0W_NCI/AAAAAAAAAF0/crfTFsC88jY/s1600/SC6.JPG" style="font-family: Georgia,serif;"&gt;&lt;img src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TPBjp0W_NCI/AAAAAAAAAF0/crfTFsC88jY/s400/SC6.JPG" alt="" id="BLOGGER_PHOTO_ID_5544040711373927458" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:small;"  &gt;Running &lt;i&gt;reboot&lt;/i&gt; the system is closed and we can turn off the virtual machine.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span" style=";font-family:Georgia,serif;font-size:16px;"  &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="margin-right: auto; margin-left: auto;"&gt;&lt;img src="http://2.bp.blogspot.com/_F2PUAK0QAGQ/TPBjqJmPUNI/AAAAAAAAAF8/hCjMZBObiUY/s400/sc7.JPG" alt="" id="BLOGGER_PHOTO_ID_5544040717075042514" style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 250px;" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:arial;font-size:small;"  &gt;I hope you enjoyed it, make your own experiences running commands. You can also burn the image in a 3 ½ floppy and try it in a real machine.&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Attention: Versions 1.x.x have no relation with version 0.xx, they are different things.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="color: rgb(34, 34, 34); line-height: 18px;font-family:Arial,Tahoma,Helvetica,FreeSans,sans-serif;" &gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 12pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="ES"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Matias E. Vara&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 12pt;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span lang="ES"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;www.torokernel.org&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2765345108024694430?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2765345108024694430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2765345108024694430' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2765345108024694430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2765345108024694430'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/11/old-toro.html' title='Old TORO'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_F2PUAK0QAGQ/TPBiy4dru6I/AAAAAAAAAFM/sh_hs-7UCNo/s72-c/sc1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-5437184574061006925</id><published>2010-11-20T15:38:00.000-08:00</published><updated>2010-11-21T10:39:04.118-08:00</updated><title type='text'>Toro Builder uploaded!</title><content type='html'>I uploaded the new interface for Toro developing. You can compile and debug the kernel easy using ECLIPSE and QEMU, for download go&lt;a href="http://sourceforge.net/projects/toro/files/Toro%20Builder/ToroBuilder-x86_64-setup-1.0.exe/download"&gt; here&lt;/a&gt; but first read the new &lt;a href="http://sourceforge.net/apps/mediawiki/toro/"&gt;WIKI&lt;/a&gt; for more information. I am working hardly for write usefull information.&lt;br /&gt;If someone wants to be an EDITOR of WIKI contact me to torokernel@gmail.com, saludos.&lt;br /&gt;&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-5437184574061006925?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/5437184574061006925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=5437184574061006925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/5437184574061006925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/5437184574061006925'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/11/toro-builder-uploaded.html' title='Toro Builder uploaded!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-757468593810432677</id><published>2010-11-10T15:44:00.000-08:00</published><updated>2010-11-28T07:21:12.897-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='threading cooperative'/><category scheme='http://www.blogger.com/atom/ns#' term='scheduler'/><category scheme='http://www.blogger.com/atom/ns#' term='x86-64'/><category scheme='http://www.blogger.com/atom/ns#' term='context switching'/><title type='text'>Context Switching</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;In this article I will try to make a brief description about “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;Context Switching”&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt; and specially how TORO implements it since version 0.01. I won’t talk about how TORO OS implements it in versions 1.xx, I’ll just say that it uses “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;” by hardware. In future articles I will show the implementation of these ideas on pascal. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;If you have doubts, see the references! Enjoy it!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;As we know, in kernel, the scheduler is in charge of thread distributions. A part of implementing the scheduling algorithm it performs the "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"&gt;" procedure. When selects a new thread, the scheduler fills the processor registers with the values that they had just before the thread invokes the kernel (NOTE this comment is related with TORO’S scheduling algorithm, which is the cooperative thread).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TNsuwFSPCOI/AAAAAAAAAE0/Ty73ARwdi1Q/s1600/switch.JPG"&gt;&lt;img style="text-align: center; display: block; margin: 0px auto 10px; cursor: pointer; width: 400px; height: 246px;" src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/TNsuwFSPCOI/AAAAAAAAAE0/Ty73ARwdi1Q/s400/switch.JPG" alt="" id="BLOGGER_PHOTO_ID_5538071570369415394" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoCaption" style="text-align: center;" align="center"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;Figure &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span lang="EN-US"&gt;&lt;span style="'mso-element:field-begin'"&gt;&lt;/span&gt;&lt;span style="'mso-spacerun:yes'"&gt; &lt;/span&gt;SEQ Figure \* ARABIC &lt;span style="'mso-element:"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;1&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[if supportFields]&gt;&lt;span lang="EN-US"&gt;&lt;span style="'mso-element:field-end'"&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]--&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:x-small;"&gt;. Procedure for loading a new process.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="line-height: 115%;" lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoCaption" style="text-align: justify;" align="center"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoCaption" style="text-align: center;" align="center"&gt;&lt;span lang="EN-US"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;In the x86-64 architecture some of the general use registers are RAX, RBX, RCX, etc. In addition to these registers, some system registers must be also updated, like CR3. These ones store information about the thread page directory that will be loaded. The procedure is named "&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; " and is a critical operation because it runs continuously so it must be very fast. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” procedure can be implemented by software and by hardware.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;When it’s implemented by hardware, it uses the mechanisms that provide a particular architecture for make the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; “. For example, for the x86 architecture, are used the structures named “tasks descriptors”, these ones are in the GDT (Global Descriptor Table) and when a new task must be loaded is simply used the instruction "call" to the task descriptor (called in the literature as TSS) [1].&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;On the other hand, in the implementation by software the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” is done "by hand" and is a routine written by the programmer the one in charge of saving the value of the registers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;At first glance the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” by hardware seems to be the best option because the programmer isn’t involved and is done "automatically". Often, in the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” by hardware, registry values are all saved, but sometimes are not being used all records. That’s why the implementation by hardware may not be the best option.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;For this reason the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” in TORO is implemented by software, programming techniques are used for not using the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” mechanism that offers a particular hardware. When the scheduler selects a new thread, it loads in the processor's registers the values corresponding to the new thread, and then starts run. The thread begins its execution after the moment when the SysThreadSwitch procedure was called.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;As the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” is always done after invoke the SysThreadSwitch function, the planner supposes that at that moment the processor's registers are not being used by the user application. In this way it's limited only to save the state of the stack's thread that has to be removed. For the implementation on x86-64 architecture, this is achieved by saving on the TThread structure the RSP registry value, wich keeps its position inside the stack.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” implemented in TORO is faster than the one by hardware and the one implemented on an OS for general purposes. The selection of the “&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Context Switching&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;” method is directly related to the cooperative thread model.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Therefore the utilization of “Context Switching” by software adds portability and speed [2].&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;[1]. Intel. IA-32 Intel® Architecture Software Developer’s Manual. Vol3. 2004.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;[2]. Osdev Wiki, Context Switching, http://wiki.osdev.org/Context_Switching.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 12pt;"&gt;&lt;span class="apple-style-span"&gt;&lt;span lang="ES"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Matias E. Vara&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 12pt;"&gt;&lt;span class="apple-style-span"&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span lang="ES"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;www.torokernel.org&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-757468593810432677?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/757468593810432677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=757468593810432677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/757468593810432677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/757468593810432677'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/11/context-switching.html' title='Context Switching'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_F2PUAK0QAGQ/TNsuwFSPCOI/AAAAAAAAAE0/Ty73ARwdi1Q/s72-c/switch.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-749380884598261273</id><published>2010-11-08T18:59:00.000-08:00</published><updated>2010-11-08T19:01:13.594-08:00</updated><title type='text'>Changes on SVN</title><content type='html'>I ´ll work on SVN directories so maybe it ´ll be off-line a few hours. You should make an update on SVN.&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-749380884598261273?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/749380884598261273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=749380884598261273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/749380884598261273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/749380884598261273'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/11/changes-on-svn.html' title='Changes on SVN'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-4827475820811494200</id><published>2010-10-28T14:34:00.000-07:00</published><updated>2010-11-18T08:22:30.699-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugcon'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><title type='text'>BugCon Presentation</title><content type='html'>Here it is the &lt;a href="http://sourceforge.net/projects/toro/files/Documentation/%5BUnnamed%20release%5D/Toro%20BugCon%202010-ENG.pdf/download"&gt;link&lt;/a&gt; to Toro´s presentation on BugCon2010. Enjoy!&lt;br /&gt;Saludos.&lt;br /&gt;&lt;br /&gt;PD: The presentation is in english. Thanks Eugene!&lt;br /&gt;&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-4827475820811494200?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/4827475820811494200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=4827475820811494200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4827475820811494200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4827475820811494200'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/10/bugcon-presentation.html' title='BugCon Presentation'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-1704711371436180319</id><published>2010-09-19T19:58:00.000-07:00</published><updated>2010-09-21T19:13:01.462-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='locks'/><category scheme='http://www.blogger.com/atom/ns#' term='atomic operations'/><category scheme='http://www.blogger.com/atom/ns#' term='threads'/><category scheme='http://www.blogger.com/atom/ns#' term='pascal'/><category scheme='http://www.blogger.com/atom/ns#' term='freepascal'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel'/><category scheme='http://www.blogger.com/atom/ns#' term='toro'/><category scheme='http://www.blogger.com/atom/ns#' term='multiprocessing'/><title type='text'>Threads migration without Lock in Toro</title><content type='html'>&lt;div style="text-align: justify;"&gt;In a Multicore environment, the programmer needs to create local and remote threads. In TORO create a remote threads is easy, you just have to use &lt;span style="font-family:courier new;"&gt;BeginThread()&lt;/span&gt; with the appropriate CPU identification. On that basis, there are two important procedures in TORO:&lt;br /&gt;&lt;br /&gt;- Thread Emigrating: is when the threads are created in a remote processor.&lt;br /&gt;- Thread Inmigrating: is when the guest processor enque in its scheduler the threads that they are comming from others processors.&lt;br /&gt;&lt;br /&gt;This is  the unique kernel point which needs syncronization between the cores. The mechanism is called "Exchange Slot" and it works without any atomic operation. In this case it used for  send and receiv threads but it works with any kind of data.&lt;br /&gt;&lt;br /&gt;For every processor in TORO there is an structure called &lt;span style="font-family:courier new;"&gt;TSchedulerExchangeSlot&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:courier new;"&gt;TSchedulerExchangeSlot = record&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;  &lt;br /&gt;DispatcherArray: array[0..MAX_CPU-1] of PThread;&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;  &lt;br /&gt;EmigrateArray: array[0..MAX_CPU-1] of PThread;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;end; &lt;/span&gt;&lt;br /&gt;                             &lt;br /&gt;Where &lt;span style="font-family:courier new;"&gt;MAX_CPU &lt;/span&gt;is the number of processors and &lt;span style="font-family:courier new;"&gt;PThread&lt;/span&gt; is a pointer to &lt;span style="font-family:courier new;"&gt;TThread &lt;/span&gt;structure&lt;span style="font-family:courier new;"&gt;. &lt;/span&gt;From the structure declaration we can see that every processor has two arrays &lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;(&lt;span style="font-family:courier new;"&gt;DispatcherArray&lt;/span&gt; y &lt;span style="font-family:courier new;"&gt;EmigrateArray&lt;/span&gt;), and every entry in the array is a pointer to a thread´s queu.&lt;br /&gt;&lt;br /&gt;The procedure to send threads to remote processor has three stages:&lt;br /&gt;1-The user calls to &lt;span style="font-family:courier new;"&gt;BeginThread()&lt;/span&gt;for create a new one, if the parameter CPUID is different to local CPU then the kernel enque it to &lt;span style="font-family:courier new;"&gt;DispatcherArray[CPUID].&lt;/span&gt;&lt;br /&gt;2-During Scheduling (cause  &lt;span style="font-family:courier new;"&gt;SysThreadSwitch &lt;/span&gt;syscall)&lt;span style="font-family:courier new;"&gt;. &lt;/span&gt;The procedure  &lt;span style="font-family:courier new;"&gt;Emigrating()&lt;/span&gt;moves all threads from &lt;span style="font-family:courier new;"&gt;DispatcherArray[] &lt;/span&gt;to&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;EmigrateArray[] &lt;/span&gt;(only if &lt;span style="font-family:courier new;"&gt;EmigrateArray[] &lt;/span&gt;is nil)&lt;br /&gt;3-During Scheduling of the Remote CPU, the procedure  &lt;span style="font-family:courier new;"&gt;Inmigrating()&lt;/span&gt; look for a not nil entry in &lt;span style="font-family:courier new;"&gt;EmigrateArray[LocalCPUID] &lt;/span&gt;in every  &lt;span style="font-family:courier new;"&gt;TSchedulerExchangeSlot &lt;/span&gt;processor structure. If it is not nil Then import all the threads to local scheduler and become &lt;span style="font-family:courier new;"&gt;EmigrateArray[LocalCpuid]&lt;/span&gt; to nil.&lt;br /&gt;Local processor just writes and read to &lt;span style="font-family:courier new;"&gt;DispatcherArray[]. &lt;/span&gt;While the local and remote processor write and read to &lt;span style="font-family:courier new;"&gt;EmigrateArray[], &lt;/span&gt;but the access is &lt;span id="result_box" class="short_text"&gt;&lt;span style="background-color: rgb(255, 255, 255);" title=""&gt;synchronized using nil pointer.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The “Exchange Slot” doesn´t need "LOCK" instruction.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_F2PUAK0QAGQ/TJaxuTPSenI/AAAAAAAAADM/YTT67tvfpAs/s1600/test.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 278px; height: 326px;" src="http://4.bp.blogspot.com/_F2PUAK0QAGQ/TJaxuTPSenI/AAAAAAAAADM/YTT67tvfpAs/s1600/test.JPG" alt="" border="0" /&gt;&lt;/a&gt;The Inmigrating and Emigrating procedures are called from the Scheduler. The scheduler makes a few system task, for example in the picture, we can see the scheduler´s flow diagram. There, first it calls Inmigrating(), after that it calls Emigrating() and At the end a new thread is scheduling.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-1704711371436180319?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/1704711371436180319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=1704711371436180319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1704711371436180319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1704711371436180319'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/09/threads-migration-without-lock-in-toro.html' title='Threads migration without Lock in Toro'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_F2PUAK0QAGQ/TJaxuTPSenI/AAAAAAAAADM/YTT67tvfpAs/s72-c/test.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2788313040285570622</id><published>2010-07-22T18:17:00.000-07:00</published><updated>2010-07-22T19:33:52.577-07:00</updated><title type='text'>Toro in BugCon 2010!</title><content type='html'>I 'll be present in BugCon 2010 meeting, Mexico DF. I 'll talk about the problems of Modern Systems on Multicore environment and How Toro fixes them . Also I 'll compile and test toro step by step using Eclipse and QEMU. You can see others speakers &lt;a href="http://www.bugcon.org/speakers2010"&gt;here&lt;/a&gt;&lt;a href="http://http//www.bugcon.org/speakers2010"&gt;&lt;/a&gt;.&lt;br /&gt;Saludos.&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2788313040285570622?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2788313040285570622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2788313040285570622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2788313040285570622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2788313040285570622'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/07/toro-in-bugcon-2010.html' title='Toro in BugCon 2010!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-4596315049599370766</id><published>2010-04-12T06:43:00.000-07:00</published><updated>2010-06-15T14:29:52.491-07:00</updated><title type='text'>Testing TORO using QEMU and ECLIPSE on Win64</title><content type='html'>I uploaded a video .&lt;br /&gt;&lt;br /&gt;&lt;object id="stUEhQQkVLRFtYRltfXFtfX1BQ" type="application/x-shockwave-flash" data="http://www.screentoaster.com/swf/STPlayer.swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0" width="425" height="344"&gt;&lt;param name="movie" value="http://www.screentoaster.com/swf/STPlayer.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="flashvars" value="video=stUEhQQkVLRFtYRltfXFtfX1BQ"&gt;&lt;/object&gt;&lt;div style="width: 425px; text-align: right;"&gt;&lt;/div&gt;&lt;br /&gt;It shows an environment to compile and test toro fastly through Qemu and Eclipse.I 'll upload a good tutorial in few weeks.  In other way I was making a release with all the tools necessary to compile and emulate TORO.&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;Matias E. Vara&lt;br /&gt;www.torokernel.org&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-4596315049599370766?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/4596315049599370766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=4596315049599370766' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4596315049599370766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4596315049599370766'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/04/testing-toro-using-qemu-and-eclipse-on.html' title='Testing TORO using QEMU and ECLIPSE on Win64'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-3720003190790421880</id><published>2010-04-05T20:10:00.000-07:00</published><updated>2010-04-05T20:23:01.455-07:00</updated><title type='text'>Testing TORO using ECLIPSE+QEMU</title><content type='html'>Hi!, I was  looking a good tool to compile and test toro fastly . I found it , I am testing Eclipse + Qemu in Ubuntu for 64 bit  and I could run toro step by step and others things.&lt;br /&gt;I am using a plug-in (Pascaline) for support Pascal lenguaje on Eclipse.&lt;br /&gt;Here you have a few screen , but at the moment It doesn't work at 100% .&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_F2PUAK0QAGQ/S7qoWg1hInI/AAAAAAAAACY/sho4mrDOBwI/s1600/screen1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 284px;" src="http://4.bp.blogspot.com/_F2PUAK0QAGQ/S7qoWg1hInI/AAAAAAAAACY/sho4mrDOBwI/s400/screen1.png" alt="" id="BLOGGER_PHOTO_ID_5456859003237769842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_F2PUAK0QAGQ/S7qoryK2lAI/AAAAAAAAACg/YNX80HBdhow/s1600/screen2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_F2PUAK0QAGQ/S7qoryK2lAI/AAAAAAAAACg/YNX80HBdhow/s400/screen2.png" alt="" id="BLOGGER_PHOTO_ID_5456859368667911170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Qemu's session.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/S7qoxunWSnI/AAAAAAAAACo/dH_WNqLZDeY/s1600/screen3.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 235px;" src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/S7qoxunWSnI/AAAAAAAAACo/dH_WNqLZDeY/s400/screen3.png" alt="" id="BLOGGER_PHOTO_ID_5456859470792903282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-3720003190790421880?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/3720003190790421880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=3720003190790421880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3720003190790421880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3720003190790421880'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/04/testing-toro-using-eclipseqemu.html' title='Testing TORO using ECLIPSE+QEMU'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_F2PUAK0QAGQ/S7qoWg1hInI/AAAAAAAAACY/sho4mrDOBwI/s72-c/screen1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-8214105868798915267</id><published>2010-01-07T08:23:00.000-08:00</published><updated>2010-01-07T08:43:05.156-08:00</updated><title type='text'>Lazarus + GDB + QEMU</title><content type='html'>I am working hard to obtain a plataform to compile,  run and test TORO fast. In this way I am doing a few modifications on Lazarus' source . Lazarus is an excelent IDE for Freepascal Compiler.&lt;br /&gt;The BUILD program was included into Lazarus , So when you do "RUN"   Lazarus makes :&lt;br /&gt;- toro.exe&lt;br /&gt;- ToroImage.img&lt;br /&gt;- Run Qemu&lt;br /&gt;- Debug TORO using Lazarus (GDB client ---&gt; QEMU GDB Server) .&lt;br /&gt;Lazarus can be compile to Linux or Window so It is easy to test TORO in both plataform.&lt;br /&gt;Saludos.&lt;br /&gt;Matias E. Vara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-8214105868798915267?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/8214105868798915267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=8214105868798915267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8214105868798915267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8214105868798915267'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2010/01/lazarus-gdb-qemu.html' title='Lazarus + GDB + QEMU'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-4079971004786089517</id><published>2009-10-27T18:47:00.001-07:00</published><updated>2009-10-27T18:47:33.792-07:00</updated><title type='text'>CPU Cache Managing</title><content type='html'>I was working on a few procedures on Arch Unit to give access to L2 Cache. In the first moment the whole kernel is market as cacheable , but It's a decision of the user mark others memory region as cacheables. If we know which memory regions are too usefull we can caching just these regions and we are more eficient to access to memory.&lt;br /&gt;Anyway I am working on syscalls in the Memory Unit for do that in a easy way.&lt;br /&gt;The lastest source is uploaded on SVN.&lt;br /&gt;Saludos&lt;br /&gt;Matias E. Vara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-4079971004786089517?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/4079971004786089517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=4079971004786089517' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4079971004786089517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4079971004786089517'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/10/cpu-cache-managing.html' title='CPU Cache Managing'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-7639524965812321579</id><published>2009-08-26T20:45:00.000-07:00</published><updated>2009-08-26T21:03:25.274-07:00</updated><title type='text'>Compiling TORO On Linux II</title><content type='html'>I have uploaded to SVN the modifications on &lt;span style="font-weight: bold; font-style: italic;"&gt;Build&lt;/span&gt; for support ELF files and make the boot's image on Linux. &lt;span style="font-style: italic; font-weight: bold;"&gt;Build&lt;/span&gt; takes the executable file (PECOFF or ELF) and convert it to &lt;span style="font-weight: bold;"&gt;ToroImage.img &lt;/span&gt;.&lt;br /&gt;The step for compile it are :&lt;br /&gt;1 - Do an update on SVN's folder&lt;br /&gt;2 - Run on terminal "&lt;span style="font-style: italic; font-weight: bold;"&gt;sh compile.sh&lt;/span&gt;"&lt;br /&gt;3 - That's all , you must have installed fpc for Linux-x86-64 . I tested using 2.2.4 version and  it works fine. If the process was rigth the result is ToroImage.img  and you can test it using QEMU  like in window's version .&lt;br /&gt;Maybe you 'll have got to edit&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;compile.sh&lt;/span&gt; for corrects the path of &lt;span style="font-weight: bold; font-style: italic;"&gt;build&lt;/span&gt; and &lt;span style="font-style: italic; font-weight: bold;"&gt;fpc&lt;/span&gt;.&lt;br /&gt;I am listenning any opinion .&lt;br /&gt;&lt;br /&gt;Saludos .&lt;br /&gt;Matias Vara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-7639524965812321579?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/7639524965812321579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=7639524965812321579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/7639524965812321579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/7639524965812321579'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/08/compiling-toro-on-linux-ii.html' title='Compiling TORO On Linux II'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-8861028067299150592</id><published>2009-08-23T14:21:00.000-07:00</published><updated>2009-09-13T15:07:48.129-07:00</updated><title type='text'>Compiling TORO on Linux</title><content type='html'>I have uploaded to SNV the Toro's source with the modifications for compile it on Linux using FPC 2.2.4 for x86_64. The script &lt;span style="font-style: italic;"&gt;compile.sh&lt;/span&gt; makes an ELF file.&lt;br /&gt;I am still working on &lt;span style="font-style: italic;"&gt;Build&lt;/span&gt; for translate the ELF to image as It does with PECOFF64  on Windows. Saludos.&lt;br /&gt;Matias E. Vara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-8861028067299150592?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/8861028067299150592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=8861028067299150592' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8861028067299150592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8861028067299150592'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/08/compiling-toro-on-linux.html' title='Compiling TORO on Linux'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-5071346461669379871</id><published>2009-08-10T18:57:00.000-07:00</published><updated>2009-08-10T19:08:32.898-07:00</updated><title type='text'>Implementation of Mutiplex-IO At the level of Network Unit</title><content type='html'>I have uploaded the first beta version of Network Unit with no-blocking Apis in order to reduce the number of context switch and the number of threads used to listen network connections.&lt;br /&gt;I promise upload the Programmer and Compilation documents soon.&lt;br /&gt;Saludos  .&lt;br /&gt;Matias Vara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-5071346461669379871?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/5071346461669379871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=5071346461669379871' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/5071346461669379871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/5071346461669379871'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/08/implementation-of-mutiplex-io-at-level.html' title='Implementation of Mutiplex-IO At the level of Network Unit'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-4685004193902549850</id><published>2009-05-30T19:35:00.000-07:00</published><updated>2009-05-30T19:43:22.430-07:00</updated><title type='text'>Taskfreak! implementation.</title><content type='html'>I implemented the task manager Taskfreak! . There , i wrote all the tasks that i am working and the features of future versions.&lt;br /&gt;Enjoy!&lt;br /&gt;The link &lt;a href="http://apps.sourceforge.net/taskfreak/toro/"&gt;is&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-4685004193902549850?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/4685004193902549850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=4685004193902549850' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4685004193902549850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4685004193902549850'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/05/taskfreak-implementation.html' title='Taskfreak! implementation.'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-6698413487344059603</id><published>2009-05-19T19:20:00.001-07:00</published><updated>2009-05-19T19:20:20.910-07:00</updated><title type='text'>Multicore  done!</title><content type='html'>I uploaded to SVN the last version of TORO. I added Multicore detection and It was tested on Intel x86_64 arch fine. I have fixed bugs in Memory detection , now I am using in15h to get information about memory .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-6698413487344059603?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/6698413487344059603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=6698413487344059603' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/6698413487344059603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/6698413487344059603'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/05/multicore-done.html' title='Multicore  done!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-8664995007757765344</id><published>2009-03-31T20:57:00.000-07:00</published><updated>2009-03-31T21:04:44.719-07:00</updated><title type='text'>Wainting  opinions!</title><content type='html'>I am rewritting the Manuals for Compile and Test TORO , i am thinking in upload it in the wiki of Sourceforge. Any opinion will be accepted .&lt;br /&gt;Saludos&lt;br /&gt;Matias E. Vara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-8664995007757765344?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/8664995007757765344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=8664995007757765344' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8664995007757765344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/8664995007757765344'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/03/wainting-for-opinions.html' title='Wainting  opinions!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-607220016482421388</id><published>2009-02-18T13:18:00.000-08:00</published><updated>2009-02-18T13:20:38.001-08:00</updated><title type='text'>Toro's code in SVN!</title><content type='html'>I uploaded the version of Toro that i am working , i think that is good manner to shared the source code and not wait for a packet in the filerelease.  The link is &lt;a href="http://toro.svn.sourceforge.net/viewvc/toro/"&gt;here&lt;/a&gt; or you can acces from &lt;a href="https://sourceforge.net/projects/toro/"&gt;sf page&lt;/a&gt;.&lt;br /&gt;Enjoy!.&lt;br /&gt;Matias E. Vara .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-607220016482421388?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/607220016482421388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=607220016482421388' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/607220016482421388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/607220016482421388'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2009/02/toros-code-in-svn.html' title='Toro&apos;s code in SVN!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-4642001328099342717</id><published>2008-07-13T16:14:00.000-07:00</published><updated>2008-07-13T16:39:39.514-07:00</updated><title type='text'>Compiling TORO with FPC 2.2.3</title><content type='html'>I worked in file system.pas for compile TORO using FPC 2.2.3 . Now Toro can be compiled using last version of FPC 2.2.3. I started with the RTL of Win64 and was reduced only with necessary source .This implementation will present in next Version .&lt;br /&gt;Un saludo Matias Vara .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-4642001328099342717?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/4642001328099342717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=4642001328099342717' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4642001328099342717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4642001328099342717'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2008/07/compiling-toro-with-fpc-223.html' title='Compiling TORO with FPC 2.2.3'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-2407288040193018697</id><published>2008-03-25T13:47:00.000-07:00</published><updated>2008-03-25T13:48:39.839-07:00</updated><title type='text'>Toro 0.03 ready!</title><content type='html'>Stack TCP-IP and supports for ethernet network card.&lt;br /&gt;Drivers for ne2000 ethernet card .&lt;br /&gt;Support for FPC 2.2.1&lt;br /&gt;Solved Bugs in Process.&lt;br /&gt;Solved Bug in EXT2 Drivers.&lt;br /&gt;Solved Bugs in Arch.&lt;br /&gt;Others Bugs solved .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-2407288040193018697?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/2407288040193018697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=2407288040193018697' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2407288040193018697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/2407288040193018697'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2008/03/toro-003-ready.html' title='Toro 0.03 ready!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-4544261015360334465</id><published>2007-12-30T09:32:00.001-08:00</published><updated>2008-12-12T20:01:59.879-08:00</updated><title type='text'>TORO speaks!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_F2PUAK0QAGQ/R3fadL-ucfI/AAAAAAAAABE/qesiJ8aj7Og/s1600-h/telnettotoro.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_F2PUAK0QAGQ/R3fadL-ucfI/AAAAAAAAABE/qesiJ8aj7Og/s320/telnettotoro.bmp" alt="" id="BLOGGER_PHOTO_ID_5149824893888393714" border="0" /&gt;&lt;/a&gt;Some results about Stack TCP-IP  ,  i have time for write  in my holidays .&lt;br /&gt;In the pictures you can see as toro responded a telnet , i think that in few weeks the next version will be ready , please wait .&lt;br /&gt;Un saludo Matias E. Vara&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/R3fUub-uceI/AAAAAAAAAA8/Qpx5wX6tCAs/s1600-h/telnettotoro.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/R3fUub-uceI/AAAAAAAAAA8/Qpx5wX6tCAs/s1600-h/telnettotoro.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_F2PUAK0QAGQ/R3fUub-uceI/AAAAAAAAAA8/Qpx5wX6tCAs/s1600-h/telnettotoro.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://1.bp.blogspot.com/_F2PUAK0QAGQ/R3fUub-uceI/AAAAAAAAAA8/Qpx5wX6tCAs/s1600-h/telnettotoro.bmp" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-4544261015360334465?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/4544261015360334465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=4544261015360334465' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4544261015360334465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/4544261015360334465'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/12/toro-speaks.html' title='TORO speaks!'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_F2PUAK0QAGQ/R3fadL-ucfI/AAAAAAAAABE/qesiJ8aj7Og/s72-c/telnettotoro.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-3306988374889061313</id><published>2007-10-20T08:49:00.000-07:00</published><updated>2007-10-20T08:55:07.171-07:00</updated><title type='text'>Translation of paper</title><content type='html'>Hello here you have the translation of paper published in SL Ezine. Enjoy.&lt;br /&gt;&lt;br /&gt; &lt;p class="MsoBodyText"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyText"&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyText"&gt;&lt;span lang="EN-US"&gt;Current modern systems in which the parallelism and multiprocessing have reached their limits, requires programmers to think on new methodology in order to maximize the performance of actual hardware. Here I will try to discuss two issues for the operating system with&lt;span style=""&gt;  &lt;/span&gt;high-grade of multiprocessing : access to the memory bus and access to shared resources.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;The main issue regarding memory performance appears when a lot of processors want to access concurrently to memory through a shared memory bus. One solution to reduce the contention at the memory bus level, is the implementation of a memory controller such as AMD HyperTransport technology, every processor has its own integrated memory controller to access dedicated region of memory faster. Thus, accessing memory region that are not adjacent to the CPU hit small penalty and require 1 or 2 hops.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;These controller are implemented using a NUMA model (Non Uniform Memory Access). Such architecture requires that the memory allocator at kernel level of the operating system must be re-written. When a thread running on a specific CPU, the memory allocator module of the OS is in charge to return a free block of memory located in the dedicated region handled by the processor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;Optimizing access to memory such way, brings subsequent problem on the table: accessing to shared memory. One way of solving such issue can be handled by implementing atomic operations (using a specific “lock” instruction). The lock instruction prevents other CPUs to access the same region of memory, and indirectly prevent other CPUs to access the memory bus at all while performing the operation. The protection can be implemented using a lot of “locks” but the system performance degrades rapidly, which becomes obvious as more processors attempt to access the shared resource.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;One solution is to dedicate resources to processors, where resources are Block Devices, Net Devices or FileSystems. This requires some sort of protection run at level of local processor handling the resource. This can be handled in a nice and easy way by implementing a Round Robin Scheduler also known as Cooperative Threading Scheduler. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;At this level a new issue rises on the table : the communication between processors. When sending message from one CPU to another, in order to prevent the use of atomic lock instructions, the communication system can be implemented using a matrix, where every processor has an array of&lt;span style=""&gt;  &lt;/span&gt;slots referencing every single other processors. When a slot #N is set to “null”,&lt;span style=""&gt;  &lt;/span&gt;it is interpreted as the CPU #N has not set a message to be imported by current local CPU. When CPU #N needs to sending a message to CPU#1, it will set its slot #N, which is then switched by CPU#1 to be imported and finally reset to “null”. The communication system can be extended from this simple base. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;The new technologies are powerful when a NURA model is implemented at kernel level of the operating system (Non Uniform Resources Access).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;An example of such technology is implemented in the Operating System TORO, available at http://toro.sourceforge.net &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;TORO is demonstrating an innovative operating system by integrating at the same ring level both kernel and the user application server. The threads of the user application server are distributed evenly on all CPUs and running independently in parallel. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;The memory model chosen is NUMA without pagination. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;During the initialization, the memory is divided proportionally for each processor installed on the system. When a thread needs memory, the memory allocator returns a free block of memory depending on which CPU the thread is running.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;In the same way, TORO can dedicate resources to specific processor, i.e. a FileSystem. This only CPU then can access to this instance of FileSystem.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;The scheduler is based on the cooperative threading model, therefore due to this design, TORO can migrate threads between CPUs and send messages between threads without using any lock instruction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;TORO is well suited for integrated system to run at high pace application servers like web servers, database servers. The neat part for programmers is to be able to compile application server embedding the kernel of the OS, meaning that when the system operates, the application server runs in kernel mode beside the kernel and at the same ring level, providing direct access to all resources without any overhead, and therefore maximizing performance for the overall system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;" lang="EN-US"&gt;&lt;o:p&gt;Matias E. Vara&lt;br /&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-3306988374889061313?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/3306988374889061313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=3306988374889061313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3306988374889061313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/3306988374889061313'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/10/translation-of-paper.html' title='Translation of paper'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-1913006359173464986</id><published>2007-10-01T19:13:00.000-07:00</published><updated>2007-10-01T19:16:14.474-07:00</updated><title type='text'>Paper about Operative System</title><content type='html'>Hello i written a paper in SL Ezine , you can download &lt;a href="http://www.revista-sl.org/data/downloads/RevistaSL8.pdf"&gt;here&lt;/a&gt; ,&lt;br /&gt;Bye  Matias Vara .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-1913006359173464986?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/1913006359173464986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=1913006359173464986' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1913006359173464986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1913006359173464986'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/10/paper-about-operative-system.html' title='Paper about Operative System'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-1392455416315183919</id><published>2007-07-20T17:52:00.000-07:00</published><updated>2007-07-20T17:57:38.941-07:00</updated><title type='text'>Working on TCP-IP Stack</title><content type='html'>Hello, now i am working on Networks Drivers structures and TCP-IP Protocol Stack, all include in version toro 0.03&lt;br /&gt;Un saludo Matias Vara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-1392455416315183919?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/1392455416315183919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=1392455416315183919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1392455416315183919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/1392455416315183919'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/07/working-on-tcp-ip-stack.html' title='Working on TCP-IP Stack'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-6507220319121799060</id><published>2007-05-15T21:50:00.000-07:00</published><updated>2007-05-15T21:52:29.388-07:00</updated><title type='text'>Toro 0.02 released</title><content type='html'>Toro 0.02 is ready !. New Virtual FileSystem and drivers for ATA Disks and EXT2 FS.&lt;br /&gt;For compilation download the new documentation from &lt;a href="http://toro.sourceforge.net"&gt;http://toro.sourceforge.net&lt;/a&gt; .&lt;br /&gt;Un saludo Matias Vara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-6507220319121799060?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/6507220319121799060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=6507220319121799060' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/6507220319121799060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/6507220319121799060'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/05/toro-002-released.html' title='Toro 0.02 released'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-116993407069566034</id><published>2007-01-27T13:38:00.000-08:00</published><updated>2007-01-27T13:41:10.706-08:00</updated><title type='text'>Toro 0.01 !</title><content type='html'>New Version of TORO the changes are &lt;a href="http://sourceforge.net/project/shownotes.php?release_id=481398&amp;group_id=109734"&gt;here&lt;/a&gt; ,  I will upload in next days for compile TORO step by step .&lt;br /&gt;Un saludo Matias Vara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-116993407069566034?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/116993407069566034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=116993407069566034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/116993407069566034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/116993407069566034'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/01/toro-001.html' title='Toro 0.01 !'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-116968012338359694</id><published>2007-01-24T15:06:00.000-08:00</published><updated>2007-01-24T15:10:57.196-08:00</updated><title type='text'>Some Screen</title><content type='html'>Some ScreenShot about TORO 0.01 booting in AMD X86-64  with SMP in QEMU :&lt;br /&gt;&lt;a href="https://sourceforge.net/project/screenshots.php?group_id=109734&amp;ssid=51547"&gt;https://sourceforge.net/project/screenshots.php?group_id=109734&amp;amp;ssid=51547&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-116968012338359694?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/116968012338359694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=116968012338359694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/116968012338359694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/116968012338359694'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2007/01/some-screen.html' title='Some Screen'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-114816319101860008</id><published>2006-05-20T15:08:00.000-07:00</published><updated>2006-05-23T16:19:13.713-07:00</updated><title type='text'>Compiling Toro 1.1.3</title><content type='html'>First you must download the last zip of toro , it is toro-1.1.3-src.zip , you can download it from toro.sourceforge.net .&lt;br /&gt;&lt;br /&gt;Next you must unzip the packet in the disket-formating with GRUB , for the moment&lt;br /&gt;&lt;br /&gt;Toro only have the driver for floppy ( in the future it will have drivers to SATA disk)&lt;br /&gt;&lt;br /&gt;Next go to /usr/toro-src/ and execute “make” , here you are compiling the kernel .&lt;br /&gt;&lt;br /&gt;Immediately go to /usr/tools/sh and do “make” , do “make” in usr/tools/ls , usr/tools/mkdir , here you are compiling the utilities .&lt;br /&gt;&lt;br /&gt;Ready! , you have the diskette-boot for Toro .&lt;br /&gt;&lt;br /&gt;You can boot Toro using bochs or from diskette in real machine .&lt;br /&gt;Simple bochsrc.txt file , it works in Bochs-2.2.6 .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;floppya: 1_44=a:, status=inserted&lt;br /&gt;megs: 16&lt;br /&gt;floppy_command_delay: 200&lt;br /&gt;boot: floppy&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Important! :&lt;br /&gt;&lt;br /&gt;The file /usr/toro-src/make.rules have the path of utilities , you must modify .&lt;br /&gt;The linker “ld” must can output “elf-i386” executable file , I don’t know if the ld include in fpc for windows can do that .&lt;br /&gt;&lt;br /&gt;Please tell me if you have any question .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bye Matias Vara .&lt;br /&gt;&lt;br /&gt;P.D. : Here you can download the minimal version of &lt;a href="http://prdownloads.sourceforge.net/toro/pp.zip?download"&gt;fpc 1.0.6&lt;/a&gt; for go32v2 and &lt;a href="http://prdownloads.sourceforge.net/toro/ld.exe?download"&gt;ld&lt;/a&gt; linker , it works with cygwin 2.427 or last .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-114816319101860008?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/114816319101860008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=114816319101860008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/114816319101860008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/114816319101860008'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2006/05/compiling-toro-113.html' title='Compiling Toro 1.1.3'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-113088791369891912</id><published>2005-11-01T15:25:00.000-08:00</published><updated>2005-11-01T15:31:53.713-08:00</updated><title type='text'>Sorry</title><content type='html'>at the moment will let post in this blog, if somebody wants to translate the forum torokernel.blogspot.com i will  been thankful.Matias Vara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-113088791369891912?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/113088791369891912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=113088791369891912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/113088791369891912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/113088791369891912'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2005/11/sorry.html' title='Sorry'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-112450172108189100</id><published>2005-08-19T18:32:00.000-07:00</published><updated>2005-08-19T18:35:21.080-07:00</updated><title type='text'>Toro compiled on fpc-linux</title><content type='html'>The available package zip of Toro-1.1 to be already compiled on last version of fpc on linux.  Matias Vara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-112450172108189100?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/112450172108189100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=112450172108189100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/112450172108189100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/112450172108189100'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2005/08/toro-compiled-on-fpc-linux.html' title='Toro compiled on fpc-linux'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15025712.post-112294830560797785</id><published>2005-08-01T18:58:00.000-07:00</published><updated>2005-08-01T19:05:05.610-07:00</updated><title type='text'>Version 1.1</title><content type='html'>The new version of toro have two packets , one zip  , it have all code and it is ready for compiling  . The second packet is a 3 1/2 floppy disk image  and it is ready for boot .&lt;br /&gt;I am waiting yours comentarys . Bye  . Matias Vara&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15025712-112294830560797785?l=torokerneleng.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://torokerneleng.blogspot.com/feeds/112294830560797785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15025712&amp;postID=112294830560797785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/112294830560797785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15025712/posts/default/112294830560797785'/><link rel='alternate' type='text/html' href='http://torokerneleng.blogspot.com/2005/08/version-11.html' title='Version 1.1'/><author><name>Matias E. Vara</name><uri>http://www.blogger.com/profile/09517270768003489287</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-884WGOqUZeM/TubPZzbUhCI/AAAAAAAAAOo/DKqg4Sh8-48/s220/01342b8.jpg'/></author><thr:total>0</thr:total></entry></feed>
