Vous êtes sur la page 1sur 4

PALACIN PALACIOS PAJUELO DANIEL

UNIVERSIDAD NACIONAL DANIEL ALCIDES


CARRION
ARQUITECTURA DE COMPUTADORAS
PARCIAL 2009 I

OBSERVACIONES:
• La evaluación es individual, cualquier incumplimiento dará lugar a la anulación y su
correspondiente nota cero.

PREGUNTA 1 Analice el programa y mencione donde se


produce la exclusión mutua o donde fracasa la
exclusión mutua. Mencione porque.
Se tiene el siguiente conjunto de procesos:
program preg2;
(* version de primitivas de exclusion mutua*)
Duración var
Instante de
Proceso de la Prioridad p1quiere, p2quiere: boolean;
llegada
ráfaga nolineas: integer;
P1 8 3 0
P2 2 2 1 process uno;
P3 5 3 3 var
P4 4 0 4 lin: integer;
P5 9 1 6

begin
for lin := 1 to 20 do
Nota: Usar la columna prioridad sola para la begin
p1quiere := true;
planificación por prioridades. while p2quiere do
begin
p1quiere := false;
• Calcular el tiempo promedio de espera
p1quiere := true
end;
(considere algoritmos apropiativos) para: nolineas := nolineas + 1;
p1quiere := false
end
• Planificación del trabajo del más corto end; (* uno *)

primero, SJF process dos;


var
lin: integer;
• Planificación por prioridades
begin
for lin := 1 to 30 do
• Planificación circular, quantum=3 begin
p2quiere := true;
while p1quiere do
begin
p2quiere := false;

p2quiere := true
end;
nolineas := nolineas + 1;
p2quiere := false
end
end; (* dos *)

begin
nolineas := 0;
cobegin
uno;
dos
coend;
writeln('Total de líneas =',nolineas)
PREGUNTA 2 end.

www.palacinp.es.tl
PALACIN PALACIOS PAJUELO DANIEL
Solución 1:
Se tiene el siguiente conjunto de procesos:

Duración Priorid Instante


de la ad de
ráfaga llegada
P1 8 3 0
P2 2 2 1
P3 5 3 3
P4 4 0 4
P5 9 1 6

Nota: Usar la columna prioridad sola para la planificación por prioridades.

• Calcular el tiempo promedio de espera (considere algoritmos apropiativos)

para:

- Planificación del trabajo del más corto primero, SJF.

- Planificación por prioridades.

- Planificación circular, quantum = 3.

PLANIFICACIÓN DEL TRABAJO DEL MÁS CORTO PRIMERO, SJF.

• Resolviendo por la grafica de Gantt:

• Tomando los procesos según la duración de la ráfaga se tiene:

P2 P4 P3 P1 P5

0 2 6 11
19 28

Sacando el tiempo de espera de los procesos P1, P2, P3, P4, P5.

- El tiempo promedio de ejecución (11 + 0 + 6 + 2 + 19)/5 = 38

- El tiempo promedio de espera es = 38/5 = 7.6

www.palacinp.es.tl
PALACIN PALACIOS PAJUELO DANIEL
PLANIFICACIÓN POR PRIORIDADES

• Resolviendo por la grafica de Gantt:

• Usando la columna prioridad para resolver el problema.

P4 P5 P2 P1 P3

0 4 13 15
23 28

Sacando el tiempo de espera de los procesos P1, P2, P3, P4, P5,

 El tiempo promedio de espera es = (15 + 13 + 23 + 0 + 4) = 55/5 =


11

PLANIFICACIÓN CIRCULAR

• Resolviendo por la grafica de Gantt:

• Tenemos quantum = 3, por lo tanto los procesos p1, p3, p4, p5 tendrán que
ponerse en cola.

0 3 5 8 11 14 17 19

P1 P2 P3 P4 P5 P1 P3 P4 P5 P1 P5

20 23 25 28

www.palacinp.es.tl
PALACIN PALACIOS PAJUELO DANIEL
Sacando el tiempo de espera de los procesos P1, P2, P3, P4, P5. Sumando todos los
tiempos de espera y sacándoles su promedio; luego dividiéndolos por el número de
procesos.

El promedio de tiempo ejecución = (0 + 3 + 5 + 8 + 11 + 14 + 17+ +19 + 20 +


23 + 25)/11 =12

Ahora el tiempo de espera es 12/5 = 2.4

Solución 2: p2quiere := false;


p2quiere := true
end;
(*ingresa en su region critica*)
La ejecución de exclusión mutua se explica de la nolineas := nolineas + 1;
siguiente manera con los comentarios en rojo p2quiere := false (*establece que terminó p2*)
(*sale de su region critica*)
program preg2; end
(* version de primitivas de exclusion mutua*) (* sale de exclusión mutua*)
var
p1quiere, p2quiere: boolean; (*ambos en falso*) end; (* dos *)
nolineas: integer;
begin
process uno; nolineas := 0; (*establece inicio en 0*)
var cobegin
lin: integer; (*establece que proceso se iniciará*)
uno;
dos
begin coend;
for lin := 1 to 20 do writeln('Total de líneas =',nolineas)
begin end.
(* entra en exclusión mutua*) La exclusión mutua queda garantizada y ya no
p1quiere := true; (* muestra interes de ingreso*)
while p2quiere do (* entra en espera*)
hay interrupciones de procesos, pero presenta
otro problema, el de postergación indefinida.
begin Veamos cómo. El proceso podría, por ejemplo,
(*establece que porceso se ejecutará*) proceder en espera indefinida ya que podrían
p1quiere := false; llegar momentos en se atendería demasiado
p1quiere := true
end; tiempo aun proceso y se dejaría en espera
(*ingresa en su region critica*) extrema al otro pudiendo llegar a que este
nolineas := nolineas + 1; nunca sea atendido. Cada proceso puede ajustar
p1quiere := false(*establece que terminó p1*) su bandera en verdadero, hacer la prueba del
(*sale de su region critica*)
end while, entrar en el ciclo while, ajustar su
(* sale de exclusión mutua*) bandera en falso, retardarse, ajustar su bandera
end; (* uno *) en verdadero y, luego, repetir lo mismo,
comenzando con la prueba del while, Mientras
process dos; ocurre esto, las condiciones de prueba
var permanecerán verdaderas. Entonces podría
lin: integer; ocurrir lo ya mencionado. Por lo tanto, la
exclusión mutua fracasaría.
begin
for lin := 1 to 30 do
begin
(* entra en exclusión mutua*)

p2quiere := true; (* muestra interes de ingreso*)


while p1quiere do (* entra en espera*)
begin
(*establece que porceso se ejecutará*)

www.palacinp.es.tl