1 / 24

Teoría de Sistemas Operativos

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.

morrie
Download Presentation

Teoría de Sistemas Operativos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Problemas clásicos de IPC • Dos procesos comparten un buffer de tamaño • definido (N) Buffer Filósofos Productor Lectores ... Consumidor

  3. Problemas clásicos de IPC • Dos procesos comparten un buffer de tamaño • definido (N) Buffer Filósofos Productor Lectores ... Escribe datos

  4. Problemas clásicos de IPC • Dos procesos comparten un buffer de tamaño • definido (N) Buffer Filósofos Productor Lectores ... Saca datos Consumidor

  5. 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

  6. 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

  7. 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 ...

  8. 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”

  9. 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”

  10. Problemas clásicos de IPC Buffer Filósofos Lectores ...

  11. Problemas clásicos de IPC F1 F5 F2 F4 F3 Buffer Filósofos Lectores ... Filósofo

  12. Problemas clásicos de IPC F1 F5 F2 F4 F3 Buffer Filósofos Lectores ... Tenedor

  13. Problemas clásicos de IPC F1 F5 F2 F4 F3 Buffer Filósofos Lectores ... Plato de tallarines

  14. Problemas clásicos de IPC Buffer Filósofos Cada Filósofo (proceso): Lectores ... Pensando Hambriento Comiendo

  15. Problemas clásicos de IPC Buffer Filósofos Cada Filósofo (proceso): Lectores ... Pensando Hambriento Devuelvo los tenedores Puedo tomar los tenedores? Comiendo

  16. 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.

  17. 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]); }

  18. 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); }

  19. 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]); }

  20. 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 ...

  21. 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 ...

  22. 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 ...

  23. Problemas clásicos de IPC Solución Buffer Filósofos void escritor(void){ cree_data(); down(&db); escriba_base_datos(); up(&db); } Lectores ...

  24. Problemas clásicos de IPC Buffer Filósofos Lectores ...

More Related