✺
스핀락을 소개했을 때 그림을 다시 소개합니다. 위 그림이 실행할 때 실제 어셈블리 코드를 어떻게 동작하는지 알아보려는 겁니다.다음 소절에 분석하려는 스핀락 인스턴스 owner는 0x1이고 next는 0x2입니다. 이미 스핀락을 획득한 다른 프로세스가 임계 영역을 실행 중이기 때문입니다. 이번에는 누군가 스핀락을 획득한 경우 스핀락이 어떻게 동작하는지 알아보겠습니다. r0는 0xb93b4a78이고 이 메모리 공간에 0x00020001 값이 있습니다. r3은 0x00020001로 변경됩니다. r3에 ticket owner와 next를 모두 저장한 겁니다. next가 owner보다 1만큼 크니 누군가 스핀락을 획득한 상태입니다. 분석하려는 _raw_spin_lock() 함수를 다시 소개합니다.1 807