PDF de programación - Procesos concurrentes y problemas en la comunicación y la sincronización - Sistemas operativos: comunicación y sincronización entre procesos

<<>>
Imágen de pdf Procesos concurrentes y problemas en la comunicación y la sincronización - Sistemas operativos: comunicación y sincronización entre procesos

Procesos concurrentes y problemas en la comunicación y la sincronización - Sistemas operativos: comunicación y sincronización entre procesosgráfica de visualizaciones

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
  • Links de descarga
http://lwp-l.com/pdf16198

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
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad