filosofos

21
 Filosofos Cenando Juan Quintela – Javier París {quintela,javier.paris}@udc.es

description

adas

Transcript of filosofos

Page 1: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 1/21

 

Filosofos Cenando

Juan Quintela – Javier París

{quintela,javier.paris}@udc.es

Page 2: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 2/21

 

Descripcin

● ! Filosofos sentados en una "esa circular paracenar.

● #ntre cada dos filsofos $a% un cu&ierto '!

cu&iertos en total(.● )n filosofo puede estar pensando, o co"iendo.

● Para co"er necesita usar los dos cu&iertos que

tiene a i*quierda % derec$a.● +a solucin de&e intentar evitar que nin-n

filosofo sufra inanicin.

Page 3: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 3/21

 

Descripcin

/

0

1

2

34

5

6

7

3

Page 4: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 4/21

 

3er 8ntento9 )n "ute: por tenedor

;a"os a &loquear cada tenedor con un "ute:.

! es el n-"ero de filsofos<tenedores.

pt$read="ute:=t tenedor>!?

AD#F8!# +#FB'i( 'i(

AD#F8!# 8EB'i( '''i(3( G !(

Page 5: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 5/21

 

3er 8ntento9 )n "ute: por tenedor

void filosofo'int nu"( {

int left H +#FB'nu"(

int ri$t H 8EB'nu"(

 I$ile'3( {

t$in'(pt$read="ute:=loc'tenedor>left?(

pt$read="ute:=loc'tenedor>ri$t?(

eat'(

pt$read="ute:=unloc'tenedor>ri$t?(

pt$read="ute:=unloc'tenedor>left?(

}

}

● KQue pasa si cada filosofo coe el cu&ierto de su i*quierdaL

Page 6: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 6/21

 

3er 8ntento9 )n "ute: por tenedor

/

0

1

2

34

5

6

7

3

Cuando intenten coer el de la derec$a lo van a encontrar ocupado HM inter&loqueo

KQue pasa si cada filosofo coe el cu&ierto de su i*quierdaL

Page 7: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 7/21

 

3er 8ntento9 )n "ute: por tenedor

● Posi&le solucin9

● Cada filsofo coe el cu&ierto de la i*quierda, % sino consiue el de la derec$a al ca&o de un periodo

de tie"po suelta el de la i*quierda HM +a esperatiene que ser distinta para cada filsofo.

● !o $a% inter&loqueos, porque evita"os $oldNIait

● 8"plica usar tr%loc o ti"edloc.

● Funciona &ien con un n-"ero rande de filsofos.

Page 8: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 8/21

 

3er 8ntento9 )n "ute: por tenedor

int left H +#FB'nu"(

int ri$t H 8EB'nu"(

int success H 4

 I$ile'3( {

t$in'(

