Diferencia entre revisiones de «Solución ejercicio 1»
(Aclaración compañeros) |
(aclaración) |
||
| Línea 67: | Línea 67: | ||
--[[Usuario:Josmorgav1|Josmorgav1]] 15:32 9 may 2011 (UTC) | --[[Usuario:Josmorgav1|Josmorgav1]] 15:32 9 may 2011 (UTC) | ||
Una aclaración al compañero David Martin, el contador de semáforo s2, en un principio vale 0, y como el primer proceso en ejecutar es P2, al hacer el down(s2); bloquea, creo que en tu solución consideras que s2 vale 1. | Una aclaración al compañero David Martin, el contador de semáforo s2, en un principio vale 0, y como el primer proceso en ejecutar es P2, al hacer el down(s2); bloquea, creo que en tu solución consideras que s2 vale 1. | ||
| − | Desde mi punto de vista, la solución por ahora más correcta, es la del compañero David Suárez. | + | Desde mi punto de vista, la solución por ahora más correcta, es la del compañero David Suárez |
| + | |||
| + | --[[Usuario:Jherrera|Jherrera]] | ||
| + | Con respecto a la solución de Dvs no es correcta a partir del instante 2, ya que interpreto que el proceso 2 ejecuta la instrucción nº3 en vez de pasar a bloqueado. He realizado el ejercicio al igual que David (última solución propuesta) y pienso que está totalmente correcto. | ||
Revisión del 16:36 9 may 2011
X = El proceso pasa a estado bloqueado.
/ = El proceso pasa a estado preparado.
| | | #1| #2| #3| #4| #5| #1| | | | #2| #3| #4| | | | #5| fin de ejecucion
p1| | |---|---|---|---|---|---| | | |---|---|---| | | |---| | |
| | | | | | | | | | | | | | | | | | | | |
| #1| #2| | | | | | | #3| #4| #1| | | | #2| #3| #4| fin de ejecucion
p2|---|---X | | | | / |---|---|---| | | |---|---|---| | | |
| | | | | | | | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
El proceso P2 comienza su ejecucion y al hacer el down al semaforo s2 que vale 0 bloquea , ya que los semaforo es un sincronizacion bloqueante, p1 comienza su ejecucion hasta que se hace up(s2) y agota su ventana de tiempo y p2 puede comenzar su ejecucion.
--DvS 013 15:09 9 may 2011 (UTC) : había conflicto cuando le he dado a subir así que pongo debajo lo que yo estaba editando antes de que se subiera nada
p1: for (int i=0; i<2; i++) { #1
down(s1); #2
f1(); #3
if (get(s1) == 0) #4
up(s2); #5
} for (int i=0; i<2; i++) { #1
down(s2); #2
f2(); #3
up(s1); #4
} X : se ejecuta el planificador
> : fin del proceso
#nº : número de insturcción
|i2=0 |i1=0 | i2=1 | i1=1 | | i2=2|i1=2 |
| | | | #1| #2| #3| | | | #4| #1| #2| #3| #4| #5| | | | #1| |
P1 | | | |---|---|---| | | |---|---|---|---|---|---| | | |---> |
s1 | 1 | 0 | 1 | 0 | 1 | |
| #1| #2| #3| | | | #4| #1| #2| | | | | | | #3| #4| #1| | |
P2 |---|---|---| | | |---|---|---| | | | | | |---|---|---> | |
s2 | 1 | 0 | 0 | | | | | |
planif X | | X | | X | | X | | X | | X | | X X |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Nueva solución:
Con respecto a la primera, una simple aclaración --David 15:26 9 may 2011 (UTC)
X = El proceso pasa a estado bloqueado.
/ = El proceso pasa a estado preparado.
| | | #1| #2| #3| #4| #5| #1| | | | #2| #3| #4| | #5| #1| |
p1| | |---|---|---|---|---|---| | | |---|---|---| |---|---| | | |
| | | | | | | | | | | | | | | | | | | | |
| #1| #2| | | | | | | #3| #4| #1| | | | #2| | | #3| #4| #1|
p2|---|---X | | | | / |---|---|---| | | |---X / |---|---|---|
| | | | | | | | | | | | | | | | | | | | |
|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Como aclaración: cuando se realiza el up de un semáforo que vale 0, si hay procesos en su lista de semáforos, se coge el primero y se pasa a estado preparado, valiendo el contador del semáforo 0, por eso en el instante 15 al hacer el down de s2 vuelve a bloquear.
--Josmorgav1 15:32 9 may 2011 (UTC) Una aclaración al compañero David Martin, el contador de semáforo s2, en un principio vale 0, y como el primer proceso en ejecutar es P2, al hacer el down(s2); bloquea, creo que en tu solución consideras que s2 vale 1. Desde mi punto de vista, la solución por ahora más correcta, es la del compañero David Suárez
--Jherrera Con respecto a la solución de Dvs no es correcta a partir del instante 2, ya que interpreto que el proceso 2 ejecuta la instrucción nº3 en vez de pasar a bloqueado. He realizado el ejercicio al igual que David (última solución propuesta) y pienso que está totalmente correcto.