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

Programar en c sin S.O

Estas en el tema de Programar en c sin S.O en el foro de C/C++ en Foros del Web. Saludos, he programado un buen tiempo en C/C++ y quiero programar sin sistema operativo, y mi duda es , si programo sin depender de un ...
  #1 (permalink)  
Antiguo 21/03/2009, 17:15
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 4
Programar en c sin S.O

Saludos, he programado un buen tiempo en C/C++ y quiero programar sin sistema operativo, y mi duda es , si programo sin depender de un S.O¿ cual seria el runtime de c?, que extension tiene?, exactamente no hablo de un dll, por que los dll son de windows, y nada que ver con windows,linux,etc, sin S..O, ES DECIR QUIERO HACER UN SISTEMA INDEPENDIENTE, Y LO DESEO HACER CON C, Y ASSEMBLER. QUISAS MI OBJETIVO FINAL ES CREAR UN SISTEMA OPERATIVO, LO BÁSICO : MANEJAR EL HARDWARE, "EL TECLADO", Y MONITOR". me gustaria ver el codigo fuente de un pequeño sistema operativo, que no sea windows, no crean que para mi windows es cualquier basura, es un buen sistema operativo y mejor aun el windows 7.
Saludos,
__________________
Soluciones basadas en .NET Framework y SQL Server
  #2 (permalink)  
Antiguo 21/03/2009, 18:21
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: Programar en c sin S.O

Pues para eso hay varios puntos que decir.

El primero. No se de donde scaste el codigo fuente de windows que mencionas, al menos que seas del equipo de programacion d emicrosoft que desarrolla linux

Ahora ya mas con respecto a tu pregunta.
Si se puede hacer(obviamente) un sistema operativo con C y Assembly. La diferencia es que no tienes libreria estandar. Lo único que tienes es un compilador, y un ensamblador, porque hasta donde recuerdo el enlazador produce la cabecera para cada SO.

Entonces, tan facil como programar primero tu propia libreria estandar con el formato que quieras. Si, hacer tu propio stdio y tu propio stdlib y las mil cabeceras y archivos que contiene la libreria estandar.
Claro, para hacer esto, necesitaras funciones de bajo nivel, para poderte comunicar con el hardware y pues creo que ahi assembly es donde entra en acción.
Aparte debes de tener el cargador de tu SO hecho en assembly.
Es un bonito proyecto, pero bastante pesado para una prsona sola, mas no imposible.

Suerte.

Saludos
  #3 (permalink)  
Antiguo 21/03/2009, 18:42
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Programar en c sin S.O

aun asi fue un error lo que dije, lo que quize decir un sistema operativo de microsoft, y es que tengo el codigo fuente del sistema operativo MS-DOS., que esta en c y assembly.

te lo puedes bajar de aca:

http://www.taringa.net/posts/downloa...urce-Code.html
__________________
Soluciones basadas en .NET Framework y SQL Server
  #4 (permalink)  
Antiguo 22/03/2009, 02:25
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Programar en c sin S.O

Una idea: Prueba a buscar juegos antiguos de PC. Había una época en la que determinados juegos te pedían que metieras el disquete y arrancaras el PC desde el disquete. No utilizaban el SO.

Quizá puedas encontrar el código fuente de alguno de esos juegos y verlo. Puede que te dé alguna idea.
  #5 (permalink)  
Antiguo 22/03/2009, 02:29
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

Podes ver el codigo fuente de Minix o MenuetOS (100% assembly) por ejemplo. Lo demas tal como te dijo Instru, no tenes RTL, es tu deber escribirla (podes usar las cabeceras .H, pero el codigo de las mismas esta intimamente ligado al S.O., no podes hacer un printf - por ejemplo - sin las APIs del S.O. en cuestion por lo tanto tendras que escribir una).

El loader tiene que ser un archivo plano, sin ninguna cabecera y con codigo assembly de 16 bits, podes usar GRUB por ejemplo para que cargue tu Kernel de 32 bits hecho con un compilador existente (gcc, VC++, etc) y con el formato de archivo que quieras (siempre que sea ELF o siga la especificacion multiboot).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #6 (permalink)  
Antiguo 22/03/2009, 07:22
 
Fecha de Ingreso: marzo-2009
Mensajes: 1
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Programar en c sin S.O

