DISEÑO DE SISTEMAS OPERATIVOS. Junio de 2003

 

Ejercicio 1

Sea un sistema con memoria virtual, que usa un algoritmo de reemplazo de páginas FIFO, en el que las direcciones lógicas (virtuales) que tienen un 0 en el bit de mayor peso son de usuario y las que tienen un 1 son de sistema. Este sistema usa un algoritmo de planificación de procesos expulsivo basado en prioridad. Además, el S.O. es no expulsivo (sin llamadas concurrentes), usando para ello el mecanismo de interrupción software. Se pide responder razonadamente a las siguientes cuestiones sobre la rutina de fallo de página de este sistema:

 

a) [Puntuación: 2’5/10] Considérese que el sistema operativo no tiene ningún error de programación y que se produce un fallo de página tal que la dirección que lo causa no pertenece a ninguna región del proceso. Dependiendo de qué código estuviera ejecutando el proceso cuando ocurrió el fallo y del tipo de dirección, se plantean los siguientes casos, cada uno de los cuales se deberá analizar para ver si es posible esa situación y, en caso afirmativo, explicar qué tratamiento requiere analizando si influye en el mismo el valor del puntero de pila en el momento del fallo:

a1) Proceso estaba ejecutando en modo usuario y la dirección de fallo comienza con un 0.

a2) Proceso estaba ejecutando en modo usuario y la dirección de fallo comienza con un 1.

a3) Proceso estaba ejecutando en modo sistema y la dirección de fallo comienza con un 0. Distinga entre el caso de que el fallo se produzca durante una llamada al sistema o en una rutina de interrupción.

a4) Proceso estaba ejecutando en modo sistema y la dirección de fallo comienza con un 1. Distinga entre el caso de que el fallo se produzca durante una llamada al sistema o en una rutina de interrupción.

 

b) [Puntuación: 2’5/10] Supóngase que, no habiendo ningún marco libre y siendo la página que lleva más tiempo residente una que se ha modificado por primera vez y que corresponde con la región de datos con valor inicial, se produce un fallo de página que conlleva una expansión de la pila en una página. Analice qué operaciones de las especificadas a continuación se llevan a cabo dentro de la rutina de tratamiento de ese fallo.

 

c) Supóngase que se produce un fallo de página sobre una página de código que, al no haber marcos libres, causa la expulsión de una página modificada de una región que corresponde con un fichero proyectado en modo compartido. Especifique para cada uno de los dos escenarios planteados a continuación qué activaciones del S.O. se producen desde que ocurre el fallo hasta que el proceso implicado vuelve a ejecutar, especificando para cada activación si hay cambios de estado y/o de contexto, distinguiendo si son voluntarios o involuntarios.

 

c1) [Puntuación: 2’5/10] El proceso que causa el fallo tiene alta prioridad. Existe otro proceso de baja prioridad que la mayor parte del tiempo está realizando llamadas al sistema no bloqueantes (por ejemplo, getpid).

c2) [Puntuación: 2’5/10] El proceso que causa el fallo tiene baja prioridad. Existe otro proceso de alta prioridad que alterna rachas de ejecución en modo usuario con llamadas al sistema para dormirse un cierto tiempo (un intervalo de tiempo pequeño, inferior a la duración de un acceso a disco).

 

Solución

a1) Si la dirección de fallo corresponde con una dirección lógica de usuario y el proceso estaba en modo usuario cuando causó el fallo, hay que comprobar si se trata de una expansión de pila o de un error:

a2) Si la dirección de fallo corresponde con una dirección lógica de sistema y el proceso estaba en modo usuario cuando causó el fallo, se trata de un acceso inválido. Por tanto, es una situación posible y su tratamiento será abortar el proceso (en UNIX mandar la señal SEGV).

a3) Si la dirección de fallo corresponde con una dirección lógica de usuario y el proceso estaba en modo sistema cuando causó el fallo, hay que distinguir si se estaba ejecutando una llamada al sistema o una interrupción:

·        En una llamada al sistema. Desde el código de la llamada se ha accedido al mapa de usuario del proceso para leer/escribir algún parámetro de la llamada. Como en el primer apartado, pueden producirse dos situaciones:

a4) El caso de que la dirección de fallo corresponda con una dirección lógica de sistema y el proceso estaba en modo sistema cuando causó el fallo no es posible, ni desde una llamada ni desde una rutina de interrupción, ya que el S.O. no tiene errores de programación.

 

b) A continuación, se analizan qué operaciones de cada uno de los tres grupos se llevan a cabo en la rutina de tratamiento del fallo de página planteado:

c1) A continuación, se describen las activaciones del S.O. que se producen en la situación planteada:

c2) A continuación, se describen las activaciones del S.O. que se producen en la situación planteada: