3 exclusión mutua

download 3 exclusión mutua

of 42

Transcript of 3 exclusión mutua

  • 8/18/2019 3 exclusión mutua

    1/42

    Exclusión mutua

  • 8/18/2019 3 exclusión mutua

    2/42

    Problema

    • Los hilos comparten un recurso (ej:textArea)

     – Si inserto otra cadena antes de quetermine la primera, se solapan!

  • 8/18/2019 3 exclusión mutua

    3/42

  • 8/18/2019 3 exclusión mutua

    4/42

  • 8/18/2019 3 exclusión mutua

    5/42

  • 8/18/2019 3 exclusión mutua

    6/42

  • 8/18/2019 3 exclusión mutua

    7/42

  • 8/18/2019 3 exclusión mutua

    8/42

  • 8/18/2019 3 exclusión mutua

    9/42

  • 8/18/2019 3 exclusión mutua

    10/42

    class ount extends hread "static #olatile int n $ %&

     public #oid run() " int temp&

     'or (int i $ %& i %& i **) " temp $ n& n $ temp * &  + +

    public static #oid main(Strin-. ars ) "ount p $ ne/ ount()& ount q $ ne/ ount()& p0 start ()& q0 start ()&

      tr1 "  p0 join ()&  q0 join ()&  + catch (2nterruptedException e) " + S1stem0out0println (3he #alue o' n is 3 * n

      + +

    Ejemplo variablecompartida 2

  • 8/18/2019 3 exclusión mutua

    11/42

    public class Counter implementsRunnable {  static fnal int THREADS = 2;  static fnal int A!"C#$%T =&''''''';  static volatile int counter = ';

      int id;

      public Counter(int id) {  t*is+id = id;  ,

      -#verride  public void run() {  int ma. = A!"C#$%T/THREADS;

      S0stem+out+print1(T*read 3d4n5id);  1or (int i ='; i 6 ma.; i77) {  counter 7= &;  ,  ,

     public static void main(Strin89: ar8s) t*ros

  • 8/18/2019 3 exclusión mutua

    12/42

  • 8/18/2019 3 exclusión mutua

    13/42

    ondiciones para la E4

    • 5 procesos en bucle in6nito• Las S no se pueden entrela7ar• Antes 1 despu8s de la S se inserta un

    protocolo• 9n proceso no se puede parar en su S• eben e#itarse los interbloqueos: si #arios

    procesos quieren acceder uno debeconseuirlo

    • En ausencia de competencia si aluienquiere entrar debe poder hacerlo

  • 8/18/2019 3 exclusión mutua

    14/42

    Estructura aloritmos E4

  • 8/18/2019 3 exclusión mutua

    15/42

    Aloritmo

    • La primera posibilidad consiste en elmantenimiento de un turno:

    • Los procesos, antes de su S esperana que le lleue el turno0

    • espu8s de su S pasan el turno

  • 8/18/2019 3 exclusión mutua

    16/42

    Aloritmo

  • 8/18/2019 3 exclusión mutua

    17/42

    Aloritmo •

    La #ariable compartidaturno  se iniciali7a a i o a jantes de jecutar Pi

    • La S de Pi se ejecuta siturn $ i

    • Pi est; en espera !

    • Existe una alternanciaestricta0 El ritmo deejecución depende del mas

    lento0• Si un proceso 'alla dentro o

    'uera (/hile) de su S elotro nunca podr; entrar asu S0 !!!!!!!

    Process Pi:

    repeat

      while(turno!=i){};

      SC

      turno:=j;  SR 

    forever

  • 8/18/2019 3 exclusión mutua

    18/42

    ?tra @epresentación del Aloritmo

    (a/ait turn $ ) equi#ale a *ile (turno ?= &){,

  • 8/18/2019 3 exclusión mutua

    19/42

    Aloritmo

    • Est; libre de interbloqueos: El turnono puede asinarse a 5 procesossimult;neamente

    • Puede 'allar por inanición

  • 8/18/2019 3 exclusión mutua

    20/42

    Ejercicio Lab0

    • acer un prorama en Ba#a en el que#arios hilos acceden a un recursocompartido (puede ser el contador

    del ejemplo #isto anteriormente) 1e#idencie la necesidad de laexclusión mutua0

    •  4ediante una #ariable lobal turnoceda el recurso compartido a loshilos (Aloritmo )0

  • 8/18/2019 3 exclusión mutua

    21/42

    iaramas de estado

    • 9sados para probar la corrección deproramas concurrentes0

    • Se parte del estado inicial 1 se #anrepresentado los posibles siuientesestados

    • Si un estado 1a ha sido dibujado

    pre#iamente se hace una conexión

  • 8/18/2019 3 exclusión mutua

    22/42

    An;lisis del Aloritmo

    •  enCamos de6nido nuestro prorama asC:

     – urno es una #ariable lobal

  • 8/18/2019 3 exclusión mutua

    23/42

    iaramas de estado

    El estado inicial es p, q (primera instrucción de los procesosP 1 D, turno #ale al comen7ar)

  • 8/18/2019 3 exclusión mutua

    24/42

    er Aloritmocompleto

    • o se dan ni

    (pF,qF,) 1(pF,qF,5)• PF 1 qF son laseccionescrCticas• Lueo ? ha1interbloqueo

  • 8/18/2019 3 exclusión mutua

    25/42

    iarama simpli6cado

    Duitamos los enunciados que noa'ectan a la sincroni7ación delos hilos

  • 8/18/2019 3 exclusión mutua

    26/42

    Aloritmo : eadLoc>G

    Si 5procesosquierenentrar ensu S, deellos debe

    conseuirlo0

  • 8/18/2019 3 exclusión mutua

    27/42

    Aloritmo : 2naniciónG

    S$Sección o

    rCtica

    Si HalInJproceso

    quiere entraren la S,debeconseuirloen alIn

    momento

    o proreso en S K

    2A22M

  • 8/18/2019 3 exclusión mutua

    28/42

    Aloritmo 5

    • 9n proceso en su S ? debeimpedir que otro entre en su S

    • ada proceso tiene su propio Na(DuieroEntrarEn4iS)

    • ada proceso lee el Na del otroantes de entrar

  • 8/18/2019 3 exclusión mutua

    29/42

    Aloritmo 5

    Oersión abre#iada

  • 8/18/2019 3 exclusión mutua

    30/42

    Aloritmo 5

    o aseura la Exclusión 4utuaDesde @ue sale del bucle 0 se asi8na el nuevo valor es SC

  • 8/18/2019 3 exclusión mutua

    31/42

    Dia8rama de estados Al8oritmo 2 en 1orma Tabu

  • 8/18/2019 3 exclusión mutua

    32/42

    Aloritmo F

    • Solicito 1 despu8s espero• Ejercicio: ibujar diarama de

    estados

  • 8/18/2019 3 exclusión mutua

    33/42

    Aloritmo F

    Se aseura la E4, pero puede haber eadLoc>

    Ambos pueden insistir en entrar en S a la #e7

    Tabla de

    estados

  • 8/18/2019 3 exclusión mutua

    34/42

     Aloritmo Q

    • Si otro quiere entrar a la #e7, espero 1 lueo #uel#o a lacara

  • 8/18/2019 3 exclusión mutua

    35/42

  • 8/18/2019 3 exclusión mutua

    36/42

    Aloritmo de e>>er (correcto en todos los sentidos)

  • 8/18/2019 3 exclusión mutua

    37/42

  • 8/18/2019 3 exclusión mutua

    38/42

    Al8oritmo > (eterson) otra implementacin

    • 2nicio:

    Na-%.:$Na-.:$'alse turno:$ i o j• El deseo de entrar

    en la 7ona crCtica se

    indica conNa-i.:$true• Na-i.:$ 'alse en la

    sección de salida0• Si P% 1 P intentan

    simult;neamenteentrar en su S selo impide la #ariableturno

    Process Pi:

    repeat

      flagi:=true;

    turno:=i;"o {} while

    (flagjan" turno=j);

      SC

      flagi:=false;

      SR 

    forever

  • 8/18/2019 3 exclusión mutua

    39/42

    Solución a n procesos: aloritmo deLamport (panaderCa)

    • Antes de ejecutar la S cada procesorecoe un nImero0 Aquel que tena elnImero mas pequeRo entra en la S0

    Si Pi 1 Pj tienen el mismo nImero: – si ij Pi entrar; primero, si no Pj

    • Pi pone su nImero a % en la Sec0 de Salida• otación:

     – (a,b) (c,d) si a c o si a $ c 1 b d – max(a%,000a>) es un nImero b tal que:

    • b $ ai para i$%,00>

  • 8/18/2019 3 exclusión mutua

    40/42

    aloritmo de la panaderCa

    (cont0)• Oariables lobales: – choosin: arra1-%00nK. o' boolean&

    • iniciali7ado a 'alse

     – number: arra1-%00nK. o' inteer&• iniciali7ados a %

    • Oalide7: – Si Pi est; dentro S es que P> ha

    escoido un number->.!$ %, 1(number-i.,i) (number->.,>)

  • 8/18/2019 3 exclusión mutua

    41/42

    El aloritmo de la panaderCa (cont0)

    Process Pi:

    repeat

      choosingi:=true;

      nu#$eri:=#a%(nu#$er&''nu#$ern)*;

      choosingi:=false;

      for j:=& to n "o {

      while (choosingj) {};

      while (nu#$erj!=&an" (nu#$erj+j),(nu#$eri+i)){};

      }

      SC

      nu#$eri:=&;

      SR 

    forever

  • 8/18/2019 3 exclusión mutua

    42/42

    Pr;ctica5 Lab0

    • odi6car en ja#a mediante hilos elaloritmo (urno), el de Peterson (5procesos) 1 el de Lamport (Q

    procesos)0 La sección crCtica puedeser un println() o la actuali7ación deun contador0 omprobar su

    'uncionamiento0