You are on page 1of 10

SISTEMAS OPERATIVOS II

Junio 2011

Aviso 1: Todas las respuestas deben estar debidamente razonadas. Material permitido: Calculadora NO Aviso 2: Escriba sus respuestas con una letra lo ms clara posible. programable Aviso 3: Evite los tachones. Tiempo: 2 horas Aviso 4: Notificacin de la salida de las calificaciones, solucin del examen y fecha de N2 revisin en la pgina web de la asignatura: http://www.uned.es/533032/

HOJA 1 DE 3 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En un intrprete de comandos de UNIX la pulsacin de las teclas [control + w] permite borrar todo el contenido de la lnea de rdenes. II) (1 p) El superbloque de un sistema de ficheros s5fs de UNIX contiene metadatos del propio sistema de ficheros y una copia de la lista de nodos-i. 2. (2 p) Explique razonadamente la relacin existente entre regiones y pginas en un sistema UNIX SVR3. 3. (2 p) Dibuje un esquema, adecuadamente rotulado, que esquematice las principales acciones que realiza el algoritmo exit() del ncleo de UNIX SVR3. 4. En un sistema UNIX la mscara de modo del fichero ordinario prueba es 5713 expresada en octal. Se pide: a) (0.5 p) Explique razonadamente el significado de todos los bits de esta mscara de modo. b) (0.5 p) Escriba la mscara de modo simblica asociada a este fichero. c) (0.5 p) Qu orden se debe teclear desde la lnea de comandos ($) para que la mscara simblica del fichero pasase a ser rwSr-sr--? 5. En el directorio de trabajo actual residen los ficheros ejecutables j11a y j11b cuyo cdigo se muestra en el Cuadro 1 y en el Cuadro 2, respectivamente. Adems en este directorio tambin reside el fichero asd que puede ser ledo por cualquier usuario.Conteste razonadamente a los siguientes apartados: a) (1 p) Explique el significado de las cuatro sentencias enumeradas ([ ]) del cdigo de j11a. b) (1.5 p) Explique el funcionamiento de los programas j11a y j11b si son invocados desde el intrprete de comandos ($) usando la siguiente secuencia de rdenes: 1) $ j11a & 2) $ j11b

SISTEMAS OPERATIVOS II

Junio 2011

Aviso 1: Todas las respuestas deben estar debidamente razonadas. Material permitido: Calculadora NO Aviso 2: Escriba sus respuestas con una letra lo ms clara posible. programable Aviso 3: Evite los tachones. Tiempo: 2 horas Aviso 4: Notificacin de la salida de las calificaciones, solucin del examen y fecha de N2 revisin en la pgina web de la asignatura: http://www.uned.es/533032/

HOJA 2 DE 3 #include #include #define #define <sys/ipc.h> <sys/msg.h> KESS 'K' MESS 'M'

main() { key_t LL,LM; int id[2]; struct { long t; char c[50]; } X, Y; int L=sizeof(X) - sizeof(X.t); [1] [2] LL=ftok("asd",KESS); LM=ftok("asd",MESS); id[0]=msgget(LL, IPC_CREAT| 0666); id[1]=msgget(LM, IPC_CREAT| 0666); strcpy(X.c,"\0"); strcpy(Y.c,"\0"); while (1) { msgrcv(id[0],&X,L,0,0); printf("\nMensaje_j11a\n"); msgsnd(id[1],&Y,L, 0); }

[3] [4] }

Cuadro 1: Cdigo C del programa j11a

SISTEMAS OPERATIVOS II

Junio 2011

Aviso 1: Todas las respuestas deben estar debidamente razonadas. Material permitido: Calculadora NO Aviso 2: Escriba sus respuestas con una letra lo ms clara posible. programable Aviso 3: Evite los tachones. Tiempo: 2 horas Aviso 4: Notificacin de la salida de las calificaciones, solucin del examen y fecha de N2 revisin en la pgina web de la asignatura: http://www.uned.es/533032/

HOJA 3 DE 3 #include #include #define #define <sys/ipc.h> <sys/msg.h> KESS 'K' MESS 'M'

main() { key_t LL,LM; int id[2]; struct { long t; char c[50]; } X, Y; int L=sizeof(X) - sizeof(X.t); LL=ftok("asd",KESS); LM=ftok("asd",MESS); id[0]=msgget(LL, IPC_CREAT| 0666); id[1]=msgget(LM, IPC_CREAT| 0666); strcpy(X.c,"\0"); strcpy(Y.c,"\0"); while (1) { printf("\nMensaje_j11b\n"); msgsnd(id[0],&Y,L,0); msgrcv(id[1],&X,L,0,0); } }
Cuadro 2: Cdigo C del programa j11b

SISTEMAS OPERATIVOS II

Solucin examen junio 2011

SOLUCION EXAMEN JUNIO 2011


1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas:

I) (1 p) En un intrprete de comandos de UNIX la pulsacin de las teclas


