Implementing Lock

Interrupt Disable

simple way to implement sync.

image.png

Queuing Lock

image.png

Lock in multi-processor

Atomic operation

멀티 프로세서 환경에서는 disableInterrupt 하더라도 다른 프로세서에서 실행한게 끼어들 수 있다.

따라서 하드웨어 수준의 atomic operation을 활용하여 락을 걸어줘야 한다.

Spinlock

image.png

  1. 초기값 FREE
    1. acquire
      1. testandset(value) :
        1. value = busy
        2. return free
      2. while문 탈출
  2. 초기값 Busy
    1. acquire
      1. testandset(value):
        1. value=busy
        2. return busy
      2. while문 도는 중 …
    2. release → value = free → acquire 끝남