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