Soluciones del examen de septiembre, curso 1997/98

Pregunta 1. Rellenar palabras.

A. Un ejemplo de sistema operativo de estructura sencilla (a veces también conocida como de estructura monolítica) es el MSDOS En cambio dos ejemplos de sistemas operativos con estructura jerárquica son el OS/2 y el UNIX

 

B. La técnica que utiliza el disco como un buffer de gran tamaño se denomina SPOOLING

 

C. La técnica que hace que el procesador ejecute diversas tareas alternando entre ellas, de forma que los usuarios pueden interactuar con sus programas se denomina MULTITAREA (también sería válido TIEMPO COMPARTIDO, e incluso planificación ROUND-ROBIN)

 

D. Gracias al uso de INTERRUPCIONES los dispositivos pueden avisar al sistema operativo que algo ha ocurrido mientras el procesador ejecuta cualquier tarea.

 

E. Posibles inconvenientes que se plantean en las técnicas de prevención del interbloqueo son LA BAJA UTILIZACIÓN DE RECURSOS Y EL BLOQUEO INDEFINIDO Las técnicas de resuelven el problema del interbloqueo mediante su detección presenta el inconveniente del COSTE DE LA RECUPERACIÓN DEL ESTADO DE INTERBLOQUEO

Pregunta 2. Estudiar corrección de algoritmo de exclusión mutua.

Para que una solución sea correcta, ésta debe cumplir 3 requisitos:

Pregunta 3. Implementación de regiones críticas condicionales.

Una posible implementación la pueden encontrar en el texto "Sistemas Operativos. Conceptos fundamentales" de los autores A. Silberschatz, J. Peterson y P. Galvin, en el capítulo 5, páginas 168-169.

Pregunta 4. Flujos de datos y de control en una operación de E/S.

