Ejercicio 3

Dos procesos P1 y P2 se pasan información a través de una estructura de datos, ED. Sea un entero, n, que indica en todo momento el número de elementos útiles en ED y cuyo valor inicial es 0. El proceso P2 retira de ED en cada ejecución el último elemento depositado por P1, y espera si no hay elementos a que P2 ponga más. Supón que ED tiene un tamaño ilimitado, es decir, es lo suficientemente grande para que nunca se llene.

procedure P1()
    begin
        while true do
            begin
                dato_calculado:= calcular_dato();

                P(Critica);
                    n:=n+1;
                    DE[n]:=dato_calculado;
                V(Critica);
                V(ED);
            end
    end     



procedure P2()
    begin
        while true do
            P(ED);
            P(Critica);
                dato:=DE[n];
                n:=n-1
            V(Critica);

            operar_dato(dato);
        end
    end 

Inicializa_Semaforos(ED,0);
Inicializa_Semaforos(Critica,1);

COBEGIN
    P1();
    P2();
COEND

 

Ejercicio 4

Procedure P1()
begin
    while true do
        begin
            P(Valor);
                if (x mod 2 <> 0) then
                    begin
                        P(Critica);
                            m:=2*x-n;
                        V(Critica); 

                        imprimir (m);
                    end 
        end
end 

Procedure P2()  
begin
    while true do
        begin
            leer_teclado (d);

            P(Critica);
                x:=d-c*5;
            V(Critica);
            V(Valor);
        end 
end

Inicializa_Semaforo(Critica,1);
Inicializa_Semaforo(Valor,0);

COBEGIN
    P1();
    P2();
COEND

 

Deja un comentario

This site uses Akismet to reduce spam. Learn how your comment data is processed.