1 Algoritmos con espera ocupada (parte 2)

  1. Probar 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
  2. 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

2 Entrega

  • Se realiza en pracdlsi en las fechas allí indicadas. Puedes entregar tantas veces como quieras, solo se corrige la ultima entrega.

  • Los documentos que entregues que sean de texto (UTF-8 preferiblemente) o PDF, no emplees otros formatos.

  • 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


  1. La orden taskset suele formar parte del paquete util-linux en la mayoría de distribuciones GNU/Linux. ↩︎