No me malinterpretes ni tomes mi comentario a mal, pero el "jugar" con el teclado y monitor requiere otro tipo de conocimientos y no tanto C. Me refiero basicamente a hardware. Si lo unico que quieres es programar sin OS asumo pues que no tienes interes de que el sistema haga algo util mas que ser el OS mismo. No hay nada de malo con eso, solo que estas ante una tarea que te puede tomar muchos meses sino años.

Pero en fin, si me equivoco y realmente sabes a lo que te estas metiendo, o mejor dicho de lo que te estas saliendo al tratar de programar fuera de las winapps o *xapps entonces aqui va un poco. Mencionaste windows, teclado monitor por lo que asumo que quieres programar para una PC o un smartphone.

Empieza con algo sencillo como leer del teclado y escribir en video ram, contar memoria, analizar bancos de memoria etc. Por el momento no hay nada malo con un diskette. Claro que cualquier cosa que quieras escribir, tendra que ser en assembler y copiarla al bootsector del floppy.

Ahora me salto a un mes mas tarde y entonces ya estaras pensando en correr algo de C. Para entonces ya dominas el arte de linkear, como generar un cmd file para el linker, areas bss text data rodata bla bla. Como ya identificaste cuanta memoria tienes, como la vas a dividir etc entonces ya puedes inicializar el stack pointer frame pointer etc y el salto al abismo: jmp main.

C plano y nada mas, y en el momento que quieres utilizar algo de la libreria de C entonces viene el asunto que mencionas. No tienes aun memory mannager por lo que malloc/free so funcionan asi que hay que valerse de algo que te de minimo soporte y es esto lo que buscas talvez: libc glibc. Trata de compilar eso sin un kernel entero y seras mi heroe. Bueno en serio. Yo he utilizado en esos casos NewLib, esta llena de stubs que puedes quitar y poner a gusto y gana en funcion de lo que vas necesitando.

Una vez corres en C puedes empezar a inicializar hardware, escribir tus rutinas de interrupt and exception handling etc. NO TE QUEDES EN 16 bits, puedes incluso saltar a x64 sin pasar por 32. Creeme que te recomiendo no meterte a 32bit, no vale la pena en estos dias. luego siques con otras cosas basicas como programar el pic, el (los)apic.

Y eso que aun no he saltado a c++. En fin es un chansal. Sin pajas, es un chansal pero no imposible. Recomendaciones: entrale a rtlinux, ucos etc. estos son microkernels que tienen un footprint bien pequeño y estan porteados a varias arquitecturas, x86,x64,arm entre ellas.

Y entonces luego de varios meses de chingadera, podras jugar a diesta y siniestra con el teclado y el monitor :)

Exitos
  #7 (permalink)  
Antiguo 22/03/2009, 07:23
Avatar de robertgustavo  
Fecha de Ingreso: marzo-2008
Ubicación: Camaná - Arequipa
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 4
Respuesta: Programar en c sin S.O

gracias a todos, estoy, me estoy documentando más en esto, porque mi tesis se trata de un nuevo S.O, espero sus comentarios y consejos, voy a buscar el codigo de algun juego viejo, como dijo venkman.
__________________
Soluciones basadas en .NET Framework y SQL Server
  #8 (permalink)  
Antiguo 22/03/2009, 13:50
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: Programar en c sin S.O

Te recomiendo que des una buena revisada al codigo de Minix(como dijo Eternal Idol).
Tambien, puedes descargarte alguna de las primeras veriosnes de linux en www.kernel.org.

Otro OS que tiene codigo bastante legible es el KallistiOS(KOS), desarrollado para consolas de videojuegos. Este ultimo te lo recomiendo muucho.

Alguna vez probe menuetOS, y no es malo, me parecio bastante completo y tambien su codigo es bastante legible.

Finalmente, puedes descargar el codigo fuente actual del kernel de linux para poder ir viendo la manera en que evoluciono, incluso hacer la comparacion entre el kernel 2.4 y 2.6.

Hay mas sistemas operativos, pero estos son los que conozco y he manejado, puedes checar en wikipedia o en internet en gernal.

Saludos
  #9 (permalink)  
Antiguo 24/03/2009, 15:30
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Programar en c sin S.O

Casualmente acabo de encontrar esto, un port de Unix V.7 a x86. Puedes bajar el código completo y no es demasiado grande.
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




La zona horaria es GMT -6. Ahora son las 06:21.