Buenas! Mirando el ejercicio supongo que la idea es que n al final de la ejecución de los dos procesos concurrentes sea 40. Dicho esto tengo las siguientes dudas:
Al hacer la parte 1 de este ejercicio no entiendo si el for del procedimiento incremento lo debo poner en el entrelazado, por ejemplo yo quise analizar que pasaba cuando ambos procesos tenían su for en i=20 y solo quedaba esa ejecución. Por lo tanto los pasos del algoritmo a analizar son:
1) for i in 1..20 loop (cuando i=20, ultima ejecución)
2) n := n + 1;
Por lo tanto el n = 38 en ese momento para ambos procesos y luego hago el entrelazado para ver los casos posibles de falla.
Pero en la segunda parte "cambio" n := n + 1 por:
1) MOV Reg1, [ n ]
2) INC Reg1
3) MOV [ n ], Reg1
(No importa si están mal las instrucciones, la idea es mostrar que son varios pasos para poder realizar la suma y la asignación)
Luego sigo la misma idea que en el paso 1 para analizar que paso con el caso cuando n = 38 e i=20 llegando a la misma conclusión.
Si algo no se entiende adjunto el pdf del ejercicio razonado.
La duda es: Que me tiene que transmitir este ejercicio? ya que no logro verlo aplicando los entrelazados.
Supongo que al hacer que n := n + 1 no sea atómica puede generar otros resultados erróneos pero cuales serian? no se que me esta faltando para verlo.
Agradezco me puedan corregir. Gracias!