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