teoría de sistemas operativos
DESCRIPTION
Teoría de Sistemas Operativos. Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz [email protected] 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. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/1.jpg)
Teoría de Sistemas Operativos
Departamento de Electrónica2º Semestre, 2002
Gabriel Astudillo Muñ[email protected]
http://www.elo.utfsm.cl/~elo321
![Page 2: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/2.jpg)
2
Problemas clásicos de IPCBuffer
Productor
Consumidor
Filósofos
Lectores ...
•Dos procesos comparten un buffer de tamaño definido (N)
![Page 3: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/3.jpg)
3
Problemas clásicos de IPCBuffer
Productor
Filósofos
Lectores ...
•Dos procesos comparten un buffer de tamaño definido (N)
Escribe datos
![Page 4: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/4.jpg)
4
Problemas clásicos de IPCBuffer
Productor
Consumidor
Filósofos
Lectores ...
•Dos procesos comparten un buffer de tamaño definido (N)
Saca datos
![Page 5: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/5.jpg)
5
Problemas clásicos de IPCBuffer
Productor
Consumidor
Filósofos
Lectores ...
•¿Qué sucede cuando el buffer está lleno y el productor desea poner un dato?
¿?
![Page 6: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/6.jpg)
6
Problemas clásicos de IPCBuffer
Productor
Consumidor
Filósofos
Lectores ...
•¿Qué sucede cuando el buffer está vacío y el consumidor desea sacar un dato?
¿?
![Page 7: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/7.jpg)
7
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
•Solución
•En el primer caso ==> productor se va a dormir
•En el segundo, ==> consumidor se va a dormir
![Page 8: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/8.jpg)
8
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
•Solución
•En el primer caso ==> productor se va a dormir
Cuando el consumidor saca un elemento,debe “despertar al productor”
![Page 9: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/9.jpg)
9
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
•Solución
Cuando el productor coloca un elemento,debe “despertar al consumidor”
•En el segundo, ==> consumidor se va a dormir
![Page 10: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/10.jpg)
10
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
#define N 100typedef int semaphore;
semaphore mutex = 1;semaphore empty = N; //entradas vaciassemaphore full = 0; //espacios ocupados
void productor(void){ int item; while(1){ pruduce_item(&item); wait(&empty); wait(&mutex); coloca_item(item); signal(&mutex); signal(&full); }}
void consumidor(void){ int item; while(1){ wait(&full); wait(&mutex); remove_item(item); signal(&mutex); signal(&empty); cosume_item(item); }
}
![Page 11: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/11.jpg)
11
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Filósofo
![Page 12: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/12.jpg)
12
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Tenedor
![Page 13: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/13.jpg)
13
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Plato de tallarines
![Page 14: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/14.jpg)
14
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Cada Filósofo (proceso):
Pensando Hambriento
Comiendo
![Page 15: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/15.jpg)
15
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Cada Filósofo (proceso):
Pensando Hambriento
Comiendo
Puedo tomarlos tenedores?
Devuelvo lostenedores
![Page 16: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/16.jpg)
16
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Solución:
Estado(N) : actividad de cada filósofo: AMBRIENTO COMIENDO PENSADO.
S(n) : arreglo de semáforos. Permite dormira los filósofos ambrientos si no pueden obtenerlos tenedores.
![Page 17: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/17.jpg)
17
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
Toma_tenedor()
void toma_tenedor(int i){ down(&mutex); estado[i]=HAMBRIENTO; test(i); up(&mutex); down(&s[i]);}
Solución:
![Page 18: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/18.jpg)
18
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
devuelve_tenedor()
void devuelve_tenedor(int i){ down(&mutex); estado[i]=PENSANDO; test[VECINO_IZQ]; test[VECINO_DER]; up(&mutex);
}
Solución:
![Page 19: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/19.jpg)
19
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
F1
F3F4
F5 F2
test()
void test(int i){ if(estado[i]==HAMBRIENTO && estado[VECINO_IZQ]!=COMIENDO && estado[VECINO_DER]!=COMIENDO){ estado[i]=COMIENDO; up(&s[i]);
}
Solución:
![Page 20: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/20.jpg)
20
Problemas clásicos de IPCBuffer
Filósofos
Lectores ... •Varios procesos pueden leer una base de datos.
•Si un proceso modifica la BD, ninguno de los demás procesos puede acceder a ella.
Problema
![Page 21: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/21.jpg)
21
Problemas clásicos de IPCBuffer
Filósofos
Lectores ... •La BD es una región crítica ==>debe haber un semáforo binarioque 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.
Solución
![Page 22: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/22.jpg)
22
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...
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
}
Solución
![Page 23: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/23.jpg)
23
Problemas clásicos de IPCBuffer
Filósofos
Lectores ... void escritor(void){ cree_data(); down(&db); escriba_base_datos(); up(&db);
}
Solución
![Page 24: Teoría de Sistemas Operativos](https://reader036.vdocuments.co/reader036/viewer/2022062302/56813b34550346895da40343/html5/thumbnails/24.jpg)
24
Problemas clásicos de IPCBuffer
Filósofos
Lectores ...