REPOSITORY OVERVIEWLive repository statistics
★ 2Stars
⑂ 1Forks
◯ 0Open issues
◉ 2Watchers
32/100
OPENREPOHUB HEALTH SIGNALLimited signals
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
10 Community adoption25% weight
5 Maintenance state20% weight
100 License clarity10% weight
0 Project information10% weight
75 This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
T.U.K.I - The Ultimate Kernel Implementation
El enunciado del proyecto se encuentra aquí.
El blog de marco teorico se encuentra aquí
Descripción del Proyecto
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.
Objetivos del Trabajo Práctico
- 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.
Arquitectura del Sistema
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.
Flujo de Ejecución
- 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.
Módulos Detallados
1. Consola
- 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.
2. 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.
3. CPU
- 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.
4. Memoria
- Función: Administra el espacio de memoria.
- Esquema de Segmentación: Implementa y gestiona la memoria segmentada.
5. File System
- Función: Administra y persiste los archivos.
- Esquema Indexado: Similar al tipo Unix o ext2.
Evaluación del Trabajo Práctico
La evaluación consta de dos etapas:
- Pruebas de Programas: Realizadas en el laboratorio.
- Coloquio: Defensa teórica y práctica del trabajo realizado.
Deployment
- 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.
Guía para Deployment
La guíase encuentra en el archivo [La Guia definitiva SO.txt].
Puesta en Marcha del Trabajo Práctico
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