Examen Sistemas Operativos

8
Examen de Sistemas Operativos, 12 de febrero de 2007. Cuarto curso de Ingenier´ ıa de Telecomunicaci´ on, URJC. Problema 1 (3 puntos) Un famoso firma aut´ ografos en una tienda. El famoso s´ olo puede firmar un aut´ ografo a la vez. La sala donde se firma tiene un aforo limitado de 20 plazas. El famoso dice que olo saldr´ a a firmar aut´ ografos si en la sala hay m´ as de 5 personas. Si no hay al menos 5 personas en la sala, dormir´ a hasta que las haya (en el momento que haya 4 personas o menos se pondr´ a a dormir). Las personas que quieran firmar y no puedan entrar a la sala por rebasar el aforo permitido se ir´ an sin poder recibir el aut´ ografo, las que reciban el aut´ ografo abandonar´ an la sala. El famoso y los fans se representan como procesos ligeros que pueden tener variables compartidas. Se pide programar famoso y fans utilizando sem´ aforos de modo que modelen bien este escenario y que no haya problemas de concurrencia. Soluci´ on 1 Variables compartidas y semaforos: int fansensala=0; semaforo mutex=1; /* para garantizar exclusion mutua en acceso a fansensala */ semaforo esperoFans=0; /* para que los fans esperen hasta que les llega su turno */ semaforo esperoAutografo=20; /* para que el famoso espere al numero minimo de fans */ FAMOSO----------------------- loop wait(mutex); if (fansensala<5) signal(mutex); wait(esperoFans); else firmoAutografo; fansensala=fansensala-1; signal(esperoAutografo); /* libero al fan al que acabo de firmar el autogra signal(mutex); endloop FAN------------------------- /* observese que no hay loop, este es el pseudocodigo que ejecutara cada fan */ wait(mutex); 1

description

Examen Asginatura Sistemas Operativos

Transcript of Examen Sistemas Operativos

Page 1: Examen Sistemas Operativos

Examen de Sistemas Operativos, 12 de febrero de 2007.Cuarto curso de Ingenierıa de Telecomunicacion, URJC.

Problema 1 (3 puntos)

Un famoso firma autografos en una tienda. El famoso solo puede firmar un autografoa la vez. La sala donde se firma tiene un aforo limitado de 20 plazas. El famoso dice quesolo saldra a firmar autografos si en la sala hay mas de 5 personas. Si no hay al menos5 personas en la sala, dormira hasta que las haya (en el momento que haya 4 personaso menos se pondra a dormir). Las personas que quieran firmar y no puedan entrar a lasala por rebasar el aforo permitido se iran sin poder recibir el autografo, las que recibanel autografo abandonaran la sala.

El famoso y los fans se representan como procesos ligeros que pueden tener variablescompartidas. Se pide programar famoso y fans utilizando semaforos de modo que modelenbien este escenario y que no haya problemas de concurrencia.

Solucion 1

Variables compartidas y semaforos:

int fansensala=0;

semaforo mutex=1; /* para garantizar exclusion mutua en acceso a fansensala */

semaforo esperoFans=0; /* para que los fans esperen hasta que les llega su turno */

semaforo esperoAutografo=20; /* para que el famoso espere al numero minimo de fans */

FAMOSO-----------------------

loop

wait(mutex);

if (fansensala<5)

signal(mutex);

wait(esperoFans);

else

firmoAutografo;

fansensala=fansensala-1;

signal(esperoAutografo); /* libero al fan al que acabo de firmar el autografo*/

signal(mutex);

endloop

FAN-------------------------

/* observese que no hay loop, este es el pseudocodigo que ejecutara cada fan */

wait(mutex);

1

Page 2: Examen Sistemas Operativos

if (fansensala>=20)

signal(mutex);

me-voy-de-la-tienda;

else

fansensala=fansensala+1;

if (fansensala==5) signal(esperoAutografo); /* despierta al famoso */

signal(mutex);

wait(esperoAutografo); /* me pongo a la cola de los autografos */

Problema 2 (2 puntos)

Cierto sistema operativo posee un algoritmo de planificacion de CPU basado en colasmultinivel realimentadas (3 colas). Todos los trabajos cuando llegan al sistema son colo-cados en la cola-1 (la mas prioritaria), la cual se planifica de acuerdo a un algoritmoRound-Robin con cuanto de tiempo igual a 2 ms. En esta cola, un trabajo permane-cera si despues de ejecutar su primera rodaja de CPU, su siguiente rafaga es inferior a2ms. En otro caso pasara a la cola-2 o la cola-3.

