1449503441_75__SO_parcial_2015_I

4
7/25/2019 1449503441_75__SO_parcial_2015_I http://slidepdf.com/reader/full/144950344175soparcial2015i 1/4 Instrucciones:  (1) Coloque su nombre y n´ umero de matr´ ıcula en el espacio indicado, (2) Lea cada pregunta detenidamente, (3) Conteste claramente cada pregunta. NOTA: Se permite el uso de calculadoras pero no celulares. Nombre y matr´ ıcula: Question: 1 2 3 4 Total Points: 20 20 10 10 60 Score: 1. Respuesta m´ ultiple (a) (3 pts) En un S.O., cada proceso tiene su propio .  (puede seleccionar varias) A. Espacio de direcciones B. Variables globales C. Descriptores de archivos abiertos D. Planificador de CPU E. Microkernel (b) (2 pts) ¿ Cu´al de las siguientes trancisiones entre estados de un proceso no es v´alida? A. De nuevo a listo B. De En ejecuci´on a listo C. De En ejecuci´on a En espera D. De En espera a En ejecuci´ on (c) (2 pts) La direcci´ on de la siguiente instrucci´on a ser ejecutada por el proceso actual est´a dada por el/los . A. Registros de CPU B. Contador de programa C. Stack del programa D. Pipe (d) (3 pts) Si todos los procesos est´ an limitados por E/S (I/O bound), entonces la cola de listos casi siempre estar´ a , y el planificador de CPU tendr´ a que hacer. A. llena, poco B. llena, mucho C. vac´ ıa, poco D. vac´ ıa, mucho (e) (2 pts) ¿ Cu´al de los siguientes NO se comparte entre hilos de un mismo programa? A. Contador de programa B. Stack C. Tanto A como B D. Ninguna de las anteriores (f) (2 pts) Considere los siguientes tres procesos con sus respectivos tiempos de inicio (t i ) y de final- izaci´ on (t ): A (t i  = 0 y  t  = 2), B (t i  = 1 y  t  = 4) y C (t i  = 3 y  t  = 5). ¿Cu´ al o cu´ ales de los siguientes pares de procesos se ejecutaron de manera concurrente? A. AB B. AC C. BC D. Ninguno se ejecuta concurrentemente (g) (3 pts) ¿Cu´ al ser´ ıa una salida v´alida del siguiente programa? int main() { int fd1, fd2; fd1 = open("foo.txt", O_RDONLY, 0644); close(fd1); fd2 = open("baz.txt", O_RDONLY, 0644); printf("fd2 = %d\n", fd2); exit(0); } A. fd2 = 3 B. fd2 = foo.txt C. fd2 = baz.txt D. fd2 = 644 (h) (3 pts) ¿Cu´ al de las siguientes NO es una posible salida en pantalla del programa mostrado? int main() { int pid; if ((pid = fork()) == 0) printf("a"); else { printf("b"); waitpid(pid, NULL, 0); } printf("c"); exit(0); } A. acbc B. abcc C. bacc D. bcac

Transcript of 1449503441_75__SO_parcial_2015_I

Page 1: 1449503441_75__SO_parcial_2015_I

7/25/2019 1449503441_75__SO_parcial_2015_I

http://slidepdf.com/reader/full/144950344175soparcial2015i 1/4

Instrucciones:  (1) Coloque su nombre y numero de matrıcula en el espacio indicado, (2)Lea cada pregunta detenidamente, (3) Conteste claramente cada pregunta. NOTA: Se

permite el uso de calculadoras pero no celulares.

Nombre y matrıcula:

Question: 1 2 3 4 Total

Points: 20 20 10 10 60Score:

1. Respuesta multiple

(a) (3 pts) En un S.O., cada proceso tiene su propio .  (puede seleccionar varias)

A. Espacio de direcciones

B. Variables globales

C. Descriptores de archivos abiertos

D. Planificador de CPU

E. Microkernel

(b) (2 pts) ¿ Cual de las siguientes trancisiones entre estados de un proceso no es valida?

A. De nuevo a listoB. De En ejecucion a listo

C. De En ejecucion a En espera

D. De En espera a En ejecucion

(c) (2 pts) La direccion de la siguiente instruccion a ser ejecutada por el proceso actual est a dada porel/los .

A. Registros de CPU B. Contador de programa C. Stack del programa D. Pipe

(d) (3 pts) Si todos los procesos estan limitados por E/S (I/O bound), entonces la cola de listos casisiempre estara , y el planificador de CPU tendra que hacer.

A. llena, poco B. llena, mucho C. vacıa, poco D. vacıa, mucho

(e) (2 pts) ¿ Cual de los siguientes NO se comparte entre hilos de un mismo programa?

A. Contador de programa B. Stack C. Tanto A como B D. Ninguna de las anteriores

