Está en la página 1de 24

FACULTAD DE INGENIERA DE

SISTEMAS Y MECANICA
ELECTRICA ESCUELA
PROFESIONAL DE INGENIERA DE
SISTEMAS

UNIVERSIDAD NACIONAL
TORIBIO RODRÍGUEZ DE MENDOZA DE AMAZONAS

FACULTAD DE INGENIERIA DE SISTEMAS Y MECÁNICA ELÉCTRICA.


ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS
TEMA: Concurrencia. Exclusión mutua y sincronización

NOMBRE DEL CURSO: SISTEMAS OPERATIVOS

NOMBRES: EMMANUEL PABLO ALVARADO SANCHEZ


EIDER ANTONY PAREDES RUIZ
TITO ADRIANZEN OLANO

NOMBRE DEL PROFESOR: ING. ADRIANZEN OLANO IVAN

CICLO: V - SEMESTRE ACADÉMICO: 2019- II

1
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Contenido
Introducción .................................................................................................................................. 3
Marco teórico ................................................................................................................................ 4
Objetivos ....................................................................................................................................... 4
Conocer la interacción de los procesos y sus relaciones de competencia, cooperación por
compartición y cooperación por comunicación. ........................................................................... 4
Veremos los requisitos para la exclusión mutua. ......................................................................... 4
Se entenderá el termino de semáforo en las operaciones con los procesos ............................... 4
Concurrencia. Exclusión mutua y sincronización .......................................................................... 5
Principios de la concurrencia .................................................................................................... 5
Condición de carrera ................................................................................................................. 5
Preocupaciones del sistema operativo ..................................................................................... 5
Interacción de procesos ............................................................................................................ 6
Requisitos para la exclusión mutua........................................................................................... 9
Exclusión mutua: soporte hardware ............................................................................................. 9
Deshabilitar interrupciones ....................................................................................................... 9
Instrucciones máquina especiales........................................................................................... 10
Semáforos ................................................................................................................................... 10
Exclusión mutua ...................................................................................................................... 13
El problema productor/consumidor ....................................................................................... 13
Implementación de semáforos ............................................................................................... 15
Monitores .................................................................................................................................... 15
Monitores con Señales: (definición de Hoare) ........................................................................ 15
Pasos de Mensaje ........................................................................................................................ 17
Sincronización ......................................................................................................................... 17
Direccionamiento .................................................................................................................... 18
Formato De Mensajes ............................................................................................................. 19
Disciplina De Cola .................................................................................................................... 20
Exclusión Mutua ...................................................................................................................... 20
Problema De Los Lectores/Escritores ......................................................................................... 21
Descripción del problema: ...................................................................................................... 21
Prioridad a los lectores ........................................................................................................ 21
Prioridad a los escritores ..................................................................................................... 21
Conclusiones y recomendaciones ............................................................................................... 23
Bibliografía .................................................................................................................................. 24

2
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Introducción
Los temas centrales del diseño de sistemas operativos están todos relacionados con la
gestión de procesos e hilos: multiprogramación, multiprocesamiento, procesamiento
distribuido. La concurrencia es fundamental en todas estas áreas y en el diseño del
sistema operativo. La concurrencia abarca varios aspectos, entre los cuales están la
comunicación entre procesos y la compartición de, o competencia por, recursos, la
sincronización de actividades de múltiples procesos y la reserva de tiempo de
procesador para los procesos. Debemos entender que todos estos asuntos no sólo
suceden en el entorno del multiprocesamiento y el procesamiento distribuido, sino
también en sistemas monoprocesador multiprogramados. La concurrencia aparece en
tres contextos diferentes: múltiples aplicaciones, aplicaciones estructuradas,
estructura del sistema operativo.

3
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Marco teórico
Excluir. - sacar o dejar fuera de un lugar o de un grupo a alguien o algo.
Sección. - parte con forma generalmente geométrica que junto con otras constituye
una cosa material o un conjunto de cosas.
Dinámica. - conjunto de hechos o fuerzas que actúan con un fin determinado.
Estático. - que permanece en un mismo estado y no experimenta cambios.

Objetivos
Conocer la interacción de los procesos y sus relaciones de competencia, cooperación
por compartición y cooperación por comunicación.

Veremos los requisitos para la exclusión mutua.

Se entenderá el termino de semáforo en las operaciones con los procesos

Se conocerá uno de los problemas más comunes afrontados en la programación


concurrente: el problema producto/consumidor
Se vera que cuando los procesos interaccionan entre sí, deben satisfacerse dos
requisitos fundamentales: sincronización y comunicación, para uno de los puntos
tratados en el tema el paso de mensajes.

4
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Concurrencia. Exclusión mutua y sincronización


