Foros del Web » Programación para mayores de 30 ;) » C/C++ »

crear un Sistema Operativo con C

Estas en el tema de crear un Sistema Operativo con C en el foro de C/C++ en Foros del Web. buenas......... mi meta es crear un sencillo sistema operativo, nada lujuso ni ambicioso...en C. se manejar ensamblador, C, C++. que son los lenguajes mas aptos ...

  #1 (permalink)  
Antiguo 11/04/2009, 20:38
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Pregunta crear un Sistema Operativo con C

buenas.........
mi meta es crear un sencillo sistema operativo, nada lujuso ni ambicioso...en C. se manejar ensamblador, C, C++. que son los lenguajes mas aptos para este tipo de aplicacion, ahora mi pregunta es......( disculpen si es muy tonta ;) ).......pero
estaba leyendo en tutoriales de la web libros , etc, que uno debe crear sus propias librerias, ya q para hacer un sistema operativo independiente( nuevo ), no voy a tener a mano la biblioteca estandar de C cuando ejecute mi sistema en un X computador, por ejemplo no puedo usar printf(......) de la biblioteca stdio.h, sino q debo crear mi propia biblioteca stdio.h, entonces lo q deseo saber es pq tngo q crear mi propia libreria estandar y no usar las que ya trae el compilador?? para crear un SO nuevo??? favor explicar ampliamente...

muchas gracias...
  #2 (permalink)  
Antiguo 11/04/2009, 20:46
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: crear un Sistema Operativo con C

Aquí ya se habló algo del tema, quizás te sirva revisarlo:
http://www.forosdelweb.com/f96/progr...-sin-s-681947/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 11/04/2009, 21:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

gracias por tu pronta respuesta....ese foro fue uno de los q lei anteriormente antes de hacer este nuevo tema, pero no me aclaro mi duda.......entiendo que se deben crear librerias nuevas para poder hacer un nuevo SO, ya que las librerias estandars que trae el compilador estan sujetas al SO que nuestra pc usa. pero lo que no pude encontrar es pq.....no se pueden usar??? si me puedas explicar......gracias...
  #4 (permalink)  
Antiguo 11/04/2009, 22:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: Programar en c sin S.O

instru mira q tngo una duda......entiendo bien si dices q no se pueden usar las librerias de funciones que ya vienen con el compilador para crear un nuevo SO.......por ejemplo no se puede usar la lib stdio.h ni la funcion printf claro..si no q tengo q crear mis propias librerias... pero lo q no entiendo es pq no las puedo usar si quiero crear un nuevo SO independiente!!!??? me explicas o alquien mas?? por favor...gracias
  #5 (permalink)  
Antiguo 11/04/2009, 22:54
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Respuesta: crear un Sistema Operativo con C

Hi !

No conozco mucho del tema, pero supongo que las librerias utilizadas por cada SO ( En el cual tu programas en C/C++ ) tienen ciertas rutinas, para lidiar con el teclado, la tarjeta del video para los graficos, el mouse, etc. de distinta manera, ya que, como sabemos las MAC tienen hardware distinto y librerias para controlar sus propios dispositivos.

Puedes usar una parte de las librerias de Windows, pero dependerias de ellas y entonces no seria "tu propio sistema operativo". Lo más complejo, a mi entender es lidiar con el hardware directamente, vás a tener que hacer de "puente" entre el hardware y tu SO, como openGL cuyas funciones se comunican con la placa de video, o directX.

No sé que tan ambicioso sea el tema del SO, pero creo que deberias de informarte más sobre como controlar, por ejemplo, la placa de video, de forma que puedas colocar un texto en pantalla, en ese momento tendrás un paso muy importante, y en base a eso podrias "hacer" un "MS-DOS" ...

En fin, si me equivoco en algo, por favor hacen las correcciones pertinentes, no conozco mucho del tema este en particular pero creo que no estoy muy lejos de la respuesta que buscabas.

Saludos.
__________________
--
Mi Portfolio Online! Visitalo!
--
  #6 (permalink)  
Antiguo 11/04/2009, 23:53
Avatar de Coby  
Fecha de Ingreso: noviembre-2008
Ubicación: Jalisco
Mensajes: 20
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: crear un Sistema Operativo con C

Tal vez te sirva el libro de Tanenbaum, Andrew. "Sistemas operativos: diseño e implementacion" 2da edicion si no recuerdo ahi viene el codigo en C de un sistema operativo, espero te pueda servir y como el anterior post tienes que lidiar con el hardware, es mas facil agarrarte de un nucleo(Kernel) y a partir de ahi programar lo de tu sistema como lo hacen con las distribuciones de Linux y algunas otros sistemas operativos
  #7 (permalink)  
Antiguo 12/04/2009, 01:22
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: Programar en c sin S.O

Esas librerias son especificas de cada S.O. ya que usan los servicios proveidos por el mismo para implementarla; el printf que viene en un compilador para Windows usa la API de Windows.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #8 (permalink)  
Antiguo 12/04/2009, 03:44
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