Pasara a la cola-2 si la siguiente rafaga esta entre 2 y 6ms, donde permanecera hastaque termine su ejecucion y se planifica segun un Round Robin con cuanto igual a 3ms.Pasara a la cola-3 (la menos prioritaria) si la siguiente rafaga es de mas de 6 ms, dondepermanecera hasta que termine su ejecucion y se planifica segun un FIFO.

La carga de trabajo es la siguiente. El proceso P1 empieza en el instante 0, ejecu-tara instrucciones durante 4ms, E/S durante 2ms, CPU durante 4ms, E/S durante 3ms yfinalmente 1ms de CPU. El proceso P2 empieza en el instante 5, ejecuta 4ms de CPU, E/Sdurante 4ms y 2ms de CPU. El proceso P3 empieza en el instante 1 y ejecuta instruccionesdurante 10ms.

a) Calcula la evolucion temporal y estado de los procesos.

b) ¿Cual es el tiempo medio de espera?

Solucion 2

La evolucion temporal se muestra en el siguiente cronograma, junto con la cola en laque se encuentran los procesos en cada instante. El numero en la fila superior indica elinstante, en milisegundos, en el que comienza ese intervalo.

ms 0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 20 1 2 3 4 5P1 e e r r e r r e b b e e e e b b b e

1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2P2 e e r e e b b b b e e

1 1 2 2 2 2 2 2 2 2 2P3 r e e r r r r r r r r r r r r e r e e e e e e e

1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

2

Page 3: Examen Sistemas Operativos

El Proceso1 ha tenido que esperar 4 milisegundos, 1ms el Proceso2 y 14ms el Proceso3.La media son (4 + 1 + 14)/3 = 6,3 milisegundos.

Problema 3 (3 puntos)

Una maquina utiliza un sistema de gestion de memoria basado en paginacion bajodemanda donde el tamano de pagina es de 4KB y el procesador genera direcciones logicasde 32bits. La memoria fısica direccionable en esta maquina es de 2GB. La MMU manejatablas de paginas de dos niveles, con 512 entradas en la tabla de primer nivel. El algoritmode sustitucion de paginas es el de la segunda oportunidad, con asignacion local. Responderjustificadamente las siguientes preguntas:

a) Nos disponemos a cargar un ejecutable cuyo codigo ocupa 399KB, los datos 801KB yla pila 38KB. ¿Que tamano en bytes tendra como maximo la tabla de paginas dedicho proceso? ¿Y si la MMU usara tablas mononivel de paginas?

b) Indicar la evolucion de la tabla de paginas para un proceso al que el sistema operativoha asignado 3 marcos y cuya secuencia de acceso a memoria es la siguiente: 0(instruccion), 16MB+1 (lectura dato), 1 (instruccion), 16MB+4KB (escritura dato),2 (instruccion), 4KB+2 (instruccion), 16MB+1 (lectura dato), 4kB+3 (instruccion),3 (instruccion). Indica los fallos de pagina y los accesos a disco necesarios. Senalatambien en las tablas los bits de valido/invalido, modificacion y referencia.

Solucion 3

a) Un poco de aritmetica de tamanos y direcciones para situarnos: las direcciones logicasocupan 32 bits, de los cuales 12 se dedican al desplazamiento dentro de las paginas(puesto que estas son de 4KB). De los 20 bits restantes 9 son para indexar en latabla de primer nivel (puesto que tiene 512 entradas) y los 11 restantes son paraindexar en la tabla de segundo nivel que toque.

La tabla de primer nivel tiene 512 entradas. Cada entrada tiene la direccion fısicade la tabla de segundo nivel correspondiente y algun bit de gestion. Por ejemplo,imaginemos que solo necesita el bit de presente-ausente, de modo que ocuparıa 31+ 1 bits, es decir, 4Bytes. En este caso, la tabla de primer nivel ocuparıa 512 * 4B= 2KB.