Principios de la concurrencia
En un sistema multiprogramado de procesador único, los procesos se entrelazan en el
tiempo para ofrecer la apariencia de ejecución simultánea. Aunque no se consigue
procesamiento paralelo real, e ir cambiando de un proceso a otro supone cierta
sobrecarga, la ejecución entrelazada proporciona importantes beneficios en la eficiencia
del procesamiento y en la estructuración de los programas. En un sistema de múltiples
procesadores no sólo es posible entrelazar la ejecución de múltiples procesos sino
también solaparlas.
En primera instancia, puede parecer que el entrelazado y el solapamiento representan
modos de ejecución fundamentalmente diferentes y que presentan diferentes
problemas. De hecho, ambas técnicas pueden verse como ejemplos de procesamiento
concurrente y ambas presentan los mismos problemas. En el caso de un
monoprocesador, los problemas surgen de una característica básica de los sistemas
multiprogramados: no puede predecirse la velocidad relativa de ejecución de los
procesos. Ésta depende de la actividad de los otros procesos, de la forma en que el
sistema operativo maneja las interrupciones y de las políticas de planificación del
sistema operativo.

Condición de carrera
Una condición de carrera sucede cuando múltiples procesos o hilos leen y escriben datos
de manera que el resultado final depende del orden de ejecución de las instrucciones
en los múltiples procesos. Consideremos dos casos sencillos.
Ejemplo:
Considere dos procesos: A1 y A2, que comparten las variables globales b y c, con valores
1iniciales b = 1 y c = 2.
En algún punto de su ejecución, A1 ejecuta la asignación b = b + c y, en algún punto de
su ejecución, A2 ejecuta la asignación c = b + c.
Note que los dos procesos actualizan diferentes variables. Sin embargo, los valores
finales de las dos variables dependen del orden en que los dos procesos ejecuten estas
dos asignaciones.
Si A1ejecuta su sentencia de asignación primero, entonces los valores finales serán b =
3 y c = 5. Si A2 ejecuta su sentencia de asignación primero, entonces los valores finales
serán b = 4 y c = 3.

Preocupaciones del sistema operativo


1. El sistema operativo debe ser capaz de seguir la pista de varios procesos. Esto se
consigue con el uso de bloques de control de proceso.
2. El sistema operativo debe ubicar y desubicar varios recursos para cada proceso
activo. Estos recursos incluyen:

5
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

 Tiempo de procesador. Esta es la misión de la planificación.


 Memoria. La mayoría de los sistemas operativos usan un esquema de memoria
virtual.
 Ficheros
 Dispositivos de E/S
3. El sistema operativo debe proteger los datos y recursos físicos de cada proceso
frente a interferencias involuntarias de otros procesos. Esto involucra técnicas que
relacionan memoria, fi- cheros y dispositivos de E/S.
4. El funcionamiento de un proceso y el resultado que produzca, debe ser
independiente de la velocidad a la que suceda su ejecución en relación con la
velocidad de otros procesos concurrentes.
Para entender cómo puede abordarse la cuestión de la independencia de la velocidad,
necesitamos ver las formas en que los procesos pueden interaccionar.

Interacción de procesos
Podemos clasificar las formas en que los procesos interaccionan en base al grado en que
perciben la existencia de cada uno de los otros. Enumera tres posibles grados de
percepción más las consecuencias de cada uno:
Procesos que no se perciben entre sí. Son procesos independientes que no se
pretende que trabajen juntos. El mejor ejemplo de esta situación es la
multiprogramación de múltiples procesos independientes. Estos bien pueden ser
trabajos por lotes o bien sesiones interactivas o una mezcla. Aunque los procesos no
estén trabajando juntos, el sistema operativo necesita pre- ocuparse de la
competencia por recursos. Por ejemplo, dos aplicaciones independientes pue- den
querer ambas acceder al mismo disco, fichero o impresora. El sistema operativo
debe regular estos accesos.
Procesos que se perciben indirectamente entre sí. Son procesos que no están
necesariamente al tanto de la presencia de los demás mediante sus respectivos ID
de proceso, pero que comparten accesos a algún objeto, como un buffer de E/S.
Tales procesos exhiben cooperación en la compartición del objeto común.
Procesos que se perciben directamente entre sí. Son procesos capaces de
comunicarse entre sí vía el ID del proceso y que son diseñados para trabajar
conjuntamente en cierta actividad. De nuevo, tales procesos exhiben cooperación.
Las condiciones no serán siempre tan claras como se sugiere en la Tabla. Mejor dicho,
algunos procesos pueden exhibir aspectos tanto de competición como de cooperación.
No obstante, es constructivo examinar cada uno de los tres casos de la lista precedente
y determinar sus implicaciones para el sistema operativo.

6
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Influencia que un Potenciales


Grado de
Relación proceso tiene problemas de
percepción
sobre el otro control

Procesos que no Competencia Los resultados de Exclusión mutua


se perciben
entre sí un proceso son Interbloqueo
independientes (recurso
de la acción de renovable)
los otros. La Inanición
temporización
del proceso
puede verse
afectada

Procesos que se Cooperación por Los resultados de Exclusión mutua


