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