Autor
|
Tema: Mini Sistema Operativo!!! (Leído 21,909 veces)
|
prometheus48
Desconectado
Mensajes: 176
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: 187
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 pm 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: 112
Esperando respuestas
|
Un SO sin kernel sería una idea muy novedosa
|
|
|
En línea
|
|
|
|
Khronos14
Desconectado
Mensajes: 443
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: 187
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
Desconectado
Mensajes: 302
|
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: 187
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: 443
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: 187
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: 176
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
|
|
|
|
|