perciben compartición un proceso Interbloqueo
indirectamente entre pueden (recurso
sí (por ejemplo, depender de la renovable)
objeto compartido) información Inanición
obtenida de Coherencia de
otros. datos
La temporización
del proceso
puede verse
afectada

Procesos que se Cooperación por Los resultados de Interbloqueo


perciben comunicación un proceso (recurso
directamente entre pueden consumible)
sí (tienen primitivas depender de la Inanición
de comunicación a información
su disposición) obtenida de
otros
La temporización
del proceso
puede verse
afectada

Competencia entre procesos por recursos. Los procesos concurrentes entran en


conflicto entre ellos cuando compiten por el uso del mismo recurso. En su forma pura,
puede describirse la situación como sigue.
 Dos o más procesos necesitan acceso a un recurso durante el curso de su ejecución.
Ningún proceso se percata de la existencia de los otros procesos y ninguno debe
verse afectado por la ejecución de los otros procesos. Esto conlleva que cada

7
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

proceso debe dejar inalterado el estado de cada recurso que utilice. Ejemplos de
recursos son los dispositivos de E/S, la memoria, el tiempo de procesador y el reloj.
No hay intercambio de información entre los procesos en competencia.
No obstante, la ejecución de un proceso puede afectar al comportamiento de los
procesos en competencia. En concreto, si dos procesos desean ambos acceder al mismo
recurso único, entonces, el sistema operativo reservará el recurso para uno de ellos, y
el otro tendrá que esperar. Por tanto, el proceso al que se le deniega el ac- ceso será
ralentizado. En un caso extremo, el proceso bloqueado puede no conseguir nunca el
recurso y por tanto no terminar nunca satisfactoriamente.
En el caso de procesos en competencia, deben afrontarse tres problemas de control.
Primero está la necesidad de exclusión mutua. Supóngase que dos o más procesos
requieren acceso a un recurso único no compartible, como una impresora. Durante el
curso de la ejecución, cada proceso estará enviando mandatos al dispositivo de E/S,
recibiendo información de estado, enviando datos o recibiendo datos. Nos referiremos
a tal recurso como un recurso crítico, y a la porción del programa que lo utiliza como la
sección crítica del programa. Es importante que sólo se permita un programa al tiempo
en su sección crítica. No podemos simplemente delegar en el sistema operativo para
que entienda y aplique esta restricción porque los detalles de los requisitos pueden no
ser obvios. En el caso de una impresora, por ejemplo, queremos que cualquier proceso
individual tenga el control de la impresora mientras imprime el fichero completo. De
otro modo, las líneas de los procesos en competencia se intercalarían.
La aplicación de la exclusión mutua crea dos problemas de control adicionales. Uno es
el del interbloqueo. Por ejemplo, considere dos procesos, P1 y P2, y dos recursos, R1 y
R2. Suponga que cada proceso necesita acceder a ambos recursos para realizar parte de
su función. Entonces es posible encontrarse la siguiente situación: el sistema operativo
asigna R1 a P2, y R2 a P1. Cada proceso está esperando por uno de los dos recursos.
Ninguno liberará el recurso que ya posee hasta haber conseguido el otro recurso y
realizado la función que requiere ambos recursos. Los dos procesos están Inter
bloqueados.
Un último problema de control es la inanición. Suponga que tres procesos (P1, P2, P3)
requieren todos accesos periódicos al recurso R. Considere la situación en la cual P1 está
en posesión del recurso y P2 y P3 están ambos retenidos, esperando por ese recurso.
Cuando P1 termine su sección crítica, debería permitírsele acceso a R a P2 o P3. Asúmase
que el sistema operativo le concede acceso a P3 y que P1 solicita acceso otra vez antes
de completar su sección crítica. Si el sistema operativo le concede acceso a P1 después
de que P3 haya terminado, y posteriormente concede alternativamente acceso a P1 y a
P3, entonces a P2 puede denegársele indefinidamente el acceso al recurso, aunque no
suceda un interbloqueo.
Cooperación entre procesos vía compartición. El caso de cooperación vía compartición
cubre procesos que interaccionan con otros procesos sin tener conocimiento explícito
de ellos. Por ejemplo, múltiples procesos pueden tener acceso a variables compartidas

8
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

o a ficheros o bases de datos compartidas. Los procesos pueden usar y actualizar los
datos compartidos sin referenciar otros procesos, pero saben que otros procesos
pueden tener acceso a los mismos datos. Así, los procesos deben cooperar para asegurar
que los datos que comparten son manipulados adecuadamente. Los mecanismos de
control deben asegurar la integridad de los datos compartidos.
Cooperación entre procesos vía comunicación. En los dos primeros casos que se han
tratado, cada proceso tiene su propio entorno aislado que no incluye a los otros
procesos. Las interacciones entre procesos son indirectas. En ambos casos hay cierta
compartición. En el caso de la competencia, hay recursos compartidos sin ser
conscientes de los otros procesos. En el segundo caso, hay compartición de valores y
aunque cada proceso no es explícitamente consciente de los demás procesos, es
consciente de la necesidad de mantener integridad de datos. Cuando los procesos
cooperan vía comunicación, en cambio, los diversos procesos involucrados participan en
un esfuerzo común que los vincula a todos ellos. La comunicación proporciona una
manera de sincronizar o coordinar actividades varias.

