Está en la página 1de 27

FILOSOFOS COMENSALES - 1ra

PRIMERA SOLUCIÓN
Consiste en representar cada palillo como un semáforo, cuando un filosofo trata de cog

T T0 T1 T2 T3 T4 T5 T6
i 0 0 0 1 1 2 2
P[0] 1 0
P[1] 1 0 bloq
P[2] 1 0
P[3] 1
P[4] 1
F[0] 1-piensa 2-wait(p[0])3-wait(p[1])
F[1] 1-piensa 2-wait(p[1])
F[2] 1-piensa 2-wait(p[2])
F[3]
F[4]
Christian Alvaro Choque Surco
Wilberth Mario Velasquez Laura
Marcos SamuelHuayna Cama
Manuel Eduardo Mena Aguilar
ALES - 1ra SOLUCIÓN

do un filosofo trata de coger un palillo ejecuta la operación WAIT sobre el semáforo.

T7 T8 T9 T10 T11 T12 T13 T14 T15


3 3 4 4 0 0 0 1 2
1
desbloq
bloq
0 bloq
0
4-come 5-signal(p[06-signal(p[1])
3-wait(p[2])
2-wait(p[2]) 3-wait(p[3])
1-piensa 2-wait(p[3])
1-piensa 2-wait(p[4])
T16 T17 T18 T19 T20 T21 T22 T23 T24
3 4 0 0 1 1 1 2 2
0 bloq
1
desbloq 1

bloq
1-piensa 2-wait(p[0])
4-come 5-signal(p[16-signal(p[2])
3-wait(p[3]) 4-come 5-signal(p[2
3-wait(p[4])
3-wait(p[0])
T25 T26 T27 T28 T29 T30 T31
2 3 3 3 4 4 4
desbloq

desbloq 1
desbloq 1

6-signal(p[3])
4-come 5-signal(p[36-signal(p[4])
4-come 5-signal(p[46-signal(p[0])
FILOSOFOS CO
SEGUNDA SOLUCIÓN

Consiste en inicializar la cantidad d


a que no se prodrán ocupar los 5 pali

T T0 T1 T3
i 0 1

sitios: Semaphore initial(sitios,4) sitios 4 4 4

P: array[0..4] of Semaphorinitial(P[0], 1) P[0] 1 1 1

initial(P[1], 1) P[1] 1 1 1

initial(P[2], 1) P[2] 1 1 1

initial(P[3], 1) P[3] 1 1 1

initial(P[4], 1) P[4] 1 1 1
F[0] 1-Piensa
F[1] 1-Piensa
F[2]
F[3]
F[4]

T T15 T16 T17


i 3 0 1
sitios Bloq Bloq Bloq
P[0] 0 0 0
P[1] 0 Bloq Bloq
P[2] 0 0 Bloq
P[3] 0 0 0
P[4] 1 1 1
F[0] 4-Bloq
F[1] 4-Bloq
F[2]
F[3] 3
F[4]

wait(P[3]) wait(P[1]) wait(P[2])

T T29 T30 T31


i 3 4 1
sitios 0 0 0
P[0] 0 Bloq Bloq
P[1] Bloq Bloq Dbloq
P[2] 0 0 0
P[3] 1 1 1
P[4] 0 0 0
F[0] 4-Dbloq
F[1] 6
F[2]
F[3] 1-Piensa
F[4] 4-Bloq

wait(P[0]) signal(P[1]

Christian Alvaro Choque Surco


Wilberth Mario Velasquez Laura
Marcos SamuelHuayna Cama
Manuel Eduardo Mena Aguilar
SOFOS COMENSALES - 2da SOLUCIÓN

ializar la cantidad de filósofos que pueden comer simultáneamente a 4. Debido


rán ocupar los 5 palillos, no será posible un interbloqueo total.

T4 T5 T6 T7 T8 T9 T10 T11 T12


2 3 4 0 1 2 3 4 0
4 4 4 3 2 1 0 Bloq Bloq
1 1 1 1 1 1 1 1 0
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
2 3
2
1-Piensa 2
1-Piensa 2
1-Piensa 2-Bloq

wait(sitios)wait(sitios)wait(sitios)wait(sitios)wait(sitios)wait(P[0])

T18 T19 T20 T21 T22 T23 T24 T25 T26


2 3 3 3 2 3 2 3 4
Bloq Bloq Bloq Bloq Bloq Bloq Bloq Dbloq 0
0 0 0 0 0 0 0 0 0
Bloq Bloq Bloq Bloq Bloq Bloq Bloq Bloq Bloq
Bloq Bloq Bloq Bloq Bloq Bloq Dbloq 0 0
Bloq Bloq Bloq Dbloq 0 0 0 0 0
1 0 0 0 0 1 0

4-Dbloq
4-Bloq 4-Dbloq 5-Come 6
4 5-Come 6 7 8
2-Dbloq 3

wait(P[3]) wait(P[4]) signal(P[3]) signal(P[4]signal(P[2]signal(sitiowait(P[4]

T32 T33 T34 T35 T36 T37 T38 T39 T40


2 3 0 1 2 3 0 1 2
1 0 0 0 0 0 0 1 0
Bloq Bloq Bloq Bloq Bloq Bloq Dbloq 0 0
0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1
1 1 1 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0
5-Come 6
7 8
8 1-Piensa 2
2 3
4-Dbloq

signal(sitiowait(sitios) signal(P[2]) wait(P[3]) signal(P[0]signal(sitiowait(sitios)


T13 T14
1 2
Bloq Bloq
0 0
0 0
1 0
1 1
1 1

3
3

wait(P[1]) wait(P[2])

T27 T28
1 2
0 0
0 0
Bloq Bloq
0 0
0 1

5-Come
7

signal(P[3])

T41 T42
3 4
0 0
0 0
0 0
1 1
0 0
Bloq Bloq

4-Bloq
5-Come

wait(P[4])
FILOSOFOS
TERCERA SOLUCIÓN

Consiste en que cada filósofo tome s

T T0 T1
i 0
mutex : semaphore initial(mutex,1) mutex 1 1
P: array[0..4] of integer P[0] = 1 {libre} P[0] 1 1
P[1] = 1 {libre} P[1] 1 1
0 = ocupado P[2] = 1 {libre} P[2] 1 1
1 = libre P[3] = 1 {libre} P[3] 1 1
P[4] = 1 {libre} P[4] 1 1
F[0] 1-Piensa
F[1]
F[2]
F[3]
F[4]

T T17 T18
i 0 1
mutex 0 Bloq 0 Bloq
P[0] 0 0
P[1] 0 0
P[2] 1 1
P[3] 1 1
P[4] 1 1
F[0] 9-Come
F[1] 4-S V
F[2] Desbloq
F[3]
F[4]

T T32 T33
i 0 4
mutex 0 Bloq 0 Bloq
P[0] 1 1
P[1] 0 0
P[2] 0 0
P[3] 0 0
P[4] 1 1
F[0] 11
F[1]
F[2]
F[3]
F[4] 5-W Bloq

Christian Alvaro Choque Surco


Wilberth Mario Velasquez Laura
Marcos SamuelHuayna Cama
Manuel Eduardo Mena Aguilar
FILOSOFOS COMENSALES - 3ra SOLUCIÓN
SOLUCIÓN

n que cada filósofo tome sus palillos solamente si ambos están libres.

T3 T4 T5 T6 T7 T8 T9 T10
1 2 3 4 0 1 2 3
1 1 1 1 0 0 Bloq 0 Bloq 0 Bloq
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
2-W V
1-Piensa 2-W Bloq
1-Piensa 2-W Bloq
1-Piensa 2-W Bloq
1-Piensa

T19 T20 T21 T22 T23 T24 T25 T26


2 0 1 2 2 2 3 2
0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0
1 1 1 1 0 0 0 0
1 1 1 1 1 1 1 1
10-W Bloq
5-W Bloq
3 F 6 7 8 V 9-Come
Desbloq 3 V

P[2] = 0 F P[3] = 0 V
P[3] = 0 F

T34 T35 T36 T37 T38 T39 T40 T41


0 0 1 0 1 2 0 1
0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
0 0 0 0 0 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
12 13-S V 1-Piensa 2-W Bloq
Desbloq 3 V 4-S V 5-W Bloq
Desbloq 11

P[3] = 0 P[1] = 0 F P[3] = 0


P[2] = 0 V
LUCIÓN

T11 T12 T13 T14 T15 T16


4 0 0 0 0 1
0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq
1 1 0 0 0 0
1 1 1 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1
3 F 6 7 8-S V
Desbloq 3 V

2-W Bloq
P[0] = 0 F P[1] = 0 P[0] = 0 V
P[1] = 0 F P[1] = 0 F

T27 T28 T29 T30 T31


3 4 2 3 4
0 Bloq 0 Bloq 0 Bloq 0 Bloq 0 Bloq
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
Desbloq

10-W Bloq
4-S V 5-W Bloq
Desbloq 3 V 4-S V

P[4] = 0 F
P[0] = 0 V

T42 T43 T44 T45 T46


2 2 2 2 ...
0 Bloq 0 Bloq 0 Bloq 0 Bloq ...
1 1 1 1 ...
1 1 1 1 ...
1 1 1 1 ...
1 1 1 1 ...
1 1 1 1 ...
...
...
12 13-S V 1-Piensa 2-W Bloq ...
...
...
FILOSOFOS CO
CUARTA SOLUCIÓN
un filosofo impar toma primero su palillo de la

T T0 T1 T3 T4 T5
i 0 1 2 3
P[0] 1 1 1 1 1
P[1] 1 1 1 1 1
P[2] 1 1 1 1 1
P[3] 1 1 1 1 1
P[4] 1 1 1 1 1
F[0] 1-Piensa
F[1] 1-Piensa
F[2] 1-Piensa
F[3] 1-Piensa
F[4]

T T17 T18 T19 T20 T21


i 1 1 0 1 2
P[0] Block Block Block Block Block
P[1] Block 0 0 0 0
P[2] Block Block Block 0 0
P[3] Block Block Block Block Block
P[4] 0 0 0 0 0
F[0] 4-Come
F[1] 4-Come 5 6
F[2] 4-Come
F[3]
F[4]
signal(P[1]) signal(P[2]) signal(P[0])

Libera F0 Libera F2

T T32 T33 T34 T35 T36


i 2 3 0 1 2
P[0] 0 0 1 1 1
P[1] 0 0 0 0 0
P[2] 0 0 0 0 0
P[3] 0 1 1 1 0
P[4] Block Block Block Block Block
F[0] 2
F[1] 4-Come
F[2] 1-Piensa 2
F[3] 5
F[4]
signal(P[3])signal(P[0]) wait(P[3])

Christian Alvaro Choque Surco


Wilberth Mario Velasquez Laura
Marcos SamuelHuayna Cama
Manuel Eduardo Mena Aguilar
OSOFOS COMENSALES - 4ta Solución

ma primero su palillo de la izquierda y luego el palillo de la derecha, mientras que un filosofo par elige su palillo de la derecha y

T6 T7 T8 T9 T10 T11 T12 T13 T14


4 0 1 2 3 4 0 1 2
1 0 0 0 0 Block Block Block Block
1 1 0 0 0 0 Block Block Block
1 1 1 1 1 1 1 0 Block
1 1 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0
2 3-Block
2 3
2 3-Block
2
1-Piensa 2-Block
wait(P[0]) wait(P[1]) wait(P[3]) wait(P[4]) wait(P[0]) wait(P[1]) wait(P[2]) wait(P[2])
Bloquea F4Bloquea F0 Bloquea F2

T22 T23 T24 T25 T26 T27 T28 T29 T30


0 1 2 4 0 1 2 3 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 1 1 1 1 1 1 1
Block Block Block Block Block Block 0 0 0
0 0 0 Block Block Block Block Block Block
5 6 1-Piensa
1-Piensa 2
5 6
4-Come
3-Block
signal(P[0]) signal(P[2])wait(P[4])signal(P[1])wait(P[1])signal(P[3])

Libera F4 Bloquea F4 Libera F3

T37 T38 T39 T40 T41 T42 T43 T44 T45


3 4
1 1
0 0
0 0
0 0
0 0

6
4-Come
signal(P[4])

Libera F4
0 1

r elige su palillo de la derecha y luego el de la izquierda .

T15
3
Block
Block
Block
Block
0

3-Block

wait(P[3])
Bloquea F3

T31
1
0
0
0
0
Block

T46

También podría gustarte