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