Descripción de las entregas

Los checkpoints se dividen entre "Presenciales" y "No presenciales". Este trabajo práctico contará con un único checkpoint presencial, a realizarse en el laboratorio de Medrano. Los checkpoints no presenciales son orientativos, y ayudan al grupo a medir el avance. De forma opcional, pueden ser validados con un ayudante, durante los sábados de soporte.

Checkpoint 1 - No presencial

Fecha: 28 de Abril
Tiempo estimado: 2 semanas
Distribución recomendada: 5 integrantes conectando los procesos)

Objetivos:

  • Familiarizarse con Linux y su consola, el entorno de desarrollo y el repositorio
  • Aplicar las Commons Libraries, principalmente las funciones para listas, archivos de conf y logs
  • Definir el Protocolo de Comunicación
  • Familiarizarse con el desarrollo de procesos servidor multihilo (proceso Coordinador, Planificador)

Implementación mínima:

  • Creación de todos los procesos que intervienen
  • Desarrollar una comunicación simple entre los procesos que permita propagar un mensaje por cada conexión necesaria
  • Implementar la consola del Planificador sin funcionalidades

Lectura recomendada:

  • Beej Guide to Network Programming - link
  • Linux POSIX Threads - link
  • SO UTN FRBA Commons Libraries - link
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 3: Procesos
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 4: Hilos

Checkpoint 2 - No presencial

Fecha: 19 de Mayo
Tiempo estimado: 3 semanas
Distribución recomendada: 1 ESI - 2 Planificador - 1 Coordinador - 1 Instancia

Objetivos:

  • Implementación de la base del Protocolo de Comunicación
  • Comprender y aplicar mmap()
  • Entender el concepto de Shared Library
  • Comprender con algo de profundidad cómo funcionan algunos algoritmos sencillos

Implementación mínima:

  • Lectura de scripts y utilización del Parser del proceso ESI
  • El Planificador debe ser capaz de elegir a un ESI utilizando un algoritmo sencillo (FIFO por ej)
  • El Coordinador debe ser capaz de distribuir por Equitative Load.
  • Desarrollo de lectura y escritura de Entradas en el Instancia (Operaciones GET/SET).

Lectura recomendada:

  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 4: Hilos
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 5: Planificación

Checkpoint 3 - Presencial - Laboratorio

Fecha: 9 de Junio
Tiempo estimado: 3 semanas
Distribución recomendada: 1 ESI - 2 Planificador - 1 Coordinador - 1 Instancia

Objetivos:

  • Entender las implicancias de un algoritmo de planificación real
  • Entender el concepto de productor-consumidor y sus problemas de concurrencia
  • Implementar algoritmos similares a los usados en Memoria Virtual

Implementación mínima:

  • ESI completo
  • Planificador utilizando SJF con y sin desalojo, con todas sus colas.
  • La consola del Planificador deberá poder ejecutar los comandos "Pausar/Continuar", "Bloquear", "Desbloquear" y "Listar"
  • El Coordinador deberá tener el "Log de Operaciones" funcionando. También deberá ser capaz de comunicar bloqueos.
  • La Instancia deberá implementar todas las instrucciones. A la hora de reemplazar claves, deberá implementar el algoritmo Circular

Lectura recomendada:

  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 5: Planificación
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 6: Sincronización
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 8 y 9: Memoria

Checkpoint 4 - No Presencial

Fecha: 30 de Junio
Tiempo estimado: 3 semanas
Distribución recomendada: 2 Planificador - 2 Coordinador - 1 Instancia

Objetivos:

  • Entender las implicancias de un algoritmo de planificación real
  • Utilizar el concepto de "interfase" para que cada proceso planifique de forma similar, soportando diferentes algoritmos.

Implementación mínima:

  • Planificador utilizando HRRN
  • La consola del Planificador deberá poder ejecutar los comandos "kill" y "status"
  • El Coordinador deberá ser capaz de distribuir utilizando "LSU" y "KE". Implementar retardos
  • La Instancia deberá ser capaz de soportar desconexiones y reincorporaciones. Además se deberá implementar el algoritmo LRU

Lectura recomendada:

  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 5: Planificación
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 6: Sincronización
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 8 y 9: Memoria

Entrega final - Presencial - Laboratorio

Fecha: 14 de Julio
Tiempo estimado: 2 semanas
Distribución recomendada: 1 Planificador - 1 Coordinador - 1 Instancia - 2 Testing general y arreglos

Objetivos:

  • Implementar un algoritmo de detección de deadlocks
  • Probar el TP en un entorno distribuido
  • Realizar pruebas intensivas
  • Finalizar el desarrollo de todos los procesos

Implementación mínima:

  • La consola del Planificador deberá poder ejecutar el comando "deadlock"
  • La Instancia deberá ser capaz de soportar dumps y compactación. Se deberá implementar el algoritmo BSU

Lectura recomendada:

  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 6: Deadlock
  • Sistemas Operativos, Silberschatz, Galvin - Capítulo 10 y 11: File System
Segunda fecha de entrega: 21 de Julio
Última fecha de entrega: 4 de Agosto