Download Se desea eliminar la Tarea del Sistema del sistema operativo MINIX
Document related concepts
Transcript
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).