Está en la página 1de 2

Ejercicio:

Dado el código de los siguientes procesos:

Código proceso A:

int fd; #1
fd = open("fichero.txt", O_WRONLY, 0600); #2
for(int i=0;i<2;i++) { #3
write(fd, "%d", sizeof(int)); #4
}
close(fd); #5

Código proceso B:

int fd, contador = 0; #1


for(int i=0;i<2;i++) { #2
contador+=2; #3
}
printf("el contador vale: %d\n", contador); #4

De manera teórica, suponga que la ejecución de cada línea de código toma una unidad de tiempo. Considere
que las llamadas write y printf son bloqueantes puesto que suponen accesos a dispositivos de E/S, siendo
los tiempos de bloqueo de 3 unidades de tiempo. Suponga que ambos procesos se lanzan a la vez, pero el
planificador da paso en primer lugar al proceso A.

Realice la traza temporal de ejecución de dichos procesos y los índices de penalización suponiendo
planificación por turno rotatorio con compensación con quantum de 2 unidades de tiempo:

En caso de que un proceso haya consumido el 50% de su quantum y en la cola de procesos preparados haya
un único proceso, insértelo delante de éste.
Si dos o más procesos pasan a estado preparado a la vez, considere que el orden de inserción de preparados
en la cola es el siguiente: 1º-A, 2º-B.
Recuerde que un proceso en estado bloqueado se inserta en la cola de preparados una vez que pasa el
tiempo de bloqueo (que en este ejercicio se trata de 3 unidades de tiempo.
En toda decisión del planificador tenga en cuenta los procesos que justo acaban de pasar a estado
preparado tras un bloqueo.

Solución:

Traza de los procesos


Proceso A
1, 2, 3, 4, 3, 4, 3, 5
| | | | |
i=0 Bloquea i=1 Bloquea i=2

Proceso B
1, 2, 3, 2, 3, 2, 4
| | | |
i=0 i=1 i=2 Bloquea

Apartado 1
B = El proceso realiza una llamada bloqueante.
+ = El proceso se ejecuta en el procesador 1.
- = El proceso se ejecuta en el procesador 2.
< = Instante de llegada del proceso.
> = Instante de finalización del proceso.
* = El proceso es abortado.

| | | | | | | | 1 | 2 | 3 | 4 | | | | 3 | 4 | |
|
Pa < | | | | | | |---|---|---|---B | | P---|---*
| | | | | | | | | |i=0| | | | |i=1| | |
|
| | | | | | | | | | | | | | | | | |
|
| 1 | 2 | 3 | 2 | 3 | 2 | 4 | | | | | | | | | | |
|
Pb <---|---|---|---|---|---|---B | | P FIN | | | | | | |
| | |i=0| |i=1| |i=2| | | | | | | | | | |
|
| | | | | | | | | | | | | | | | | |
|
| | | | | | | | | | | | | | | | | |
|
Planificador X | | | | | | X | | | X | | X | X | |
| | | | | | | | | | | | | | | | | |
|
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___> t
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
18

Puesto que <math>P_b</math> tiene más prioridad de <math>P_a</math> y ambos se lanzan a la vez, el
planificador da paso al proceso <math>P_b</math> en primer lugar. --Pneira 12:19 11 nov 2011 (UTC)

Apartado 2
B = El proceso pasa a estado bloqueado.
P = El proceso pasa a estado preparado.
+ = El proceso se ejecuta en el procesador 1.
- = El proceso se ejecuta en el procesador 2.
< = Instante de llegada del proceso.
> = Instante de finalización del proceso.

| 1 | 2 | 3 | 4 | | | | 3 | 4 | | | | 3 | 5 | | | | |
Pa <+++|+++|+++|+++B | | P+++|+++B | | P+++|+++> | | | |
| | | | | | | | | | | | | | | | | | |
| 1 | 2 | 3 | 2 | 3 | 2 | 4 | | | | | | | | | | |
Pb <---|---|---|---|---|---|---B | | > | | | | | | | |
| | | | | | | | | | | | | | | | | | |
planif. | | | | | | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
t

Recuerda: Que la asignación sea dinámica significa que los procesos podrían pasar de un procesador a otro
si al pasar a estado preparado se encuentran con que el procesador que estaban empleando está ocupado y
hay otro procesador libre.

También podría gustarte