Diferencia entre revisiones de «Solución de los ejercicios de concurrencia»

De Wiki de Sistemas Operativos
Saltar a: navegación, buscar
(Solución ejercicio 2 y 3)
(Ejercicio 2: corregido el error del tiempo 21-24)
Línea 19: Línea 19:
  
  
       | #1| #2| #3|  |  |  | #4| #5| #1|  |  |  | #2| #2| #2|  |  |  | #2| #3| #4|  |  |  | #5| #1|  |
+
       | #1| #2| #3|  |  |  | #4| #5| #1|  |  |  | #2| #2| #2|  |  |  | #2| #3| #4|  |  |  | #5| #1|  |  |  |  |  |
  H1    |<--|---|---|  |  |  |---|---|---|  |  |  |---|---|-->|  |  |  |---|---|---|  |  |  |---|-->|  |
+
  H1    |<--|---|---|  |  |  |---|---|---|  |  |  |---|---|-->|  |  |  |---|---|---|  |  |  |---|-->|  |  |  |  |  |
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
+
       |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
       |  |  |  | #1| #2| #2|  |  |  | #2| #3| #4|  |  |  | #5| #1| #2|  |  |  | #3| #4| #5|  |  | #1|
+
       |  |  |  | #1| #2| #2|  |  |  | #2| #3| #4|  |  |  | #5| #1| #2|  |  |  | #2| #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  18  19  20 21  22  23  24  25  26  27
+
       0  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20 21  22  23  24  25  26  27   28  29  30 31
  
 
'''Nota:'''
 
'''Nota:'''

Revisión del 19:15 22 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|   |   |   | #2| #3| #4|   |   |   | #5| #1|   |   |   |   |   |
H1    |<--|---|---|   |   |   |---|---|---|   |   |   |---|---|-->|   |   |   |---|---|---|   |   |   |---|-->|   |   |   |   |   |
      |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
      |   |   |   | #1| #2| #2|   |   |   | #2| #3| #4|   |   |   | #5| #1| #2|   |   |   | #2| #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  18  19  20 21  22  23  24  25  26  27   28  29  30 31

Nota: En este ejercicio los cerrojos no resuelven la concurrencia (véase a partir del instante 18).

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.