Soluciones del ex. de junio, curso 1996/97 (1ª parte)


Soluciones del examen de junio, curso 1996/97
Primera parte

Pregunta 1. Planificación de procesos

a) SJF apropiativa

(en unidades de 1 milisegundo)

p1
p3
p2
p2
p0
p0
p0
p0
p0
p0
p0
p0
p0
p0

Proceso

Tiempo de espera
Tiempo de retorno
P0
4
14
P1
0
1
p2
2
4
p3
1
2

Tiempo medio de espera = 7/4 = 2,75 mseg.

Tiempo medio de retorno = 21/4 = 5,25 mseg.

b) Round-Robin con cuanto de 2 milisegundos

(en unidades de 1 milisegundo)

p0

p0
p1
p2
p2
p3
p0
p0
p0
p0
p0
p0
p0
p0

Proceso

Tiempo de espera
Tiempo de retorno
P0
4
14
P1
2
3
p2
3
5
p3
5
6

Tiempo medio de espera = 14/4 = 3,5 mseg.

Tiempo medio de retorno = 28/4 = 7 mseg.

Pregunta 2. Cuestiones breves

Exponer dos diferencias entre los programas tipo COM y tipo EXE del MSDOS

Existen varias diferencias, siendo las mas importantes:

* Los programas tipo COM están limitados a un tamaño máximo de 64 Kbytes, en cambio los tipo EXE pueden superar dicho tamaño.

* Los programas tipo EXE poseen una estructura de control especifica, llamada encabezamiento de programa, que utiliza el cargador del MSDOS (función exec) para proceder a su reubicación en memoria, en cambio los programas tipo COM poseen ninguna estructura para tal fin.

A partir de las dos diferencias básicas anteriores, surgen otras, por ejemplo:

* La disposición en memoria de los programas tipo COM es distinta que los programas tipo EXE.

* La carga en memoria de un programa tipo COM es mucho más simple que la carga de un programa tipo EXE.

En UNIX, ¿cuándo no se aplica la política de planificación Round-Robin?

Cuando el proceso que posee la CPU se ejecuta en modo sistema.

El uso de DMA, ¿para qué tipo de operaciones está especialmente indicado?

Para operaciones de entrada/salida con dispositivos que poseen velocidades de transferencia altas (por ejemplo unidades de disco y de cinta magnética).

Explicar la diferencia entre proceso pesado e hilo (thread)

Un proceso pesado o tarea es el marco en donde se ejecuta al menos un hilo, de forma que un proceso pesado equivale a una tarea con un único hilo. Diferencias básicas:

* Para controlar los hilos el sistema operativo emplea menos información que para los procesos pesados.

* Las operaciones básicas de creación, eliminación y conmutación son menos costosas para los hilos que para los procesos pesados.

Pregunta 3. Desbloqueo de procesos en un semáforo

Se preguntaba si influye en algo a cuál de los procesos bloqueados se escoge cuando se ejecuta una operación de signal; y si da lo mismo el método de elección que se aplique. La respuesta es que influye en el rendimiento del sistema y en la justicia de reparto de recursos. Por un lado, algoritmos poco cuidadosos pueden dar lugar a la inanición de procesos bloqueados poco favorecidos. El caso extremo sería una política LIFO, con la cual los procesos que hace más tiempo que ejecutaron un wait son los que más esperan. Por tanto, el orden de elección de procesos bloqueados afecta al tiempo de respuesta y de espera de los procesos del sistema.

Sin embargo, el método de elección no influye en la semántica de las operaciones sobre semáforos, cuya definición simplemente indica que hay que desbloquear a alguno de los procesos en espera, cuando se den las circunstancias apropiadas, pero sin definir a cuál de ellos.

Pregunta 4. Análisis de un programa concurrente

Si varios procesos concurrentes ejecutan el código del ejercicio, pueden ocurrir problemas de carrera. Se están modificando varias variables compartidas, como son nelementos, primero y ultimo; de tal forma que si se entremezclan ejecuciones concurrentes se obtienen resultados incorrectos. Por ejemplo, si la lista de elementos está inicialmente vacía (nelementos=0) y varios procesos concurrentes deciden insertar un elemento, puede ocurrir que la variable primero nunca se inicialice. En general, si hay varias inserciones concurrentes, puede corromperse la estructura de la lista (p. ej. que un nodo quede inaccesible). De hecho, estamos ante una sección crítica de código.

Los puntos de sincronización son: antes de la línea nelementos++, donde hay que situar una operación wait de un cerrojo (un semáforo inicializado a uno); y justo antes de ...realiza otras cosas..., donde hay que ubicar una operación signal del mismo cerrojo o semáforo.

Obsérvese que la creación y manipulación de la variable ptr no necesita de sincronización, porque son datos locales al proceso.

Pregunta 5. Test

Pregunta

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