PRÁCTICAS DE LABORATORIO DE SISTEMAS OPERATIVOS
PRIMERA PRÁCTICA OBLIGATORIA (2000-01)
Recuento tétrico
Enunciado.
La práctica constará de dos ficheros fuente y su correspondiente
makefile
:
padre.c
e hijo.c
. La correcta
compilación de estos programas dará dos ejecutables:
padre
e hijo
. El programa
padre
no admitirá nada como argumentos de la línea de órdenes de la
shell y hará lo siguiente:
- Permanecerá en reposo sin consumir CPU.
- Cuando el usuario teclee CTRL+C, en lugar de acabar
como sería lo habitual, el proceso padre tendrá un hijo.
El proceso hijo pasará a ejecutar el resultado de la
compilación de
hijo.c
. Se le pasará como
primer y único argumento la última cifra del PID
de su abuelo (el padre de padre
).
- Cuando muera uno cualquiera de sus hijos,
padre
escribirá por pantalla:
PADRE: "Es mi hijo nº 3 que ha muerto. R.I.P.
Y a continuación: La suma acumulada es: 43"
.
Esto suponiendo que sea el tercer hijo muerto
(el tercero de los muertos, no el tercero que nació
y acaba de morir) y que la suma acumulada hasta ese
momento sea esa.
- El proceso padre sumará en
una variable los códigos de retorno de los hijos que
van muriendo.
- Cuando el número de hijos muertos sea 5, el
padre morirá y escribirá:
PADRE: "Muero al fin. Aún quedan 4 hijos vivos."
si es que es cierto que quedan cuatro. Si no,
los que queden.
El programa hijo
, recibirá como argumento único
un número entero y realizará lo siguiente:
- Imprimirá por pantalla:
HIJO: "Soy el hijo
de PID=123432."
, suponiendo que su PID fuera
123432.
- Calculará la última cifra de su PID.
- Permanecerá bloqueado sin consumir CPU tantos segundos
como indique dicha cifra (no se puede usar la función
de biblioteca
sleep
).
- Morirá y devolverá a su padre el número que resulta de
sumar la última cifra de su PID al número que ha recibido
como argumento.
Plazo de presentación.
Hasta el lunes 2 de abril, inclusive.
Normas de presentación.
Acá están.
LPEs.
- El programa padre puede tener más de un hijo antes de
que muera alguno de ellos. Es decir, no vale que el
programa padre tenga un hijo, espere a que muera,
tenga otro hijo, espere a que muera, etc.
- Las tareas que tiene que realizar cada uno de los
programas son variadas. Os recomiendo que vayáis
programándolas y comprobándolas una a una. No es muy
productivo hacer todo el programa de seguido y corregir
los errores al final.
- Evitad, en lo posible, el uso de variables globales.
Tenéis la posibilidad de declarar variables
estáticas.
- Para calcular la última cifra de un número entero,
podéis hacerlo calculando el resto de dividir dicho
número por 10.
© 2000 Guillermo González Talaván.