Apellidos

Anuncio
E. U. de Informática
Departamento de Informática Aplicada
Examen Parcial de Sistemas Operativos IC
22 de Octubre de 2013
Apellidos .........................................................................................................................
Nombre ...........................................................................................................................
EJERCICIO 2
SOLUCIÓN
Hoja de respuesta
(2) NUEVAS ESTRUCTURAS DE DATOS O MODIFICACIONES A LAS EXISTENTES
Bastaría con incluir dos nuevos campos en el descriptor de proceso:
float predicción;
// Se inicializa a cero e indica la predicción de uso de CPU siguiente
int
// Se inicializa a cero e indica el tiempoDeCPU de última posesión de CPU
tiempoDeCPU;
(3) GESTIÓN DE LA COLA DE PREPARADOS. RAZONAR SOBRE SU EFICIENCIA
En una primera aproximación parecen equivalentes. Un proceso, para obtener la CPU, se mete
primero en preparados (debido a un fin de E/S o por expulsión de la CPU) y, cuando sea el más
prioritario, se le saca de preparados para darle la CPU. Por cada inserción, habrá una
extracción de la cola.
Si se mantiene la cola de preparados ordenada, la inserción en preparados será una operación
costosa, mientras que la elección del siguiente proceso a ejecutar será inmediato (elegir el
primero de la cola).
Por el contrario, si se insertan los procesos en la cola de preparados por el último (operación
elemental y poco costosa en tiempo de ejecución), lo que será costoso es elegir el siguiente
proceso a ejecutar (una búsqueda en la cola de preparados para localizar el proceso cuya
predicción sea más baja).
La inserción en una cola ordenada puede ser más eficiente (por término medio recorrer la mitad
de la cola) que la búsqueda del menor en la cola (siempre recorrer toda la cola). Es por tanto
algo más eficiente mantener la cola de preparados ordenada.
(4) Acciones de rutinaReloj
Inhibir interrupciones // Mecanismo de exclusión
Salvar el estado del proceso enEjecucion
procesos[enEjecucion].tiempoDeCPU++;
Recuperar el estado del proceso enEjecucion
RTE // Para continuar al proceso enEjecucion interrumpido
(5) Acciones al ejecutar “wait (hijo)”
Inhibir interrupciones // Mecanismo de exclusión
Salvar el estado del proceso enEjecucion
Determinar que se trata de wait y saltar a rutina que interpreta esta llamada
Buscar al hijo en procesos => Sea índice “h”
procesos[enEjecucion].siguiente = h; // Indicar por qué hijo se está esperando
procesos[enEjecucion].estado = esperandoFinHijo;
procesos[enEjecucion].prediccion = procesos[enEjecucion].prediccion * 0.5 +
procesos[enEjecucion].tiempoDeCPU * 0.5;
enEjecucion = planificar(); // Sacar de preparados el de predicción más baja
procesos[enEjecucion].tiempoDeCPU = 0;
Recuperar el estado del proceso enEjecucion
RTE // Para continuar al proceso preparado con predicción de uso de CPU menor
Descargar