Requisitos para la exclusión mutua


Cualquier mecanismo o técnica que vaya a proporcionar exclusión mutua debería
cumplimentar los siguientes requisitos:
1. La exclusión mutua debe hacerse cumplir: sólo se permite un proceso al tiempo
dentro de su sección crítica, de entre todos los procesos que tienen secciones críticas
para el mismo recurso u objeto compartido.
2. Un proceso que se pare en su sección no crítica debe hacerlo sin interferir con otros
procesos.
3. No debe ser posible que un proceso que solicite acceso a una sección crítica sea
postergado indefinidamente: ni interbloqueo ni inanición.
4. Cuando ningún proceso esté en una sección crítica, a cualquier proceso que solicite
entrar en su sección crítica debe permitírsele entrar sin demora.
5. No se hacen suposiciones sobre las velocidades relativas de los procesos ni sobre el
número de procesadores.
6. Un proceso permanece dentro de su sección crítica sólo por un tiempo finito.

Exclusión mutua: soporte hardware


Deshabilitar interrupciones
En una máquina monoprocesador, los procesos concurrentes no pueden solaparse, sólo
pueden entre- lazarse. Es más, un proceso continuará ejecutando hasta que invoque un
servicio del sistema operativo o hasta que sea interrumpido. Por tanto, para garantizar
la exclusión mutua, basta con impedir que un proceso sea interrumpido. Esta técnica
puede proporcionarse en forma de primitivas definidas por el núcleo del sistema para
deshabilitar y habilitar las interrupciones. Un proceso puede cumplir la exclusión mutua
del siguiente modo.

9
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Dado que la sección crítica no puede ser interrumpida, se garantiza la exclusión mutua.
El precio de esta solución, no obstante, es alto. La eficiencia de ejecución podría
degradarse notablemente por- que se limita la capacidad del procesador de entrelazar
programas. Un segundo problema es que esta solución no funcionará sobre una
arquitectura multiprocesador. Cuando el sistema de cómputo incluye más de un
procesador, es posible (y típico) que se estén ejecutando al tiempo más de un proceso.
En este caso, deshabilitar interrupciones no garantiza exclusión mutua.

Instrucciones máquina especiales


En una configuración multiprocesador, varios procesadores comparten acceso a una
memoria principal común. En este caso no hay una relación maestra/esclavo; en cambio
los procesadores se comportan independientemente en una relación de igualdad. No
hay mecanismo de interrupción entre procesadores en el que pueda basarse la exclusión
mutua.
A un nivel hardware, como se mencionó, el acceso a una posición de memoria excluye
cualquier otro acceso a la misma posición. Con este fundamento, los diseñadores de
procesadores han propuesto varias instrucciones máquina que llevan a cabo dos
acciones atómicamente2, como leer y escribir o leer y comprobar, sobre una única
posición de memoria con un único ciclo de búsqueda de instrucción. Durante la
ejecución de la instrucción, el acceso a la posición de memoria se le bloquea a toda otra
instrucción que referencie esa posición. Típicamente, estas acciones se realizan en un
único ciclo de instrucción.

Semáforos
El principio fundamental es éste: dos o más procesos pueden cooperar por medio de
simples señales, tales que un proceso pueda ser obligado a parar en un lugar específico
hasta que haya recibido una señal específica. Cualquier requisito complejo de
coordinación puede ser satisfecho con la estructura de señales apropiada. Para la
señalización, se utilizan unas variables especiales llamadas semáforos. Para transmitir
una señal vía el semáforo s, el proceso ejecutará la primitiva semSignal(s). Para recibir
una señal vía el semáforo s, el proceso ejecutará la primitiva semWait(s); si la
correspondiente señal no se ha transmitido todavía, el proceso se suspenderá hasta que
la transmisión tenga lugar.
Para conseguir el efecto deseado, el semáforo puede ser visto como una variable que
contiene un valor entero sobre el cual sólo están definidas tres operaciones:
1. Un semáforo puede ser inicializado a un valor no negativo.
2. La operación semWait decrementa el valor del semáforo. Si el valor pasa a ser
negativo, entonces el proceso que está ejecutando semWait se bloquea. En otro
caso, el proceso continúa su ejecución.
3. La operación semSignal incrementa el valor del semáforo. Si el valor es menor o igual
que cero, entonces se desbloquea uno de los procesos bloqueados en la operación
semWait.

10
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Aparte de estas tres operaciones no hay manera de inspeccionar o manipular un


