concurrencia

40
! " ! #$ ! Sistemas de Tiempo Real %%&'()* ( +%,-. %/0 1 #0 2,,-1 +3 2 4. +%,5. %0 1 6 70 '1 +3 2. +-5. 0 81 1  +3 2. +-5. 0 1  1 + 2.

Transcript of concurrencia

  • !"

    !

    #$

    !Sistemas de Tiempo Real

    %%&'()*(

    +%,-.%/0 1 #02,,-1+324.

    +%,5.%01670'1 +32.

    +-5.0811 +32.+-5.011+2.

  • (1119

    :9099

    ;9

  • &

    9

  • !:9

    B7

    ;!

    7!'%11!(!

    !?

    !

  • ;>"

    0

    7"

  • C

    C

    :

    :

  • N: Integer := 0;

    Task Body P1 is Task Body P2 isbegin beginN := N+1; N := N+1end P1; End P2;

    Proceso 1;Load (x);Add (x,1);Store (x);

    Instrucciones deIncremento como

    Inc.

    Proceso 2;Load (x);Add (x,1);Store (x);

  • (1 !1 ('2 ('4

    -

    2 &@A - -

    4 &@A - - -

    2 @02A - 2 -

    4 @02A - 2 2

    2 !@A 2 2 2

    4 !@A 2 2 2

  • ;;:

    1

    &@!GAHI2040J0K ;;!G1

    @!GAHI2040J0K;;!G1

    ;! !;

    ;

    &@!A@!;AHL @!A&@!;AHL @!A@!;AHL

  • ;7;:"

    #

    #) ("

    7

    :

    ;

    "

  • &

    @?A;91

    71

    ;7 11

  • !

  • 7

    9

    7

    0

  • 7

    :"; 3

  • 3?" !

    0

  • !

    Task body P isbeginloopResto_de_cdigo;Pre-protocolo;Seccin Crtica;Post-Protocolo;

    end P;

    Cdigo

    Pre-protocolo

    Post-protocolo

    S. Crtica

  • %

    B&

    :

  • %=C%" ((

    %

  • ! D7

  • !

    ;

  • /Cobegin

    P1; P2; P3:Coend;

    /=forall i:= 1 to 100 do

    P(i);

    @&Agrep termino|sort|lpr

    $

    D"type vector is array(1..100) of int;var a, b,c: vector;a := b*c+2*a;

    task A is begin CodA end;task B is begin CodB end;task C is begin CodC end;

    ;

    class Hilo extends Thread{imp}Hilo prod = new Hilo();Hilo consu = new Hilo ();prod.start();consu.start();

  • ?$1 C

    3:$@pthread 0?

    Thread

    :"Runnable 87A

    9 %;!

    7@A

    3

  • 9 =

    :;

    >:

    >0:"

    9

    ;

    >:

    91"11C;879:3

    !

  • '

    #include #include

    pid_t fork(void)

    &7@

  • '

    #include #include #include

    int i,n;pid_t childpid;

    for (i = 1;i < n; i++)if ((childpid=fork())==-1)break;

    fprint(stderr,Soy el proceso %ld con padre %ld\n,(long)getpid(), (long)getppid());

  • ' (

    C

    877?

    7

    >:?

    Thread Clase Extendida

    extends

  • !

    @7A

    :

  • ;9

  • ! !:

    !9:

    : (:

    #

  • ;

    ;" = :?

    > )

    >; ;

  • ; 7O7

    9

    7 O

    (O(

    7:@A

    (

  • !!

    NUCLEO NUCLEO

    CLIENTE SERVIDOR

    SOLICITUD

    RESPUESTA

    RED

  • !*+*!,-.

    Entorno Global VAR vec: Vector; init vect [1],vec[2],...,vec[MAX]

    .

    .

    VectorEscalado (vec,MAX,10).

    (suspendido).

    continua

    copy v,nElements,k from CALL message

    FOR i:=1 TO Nelements DOv[i]:=v[i]*k;

    copy v to reply message

    CLIENTE SERVIDOR

    Respuesta

    Peticin

  • !/

  • " @(/$A

    !" ;:3 ;

    ;G/!?

  • !

    " 000 ;:1

    3:

    1

    3:

    0

    B"31

    &(

    0*

  • ;1

    !=0

    71

    =

  • !9

    3:

    " % :

    !