Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)
Autor
|
Tema: Mini Sistema Operativo!!! (Leído 4,161 veces)
|
prometheus48
Desconectado
Mensajes: 170
Making a Distro...
|
Hola. Estaba haciendo un sistema operativo desde cero, primero en ensamblador. El boot lo voy a hacer con grub o lilo aunque eso es lo de menos, bueno mi pregunta es esta: BITS 16
start: mov ax, 07C0h add ax, 288 mov ss, ax mov sp, 4096
mov ax, 07C0h mov ds, ax
mov si, text_string call print_string
jmp $
text_string db 'Hola Amigos de el hacker.net!', 0
print_string: mov ah, 0Eh
.repeat: lodsb cmp al, 0 je .done int 10h jmp .repeat
.done: ret
times 510-($-$$) db 0 dw 0xAA55 En donde dice: text_string db 'Hola Amigos de el hacker.net!', 0¿Podría cargar un archivo hecho en C++, por ejemplo llamado main.cpp, que seria el sistema operativo? En realidad no se si funcionaria porque como va a interpretar el ordenador el código en C++ si no tiene compilador o interpretador? Osea: ¿Cómo hago para que en donde dice text_string db 'Hola Amigos de el hacker.net!', 0 se cargue un archivo de C++, que va a ser la línea de comandos (hecha por mí),? Tengo que añadir algo al código? ¿O debería hacer un kernel?Gracias chicos. Salu2!
|
|
|
|
|
En línea
|
"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana. Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas" The knowledge is free
|
|
|
armizh
Desconectado
Mensajes: 182
His brain caught in a hole...
|
¿Podría cargar un archivo hecho en C++, por ejemplo llamado main.cpp, que seria el sistema operativo? En realidad no se si funcionaria porque como va a interpretar el ordenador el código en C++ si no tiene compilador o interpretador? Osea: ¿Cómo hago para que en donde dice text_string db 'Hola Amigos de el hacker.net!', 0 se cargue un archivo de C++, que va a ser la línea de comandos (hecha por mí),? Tengo que añadir algo al código? ¿O debería hacer un kernel? Gracias chicos. Salu2!
Por supuesto que si se puede, de hecho yo estoy en lo mismo pero ya no me interesa abrir un archivo cpp o c. Pero creo que tienes una idea equivocada sobre eso, porque tienes que compilar ambos programas, el bootloader y el kernel por separado, el bootloader deberia tener alguna función para cargar sectores la cual llamaras desde el main de tu bootloader, luego grabas el boot en un floppy (en el MBR) y el kernel lo grabas en el segundo sector del floppy. Aca hay una excelente página que te muestra las interrupciones y sus usos, y hay una, la Int 13h que es para manejar el floppy y los discos duros. http://www.ctyme.com/intr/rb-0607.htmYo tambien estoy en lo de crear un SO, y estoy desarrollando un blog en el que muestro mis avances, si te interesa vemos como te mando el link, ya que no quiero meterme en lios con el moderador -.- Ahhh y se me olvidaba, la wikipedia tambien nos da información sobre como usar las interrupciones. http://es.wikipedia.org/wiki/Llamadas_de_interrupci%C3%B3n_del_BIOS#Tabla_de_interrupcionesSomos pocos los que quedamos con ganas de crear nuestro propio sistema operativo 
|
|
|
|
« Última modificación: 16 Diciembre 2011, 22:14 por armizh »
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
Stoya
Desconectado
Mensajes: 83
Nerviosismo esperando respuesta a tema.
|
Un SO sin kernel sería una idea muy novedosa 
|
|
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 285
A lie is a lie
|
Un SO sin kernel sería una idea muy novedosa  Al mismo tiempo que una idea estúpida...
|
|
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 182
His brain caught in a hole...
|
Al mismo tiempo que una idea estúpida...
Sin embargo, en este tema nadie ha dicho algo de hacer un SO sin kernel. Quien comenzo el tema dijo que si debia hacer un kernel, ya que lo que el esta haciendo es un bootloader. Aun que si se le puede cuestionar el hecho de haber nombrado a LILO y GRUB, porque no los necesita, ¿no esta haciendo un boot? Aunque no es tan estupido ni alocado hacer un SO sin kernel, ya que se puede hacer un interprete de comandos lo suficientemente pequeño como para que se encuentre junto al boot dentro de 512 bytes, pero el que lo haga sera un maestro. 
|
|
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
farresito
Usuario
Desconectado
Mensajes: 216
|
Hacer un sistema operativo no es novedoso; es estúpido. De hecho, los primeros sistemas operativos no tenian kernel. Pero entonces es una *****. No tienes gestión de RAM, ni de privilegios, ni procesos...
|
|
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 182
His brain caught in a hole...
|
Hacer un sistema operativo no es novedoso; es estúpido. De hecho, los primeros sistemas operativos no tenian kernel. Pero entonces es una *****. No tienes gestión de RAM, ni de privilegios, ni procesos...
No necesariamente, si observas Mac OSX es un SO novedoso, pero si miras Windows claramente no lo es. Para explicarlo mejor te doy el siguiente ejemplo, cuando Linus Torvalds escribió Linux lo que hizo no fue para nada novedoso, de hecho fue criticado por lo poco novedoso que fue, el escribió un núcleo monolítico que era considerado obsoleto, sin embargo todos conocemos el resto de la historia, y nos dimos cuenta que no fue estúpido, sino que todo lo contrario. Y es que siempre ha habido poca gente dispuesta a hacer un sistema operativo. Hay tres tipos de personas en ese sentido: 1) La que sabe hacer y lo hace 2) La que no sabe pero aprende haciendo 3) La que tiene solo las ganas. Las personas que no le interesa el tema no debería desanimar a los que les interesa, sea cual sea su tipo.
|
|
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
Khronos14
Desconectado
Mensajes: 285
A lie is a lie
|
armizh y prometheus48 también, miraos la definición de Sistema Operativo anda. Un Sistema Operativo permite la ejecución de programas, para llegar a este punto necesitas un sistema de gestión de memoria, un scheduler, GDT, IDT, LDT, etc.. El sistema operativo puede ser monotarea (como las primeras versiones de iOS) o multitarea... Si llegas a este punto tu solo ya eres un dios, luego te queda la tarea de crear un sistema de drivers, con todas las implicaciones que ello conlleva como los anillos de privilegio y la seguridad... Un Sistema Operativo se tiene que enterar de absolutamente todo lo que sucede en tu ordenador... http://wiki.osdev.org/Main_PageLo que prometheus48 hace en su código es ejecutar un programa de 16 bits, que se ejecuta sin un Sistema Operativo... Saludos.
|
|
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 182
His brain caught in a hole...
|
armizh y prometheus48 también, miraos la definición de Sistema Operativo anda. Un Sistema Operativo permite la ejecución de programas, para llegar a este punto necesitas un sistema de gestión de memoria, un scheduler, GDT, IDT, LDT, etc.. El sistema operativo puede ser monotarea (como las primeras versiones de iOS) o multitarea... Si llegas a este punto tu solo ya eres un dios, luego te queda la tarea de crear un sistema de drivers, con todas las implicaciones que ello conlleva como los anillos de privilegio y la seguridad... Un Sistema Operativo se tiene que enterar de absolutamente todo lo que sucede en tu ordenador... http://wiki.osdev.org/Main_PageLo que prometheus48 hace en su código es ejecutar un programa de 16 bits, que se ejecuta sin un Sistema Operativo... Saludos. Estoy de acuerdo contigo, y lo que hace prometheus48 solo es un programa que inicia el sistema, pero esa es la primerisima parte para crear un mini sistema operativo, ya le falta pasar al modo de 32 bits, controlar el texto en pantalla, el teclado, el audio, gestionar la memoria, etc. o simplemente crear un SO a 16 bits con las debilidades estructurales que esto implica, pero no es necesario ser un Dios para hacer todo eso solo... al menos no creo que Linus Torvalds y Andrew Tanenbaum lo sean, aunque claramente nosotros estamos a años luz de ellos, pero a lo que quiero llegar es a que no es imposible lo de crear un SO basico.
|
|
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
prometheus48
Desconectado
Mensajes: 170
Making a Distro...
|
Hola. Gracias por los comentarios. 1.-Mencione lo del lilo y el grub porque no voy a utilizar mi bootloader. Lo hize lo más fácil posible para que me dijeran si yo podría cargar el archivo .cpp. 2.-Lo del kernel lo dije porque no pensaba que la shell ocupara mas de 512 bytes, ya lo se,¿Cómo va a caber una shell en 512 bytes?. Cuando me puse a hacer el bootloader no me di cuanta, seguramente pense en MiB. El comentario de khronos14 me a puesto  El foro es para compartir y aprender.! Salu2!
|
|
|
|
|
En línea
|
"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana. Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas" The knowledge is free
|
|
|
prometheus48
Desconectado
Mensajes: 170
Making a Distro...
|
Hola,
Me podrias dar el enlace de tu blog?Estoy interesado. Salu2!
|
|
|
|
|
En línea
|
"Si tú tienes una manzana, y yo otra, y las intercambiamos, tu sigues teniendo una manzana, y yo sigo teniendo una manzana. Pero, si tu tienes una idea, y yo otra, y nos las intercambiamos, tu tienes dos ideas, y yo tengo dos ideas" The knowledge is free
|
|
|
armizh
Desconectado
Mensajes: 182
His brain caught in a hole...
|
Hola,
Me podrias dar el enlace de tu blog?Estoy interesado. Salu2!
Bueno, pero no es mucho lo que he logrado, mi proyecto esta recien comenzando. Mi bootloader muestra un par de mensaje, inicia el modo protegido y escribe a la pantalla desde este modo, y estoy trabajando para cargar sectores del floppy o del disco duro desde el modo real y modo protegido. http://nuosdeveloper.blogspot.com/
|
|
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
farresito
Usuario
Desconectado
Mensajes: 216
|
Lo difícil de un SO no es tanto lo de la gestión de memoria, sinó crear, como han dicho, drivers para muchas plataformas y etc.
@armizh: Linux fue criticado por una persona, llamada Tennebaum (o algo asi), el creador de Minix. Pero Linux en su momento fue muy bien aceptado y negarlo es no haber leído su historia. Muchísima gente colaboró y que alguien no lo aceptara, como el lógico debido a que sus intereses eran obtener usuarios para su sistema operativo, no quiere decir nada.
Por cierto, ha habido MUCHA gente que ha hecho SO, pero lo que hizo Linus en su momento fue crear uno libre optimizado para i386, algo que no existía, y hay que recordar que los proyectos que triunfan son los que innovan. No habia OS para i386 que corrieran.
Por cierto, lo de que Windows no es novedoso y que Mac lo es vas totalmente equivocado. Soy pro-Linux así voy a ser imparcial: MacOS no es exactamente un Microkernel (es derivado del núcleo Mach pero no exactamente un microkernel) y recuerda que los monolíticos corren mucho más en términos generales, por lo que lo de innovación es en una parte sí y en otra no.
Si hablasemos de innovación hay el SO 'plan 9' creado por Bell Labs, los mismos que los de Unix. Entonces podríamos afirmar que todos los SO actuales están pasados teniendo el Plan 9. Es relativo. Por que no está totalmente usado Plan 9? Por diferentes cosas a pesar de ser muy innovativo.
Un abrazo.
|
|
|
|
|
En línea
|
|
|
|
armizh
Desconectado
Mensajes: 182
His brain caught in a hole...
|
@armizh: Linux fue criticado por una persona, llamada Tennebaum (o algo asi), el creador de Minix. Pero Linux en su momento fue muy bien aceptado y negarlo es no haber leído su historia. Muchísima gente colaboró y que alguien no lo aceptara, como el lógico debido a que sus intereses eran obtener usuarios para su sistema operativo, no quiere decir nada.
Por cierto, ha habido MUCHA gente que ha hecho SO, pero lo que hizo Linus en su momento fue crear uno libre optimizado para i386, algo que no existía, y hay que recordar que los proyectos que triunfan son los que innovan. No habia OS para i386 que corrieran.
Por cierto, lo de que Windows no es novedoso y que Mac lo es vas totalmente equivocado. Soy pro-Linux así voy a ser imparcial: MacOS no es exactamente un Microkernel (es derivado del núcleo Mach pero no exactamente un microkernel) y recuerda que los monolíticos corren mucho más en términos generales, por lo que lo de innovación es en una parte sí y en otra no.
Si hablasemos de innovación hay el SO 'plan 9' creado por Bell Labs, los mismos que los de Unix. Entonces podríamos afirmar que todos los SO actuales están pasados teniendo el Plan 9. Es relativo. Por que no está totalmente usado Plan 9? Por diferentes cosas a pesar de ser muy innovativo.
Un abrazo.
Quizas esto venga tarde pero va. Windows no es novedoso en el sentido de que es escrito uno sobre el otro por lo que internamente Windows 7 funciona de forma parecida a XP, apesar de las nuevas funcionalidades. Sobre lo de Mac realmente lo es viene dado por el funcionamiento que tiene, ya que que es bastante estable incluso mas que linux (ni hablar windows) y el hecho de ser el so basado en un microkernel mas popular y estable del mercado, sin contar el hecho de que cada vez apple nos viene con cada novedad como el port hacia IA32, relacion funcionalidad/apariencia mejor que otros SOs. Linux fue duramente criticado por Tanenbaum debido al modelo de kernel y no por otra cosa, segun Tanenbaum era obsoleto y riesgoso usar un kernel monolitico, debido a que si cae un servicio se cae todo el sistema, ademas de que es mas dificil la depuracion, programacion, etc etc. En cambio un kernel hibrido posee un orden y si un servicio cae, solo cae el modula al que pertenece y el kernel podra reiniciar el modulo y el servicio sin reiniciar el sistema. La base de la disputa entre Tanenbaum y Linus fue esa. Con el tiempo hemos visto que ambos tenian razon, y si analizamos un poco, los 3 SOs mas populares de la actualidad son los mejores dentro de su ambito: Linux dentro de los monoliticos, Windows en los hibridos (al mas puro estilo peor es mejor) y Mac en microkernel (apesar de que tal como lo dices, no es exactamente un microkernel, sino que funciona sobre un microkernel)
|
|
|
|
|
En línea
|
Visita mi blog: http://armizh.10h.us/Fnx, fork de FreeNOS: git clone https://github.com/armizh/Fnx Hamster, Entorno Integrado de Desarrollo C/C++: git clone https://github.com/armizh/Hamster
|
|
|
Khronos14
Desconectado
Mensajes: 285
A lie is a lie
|
armizh, no se donde sacaste eso de que Mac OS X es un microkernel porque no es cierto. Es un kernel híbrido.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
|
|