[control + w] permite borrar todo el contenido de la lnea de rdenes.

II) (1 p) El superbloque de un sistema de ficheros s5fs de UNIX contiene


metadatos del propio sistema de ficheros y una copia de la lista de nodos-i.
Solucin: I) La pulsacin de la teclas [control + w] borra una palabra de la lnea de rdenes. En conclusin la afirmacin es FALSA. II) Efectivamente el superbloque de un sistema de ficheros s5fs contiene metadatos del sistema de ficheros, sin embargo no contiene una copia de la lista de nodos-i, sino una lista parcial de nodos-i libres. En conclusin la afirmacin es FALSA.

2. (2 p) Explique razonadamente la relacin existente entre regiones y pginas en un sistema UNIX SVR3.
Solucin: El concepto de regin es una abstraccin de alto nivel independiente de las polticas de administracin de memoria implementadas por el sistema operativo. Una regin es un subconjunto o rea de direcciones contiguas de memoria virtual. En cualquier programa se pueden distinguir al menos tres regiones: la regin de cdigo o texto, la regin de datos y la regin de pila. Cada proceso tiene asignada una tabla de regiones por proceso, cada una de sus entradas contiene entre otras informaciones la direccin virtual de comienzo de una regin DIRV0 asociada al proceso y un puntero que seala a una entrada de la tabla de regiones. Por otra parte, en una arquitectura que trabaje con pginas, cada regin es divida en mltiples pginas de tamao SP. De esta forma cada entrada de la tabla de regiones contiene entre otras informaciones, un puntero a una tabla de pginas. Es decir, hay una tabla de pginas por cada entrada de la tabla de regiones. El ncleo almacena las tablas de pginas en memoria principal y accede a ellas como a cualquier otra de sus estructuras de datos.

3. (2 p) Dibuje un esquema, adecuadamente rotulado, que esquematice las principales acciones que realiza el algoritmo exit() del ncleo de UNIX SVR3.
Solucin:

SISTEMAS OPERATIVOS II

Solucin examen junio 2011

SISTEMAS OPERATIVOS II

Solucin examen junio 2011

4. En un sistema UNIX la mscara de modo del fichero ordinario prueba es 5713


expresada en octal. Se pide:

a) (0.5 p) Explique razonadamente el significado de todos los bits de esta


mscara de modo.

b) (0.5 p) Escriba la mscara de modo simblica asociada a este fichero. c) (0.5 p) Qu orden se debe teclear desde la lnea de comandos ($) para que la
mscara simblica del fichero pasase a ser rwSr-sr--?
Solucin: a) La mscara de modo 5713 expresada en binario es igual a: 101 111 001 011. El primer grupo de bits (el situado ms a la izquierda) 101 indica que el bit S_ISUID est activado, el bit SISGID est desactivado y el bit S_ISVTX est activado, respectivamente. El segundo grupo de bits (111) indica los permisos para el propietario del archivo. En este caso tiene permisos de lectura, escritura y ejecucin. El tercer grupo de bits (001) indica los permisos para los usuarios pertenecientes al grupo propietario del archivo. En este caso tiene permiso exclusivamente de ejecucin. Finalmente el cuarto grupo de bits (011) indica los permisos para el resto de usuarios. En este caso tiene permisos de escritura y ejecucin. b) La mscara de modo simblica asociada a este fichero es - rws --x -wt c) chmod 6654 prueba

SISTEMAS OPERATIVOS II

Solucin examen junio 2011

5. En el directorio de trabajo actual residen los ficheros ejecutables j11a y j11b cuyo
cdigo se muestra en la Figura 1 y en la Figura 2, respectivamente. Adems en este directorio tambin reside el fichero asd que puede ser ledo por cualquier usuario.Conteste razonadamente a los siguientes apartados:

a) (1 p) Explique el significado de las cuatro sentencias enumeradas ([ ]) del cdigo


de j11a.

b) (1.5 p) Explique el funcionamiento de los programas j11a y j11b si son


invocados desde el intrprete de comandos ($) usando la siguiente secuencia de rdenes: 1) $ j11a & 2) $ j11b

#include #include #define #define

<sys/ipc.h> <sys/msg.h> KESS 'K' MESS 'M'

main() { key_t LL,LM; int id[2]; struct { long t; char c[50]; } X, Y; int L=sizeof(X) - sizeof(X.t); [1] [2] LL=ftok("asd",KESS); LM=ftok("asd",MESS); id[0]=msgget(LL, IPC_CREAT| 0666); id[1]=msgget(LM, IPC_CREAT| 0666); strcpy(X.c,"\0"); strcpy(Y.c,"\0"); while (1) { msgrcv(id[0],&X,L,0,0); printf("\nMensaje_j11a\n"); msgsnd(id[1],&Y,L, 0); }

[3] [4] }

Figura 1: Cdigo C del programa j11a

