Respuestas a las cuestiones planteadas en el parcial de Sistemas Operativos, celebrado el 22 de mayo de 1999, para las titulaciones I.T.I.S., I.T.I.G. e I.I.

1 (3 puntos) Test.

1. Un sistema operativo tiene la finalidad de:

  1. Hacer que el sistema informático sea más rápido.
  2. Hacer que el sistema informático sea más eficiente.
  3. Hacer que el sistema informático sea más cómodo de usar para los usuarios.
  4. Hacer que el sistema informático sea más eficiente, amigable y seguro.

2. En el contexto de la evolución histórica de los sistemas informáticos, los manejadores de dispositivos aparecieron como una mejora de:

  1. Los primeros sistemas.
  2. Los sistemas de procesamiento en lotes sencillos.
  3. Los sistemas de procesamiento en lote sofisticados.
  4. Los sistemas multiprogramados.

3. Los primeros sistemas operativos rudimentarios se crearon para que los ordenadores fueran más:

  1. Fáciles de utilizar.
  2. Productivos.
  3. Seguros.
  4. Interactivos.

4. El modo de operación denominado "fuera de línea" permite:

  1. Simultanear operaciones de E/S de una tarea con operaciones de CPU de esa misma tarea.
  2. Simultanear operaciones de E/S de una tarea con operaciones de CPU de otras en el mismo sistema.
  3. Reducir los tiempos de inactividad de la CPU debido a la lentitud de los dispositivos de E/S.
  4. Todas las anteriores son falsas.

5. La técnica de buffering permite:

  1. Simultanear operaciones de E/S de una tarea con operaciones de CPU de esa misma tarea.
  2. Simultanear operaciones de E/S de una tarea con operaciones de CPU de otras en el mismo sistema.
  3. Reducir los tiempos de inactividad de la CPU debido a la lentitud de los dispositivos de E/S.
  4. Todas las anteriores son falsas.

6. La técnica de spooling permite:

  1. Simultanear operaciones de E/S de una tarea con operaciones de CPU de esa misma tarea.
  2. Simultanear operaciones de E/S de una tarea con operaciones de CPU de otras en el mismo sistema.
  3. Reducir los tiempos de inactividad de la CPU debido a la lentitud de los dispositivos de E/S.
  4. Todas las anteriores son falsas.

7. El tiempo de respuesta es un parámetro de especial importancia en un sistema:

  1. Sistema de procesamiento en lotes.
  2. Sistema multiprogramado.
  3. Sistema de tiempo compartido.
  4. En todos los sistemas anteriores posee la misma importancia.

8. Para procesar simultáneamente operaciones de CPU con operaciones de E/S se requieren:

  1. Dispositivos rápidos de E/S.
  2. Un reloj del sistema.
  3. Interrupciones.
  4. Instrucciones hardware especiales de protección.

9. El modelo "Cliente/Servidor"se utilizó en el diseño del sistema:

  1. MSDOS.
  2. UNIX
  3. VM.
  4. WINDOWS-NT.

10. El modelo "de estructura sencilla o monolítico" se utilizó en el diseño del sistema:

  1. MSDOS.
  2. UNIX
  3. VM.
  4. WINDOWS-NT.

11. Un proceso cuando desea solicitar un servicio al sistema operativo lo hace mediante:

  1. Una función o procedimiento.
  2. Una llamada al sistema.
  3. Un comando del sistema.
  4. Una interrupción.

12. En el contexto del problema del interbloqueo un estado inseguro es:

  1. Un estado donde siempre existe al menos una situación de interbloqueo.
  2. Un estado donde los procesos esperan por recursos.
  3. Un estado a partir del cual se puede llegar a una situación de interbloqueo.
  4. Un estado donde no hay disponibilidades de recursos.

13. En el interbloqueo, la estrategia que puede dar lugar a una muy baja utilización de recursos es

  1. Estrategia liberal.
  2. Estrategia de prevención.
  3. Estrategia de detección y recuperación.
  4. Estrategia de evitación.

14. Para tratar el interbloqueo por el sistema operativo, la estrategia más costosa de ejecutar

  1. Estrategia liberal.
  2. Estrategia de prevención.
  3. Estrategia de detección y recuperación.
  4. Estrategia de evitación.

15. En el interbloqueo, la estrategia que requiere declarar por adelantado los recursos máximos necesarios es:

  1. Estrategia liberal.
  2. Estrategia de prevención negando la condición de espera circular.
  3. Estrategia de detección y recuperación.
  4. Estrategia de evitación mediante el algoritmo del banquero.

 

 

2 (2 puntos) Dada la siguiente carga de procesos

Proceso

Tiempo de llegada

Duración

P0

0

10

P1

3

8

P2

5

1

Para las políticas primero el más corto apropiativa y Round-Robin con cuanto 2 u.t. se pide:

  1. Diagrama de Gant.
  2. Tiempo de retorno de cada proceso.
  3. Tiempo de espera de cada proceso.

Política primero más corto apropiativa:

P0

P0

P0

P0

P0

P2

P0

P0

P0

P0

P0

P1

P1

P1

P1

P1

P1

P1

P1

Tiempo de retorno de P0 = 11 Tiempo de espera de P0 = 1

Tiempo de retorno de P1 = 16 Tiempo de espera de P1 = 8

Tiempo de retorno de P2 = 1 Tiempo de espera de P2 = 0

 

Política de Round Robin con cuanto de 2 u.t. :

P0

P0

P0

P0

P1

P1

P0

P0

P2

P1

P1

P0

P0

P1

P1

P0

P0

P1

P1

Tiempo de retorno de P0 = 17 Tiempo de espera de P0 = 7

Tiempo de retorno de P1 = 16 Tiempo de espera de P1 = 8

Tiempo de retorno de P2 = 4 Tiempo de espera de P2 = 3

 

 

3 (2 puntos) Dada la siguiente propuesta de solución al problema de la sección crítica para 2 procesos (proceso 0 y proceso 1). ¿Es correcta? justifique su respuesta.


Var Flag: array[0..1] of boolean;

Repeat While Flag[j] do no-op; Flag[i] = true; Sección crítica Flag[i] = false; Until false;

- Inicialmente Flag[0] = Flag[1] = false.

- La variable "i" identifica al proceso que quiere entrar en la sección crítica y la variable "j" al otro proceso, cumpliéndose j = 1 – 1.

La solución aportada no es correcta, puesto que el principio de exclusión mutua no se cumple. Efectivamente, supongamos que los dos procesos (P0 y P1) intentan entrar en la sección crítica y se ejecutan, por ejemplo, de la siguiente manera:

T0: P0 comprueba el estado de Flag[1] y lo encuentra a "falso"

T1: P1 comprueba el estado de Flag[0] y lo encuentra a "falso"

Entonces, los procesos tendrían vía libre para acceder a la sección crítica; no cumpliéndose por tanto el principio de exclusión mutua.

 

 

4 (3 puntos) Utilizando sólo regiones críticas condicionales, resolver el problema de los Productores-Consumidores con buffer finito (también conocido como problema del buffer limitado).

Una posible solución sería:


var
buffer: shared record
  depósito: array [0 .. n-1] of elemento;
  recuento, entrada, salida: integer; --inicializadas a cero
end;

Productor:

region buffer when ( recuento < n ) do 
begin
  deposito[entrada] := psiguiente;
  entrada := (entrada+1) mod n;
  recuento := recuento + 1;
end;

Consumidor:

region buffer when (recuento > 0 ) do 
begin
  csiguiente := depósito[salida];
  salida := (salida+1) mod n;
  recuento := recuento - 1;
end;