Buenas, me quedó una duda sobre este tema:
En las diapos de sincronización por hardware, cuando se resuleve la sección crítica usando TestAndSet, luego se hace lock := False, pero para que eso funcione bien, esa instrucción debería ser atómica no? si no lo es puede pasar que en el medio de la asignación, otro proceso gane el CPU y ponga True en lock mientras el otro está poniendo False, y se genera una inconsistencia. Creo que pasa lo mismo para Swap.
Saludos