250 likes | 432 Views
Teoría de Sistemas Operativos. Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz gabriel.astudillo@elo.utfsm.cl http://www.elo.utfsm.cl/~elo321. Problemas clásicos de IPC. Dos procesos comparten un buffer de tamaño definido (N). Buffer. Filósofos. Productor.
E N D
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz gabriel.astudillo@elo.utfsm.cl http://www.elo.utfsm.cl/~elo321
Problemas clásicos de IPC • Dos procesos comparten un buffer de tamaño • definido (N) Buffer Filósofos Productor Lectores ... Consumidor
Problemas clásicos de IPC • Dos procesos comparten un buffer de tamaño • definido (N) Buffer Filósofos Productor Lectores ... Escribe datos
Problemas clásicos de IPC • Dos procesos comparten un buffer de tamaño • definido (N) Buffer Filósofos Productor Lectores ... Saca datos Consumidor
Problemas clásicos de IPC • ¿Qué sucede cuando el buffer está lleno y el productor desea poner un dato? Buffer Filósofos Productor Lectores ... ¿? Consumidor
Problemas clásicos de IPC • ¿Qué sucede cuando el buffer está vacío y el consumidor desea sacar un dato? Buffer Filósofos Productor Lectores ... ¿? Consumidor
Problemas clásicos de IPC • Solución Buffer Filósofos • En el primer caso ==> productor se va a dormir • En el segundo, ==> consumidor se va a dormir Lectores ...
Problemas clásicos de IPC • Solución Buffer Filósofos • En el primer caso ==> productor se va a dormir Lectores ... Cuando el consumidor saca un elemento, debe “despertar al productor”
Problemas clásicos de IPC • Solución Buffer Filósofos • En el segundo, ==> consumidor se va a dormir Lectores ... Cuando el productor coloca un elemento, debe “despertar al consumidor”
Problemas clásicos de IPC Buffer Filósofos Lectores ...
Problemas clásicos de IPC F1 F5 F2 F4 F3 Buffer Filósofos Lectores ... Filósofo
Problemas clásicos de IPC F1 F5 F2 F4 F3 Buffer Filósofos Lectores ... Tenedor
Problemas clásicos de IPC F1 F5 F2 F4 F3 Buffer Filósofos Lectores ... Plato de tallarines
Problemas clásicos de IPC Buffer Filósofos Cada Filósofo (proceso): Lectores ... Pensando Hambriento Comiendo
Problemas clásicos de IPC Buffer Filósofos Cada Filósofo (proceso): Lectores ... Pensando Hambriento Devuelvo los tenedores Puedo tomar los tenedores? Comiendo
Problemas clásicos de IPC Buffer Filósofos Solución: Lectores ... Estado(N) : actividad de cada filósofo: AMBRIENTO COMIENDO PENSADO. S(n) : arreglo de semáforos. Permite dormir a los filósofos ambrientos si no pueden obtener los tenedores.
Problemas clásicos de IPC Buffer Solución: Filósofos Toma_tenedor() Lectores ... void toma_tenedor(int i){ down(&mutex); estado[i]=HAMBRIENTO; test(i); up(&mutex); down(&s[i]); }
Problemas clásicos de IPC Buffer Solución: Filósofos devuelve_tenedor() Lectores ... void devuelve_tenedor(int i){ down(&mutex); estado[i]=PENSANDO; test[VECINO_IZQ]; test[VECINO_DER]; up(&mutex); }
Problemas clásicos de IPC Buffer Solución: Filósofos test() Lectores ... void test(int i){ if(estado[i]==HAMBRIENTO && estado[VECINO_IZQ]!=COMIENDO && estado[VECINO_DER]!=COMIENDO){ estado[i]=COMIENDO; up(&s[i]); }
Problemas clásicos de IPC Problema Buffer Filósofos • Varios procesos pueden leer una • base de datos. • Si un proceso modifica la BD, ninguno • de los demás procesos puede acceder • a ella. Lectores ...
Problemas clásicos de IPC Solución Buffer Filósofos • La BD es una región crítica ==> • debe haber un semáforo binario • que permita realizar la exclusión. • El primer lector realiza un wait de este • semáforo y el último realiza un signal. • Se necesita un contador de lectores. Lectores ...
Problemas clásicos de IPC Solución Buffer semaphore mutex=1; semaphre db=1; int rc=0; void lector(void){ down(&mutex); rc++; if(rc==1) down(&db); up(&mutex); lea_base_datos(); down(&mutex); rc--; if(rc==0) up(&db); up(&mutex); use_datos(); //sección no crítica } Filósofos Lectores ...
Problemas clásicos de IPC Solución Buffer Filósofos void escritor(void){ cree_data(); down(&db); escriba_base_datos(); up(&db); } Lectores ...
Problemas clásicos de IPC Buffer Filósofos Lectores ...