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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

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

– Construcción <strong>de</strong> la parte dinámica <strong>de</strong>l contexto <strong>de</strong>l proceso hijo a nivel <strong>de</strong> sistema (la pila<br />

kernel que contiene marcos <strong>de</strong> pila <strong>de</strong> las funciones ejecutadas en modo kernel por el<br />

proceso y una serie <strong>de</strong> capas que se almacenan en forma <strong>de</strong> pila, que contiene la información<br />

necesaria para po<strong>de</strong>r recuperar la capa anterior incluyendo el contexto <strong>de</strong> nivel <strong>de</strong> registros<br />

<strong>de</strong> la capa anterior).<br />

+ El kernel copia o apila la capa (1) <strong>de</strong>l proceso padre.<br />

* Contexto <strong>de</strong> nivel <strong>de</strong> registros <strong>de</strong> usuario salvados.<br />

* Capa <strong>de</strong> la pila kernel para la llamada al sistema, fork.<br />

+ El kernel crea y apila una capa <strong>de</strong> contexto falsa (2) para el proceso hijo.<br />

* Contexto <strong>de</strong> nivel <strong>de</strong> registros salvado para la capa (1).<br />

* Datos necesarios para permitir al proceso hijo reconocerse y empezar la<br />

ejecución <strong>de</strong>s<strong>de</strong> este momento cuando sea planificado por el kernel a través <strong>de</strong>l<br />

scheduler (contador <strong>de</strong>l programa, PC (registro <strong>de</strong> estado <strong>de</strong>l procesador que<br />

especifica el estado <strong>de</strong>l hardware), puntero <strong>de</strong> la pila, otros registros, etc.).<br />

– if (proceso padre)<br />

+ El kernel cambia el estado <strong>de</strong>l proceso hijo <strong>de</strong> “Creado” a “Listo para su ejecución en<br />

memoria principal” o “Listo para su ejecución en el área <strong>de</strong> swap”.<br />

+ El kernel retorna el PID <strong>de</strong>l proceso creado (hijo) al proceso padre, y al proceso hijo le<br />

<strong>de</strong>vuelve el valor 0.<br />

else<br />

+ Inicializa los campos <strong>de</strong> tiempo en el u-Area (área <strong>de</strong> usuario).<br />

+ retorna 0.<br />

Datos<br />

Padre<br />

Pila<br />

Usuario<br />

Padre<br />

Proceso Padre<br />

Tabla <strong>de</strong><br />

Regiones<br />

por Proceso<br />

U-area<br />

Archivos Abiertos<br />

Directorio Actual<br />

Directorio Raíz<br />

.<br />

.<br />

Pila kernel<br />

Tabla <strong>de</strong> Archivos<br />

.<br />

.<br />

.<br />

.<br />

.<br />

.<br />

Texto o código<br />

Compartido<br />

Datos<br />

Hijo<br />

Pila<br />

Usuario<br />

Hijo<br />

Proceso Hijo<br />

Tabla <strong>de</strong><br />

Regiones<br />

por Proceso<br />

U-area<br />

Archivos Abiertos<br />

Directorio Actual<br />

Directorio Raíz<br />

.<br />

.<br />

Pila kernel<br />

Tabla <strong>de</strong> Inodos<br />

.<br />

.<br />

.<br />

.<br />

.<br />

.<br />

.<br />

Figura <strong>2.</strong>11. Procesos padre e hijo <strong>de</strong>spués <strong>de</strong> un fork. Creación <strong>de</strong> un nuevo contexto mediante fork.<br />

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

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

Saved successfully!

Ooh no, something went wrong!