Soluciones del primer parcial, curso 1995/96
Pregunta 1. La multiprogramación eleva el rendimiento
  En un sistema no multiprogramado, los procesos se ejecutan secuencialmente. Cada vez que un proceso entra en situación de espera, bien por un dispositivo de entrada/salida o por la ocurrencia de algún evento, el procesador queda inactivo hasta que se concluya la espera. Sin embargo, en un sistema multiprogramado ese lapso de inactividad del proceso puede cubrirse con la ejecución de instrucciones de algún otro proceso que se encuentre disponible para ello. Así se logra que la utilización del procesador aumente y además que se solape la ejecución de instrucciones del procesador con las actividades de entrada/salida, con lo cual un conjunto de tareas consigue terminar en menos tiempo respecto al sistema uniprogramado.
  Un ejemplo ilustrativo puede verse en Sistemas Operativos. Conceptos fundamentales, de A. Silberchatz, págs. 100 y 101; también en Sistemas Operativos. Conceptos y diseño, de M. Milenkovic´, pág. 10.
Pregunta 2. Interbloqueo con semáforos
  Hay multitud de ejemplos de algoritmos que producen interbloqueo entre dos procesos, ocasionado por operaciones con semáforos. Uno muy típico emplea dos semáforos con 1 (uno) de valor inicial para gestionar sendas secciones críticas. Si dos procesos pretenden ejecutar código de ambas secciones críticas de esta forma:

 proceso 1	proceso 2	
1. P(sem1)	2. P(sem2)	
3. P(sem2)	4. P(sem1)	
...	...	
V(sem2)	V(sem1)	
V(sem1)	V(sem2)	

y se tiene que el orden de ejecución de estas sentencias es 1-2-3-4, se producirá interbloqueo, dado que el proceso 1 estará esperando por un recurso retenido por el proceso 2 (sem2) y a la vez el proceso 2 esperará por un recurso retenido por el proceso 1 (sem1). Una espera circular de la que jamás se podrá salir sin intervención externa.
Pregunta 3. Manejadores de dispositivo
  Los manejadores de dispositivo han de cumplir a rajatabla una interfaz preestablecida, primero, para que se pueda desarrollar el principio de independencia del dispositivo con más sencillez. Si las llamadas al sistema de entrada/salida son independientes del dispositivo y la interfaz de los manejadores es idéntica, las rutinas del núcleo se limitan a dirigir la petición hacia el dispositivo adecuado, haciendo las conversiones que hagan falta; si no existiera esa interfaz uniforme, el código del núcleo habría de tener en cuenta las peculiaridades de cada dispositivo, perdiéndose modularidad y fiabilidad.
  Por otra parte, la interfaz preestablecida permite que se incorporen con sencillez nuevos manejadores de dispositivos de otros fabricantes; el núcleo del sistema operativo sólo ha de conocer cuáles son las funciones de interfaz del nuevo manejador.
Pregunta 4. Planificación de procesos

FCFS:
AAAAABBCCCCCCDDDDEEE
0    5 7     13  17 20

Tiempo de retorno medio: (5 + 7 + 13 + 17 + 20) / 5 = 12'4 u.t
Tiempo de espera medio: (0+5+7+13+17)/5 = 8'4 u.t.

SJF:
BBEEEDDDDAAAAACCCCCC
0 2  5   9    14    20
Tiempo de retorno medio: (14+2+20+9+5)/5 = 10 u.t.
Tiempo de espera medio: (9+0+14+5+2)/5 = 6 u.t.

Round-Robin:
AABBCCDDEEAACCDDEACC

Tiempo de retorno medio: (18+4+20+16+17)/5 = 15 u.t.
Tiempo de espera medio: (13+2+14+12+14)/5 = 11 u.t.

Pregunta 5. Estados de un proceso
  Cualquier libro sobre sistemas operativos, en su capítulo sobre procesos, desarrolla esta pregunta. Como detalles parciales, recordemos que los estados del proceso dignos de mención son: preparado, en ejecución, bloqueado y terminado (estado final), que los eventos que producen las transiciones son mayormente llamadas al sistema e interrupciones, etc.

Pregunta 6. Simulación de manejador de disco

FCFS: 15-28-60-28-61-15-60-23-61-60-14
Pistas recorridas: 343

