Contadores de Eventos(Problema del productor y consumidor)

on

  • 2,474 views

Contadores de Eventos

Contadores de Eventos
El problema del productor y consumidor

Statistics

Views

Total Views
2,474
Views on SlideShare
2,261
Embed Views
213

Actions

Likes
0
Downloads
15
Comments
0

1 Embed 213

http://blog.espol.edu.ec 213

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Contadores de Eventos(Problema del productor y consumidor) Presentation Transcript

  • 1. Problema del productor y el consumidor Carolina Dávila Llerena Lic. Diseño Web y Aplicaciones Multimedia
  • 2.  Dos procesos comparten un almacén de tamaño fijo. Uno de ellos, el productor coloca información en el almacén, mientras que el otro, el consumidor, la obtiene de él. El problema surge cuando el productor desea colocar un nuevo elemento en el almacén, pero está lleno.
  • 3.  Si el almacén está lleno el productor debe irse a dormir. El consumidor debe despertar al productor cuando haya eliminado uno o más elementos del almacén. Si el consumidor desea eliminar algún elemento del almacén y está vacío debe irse a dormir.
  • 4.  El productor despierta al consumidor cuando ha puesto algo en el almacén. Se necesita saber el tamaño del almacén. Con está técnica no se necesita la exclusión mutua. Se utiliza un tipo especial de variable llamada contador de eventos.
  • 5.  Hay tres operaciones sobre el contador de eventos (E): Read(E). Da el valor actual de E. Advanced(E). Incrementa a E en 1. Await(E,v). Espera a que E >= v.
  • 6.  Los contadores inician en 0 y sólo aumentan. Se usan dos contadores de eventos, in e out.
  • 7.  in, cuenta el número de elementos que el productor ha colocado en el almacén desde el inicio de la ejecución del programa. out, cuenta el número de elementos que el consumidor ha retirado del almacén hasta el momento.
  • 8.  Cuando el productor desea colocar un elemento en el almacén, verifica si hay espacio por medio de await. El consumidor espera a que in sea igual a k- elemento, es decir, que el productor ha colocado k elementos en el almacén, antes de eliminarlo.
  • 9. #include “prototypes.h”#define N 100 /*número de entradas en el almacén (buffer)*/typedef int event_counter; /*event_counter son un tipo especial de int*/event_counter in = 0; /*cuenta los elementos insertados en el almacén (buffer) */event_counter out = 0; /*cuenta los elementos retirados del almacén (buffer)*/void producer(void){ int item, sequence = 0; while (TRUE) { /*ciclo infinito*/ sequence = sequence + 1; /*número de elemento a eliminar del almacén (buffer)*/ await(in, sequence); /*espera a que esté presente el elemento del espacio*/ remove_item(&item); /*retira al elemento de la entrada (sequence – 1) % N */ Advance(&out); /*deja que el productor se entere de que el elemento ha sido retirado*/ consume_item(item) /*hace algo con el elemento*/ }}