semáforo.
Las primitivas semWait y semSignal se asumen atómicas. Una versión más restringida,
conocida como semáforo binario o mutex, un semáforo binario sólo puede tomar los
valores 0 y 1 y se puede definir por las siguientes tres operaciones:
1. Un semáforo binario puede ser inicializado a 0 o 1.
2. La operación semWaitB comprueba el valor del semáforo. Si el valor es cero,
entonces el pro- ceso que está ejecutando semWaitB se bloquea. Si el valor es uno,
entonces se cambia el valor a cero y el proceso continúa su ejecución.
3. La operación semSignalB comprueba si hay algún proceso bloqueado en el semáforo.
Si lo hay, entonces se desbloquea uno de los procesos bloqueados en la operación
semWaitB. Si no hay procesos bloqueados, entonces el valor del semáforo se pone
a uno.
En principio debería ser más fácil implementar un semáforo binario, y puede
demostrarse que tiene la misma potencia expresiva que un semáforo general (véase el
Problema 5.9). Para contrastar los dos tipos de semáforos, el semáforo no-binario es a
menudo referido como semáforo con contador o semáforo general.
Para ambos, semáforos con contador y semáforos binarios, se utiliza una cola para
mantener los procesos esperando por el semáforo. Surge la cuestión sobre el orden en
que los procesos deben ser
extraídos de tal cola. La política más favorable es FIFO (primero-en-entrar-primero-en-
salir): el pro- ceso que lleve más tiempo bloqueado es el primero en ser extraído de la
cola; un semáforo cuya definición incluye esta política se denomina semáforo fuerte. Un
semáforo que no especifica el orden en que los procesos son extraídos de la cola es un
semáforo débil.
Ejemplo
Aquí los procesos A, B y C dependen de un resultado del proceso D. Inicialmente (1), A
está ejecutando; B, C y D están listos; y el contador del semáforo es 1, indicando que
uno de los resultados de D está disponible. Cuando A rea- liza una instrucción semWait
sobre el semáforo s, el semáforo se decrementa a 0 y A puede continuar ejecutando;
posteriormente se adjunta a la lista de listos. Entonces B ejecuta (2), finalmente realiza
una instrucción semWait y es bloqueado, permitiendo que D ejecute (3). Cuando D
completa un nuevo resultado, realiza una instrucción semSignal, que permite a B
moverse a la lista de listos (4). D se adjunta a la lista de listos y C comienza a ejecutar
(5) pero se bloquea cuando realiza una instrucción semWait. De manera similar, A y B
ejecutan y se bloquean en el semáforo, permitiendo a D re- tomar la ejecución (6).
Cuando D tiene un resultado realiza un semSignal, que transfiere a C a la lista de listos.
Posteriores ciclos de D liberarán A y B del estado Bloqueado.

11
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Procesador
1
A

s=1 C D B
Cola de bloqueados Semáforo Cola de listos

Procesador
2
B

s=0 A C D
Cola de bloqueados Semáforo Cola de listos
Procesador
3
D

B s = -1 A C
Cola de bloqueados Semáforo Cola de listos

Procesador
4
D

s=0 B A C
Cola de bloqueados Semáforo Cola de listos

Procesador
5
C

s=0 D B A
Cola de bloqueados Semáforo Cola de listos

12
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Procesador
6
D

B A C s = -3
Cola de bloqueados Semáforo Cola de listos

Procesador
7
D

B A s = -2 C
Cola de bloqueados Semáforo Cola de listos

Exclusión mutua
Considere n procesos, identificados como P(i), los cuales necesitan todos acceder al mismo
recurso. Cada proceso tiene una sección crítica que accede al recurso. En cada proceso se
ejecuta un semWait(s) justo antes de entrar en su sección crítica. Si el valor de s pasa a ser
negativo, el proceso se bloquea. Si el valor es 1, entonces se decrementa a 0 y el proceso entra
en su sección crítica inmediatamente; dado que s ya no es positivo, ningún otro proceso será
capaz de entrar en su sección crítica.

El semáforo se inicializa a 1. Así, el primer proceso que ejecute un semWait será capaz de entrar
en su sección crítica inmediatamente, poniendo el valor de s a 0. Cualquier otro proceso que
intente entrar en su sección crítica la encontrará ocupada y se bloqueará, poniendo el valor de
s a -1. Cualquier número de procesos puede intentar entrar, de forma que cada intento
insatisfactorio conllevará otro decremento del valor de s. Cuando el proceso que inicialmente
entró en su sección crítica salga de ella, s se incrementa y uno de los procesos bloqueados (si
hay alguno) se extrae de la lista de procesos bloqueados asociada con el semáforo y se pone en
estado Listo. Cuando sea planificado por el sistema operativo, podrá entrar en la sección crítica.

El problema productor/consumidor
Examinemos ahora uno de los problemas más comunes afrontados en programación
concurrente: el problema productor/consumidor. El enunciado general es éste: hay uno
o más procesos generando algún tipo de datos (registros, caracteres) y poniéndolos en
un buffer. Hay un único consumidor que está extrayendo datos de dicho buffer de uno
en uno. El sistema está obligado a impedir la superposición de las operaciones sobre los
datos. Esto es, sólo un agente (productor o consumidor) puede acceder al buffer en un
momento dado. Analizaremos varias soluciones a este problema para ilustrar tanto la
potencia como las dificultades de los semáforos.

