Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
9Activity
0 of .
Results for:
No results containing your search query
P. 1
Sistemas Operativos I - Tema 3

Sistemas Operativos I - Tema 3

Ratings: (0)|Views: 1,432|Likes:
Published by itisistemasuned

More info:

Published by: itisistemasuned on Oct 26, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

11/06/2012

pdf

text

original

 
Sincronización y comunicación de procesos|
1
3. SINCRONIZACIÓN Y COMUNICACIÓN DE PROCESOS 
Hay dos métodos básicos de comunicación entre procesos: compartición de datos eintercambio de información.
3.1 Exclusión mutua 
 
El método más sencillo de comunicación entre los procesos de un programa concurrente es eluso común de unas variables de datos.Con éste método se puede dar la situación de que se produzca intromisión de un proceso en elotro, de forma que el planificador de procesos permita el entrelazado de las operacioneselementales anteriores de cada uno de los procesos, lo que inevitablemente originará errores.Este tipo de errores son muy difíciles de detectar mediante test del programa, ya que el que seproduzcan depende de la temporización de dos procesos independientes.Para evitar este tipo de errores se pueden identificar aquellas regiones de los procesos queacceden a variables compartidas y dotarlas de la posibilidad de ejecución como si fueran unaúnica instrucción.
Sección crítica:
Aquellas partes de los procesos concurrentes que no pueden ejecutarse deforma concurrente o, que desde otro proceso se deben ver como si fueran una únicainstrucción.Las secciones críticas se pueden agrupar en clases, siendo
mutuamente exclusivas
lassecciones críticas de cada una. Para conseguir dicha exclusión se deben implementarprotocolos software que impidan o
bloqueen
el acceso a una sección crítica mientras estásiendo utilizada por un proceso.La sección crítica es la parte que debe protegerse de interferencias de otros procesos. Los
protocolos 
son la parte de código dedicada a asegurar que la sección crítica se ejecuta deforma exclusiva.
3.1.1 Bloqueo mediante el uso de variables compartidas 
Se utiliza una variable compartida de tipo booleano que se suele denominar indicador (
flag 
).Antes de acceder al recurso, un proceso debe examinar el indicador asociado que podrá tomardos valores (
true
o
false
) que indicarán, de forma respectiva, que el recurso está siendoutilizado o que está disponible.La ejecución concurrente de los procesos la indicaremos mediante la estructura
cobegin/coend
.
Cobegin
indica el comienzo de la ejecución concurrente de los procesos quese señalan hasta la sentencia
coend
.El programa no resuelve el problema de la exclusión mutua ya que al ser la comprobación y lapuesta del indicador a falso operaciones separadas, puede ocurrir que se entrelace el uso delrecurso por ambos procesos.Si el sistema dispusiera de una instrucción que permitiera comprobar el estado y modificarlosimultáneamente, el programa permitiría el uso del recurso sin entrelazamiento. En ausenciade una instrucción de este tipo, intentamos usar dos indicadores para resolver el problema dela exclusión mutua; asociamos un indicador a cada uno de los procesos. Ambos procesospueden leer los dos indicadores, pero sólo pueden modificar el que tienen asociado. Lasolución tiene el inconveniente de que durante la espera de la liberación del recurso, el procesopermanece ocupado, lo que se denomina
espera activa
. Pero hay un problema mayor, queambos procesos realicen la llamada al bloqueo de forma simultánea. Cada proceso puedeponer su propio indicador y comprobar el estado del otro. Ambos verán los indicadorescontrarios como ocupados y permanecerán a la espera de que el recurso quede liberado, peroesto no podrá suceder al no poder entrar ninguno en su sección crítica. Esta acción se conocecomo
interbloqueo
(deadlock).
 