Las tablas de segundo nivel tienen 2048 entradas cada una, puesto que se usan 11bits para indexar dentro de ellas. Cada entrada de las tablas de segundo nivel ocupa,pongamos, 5 bytes, ya que debe guardar la direccion fısica (=31 bits, puesto quela memoria fısica son 2GB) y unos cuantos bits asociados a la pagina (proteccion,modificacion, presente-ausente...). Por tanto, cada tabla de segundo nivel ocupa2048 * 5B = 10KB.

Siendo las paginas de 4KB, el ejecutable necesitara: 100 paginas para el codigo, 201paginas para los datos y 10 paginas para la pila. Es decir 311 paginas. Si da la malasuerte de que cada una de esas paginas cae en una tabla de segundo nivel diferente,

3

Page 4: Examen Sistemas Operativos

entonces ese ejecutable necesitara 311 tablas de segundo nivel y 1 tabla de primernivel. En bytes: 311*10KB + 1 * 2KB.

Lo anterior ocurre solo en el caso peor, cuando todas las paginas estan muy dispersaspor el espacio logico de direcciones del proceso. Lo habitual es que todas las decodigo esten juntas, al igual de las de datos, y las de la pila. En ese caso todas laspaginas de codigo pueden estar apuntadas desde la misma tabla de segundo nivel (senecesitan 100 y las tablas de segundo nivel tienen 2048 entradas). De esta maneraes habitual que entonces se necesite una tabla de segundo nivel para las paginas decodigo, otra para las de datos y otra para la pila. En bytes: 3*10KB + 1 * 2KB =32 KB.

En el caso de manejar una tabla de un unico nivel, habrıa 220 entradas, cada unade ellas con 5Bytes (31bits para almacenar la direccion fısica del marco, y algun bitmas para la gestion). La tabla ocuparıa 5 MB.

b) Instante inicial Al ser una polıtica bajo demanda, inicialmente la tabla de primernivel esta vacıa, no se ha cargado ninguna pagina aun, ni ninguna tabla desegundo nivel (figura 1). Todos los bits de validez estan a 0.

0123

...511

#tablas 2do nivel VX 0X 0X 0X 0...X 0

Figura 1: Tablas en el instante inicial

Instruccion en 0 Al acceder a la instruccion en la direccion logica 0, cae en laprimera pagina logica del proceso, que no ha sido cargada en memoria aun.Ocurre un fallo de pagina para traerla, y de paso se reserva la primera tablade segundo nivel, cuya entrada 0 contendra la direccion del marco fısico en elque se ubica la pagina (por ejemplo el 33). (Figura 2). Por lo tanto 1 accesoa disco. Observese que la tabla de primer nivel tiene 512 entradas y las desegundo nivel 2048.

0123

...511

#tablas 2do nivel V343142 (=b) 1

X 0X 0X 0...X 0

(a)

01

...2047

#marco V R M33 1 1 0X 0 0 0...X 0 0 0(b)

Figura 2: Tablas tras instruccion en 0

4

Page 5: Examen Sistemas Operativos

Lectura dato, 16MB+1 : como la pagina en la que cae esta direccion no esta car-gada en memoria, provoca un fallo de pagina. Cae en la tercera entrada de latabla de primer nivel, y se necesita una nueva tabla de segundo nivel, quese actualiza convenientemente. Justo en su primera entrada. Suponemos quela pagina con ese dato se ubica finalmente en el marco 55, que estaba libre(Figura 3). Es decir un nuevo acceso al disco, para leer esa pagina y cargarlaen el marco 55.

Cada entrada de la tabla de primer nivel tiene la direccion fısica de la tablade segundo nivel correspondiente. En cada tabla de segundo nivel hay 2048entradas (=2Kentradas), cada entrada apunta a un marco de 4K, de modoque los primeros 8MB de la memoria logica del proceso se apuntan desde laprimera tabla de segundo nivel, desde la direccion 8MB a la 16MB se apuntandesde la segunda tabla de segundo nivel, y ası sucesivamente.

0123

...511

tablas 2do nivel V343142 (=b) 1

X 0540928 (=c) 1

X 0...X 0

(a)

01

...2047

marco V R M33 1 1 0X 0 0 0...X 0 0 0(b)

01

...2047

marco V R M55 1 1 0X 0 0 0...X 0 0 0(c)

Figura 3: Tablas tras lectura dato, 16MB+1