13
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Para empezar, asúmase que el buffer es infinito y consiste en un vector de datos. En


términos abstractos, las funciones productor y consumidor se definen como sigue:
productor: consumidor:
while (true) while (true)
{ {
/* producir dato v */; while (entra <= sale)
/* no hacer nada */;
b[entra] =
w = b[sale];
v; sale++;
entra++; /* consumir dato */
} }

En la figura ilustra la estructura del buffer b. El productor puede generar datos y


almacenarlos en el vector a su propio ritmo. Cada vez, se incrementa un índice (entra)
sobre el vector. El consumidor procede de manera similar, pero debe asegurarse de que
no intenta leer de una entrada vacía del vector. Por tanto, el consumidor se asegura de
que el productor ha avanzado más allá que él (entra > sale) antes de seguir.
Buffer infinito para el problema producto/consumidor
.. h[1] h[2] h[3] h[4] h[5] ………………………….

sale entra

Nota: el área sombreada indica la porción del buffer que está ocupada
Buffer finito circular para el problema productor/consumidor.

h[1] h[2] h[3] h[4] h[5] ………. b[n]

sale entra

14
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Implementación de semáforos
Como se mencionó anteriormente, es imperativo que las funciones semWait y
semSignal sean implementadas como primitivas atómicas. Una manera obvia es
implementarlas en hardware o firmware. A falta de esto, se han propuesto variedad de
esquemas. La esencia del problema es la de la exclusión mutua: sólo un proceso al
tiempo puede manipular un semáforo bien con la operación semWait o bien con
semSignal. Así, cualquiera de los esquemas software, tales como el algoritmo de
Dekker o el de Peterson (Apéndice A), pueden usarse, si bien esto supondría una
substancial sobrecarga de procesamiento. Otra alternativa es utilizar uno de los
esquemas soportados por hardware para la exclusión mutua.

Monitores
El monitor es una construcción del lenguaje de programación que proporciona una
funcionalidad equivalente a la de los semáforos, pero es más fácil de controlar.
La construcción monitor ha sido implementada en cierto número de lenguajes de
programación, incluyendo Pascal Concurrente, Pascal-Plus, Modula-2, Modula-3 y Java.
También ha sido implementada como una biblioteca de programa. Esto permite a los
programadores poner cerrojos monitor sobre cualquier objeto. En concreto, para algo
como una lista encadenada, pue- de quererse tener un único cerrojo para todas las listas,
por cada lista o por cada elemento de cada lista.

Monitores con Señales: (definición de Hoare)

Un monitor es un módulo de software que consta de uno o más procedimientos, una


secuencia de inicio y uno datos locales. Sus características son las siguientes:

1. Solo los procedimientos del monitor acceden a variables de datos locales.


2. Un proceso entra en el monitor invocando a uno de sus procedimientos.
3. En el monitor solo un proceso puede ser ejecutado en un momento dado;
cualquier otro proceso quedara suspendido esperando la disponibilidad del
monitor.

Al ser un proceso por vez, el monitor puede ofrecer un servicio de exclusión mutua
fácilmente. Así una estructura de datos puede protegerse situándola dentro de un
monitor.

Los monitores deben ofrecer herramientas de sincronización. Por ejemplo: si un proceso


llama a un monitor y una vez dentro de él el proceso queda suspendido esperando
alguna condición, hará falta un servicio que libere al monitor y lo deje disponible para el
siguiente proceso. Más tarde cuando la condición se cumpla el proceso suspendido
podrá regresar al monitor y ejecutarse desde el momento de la suspensión.

El monitor proporciona variables de condición que son accesibles solo desde dentro del
monitor.

15
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Hay dos funciones para operar variables de condición:

 cwait (c): suspende la ejecución del proceso que llama bajo la condición "c". El
monitor está ahora disponible para otro proceso.
 csignal (c): retorna la ejecución de un proceso suspendido después de un cwait,
bajo la misma condición. Si hay varios procesos elige uno de ellos.

Cola de
entrada
de
procesos
Área de espera del monitor Entrada

MONITOR

Condición c1 Datos locales

Variables condición

Procedimiento 1

Condición cn

Procedimiento k

Cola urgente

Código de inicialización

Salida

Estructura de un monitor.

16
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Pasos de Mensaje
Son 2 los requisitos básicos que deben satisfacerse cuando los procesos interactúan
entre si.

Ellos son:

 La sincronización
 La comunicación

Los procesos tienen que sincronizarse para cumplir la exclusión mutua, los procesos
cooperantes pueden necesitar intercambiar información.

El paso de mensajes es un método que permite que se realice ambas funciones. Este
método tiene la ventaja de que es de fácil implementación en sistemas distribuidos y
también es sistemas de multiprocesador y monoprocesador de memoria compartida.

La funcionalidad real del paso de mensajes, generalmente, se da por medio de un par


de primitivas:

send(destino, mensaje)

