Sie sind auf Seite 1von 1

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU

FACULTAD DE CIENCIAS E INGENIERIA


SISTEMAS OPERATIVOS
Laboratorio Nro 1
(Segundo Semestre del 2016)

1.- (7 puntos) (nombre del archivo: ntree.c) Se le solicita crear un rbol de procesos. El rbol
debe tener las siguientes caractersticas: en el primer nivel del rbol se debe encontrar el proceso
padre. En el nivel n debe haber n procesos por cada proceso en el nivel (n-1). El programa debe
hacer uso de pstree para mostrar por pantalla el rbol de procesos. El nmero de niveles debe
ser ingresado como argumento del programa. Por ejemplo si n = 3, se debe mostrar un rbol con
la siguiente estructura:
p1 ----- p2----|
|-|
|-|P6----|-|--

p3
p4
p5
p7
p8
p9

2.- (6 puntos) (nombre del archivo: printpids.c) Un pipe (tubera en castellano), es un seudo
archivo y su funcin principal es la comunicacin entre procesos relacionados (es decir entre los
procesos de un mismo rbol de procesos). Una caracterstica, es la forma como se graba y se lee del pipe.
El acceso se hace mediante descriptores de archivo, que son devueltos por la llamada al sistema pipe. Esta
llamada devuelve dos valores, por ese motivo a la llamada pipe se le debe proporcionar como argumento
la direccin de un arreglo de dos elementos. Si fd[2] es el arreglo, despus de la llamada pipe(fd),
fd[0] contiene el descriptor de lectura y fd[1] el descriptor de escritura. Otra caracterstica importante
es que si un proceso crea un pipe y despus crea un rbol de procesos (con fork), todos los procesos del
rbol heredan los descriptores del pipe, esto significan que pueden tener acceso al pipe. Entre las
diferencias con los archivos comunes es que en el pipe, el acceso de lectura/escritura es FIFO y no se
puede usar lseek(). Adems los elementos que se leen, son retirados del pipe, es decir en algn
momento el pipe se puede encontrar vaco. Por ltimos, se ha de mencionar que si el pipe se encuentra
vaco, el proceso que intenta leer de l se bloquear, y si el pipe se encuentra lleno, el proceso que intenta
escribir en l se bloquear. En Linux la capacidad mxima de un pipe, normalmente es de 4096 bytes.
Con la informacin mencionada arriba y con ayuda de los ejemplos proporcionados en el material de
estudio, escriba un programa para que un proceso cree una cadena de n procesos (donde n es ingresado
por teclado y n < 30). El proceso padre debe crear un pipe antes de crear los procesos. Los procesos hijos
deben escribir su pid en el pipe creado por el padre. Al final el proceso padre lee del pipe los pids de los
procesos de la cadena, los almacena en un arreglo, los ordena y los muestra por pantalla ordenados.
3.- (7 puntos) (nombre del archivo: killtree.c) Modifique el primer programa para que el proceso
padre elimine todos los procesos de su rbol genealgico. Debe empezar por el proceso ms joven. Cada
vez que se elimine un proceso se debe de ejecutar pstree para mostrar que el proceso ms joven ya no se
encuentra.

Pando, 02 de setiembre de 2016.


Prof: Alejandro T. Bello Ruiz

Das könnte Ihnen auch gefallen