SSTF: 28-28-23-15-15-14-60-60-60-61-61
Pistas recorridas: 68

SCAN: 60-60-60-61-61-(llega a la 70 y vuelve)-28-28-23-15-15-14
Pistas recorridas: 91

LOOK: 60-60-60-61-61-28-28-23-15-15-14
Pistas recorridas: 73

Con caché:
FCFS: 15-28-60-*28*-61-*15*-*60*-23-*61*-*60*-14
Pistas recorridas: 113

El resto de las políticas dan igual resultado.

Se manifiesta la excesiva dependencia del FCFS respecto al orden de llegada de las peticiones, que en este ejemplo están bastante salteadas alrededor del disco. El mejor algoritmo es el SSTF. El LOOK da un rendimiento sólo un 9% más pobre que el SSTF, y hay que tener en cuenta que esta política es más simple y no presenta el riesgo de postergación de peticiones de esta última, riesgo que en este caso no se da porque es un conjunto limitado de peticiones y además están todas encoladas en el instante inicial.
  El LOOK es levemente mejor que el SCAN ya que la cabeza no ha de llegar estérilmente hasta el final del disco.
El uso de caché sólo afecta al FCFS, puesto que los restantes métodos definen un orden de atención tal que atienden todas las peticiones de una misma pista en el mismo instante; y en este ejemplo no llegan nuevas peticiones. El movimiento total del FCFS se reduce a la tercera parte más o menos, puesto que varias peticiones sobre la misma pista que se encuentran salteadas en la cola requieren un único acceso físico a la pista.

Pregunta 7. Búfer finito con regiones críticas
En Sistemas Operativos. Conceptos Fundamentales aparece una solución a esta pregunta, en la página 167 (de la tercera edición).

Pregunta 8. Varias cuestiones
a)	Una llamada al sistema es un mecanismo de bajo nivel para que un programa solicite servicios del sistema operativo; mientras que un programa del sistema es una aplicación, siempre de mayor nivel que las llamadas al sistema, que corre independientemente del sistema operativo.
b)	El spooling consiguió aumentar el rendimiento en los primeros sistemas por lotes porque posponía las operaciones de entrada/salida al momento en que el periférico quedara libre, evitando tiempos muertos de la CPU, puesto que se solapaban operaciones de E/S de un proceso con la ejecución de instrucciones de cualquier otro.
c)	El gran inconveniente de las políticas de planificación que aplican prioridades es el riesgo de postergación indefinida de procesos de baja prioridad, en caso de que continuamente el sistema contenga procesos de más alta prioridad.
d)	La comunicación asíncrona entre procesador y E/S es así porque el tiempo de respuesta de esta última es imprevisible y muchas veces largo. Por ello no es conveniente que la CPU espere un tiempo prefijado por la respuesta de la E/S, sino que ésta debe notificar la terminación de la operación con algún tipo de señal (interrupción, escritura en un registro, etc.)
e)	El modelo cliente/servidor consiste en descomponer el sistema operativo en módulos funcionales en forma de procesos independientes que se comunican. Este modelo es muy adecuado para sistemas distribuidos, porque puede emplazarse cada módulo o servidor en máquinas diferentes, adaptándose al objetivos del procesamiento distribuido.
f)	El intérprete de órdenes no forma parte del núcleo del sistema operativo porque es un servicio que no es elemental (se basa en servicios de más bajo nivel), depende fuertemente del tipo de usuario y puede requerirse su modificación con frecuencia. Incluirlo en el núcleo supondría un mayor tamaño del código del S.O., la dificultad de disponer de varios intérpretes o de alterar uno existente, además del posible riesgo de estar ejecutando una aplicación siempre en modo privilegiado.

Pregunta 9. Test

Pregunta	Opción correcta	
1	a	
2	b	
3	c	
4	c	
5	c	
6	b	
7	c	
8	d	
9	b	
10	b	
11	b	
12	d	
13	a	
14	b	
15	a	
16	c	
17	a	
18	b	
19	d	
20	c	

1	a
2	b
3	c
4	c
5	c
6	b
7	c
8	d
9	b
10	b
11	b
12	d
13	a
14	b
15	a
16	c
17	a
18	b
19	d
20	c