You are on page 1of 8

ACTIVIDAD

EXTRACLASE No.
5 FECHA: 31/07/2014
UNIDAD N: 4 Sincronizacin y comunicacin de procesos.
TEMA: Realizar pruebas de escritorios de las siguientes soluciones.
PROBLEMA:

Cmo comprender y analizar la sincronizacin de los
procesos?

OBJETIVO:

Comprender la sincronizacin de los procesos

INDICADOR(ES) DE
EVALUACION:
Realizar trabajos complementarios.
TIPO DE ACTIVIDAD
LUGAR ALCANCE FORMA
Intraclase
Extraclase
Individual
Grupal
Taller
Sntesis, esquemas
Caso de estudio
Investigativa
Vinculacin con la
colectividad
Prctica de laboratorio
Prctica de clase
Resolucin de
problemas,
ejercicios
Ensayo, artculo
Informe de exposicin
CALIFICACIN

ROLES Y RESPONSABILIDADES DE LOS PARTICIPANTES EN LA TAREA:
NOMBRE ESTUDIANTE ROL DESCRIPCIN
AMANDA AGUILAR Desarrolladora Investigar, leer y organizar la
informacin para poder realizar la
tarea enviada
JOHANNA AAZCO Desarrolladora Investigar, leer y organizar la
informacin para poder realizar la
tarea enviada
ANDRES RISCO Desarrollador Investigar, leer y organizar la
informacin para poder realizar la
tarea enviada
VICTOR ROMERO Desarrollador Investigar, leer y organizar la
informacin para poder realizar la
tarea enviada


TALLER #5

1) Realice una prueba de escritorio para la solucin de dormir y despertar con N=3.
#define N 3
int count = 0;

void producer(void){
while (true) {
produce_intem();
if (count == N) sleep();
enter_item();
count = count + 1;
if (count == 1) wakeup(consumer);
}
}

void consumer(void){
while (true) {
if (count == 0) sleep();
remove_item();
count = count - 1;
if (count == N - 1) wakeup(producer);
consume_item();
}
}







N Proceso Count Produce_item() Enter_item() Sleep Wakeup() Remove_item() Consume_item()
3 Productor 0 1 1 Consumidor
3 Productor 1 2 2
3 Productor 2 3 3
3 Productor 3 4 4
3 Consumidor 3 Productor 1 1
3 Consumidor 2 2 2
3 Consumidor 1 3 3
3 Consumidor 0 Consumidor


2) Realice una prueba de escritorio para la solucin de dormir y despertar con N=3 y demuestre el error

N Proceso Count Produce_item() Enter_item() Sleep
Bits de
espera
Wakeup()
Remove_ite
m()
Consume_item
()
3 Productor 0 1 1
1
Consumidor
3 Productor 1 2 2


3 Productor 2 3 3


3 Productor 3 4 4


3 Consumidor 3
0
Productor 1 1
3 Consumidor 2

2 2
3 Consumidor 1

3 3
3 Consumidor 0 Consumidor




3) Realice una prueba de escritorio para la solucin de semforos con N=3.
#define N 100
TYPEDEF int semaphore;
semaphore mutex = 1; /* Controla acceso a regin crtica.
semaphore empty = N; /* Cuenta las ranuras vacas
semaphore full = 0; /* Cuenta las ranuras llenas.

Void producer(void){
int item;
while (TRUE) {
produce_item(&item); /* Generar algo.
down(&empty); /* Decrementa ranuras vacas.
down(&mutex); /* Entrar en seccin crtica
enter_item(item); /* Inserta nuevo elemento.
up(&mutex); /* Sale seccin crtica.
up(&full); /* Incrementa ranuras llenas.
}
}
Void consumer(void){
int item;
while (TRUE) {
down(&full); /* Decrementa ranuras llenas.
down(&mutex); /* Entra seccin crtica.
remove_item(&item); /* Saca elemento.
up(&mutex); /* Sale de seccin crtica.
up(&empty); /* Incrementa ranuras vacas.
consume_item(item); /* Hacer algo con elemento consumido.
}}
MUTEX EMPTY FULL VARIABLE descripcion

1 3 0 - inicia producer

1 2 0 - decremente empty

0 2 0 - entra seccion_critica

0 2 0 a inserta dato

1 2 0 a sale seccion_critica

1 2 1 a incrementa full

1 1 1 a decrementa empty

0 1 1 a entra seccion_critica

1 1 1 ab inserta dato

0 1 1 ab sale seccion_critica

0 1 1 ab sale seccion_critica

0 1 2 ab incrementa full

0 1 2 ab decrementa empty

0 0 2 ab bloquea empty pasa a consumer
0 0 1 ab decrementa full

0 0 1 b saca dato

1 0 1 b sale seccion_critica

1 1 1 b incrementa empty pasa a producer
1 0 1 b decrementa empty

1 0 1 b bloquea empty pasa a consumer
0 0 0 b decrementa full

0 0 0 b entra seccion_critica

0 0 0 - saca dato

0 1 0 incrementa empty pasa a consumer



4) Realice una prueba de escritorio para la solucin de semforos con N=3 y demuestre el error humano.

You might also like