Sobre los procesos cooperantes:
- Pueden compartir espacios de direcciones o datos a través de un archivo.
- Problema a considerar:
- Como evitar la inconsistencia de los datos compartidos
- Como acceder a espacios critico de código compartido.
Alternativas de sincronización :
-Semáforos
-Monitores
-Paso de mensajes
Sección crítica
Sean un conjunto de procesos cooperantes. Cada proceso tiene un segmento de código
en el cual puede modificar variables comunes, o un archivo, o una tabla.
Llamamos sección crítica (SC) a ese segmento de código.
Exclusión mutua
Cuando un proceso esta ejecutando ese segmento de código crítico, ningún otro proceso
puede ejecutarlo.
La ejecución de la sección crítica es mutuamente exclusiva en el tiempo.
Solución al problema de la sección crítica
Aplicación del protocolo
Las instrucciones de maquina (load, test, load) se ejecutan atómicamente.La solución para múltiples procesos la da el Algoritmo del panadero (bakery algorithm).
Semáforos
Es una herramienta de sincronización Sirve para solucionar el problema de la sección crítica.Sirve para solucionar problemas de sincronización.
Implementación
Es una variable entera sujeta a dos operaciones: wait y signalEstas operaciones se ejecutan de manera indivisible.
Cuando un proceso modifica el valor del semáforo, otros procesos no pueden
modificarlo simultáneamente. Se inicializa con valor no negativo
Wait decrementa el valor del semáforo. Si el valor se hace negativo, el proceso se bloquea. Signal incrementa el valor del semáforo. Si el valor no es positivo, se desbloquea un
proceso bloqueado por un wait.
Esquema de la SC con semáforos
Los algoritmos de exclusión mutua se usan en programación concurrente para evitar el uso simultáneo de recursos comunes, como variables globales, por fragmentos de código conocidos como secciones críticas.
ResponderEliminarPero también tenemos que tomar precauciones, porque debido del uso de algoritmos como es el algoritmo del semáforo, pueden producir deadlocks, al dejar varios procesos en espera de recursos.