1º. El proceso ejecutándose en modo usuario invoca a una llamada al sistema, que hará que éste pase a ejecutarse en modo sistema. Mediante los parámetros de esta llamada se la pasan al SO la siguiente información: tipo de operación (lectura o escritura, número de bytes de la operación y dirección en donde depositar los bytes leídos (en el caso de una lectura), o desde donde tomar los bytes (en el caso de una escritura).

2º. La ejecución de la llamada al sistema, en modo sistema, consistirá básicamente en: comprobar que los parámetros de la llamada son correctos, construcción de una petición de Entrada/Salida (IORB) y por último encolar dicha petición en la cola de servicio asociada al dispositivo y que será atendida por otro elemento del SO; el manejador de dispositivo. Una vez realizado estos pasos, se notificará de alguna manera al manejador de dispositivo que posee una petición que atender (por ejemplo mediante un semáforo, o simplemente la mera existencia de un IORB en la cola es utilizada como aviso).

3º. El manejador de dispositivo tomará el IORB y enviará una petición al dispositivo a través de su lógica de control.

4º. El dispositivo notifica la realización con éxito o sin él de la Entrada/Salida, mediante una interrupción que será atendida en primera instancia por el manejador de interrupciones del SO, quién una vez identificada la interrupción cederá el control al manejador de dispositivo, para que éste notifique el resultado a la llamda al sistema y ésta al proceso de usuario.

Pregunta 5. Simulación de memoria virtual.

Resultados de cada política (los fallos se muestran como "F"; en la parte inferior se muestra el contenido de los marcos de página ordenados convenientemente).

Política óptima: 7 fallos.

1

3

2

5

1

3

4

1

3

2

5

4

F

F

F

F

 

 

F

 

 

F

F

 

1

1

1

1

1

1

1

1

1

2

2

2

 

3

3

3

3

3

3

3

3

3

5

5

 

 

2

5

5

5

4

4

4

4

4

4

 

Política LRU: 10 fallos.

1

3

2

5

1

3

4

1

3

2

5

4

F

F

F

F

F

F

F

 

 

F

F

F

1

1

1

3

2

5

1

3

4

1

3

2

 

3

3

2

5

1

3

4

1

3

2

5

 

 

2

5

1

3

4

1

3

2

5

4

 

 

 

Política FIFO: 9 fallos.

1

3

2

5

1

3

4

1

3

2

5

4

F

F

F

F

F

F

F

 

 

F

F

 

1

1

1

3

2

5

1

1

1

3

4

4

 

3

3

2

5

1

3

3

3

4

2

2

 

 

2

5

1

3

4

4

4

2

5

5

 

La anomalía de Belady sólo puede darse en la política FIFO, ya que la óptima por definición no la presenta y la LRU es un algoritmo de pila. Si aplicamos política FIFO con cuatro marcos, se producen diez fallos de página, ejemplo palmario de la anomalía de Belady.

Pregunta 6. Obtención de un nodo-i a partir de una ruta.

Lo esencial de esta cuestión es describir cómo se recorre la ruta (pathname) en el sistema de archivos hasta dar con el nodo-i del último componente. Cada directorio es un archivo que consiste en una tabla de pares nombre/nodo-i. Se parte del directorio raíz: se lee su contenido en él se busca el nombre del primer componente de la ruta para obtener su nodo-i; esta operación se hace iterativamente hasta llegar al último componente de la ruta. En cada iteración hay que verificar si se tienen los permisos adecuados y si el componente de la ruta es un directorio (excepto en el último componente).

Los nodos-i de los sucesivos tramos de la ruta han de cargarse en memoria, en la tabla o caché de nodos-i, perteneciente al núcleo UNIX. Los nodos-i podrían estar ya en la memoria, con lo cual se ahorraría tiempo de acceso al disco.

Hay otros aspectos que se tienen en cuenta, p.ej. que un tramo de la ruta sea un punto de montaje a otro dispositivo

Pregunta 7. Incompatibilidad entre memoria virtual y sistemas de tiempo real.

Un sistema de tiempo real se caracteriza por permitir garantizar plazos de finalización en los procesos que en él se ejecutan, o bien tiempos de respuesta limitados. El uso de memoria virtual supone la generación esporádica e imprevisible de fallos de página, eventos cuya gestión consume un tiempo considerable (en el peor caso hay que transferir varias páginas al/del disco). La ocurrencia de un fallo de página depende de factores como el tamaño de la memoria disponible, la cantidad de procesos en ejecución y el uso que éstos hacen de la memoria, factores que difícilmente se pueden analizar para determinar en qué momento se generan estos fallos. Esto hace muy difícil, por no decir imposible, conciliar la técnica de memoria virtual con los requisitos de un sistema de tiempo real.

Pregunta 8. Diferentes implementaciones del área de intercambio.

La ventaja sustancial de tener un área de intercambio fija y contigua es sin duda la velocidad: el sistema operativo puede calcular con facilidad el punto donde ha de realizar las transferencias entre memoria y disco. Con un sistema de archivos, hay que obtener dónde se encuentra el archivo de intercambio. Una vez localizado el archivo, la localización y transferencia de los bloques son más lentas si el sistema de archivos utiliza una estrategia de almacenamiento no contigua. Además, tales transferencias no han de pasar por las rutinas del sistema de archivos, que siempre originan un retraso.

Por el contrario, tener el área de intercambio en un archivo permite darle la dimensión adecuada según la demanda instantánea de memoria. El tamaño límite es todo el espacio libre del disco. Cuando no hay grandes necesidades de memoria, el archivo de intercambio puede ser pequeño y así dejar espacio libre para los archivos. Esta flexibilidad no existe en UNIX, con un área de intercambio de tamaño fijo, lo cual llega a ser un problema cuando se amplía la memoria física del equipo: si hay que redimensionar el área de intercambio, hay que reformatear el disco.

En resumen, la ventaja de un área fija es la velocidad; y la de un archivo de intercambio es la flexibilidad.