Академический Документы
Профессиональный Документы
Культура Документы
Una vez completada toda la información del proceso, se puede marcar como listo
para ejecutar, dc forma que el planificador, cuando lo considere oportuno, lo
seleccione para su ejecución.
Estados suspendidos
Además de los tres estados básicos de ejecución, listo y bloqueado, los procesos
pueden estar en los estados de espera y de suspendido. El diagrama de estados
completo de un proceso se representa en la Figura 3.15.
Los procesos entran en el sistema porque lo solicita un proceso de usuario o porque
está prevista su ejecución hatch. Es frecuente tener una lista de procesos batch en
espera para ser ejecutados cuando se pueda. El sistema operativo ha de ir
analizando dicha lista para lanzar la ejecución de los procesos a medida que
disponga de los recursos necesarios.
Los procesos salen del sistema cuando mueren, es decir, al ejecutar el servicio
correspondiente o al producir algún error irrecuperable.
Según la secuencia anterior, si se desea más adelante continuar con la ejecución del
proceso, se presenta un grave problema: los registros ya no contienen los valores
que deberían. Supongamos que el proceso está ejecutando la secuencia siguiente:
.
Figura 3.16. Al interrumpirse la ejecución de un proceso se salva su
estado en el BCP.
Cuando el sistema operativo decide volver a pasar un proceso a estado de ejecución,
ha dc reintegrar los registros al estado previamente salvado en el BCP. De esta
forma, se consigue que el proceso pueda seguir ejecutando sin notar ninguna
diferencia.
Activación de un proceso
El módulo del sistema operativo que pone a ejecutar un proceso se denomina
activador dispatcher. La activación de un proceso consiste en copiar en los
registros del procesador el estado del procesador, que está almacenado en su BCP.
De esta forma, el proceso continuará su ejecución en las mismas condiciones en las
que fue parado. El activador termina con una instrucción RETI (Recordatorio 3.4) de
retorno de interrupción. El efecto de esta instrucción es restituir el registro de estado
y el contador de programa, lo cual tiene los importantes efectos siguientes:
• Contador de programa.
• Pila.
• Registros.
• Estado del proceso ligero (ejecutando, listo o bloqueado).
El proceso ligero puede estar en uno de los tres estados siguientes: ejecutando, listo
para ejecutar y bloqueado. Como muestra la Figura 3.19, cada proceso ligero de un
proceso tiene su propio estado, pudiendo estar unos bloqueados, otros listos y otros
en ejecución (Aclaración 3.4).
El estado del proceso será ¡a combinación de los estados de sus procesos ligeros.
Por ejemplo, si tiene un proceso ligero en ejecución, el proceso está en ejecución. Si
no tiene proceso ligero en ejecución, pero tiene alguno listo para ejecutar, el proceso
está en estado de listo. Finalmente, si todos sus procesos ligeros están bloqueados,
el proceso está bloqueado. No tiene sentido el estado dc suspendido, puesto que, si
el proceso está suspendido, todos sus procesos ligeros lo estarán.
Paralelismo
Los procesos ligeros permiten paralelizar una aplicación, tal y como muestra la
Figura
En efecto, cuando un programa puede dividirse en procedimientos que pueden
ejecutar de forma independiente, el mecanismo de los procesos ligeros permite
lanzar simultáneamente la ejecución de todos ellos. De esta forma se consigue que
el proceso avance más rápidamente (Prestaciones 3.2).
La base de este paralelismo estriba en que, mientras un proceso ligero está
bloqueado, otro puede ejecutar.
Comparando el uso de los procesos ligeros con otras soluciones se puede decir que:
— No hay paralelismo.
— Utiliza llamadas al sistema bloqueantes.
— Permite paralelismo.
— Utiliza llamadas al sistema no bloqueantes, lo que lleva a un diseño
muy complejo y difícil de mantener.
Figura 3.20. Los procesos ligeros permiten paralelizar la ejecución de
una aplicación.
• Varios procesos convencionales cooperando:
— Permite paralelismo.
— No comparte variables, por lo que la comunicación puede consumir
mucho tiempo.
La utilización de procesos ligeros ofrece las ventajas de división de trabajo que dan
los procesos, pero con una mayor sencillez, lo que se traduce en mejores
prestaciones. En este sentido, es de destacar que los procesos ligeros comparten
memoria directamente, por lo que no hay que añadir ningún mecanismo adicional
para utilizarla, y que la creación y destrucción de procesos ligeros requiere mucho
menos trabajo que la de procesos.
Las ventajas de diseño que se pueden atribuir a los procesos ligeros son las
siguientes:
• Permite separación de tareas. Cada tarea se puede encapsular en un
proceso ligero independiente.
• Facilita el modularidad, al dividir trabajos complejos en tareas.
• Aumenta la velocidad de ejecución del trabajo, puesto que aprovecha los
tiempos de bloqueo de unos procesos ligeros para ejecutar otros.
El paralelismo que permiten los procesos ligeros, unido a que comparten memoria
(utilizan variables globales que ven todos ellos), permite la programación
concurrente. Este tipo de programación tiene un alto nivel de dificultad, puesto que
hay que garantizar que el acceso a los datos compartidos se haga de forma correcta.
Los principios básicos que hay que aplicar son los siguientes: