mplementación interna de @Lock (Monitor) en .NET

Para dominar alguna tecnología, debe saber cómo se hace en un nivel de abstracción más bajo. En el caso de la programación de subprocesos múltiples, será bueno saber acerca de las primitivas de sincronización.
Aquí está la pregunta, ¿cómo se implementó Lock (Monitor) en .NET?

Estoy interesado en tales puntos:
: ¿utiliza objetos del sistema operativ
: ¿requiere el modo de usuario o el modo kernel?;
: ¿qué cuestan los subprocesos que esperan el bloqueo?;
- ¿en qué casos los hilos hacen cola que en espera de la cerradura podrían ser violado

Actualizado
"Si más de un subproceso contiende el bloqueo, se ponen en cola en una" cola lista "y se les otorga el bloqueo por orden de llegada.Nota: los matices en el comportamiento de Windows y el CLR significan que a veces se puede violar la imparcialidad de la cola. "[C # 4.0 en pocas palabras, Joseph Albahari] Entonces, esto es lo que estoy preguntando en la última pregunta sobre 'cola violada'.

Respuestas a la pregunta(2)

Su respuesta a la pregunta