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

proc. a<br />

esperando finalización E/S<br />

proc. b<br />

dir. A<br />

proc. c<br />

esperando búffer<br />

proc. d<br />

proc. e<br />

proc. f<br />

proc. g<br />

esperando nodo-i<br />

esperando entrada por terminal<br />

dir. B<br />

dir. C<br />

proc. h<br />

Figura <strong>2.</strong>13. Procesos durmiendo en eventos y correspon<strong>de</strong>ncia entre eventos y direcciones virtuales.<br />

<strong>2.</strong>7.3.3. Problemas.<br />

• El proceso duerme hasta que ocurre el evento apropiado ⇒ Procesos duermen habitualmente en<br />

eventos que ocurren con seguridad.<br />

• Procesos dormidos en eventos que pue<strong>de</strong>n no producirse ⇒ Mecanismo para retomar el control y<br />

continuar la ejecución ⇒ El kernel interrumpe al proceso que duerme enviándole una señal<br />

(interrupción software).<br />

• Po<strong>de</strong>mos distinguir varios tipos “dormido” (procesos que han alcanzado este estado), <strong>de</strong>pendiendo<br />

<strong>de</strong> priorida<strong>de</strong>s.<br />

– El kernel fija la prioridad <strong>de</strong> planificación <strong>de</strong>l proceso “dormido” cuando pasa a dicho<br />

estado, basada en la prioridad con la que duerme (niveles <strong>de</strong> prioridad para procesos en<br />

estado “dormido”).<br />

– Si la prioridad <strong>de</strong>l proceso “dormido” está por encima <strong>de</strong> un valor umbral ⇒ Proceso no<br />

<strong>de</strong>spertará ante la recepción <strong>de</strong> una señal.<br />

– Si la prioridad <strong>de</strong>l proceso “dormido” está por <strong>de</strong>bajo <strong>de</strong> dicho umbral ⇒ Despertará<br />

inmediatamente ante la recepción <strong>de</strong> la señal.<br />

• Si un proceso <strong>de</strong>spierta ante una señal.<br />

– El kernel realiza acciones especiales (longjmp, que restaura el entorno salvado por setjmp)<br />

para restaurar el contexto salvado si no pue<strong>de</strong> completar la llamada al sistema en ejecución.<br />

Y que, no es suficiente con restaurar la capa <strong>de</strong> contexto <strong>de</strong>l nivel <strong>de</strong> sistema anterior.<br />

<strong>2.</strong>7.3.4. Acciones para Dormir (sleep).<br />

• El kernel eleva el nivel <strong>de</strong> ejecución <strong>de</strong>l procesador (priorida<strong>de</strong>s) ⇒ Bloquear las interrupciones.<br />

• El kernel marca el proceso como “dormido”, en el campo <strong>de</strong> estado asociado a su <strong>de</strong>scriptor <strong>de</strong><br />

proceso.<br />

• El kernel guarda la dirección virtual sobre la que duerme (dirección <strong>de</strong> bloqueo) y la prioridad en la<br />

tabla <strong>de</strong> procesos.<br />

• El kernel coloca al proceso en una cola hash <strong>de</strong> procesos “dormidos”.<br />

• Si el proceso que duerme no pue<strong>de</strong> ser interrumpido por señales, entonces sleep no pue<strong>de</strong> ser<br />

interrumpido por ninguna señal (caso más sencillo).<br />

– Cambio <strong>de</strong> contexto y pasa a estado “dormido”.<br />

– Cuando <strong>de</strong>spierta pasa a “listo para ejecutarse” y el kernel lo planificará en algún momento<br />

(scheduler), retomando su ejecución vía un cambio <strong>de</strong> contexto.<br />

– Su ejecución continuará justo a partir <strong>de</strong> este momento.<br />

+ El proceso retorna <strong>de</strong> su cambio <strong>de</strong> contexto en el sleep<br />

+ Restaura el nivel <strong>de</strong> ejecución <strong>de</strong>l procesador al valor inicial.<br />

+ Retorna.<br />

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

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

Saved successfully!

Ooh no, something went wrong!