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

Contexto <strong>de</strong>l nivel <strong>de</strong> sistema.<br />

• El contexto <strong>de</strong>l nivel <strong>de</strong> sistema <strong>de</strong> un proceso tiene una parte estática y otra dinámica. Todo<br />

proceso tiene una única parte estática <strong>de</strong>l contexto <strong>de</strong>l nivel <strong>de</strong> usuario, pero pue<strong>de</strong> tener un número<br />

variable <strong>de</strong> partes dinámicas. La parte dinámica es vista como una pila <strong>de</strong> capas <strong>de</strong> contexto que el<br />

kernel pue<strong>de</strong> apilar y <strong>de</strong>sapilar según los eventos que se produzcan.<br />

• Parte estática.<br />

– La entrada en la tabla <strong>de</strong> procesos. Define el estado <strong>de</strong>l proceso y contiene información <strong>de</strong><br />

control que es siempre accesible al kernel.<br />

– El Área <strong>de</strong> Usuario (u-Area). Contiene información <strong>de</strong> control <strong>de</strong>l proceso que necesita ser<br />

accedida sólo en el contexto <strong>de</strong>l proceso.<br />

– Entradas en la pregion (tabla <strong>de</strong> regiones por proceso), tabla <strong>de</strong> regiones y tablas <strong>de</strong> páginas,<br />

que <strong>de</strong>finen el mapa <strong>de</strong> transformación entre las direcciones <strong>de</strong>l espacio virtual y las<br />

direcciones físicas. Si varios procesos comparten regiones comunes, estas regiones también<br />

son consi<strong>de</strong>radas parte <strong>de</strong>l contexto <strong>de</strong> cada proceso, ya que cada proceso las manipula<br />

in<strong>de</strong>pendientemente. Es trabajo <strong>de</strong>l módulo <strong>de</strong> gestión <strong>de</strong> memoria indica qué partes <strong>de</strong>l<br />

espacio <strong>de</strong> direcciones virtuales <strong>de</strong> un proceso no están cargadas en memoria.<br />

• Parte dinámica.<br />

– La pila <strong>de</strong>l kernel, que contiene marcos <strong>de</strong> pila (stack frames) <strong>de</strong> las funciones ejecutadas en<br />

modo kernel. Si bien todos los procesos ejecutan el mismo código kernel, hay una copia<br />

privada <strong>de</strong> la pila <strong>de</strong>l kernel para cada uno <strong>de</strong> ellos que da cuenta <strong>de</strong> las llamadas que cada<br />

proceso hace a las funciones <strong>de</strong>l kernel. Por ejemplo, un proceso pue<strong>de</strong> ejecutar la llamada a<br />

creat y ponerse a dormir hasta que se le asigne un inodo, y otro proceso pue<strong>de</strong> llamar a read<br />

y dormir hasta que se efectúe la transferencia entre el disco y la memoria. Ambos procesos<br />

están ejecutando funciones <strong>de</strong>l kernel, pero tienen pilas separadas que contienen la secuencia<br />

<strong>de</strong> llamadas a funciones que ha realizado cada uno. El kernel <strong>de</strong>be ser capaz <strong>de</strong> recuperar el<br />

contenido <strong>de</strong> la pila kernel y la posición <strong>de</strong>l puntero <strong>de</strong> pila para reanudar la ejecución <strong>de</strong> un<br />

proceso en modo kernel. La pila kernel está vacía cuando el proceso se está ejecutando en<br />

modo usuario.<br />

– Pila <strong>de</strong> capas <strong>de</strong> contexto <strong>de</strong>l nivel <strong>de</strong> sistema que el kernel apila o <strong>de</strong>sapila <strong>de</strong> acuerdo a una<br />

serie <strong>de</strong> eventos. Cada capa contiene la información necesaria para recuperar la capa<br />

anterior, incluyendo el contexto <strong>de</strong>l nivel <strong>de</strong> registros <strong>de</strong> la capa anterior.<br />

Apilar (salvar) y Desapilar (restaurar) capas <strong>de</strong> contexto.<br />

• Apilar (salvar) ⇒ el kernel apila una capa <strong>de</strong> contexto cuando se produce:<br />

– Una interrupción,<br />

– Una llamada al sistema, o<br />

– Un cambio <strong>de</strong> contexto, restaurándolo.<br />

• Desapilar (restaurar) ⇒ las capas <strong>de</strong> contexto son <strong>de</strong>sapiladas cuando:<br />

– El kernel vuelve <strong>de</strong>l tratamiento <strong>de</strong> una interrupción.<br />

– El proceso vuelve a modo usuario <strong>de</strong>spués <strong>de</strong> ejecutar una llamada al sistema.<br />

– Se produce un cambio <strong>de</strong> contexto.<br />

• La capa <strong>de</strong> contexto apilada es la <strong>de</strong>l último proceso que se estaba ejecutando y la <strong>de</strong>sapilada es la<br />

<strong>de</strong>l proceso que se va a pasar a ejecutar.<br />

• Cada una <strong>de</strong> las estradas <strong>de</strong> la tabla <strong>de</strong> procesos contiene información suficiente para po<strong>de</strong>r<br />

recuperar la capa contexto actual.<br />

• Figura <strong>2.</strong>10 ⇒ Componente que forman parte <strong>de</strong>l contexto <strong>de</strong> proceso. En el lado izquierdo<br />

tenemos la parte estática <strong>de</strong>l contexto y en el <strong>de</strong>recho la dinámica.<br />

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

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

Saved successfully!

Ooh no, something went wrong!