¿Qué es la memoria transaccional?

En software, el esquema de memoria transaccional es un curso de acción para la programación multiproceso que usa transacciones que son muy parecidas a las que usa una base de datos. Cuando dos o más subprocesos intentan acceder a los mismos datos al mismo tiempo, muchas situaciones indeseables diferentes pueden resultar en casos en los que el resultado de un programa depende del orden de acceso del subproceso. Por lo general, se desea un pedido y, en el subproceso múltiple, los bloqueos son la forma predominante y más sencilla de garantizar que solo un subproceso tenga acceso a un recurso específico a la vez.

Este enfoque de la memoria transaccional contiene múltiples problemas con respecto a los bloqueos en el subproceso múltiple. Un bloqueo puede volverse permanente si se produce algún tipo de error imprevisto, y los bloqueos pueden provocar problemas impredecibles con la concurrencia, como un punto muerto o una inversión de prioridad. Como resultado de que los bloqueos son muy detallados, otro problema incluye que el código finalmente termine pasando la mayor parte del tiempo entre el bloqueo, el cambio de contexto y el desbloqueo. Este es un problema crucial porque puede resultar en que el código dedique más tiempo a estas acciones que a realizar otro trabajo importante en el programa. Por el contrario, los bloqueos de grano grueso pueden provocar una disminución del rendimiento de procesamiento y una disminución de la simultaneidad.

Los problemas en la memoria transaccional se abordan mediante bloqueos avanzados, incluido el «bloque de bloqueo» de C #, bloqueos de lectura y escritura, barreras de escritura, etc. Una de las principales prioridades con respecto a la memoria transaccional es no tener bloqueos ni tiempo de procesamiento de bloqueo innecesario. . Por lo general, se acuerda que una estructura de datos que se comparte está libre de bloqueos si sus operaciones no requieren la exclusión mutua. Las estructuras de datos que se comparten y no tienen bloqueos evitan los problemas comúnmente asociados con las técnicas de bloqueo estándar si se encuentran en sistemas que son muy concurrentes.

El modelo de coherencia y consistencia de memoria transaccional (TCC) es un nuevo modelo propuesto sobre memoria compartida. Según el modelo, las transacciones atómicas son invariablemente unidades básicas de lo siguiente: trabajo paralelo, coherencia de la memoria, comunicación y coherencia de la referencia de la memoria. El modelo TCC también simplifica el software paralelo al eliminar la sincronización que utiliza bloqueos estándar o semáforos. A través del hardware, TCC también combina cada escritura de cada región de ocurrencia de la transacción en un paquete para transmitir atómicamente el paquete a un estado de memoria que se comparte permanentemente. Además del hardware de coherencia simplificado, esto significa que hay una reducción en los mensajes de baja latencia necesarios y una eliminación completa de ciertos protocolos de coherencia estándar.