Parcial I de Sistema de Operación – Semestre 201415

2
Universidad Católica Andrés Bello Facultad de Ingeniería Escuela de Ingeniería Informática Sistemas de Operación Prof. Viviana Trujillo Parcial I 1. (2pts. c/u – total: 10pts) Responda con brevedad y precisión a las siguientes preguntas : (a) Mencione 4 variables internas de Shell y explique para qué sirven. (b) ¿Qué es un makefile y cómo se invoca? (c) ¿Qué diferencia hay entre las llamadas al sistema y las funciones de librerías? (d) ¿Qué es un sistema operativo? 2. (3pts.) Estudia el siguiente código y escribe la jerarquía de procesos resultante. Después, compila y ejecuta el código para comprobarlo (deberás añadir llamadas al sistema getpid, getppid y wait para conseguirlo). #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #define L1 2 #define L2 3 int main (int argc, char *argv[]) { int cont1, cont2; pid t pid; 1

Transcript of Parcial I de Sistema de Operación – Semestre 201415

Page 1: Parcial I de Sistema de Operación – Semestre 201415

Universidad Católica Andrés BelloFacultad de Ingeniería

Escuela de Ingeniería InformáticaSistemas de OperaciónProf. Viviana Trujillo

Parcial I

1. (2pts. c/u – total: 10pts) Responda con brevedad y precisión a las siguientes preguntas:

(a) Mencione 4 variables internas de Shell y explique para qué sirven.

(b) ¿Qué es un makefile y cómo se invoca?

(c) ¿Qué diferencia hay entre las llamadas al sistema y las funciones de librerías?

(d) ¿Qué es un sistema operativo?

2. (3pts.) Estudia el siguiente código y escribe la jerarquía de procesos resultante. Después,compila y ejecuta el código para comprobarlo (deberás añadir llamadas al sistema getpid,getppid y wait para conseguirlo).

#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>#include <stdio.h>#include <stdlib.h>

#define L1 2#define L2 3

int main (int argc, char *argv[]) {int cont1, cont2;pid t pid;

1

Page 2: Parcial I de Sistema de Operación – Semestre 201415

for (cont2= 0; cont2< L2; cont2++) {for (cont1= 0; cont1< L1; cont1++) {

pid= fork();if (pid== 0)

break;}if (pid!= 0)

break;}

return 0;}

3. (1pto. c/u – total: 2pts)Para cada uno de los siguientes comandos deberá proveer lalista de acciones tomadas por el shell para ejecutar las operaciones de cada comando.Por ejemplo: [2 ptos.]

$ date > out

P: id = fork()H: close(1)H: fd = open(outfile)H: execl(date)P: waitpid(id)

(a) ls > sort

(b) ps –ax | grep vtrujillo

4. (3pts.) Escribir un script denominado factorial que reciba como parámetro un número ycalcule su factorial. Este script puede ser programado recursivamente o iterativamente.

./factorial 5120

5. (2pts.) Dibuje el gráfico de invocación de gcc paso a paso.

2