Soluciones del examen de diciembre, curso 1997/98

Pregunta 1. Algoritmo de planificación de procesos

Cuando B > A > 0 el algoritmo es FIFO (primero en llegar primero en ser servido)

Cuando A < B < 0 el algoritmo es LIFO (último en llegar primero en ser servido)

Pregunta 2. Cuestiones sobre procesos y concurrencia

2.1. ¿Qué característica debe poseer un algoritmo de de planificación de procesos para que pueda cambiar el estado de "ejecución" al de "listo" de un proceso?

Que sea apropiativo

2.2. ¿Con qué finalidad se emplea la técnica de envejecimiento en la planificación de procesos?

Se emplea en el contexto de la planificación de procesos por prioridades, con el fín de evitar que un proceso de baja prioridad quede postergado indefinidamente (nunca se le cede el procesador) debido a que siempre hay procesos con una mayor prioridad.

2.3. ¿Motivo por el que se evita la espera activa?

Básicamente, por razones de eficiencia. Una implementación con espera activa provoca que el proceso en espera consuma ciclos de CPU que son improductivos, y que se podrían aprovechar para ejecutar instrucciones de otros procesos.

Pregunta 3. Problema de operaciones con un fichero

Si un archivo posee 100 bloques, entonces el número de operaciones de E/S requeridas para:

a) Añadir un bloque al principio:

Asignación contigua: 201

Asignación encadenada: 1

b) Eliminar un bloque del final:

Asignación contigua: 0

Asignación encadenada: 100

Pregunta 4. Cuestiones diversas

4.1. Conveniencia o necesidad de almacenar bloques contiguos con asignación indexada.

La asignación de espacio indexada es una asignación no contigua, y precisamente su ventaja es que no exige que los bloques de datos de un fichero se encuentren contiguos: por tanto no es necesario que lo estén. Sin embargo, en caso de que los bloques estuvieran contiguos, la latencia o el tiempo medio de acceso podrían disminuir, dado que al realizar accesos secuenciales sobre un fichero, la cabeza del disco realizaría menos movimientos que en el caso de que los bloques estuvieran dispersos por el disco. Como los accesos secuenciales son los más frecuentes, es conveniente que los bloques estén contiguos. La ventaja, por tanto, es exclusivamente de rendimiento.

4.2. Diferencia entre interbloqueo y estado inseguro

En el contexto del tratamiento del interbloqueo, el concepto de estado "inseguro" se utiliza en el Algoritmo del Banquero (técnica de evita el interbloqueo mediante una asignación cuidadosa de los recursos) para representar un estado en el que los procesos pueden pedir más recursos (esto se conoce puesto que deben declarar sus necesidades máximas) de los que el sistema les puede asignar (ya sea por que están disponibles o por que están asignados a procesos que no están en una estado de bloqueo indefinido); por tanto se trata de un estado a partir del cual se puede llegar a una situación de interbloqueo y que no implica un estado de interbloqueo. En cambio, una situación de interbloqueo es un estado "inseguro" en el que además se cumplen cuatro condiciones (exclusión mutua, retención y espera, no apropiación y espera circular).

4.3. ¿Por qué UNIX no es un sistema de tiempo real?

Porque en un sistema de tiempo real estricto, se pueden especificar plazos de ejecución de los procesos. Por la naturaleza de su sistema de planificación de procesos, UNIX no puede garantizar el tiempo de finalización de ningún proceso.

Tampoco el UNIX estándar tiene algoritmos de gestión de prioridades que garanticen que un proceso de alta prioridad no se vea bloqueado por procesos de baja prioridad.

Pregunta 5. Peticiones a un disco

Un disco de 200 pistas numeradas de 0 a 199, existe una única cabeza que acaba de atender a una petición en la pista 125 y está a punto de dirigirse a atender una petición a la pista 143. Si en la cola existen estas peticiones: 86, 147, 91, 177, 94, 150, 102, 175, 130, entonces las peticiones se atenderían:

SSTF: 125 - 130 - 143 - 147 - 150 - 175 - 177 - 102 - 94 - 91 - 86

SCAN: 125 - 130 - 143 - 147 - 150 - 175 - 177 - 199 - 102 - 94 - 91 - 86

Pregunta 6. Influencia del algoritmo en la tasa de fallos de página

Sin duda, barrer la matriz bidimensional por filas o por columnas influirá en la tasa de fallos de página. En el supuesto de que la matriz se almacene por filas, el barrido por filas supondrá accesos secuenciales a la memoria virtual. En cada iteración, se accede a un elemento justo contiguo al anterior. Es fácil deducir que como mucho se producirán K fallos, siendo K el número de marcos que ocupa la matriz. En el caso de que se barra por columnas, los accesos a memoria seguirán un patrón más disperso y provocarán más fallos. Suponiendo un caso simple, en el que cada fila ocupe exactamente un marco de página, ocurrirá que se accede a una página diferente ¡en cada iteración! En este supuesto, podría haber hasta NxN fallos de página (serán menos, dependiendo de los marcos disponibles en la memoria principal). En general, en cada iteración de la variable i, se accede a un elemento que está NxS bytes más allá del anterior (donde S son los bytes que ocupa un elemento), así que el algoritmo va "saltando" por la memoria.

El mismo razonamiento se puede aplicar si la matriz está almacenada por columnas, invirtiéndose los efectos (barrer por filas provocaría más fallos de página).

Pregunta 7. Tres máquinas, uso de cpu y memoria virtual

 

cpu

intercambio

máquina A

90%

3%

máquina B

10%

80%

máquina C

18%

12%

 

En el caso de la máquina A, tenemos el procesador muy ocupado y el dispositivo de intercambio muy descargado de trabajo. La memoria principal parece suficiente para albergar las tareas en ejecución, que tienen signo de ser intensivas en CPU. La memoria virtual está contribuyendo mínimamente al rendimiento. No parece razonable aumentar el grado de multiprogramación, dado el elevado uso del procesador. Sería conveniente cambiar el procesador por otro más rápido, o bien disponer de varios procesadores –si la arquitectura lo permite- para acelerar las tareas.

La máquina B muestra probablemente un escenario de hiperpaginación. El procesador está poco usado, pero ocurren fallos de página continuamente. La memoria virtual no sólo no está ayudando, sino que su gestión está provocando el ahogo del sistema. Si aumentamos el grado de multiprogramación, lo que conseguiremos es agravar el problema. La máquina está pidiendo a gritos una ampliación de memoria.

La máquina C está bastante descargada, tanto en CPU como en memoria. Esto no nos dice demasiado acerca de lo que está ocurriendo: puede ser que haya pocos procesos, o bien muchos, pero sometidos a frecuentes o largas esperas (ej. procesos interactivos). La memoria virtual parece contribuir al rendimiento del sistema, ya que de vez en cuando se hace intercambio con disco. El sistema no parece necesitar ningún hardware de apoyo, lo que hay parece más que suficiente.

Pregunta 8. TEST

Pregunta

Opción correcta

1

a

2

a

3

b

4

c

5

b

6

b

7

c

8

c

9

b

10

b