Productor Consumidor
Productor Consumidor
Productor Consumidor
productor-consumidor
Descripcin del problema
El problema Productor-Consumidor consiste
en el acceso concurrente por parte de
procesos productores y procesos
consumidores sobre un recurso comn que
resulta ser un buffer de elementos. Los
productores tratan de introducir elementos en
el buffer de uno en uno, y los consumidores
tratan de extraer elementos de uno en uno.
Descripcin del problema
Para asegurar la consistencia de la informacin
almacenada en el buffer, el acceso de los
productores y consumidores debe hacerse en
exclusin mutua. Adicionalmente el buffer es de
capacidad limitada o ilimitada de modo que el
acceso por parte del productor para introducir un
elemento en el buffer lleno debe provocar la
detencin del proceso productor, lo mismo
sucede para el consumidor que intente extraer un
elemento del buffer vaco.
Ejemplo
Por ejemplo tenemos dos clientes que retiran
las cajas de la mesa con un solo proveedor
quien es el que acerca las cajas a la mesa con
un semforo que es el que decide quien
espera y quien sigue con su camino para as
no causar conflictos en la mesa con solo tres
espacios que representan el buffer de datos y
con unas cajas que representan ser datos.
Problema 1
Cuando llega el cliente a la mesa donde estn
las cajas y no encuentra nada, no sabe que
hacer entonces es cuando se hace la exclusin
mutua.
Solucin 1
El semforo le muestre un letrero de alto y al
ver este letrero el cliente se duerme hasta que
el semforo le pone el letrero para continuar
con su trabajo y extraiga una caja de la mesa.
Problema 2
Se trata cuando el proveedor llega con una
caja a la mesa y la encuentra llena y no tiene
donde colocar la caja entonces este no sabe
que hacer y se va, entonces es cuando se hace
la exclusin mutua.
Solucin 2
El semforo le pone un letrero de alto y este
al verlo se duerma mientras la mesa se
desocupa y una ves que haya espacio el
semforo le dice que siga y el proveedor deja
la caja y sigue su trabajo.
Problema 3
Se trata cuando el cliente y el proveedor
llegan en el mismo instante a la mesa, esto no
puede ser, tiene que llegar a la mesa uno a la
ves entonces este caso se hace en exclusin
mutua.
Solucin 3
El semforo les pone el letrero de alto a
cualquiera de los dos por ejemplo se lo pone al
cliente este se duerme mientras el proveedor
pone una caja y se retira el semforo le indica al
cliente que siga se levanta y continua con su
trabajo normal. Tambin se le puede poner alto al
proveedor.
Problema 4
Tenemos dos clientes y el problema ocurre
cuando los dos clientes llegan en el mismo
instante a la mesa y estos chocan y no pueden
tomar la caja al mismo tiempo entonces se
hace la exclusin mutua.
Problema 4
El semforo le pone el letrero de alto a
cualquiera de los dos clientes y este se
duerma mientras el otro recoge la caja y se
retira entonces el semforo pone el letrero de
continuar para el que estaba dormido y este
se levanta y continua con su trabajo.
Solucin
La solucin es que exista un tipo semforo que
este al pendiente de los productores o los
clientes y les indique cuando tengan que
detenerse o puedan tomar cajas en la mesa
para as evitar problemas. Y otro semforo
que este pendiente de los consumidores que
le indiquen cuando tienen que detenerse y
cuando siguen con su trabajo (dejar cajas).
Criterios a tomar en cuenta
Seccin critica del productor(P) y
consumidor(C): ACCESO AL BUFFER.
Condiciones: P produce si el buffer no esta
lleno y C consume si el buffer no esta vaco.
Solucin para el buffer limitado.
Solucin para el Buffer ilimitado.
Criterios a tomar en cuenta
Solucin con buffer ilimitado: el consumidor
solo acceder al buffer cuando haya algn
dato que consumir.
Solucin con buffer limitado: el productor solo
colocara un dato en el buffer si hay sitio libre y
el consumidor solo acceder si hay algn dato
que consumir.
Solucin del productor-consumidor con buffer ilimitado
Crear proceso productor
Repetir, bucle infinito
Producir elemento
Protocolo de entrada SC
Insertar elemento en el buffer
Protocolo de salida SC
Por siempre
Fin del proceso productor
Solucin del productor-consumidor con buffer limitado
ALGORITMO
Crear proceso consumidor
Repetir, bucle infinito
Protocolo de entrada SC
Extraer elemento del buffer
Protocolo de salida SC
Consumir elemento
Por siempre
Fin del proceso consumidor
Diagrama
Pseudocodigo
Pseudocodigo
Ejercicio
Considere el siguiente ejercicio, brinde una
solucin usando semforos tenemos un
productor que genera nmeros aleatorios y el
consumidor calcula la media de dichos
nmeros.
Ejercicios 46, 48, 52, 54, 89, 91, 97