receive(origen, mensaje)

Este es el conjunto mínimo de operaciones necesarias para que los procesos puedan
dedicarse al paso de mensajes.

Sincronización

La comunicación de un mensaje entre 2 procesos implica cierto nivel de sincronización


entre ambos. El receptor no puede recibir un mensaje hasta que sea enviado por otro
proceso. Además, hace falta especificar que le sucede a un proceso después de ejecutar
una primitiva SEND o RECEIVE.

Considérese en primer lugar la primitiva send. Cuando se ejecuta una primitiva send en
un proceso, hay 2 posibilidades: o bien el proceso emisor se bloquea hasta que recibe el
mensaje o no se bloquea. Igualmente, cuando un proceso ejecuta una primitiva RECEIVE,
existen 2 opciones:

1) Si previamente se ha enviado algún mensaje, este es recibido y continua la ejecución.

2) Si no hay ningún mensaje esperando entonces:

a) el proceso se bloquea hasta que llega un mensaje o,

b) el proceso continúa ejecutando, abandonando el intento de recepción.

17
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

El emisor y el receptor pueden ser bloqueantes o no bloqueantes.

Existen 3 tipos de combinaciones, pero un sistema solo implementa uno o dos.

1. Envío bloqueante, recepción bloqueante: tanto el emisor como el receptor se


bloquean hasta que llega el mensaje; esta técnica se conoce como rendezvous.
2. Envío no bloqueante, recepción bloqueante: aunque el emisor puede continuar, el
receptor se bloquea hasta que llega el mensaje solicitado. Es la combinación más
útil.
3. Envío no bloqueante, recepción no bloqueante: nadie debe esperar.

El send no bloqueante es la forma más natural para muchas tareas de programación


concurrente. Un posible riesgo del send no bloqueante es que por error puede llevar a
una situación en la que el proceso genere mensajes repetidamente.

Para el receive, la versión bloqueante es la más natural para muchas tareas de


programación concurrente. En general, un proceso que solicita un mensaje necesitara
la información esperada antes de continuar.

Direccionamiento

Es necesario disponer de alguna forma de especificar en la primitiva send que proceso


va a recibir el mensaje. La mayoría de las implementaciones permiten a los procesos
receptores indicar el origen del mensaje que se va a recibir.

Los distintos esquemas para hacer referencia a los procesos en las primitivas send y
receive se encuadran dentro de 2 categorías:

1) Direccionamiento directo: la primitiva send incluye una identificación específica del


proceso de destino.

La primitiva receive se puede gestionar de 2 formas:

 Una posibilidad requiere que el proceso designe explícitamente un proceso


emisor. El proceso debe conocer de antemano de que proceso espera un
mensaje.
 En otros casos es imposible especificar el proceso de origen por anticipado.

2) Direccionamiento indirecto: los mensajes no se envían directamente del emisor al


receptor, sino a una estructura de datos compartidos formada por colas, que pueden
guardar los mensajes temporalmente, que se denominan BUZONES (mailboxes). Para
que 2 procesos se comuniquen, uno envía mensajes al buzón apropiado y el otro los
retira. Una ventaja de este tipo de direccionamiento es que se desacopla a emisor y
receptor, asegurando mayor flexibilidad en el uso de mensajes.

18
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Relación entre emisores y receptores

 UNO A UNO: permite que se establezca un enlace privado entre 2


procesos. Aísla su interacción de injerencias erróneas de otros
procesos.
 MUCHOS A UNO: resulta útil para interacciones cliente-servidor. En este caso el
buzón se llama puerto.
 UNO A MUCHOS: permite un emisor y varios receptores.

La asociación de procesos a buzones puede ser ESTATICA o DINAMICA. Los puertos


suelen estar asociados estáticamente con algún proceso en particular. El puerto se crea
y se asigna al proceso permanentemente. Una relación de UNO A UNO se define de
forma estática y permanentemente. Cuando hay varios emisores, la asociación a un
BUZON puede realizarse dinámicamente. Se pueden utilizar primitivas como CONECTAR
o DESCONECTAR.

Propiedad del buzón. en el caso de 1 puerto, normalmente pertenece y se crea por el


RECPTOR. Entonces cuando se destruye el proceso, también se destruye el puerto.

Para los buzones en general el S.O. ofrece un servicio de creación de buzones. Son
considerados como propiedad del proceso creador en cuyo caso se destruyen junto con
el proceso, o como propiedad del S.O., en este caso se necesita una orden explicita para
destruir el buzón.

Formato De Mensajes

Para algunos S.O. los diseñadores han elegido mensajes cortos y tamaños fijos para
minimizar procesamiento y coste de almacenamiento. Si se van a pasar una gran
cantidad de datos, estos pueden ponerse en un archivo y el mensaje simplemente hará
referencia a este archivo. Una solución más flexible es utilizar mensajes de longitud
variable.

Comunicación indirecta de procesos.

19
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Disciplina De Cola

