El enunciado del proyecto se encuentra aquí.
El blog de marco teorico se encuentra aquí
T.U.K.I (The Ultimate Kernel Implementation) es un proyecto académico desarrollado para simular un sistema operativo distribuido. A través de este trabajo, los estudiantes se familiarizan con conceptos avanzados de sistemas operativos, aprenden a utilizar diversas herramientas de programación y aplican teorías vistas en clase mediante una implementación práctica.
- Adquirir conocimientos prácticos sobre el uso de APIs y herramientas de programación proporcionadas por los sistemas operativos.
- Comprender los aspectos del diseño de un sistema operativo.
- Reforzar conceptos teóricos mediante su implementación práctica.
- Familiarizarse con técnicas de programación de sistemas como el uso de makefiles, archivos de configuración y logs.
- Entender en detalle la operación de Linux utilizando un lenguaje de programación de bajo nivel como C.
El sistema se compone de cinco módulos:
- Consola: Múltiples instancias que crean procesos.
- Kernel: Administra y planifica la ejecución de procesos.
- CPU: Ejecuta las instrucciones de los procesos.
- Memoria: Administra el espacio de memoria usando segmentación.
- File System: Administra y persiste los archivos creados por los procesos.
- Consola: Envía información al Kernel para crear estructuras de administración.
- Kernel: Crea y planifica la ejecución de procesos mediante diversos algoritmos.
- CPU: Ejecuta las instrucciones y realiza peticiones a la Memoria y/o Kernel.
- Memoria: Administra el espacio de memoria y responde a las peticiones.
- File System: Gestiona archivos, respondiendo a peticiones del Kernel y haciendo peticiones a la Memoria.
Una vez finalizado un proceso, el Kernel notifica a la Consola correspondiente y cierra la conexión.
- Función: Inicia y envía procesos al Kernel.
- Configuración: Recibe un archivo de configuración y un archivo de pseudocódigo con las instrucciones.
- Instrucciones: Parseo de líneas con formato específico para enviar al Kernel.
- Función: Gestión y planificación de la ejecución de procesos.
- Diagrama de Estados: Utiliza un diagrama de cinco estados para la planificación.
- PCB: Estructura base para administrar procesos.
- Planificadores:
- Largo Plazo: Algoritmo FIFO.
- Corto Plazo: Algoritmos FIFO y HRRN.
- Función: Ejecuta las instrucciones de los procesos.
- Ciclo de Instrucción: Comprende fetch, decode, y execute.
- MMU: Unidad de administración de memoria para la traducción de direcciones.
- Función: Administra el espacio de memoria.
- Esquema de Segmentación: Implementa y gestiona la memoria segmentada.
- Función: Administra y persiste los archivos.
- Esquema Indexado: Similar al tipo Unix o ext2.
La evaluación consta de dos etapas:
- Pruebas de Programas: Realizadas en el laboratorio.
- Coloquio: Defensa teórica y práctica del trabajo realizado.
- Distribución de Procesos: Los procesos pueden ejecutarse en diversas computadoras.
- Automatización del Despliegue: Es responsabilidad del grupo automatizar el despliegue con los archivos de configuración correspondientes.
La guíase encuentra en el archivo [La Guia definitiva SO.txt].
Los módulos se deben levantar en el siguiente orden para asegurar el correcto funcionamiento de las conexiones:
- Memoria:
./bin/memory.out memory.config IP Escucha (ej 0.0.0.0)
- File System:
./bin/filesystem.out filesystem.config IP Escucha(ej 0.0.0.0)
- CPU:
./bin/cpu.out cpu.config IP Escucha
- Kernel:
./bin/kernel.out kernel.config IP Escucha
- Consola:
./bin/console.out console.config instrucciones.txt