21

¿Qué significa exactamente el término primitiva de sincronización? Por ejemplo: mutex, sección crítica, temporizador waitable, evento, monitor, variable condicional, semáforo. ¿Todos ellos son primitivos de sincronización? ¿Hay otras primitivas de sincronización que no he enumerado? ¿Y estas son preguntas válidas?Definición de "primitiva de sincronización"

Respuesta

32

Las primitivas de sincronización son simples mecanismos de software proporcionados por una plataforma (por ejemplo, sistema operativo) a sus usuarios con el fin de admitir la sincronización de procesos o subprocesos. Por lo general, se construyen utilizando mecanismos de nivel inferior (por ejemplo, operaciones atómicas, barreras de memoria, spinlocks, interruptores de contexto, etc.).

Mutex, evento, variables condicionales y semáforos son todas primitivas de sincronización. También lo son los bloqueos compartidos y exclusivos. El monitor generalmente se considera una herramienta de sincronización de alto nivel. Es un objeto que garantiza la exclusión mutua para sus métodos utilizando otras primitivas de sincronización (generalmente bloqueos exclusivos con variables de condición para admitir la espera y la señalización). En algunos contextos, cuando el monitor se usa como un componente básico, también se considera una primitiva de sincronización.

La sección crítica no es una primitiva de sincronización. Es parte de una ruta de ejecución que debe protegerse de la ejecución simultánea para mantener algunas invariantes. Debe usar algunas primitivas de sincronización para proteger la sección crítica.

+6

"La sección crítica no es una primitiva de sincronización." Excepto en Windows, donde hay una primitiva de sincronización llamada Sección crítica: http://goo.gl/35zir (Y sí, estoy de acuerdo en que es un terrible uso indebido de un término bien definido, pero no hay nada que pueda hacer para cambiarlo Error de MS) – paxos1977

+1

[aquí] (http://www.cs.columbia.edu/~hgs/os/sync.html) es una lista ofrecida por la Universidad de Colombia – zook2005

+0

@ zook2005 - Sería interesante tener su comentario como una respuesta (podría volver a votar) – Loom

1

Según lo sugerido por @Loom, estoy agregando this list, ofrecido por la Universidad de Colombia, como respuesta a su pregunta.

También echa un vistazo a this article de Microsoft, de fecha 03/2017 (tengo la sensación de que es más viejo, pero también lo es el artículo de la Universidad de Colombia).

Según lo que he reunido, las primitivas de sincronización no están bien definidas, en el sentido de que no hay una lista oficial de ellas.