0% encontró este documento útil (0 votos)
77 vistas35 páginas

Concurrencia y Exclusión Mutua en Procesos

Este documento describe los principios básicos de la concurrencia entre procesos, incluyendo la sección crítica, exclusión mutua, condiciones de carrera e interbloqueo. Explica soluciones como semáforos, variables de condición y mensajes para coordinar procesos concurrentes y evitar problemas al acceder y modificar recursos compartidos.

Cargado por

Jorge Infante
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
77 vistas35 páginas

Concurrencia y Exclusión Mutua en Procesos

Este documento describe los principios básicos de la concurrencia entre procesos, incluyendo la sección crítica, exclusión mutua, condiciones de carrera e interbloqueo. Explica soluciones como semáforos, variables de condición y mensajes para coordinar procesos concurrentes y evitar problemas al acceder y modificar recursos compartidos.

Cargado por

Jorge Infante
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIDAD 1

CONCURRENCIA. COORDINACIÓN DE
PROCESOS
1.1. Principios generales de la concurrencia. Coordinación entre procesos. Condición de
carrera. Sección crítica. Exclusión mutua. Requisitos para exclusión mutua.
1.2. E x c l u s i ó n m u t u a c o n e s p e r a o c u p a d a . D e s h a b i l i t a c i ó n d e i n t e r r u p c i o n e s . Va r i a b l e s
candado. Alternancia estricta. Solución de Peterson. Instrucciones TSL.
1.3. Semáforos. Semáforos binarios. Semáforos contadores. Operaciones.
I m p l e m e n t a c i ó n d e s e m á f o r o s m o n i t o r e s . Va r i a b l e s d e c o n d i c i ó n . P a s a j e d e m e n s a j e s .
Sincronización. Direccionamiento . Formato de mensaje. Exclusión mutua. Problemas de
comunicación entre procesos. Ejemplos básicos.
Introducción
• Sincronización: Los procesos coordinan sus actividades
• Sección critica: Región de código que solo puede ser accedida por un proceso simultáneamente
(variables compartidas).

• Exclusión mutua: Solo un proceso puede estar en sección critica accediendo a recursos compartidos
• Interbloqueo: Varios procesos, todos tienen algo que otros esperan, y a su vez esperan algo de los
otros.

• Condición de carrera: Varios hilos/procesos leen y escriben dato compartido. El resultado final
depende de coordinación.

• Inanición: Proceso que esta listo nunca se elige para ejecución


Procesamiento Concurrente
Dos procesos son concurrentes cuando se ejecutan de manera que sus intervalos de
ejecución se solapan.
En Informática, se habla de concurrencia cuando hay una existencia simultánea de varios
procesos en ejecución.

Necesidad de sincronización y comunicación.


• Comunicación: Necesidad de transmisión de información entre procesos concurrentes.
• Sincronización: Necesidad de que las ejecuciones de los procesos concurrentes se produzcan
según una secuenciación temporal, conocida y establecida entre los propios procesos.

No hay Procesos
Concurrencia
Hay Concurrencia
Procesos paralelos
Procesamiento Concurrente
Concurrencia • Hay más procesos que procesadores.
aparente • Los procesos se multiplexan en el tiempo.
• Pseudoparalelismo

Concurrencia • Cada proceso se ejecuta en un procesador.


real
• Se produce una ejecución en paralelo.
• Paralelismo real.
Procesamiento Concurrente
Multiprogramación en un Procesamiento concurrente: base de los Sistemas Operativos
único procesador multiprogramados

• Los procesos concurrentes no sólo pueden intercalar su


Multiprocesador ejecución sino también superponerla
• Existe verdadera ejecución simultánea de procesos

Multicomputador (proceso distribuido)


Procesamiento Concurrente
Función de entrada de un carácter desde teclado
Cada carácter de entrada se almacena en la variable “ent”,
voidecho(){ después se transfiere a la variable “sal” y se envía a la
Ejemplo ent= getchar(); pantalla. Este procedimiento se comparte por varios
sal = ent; procesos del mismo usuario de un sistema
putchar(sal); monoprocesador, para leer caracteres de teclado y
visualizarlos por pantalla.
}

