Você está na página 1de 35

SISTEMAS OPERATIVOS

Concurrencia
Exclusin mutua y sincronizacin

Concurrencia
La concurrencia es la simultaneidad de hechos.
Un programa concurrente es aquel en el que ciertas
unidades de ejecucin internamente secuenciales
(procesos o threads), se ejecutan paralela o
simultneamente.
Incluye los siguientes aspectos:

comunicacin entre procesos.


comparticin y competencia por los recursos.
sincronizacin de la ejecucin de varios procesos.
asignacin del tiempo de procesador a los procesos.

Surgen en entornos con un solo procesador, con


multiprocesadores y proceso distribuido.
2 /72

Concurrencia
Un programa concurrente est formado por una coleccin
de procesos secuenciales autnomos que se ejecutan
(aparentemente) en paralelo.
Tres formas de ejecutar procesos concurrentes:
1. Los procesos multiplexan sus ejecuciones sobre un
nico procesador (multiprogramacin).
2. Los procesos multiplexan sus ejecuciones sobre un
sistema multiprocesador de memoria compartida
(multiproceso).
3. Los procesos multiplexan sus ejecuciones en varios
procesadores
que
no
comparten
memoria
(procesamiento distribuido).
El trmino concurrencia indica paralelismo potencial.
3 /72

Concurrencia

multiprogramacin

multiproceso

Procesamiento
distribuido

4 /72

Concurrencia
En un sistema multiprogramado (1 P), los procesos se
intercalan, para dar la apariencia de simultaneidad.
P1
P2
P3

En un sistema con varios procesadores (n P), los


procesos se superponen.
P1
P2
P3

5 /72

Dificultades con la Concurrencia


Los problemas generados por la multiprogramacin
surgen por que no es posible predecir la velocidad
relativa de los procesos:
La actividad de un proceso depende de la actividad de
los otros procesos y de la forma cmo el SO trata las
interrupciones y las polticas de planificacin.
Dificultades:
Compartir recursos globales (variable global)
Manejar la asignacin de recursos
Detectar un error es difcil, dado que es difcil
reproducir la situacin..
6 /72

Un ejemplo simple

chin

chout

P1

P2

7 /72

un ejemplo simple
void echo()
{
char_in = getchar();
char_out = char_in;
putchar(char_out);
}

Se asume que esta funcin es usada por muchos procesos en el SO y


dado que existe una sola pantalla y un solo teclado, todos los programas
interactan con este programa. Por lo que lo que es recomendable
tenerlo siempre en memoria
8 /72

un ejemplo simple
Process P1
.
chin = getchar();
.
chout = chin;
putchar(chout);
.
.

Process P2
.
.
chin = getchar();
chout = chin;
.
putchar(chout);
.

chin = a
chin = b

Conclusiones:
Proteger las variables compartidas.
cmo?
Evitando que otro proceso ejecute a echo hasta que el proceso actual termine.
Evitando que el proceso actual sea interrumpido hasta que termine
9 /72

INTERACCION ENTRE
PROCESOS

10 /72

Tipos de proceso
Independientes

Cooperantes

Su estado no es compartido

Su estado es compartido

Son deterministas

Su funcionamiento no es
determinista

Son reproducibles

Su funcionamiento puede ser


irreproducible

Ejemplo: Un programa que calcula


1000 cifras decimales de

Ejemplo: un proceso que escribe en


el terminal la cadena abc y en otro
la cadena cba

11 /72

Interaccin entre procesos


La concurrencia se presenta cuando existen:
multiprogramacin de aplicaciones independientes.
aplicaciones con varios procesos.
el uso de las estructuras de datos del SO.
el computador se dispone de varios procesadores.

(multiprogramacin).
(multiproceso).
(procesamiento distribuido).
12 /72

Interaccin entre procesos


Existen tres maneras en que los
procesos interactan:
1 competencia por recursos escasos.
Los procesos no conocen a los
dems
2

cooperacin por comparticin


Los procesos conocen
indirectamente a los dems

cooperacin por comunicacin


Los proceso conocen directamente a
los otros.

Interbloqueo
Inanicin
Exclusin mutua