do {

pt$read="ute:=loc'tenedor>left?( << Oloquea el "ute: del tenedor i*quierdo

if'pt$read="ute:=tr%loc'tenedor>ri$t?(( << 8ntenta &loquear el "ute: del tenedor derec$o con tr%loc

successH3

else {

pt$read="ute:=unloc'tenedor>left?(

usleep'rand'( G R=S8B(

}} I$ile'Tsuccess(

eat'(

pt$read="ute:=unloc'tenedor>ri$t?( << Uuelta el "ute: del tenedor derec$o

pt$read="ute:=unloc'tenedor>left?( << Uuelta el "ute: del tenedor i*quierdo

}

Page 9: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 9/21

 

V 8ntento9 )n "ute: para la "esa

● Ue usa un -nico "ute: para &loquear todos loscu&iertos con un "ute:.

● Puede $a&er starvation, especial"ente si la "esaes rande.

● +i"ita la concurrencia porque solo un filsofopuede estar coiendo cu&iertos, aunque puede$a&er varios co"iendo al "is"o tie"po.

Funciona &ien con pocos filsofos.

Page 10: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 10/21

 

V 8ntento9 )n "ute: para la "esa

● ;a"os a usar una condicin por filsofo para que espere si nopuede coer los cu&iertos.

● #n ve* de uardar quien tiene cada cu&ierto uarda"os elestado de cada filsofo 'E)!W, #B8!, BE8!X8!(.

Adefine ! 1Adefine 8EB':( ''':(3( G !(

Adefine +#FB ':( ''':(HH4( !9'':(Y3(((

pt$read=cond=t Iaitin>!?

pt$read="ute:=t "ute:

int state>!?

Page 11: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 11/21

 

V 8ntento9 )n "ute: para la "esa

filosofo'int i( {

 I$ile'3( {

t$in'(

picup'i(eat'(

put=doIn'i(

}

}

Page 12: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 12/21

 

V 8ntento9 )n "ute: para la "esa

void picup'int i( {

pt$read="ute:=loc'N"ute:(

state>i? H E)!W

 I$ile 'state>+#FB'i(? HH #B8! ZZ state>8EB'i( HH#B8!(

pt$read=cond=Iait'NIaitin>i?, N"ute:(

state>i? H #B8!

pt$read="ute:=unloc'N"ute:(

}

Page 13: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 13/21

 

V 8ntento9 )n "ute: para la "esa

void put=doIn'int i( {

pt$read="ute:=loc'N"ute:(

state>i?HBE8!X8!

if'state>+#FB'i(? HH E)!W(pt$read=cond=sinal'NIaitin>+#FB'i(?(

if'state>8EB'i(? HH E)!W(

pt$read=cond=sinal'NIaitin>8EB'i(?(

pt$read="ute:=unloc'N"ute:(

}

Page 14: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 14/21

 

Pro&le"as

/

0

1

2

34

5

6

7

3

#l 2 tiene $a"&re, pero no puede co"er porque el 1 le ocupa el cu&iertoderec$o.

Page 15: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 15/21

 

Pro&le"as

/

0

1

2

34

5

6

7

3

#l 7 tiene $a"&re, % los dos cu&iertos que quiere usar est[n li&res HM pasa a co"er

Page 16: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 16/21

 

Pro&le"as

/

0

1

2

34

5

6

7

3

#l 1 ter"ina % despierta al 2, pero el 2 vuelve a dor"ir porque su cu&ierto i*quierdoest[ ocupado por el 7. #sto puede ocurrir indefinida"ente, por lo que el 2 tendríainanicin.

Page 17: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 17/21

 

Pro&le"as

● +a solucin cl[sica no tiene inter&loqueos, peropuede $a&er inanicin9

● Ui un filosofo tiene vecinos que se alternan

co"iendo '% al "enos uno sie"pre est[ co"iendo(no conseuir[ co"er nunca.

Page 18: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 18/21

 

Con prevencin de inanicin

● Ui un filosofo espera "[s de un cierto tie"po leda"os prioridad HM "odifica"os la funcin depicup

Ea% varias for"as de $acerlo9● uardar la $ora en el "o"ento en que cada

filosofo consiue co"er HM así sa&e"os cuantotie"po $a pasado desde la -lti"a ve* que co"i.

● Cada cierto tie"po "arca"os a los filsofos queest\n E)!W co"o ;#!])U, % les da"osprioridad so&re los E)!W.

Page 19: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 19/21

 

Prevencin inanicin9 por tie"po

void picup'int i( {

pt$read="ute:=loc'N"ute:(

state>i? H E)!W

 I$ile 'Tcan=i=eat'i((pt$read=cond=Iait'NIaitin>i?, N"ute:(

last=ate>i? H ti"e'4(

state>i? H #B8!

pt$read="ute:=unloc'N"ute:(

}

Page 20: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 20/21

 

Prevencin inanicin

int can=i=eat'int i( {

if'state>+#FB'i(? HH #B8! ZZ state>8EB'i( HH#B8!( return 4

if'ti"e'4( – last=ate>i? M R=S8B( return 3if'state>+#FB'i(? HH E)!W NN 'ti"e'4( –last=ate>+#FB'i(? M R=S8B( return 4

if'state>8EB'i(? HH E)!W NN 'ti"e'4( –

last=ate>8EB'i(? M R=S8B( return 4return 3

}

Page 21: filosofos

7/17/2019 filosofos

http://slidepdf.com/reader/full/filosofos-568e2c6e2ce6f 21/21

 

Co"paracin Uoluciones

Uolucion ;entajas Pro&le"as

3 ute: por tenedorUolo se &loquea lo necesario

Funciona &ien con "uc$os filosofosEa% inter&loqueo

3 ute: por tenedor tr%loc

Uolo se &loquea lo necesarioFunciona &ien con "uc$os filsofos!o $a% inter&loqueo

Puede $a&er inanicin

#l tie"po de espera aleatoriointroduce retardos.

Ue $ace espera activa

3 ute: lo&al3condicin por filsofo

!o $a% retardos en el acceso.+a espera es pasiva.

Puede $a&er inanicinCon "uc$os filsofos el "ute:

-nico li"ita la concurrencia

3 ute: lo&al 3condicin por filsofo

li"itacin espera

#spera pasiva.!o $a% inanicin.

!o $a% retardos en el acceso

Con "uc$os filsofos el "ute:-nico li"ita la concurrencia.