Se desea eliminar la Tarea del Sistema del sistema operativo MINIX

Anuncio
Examen de Sistemas Operativos
Tiempo estimado: 60 minutos
EJERCICIO 2
Junio de 2005
Puntuación: 6 puntos
Nombre y Apellidos: .....................................................................................................................
Número de matrícula: .........................................
DNI: ..........................................................
1. Se desea eliminar la Tarea del Sistema del sistema operativo MINIX. Se pide indicar dos
posibles soluciones a adoptar para que este sistema operativo siga funcionando
correctamente, detallando para cada una:


Breve descripción de la solución
A qué otros procesos del sistema operativo afecta la solución planteada (indicar
nombre del proceso y breve descripción de cada una de las modificaciones que se
deberían realizar)
(2 puntos)
Solución 1
Breve descripción de la solución:
Otra tarea del núcleo se encarga de asumir el trabajo que llevaba a cabo la Tarea del Sistema
(por ejemplo, la Tarea de Floppy)
Proceso(s) afectados: la Tarea de Floppy, el Gestor de Memoria y el Gestor de Ficheros
Descripción de las modificaciones:
En el Gestor de Memoria y el Gestor de Ficheros, en aquellas partes del código en las que
enviaban un mensaje a la Tarea del Sistema será necesario cambiar al destinatario para que
pase a ser la Tarea de Floppy.
En la Tarea de Floppy será necesario añadir todo el código que actualmente implementa la
Tarea del Sistema. Además, deberá modificarse el procedimiento principal de esta Tarea para
que sea capaz de recibir y procesar los mensajes que trataba la Tarea del Sistema.
Solución 2
Breve descripción de la solución:
El Gestor de Memoria y el Gestor de Ficheros pasan a ejecutarse en modo supervisor, de forma
que tienen permiso de acceso a la tabla de procesos del Kernel y pueden acceder a espacios de
memoria que se encuentren fuera del rango de direcciones de su imagen de memoria.
Proceso(s) afectados: el Gestor de Memoria y el Gestor de Ficheros
Descripción de las modificaciones:
En el Gestor de Memoria y el Gestor de Ficheros, en aquellas partes del código en las que
enviaban un mensaje a la Tarea del Sistema para solicitarle un trabajo, se eliminará el envío
del mensaje y será el propio Gestor el que ejecute la función correspondiente (por ejemplo: con
la llamada fork, será el Gestor de Memoria el encargado de asignar e inicializar correctamente
la entrada de la tabla de procesos del Kernel asociada al nuevo proceso que se está creando.
También con esta llamada, el Gestor de Memoria pasará a encargarse él directamente de la
copia de la imagen de memoria del proceso padre al proceso hijo).
2. El Sistema Operativo MINIX no almacena mensajes en memoria temporal (rendez-vous).
Explicar brevemente por qué esta decisión de diseño genera problemas con las
interrupciones de reloj y de teclado. (1 punto)
Solución
En el sistema operativo MINIX, las rutinas de tratamiento de interrupción (RTI) avisan a la
tarea correspondiente de un determinado evento (la RTI de terminal avisa que se ha
pulsado/soltado una tecla, la RTI de reloj que el reloj ha generado una interrupción y la RTI de
floppy que ha terminado la operación programada – transferencia por DMA, posicionamiento
del brazo de L/E del disco, ...). En el caso del reloj y del teclado, las interrupciones se pueden
producir justo en el momento en el que la tarea a avisar se encuentre ejecutando un
determinado trabajo (es decir, no se encuentran esperando recibir un mensaje de la RTI). Tal y
como se implementa el paso de mensajes en MINIX (rendez vous), el aviso de la RTI a la tarea
de reloj y a la tarea de tty no siempre puede realizarse mediante el mecanismo de paso de
mensajes, ya que si la rutina envía un mensaje y el receptor no está esperando recibirlo, habría
que bloquear a la RTI. Esta situación de bloqueo de una RTI no es aceptable por diversas
razones (por ejemplo, porque las RTI deben ejecutarse en un tiempo corto y finito).
Por esta razón, MINIX trata de forma especial el aviso que la RTI de reloj y la RTI de teclado
hacen a la Tarea de reloj y la Tarea de tty respectivamente: se comprueba si la tarea está
esperando recibir un mensaje; si es así, se avisa a la Tarea del evento que se ha producido
enviándole un mensaje; en caso contrario, la RTI avisa a la tarea mediante otro mecanismo
(usando una variable del Kernel).
3. Se modifica el Sistema Operativo MINIX para que el Gestor de Ficheros pueda solicitar
nuevas lecturas/escrituras de bloques a la Tarea de Floppy mientras ésta sirve la actual. Con
el fin de mejorar la velocidad de acceso a la información de floppy, en esta modificación de
MINIX la Tarea de Floppy implementa el algoritmo del ascensor para seleccionar la
siguiente petición a servir entre las encoladas por el Gestor de Ficheros. Un alumno de
sistemas operativos decide probar esta nueva versión de MINIX e implementa un programa
que lee una gran cantidad de información que se encuentra distribuida aleatoriamente por
todo el floppy. Para su sorpresa, la velocidad de ejecución total del programa sobre MINIX
modificado fue similar a la que obtuvo con MINIX sin modificar (en ambos casos el único
programa de usuario en ejecución era el de prueba). ¿crees que la modificación planteada no
sirve para nada?. Justificar la respuesta. (1 punto)
Solución
La modificación planteada sirve para mejorar los tiempos medios de acceso a la información
de floppy, siempre y cuando existan peticiones pendientes de ser servidas. Con el programa de
prueba que se plantea, el proceso de usuario irá solicitando (mediante llamadas al sistema
read) bloques de disco uno a uno. En esta situación, la Tarea de Floppy nunca podrá aplicar
realmente el algoritmo del ascensor, ya que nunca tendrá peticiones pendientes de ser servidas.
El error del alumno se encuentra en el programa de prueba. Para poder evaluar la nueva
versión de MINIX, debería lanzar varios procesos que solicitasen información de floppy en
paralelo.
4. En un momento dado se está ejecutando el Sistema Operativo MINIX en un PC y debido a
una caída de tensión se corrompe todo el mapa de bits de i-nodos del sistema de ficheros de
floppy (todos los bits del mapa pasan a tener valor 0 – i-nodo libre). Teniendo en cuenta que
el resto del sistema de ficheros está intacto (sin corromper), ¿hay alguna forma de recuperar
el contenido de ese sistema de ficheros o se ha perdido para siempre?. Si la respuesta es
afirmativa indicar cómo se puede recuperar la información del sistema de ficheros y, si es
negativa explicar brevemente por qué no es posible la recuperación. (1 punto)
Solución
Todavía existe la posibilidad de recuperar el sistema de ficheros.
Usando la información del superbloque podemos saber cuál es el primer bloque de datos (que
está asignado al directorio raíz). Teniendo en cuenta que los bloques de i-nodos y los bloques
de datos están intactos, podemos realizar un análisis del disco en profundidad, partiendo del
directorio raíz, que nos permitiría ir obteniendo qué i-nodos se encuentran asignados. De esta
manera podríamos reconstruir el mapa de i-nodos del sistema de ficheros dañado.
5. En el Sistema Operativo MINIX, cuando se abre un fichero el Gestor de Ficheros recorre
toda la tabla de i-nodos para comprobar si el i-nodo del fichero en cuestión ya se encuentra
cargado en memoria y por tanto no hay que traerlo de disco. Un alumno de Sistemas
Operativos opina que al haber aumentado tanto de tamaño las memorias y haberse
abaratado, sería más fácil que el Gestor de Ficheros trajera una nueva copia del i-nodo a la
tabla de i-nodos sin tener que recorrer toda la tabla para comprobar si ya está cargado.
Indicar si esta modificación plantea algún problema (justificar la respuesta). (1 punto)
Solución
Tener dos o más copias del mismo i-nodo en la tabla de i-nodos puede plantear problemas de
inconsistencia de la información del sistema de ficheros.
Por ejemplo, si dos procesos abren el mismo fichero (que se encuentra vacío) para escribir, y
cada uno de ellos escribe un carácter, el Gestor de Ficheros asignará un bloque de disco en
ambos casos (anotando cada uno como primer bloque de datos en cada una de las copias del inodo). Cuando ambos procesos cierren el fichero, en disco quedarán reflejadas solamente las
modificaciones de la última copia del i-nodo que se haya cerrado (el bloque de datos asignado
a la copia del i-nodo que primero se ha cerrado se pierde para siempre, ya que está marcado
como asignado en el mapa de bits de zonas, pero no aparece como bloque de datos de ningún inodo de disco).
Descargar