You are on page 1of 4

FCI-Adm-4.

01

PONTIFICIA UNIVERSIDAD CATLICA DEL PER FACULTAD DE CIENCIAS E INGENIERA SISTEMAS OPERATIVOS Examen 1 (Primer Semestre de 2009)
Duracin: 3 horas Nota: No se puede usar ningn material de consulta. Puntaje debido al cuestionario: Puntaje debido a tareas acadmicas: Puntaje total:

16 puntos 4 puntos 20 puntos

Pregunta 1 (2 puntos) (Particiones) Una computadora porttil recin comprada vino de la tienda con 2 particiones en el disco duro una de recuperacin y otra con el sistema operativo instalado. Estas particiones ocupan todo el disco. El usuario de esta computadora desea aadir 3 particiones ms con sus sistemas de archivo. La ubicacin de las particiones en este disco duro se define por las estructuras MBR y EBR. Presente grficamente los esquemas inicial y final de ubicacin de las particiones primarias, extendidas, los discos lgicos con las estructuras MBR y EBR. Considere que, generalmente, la particin extendida contiene 1 solo disco lgico. Pregunta 2 (2 puntos) (i-node filesystem) Un archivo con tamao exacto de 600 MiB (600 * 2^20 bytes) se coloca en un sistema de archivo con i-node que contiene 12 campos para los nmeros de bloques directos, 1 campo para cada uno de bloques indirectos, doblemente indirecto y triplemente indirecto. Todos los campos mencionados son de 4 bytes. El tamao del bloque es 4 KiB (2^12 bytes). Indique cuntos bits, en total, en el mapa de bits de bloques de este sistema de archivo sern usados por el archivo descrito tanto para los datos mismos como para los nmeros de bloques que describen la ubicacin de estos bloques de datos. Pregunta 3 (2 puntos) (MOS/3E, Chapter 2, Problem 15) In Fig. 2-15 the thread creations and messages printed by the threads are interleaved at random. Is there a way to force the order to be strictly thread 1 created, thread 1 prints message, thread 1 exits, thread 2 created, thread 2 prints message, thread 2 exits, and so on? If so, how? If not, why not?

Figure 2-15. An example program using threads.


INF231 Sistemas Operativos 2009-1: Examen 1

1 de 4

Pregunta 4 (3 puntos) (Procesos e hilos) Un esquema simplificado del cdigo en Lenguaje C que tendra un web-server con hilos, en el que las variables buf y page son estructuras globales apropiadas para albergar la solicitud de trabajo y la pgina Web solicitada, respectivamente y el cach de pginas est tambin en memoria global del proceso:
/*0 /*1 /*2 /*3 /*4 /*5 /*6 /*7 */ */ */ */ */ */ */ */ /* Dispatcher thread */ while(TRUE) { get_next_request(&buf); handoff_work(&buf); } /* Worker Thread*/ while(TRUE) { wait_for_work(&buf); look_for_page_in_cache(&buf,&page); if(page_not_in_cache(&page)) read_page_from_disk(&buf, &page); return_page(&page); }

Asuma que se tienen 3 hilos Worker disponibles para que el hilo Dispatcher utilice mediante handoff_work() y que llegan 2 solicitudes de trabajo casi simultneamente: una, la primera, NO se encuentra en el cach y la otra si. a) (2 puntos) Explique para este caso como son atendidos los pedidos por los hilos, indicando los estados (READY, BLOCKED, RUNNING) en los que se encuentran a medida que el cdigo es ejecutado, teniendo en cuenta que inicialmente todos se encuentran en BLOCKED en la lnea /* 2 */ del cdigo respectivo. b) (1 punto) Qu ocurrira en cuanto a los estados y la atencin de las solicitudes si tanto el cdigo de dispatcher como el worker fueran ejecutados por el mismo hilo? Pregunta 5 (3 puntos) (Llamadas al sistema: fork(), exec(), dup(), pipe()).Se tiene el siguiente programa en C
/*********************************************************** * algo.c * **********************************************************/ #include <stdio.h> #include <unistd.h> #include <sys/wait.h> #define READ_STD #define WRITE_STD 0 1

