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

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