Interbloqueo
Inanicin
Exclusin mutua
Coherencia de datos

Interbloqueo
Inanicin
13 /72

Competencia por recursos escasos

Los procesos compiten por recursos escasos.


Si dos procesos compiten por un recurso

el SO asigna el recurso a uno y el otro espera


Problemas.
Interbloqueo (estancamiento)
Inanicin
Exclusin mutua

14 /72

Ejemplo
Recursos
disponibles

P1 P2 P3

P1 P2 P3

P1 P2 P3

Estado
inicial

Estado
seguro

Estado
seguro

P1 P2 P3

Estado
inseguro

P1 P2 P3

Estado
inseguro

15 /72

La cooperacin por comparticin

Los procesos no se conocen.


Los procesos cooperan para evitar inconsistencias
Recursos compartidos:
variables compartidas
ficheros
bases de datos

Problema
Confianza
Solucin
Exclusin mutua
Seccin crtica

La escritura debe ser mutuamente excluyente.

La lectura puede ser concurrente


16 /72

Ejemplo
Ejecucin consistente
P1:
a=a+1
b=b+1
a=a+1
P2:
b=2*b
a = 2 *a
Ejecucin concurrente
P1:
a=a+1
P2:
b=b*2
a=a+1
P1:
b=b+1
P2:
a = 2 *a

b=b+1

b = 2 *b

a = 2 *a

b=b*2

b=b+1

a = 2 *a

17 /72

18 /72

La cooperacin para la comunicacin

Los procesos se conocen explcitamente.

La comunicacin se da con mensajes: send, receive.


No se comparten recursos no exclusin mutua.
Problemas.
Interbloqueo.

Inanicin.

Cada proceso espera un mensaje del otro proceso

Dos procesan envan sus mensaje mutuamente


mientras que esperan un mensaje del otro proceso

19 /72

20 /72

PROBLEMAS POTENCIALES
A RESOLVER

21 /72

22 /72

1. Exclusin mutua
Es un mecanismo empleado en el diseo de los sistemas
operativos para evitar los problemas de competencia por
recursos, se basa en definir una zona o regin crtica la
cual est marcada por las instrucciones que hacen uso del
recurso en competencia (recurso crtico).

23 /72

2. Interbloqueo (deadlock)
condiciones :

P1 requiere R1 y R2
P2 requiere R1 y R2

acciones:
1. P1 obtiene R1
2. P2 obtiene R2
3. P1 Y P2 estn bloqueados esperando cada uno al otro
R1

R1

R1

P1

P2

P1

P2

P1

P2

R2

R2

R2
24 /72

25 /72

3. Inanicin
Los procesos siempre estn bloqueados y nunca acceden
a los recursos que necesitan
Sean 3 procesos.

P1 solicita recurso.
P2 y P3 solicitan recursos
P1 suelta el recurso
Se asigna el recurso a P2
P1 solicita el recurso
P2 suelta el recurso
Se asigna el recurso a P1

26 /72

27 /72

SECCION CRTICA

28 /72

Seccin Crtica
Es la parte del programa que accede a un
recurso compartido
Solo un programa puede acceder a su
seccin crtica en un momento dado
NO se puede confiar simplemente en el SO
para hacer cumplir esta restriccin
Se suspende la
ejecucin de la seccin
crtica hasta que acabe
el anterior

Ejemplo:
solo un
proceso en
cada
momento
estar
enviando
comandos
a la
impresora

seccin
crtica

29 /72

Requerimientos para exclusin mutua


1. Exclusin mutua. Slo un procese accede a la vez a su SC

2. Un proceso suspendido en su SC no debe estorbar a otros


3. No inanicin, no interbloqueo. Si un proceso solicita
acceso a su SC no debe demorar su atencin.
4. Si ningn proceso est en su SC, no se puede evitar que
otro proceso entre a su SC.
5. No suponer la velocidad relativa de los procesos.

6. Se permanece en la SC por un tiempo finito.


30 /72

SOLUCIONES DE SOFTWARE

31 /72

Algoritmos de Dekker

32 /72

33 /72

34 /72

35 /72

Você também pode gostar