You are on page 1of 34

Programación Avanzada

U
L
Programación
E
Concurrente



    
Resumen
   
 
    
   
 
 
U    
! "  
L  #   
E
 $" % & &" '$&&(
 $&&)  
    **



    
Paralelismo
   ) +      "
 #, "  "  )
 &+ - -"   , "
 ",.  
 
 ,   ", & /  ") , "
U  "

L  
 ,    /    '"( 0
# 1 # ) # "
E   , "2  /  "   , 
 ,3    "
 2 " ") +"  !/
 ) 45 " 
  " "  1   
  



    
Concurrencia
 2 " " 3 2  "
-   +  "   7  +
 - 8   "     
  )  "   
 9 "  "    +  -

U
L
E



    6
Terminología
 ) 
    +  "    +
  "
  ) & 7 "  + 
,   "  
" 2  1  1  
   /  
 3 "  "  
 

 

  
 )    "  "
U  
)  7  +  , "  
L   ) &+   , " "  
  "
E   
 )  7 "    " ,

  
)  7 "  +   , 
  
 )     1  , "
  
   )   ,   "  7
 2 "  3  2



    :
Concurrencia (cont.)
 2    3)
 ")  " " "   
 )  "   "
"   
U  3)  "   3   
L   9  2
E
 2   <)
 = ) #. "2  "7<  -
-  
" " - 
   



    ;
Intercalación. Instrucciones
Atómicas
X:=0
cobegin
x := x + 1; 
x := x + 2; 
coend;

   "2 )


U  ( ? @ 1 ( ? @ 1 ( ? @ 1 6( ? @ 
L  2 )     ,   A/
E  7  +  , "
  ) " 2 7 
  
 ,2  7  +     "
 &     "   " "  
"2    
   


    >
Corrección Programas
Concurrentes
 
   " )  +       
1 " 7 ?      /   
 B    2 " "2 7    
 #   ") B " 
      
    7  +
U    "2
 
L
E    ) '?() "C D'?1/() "1 1 2) 

    
        
  4

     
       




    
Definiciones corrección
 8   
 "  "" 7 2 ,
  7 +)
 " 7 2    
 
  



 &   F  ./ 
-   "
 
 


!
 "
8    "  
" G  2 
    
  
 
#$
!% &") &  2 " "  3 
2+ 9 1   " "  "  -    "
   7   "-
U
 '

L
E  " 7 2  ,  (

 '

 
 
  
!
& " $   " 9
 + "   " 9 , .    
"2 
 $ 



!"  " 2F  
"  +


    E
Soluciones Software para la
Concurrencia
 8  2   
! "  
 2  7F"
 B   
! "   2  -?
/ - ")
U
 &"
 75 
 / 75   "
L
E  &"
 7 "   "  " +

   ?  9   
 3 "
  "3 
  ) " /  H


    
Modelo de concurrencia
 &      7 
 3- ")
 # " /  2 ' , +(
     

U
 I ,  )
L  $"& "   5  "2    ? 
E 9
 -

 #
   +
 3,


    
Ocupado – En Espera (O-EE)
 8 ?  9  2+ ,  
 F
  F)    7  "
U
+ 
L  &+"  "  
   
E
" 
 J  "-    




    
O-EE: Primer Intento

U  &+"      1 .  "


L   "
  
E  B -2  75 "    "
'I (
   2 ) 1111
   " 
    F1   
   "- , ,  


    
  C
,  )  C

" C " C


2 2
" "
!.   @  C K"L !.   @  C K"L
K B  +  "L K B  +  "L
 )@ C  )@ C
K $  L K $  L

,
,
C C

U
L
E K " "" L
M
 )@ C
2
C C


N&&N "



    6
Segundo Intento

U
L  #
)  7  "     F
E " 7  5  
      "  "  -    F
  $M8&#)    ?  9     "3
 -



    :
 C
, "31 "3) '"1 G$"(C

" C " C


2 2
" "
!.  "3 @ " C K"L !.  "3 @ " C K"L
"3 )@ "C "3 )@ "C
K  B  +  "  L K  B  +  "  L
"3 )@ G$"C "3 )@ G$"C
K $  L K $  L

,
,
C C

U
L K " "" L
E M
"3 )@ G$"C
"3 )@ G$"C
2
C C


N&&N "




    ;
 4C
, "31 "3) '"1 G$"(C

" C " C


2 2
" "
"3 )@ "C "3 )@ "C
!.  "3 @ " C K"L !.  "3 @ " C K"L
K  B  +  "  L K  B  +  "  L
"3 )@ G$"C "3 )@ G$"C
K $  L K $  L

,
,
C C

U
L K " "" L  #
)   
E M
"3 )@ G$"C  /   "
"3 )@ G$"C
2
  $M8&#) 2 7  

C C  "3  -

   +  "  1 " 
 ,


N&&N "


    >
 C
, "31 "3) '"1 G$"(C
N&&N6 "


" C " C


