CAS
-
[운영체제] Atomic연산, CAS(CompareAndSwap)에 대하여, ABA문제ComputerScience/운영체제 2020. 6. 14. 17:43
스핀락, 뮤텍스, 세마포어, 모니터 모두 하나의 Thread가 임계영역을 Lock한 후 작업을 수행하는 절차이다. 하지만 sychronized화 하게 되면 한 개의 Thread가 해당 블락을 전체 lock(점유)하기 때문에 다른 Thread는 아무작업을 하지 못하게 되고 이로 인해서 기다리는 상황이 발생하고 낭비가 심해진다. 그래서 Non-blocking한 방법, Lock-Free한 방법으로 동기화 문제를 해결하기 위한 방법이 바로 Atomic연산이다. 그리고 이 동작의 핵심 원리는 CAS(Compare And Swap)에 있다. CAS(CompareAndSwap)알고리즘이란? 멀티 쓰레드 환경, 멀티 코어 환경에서 각 CPU는 메인 메모리에서 변수값을 참조하는 것이 아닌, 각 CPU에서 캐시 영역에서 ..