UNIDAD II ADMINISTRACION DE PROCESOS

lunes, 28 de noviembre de 2011 - Publicado por Sistemas Operativos 1 en 18:04


2.1 DESCRIPCION Y CONTROL DE PROCESOS
Los principios principales que debe satisfacer un sistema operativo están expresados haciendo referencia a los procesos.
El sistema operativo debe de asignar los recursos a los procesos conforme a una política específica, por ejemplo en ciertas funciones o aplicaciones que son de mayor prioridad.
El sistema operativo da soporte a la comunicación entre procesos por parte del usuario, labores que pueden ser de ayuda en la estructuración de las aplicaciones.

2.2 DEFINICION DE PROCESO
Para definir lo que es un proceso, hay que establecer la diferencia con el concepto de programa:
- Un programa es una entidad pasiva compuesta únicamente por un código y unos datos, es decir, tiene un listado fijo.
- Un proceso es una entidad activa, es el “programa “en ejecución.
2.3 ESTADOS DE UN PROCESOS
Durante su existencia, un proceso pasa por una serie de estados discretos. Varias circunstancias pueden hacer que un proceso cambie de estado.
Los estados más importantes en que puede encontrarse un proceso son:
·         Ejecutable (o activo): Si el proceso tiene asignada en ese momento la CPU.
·        Listo (preparado): Cuando el proceso podría usar una CPU, si hubiera una disponible.
·         Bloqueado (en espera): Si el proceso espera que ocurra algo (la terminación de una E/S por ejemplo) para poder ponerse en marcha.
2.4 CONTROL DE PROCESOS
La mayoría de los procesadores dan soporte para dos modos de ejecución por lo menos. Ciertas instrucciones pueden ejecutarse sólo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control (como la palabra de estado del programa), instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria sólo en el modo más privilegiado.

2.5 PROCESOS E HILOS
Los hilos son procesos ligeros que se componen de registros, un espacio de pila y un contador de programa.
Los hilos comparten su código ejecutable, su pila y los recursos que utiliza. Con el uso de hilos deja de ser necesaria la costosa conmutación de contexto de uno a otro proceso.
Los hilos son especiales para realizar procesamiento paralelo, pero esto incurre en algunos problemas como la consistencia de datos, para lo que se usan distintos mecanismos para solucionarlos como secciones críticas y cerraduras.
Los hilos pueden estar a nivel del núcleo del sistema operativo o a nivel de usuario.

2.6 CONCURRENCIA: EXCLUSION MUTUA Y SINCRONIZACION
Los temas fundamentales del diseño de sistemas operativos están relacionados con la gestión de procesos e hilos:
Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-procesador.
Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema multiprocesador.
Procesamiento distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas de computadores múltiples y distribuidos. La reciente proliferación de las agrupaciones es el principal ejemplo de este tipo de sistemas.
La concurrencia es fundamental en todas estas áreas y para el diseño sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluida la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos. Se verá que estas cuestiones no solo surgen en entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador.
La concurrencia puede presentarse en tres contextos diferentes:
• Múltiples aplicaciones: la multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas.
• Aplicaciones estructuradas: como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos.

2.7 PRINCIPIOS GENERALES DE LA CONCURRENCIA
En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas. La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:

1. Compartir recursos globales es riesgoso
2. Para el sistema operativo es difícil gestionar la asignación óptima de recursos.

2.8 EXCLUSION MUTUA; SOLUCION POR HARDWARE Y SOFTWARE
Los recursos de un sistema pueden clasificarse como compartibles, lo que significa que pueden ser empleados por varios procesos de forma concurrente, o no-compartibles, lo que equivale a que su uso se restrinja a un solo proceso a la vez.
El problema de la, exclusión mutua es el de asegurar que los recursos no compartibles sean accedidos por un solo proceso a la vez. Aquella parte del programa en la cual se accede al recurso compartido se denomina sección crítica. Hay que evitar que dos procesos entren simultáneamente en su sección crítica.
Cuando varios procesos compiten por recursos es posible que se de una situación en la que ninguno de ellos pueda proseguir debido a que los recursos que cada uno de ellos necesita estén ocupados por los otros. Esta situación se conoce con el nombre de interbloqueo o deadlock.

