Upload
mastermind87
View
6.516
Download
0
Embed Size (px)
SINCRONIZACIÓNDE PROCESOS
AntecedentesEl acceso concurrente a datos compartidos
puede dar pie a inconsistencia de datos
Mantener la consistencia de los datos requiere mecanismos para asegurar el orden de ejecución de los procesos que los comparten
Programas secuenciales Especifica una ejecución secuencial de una
lista de enunciados La ejecución del programa da como resultado
la creación de un proceso
Procesos concurrentes Concurrencia: del verbo concurrir, asistir o
acudir al mismo lugar o tiempo Especifica dos o más programas
secuenciales ejecutados concurrentemente como procesos paralelos
Características procesos concurrentes
Los procesos son concurrentes si existen simultáneamente
Pueden funcionar en forma totalmente independiente, unos de otros
Pueden ser asincronos lo cual significa que en ocasiones requieren cierta sincronización y cooperación
Clasificación procesos concurrentes Podemos hablar de
multiprogramación, multiprocesamiento o procesamiento distribuido
Multiprogramación Los procesos son ejecutados,
concurrentemente, compartiendo uno o más procesadores (c/u con su memoria)
El kernel del sistema operativo multiplexa los procesos en los procesadores
ProcProc22
ProcProc55
ProcProc66
ProcProc33
MM11 CPUCPU11
MM22 CPUCPU22
ProcProc77
ProcProc44
ProcProc11
Multiprocesamiento Se ejecuta un proceso en cada procesador Los procesos comparten una memoria en
común
CPUCPU11 CPUCPU22 CPUCPU33
Memoria comúnMemoria común
CPUCPU44
ProcProc11 ProcProc22 ProcProc44ProcProc33
Procesamiento distribuido Los procesos están conectados a través de
una red de comunicación Cada procesos cuenta con su memoria
CPUCPU11 CPUCPU22 CPUCPU33
MM11
CPUCPU44
ProcProc11 ProcProc22 ProcProc44ProcProc33
MM22 MM33 MM44
red de comunicaciónred de comunicación
Interacción entre procesos Para poder cooperar, procesos concurrentes
deben comunicarse y sincronizarse Comunicación permite ejecución de un
proceso para influenciar ejecución de otro Comunicación entre procesos esta basada
en el uso de variables compartidas o envío de mensajes
La sincronización Frecuentemente, la sincronización es necesaria
cuando los procesos se comunican Procesos son ejecutados con velocidades
impredecibles Para comunicarse un proceso debe realizar una
acción que el otro pueda detectar Entonces la sincronía puede verse como un conjunto
de restricciones para el ordenamiento de eventos Programador usa un mecanismo de sincronía para
retardar ejecución de un proceso para satisfacer una restricción
El Problema de la Sección CríticaCada proceso posee un fragmento de código,
denominado sección crítica, que no debe intercalarse con las secciones críticas de los demás procesos
En las secciones críticas de los procesos se encuentra el código que accede y/o modifica los datos compartidos
La ejecución de las secciones críticas debe ser mutuamente exclusiva para evitar inconsistencia de datos
El problema de la sección crítica consiste en diseñar un protocolo que los procesos pueden usar para conseguir la exclusión mutua de las secciones críticas.
El protocolo consta de: Sección de ingreso: solicita permiso para ingresar en la
SC Sección de egreso: anuncia la salida de la SC
Solución al Problema de la Sección Crítica
1.Exclusión Mutua – Si el proceso Pi está ejecutando su sección crítica, ningún otro proceso puede estar ejecutando su sección crítica
2.Progreso – Si ningún proceso está ejecutando su sección crítica y existen algunos que quieren entrar en su sección crítica, sólo los procesos que no estén ejecutando su sección restante pueden participar en la decisión de qué proceso puede ingresar en su sección crítica, y esta selección no puede posponerse indefinidamente
3.Espera limitada - Hay un límite para el número de veces que otros procesos pueden entrar a sus secciones críticas después de que un proceso ha solicitado entrar en su sección crítica y antes de que se le otorgue la autorización para hacerloAsumimos que cada proceso se ejecuta con velocidad
0 No hacemos supuestos acerca de las velocidades
relativas de los N procesos
Primer intentowhile (true){
while (turno 0);
SECCIÓN CRÍTICA
turno = 1;
SECCIÓN RESTANTE
}
Satisface la exclusión mutua
No cumple la condición de progreso
Requiere una alternancia estricta de los procesos en la ejecución de la sección crítica
Segundo intentowhile (true){
indicador[0] = TRUE;while (indicador[1]);
SECCIÓN CRÍTICA
indicador[0] = FALSE;
SECCIÓN RESTANTE
}
Satisface la exclusión mutua
No cumple la condición de progreso
Los dos procesos pueden quedarse bloqueados en ciclos infinitos
Solución de Dekker 5 (1965)while (true){
indicador[1] = TRUE;while (indicador[2]){
if (turno = 2){
indicador[1] = FALSE;
while (turno = 2);indicador[1] =
TRUE;}
}
SECCIÓN CRÍTICA
turno = 2;indicador[1] = FALSE;
SECCIÓN RESTANTE
}
Satisface la exclusión mutua
Cumple la condición de progreso
Cumple el requisito de espera limitada
Hardware de SincronizaciónMuchos sistemas proveen soporte de
hardware para resolver el problema de la exclusión mutua
Una solución en máquinas con un solo procesador es deshabilitar las interrupcionesEl código que se está ejecutando no
puede ser retirado de la CPUNo es buena solución porque el SO pierde
el control temporalmente En sistemas multiprocesadores no es eficiente
Las máquinas actuales proveen instrucciones atómicas especiales
Atómica = no interrumpible
PREGUNTAS¿?