sistemas operativos - etsisi.upm.es · a continuación se presenta una selección de problemas que...

33
E.U. de Informática-U.P.M. Sistemas Operativos Febrero 2007 SISTEMAS OPERATIVOS Problemas escogidos

Upload: truongtuong

Post on 20-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

E.U. de Informática-U.P.M. Sistemas Operativos

Febrero 2007

SISTEMAS OPERATIVOS

Problemas escogidos

E.U. de Informática-U.P.M. Sistemas Operativos

E.U. de Informática-U.P.M. Sistemas Operativos

i

A continuación se presenta una selección de problemas que han sido objeto de examen de Sistemas

Operativos en cursos anteriores.

La tabla siguiente refleja, agrupados por temas, los problemas seleccionados, la convocatoria en la que se

pusieron, así como un breve comentario de los aspectos sobre los que se pregunta y referencia a la página

de este documento donde aparece el enunciado.

Tema Ejer. Fecha Comentario Página

Procesos

2 31/01/95 Seguimiento sencillo de RR, SJF y prioridades 1

3 18/01/97 Cálculo de tiempo de retorno, rendimiento y eficiencia 3

2 10/09/03 Threads en nivel de usuario y de S.O. (aptdos. 1, 2c, 3) 4

3 02/09/99 Implementar dormirse (segundos) 6

2 08/09/04 Seguimiento de política de planificación tipo tiempo real 7

2 15/12/04 Programación de rutinas de planificación tipo tiempo real 8

3 12/12/01 Planificación tipo Linux 10

2 14/12/05 Políticas de planificación para sistemas interactivos 13

Memoria

2 8/06/04 Cálculos sobre particiones variables y paginación 15

3 17/09/01 Organización general de la paginación 16

3 02/07/01 Paginación y organizar área swap con lista encadenada 17

2 12/12/01 Tabla de Páginas de dos niveles 19

3 14/06/03 Tabla de Páginas Invertida 21

3 15/12/04 Introducción a la segmentación 22

E/S

12 (cap.5 Tanen.) Tiempos de transferencia en una red xx

14 (cap.5 Tanen.) Estructura de un disco: cilindros, pistas y sectores xx

20 (cap.5 Tanen.) Tiempos de lectura en disco flexible xx

24 (cap.5 Tanen.) Algoritmos de planificación de disco (1) xx

25 (cap.5 Tanen.) Algoritmos de planificación de disco (2) xx

3 17/06/05 Accesos a disco 23

Ficheros

3 13/09/96 Sistema de tipo UNIX y creación de estructura 24

3 25/06/97 Similar al anterior mezclando MS/DOS y UNIX 26

3 10/12/03 UNIX tratando caché de bloques 28

3 14/12/05 Accesos a bloques de disco correspondientes a un fichero 29

E.U. de Informática-U.P.M. Sistemas Operativos

E.U. de Informática-U.P.M. Sistemas Operativos

1

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 31 de Enero de 1995

EJERCICIO 2 (4 puntos) Tiempo estimado: 60m.

Disponemos de un sistema con multiprogramación implementado con un solo procesador en el cual se

ejecutan los tres procesos descritos a continuación:

Proceso P1

Instante de llegada: 0

Prioridad: Baja

Estructura del proceso: 27 mseg de utilización de U.C.P.,

seguidos de 10 mseg de acceso a E/S

y finalizando con 5 mseg de U.C.P.

Proceso P2

Instante de llegada: 5

Prioridad: Media

Estructura del proceso: 25 mseg de utilización de U.C.P.,

seguidos de 20 mseg de acceso a E/S

y finalizando con 5 mseg de U.C.P.

Proceso P3

Instante de llegada: 8

Prioridad: Alta

Estructura del proceso: 8 mseg de utilización de U.C.P.,

seguidos de 10 mseg de acceso a E/S

y finalizando con 5 mseg de U.C.P.

No se debe olvidar que además de estos procesos, existe un proceso “ocioso” cuyo fin es utilizar la U.C.P.

mientras no la necesite ningún otro proceso. Además, vamos a considerar que el tiempo necesario para

efectuar el cambio de contexto es nulo.

El objeto de este ejercicio es analizar el comportamiento de los distintos procesos en función de diferentes

políticas de planificación de U.C.P. Para la respuesta se utilizarán los gráficos proporcionados en la hoja

de respuestas.

Teniendo en cuenta todo lo anterior, se pide completar los gráficos (sombreando los instantes en que cada

proceso está utilizando el procesador) correspondientes a cada una de las siguientes políticas de

planificación:

1.- Round-Robin (expulsora) con rodajas de tiempo de 10 mseg.

2.- Más-Corto-Primero (no expulsora). Considerando el tiempo total de U.C.P.

3.- Prioridades (no expulsora).

4.- Prioridades (expulsora).

E.U. de Informática-U.P.M. Sistemas Operativos

2

SISTEMAS OPERATIVOS I 31 de enero de 1995

Hoja de Respuestas del EJERCICIO 2

APARTADO 3

0 5 10

15

20

25 30

35

40

45

50

55

60

65

70

75 80

85

90

95

tiempo (mseg.)

OCIOSO

P3

P2

P1

APARTADO 1

APARTADO 2

APARTADO 4

0 5 10

15

20

25 30

35

40

45

50

55

60

65

70

75 80

85

90

95

tiempo (mseg.)

OCIOSO

P3

P2

P1

0 5 10

15

20

25 30

35

40

45

50

55

60

65

70

75 80

85

90

95

tiempo (mseg.)

OCIOSO

P3

P2

P1

0 5 10

15

20

25 30

35

40

45

50

55

60

65

70

75 80

85

90

95

tiempo (mseg.)

OCIOSO

P3

P2

P1

E.U. de Informática-U.P.M. Sistemas Operativos

3

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 18 de enero de 1997

EJERCICIO 3 (3,5 puntos) Tiempo estimado: 1h 30 m. Un entorno monoprocesador soporta un sistema operativo multiproceso que solo está ejecutando procesos

con código y datos idénticos. Cada proceso requiere N periodos de tiempo T para completar su ejecución.

En cada periodo de tiempo T, emplea la primera mitad en realizar E/S y la segunda mitad en ejecutarse en

el procesador. El algoritmo de planificación empleado es Round-Robin con una rodaja de tiempo de T/2.

Sean las siguientes definiciones:

TIEMPO DE RETORNO (Rt ): tiempo total necesario para que un proceso se ejecute

completamente.

TIEMPO MEDIO DE RETORNO (RT ): media aritmética de los tiempos de retorno de cada proceso.

RENDIMIENTO ( R ): número de procesos terminados por periodo de tiempo T.

EFICIENCIA ( E ): porcentaje de tiempo en el que la cpu está activa.

SE PIDE:

1. Suponiendo que

todos los procesos pueden realizar simultáneamente operaciones de E/S

se considera que el tiempo empleado en cambio de contexto en despreciable

el valor de N puede tomar valores pequeños.

Indicar el tiempo medio de retorno RT , el rendimiento R por periodo de tiempo T y la eficiencia E,

en función de N y T, cuando en el sistema se están ejecutando:

a) 1 proceso

b) 2 procesos

c) 4 procesos

2. Calcular el valor de la eficiencia para los tres casos anteriores si:

a) N= 4

b) N=16

3. Analice los resultados obtenidos con respecto a la eficiencia.

E.U. de Informática-U.P.M. Sistemas Operativos

4

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 10 de Septiembre de 2003

EJERCICIO 2 (puntuación 3´5 puntos) Tiempo Estimado: 60 m

Se cuenta con un sistema operativo multiproceso tradicional, en el que cada proceso cuenta con un único hilo de

ejecución o thread. Sin embargo, se pretende que los procesos de usuario puedan ser multihilo, es decir, cuenten

con varios threads de ejecución. Para conseguirlo, se proporciona una biblioteca, por encima del sistema operativo,

que ofrece funciones para crear y destruir threads, así como para establecer la política de planificación de dichos

threads dentro del proceso, como se puede ver en la siguiente figura:

En este modelo, cuando el sistema operativo asigna al proceso de usuario una porción de procesador mediante la

política planificación Round Robin, dentro del proceso se reparte dicho tiempo entre los threads creados, según la

política de planificación local establecida en la biblioteca, en este caso es FIFO.

Además, todas las estructuras necesarias para mantener los threads de un proceso se crean dentro del espacio del

