Ingeniería Informática Sistemas Operativos II
Práctica 2
Procesos Concurrentes
1. a) Escriba 3 ejemplos de algoritmos que representen respectivamente: un proceso
concurrente, un proceso paralelo y uno de tiempo real.
b) Busque un ejemplo de un proceso concurrente pero no paralelo.
2. Si se tienen tres procesos A, B, C, de tal forma que:
Duración de A = 10 ms
Duración de B = 5 ms
Duración de C = 30 ms
El proceso C se debe ejecutar como máximo en 45 ms, el A en 15 ms y el B en 10 ms.
a) Dibuje una posible planificación de tiempo del SO para poder cumplir con los plazos.
b) Si el hardware soporta superposición (dos procesos max), en cuanto tiempo se podrían
ejecutar los 3 procesos.
3. Dibuje el grafo de precedencia del siguiente algoritmo:
BEGIN
cuenta := 2;
S1;
FORK L1;
S3;
GOTO L2;
L1 S2;
S4;
FORK L3;
S5;
GOTO L4;
L2 L3 JOIN cuenta;
S6;
L4 JOIN cuenta;
S7;
END;
4. Si se tiene el grafo de precedencia de la figura:
Ingeniería Informática Sistemas Operativos II
Realice su correspondiente código en “C” utilizando las llamadas Fork.
5. Si se tiene la siguiente tabla de procesos en función de las variables que necesita:
S1 lee: S2 lee: S1 escribe: S2 escribe:
J R A C
K G B D
R A F E
T T R A
E E T Y
a) ¿Estos procesos pueden ser concurrentes? Explique que condiciones de Bernstein no
se cumplen.
b) ¿Qué variables modificaría para que se cumplan las condiciones de concurrencia de
Bernstein?.
MINIX:
6. Implemente el ejercicio 4 en dentro del SO Minix. Ayuda: Debe incluir el header: <unistd.h>
7. Realice un ejemplo de implementación de 5 hilos utilizando las sentencias “pthread”