Las librerias llaman a los servicios que proveen los S.O. para cualquier cosa que tenga que ver con recursos, si estas en MS-DOS por poner un ejemplo getchar va a usar la int 21h, GNU/Linux libc (o int 80h) y si estas en Windows la API (o int 2eh/syscall/sysenter). Es decir, tendrias que implementar esos servicios para poder usar esas librerias, sino no harian nada o generarian excepciones ... ademas esas librerias tienen rutinas de des/inicializacion que dependen directamente de la plataforma y el S.O. ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #9 (permalink)  
Antiguo 12/04/2009, 10:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
gracias por sus respuestas........estoy mas claro.......;) entonces para crear un SO independiente tngo q crear mis propias librerias estandar???

digamos crear mi propia stdio y stdlib??

Última edición por David; 12/04/2009 a las 11:16 Razón: Combinar Mensajes
  #10 (permalink)  
Antiguo 12/04/2009, 10:24
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: Programar en c sin S.O

Si (de otra manera estas implementando los servicios de un S.O. ya existente para usar las librerias); seguramente si arrancas con el proyecto vas a comprender mucho mas rapidamente mediante la practica.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #11 (permalink)  
Antiguo 12/04/2009, 11:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: crear un Sistema Operativo con C

Algunos mensajes del tema:
http://www.forosdelweb.com/f96/progr...-sin-s-681947/

Han sido combinados con este tema. Así se facilita la organización al mantener centralizada la discusión en un hilo.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 12/04/2009, 11:57
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: Programar en c sin S.O

ok......es algo trabajoso jaja tmbien queria saber......estoy usando DEvcpp para programar en C/C++ y por ejemplo si quiero usar DLLs para mis SO( recuerden que debe ser independiente), el archivo de la DLL tiene un archivo de encabezado <windows.h> esto significa que no usar DLLs para crear mi SO pq estas tienen funciones de Windows o si puedo crear DLLs para crear mi sistema operativo independiente??
  #13 (permalink)  
Antiguo 12/04/2009, 12:25
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

Una DLL del tipo que te referis es un PE ... este tipo de pregunta nos indica que todavia ni siquiera pensaste en el formato de ejecutable que vas a usar, mejor arranca ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #14 (permalink)  
Antiguo 12/04/2009, 15:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
estuve leyendo sobre PE.....pero eso es de windows...estoy un poco perdido.......si la tecnologia PE es de MS entonces no puedo usarla en mi SO...vd??? ahora no puedo crear archivos .dll tampoco en mi SO( dll creadas por mi!!)??

alquien que me pueda darun link de tutorial donde se muestre como hacer nuevas extensiones de archivos( programa.ABC) para mi SO, y queria saber si compilo un programa de C/C++ en windows mi programa quedaria como miprograma.EXE, ahora si meto mi programa a un diskette para ejecutarlo en otra pc,( con instrucciones al procesador, tarjeta video claro..) , y quiero q me imprima en la pantalla "Hello world", no importa si mi programa es extencion .exe??? o tngo q hacer algo antes??

Última edición por David; 12/04/2009 a las 16:07 Razón: Combinar mensajes
  #15 (permalink)  
Antiguo 12/04/2009, 16:16
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

Si, las DLLs tal como las conoces son de Windows ... por eso te digo que todavia no pensaste en un formato de ejecutable. Una vez mas: ARRANCA. Te estas planteando demasiado si todavia no hiciste nada ... logra un mensaje en pantalla, pensa si vas a trabajar en modo real o protegido, etc, etc, etc y mas etc.

Una PC bootea en modo real, 16 bits, y solo reconoce codigo binario, ningun formato de archivo en lo absoluto ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #16 (permalink)  
Antiguo 12/04/2009, 16:20
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
ok vamos a ir despacio......y q lenguaje o como hago para generar codigo binario????

si todo programa tiene una extension, por ejemplo ensamblador tiene extencion(.hex) como genero un programa solo en codigo binario sin extensio???

Última edición por David; 12/04/2009 a las 16:28 Razón: Combinar mensajes
  #17 (permalink)  
Antiguo 12/04/2009, 16:24
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

Assembly; no esperes que te respondamos todo, tenes que buscar por vos mismo informacion sino nunca vas a poder ni empezar el proyecto ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #18 (permalink)  
Antiguo 12/04/2009, 18:32
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Respuesta: crear un Sistema Operativo con C

Si entiendes ingles puedes empezar a preguntar todo lo que quieras en http://forum.osdev.org ahi es donde comence yo cuando empece con mi sistema operativo. Me han ayudado mucho.

Pero como te dijeron, empieza haciendo algo. Eso que preguntas sobre como hacer DLLs lo vas a venir programando cuando tu proyecto ya este muy avanzado. Ademas, acabas de decir que ni siquiera sabes como vas a compilar lo que programes.

Lo primero que tendras que programar es un boot loader. Empieza investigando sobre eso. Te aseguro que aunque es algo relativamente sencillo, te van a surgir dudas. Cuando las resuelvas te aseguro que te van a surgir mas. Y despues de eso otras mas.
  #19 (permalink)  