2.9 SEMAFOROS
Semáforos es un algoritmo de control de procesos, que tiene solo dos operaciones básicas, las cuales son:
Wait.- Pregunta a los procesos si su contador es > ó = que cero, en caso de no ser así, los decremento. El proceso que cambia en este caso a negativo (−1) desde la cola de procesos Listos a ser ejecutados es el que automáticamente toma el control del procesador.
Signal.- A partir de un tiempo t definido por el despachador se ejecuta, y pregunta a los procesos si su contador es < que cero en caso de que sea afirmativa la respuesta, saca a este proceso de su ejecución y depende de su estado.

2.10 MONITORES
Un monitor encapsula el código relativo a un recurso compartido en un solo módulo de programa; ventajas:
• Mantenimiento más simple
• Menos errores de programación
La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones que pueden hacerse con el recurso. La implementación del monitor garantiza la exclusión mutua, mediante semáforos o algún otro mecanismo o implícitamente en los lenguajes concurrentes.

2.11 PASO DE MENSAJES
El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc.
Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos.
Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.

2.12 CONCURRENCIA E INTERBLOQUEO (DEADLOCK)
DEADLOCK
Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.
Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.
Se dice que dos procesos se encuentran en estado de deadlock (interbloqueo, bloqueo mutuo o abrazo mortal) cuando están esperando por condiciones que nunca se van a cumplir. Se podría hablar de deadlock como el estado permanente de bloqueo de un conjunto de procesos que están compitiendo por recursos del sistema.

2.13 PRINCIPIOS DEL INTERBLOQUEO
El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general.
Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o más procesos.

2.14 ACCIONES A REALIZAR ANTE UN INTERBLOQUEO. PREVENCION, DETECCION PREDICCION Y EVITAR
CONDICIONES PARA PRODUCIR INTERBLOQUEO
En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo:
1- Condición de exclusión mutua: Cada recurso está asignado a un único proceso o está disponible.
2- Condición de posesión y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos.
3- Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explícita.
En la mayoría de los casos, estas condiciones son bastantes necesarias. La exclusión mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma similar, la apropiación no se puede aplicar arbitrariamente y, cuando se encuentran involucrados recursos de datos, debe estar acompañada de un mecanismo de recuperación y reanudación, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puede finalmente repetir sus acciones.
Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición:
4- Condición de espera circular (o círculo vicioso de espera): Debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena.
PREVENCIÓN DEL INTERBLOQUEO
La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en diseñar su sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo.
Los métodos para prevenir el interbloqueo son de dos tipos:
- Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqueo.
- Los métodos directos que consisten en evitar la aparición del círculo vicioso de espera.
PREDICCIÓN DEL INTERBLOQUEO
Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevención, es la predicción del interbloqueo. En la prevención de interbloqueo, se obligaba a las solicitudes de recursos a impedir que sucediera, por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la aparición de una de las tres condiciones necesarias (exclusión mutua, retención y espera, no apropiación) o directamente, impidiendo la aparición de un círculo vicioso de espera. Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos. Con predicción del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción, por lo tanto, permite más concurrencia que la prevención. Con predicción del interbloqueo, se decide dinámicamente si la petición actual de asignación de un recurso podría, de concederse, llevar potencialmente a un interbloqueo. La predicción del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos. Enfoques para la predicción del interbloqueo: No iniciar un proceso si sus demandas pueden llevar a interbloqueo. No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.
DETECCIÓN DEL INTERBLOQUEO
Las estrategias de prevención de interbloqueo son muy conservadoras; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de detección de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. Con la detección del interbloqueo, se concederán los recursos que los procesos necesiten siempre que sea posible. Periódicamente, el S. O. ejecuta un algoritmo que permite detectar la condición de círculo vicioso de espera. - La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo. - Este método está basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera.

BI B L I O G R A F Í A

"Sistemas Operativos: Concepto y Diseño"; Milan Milenkovic; McGraw-Hill; 1.994
• "Introducción a la Informática" A. Prieto; McGraw-Hill; 1.995
• "Sistemas Operativos: Diseño e Implementación"; Tanenbaum;
Prentice; 1.988
• VICTOR MANUEL, A J.ANTONIO, “Sistemas Operativos” Alhambra.