Instruccion, 1 La lectura de la instruccion en la direccion logica 1 no provocaningun fallo de pagina, ni ningun acceso al disco, pues esa pagina ya fue cargadacon anterioridad. Se lee esa instruccion de la memoria fısica sin problema. Losbits de presencia y modificacion no se alteran.

Escritura dato, 16MB+4KB Esta escritura provoca un fallo de pagina. Comoaun hay un marco libre, desencadena un unico acceso al disco, para traerla nueva pagina. Se carga en el marco 59, por ejemplo, y se escribe el datorequerido en la posicion oportuna dentro de esa pagina. El bit de modificacionse pone a 1, para reflejar esa escritura. Con este se completan los tres marcosque el Sistema Operativo asigna a este proceso, el 33, el 55 y el 59 (Figura 4).

0123

...511

tablas 2do nivel V343142 (=b) 1

X 0540928 (=c) 1

X 0...X 0

(a)

01

...2047

marco V R M33 1 1 0X 0 0 0...X 0 0 0(b)

01

...2047

marco V R M55 1 1 059 1 1 1...X 0 0 0(c)

Figura 4: Tablas tras escritura dato, 16MB+4KB

5

Page 6: Examen Sistemas Operativos

Instruccion, 2 Esta lectura de instruccion no provoca fallo de pagina, ni accesoalguno al disco, puesto que ya esta cargada en memoria. Se lee sin problemasla instruccion y se refresca si acaso el bit de referencia de ese marco.

Instruccion, 4KB+2 Esta lectura de instruccion provoca fallo de pagina. Comolos tres marcos asignados estan ocupados, hay que elegir vıctima. El algoritmode segunda oportunidad parte del orden FIFO para elegir un vıctima tentativa.Inicialmente se elige como candidata la primera pagina logica (marco 33), perocomo tiene el bit de referencia a 1, se pone a 0 y se le “perdona la vida”,pasando a explorar el siguiente candidato. Como el marco 55 y el 59 tienen elbit de referencia a 1, a ellos tambien se les da una segunda oportunidad. Demodo que el turno vuelve al marco 33, que ahora tiene el bit de referencia a 0.Se le elige como vıctima y como esa pagina no ha sido modificada desde quese trajo a memoria (tiene el bit de modificacion a 0), el fallo de pagina solodesencadena un unico acceso al disco, para traerse la nueva pagina. Las tablasquedan como indica la figura 5.

0123

...511

tablas 2do nivel V343142 (=b) 1

X 0540928 (=c) 1

X 0...X 0

(a)

01

...2047

marco V R MX 0 0 033 1 1 0...X 0 0 0(b)

01

...2047

marco V R M55 1 0 059 1 0 1...X 0 0 0(c)

Figura 5: Tablas tras instruccion, 4KB+2

Lectura dato, 16MB+1 Esta lectura de instruccion no provoca fallo de pagina,ni acceso alguno al disco, puesto que cae en una pagina ya cargada. Sı serefresca el bit de referencia de la pagina ubicada en el marco 55 (figura 6).

0123

...511

tablas 2do nivel V343142 (=b) 1

X 0540928 (=c) 1

X 0...X 0

(a)

01

...2047

marco V R MX 0 0 033 1 1 0...X 0 0 0(b)

01

...2047

marco V R M55 1 1 059 1 0 1...X 0 0 0(c)

Figura 6: Tablas tras lectura dato, 16MB+1

Instruccion, 4KB+3 Esta lectura de instruccion no provoca fallo de pagina niacceso alguno al disco duro. Se lee sin problema de la pagina almacenada enel marco 33, se refresca el bit de referencia si acaso.

Instruccion, 3 Esta direccion cae en una pagina que ahora mismo no esta cargadaen memoria, hay fallo de pagina y hay que elegir vıctima nuevamente, pues

6

Page 7: Examen Sistemas Operativos

los 3 marcos disponibles estan ocupados. El algoritmo de segunda oportunidadparte del orden FIFO de paginas para considerar la primera vıctima tentativa.Ese orden FIFO corresponde a los marcos 55-59-33. Como la pagina alojada enel marco 55 ha sido usada recientemente (como indica su bit de referencia a 1),se le “perdona la vida” y se pasa al siguiente candidato. Ese es el 59, que comotiene el bit de referencia a 0, se elige como vıctima. Como ha sido modificadadesde su carga, hay que escribir esa pagina en disco antes de cargar en esemismo marco la nueva pagina. Por lo tanto este fallo de pagina desencadenados accesos al disco: un swap-out de la vıctima y un swap-in de la nueva. Lastablas de paginas quedan como muestra la figura 7.

