|
Por: 15-04-2009 por jdjapon |
Categorías asociadas: Capitulo 6
EnEn los sistemas operativos multiprogramados surge el concepto de proceso, asociado a la ejecución de un programa. En general, un proceso es un programa en ejecución, representado básicamente por un contador de programa, y su contexto de ejecución, que puede ser más o menos amplio. Así, un proceso incluye en su contexto el estado de la pila, el estado de la memoria y el estado de la E/S. En algunos sistemas es posible determinar el contexto propio de un proceso en el momento de su creación, como ocurre con la llamada al sistema clone() de Linux. En adelante, sin perder generalidad, utilizaremos siempre el término proceso, independientemente de cuál sea su contexto.
Por: 14-04-2009 por skarmijos |
Categorías asociadas: Capitulo 6, Paralelo "B"
SINCRONIZACION DE PROCESOS Un proceso cooperativo es aquel que puede afectar o verse afectado por otros procesos que estén ejecutándose en el sistema. Los procesos cooperativos pueden compartir directamente un espacio de direcciones lógico o compartir los datos sólo a través de archivos o mensajes. El primer caso se consigue mediante el uso de procesos ligeros o hebras. El acceso concurrente a datos compartidos puede dar lugar a incoherencia de los datos. Cada proceso tiene un segmento de código, llamado sección crítica, en el que el proceso puede modificar variables comunes, actualizar una tabla, escribir en un archivo, etc. La característica importante del sistema es que, cuando dos procesos no pueden ejecutar su sección crítica al mismo tiempo. Cada proceso debe solicitar permiso para entrar en su sección crítica, la selección de código que implementa esta solicitud es la sección de entrada. La sección crítica puede ir seguida de una sección de salida. El código restante se encuentra en la sección restante. La solución deberá satisfacer los siguientes requisitos: exclusión mutua, progreso, espera limitada. Se usan dos métodos generales para gestionar las secciones críticas en los sistemas operativos: Kernel apropiativos.- permite que un proceso sea desalojado mientras se está ejecutando en modo kernel. Kernel no apropiativos.- no permite que un proceso que se está ejecutando en modo kernel sea desalojado; el proceso en modo kernel se ejecutará hasta que salga de dicho modo, hasta que se bloquee o hasta que ceda voluntariamente el control de la CPU. Un kernel no apropiativo esta esencialmente libre de condiciones de carrera en lo que respecta a las estructuras de datos del kernel, ya que solo hay un proceso activo en el kernel en cada momento, por lo que los kernel apropiativos deben ser diseñados cuidadosamente para asegurar que los datos compartidos del kernel no se vean afectados por posibles condiciones de carrera. Un kernel apropiativo es más adecuado para la programación en tiempo real, ya que permite a un proceso en tiempo real desalojar a un proceso que se esté ejecutando actualmente en el kernel, además que puede tener una mejor capacidad de respuesta ya que existe menos riesgo de que un proceso en modo kernel se ejecute durante un periodo de tiempo arbitrariamente largo. Una solución clásica al problema de la sección crítica es la solución de Peterson, que se basa en restringir dos procesos que se van alternando la ejecución de sus secciones criticas y de sus secciones restantes. Cualquier solución al problema de la sección crítica requiere una herramienta muy simple, un cerrojo; de esta manera se evita las condiciones de carrera requiriendo que las regiones críticas se protejan mediante cerrojos, es decir, un proceso debe adquirir un cerrojo antes de entrar en una sección critica y liberarlo cuando salga de la misma. El soporte hardware puede facilitar cualquier tarea de programación y mejorar la eficiencia del sistema, por lo que muchos sistemas informáticos modernos proporcionan instrucciones hardware especiales que nos permiten consultar y modificar el contenido de una palabra o intercambiar los contenidos de dos palabras atómicamente, es decir, como una unidad de trabajo ininterrumpida. Una herramienta de sincronización es el semáforo, un semáforo S es una variable entera a la que, dejando aparte la inicialización solo se accede mediante dos operaciones atómicas estándar: wait() y signal(), cuando un proceso modifica el valor del semáforo, ningún otro proceso puede modificar simultáneamente el valor de dicho semáforo. El sistema operativo diferencia entre semáforos contadores y viarios. El valor de un semáforo contador puede variar en un dominio no restringido, mientras que el valor de un semáforo binario solo puede ser 0 o 1, en algunos casos estos semáforos se conocen como cerrojos mutex, ya que proporcionan exclusión mutua. Los semáforos contadores se pueden usar para controlar el acceso a un determinado recurso formado por un número finito de instancias, se inicializa con el número de recursos disponibles. La principal desventaja de la definición de semáforo dada aquí es que requiere una espera activa. Mientras un proceso está en su sección critica, cualquier otro proceso que intente entrar en su sección crítica debe ejecutar continuamente un bucle en el código de entrada, la espera activa desperdicia ciclos de CPU que algunos otros procesos podrían usar de forma productiva, este tipo de semáforo se denomina cerrojo de bucle sin fin. La lista de procesos es espera puede implementarse fácilmente mediante un campo de enlace en cada PCB. La implementación de un semáforo con una cola de espera puede dar lugar a una situación en la que dos o más procesos estén esperando indefinidamente a que se produzca un suceso que solo puede producirse como consecuencias de las operaciones afectadas por otro de los procesos en espera, el suceso es la ejecución signal, cuando llega a un estado así se dice que los procesos se han interbloqueado. Un problema con los interbloqueos es el bloqueo indefinido o muerte por inanición que es aquella en la que algunos procesos esperan de forma indefinida dentro del semáforo, puede producirse si añadimos y eliminamos los procesos a la lista asociada con el semáforo utilizando un esquema LIFO. Se han definido problemas de sincronización como es el de bucle limitado, problema de los lectores escritores el cual se daría cuando algunos procesos pueden querer leer la base de datos y los otros pueden desear actualizarla. Este problema presenta variantes en las cuales se utiliza prioridades, la más sencilla requiere que ningún lector se mantenga en espera a menos que un escritor haya obtenido ya permiso para utilizar el objeto compartido, el segundo problema se trata sobre si un escritor está esperando para acceder al objeto, ningún proceso lector nuevo puede iniciar la lectura. Problema de la cena de filósofos es un ejemplo de una amplia clase de problemas de control de concurrencia, es una representación sencilla de la necesidad de repartir varios recursos entre varios procesos de una forma que no se produzca interbloqueos ni bloqueos indefinidos. Para afrontar estos problemas se puede utilizar los monitores que proporcionan mecanismos de sincronización para compartir tipos abstractos de datos, las variables de condición proporcionan un método mediante que un procedimiento de un monitor puede bloquear su ejecución hasta recibir la señal de que puede continuar. Una transacción es una unidad de programa que se debe ejecutar atómicamente, para asegurarlo a pesar de fallos se puede usar un registro de escritura anticipada. Para asegurar la serialización cuando se solapa la ejecución de varias transacciones, se debe emplear un esquema de control de concurrencia, estos esquemas operan retardando una operación o cancelando la transacción que ejecuto la operación, entre estos métodos consta los protocolos de bloqueo y los esquemas de ordenación mediante marcas temporales. Por: 14-04-2009 por rasisalima |
Categorías asociadas: Capitulo 6, Paralelo "B"
Capitulo 6 Por: 14-04-2009 por mariuximaza |
Categorías asociadas: Capitulo 6
En una colección de procesos secuenciales que comparten datos cooperativamente, es necesario proporcionar mecanismos de exclusión mutua. Problemas clásicos de sincronización - Estos problemas se utilizan probar casi todos los nuevos esquemas de sincronización propuestos. Este problema de cena de filósofos se considera un problema clásico de sincronización, no por su importancia practica ni porque los informáticos tengan aversión a los filósofos, sino porque es un ejemplo de una amplia clase de problemas de control de concurrencia. Por: 14-04-2009 por jccapa |
Categorías asociadas: Capitulo 6
Sincronización de Procesos - Un proceso cooperativo es aquel que puede afectar o verse afectado por otros procesos que estén ejecutándose en el sistema. - Los archivos cooperativos pueden compartir directamente un espacio de direcciones lógico (es decir tanto código como datos) o compartir los datos solo a través de archivos o mensajes. Fundamentos - Hemos desarrollado un modelo de sistema formado por procesos o hebras secuenciales cooperativas, los cuales se ejecutan de manera asíncrona posiblemente compartiendo datos. El problema de la sección critica - La característica principal del sistema es que, cuando un proceso esta ejecutando su sección critica, ningún otro proceso puede ejecutar su correspondiente sección crítica. - Es decir, dos procesos no pueden ejecutar su sección crítica al mismo tiempo. - Cualquier solución al problema de la sección critica deberá satisfacer los tres requisitos siguientes: · Exclusión mutua. Si el proceso Pi esta ejecutando su sección crítica, los demás procesos no pueden estar ejecutando sus secciones criticas. · Progreso. · Espera limitada. Existe un límite que es permitido un proceso para que ejecute su sección crítica.
Solución de Peterson - La solución de Peterson se restringe a dos procesos que van alternando la ejecución de sus secciones críticas y de sus secciones restantes. - Los procesos se enumeran como P0 y P1. - La solución de Peterson requiere que los dos procesos compartan dos elementos de datos.
Hardware de sincronización - En general podemos afirmar que cualquier solución al problema de la sección crítica requiere una herramienta muy simple, un cerrojo. - Es decir, un proceso debe adquirir un cerrojo antes de entrar en una sección crítica y liberarlo cuando salga de la misma.
Semáforos - Un semáforo S es una variable entera a la que, dejando aparte la inicialización, solo se accede mediante dos operaciones atómicas estándar: wait () y signal (). - Utilización · Los sistemas operativos diferencian a menudo entre semáforos contadores y semáforos binarios. · El valor de un semáforo contador puede variar en un dominio no restringido, mientras que el valor de un semáforo binario solo puede ser 0 o 1. · Los semáforos contadores se pueden usar para controlar el acceso a un determinado recurso formado por un número finito de instancias. - Implementación · La principal desventaja de la definición de semáforo dada aquí es que requiere una espera activa. · Mientras un proceso esta en sus sección critica, cualquier otro proceso que intente entrar en su sección critica debe ejecutar continuamente un bucle en el código de entrada. · Este bucle continuo plantea claramente un problema en un sistema real de multiprogramación, donde una sola CPU se comparte entre muchos procesos. - Interbloqueos e inanición · La implementación de un semáforo con una cola de espera puede dar lugar a una situación en la que dos o más procesos estén esperando indefinidamente. · El suceso en cuestión es la ejecución de una operación signal (). Cuando se llega a un estado así, se dice que estos procesos se han interbloqueado. · Decimos que un conjunto de procesos esta en un estado de interbloqueo cuando todos los procesos del conjunto están esperando un suceso que solo puede producirse como consecuencia de las acciones de otro proceso del conjunto.
Problemas clásicos de sincronización - Estos problemas se utilizan probar casi todos los nuevos esquemas de sincronización propuestos. - Problema del búfer limitado · Habitualmente se utiliza para ilustrar la potencia de las primitivas de sincronización. - El problema de los lectores-escritores · Este problema se ha utilizado para poder probar casi todas las nuevas primitivas de sincronización. · El problema de los lectores y escritores presenta diversas variantes, todas las cuales utilizan prioridades. - Problema de la cena de los filósofos · Este problema de cena de filósofos se considera un problema clásico de sincronización, no por su importancia practica ni porque los informáticos tengan aversión a los filósofos, sino porque es un ejemplo de una amplia clase de problemas de control de concurrencia. · Es una representación sencilla de la necesidad de repartir varios recursos entre varios procesos de una forma que no se produzcan interbloqueos ni bloqueos indefinidos.
Monitores - Aunque los semáforos proporcionan un mecanismo adecuado y efectivo para el proceso de sincronización, un uso incorrecto de los mismos puede dar lugar a errores de temporización que son difíciles de detectar. - Utilización · La representación de un tipo de monitor no puede ser utilizada directamente por los diversos procesos. · La estructura del monitor asegura que solo un proceso este activo cada vez dentro del monitor. Ejemplos de sincronización - A continuación se describe los mecanismos de sincronización proporcionados por los sistemas operativos Solaris, Windows XP y Linux. - Sincronización en Solaris · Para controlar el acceso a las secciones criticas, Solaris proporciona mutéx adaptativos, variables de condición, semáforos, bloqueos o cerrojos lector-escritor y colas de bloqueo. · En u sistema multiprocesador, un mutéx adaptativo se inicia como un semáforo estándar, implementado como un cerrojo de bucle sin fin. · En un sistema monoprocesador, la hebra que mantiene el cerrojo nunca estará ejecutándose cuando otra hebra comprueba el cerrojo, ya que solo puede haber una hebra ejecutándose cada vez. · Solaris utiliza colas de bloqueos para ordenar la lista de hebras en espera de adquirir un mutéx adaptativo o un cerrojo lector-escritor. - Sincronización en Windows XP · El sistema Windows XP es un kernel multihebra que proporciona soporte para aplicaciones en tiempo real y múltiples procesadores. · Para la sincronización de hebras fuera del kernel, Windows XP proporciona objetos despachadores. · Los objetos despachadores pueden estar en estado señalizado o en estado no señalizado. · Un estado señalizado indica que el objeto esta disponible y que una hebra no se bloqueara cuando adquiera el objeto. · Un estado no señalizado indica que el objeto no esta disponible y que una hebra se bloqueara cuando intente adquirir el objeto. - Sincronización en Linux · Ahora el kernel de Linux es completamente un kernel apropiativo, de modo que una tarea puede ser desalojada aun cuando este ejecutándose en el kernel. · El kernel de Linux proporciona bloqueos mediante bucles sin fin y semáforos para establecer bloqueos en el kernel. · Linux utiliza un método interesante para activar y desactivar los mecanismos de desalojo del kernel: proporciona dos llamadas al sistema. · Cuando sea necesario mantener un bloqueo durante un periodo de tiempo largo, resulta más apropiado utilizar semáforos.
Transacciones atómicas - La exclusión mutua de secciones críticas asegura que estas se ejecutan atómicamente. Es decir, si dos secciones críticas se ejecutan de forma concurrente, el resultado es equivalente a su ejecución secuencial en algún orden desconocido. - Modelo del sistema · Una colección de instrucciones (u operaciones) que realiza una sola función lógica se denomina transacción. · Podemos pensar en una transacción como en una unidad de programa que accede a elementos de datos que residen en un disco, dentro de algunos determinados archivos. - Recuperación basada en registro · Una forma de asegurar la atomicidad consiste en grabar en un dispositivo de almacenamiento estable la información que describa todas las modificaciones realizadas por la transacción en los distintos datos a los que haya accedido. · El método mas extendido para conseguir esta forma de protección es el registro de escritura anticipada. · En este caso el sistema mantiene en un medio de almacenamiento estable una estructura de datos denominada registro. - Puntos de comprobación · Este método tiene, fundamentalmente, dos inconvenientes:<strong style=”mso-bidi-font-weight
Comments Off
Leer más
|
