Publicado el 29 de Junio del 2019
793 visualizaciones desde el 29 de Junio del 2019
791,5 KB
43 paginas
SISTEMAS OPERATIVOS:
COMUNICACIÓN Y
SINCRONIZACIÓN ENTRE
PROCESOS
Procesos concurrentes y problemas en la comunicación
y la sincronización
Contenido
2
¨ Concurrencia.
¨ Condiciones de carrera.
¨ Exclusión mutua y sección crítica.
¨ Semáforos.
¨ El problema del productor consumidor.
¨ El problema de los lectores escritores.
Sistemas Operativos - Comunicación y sincronización
Proceso concurrente
3
¨ Dos procesos son concurrentes cuando se ejecutan
de manera que sus intervalos de ejecución se
solapan.
Si hay concurrencia
No hay concurrencia
Sistemas Operativos - Comunicación y sincronización
Tipos de concurrencia
4
¨ Concurrencia aparente: Hay más procesos que
procesadores.
¤ Los procesos se multiplexan en el tiempo.
¤ Pseudoparalelismo
1 CPU
2 CPUs
Sistemas Operativos - Comunicación y sincronización
Tipos de concurrencia
5
¨ Concurrencia real: Cada proceso se ejecuta en un
procesador.
¤ Se produce una ejecución en paralelo.
¤ Paralelismo real.
4 CPUs
Sistemas Operativos - Comunicación y sincronización
Modelos de programación concurrente
6
¨ Multiprogramación con un único procesador
¤ El sistema operativo se encarga de repartir el tiempo
entre los procesos (planificación expulsiva/no
expulsiva).
¨ Multiprocesador
¤ Se combinan paralelismo real y pseudoparalelismo.
n Normalmente más procesos que CPU’s.
¨ Sistema distribuido
¤ Varios computadores conectados por red.
Sistemas Operativos - Comunicación y sincronización
Ventajas de la ejecución concurrente
7
¨ Facilita la programación.
¤ Diversas tareas se pueden estructurar en procesos separados.
¤ Servidor Web: Un proceso encargado de atender a cada petición.
¨ Acelera la ejecución de cálculos.
¤ División de cálculos en procesos ejecutados en paralelo.
¤ Ejemplos: Simulaciones, Mercado eléctrico, Evaluación de carteras
financieras.
¨ Mejora la interactividad de las aplicaciones.
¤ Se pueden separar las tareas de procesamiento de las tareas de
atención de usuarios.
¤ Ejemplo: Impresión y edición.
¨ Mejora el aprovechamiento de la CPU.
¤ Se aprovechan las fases de E/S de una aplicación para procesamiento
de otras.
Sistemas Operativos - Comunicación y sincronización
Tipos de procesos concurrentes
8
¨ Independientes.
¤ Procesos que se ejecutan concurrentemente pero sin ninguna
relación.
n No necesitan comunicarse.
n No necesitan sincronizarse.
n Ejemplo: Dos intérpretes de mandatos de dos usuarios ejecutados en
distintos terminales.
¨ Cooperantes.
¤ Procesos que se ejecutan concurrentemente con alguna interacción
entre ellos.
n Pueden comunicarse entre si.
n Pueden sincronizarse.
n Ejemplo: Servidor de transacciones organizado en proceso receptor y
procesos de tratamiento de peticiones.
Sistemas Operativos - Comunicación y sincronización
Interacciones entre procesos
9
¨ Acceso a recursos compartidos.
¤ Procesos que comparten un recurso.
¤ Procesos que compiten por un recurso.
¤ Ejemplo: Servidor de peticiones en la que distintos procesos
escriben en un registro de actividad (log).
¨ Comunicación.
¤ Procesos que intercambian información.
¤ Ejemplo: Receptor de peticiones debe pasar información a
proceso de tratamiento de petición.
¨ Sincronización.
¤ Un proceso debe esperar a un evento en otro proceso.
¤ Ejemplo: Un proceso de presentación debe esperar a que todos
los procesos de cálculo terminen.
Sistemas Operativos - Comunicación y sincronización
Contenido
10
¨ Concurrencia.
¨ Condiciones de carrera.
¨ Exclusión mutua y sección crítica.
¨ Semáforos.
¨ El problema del productor consumidor.
¨ El problema de los lectores escritores.
Sistemas Operativos - Comunicación y sincronización
Condiciones de carrera
11
suma_total = 0
suma = suma_total
suma = suma + 100
suma = suma_total
suma = suma + 100
suma_total = suma
suma_total = suma
SUMA = ?
Sistemas Operativos - Comunicación y sincronización
Condiciones de carrera
12
#include <stdio.h>
#include <pthread.h>
#define NUMTH 10
int suma_total = 0;
void suma() {
int i,n;
int suma=suma_total;
suma = suma + 100;
n=rand()%5;
for (i=0;i<n;i++)
{printf(".");}
suma_total=suma;
}
int main() {
pthread_t th[NUMTH];
int i;
for (i=0;i<NUMTH;i++) {
pthread_create(&th[i],
NULL,(void*)suma, NULL);
}
for (i=0;i<NUMTH;i++) {
pthread_join(th[i], NULL);
}
printf("Suma=%d\n",
suma_total);
}
¿Resultado?
Sistemas Operativos - Comunicación y sincronización
Resultado
13
[jdaniel@tucan ~]$ ./test2
.................Suma=200
[jdaniel@tucan ~]$ ./test2
.................Suma=600
[jdaniel@tucan ~]$ ./test2
.................Suma=500
[jdaniel@tucan ~]$ ./test2
.................Suma=300
[jdaniel@tucan ~]$ ./test2
.................Suma=600
[jdaniel@tucan ~]$ ./test2
.................Suma=600
[jdaniel@tucan ~]$ ./test2
.................Suma=500
[jdaniel@tucan ~]$ ./test2
.................Suma=600
[jdaniel@tucan ~]$ ./test2
.................Suma=600
[jdaniel@tucan ~]$ ./test2
.................Suma=600
[jdaniel@tucan ~]$ ./test2
.................Suma=500
¨ Cada vez se obtiene
un resultado distinto.
¨ Nunca se obtiene el
resultado correcto.
¨ ¿Qué está pasando?
Sistemas Operativos - Comunicación y sincronización
Secuencias posibles
14
suma_total = 0
suma_total = 0
suma1 = suma_total
suma1 = suma1 + 100
suma_total = suma1
suma2 = suma_total
suma2 = suma2 + 100
suma1 = suma_total
suma1 = suma1 + 100
suma2 = suma_total
suma2 = suma2 + 100
suma_total = suma
suma_total = suma
suma_total = suma1
200
Sistemas Operativos - Comunicación y sincronización
100
Otra alternativa
15
suma_total = 0
suma_total += 100
suma_total += 100
SUMA = ?
¿Pueden darse condiciones de carrera?
Sistemas Operativos - Comunicación y sincronización
Instrucciones máquina
16
li $t0, 0
sw $t0, suma_total
lw $t0, suma_total
addi $t0, $t0, 100
sw $t0, suma_total
lw $t0, suma_total
addi $t0, $t0, 100
sw $t0, suma_total
suma_total = ?
¿Se puede dar en un multiprocesador?
Sistemas Operativos - Comunicación y sincronización
Condiciones de carrera
17
¨ El funcionamiento de un proceso y su resultado
debe ser independiente de su velocidad relativa de
ejecución con respecto a otros procesos.
¤ Es necesario garantizar que el orden de ejecución no
afecte al resultado.
¨ Solución: Conseguir que un conjunto de instrucciones
se ejecute de forma atómica.
Exclusión mutua
Sistemas Operativos - Comunicación y sincronización
Contenido
18
¨ Concurrencia.
¨ Condiciones de carrera.
¨ Exclusión mutua y sección crítica.
¨ Semáforos.
¨ El problema del productor consumidor.
¨ El problema de los lectores escritores.
Sistemas Operativos - Comunicación y sincronización
19
Exclusión mutua
¨ Sección crítica: Segmento
de código que manipula
un recurso y debe ser
ejecutado de forma
atómica.
¨ Se asocia a un recurso un
mecanismo de gestión de
exclusión mutua.
¨ Solamente un proceso
puede estar
simultáneamente en la
sección crítica de un
recurso.
Sistemas Operativos - Comunicación y sincronización
Problemas de la sección crítica
20
¨ Interbloqueos.
¤ Se produce al admitirse exclusión mutua para más de
un recurso.
n El proceso P1 entra en la sección crítica para el recurso A.
n El proceso P2 entra en la sección crítica para el recurso B.
n El proceso P1 solicita entrar en la sección crítica para el
recurso B (queda a la espera de que P2 la abandone).
n El proceso P2 solicita entrar en la sección crítica para el
recurso A (queda a la espera de que P1 la abandone).
Ninguno puede avanzar
Sistemas Operativos - Comunicación y sincronización
Problemas de la sección crítica
21
¨ Inanición.
¤ Un proceso queda indefinidamente bloqueado en espera
de entrar en una sección crítica.
n El proceso P1 entra en la sección crítica del recurso A.
n El proceso P2 solicita entrar en la sección crítica del recurso A.
n El proceso P3 solicita entrar en la sección crítica del recurso A.
n El proceso P1 abandona la sección crítica del recurso A.
n El proceso P2 entra en la sección crítica del recurso A.
n El proceso P1 solicita entrar en la sección crítica del recurso A.
n El proceso P2 abandona la sección crítica del recurso A.
n El proceso P1 entra en la sección crítica del recurso A.
n …
El proceso P3 nunca consigue entrar en la sección crítica del recurso A
Sistemas Operativos - Comunicación y sincronización
Inanición
22
El proceso P3 nunca llega a conseguir
entrar en la sección crítica
Sistemas Operativos - Comunicación y sincronización
Condiciones para la exclusión mutua
23
¨ Solamente se permite un proceso puede estar
simultáneamente en la sección crítica de un recurso.
¨ No debe ser posible que un proceso que solicite acceso
a una sección crítica sea postergado indefinidamente.
¨ Cuando ningún proceso este en una sección crítica,
cualquier proceso que solicite su entrada lo hará sin
demora.
¨ No se puede hacer suposiciones sobre la velocidad
relativa de los procesos ni el número de procesadores.
¨ Un proceso permanece en su sección crítica durante un
tiempo finito.
Sistemas Operativos - Comunicación y sincronización
Sección crítica: Mecanismo de sincronización
24
¨ Cualquier mecanismo que solucione el problema de la
sección crítica debe proporcionar sincronización entre
procesos.
¤ Cada proceso debe solicitar permiso para entrar en la
¤ Cada proceso debe indicar cuando abandona la sección
sección crítica
crítica.
Código no crítico
…
<Entrada en sección crítica>
Código de sección crítica
<Salida de sección
Comentarios de: Procesos concurrentes y problemas en la comunicación y la sincronización - Sistemas operativos: comunicación y sincronización entre procesos (0)
No hay comentarios