Skip to main content

¿Qué es la memoria transaccional?

En software, el esquema de memoria transaccional es un curso de acción para la programación multiproceso que utiliza 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 dar lugar a casos en los que el resultado de un programa depende del orden de acceso de subprocesos. Por lo general, se desea un orden y, en subprocesos múltiples, los bloqueos son la forma predominante y más simple 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 bloqueos en subprocesos múltiples. Un bloqueo puede volverse permanente si se produce algún tipo de error imprevisto, y los bloqueos pueden generar problemas impredecibles con la concurrencia, como un punto muerto o una inversión de prioridad. Como resultado de que los bloqueos son muy finos, 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 hacer que el código pase más tiempo en estas acciones que en hacer otro trabajo importante en el programa. En contraste, los bloqueos de grano grueso pueden causar un rendimiento de procesamiento disminuido y una concurrencia disminuida.

Los problemas en la memoria transaccional se abordan mediante bloqueos avanzados, que incluyen "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 exclusión mutua. Las estructuras de datos que son compartidas y libres de bloqueos evitan los problemas comúnmente asociados con las técnicas de bloqueo estándar si están en sistemas que son altamente concurrentes.

El modelo de coherencia y coherencia de la memoria transaccional (TCC) es un nuevo modelo propuesto en la memoria compartida. Según el modelo, las transacciones atómicas son invariablemente unidades básicas de lo siguiente: trabajo paralelo, coherencia de memoria, comunicación y consistencia de referencia de 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 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.