1 Algoritmos con espera ocupada (parte 2)
-
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
-
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
taskset
1 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 llamadop4.tgz
p.e. así usando el terminal:tar cfz p4.tgz p4
-
La orden
taskset
suele formar parte del paqueteutil-linux
en la mayoría de distribuciones GNU/Linux. ↩︎