Antiguo 13/04/2009, 17:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

ok empezare por el boot loader,averiguare sobre eso tratare de hacerlo.....gracias
  #20 (permalink)  
Antiguo 14/04/2009, 14:00
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: crear un Sistema Operativo con C

Por lo que he leido, estas muy atado a las convenciones de windows.
Al hablar de dlls, crees que estas son absolutas. En linux no existen las dlls ni los .exe.

Los ejecutables no tienen extension. Lo equivalente a los dlls son los so(shared object).
No pienses en extensiones de archivo, eso es solo para windows. piensa en formato. Busca informacion de como arranca una maquina, ahi veras los primeros formatos que necesitas saber para poder crear un programa binario.

Dev-cpp si mal no recuerdo usa MingW32(compilador para windows).
Y si no tengo mala memoria o me equivoco, mingw32 es un port de GNU/GCC.
Entonces, podrias usar mingw32 con una fuerte cantidad de parametros para que genere tu archivo binario, sin dependencias. Claro, siempre y cuando uses puro C sin librerias ni nada externo al lenguej puro.

Claro, que si la arquitectura de la computadora para la cual quieres hacer tu sistema operativo no es un x86 tradicional, entonces tendras que compilarte un compilador cruzado par ala nueva arquitectura.

Como veras, hay mil temas que tratar antes de lanzarte asemejante proyecto.
No es una mala idea para aprender, pero te advierto que no es tan facil como parece.

Saludos
  #21 (permalink)  
Antiguo 20/04/2009, 20:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

el archivo binario en Devcpp es el archivo .o o .object vdd?? estoy leyendo bastante sobre el arranque de una maquina y no hay mucha informacion son formatos para archivos binarios!!!!
pero sigo leyendo!!
  #22 (permalink)  
Antiguo 20/04/2009, 23:56
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

No son formatos, es codigo binario PURO de 16 bits, como un .COM, unicamente instrucciones sin cabecera. El .o es un archivo objeto y tiene un formato determinado y seguramente estes generando codigo de 32 bits dependiente de bibliotecas que tu S.O. no tendra ..
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #23 (permalink)  
Antiguo 27/04/2009, 16:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

bueno....estaba descargando el nasm 2.05........estoy usando windows vista....y cuando le doy click( double) a nasm.exe se me abre la consola y se me cierra rapido...que no lo puedo ni ver.....a q se debe esto??
  #24 (permalink)  
Antiguo 27/04/2009, 16:55
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Respuesta: crear un Sistema Operativo con C

Seguramente nasm espera como parametro el archivo que quieres compilar, y como no lo estas enviando, pues se cierra inmediatamente. Aunque puede ser cualquier otra cosa.

Pero supongo que habras intentado salir al prompt y ejecutarlo desde la linea de comando para ver el mensaje, verdad?
  #25 (permalink)  
Antiguo 27/04/2009, 17:05
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

como asi...no entiendo??
  #26 (permalink)  
Antiguo 27/04/2009, 17:07
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

no puedo poner el archivo como parametro pq se me abre y cierra automaticamente
  #27 (permalink)  
Antiguo 27/04/2009, 17:20
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

Trabaja desde la consola: Inicio>>Ejecutar>>cmd
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #28 (permalink)  
Antiguo 27/04/2009, 17:34
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
sip eso hice ahorita.....solo q io uso windows vista...entonces la consola se llama simbolo del sistema....no se si es lo mismo cmd?? y escribi lo siguiente:
C:\Users\Manuel\Desktop\nasm-2.05.01\nasm.exe C:\Users\Manuel\desktop\ourbootloader.asm -f bin -o hola.bin y bueno ahi no me sale error si no que me tira el siguiente prompt para la siguiente instruccion....io supongo que eso significa que todo salio bien y que me creo mi archivo hola.bin pero cuando cierro la consolo no lo encuentro el archivo hola.bin y supongo q no me lo creo por algun error??

pq quiero hacer mi bootloader y el codigo tiene 512 bytes exactos....solo que no me crea mi archivo hola.bin si le quito la parte ".........-f bin -o hola.bin" si me crea "algo" con el nombre de mi archivo .asm( ourbootloader.asm) que lo hice en el editor de testo(note pad)...pero no se que es lo que me crea!!??

el archivo q me crea no tiene extension ni nada....solo el nombre( ourbootloader)

ese el archivo binario vdd??

Última edición por David; 27/04/2009 a las 18:53 Razón: Combinar mensajes
  #29 (permalink)  
Antiguo 28/04/2009, 00:05
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 19 años, 11 meses
Puntos: 74
Respuesta: crear un Sistema Operativo con C

No quiero tirarte abajo pero si ni siquiera podes ensamblar yo que vos primero haria otros proyectos mas simples ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #30 (permalink)  
Antiguo 28/04/2009, 15:35
 
Fecha de Ingreso: marzo-2009
Mensajes: 30
Antigüedad: 15 años
Puntos: 0
Respuesta: crear un Sistema Operativo con C

gracias eternal idol......muy animante!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:04.