ScholarGate
Asistente

Modelos de concurrencia y memoria

Los modelos de concurrencia y memoria definen cómo se estructuran los programas concurrentes y cómo sus hilos interactuantes observan la memoria compartida, lo que sustenta el software paralelo correcto.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

Los modelos de concurrencia describen cómo se componen y comunican los cálculos que se ejecutan de forma independiente, mientras que un modelo de memoria especifica qué valores pueden observar las lecturas cuando los hilos concurrentes acceden a la memoria compartida, definiendo el contrato entre el programador, el lenguaje y el hardware.

Scope

Esta área abarca el lenguaje y la teoría de la concurrencia: cálculos de procesos y modelos de concurrencia para la comunicación y sincronización, modelos de consistencia de memoria que especifican los ordenamientos permitidos de las operaciones de memoria, mecanismos de sincronización y ausencia de condiciones de carrera (data-race freedom), y sistemas de tipos para la concurrencia, como los tipos de sesión. Aborda cómo los lenguajes dan significado a los programas que se ejecutan simultáneamente y comparten estado.

Sub-topics

Core questions

  • How can concurrent communicating processes be modeled and reasoned about?
  • What orderings of memory operations may a program observe?
  • How is freedom from data races guaranteed or specified?
  • How can types discipline communication and prevent concurrency errors?

Key theories

Cálculos de procesos
El CSP de Hoare y el CCS y pi-cálculo de Milner proporcionan teorías algebraicas de procesos concurrentes y comunicantes, con operadores para la composición y sincronización y nociones de equivalencia conductual como la bisimulación.
Consistencia secuencial
Lamport definió la consistencia secuencial como el requisito de que una ejecución multiprocesador aparezca como una interconexión de las operaciones de cada procesador en orden de programa, la línea de base con la que se comparan los modelos de memoria más débiles.
Modelos de consistencia de memoria
Adve y Gharachorloo sistematizan el espectro de modelos de consistencia de memoria compartida, explicando cómo los ordenamientos relajados permiten el rendimiento al tiempo que complican el razonamiento sobre los programas concurrentes.

Clinical relevance

Los modelos de memoria forman parte ahora de las especificaciones de lenguajes principales (por ejemplo, en C++ y Java) porque el hardware multinúcleo hizo observables los ordenamientos relajados; acertar con ellos es esencial para un software concurrente correcto y portátil. Los cálculos de procesos y los tipos de sesión informan el diseño de lenguajes y protocolos de paso de mensajes.

History

La teoría de la concurrencia surgió de las redes de Petri y del trabajo de Hoare (CSP) y Milner (CCS) en la década de 1970, y posteriormente del pi-cálculo para procesos móviles. Lamport definió la consistencia secuencial en 1979; a medida que proliferó el hardware relajado, los modelos de memoria se formalizaron para lenguajes como Java y C++ en la década de 2000, y la semántica de memoria débil se convirtió en un área de investigación activa.

Debates

Consistencia de memoria fuerte versus relajada
Los diseñadores intercambian la simplicidad intuitiva de los modelos fuertes como la consistencia secuencial por el rendimiento de los modelos relajados que permiten la reordenación, lo que complica el razonamiento y requiere una semántica cuidadosa a nivel de lenguaje.

Key figures

  • C. A. R. Hoare
  • Robin Milner
  • Leslie Lamport
  • Sarita Adve

Related topics

Seminal works

  • hoare1978
  • milner1989
  • lamport1979
  • adve1996

Frequently asked questions

¿Qué es un modelo de memoria?
Un modelo de memoria es el contrato formal que especifica qué valores puede devolver una lectura cuando múltiples hilos acceden a la memoria compartida, definiendo qué reordenamientos pueden realizar el compilador y el hardware y en qué puede confiar el programador.
¿Qué es la consistencia secuencial?
La consistencia secuencial requiere que una ejecución concurrente se comporte como una única interconexión de las operaciones de los hilos que respete el orden del programa de cada hilo, lo que lo convierte en el modelo de memoria más intuitivo (pero a menudo relajado).

Methods for this concept

Related concepts