Concurrencia

Páginas: 13 (3022 palabras) Publicado: 20 de septiembre de 2012
Sistemas Operativos Tema 7. Concurrencia

© 1998-2012 José Miguel Santos – Alexis Quesada – Francisco Santana
1

Contenidos
n  n  n  n 

Sistemas concurrentes El problema de la sección crítica Semáforos Monitores

2

Bibliografía
n 

Fundamentos de Sistemas Operativos
q 

q 

S. Candela, C.R. García, A. Quesada, F.J. Santana, J.M. Santos. Thomson, 2007 Capítulo 3 J.T.Palma, M.C. Garrido, F. Sánchez, A. Quesada Capítulos 1, 2, 3, 4, 5 y 6 M. Ben-Ari. Prentice Hall, 1990 A. Burns, G. Davies. Addison-Wesley, 1993 Capítulo 7
3

n 

Programación Concurrente
q  q 

n 

Principles of Concurrent and Distributed Programming
q 

n 

Concurrent Programming
q  q 

Contenidos
n  n  n  n 

Sistemas concurrentes El problema de la seccióncrítica Semáforos Monitores

4

Modelo del sistema
n 

Conjunto de procesos cooperativos
q  q  q  q 

Red de cajeros automáticos Sistema de reserva de billetes Servidor de impresión ...

5

¿Qué es concurrencia?
n 

n 

n 

Definición de diccionario: coincidir en el espacio o en el tiempo dos o más personas o cosas. En Informática, se habla de concurrencia cuando hayuna existencia simultánea de varios procesos en ejecución. Ojo, concurrencia existencia simultánea no implica ejecución simultánea.

6

Paralelismo y concurrencia
n 

n 

El paralelismo es un caso particular de la concurrencia. Se habla de paralelismo cuando ocurre la ejecución simultánea de instrucciones.

7

Procesos cooperativos
n 

n 

n 

Necesidades de sincronizacióny comunicación Los procesos concurrentes tendrán necesidad de comunicarse información Además, será necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones à sincronización

8

Técnicas de sincronización
n 

Basadas en memoria compartida
q  q  q  q  q 

Inhibición de Interrupciones Espera activa Semáforos Regionescríticas Monitores Canales Buzones

n 

Basadas en el paso de mensajes
q  q 

9

Ejemplo 1: modificación concurrente de una variable
procedure
 Ejemplo1
 is
 
 
 
 x:integer;
 
  procedure
 P1
 is
  begin
 
 x:=x+10;
  end
 P1;
 
  procedure
 P2
 is
  begin
 
 
 if
 x>100
 then
 
 
 
 Put_Line (x);
 
 
 else
 
 
 
 
 Put_Line
 (x-­‐50);
 
 
 end
 if;
  end
 P2;
 

begin
 
 
 x:=100;
 
 COBEGIN
 
 
 
 P1;
 
 
 
 P2;
 
 COEND;
  end
 Ejemplo1;
 
 


 
10

Ejemplo 2: bucles infinitos concurrentes
procedure
 Ejemplo2
 is
 
 
 contador:integer;
 procedure
 Cuenta
 is
  begin
 
 loop
 
 
 
 …espera
 a
 que
 pase
 un
 coche…
 
 
 
 contador
 :=
 contador+1;
 
 end
 loop;
  end
 Cuenta;
 
  procedure
 Imprime;
  begin
 
 loop
 
 
 
 espera
 una
 hora
 
 
 
 Put(“Coches
 que
 han
 pasado:
 “);
 
  
 
 
 
 Put
 (contador);
 
 
 
 contador:=0
 
 end
 loop;
  end
 Imprime;
 

begin
 
 
 contador:=0;
 
 COBEGIN
 
 
 
 Cuenta;
 
 
 
 Imprime;
 
 COEND;
  end
 Ejemplo2;
 
 

11

Ejemplo 3: búfer limitado
N:
 constant
 integer:=...;
  type
 elemento
 is ...;
  buffer:
 array(0..N-­‐1)
 of
 elemento;
  entra,sale:
 mod
 N:=0;
  contador:
 integer
 range
 0..N:=0;
 
 
 
 

Productor

Consumidor

loop
 
 
 
 producir_algo
 (elem);
 
 
 
 loop
 
 
 exit
 when
 contador0;
 
 
 
 end
 loop;
 
 
 
 elem:=buffer(sale);
 
 ...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Concurrencia
  • Concurrente
  • concurrencia
  • Concurrencia
  • Concurrente
  • Concurrencia
  • CONCURRENCIA
  • Concurrencia

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS