<?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-8651710191535128418</id><updated>2012-02-16T02:39:37.373-06:00</updated><category term='Sistemas Operativos'/><category term='Diseño 3D'/><category term='COMPILADORES'/><title type='text'>Compartiendo tu Conocimiento</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-2122298090285826063</id><published>2011-01-28T23:24:00.001-06:00</published><updated>2011-01-28T23:25:41.999-06:00</updated><title type='text'>Relojes Vectoriales</title><content type='html'>Un pequeño ejemplo del manejo de relojes vectoriales, para el curso de sistemas operativos 2, Facultad de Ingenieria, USAC.&lt;br /&gt;&lt;br /&gt;&lt;a title="View Relojes Vectoriales on Scribd" href="http://www.scribd.com/doc/47759025/Relojes-Vectoriales" style="margin: 12px auto 6px auto; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; display: block; text-decoration: underline;"&gt;Relojes Vectoriales&lt;/a&gt; &lt;object id="doc_331799079748027" name="doc_331799079748027" height="600" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" &gt;  &lt;param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="FlashVars" value="document_id=47759025&amp;access_key=key-1m33bjxpaumpplrpm8rs&amp;page=1&amp;viewMode=list"&gt;   &lt;embed id="doc_331799079748027" name="doc_331799079748027" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=47759025&amp;access_key=key-1m33bjxpaumpplrpm8rs&amp;page=1&amp;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="600" width="100%" wmode="opaque" bgcolor="#ffffff"&gt;&lt;/embed&gt;  &lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-2122298090285826063?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/2122298090285826063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=2122298090285826063' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/2122298090285826063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/2122298090285826063'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2011/01/relojes-vectoriales.html' title='Relojes Vectoriales'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-8083955221356818436</id><published>2010-09-01T17:38:00.002-06:00</published><updated>2010-09-01T17:41:08.759-06:00</updated><title type='text'>Un Don Que Hay Que Aprovechar</title><content type='html'>Retomando la actividad en el blog...&lt;br /&gt;&lt;br /&gt;Todos tenemos un gran potencial, lo unico que tenemos que hacer es utilizarlo.&lt;br /&gt;&lt;br /&gt;&lt;object style="background-image:url(http://i3.ytimg.com/vi/BfCuOm6crVo/hqdefault.jpg)"  width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BfCuOm6crVo?fs=1&amp;amp;hl=es_ES"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/BfCuOm6crVo?fs=1&amp;amp;hl=es_ES" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Dime algo y lo olvidaré, enséñame algo y lo recordaré, pero hazme partícipe de algo y lo aprenderé. (Proverbio Chino)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-8083955221356818436?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/8083955221356818436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=8083955221356818436' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/8083955221356818436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/8083955221356818436'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2010/09/un-don-que-hay-que-aprovechar.html' title='Un Don Que Hay Que Aprovechar'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-1245644977635974825</id><published>2009-11-04T23:49:00.002-06:00</published><updated>2009-11-04T23:51:56.551-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diseño 3D'/><title type='text'>Mi Animación 3D</title><content type='html'>Bueno, aqui les presento mi animación que realicé en blender, aun toy lejos de pixar pero bueno lo intente XD, espero que les guste&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PZ3W98w7-jM&amp;hl=es&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PZ3W98w7-jM&amp;hl=es&amp;fs=1&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-1245644977635974825?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/1245644977635974825/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=1245644977635974825' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/1245644977635974825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/1245644977635974825'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2009/11/mi-animacion-3d.html' title='Mi Animación 3D'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-510515844644456587</id><published>2009-10-15T23:11:00.005-06:00</published><updated>2009-10-15T23:34:32.533-06:00</updated><title type='text'>Nucleo Hibrido</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_3O--G4MA2lo/StgFjel3fSI/AAAAAAAAAJw/pmaTEyRB9AQ/s1600-h/kernel.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 173px; height: 200px;" src="http://3.bp.blogspot.com/_3O--G4MA2lo/StgFjel3fSI/AAAAAAAAAJw/pmaTEyRB9AQ/s200/kernel.png" alt="" id="BLOGGER_PHOTO_ID_5393066660841618722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Son fundamentalmente micro núcleos que tienen código no esencial, en el espacio del kernel con el fin de ejecutar este de forma mas rápida de que lo haría si estuviera en espacio de usuario.  &lt;p style="margin-bottom: 0cm;"&gt;Un termino erróneo es comparar el núcleo híbrido con los núcleos monolíticos que pueden cargar módulos después del arranque. El núcleo híbrido nos indica que el núcleo en cuestión usa conceptos de arquitectura o mecanismos tanto del diseño monolítico como el micro núcleo, especialmente el paso de los mensajes y migración de código no esencial para pasarlo al espacio del usuario, pero conservando código no esencial en el espacio del núcleo, para optimizar el rendimiento&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;Sistemas que utlizan nucléo híbrido:&lt;br /&gt;&lt;/p&gt;     &lt;br /&gt;    &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;BeOS núcleo   &lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Haiku núcleo    &lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;DEB- basado   &lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;DEB de la libélula&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;XNU núcleo&lt;br /&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;a name="cite_ref-3"&gt;&lt;/a&gt;NetWare  núcleo[4]   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Plan 9 núcleo   &lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Infierno núcleo    &lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Núcleo del NT&lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;ReactOS núcleo    &lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt;  &lt;p style="margin-bottom: 0cm;"&gt;   &lt;br /&gt;Núcleo híbrido es una arquitectura basada en la combinación de microkernel y núcleo monolítico, estas arquitecturas son utilizadas dentro de las computadoras por medio de los sistemas operativos&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;esta categoría, crea diferencias debido a su semejanza al núcleo monolítico, las categorías mas conocidas son nanokernels y exokernels, que no son mas que versiones externas de microkernels.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;"&gt;Una característica especial con que cuenta el núcleo híbrido es que incluyen código extra con el objetivo de mejorar el rendimiento.&lt;/p&gt; &lt;p style="margin-bottom: 0cm;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-510515844644456587?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/510515844644456587/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=510515844644456587' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/510515844644456587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/510515844644456587'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2009/10/nucleo-hibrido.html' title='Nucleo Hibrido'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_3O--G4MA2lo/StgFjel3fSI/AAAAAAAAAJw/pmaTEyRB9AQ/s72-c/kernel.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-782424945187714312</id><published>2009-09-09T21:14:00.004-06:00</published><updated>2009-09-09T21:41:33.521-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COMPILADORES'/><title type='text'>Codigo de Tres Direcciones SWITCH</title><content type='html'>Hola de nuevo, siguiendo con mi contribucion a temas para segundo parcial del curso compiladores 2, aqui les coloco una nueva traduccion dirigida, esta ves para la sentencia SWITCH - CASE.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Nota: '&lt;'cuerpo'&gt;' cualquier sentencia valida&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;SW := SWITCH '(' EXP ')'  &lt;/span&gt;{: LC.cad = EXP.cad; write('goto Comparacion'); :}&lt;span style="font-weight: bold;"&gt; LC&lt;/span&gt; {: write('Comparacion:');&lt;br /&gt;write(LC.text);&lt;br /&gt;write('goto Salida');&lt;br /&gt;write('Salida:') :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LC  := &lt;/span&gt;{: LC.cad = LC.cad; :} &lt;span style="font-weight: bold;"&gt;LC&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; CASE EXP ':'&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;{:write('L', contEtiq, ':'); LC.eti = concat('T', contEtiq); contEtiq++; :} &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold;"&gt; '&lt;'cuerpo'&gt;' &lt;/span&gt;{:  LC.text = concat(LC.text, 'if', LC.cad, '==', EXP.cad, 'then goto ', LC.eti); :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          | &lt;/span&gt;{: LC.cad = LC.cad; :} &lt;span style="font-weight: bold;"&gt;LC CASE EXP ':'&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;{:write('L', contEtiq, ':'); LC.eti = concat('T', contEtiq); contEtiq++; :} &lt;span style="font-weight: bold;"&gt; '&lt;'cuerpo'&gt;' 'break'&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;{:  write('goto Salida');&lt;br /&gt;LC.text = concat(LC.text, 'if', LC.cad, '==', EXP.cad, 'then goto ', LC.eti); :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          | CASE EXP ':'&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;{:write('L', contEtiq, ':'); LC.eti = concat('T', contEtiq); contEtiq++; :} &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; '&lt;'cuerpo'&gt;' &lt;/span&gt;{:  LC.text = concat('if', LC.cad, '==', EXP.cad, 'then goto ', LC.eti); :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          | CASE EXP ':' &lt;/span&gt;{:write('L', contEtiq, ':'); LC.eti = concat('T', contEtiq); contEtiq++; :} &lt;span style="font-weight: bold;"&gt;'&lt;'cuerpo'&gt;' 'break' &lt;/span&gt;{: write('goto SALIDA');&lt;br /&gt;LC.text = concat('if', LC.cad, '==', EXP.cad, 'then goto ', LC.eti); :}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-782424945187714312?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/782424945187714312/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=782424945187714312' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/782424945187714312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/782424945187714312'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2009/09/codigo-de-tres-direcciones-switch.html' title='Codigo de Tres Direcciones SWITCH'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-3540520622210623162</id><published>2009-09-09T13:58:00.012-06:00</published><updated>2009-09-09T21:08:14.868-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COMPILADORES'/><title type='text'>Codigo de Tres Direcciones Arreglos</title><content type='html'>Un saludo a todos de nuevo en esta publicacion generaremos una definicion dirigida por la sintaxis para lo que son arreglos, pero para hacerlo un poco mas amplio sera para arreglos de arreglos, con un maximo de dos dimensiones, para la sentencias de asignacion&lt;br /&gt;&lt;br /&gt;NOTA: seguimos asumiendo que la traduccion de EXP para representaciones numericas ya la tenemos, aunque en esta gramatica agregaremos la parte de los arreglos.&lt;br /&gt;Los bloques de los arreglos los tomaremos como filas y luego columnas. Array[f, c]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ASIG := ID '=' EXP &lt;/span&gt;&lt;span&gt;{: write(ID, ' = ', EXP1.cad); :}&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;|  ID &lt;/span&gt;&lt;span&gt;{: DIM.id = ID; :}&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; DIM '=' EXP&lt;/span&gt; &lt;span&gt;{: write(ID, '[', DIM1.cad, '] = ', EXP1.cad); :}&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;DIM := &lt;/span&gt;&lt;span&gt;{: DIM.id = DIM.id :} &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;DIM '['  &lt;/span&gt;&lt;span&gt;{: AR.id = DIM1.id :}&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; AR  ']'&lt;/span&gt; {: write('T', contTemp, '=', DIM1.cad, '- 1');&lt;br /&gt;                                                                     contTemp++;&lt;br /&gt;                                                                     write('T', contTemp, '= T', contTemp - 1, '*', tamanioBloque(id, 2); //metodo que devuelve el tamanio del primer bloque&lt;br /&gt;                                                                     contTemp++;&lt;br /&gt;                                                                     write('T', contTemp, '= T', contTemp - 1, '+', AR1.cad);&lt;br /&gt;                                                                     DIM.cad = concat('T', contTemp);&lt;br /&gt;                                                                     contTemp++;                                                                    &lt;br /&gt;                                                                      :}&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| '['  AR  ']'&lt;/span&gt; &lt;span&gt;{: DIM.cad = AR1.cad:}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;AR   := &lt;/span&gt;&lt;span&gt;{: AR.id = AR.id; :}&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; AR , EXP&lt;/span&gt; {: write('T', contTemp, '=', AR1.cad, '- 1');&lt;br /&gt;                                                                     contTemp++;&lt;br /&gt;                                                                     write('T', contTemp, '= T', contTemp - 1, '*', tamanioBloque(id, 1);//metodo que devuelve el tamanio de las filas&lt;br /&gt;                                                                     contTemp++;&lt;br /&gt;                                                                     write('T', contTemp, '= T', contTemp - 1, '+', EXP1.cad);&lt;br /&gt;                                                                     AR.cad = concat('T', contTemp);&lt;br /&gt;                                                                     contTemp++;                                                                    &lt;br /&gt;                                                                      :}&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| EXP &lt;/span&gt;&lt;span&gt;{:  AR.cad = EXP1.cad:}&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;EXP := EXP '*' EXP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;                        | EXP '/' EXP&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| EXP '+' EXP&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| EXP '-' EXP&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| '(' EXP ')'&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| NUMERO&lt;/span&gt;&lt;br /&gt;            &lt;span style="font-weight: bold;"&gt;| ID&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;          &lt;br /&gt;            | ID &lt;/span&gt;&lt;span&gt;{: DIM.id = ID; :} &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;DIM&lt;/span&gt;  {:write('T', contTemp, '=', ID, '[', DIM1.cad, ']');&lt;br /&gt;                                                     EXP.cad = concat('T', contTemp);&lt;br /&gt;                                                     contTemp++; :}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-3540520622210623162?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/3540520622210623162/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=3540520622210623162' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/3540520622210623162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/3540520622210623162'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2009/09/codigo-de-tres-direcciones-arreglos.html' title='Codigo de Tres Direcciones Arreglos'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-5751434176114661909</id><published>2009-09-09T12:46:00.001-06:00</published><updated>2009-09-09T13:57:55.272-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COMPILADORES'/><title type='text'>Codigo de Tres Direcciones</title><content type='html'>Un saludo a todos, bueno esta entrada esta destinada para los compañeros y amigos que necesiten una pequeña ayuda para su segundo parcial de Compiladores 2 :s Espero les pueda ayudar en algo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nota&lt;/span&gt;: EXP sera para la parte de las expresiones numericas que todos conocemos.&lt;br /&gt;contEtiq sera el contador para el control de las etiquetas&lt;br /&gt;contTemp sera el contador para el control de los temporales&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Definicion para Expresiones Condicionales &lt;span style="font-weight: bold;"&gt;Corto Circuito&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Se manejaran 2 atributos uno para las etiquetas Verdaderas y Otro pra etiquetas falsas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;COND := COND 'AND'&lt;/span&gt; {: write(COND1.verdadero, ':'); :} &lt;span style="font-weight: bold;"&gt;COND&lt;/span&gt; {:                                        &lt;br /&gt;                                     COND.verdadero = COND2.verdadero;&lt;br /&gt;                                     COND.falso = concat(COND1.falso, ':', COND2.falso); :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | COND 'OR'&lt;/span&gt; {: write(COND1.falso, ':'); :} &lt;span style="font-weight: bold;"&gt;COND&lt;/span&gt; {:&lt;br /&gt;                                      COND.verdadero = concat(COND1.verdadero, ':', COND2.verdadero);&lt;br /&gt;                                      COND.falso = COND2.falso; :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | 'NOT' COND&lt;/span&gt; {: COND.verdadero = COND1.falso;&lt;br /&gt;                          COND.falso = COND1.verdadero; :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | '(' COND ')'&lt;/span&gt; {: COND.verdadero = COND1.verdadero;&lt;br /&gt;                        COND.falso = COND1.falso; :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | EXP '&lt;' EXP&lt;/span&gt; {: write('if', EXP1.cad, '&lt;', EXP2.cad, 'then goto L', contEtiq);                               COND.verdadero = concat('L', contEtiq);                                                     contEtiq++;                                                     write('goto L', contEtiq);                               COND.falso = concat ('L', contEtiq);                       contEti++; :} &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;| EXP '&gt;' EXP&lt;/span&gt; {: write('if', EXP1.cad, '&gt;', EXP2.cad, 'then goto L', contEtiq);                         &lt;br /&gt;COND.verdadero = concat('L', contEtiq);                                               &lt;br /&gt;contEtiq++;                                               &lt;br /&gt;write('goto L', contEtiq);                         &lt;br /&gt;COND.falso = concat ('L', contEtiq);                 &lt;br /&gt;contEti++; :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | EXP '==' EXP&lt;/span&gt; {: write('if', EXP1.cad, '==', EXP2.cad, 'then goto L', contEtiq);                         &lt;br /&gt;COND.verdadero = concat('L', contEtiq);                                               &lt;br /&gt;contEtiq++;                                               &lt;br /&gt;write('goto L', contEtiq);                         &lt;br /&gt;COND.falso = concat ('L', contEtiq);                 &lt;br /&gt;contEti++; :}&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | EXP '!=' EXP&lt;/span&gt; {: write('if', EXP1.cad, '!=', EXP2.cad, 'then goto L', contEtiq);                         &lt;br /&gt;COND.verdadero = concat('L', contEtiq);                                               &lt;br /&gt;contEtiq++;                                               &lt;br /&gt;write('goto L', contEtiq);                         &lt;br /&gt;COND.falso = concat ('L', contEtiq);                 &lt;br /&gt;contEti++; :}&lt;br /&gt;&lt;br /&gt;Para los siguientes ejemplos el codigo que genera:&lt;br /&gt;&lt;br /&gt;a '&lt;' b AND  c '&gt;' e&lt;br /&gt;         if a'&lt;'b then goto L1 L1:     goto L2            if c'&gt;'e then goto L3&lt;br /&gt;         goto L4&lt;br /&gt;&lt;br /&gt;al terminar la etiqueta verdadera seria L3 y las falsas L2 y L4.&lt;br /&gt;&lt;br /&gt;a '&lt;' b OR c '&gt;' e&lt;br /&gt;         if a'&lt;'b then goto L1 L2:     goto L2            if c'&gt;'e then goto L3&lt;br /&gt;         goto L4&lt;br /&gt;&lt;br /&gt;al terminar las etiqueta verdadera seria L1 y L3 y la falsa L4.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Definicion para Expresiones Condicionales&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt; &lt;span style="font-weight: bold;"&gt;Valores Numericos&lt;/span&gt; (No Corto Circuito)&lt;/b&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;Aqui solo se manjea un atributo que contendra el valor falso o verdadero de la condicion&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;COND := COND 'AND' COND&lt;/span&gt; &lt;/b&gt;&lt;/b&gt;{: write('T', contTemp, '=', COND1.temp, 'AND', COND2.temp);&lt;br /&gt;COND.temp = concat('T', contTemp);&lt;br /&gt;contTemp++; :}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | COND 'OR' COND&lt;/span&gt;&lt;/b&gt;&lt;/b&gt; {: write('T', contTemp, '=', COND1.temp, 'OR', COND2.temp);&lt;br /&gt;COND.temp = concat('T', contTemp);&lt;br /&gt;contTemp++; :}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | 'NOT' COND &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;{: write(COND1.temp, '= NOT', COND1.temp);&lt;br /&gt;COND.temp = COND1.temp;&lt;br /&gt;:}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | '(' COND ')'&lt;/span&gt;&lt;/b&gt;&lt;/b&gt; {:  COND.temp = COND1.temp; :}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | EXP '&lt;' EXP&lt;/span&gt; &lt;/b&gt;&lt;/b&gt;{: write('if', EXP1.cad, '&lt;', EXP2.cad, 'then goto L', contEtiq); write('T', contTemp, '= false'); contEtiq++; write('goto L' + contEtiq); write('L', contEtiq-1, ':'); write('T', contTemp, '= true'); write('L', contEtiq, ':'); COND.temp = concat('T', contTemp); contTemp++; :} &lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;span style="font-weight: bold;"&gt;   &lt;br /&gt;| EXP '&gt;' EXP&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;span&gt; &lt;/span&gt;{: write('if', EXP1.cad, '&gt;', EXP2.cad, 'then goto L', contEtiq);&lt;br /&gt;write('T', contTemp, '= false');&lt;br /&gt;contEtiq++;&lt;br /&gt;write('goto L' + contEtiq);&lt;br /&gt;write('L', contEtiq-1, ':');&lt;br /&gt;write('T', contTemp, '= true');&lt;br /&gt;write('L', contEtiq, ':');&lt;br /&gt;COND.temp = concat('T', contTemp);&lt;br /&gt;contTemp++;&lt;br /&gt;:}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | EXP '==' EXP &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;{: write('if', EXP1.cad, '==', EXP2.cad, 'then goto L', contEtiq);&lt;br /&gt;write('T', contTemp, '= false');&lt;br /&gt;contEtiq++;&lt;br /&gt;write('goto L' + contEtiq);&lt;br /&gt;write('L', contEtiq-1, ':');&lt;br /&gt;write('T', contTemp, '= true');&lt;br /&gt;write('L', contEtiq, ':');&lt;br /&gt;COND.temp = concat('T', contTemp);&lt;br /&gt;contTemp++;&lt;br /&gt;:}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      | EXP '!=' EXP &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;{: write('if', EXP1.cad, '!=', EXP2.cad, 'then goto L', contEtiq);&lt;br /&gt;write('T', contTemp, '= false');&lt;br /&gt;contEtiq++;&lt;br /&gt;write('goto L' + contEtiq);&lt;br /&gt;write('L', contEtiq-1, ':');&lt;br /&gt;write('T', contTemp, '= true');&lt;br /&gt;write('L', contEtiq, ':');&lt;br /&gt;COND.temp = concat('T', contTemp);&lt;br /&gt;contTemp++;&lt;br /&gt;:}&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;Para los siguientes ejemplos el codigo que genera:&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;a '&lt;' b AND c '&gt;' e&lt;br /&gt;if a'&lt;'b then goto L1 T1 = false goto L2 L1: T1 = true L2: if c'&gt;'e then goto L3&lt;br /&gt;T2 = false&lt;br /&gt;goto L4&lt;br /&gt;L3:&lt;br /&gt;T2 = false&lt;br /&gt;L4:&lt;br /&gt;T3 = T1 AND T2&lt;br /&gt;&lt;br /&gt;Al terminar el tempororal T3 tendra el resultado de la condicion&lt;br /&gt;&lt;br /&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;a '&lt;' b OR c '&gt;' e&lt;br /&gt;if a'&lt;'b then goto L1 T1 = false goto L2 L1: T1 = true L2: if c'&gt;'e then goto L3&lt;br /&gt;T2 = false&lt;br /&gt;goto L4&lt;br /&gt;L3:&lt;br /&gt;T2 = false&lt;br /&gt;L4:&lt;br /&gt;T3 = T1 OR T2&lt;br /&gt;&lt;br /&gt;Al terminar el tempororal T3 tendra el resultado de la condicion&lt;br /&gt;&lt;br /&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" if="" c=""&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b then="" l1="" goto="" l2="" t1="false" if="" c=""&gt;&lt;b then="" l1="" goto="" l2="" t1="false" if="" c=""&gt;Bueno Espero que les sirva de algo, mas tarde les subo una para generar codigo de tres direcciones de arreglos, saludos...&lt;br /&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-5751434176114661909?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/5751434176114661909/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=5751434176114661909' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/5751434176114661909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/5751434176114661909'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2009/09/codigo-de-tres-direcciones.html' title='Codigo de Tres Direcciones'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8651710191535128418.post-5147440969595799533</id><published>2009-09-03T16:41:00.001-06:00</published><updated>2009-09-07T19:57:26.189-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sistemas Operativos'/><title type='text'>Sistemas Operativos de Tiempo Real</title><content type='html'>Al hablar de un sistema operativo de tiempo real, conocido por sus siglas en ingres RTOS –Real Time Operrating System-, nos referimos a que este ha sido desarrollado para aplicaciones que funcionan en tiempo real.  Debito a esto, el sistema operativo es exigido en sus respuestas que tienen restricción del tiempo (muy corto).  A este tipo de sistemas se les denomina Determinísticos, debido a que el tiempo requerido para la realización de las actividades es predecible, esto con el objetivo de asegurar su funcionamiento, caso contrario el sistema operativo no tendría razón de ser y como consecuencia se catalogaría como fallido.&lt;br /&gt;&lt;br /&gt;Otro término que surge al referirnos a sistemas operativos de tiempo real, son aquellos sistemas en donde el usuario no tiene importancia, si no, le importancia total esta destinada a los procesos.  Frecuentemente todos los procesos que administra este tipo de sistemas operativos, están subutilizando sus recursos con el objetivo de que puedan tomarlos en el momento que se requieran sin la necesidad de esperar por ellos.&lt;br /&gt;&lt;br /&gt;Clases de RTOS&lt;br /&gt;&lt;br /&gt;·         Tiempo real estricto (Hard Real Time): sus procesos deben ejecutarse en un tiempo específico.&lt;br /&gt;&lt;br /&gt;·          Tiempo real flexible (Soft Real Time): al ejecutar sus procesos pueden perderse instantes despreciables algunas veces, pero en el transcurso del tiempo estos tiempos deben ser cada vez menores.&lt;br /&gt;&lt;br /&gt;·         Tiempo real firme (Firm Real Time): en este tipo pueden perderse tiempos, pero las respuestas tardías no tendrán validez.&lt;br /&gt;&lt;br /&gt;Los sistemas Operativos de Tiempo Real son aplicados en diversas áreas:&lt;br /&gt;&lt;br /&gt;·         Control de trenes.&lt;br /&gt;&lt;br /&gt;·         Control de tráfico aéreo&lt;br /&gt;&lt;br /&gt;·         Bolsas de valores&lt;br /&gt;&lt;br /&gt;·         Control de refinerías&lt;br /&gt;&lt;br /&gt;·         Control de laminadores&lt;br /&gt;&lt;br /&gt;·         Control de trafico&lt;br /&gt;&lt;br /&gt;·         Controles electrónicos&lt;br /&gt;&lt;br /&gt;·         Telecomunicaciones.&lt;br /&gt;&lt;br /&gt;·         Sistemas de fabricación integrada.&lt;br /&gt;&lt;br /&gt;·         Producción y distribución de energía eléctrica.&lt;br /&gt;&lt;br /&gt;·         Control de edificios.&lt;br /&gt;&lt;br /&gt;·         Sistemas multimedia.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Algunos Ejemplos de Sistemas Operativos que Trabajan en Tiempo Real:&lt;br /&gt;&lt;br /&gt;·         QNX&lt;br /&gt;&lt;br /&gt;·         LynxOS&lt;br /&gt;&lt;br /&gt;·         RedHat Embedded Linux&lt;br /&gt;&lt;br /&gt;·         eCos (Linux)&lt;br /&gt;&lt;br /&gt;·         SOOS&lt;br /&gt;&lt;br /&gt;·         Ubuntu Studio (Linux)&lt;br /&gt;&lt;br /&gt;·         VxWorks&lt;br /&gt;&lt;br /&gt;·         Windows CE&lt;br /&gt;&lt;br /&gt;·         Linchos&lt;br /&gt;&lt;br /&gt;·         UNIX (Some)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Características de los Sistemas Operativos en Tiempo Real&lt;br /&gt;&lt;br /&gt;Un RTOS para ser considerado como tal debe atender cinco áreas especificas:&lt;br /&gt;&lt;br /&gt; Se caracterizan por presentar requisitos especiales en cinco áreas generales:&lt;br /&gt;&lt;br /&gt;·         Determinismo: cuanto tiempo consume un SO en reconocer una interrupción.&lt;br /&gt;&lt;br /&gt;·         Sensibilidad: cuanto tiempo consume un SO en dar servicio a la interrupción después de reconocerla.&lt;br /&gt;&lt;br /&gt;o   La cantidad de tiempo necesario para iniciar la gestión de la interrupción y comenzar la ejecución de su rutina de tratamiento (ISR, interrupt service routine).&lt;br /&gt;&lt;br /&gt;o   La cantidad de tiempo necesario para ejecutar la ISR. Generalmente, depende de la plataforma del hardware.&lt;br /&gt;&lt;br /&gt;o   El efecto del tratamiento de interrupciones. El servicio se retrasara si una ISR puede ser interrumpida por la llegada de otra interrupción.&lt;br /&gt;&lt;br /&gt;·         Control del usuario: es primordial que el usuario posea un control preciso sobre la prioridad de las tareas.&lt;br /&gt;&lt;br /&gt;·         Fiabilidad: en estos tipos de sistemas una falla puede ser catastrófica, asi que no pueden permitirse como en los sistemas normales.&lt;br /&gt;&lt;br /&gt;·         Tolerancia a los fallos: el sistema en todo momento debe ser estable, y en caso no puede atender todas sus tareas debe atender las mas criticas y con mayor prioridad.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Para cumplir los requisitos anteriores los sistemas operativos actuales en tiempo real incluyen normalmente las siguientes características:&lt;br /&gt;&lt;br /&gt;·         Cambios rápidos de procesos o hilos.&lt;br /&gt;&lt;br /&gt;·         Pequeño tamaño (con una mínima funcionalidad asociada).&lt;br /&gt;&lt;br /&gt;·         Capacidad de responder rápidamente a interrupciones externas.&lt;br /&gt;&lt;br /&gt;·         Multitarea con herramientas de comunicación entre procesos, como semáforos, señales y sucesos.&lt;br /&gt;&lt;br /&gt;·         Uso de archivos secuénciales especiales que puedan acumular datos a alta velocidad.&lt;br /&gt;&lt;br /&gt;·         Planificación preferente basadas en prioridades.&lt;br /&gt;&lt;br /&gt;·         Reducción de intervalos en los que están inhabilitadas las interrupciones.&lt;br /&gt;&lt;br /&gt;·         Primitivas para demorar tareas durante un tiempo fijo y para detenerlas y reanudarlas.&lt;br /&gt;&lt;br /&gt;·         Alarmas  especiales y temporizadores.&lt;br /&gt;&lt;br /&gt;Arquitectura de un sistema operativo de tiempo real&lt;br /&gt;&lt;br /&gt;Los RTOS tienen como objetivo principal reducir la latencia y el jitter en las interrupciones, tanto internas como externas, al orden de microsegundos.&lt;br /&gt;&lt;br /&gt;El procesamiento de interrupciones en el kernel estándar esta divido en 2 tareas.&lt;br /&gt;&lt;br /&gt;·         Una que se encarga de la lectura de los dispositivos físicos y escribir los datos a un buffer, esta tarea es conocida como administrador de interrupciones.&lt;br /&gt;&lt;br /&gt;·         La otra tarea está encargada de la lectura de los datos del buffer a otro buffer con la finalidad de que sean accedidos desde el kernel.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_3O--G4MA2lo/SqW5KJc-sEI/AAAAAAAAAJQ/OPCASdHrPVU/s1600-h/real.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 253px; height: 320px;" src="http://2.bp.blogspot.com/_3O--G4MA2lo/SqW5KJc-sEI/AAAAAAAAAJQ/OPCASdHrPVU/s320/real.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5378908913951223874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hoy en dia se manejan dos tipos de diseño  para manejar las interrupciones:&lt;br /&gt;&lt;br /&gt;·         Atención prioritaria en el kernel estándar (Preemptable kernel)&lt;br /&gt;&lt;br /&gt;·         Modificaciones sobre el kernel estándar (Patch)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Lecturas Recomendadas&lt;br /&gt;&lt;br /&gt;http://www.realtimelinuxfoundation.org/&lt;br /&gt;&lt;br /&gt;http://www.linuxdevices.com/articles/AT8073314981.html/&lt;br /&gt;&lt;br /&gt;http://www.fact-index.com/r/re/real_time_operating_system.html&lt;br /&gt;&lt;br /&gt;http://www.se.rit.edu/~jrv/research/RT_Embedded.html&lt;br /&gt;&lt;br /&gt;http://www.linuxworld.com/story/34335.htm&lt;br /&gt;&lt;br /&gt;http://www.redsonic.com/products/real-time.htm&lt;br /&gt;&lt;br /&gt;http://linuxdevices.com/articles/AT4627965573.html&lt;br /&gt;&lt;br /&gt;http://www.linuxdevices.com/articles/AT4503827066.html&lt;br /&gt;&lt;br /&gt;http://www.linuxdevices.com/articles/AT7005360270.html&lt;br /&gt;&lt;br /&gt;http://www.linuxdevices.com/articles/AT5709748392.html&lt;br /&gt;&lt;br /&gt;http://www.mnis.fr/opensource/ocera/rtos/&lt;br /&gt;&lt;br /&gt;Documentos Relacionados&lt;br /&gt;&lt;br /&gt;http://tornasol.datsi.fi.upm.es/ciclope/doc/rtos/cache/doc/embeddedlinux.ppt&lt;br /&gt;&lt;br /&gt;http://tornasol.datsi.fi.upm.es/ciclope/doc/rtos/cache/doc/linux_as_rtos.pdf&lt;br /&gt;&lt;br /&gt;http://tornasol.datsi.fi.upm.es/ciclope/doc/rtos/cache/doc/realtimelinuxreport.pdf&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Referencias Bibliográficas&lt;br /&gt;&lt;br /&gt;http://dialnet.unirioja.es/servlet/articulo?codigo=495644&lt;br /&gt;&lt;br /&gt;http://www.monografias.com/trabajos5/sisop/sisop.shtml&lt;br /&gt;&lt;br /&gt;http://www-gti.det.uvigo.es/~pedro/pub/sodtr/&lt;br /&gt;&lt;br /&gt;http://es.wikipedia.org/wiki/Sistema_operativo_de_tiempo_real&lt;br /&gt;&lt;br /&gt;http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/PLAPRO02_archivos/caracteristicas_de_los_s.o._en_t.r.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8651710191535128418-5147440969595799533?l=compartiendotuconocimiento.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://compartiendotuconocimiento.blogspot.com/feeds/5147440969595799533/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8651710191535128418&amp;postID=5147440969595799533' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/5147440969595799533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8651710191535128418/posts/default/5147440969595799533'/><link rel='alternate' type='text/html' href='http://compartiendotuconocimiento.blogspot.com/2009/09/sistemas-operativos-de-tiempo-real.html' title='Sistemas Operativos de Tiempo Real'/><author><name>Elder Alexander Prado Herrera</name><uri>http://www.blogger.com/profile/01960207081871177583</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_3O--G4MA2lo/SqW5KJc-sEI/AAAAAAAAAJQ/OPCASdHrPVU/s72-c/real.jpg' height='72' width='72'/><thr:total>1</thr:total></entry></feed>
