Você está na página 1de 6

2.4.

Sincronizaicon

de

Procesos

En muchos casos, los procesos se renen para realizar tareas en conjunto, a este tipo de relaci
llama procesos cooperativos. Para lograr la comunicacin, los procesos deben sincronizarse, d
as pueden ocurrir problemas no deseados. La sincronizacin es la transmisin y recepcin de
que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos.

Es la coordinacion y cooperacion de un conjunto de procesos para asegurar la compara


recursos de computo. La sincronizacion entre procesos es necesaria para prevenir y/o corregir
de sincronizacion debidos al acceso concurrente a recursos compartidos, tales como estruct
datos o dispositivos de E/S, de procesos contendientes. La sincronizacion entre procesos
permite intercambiar senales de tiempo (ARRANQUE/PARADA) entre procesos cooperant
garantizar las relaciones especificas de precedencia impuestas por el problema que se resuelve

Sin una sincronizacion adecuada entre procesos, la actualizacion de variables compartidas


inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia dificiles de
Una de las causas principales de este problema es que procesos concurrentes puedan observar
temporalmente inconsistentes de una variable compartida mientras se actualizan. una aprox
para resolver este problema es realizar actualizaciones de variables compartidas de
mutuamente exclusiva. Se pueden mejorar permitiendo que a lo mas un proceso entre a la ve
seccion critica de codigo en la que se actualiza una variable compartida o estructura de d
particular.

Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan b
o suspender bajo determinadas circunstancias la ejecucion de un proceso. Los principales meca
de sincronizacion que ofrecen los sistemas operativos son:

Senales

Tuberias

Semaforos

Mutex y variables condicionales

Paso de mensajes

RESUMEN DEL LIBRO

En muchos casos, los procesos se renen para realizar tareas en conjunto, a


este tipo de relacin se le llama procesos cooperativos. Para lograr la
comunicacin, los procesos deben sincronizarse, de no ser as pueden ocurrir
problemas no deseados. La sincronizacin es la transmisin y recepcin de
seales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos
cooperativos.
Dada una coleccin de procesos secuenciales cooperativos que compartan
datos es necesario proporcionar mecanismos de exclusin mutua,
Los algoritmos de exclusin
mutua (comnmente
abreviada
como mutex por mutual exclusion) se usan en programacin concurrente para
evitar el ingreso a sus secciones crticas por ms de un proceso a la vez. La se
define como a la porcin de cdigo de un programa de computador el cual
accede a un recurso compartido (estructura de datos dispositivo) que no debe
de ser accedido por mas de un hilo en ejecucin. La seccin crtica por lo
general termina en un tiempo determinado y el hilo, proceso tarea solo tendr
que esperar un perodo determinado de tiempo para entrar. Se necesita de un
mecanismo de sincronizacin en la entrada y salida de la seccin crtica para
asegurar la utilizacin exclusiva del recurso. Cualquier solucin al problema de
la seccin critica deber satisfacer los tres requisitos siguientes:
1. Exclusion mutua: si el proceso P esta ejecutandose en la seccion critica,
los dems procesos no pueden estar ejecutando sus secciones criticas.
2. Proceso: Si ningn proceso esta ejecutando su seccion critica y algunos
procesos desean entrar a su correspondiente seccion critica, solo
aquellos procesos que no estn ejecutando sus secciones restantes
pueden participar en la decisin de cual ser el siguiente que entre la
seccion critica y esta seleccin no se puede posponer indefinidamente.
3. Espera limitada: Existe un limite en el numero de veces que se permite
que otro proceso entre en sus secciones criticas despus de que un
proceso haya hecho una solicitud para entrar en su seccion critica y
antes de que la misma haya sido concedida.

Existen diferentes algoritmos para resolver el problema de la seccin crtica,


como los algoritmos de Dekker, Peterson y de la panadera de Lamport que son
algoritmos de programacin concurrente para exclusin mutua, que permiten a
dos procesos o hilos de ejecucin compartir un recurso sin conflictos,
suponiendo que solo haya disponible bloqueos del almacenamiento. La
principal desventaja de estas soluciones codificadas por el programador es que
todas ellas requieren una espera activa. Se denomina espera activa a una
tcnica donde un proceso repetidamente verifica una condicin, tal como
esperar una entrada de teclado o si el ingreso a una seccin crtica est
habilitado. Los semforos permiten resolver este problema. Un semforo es
una variable especial o tipo abstracto de datos que constituye el mtodo clsico