P1 llama a echo()Esta
y es compartición de código permite la interacción entre procesos pero puede dar lugar a P2 se activa y llama a
interrumpido problemas, como aparecen en la secuencia: echo() y lo ejecuta
inmediatamente hasta el final mostrando
después de leer la el carácter leído en la
entrada. pantalla.

P1 se reanuda donde lo
dejó, sin embargo “ent”
contiene un valor
diferente al tecleado
originalmente, que se Resultado: Se pierde el primer carácter y el
transfiere a la variable
“sal” y se visualiza.
segundo se visualiza dos veces
Procesamiento Concurrente
Se impone la restricción de que aunque echo() sea un procedimiento
global sólo puede estar ejecutándolo un proceso cada vez.

• P1 llama a echo() y es interrumpido inmediatamente después de leer la entrada.


• P2 se activa y llama a echo(). Como P1 estaba usando echo(), P2 se bloquea al
entrar al procedimiento y se suspende mientras espera que quede libre echo().
• P1 se reanuda y completa la ejecución de echo(). Se visualiza el carácter correcto.
• Cuando P1 abandona echo() se retira el bloqueo sobre P2. Cuando más tarde se
reanude P2 la llamada a echo() se ejecutará con éxito.
Interacción Procesos Concurrentes
Los procesos no tienen conocimiento de la existencia de
los demás: Independientes, no van a operar juntos, entre
ellos se establece una competencia por los
recursos(disco, archivos, impresora, ...).

Grado en que Los procesos tienen un conocimiento indirecto de los


Formas en que los otros: No se conocen específicamente unos a otros pero
percepción de
procesos comparten el acceso a algunos objetos como el buffer de
cada uno los
interaccionan otros E/S. Relación de cooperación para compartir.

Los procesos tienen un conocimiento directo de los


otros: Diseñados para cooperar trabajando en conjunto
en alguna actividad y comunicándose entre ellos.
Principios Generales de Concurrencia

Exclusión mutua: Para que el acceso a ciertos recursos sea exclusivo de un


proceso cada vez. A la parte del programa que los utiliza se le llama sección crítica.

• Cada proceso tiene un segmento de código llamado sección crítica.


Sección
• No está permitido que más de un proceso estén simultáneamente en su sección crítica.
crítica
• Un protocolo rige la forma de entrar y salir de la sección crítica.
Problema de la Sección Critica
• Planteamiento:
Problema:
• n procesos Pi i=1,..,n Solución:
compitiendo por usar ciertos
Asegurar que cuando un proceso
datos compartidos
está ejecutando su sección crítica
• Cada proceso tiene un Añadir código adicional a los
ningún otro proceso puede estar
fragmento de código, llamado programas para acceder a y salir
ejecutando su sección crítica.
sección crítica (SC), en el que el de la SC.
proceso accede a los datos
compartidos.
Problema de la Sección Critica
Exclusión mutua Sólo debe haber un proceso ejecutando la SC

Requisitos que ha de cumplir


una solución al problema de Progreso Un proceso fuera de la SC no debe bloquear a otro
la SC que quiere entrar

• Soluciones por software en los procesos

Espera limitada Un proceso que quiere entrar en la SC no espera


• Soluciones por hardware.
indefinidamente

• Soluciones por software en el sistema operativo.


Exclusión Mutua: Soluciones Software
Algoritmo de
Dekker Se utiliza una variable global “turno” para controlar la entrada en la sección
(alternancia crítica.
estricta)
Cualquier proceso que desee entrar en su sección crítica comprobará primero
el valor de la variable “turno”:
Espera activa
•Mientras sea distinto al de su identificador de proceso debe esperar.
•Cuando coincida entrará en la sección crítica.

Cuando un proceso sale de la sección crítica, actualiza “turno” con el código


de otro proceso en espera.
Exclusión Mutua: Soluciones Software
Algoritmo de
Dekker
(alternancia
estricta)

Diseñados para poder pasar el control de ejecución


entre dos procesos, no es una técnica apropiada para Cuando hay diferencias grandes de velocidad es
dar soporte al procesamiento concurrente. el proceso más lento el que marca el ritmo.
Exclusión Mutua: Soluciones Software
Algoritmo de
Peterson

Garantiza la exclusión mutua:


