You are on page 1of 4

www.lanzarotecaliente.

com

E. U. de Informática Departamento de Informática Aplicada


Examen Final de Sistemas Operativos I 17 de septiembre de 2001

EJERCICIO 2 (3.5 puntos) Tiempo estimado: 60 m

Queremos diseñar el planificador de procesos de un sistema operativo que se va a utilizar para soportar
específicamente procesos multimedia. En este tipo de sistemas las aplicaciones se caracterizan por tener que
ejecutarse dentro de unos rangos de velocidad determinados, por ejemplo, un proceso encargado de visualizar
un vídeo deberá ejecutarse de una forma más o menos continua, sin parones ni acelerones. Para ello, al crear
un proceso se realiza una reserva de CPU al sistema operativo.
En esta reserva se especifican dos parámetros: C (Tiempo de Cómputo) y P (Periodo). El sistema operativo
deberá encargarse de ejecutar este proceso durante C unidades de tiempo (u.t.) cada P u.t. La ejecución de las
C u.t. puede hacerse en cualquier punto del intervalo, pero siempre dentro de las P u.t. Además, la ejecución
de las C u.t. no tiene por qué ser consecutiva.
Pu.t. Pu.t. Pu.t.

Cu.t.
Ejecución Cu.t. Cu.t.
del proceso

Por lo tanto, el S.O. cada P u.t. activará al proceso (lo pasa a la cola de preparados). Así mismo, una vez
completadas las C u.t. lo expulsará y bloqueará hasta el siguiente instante de activación.
Queremos probar si son adecuados algunos de los Proceso Reserva deT. Periodo
algoritmos de planificación de procesos de los Cómputo
sistemas operativos para este tipo de procesos con P1 3 13
reserva de tiempo de cómputo. Para ello, vamos a
comparar su comportamiento para el conjunto de P2 12 42
procesos de la siguiente tabla. P3 2 10
P4 9 43

En el diagrama de la figura se muestra el orden de ejecución de los 4 procesos siguiendo el algoritmo SJF
(Primero el más Corto), suponiendo que en el instante cero los 4 procesos están preparados. Para la estimación

P1

P2

P3

P4

5 10 15 20 25 30 35 40 45 u.t.
= final delas C u.t.
del tiempo de CPU que un proceso va a necesitar, se toma el tiempo de cómputo de la reserva que se ha hecho
para ese proceso.
Se pide:
1.- Indica el proceso que está en Ejecución así como los procesos que están en cada una de las colas de
procesos (Cola_Preparados, Cola_Bloqueados) en los instantes 11, 15 y 22.
2.- Teniendo en cuenta todo el periodo de 45 u.t, indica cuál es el tiempo de espera de los procesos P1 y P2.

Vamos a probar la planificación por prioridades expulsora. Las prioridades de los procesos se asignan de
forma inversa a sus periodos, es decir, el proceso mas prioritario será el que tenga el menor periodo (P3). De
esta forma, los procesos quedan ordenados de mayor a menor prioridad de la forma: P3, P1, P2, P4.
3.- Completa un diagrama hasta la u.t. 45 suponiendo la planificación por prioridades expulsora. Se deberá
utilizar la misma notación que en la figura correspondiente al algoritmo SJF, marcando con un punto
únicamente el instante en que se ha terminado de ejecutar las C u.t. del proceso.
4.- Dado este conjunto de procesos (P1..P4), indica qué procesos se están ejecutando correctamente y cuáles
no, para cada uno de los 2 algoritmos de planificación. Razona brevemente la respuesta.

Deseamos implementar parte del sistema operativo que da soporte a la reserva de CPU con planificación por
prioridades expulsora. Para ello se dispone de una interrupción de reloj que sucede cada 1 u.t., cuya rutina de
tratamiento denominamos RutinaReloj. Además se dispone de una variable global Instante_Actual de tipo
entero y con valor continuamente creciente que sirve para saber cuál es el la u.t. actual. En el descriptor de
proceso se han incluido los siguientes campos:
tiempoComputo : integer; -- Tiempo de computo reservado
periodo : integer; -- Periodo indicado en la reserva
siguienteActivacion : integer; -- instante de la siguiente activación para el proceso
credito : integer; -- unidades de tiempo que le queda al proceso por ejecutar
-- durante su activación actual
5.- Se pide, indica las acciones que debe llevar a cabo la RutinaReloj. Para que sirva de referencia en cuanto
al nivel de detalle de especificación, a continuación se indica una RutinaReloj para una política de
RoundRobin con rodajas de tiempo de 4 u.t.
Si Fin de Rodaja Tiempo entonces
Poner proceso en Ejecucion en final de Cola_Preparados
Poner primer proceso de Cola_Preparados en Ejecución
Llamar al Dispatcher
E. U. de Informática Departamento de Informática Aplicada

Examen Final de Sistemas Operativos I 17 de septiembre de 2001

Apellidos ...............................................................................................................................

Nº Orden
Nombre ................................................................. Nº de Matrícula :

EJERCICIO 2. Solución

1) Estado de los procesos


Número de página Instantes
11 15 22
Ejecución P4 P3 P2
Cola_Preparados P2 P3 P1 P2 P3
Cola_Bloqueados P1 P4 P1 P4

2) Tiempo de espera
Procesos Tiempo Breve razonamiento
de espera
P1 12 Se activa en 0 y se ejecuta en 2 = 2 u.t.
Se activa en 13 y se ejecuta en 16 = 3 u.t.
Se activa en 26 y se ejecuta en 33 = 7 u.t.
P2 22 Se activa en 0 y se ejecuta en 19 = 19 u.t.
Se activa en 42 y no se ejecuta antes de 45 = 3 u.t.

3) Planificación por prioridades expulsora

P1

P2

P3

P4

5 10 15 20 25 30 35 40 45 u.t.
= final delas C u.t.
4) Ejecución correcta de los procesos
SJF Lista de Breve razonamiento
Procesos
Se ejecutan P1 P2 P4 Se ejecutan las C u.t de cada proceso dentro
de sus correspondientes periodos
CORRECTAMENTE

Se ejecutan P3 En su segundo periodo (de 20 a 30 u.t.) no se


ejecuta
MAL

Prioridades Lista de Breve razonamiento


Procesos
Expulsor
Se ejecutan P1 P2 P3 P4 Se ejecutan las C u.t de cada proceso dentro de sus
correspondientes periodos
CORRECTAMENTE
Se ejecutan
MAL

4) Acciones de RutinaReloj

Instante_Actual := Instante_Actual + 1

/* Comprobar fin de C u.t. */


proceso_en_Ejecución.Crédito := proceso_en_Ejecución.Crédito – 1
Si proceso_en_Ejecución.Crédito = 0 entonces
proceso_en_Ejecución.siguienteActivación := proceso_en_Ejecución.siguienteActivación
+ proceso_en_Ejecución.periodo
Poner proceso_en_Ejecución en Cola_Bloqueados

/* Despertar procesos*/
Para todo proceso P en Cola_Bloqueados
Si Instante_Actual ≥ P.siguienteActivación entonces
P.Crédito := P.tiempoCómputo
Poner P en Cola_Preparados

/* Planificador */
Elegir el proceso P más prioritario de Cola_Preparados
Si P es distinto de proceso_en_Ejecución entonces
Poner proceso_en_Ejecución en cola_Preparados
Poner P como proceso_en_Ejecución
Llamar dispatcher

Retorno de interrupción