12.10.2014 Views

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

TEMA 2. GESTIÓN DE PROCESOS - Universidad de Almería

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Diseño <strong>de</strong> Sistemas Operativos<br />

Tema <strong>2.</strong> Gestión <strong>de</strong> Procesos<br />

Priorida<strong>de</strong>s<br />

Modo Kernel<br />

No Interrumpible<br />

por señales<br />

swapper<br />

esperando I/O<br />

<strong>de</strong> disco<br />

esperando buffer<br />

esperando nodo-i<br />

umbral <strong>de</strong> prioridad<br />

Interrumpible<br />

por señales<br />

esperando una<br />

entrada<br />

esperando una<br />

salida<br />

esperando el<br />

exit <strong>de</strong> un hijo<br />

nivel usuario 0<br />

nivel usuario 1<br />

Priorida<strong>de</strong>s<br />

Modo Usuario<br />

nivel usuario n<br />

Figura <strong>2.</strong>16. Rango <strong>de</strong> Priorida<strong>de</strong>s <strong>de</strong> los procesos.<br />

<strong>2.</strong>10.3. Cálculo y Control <strong>de</strong> Prioridad <strong>de</strong> un Proceso.<br />

• A: Asigna la prioridad a un proceso a punto <strong>de</strong> dormir ⇒ Valor fijo <strong>de</strong>pendiente <strong>de</strong> la razón por la<br />

que se fue a dormir.<br />

• B: Ajusta la prioridad a un proceso cuando vuelve a modo usuario <strong>de</strong>s<strong>de</strong> modo kernel.<br />

– Tiene prioridad muy alta.<br />

– Ha usado valiosísimos recursos <strong>de</strong>l kernel.<br />

• C: Ajusta las priorida<strong>de</strong>s a procesos en modo usuario en intervalos fijos <strong>de</strong> tiempo (quantum) y<br />

ejecuta el algoritmo <strong>de</strong> planificación para prevenir la monopolización <strong>de</strong> la CPU por parte <strong>de</strong><br />

<strong>de</strong>terminados procesos (Round Robin).<br />

• Reloj pue<strong>de</strong> interrumpir el proceso varias veces durante su quantum <strong>de</strong> tiempo.<br />

• Cada interrupción ⇒ el manejador <strong>de</strong> interrupciones incrementa el campo <strong>de</strong> prioridad en la tabla<br />

<strong>de</strong> procesos que registra el uso reciente <strong>de</strong> CPU por parte <strong>de</strong>l proceso.<br />

• Cuando se produce el fin <strong>de</strong>l quantum ⇒ calcula el uso reciente <strong>de</strong> la CPU ajustándolo con:<br />

– Función <strong>de</strong> <strong>de</strong>caimiento ⇒ <strong>de</strong>caimiento (CPU) = CPU / <strong>2.</strong><br />

• Recalcula la prioridad <strong>de</strong> procesos en estado “listo para su ejecución”.<br />

– prioridad = (uso_reciente_CPU / 2) + (nivel_base_prioridad_usuario).<br />

• El efecto <strong>de</strong> recalcular las priorida<strong>de</strong>s ⇒ Movimiento <strong>de</strong> procesos entre las diferentes colas <strong>de</strong><br />

prioridad.<br />

• Otras implementaciones <strong>de</strong>l mecanismo <strong>de</strong> planificación.<br />

– Variar el tamaño <strong>de</strong>l quantum <strong>de</strong> tiempo dinámicamente según la carga <strong>de</strong>l sistema.<br />

– Respuesta más rápida vs. más cambios <strong>de</strong> contexto ⇒ elegir un tamaño <strong>de</strong> quantum<br />

a<strong>de</strong>cuado.<br />

Departamento <strong>de</strong> Lenguajes y Computación. <strong>Universidad</strong> <strong>de</strong> Almería Página <strong>2.</strong>61

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!