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

<strong>2.</strong>1. ESTADOS Y TRANSICIONES <strong>DE</strong> UN PROCESO.<br />

<strong>2.</strong>1.1. Ciclo Vida <strong>de</strong> un Proceso en UNIX. Conjunto Estados (Figura <strong>2.</strong>1.).<br />

Ya sabemos que un programa es una colección <strong>de</strong> instrucciones y <strong>de</strong> datos que se encuentran almacenados en<br />

un archivo que tiene en su inodo un atributo que lo i<strong>de</strong>ntifica como ejecutable. Pue<strong>de</strong> ser ejecutado por el<br />

propietario, por el grupo y por el resto <strong>de</strong> los usuarios, <strong>de</strong>pendiendo <strong>de</strong> los permisos que tenga el archivo.<br />

Cuando un programa es leído <strong>de</strong>l disco (a través <strong>de</strong>l sistema <strong>de</strong> archivos) por el kernel y es cargado en<br />

memoria para ejecutarse, se convierte en un proceso. También <strong>de</strong>bemos recordar que en un proceso no sólo<br />

hay una copia <strong>de</strong>l programa, sino que a<strong>de</strong>más el kernel le aña<strong>de</strong> información adicional para po<strong>de</strong>r manejarlo.<br />

El tiempo <strong>de</strong> vida <strong>de</strong> un proceso se pue<strong>de</strong> dividir en un conjunto <strong>de</strong> estados, cada uno con unas<br />

características <strong>de</strong>terminadas. Es <strong>de</strong>cir, que un proceso no permanece siempre en un mismo estado, sino que<br />

está continuamente cambiando <strong>de</strong> acuerdo con unas reglas bien <strong>de</strong>finidas. Estos cambios <strong>de</strong> estados vienen<br />

impuestos por la competencia que existe entre los procesos para compartir un recurso tan escaso como es la<br />

CPU (scheduler). La transición entre los diferentes estados (Figura <strong>2.</strong>1) da lugar a un Diagrama <strong>de</strong><br />

Transición <strong>de</strong> Estados. Un diagrama <strong>de</strong> transición <strong>de</strong> estados es un grafo dirigido, cuyos nodos representan<br />

los estados que pue<strong>de</strong>n alcanzar los procesos y cuyos arcos representan los eventos que hacen que un proceso<br />

cambie <strong>de</strong> un estado a otro.<br />

En la Figura <strong>2.</strong>1. po<strong>de</strong>mos ver el diagrama completo y los estados que en él se reflejan son:<br />

• Entrada <strong>de</strong>l proceso en el mo<strong>de</strong>lo, creación <strong>de</strong> un proceso: estado Creado (8).<br />

− Este estado es el estado inicial para todos los procesos excepto el proceso 0 (swapper).<br />

− Llamada al sistema fork <strong>de</strong>l padre ⇒ Jerarquía <strong>de</strong> procesos.<br />

− El proceso acaba <strong>de</strong> ser creado y está en un estado <strong>de</strong> transición; el proceso existe, pero ni<br />

está preparado para ejecutarse (estado 3), ni durmiendo (estado 4)<br />

• Proceso ejecutándose en modo usuario (1). Los eventos que <strong>de</strong>senca<strong>de</strong>nan una transición pue<strong>de</strong>n<br />

ser los siguientes:<br />

− [Evento = fin quantum] ⇒ transición al estado <strong>de</strong> “ejecutándose en modo kernel” (2).<br />

+ Gestión <strong>de</strong> la interrupción. Esta función la lleva a cargo el módulo <strong>de</strong> control <strong>de</strong>l<br />

hardware, que es la parte <strong>de</strong>l kernel encargada <strong>de</strong>l manejo <strong>de</strong> interrupciones y <strong>de</strong> la<br />

comunicación con la máquina.<br />

+ Planificación a cargo <strong>de</strong>l scheduler.<br />

* Elegir otro proceso si es el siguiente para ser ejecutado según el scheduler.<br />

* Proceso actual pasa a → Requisado (7) [Evento = requisar (o apropiar), en el<br />

que el kernel se apo<strong>de</strong>ra <strong>de</strong>l proceso y hace un cambio <strong>de</strong> contexto, pasando<br />

otro proceso a ejecutarse en modo usuario] → posiblemente a listo para ejecutar<br />

en modo usuario.<br />

− [Evento = llamada al sistema] ⇒ transición al estado <strong>de</strong> “ejecutándose en modo kernel” (2).<br />

+ Operación <strong>de</strong> Entrada/Salida.<br />

* El proceso pasa al estado “durmiendo en memoria” (4) [Evento = dormir].<br />

+ Fin <strong>de</strong> la operación <strong>de</strong> Entrada/Salida.<br />

* El hardware interrumpe la CPU. Como sabemos los dispositivos pue<strong>de</strong>n<br />

interrumpir la CPU mientras está ejecutando un proceso. Si esto ocurre, el<br />

kernel <strong>de</strong>be reanudar la ejecución <strong>de</strong>l proceso <strong>de</strong>spués <strong>de</strong> aten<strong>de</strong>r a la<br />

interrupción. Las interrupciones no son atendidas por procesos, sino por<br />

funciones especiales, codificadas en el kernel, que son llamadas durante la<br />

ejecución <strong>de</strong> cualquier proceso.<br />

* Estado listo para ejecutarse en memoria (3) [Evento = <strong>de</strong>spertar].<br />

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

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

Saved successfully!

Ooh no, something went wrong!