Ejercicio 1

Sentados en una mesa del Restaurante “Atrevete a Comer”, están dos personas, cada una de las cuales esta tomando un plato de sopa, y entre lasdos comparten una fuente de ensalada. Estas dos personas no tienen mucha confianza y no pueden comer las dos simultáneamente del plato de ensalada.
Se pide:

a) Diseñar un programa que resuelva el problema.
b) Ahora, supón que existe un camarero encargado de retirar los platos de sopa cuando estos están vacíos, es decir, cuando cada una de las
personas ha tomado diez cucharadas. Solucionar esta variante teniendo en cuenta que el camarero debe cambiar los platos a las dos personas a
la vez.

(* Declaracion de Variables *)

cucharadas1 : Integer;
cucharadas2 : Integer;

procedure Comensal_1()
    begin
        while ejecucion do
            begin
                if cucharadas1 <=10 then
                    begin
                        tomar_sopa();
                        cucharadas1 := cucharadas1 + 1;
                    end 

                P(Ensalada)
                    Comer_Ensalada()
                V(Ensalada) 
            end
    end

procedure Comensal_2()
    begin
        while ejecucion do
            begin
                if cucharadas2 <=10 then
                    begin
                        tomar_sopa();
                        cucharadas2 := cucharadas2 + 1;
                    end 

                P(Ensalada)
                    Comer_Ensalada()
                V(Ensalada) 
            end
    end 

procedure Camarero()
    begin
        if (cucharadas1 == 10) and (cucharadas2 == 10) then
            begin
                recoger_platos();
            end
        else
            begin
                poner_sopa();
            end 

    end 
(* Inicializacion de Variables *)
cucharadas1 := 0;
cucharadas2 := 0;

(* Inicializacion de Semaforos *)
Inicializa_Semaforo(Ensalada,1);
Inicializa_Semaforo(Cucharadas,10);


COBEGIN
    Comensal_1();
    Comensal_2();
    Camarero();
COEND

 

Ejercicio 2

El gestor de memoria que utiliza una estrategia de particiones de tamaño variable con bloques de 600 bytes, 400 bytes, 1000 bytes, 2200 bytes, 1630
bytes, y 1050 bytes.

a) ¿Qué bloque se seleccionará para satisfacer una solicitud de 1603 bytes utilizando una política de el mejor ajuste? Por qué?

1630 bytes.
Porque es el que mejor se le ajusta (Hay menor diferencia entre el espacio asignado y lo solicitado por el proceso)

b) Y utilizando el peor ajuste. Por qué?

2200 bytes.
Porque es el que peor se le ajusta (Hay mayor diferencia entre el espacio asignado y lo solicitado por el proceso de tal forma que quede suficiente espacio libre para otros procesos).

c) Suponiendo que la lista esta ordenada como aparece en el enunciado del problema, ¿ qué bloque se seleccionará para satisfacer una solicitud de 1603 bytes utilizando la política del primer ajuste?

2200 bytes. Es el primer hueco lo suficientemente grande para alojar el proceso.

Deja un comentario

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