Teoría de Sistemas Operativos

24
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz [email protected] http://www.elo.utfsm.cl/~elo321

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 Presentation

Transcript of Teoría de Sistemas Operativos

Page 1: Teoría de Sistemas Operativos

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

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

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

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

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

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

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

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

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

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

11

Problemas clásicos de IPCBuffer

Filósofos

Lectores ...

F1

F3F4

F5 F2

Filósofo

Page 12: Teoría de Sistemas Operativos

12

Problemas clásicos de IPCBuffer

Filósofos

Lectores ...

F1

F3F4

F5 F2

Tenedor

Page 13: Teoría de Sistemas Operativos

13

Problemas clásicos de IPCBuffer

Filósofos

Lectores ...

F1

F3F4

F5 F2

Plato de tallarines

Page 14: Teoría de Sistemas Operativos

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

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

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

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

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

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

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

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

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

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

24

Problemas clásicos de IPCBuffer

Filósofos

Lectores ...