Capítulo 1. Introducción

Bienvenido, a la Guía Informal de Bloqueo de Núcleo de Rusty. Este documento describe los sistemas de bloqueo en el núcleo Linux como aproximación al 2.4.

Parece que es aquí donde tiene que estar SMP ; por lo tanto todo el mundo que esté en estos días hackeando el núcleo necesita conocer los fundamentos de la concurrencia y el bloqueos para SMP.

1.1. El Problema con la Concurrencia

(Sáltate esto si sabes lo que es una Condición de Carrera (Race Condition).

En un programa normal, puedes incrementar un contador de la forma:


      contador_muy_importante++;
    

Esto es lo que esperarías que pasase:

Esto es lo que quizás pase:

Este solapamiento, donde lo que sucede depende del tiempo relativo de múltiples tareas, es llamado condición de carrera. La parte de código que contenie al punto de concurrencia se llamado región crítica. Y especialmente desde que Linux se empezó a ejecutar en máquinas SMP, se ha convertido en uno de los puntos más grandes del diseño e implementación del núcleo.

La solución es reconocer cuando ocurren estos accesos simultáneos, y usar bloqueos para asegurar que sólo una instancia puede entrar en la región crítica en cada instante. Hay muchas primitivas amigables en el núcleo Linux que te ayudan a hacer esto. Y entonces hay primitivas no amigables, pero yo intento que no existan.