Sistemas operativos
Exclusi´n Mutua y Sincronizaci´n o o
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Introducci´n o Memoria compartida en UNIX Sincronizaci´n o Exclusi´n mutua o Sem´foros a Monitores Mensajes
Concurrencia de Procesos: Exclusi´n Mutua o y Sincronizaci´n o
Eloy Anguiano Rey eloy.anguiano@uam.es
Centro de Referencia Linux UAM–IBM Escuela Polit´cnicaSuperior e Universidad Aut´noma de Madrid o
Introducci´n o
Elementos a tener en cuenta
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Comunicaci´n entre procesos. o Compartici´n y competencia por los recursos. o Sincronizaci´n de la ejecuci´n de varios procesos. o o Asignaci´n del tiempo de procesador a los procesos. o M´ltiples aplicaciones: u
Multiprogramaci´n: oIntroducci´n o
Elementos a tener en cuenta Ejemplos de problemas
Memoria compartida en UNIX Sincronizaci´n o Exclusi´n mutua o Sem´foros a Monitores Mensajes
Aplicaciones estructuradas:
Algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
Estructura del sistema operativo:
Algunos sistemas operativos est´n implementados como a un conjunto deprocesos o hilos.
Introducci´n o
Elementos a tener en cuenta
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Introducci´n o
Elementos a tener en cuenta Ejemplos de problemas
Memoria compartida en UNIX Sincronizaci´n o Exclusi´n mutua o Sem´foros a Monitores Mensajes
Dificultades con la concurrencia Compartir recursos globales. Gestionar la asignaci´n ´ptima de recursos. oo Localizar un error de programaci´n. o
Introducci´n o
Ejemplos de problemas
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Sup´ngase que se lanzan dos procesos id´nticos con la o e siguiente estructura:
void echo() { ent = getchar(); sal = ent; putchar(sal); }
Introducci´n o
Elementos a tener en cuenta Ejemplos de problemas
Memoria compartida en UNIXSincronizaci´n o Exclusi´n mutua o Sem´foros a Monitores Mensajes
Cuando se ejecutan los dos simult´neamente la a ejecuci´n puede ser la siguiente: o
... ent = getchar(); ... ... sal = ent; putchar(sal); ... ... ent = getchar(); sal = ent; ... ... putchar(sal);
Introducci´n o
Ejemplos de problemas
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Sup´ngase la ejecuci´n de estos dosprocesos: o o
Proceso A for(i=1 to 5) do { x=x+1; } Proceso B for(j=1 to 5) do { x=x+1; }
Introducci´n o
Elementos a tener en cuenta Ejemplos de problemas
Memoria compartida en UNIX Sincronizaci´n o Exclusi´n mutua o Sem´foros a Monitores Mensajes
con las siguientes condiciones: Valor inicial x=0. Se comparten todas las variables. La operaci´n de incremento se realiza en tres oinstrucciones at´micas: o
1
2 3
LD ACC, # (Carga el contenido de una direcci´n en el o ACC). ACC++ (Incrementa el acumulador). SV ACC, # (Almacena el valor del acumulador en una direcci´n). o
Ejercicio: calcula todos los valores posibles de salida para la variable x.
Introducci´n o
Ejemplos de problemas
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Introducci´n oElementos a tener en cuenta Ejemplos de problemas
El proveedor produce informaci´n para el consumidor. La o concurrencia se produce mediante el uso de buffers y variables compartidas (compartici´n de memoria) o mediante o compartici´n de ficheros. o
Memoria compartida en UNIX Sincronizaci´n o Exclusi´n mutua o Sem´foros a Monitores Mensajes
En el que se tienen las siguientes condiciones: Uno o m´sproductores generan datos y los sit´an en un a u buffer. Un unico consumidor saca elementos del buffer de uno ´ en uno. S´lo un productor o consumidor puede acceder al buffer o en un instante dado.
Introducci´n o
Ejemplos de problemas
Concurrencia de Procesos: Exclusi´n Mutua y o Sincronizaci´n o
Compartido
#define N 100 /*m´ximo n´mero de elementos */ a u int contador=0; /* contador...
Regístrate para leer el documento completo.