El desarrollo de un sistema operativo desde cero para la arquitectura AArch64 revela limitaciones críticas en el hardware real que no se manifiestan en simuladores como QEMU. Un caso de estudio reciente demuestra que la implementación de un bloqueo de giro (spin lock) mediante instrucciones de carga y almacenamiento exclusivos (ldaxr y stxr) genera excepciones de abort de datos en hardware físico, como la Raspberry Pi 5, pero funciona correctamente en entornos virtuales. El autor, Joel Siks, identificó que el fallo se debe a la configuración de atributos de memoria: la memoria normal (Normal memory) no soporta operaciones atómicas garantizadas por la arquitectura, a diferencia de la memoria compartible interna o externa. Este artículo técnico detalla la implementación manual del spin lock en ensamblador, la validación de la semántica de adquisición y liberación de memoria, y el análisis de las excepciones específicas (EC 37) que indican un acceso no soportado. La lección clave para los desarrolladores de sistemas es que la coherencia de caché y los tipos de memoria definidos por el hardware son factores determinantes para la atomicidad de las operaciones. Para garantizar la corrección en hardware real, es necesario mapear las regiones de RAM con los tipos de memoria adecuados, como 'Normal' con atributos de escritura y lectura, o utilizar mecanismos de sincronización alternativos como las parejas wfe/sev para mejorar el rendimiento y la equidad. Este análisis proporciona una guía práctica para evitar errores de concurrencia en sistemas embebidos y de bajo nivel.
