Cómo gestionar la concurrencia en un entorno informático distribuido e integrado

Principalmente haciendo un uso extensivo de máquinas de estado en cada nodo. Además, trato de diseñar el firmware de tal manera que “actúe” como un solo cuerpo de código que se ejecuta en varios procesadores, lo que facilita mantener sincronizadas las máquinas de estado esclavas con la máquina de estado maestra.

En segundo lugar, si es posible, utilizo una arquitectura en la que solo hay un nodo “maestro”, y el resto son esclavos del maestro. Si hay varios “maestros”, se debe determinar que uno de ellos es el “maestro de maestros” (aunque esta autoridad se puede transferir dinámicamente a otro nodo que sea “capaz de maestro” si es necesario). Los esclavos solo pueden “hablar cuando el maestro les habla”, esto es clave para mantener su mecanismo de sincronización de concurrencia simple y robusto.

Seguir un estricto tipo de topología de comunicaciones “maestro / esclavo” puede no ser la más eficiente en todos los casos, pero ciertamente tiene el beneficio de sufrir menos problemas de concurrencia que otras topologías, ya que hay una entidad central encargada de impulsar el tiempo del sistema completo cuyas máquinas de estado individuales fueron diseñadas para “engranar” entre sí.