para restringir o permitir el acceso a recursos compartidos (por ejemplo, un


recurso de almacenamiento del sistema o variables del cdigo fuente) en un
entorno de multiprocesamiento (en el que se ejecutarn varios procesos
concurrentemente).
Los semforos se pueden emplear para solucionar varios problemas de
sincronizacin y se pueden implementar de forma eficiente, especialmente si se
dispone de soporte hardware, como ms procesadores que permitan ejecutar
algunas instrucciones que cambian el comportamiento de los componentes
fsicos para dar solucin al problema de la regin crtica, para ejecutar las
operaciones atmicamente La atomicidad es la propiedad que asegura que
una operacin se ha realizado o no, y por lo tanto ante un fallo del sistema no
puede quedar a medias. Se dice que una operacin es atmica cuando es
imposible para otra parte de un sistema encontrar pasos intermedios. Si esta
operacin consiste en una serie de pasos, todos ellos ocurren o ninguno. Por
ejemplo, en el caso de una transaccin bancaria o se ejecuta tanto el depsito
y la deduccin o ninguna accin es realizada. Es una caracterstica de los
sistemas transaccionales.
clsicamente, se han definido diversos problemas de sincronizacin (como el
problema del bfer limitado o problema del Productor/Consumidor:
Tambin conocido como bounded buffer problem o problema del buffer limitado.
Dos procesos comparten un almacn (buffer) de tamao fijo. Uno de ellos, el
productor, coloca informacin en el almacn (buffer) mientras que el otro, el
consumidor, la obtiene de l. Si el productor desea colocar un nuevo elemento,
y el almacn se encuentra lleno, este deber irse a dormir". El consumidor
despertara al productor cuando elimine un elemento del almacn. De forma
anloga, si el almacn esta vacio y el consumidor desea eliminar un elemento
del almacn, este debe \dormirse" hasta que el productor coloque algo en el
almacn.
el problema de los procesos lectores-escritores, Lectores y escritores:
imaginemos una enorme base de datos, como por ejemplo un sistema de
reservaciones de en una lnea area, con muchos procesos en competencia,
que intentan leer y escribir en ella. Se puede aceptar que varios procesos lean
la base de datos al mismo tiempo, pero si uno de los procesos est
escribiendo, (es decir modificando) la base de datos, ninguno de los dems
procesos deber tener acceso a esta, ni siquiera los lectores. El problema es
como programar a los lectores y escritores.
y el problema de la cena de los filsofos) La cena de los filsofos: El
problema de los filsofos cenando es un problema clsico de las ciencias de la
computacin propuesto por Edsger Dijkstra en 1965 para representar el
problema de la sincronizacin de procesos en un sistema operativo. Cabe
aclarar que la interpretacin est basada en pensadores chinos, quienes
coman con dos palillos, donde es ms lgico que se necesite el del comensal
que se siente al lado para poder comer.

Cinco filsofos se sientan alrededor de una mesa y pasan su vida cenando y


pensando. Cada filsofo tiene un plato de fideos y un tenedor a la izquierda de
su plato. Para comer los fideos son necesarios dos tenedores y cada filsofo
slo puede tomar los que estn a su izquierda y derecha. Si cualquier filsofo
coge un tenedor y el otro est ocupado, se quedar esperando, con el tenedor
en la mano, hasta que pueda coger el otro tenedor, para luego empezar a
comer.
Si dos filsofos adyacentes intentan tomar el mismo tenedor a una vez, se
produce una condicin de carrera: ambos compiten por tomar el mismo
tenedor, y uno de ellos se queda sin comer.
Si todos los filsofos cogen el tenedor que est a su derecha al mismo tiempo,
entonces todos se quedarn esperando eternamente, porque alguien debe
liberar el tenedor que les falta. Nadie lo har porque todos se encuentran en la
misma situacin (esperando que alguno deje sus tenedores). Entonces los
filsofos se morirn de hambre. Este bloqueo mutuo se denomina interbloqueo
o deadlock.
El problema consiste en encontrar un algoritmo que permita que los filsofos
nunca se mueran de hambre.

que son importantes principalmente como ejemplos de una amplia clase de


problemas de control de concurrencia. Estos problemas clsicos se utilizan
para probar casi todos los nuevos esquemas de sincronizacin propuestos.

Aunque los semforos proporcionan un mecanismo adecuado y efectivo para el