2 2
" "
"3 )@ "C "3 )@ "C
!.  "3 @ "  2 !.  "3 @ "  2
"3 )@ G"C "3 )@ G"C
K   ,  L K   ,  L
"3 )@ "C "3 )@ "C
C C
K  B  +  "  L K  B  +  "  L
"3 )@ G$"C "3 )@ G$"C
U K $  L K $  L

,
,
L C C
E

M
"3 )@ G$"C
 #
)  
"3 )@ G$"C   F  "
2
C C  

   $M8&#) &" 



    
 ./ 3 "

Algoritmo de Dekker
  

 #  
   
<    
,- 
  " +    7
-7  " 
!
U
 I  5  

L  "  .!
E
 & 2 
1     
-7   " "
 &  "  / 2+ ,
/ "  " ,  



    E
   **C
, "31 "3) '"1 G"(C
)  C ** "


" C " C


2 2
" "
"3 )@ "C "3 )@ "C
!.  "3 @ "  !.  "3 @ " 

 @ 
 @ 
. 2 . 2
"3 )@ G$"C "3 )@ G$"C
!.   @  C K   ,  L !.   @   C K   ,  L
"3 )@ "C "3 )@ "C
C C
K  B  +  "  L K  B  +  "  L
U  )@ C
"3 )@ G$"C
 )@ C
"3 )@ G$"C
L K $  L K $  L

,
,
E C C

M
"3 )@ G$"C 2
"3 )@ G"C C C
  )@ C 


    
SEMÁFOROS

U 
 

L
E    



    
Concurrencia: Semáforos

 
  -

 O &+" ) &?  9  -

 &+"     -
 
U 
L
E  H.)  "
 / 
 "

 &+"  8&



    
Definición Semáforos
 B -
 ' +*(   4  3
")
 B   
 B   ",  G
 B    " "   -

U
L
 4 ")
E  ' ) -
C )  (
       "    3  -
  ,  
 P' ) -
 (
    "   "  &-  ?    
   @   "      "1   0   )@   
  ' ) -
 (
     "   "  &-  ?    P

    
Ejemplo exclusión mútua
 M C
,
 "   2  ) -
C  2 
 $& 4Q& 4 ') (C
" +  2  /  2
,  " G" &  '(
"  "  2  !'(C
 R " '(
./ 2  " .   '(C
$8BUG  '(
U &V8BUG #J4B) & C
,
L  " '( 
  ")/S G 4 $T 

E  3  ?  91 4C
  " '(  M&=G
'1(C 4  2 
 $M&=G

 + )@   G 4 $ 
S+T'+(C
$&G
&G


    6
Productor-Consumidor
 2  2 7 "    
7)
 &?   , " 7 W"X  
 &?   , " 7 WX 
" "  "
U
L  &  )
E
 8 " 2 2  "  
 2     8 "
2   " +  " / 
"     .  " 

 8  2   "  

    :
Dificultades con Semáforos
  9  2+ ,
 8  "  2   
-
 & "    
   
U
L
 8 -
  ,2   2  " 
E ")  7
 1 .
      )
 " 7 5     F
    -
1 / . !  
-
1 " 7    F 
"  


    ;
MONITORES

U 
 

L
E    



    >
Monitores
 45  -   ,
 4"   2
 "  
  .
+  "
U
 &"    "
L     $$ '7 5  /
E .(
  H
  " + 7
" 



    
Definición
 B  )
 G  ?   
  ?    ,5  
" 
 &?  9  
?   " "7 
+   "   

 I2  1 1  
   " 7 7
U +  
L  $")
  /'()    "    
E        2 
?    
 '()        -

,F1  "  "


"

pc_monitor.pfc


    E
Dificultades
 "  )    "  ./
+1    " / "  1 "  
 "    /  1 +  /
,F " 
 2   )
   " -    " 7  "
 & 7 7  "     9  
" 7  +1  " 7  5 + 
U  ,3  " 7    /  7 
L "
E  A/    "    7F &  H
  3       1    
" 7    5 ?"1 / 1  /
"1    " 7  . 2  
,2  



    
Emulación Monitores - Semáforos
   -
  ) 
MNN "

     -
)
 B -
  "  ?  9   "  

 B -
 
N "  ,2  
     N "   "7  " 
"       - ,F  
  "   -  " !'(   "
 /   '(  9 
U   "  /'( -  "
L N )@ N Y C
 '(C
E P'
N(C '( &"   
P'( '(  2   2 , ,  +  " 

N )@ N  
    '( ")

N 0  .  '
N(C    '( 
'(
 "    9  
 A/  "2      '( / '( $ " "F + 
P'(  / "  "  " " 8   
   '( / . '( 
N0 .  '
N(    '(  
C

    
Lectores - Escritores
 G ?   
 &?    / 
 &?   
 &+" )
U  M  1
.
L  42  "  
.
E
 B2   ,   " 

 &+" ) 8&N# "






    
El problema de los filósofos
! &
' & ' "

 ( )


*
! % ! "

)
+)
,)
' # +)
U ' % -)
 )
L
E ! #
! $
' $



    
Soluciones
  -
)
  )   )
  "

2 7
  )   5   6
U
L   " 
  "

E   )
  "




    6

You might also like