ontext En la programación concurrente, una operación es el atómico, o el linearizable, si aparece tomar efecto instantáneamente. Un objeto atómico se puede entender inmediatamente y totalmente de su definición secuencial, pues un sistema de operaciones funcionadas paralelamente aparecerá siempre ocurrir una después de la otra; ningunas inconsistencias pueden emerger.
Linearizability primero fue introducido como un modelo de la consistencia por Herlihy y ala en 1987. Abarca definiciones más restrictivas de atómico, tales como " una operación atómica es una que no puede (o no es) ser interrumpido por el operations" concurrente;, sobre que ser generalmente vago cuando una operación se considera comenzar y terminar.
Linearizability garantiza que los invariants de un sistema son observados y preservados por todas las operaciones: si todas las operaciones preservan individualmente un invariante, el sistema en conjunto.
Eso el familiar con las características ÁCIDAS de las bases de datos debe observar que, en la programación concurrente, la atomicidad consiste un nivel del aislamiento, terminantemente más fuerte que serializable. Las bases de datos tienen una diversa definición de la atomicidad del término.
Todas las computadoras modernas proporcionan los primitivos atómicos básico, que entonces se utilizan para construir objetos atómicos más complejos, e. Además de haber leído atómica y escribir las operaciones, la mayoría de las plataformas proporcionan una operación atómica de la leer-y-actualización como Prueba-y-fijan o el CAS, o un par de operaciones como carga-acoplamiento/ almacenar-condicionales que tengan solamente un efecto si ocurren atómico (es decir, sin la actualización de intervención, en conflicto). Éstos se pueden utilizar para ejecutar las cerraduras, un mecanismo vital para el con hilos múltiples que programa, permitiendo los invariants y la atomicidad que se harán cumplir a través de grupos de operaciones.
Muchos procesadores, especialmente de 32 bits unos con la ayuda 64-bit de la coma flotante, proporcionan alguno leído y escriben las operaciones que no son atómicas: un hilo de rosca que lee un registro 64-bit mientras que otro hilo de rosca le está escribiendo puede ver una combinación de ambos " before" y " after" valores, una combinación que se pudo haber escrito nunca realmente al registro. Además, solamente las solas operaciones se garantizan para ser atómicas; los hilos de rosca que realizan arbitrariamente a grupos de leen y escriben también observarán una mezcla de " before" y " after" valores. Claramente, los invariants no pueden ser confiados en cuando tales efectos son posibles.
La manera más fácil de alcanzar linearizability está forzando los grupos de operaciones primitivas para funcionar secuencialmente usar las secciones críticas y los mutexes . Las operaciones independientes se pueden entonces permitir terminantemente cuidadosamente para traslapar sus secciones críticas, con tal que ésta no viole linearizability. Tal acercamiento debe balancear el coste de una gran cantidad de mutexes contra las ventajas del paralelismo creciente.
Otros se acercan, favorecido por los investigadores (pero no todavía ampliamente utilizado en la industria del software), son diseñar un objeto linearizable usar los primitivos atómicos nativos proporcionados por el hardware. Esto tiene el potencial para maximizar paralelismo disponible y para reducir al mínimo costes de la sincronización, pero requiere las pruebas matemáticas que demuestran que los objetos se comportan correctamente.
Una historia del es una secuencia de las invocaciones del y las respuestas del hechas de un objeto por un sistema de roscan . Cada invocación de una función tendrá una respuesta subsecuente. Esto se puede utilizar para modelar cualquier uso de un objeto. Suponer, por ejemplo, que dos hilos de rosca, A y B, ambas intentan asir una cerradura, retrocediendo si se toma ya. Esto sería modelada como ambos hilos de rosca que invocan la operación de la cerradura, después ambos hilos de rosca que reciben una respuesta, una acertada, una no.
Considerar la historia siguiente, otra vez de dos objetos que obran recíprocamente con una cerradura:
Esta definición del linearizability es equivalente al siguiente:
todas las llamadas de función tiene un punto de la linearización del en un cierto instante entre su invocación y su respuesta
Todas las funciones aparecen ocurrir inmediatamente en su punto de la linearización, comportándose según lo especificado por la definición secuencial
Esta alternativa es generalmente mucho más fácil de probar. Es también mucho más fácil razonar alrededor como usuario, en gran parte debido a su intuitiveness. Esta característica de la ocurrencia instantáneamente, o indivisible, lleva al uso del atómico del término como alternativa al " más largo; linearizable".
La consistencia terminante en el de informática es el modelo más riguroso de la consistencia. Dice que una operación leída tiene que volver el resultado del último escribe la operación que ocurrió en ese artículo de datos . Esto es solamente posible cuando existe un reloj global. Desde su imposible ejecutar un reloj global a través de nodos de un sistema distribuido, este modelo ha sido tradicionalmente solamente posible en un monoprocesador .
.
| Random links: | Traducciones de guarida Kaiser de Francisco del erhalte del Gott | Rost (cráter) | Nordseebilder | Referéndum australiano, 1977 (vacantes ocasionales del senado) | Fingringhoe |