Páginas: [1] 2 3
|
 |
|
Autor
|
Tema: Programar un SO: La eterna duda. (Leído 1511 veces)
|
D4RIO
Desconectado
Mensajes: 403
"ser el mejor no es suficiente" - slackbyte
|
Buno, creo que me expreso bien. La eterna duda de un newbie (y de un medianamente experimentado hacker también puede ser), es esa: ¿Como programar un SO?. Tal vez sea precipitado crear un Linux o un Windows, pero pensar en cómo se empieza es un indicio de interés y de que esa persona, con esas ganas y curiosidad, puede llegar lejos. Pero a esa altura se presenta un gran problema: Encontrar documentación en Internet parece un calvario... "¿Por donde empiezo?"
Propongo que recopilemos la información necesaria acerca del BIOS y algún sistema estándar para crear un HowTo sobre la creación de Sistemas Operativos. El objetivo sería que el lector termine con el suficiente conocimiento como para crear el suyo propio, y porqué no crear uno??
Sé que Eternal Idol tiene una buena experiencia en éste área. Propongo que el manual (HowTo) contenga cosas contemporáneas:
- Todo acerca de fasm: Es un ensamblador que nacio en 32 bits y eso lo hace muy bueno. A la larga podría proponerse la creación de un lenguaje de programación desde cero. Yo estoy haciendo uno inspirado en el High Level Assembler. Primero lo planeaba hacer en NASM, pero me parece que FASM es mejor opcion.
- El BIOS: Llamadas y Servicios, y secretos del BIOS a la hora de crear un SO.
- MBR: Creo que es un compo interesante, si bien es pequeño. Las partes en las que se divide... cómo escribir y leer la tabla de particiones y el MBR...
- Tareas de un Kernel: Trabajar con un microkernel creo que sería lo más simple... sin shell en el kernel, proveyendo solo servicios en las interrupciones. Tal vez sería buena idea trabajar en modo protegido para empezar, pero el modo privilegiado es algo que tarde o temprano se deberá tocar.
- El shell: Para este entonces se supone que hemos hecho un pequeño lenguaje. Lo ideal es compilar cruzado, es decir, desde Linux (o Windows... en mi caso es Linux) para ese SO. Incluso un installer del SO para usar desde otro SO, en vez de un Disco booteable, sería buena idea.
Parece un proyecto titánico, pero con ganas y un poco de tiempo se puede hacer. A demás, lo que importa es que quede la documentación. Ir haciendo las pruevas sería solo eso: laboratorio. Tal vez si algunos se prenden podríamos hacer un ElHackerSO, y mantenerlo.
Eternal Idol, me gustaría que te prendas aca. Se que tu experiencia serviría de mucho, incluso para enseñarnos algo de FASM. Eso si... no me gustaría que se prenda gente que no desee trabajar.
¿Que dicen? - Saltar un nivel o quedarnos aca???
PD: Tengo el boot.zip, y aunque no entiendo la totalidad del código con exactitud, necesito solo un poco de documentacion para seguir adelante...
PD2: Recien veo el otro post sobre crear un SO... pero cre que este es distinto... es sobre crear la documentacion. Podria ir en un hilo aparte para no llenar de cosas el mismo post
|
|
|
|
« Última modificación: 06 Junio 2008, 01:07 por D4RIO »
|
En línea
|
Linux Registred User #452001 : : 0010 0100 - HS CODING : :
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.274
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
Buno, creo que me expreso bien. La eterna duda de un newbie (y de un medianamente experimentado hacker también puede ser), es esa: ¿Como programar un SO?. Tal vez sea precipitado crear un Linux o un Windows, pero pensar en cómo se empieza es un indicio de interés y de que esa persona, con esas ganas y curiosidad, puede llegar lejos. Pero a esa altura se presenta un gran problema: Encontrar documentación en Internet parece un calvario... "¿Por donde empiezo?" En Español supongo que habra poco y nada pero en ingles hay bastante. Propongo que recopilemos la información necesaria acerca del BIOS y algún sistema estándar para crear un HowTo sobre la creación de Sistemas Operativos. Eso evidentemente es util (para un S.O. de modo real) pero hacerlo suena a un bodrio impresionante  Normalmente a los desarrolladores no les gusta escribir documentacion y yo no soy una excepcion. - Todo acerca de fasm: Es un ensamblador que nacio en 32 bits y eso lo hace muy bueno. A la larga podría proponerse la creación de un lenguaje de programación desde cero. Yo estoy haciendo uno inspirado en el High Level Assembler. Primero lo planeaba hacer en NASM, pero me parece que FASM es mejor opcion. Me parece que te estas emocionando un poquito, hace una cosa a la vez ... Parece un proyecto titánico, pero con ganas y un poco de tiempo se puede hacer. A demás, lo que importa es que quede la documentación. Ir haciendo las pruevas sería solo eso: laboratorio. Tal vez si algunos se prenden podríamos hacer un ElHackerSO, y mantenerlo. Incluyendo todo lo que nombras lo es, empeza a pensar en el formato de ejecutables que se va a usar por ejemplo. Eternal Idol, me gustaría que te prendas aca. Se que tu experiencia serviría de mucho, incluso para enseñarnos algo de FASM. Eso si... no me gustaría que se prenda gente que no desee trabajar. No lo veo mal usar FASM, hay miles de opciones realmente, lo ultimo con lo que estuve jugando, hace meses ya, era usar GRUB - te olvidas del bootloader, pasar a modo protegido, etc - y generar el Kernel con VC++ directamente. En cuanto a lo de desear trabajar tenes que tener en cuenta que la mayoria de la gente hace OTRA cosa que le consume el tiempo, ya sea estudiar o trabajar (algunos las dos cosas  ), esto para casi todos no seria mas que un hobby al que se lo podria dedicar un tiempo variable. ¿Que dicen? - Saltar un nivel o quedarnos aca??? Para escribir documentacion no cuentes conmigo; para hacer un mini Kernel para un mini S.O. en lo que pueda colaboraria. Igual no te hacen falta otros para hacerlo 
|
|
|
|
« Última modificación: 06 Junio 2008, 12:11 por Eternal Idol »
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
skapunky
Electronik
Colaborador
Desconectado
Mensajes: 1.105
www.killtrojan.es
|
Buno, creo que me expreso bien. La eterna duda de un newbie (y de un medianamente experimentado hacker también puede ser), es esa: ¿Como programar un SO?. Si, desde luego la ETERNA duda porque ni un newbe hará un SO ni un hacker que sepa 0 de programacion lo hará.. No entiendo porque atribuyen a hacker a una persona que sabe muycho de programacion...Hay hackers que no saben o simplemente saben algo de algun lenguaje... Eternal Idol, me gustaría que te prendas aca. Se que tu experiencia serviría de mucho, incluso para enseñarnos algo de FASM. Eso si... no me gustaría que se prenda gente que no desee trabajar. No creo que pierda el tiempo enseñando a 4 perosnas que saben 0 de programacion. Con alguna duda o como 2 opinion supongo que si..Pero enseár a hacer un SO a alguien que no sabe programar...Mejor que la gente sepa programar y luego ya se preocuparan de hacer un SO. Además no solo hace falta programación para un proye to como este. PD: Tengo el boot.zip, y aunque no entiendo la totalidad del código con exactitud, necesito solo un poco de documentacion para seguir adelante... Sabes ensamblador? Sabes de arquitecturas de procesadores como el 8086? Manejas las interrupciónes y entiendes las IRQ'S? Sabes 100 cosas mas...? Si es NO, no pierdas el tiempo y empieza por cosas basicas. EL boot no sirve de nada y mas si no lo has programado tu, ya que no sabras bootear el kernel.
|
|
|
|
|
En línea
|
Infecta tu blog con el virus mas divertido y original: Entra aquíDescarga Killtrojan USB Antivirus : aquí
|
|
|
Dominicano
Desconectado
Mensajes: 932
|
Bueno hacer documentacion no estaria mal, sobre todo para ver como es el tema, y asi, es verdad, documentacion hay muchas y mas en ingles como dice eternal idol, no solo eso, sino de programacion, etc.. siempre los mejores materiales estan en ingles. pero yo me pregunta ¿Porque hay tantas gentes en internet aspirante a hacer un sistema operativo cuando ni siquiere se concen un lenguaje a fondo y ni siquiera hacer software en realidad.? creo que esto es irse muy lejos, no ?? no hablo de nadie en concreto  saludos...
|
|
|
|
|
En línea
|
|
|
|
Widget
Desconectado
Mensajes: 151
|
Hace unos 6 años en redlibre.org programamos un mini kernel que en principio iba a ser monolitico, conseguimos que arrancara y pudieras usar un teclado y el dispositivo de salida de video a 8 colores xDDD
Se llamaba LiberOS y no se si estará aun en redlibre.org disponible su codigo fuente para descargar no es gran cosa, la verdad es que es bastante pestazo pero te puede dar una ligera idea de por donde empezar.
Por supuesto no cuentes conmigo para nada y he de decirte que estas loco xDDDDD
|
|
|
|
|
En línea
|
Es mejor no abrir la boca pareciendo ser idiota, que abrirla y no dejar duda de ello...
|
|
|
D4RIO
Desconectado
Mensajes: 403
"ser el mejor no es suficiente" - slackbyte
|
No proponía un MINIX, sino un sencillo sistema capaz de bootear y tener al menos un proceso. El resto se va arreglando con el tiempo... nadie dijo que debiamos implementar POSIX, un bootloader tipo GRUB y un kernel con LKM's (no dire "monolitico" porque no lo sería), multithreading, mensajería entre procesos, y ejecutar ELF32 y ELF64... estaría hablando de suicidio, y solo pretendo un rasguño =P En Español supongo que habra poco y nada pero en ingles hay bastante. Si, desgraciadamente si. El manual de FASM que leo es en Ingles, aunque el "Sistemas Operativos: Diseño e Implementación" lo encontre en castellano. Los manuales de Intel sí, en Inglés... y la documentación de otros pequeños sistemas también... pero bueno. El tema es uno pequeño, que no lleve todo un libro de documentación. Me parece que te estas emocionando un poquito, hace una cosa a la vez ... Muy cierto, pero me será necesario que los fuentes tengan suficiente explicación, sobre todo cuando se hagan llamadas al BIOS y demás, que tienen razones de ser más allá de " moví el contenido de LD0 a AX". Incluyendo todo lo que nombras lo es, empeza a pensar en el formato de ejecutables que se va a usar por ejemplo.  Por ahora no pensaba implementar tal complicación... como ves planeaba algo a duras penas más grande que diOS. Pero a la larga bienvenido sea... tal vez incluya algunos compañeros de la facultad y veamos ese tema que me suena interesantísimo. Dar compatibilidad para ciertas especificaciónes, por más complicado que sea, me parece un reto interesante. En cuanto a lo de desear trabajar tenes que tener en cuenta que la mayoria de la gente hace OTRA cosa que le consume el tiempo, ya sea estudiar o trabajar (algunos las dos cosas  ), esto para casi todos no seria mas que un hobby al que se lo podria dedicar un tiempo variable. No lo tuve en cuenta, y veo que tenés razón... el tema es que mi tiempo variable para los hobbies suele ser invariablemente grande  ... (es que como músico me acostumbré a la frase " Hay que dedicarle tiempo"... y bueno). Para escribir documentacion no cuentes conmigo; para hacer un mini Kernel para un mini S.O. en lo que pueda colaboraria. Igual no te hacen falta otros para hacerlo Si, ya se... gracias de todas formas, de la documentación me puedo ir encargando en lo posible, y te voy a tener como un escape cuando no encuentre documentación acerca de algo ( No te preocupes... me la busco muy bien. Ahora estoy con los tres tomos de Intel y el manual de FASM, aunque no se bien de donde sacar toda la documentación del BIOS y cómo crear CD's bootables "from scratch"... porque convengamos en que los floppy son una cosa muy poco fiable). ----------------------------------------------------> Respecto a skapunky: No creo que pierda el tiempo enseñando a 4 perosnas que saben 0 de programacion. Con alguna duda o como 2 opinion supongo que si..Pero enseár a hacer un SO a alguien que no sabe programar...Mejor que la gente sepa programar y luego ya se preocuparan de hacer un SO. Además no solo hace falta programación para un proye to como este. No entiendo porqué lo violenta de tu respuesta... Yo no planteaba que "No se programar y quiero la ayuda de Eternal Idol para hacer un SO"... eso obviamente sería suicidio intelectual. Me defiendo bien con assembler, y creo que para saltar al próximo nivel podría hacer ésto. Como BONUS vi la posibilidad de dejar para ésta comunidad toda la documentación que encuentre a modo de un MINI-HOWTO... nada más... y por ahora soy uno solo  Sabes ensamblador? Sabes de arquitecturas de procesadores como el 8086? Manejas las interrupciónes y entiendes las IRQ'S? Sabes 100 cosas mas...? La mitad de esas cosas bien, y el resto dandole duro para lograr mi cometido... no soy un lammer que se sienta y dice "Hey, diganme como hacer un SO"... O sea, lo digo con respeto y espero lo tomes así, pero me parece que si yo estuviera 100% preparado para completar el proyecto, no sería para nada didáctico, en cambio estoy a medias listo y planeo usar el proyecto como excusa para hurgar un poco más en las tripas de mi máquina hasta lograr hacer un sistema mínimo... entonces si quisiera seguir lo haría por mi cuenta... o a gusto de los que estén intersados. Si es NO, no pierdas el tiempo y empieza por cosas basicas. EL boot no sirve de nada y mas si no lo has programado tu, ya que no sabras bootear el kernel. Te equivocas. Leyendo ese código encontré muy buena base para empezar a investigar, y más aún leyendo otros fuentes de pequeños sistemas operativos. El fuente sí sirve aún sin saber o sin haberlo escrito, porque así se expande el "saber" para incorporar esos conocimientos necesarios. ------------------------------------------------------------------> y DamnWidget: Hace unos 6 años en redlibre.org programamos un mini kernel que en principio iba a ser monolitico, conseguimos que arrancara y pudieras usar un teclado y el dispositivo de salida de video a 8 colores xDDD
Se llamaba LiberOS y no se si estará aun en redlibre.org disponible su codigo fuente para descargar no es gran cosa, la verdad es que es bastante pestazo pero te puede dar una ligera idea de por donde empezar.
Por supuesto no cuentes conmigo para nada y he de decirte que estas loco xDDDDD Lo veré a ver que le saco... y por lo de mi estado psicológico no te preocupes, desde 7º grado me insisten con que es deplorable pero nadie me quita lo bailado y si logro ésto me sentiré orgulloso... aunque digan que estoy loco  ======================================> Como verán todos, tengo ganas de hacer ésto, y me gustaría contar al menos con personas que me digan "si tenés alguna duda consultame y vemos"... y claro, con los otros que digan "segui que esto me interesa mucho, estás dejando buena info"... que es en fin la finalidad del proyecto. Muchas gracias y espero sigan conmigo, aunque sea para alguna consulta. 
|
|
|
|
« Última modificación: 06 Junio 2008, 13:07 por D4RIO »
|
En línea
|
Linux Registred User #452001 : : 0010 0100 - HS CODING : :
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.274
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
No proponía un MINIX, sino un sencillo sistema capaz de bootear y tener al menos un proceso. El resto se va arreglando con el tiempo... nadie dijo que debiamos implementar POSIX, un bootloader tipo GRUB y un kernel con LKM's (no dire "monolitico" porque no lo sería), multithreading, mensajería entre procesos, y ejecutar ELF32 y ELF64... estaría hablando de suicidio, y solo pretendo un rasguño =P Muy bien, para eso, como te decia al final de mi mensaje anterior, no necesitas realmente a nadie mas. Intenta y si algo no va pregunta, seguro que alguien te puede ayudar. Offtopic lo de monolitico pero ya que lo traes a la mesa: ¿Necesitas el codigo fuente para generar otro binario y solo funciona contra una version especifica?  Si, desgraciadamente si. El manual de FASM que leo es en Ingles, aunque el "Sistemas Operativos: Diseño e Implementación" lo encontre en castellano. Si, lo tengo en papel desde hace años, es un libro muy viejo y usado en el ambito academico por eso esta traducido. Muy cierto, pero me será necesario que los fuentes tengan suficiente explicación, sobre todo cuando se hagan llamadas al BIOS y demás, que tienen razones de ser más allá de "moví el contenido de LD0 a AX". Me referia a que queres hacer un S.O., un lenguaje y vaya uno a saber que mas  No lo tuve en cuenta, y veo que tenés razón... el tema es que mi tiempo variable para los hobbies suele ser invariablemente grande  ... (es que como músico me acostumbré a la frase " Hay que dedicarle tiempo"... y bueno). Sos afortunado entonces; si tenes que trabajar 8 horas al dia, estudiar cuando podes y no volverte loco mucho tiempo no te queda. Si, ya se... gracias de todas formas, de la documentación me puedo ir encargando en lo posible, y te voy a tener como un escape cuando no encuentre documentación acerca de algo (No te preocupes... me la busco muy bien. Ahora estoy con los tres tomos de Intel y el manual de FASM, aunque no se bien de donde sacar toda la documentación del BIOS y cómo crear CD's bootables "from scratch"... porque convengamos en que los floppy son una cosa muy poco fiable). Lee sobre El Torito. Igual te recomiendo usar maquinas virtuales (VMWare, VirtualPC, VirtualBox, etc) ...
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
D4RIO
Desconectado
Mensajes: 403
"ser el mejor no es suficiente" - slackbyte
|
Gracias por tu disposicion. Te comento que pensaba hacerlo por empezar en VirtualBox, generando imagenes ISO para bootear. Ya sabia sobre eltorito y creo que recuerdo cómo implementarla pero el tema va a ser encontrar suficiente info de cómo trabaja y cómo hacer que me bootee el kernel. Si me ubico bien el BIOS cargaría GRUB con el stage2 eltorito, y desde ahí cargaría mi kernel, que... ¿debería estar cargado en una imagen tipo *.img de floppy?... Más adelante voy a ponerme en campaña con esa parte, pero por ahora mi vista está en entender algunos aspectos de MINIX que tengo poco claros, aunque lograr el arranque es lo primero, pero no quiero perderle el hilo al libro. Te repito que agradezco tu disposición, y en todo caso cuando lo necesite te escribo un MP, o aca en el mismo hilo, como lo desees... aunque me parece que si lleno mucho el hilo después no se va a entender nada. Pero bueh... Nos escribiremos luego. Sigo leyendo 
|
|
|
|
|
En línea
|
Linux Registred User #452001 : : 0010 0100 - HS CODING : :
|
|
|
Sr.Deep
Desconectado
Mensajes: 458
jaja este si no me lo van a joder xD
|
hola , uf ni cuanto tiempo sin postear .. grax domininicano por pasarme el link xD 1) en ingles hay mucha información. 2) http://www.osdever.net/3) si estas bajo windows , usa DJGPP y NASM. 4) ¿por que no usar MingW? por que linker tiene problemas para linkear .aout 5) recuerda que a 32 bit no puedes usar interruciones de la bios. 6)usa maquinas virtual , la que desees , no vas a soportar reiniciar la pc mas de 3 veces.. 7)tambien bajate un programa para crear floppy virtual para que no te enlies mucho y buscate un programa para copiar tu boot y tu kernel en el sector que quieras de tu floppy virtual. 8)recuerda que el boot son 512 bit exactos,lee las ventajas de 32bit , lee sobre a20 line, la gdt y los irq. 9) buena suerte. y algo... mas , de algo estoy seguro y es que no hay OS pequeños xD Eternal Idol tienes mucho en esto .. es que siempre te veo comementado en este tipo de post? Bueno hacer documentacion no estaria mal, sobre todo para ver como es el tema, y asi, es verdad, documentacion hay muchas y mas en ingles como dice eternal idol, no solo eso, sino de programacion, etc.. siempre los mejores materiales estan en ingles. pero yo me pregunta ¿Porque hay tantas gentes en internet aspirante a hacer un sistema operativo cuando ni siquiere se concen un lenguaje a fondo y ni siquiera hacer software en realidad.? creo que esto es irse muy lejos, no ?? no hablo de nadie en concreto  saludos... es que aquien no le gustaria inventar xD ..., recuerda que intentando se aprende.. si siempres te quedas leyendo lo teoricos y no aplicas no sabras en que fallaste.. pero tambien lo teorico es indispensable.. supongo D4RIO simplemente quiere un empujocito para joder arrancar ..! Alguien deberia hacer una faq de esos.. LOL , simplemente para aclarar dudas... todos los interesando escriban sus dudas de una forma organizada en este tema..
|
|
|
|
« Última modificación: 06 Junio 2008, 20:50 por Sr.Deep »
|
En línea
|
|
|
|
|
Karman
|
la verdad... yo en un principio quería crear un OS, y buscando información bajé código de uno que no hacía nada... (en una página de nasm) pero que funcionaba... luego en la facu tube una materia llamada "Sistemas Operativos" y me dí cuenta de lo colosal que es el tema, desde crear un formato de partición (el FAT creo que es licenciado por microsoft) o utilizar los libres (hojas y hojas de documentación), definir un formato de programa (lo que te mencionó Eternal) después la parte gráfica (muchísimas más hojas) y después la administración de recursos (disco, memoria, etc...) (recontra muchísimas hojas y demasiadas opciones (teóricas) cada una con sus ventajas y desventajas y modificaciones y remodificaciones y...) entonces desistí... pero bueno... este no es un post ultra desalentador (si estás realmente motivado, lo lograrás) solo es para que tengas una idea...
S2
|
|
|
|
|
En línea
|
|
|
|
D4RIO
Desconectado
Mensajes: 403
"ser el mejor no es suficiente" - slackbyte
|
Muchas gracias... esa es la clase de organizacion que requiere hacer una faq sobre algo tan entramado, intentando que sea breve y "jugosa" a la vez. Te respondo:: 1) Lo se y tengo bastante, aunque estoy intentando organizarla de una manera limpia en español. Lo más conveniente creo que sería no explicar las tripas de MINIX, que ya están explicadas, sino volcarme a los "experimentos" que haga para comentar cuestiones simples. 2) Gracias por el Link. Ya estaba analizando algunos fuentes pero uno más siempre es bienvenido. Por ahora estoy viendo MINIX y MenuetOS, aunque no me gusta la super dependencia de ASM que el último tiene... de hecho estoy programando una especie de "capa superior" para FASM que me permita llamar ciertas rutinas y elaborar ciertas estructuras en assembler desde una sintáxis más simple, aunque no será un lenguaje de alto nivel, sí me resultará útil a la hora de definir mis estructuras como me plazca. 3) Nop... bajo Linux. Y como que con lo mucho que leí hasta el momento, definitivamente usaré FASM, que es muy similar a NASM... de todas formas ya te comenté que usaré esa ca pa superior. YASM suena muy interesante también. 4) No planeo usar C por el momento, pero de hacerlo creo que usaré GCC, que se ajusta bien a los estándares ANSI C. 5) Pero puedo forzar al compilador, por más que sea nativo de 32 bits, a usar 16. FASM fue diseñado para ser útil a los fines de programar SO's... según recuerdo que en algun lado leí 6) Despreocuparse que no soy lo suficientemente deficiente como para hacer semejante barbaridad!!  Para algo esta VirtualBox aca ¿no? 7) No encuentro alguno para Linux, quneu recuerdo haber visto uno alguna vez... pero encontré ésto, que será útil: http://freshmeat.net/articles/view/1387/ :: Es un buen punto de partida para un script de los que me gusta hacer en BASH... o PERL. 8) Si, lo recordaba, aunque debería saltar el sector de formato si mal no recuerdo.. unos 56?... por el resto gracias, estoy en buscar todo lo referente, más tarde comenzaré a recopilar. 9) SE AGRADECE!  supongo D4RIO simplemente quiere un empujocito para joder arrancar ..! Exacto, porque a todos nos gusta contar con cierto apoyo cuando emprendemos algo que nos llevará una fuerte investigación y un duro proceso, y más si queremos al final dejar algo de documentación al respecto, mínima, como para quienes quieran arrancar desde las bases y no desde un análisis completo de MULTICS, por ejemplo, o MINIX... mucho menos desde LINUX o UNIX V7... Simplemente algo básico, del que después podré desprender un proyecto si me quedan ganas, e implementar cosas como ARP, modo VGA y otras cosas laboriosas que estuve curioseando por el código de MenuetOS. Por cierto, yá voy asíéndome algunos bosquejos del sistema en sí, con un kernel pequeño que tiene sus módulos aparte. Programas como VFS serían sólo accesibles por el kernel, y a su vez VFS accedería, transparente al kernel, a las aplicaciónes de lectura de dispositivo, cada una como un módulo aparte, para así poder agregar más filesystems con el tiempo de una manera sencilla que yá tengo medianamente planificada. Todo eso sería un trabajo fuerte y en principio deberé sacrificar el control de procesos a un mínimo que será el kernel y un único proceso controlado por el mismo, caso de VFS, que luego pedirá que se inicie FAT (por dar un ejemplo del que tengo códigos fuente para revisar), terminándo el kernel mismo a VFS para iniciar al otro. Sé que es muy "cabeza" (o "bruto") pero planeo darle priridad a IO en un principio, y luego veré los temas del kernel y los controles de procesos y memoria. Tengo un camino laaargo por delante pero yá encontré (por suerte) algo de apoyo en la facultad, y vamos a ver la posibilidad de organizar un grupo de trabajo para quienes deseen prenderse al proyecto. Respecto a lo que dice Karman... es cierto que es algo colosal plantearse hacer todo lo realmente necesario, pero en un principio solo deseo un pequeño ejemplo, con lo mínimo e indispensable para funcionar: Un pequeño control de procesos linear (un proceso a la vez), un fomato de ejecutable nativo que será muuuy sencillo (don't worry... se de que hablo) y soporte para... floppy. No creo ni siquiera que le incluya el HD por el momento... eso será después. Si bien claro los proyectos abundan, como el hecho de diseñar un sistema de shared function libraries similar a uno que había implementado en un pequeño intérprete de comandos, que cargaba sólo las funciones deseadas de un archivo en memoria, por lo que no era necesario cargar todo el archivo para usar una funcion... pero me tengo que centrar en lo necesario para empezar, que es mucho, y luego añadir cuando yá esté. Por ahora estoy en tiempo de planificación y búsqueda de interesados. Sepan que de concretarse ésto ustedes serán los primeros en tener la documentación pertinente, como un aporte que espero les sirva a muchos. No los aburo más con mi discurso, y les repito: Gracias a todos los que ponen aunque sea un granito de arena. Espero que ésto deje una buena documentación como para que cualquiera pueda iniciarse en el arte de los Sistemas Operativos... cosa que también será de ayuda para el crecimiento de Linux (Más pibes que se le animen al kernel mode = más desarrolladores potenciales  ). PD: Ya encontre bastante sobre el BIOS. ¡A leer se ha dicho!
|
|
|
|
|
En línea
|
Linux Registred User #452001 : : 0010 0100 - HS CODING : :
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.274
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
Lo repito ya que parece que no lo entendiste, lo dije en mi primer mensaje veladamente en realidad: Eso evidentemente es util (para un S.O. de modo real). Si tu Kernel trabaja en modo protegido/largo (32/64 bits) no podes usar interrupciones de la BIOS directamente. En fin, no pierdas mucho el tiempo con la BIOS salvo que vayas a hacer un S.O. en modo Real (16 bits).
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
D4RIO
Desconectado
Mensajes: 403
"ser el mejor no es suficiente" - slackbyte
|
A ver... todavía estoy investigando el tema, pero: ¿No es que puedo iniciar en modo real (16 bit, forzando a FASM a usar ese modo), y despues pasar a modo protegido?
Incluso... ¿No puede el kernel correr en modo real y las aplicaciónes hacer un "switch" a modo protegido?
De otra forma habrá que reiniciar mi búsqueda orientándome hacia ¿como cuernos hacer todo eso sin el BIOS? En todo caso podría hacer uno en modo real, pero quisiera contemplar ambas posibilidades con una visión más ámplia... Qué tengo que buscar?
|
|
|
|
|
En línea
|
Linux Registred User #452001 : : 0010 0100 - HS CODING : :
|
|
|
Eternal Idol N&P
Desconectado
Mensajes: 1.274
Assembly (x86/x64), C/C++, Kernel Mode (WDM/WDF)
|
A ver... todavía estoy investigando el tema, pero: ¿No es que puedo iniciar en modo real (16 bit, forzando a FASM a usar ese modo), y despues pasar a modo protegido? A menos que uses un loader ajeno tenes que hacerlo, toda PC arranca como una XT (8086) en modo Real (16 bits). Pero lo que se hace en S.O.s modernos es pasar a modo protegido y entonces te olvidas de la BIOS. Incluso... ¿No puede el kernel correr en modo real y las aplicaciónes hacer un "switch" a modo protegido? MS-DOS + DPMI  De otra forma habrá que reiniciar mi búsqueda orientándome hacia ¿como cuernos hacer todo eso sin el BIOS? En todo caso podría hacer uno en modo real, pero quisiera contemplar ambas posibilidades con una visión más ámplia... Qué tengo que buscar? En los fuentes que estabas mirando tenes las respuestas. Busca acceso directo al hardware (in & out), IRQs, IDT, GDT, etc.
|
|
|
|
|
En línea
|
be closely tied to (v.) = estar estrechamente ligado a Ex: He had been wrapped up in a new project that was closely tied to the company's new growth.
"La economia nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de este" Juan Domingo Peron
|
|
|
D4RIO
Desconectado
Mensajes: 403
"ser el mejor no es suficiente" - slackbyte
|
Precisamente di con las IRQ's buscando algo al respecto y ya estoy investigando el tema. Como voy a usar GRUB+stage2_eltorito en un principio, creo que podría prescindir del BIOS. Me estoy haciendo de bastante documentación y creo que me voy a tener que dar un tiempo para leerla toda. Suelo pasar hasta 10 horas leyendo, pero mi estado físico podría decaer notablemente si sigo a éste ritmo  Sigo en mi busqueda e inspeccion de codigos fuente...
|
|
|
|
|
En línea
|
Linux Registred User #452001 : : 0010 0100 - HS CODING : :
|
|
|
|
Páginas: [1] 2 3
|
|
|
|