(f) (2 pts) Considere los siguientes tres procesos con sus respectivos tiempos de inicio (ti) y de final-izacion (tf ): A (ti  = 0 y   tf  = 2), B (ti  = 1 y   tf  = 4) y C (ti  = 3 y   tf  = 5). ¿Cual o cuales de lossiguientes pares de procesos se ejecutaron de manera concurrente?

A. AB B. AC C. BC D. Ninguno se ejecuta concurrentemente

(g) (3 pts) ¿Cual serıa una salida valida del siguiente programa?

int main() {

int fd1, fd2;

fd1 = open("foo.txt", O_RDONLY, 0644); close(fd1);

fd2 = open("baz.txt", O_RDONLY, 0644);

printf("fd2 = %d\n", fd2); exit(0);

}

A. fd2 = 3 B. fd2 = foo.txt C. fd2 = baz.txt D. fd2 = 644

(h) (3 pts) ¿Cual de las siguientes NO es una posible salida en pantalla del programa mostrado?

int main() {

int pid;

if ((pid = fork()) == 0) printf("a");

else { printf("b"); waitpid(pid, NULL, 0); }

printf("c"); exit(0);

}

A. acbc B. abcc C. bacc D. bcac

Page 2: 1449503441_75__SO_parcial_2015_I

7/25/2019 1449503441_75__SO_parcial_2015_I

http://slidepdf.com/reader/full/144950344175soparcial2015i 2/4

2. (20 pts) Planificacion de CPU

Considere la siguiente tabla de procesos con sus tiempos de llegada y de ejecuci on (duracion del proximoburst de CPU).

ID del proceso Tiempo de llegada Duracion del burstP 1   0 5P 2   1 5P 3   5 3P 4   6 2

Dibuje diagramas que muestren la planificacion de los procesos utilizando los algoritmos FCFS, SJF,SRTF y Round Robin (quantum = 2). Para cada uno, calcule los tiempos de espera promedio (T ep) yllene la siguiente tabla de respuestas.

FCFS SJF SRTF RR (q = 2)ID del proceso Inicio Fin   T ep   Inicio Fin   T ep   Inicio Fin   T ep   Inicio Fin   T ep

P 1

P 2

P 3

P 4

Page 3: 1449503441_75__SO_parcial_2015_I

7/25/2019 1449503441_75__SO_parcial_2015_I

http://slidepdf.com/reader/full/144950344175soparcial2015i 3/4

3. Sincronizacion

Considere las siguientes tres funciones que realizan la misma operacion. Suponga que la funcion calling es llamada por tres (o mas) hilos concurrentes. Para cada version del programa (A, B o C), indique si essusceptible a condiciones de carrera o no. Si la respueasta es negativa, justifique su respuesta. En casode ser positiva, anada codigo (o pseudo-codigo) para eliminar el problema.

int calc(int val) {

int dif = 45;return val + 3 * dif;

}

int calling() {

int val = 20;

return calc(val);

}

Figure 1: Programa A

int calc(int *val_ptr) {

int dif = 45;return *val1_ptr + 3 * dif;

}

int calling() {

int val = 20;

return calc(&val);

}

Figure 2: Programa B

int val = 20;

int calc(int *val_ptr) {

int dif = 45;return *val1_ptr + 3 * dif;

}

int calling() {

return calc(&val);

}

Figure 3: Programa C

(a) (1 pt) ¿Cual o cuales de las implementaciones mostradas son susceptibles a condiciones de carrera?A. Programa A B. Programa B C. Programa C

(b) (3 pts) Para el caso del   Programa A, si es susceptible a condiciones de carrera, coloque codigopara corregirlo. Si no lo es, justifique su respuesta.

(c) (3 pts) Para el caso del   Programa B, si es susceptible a condiciones de carrera, coloque codigopara corregirlo. Si no lo es, justifique su respuesta.

(d) (3 pts) Para el caso del   Programa C, si es susceptible a condiciones de carrera, coloque codigopara corregirlo. Si no lo es, justifique su respuesta.

Page 4: 1449503441_75__SO_parcial_2015_I

7/25/2019 1449503441_75__SO_parcial_2015_I

http://slidepdf.com/reader/full/144950344175soparcial2015i 4/4

4. Interbloqueo

(a) (4 pts) Liste las 4 condiciones necesarias para tener un interbloqueo.

(b) (6 pts) Considere un proceso A que solicita (lock o wait) los mutex W, X y Y, mientras el procesoB solicita los mutex X y Z. Ambos procesos liberan (unlock o signal) los mutex una vez concluidasu respectiva seccion crıtica. ¿Puede ocurrir un interbloqueo? Justifique su respuesta usando grafosde asignacion de recursos y/o indicando si cada una de las condiciones de interbloqueo est a presenteo no.