otros mecanismos handout 4

Anuncio
Contenidos
Múltiples propuestas de creación y sincronización de procesos
Otros mecanismos de concurrencia
Algunas adoptados en lenguajes de programación
Otras se han quedado en el tintero (no realmente útiles, difı́ciles de
implementar, etc.)
Plan:
Lectura:
Concepts and Notations for Concurrent Programming
I
(Andrews & Schneider)
I
I
Creando tareas
Sincronizando procesos con memoria compartida
Sincronizando procesos con memoria distribuida
Manuel Carro
Universidad Politécnica de Madrid
Este texto se distribuye bajo los términos de la Creative Commons License
M. Carro (UPM)
Otros mecanismos
1 / 11
Creando tareas
I
Bloque (como begin / end) que especifica arranque concurrente:
I
I
I
cobegin
S1 ; S2 ; . . . Sn ;
coend ;
Tareas arrancadas explı́citamente dando punto de inicio
f o r k P1 ;
...
j o i n P1 ;
I
program P1 i s
...
end P1 ;
I
I
Devuelve / espera por identificador tarea
Lanzador y lanzado progresan concurrentemente
Aparece en librerı́as Unix: fork()/wait()
También en librerı́as de threads:
F
F
I
Otros mecanismos
S1 . . . Sn se ejecutan concurrentemente
coend continúa cuando todos los Si han terminado
Variante (replicación tareas):
f o r a l l I : = 1 to n do
S( I ) ;
end ;
POSIX: pthread create() / pthread join()
Win32: CreateThread() / WaitForSingleObject()
M. Carro (UPM)
2 / 11
cobegin / coend
También aparece en otros lenguajes
fork/join:
I
Otros mecanismos
Creando tareas (Cont.)
En Ada: tareas como tipos; elaboración de variables crea procesos
I
M. Carro (UPM)
I
3 / 11
Requisitos fuertes acerca del momento de lanzamiento de tareas
M. Carro (UPM)
Otros mecanismos
4 / 11
Sincronización con memoria compartida
Regiones crı́ticas condicionales
Vistos para exclusión mutua:
I
I
Variables compartidas agrupadas en recursos: conjuntos de variables
compartidas que necesitan exclusión mutua
Espera activa (Peterson / Dekker / . . . )
Semáforos
resource R : V1 , V2 , . . . Vn ;
Pueden usarse para construir sincronización condicional
Pero falta de estructuración
Cada variable a lo sumo en un recurso
Acceso en exclusión mutua a recursos dentro de regiones:
region R when B do S ;
R nombre de recurso
B condición booleana (sin restricción sintáctica)
I Región suspende si no se cumple
I Exclusión mutua sobre variables en R
Caro de implementar (B puede referenciar variables locales)
Falta de estructuración (acciones sobre recursos dispersas)
M. Carro (UPM)
Otros mecanismos
5 / 11
Monitores
M. Carro (UPM)
Otros mecanismos
Sincronización con memoria distribuida
Encapsulan estado (privado) y operaciones Op1, ..., OpN
Basada en alguna forma de paso de mensajes
Llamadas a operaciones en exclusión mutua
Sincronización usando variables de condición:
No hay variables compartidas −→ exclusión mutua innecesaria
I
I
Comunicación: mensajes (contienen datos)
Wait(cond) suspende proceso llamante, abandona exclusión mutua
Signal(cond) permite rearrancar proceso suspendido en cond
Sincronización: mensajes (espera por llegada / recepción)
Taxonomı́a según:
I
procedure P ( A : . . . )
begin
i f not CondP ( A , Est )
then
Wait (C ) ;
end i f ;
...
end P ;
M. Carro (UPM)
6 / 11
procedure Q(B : . . . )
begin
...
i f CondP ( Est ) then
Signal (C ) ;
end i f ;
end Q;
Otros mecanismos
I
7 / 11
Especificación canales
Sincronı́a
M. Carro (UPM)
Otros mecanismos
8 / 11
Nombrado directo
Llamada a procedimiento remoto (RPC)
send / receive usualmente en pares:
Origen y destino especificados en la comunicación
I
I
Origen especifica destino:
Pasar datos, recoger resultados
RPC encapsula ambas direcciones en una sola llamada:
send Data to Receiver ;
c a l l P( args entrada ; a r g s s a l i d a ) ;
Destino especifica origen:
Especificación de procedimiento remotos
receive Data from Sender ;
remote procedure
P( args entrada ;
args salida )
begin
...
args salida : = . . . ;
end P ;
Se ignoran otros orı́genes
Pipelines: una forma (domesticada) de paso de mensajes con
nombrado directo
ls | tail -5 | sort
Difı́cil de usar para programar servidores
I
Nombrado global (mailboxes)
M. Carro (UPM)
9 / 11
Panorama
Espera activa
Semáforos
Orientados a
mensajes
Orientados a
procedimiento
Paso de mensajes
Monitores
RPC
Orientados a
operación
M. Carro (UPM)
Otros mecanismos
accept P ( a r g s e n t r a d a ;
a r g s s a l i d a ) −−>
begin
args salida : = . . . ;
end ;
11 / 11
M. Carro (UPM)
Podrı́a ser llamado en
cualquier punto
Sólo en servidor: Rendez-Vous
Creado como proceso
Otros mecanismos
Regiones crı́ticas
Recepción explı́cita
Otros mecanismos
10 / 11
Descargar