0123

...511

tablas 2do nivel V343142 (=b) 1

X 0540928 (=c) 1

X 0...X 0

(a)

01

...2047

marco V R M59 1 1 033 1 1 0...X 0 0 0(b)

01

...2047

marco V R M55 1 1 0X 0 0 0...X 0 0 0(c)

Figura 7: Tablas tras instruccion, 3

Problema 4 (2 puntos)

Tenemos en el desvan un obsoleto disco duro de 8 MB que queremos recuperar paraun ordenador donde tenemos instalada una version muy antigua de Unix. El tamano delbloque es 1 KB, y el tamano de la direccion de un bloque es 2 bytes. Cada i-nodo tienemetainformacion sobre el fichero, 10 entradas de referencia directa a bloque, 4 indirectassimples y 2 indirectas dobles.

a) ¿Cual es el tamano maximo efectivo de un archivo en este sistema de ficheros?

b) Cuando se abre el fichero /home/federico/practica.c por primera vez, ¿cuantos accesosa disco conlleva la llamada al sistema open() en este sistema de ficheros? Describepara que es cada uno de ellos.

Solucion 4

a) En primer lugar, el enunciado nos dice que el tamano de las direcciones a los bloquede datos del disco ocupan 16 bits. Esto significa que se pueden direccionar comomaximo hasta 2**16 = 64K bloques de datos. Como los bloques son de 1KB, esoimplica que como maximo un fichero podra ser de 64k * 1KB = 64 MB.

En segundo lugar, el disco es de 8MB, por lo tanto no puede contener ficherosmayores a 8MB.

7

Page 8: Examen Sistemas Operativos

Y en tercer lugar, tendremos que calcular si la estructura de nodo-i del sistemade ficheros impone o no mas restricciones a este numero maximo. Veamos cuantosbloques de datos pueden ser direccionados desde un nodo-i como el descrito en elenunciado. Con los 10 enlaces directos podemos direccionar 10 bloques. Como losbloques de datos ocupan 1koctetos y las direcciones ocupan 2 octectos, entoncesel numero de direciones de bloques de datos que caben en un bloque de datoses de 512. Con el enlace de indireccion simple podemos direccionar 1 bloque quecontiene 512 direcciones a bloques. Con el enlace de indireccion doble podemosdireccionar 1 bloque que contendra 512 direcciones de bloques conteniendo cadauno 512 direcciones a bloques de datos, esto es, 512*512=256K bloques de datos. Esdecir que los nodos-i nos permitirıan direccionar (10 + 4 * 512 + 2 * 256K) bloques,a 1KB de datos por bloque nos permitirian ficheros de unos 514MB+10KB.

De los tres maximos vistos, el menor es el tamano del disco, y es el que pone lımiteal tamano maximo de un fichero en este sistema: 8MB. Habrıa que descontar algunbloque que se dedicarıa a almacenar su i-nodo.

b) La operacion del codigo open("/home/federico/practica.c",O\_RDWR) tiene comoobjetivo traer a memoria principal el nodo-i del fichero "/home/federico/practica.c".Si suponemos que el nodo-i del directorio "/" ya esta en memoria principal el nume-ro de accesos al disco necesarios sera:

1 acceso para traer a memoria principal el primer bloque de datos del directorio"/" cuya direccion buscaremos en el nodo-i del directorio "/".

1 acceso para traer a memoria principal el nodo-i del directorio "/home" cuyadireccion en disco buscaremos en el bloque de datos del directorio "/".

1 acceso para traer a memoria principal el primer bloque de datos del directrio"/home" cuya direccion buscaremos en el nodo-i del directorio "/home".

1 acceso para traer a memoria principal el nodo-i del fichero "/home/federico"cuya direccion en disco buscaremos en el bloque de datos del directorio "/home"

1 acceso para traer a memoria principal el primer bloque de datos del direc-trio "/home/federico" cuya direccion buscaremos en el nodo-i del directorio"/home/federico".

1 acceso para traer a memoria principal el nodo-i del fichero "/home/federico/practica.c"cuya direccion en disco buscaremos en el bloque de datos del directorio "/home/federico"

Por tanto el numero de accesos a disco sera 6.

8