Algoritmos con espera ocupada (parte 2)

  1. Implementa con hilos POSIX, con hilos Java o con Python (al menos uno en cada lenguaje), los siguientes algoritmos vistos en clase que utilizan la espera ocupada para la exclusión mutua:
  • Algoritmo de Dekker
  • Algoritmo de Peterson
  • Algoritmo de Hyman
  • Algoritmo de Lamport
  1. Según la ejecución de cada uno de los algoritmos, anota en tu memoria si son correctos o incorrectos, y si son incorrectos qué propiedades no están cumpliendo. Si no observas la salida esperada prueba a modificar los tiempos de respuesta de tus hilos para obtenerla si fuera posible.
    • A la hora de estudiar el comportamiento de los hilos en la sección crítica ten en cuenta que p.e.;
      • En Java, las asignaciones de tipos primitivos se realiza de forma atómica.
      • En Python existe el llamado GIL (global interpreter lock).
    • Debes ejecutar tu programa con el comando taskset1 para que tu ordenador trabaje en modo monoprocesador. Hazlo así: taskset -c 0 proceso. Puedes cambiar el 0 por el número de núcleo que ejecutará la tarea

Entrega

  • Se realiza en pracdlsi en las fechas allí indicadas. Puedes entregar tantas veces como quieras, solo se corrige la ultima entrega.
  • Crea una carpeta llamada p4 y dentro de ella estarán el código y archivos de texto o PDF donde contestas a las preguntas. Esta carpeta la comprimes en un archivo llamado p4.tgz p.e. así usando el terminal: tar cfz p4.tgz p4