Máquina virtual (en C)

Iniciado por GeorgArming, 8 Diciembre 2011, 22:25 PM

0 Miembros y 1 Visitante están viendo este tema.

GeorgArming

¿Sabéis de algún código fuente de una máquina virtual escrita en C?

Es que estoy tratando de hacer un mini sistema operativo. Me basaba en el SO Luxur pero me fallaba al compilar y ahora quiero empezar uno de nuevo, usando GRUB como bootloader.

Bueno, pues ahí van las características que quiero que tenga mi OS:

Quiero que el bootloader cargue un kernel. Dicho kernel, a parte de cordinar y administrar funciones, memoria (en el modo más sencillo y liviano sencillo) ,... cada vez que el usuario lo desee se abra una shell. En cada shell se pueden ejectutar unos comandos para abrir archivos, modificarlos,... pero de manera independiente y virtual (Cada shell es un proceso virtual).

¿Cómo podría hacerlo? ¿Es muy complicado? Yo veo un problema que es que como el sistema operativo sería tipo consolaa (sin GUI ni nada), cómo se podría cambiar de shell, teneindo en cuenta que varias shells se pueden ejecutar al mismo tiempo?

GeorgArming

y si no puede ser una máquina virtual... ¿se podría hacer una shell que se ejecutase dentro de la shell general?

farresito

Encontré hace tiempo material en internet sobre maquinas virtuales. El problema es que está en inglés.

Tienes varias opciones. Una es un libro famoso de maquinas virtuales que no me acuerdo como se llama. Por Amazon seguro que encuentras el libro.

Sobre papers he usado los siguientes yo (no son muy completos pero si que te dan más o menos la idea. Si más adelante deseas avanzar, sin duda alguna, un libro):

http://www.codeproject.com/KB/recipes/B32Machine1.aspx
http://en.wikibooks.org/wiki/Creating_a_Virtual_Machine

Ambos están bastante bien.

Y como libro, estaba muy bien el siguiente (tiene una puntuación baja pero no por que sea malo, ni mucho menos. Sencillamente, va dirigido a un público diferente. Quizás te sea útil):

http://www.amazon.com/Virtual-Machine-Design-Implementation-Blunden/dp/1556229038

Un abrazo.

PD: Respecto a códigos fuente de máquinas... Que yo recuerde, en su momento no encontré demasiado. Ahora bien, lo que yo hice es descargarme 'emuladores' de arquitecturas, como ARM o AVR (Atmel) y estudié de ahí. Búscalos.

Suerte. Recuerda que la mayoría de indformación está en inglés. He usado a menudo este link. Quizás te sea útil (The Linux Documentation Project):

http://tldp.org/     ingles
http://es.tldp.org/   español (menos información)

GeorgArming


farresito

Nada, a ti. Si tienes alguna duda, contesta este tema, aunque no tengo demasiado conocimiento en la creación de máquinas virtuales y poco puedo hacer.

Un abrazo.

EvilGoblin

linux ya posee un metodo para cambiar shells independientes CTRL+ALT+F1,F2,F3...
Son totalmente independientes, solo debes loguear el usuario que deseas
Experimental Serial Lain [Linux User]

farresito

Respecto a la Shell, si, hay 3 o 4 funciones en Linux que lo que hacen es basicamente enviar datos a la terminal (como si lo escribieras) y retornar el valor que te devolveria. De hecho, este es el metodo que usan las terminales graficas. Se llama PSEUDOTERMINALES (terminales falsas, obvio el motivo).

La informacion la puedes encontrar en ingles. Yo siempre he usado como referencia un libro famoso donde viene bien expicadito. Se llama The linux programming interface. He encontrado este link para descargarlo. Deberia funcionar:
http://www.4shared.com/document/22_ypUxB/The_Linux_Programming_Interfac.html

Ultimo capitulo, el 64. Si tienes conocimientos, lo podras aplicar facilmente. Hice un mini proyecto con pseudoterminales hace tiempo. Si te interesa lo posteo, pero deberia buscarlo. Formatee el pc y no se si lo mantengo.

Un abrazo!