<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://lucasontivero.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2flucasontivero.spaces.live.com%2fcategory%2fArgent-os%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Lucas Ontivero: Argent-os</title><description /><link>http://lucasontivero.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catArgent-os</link><language>en-US</language><pubDate>Fri, 15 Aug 2008 15:15:42 GMT</pubDate><lastBuildDate>Fri, 15 Aug 2008 15:15:42 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://lucasontivero.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>3988747590285877710</live:id><live:alias>lucasontivero</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Comentarios SF.Net</title><link>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!232.entry</link><description>&lt;p&gt;
&lt;p&gt;
&lt;p&gt;Acá van algunos consejos para quienes quieran registrar un proyecto en SF.Net: en primer lugar hay que seleccionar bien todas las tecnologías utilizadas y tomarse todo el tiempo necesario para redactar correctamente el objetivo del proyecto. Luego hay que redactar una descripción detalladísima de proyecto incluyendo, además de para que sirve el proyecto, las herramientas utilizadas (calculo que es mejor si es todo open source), servicios de SF.Net que queremos utilizar como web site, cvs, colaboraciones, rss, issues tracker, etc., el tipo de licencia, frecuencia estimada de upload de builds, tamaño de estos, fase en que se encuentra el proyecto, miembros y un montón de cosas más. Luego de todo esto y sin importar cuán claro seamos, nos hacen algunas preguntas mas (si si, seres humanos). En el caso de argent-os las preguntas estaban orientadas a determinar si los servicios que solicitaba los iba a necesitar realmente o no. Después de unas cuantas idas y vueltas porque esta gente no presta mucha atención y uno no explica muy bien en ingles tuve que echar mano a un recurso no muy bueno pero si muy efectivo: buscar proyectos con características similares en cuanto a tecnologías, objetivos, tamaños de los equipos, tipos de distribuciones, etc., y que esten bien posicionados (por dios!!! compárense con los buenos!) y mencionarlos. Si, es algo así como decirles &amp;quot;no demos mas vueltas!, si ya tienen un montón de proyectos similares!, apruébenmelo de una vez&amp;quot;. 
&lt;p&gt;Ahora, realmente el proceso es muy serio y no es posible subir cualquier cosa a la bartola. Por ejemplo, al ser argent-os un sistema operativo, me resaltaron el hecho de que las distribuciones de los SO son por lo general muy grandes y preguntaron en que formato se iban a distribuir y cuanto pesarían entre otras cosas. &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3988747590285877710&amp;page=RSS%3a+Comentarios+SF.Net&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=lucasontivero.spaces.live.com&amp;amp;GT1=lucasontivero"&gt;</description><comments>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!232.entry#comment</comments><guid isPermaLink="true">http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!232.entry</guid><pubDate>Thu, 07 Dec 2006 19:27:29 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://lucasontivero.spaces.live.com/blog/cns!375AE0CCD1AF61CE!232/comments/feed.rss</wfw:commentRss><wfw:comment>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!232.entry#comment</wfw:comment><dcterms:modified>2006-12-07T19:28:07Z</dcterms:modified></item><item><title>argent-os en SourceForge.Net</title><link>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!231.entry</link><description>&lt;p&gt;Bueno, despues de un largo proceso de registración de poco mas de 2 semanas, por fin pude registrar el proyecto de &lt;a href="http://sourceforge.net/"&gt;SF.Net&lt;/a&gt;.   &lt;h4&gt;&lt;strong&gt;Que es argent-os?&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;&lt;a href="https://sourceforge.net/projects/argentos"&gt;argent-os&lt;/a&gt; es un sistema operativo de 32 bits para la 386 y posteriores, basado en la idea de un microkernel que posibilita una gran modularidad. &lt;a href="https://sourceforge.net/projects/argentos"&gt;argent-os&lt;/a&gt; nació el 12 de Septiembre de 2003 y recoge ideas de muchos sistemas como MINIX, OSSO, FREEDOWS y Jeffos, entre otros. La idea que persigue es la de un SO con un planificador con prioridades para servir de plataforma para pruebas de control de brazos robóticos del centro de automación y robótica (CUDAR) de la &lt;a href="http://www.frc.utn.edu.ar"&gt;Universidad Tecnológica Nacional - Facultad Regional Córdoba&lt;/a&gt; aunque mas tarde se cambió el objetivo para intentar lograr un mini-MINIX.  &lt;p&gt;Aquí van algunas capturas:  &lt;p&gt;&lt;a href="http://tk4.storage.msn.com/x1pAdjo0uCo2H2T6M0BZ-Ft1eIknYtk8CLToS6eJUBdTpDOgHnOnA5p_5gh_m_asnGX2otXFhOj-MOyLefkbvTQRQ4VGbDG8f61S8sgfJ8bqf66BR32uKPC7dTkKRg9KXha0PgXWrdvS1HwICQDA-sO9i4v1jd83W9r"&gt;&lt;img height=157 alt="argent-os iniciando" src="http://tk4.storage.msn.com/x1pAdjo0uCo2H2T6M0BZ-Ft1eIknYtk8CLToS6eJUBdTpBTaY-WIgBItuvFiSog8fKg_A0lAoRGJ2FsuO6N7ETRYCi-77GrTuvR-ZCb90RmjyV9Mbch3mORqAEGcZojFWKl58Xbu7Pjhb8ux3kRvA0OwA" width=240&gt;&lt;/a&gt; &lt;a href="http://tk4.storage.msn.com/x1pAdjo0uCo2H2T6M0BZ-Ft1eIknYtk8CLToS6eJUBdTpBRNvMMA3i_AwnULLMVCf_MQoX1xnTV7IkPBP-bEThyNh92mgxn2EhT0HR3DRL5z24lasJeB3tYOriP3J-PfgvoMWY5mMjLTEKw-SvmWzMxy3Ues_vllw4Z"&gt;&lt;img height=155 alt="argent-os haciendo un volcado del sector de booteo" src="http://tk4.storage.msn.com/x1pAdjo0uCo2H2T6M0BZ-Ft1eIknYtk8CLToS6eJUBdTpCP2giKK5l7zg-xkD7c3O3yNpawf1Q29z0GCvO0bjxxZNYnoTM8x8-gGBE1jclsUdTIlm1NEk15K-upS4QCGPkpBUij-hVYR6EqmlLF1gnV0g" width=240&gt;&lt;/a&gt; &lt;a href="http://tk4.storage.msn.com/x1pAdjo0uCo2H2T6M0BZ-Ft1eIknYtk8CLToS6eJUBdTpDPoDQc7bHfdUs1uaPXARPhZvBHQvcf5B-lrDZ1G-yZoAMnPlS7XMdnzq0h6cKaKtH7ClxE_WRwBF5RIT-juwIOQiRDNSm7fr9YJ0I2CYYrtg5DyZbVpg1n"&gt;&lt;img height=155 alt="argent-os capturando una exception" src="http://tk4.storage.msn.com/x1pAdjo0uCo2H2T6M0BZ-Ft1eIknYtk8CLToS6eJUBdTpAN4wUsnUh0UVRbxKuoh7ph_8mp0sViWey6pBZOPg0gKpIdhR5e1EuCg6UjLks9Ni85otCusLM2dZk3ttygvp97zTGNV4bzbCOMRJ4uY_IGoQ" width=240&gt;&lt;/a&gt;  &lt;p&gt;   &lt;p&gt;Todavia no he subido el proyecto pero lo estaré haciendo muy pronto.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3988747590285877710&amp;page=RSS%3a+argent-os+en+SourceForge.Net&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=lucasontivero.spaces.live.com&amp;amp;GT1=lucasontivero"&gt;</description><comments>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!231.entry#comment</comments><guid isPermaLink="true">http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!231.entry</guid><pubDate>Thu, 07 Dec 2006 12:21:52 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://lucasontivero.spaces.live.com/blog/cns!375AE0CCD1AF61CE!231/comments/feed.rss</wfw:commentRss><wfw:comment>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!231.entry#comment</wfw:comment><dcterms:modified>2006-12-07T12:21:52Z</dcterms:modified></item><item><title>Bootstrap and Operating Systems Loading in ARGENT-OS</title><link>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!209.entry</link><description>&lt;p&gt;
&lt;h4&gt;ANTES DE EMPEZAR&lt;/h4&gt;
&lt;p&gt;He decidido empezar a publicar mis &lt;a href="http://www.geocities.com/lucasontivero"&gt;trabajos viejos&lt;/a&gt; en este blog y comienzo por este que es uno de los que mas me gustan y mas me hanhecho sufrir.
&lt;h4&gt;INTRODUCCION&lt;/h4&gt;
&lt;p&gt;
&lt;h3&gt;&lt;/h3&gt;Hace ya muchos años, allá por el 2002 comencé a escribir un &lt;a href="http://www.geocities.com/lucasontivero/argentos/index.htm"&gt;sistema operativos multitarea de 32 bit al que llamé ARGENT-OS&lt;/a&gt; (esto fue mucho antes de la serie de Franchela). Este OS, el cual pienso continuar un futuro cercano, comenzó como un intento de escribir un planificador de tareas para el &lt;a href="http://www.geocities.com/lucasontivero/otros/cudar/index.htm"&gt;robot ACMA TH8&lt;/a&gt; que reconstruimos y programamos en el &lt;a href="http://www.investigacion.frc.utn.edu.ar/cudar/"&gt;CUDAR UTN&lt;/a&gt;.&lt;br&gt;La idea era tener algo así como nuestro propio SO para las PCs que controlaban al robot. Despues planeamos construir nuestro propio &lt;a href="http://www.geocities.com/lucasontivero/mpc/index.htm"&gt;lenguaje de programación&lt;/a&gt; para el robot pero esto lo publicaré en otra oportunidad.&lt;br&gt;Mucho antes de eso habia tenido experiencia con virus del sector de booteo cuando tenia mi XT mas precisamente el Michelangelo y el Stoned (Your PC is stoned! - lo recuerdan). La verdad es que ninguno de estos bicharacos eran gran cosa así que para cuando me encomendaron el proyecto ya tenía algo por donde empezar; el virus cocho98! jajaja. Si en la facu me conocian por cocho y nunca supe bien por qué. 
&lt;p&gt;  
&lt;h4&gt;EL PROCESO DE BOOTEO&lt;/h4&gt;
&lt;p&gt;Luego de que la PC arranca, comienza a ejecutarse el código que se encuentra en la dir. F000:FFF0 el cual pertenece al ROM-BIOS y es el encargado de realizar una serie de tests sobre el equipo e inicializar algunas cosas. Esta rutina se llama POST (Power On Self-Test). Lo realmente importante a la hora de escribir el código para el sector de booteo de nuestro SO &lt;br&gt;es lo que sucede despues del POST, es decir el bootstrap loader. Una vez que el BIOS termina con sus tests e inicializaciones carga el sector 1 (cilindro 0, cabeza 0, sector 1) en la dir. 0000:7C00 (7C00 lineal), comprueba que contenga código válido (comprueba que esté firmado con 55H, AAH en los bytes 511 y 512) y salta a esa dirección (CS:IP apuntan a esa dirección).&lt;br&gt;Lo que se encuentre en ese sector depende el SO que tenga instalado el disco. 
&lt;h4&gt;SECTORES DE BOOTEO Y CARGADORES&lt;/h4&gt;
&lt;p&gt;En realidad es muy poco lo que puede hacerse con 512 byte que en realidad son menos por los 2 de la firma, unos cuantos para los strings de errores y las rutinas que los despliegan, mas unas instrucciones para esperar que el usuario presione una tecla y otros cuantos bytes para la rutina de rebooteo, y un pequeno segmento de datos para saber si estamos en un&lt;br&gt;disco de 1 mb o de unos cuantos teras, el nombre del volument, etc. Al final no se si nos quedarán mas de 300 bytes para código.&lt;br&gt;En sístensis lo que pretendo decir es que con estos 300bytes no se puede cargar un SO ni a palos (salvo cosas como MSDOS que si se pueden pero tendríamos que discutir si puede llamarse a esto un SO).&lt;br&gt;Ahora bien, la pregunta es ¿Por que no se puede cargar? y la respuesta es porque la magnitud de la tarea requiere mucho mas código del que podemos alojar aquí. MSDOS tenía todo un poco harcodeado por lo que con 512 le sobraba (realmente le sobraban en serio) porque los archivos del sistema eran los primeros en el directorio raiz y así, entre otras cosas, se evitaba la tarea de buscar los archivos e ir resolviendo los sectores que conformaban el directorio raiz en la fat.&lt;br&gt;Ahora, existen dos alternativas para resolver el problema:
&lt;ol&gt;
&lt;li&gt;cargar un &amp;quot;cargador&amp;quot; que se encuentre en un lugar determinado del disco el cual se encargue de levantar el SO. 
&lt;li&gt;que el código del sector de booteo continue en los sectores suscesivos y que sea el primer sector el que contenga el código necesario para cargar a los sectores faltantes los cuales contiene entre otras cosas el código para levantar el SO.&lt;/ol&gt;
&lt;p&gt;La ventaja de los loaders es que pueden ser escritos en C y así nos desentendemos del ASM mientras que con un sector de booteo autocargable (esto es muy de virus) tenemos un solo archivo binario que desplegar en las imagenes de discos que creemos. Por esta razón ARGENT-OS usa esta última opción. 
&lt;h4&gt;SISTEMA DE ARCHIVOS Y EL CARGADOR&lt;/h4&gt;
&lt;p&gt;Evidentemente cuanto mas elavorado es el sistema de archivos de un SO mas complejidad es sumada al cargador. En ARGENT-OS se busca que para instalar el SO sobre una unidad con el sistema de archivos SAA solo sea necesario copiar el archivo kernel.bin y voila!&lt;br&gt;Esto requiere que el cargador:
&lt;ol&gt;
&lt;li&gt;1. calcule el sector donde se encuentran los i-nodos y los cargue. 
&lt;li&gt;2. cargue el dir. root. 
&lt;li&gt;3. busque el archivo kernel.bin 
&lt;li&gt;4. si no existe, avisa, espera al usuario y rebootea 
&lt;li&gt;5. si existe busca el bloque en los i-nodos y calcula la dir. de mem. donde ponerlos 
&lt;li&gt;6. si ya se leyeron los 23 primeros bloques, extrae del nodoi el nro. de bloque simple indirecto y lo pone en 09000h 
&lt;li&gt;7. calcula el proximo bloque y lo lee. 
&lt;li&gt;8. así hasta que se cargó todo el archivo que contiene el SO.&lt;/ol&gt;
&lt;p&gt;Todo esto es, claro está, porque el archivo no está en una ubicación fija del directorio raiz y porque sus bloques noestán en orden consecutivos. 
&lt;h4&gt;EL SECTOR DE BOOTEO &lt;/h4&gt;
&lt;h5&gt;- Carga inicial&lt;/h5&gt;
&lt;p&gt;Los 3 primeros bytes corresponden a un JMP que salta la porción donde se alojan los datos del Super Bloque y un  nop para completar. Luego, mediante INT 13 (Servicio 0x02) carga el segundo sector de la pista 0, cabeza 0 en la dirección 0x7e00. Estos corresponden a la continuación del booteador, ya que en este sistema la magnitud de la tarea que realiza el booteador hace imposible que ocupe menos de 512 bytes. Si hubo error, informa de esto al &lt;br&gt;usuario, espera que se oprima una tecla y rebootea la PC mediante: 
&lt;p&gt;db 0Eah ; jmp far 0F000h:0FFF0h&lt;br&gt;dd 0F000FFF0h ; reboot 
&lt;p&gt;En caso contrario (no hubo errores de lectura), calcula la ubicación del bloque de nodos-i en el disco y carga el primer bloque de estos en la dirección 0x8000. (En otros post explicaré la arquitectura del Filesystem de ARGENT-OS; no obstante el 'concepto' de nodo-i es el mismo que en cualquier sistema Unix) Busca en esta tabla el nodo-i numero 3 correspondiente al directorio 'raiz', carga todo el directorio en 0x8000 + bytes_per_bloque para buscar el archivo&lt;br&gt;'kernel'. Si no lo encuentra, informa al usuario diciendole que el disco no, tiene sistema, espera que se oprima una tecla y rebootea la PC mediante el procedimiento anterior. En caso que si encuentre este archivo (disco con sistema) procede a cargarlo en la direccion de memoria 0x10000 (64kb : base del sistema). 
&lt;h5&gt; &lt;/h5&gt;
&lt;h5&gt;- Entrada en Modo Protegido&lt;/h5&gt;
&lt;p&gt;Una vez hecho esto y sin que se presentaran errores de lectura, entra en modo protegido (aquí debería verificar que el procesador sea un 386 en adelante porque bien podría ser un 8086). Esto permite entre otras cosas: 
&lt;ul&gt;
&lt;li&gt;Paginación 
&lt;li&gt;Segmentación 
&lt;li&gt;Memoria Virtual 
&lt;li&gt;Multitarea con ayuda del Hardware 
&lt;li&gt;Protección de E/S 
&lt;li&gt;Protección de memoria 
&lt;li&gt;Manejo de Excepciones &lt;/ul&gt;
&lt;p&gt;Para ello realiza los siguientes pasos:
&lt;p&gt;a) Pone todos los registros de segmentos (salvo CS) a 0 (para que al momento de entrar en modo protegido tengan selectores válido y no produzcan error) y SP = 0x1000 
&lt;p&gt;b) Activa la línea A20 
&lt;p&gt;c) Carga el GDT con la dirección de mi GDT&lt;br&gt;db 066h ; 32 bit instrucción override&lt;br&gt;lgdt [fword ptr gdt_48] 
&lt;p&gt;Como en este momento estamos en modo real y LGDT es una instrucción que&lt;br&gt;necesita de MP el byte 0x66 es necesario.&lt;br&gt;gdt_48 es un pseudo descriptor. 
&lt;p&gt;d) Entra en modo protegido (activa el bit PE (0) del registro cr0) 
&lt;p&gt;movl %cr0, %eax&lt;br&gt;or $0x1, %al&lt;br&gt;mov %eax, %cr0&lt;br&gt;jmp $+2 ; esto genera una pequeña pausa o delay&lt;br&gt;nop 
&lt;p&gt;e) Salta a la dirección 0x10000 (KERNEL)&lt;br&gt;db 67h&lt;br&gt;db 066h ; instrucciones 32bits&lt;br&gt;db 0EAh ; código de JMP&lt;br&gt;dd 010000h ; dirección de KERNEL&lt;br&gt;dw 8 ; selector de CODIGO 
&lt;p&gt;-- LA GDT inicial&lt;br&gt;La GDT inicial esta definida en boot.s y consta de 3 discriptores:&lt;br&gt;0x0 NULO&lt;br&gt;dw 0,0,0,0 ; especificaciones de INTEL para protección (no se usa) 
&lt;p&gt;0x10 CODIGO&lt;br&gt;dw 0FFFFh ; 4Gb&lt;br&gt;dw 00000h ; base 0&lt;br&gt;dw 09A00h ; segm. de código&lt;br&gt;dw 000CFh ; granular (es decir, el tam se mide en paginas de 4Kb) 
&lt;p&gt;0x18 DATOS&lt;br&gt;dw 0FFFFh ; 4Gb&lt;br&gt;dw 00000h ; base 0&lt;br&gt;dw 09200h ; segm. de datos&lt;br&gt;dw 000CFh ; granular (es decir, el tam se mide en páginas de 4Kb) 
&lt;p&gt;Ok. Eso es todo amigos. Ya voy a publicar el código completo de esta cosa.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=3988747590285877710&amp;page=RSS%3a+Bootstrap+and+Operating+Systems+Loading+in+ARGENT-OS&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=lucasontivero.spaces.live.com&amp;amp;GT1=lucasontivero"&gt;</description><comments>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!209.entry#comment</comments><guid isPermaLink="true">http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!209.entry</guid><pubDate>Tue, 21 Nov 2006 13:47:44 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://lucasontivero.spaces.live.com/blog/cns!375AE0CCD1AF61CE!209/comments/feed.rss</wfw:commentRss><wfw:comment>http://lucasontivero.spaces.live.com/Blog/cns!375AE0CCD1AF61CE!209.entry#comment</wfw:comment><dcterms:modified>2006-11-21T13:47:44Z</dcterms:modified></item></channel></rss>