La disciplina de cola más simple es FIFO, pero esta puede no ser suficiente para mensajes
más urgentes que otros. Una opción es habilitar la especificación de prioridades de los
mensajes, en función del tipo de mensajes o por designación del emisor. Otra es permitir
al receptor examinar la cola de mensajes y seleccionar el mensaje a recibir a
continuación.

Formato general de mensaje.

Exclusión Mutua

Con el siguiente algoritmo de muestra una forma de usar el PASO DE MENSAJES para
cumplir la exclusión mutua.

Se usan RECEIVE bloqueantes y SEND no bloqueantes. Un proceso concurrente


comparte un BUZON, EXMUT, que puede ser usado por todos los procesos. EXMUT
(buzón) tiene inicialmente un único mensaje nulo. Un proceso que requiere entrar en su
sección crítica intenta:

1) recibir el mensaje. Si el EXMUT(buzón) está vacío, se bloquea el proceso.

2) Una vez que consiguió el mensaje, ejecuta su sección crítica y devuelve el mensaje al
buzón.

El mensaje funciona como un testigo(TOKEN) que se pasa de proceso a otro.

Esta técnica supone que, si hay más de un proceso ejecutando la acción RECEIVE
concurrentemente, entonces:

 Si hay un mensaje, se entrega solo a uno de los procesos y los demás se


bloquean.
 Si el buzón está vacío, todos se bloquean cuando hay un mensaje, solo se activará
y tomará el mensaje uno de los procesos bloqueados.

20
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Problema De Los Lectores/Escritores


Descripción del problema:

Existe un área de datos compartida entre una serie de procesos, algunos sólo leen los
datos (lectores) y otros sólo escriben datos (escritores). El problema es satisfacer las
siguientes condiciones:

1. Cualquier número de lectores puede leer el archivo simultáneamente.


2. En el archivo sólo puede escribir un escritor en cada instante.
3. Si un escritor está accediendo al archivo, ningún lector puede leerlo.

El problema general de exclusión mutua, consiste en permitir a cualquiera de los


procesos (lectores o escritores) leer o escribir en el área de datos. Esto hace necesario
declarar cualquier acceso como una sección crítica donde los procesos tendrían que
acceder uno a uno produciéndose intolerables retrasos, además se debe impedir que
los escritores interfieran unos con otros y también que se realicen consultas mientras se
llevan a cabo modificaciones.

Aplicar la solución general al problema de los lectores/escritores


sería inaceptablemente lenta. En este caso más restrictivo es posible crear soluciones
más eficientes.

A continuación, se examinan dos soluciones al problema:

Prioridad a los lectores

Es una solución que utiliza semáforos para respetar la exclusión mutua. Se permite el
acceso a varios lectores, pero mientras que un escritor está accediendo a los datos
compartidos, no se permite acceder a ningún escritor o lector.

El primer lector que intenta acceder debe esperar en el semáforo, Cuando haya al
menos un lector, los lectores siguientes no necesitan esperar para entrar, se les da
prioridad. El problema es que un escritor estará esperando mientras que haya al menos
un lector leyendo, que luego podría dar paso a otro lector, en este caso el lector estará
sujeto a inanición.

Se utiliza una variable global contlect para mantener el número de lectores y el


semáforo x para que la actualización de contlect sea consistente. El
semáforo esem controla el acceso al recurso compartido.

Prioridad a los escritores

Esta solución garantiza que no se permitirá acceder a los datos a ningún nuevo lector una vez
que, al menos, un escritor haya declarado su deseo de escribir. Se utilizan los mismos semáforos
que en la solución anterior y se añaden otros más:

21
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Un semáforo Isem que inhibe todas las lecturas cuando al menos un escritor desea
acceder.
Una variable contesc que controla la activación de Isem.
Un semáforo y que controla la actualización de contesc.
Un semáforo y que controla la actualización de contesc.
Un semáforo z donde se encolan los lectores cuando ya hay uno en lsem.

22
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Conclusiones y recomendaciones
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.

23
FACULTAD DE INGENIERA DE
SISTEMAS Y MECANICA
ELECTRICA ESCUELA
` PROFESIONAL DE INGENIERA DE
SISTEMAS

Bibliografía
Cifuentes, A. (20015). Slideshare. Obtenido de Slideshare:
https://slideplayer.es/slide/3395440/

Maidana, D. (s.f.). Concurrencia exclusión mutua y sincronización. Obtenido de Concurrencia


exclusión mutua y sincronización:
https://sites.google.com/site/diegomaidanati/Home/concurrencia-exclusion-mutua-y-
sincronizacion

Mendez Barreto, A. (30 de Septiembre de 2014). Prezi. Obtenido de Prezi:


https://prezi.com/4zbp8jfl46t6/concurrencia-exclusion-mutua-y-sincronizada/

Vivanco Villamar, A. A. ( 2011). Evaluacion de la calidad del sistema integrado para casas de
valores sivac de la bolsa de valores de quito utilizando la norma ISO/IEC 14598. Quito.

24

También podría gustarte