proceso, incluida una tabla de bloques de control de threads (Tabla de BCT`s).

Hay que destacar que, al crear los threads en el nivel de usuario, estos threads no existen para el sistema operativo:

para el núcleo la unidad de planificación es el proceso.

Suponiendo que el sistema operativo utiliza Round Robin con una porción de tiempo de 100 ms y que se crean

simultáneamente dos procesos P1 y P2 (estando P1 el primero en la cola de preparados) cuyo código es el

siguiente:

P1 P2

(1) Usa cpu (50 ms) Usa cpu (30 ms) (2) Hace una llamada al sistema bloqueante (100 ms) (3) Usa cpu (10 ms) (4) Usa cpu (30 ms)

Se pide:

1) Dibuje el cronograma relativo a los procesos P1, P2 y el proceso ocioso para los casos siguientes:

a) El proceso P1 es monohilo.

b) El proceso P1 tiene dos hilos: el hilo P1A ejecuta las tres primeras instrucciones (1, 2 y 3) y el hilo P1B

ejecuta la última (4). Se supone que P1A está antes que P1B en la cola de preparados.

Proceso de

usuario

BCT´s

T1

T2

Pn … P1

Cola de preparados

BCP´s

P1

Pn

cpu

Sistema

Operativo

Round

Robin

FIFO

Proceso de

usuario P1

Thread 2 Thread 1

E.U. de Informática-U.P.M. Sistemas Operativos

5

2) Ahora se desea que la gestión de threads se haga desde dentro del sistema operativo, para que la unidad mínima

de planificación sea el thread y no el proceso, por lo que es necesario modificar el núcleo, tal como se ve en la

figura:

a) Indique todos los campos de las estructuras que introduciría o modificaría para que el núcleo pueda

soportar threads.

b) Proponga las especificaciones de las llamadas al sistema que permitan crear y destruir threads.

c) Repita el cronograma para el proceso P1 multihilo y P2, siendo el orden inicial en la cola de preparados

P1A, P1B y P2.

3) Explique razonadamente qué ventajas e inconvenientes ve en el uso de los threads:

a) Implementados en el espacio de usuario.

b) Implementados dentro del sistema operativo.

Tn … T2 T1

Cola de preparados

BCP´s

P1

Pn

cpu

Sistema

Operativo

Round

Robin

Proceso de

usuario P1

?

T2 T1

E.U. de Informática-U.P.M. Sistemas Operativos

6

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 2 de Septiembre de 1999

EJERCICIO 3 (4 puntos) Tiempo: 60 min.

En un sistema monoprocesador, se desea implementar la parte del Sistema Operativo que permite que los procesos

se duerman durante un cierto tiempo. En concreto, dar soporte a la llamada al sistema cuyo perfil es el siguiente:

PROCEDURE dormirse (segundos: in POSITIVE);

Cuando un proceso ejecute esta llamada, el Sistema Operativo debe garantizar que el proceso en cuestión se

duerme (deja la posesión de la UCP) durante al menos los segundos indicados, tomando control lo antes posible

una vez transcurrido dicho tiempo y respetando siempre la política de planificación del sistema.

Se dispone de una interrupción periódica que sucede cada 100 milisegundos, cuya rutina de tratamiento asociada

denominaremos rutinaReloj.

Para la gestión de procesos, el Sistema Operativo tiene, entre otras, las estructuras de datos siguientes: maxProcesos : constant := 50;

type idProceso is INTEGER range 0..maxProcesos;

type descriptorProceso is

record

pid : idProceso; -- El identificador del proceso

siguiente: idProceso; -- Para encadenar descriptores en colas

-- Resto de campos

end record;

type colaProcesos is

record

primero: idProceso := 0;

ultimo : idProceso := 0;

end record;

procesos : array [1..maxProcesos] of descriptorProceso;

enEjecucion: idProceso; -- Identificador del proceso en ejecucion

preparados : colaProcesos;

Se pide:

1. Indica qué nuevas estructuras de datos y/o modificaciones a las ya existentes, introducirías para dar soporte a

este servicio que permite dormirse a los procesos.

2. Describe las acciones que ejecutará el Sistema Operativo desde que toma control debido a que un proceso

llama a “dormirse”, hasta que devuelve el control al siguiente proceso a ejecutar. Se puede mezclar lenguaje

formal tipo Ada con expresiones informales del tipo: “se salva el estado del proceso en ejecución”, “se mete al

proceso en ejecución en la cola de preparados”, etc.

3. Describe, con el mismo nivel de detalle que en el punto anterior (2), las acciones que ejecutará la rutina del

Sistema Operativo “rutinaReloj”, supuesto que la misma sólo se utiliza para poder dar soporte a “dormirse”.

4. Supuesta planificación mediante “Round-Robin” con rodajas de tiempo de 500 milisegundos y que un proceso

ejecuta “dormirse (5)”, indica (lo más aproximado que puedas) cuál es el tiempo máximo que dicho proceso

estará bloqueado y cuál es el tiempo máximo que puede transcurrir desde que el proceso se duerme hasta que

dicho proceso vuelve a tener la UCP. Razónalo.

5. Responde a lo mismo que en (4) pero suponiendo ahora planificación por prioridades.

Nota: En los apartados 1, 2 y 3 no se trata de implementar la solución más eficaz, basta con una que funcione de

forma razonable.

E.U. de Informática-U.P.M. Sistemas Operativos

7

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 8 de septiembre de 2004

EJERCICIO 2 (3,5 puntos) Tiempo estimado: 50 min. Sea un sistema de planificación de procesos por prioridades expulsor. A cada proceso se le asigna una prioridad fija

cuando se crea que consiste en un número entero positivo; a mayor valor, mayor prioridad. Sean tres procesos A, B

y C con prioridades 33, 25 y 20 respectivamente. Estos procesos tienen que ejecutarse periódicamente cada 30, 40

y 50 ms. respectivamente. Esto quiere decir que, por ejemplo, el proceso A debe ejecutarse una vez entre los

instantes 0 y 30 ms.; otra vez entre los instantes 30 y 60 ms; y así sucesivamente. En cada activación el proceso A

consume 10 ms. de CPU, el proceso B consume 15 ms. y el proceso C consume 5 ms.

Nota: En el instante t = 0, los tres procesos A, B y C están preparados y ninguno de ellos realizará operaciones de

E/S.

SE PIDE:.

1) Dibuje un diagrama de tiempos (hasta el instante t=110) donde se aprecie los periodos de tiempo (para cada

proceso) en los que se está ejecutando. ¿Qué proceso se está ejecutando en el intervalo 25..30? ¿Y en el

intervalo 70..75? ¿Y en el intervalo 90..95?

2) Suponga ahora que el tiempo de ejecución para el proceso A es de 15 ms. en lugar de 10 ms.

(manteniéndose igual el resto de los datos). Dibuje un diagrama de tiempos (hasta el instante t=60) donde

se aprecie los periodos de tiempo (para cada proceso) en los que se está ejecutando. ¿Qué proceso se está

ejecutando en el intervalo 15..20? ¿Y en el intervalo 30..35? ¿Y en el intervalo 45..50?

3) En las condiciones del apartado 2, suponga ahora que cambiamos el planificador tal que el nuevo

planificador (con política expulsora) selecciona al proceso cuyo fin de periodo está más próximo a vencer.

Dibuje un diagrama de tiempos (hasta el instante t=85) donde se aprecie los periodos de tiempo (para cada

proceso) en los que se está ejecutando. ¿Qué proceso se está ejecutando en el intervalo 35..40? ¿Y en el

intervalo 50..55? ¿Y en el intervalo 80..85?

E.U. de Informática-U.P.M. Sistemas Operativos

8

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 15 de diciembre de 2004

EJERCICIO 2 (3.5 puntos) Tiempo estimado: 60 m

Queremos diseñar el planificador de procesos de un sistema operativo que se va a utilizar para soportar

específicamente procesos multimedia. En este tipo de sistemas las aplicaciones se caracterizan por tener que

ejecutarse dentro de unos rangos de velocidad determinados, por ejemplo, un proceso encargado de

visualizar un vídeo deberá ejecutarse de una forma más o menos continua, sin parones ni acelerones. Para

ello, al crear un proceso se realiza una reserva de CPU al sistema operativo.

En esta reserva se especifican dos parámetros: Tiempo de Cómputo (C) y Periodo (P). El sistema operativo

deberá encargarse de ejecutar este proceso durante

C unidades de tiempo (u.t.) cada P u.t. La ejecución

de las C u.t. puede hacerse en cualquier punto del

intervalo, pero siempre dentro de las P u.t. Además,

la ejecución de las C u.t. no tiene por qué ser

consecutiva. Las C u.t. de un proceso tendrán como

plazo máximo para finalizar el siguiente instante de

activación del proceso.

No obstante, para evitar sobrecargas, el sistema tiene que controlar que la necesidad de CPU de todos los

procesos existentes cumpla la condición:

donde Ci y Pi son los parámetros de reserva de cómputo de los procesos y N es el

número de procesos existentes en el sistema.

Si no se va a cumplir esta condición, al intentar hacer la reserva el sistema operativo devolverá el valor –1

como código de error.

El sistema operativo va a seguir una planificación expulsora EDF (Earlest Deadline First). En esta

planificación el sistema operativo elige como siguiente proceso a ejecutar aquel que tenga más próximo el

siguiente plazo de ejecución, es decir, aquel cuya siguiente activación esté más próxima.

Se pide:

1) A continuación se especifica una lista de acciones (desordenadas) que tiene que realizar en algún

momento el sistema operativo y que están relacionadas con la gestión de procesos:

Seleccionar al siguiente proceso en ejecutar

Desbloquear a los procesos que les toca activarse

Crear un descriptor de proceso

Comprobar si se han cumplido las C u.t. del proceso que está en ejecución

Actualizar la variable del sistema Instante_Actual, que contiene la hora actual del sistema

Comprobar la necesidad de CPU de los procesos

Estas acciones se llevarán a cabo dentro de diversas rutinas del sistema operativo. Especifique cuáles serán

dichas rutinas, indicando para cada una de ellas:

Nombre de la rutina

Motivo de activación de dicha rutina

Acciones (ordenadas) de la lista anterior que tiene que llevar a cabo

Completar la rutina con otras acciones que considere necesarias y que no están incluidas en la

lista (con un nivel de detalle similar)

Pu.t.

Ejecución del proceso

Pu.t. Pu.t.

Cu.t. Cu.t. Cu.t.

1 Pi

Ci

i=1

N

E.U. de Informática-U.P.M. Sistemas Operativos

9

2) Dadas las siguientes estructuras de datos.

maxProcesos : constant := 50; type idProcesos is INTEGER range 0..maxProcesos; type descriptorProceso is record pid : idProceso; -- Identificador de proceso siguiente : idProceso; -- Apunta al siguiente elemento, para formar una lista tiempoComputo : integer; -- Tiempo de computo reservado periodo : integer; -- Periodo indicado en la reserva siguienteActivacion : integer; -- Instante de la siguiente activación para el proceso credito : integer; -- Unidades de tiempo que le queda al proceso por ejecutar durante su activación actual end record; type colaProcesos is record primero : id Proceso := 0; ultimo : idProceso := 0; end record; procesos : array [0..maxProcesos] of descriptorProceso: enEjecucion : idProceso; -- Identificador del proceso en ejecución preparados : colaProcesos; dormidos : colaProcesos; instanteActual : integer; -- Reloj creciente que marca el instante actual

Detalle de forma algorítmica las siguientes acciones:

Comprobar que se han cumplido las C u.t. del proceso que está en ejecución

Desbloquear a los procesos que les toca activarse

Crear un descriptor de proceso

Comprobar la necesidad de CPU de los procesos

Seleccionar al siguiente proceso en ejecutar

NOTA: Para especificar operaciones de insertar/sacar elementos de listas no hará falta detallar a nivel de

punteros. Bastará con indicar en seudocódigo qué operación se realiza, con qué elemento y en qué lista.

E.U. de Informática-U.P.M. Sistemas Operativos

10

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 12 de diciembre de 2001

EJERCICIO 3 (3’5 puntos) Tiempo estimado: 75 m

Tenemos un sistema operativo con un algoritmo de planificación similar al de linux, tal y como se

describe a continuación.

El sistema dispone de dos algoritmos de planificación, uno para procesos de tiempo compartido y otro

para procesos de tiempo real. Cada proceso puede acogerse a cualquiera de estas dos políticas de

planificación.

Para los procesos de tiempo compartido se utiliza un algoritmo basado en créditos. Cada proceso dispone

de un número de créditos, de tal manera que para seleccionar el siguiente proceso a ejecutarse, se elige al

que tiene más créditos acumulados. Cada vez que se produce una interrupción de reloj, el proceso en

ejecución pierde un crédito; cuando su número de créditos llega a cero, pierde la CPU y se selecciona otro

proceso.

Cuando no queda ningún proceso preparado con créditos, el sistema vuelve a asignar créditos a todos los

procesos del sistema en función de su prioridad según la regla siguiente:

Créditos = (Créditos_Restantes / 2) + Prioridad.

Para los procesos de tiempo real, el sistema siempre concede la CPU al proceso de mayor prioridad,

implementando dos algoritmos por prioridad expulsores: FIFO y Round Robin. Cada proceso de tiempo

real debe indicar a cual de los dos se acoge. En el algoritmo FIFO no se le quita la CPU a no ser que pase

a preparado un proceso de mayor prioridad. En el algoritmo Round Robin, la CPU se reparte en idénticas

rodajas de tiempo entre los procesos que tengan la misma prioridad.

El sistema solo ejecutará un proceso de tiempo compartido si no hay ningún proceso de tiempo real

preparado para ejecutar.

1.- (0.7 ptos.) Dadas las siguientes estructuras de datos, indica qué nuevas estructuras de datos y/o

modificaciones a las ya existentes introducirías para dar soporte al algoritmo de planificación descrito,

teniendo en cuenta que las estructuras de datos deben permitir accesos eficientes a la información.

const maxProcesos = 50;

type idProceso = 0..maxProcesos;

descriptorProceso = record

pid : idProceso;

siguiente : idProceso;

end;

colaProcesos = record

primero : id Proceso := 0;

ultimo : idProceso := 0;

end;

var procesos : array [1..maxProcesos] of descriptorProceso:

enEjecucion : idProceso; (* Id. del proceso en ejecución *)

preparados : colaProcesos;

E.U. de Informática-U.P.M. Sistemas Operativos

11

2.- (0.5 ptos.) El efecto de la ejecución de algunas rutinas puede (no siempre) provocar la realización de un cambio

de contexto. Rellena la siguiente tabla indicando, para cada una de las rutinas de la primera columna y para los dos

algoritmos de planificación indicados en la primera fila:

SÍ: si en algunas circunstancias puede provocar un cambio de contexto

NO: si nunca provocarán cambio de contexto

Round Robin

(puro)

Algoritmo descrito

similar a linux

Subir (Semaforo)

Bajar (Semaforo)

Rutina Tratam. Interrup. por finalización de E/S

Crear_Proceso

Dormir (Lapso_Tiempo)

3.- (0.8 ptos.) Supongamos que las rodajas de tiempo del sistema son de 2 unidades de tiempo (u.t.). En el

sistema existen, en un momento dado, los procesos indicados en la siguiente tabla, para los cuales se

indica las unidades de tiempo de CPU que necesitan y entre paréntesis el número de unidades de tiempo

que están bloqueados en espera de E/S. Por ejemplo, P1 necesita inicialmente 4 u.t de CPU, a

continuación se bloquea durante 10 u.t y finalmente necesita 4 u.t. más de CPU. Además, se especifica el

tipo de proceso que es cada uno.

Tiempos Tipo de Proceso

P1 4 (10) 4 Tiempo Real FIFO con prioridad 20

P2 3 (3) 3 Tiempo Real Round Robin con prioridad 10

P3 3 (3) 3 Tiempo Real Round Robin con prioridad 10

P4 4 (2) 2 Tiempo Compartido

(prioridad 20 > prioridad 10)

Dibuja un cronograma que indique el orden en que se ejecutarán los procesos, suponiendo que todos están

preparados en el instante cero y que el orden de llegada ha sido P1, P2, P3 y P4.

4.- (0.7 ptos.) Supongamos que en el sistema existen los procesos indicados en la siguiente tabla.

Tiempos Tipo de Proceso

P1 5 (7) 5 (7) 5 Tiempo Real con prioridad 20 y FIFO

P2 4 (3) 2 Tiempo Real con prioridad 10 y Round Robin

P3 Tcpu-P3 Tiempo Real con prioridad 10 y Round Robin

P4 3 Tiempo Compartido

Sabemos que:

el tiempo de retorno de P2 es MENOR que el tiempo de retorno de P1

el tiempo de retorno de P3 es MENOR que el tiempo de retorno de P1

entendiendo por tiempo de retorno el tiempo que un proceso tarda en ejecutarse completamente.

Calcula el tiempo máximo de CPU que puede llegar a tener el proceso P3 (máximo Tcpu-P3) para que se

cumplan las dos condiciones anteriores. Razona la respuesta.

E.U. de Informática-U.P.M. Sistemas Operativos

12

5.- (0.8 ptos.) Sabemos que en el sistema se produce una interrupción de reloj cada 2 u.t. Con cada

interrupción de reloj se finaliza una rodaja de tiempo para los procesos de tiempo compartido.

Supongamos que en el sistema existen los procesos indicados en la siguiente tabla, donde Créditos (Pn)

indica el número de créditos que tiene el proceso Pn.

Tiempos Tipo de Proceso

P1 5 (20) 8 Tiempo Real con prioridad 20 y FIFO

P2 3 (6) 2 Tiempo Real con prioridad 10 y Round Robin

P3 22 Tiempo Compartido con Créditos(P3)

P4 5 Tiempo Compartido con Créditos(P4)

Considerando la siguiente situación:

Créditos (P3) es MAYOR que los Créditos (P4)

el proceso P4 tiene suficientes créditos para acabar su ejecución antes de que se le agoten

el tiempo de retorno de P4 es menor que el tiempo de retorno de P1

indica el número máximo de Créditos(P3) para que se cumpla la situación descrita. Razona la respuesta.

E.U. de Informática-U.P.M. Sistemas Operativos

13

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 14 de diciembre de 2005

EJERCICIO 2 (3,5 PUNTOS) Tiempo estimado: 60 Minutos Queremos tener un sistema operativo que soporte la gestión de procesos convencionales (pesados) y

procesos ligeros (threads) en un sistema monoprocesador. Para ello debemos disponer de las siguientes

llamadas, todas ellas ejecutadas por el núcleo del sistema operativo:

Crear_Thread (Nombre_Procedimiento: Puntero_a_Procedimiento,

P: Prioridad) return Identificador_de_thread

Crea un nuevo thread que ejecuta el código contenido en el procedimiento que se indica como parámetro. A

dicho thread se le asigna la prioridad del proceso padre incrementada con el valor de P.

Crear_Proceso (Nombre_Fichero: Tira_Caracteres,

P: Prioridad) return Identificador_de_Proceso

Crea un nuevo proceso que ejecuta el código contenido en el fichero que se indica como parámetro. A

dicho proceso se le asigna la prioridad del proceso padre incrementada con el valor de P. Además, se crea

un thread que corresponderá a la ejecución del programa principal del proceso.

Además disponemos de las siguientes llamadas al sistema Esperar_Fin_Thread (IdThread: Identificador_de_Thread)

Esperar_Fin_Proceso (IdProceso: Identificador_de_Proceso)

En cualquier caso, a mayor número P mayor será la prioridad del proceso.

El tiempo consumido por las cuatro llamadas al sistema anteriormente descritas no es significativo.

Tenemos los procesos de las figuras 1 y 2, compuestos por los fragmentos de código desde A1 hasta C6 y

las operaciones de E/S que tardan en realizarse el tiempo especificado entre paréntesis. Sabemos que cada

uno de estos fragmentos de código tiene un tiempo de CPU de 100 unidades de tiempo y no realizan

llamadas al sistema. Inicialmente se crea el proceso A.

1.- Supongamos que se trata de un sistema interactivo, por lo que desechamos los algoritmos propios de

los sistemas Batch y decidimos considerar sólo los algoritmos de planificación propios de los sistemas

interactivos. En el conjunto de procesos de la figura 1:

a.- Indique dos de estos algoritmos que hagan que comience a ejecutarse A3 antes que B1 y C1.

b.- Indique dos de estos algoritmos que hagan que comience a ejecutarse B1 antes que C1.

c.- Indique uno de estos algoritmos que haga que comience a ejecutarse C1 antes que B1.

Para todos los casos justifique la respuesta.

2.- Supongamos que queremos dar mayor ventaja a los procesos más interactivos.

a.- Proponga un algoritmo basado en prioridades que permita que el proceso B finalice su ejecución

antes que el proceso C en el conjunto de procesos de la figura 1. Explique de forma clara y concisa el

funcionamiento de dicho algoritmo.

b.- Dibuje un cronograma que muestre el orden en que se ejecutarían los procesos siguiendo dicho

algoritmo.

3.- Explique la ventaja que tiene la implementación de threads a nivel de sistema operativo (kernel) en

vez de hacerlo a nivel de biblioteca de usuario. Dibuje un cronograma a partir del conjunto de procesos

de la figura 2, donde se vea un caso concreto que demuestre dicha ventaja. El cronograma se deberá

completar hasta la finalización de todos los threads contenidos en los procesos B y C. Además se deberá

indicar la política de planificación que se ha elegido para realizar dicho cronograma.

E.U. de Informática-U.P.M. Sistemas Operativos

14

Figura 1

Proceso A

(* Programa principal *)

A1

IdB := CrearProceso (B, 1)

A2

IdC := CrearProceso (C, 2)

A3

Esperar_FinProceso (IdB)

Esperar_Fin_Proceso (IdC)

Proceso B

(* Programa principal *)

B1

E/S (200)

B2

E/S (200)

B3

Proceso C

(* Programa principal *)

C1

C2

C3

E/S (100)

C4

C5

C6

Figura 2

Proceso A

(* Programa principal *)

A1

IdB := CrearProceso (B, 1)

A2

IdC := CrearProceso (C, 2)

A3

Esperar_FinProceso (IdB)

Esperar_Fin_Proceso (IdC)

Proceso B

Procedure x1

B1

Procedure x2

B2

(* Programa principal *)

Idx1 := CrearThread (x1, 0)

Idx2 := Crearthread (x2, 1)

B0

Esperar_Fin_Thread (Idx1)

Esperar_Fin_Thread (Idx2)

B4

Proceso C

Procedure y1

C1

E/S (250)

C2

Procedure y2

C3

(* Programa principal *)

Idy1 := CrearThread (y1, 2)

Idy2 := Crearthread (y2, 1)

C0

Esperar_Fin_Thread (Idy1)

Esperar_Fin_Thread (Idy2)

C4

E.U. de Informática-U.P.M. Sistemas Operativos

15

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 8 de Junio de 2004

EJERCICIO 2 (3,5 puntos) Tiempo: 60 min.

Un ordenador tiene una memoria de 64MB. El sistema operativo gestiona la memoria por intercambio (swapping)

con particiones variables. El tamaño medio de los procesos es de 3MB y el tamaño medio de los huecos es de 2MB.

Por término medio, existen la mitad de huecos que de procesos. Este ordenador dispone de un disco que tiene 2048

cilindros, 24 pistas por cilindro, 256 sectores por pista y 512 bytes por sector. El tiempo medio de posicionamiento

es de 6‟9 ms. y el tiempo de rotación es de 8‟33 ms. Este ordenador es capaz de copiar 4 bytes en 40 nanosegundos

(de memoria a memoria).

(NOTA: cada respuesta debe incluir el desarrollo que ha llevado a la misma. No se aceptan respuestas en las que

sólo figure el resultado final).

Responder, de forma razonada, a las cuestiones siguientes:

1. [0‟7] Calcule cuál será, por término medio, el grado de multiprogramación.

2. [0‟2] Si por término medio un proceso pasa el 80% de su vida esperando por una entrada/salida, calcule la

utilización de la CPU si el grado de multiprogramación es el calculado en el apartado 1. (No considere el

tiempo que un proceso está esperando en el estado de preparado).

3. [0‟7] Suponga que existen 8 huecos (no adyacentes) de 2MB cada uno. Uno de tales huecos se encuentra en

el extremo superior de la memoria disponible para los procesos de usuario mientras que otro de esos huecos

se encuentra en el extremo inferior de dicha memoria. Ahora es necesario cargar (desde disco) un nuevo

proceso (de 3MB) en memoria y no se debe expulsar a ninguno de los ya cargados. Calcule el tiempo total

para ubicar en memoria a este nuevo proceso supuesto que el proceso se encuentra en sectores distribuidos

aleatoriamente por todo el disco. (Cuando se compacta se debe generar un único hueco a partir de todos los

huecos existentes. En los cálculos trabaje con una precisión de 3 decimales).

4. [0‟2] Si la unidad de asignación es de 4KB, calcule el tamaño (en bytes) del mapa de bits que mantiene la

información sobre memoria libre/ocupada.

Suponga ahora que sobre el ordenador anterior el sistema operativo gestiona una memoria virtual por paginación

con un tamaño de página de 8KB. La CPU genera direcciones virtuales de 32 bits. Indique:

5. [0‟2] Longitud (en bytes) de una entrada a la tabla de páginas. Cada entrada mantendrá un número de

marco, un bit de presencia/ausencia, un bit de ensuciado y un bit de referencia.

6. [0‟2] Tamaño de la tabla de páginas (en bytes).

7. [0‟3] Tamaño de la tabla invertida de páginas (en bytes).

8. [0,3] Si las páginas virtuales 0, 1 y 2 están cargadas en los marcos de página 4, 6 y 7 respectivamente, ¿cuál

es la dirección física correspondiente a la dirección virtual 8193 (decimal)?

9. [0,7] Suponga que la MMU utiliza una TLB. El tiempo de acceso a la TLB es de 0‟1 microsegundo, el

tiempo de acceso a la tabla de páginas es de 10 microsegundos y el tiempo de acceso a una palabra en

RAM es de 1 microsegundo. ¿Cuánto tiempo se tarda en, dada una dirección virtual, acceder a la dirección

física correspondiente si: a) la búsqueda se resuelve en la TLB; b) la búsqueda se resuelve en la tabla de

páginas? (Suponga que la TLB no está llena).

E.U. de Informática-U.P.M. Sistemas Operativos

16

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 17 de Septiembre 2001

EJERCICIO 3 ( 3,5 puntos) Tiempo estimado: 60m.

Se desea implementar una gestión de memoria virtual mediante paginación en un equipo informático. El bus de

direcciones es de 32 bits. La unidad mínima direccionable es un byte. La cantidad de memoria RAM (real)

instalada en el equipo puede ser variable. La cantidad mínima de memoria es de 4 MB y se puede incrementar en

potencias de 2 (es decir 4 MB, 8 MB, 16MB, 32MB,etc..., hasta un máximo). El tamaño de la página es de 4KB y

el del descriptor de página de 3 bytes. Se desea poder controlar si se ha accedido a una página, si se ha modificado,

así como también poder protegerla de lectura, escritura y ejecución.

Con estos datos en principio, supuesto que se dispone de suficiente memoria secundaria para dar soporte a la

memoria virtual y para un espacio de direccionamiento único se pide:

1) Especifique los formatos de dirección lógica (virtual) y de descriptor de página.

2) Escriba el tamaño de la tabla de páginas (en bytes)

3) Escriba la cantidad máxima de memoria real que puede manejar este Sistema (en bytes).

Para dar soporte a la memoria virtual se dispone de un dispositivo de almacenamiento secundario de 8GB, pero que

sólo tiene disponibles 2GB para memoria virtual. Estos 2GB están asignados a un fichero que se usará para guardar

las páginas. Los bloques de datos de este fichero no tienen por qué ser contiguos.

Cuando una página no se encuentra en memoria real, el campo “Número de marco” del descriptor de página guarda

el número de bloque del dispositivo de almacenamiento secundario donde reside la página. La numeración de

bloques del disco comienza en „1‟, así que se reserva el numero „0‟ para indicar que la página no tiene ningún

bloque asignado.

Con esta nueva información se pide:

4) Escriba la cantidad de memoria virtual máxima de la que se podría disponer (en bytes).

5) Escriba el tamaño que debería tener el bloque de almacenamiento secundario para dar soporte a la misma

(en bytes).

6) Describa un posible esquema de asignación de páginas a bloques, es decir, qué páginas se guardarían en los

bloques.

En principio se pensó en guardar la tabla de páginas completa en memoria y que las páginas que ocupase esta tabla

no pudieran ser seleccionables por el algoritmo de sustitución de páginas; de este modo la MMU podría resolver

fácilmente la traducción de páginas, yendo directamente con cada dirección a la tabla de páginas en memoria.

Debido al gran gasto de memoria se opta finalmente por que la tabla de paginas no tenga que estar completamente

en memoria principal, sino que pueda estar también paginada. Se pide:

7) Indique si modificaría o no la MMU para dar soporte a esta opción y en su caso en qué consistiría esta

modificación.

8) Describa en líneas generales cómo funcionaría la traducción de una dirección con esta opción.

E.U. de Informática-U.P.M. Sistemas Operativos

17

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 2 de julio de 2001

EJERCICIO 3 (3,5 puntos) Tiempo: 75 min.

Se desea implementar un sistema operativo con multiprogramación (gestionando un máximo de 128

procesos) y memoria virtual paginada. Se debe tener en cuenta lo siguiente:

CPU con 32 bits para su conexión al bus de direcciones y un Registro de Reubicación.

Un disco de 2GB y sectores de 1KB, para usarlo en exclusiva como soporte de la memoria virtual.

Páginas de 4KB y Tabla de Páginas completa residiendo en Memoria Principal.

Un único espacio de direcciones virtuales para todos los procesos y lo más grande que se pueda.

La memoria virtual, en un momento dado, tiene el aspecto de la figura siguiente:

Una representación lógica de la lista doblemente encadenada sería la siguiente:

Donde el elemento “H1” describe el primer trozo de la memoria (primer hueco que abarca las páginas 0,

1 y 2), el elemento “Pi” describe el trozo de memoria virtual ocupado por un proceso (el Pi que abarca las

páginas 3, 4 y 5) y así sucesivamente.

Como no se desea trabajar con memoria dinámica, se decide implementar la lista anterior con un array de

un tamaño predeterminado (en principio el de la máxima fragmentación “número de trozos” en que puede

estar dividida la memoria virtual).

Para completar la implementación, se dispondrá de la variable “primero” que indicará cuál es el primer

elemento de la lista, de forma que la representación del estado de la memoria virtual de la figura mediante

el array podría ser la siguiente:

Donde sólo se indica el puntero al siguiente para no complicar el dibujo. Las posiciones del array no

utilizadas para describir los trozos actuales en que está fragmentada la memoria, se han expresado con

rectángulos sombreados.

Puede observarse que las tres primeras páginas están vacías (primer hueco H1), las tres páginas

siguientes están ocupadas por el proceso Pi, las cuatro siguientes están libres y las cinco

siguientes están ocupadas por el proceso Pk, y el resto de páginas se supone que están libres.

Se trata, entre otras cuestiones, de analizar si es más eficiente en ocupación de memoria el

gestionar la memoria virtual libre y ocupada mediante un mapa de bits o una única lista

doblemente encadenada tal que:

Los elementos de la lista (que incluye tanto la descripción de zonas de memoria libre

“huecos” como las ocupadas por procesos), están ordenados por dirección

Se usa el algoritmo NEXT FIT (siguiente que sirva) para asignar memoria a un

proceso.

H3

H1

H2

Pi

Pk

primero H1 Pi H2 Pk H3

N 0 1 2 3 4 5 6 7 primero

Pk

2

H1 H2 H3 Pi

E.U. de Informática-U.P.M. Sistemas Operativos

18

Se pide:

1. Razonar sobre la eficiencia de memoria del mapa de bits frente a la lista encadenada:

a. Indicar razonadamente cuál sería el tamaño del mapa de bits expresado en bytes.

b. Recordando que el sistema puede gestionar un máximo de 128 procesos concurrentemente, razonar

si el número máximo de trozos en que puede estar dividida la memoria virtual es 256 ó 257.

c. Indicar los campos (con su significado) que tendría cada elemento del array de la lista.

d. Supuesto que los campos anteriores tienen que ocupar cada uno de ellos un número de bytes entero

(1, 2, 3, etc.) y eligiendo siempre el valor menor para poder representar cada campo, indicar el

tamaño total (en bytes) que ocuparía el array donde se implementaría la lista encadenada.

2. Indicar qué información debería guardarse en el descriptor de cada proceso (tanto para el caso del

mapa de bits como el de lista encadenada) para que cuando un proceso termine, pueda liberarse la

zona de memoria virtual ocupada por el proceso. Poner como ejemplo el caso del proceso Pk de la

figura.

3. Cuando un proceso termina, en el caso de gestión con mapa de bits, básicamente habría que hacer:

Poner a 1 los bits del mapa de bits que se correspondan con las páginas ocupadas por el proceso

Poner en la Tabla de Páginas, P=0 en todos los descriptores de las páginas ocupadas por el

proceso

Invalidar las entradas de la caché de la MMU que tengan descriptores de páginas del proceso

Liberar el descriptor utilizado para gestionar el proceso

Indicar de forma parecida (solo que para el caso de gestión mediante lista encadenada), qué deberá

hacer el sistema operativo cuando se desee crear un proceso cuyo ejecutable resida en el Sistema de

Ficheros (por ejemplo en /ejemplos/ejecutable.exe). En el caso de utilizar una expresión del estilo: “se

inicializa tal variable”, deberá concretarse a qué valor se inicializa. NO CONSIDERAR LOS

CASOS DE ERROR.

4. Indicar (también para lista encadenada) qué deberá hacer el sistema operativo si decide compactar la

Memoria Virtual. Poner como ejemplo el caso de la figura en la que tan sólo existen el proceso Pi y

Pk.

E.U. de Informática-U.P.M. Sistemas Operativos

19

E.U. de Informática Departamento de Informática Aplicada

Examen final de Sistemas Operativos I 12 de diciembre de 2001

EJERCICIO 2. (puntuación 3’5 puntos) Tiempo Estimado 60 m

Un sistema operativo usa un sistema de memoria virtual paginada con direcciones virtuales de 32 bits y

con páginas de 4KB. La tabla de páginas reside completamente en memoria principal, siendo el tamaño

del descriptor de cada entrada de la tabla de páginas de 32 bits.

El espacio virtual es único por proceso, aunque ningún proceso llega a necesitar más de 16 MB. De este

espacio, 12 MB se utilizan para almacenar el área de código más el área de datos a partir de la dirección

virtual 0. Los 4 MB restantes se destinan al espacio de pila, que se almacena comenzando en la dirección

virtual más alta y creciendo hacia direcciones bajas.

1. ¿Cuánto ocupa la tabla de páginas? (0,25 puntos)

2. ¿Cuál es la ocupación útil (entradas ocupadas) en % de la tabla de páginas? (0,25 puntos)

Posteriormente, se decide usar un sistema de tablas de dos niveles, como se muestra a continuación.

Una dirección virtual se interpreta de la siguiente manera: Los 10 bits de mayor peso sirven para

seleccionar la entrada de la tabla de primer nivel. Esta entrada contiene el número del marco donde reside

la tabla de páginas de segundo nivel. Los 10 bits siguientes se usan para seleccionar una entrada de la

tabla de segundo nivel. Esta entrada contiene el número del marco donde está cargada la página. Una vez

localizado el marco, solo hace falta sumarle los 12 bits del desplazamiento de la dirección virtual.

Tabla de páginas

de primer nivel

Tablas de páginas

de segundo nivel

Marcos de

página

marco

Entrada de 1er

nivel Entrada de 2º nivel Desplazamiento

10 bits 10 bits 12 bits

E.U. de Informática-U.P.M. Sistemas Operativos

20

Supuesto un proceso de este sistema, que ocupa como máximo 16 MB, y sabiendo que la tabla de primer

nivel siempre está cargada en memoria durante la ejecución del proceso, mientras que las tablas de

segundo nivel se cargan bajo demanda, responda razonadamente a las siguientes preguntas:

3. ¿Qué tamaño tiene cada una de las tablas? (0,25 puntos)

4. ¿Cuántas tablas de segundo nivel utiliza el proceso? ¿Qué índices se ocupan de la tabla de primer

nivel? (0,5 puntos)

5. ¿Cuánto espacio de memoria se necesita para almacenar simultáneamente todas las tablas necesarias?

(0,25 puntos)

6. ¿Qué ventaja tiene este sistema con respecto al de una sola tabla de páginas? (0,25 puntos)

7. ¿Qué inconveniente presenta este modelo si la MMU no dispone de TLB? (0,25 puntos)

El registro base de la tabla de páginas del proceso (RBTP) indica que la tabla de primer nivel está cargada

a partir de la dirección física $F2000. La dirección física tiene un tamaño de 24 bits.

El formato de descriptor, que ocupa 32 bits, tanto de la tabla de primer nivel como de las de segundo

nivel, es el siguiente:

Nº de marco (12 bits) Reservado (19 bits) Bit de presencia

En un momento dado, el contenido de ciertas direcciones de memoria principal, en hexadecimal, es el

siguiente:

Dir. Física 4 BYTES

$0F2000 100F...1

$0F2100 1F30...4

$0F2FFC 0F40...1

$0F3000 0C8F...0

$0F30C8 1013...5

$0F3FFC 1013...4

$0F4000 0F42...1

$0F4C78 1F52...1

$0F4FFC 0F41...8

$1F5000 A041...8

8. Dada la dirección virtual $FFF1E703, describa detalladamente los pasos que hay que seguir y las

direcciones involucradas, para traducir la anterior dirección virtual en una dirección física. ¿Qué

dirección física ha obtenido? (1,5 puntos).

E.U. de Informática-U.P.M. Sistemas Operativos

21

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 14 de junio de 2003

EJERCICIO 3 (3,5 puntos) Tiempo: 60 min.

Se desea implementar un sistema operativo con multiprogramación y memoria virtual paginada con las

características siguientes:

Un único espacio de memoria virtual de 4GB a compartir por todos los procesos que se creen.

El bus de datos es de 32 bits.

MMU con caché interna (TLB) de 64 entradas que incluyen los bits R (Referenciada) y M (Modificada).

Una memoria principal de 512MB.

Páginas de 8KB.

Tabla de Páginas Invertida cargada completamente en memoria principal.

Mapa de Bits para llevar el control de la memoria virtual libre y ocupada.

Algoritmo LRU (aproximado) como política de sustitución de páginas.

Una Tabla de Páginas Invertida tiene una entrada por cada marco de memoria. Cada entrada indica, entre

otras cosas, la página que está cargada en el marco correspondiente.

Responder, de forma razonada, a las cuestiones siguientes:

1. Indicar el formato (campos con su significado y tamaño en bits) de un descriptor de la Tabla de

Páginas Invertida (supuesto que cada descriptor debe ocupar un número entero de bytes) y

calcular el tamaño en bytes de dicha tabla.

2. Indicar el tamaño en bytes que ocupa el Mapa de Bits que lleva el control de la memoria virtual

libre y ocupada.

3. Indicar el tipo de estructura de datos que se crea más aconsejable para llevar el control de la

memoria principal libre y ocupada (marcos de página) de forma que se agilice la búsqueda de un

marco libre cuando se produzca falta de página. Calcular el tamaño en bytes de esta estructura

supuesto que una variable o campo de una estructura debe ocupar un número entero de bytes.

4. Cuando se utiliza únicamente una Tabla de Páginas clásica (no invertida y no multinivel) que está

cargada en memoria principal y una MMU que cuenta con RBTP (Registro Base de la Tabla de

Páginas) así como su correspondiente TLB, el número máximo de accesos a memoria principal

cuando se intenta acceder a una dirección virtual que pertenece a una página presente en memoria

principal es de tres. Indicar cuándo se produce esta situación y a qué se deben los tres accesos.

5. Cuando se utiliza una Tabla de Páginas Invertida, como en nuestro caso, la situación descrita en el

punto anterior (4), en general, no puede resolverse con tan sólo tres accesos a memoria principal.

Indicar por qué y cuál podría ser (con los datos del enunciado) el número máximo de accesos a

memoria principal.

6. Para poder implementar, de forma aproximada, el algoritmo de sustitución de páginas LRU, se

dispone de una interrupción periódica (sea “intLRU”) que hace que tome control el Sistema

Operativo (a través de la rutina de tratamiento de dicha interrupción). Se supone que cuando

sucede “intLRU”, la MMU vuelca el contenido de la TLB en una zona de memoria conocida por

el Sistema Operativo (sea “tablaTLB” definido como un array de 64 descriptores con el formato

del apartado 1).

a. Indicar someramente en qué podría consistir la aproximación al algoritmo LRU.

b. Indicar qué estructuras de datos podrían modificarse o añadirse para soportar la

aproximación al algoritmo LRU descrita en 6.a.

c. Indicar en pseudocódigo el contenido de la rutina de tratamiento de la interrupción

“intLRU”.

E.U. de Informática-U.P.M. Sistemas Operativos

22

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 15 de Diciembre de 2004

EJERCICIO 3 (3,5 puntos) Tiempo Estimado: 60 m

Un sistema operativo ofrece a los usuarios un esquema de gestión de memoria en donde el espacio lógico de un

proceso consiste en una colección de bloques de tamaño variable, denominados segmentos, repartidos por la

memoria física. Ahora, la imagen de un proceso se divide en segmentos (por ejemplo: de código, de datos y de

pila). Cada segmento ocupa un bloque en memoria principal de tal forma que las direcciones lógicas que genera la

cpu son del tipo <Número de segmento, desplazamiento>. Como se puede ver en la figura, la

traducción de la dirección lógica (s,d) a una dirección física df se realiza con la ayuda de una tabla de

segmentos por proceso, que reside en memoria principal. El número de segmento s es el índice en la tabla de

segmentos para obtener la entrada que contiene la dirección física b donde comienza el segmento, a la cual se le

suma el desplazamiento d para obtener df.

cpu ds ds

b

Memoria física

b

+

Tabla de segmentos

df

Base

Se pide:

1. Explique por qué es posible el acceso a direcciones fuera de un segmento.

2. Indique qué modificaciones propone al modelo anterior para que se controlen los accesos indebidos. Dibuje

de nuevo la figura con las modificaciones propuestas.

3. Si el mapa (en decimal) de segmentos de un proceso en la memoria física es el mostrado a continuación,

indique qué valores tendrían los elementos de la tabla de segmentos supuesto el punto 2.

s0 s3 s2 s4 s1

1400

2400

3200

4300

4700

5700

6300

6700

0000

4. Escriba las tablas de segmentos de dos procesos en donde se vea que comparten el bloque contenido en el

segmento 2. ¿Tienen que llamarse con igual número de segmento en los dos procesos?

5. Justifique si este modelo de gestión de memoria sufre de fragmentación externa y/o interna.

Se modifica el esquema de la figura de tal manera que los segmentos están paginados en disco, por lo que

ahora la memoria principal está dividida en marcos. Cada segmento cuenta con una tabla de páginas. El

contenido de la tabla de segmentos se modifica ya que la entrada de un segmento s, no contiene la dirección de

inicio del segmento b, sino la dirección de comienzo de la tabla de páginas tp del segmento.

6. Explique y dibuje un esquema parecido al de la primera figura en donde se vea la traducción de una

dirección <s,d> en una dirección física.

7. Justifique si este modelo sufre de fragmentación externa y/o interna.

8. En el caso de que no existiera TLB, ¿cuántos accesos a memoria como mínimo hay que realizar con este

esquema? Justifique la respuesta.

E.U. de Informática-U.P.M. Sistemas Operativos

23

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 17 de Junio de 2005

EJERCICIO 3 (3,5 puntos) Tiempo Estimado: 60 m

Sea un disco que tiene 1200 cilindros, 16 pistas por cilindro, 56 sectores por pista, 512 bytes por sector y una velocidad de

6000 rpm (revoluciones por minuto). Está formateado con interleaving=1. Entre dos sectores adyacentes hay un espacio de

relleno (gap) de 1/8 el tamaño del sector; es decir, después del último byte de un sector y antes del primer byte del siguiente,

hay 64 bytes de relleno (ver figura).

sector 1 sector 2sector 29 sector 30 sector 28 sector 56……..

gap

El tiempo de posicionamiento del brazo viene dado por la expresión t = 1 + (0,5 * d) (expresado en milisegundos) siendo d la

distancia en cilindros desde el origen al destino.

Notas:

Para todos los apartados, inicialmente la cabeza lectora/grabadora se supone situada en el cilindro 0 y al principio

del sector 1.

La numeración de cilindros y pistas empieza por 0 y la de sectores por 1.

El cylinder skew (sesgo) es de 0

SE PIDE:

1) [1 punto] Calcule la mínima velocidad de transferencia (del controlador a memoria) que requiere este disco. Es decir (y en

relación con la figura anterior) en el tiempo que tardan en pasar por debajo de la cabeza lectora/grabadora: el gap del

sector 1, el sector 29 y el gap del sector 29, se ha tenido que transferir el sector 1 desde el buffer de la controladora hasta

memoria. Suponga que el bus está siempre disponible para realizar la transferencia y que el tiempo de comprobación del

checksum es despreciable. Exprese el resultado en bits por segundo. En los cálculos opere con la mayor precisión decimal

posible.

2) [1 punto] En un momento dado, en la cola de peticiones de disco existen las siguientes dos peticiones (por orden de

llegada):

1. Cilindro 49, pista 0, sector 15

2. Cilindro 49, pista 10, sector 44

Calcule el tiempo total invertido en completarlas siguiendo el algoritmo FCFS. Tenga en cuenta los tiempos de

posicionamiento, espera de rotación y transferencia (suponga la misma velocidad de transferencia que la calculada en el

apartado anterior). La distribución de sectores en una pista de 56 sectores con interleaving=1 es: 1, 29, 2, 30, 3, 31, 4, 32,

5, 33, 6, 34, 7, 35, 8, 36, 9, 37, 10, 38, 11, 39, 12, 40, 13, 41, 14, 42, 15, 43, 16, 44, 17, 45, 18, 46, 19, 47, 20, 48, 21, 49,

22, 50, 23, 51, 24, 52, 25, 53, 26, 54, 27, 55, 28, 56.

3) [1,5 puntos] Se cambia el disco por otro similar en el que la función de tiempo de posicionamiento viene dada por la

expresión t = 0,8*d (expresado en milisegundos) y el número de sectores ha cambiado a 50 por pista (manteniéndose igual

el resto de datos). La distribución de sectores en una pista de 50 sectores con interleaving=1 es: 1, 26, 2, 27, 3, 28, 4, 29, 5,

30, 6, 31, 7, 32, 8, 33, 9, 34, 10, 35, 11, 36, 12, 37, 13, 38, 14, 39, 15, 40, 16, 41, 17, 42, 18, 43, 19, 44, 20, 45, 21, 4 6, 22,

47, 23, 48, 24, 49, 25, 50. Se pide:

1. Determinar el orden en el que se atenderán las siguientes dos peticiones de disco pendientes aplicando el

siguiente algoritmo de planificación del brazo de disco: “la siguiente petición a atender es aquella que se

encuentre más cerca: se tarde menos en llegar al cilindro y sector solicitado”. Petición 1: cilindro 0, pista 6,

sector 21; Petición 2: cilindro 5, pista 3, sector 16

2. Para cada petición, indique el tiempo necesario para posicionarse sobre el cilindro, pista y sector solicitados.

E.U. de Informática-U.P.M. Sistemas Operativos

24

E.U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 13 de septiembre de 1996

PROBLEMA 3 (3´5 PUNTOS) 75 Minutos

Se dispone de un sistema de ficheros de un determinado sistema operativo (tipo UNIX) con bloques de

1Kbyte, soportado por un disco de 64Mbytes, que tiene las siguientes características :

1. El formato lógico del disco tiene la estructura :

Bloque de

autoarranque

Superbloque

Nodos-i

Mapa de bits

de nodos-i

Mapa de bits

de bloques

Bloques de

datos

...... ... ... ...

Bloque de autoarranque (bloque 0): reservado para el sistema

Superbloque (bloque 1) : que contiene la descripción de la estructura del sistema de ficheros. Entre

otras cosas, en nuestro caso indica que existen 10.000 nodos-i.

Mapa de bits de nodos-i : para saber qué nodos-i están asociados a algún fichero y cuáles están

libres (el i-nodo 0 aparece como asignado desde que se formatea el disco. No se utiliza para ningún

fichero)

Mapa de bits de bloques : para controlar los bloques libres y asignados del disco (el bit 0 indica si

el bloque 0 está asignado o libre, el 1 si el bloque 1 está asignado o libre,...)

Nodos-i : con la siguiente estructura :

2. Tanto los nodos-i como los bloques de datos se asignan de forma ascendente.

3. Las entradas de un directorio ocupan 16 bytes. Cada entrada consta de dos campos :

Número de

nodo-i

Nombre del

fichero

2 bytes 14 bytes

Características

del fichero

7 bloques

directos

Indirecto simple

Indirecto doble

El tamaño de un nodo-i es de 32 bytes y el de una

dirección de bloque es de 2 bytes. Puede haber más de

un nodo-i en un bloque de disco. Aunque el nodo-i 0

no se utiliza, los 32 primeros bytes del primer bloque

de nodos-i están reservados para él.

E.U. de Informática-U.P.M. Sistemas Operativos

25

Cuando se crea un directorio, este siempre consta de las entradas “.” y “..”, que hacen referencia al propio

directorio y al directorio padre respectivamente.

Suponiendo que el disco está vacío, INDICAR:

a) Número de bloques que ocupa el mapa de bits de bloques

b) Número de bloques que ocupa el mapa de bits de i-nodos

c) Numero de bloques que ocupan los nodos-i

d) Tamaño máximo que podría tener un fichero que colgase directamente del directorio raíz

En un momento dado se crea la siguiente jerarquía de directorios en el disco :

d1

a

d2

b

/ -> fecha de creación : 1-enero-96

d1 -> fecha de creación : 2-enero-96

d2 -> fecha de creación : 5-enero-96

a -> fecha de creación : 3-enero-96 ; tamaño : 1026 bytes

b -> fecha de creación y tamaño : 10-enero-96 ; tamaño : 7170 bytes

Teniendo en cuenta las fechas de creación de cada uno de los directorios y ficheros (creados de

forma secuencial), INDICAR :

e) En qué bloques de datos se encontrará la información de cada uno de ellos y qué número de i-nodo

tienen asociado.

E.U. de Informática-U.P.M. Sistemas Operativos

26

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 25 de Junio de 1997

EJERCICIO 3 (3,5 puntos) Tiempo: 60 min.

Se pretende comparar ciertos aspectos de las implementaciones del sistema de ficheros en sistemas

operativos del tipo Unix y MS-DOS. En cada uno de los sistemas, el formateo lógico de un mismo disco

daría como resultado respectivamente las estructuras lógicas que se describen a continuación. El tamaño

del bloque, para ambos sistemas, es de 1Kb.

Bloque de

autoarranque

FAT Bloques de

entradas del

Directorio Raíz

Bloques de

datos

...... ... ... 0 1 n 1 1 2

Entre otras informaciones, el bloque de autoarranque contiene:

Máximo nº entradas que puede contener el directorio raíz

Número de bloques que ocupa la FAT

Una entrada de directorio, ocupa 32 bytes y presenta el siguiente aspecto:

Primer bloque

de datosNombre del

fichero

Tipo del

fichero:

D/F

Tamaño en

bloques

FAT 0 1 2 3 4 5 6 7 8 … n-2 n-1 n

Los dos primeros bloques de datos (0 y 1) están reservados por el sistema, por lo que la primera entrada

útil es la 2. Una entrada con un 0 indica bloque libre, y con la marca <EOF>, fin de fichero.

UNIX:

Bloque de

autoarranque

Superbloque

Nodos-i

Mapa de bits

de nodos-i

Mapa de bits

de bloques

Bloques de

datos

...... ... ... ... m 1 0

MS-DOS

El Tipo de fichero indica

si es un directorio (D) o

un fichero (F).

E.U. de Informática-U.P.M. Sistemas Operativos

27

Bloque de autoarranque: reservado para el sistema

Superbloque: contiene, entre otras cosas, el número máximo de nodos-i.

Mapa de bits de nodos-i: indica nodos-i que están libres o asociados a ficheros. Los nodos-i se

numeran desde 0, pero el primer nodo-i útil es el 1, ya que el 0 no se utiliza.

Mapa de bits de bloques: indica bloques libres y asignados del área de datos del disco, comenzando

desde el bloque 0.

Nodos-i: ocupan 32 bytes y las entradas de directorio 16 bytes, tal y como se ve a continuación:

Indirecto simple

Indirecto doble

7 bloques

directos

Permisos rwx

Propietario

Fechas

Tamaño en

bloques

Tanto los nodos-i como los bloques de datos se asignan de forma ascendente.

En ambos sistemas, al crear un directorio se incluyen siempre las entradas “.” y “..”, que hacen referencia al propio

directorio y al directorio padre respectivamente.

Se pide:

1. Para cada sistema, indique el número máximo de ficheros o directorios que se pueden crear.

2. Sea el siguiente árbol, cuyo orden de creación ha sido /, d1, d2, a y b. Los ficheros a y b ocupan 1

bloque de datos cada uno.

d1

a

d2

b

a) En el caso de MS-DOS, rellene las estructuras mostradas en la hoja de respuestas con el contenido

de las entradas significativas de la FAT (las que indican bloques ocupados) y el contenido de cada

uno de los directorios, incluido el directorio raíz. (Los bloques del directorio raíz numérelos DR1,

DR2, …etc.).

b) En el caso de Unix, muestre, igualmente, el contenido de los nodos-i ocupados y el contenido de

cada uno de los directorios, incluido el directorio raíz.

3) Explicar razonadamente para ambos sistemas cuál sería el mínimo número de bloques que hay que leer

(indicar cuáles) para obtener el contenido del fichero /d2/b, supuesto conjuntamente que:

a) En MS-DOS la FAT está ya cargada memoria.

b) En Unix se accede al nodo-i correspondiente para leer el contenido de un fichero o directorio.

c) En ambos sistemas, no hay ningún tipo de información almacenada en memoria de ningún fichero o

directorio.

Nº de nodo-i Nombre del fichero

Entrada de directorio

E.U. de Informática-U.P.M. Sistemas Operativos

28

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 10 de diciembre de 2003

EJERCICIO 3 (3,5 puntos) Tiempo: 60 min.

Tenemos un sistema de ficheros tipo unix con las siguientes características: disco de 32Gbytes, bloques de 512

bytes, i-nodos de 64 bytes con 6 punteros directos y 2 indirectos simples, los i-nodos se almacenan en los bloques

de disco del 100 al 20.100, el mapa de i-nodos ocupa los bloques del 20.101 al 20.140. El sistema operativo carga

en memoria el i-nodo de un fichero cuando se realiza la operación de abrir fichero sobre él y lo mantiene hasta que

se cierra el fichero.

a) Se quiere controlar la ocupación de todo el disco mediante un mapa de bits que se almacenará a

partir del bloque 22.000. Calcula el tamaño que debería tener (en bytes) e indica qué bloques

ocupará.

En el sistema anterior tenemos un fichero, cuya ruta completa es “/lrod/btxai”, que ocupa 4600 bytes. Los

directorios “/” y “lrod” tiene asignados los i-nodos 1 y 5 respectivamente y los bloques de datos 40.000 y 40.001

respectivamente. Inicialmente solo está cargado en memoria el i-nodo de “/”. El fichero “btxai” tiene asignado el i-

nodo 12 y los bloques lógicos que contienen los datos de este fichero están almacenados en los siguientes bloques

físicos:

Nº Bloque lógico 0 1 2 3 4 5 6 7 8

Nº Bloque físico 81000 81002 81003 54500 54501 54502 77600 77601 77602

Si se necesita algún otro bloque para la gestión de la información del fichero se utilizan los bloques físicos a partir

del 99.000.

b) Suponemos que el sistema no tiene ningún buffer en memoria para almacenar un bloque leído del

disco; es decir, después de leer un bloque coge la información necesitada, la entrega y desecha dicho

bloque. Indica a qué bloques del disco van a acceder las llamadas open, lseek y read del programa 1.

Se deberá especificar el orden en que se accede a ellos y cuántas veces se va a realizar la lectura y/o

escritura del bloque en el disco.

Para mejorar el tiempo de acceso se decide implementar una cache para bloques de disco. Esta cache consistirá en

un buffer en memoria principal que contiene los últimos 5 bloques de disco a los que se ha hecho referencia,

siguiendo una política FIFO para la sustitución de bloques. A continuación se indican algunos aspectos del

funcionamiento de la cache de bloques:

- Varios procesos pueden estar accediendo simultáneamente a un mismo bloque. El sistema no expulsará de la

cache a un bloque que está siendo utilizado en un momento dado.

- El sistema operativo tiene un proceso que periódicamente actualiza en el disco el contenido de los bloques

cargados en la cache que considera necesarios.

- En el sistema puede haber distintas particiones con tamaño de bloque físico distinto. Se desea que el sistema de

cache de bloques sirva para almacenar bloques procedentes de distintas particiones.

c) Supongamos que para gestionar la cache de bloques el sistema tiene un descriptor para cada uno de

los 5 buffers que la componen. Indica qué campos debe contener un descriptor de buffer y la utilidad

de cada uno de los campos.

Programa 1

df = open(“/lrod/btxai”) /* abre el fichero */

lseek (df, 2304) /* avanza el puntero del fichero 2304 bytes */

for i = 1 to 512 do

read (df, destino, 4) /* lee 4 bytes a partir de la posición actual */

destino = destino + 4 /* y los deja en destino */

... /* trabaja con los datos */

end for;

close (df);

E.U. de Informática-U.P.M. Sistemas Operativos

29

E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 14 de diciembre de 2005

EJERCICIO 3 (puntuación 3’5 puntos) Tiempo Estimado 60 m

Un sistema operativo trabaja sobre un disco que cuenta con las siguientes características: 600 cilindros,

16 pistas por cilindros, 36 sectores por pista, 512 bytes por sector. La numeración de cilindros, pistas y

sectores comienza en 0. Inicialmente, la cabeza lectora/grabadora está situada en el cilindro 0, pista 0,

sector 0. La velocidad de rotación es de 6000 revoluciones por minuto. El tiempo de posicionamiento

entre cilindros consecutivos es de 1 ms. La controladora cuenta con un buffer interno de 512 bytes donde

almacena los bits que se van leyendo según pasan por debajo de la cabeza lectora/grabadora y cuando

finaliza la lectura de un sector comienza a transferirlo a la memoria RAM. El factor de interleaving es de

4, es decir entre dos sectores lógicamente consecutivos se intercalan otros cuatro. La distribución de

sectores en una pista sería la siguiente:

0,29,22,15,8,1,30,23,16,9,2,31,24,17,10,3,32,25,18,11,4,33,26,19,12,5,34,27,20,13,6,35,28,21,14,7.

El tiempo de transferencia de un sector almacenado en el buffer del controlador a memoria principal

coincide con el de la lectura de un sector.

El driver de disco del sistema operativo define bloques físicos cuyo tamaño coincide con el del sector.

Los numera desde 0 de manera secuencial, de tal forma que ofrece una visión del disco como una

secuencia lineal de bloques. Así, por ejemplo, el bloque 35 se sitúa en el cilindro 0, pista 0 y sector 35. El

bloque físico 36 se sitúa en el cilindro 0, pista 1, sector 0, etc. El factor de interleaving solo es visible al

controlador y es transparente al driver del disco, que ve los sectores del disco como si fuesen

consecutivos.

Por otra parte, el sistema de ficheros mantiene un árbol en que un fichero datos.txt tiene como primer

bloque de datos el bloque físico 7.

Se pide:

1. Indique en qué cilindro pista y sector se sitúan los bloques 40 y 43600.

2. Si el sistema de ficheros utiliza el sistema de almacenamiento contiguo para los bloques de un

fichero. ¿Cuánto tiempo se empleará en leer los dos primeros bloques del fichero datos.txt?

Considere que este tiempo está formado por el tiempo de posicionamiento + tiempo de latencia +

tiempo de transferencia desde el disco a la controladora + tiempo de transferencia desde la

controladora a la memoria principal.

3. Repita el apartado anterior si el sistema de ficheros utiliza la tabla FAT siguiente:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 …

3 14 L Eof 40 72 300 L L Eof … 5 33 …

L = bloque libre.

Eof = fin de fichero.