Diferencia entre revisiones de «Solución de los ejercicios de concurrencia»
(→Ejercicio 2: corregido el error del tiempo 21-24) |
(→Ejercicio 2: explicación) |
||
Línea 19: | Línea 19: | ||
− | | #1| #2| #3| | | | #4| #5| #1| | | | #2| #2| #2 | + | | #1| #2| #3| | | | #4| #5| #1| | | | #2| #2| #2| | | |
− | H1 |<--|---|---| | | |---|---|---| | | |---|---|- | + | H1 |<--|---|---| | | |---|---|---| | | |---|---|---| | | |
− | + | | | | | | | | | | | | | | | | | | | | |
− | | | | | #1| #2| #2| | | | #2| #3| #4| | | | + | | | | | #1| #2| #2| | | | #2| #3| #4| | | | #5| #1| |
− | H2 | | | |<--|---|---| | | |---|---|---| | | |---|--- | + | H2 | | | |<--|---|---| | | |---|---|---| | | |---|---| |
− | + | | | | | | | | | | | | | | | | | | | | |
− | + | |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___| | |
− | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | + | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
− | + | | | #2| #3| #4| | | | #5| #1| | | |
− | En este ejercicio | + | H1 | |---|---|---| | | |---|-->| | |
+ | | | | | | | | | | | | | ||
+ | | #2| | | | #3| #4| #5| | | #1| | ||
+ | H2 |---| | | |---|---|---| | |---> | ||
+ | | | | | | | | | | | | | ||
+ | |___|___|___|___|___|___|___|___|___|___| | ||
+ | 18 19 20 21 22 23 24 25 26 27 28 | ||
+ | |||
+ | Explicación: | ||
+ | |||
+ | En este ejercicio la implementación de cerrojos no resuelve el problema de concurrencia (véase el instante 23, en el que ambos hilos están en la sección crítica). | ||
+ | |||
+ | El problema se debe, como se comentó en clase, a que la comprobación del valor del cerrojo y el establecimiento de su valor debe ser una '''operación atómica'''. Sin embargo, en el instante de tiempo 18 se comprueba el valor del cerrojo pero no se establece el nuevo valor. Es decir, habría que emplear una operación que evite que quedemos entre la comprobación del valor del cerrojo y su modificación. | ||
== Ejercicio 3== | == Ejercicio 3== | ||
Al tener un quantum de únicamente dos unidades, el planificador cambia de proceso antes de actualizar el valor del cerrojo, lo que provoca que se produzca una situación de concurrencia. | Al tener un quantum de únicamente dos unidades, el planificador cambia de proceso antes de actualizar el valor del cerrojo, lo que provoca que se produzca una situación de concurrencia. |
Revisión del 18:06 23 nov 2011
Ejercicio 1
| #1| #2| #3| | | | #4| #1| #2| | | | #3| #4| #1| | | | | | | | | H1 |<--|---|---| | | |---|---|---| | | |---|---|-->| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #1| #2| #2| | | | #2| #2| #2| | | | #2| #3| #4| #1| #2| #3| #4| #1| H2 | | | |<--|---|---| | | |---|---|---| | | |---|---|---|---|---|---|---|-->| | | | | | | | | | | | | | | | | | | | | | | | | |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___| 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Algunas observaciones:
- Los hilos no comparten la variable i. Esta variable se trata de una variable local, por tanto, no es una variable que ambos hilos compartan. Únicamente las variables globales son compartidas por dos o más hilos.
- Al ser los cerrojos un control de concurrencia de espera activa, se comprueba continuamente la condición que nos permite acceder a la sección crítica.
--Pneira 07:33 10 may 2011 (UTC)
Ejercicio 2
| #1| #2| #3| | | | #4| #5| #1| | | | #2| #2| #2| | | H1 |<--|---|---| | | |---|---|---| | | |---|---|---| | | | | | | | | | | | | | | | | | | | | | | | | #1| #2| #2| | | | #2| #3| #4| | | | #5| #1| H2 | | | |<--|---|---| | | |---|---|---| | | |---|---| | | | | | | | | | | | | | | | | | | |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___| 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| | #2| #3| #4| | | | #5| #1| | H1 | |---|---|---| | | |---|-->| | | | | | | | | | | | | | #2| | | | #3| #4| #5| | | #1| H2 |---| | | |---|---|---| | |---> | | | | | | | | | | | |___|___|___|___|___|___|___|___|___|___| 18 19 20 21 22 23 24 25 26 27 28
Explicación:
En este ejercicio la implementación de cerrojos no resuelve el problema de concurrencia (véase el instante 23, en el que ambos hilos están en la sección crítica).
El problema se debe, como se comentó en clase, a que la comprobación del valor del cerrojo y el establecimiento de su valor debe ser una operación atómica. Sin embargo, en el instante de tiempo 18 se comprueba el valor del cerrojo pero no se establece el nuevo valor. Es decir, habría que emplear una operación que evite que quedemos entre la comprobación del valor del cerrojo y su modificación.
Ejercicio 3
Al tener un quantum de únicamente dos unidades, el planificador cambia de proceso antes de actualizar el valor del cerrojo, lo que provoca que se produzca una situación de concurrencia.