SISTEMAS OPERATIVOS II

Solucin examen junio 2011

#include #include #define #define

<sys/ipc.h> <sys/msg.h> KESS 'K' MESS 'M'

main() { key_t LL,LM; int id[2]; struct { long t; char c[50]; } X, Y; int L=sizeof(X) - sizeof(X.t); LL=ftok("asd",KESS); LM=ftok("asd",MESS); id[0]=msgget(LL, IPC_CREAT| 0666); id[1]=msgget(LM, IPC_CREAT| 0666); strcpy(X.c,"\0"); strcpy(Y.c,"\0"); while (1) { printf("\nMensaje_j11b\n"); msgsnd(id[0],&Y,L,0); msgrcv(id[1],&X,L,0,0); } }

Figura 2: Cdigo C del programa j11b


Solucin: a) El significado de cada una de las sentencias marcadas con [] de este cdigo es el siguiente: [1] Llamada al sistema ftok para crear una llave numrica de 32 bits que permite controlar el acceso a una instancia de un mecanismo IPC. Esta llamada tiene dos parmetros de entrada, asd que es la ruta de acceso de un fichero que ya debe estar creado y KESS que una constante asociada al carcterx. Si la llamada se ejecuta con xito en LL, que es una variable del tipo predefinido key_t, se almacenar la llave creada. En caso de error en LL se almacenar el valor (key_t)-1. [2] Llamada al sistema msgget para obtener acceso o crear una cola de mensajes. Si la llamada se ejecuta con xito entonces en id[0] se almacenar el identificador entero de la cola de mensajes asociada a la llave LL. Si no existe una cola de mensajes asociada a dicha llave se crea (IPC_CREAT) una nueva con permisos de lectura y escritura para todos

SISTEMAS OPERATIVOS II

Solucin examen junio 2011

los usuarios (0666). Si la llamada falla en id[0] se almacena el valor -1. [3] Llamada al sistema msgrcv para extraer un mensaje de la cola con identificador id[0] y almacenarlo en la estructura X. El texto del mensaje tiene una longitud de L bytes. Se extraer el primer mensaje que haya en la cola independientemente de su tipo. [4] Llamada al sistema msgsnd para enviar el mensaje almacenado en la estructura Y a la cola con identificador id[1]. El texto del mensaje tiene una longitud de L bytes. b1) Al escribir la orden $ j11a & comienza a ejecutarse el programa j11a en segundo plano. Supngase que a la ejecucin de dicho programa se le asocia el proceso A. En primer lugar se crean dos llaves, que se almacenan en LL y LM, respectivamente. En segundo lugar se crean dos colas de mensajes con identificadores id[0] e id[1] cuyas claves de acceso son LL y LM, respectivamente. En tercer lugar se copia el carcter \0 en la variable c de las estructuras X e Y. Finalmente entra en un bucle infinito. En cada ejecucin del bucle realiza las siguientes acciones: solicita la recepcin de un mensaje de la cola id[0], hasta que no lo reciba el proceso A permanecer bloqueado a la espera de recibirlo. Cuando lo reciba imprimir en pantalla el texto Mensaje_j11a. A continuacin enviar el mensaje ubicado en la estructura Y a la cola id[1]. b2) Al escribir la orden $ j11b comienza a ejecutarse el programa j11b. Supngase que a la ejecucin de dicho programa se le asocia el proceso B. En primer lugar se crean dos llaves, que se almacenan en LL y LM, respectivamente. En segundo lugar obtiene acceso a las colas de mensajes con identificadores id[0] e id[1] cuyas claves de acceso son LL y LM, respectivamente. En tercer lugar se copia el carcter \0 en la variable c de las estructuras X e Y. Finalmente entra en un bucle infinito. En cada ejecucin del bucle realiza las siguientes acciones: imprime en pantalla el texto Mensaje_j11b, enva el mensaje ubicado en la estructura Y a la cola id[0], y solicita la recepcin de un mensaje de la cola id[1], hasta que no lo reciba el proceso B permanecer bloqueado a la espera de recibirlo. En resumen este problema es un ejemplo de sincronizacin de procesos mediante paso de mensajes. El proceso A se bloquea a la espera de recibir un mensaje de la cola id[0], como inicialmente la cola est vaca el proceso A se bloquea. Cuando se ejecuta el proceso B imprime en pantalla el texto Mensaje_j11b y enva un mensaje a la cola id[0], lo que permite desbloquear al proceso A, que imprime en pantalla el texto Mensaje_j11a. A su vez el proceso B volver a escribir el texto Mensaje_j11b solo cuando el proceso A escriba un mensaje en la cola id[1]. Luego en la pantalla se ver la siguiente secuencia infinita:

SISTEMAS OPERATIVOS II Mensaje_j11b Mensaje_j11a Mensaje_j11b Mensaje_j11a Mensaje_j11b : :

Solucin examen junio 2011

You might also like