El prop≤sito de este proyecto es desarrollar una herramienta grßfica que permita el estudio y comprensi≤n del funcionamiento real de un sistema operativo moderno.
El programa que se presenta permite observar los aspectos mßs relevantes de un sistema operativo en funcionamiento. TambiΘn permite ver c≤mo funcionan y c≤mo interact·an los tres sistemas mas importantes: planificaci≤n de procesos, gesti≤n de memoria y Entrada/Salida. Las representaciones son dinßmicas pudiendo capturarse algunas de las grßficas, para su posterior estudio, mostrar el funcionamiento del sistema en "vivo" o experimentar directamente con Θl.
Un sistema operativo consta de muchas partes φntimamente relacionadas, de manera que su buen funcionamiento depende tanto del correcto funcionamiento de cada una de ellas como de su correcta interacci≤n. Este programa permite tanto su estudio global como el estudio concreto de alguna de sus partes.
Tradicionalmente cada parte de un sistema operativo se estudia por separado, siendo muy difφcil ofrecer una visi≤n global e integrada de todas ellas, asφ como de los problemas de la concurrencia, debido a la difφcil representaci≤n del sistema en funcionamiento.
Hasta ahora la ·nica manera de comprender realmente estos conceptos era escribiendo y modificando el c≤digo de un sistema operativo real para luego analizar su funcionamiento. Con este prop≤sito se escribieron sistemas operativos como MINIX, NACHOS o TUNIX. El problema que tiene este mΘtodo es que requiere mucho tiempo, y para ser realmente ·til se necesita un gran dominio del lenguaje de programaci≤n utilizado, que permita centrarse en la l≤gica del problema. Esta nueva herramienta permitirß la realizaci≤n de laboratorios en los cuales se podrß, en poco tiempo, comprender conceptos fundamentales del funcionamiento real de los sistemas operativos.
En el ßmbito docente, el presente programa convierte en mßs sencillas las tareas anteriores. Facilita al profesor el trabajo de realizar grßficas y otras representaciones que expliquen los conceptos importantes del sistema operativo, y permite que el alumno los vea mßs claramente, porque podrß realmente ver, por ejemplo, c≤mo los distintos procesos se disputan el procesador y la memoria a la vez que pretenden ser los primeros en leer del disco y c≤mo es el sistema el que gestiona estos recursos. Todo lo verßn en conjunto y no fragmentado como se puede explicar en una clase tradicional. Por supuesto tambiΘn se pueden desactivar algunas de las partes para poder ver mßs claramente el funcionamiento de las demßs. Incluso se pueden mostrar los distintos subsistemas en mßquinas diferentes para realizar prßcticas en las que distintos alumnos se hagan cargo de cada uno, eligiendo el algoritmo que quiere utilizar o incluso tomando las decisiones manualmente.
Por otro lado, tambiΘn se podrß utilizar como banco de pruebas, haciendo mßs fßcil y flexible el mΘtodo de modificar y escribir c≤digo, ya que la aplicaci≤n estß escrita de forma modular y tomando especial interΘs en hacer lo mas sencillo posible la adici≤n de nuevos algoritmos o modificaci≤n de los ya existentes. Para poder hacer esto no serß necesaria la comprensi≤n del resto del c≤digo, solamente serß necesario aprender el interfaz que los algoritmos en cuesti≤n utilizan, una estructura de datos y algunas funciones. Incluso se han escrito funciones para ocultar al implementador de los algoritmos la utilizaci≤n de GTK+ como librerφa de elementos grßficos.
Para hacer lo mßs fßcil posible el mantenimiento de la documentaci≤n interna y asegurar asφ la calidad de esta, se ha utilizado un sistema que genera c≤digo DocBook (SGML) a partir de comentarios estructurados en el c≤digo fuente del programa denominado "gtk-doc". DocBook, es un estßndar en la industria (SUN MicroSystems, Hewlett Packard, O'Reilly ...), y por su carßcter semßntico permite escribir los documentos una sola vez y de forma automßtica obtenerlos en diferentes formatos: HTML, PostScript, PDF, DVI, Braille ...
El sistema de control de versiones utilizado ha sido CVS (Concurrent Version System), que es el estßndar de facto en el ßmbito del software libre. El CVS permite gestionar los cambios de colecciones completas de archivos.
Gracias a las herramientas "automake" y "autoconf" la compilaci≤n del programa es muy sencilla, ya que se detectan las peculiaridades del entorno de forma automßtica y sin intervenci≤n del usuario.
Se ha considerado importante la utilizaci≤n de estßndares abiertos y herramientas libremente disponibles para facilitar la colaboraci≤n en el futuro por parte de los propios estudiantes o de cualquier otra persona que lo desee a lo largo de todo el mundo (mediante Internet). Para lograr estos objetivos se han utilizado herramientas como DocBook (SGML) como formato de documentaci≤n, el API de programaci≤n GNOME/GTK+, el compilador GCC (GNU C COMPILER) y el sistema de control de versiones CVS (Concurrent Version System).