Soluciones del examen de junio, curso 1995/96
Primera parte

  1. Soluciones del examen de junio, curso 1995/96
    Primera parte
  2. Pregunta 1. Proceso con un 5% de tiempo de CPU
  3. Pregunta 2. Planificación en un sistema multiprocesador
  4. Pregunta 3. Planificación de peticiones al disco
  5. Pregunta 4. Diferencias entre dispositivos de bloques y de caracteres
  6. Pregunta 5. Varias cuestiones
  7. Pregunta 6. Test

Pregunta 1. Proceso con un 5% de tiempo de CPU

El Round Robin tiende a repartir el tiempo de CPU de forma equitativa. El caso planteado se debe a que el proceso del 5% no agota totalmente las rodajas de tiempo que se le asignan. La causa puede ser que es un proceso intensivo en E/S, con lo que sus ráfagas de CPU tienden a ser cortas, o un proceso que está continuamente en espera por eventos.

El número de procesos del ejemplo de examen no puede establecerse con exactitud, pero siempre ha de ser inferior a 10. Es imposible que más de 10 procesos reciban en promedio un 10% de tiempo de CPU (lo cual es de sentido común). Más formalmente, se puede expresar con la inecuación

10N + 5 < 100

donde N es el número de procesos, descontando el del 5%.

Sí puede ocurrir que existan menos de 10 procesos, por ejemplo 2 procesos intensivos en E/S que consuman en total el 20% del tiempo disponible de CPU (más el del 5%).

Pregunta 2. Planificación en un sistema multiprocesador

La política planteada tiene serios inconvenientes en cuanto a eficiencia. Los procesos se van asignando a procesadores sin tener en cuenta la carga de éstos, por lo que un procesador puede estar libre de trabajo mientras otro se encuentra sobrecargado. (Se puede demostrar con muchas clases de ejemplos).

Estos inconvenientes se pueden solventar de varias formas. La manera más simple, probablemente, es hacer uso de una única cola de preparados (no olvidemos que son procesadores en bus común), y que cuando un procesador quede libre escoja un proceso de la cola. El único detalle que tener en cuenta es gestionar el acceso en exclusión mutua a la cola de procesos.

Otros esquemas consistirían en realizar un equilibrado de carga entre los procesadores (ceder procesos a las CPUs más descargadas).

Pregunta 3. Planificación de peticiones al disco

FCFS:

80 - 72 - 24 - 56 - 33 - 80 - 12 - 72 - 80 - 25

Número de pistas recorridas: 389

C-SCAN:

56 - 72 - 72 - 80 - 80 - 80 (...llega a la 85, luego salta a la 1) 12 - 24 - 25 - 33

Número de pistas recorridas: 78 (si se contabiliza el retorno a la 1, hay que añadir 84).

La utilización de una caché afecta sobre al método FCFS, dado que no es necesario recorrer tantas pistas: hay varios accesos a las mismas pistas (72 y 80). El C-SCAN no se ve afectado por la caché, puesto que ordena previamente de las peticiones según el número de pista. De todas formas, en cualquier caso el rendimiento puede mejorarse al reducir el número de accesos a disco.

Pregunta 4. Diferencias entre dispositivos de bloques y de caracteres

Nivel funcional. La diferencia sustancial estriba en que un dispositivo de bloques se ve como un conjunto de bloques de datos numerados, mientras que un d. de caracteres es simplemente un flujo de bytes que se pueden leer o escribir. En cuanto a la interfaz de uso existen pocas diferencias: los dispositivos de caracteres disponen de la llamada ioctl, para realizar acciones ajenas a lecturas y escrituras. Por otra parte, sobre los dispositivos de caracteres no se pueden montar sistemas de ficheros.

Los dispositivos de bloques se sirven de una caché de bloques, por lo que una operación de lectura o escritura no siempre se corresponde con una invocación al manejador correspondiente. Las rutinas de un manejador de bloques son también algo distintas, puesto que una sola función, strategy, engloba las operaciones de lectura y de escritura.

Estructuras internas. Para guardar los apuntadores a las rutinas de manejo, se utilizan dos tablas diferentes en el núcleo, una para dispositivos de caracteres y otra para los de bloques. Aparte está la caché de bloques para estos últimos.

Pregunta 5. Varias cuestiones

1. Diferencia entre políticas y mecanismos. Las políticas definen qué es lo que se va a hacer, mientras que los mecanismos especifican de qué manera se llevan a cabo las políticas. Una política declara, por ejemplo, bajo qué criterios se va a planificar un recurso (reparto equitativo, por orden de llegada, primero el trabajo más corto). Los mecanismos serán todos los algoritmos, estructuras, etc. empleados en el desarrollo de la política (p.ej. una cola FIFO, el algoritmo de cambio de contexto, etc. etc.)

2. Ejecutarse en modo núcleo. Se dice que un proceso se encuentra en modo núcleo o modo supervisor cuando está ejecutándose en el modo privilegiado de la máquina, dentro del cual puede ejecutar instrucciones privilegiadas sin generar excepciones. Habitualmente esto sólo ocurre en circunstancias controladas, tras haber hecho una llamada al sistema y entregar el control al núcleo del sistema operativo.

3. Instrucciones atómicas de semáforos. Puede verse con facilidad que si se entremezcla la ejecución de dos instrucciones wait sobre un mismo semáforo inicializado a uno, ambas ejecuciones podrían tener la errónea creencia de que el semáforo tiene valor cero, perdiéndose la semántica del semáforo.

4. Monitor. Un monitor es un tipo abstracto de datos que, aparte de distinguir una interfaz pública de su implementación (rutinas y estructuras de datos), garantiza la ejecución en exclusión mutua de las operaciones que tiene definidas. Por medio de las variables de tipo condición se puede suspender una operación y ceder el uso del monitor a otro proceso.

Pregunta 6. Test

               Pregunta                            Opción correcta              
                  1                                       c                     
                  2                                    ANULADA                  
                  3                                       d                     
                  4                                       a                     
                  5                                       a                     
                  6                                       a                     
                  7                                       d                     
                  8                                       b                     
                  9                                       b                     
                  10                                      c                     
                  11                                      c                     
                  12                                      b