• Cada proceso tiene un turno para entrar en la sección crítica.
• Si un proceso desea entrar en la sección crítica, debe activar
su señal y puede que tenga que esperar a que llegue su
turno.

Impide el interbloqueo ya que si un proceso se encuentra


esperando en el “while”, entonces la señal y el turno del otro
proceso están activadas. El proceso que está esperando entrará en
su sección crítica cuando la señal o el turno del otro se desactiven.
Exclusión Mutua: Soluciones Hardware
Inhabilitación
de
interrupciones • Un servicio continuará ejecutándose hasta que solicite un servicio del SO
o hasta que sea interrumpido.
• Para garantizar la Exclusión Mutua es suficiente con impedir que un
proceso sea interrumpido.
• Se limita la capacidad del procesador para intercalar programas.
• Multiprocesador:
Inhabilitar las interrupciones de un procesador no garantiza la Exclusión Mutua.
Exclusión Mutua: Soluciones Hardware
Instrucciones
especiales de • Se realizan en un único ciclo de instrucción.
máquina • No están sujetas a injerencias por parte de otras instrucciones.

• La instrucción (TS) examina el valor de su argumento, i. Si el


valor es 0, lo cambia por 1 y devuelve cierto.
• En otro caso, el valor no se modifica y se devuelve falso.
• La función Comparar y Fijar se ejecuta en su totalidad, es
decir, no está sujeta a interrupciones.
Exclusión Mutua: Soluciones Hardware
• Se da un valor 0 inicial a una variable compartida
cerrojo.
• El único proceso que puede entrar en su sección
crítica es el que encuentre cerrojo igual a 0.
• Todos los demás procesos que intenten entrar
pasan a un modo de espera activa.
• Cuando un proceso abandona su sección critica,
vuelve a poner cerrojo a 0; en este momento solo
uno de los procesos que esperan obtendrá acceso
a su sección critica.
• La elección del proceso depende del que ejecute
la instrucción Comparar y Fijar a continuación.

Protocolo de exclusión mutua basado en el uso de la instrucción TS.


Exclusión Mutua: Soluciones Hardware
procedure intercambiar (var r: registro; var m: memoria);
Instrucciones
var temp;
especiales de
begin
máquina
temp := m;
m := r;
r := temp
end.

• Esta instrucción intercambia el contenido de un registro


con el de una posición de memoria.
• Durante la ejecución de la instrucción, se bloquea el
acceso a la posición de memoria de cualquier otra
instrucción que haga referencia a la misma posición.
Exclusión Mutua: Soluciones Hardware
• Se da un valor 0 inicial a una variable compartida cerrojo. El
único proceso que puede entrar en su sección critica es el
que encuentre cerrojo igual a 0.
• Poniendo cerrojo a 1 se excluye a todos los demás procesos
de entrar en la sección crítica.
• Cuando un proceso abandona su sección crítica, vuelve a
poner cerrojo a 0, permitiendo que otros procesos obtengan
acceso a su sección crítica

Protocolo de exclusión mutua que se basa en el uso de la instrucción


Intercambiar
Semáforos
Semáforo
Es una variable (o tipo abstracto de datos) que
permite controlar el acceso de múltiples
procesos a un recurso común en un ambiente
de ejecución concurrente.

Es lo mismo que usar un entero y fijarme que valor tiene?


No, es esencial que las primitivas sobre semáforos sean atómicas.
Semáforos
• Mecanismo frente a problemas de concurrencia.
• Funcionamiento basado en la cooperación entre procesos.
• Uso de señales, podemos obligar a un proceso a detenerse hasta que reciba una
señal.
• Para esta señalización se usan unas variables especiales llamadas semáforos:
Para transmitir una señal por el semáforo s, los procesos ejecutan la primitiva Señal
signal(s).
Para recibir una señal del semáforo s, los procesos ejecutan la primitiva Espera
wait(s). Si la señal aún no se ha emitido, el proceso es suspendido hasta que se emite
la señal.

Se pueden considerar que un semáforo es variables enteras


sobre las que se definen operaciones.
Semáforos
Operaciones de
Semáforo
• Un semáforo puede iniciarse con un valor no negativo.
• La operación Espera - wait() reduce el valor del semáforo. Si el valor se hace
negativo, el proceso que la ejecuta se bloquea.
• La operación Señal - signal() incrementa el valor del semáforo. Si el valor no
es positivo, se desbloquea un proceso.
Semáforos Características
Atomicidad

