elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 01:59  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Littlehorse)
| | |-+  Mini Sistema Operativo!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Mini Sistema Operativo!!!  (Leído 4,161 veces)
prometheus48

Desconectado Desconectado

Mensajes: 170


Making a Distro...


Ver Perfil
Mini Sistema Operativo!!!
« en: 10 Diciembre 2011, 11:38 »

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:
Código:
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 Desconectado

Mensajes: 182

His brain caught in a hole...


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #1 en: 16 Diciembre 2011, 22:12 »

¿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.htm
Yo 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_interrupciones
Somos pocos los que quedamos con ganas de crear nuestro propio sistema operativo :D


« Última modificación: 16 Diciembre 2011, 22:14 por armizh » En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
git clone https://github.com/armizh/Hamster
Stoya

Desconectado Desconectado

Mensajes: 83


Nerviosismo esperando respuesta a tema.


Ver Perfil
Re: Mini Sistema Operativo!!!
« Respuesta #2 en: 16 Diciembre 2011, 23:10 »

Un SO sin kernel sería una idea muy novedosa  :rolleyes:
En línea
Khronos14

Desconectado Desconectado

Mensajes: 285


A lie is a lie


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #3 en: 17 Diciembre 2011, 01:55 »

Un SO sin kernel sería una idea muy novedosa  :rolleyes:

Al mismo tiempo que una idea estúpida...
En línea

armizh

Desconectado Desconectado

Mensajes: 182

His brain caught in a hole...


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #4 en: 17 Diciembre 2011, 02:51 »

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. ;D
En línea

Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
git clone https://github.com/armizh/Hamster
farresito
Usuario

Desconectado Desconectado

Mensajes: 216



Ver Perfil
Re: Mini Sistema Operativo!!!
« Respuesta #5 en: 17 Diciembre 2011, 03:29 »

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 Desconectado

Mensajes: 182

His brain caught in a hole...


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #6 en: 17 Diciembre 2011, 03:42 »

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:
Código
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
git clone https://github.com/armizh/Hamster
Khronos14

Desconectado Desconectado

Mensajes: 285


A lie is a lie


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #7 en: 17 Diciembre 2011, 12:21 »

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_Page

Lo 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 Desconectado

Mensajes: 182

His brain caught in a hole...


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #8 en: 17 Diciembre 2011, 16:16 »

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_Page

Lo 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:
Código
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
git clone https://github.com/armizh/Hamster
prometheus48

Desconectado Desconectado

Mensajes: 170


Making a Distro...


Ver Perfil
Re: Mini Sistema Operativo!!!
« Respuesta #9 en: 18 Diciembre 2011, 12:22 »

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 Desconectado

Mensajes: 170


Making a Distro...


Ver Perfil
Re: Mini Sistema Operativo!!!
« Respuesta #10 en: 18 Diciembre 2011, 12:30 »

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 Desconectado

Mensajes: 182

His brain caught in a hole...


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #11 en: 18 Diciembre 2011, 12:56 »

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:
Código
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
git clone https://github.com/armizh/Hamster
farresito
Usuario

Desconectado Desconectado

Mensajes: 216



Ver Perfil
Re: Mini Sistema Operativo!!!
« Respuesta #12 en: 18 Diciembre 2011, 19:35 »

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 Desconectado

Mensajes: 182

His brain caught in a hole...


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #13 en: 4 Enero 2012, 00:53 »

@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:
Código
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código
git clone https://github.com/armizh/Hamster
Khronos14

Desconectado Desconectado

Mensajes: 285


A lie is a lie


Ver Perfil WWW
Re: Mini Sistema Operativo!!!
« Respuesta #14 en: 4 Enero 2012, 01:28 »

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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Que sistema operativo?
Hacking Básico
۞GЯ!m ŖЭДрЭ®۞ 6 814 Último mensaje 28 Septiembre 2004, 12:28
por Mimiru
sistema operativo
Software
razorback2 2 430 Último mensaje 12 Noviembre 2005, 11:15
por _Trueno_
Sistema operativo web
Noticias
BADBYTE-K 2 441 Último mensaje 28 Julio 2006, 14:29
por Hans el Topo
Sistema operativo de red
Redes
kruX 4 564 Último mensaje 21 Marzo 2007, 00:33
por el-brujo
Diferencias entre sistema operativo y entorno operativo.
Dudas Generales
H4RR13R 2 7,819 Último mensaje 15 Enero 2008, 14:16
por H1@
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines