Cap05
Concurrencia: exclusión mutua y
sincronización
Concurrencia
• Comunicación entre procesos.
• Compartición y competencia por los
recursos.
• Sincronización de la ejecución de varios
procesos.
• Asignación del tiempo de procesador a
los procesos.
Concurrencia
• Múltiples aplicaciones:
– Multiprogramación.
• Aplicaciones estructuradas:
– Algunas aplicaciones pueden implementarseeficazmente como un conjunto de procesos
concurrentes.
• Estructura del sistema operativo:
– Algunos sistemas operativos están
implementados como un conjunto de procesos o
hilos.
Dificultades con la
concurrencia
• Compartir recursos globales.
• Gestionar la asignación óptima de
recursos.
• Localizar un error de programación.
Un ejemplo sencillo
void echo()
{
ent = getchar();
sal = ent;putchar(sal);
}
Un ejemplo sencillo
Proceso P1
Proceso P2
.
.
ent = getchar(); .
.
ent = getchar();
sal = ent;
sal = ent;
putchar(sal);
.
.
putchar(sal);
.
.
Labores del sistema operativo
• Seguir la pista de los distintos procesos activos.
• Asignar y retirar los recursos:
–
–
–
–
Tiempo de procesador.
Memoria.
Archivos.
Dispositivos de E/S.
• Proteger los datos y los recursos físicos.
• Losresultados de un proceso deben ser
independientes de la velocidad relativa a la que
se realiza la ejecución de otros procesos
concurrentes.
Interacción entre procesos
• Los procesos no tienen conocimiento de
los demás.
• Los procesos tienen un conocimiento
indirecto de los otros.
• Los procesos tienen un conocimiento
directo de los otros.
Competencia entre procesos
por los recursos
• Exclusiónmutua
– Secciones críticas:
• Sólo un programa puede acceder a su sección
crítica en un momento dado.
• Por ejemplo, sólo se permite que un proceso
envíe una orden a la impresora en un momento
dado.
• Interbloqueo.
• Inanición.
Cooperación entre procesos
por compartimiento
• Las operaciones de escritura deben ser
mutuamente excluyentes.
• Las secciones críticas garantizan la
integridad de losdatos.
Cooperación entre procesos
por comunicación
• Paso de mensajes:
– No es necesario el control de la exclusión
mutua.
• Puede producirse un interbloqueo:
– Cada proceso puede estar esperando una
comunicación del otro.
• Puede producirse inanición:
– Dos procesos se están mandando mensajes
mientras que otro proceso está esperando
recibir un mensaje.
Requisitos para la exclusión
mutua
• Sólo unproceso debe tener permiso para
entrar en la sección crítica por un
recurso en un instante dado.
• Un proceso que se interrumpe en una
sección crítica debe hacerlo sin interferir
con los otros procesos.
• No puede permitirse el interbloqueo o la
inanición.
Requisitos para la exclusión
mutua
• Cuando ningún proceso está en su sección
crítica, cualquier proceso que solicite
entrar en la suyadebe poder hacerlo sin
dilación.
• No se deben hacer suposiciones sobre la
velocidad relativa de los procesos o el
número de procesadores.
• Un proceso permanece en su sección
crítica sólo por un tiempo finito.
Primer intento
• Espera activa:
– Un proceso siempre está esperando a entrar
en su sección crítica.
– Un proceso no puede hacer nada productivo
hasta que obtiene permiso para entrar en susección crítica.
Corrutinas
• Diseñadas para poder pasar el control de
la ejecución entre ellas.
• No es una técnica apropiada para dar
soporte al procesamiento concurrente.
Segundo intento
• Cada proceso puede examinar el estado del otro
pero no lo puede alterar.
• Cuando un proceso desea entrar en su sección
crítica comprueba en primer lugar el otro
proceso.
• Si no hay otro proceso en susección crítica fija
su estado para la sección crítica.
• Este método no garantiza la exclusión mutua.
• Cada proceso puede comprobar las señales y
luego entra en la sección crítica al mismo
tiempo.
Tercer intento
• Dar valor a la señal para entrar en la sección
crítica antes de comprobar otros procesos.
• Si hay otro proceso en la sección crítica cuando
se ha dado valor a la señal, el proceso...
Regístrate para leer el documento completo.