int main(int narg, char *argv[]) { int pfd1[2],pfd2[2]; int pid; if(fork()) wait((int *)0); else { pipe(pfd1); pipe(pfd2); if((pid = fork()) && fork()) { close(pfd1[0]); close(pfd1[1]); close(READ_STD); dup(pfd2[0]); close(pfd2[0]); close(pfd2[1]); execlp(argv[3],argv[3],NULL); } close(pfd2[0]); switch (pid) { case 0: close(WRITE_STD); dup(pfd1[1]); close(pfd1[0]); close(pfd1[1]); close(pfd2[1]); execlp(argv[1],argv[1],NULL); default: close(READ_STD); dup(pfd1[0]); close(WRITE_STD); dup(pfd2[1]); close(pfd1[0]); close(pfd1[1]); close(pfd2[1]); execlp(argv[2],argv[2],NULL); } } return 0;

INF231 Sistemas Operativos

2009-1: Examen 1

2 de 4

a) (0.5 punto) Indique en una sola lnea qu hace el programa algo.c?. Lneas adicionales, en la respuesta, no sern tomadas en cuenta para la calificacin. b) (0.5 punto) Una vez compilado el programa y dados los comandos sort, less y ps cmo debera ejecutarse el programa, sabiendo que tiene el mismo nombre del fuente (excepto la extensin)? c) (2 puntos) Considerando los comandos del shell sort, less y ps. Elabore un diagrama que indique cmo interactan los procesos en este programa. Si un proceso p1 realiza la llamada al sistema fork() grafquelo as: fork() p1 p1

Si un proceso p1 realiza la llamada execlp() a p2, grafquelo as: execlp() p1 Represente los pipes con lneas punteadas. Pregunta 6 (4 puntos) (InterProcess Communication) ...We need four conditions to hold to have a good solution: 1. No two process may be simultaneously inside their critical regions. 2. No assumptions may be made about speeds or the number of CPUs. 3. No process runnimg outside its critical region may block other process. 4. No process should have to wait fore ever to enter its critical region A. Tanenbaum - MOS 3era ed. a) (2 puntos) Para el siguiente cdigo muestre un ejemplo de una secuencia de ejecucin en la que no se cumple el primer principio. #define FALSE 0 #define TRUE 1 flag[0] flag[1] P0 . . . flag[0] = not(flag[1]); while flag[1] do nada; SC flag[0] = not(flag[0]); = FALSE; = TRUE P1 . . . flag[1] = not(flag[0]); while flag[0] do nada; SC flag[1] = not(flag[1]); p2

(1) (2) (3) (4)

b) (2 puntos) Modificando el cdigo tal como se muestra a continuacin Se cumplen los principios definidos arriba? Justifique su respuesta: #define FALSE 0 #define TRUE 1 flag[0] flag[1] P0 . . . flag[0] = not(flag[1]); while flag[1] do nada; SC flag[1] = flag[0] flag[0] = not(flag[0]); = FALSE; = TRUE P1 . . . flag[1] = not(flag[0]); while flag[0] do nada; SC flag[0] = flag[1]; flag[1] = not(flag[1]);

(1) (2) (3) (4) (5)

INF231 Sistemas Operativos

2009-1: Examen 1

3 de 4

Pregunta 7 (4 puntos) (Processes and Threads in Windows Vista) Las preguntas siguientes son solamente para completar los 4 puntos acumulados de los controles de lectura en clases. a. (0,5 punto) In Windows Vista, processes are program containers. What resources they contain? b. (0,5 punto) Unix was designed for 16 bit CPUs and processes as the scheduling execution unit, while Windows NT... c. (0.5 punto) Threads require STACK allocation, as well as fibers, but fibers are ligther because they are scheduled d. (0.5 punto) Between JOBS, PROCESSES, THREADS, y FIBERS on Windows, Which are the less used? e. (1 punto) Mention 2 process creation design differences between Unix and Windows, revealed through the large number of parameters. f. (0.5 punto) Mention and describe 1 interprocess communication mechanism in Windows. g. (0.5 punto) Mention and describe 1 interprocess synchronization mechanism in Windows.

El examen ha sido preparado por AB(5,6), VK(1,2,3) y FS(4,7).

Profesores del curso: A. Bello, V. Khlebnikov, F. Solari Pando, 13 de mayo de 2009

INF231 Sistemas Operativos

2009-1: Examen 1

4 de 4

You might also like