2. CONCEPTO DE SEMÁFORO, EXCLUSIÓN MUTUA Y SECCIÓN CRITICA.
SEMÁFORO.
Es una estructura diseñada para sincronizar dos o más procesos, de modo que su
ejecución se realice de forma ordenada y sin conflictos entre ellos consta de dos
operaciones.
Primitivas señal
Espera
Originalmente definidas como P y V por que operan sobre un tipo especial de
variable semáforo “S”. La variable semáforo puede tomar valores enteros y,
excepto posiblemente en su inicialización, solo puede ser accedida y manipulada
por medio de las operaciones
Signal
Wait
EXCLUSIÓN MUTUA
Consiste en que un solo proceso excluye temporalmente a todos los demás para
usar un recurso compartido de forma que garantice la integridad del sistema
Sección critica Es la parte del programa con un comienzo y un final claramente
marcados que generalmente contiene la actualización de una o más variables
compartidas. Para que una solución al problema de la exclusión mutua sea válida,
se tienen que cumplir una serie de condiciones:
Hay que garantizar la exclusión mutua entre los diferentes procesos a la
hora de acceder al recurso compartido. No puede haber 2 procesos dentro
de sus respectivas secciones críticas.
No se deben hacer suposiciones en cuanto a la velocidad relativa de los
procesos en conflicto.
Ningún proceso que este fuera de su sección critica debe interrumpir a otro
para el acceso a la sección critica.
Cuando mas de un proceso desee entrar en su sección critica, se le debe
conceder la entrada en un tiempo finito.
Para la solución al problema de la exclusión mutua hay 3 tipos de soluciones
Soluciones software
Soluciones hardware
Soluciones aportadas por el sistema operativo
3. Solo se permiten tres operaciones sobre un semáforo:
1. Inicializa (s: Semáforo_Binario; v: integer) -- > poner el valor del semáforo s al
valor de v (0,1).
2. Espera (wait)(s) if s = 1 then s: = 0 else Suspender la tarea que hace la llamada
y ponerla en la cola de tareas.
3. Señal (signal)(s) if cola de tareas vacía then s : = 1 else Reanudar la primera
tarea de la cola tareas.
Estas operaciones son procedimientos que se implementan como acciones
indivisibles. En sistemas con un único procesador bastará simplemente con inhibir
las interrupciones durante la ejecución de las operaciones del semáforo. Al
introducir el semáforo se crea un nuevo estado en el diagrama de transiciones, el
de espera.
SECCIÓN CRÍTICA
Porción de código con variables compartidas y que debe ejecutarse en exclusión
mutua.
Los lenguajes concurrentes deben proporcionar herramientas para resolver este
tipo de problemas.