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 />

• Ejecución en modo kernel (2).<br />

− Gestión interrupciones y llamadas al sistema, planificación, etc. Esta transición se <strong>de</strong>be a<br />

eventos que sólo el kernel pue<strong>de</strong> controlar y no pue<strong>de</strong>n pasar a otro estado <strong>de</strong> tránsito<br />

[Evento = interrupción / volver <strong>de</strong> interrupción]<br />

− Si viene <strong>de</strong> recién creado (8) → completa su parte <strong>de</strong>l fork ante un evento <strong>de</strong> “hay suficiente<br />

memoria”.<br />

− Cuando el proceso termine <strong>de</strong> ejecutarse en modo kernel → pasa a ejecutarse en modo<br />

usuario (1) [Evento = volver].<br />

• Listo para ejecutarse en memoria (3) o en el área <strong>de</strong> swap en memoria secundaria (5).<br />

− Listo para ejecutarse en memoria (3).<br />

+ El proceso no se está ejecutando, pero está listo para ejecutarse tan pronto como el<br />

scheduler lo or<strong>de</strong>ne [Evento = or<strong>de</strong>n <strong>de</strong> ejecución por parte <strong>de</strong>l scheduler]. Pue<strong>de</strong><br />

haber varios procesos simultáneamente en este estado.<br />

+ Si viene <strong>de</strong> recién “Creado” (8), completa su parte <strong>de</strong>l fork [Evento = hay memoria<br />

suficiente].<br />

− Listo para ejecutarse en el área <strong>de</strong> swap, en memoria secundaria (5).<br />

+ No hay memoria principal suficiente para todos los procesos [Evento = memoria<br />

principal insuficiente].<br />

+ El proceso está listo para ejecutarse pero el swapper (proceso 0) <strong>de</strong>be cargar el<br />

proceso en memoria secundaria (swap out) antes <strong>de</strong> que el kernel pueda or<strong>de</strong>nar que<br />

pase a ejecutarse.<br />

• Durmiendo cargando en memoria (4) o en el área <strong>de</strong> swap en memoria secundaria (6).<br />

− El proceso está durmiendo cargado en memoria principal (4). Un proceso entra en este<br />

estado cuando no pue<strong>de</strong> proseguir su ejecución porque está esperando a que se complete una<br />

operación <strong>de</strong> entrada/salida [Evento = dormir].<br />

− El proceso está durmiendo y el swapper ha <strong>de</strong>scargado el proceso hacia memoria secundaria<br />

(6) (en el área <strong>de</strong> swap) para po<strong>de</strong>r crear espacio en memoria principal para po<strong>de</strong>r cargar<br />

otros procesos [Evento = sacar <strong>de</strong> memoria principal para enviar a disco (swap out)]. Una<br />

vez, que el proceso ha estado durmiendo en memoria secundaria, según un evento <strong>de</strong>spertar<br />

[Evento = <strong>de</strong>spertar] pue<strong>de</strong> pasar al estado “listo para ejecutarse en memoria secundaria<br />

(área <strong>de</strong> swap)”.<br />

• Requisado o expulsado o apropiado (7).<br />

− El proceso está volviendo <strong>de</strong>l modo kernel al modo usuario, pero el kernel se apropia <strong>de</strong>l<br />

proceso y hace un cambio <strong>de</strong> contexto, pasando otro proceso a ejecutarse en modo usuario<br />

[Evento = requisar (cambio <strong>de</strong> contexto)].<br />

− Des<strong>de</strong> este estado pue<strong>de</strong> pasar el proceso al estado <strong>de</strong> “ejecutándose en modo usuario”<br />

gracias a un evento <strong>de</strong> volver al modo usuario [Evento = volver al modo usuario].<br />

• Estado Zombie (9).<br />

− Fin <strong>de</strong> ejecución <strong>de</strong> un proceso pero sigue siendo referenciado en el sistema ⇒ Llamada al<br />

sistema exit [Evento = exit] y pasa a estado Zombie. El proceso ya no existe, pero <strong>de</strong>ja para<br />

su proceso padre un registro que contiene el código <strong>de</strong> salida y algunos datos estadísticos<br />

tales como los tiempos <strong>de</strong> ejecución. El estado Zombie es el estado final <strong>de</strong> un proceso<br />

+ Estado <strong>de</strong> proceso ejecutándose en modo kernel [Evento = exit] ⇒ Estado Zombie.<br />

− Recurso: tabla <strong>de</strong> procesos.<br />

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

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

Saved successfully!

Ooh no, something went wrong!