• Se garantiza que al iniciar una operación con un semáforo, ningún


otro proceso puede tener acceso al semáforo hasta que la
operación termine o se bloquee.
• En ese tiempo ningún otro proceso puede simultáneamente
modificar el mismo valor de semáforo
Semáforos
Exclusión
Mutua con
Semáforos
Tipos de Semáforos
Contadores

Binarios

Sincronización
Semáforos Contadores o Generales
Útiles cuando un recurso será asignado,
tomándolo de un conjunto de recursos idénticos

Wait (S) decrementa S en 1;


Semáforo es inicializado con el indicando que un recurso ha sido
número de recursos existentes: suprimido del conjunto.
Si S = 0 entonces no hay más
recursos y el proceso se bloquea
Signal (S) incrementa S en 1; indicando
que un recurso ha sido regresado al
conjunto.
Si un proceso esperaba por un recurso,
éste se despierta.
Semáforos Binarios
• Sólo pueden tomar dos valores: 0 o 1
• Generalmente se inicializan con un valor de 1.
• Son usados por dos o más procesos para garantizar
que sólo uno puede entrar en sección crítica.
• Antes de entrar a sección crítica un proceso ejecuta
un Wait(S) y un Signal(S) al salir de ella.
Semáforos Sincronización
• Solución varios problemas sincronización.
• Sean dos procesos concurrentes P1 y P2 que se encuentran corriendo:
– P1 con enunciado S1
– P2 con enunciado S2
– Se desea que S2 sea ejecutado después de que S1 haya terminado.

Semáforo síncrono (inicializado en 0).


P1: ------------- P2: --------------
Solución ------------- --------------
S1 Wait (sincro)

Signal (sincro) S2
------------- -------------
Ejercicio
Se tienen 3 procesos A, B y C. Construya el código con
semáforos de manera tal que la secuencia sea
ABC,ABC,ABC,: :

Usar tres semáforos, sem A, sem B y sem C. Sus valores de inicialización son:
Solución
sem A = 1, sem B = 0, sem C = 0

Proceso -A Proceso - B Proceso-C


Wait (semA) Wait (semB) Wait (semC)
Algo Algo Algo
………. ………. ……….
Signal(semB) Signal(semC) Signal(semA)
Ejercicio
Se tienen 3 procesos A, B y C. Construya el código con
semáforos de manera tal que la secuencia sea
BBCA,BBCA,BBCA,: : :

Usar tres semáforos, sem A, sem B y sem C. Sus valores de inicialización son:
Solución
sem A = 0, sem B = 2, sem C = 0

Proceso -A Proceso - B Proceso-C


Wait (semA) Wait (semB) Wait (semC)
Algo Algo Algo
………. ………. ……….
Signal(semB) Signal(semC) Signal(semA)
Signal(semB)
Problemas Clásicos de Sincronización

Problema del productor/consumidor

• Uno o más productores generan datos y los


sitúan en un buffer.
• Un único consumidor saca elementos del buffer
de uno en uno.
• Sólo un productor o consumidor puede acceder al
buffer en un instante dado.
Problemas Clásicos de Sincronización

• Si un productor intenta insertar cuando el buffer está lleno, hay que bloquearlo.
• Si un consumidor intenta leer cuando el buffer está vacío, hay que bloquearlo.

Planteamiento • Si un productor está bloqueado, hay que desbloquearlo cuando se consuma un


elemento.
• Si el consumidor está bloqueado, hay que desbloquear al agregar un nuevo
elemento.
Problemas Clásicos de Sincronización
Problemas Clásicos de Sincronización
Procesos Muchos lectores pueden acceder la
lectores: leen base de datos a la vez
– varios lectores no cambian el contenido
datos
de la base de datos

En algunos sistemas se cuenta


con dos tipos de procesos:

ejemplo
Procesos Un escritor debe tener acceso
escritores: exclusivo
escriben datos – un escrito puede modificar los
datos
Sistema es uno de reservación aérea.
Si el escritor esta activo, ningún lector o
escritor puede estar activo

También podría gustarte