Aplicación de SISTEMAS operativos
Docente: MSc. Ing. Jose Richard Ayoroa Cardozo
ACTIVIDAD 1 (16/04/25)
Resuelva los siguientes ejercicios (en computadora)
EJERCICIO 1
El programa siguiente pretende lanzar a ejecución una calculadora, kcalc, y otra
aplicación, xload, utilizando dos llamadas al sistema execlp consecutivas.
Antes de compilar y ejecutar el programa, piensa qué va a ocurrir.
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char ∗argv[]) {
execlp ("kcalc", "kcalc", NULL);
printf ("¿Se imprimira este mensaje?\n");
execlp ("xload", "xload", NULL);
printf ("¿Y este otro?\n");
return 0;
}
Ahora, compílalo y ejecútalo y observa qué ocurre. ¿Has acertado? ¿Sabes por qué?
Modifícalo para que el usuario vea las dos aplicaciones al mismo tiempo. Haz además
que el proceso principal espere a la finalización de ambas aplicaciones e informe de la
finalización de cada una especificando si termino kcalc o xload.
EJERCICIO 2
Se desea informar del tiempo invertido en ejecutar las ordenes ls | wc -l. Para ello se
escribe el siguiente programa. Sin embargo, no informa de forma correcta. Modifícalo
para que lo haga sin cambiar el número de procesos que se están generando.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <sys/types.h>
#include <sys/wait.h>
int main (int argc, char ∗argv[]){ int tubo[2];
time t ini, fin;
Aplicación de SISTEMAS operativos
Docente: MSc. Ing. Jose Richard Ayoroa Cardozo
pipe(tubo);
if(fork()==0){ if(fork()==0){ dup2(tubo[1],STDOUT FILENO);
close(tubo[0]);
close(tubo[1]);
execlp("ls","ls",NULL);
}else{ dup2(tubo[0],STDIN FILENO);
close(tubo[0]);
close(tubo[1]);
execlp("wc","wc","-l",NULL);
}
}else{ printf("Tiempo invertido: %ld segundos\n", fin-ini);
}return 0;
}
EJERCICIO 3
Observa el siguiente fragmento de código que trata de realizar lo mismo que si un usuario
escribiera ls | sort en la línea de comandos de un sistema UNIX. Indica qué problemas se
producen, por qué y como resolverlos.
int tubo[2];
pipe(tubo);
if (fork()!=0) { dup2(tubo[1], STDIN FILENO);
execlp("sort", "sort", NULL);
close(tubo[0]);
close(tubo[1]);
} else { dup2(tubo[0], STDOUT FILENO);
close(tubo[1]);
close(tubo[0]);
execlp("ls", "ls", NULL);
}
EJERCICIO 4
Escribe un programa que ejecute la siguiente línea de ´ordenes igual que lo haría un
intérprete de comandos: paste fich1 fich2 | sort | nl > fich3. Debes considerar que fich1,
fich2 y fich3 serán parámetros dados a tu programa en la línea de comandos.
CONSIDERACIONES:
1º Resuelve los ejercicios.
Aplicación de SISTEMAS operativos
Docente: MSc. Ing. Jose Richard Ayoroa Cardozo
Realice un informe que contenga lo siguiente:
o Caratula e índice
o Ejercicios divididos por secciones y que cada sección contenga la respectiva
solución de cada ejercicio junto con la descripción de la solución (programa)
de cada ejercicio. Use comentarios para describir cada línea del código.
Desarrolle una interfaz para cada programa.
2° Realiza videotutoriales de las soluciones de los ejercicios:
En una de las esquinas del videotutorial se debe poder ver en todo momento a la
persona que está realizando la práctica. El tiempo de duración del videotutorial es
libre. Sube tu videotutorial a YOUTUBE
3° Sube a la plataforma Classroom el informe y el PROGRAMA. Añada en el
informe el enlace al videotutorial.
4º Presenta en físico la Actividad y defiende tu informe (presencial, en horarios de clase).
5° Para las defensas, deberán traer sus computadoras personales para explicar la secuencia
de pasos realizados y para responder las preguntas del docente.
RECOMENDACIONES:
La presentación de los trabajos es al INICIO DE LA CLASE. Trabajos que
sean presentados después, no serán considerados. (se recogerán todos los trabajos al
inicio y se irán llamando a todos uno por uno).
No se recibirán trabajos que no cumplan los requisitos mencionados; la vulneración
de alguno de los requisitos invalidara la presentación y defensa de los trabajos, sin
lugar a reclamo.
La presentación de trabajos es obligatoria para la habilitación de la siguiente
práctica.
Aplicación de SISTEMAS operativos
Docente: MSc. Ing. Jose Richard Ayoroa Cardozo
Fecha de presentación: LUNES 21 de Abril (APELLIDOS
DE LA A a la N); MIÉRCOLES 23 DE ABRIL
(APELLIDOS DE LA O a la Z)
No se aceptan practicas retrasadas. Las practicas se
recogen al inicio de la clase.
PARA TOMAR EN CUENTA: 3 retrasos en las
practicas se consideran el abandono de la
asignatura.