Sincronización y comunicación de procesos|
2
El interbloqueo se produce porque la desactivación del indicador asociado a un proceso seproduce una vez que se ha completado el acceso a la sección crítica. Se puede intentarresolver el problema haciendo que el proceso desactive su propio indicador durante la fase debloqueo siempre que encuentre que el indicador del otro proceso está activado.El que un proceso no pueda progresar porque se lo impida otro proceso o grupo de procesosse denomina
cierre
(lockout o starvation).
3.1.2 Algoritmo de Peterson 
Se introduce una variable adicional, denominada
turno 
, que solamente resultará útil cuando seproduzca un problema de petición simultánea de acceso a la sección crítica. Si los procesosintentan entrar a la vez el valor de
turno 
se pondrá a 1 y 2 pero sólo un valor de ellospermanecerá al escribirse sobre el otro.El algoritmo permite resolver el problema de la exclusión mutua y garantiza que ambosprocesos usarán de forma consecutiva el recurso en el caso de que lo soliciten a la vez y seimpedirá el cierre del otro proceso.
3.1.3 Algoritmo de Dekker 
Se utiliza también la variable
turno 
. Sirve para establecer la prioridad relativa de los dosprocesos y su actualización se realiza en la sección crítica, lo que evita que pueda haberinterferencias entre los procesos.Los algoritmos de Peterson y Dekker se pueden extender al caso más general en el que haya
 procesos en ejecución concurrente; pero no son soluciones adecuadas ya que la espera deacceso a un recurso siempre se realiza de forma “ocupada” (espera activa).
3.2 Semáforos 
 
Dijkstra dio en 1968 una solución elegante y sencilla al problema de la exclusión mutua con laintroducción del concepto de semáforo binario. Permite resolver la mayoría de los problemasde sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y delenguajes de programación concurrentes.
Semáforo binario:
Indicador de condición (S) que registra si un recurso está disponible o no.S=1, recurso disponible. S=0, recurso ocupado.Se implementan con una cola de tareas o de condición a la cual se añaden los procesos queestán en espera del recurso. Sólo se permiten tres operaciones sobre él:1)
Inicializa:
Se debe llevar a cabo antes de que comience la ejecución concurrente delos procesos ya que su función exclusiva es dar un valor inicial al semáforo.2)
Espera (wait):
Un proceso que ejecuta la operación espera y encuentra el semáforo a1, lo pone a 0 y prosigue su ejecución. Si el semáforo está a 0 el proceso queda enestado de espera hasta que se libere el semáforo.3)
Señal (signal):
Cuando se ejecuta esta operación puede haber varios procesos en lalista o cola, el proceso que la dejará para pasar al estado preparado dependerá delesquema de gestión de la cola de tareas suspendidas. Si no hay ningún proceso enespera del semáforo este se deja libre (S:=1) para el primero que lo requiera.Las operaciones son procedimientos que se implementan como acciones indivisibles y por ellola comprobación y cambio de valor del indicador se efectúa de manera real como una solaoperación.
 
Sincronización y comunicación de procesos|
3
3.2.1 Exclusión mutua con semáforos 
La operación de
espera
se usará como procedimiento de bloqueo antes de acceder a unasección crítica y la operación
señal
como procedimiento de desbloqueo después de la sección.Habrá tantos semáforos como clases de secciones críticas se establezcan.
3.2.2 Sincronización 
El uso de semáforos hace que se pueda programar fácilmente la sincronización entre dostareas. Las operaciones de
espera
y
señal
no se utilizan dentro del mismo proceso sino enprocesos separados; el que ejecuta la operación de
espera
queda bloqueado hasta que el otroproceso ejecuta la operación de
señal
.El desajuste de las velocidades de producción y consumo de la información entre procesoshace necesario que se establezca una sincronización entre los procesos de manera que no sepierda ni se duplique información.
3.2.3 Versión más general de los semáforos 
El semáforo binario resulta adecuado cuando hay que proteger un recurso que puedencompartir varios procesos, pero cuando hay que proteger un conjunto de recursos similares, sepuede usar una versión más general del concepto de semáforo que lleve la cuenta del númerode recursos disponibles.El semáforo se inicializa con el número total de recursos disponibles (n) y las operaciones de
espera
y
señal
se diseñan de modo que se impida el acceso al recurso protegido por elsemáforo cuando el valor de éste es menor o igual que cero.Si el semáforo se asocia a un código concurrente, su valor inicial restringe el número máximode ejecuciones concurrentes que se pueden realizar (si el valor es 0, ningún proceso podráentrar, si es 1, sólo uno conseguirá entrar…).

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->