proceso de sincronizacin, un uso incorrecto de los mismos puede dar lugar a
errores de temporizacin que son difciles de detectar, dado que estos errores
solo ocurren si tienen lugar algunas secuencias de ejecucin concretas y estas
secuencias no siempre se producen. El sistema operativo debe proporcionar
los medios de proteccin frente a los errores de temporizacin. Se han
propuesto diversas estructuras para afrontar estos problemas. Los monitores
proporcionan mecanismos de sincronizacin para compartir tipos abstractos de
datos.
los monitores son objetos destinados a ser usados sin peligro por
ms de un hilo de ejecucin. La caracterstica que principalmente los define es
que sus mtodos son ejecutados con exclusin mutua. Lo que significa, que en
cada momento en el tiempo, un hilo como mximo puede estar ejecutando
cualquiera de sus mtodos. Esta exclusin mutua simplifica el razonamiento de
implementar monitores en lugar de cdigo a ser ejecutado en paralelo. Las
variables de condicin proporcionan un mtodo mediante el que un

procedimiento de un monitor puede bloquear su ejecucin hasta recibir la seal


de que puede continuar.
Los sistemas operativos tambin proporcionan soporte para la sincronizacin.
Por ejemplo, Solaris Windows XP y Linux proporcionan mecanismos como
semforos, mutex, bloqueos mediante bucles sin fin y variables de condicin
para controlar el acceso a datos compartidos. La API de Pthreads proporciona
soporte para bloqueos de mutex y variables de condicin.
Una transaccin es una unidad de programa que se debe ejecutar
atmicamente; es decir, todas las operaciones asociadas con ella se ejecutan
hasta completarse, o no se ejecuta ninguna operacin. Para asegurar la
atomicidad a pesar de los fallos del sistema, podemos usar un registro de
escritura anticipada. Todas las actualizaciones se escriben en el registro, que
se almacena en un medio de almacenamiento estable. Si se produce un fallo
catastrfico del sistema, la informacin contenida en el registro se utiliza para
restaurar el fallo de los elementos de datos actualizados lo que se consigue a
travs de las operaciones de deshacer (undo) y rehacer (redo). Para disminuir
el trabajo de bsqueda en el registro despus de haberse producido un fallo en
el sistema podemos usar un mecanismo de punto de comprobacin.
La problemtica de las transacciones concurrentes se debe a: Operaciones
de lectura y escritura simultnea.
Para asegurar la serializacin cuando se solapa la ejecucin de varias
transacciones debemos implementar un modelo de control de concurrencia.
Hay diversos esquemas de control de concurrencia que aseguran la
serializacion retardando una operacin o cancelando la transaccin que ejecut
la operacin. Los mtodos de resolucin aplicados son:
Cerrojos (Locks): Cada objeto compartido por dos procesos concurrentes tiene
asociado un cerrojo. El cerrojo se cierra al comenzar el uso del objeto. El
cerrojo se libera al concluir la operacin. Los cerrojos son susceptibles de sufrir
interbloqueos, Un interbloqueo se produce cuando varios procesos compiten
por cerrojos de forma cclica. Prevencin de interbloques: Cierre de todos los
cerrojos de una transaccin antes de comenzar (Poco eficiente). Resolucin de
interbloqueos:
abortando
la
transaccin
propietaria
del
cerrojo
Control de concurrencia optimista: El control de concurrencia optimista (en
ingls Optimistic concurrency control o OCC) es un mtodo de control de
concurrencia que se aplica a sistemas transaccionales, tales como sistemas de
gestin de bases de datos relacionales y memoria transaccional de software. El
OCC asume que mltiples transacciones se pueden completar frecuentemente
sin interferir entre s. Mientras se ejecutan, las transacciones utilizan recursos
de datos sin adquirir bloqueos en esos recursos. Antes de de consignar un
conjunto de cambios "tentativos" de forma permanente, cada transaccin

verifica que ninguna otra transaccin ha modificado los datos que ha ledo. Si la
comprobacin revela modificaciones en conflicto, la transaccin que iba a hacer
la consignacin permanente hace un reversin es una operacin que lo
devuelve a algn estado previo y se puede reiniciar
Ordenacin en base a marcas de tiempo: Otro mtodo para determinar el
orden de secuencialidad es seleccionar previamente un orden entre las
transacciones en el mtodo ms comn para hacer esto es utilizar un esquema
de ordenacin por marcas temporales
El protocolo de ordenacin por marcas temporales asegura que todas las
operaciones leer y escribir conflictivas se ejecutan en el orden de las marcas
temporales.
El protocolo de ordenacin por marcas temporales asegura la secuencialidad
en cuanto conflictos. Esta afirmacin se deduce del hecho de que las
operaciones conflictivas se procesan durante la ordenacin de las marcas
temporales. El protocolo asegura la ausencia de interbloqueos, ya que ninguna
transaccin tiene que esperar

Você também pode gostar