Cap�tulo 2. Dos Tipos Principales de Bloqueos del N�cleo: Spinlocks y Sem�foros

Hay dos tipos principales de bloqueos del n�cleo. El tipo fundamental es el spinlock (include/asm/spinlock.h), que es un bloqueo muy simple recept�culo-simple; si no puedes coger el spinlock, entonces te mantienes intent�ndolo (spinning) hasta que puedas. Los spinlocks son muy peque�os y r�pidos, y pueden ser usados en cualquier sitio.

El segundo tipo es el sem�foro (include/asm/semaphore.h): puede tener m�s de un recept�culo en alg�n momento (el n�mero se decide en tiempo de inicializaci�n), aunque es usado m�s com�nmente como un bloqueo de recept�culo-simple (un mutex). Si no puedes obtener el sem�foro, tus tareas se pondr�n en una cola, y ser�n despertadas cuando el sem�foro sea liberado. Esto significa que la CPU har� algo mientras que est�s esperando, pero hay muchos casos en los que simplemente no puedes dormir (ver Secci�n 4.8), y por lo tanto tienes que usar un spinlock en vez del sem�foro.

Ning�n tipo de bloqueo es recursivo: ver Secci�n 4.2.

2.1. Bloqueos y N�cleos Monoprocesador

Para n�cleos compilados sin CONFIG_SMP, los spinlocks no existen. Esta es una excelente decisi�n de dise�o; cuando nadie se puede ejecutar al mismo tiempo, no hay motivo para tener un bloqueo.

Deber�as siempre de probar tu c�digo de bloqueo con CONFIG_SMP habilitado, incluso si no tienes un equipo de prueba SMP, porque a�n as� pillar� algunos tipos (simples) de deadlock.

Los sem�foros todav�a existen, porque son requeridos para la sincronizaci�n entre contextos de usuario, tal como veremos a continuaci�n.